BAO 2 : Cordial et Treetagger
Avant toute chose, on a choisi la rubrique ‘A la Une’.
Pour BAO2, il y a deux variantes :
- Avec Cordial. C’est un programme qui fait de l’étiquetage. On charge notre fichier dedans et on obtient un fichier qui contient trois colonnes : forme, lemme, catégorie. La sortie est au format texte brut. C’est un programme payant.
- Avec Treetagger. Il fournit une sortie au format XML. Il s’utilise uniquement en ligne de commande. Il faut l’intégrer dans le parcours de l’arborescence. On doit le mettre juste après l’extraction de textes. Ca produit une sortie au format XML. On a aussi le lemme et la catégorie. Puis, il faudra reformater la sortie au format XML.
CORDIAL :
Puisque Cordial nécessite uns sortie au format .txt, on a modifié cette ligne du programme qui va faire le corpus en sortie qu’on va mettre dans Cordial :
my $output1="SORTIE.txt";
Puis, on ouvre le corpus obtenu avec le programme et on le met dans Cordial, on lance l’étiquetage. On obtient :
le le DETDMS
bio bio ADJINV
et et COO
l' le DETDMS
art de vivre art de vivre NCMS
. . PCTFORTE
\r
Les le DETDPIG
syndicats syndicat NCMP
réclament réclamer VINDP3P
des un DETDPIG
psychologues psychologue NCPIG
TREETAGGER :
En entrée, on doit avoir un fichier qui contient un mot par ligne pour ça on doit intégrer dans le script une ligne qui appelle : tokenise-fr.pl.
Puis, on utilise un programme qui étiquète : tree-tagger.exe.
Enfin, on convertit la sortie obtenue au format xml avec : treetagger2xml.pl.
Pour ça, on intègre les lignes suivantes dans le script :
my $output1="SORTIE.xml";
→ pour dire que la sortie est en xml
if (exists($tableaudestextes{$propre})) { # on mémorise $propre
$tableaudestextes{$propre}++; # on incrémente la valeur de $propre FACULTATIF (pour faire plaisir à M. FLEURY)
} # mais on ne la réimprime pas afin de supprimer les doublons si il existe déjà
else { # on entre dans cette boucle si il n'existe pas encore-
open (FILE, ">tmp.txt");#on ouvre un fichier temporaire
print FILE $propre;#on met le contenu de $propre dans tmp.txt
close FILE;# on ferme le fichier temporaire
print "ETIQUETAGE \n"; #on commence l'étiquetage
system ("perl \"./TreeTagger/cmd/tokenise-fr.pl\" tmp.txt > resultat-tokenize.txt");#on lance tokenise
system ("tree-tagger.exe french.par -lemma -token -no-unknown resultat-tokenize.txt > resultat-etiquetage.txt");#on lance treetagger sur le résultat de tokenise
system ("perl \"./TreeTagger/cmd/treetagger2xml.pl\" resultat-etiquetage.txt");# on convertit au format xml ce qui était au format txt
print "FIN ETIQUETAGE \n";# on a fini l'étiquetage
open(FILE, "resultat-etiquetage.txt.xml");# on ouvre le résultat de l'étiquetage qui est au format xml
my $tmp=<FILE>; #on met la première ligne car on ne veut pas avoir plusieurs fois l'en-tête
my $resultat="";# on initialise la variable résultat
while(my $lignetmp=<FILE>) {# on lit toutes les lignes de resultat-etiquetage.txt.xml
$resultat.=$lignetmp;#on concatène chaque ligne dans $resultat
}
close(FILE);#on ferme le fichier
# fichier treetagger2.xml sera ds un fichier -> $resultat a concatener dans DUMPFULL
$DUMPFULL1.=$resultat; # on concatène le contenu de $propre obtenu dans chaque boucle
$i++; # on incrémente le compteur
$tableaudestextes{$propre}++; # on incrémente pour dire qu'on a déjà rencontré ce texte pour qu'après si on le retrouve on ne réimprime pas la même séquence
}
Il faut faire attention de bien mettre les nouvelles lignes dans la boucle else.
Il faut encore ajouter à la main l'en tête, dire quel jour on est et dans quelle rubrique.