BAO 2 : Cordial et Treetagger

Publié le par Marion et Sophie

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.

 

 

 

Publicité
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article