French (Fr) English (United Kingdom)

Thierry Hamon

Publications Collaborations Encadrements Logiciels Challenges et Shared-tasks Séminaires Divers
2012-2013 Institut Galilée - Paris 13 INaLCO Paris 7 Paris 5 ERAMUS UFR LSHS - Paris 13 IUT de Villetaneuse - Paris 13
Recherche Enseignement Divers
Linux
retour

Traitement Automatique des Langues - Master 2 Informatique Biomédicale - Paris 5 / Paris 13 - 2011-2012


Table des matières


Cours


Travaux Pratiques

Objectif du TP

L'objectif du TP est de construire un index de plusieurs résumés issus de PubMed.

Pour cela, vous allez apprendre à utiliser des outils de TAL et à exploiter leur résultats. Puis vous sélectionnerez les termes et relations que vous jugerez pertinents et représentatifs des résumés.

NB : Si les outils présentés en cours ne sont pas suffisant, 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).

Préliminaires

  • 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
    

Constitution du corpus 

  • Constituez le corpus à partir des titres et résumés des PMID suivants :
  • Vous conserverez dans un fichier à part les termes du MeSH indexant chaque article.

    Vous pouvez récupérer les fichiers XML (qui contiennent des informations demandéés, mais celles-ci doivent être sélectionnées dans un deuxième temps). Vous pouvez également réaliser des copier-collers pour récupérer les informations demandées dans la page Web.

    Les titres et résumés seront conservés dans un fichier nommé corpusVIH.txt.

TP

Vous devez d'abord constituer votre corpus

Après avoir constitué votre corpus, effectuez les traitements suivants :

On supposera que le fichier du corpus se trouve dans $HOME/Termino/Corpus

  1. Etiquetage morpho-syntaxique
    • avec TreeTagger
      $HOME/Termino/TreeTaggerEN.sh $HOME/Termino/Corpus/corpusVIH.txt
      
  2. Recherchez, dans le corpus, les termes issus du MeSH.
    Pour cela utiliser le script grepTerms.pl (recherche basique)
    $HOME/Termino/Logiciels/grepTerms.pl --terms $HOME/Termino/Corpus/MESH.termlist.txt --corpus $HOME/Termino/Corpus/corpusVIH.txt --list > $HOME/Termino/Corpus/corpusVIH.terms
    
    Analyser les résultats
  3. Extraction des termes avec YaTeA
    • à partir du fichier en sortie de TreeTagger
      $HOME/Termino/YaTeA/yatea-ttg.sh $HOME/Termino/Corpus/corpusVIH.ttg
      
  4. Acquisition de variantes morpho-syntaxiques : Utilisation de Faster en version indexation libre
    • Acquisition de variantes à partir du fichier texte (indexation libre)
      $HOME/Termino/FasterFreeEN.sh $HOME/Termino/Corpus/corpusVIH.txt
      
    • Acquisition de variantes à partir des termes extraits par YaTeA (indexation libre)
      $HOME/Termino/FasterFreeEN-YaTeA.sh $HOME/Termino/Corpus/corpusVIH.termCandidates.ttg
      
    • Acquisition de variantes de termes issus d'une terminologie, à partir du fichier texte (indexation controlée)
      $HOME/Termino/FasterControlledEN.sh $HOME/Termino/Corpus/corpusVIH.txt $HOME/Termino/Corpus/MESH.termlist.txt
      
    • Acquisition de variantes de termes issus d'une terminologie, à partir des termes extraits par YaTeA (indexation controlée)
      $HOME/Termino/FasterControlledEN-YaTeA.sh $HOME/Termino/Corpus/corpusVIH.termCandidates.ttg $HOME/Termino/Corpus/MESH.termlist.txt		   
      
    • Approche syntaxique : définition et application de patrons lexico-syntaxiques (acquisition de relations d'hyperonymie)
      $HOME/Termino/Logiciels/TreeTagger2AcabitIn.pl < $HOME/Termino/Corpus/corpusVIH.ttg | $HOME/Termino/Logiciels/PatronsLS.pl --liste > $HOME/Termino/Corpus/corpusVIH.relHyperonymie-liste.txt
      
      $HOME/Termino/Logiciels/TreeTagger2AcabitIn.pl < $HOME/Termino/Corpus/corpusVIH.ttg | $HOME/Termino/Logiciels/PatronsLS.pl > $HOME/Termino/Corpus/corpusVIH.relHyperonymie.txt
      
    • 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/corpusVIH.termList.xml
      
    • Analyser et comparer les résultats obtenus.

  5. Construire un index de chaque résumé (qui prennent en compte les relations sémantiques extraites

Outils de TAL (documentation complémentaire au TP)

Analyseurs morpho-syntaxiques (pour l'anglais)

  • TreeTagger 

    Remarques :

    • Associe un lemme et une étiquette morpho-syntaxique à chaque mot d'un texte donné en argument
    • Jeu d'étiquette pour l'anglais
    • 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
      	    

    Utilsation 

    • tree-tagger-english Corpus : le corpus en argument est segmenté en mot avant d'être étiqueté.
      Le corpus est un fichier texte.
    • tree-tagger lib/english.par -token -lemma -sgml < Corpus : le corpus sur l'entrée standard doit être segmenté en mot

Recherche de termes issus d'une ressource dans un texte

  • Vous pouvez utiliser ce script
    $HOME/Termino/Logiciels/grepTerms.pl --terms Ressource --corpus CorpusTreeTagger --umls
    (recherche basique) se trouvant dans le répertoire $HOME/Termino/Logiciels

    où :

    • Ressource
    • CorpusTreeTagger : Corpus analysé par TreeTagger (au format de sortie de TreeTagger)

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).
    • yatea-flemm.rc : extraction de termes dans des corpus en français. Le corpus doit être étiqueté avec TreeTagger pour le français puis par Flemm (pour l'utilsation de TreeTagger ou Flemm, 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

Acquisition de relations entre termes

  • FASTER

    Utilisation :

    cd $HOME/Termino/FASTER-2.03
    PATH=`pwd`/cmd:`pwd`/bin:$PATH
    
    • Indexation libre 

      • Fastr-free-indexing-en Corpus.txt : calcul des variantes en corpus à partir d'un fichier texte (brut) -- pour l'anglais
        (par exemple, Fastr-free-indexing-en prise_charge_diabete_latin1.txt)

      • Fastr-free-indexing-en2 TermsEnCorpus : calcul des variantes en corpus à partir d'une liste de termes extraits par YaTeA et au format de sortie du TreeTagger -- pour l'anglais
        (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.

    • Indexation controlée 

      • Fastr-controlled-indexing-en Corpus ListeDeTermes : calcul des variantes en corpus d'une liste de termes controlés -- pour l'anglais
        (par exemple, Fastr-controlled-indexing-en corpusVIH.txt MESH-avecpointfinal.list)

      • Fastr-controlled-indexing-en2 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 l'anglais
        • TermsEnCorpus : termCandidates.ttg
        • ListeDeTermes : termes issus d'une ressource (MESH-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).

  • 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) .>

      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.

    • Programme complémentaire :

      • TreeTagger2AcabitIn.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 :

        • TreeTagger2AcabitIn.pl < Corpus.ttg
        • TreeTagger2AcabitIn.pl TreeTagger2AcabitIn.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
  • 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.


Ressources terminologiques 


Devoir 

Le devoir peut être réalisé en seul ou en binôme.

Vous avez à disposition une liste de résumés (avec leur titre et les termes MeSH) au format texte. Les fichiers XML sont disponibles ici

L'objectif du devoir est de construire

  • un index de l'ensemble des résumés (en prenant en compte les titres)
  • un index par résumé (en prenant en compte le titre)

Pour cela, vous utiliserez les outils et techniques vus en TP. Puis vous sélectionnerez les termes et relations que vous jugerez pertinents pour être inclus dans les index.

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) ou en rédigeant des programmes.

Evaluation : vous devez préparer un rapport de 10 pages maximum dans lequel vous présenterez la méthode et les outils utilisés. Vous analyserez les résultats afin de présenter les problèmes que vous avez rencontrés et que vous n'avez pus résoudre, ainsi que les erreurs et limites constatées.

Avant le 13 novembre 2011, vous enverrez thierry.hamon@univ-paris13.fr et natalia.grabar@univ-lille3.fr :

  • le rapport au format PDF (les fichiers Word ne seront pas acceptés),
  • une archive ZIP ou TAR.GZ contenant les fichiers produits ainsi que les index par document et pour l'ensemble du corpus.

la soutenance est fixé au 18 novembre 2011 de 14h à 17h (avec la soutenance de RI-BI)


Dernière modification effectuée le 9 nov 2011 à 17:24