[retour au menu]

Boîtes à outils 3 et 4 : extraction terminologique et construction de graphes

Objectifs: 


Outils :


Mise en oeuvre:

remonter

1ère partie:  Extraction terminologique

A partir des résultats de tree-tagger, on a cherché des patrons syntaxiques, c'est à dire des segments répondant à une suite donnée d'étiquettes syntaxiques. On a utilisé dans ce but le script  trouve_terme.pl et son équivalent pour cordial trouve_terme_cordial.pl. Ces deux scripts prennent en 1er argument le fichier à analyser et en 2ème argument un fichier contenant les patrons syntaxiques à conserver. Ils renvoient un fichier de sortie (dont le nom est demandé à l'utilisateur après lancement du script) contenant les suites de termes correspondant aux patrons donnés.
On a choisi de travailler à partir des patrons Adjectif- Nom et Nom-Adjectif. ils nous a donc fallu constituer 2 fichier de patrons, un correspondant à la norme d'étiquetage de TreeTagger ( fichierPatronsTreeTagger ) et l'autre à celle de Cordial (fichierPatronsCordial ).  La syntaxe du programme est ensuite celle-ci:
pour TreeTagger:  perl trouve_terme.pl <fichier à analyser> <fichier contenant les patrons>
pour Cordial: perl trouve_terme_cordial.pl <fichier à analyser> <fichier contenant les patrons>
On a lancé les deux programmes dans l'invite de commande Windows:



résultat pour TreeTagger : fichier resultatExtractionTreeTagger.txt
résultat pour Cordial : fichier resultatExtractionCordial.txt

remonter

2ème partie : Conversions des patrons au format Graphml puis Pajek, analyse avec Pajek

On commence par créer à partir des résultats d'extraction de patrons un fichier au format GraphML à partir du script fourni  patron2graphml.pl . Ce script prend en entrée une liste de termes associés et crée un fichier au format XML définissant les liens entre ces termes à travers deux balises essentielles : <node> défini les noeuds (qui sont les termes) et <edge>  défini les arcs : lien entre deux mots.
syntaxe du programme : perl patron2graphml.pl  < fichier d'extraction terminologique >

On le lance donc ainsi pour le TreeTagger : perl patron2graphml.pl  resultatExtractionTreeTagger.txt
résultat :  patronAdjNomTreetagger.txt.graphml

et ainsi pour Cordial : perl patron2graphml.pl  resultatExtractionCordial.txt
résultat : patronAdjNomCordial.txt.graphml

Il faut ensuite convertir le format GraphML vers le format Pajek. On utilise pour cela  XSLT comme modifieur de donnée (parser ), à travers l' utilitaire Unix xsltproc :

xsltproc  GraphML2Pajek.xsl  patronAdjNomTreeTagger.txt.graphml
résultat : patronAdjNomTreeTagger.net

xsltproc GraphML2Pajek.xsl  patronAdjNomCordial.txt.graphml
résultat: patronAdjNomCordial.net

On peut alors soumettre à Pajek ces résultats finaux :

- cordial:



-TreeTagger:



remonter


3ème partie : intégration au script des boîtes à outils 1 et 2

Le code suivant, ajouté en fin de programme principal dans le script etiqueteur_recursif2.pl permet l'intégration des tâches précédentes dans une chaîne de traitements automatique allant de l'acquisition des fichiers dans l'arborescence jusqu'à la création de graphes pour Pajek, uniquement cependant pour l'étiquetage avec TreeTagger. On a modifié légèrement les programmes trouve_terme.pl ( trouve_terme2.pl ) et  patron2graphml.pl (patron2graphml2.pl)  . 

# extraction des patrons

print
STDOUT "patrons à analyser (format, exemple : NOM_ADJ-ADJ_NOM ) ?";
$patrons = <STDIN>;
chomp ($patrons);
$fichier_extraction = "extractionTerminologique/$patrons";
$extraction =`perl trouve_terme2.pl $output[1] $patrons`;
ecritDansFichier ($fichier_extraction, $extraction);

#Conversion GraphML

$graphML
= `perl patron2graphml2.pl $fichier_extraction`;
$fichierGraphml="pajek/$patrons.graphml";
ecritDansFichier ($fichierGraphml, $graphML);

#Conversion Pajek

$pajek
= `xsltproc pajek/GraphML2Pajek.xsl $fichierGraphml `;
$fichierPajek="pajek/$patrons.net";
ecritDansFichier ($fichierPajek, $pajek);

#fin du programme
exit;

Programme correspondant : etiqueteur_recursif2etendu-comm.pl  ( version html )

remonter

Conclusion

    Ce travail nous a donné l'occasion, dans la lignée de celui effectué au premier semestre, de rendre compte de l'efficacité des langage de script dans l'automatisation des tâches informatique. Perl s'avère en cela très efficace, notamment car il permet une gestion aisé des appels systèmes.

[retour au menu]