Boîte à Outils

Sommaire

  1. A propos de la BAO 3
  2. Treetagger2xml et programme d'appel associé
  3. Xpath
  4. XSLT
  5. Programme Perl

A propos de la BAO 3

Après les finitions sur la BAO2, nous avons à notre disposition un certain nombre de fichiers étiquetés syntaxiquement, l'idée est maintenant d'en extraire les des patrons syntaxiques choisis afin de pouvoir visualiser certaines interactions dans la partie BAO4. Pour cela nous allons utiliser trois méthodes différentes et les illustrer avec différents exemples. Les programmes seront commentés uniquement succinctement et disponibles au téléchargement. Les méthodes abordées ici se basant sur les étiquetages syntaxiques de Cordial et Treetagger, elles sont de trois types.
les deux premières se basant sur le résultat du programme treetagger2xml qui prend en entrée un fichier treetagger et intègre une structure xml aux éléments. Nous aborderons donc un descriptif de l'utilisation et des adaptations que nous avons faites sur treetagger2xml. Ensuite nous parlerons des méthodes différentes mises en place concernant l'extraction de patron :

Remarque : A ce stade, l'étiquetage ayant été effectué, nous n'avons plus à nous soucier de la taille des fichiers, nous décidons de ne plus préserver la division par rubrique.

Treetagger2xml et programme d'appel associé

Nous commençons donc par treetagger2xml .
Comme déjà dit auparavant il prend en entrée un fichier étiqueté et lemmatisé par tree tagger, il prend aussi un format d'encodage. Vous trouverez ci-dessous le programme modifié pour une utilisation personnelle généralisée à un ensemble de fichiers. Nous rajoutons ainsi un argument supplémentaire en paramètre qui sera lié à notre parcours d'arborescence.
Nous joignons aussi la première version de notre programme d'appel, en effet nous avons cette fois généralisé le parcours d'arborescence et par un simple appel, nous utilisons le programme treetagger2xml.
La seule subtilité du programme d'appel réside dans la bonne gestion des éléments passés en paramètre du programme appelé et par l'idée de faire appel à deux programmes via une fonction d'appel.

system ("perl modifTreetagger2xml-utf8.pl $fichier utf-8 $saveName");

Programmes

Observons maintenant les programmes. (Cliquez sur les images afin afficher les pages html simple pour meilleure visualisation)

Le programme treetagger2xml modifié :

Le programme d'appel :



Les liens pour le téléchargement des programmes :

modifTreetagger2xml-utf8.pl
appelTreeTagger2xml-utf8.pl

Résultats

Nous présenterons les résultats de treetagger2xml dans la partie XSLT car nous leur avons adjoint une feuille de style ce qui était la problématique d'extraction posée par cette section. En voici néanmoins un avant goût :
Un résultat de treetagger2xml
Un résultat de treetagger2xml

Xpath

Le programme Xpath se base sur la librairie Xpath de perl, Le code étant largement commenté, nous ne nous attarderons pas d'avantage. Un détail supplémentaire néanmoins nous avons encore une fois utilisé un programme d'appel pour généraliser le processus.
Malheureusement, ce programme reste singulièrement long (en terme de temps d'exécution), il convient ainsi mieux à un traitement localisé, et pour un fichier qui ne serait pas trop volumineux.

Au bout de 7 heures ... 3 fichiers traités
Au bout de 7 heures ... 3 fichiers traités

Programmes

Pour commencer le fichier motif argument du programme.
Le programme Xapth modifié :

Le programme d'appel :


Et bien sûr les liens pour télécharger les scripts :

Xpath.pl
appelXpath.pl

Résultats

Résultat extraction de patrons programme Xpath
res_extract-NOM_ADJtagger_0,2-3214,1-0,0.txt.xml.txt
res_extract-NOM_ADJtagger_0,2-3238,1-0,0.txt.xml.txt
res_extract-NOM_ADJtagger_0,2-3246,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3208,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3210,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3214,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3234,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3236,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3238,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3242,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3246,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,2-3260,1-0,0.txt.xml.txt
res_extract-NOM_PRP_NOMtagger_0,57-0,64-823353,0.txt.xml.txt

Remarque : le programme prenant trop de temps nous avons limité le nombre de fichiers ainsi que le nombre de patrons extraits

XSLT

La méthode XSLT est similaire au programme précédent dans sa finalité. Le traitement est cependant différent en cela que l'on applique une feuille de style au fichier XML original, issu de treetagger2xml et que l'on ne crée donc pas un nouveau fichier.
L'idée étant de cibler des noeuds, de tester si il contiennent notre motif (ici NOM PRP NOM), si c'est le cas de stocker l'élément ciblé dans une variable. On prend le noeud suivant si le résultat était positif (following-sibling) on teste la suite de notre motif (même opérations) jusqu'à la fin, on imprime ensuite nos variables dans un tableau.
On peut observer ici la feuille XSLT :

feuille de style adaptée pour chaque fichier
feuille de style adaptée pour chaque fichier


On peut voir, avant de tester les résultats plus bas, ci après un screenshot test du résultat sur un fichier :


feuille de style appliquée
feuille de style appliquée

Le lien pour télécharger la feuille de style :

0_feuilleStyle.xsl

Résultats

Voici le tableau de liens des résultats issus de treetagger2xml avec une feuille de style appliquée.

!!! Attention !!!
Certains fichiers étant très volumineux le temps de chargement peut-être long, d'autre part, selon les configurations, certains navigateurs ne tolèrent pas l'application d'XSLT (par sécurité) en cas de problème (ouverture d'une page blanche) merci de tester avec un autre navigateur.


Résultat XSLT
tagger_0,2-3208,1-0,0.txt.xml
tagger_0,2-3210,1-0,0.txt.xml
tagger_0,2-3214,1-0,0.txt.xml
tagger_0,2-3224,1-0,0.txt.xml
tagger_0,2-3232,1-0,0.txt.xml
tagger_0,2-3234,1-0,0.txt.xml
tagger_0,2-3236,1-0,0.txt.xml
tagger_0,2-3238,1-0,0.txt.xml
tagger_0,2-3242,1-0,0.txt.xml
tagger_0,2-3244,1-0,0.txt.xml
tagger_0,2-3246,1-0,0.txt.xml
tagger_0,2-3260,1-0,0.txt.xml
tagger_0,2-3404,1-0,0.txt.xml
tagger_0,2-3476,1-0,0.txt.xml
tagger_0,2-3546,1-0,0.txt.xml
tagger_0,2-651865,1-0,0.txt.xml
tagger_0,57-0,64-823353,0.txt.xml

Programme Perl

Nous attaquons la dernière partie avec un script d'extraction de patrons méthode pure perl. Nombreuses sont les solutions vues en cours nous ne les reprendrons pas ici, au besoin on pourra les trouver sur le site plurital. Nous avons choisis de créer une méthode originale, inspirée des techniques observées et valable pour les fichiers cordial et treetagger (moyennant une adaptation). Vous trouverez le script commenté après ainsi que le script d'appel (on réemploi encore cette technique d'appel extérieur pour généraliser sur x fichiers)

(et merci à notre Louis national pour le debug des lignes 35 et 63)

Script

Le programme Extraction Motif :

Le programme d'appel :


Les liens de téléchargement :

ExtractionMotif_v2.pl
appelExtractionMotif.pl

Résultats

Résultat script d'extraction
Resulttagger_0,2-3208,1-0,0
Resulttagger_0,2-3210,1-0,0
Resulttagger_0,2-3214,1-0,0
Resulttagger_0,2-3224,1-0,0
Resulttagger_0,2-3232,1-0,0
Resulttagger_0,2-3234,1-0,0
Resulttagger_0,2-3236,1-0,0
Resulttagger_0,2-3238,1-0,0
Resulttagger_0,2-3242,1-0,0
Resulttagger_0,2-3244,1-0,0
Resulttagger_0,2-3246,1-0,0
Resulttagger_0,2-3260,1-0,0
Resulttagger_0,2-3404,1-0,0
Resulttagger_0,2-3476,1-0,0
Resulttagger_0,2-3546,1-0,0
Resulttagger_0,2-651865,1-0,0