[retour au menu]
Boîtes à outils 3 et 4 :
extraction terminologique et construction de graphes
Objectifs:
- Extraire des segments correspondants à des
patrons
donnés dans le corpus étiqueté obtenus
dans les boîtes à outils 1 et 2.
- Représenter ces patrons sous formes de graphes
de
cooccurences des termes.
Outils
:
Mise en oeuvre:
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
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:
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 )
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]