jeudi 5 mars 2009

ACABIT : Acquisition de termes à partir de corpus

Description

ACABIT est un programme développé par Béatrice Daille qui permet une acquisition terminologique sur un corpus pré-étiquete et desambiguisé. Cette aquisition de termes s'effectue en deux étapes:

1-Analyse linguistique et regroupement de variantes : analyse du corpus par des transducteurs et production de candidats termes binaires
Nom Adj : connaissances informatiques
Nom1 à (Det) Nom2 : aide à domicile
Nom1 Prep Nom2 : vente par téléphone ...
Décomposition : réseau de transit à satellite → réseau de transit et réseau à satellite

2-Filtrage statistique : tri des candidats termes à partir d’un corpus de référence et de termes valides.
Comparaison de mesures statistiques en fonction de leur capacité à distinguer les termes des séquences ne correspondant pas à des termes.

Des transformations syntaxiques permettent d’associer une forme de base à plusieurs variantes
• Coordination de termes
Assemblage et désassemblage de paquets → assemblage de paquets, désassamblage de paquets
• Surcomposition de termes
Réseau de transit à satellites → réseau de transit, réseau à satellites
• Modification adjectivale de termes
Liaisons multiples par satellites → liaison par satellites

ACABIT existe en verion française et anglaise.

Installation sous Linux

Pour installer ACABIT, il faut commencer par le télécharger:

* ACABIT français version v4.3 tar gz
* ACABIT anglais version v4.3 tgz

ACABIT utilise les programmes suivants :

* Perl
* Pour le français :
    o Étiqueteur grammatical de Brill distribué par l' ATILF ou TreeTagger
    o Le lemmatiseur FLEMM (ATTENTION : le format de sortie de FLEMM a été récemment modifié. Il faut utiliser la version FLEMM-v2.0 (1999))
    o Mise au format XML. Ce script PERL peut vous être utile brill2xml.pl
* Pour l'anglais :
    o Étiqueteur grammatical d'Eric BRILL
    o lemmatiseur : utilisation de la base lexicale CELEX
Utilisation de la version française

ACABIT prend en entrée un texte annoté linguistiquement et retourne une liste ordonnée de candidats termes.

La syntaxe générale d'utilisation est :
perl -C fr_stat.pl <nom_du_fichier_entree>
perl -C fr_tri.pl <nom_du_fichier_sortie> (Fichier de sortie par défault : out.xml)
Le fichier d'entrée doit être balisé comme suit:

<record>
<an> ...</an>
<ti> ... </ti>
<ab>
<ph_nb=xxx> ... <ph>
....
<ph_nb=xxx> ... <ph>
</ab>
</record>
<record>
...
</record>

*Balise <record> : marquage des différents textes
*Balise <an> : information concernant le texte
*Balise <ti> : titre
*Balise <ab> : corps du texte
*Balise <ph_nb=xxx>: phrase numero xxx

Si, par exemple, on veut appliquer ACABIT sur le fichier d'entrée exemple_fr.txt et mettre le résultat dans le fichier résultat, on tape les commandes:
perl -C fr_stat.pl exemple_fr.txt
perl -C fr_tri.pl résultat
Ceci est un extrait du fichier d'entrée:

<record>
<an>
92/CAR/92 -/- 0014602/CAR/0014602
</an>
<ab>
<ph_nb=1>On/PRV:3p:_:s:n/on examine/VCJ:{{1|3}p:s:pst:{ind|subj}|2p:s:pst:imper}/examiner:1g les/DTN:_:p/le alternatives/SBC:_:p/alternative d'/PREP/d' une/DTN:m:s/un production/SBC:_:s/production économique/ADJ:_:s/économique de/PREP/de vapeur/SBC:_:s/vapeur et/COO/et de/PREP/de courant/SBC:_:s/courant pour/PREP/pour la/DTN:f:s/le sucrerie/SBC:_:_/sucrerie ./. </ph>
<ph_nb=2>On/PRV:3p:_:s:n/on énumère/VCJ:{{1|3}p:s:pst:{ind|subj}|2p:s:pst:imper}/énumérer:1g et/COO/et on/PRV:3p:_:s:n/on évalue/VCJ:{{1|3}p:s:pst:{ind|subj}|2p:s:pst:imper}/évaluer:1g les/DTN:_:p/le possibilités/SBC:_:p/possibilité d'/PREP/d' optimisation/SBC:_:s/optimisation en/PREP/en vue/SBC:f:s/vue d'/PREP/d' une/DTN:m:s/un réduction/SBC:_:s/réduction des/DTC:_:p/du besoins/SBC:_:p/besoin spécifiques/ADJ:_:p/spécifique en/PREP/en vapeur/SBC:_:s/vapeur pour/PREP/pour la/DTN:f:s/le production/SBC:_:s/production du/DTC:m:s/du courant/ADJ:m:s/courant </ph>
</ab>
</record>
.
.
.

Et voila un extrait du fichier résultat (fichier XML)

<listcand>
<setcand new_ident="356" loglike="1096.055" freq="5">
<cand old_ident="358">
<na freq="5">
<base>
<term> alcool supérieur </term>
</base>
</na>
</cand>
</setcand>
<setcand new_ident="80" loglike="1071.797" freq="4">
<cand old_ident="81">
<npn freq="4">
<base>
<term> qualité du produit </term>
</base>
</npn>
</cand>
</setcand>
.
.
.

Ce fichier contient des informations sur les termes trouvés (représentés ici par leurs identifiants) telles que le lemme, le nombre d'occurences, le coefficient de vraisemblance (loglike)...
Ces termes sont triés selon le loglike qui est une mesure statistique permettant de classifier les candidats termes extraits à l'aide de filtres linguistiques du plus au moins représentatif du domaine.

D'autres fichiers de sortie temporaires sont également générés (prefixe.txt, relationnel.txt, res.txt, tri.txt...). Les plus importants sont temp.txt, temp2.txt, res.txt et tri.txt.

Le fichier temp.txt contient la liste des termes avec leurs statistiques. Chaque ligne correspond à un couple (premier lemme/ dernier lemme).
Voila un extrait de ce fichier représentant un seul terme (une ligne):

42 1 3 1 forme minéral 1 * forme minéral

Les informations pour chaque couple sont, dans l'ordre :
- son identifiant unique
- le nombre de termes commencant par ce premier lemme
- le nombre de termes finissant par ce dernier lemme
- le premier lemme
- le dernier lemme
- le type de structure
- la suite de lemmes de chaque terme simplifié trouvé comportant ce premier et ce dernier lemme

Le fichier temp2.txt est le fichier où apparait chaque terme trouvé (autant de fois que d'occurences dans le texte).
Voila un extrait de ce fichier représentant un seul terme (une ligne):

extension sucrerie 8 --- extension d' une sucrerie --- SBC PREP DTN SBC --- extension d' un sucrerie --- npn --- BASE --- 92 --- 0014603 --- 1 --- 0

Chaque ligne correspond à un terme trouvé, a ses caractéristiques et a ses références :
- le premier lemme
- le dernier lemme
- l'identifiant unique du couple (premier lemme/ dernier lemme)
- la suite de flexions de chaque terme
- la suite d'étiquettes de chaque terme
- la suite de lemmes de chaque terme
- la structure du terme (NA, NPN, ...)
- le type du terme (BASE, MODIF, COORD, ...)
- l'année
- le numéro de texte
- le numéro de phrase
- un booléen pour dire si le terme a été trouvé dans un titre (1) ou dans le corps du texte (0).

Le fichier res.txt contient les couples de termes listés dans temp.txt triés selon le loglike. Il tient compte des regroupements morphologiques.
Voila un extrait de ce fichier représentant un seul terme:

356 1096.055 5 7 6
alcool supérieur (5) * alcool supérieur


Le fichier tri.txt contient les occurrences des termes listées dans temp2.txt regroupées (sans prise en compte des regroupements morphologiques). Il est composé d'une alternance de lignes de 2 formes différentes :
- "Mot Mot :" pour presenter les mots des termes
- "* Infos sur le terme" qui fournit des renseignements sur les occurrences de ce terme.
Voila un extrait de ce fichier:

forme minéral :
* 42 --- formes minérales --- SBC ADJ --- forme minéral --- na --- BASE 1 ( 92 --- 0020263 --- 1 --- 0 )


Chaque ligne correspondant aux renseignements sur les occurrences du terme a la forme suivante :
- l'identifiant unique du couple (premier lemme/ dernier lemme)
- le premier lemme
- le dernier lemme
- la suite de flexions de chaque terme
- la suite d'étiquettes de chaque terme
- la suite de lemmes de chaque terme
- la structure du terme (NA, NPN, ...)
- le type du terme (BASE, MODIF, COORD, ...)
- une suite non nulle de références entre parenthèses :
* l'année
* le numéro de texte
* le numéro de phrase
* un booléen pour dire si le terme a été trouvé dans un titre (1) ou dans un resume (0)

Licence

Licence GPL

Références

B. DAILLE, "Conceptual structuring through term variations". In F. Bond, A. Korhonen, D. MacCarthy and A. Villacicencio (eds.), Proceedings ACL 2003 Workshop on Multiword Expressions: Analysis, Acquisition and Treatment, 9-16, 2003

Y. TOUSSAINT, F. NAMER, B. DAILLE , C. JACQUEMIN, J. ROYAUTÉ and N. HATHOUT. Une approche linguistique et statistique pour l'analyse de l'information en corpus (full paper)(in French), TALN'98, ATALA, Paris, France, 1998.

Daille, B. (1994) Approche mixte pour l’extraction de terminologie : statistique lexicale et filtres linguistiques, Thèse en informatique fondamentale, Universite Paris 7

mardi 3 mars 2009

SYNTEX : Analyse syntaxique

Description

SYNTEX est un analyseur syntaxique de corpus (Bourigault et Fabre, 1999) qui permet d'extraire d'un corpus une liste de noms et syntagmes nominaux, structurée par des relations de dépendance syntaxique. La fonction de cet analyseur est d'identifier des relations de dépendances entre mots et d'extraire d'un corpus des syntagmes (verbaux, nominaux, adjectivaux).
Le résultat de l'analyse se présente sous la forme d'un réseau de dépendance, dans lequel chaque syntagme extrait est relié à sa tête et à son expansion syntaxique.

Ces relations de dépendance permettent d'effectuer automatiquement des regroupements distributionnels : par exemple la liste de tous les compléments de tel verbe ou la liste des adjectifs modifieurs de tel nom, qui constituent des amorces de classes sémantiques.

Par rapport aux analyseurs développés classiquement dans le domaine du traitement automatique des langues (Abeillé 1992), l’analyseur SYNTEX présente cette différence fondamentale d’être un analyseur de corpus, et non pas de phrases. C’est un analyseur de corpus parce que le résultat de l’analyse est un réseau de dépendance global construit pour l’ensemble du corpus, le réseau de dépendance construit constitue un mode d’accès au corpus pour l’analyste en charge de l’interprétation et le corpus est source d’information pour l’analyseur.

SYNTEX possède une version pour le Français et une autre pour l'Anglais.

Utilisation

SYNTEX prend en entrée un corpus étiqueté : il est découpé en mots (token) et à chaque mot est associé une catégorie grammaticale (nom, verbe, adjectif…). Cette tâche peut être réalisée par TreeTagger.

Cet analyseur produit en sortie:

1- Un corpus analysé syntaxiquement : Dans chaque phrase, Syntex pose des relations de dépendance syntaxique (sujet, complément d’objet, épithète, …) entre les mots
2- Un réseau de syntagmes
    * De chaque phrase, Syntex extrait des syntagmes (verbaux, nominaux, adjectivaux)
    * Pour l’ensemble du corpus, Syntex construit un réseau de syntagmes structuré par les relations Tête et Expansion
Voila le déroulement de la procédure d'analyse syntaxique par SYNTEX sur quelques phrases:

1- Analyse syntaxique en dépendance: la phrase traitée est: Le chat de Marie mange une petite souris.



























2- Construction d’un réseau de syntagmes: la phrase traitée est: L'érosion attaque un plan de faille.

























SYNTEX est utilisé essentiellement pour deux objectifs:

1- Construction de ressources termino-ontologiques: Le réseau de syntagmes est utilisé par un analyste (terminologue, expert, ingénieur, …) pour construire une ressource terminologique (thesaurus, terminologie, ontologie, …) sur un domaine spécialisé (métier, pratique) pour une application cible (traduction automatique, recherche d’information, …)

2- Etudes syntaxiques sur corpus

Licence

Logiciel non gratuit

Références

Bourigault D., Fabre C. (2000), Approche linguistique pour l'analyse syntaxique de corpus,. Cahiers de Grammaire, 25, Université Toulouse le Mirail, pp.131-151

lundi 2 mars 2009

YaTeA : Extraction des termes

Description

L’extracteur de termes YaTeA (Yet another Term ExtrActor ) a été développé au LIPN par Thierry Hamon et Sophie Aubin pour aider le processus d’identification des termes en corpus. Il offre également la possibilité de redéfinir ou de modifier le processus d’extraction à travers plusieurs fichiers de configuration exploitant des jeux d'étiquettes grammaticales.

YaTeA travaille sur le Français et l'Anglais. Cet outil permet d'analyser des termes candidats en se basant sur une désambiguisation endogène. Une désambiguisation exogène est également possible pour l'identification et l'analyse des termes candidats en utilisant des ressources externes.

Installation sous Linux

Pour installer YaTeA, il faut commencer par le télécharger, puis:

1-Décompresser l'archive Lingua-YaTeA-0.5.tar.gz à l'endroit de son choix
2-Installer quelques modules manquants et dont dépend YaTeA (Module::Build, Config::General, Parse::Yapp, ...)en mode administrateur
3-Si on possède le programme make, alors:
    * Taper la commande perl Makefile.PL
    * Taper la commande make
    * Taper la commande make test
    * Taper la commande make install
sinon
    * Taper la commande perl Build.PL
    * Taper la commande Build
    * Taper la commande Build test
    * Taper la commande Build install
Utilisation

L'extracteur de termes YaTeA exige en entrée un corpus segmenté en mots et en phrases, lemmatisé et étiqueté avec des informations sur les parties de discours (Part-of-speech) et fournit plusieurs sorties aux formats XML, texte et HTML.

La syntaxe générale d'utilistation de YaTeA est la suivante:
yatea [options] <corpus>

Par exemple, si on applique YaTeA au fichier sampleEN.ttg écrit en Anglais, on tape la commande:
yatea -rcfile etc/yatea/yatea.rc share/YaTeA/samples/sampleEN.ttg

Voila un extrait du fichier sampleEN.ttg :

Combined VBN Combine
action NN action
of IN of
two CD two
transcription NN transcription
factors NNS factor
regulates VBZ regulate
genes NNS gene
encoding VBG encode
spore NN spore
coat NN coat
proteins NNS protein
of IN of
Bacillus NN Bacillus
subtilis NN subtilis
.
.
.
by IN by
B. FW B.
subtilis FW subtilis
sigma SYM sigma
28 CD 28
RNA NN RNA
polymerase NN polymerase

En tapant la commande citée précédamment, On voit défiler sur le terminal ces messages:

1) Loading corpus
corpus :share/YaTeA/samples/sampleEN.ttg
2) Chunking the corpus into MNPs
MAX_LENGTH: 12
    Total number of phrases: 52
    -multi-word phrases: 38
    -monolexical phrases: 14
3) Progressive parsing of the MNPs
Unparsed phrases... 0.0%
    Number of parsed multi-word phrases: 36
TC_MAX_LENGTH:12
4) Result display
    -Term candidates are displayed in XML format in './sampleEN/default/xml/candidates.xml'
    -Display of the list of term candidates and sub term candidates in text format in file './sampleEN/default/raw/termList.txt'
    -Display of the list of term candidates and sub term candidates in TreeTagger format in file './sampleEN/default/raw/termCandidates.ttg'
Un répertoire nommé sampleEN est donc crée dans le répertoire courant. Les termes candidats sont enregistrés sous le format XML dans le fichier: sampleEN/default/xml/candidates.xml, la liste des termes candidats et des sous-termes candidats est fournie sous le format texte dans le fichier: sampleEN/default/raw/termList.txt et la liste des termes candidats et des sous-termes candidats est fournie sous le format de sortie de TreeTagger dans le fichier: sampleEN/default/raw/termCandidates.ttg.

Ceci est un extrait du fichier candidates.xml

<TERM_EXTRACTION_RESULTS>
<list_term_candidates>
.
.
.
<term_candidate>
<id>term32</id>
<form>level of GerE</form>
<lemma>level of GerE</lemma>
<morphosyntactic_features>
<syntactic_category>NN of NN</syntactic_category>
</morphosyntactic_features>
<head>term33</head>
<number_occurrences>1</number_occurrences>
<list_occurrences>
<occurrence>
<id>occ29</id>
<mnp>1</mnp>
<doc>0</doc>
<sentence>6</sentence>
<start_position>47</start_position>
<end_position>60</end_position>
</occurrence>
</list_occurrences>
<term_confidence>0.5</term_confidence>
<log_information>YaTeA</log_information>
<syntactic_analysis>
<head>term33</head>
<modifier position="AFTER">term28</modifier>
<prep>of</prep>
</syntactic_analysis>
</term_candidate>
.
.
.
Cet extrait concerne un seul terme (Level of GerE). En effet, pour chaque terme, des informations comme le nombre d'occurences et pour chaque occurence le numéro de la phrase dans laquelle se trouve le terme, l'offset de début et de fin du terme permettent de retrouver facilement les termes dans le texte initial.

Voila encore un extrait du fichier termCandidates.ttg:

level NN level
of IN of
GerE NN GerE
. SENT .
control NN control
of IN of
htpR NN htpR
. SENT .
cotX NN cotX
promoter NN promoter
. SENT .
.
.
.
Les termes qui ne sont pas reconnus en tant que termes candidats sont mis dans le fichier : sampleEN/default/raw/unparsed

Les formats de sortie ne permettent pas un enregistrement aisé des validations. De plus, la rédaction ou la modification des fichiers de configuration peut être complexe et fastidieuse.Pour remédier à ces deux limites, Thierry Hamon a proposé l'implémentation:

1.D’une interface de visualisation et de validation des résultats de l’extraction. Cette partie pourra être utilisée indépendamment de la plateforme et, dans ce cas, exploitera la sortie XML de l’extracteur de termes;

2.D’une interface de configuration de l’extracteur de termes. A partir d’un jeu d’étiquettes grammaticales connu, l’utilisateur pourra définir le processus d’extraction de termes de manière partielle ou totale. Dans le cas d’une sous-spécification du comportement de l’extracteur, une fonctionnalité de l’interface gèrera correctement la génération des fichiers de configuration. Une autre fonctionnalité pourra permettre de visualiser immédiatement les conséquences de ces choix de définition.

Ce travail a été réalisé par une équipe de projet formée par:BOURASSINE Majed, BOUBAKER Brahim, DEBAB Abdelkader, JARMOUD Mohamed Said et MBAE Said. L'architecture générale de l'application est la suivante:















Licence

Licence GPL

Références

Sophie Aubin and Thierry Hamon. Improving Term Extraction with Terminological Resources. In Advances in Natural Language Processing (5th International Conference on NLP, FinTAL 2006).

BOURASSINE Majed, BOUBAKER Brahim, DEBAB Abdelkader, JARMOUD Mohamed Said et MBAE Said. Manuels d'installation, Environnement graphique pour YaTeA.