BAO2
Dans la BAO 2, nous allons présenter les deux outils qui nous ont permis d'avoir des sorties étiquetées. Ces sorties étiquetées vont représenter des données en entrée pour la BAO 3. Mais pour le moment, nous allons nous focaliser sur les outils d'étiquetage morphosyntaxique.
Deux méthodes différentes ont été utilisées. La première permet de faire un étiquetage au moment où on extrait le texte, grâce au Treetagger qu'on intègre directement à notre script final. L'étiquetage se fait, au fur et à mesure de l'extraction des parties textuelles, flux après flux. Dans la deuxième méthode, il s'agit d'utiliser une interface graphique (Cordial), qui prend en entrée un fichier au format texte brut.
L'étiquetage
1- Étiquetage via Treetagger (au fil de l'eau)
Comme nous l'avons déjà évoqué plus haut, Treetagger est un outil, qui permet d'étiqueter les contenus textuels des fils RSS juste après leur extraction. On obtient, en sortie, un fichier XML. Treetagger s'utilise en ligne de commande et fournit trois types d'informations : la partie du discours, le lemme et la forme graphique.
Avant d'intégrer cet outil à notre script final notre script final, nous avons d'abord commencé à nous familiariser avec ses différents modules. Pour ce faire, nous l'avons utilisé en ligne de commande sur un échantillon de fils RSS. Nous présentons, ci-dessous la ligne de commande utilisée et le résultat de l'étiquetage.
$perl ./cmd/tokenise-fr.pl fichierentrée.txt | ./bin/tree-tagger.exe ./lib/french.par -lemma -token -sgml > fichiersortie.txt
Parmi PRP parmi
les DET:ART le
nouvelles ADJ nouveau
tendances NOM tendance
, PUN ,
le DET:ART le
bio ADJ biologique
et KON et
l' DET:ART le
art NOM art
de PRP de
vivre VER:infi vivre
haut de page
On remarque surtout, que le chemin employé dans la ligne de commande est de type UNIX. En effet, il est important de signaler qu'il est nécessaire de spécifier le type de chemin, selon qu'on travaille sous Cygwin (émulation de UNIX sous Windows) ou sous l'invite de commande de Windows. Ainsi, sous Cygwin on utilise ce type de chemin : ./treetagger-win32/cmd/treetagger2xml.pl, alors que sous Windows, c'est ce type de chemin qu'on va utiliser : \"./treetagger-win32/cmd/tokenise-fr.pl. Par ailleurs, les fichiers tree-tagger.exe et french.par doivent être placés au même niveau que le fichier qui doit être étiqueté.
Voyons, à présent, de plus près les différents composants de Treetagger lorsque nous l'avons intégré à notre script. Précisons, avant toute chose, qu'il s'agit seulement d'un extrait du script global, car nous allons décrire la partie du code ayant trait au processus d'étiquetage.
if (exists($tableaudestextes{$propre})) {
$tableaudestextes{$propre}++;
}
else {
open(file, ">temp.txt");
print file $propre;
print file;
close(file);
print "début de l'étiquetage\n";
#system("perl ./treetagger-win32/cmd/tokenise-fr.pl temp.txt | ./treetagger-win32/bin/tree-tagger.exe ./treetagger-win32/lib/french.par -lemma -token -no-unknown > sorttik.txt");
#system("perl ./treetagger-win32/cmd/treetagger2xml.pl sorttik.txt");
system ("perl \"./treetagger-win32/cmd/tokenise-fr.pl\" temp.txt > token.txt");#on lance tokenisation
system ("tree-tagger.exe french.par -lemma -token -no-unknown token.txt > sorttik.txt");#on lance l'étiquetage
system ("perl \"./treetagger-win32/cmd/treetagger2xml.pl\" sorttik.txt");# on convertit au format xml ce qui était au format txt
print "fin de l'étiquetage\n";
open(file, "sorttik.txt.xml");
my $temp=<file>; #permet de lire juste la première ligne, afin d'éviter d'affichier l'entête à chaque fois
my $result="";
while (my $ligne1=<file>) {
$result.=$ligne1;
}
close(file);
$DUMPFULL2.=$result;
$tableaudestextes{$propre}++;
}
Cliquez ici pour télécharger notre script qui intègre Treetagger
haut de page
Dans ce script, on récupère, tout d'abord, le flux textuel qui est contenu dans la variable $propre, dans un fichier qu'on ouvre en écriture (temp.txt). Ensuite, on arrive aux lignes qui représentent le coeur de l'étiquetage. En rouge, les lignes de code qui conviennent à Cygwin et en bleu celles qui sont adaptées à l'invite de commande de Windows. On désactive les lignes en rouge pour se focaliser, dans notre description, sur le mode Windows.
Perl ne sait pas tout faire. Il offre une fonction bien pratique pour faire appel à un programme extérieur : la commande system().
On utilise, à trois reprises, cette commande, afin d'appeler les modules de Treetagger et de mener à bien le processus d'étiquetage. Dans la première ligne system, on utilise le script Perl "tokenise-fr.pl", qui prend, comme paramètre, le fichier temp.txt. Ce dernier contient le flux textuel. On obtient alors une liste de mots séparés par un retour à la ligne. Ensuite, la deuxième ligne system utilise le programme d'étiquetage "tree-tagger.exe", qui prend, comme paramètre le résultat de la tokenisation "token.txt" et génère un fichier étiqueté en sortie "sorttik.txt".
Une fois le fichier tokenisé et étiqueté, nous utilisons le script Perl "treetagger2xml.pl", qui permet de transformer la sortie au format texte brut en une sortie au format XML.
Nous vous proposons, à travers le lien ci-dessous, un extrait de la sortie générée par l'outil Treetagger :
Cliquez ici pour voir un extrait de la sortie étiquetée avec Treetagger
Cliquez ici pour voir la sortie en entier étiquetée avec Treetagger
2- Étiquetage via Cordial
Cordial est un programme développé par la société Synapse Développement. Ce programme permet d'éffectuer différentes taches :
*Étiquetage morphosyntaxique des textes en français
*Analyse statistique des caractéristiques stylistiques de textes
*Aide à l'analyse terminologique et sémantique de corpus
Par ailleurs, Cordial prend, entrée, un fichier txt et génère un fichier étiqueté au format cnr. Dans ce fichier, on trouve plusieurs informations : la forme graphique, le lemme et la partie du discours. Cordial indique également le genre et le nombre des parties du discours et les adjectifs numéraux.
Vous pouvez voir le résultat de l'étiquetage en cliquant ici.
Nous vous proposons deux captures d'écran de l'interface graphique de Cordial. Dans la première capture d'écran, le texte à étiqueter est ouvert. Dans la seconde capture d'écran, on procède au paramétrage de l'étiquetage.
Cliquez sur l'image pour l'agrandir
Cliquez sur l'image pour l'agrandir
haut de page
3- Comparaison des étiquetages : Treetagger VS Cordial
Dans cette dernière partie de la BAO 2, nous allons comparer les étiquetages générés par Treetagger et Cordial et nous verrons que la différence d'étiquetage aura des répercussions directes sur l'extraction des patrons "NOM ADJ" et "NOM PREP NOM" (BAO3).
Les deux fichiers étiquetés ont quasiment le même nombre de lignes étiquetées (3628 pour Treetagger et 3640 pour Cordial). En outre, à plusieurs reprises, Treetagger interprète une suite de deux noms comme un nom suivi d'un adjectif. Prenons l'exemple de "site Internet" (lignes 2049 et 2050) que Treetagger étiquette comme un NOM ADJ. L'image, ci-dessous illustre nos propos.
Cliquez sur l'image pour l'agrandir
L'image ci-dessous montre que Cordial étiquette "site Internet" (lignes 2050 et 2051) comme un nom suivi d'un autre nom.
Cliquez sur l'image pour l'agrandir
D'autres exemples de ce type peuvent être mentionnés. Ainsi, Cordial étiquette, "commission Copé" (lignes 5 et 6) comme une suite de deux noms, alors que Treetagger étiquette cette même suite comme un nom suivi d'un adjectif. Tout comme "box ADSL" que Cordial reconnaît comme une suite de deux noms communs (lignes 2241 et 2242), alors que Treetagger étiquette cette suit comme un nom suivi d'un adjectif (ligne 2241 et 2242).
Lorsque Treetagger croit reconnaître une succession de deux noms, celle-ci s'avère être fausse. Dans la phrase : "[...] il aurait proposé à son ex-épouse Cécilia de reprendre leur vie commune, une semaine avant son remariage", commune ne signifie pas : une division térritoriale administrée par un maire, mais un adjectif. D'ou l'absence de ce patron NOM ADJ dans la liste générée à partir du fichier étiqueté avec Treetagger dans la BAO 3.
Un autre phénomène récurent peut être constaté concernant la suite prénom/nom que Treetagger étiquette comme un NOM ADJ, alors que Cordial la considère comme une suite de deux noms propres :
*Cordial = Tim Hetherington (lignes 52 et 53) NPI NPI ; Treetagger = NOM ADJ (Lignes 54 et 55).
*Cordial = Laurence Parisot (lignes 1295 et 1296) NPFS NPI ; Treetagger = NOM ADJ (lignes 1289 et 1290).
*Cordial = Jason Bonham (lignes 1063 et 1064) NPMS NPI ; Treetagger = NOM ADJ (lignes 1052 et 1053).
En outre, dans certaines suites prénom/nom, Treetagger étiquette le nom soit comme une abréviation (lignes 1758 et 1759), soit comme un verbe (lignes 1814 et 1815). Ci-dessous, deux captures d'écran, qui illustrent nos propos.
Cliquez sur l'image pour l'agrandir
Cliquez sur l'image pour l'agrandir
Cela ne veut pas dire que Cordial ne présente pas certaines anomalies au sujet de l'étiquetage de la suite prénom-nom. En effet, nous pouvons relever deux cas où Cordial étiquette le nom comme un nom commun. Ci-dessous, une capture d'écran pour illustrer nos propos.
Cliquez sur l'image pour l'agrandir
On constate un autre phénomène concernant les unités polylexicales qui doivent normalement recevoir une seule étiquette grammaticale. On en dénombre quelques cas dans la sortie étiquetée de Cordial (e.g., moteur de recherche (ligne 1224), juge d'instruction (ligne 2158), juge des référés (ligne 2257). Treetagger décompose ces trois noms communs en trois tokens (NOM PREP NOM).
Cliquez sur l'image pour l'agrandir
Cliquez sur l'image pour l'agrandir
Par ailleurs, dans la suite "chaque jour à midi", Cordial étiquette "chaque jour" comme un adverbe (ligne 480) et "à midi" comme un autre adverbe (ligne 481). Pour Cordial, cette suite est donc composée de deux tokens. Treetagger décompose cette suite en quatre tokens (lignes 249, 250, 251 et 252).
Un dernier point de divergence au niveau des étiquetages concerne la reconnaissance du token "du". Ainsi, dans "holding du groupe" (lignes 2782, 2783 et 2784), "transformation du château" (lignes 2378, 2379 et 2380) et "propriétaire du journal" (lignes 2450, 2451 et 2452), Cordial étiquette du comme un déterminant masculin singulier, alors que Treetagger le reconnaît comme une préposition et déterminant (noté : PRP:det). Ceci aura pour effet de générer plus de patrons NOM PREP NOM à partir de la sortie étiquetée avec Treetagger. La (BAO3) et la (BAO4) nous permettrons de mettre en valeur ces résultats.
Ainsi, nous verrons que la décomposition en plusieurs tokens de certaines suites ainsi que l'étiquetage du token du aura des répercussions directes dans l'extraction du patron NOM PREP NOM (BAO3).