Terminologie Computationnelle
Travaux Pratiques
Objectif du TP
L'objectif du TP est de manipuler un corpus de textes et d'utiliser des outils de TAL. Les différentes manipulations permettront d'avoir des données pour construire un index hiérarchisé.
NB : Si les outils présentés en cours ne sont pas suffisants, vous pouvez effectuer une partie du travail manuellement (notamment au niveau du nettoyage du corpus, ou du tri et de la validation des résultats).
Installation des logiciels
- Télécharger l'archive suivante : Termino.tar.gz
- Extraire tous les fichiers de l'archive dans le répertoire de connexion :
cd $HOME tar xzvf Termino.tar.gz cd Termino ./install.sh
TP1 (extraction de termes)
Étiqueter le corpus avec TreeTagger
tree-tagger-french $HOME/Termino/Corpus/resumes-article-2012.txt > $HOME/Termino/Corpus/resumes-article-2012.ttg
Effectuez l'extraction des termes avec YaTeA :
- à partir du fichier en sortie de TreeTagger
$HOME/Termino/YaTeA/yatea-ttg-fr.sh $HOME/Termino/Corpus/resumes-article-2012.ttg
- à partir du fichier en sortie de TreeTagger (sortie incluant les termes simples)
$HOME/Termino/YaTeA/yatea-ttg-fr-all.sh $HOME/Termino/Corpus/resumes-article-2012.ttg
- Utilisation de TermoStat
TP2
Effectuez les traitements suivants :
- Acquisition de relations entre termes
- Approche lexicale : utilisation de l'inclusion lexicale de
termes (acquisition de relations d'hyperonymie, en général)
$HOME/Termino/Logiciels/getTermAndHead.sh $HOME/Termino/Corpus/resumes-article-2012.termList.xml
- Approche syntaxique : définition et application de patrons
lexico-syntaxiques (acquisition de relations d'hyperonymie)
$HOME/Termino/Logiciels/TreeTagger2Inline.pl < $HOME/Termino/Corpus/resumes-article-2012.ttg | $HOME/Termino/Logiciels/PatronsLS-fr.pl -liste > $HOME/Termino/Corpus/resumes-article-2012.relHyperonymie-liste.txt
$HOME/Termino/Logiciels/TreeTagger2Inline.pl < $HOME/Termino/Corpus/resumes-article-2012.ttg | $HOME/Termino/Logiciels/PatronsLS-fr.pl > $HOME/Termino/Corpus/resumes-article-2012.relHyperonymie.txt
- Acquisition de variantes morpho-syntaxiques : Utilisation de
Faster en version indexation libre ou contrôlée
- Acquisition de variantes à partir du fichier texte (indexation libre)
$HOME/Termino/FasterFreeFR.sh $HOME/Termino/Corpus/resumes-article-2012.txt
- Acquisition de variantes à partir des termes extraits par YaTeA (indexation libre)
$HOME/Termino/FasterFreeFR-YaTeA.sh $HOME/Termino/Corpus/resumes-article-2012.termCandidates.ttg
- Acquisition de variantes de termes issus d'une terminologie, à partir du fichier texte (indexation controlée)
$HOME/Termino/FasterControlledFR.sh $HOME/Termino/Corpus/resumes-article-2012.txt $HOME/Termino/Corpus/Ressources/motscles2012.termlist.txt
- Acquisition de variantes de termes issus d'une terminologie, à partir des termes extraits par YaTeA (indexation controlée)
$HOME/Termino/FasterControlledFR-YaTeA.sh $HOME/Termino/Corpus/resumes-article-2012.termCandidates.ttg $HOME/Termino/Corpus/Ressources/motscles2012.termlist.txt
- Acquisition de variantes à partir du fichier texte (indexation libre)
- Approche distributionnelle à partir des termes
candidats : utilisation des contextes partagés pour regrouper les
mots ou les termes
$HOME/Termino/Logiciels/DistributionalAnalysis.sh --terms $HOME/Termino/Corpus/resumes-article-2012.termList.xml --dependency HM --samepostag --lemma --simplifyterms --semmeasure Jaccard --relations > $HOME/Termino/Corpus/resumes-article-2012.DArel
Vous pouvez également inclure des options permettant de filtrer les résultats :
- --threshold gt=0.5 (faire varier la valeur) : seuil minimal permettant de retenir une relation entre deux mots
- --minimumCtxt 2 (faire varier la valeur) : seuil minimal de contexte communs permettant de retenir une relation entre deux mots
- --minimumFreq 2 (faire varier la valeur) : seuil minimal permettant de retenir un contexte
- Analyser et comparer les résultats obtenus.
- Approche lexicale : utilisation de l'inclusion lexicale de
termes (acquisition de relations d'hyperonymie, en général)
- A partir des différents résultats, constituer une terminologie (partielle) du TALN
Génération d'un index
Pour la génération d'un index (sans référence de
localisation), il est possible d'utiliser le
script makeIndex.pl
qui intègre
les termes, des relations d'hyperonymie, de
synonymie et voir-aussi. Par exemple :
$HOME/Termino/Logiciels/makeIndex.pl -S \ -i $HOME/Termino/Corpus/Ressources/motscles2012.termlist.txt \ -t $HOME/Termino/Corpus/resumes-article-2012.terms -t $HOME/Termino/Corpus/resumes-article-2012-all.termList.txt \ -h $HOME/Termino/Corpus/resumes-article-2012.lexinclusion -h $HOME/Termino/Corpus/resumes-article-2012.relHyperonymie-liste.txt \ -s $HOME/Termino/Corpus/resumes-article-2012+motscles2012.CI.varTerm -s $HOME/Termino/Corpus/resumes-article-2012.FI.varTerm \ -s $HOME/Termino/Corpus/resumes-article-2012+motscles2012.CI-YaTeA.varTerm -s $HOME/Termino/Corpus/resumes-article-2012.FI-YaTeA.varTerm \ -a $HOME/Termino/Corpus/resumes-article-2012.DArel
Format des fichiers :
- Terms (option
-t
) :
Trois formats peuvent être utilisés :- Format 1 colonne : un terme par ligne
- Format 2 colonnes : format de sortie de TermTagger (identifiant de terme et terme séparés par une tabulation)
- Format 3 colonnes : format de sortie
termList
de YaTeA (terme, fréquence et autre mesures de tri séparés par une tabulation)
- Index (option
-i
) : un terme par ligne - Relations d'hyperonymie (option
-h
) : format de sortie de l'acquisition de patrons et du calcul d'inclusion lexicale (hyperonyme et hyponymie séparés par une tabulation) - Relations de synonymie (option
-s
) : format de sortie de Faster (terme et son synonyme séparés par une tabulation) - Relations de voir-aussi (option
-a
) : format de sortie du script d'analyse distributionnelle (termes associés séparés par:
)
Outils de TAL (documentation complémentaire au TP)
Recherche de termes issus d'une ressource dans un texte
- Vous pouvez développer vos programmes pour réaliser cette recherche
- Vous pouvez utiliser ce script
$HOME/Termino/Logiciels/grepTerms.pl --terms Ressource --corpus Corpus --list
(recherche basique) se trouvant dans le répertoire $HOME/Termino/Logicielsoù :
- Ressource terminologique
- Corpus : Corpus au format texte
- Voir l'aide avec
$HOME/Termino/Logiciels/grepTerms.pl --help
Reconnaissance de termes issus d'une ressource dans un texte
-
Scripts basés sur le module Perl Alvis::TermTagger
- Reconnaissance de termes avec TermTagger.sh :
$HOME/Termino/TermTagger.sh Corpus Ressource
se trouvant dans le répertoire $HOME/Terminooù :
- Ressource : Liste de termes issus d'une ressource terminologique (un terme par ligne)
- Corpus : Corpus au format texte
Corpus.terms
(chaque terme est précédé du numéro de la phrase dans lequel il se trouve).
- Reconnaissance de termes avec TermTagger.sh :
Analyse morpho-syntaxique (pour le français)
- TreeTagger
Remarques :
- Associe un lemme et une étiquette morpho-syntaxique à chaque mot d'un texte donné en argument
- Jeu d'étiquette pour le français
- L'utilsation du script nécessite la modification de la variable
PATH. Pour cela, utilisez les commandes suivantes
cd $HOME/Termino/TreeTagger PATH=`pwd`/cmd:`pwd`/bin:$PATH
Utilisation
- tree-tagger-french Corpus : le corpus en argument
est segmenté en mot avant d'être étiqueté.
Le corpus est un fichier texte. - tree-tagger lib/french.par -token -lemma -sgml < Corpus : le corpus sur l'entrée standard doit être segmenté en mot
- GeniaTagger
Remarques :
- Associe un lemme et une étiquette morpho-syntaxique à chaque mot d'un texte donné en argument
- Jeu d'étiquette pour l'anglais
Utilisation
- geniatagger < Corpus > CorpusTagge : le corpus sur l'entrée
est segmenté en mot avant d'être étiqueté.
Le corpus est un fichier texte. - geniatagger -nt < Corpus > CorpusTagge : le corpus sur l'entrée
est segmenté en mot avant d'être étiqueté.
Le corpus est un fichier texte segmenté en mot.
Extraction de termes
- YATEA
Utilisation :
- Exemple d'exécution (texte en anglais, étiquetage avec
TreeTagger pour l'anglais) :
cd $HOME/Termino/YaTeA PATH=`pwd`:$PATH yatea.sh Config/yatea.rc Corpus
Le fichier Corpus doit être au format de sortie du TreeTagger
Les résultats sont dans le répertoire Corpus créé dans le répertoire courant. Plusieurs fichiers sont disponibles :
- candidats.xml : Liste des termes analysés, au format XML
- termList.txt : Liste des termes
- termCandidates.ttg : Liste des termes au format de sortie du TreeTagger
- unparsed et unparsable Listes de groupes nominaux non analysés
Configuration :
Plusieurs fichiers de configuration sont disponibles dans le répertoire YaTeA/Config
- yatea.rc : extraction de termes dans des corpus en anglais. Le corpus doit être étiqueté avec TreeTagger pour l'anglais ou GeniaTagger
- yatea-fr.rc : extraction de termes dans des corpus en français. Le corpus doit être étiqueté avec TreeTagger pour le français (pour l'utilsation de TreeTagger, voir plus haut).
Autre possibilité d'utilisation (sans le script yatea.sh) :
cd $HOME/Termino/YaTeA/Lingua-YaTeA PATH=`pwd`/bin:$PATH export PERL5LIB=`pwd`/lib:$PERL5LIB cd $HOME/Termino/YaTeA/Config-General-2.41/blib export PERL5LIB=`pwd`/lib:$PERL5LIB cd $HOME/Termino/YaTeA/Parse-Yapp-1.05/blib export PERL5LIB=`pwd`/lib:$PERL5LIB yatea --rcfile=yatea.rc Corpus
- Exemple d'exécution (texte en anglais, étiquetage avec
TreeTagger pour l'anglais) :
Acquisition de relations entre termes
- FASTER
Utilisation :
cd $HOME/Termino/FASTER-2.03 PATH=`pwd`/cmd:`pwd`/bin:$PATH
- Indexation libre
- Fastr-free-indexing-fr Corpus.txt : calcul des
variantes en corpus à partir d'un fichier texte (brut) -- pour le français
(par exemple, Fastr-free-indexing-fr prise_charge_diabete_latin1.txt) - Fastr-free-indexing-fr2 TermsEnCorpus : calcul des
variantes en corpus à partir d'une liste de termes extraits par YaTeA
et au format de sortie du TreeTagger -- pour le français
(il s'agit d'éviter d'effectuer une nouvelle extraction de termes qui peut être différente, lorsque vous utilisez Faster)
- TermsEnCorpus : termCandidates.ttg
NB : L'indexation ne consiste pas seulement à identifier les termes pertinents ou discriminants dans un texte, mais aussi regrouper les termes similaires (morphologiquement, syntaxiquement ou sémantiquement). Vous réduisez ainsi la taille de l'index (et donc après, le coût de la recherche dans un contexte de recherche d'information). Vous regroupez ainsi les termes synonymes ou similaires dans une même entrée de l'index.
- Fastr-free-indexing-fr Corpus.txt : calcul des
variantes en corpus à partir d'un fichier texte (brut) -- pour le français
- Indexation controlée
- Fastr-controlled-indexing-fr Corpus ListeDeTermes : calcul des
variantes en corpus d'une liste de termes controlés -- pour le français
(par exemple, Fastr-controlled-indexing-fr prise_charge_diabete_latin1.txt Termes-UMLS-FRE-avecpointfinal.list)
- Fastr-controlled-indexing-fr2 TermesEnCorpus
ListeDeTermes : calcul des variantes d'une liste de termes
controlés à partir d'une liste de termes extraits d'un corpus par
YaTeA. Les deux fichiers doivent être au format de sortie du
TreeTagger -- pour le français
- TermsEnCorpus : termCandidates.ttg
- ListeDeTermes : termes issus d'une ressource (Termes-UMLS-FRE-avecpointfinal.list par exemple)
NB : il est possible que cette partie prenne beaucoup de temps ou que Faster se termine avant la fin. Dans ce cas, il faut découper le fichier ListeDeTermes en plusieurs sous listes (avec split et l'option -l) et lancer l'indexation controlée sur chaque sous liste.
Pour obtenir la liste des termes contrôlés au format TreeTagger, chaque terme doit se terminer par une point. Vous utilisez ensuite TreeTagger pour étiqueter les termes.
Programme complémentaire :
Lex2Faster.pl Ajout un point à la fin de chaque ligne fournit sur l'entrée standard (supprime également tous les points se trouvant à l'intérieur de chaque ligne).
- Fastr-controlled-indexing-fr Corpus ListeDeTermes : calcul des
variantes en corpus d'une liste de termes controlés -- pour le français
- Indexation libre
- Acquisition de relations à partir de patrons lexicaux syntaxiques
- PatronsLS.pl < Corpus.txt : propose des relations d'hyperonymie en utilisant des patrons caractéristiques de cette relation (pour des textes en anglais) .
- PatronsLS-fr.pl < Corpus.ls-in : propose des relations d'hyperonymie en utilisant des patrons caractéristiques de cette relation (pour des textes en français) .
- Programme complémentaire :
- TreeTagger2Inline.pl
Fichier de règles (pour la correction de jeu d'étiquette pour TreeTagger pour l'anglais - modifiable pour d'autres jeux d'étiquettes)
Utilisation :
- TreeTagger2Inline.pl < Corpus.ttg
- TreeTagger2Inline.pl TreeTagger2Inline.rules < Corpus.ttg
Le corpus doit être au format de sortie de TreeTagger.
Le script produit la sortie suivante :
- Une phrase par ligne et chaque mot est présenté de la manière
suivante :
Forme fléchie/Étiquette/Lemme/Clé de hashage
- NB : chaque ligne est séparée par plusieurs lignes vides, et une
balise
<FIC NUM=id>
identifie chaque phrase. - Exemple : proteins/NNP/protein/0
- TreeTagger2Inline.pl
L'option -liste permet de n'afficher que les termes en relation
Les informations en entrée doivent être représentées de la manière suivate : Forme fléchie/Étiquette/Lemme/Clé de hashage
Exemple : proteins/NNP/protein/0
Chaque ligne correspond à une phrase.
- Acquisition de relations par inclusion lexicale
- getTermAndHead.pl
FichierXML : identifie des relations d'hyperonymie par
inclusion lexicale
Le fichier en argument est le fichier XML en sortie de YaTeA
En sortie, chaque ligne correspond à une relation entre un terme hyponyme et un terme hyperonyme.
- getTermAndHead.pl
FichierXML : identifie des relations d'hyperonymie par
inclusion lexicale
- Analyse distributionnelle à partir des termes extraits du corpus
- DistributionalAnalysis.sh
[Options] : effectue l'analyse distributionnelle en utilisant les termes extraits du corpus
Options :
- --terms fichierXML : fichier de sortie YaTeA au format XML. Il s'agit de l'ensemble des termes sur lequel portera l'analyse distributionnelle
- --dependency HM : type de relation de dépendance utilisée pour l'analyse distributionnelle (avec HM, les mots pivôts sont les têtes des termes, les contextes sont les modifieurs)
- --samepostag --lemma : définition de contraintes sur le calcul des relations (même étiquette morpho-syntaxique, même lemme
- --simplifyterms : génération de termes élémentaires (bitermes non attestés en corpus)
- --semmeasure Jaccard : spécification de la mesure de similarité utilisée (ici Jaccard)
- --relations : spécification du format de sortie (chaque ligne correspond à une relation entre deux mots
En sortie, chaque ligne correspond à une relation entre deux composants de termes (pouvant être un mot ou un terme).
- DistributionalAnalysis.sh
[Options] : effectue l'analyse distributionnelle en utilisant les termes extraits du corpus
Ressources
NB : ces ressources sont déjà présentes dans l'archive Termino.tar.gz.
- Liste de mots-clés (
$HOME/Termino/Corpus/Ressources/motscles2012.termlist.txt
) des articles publiés dans TALN 2012 - Liste de mots-clés
$HOME/Termino/Corpus/Ressources/motscles-2002-2014.termlist.txt
des articles publiés dans TALN de 2002 à 2014