Treetagger : français, russe
Introduction
Les parties russe et française ont été étiquetées avec "Treetagger". Treetagger est un étiqueteur probabiliste qui n'est pas dédié à une langue particulière. Il se compose en effet d'un programme principal (fixe) et de fichiers de paramètres qui dépendent de la langue à tagger. Il existe de tels fichiers pour l'anglais, l'allemand, l'italien, le néerlandais, l'espagnol, le bulgare, le russe, le français et l'ancien français.
Nous allons, en conséquence, présenter d'abord Treetagger d'une façon générale, sans penser à telle ou telle langue. Ensuite, nous présenterons la façon dont Treetagger, avec les fichiers de paramètres appropriés, étiquette le français et le russe.
Treetagger
Il faut malheureusement commencer par dire que "tree" dans "Treetagger" ne fait pas référence à une quelconque représentation arborée de la syntaxe, mais au fait que cet étiqueteur choisit les étiquettes qu'il applique aux mots avec un arbre de décision.
Treetagger est donc un outil qui calcule les "catégories grammaticales", éventuellement les "informations morphosyntaxiques" (selon les langues), mais aucune "structure syntaxique", ni "complète" ni "partielle" — les termes entre guillement ici suivent la formulation de Jean VÉRONIS*. Cet outil a été développé par Helmut Schmid dans le cadre du TC project, au sein du Institut für Maschinelle Sprachverarbeitung de l'Université de Stuttgart.
Treetagger fait partie de la famille des étiqueteurs "probabilistes" mais y ajoute l'arbre de décisions évoqué plus haut. Il s'agit d'un arbre binaire obtenu par entraînement, bien illustré par cet exemple (fictif) donné par Helmut Schmid dans son article qui présente Treetagger :

On le voit, l'arbre a pour feuilles des listes de probabilités. L'entraînement comme l'analyse se font sur des trigrammes de mots (séquences de trois mots), un essai sur des séquences de quatre mots ayant résulté sur une augmentation négligeable (0,02 %) du taux d'étiquetage correct. Concernant le lexique, l'étiqueteur en utilise en fait deux : un lexique de formes pleines associées à des lemmes, et un lexique de suffixes qui, en permettant de gérer efficacement les "non mots", ajoute une certaine fiabilité à la robustesse "naturelle" de Treetagger due à la méthode probabiliste. Nous illustrons donc la sortie de Treetagger par le résultat de l'étiquetage d'un énoncé (fictif) anglais qui utiliserait quatre néologismes (dans l'ordre adverbe, adjectif, substantif, verbe) : les quatre sont étiquetés correctement. On notera que l'étiqueteur ne se risque pas à reconstruire les lemmes de ces non mots, préférant imprimer un prudent "unknown".
Sans doute grâce à cette utilisation à la fois d'un arbre de décision (qui rappelle les étiqueteurs "par règles") et de méthodes statistiques, Treetagger (pour l'anglais) annonce un taux d'étiquetage correct situé dans la moyenne haute des étiqueteurs : 96,34 % sur le Penn Treebank. Ce taux peut paraître élevé, mais il faut nuancer cette impression pour deux raisons :
-
Comme le dit VÉRONIS dans cet article (p. 9) :
"On retiendra donc un ordre de grandeur de l’ordre de 95% pour l’efficacité des étiqueteurs. Ce chiffre semble élevé, mais il doit être relativisé. En effet, une grande partie des mots (environ 60%) ne sont pas ambigus et un simple accès à un lexique produit donc un étiquetage correct. Lorsque plusieurs choix sont possibles, la sélection aveugle de l’étiquette la plus fréquente résulte même en 90% de choix corrects" - (2) Treetagger est entraîné et testé sur le même corpus (le Penn Treebank), ce qui est d'ailleurs sans doute (nous n'avons pas vérifié) le cas pour les taux annoncés par les autres étiqueteurs, tous autour de 95 %. On peut ainsi dire que ce taux valide plus la capacité pour un algorithme à faire l'aller-retour (entraînement / analyse) sur un corpus (certes de langue) avec le moins de perte d'information possible, que la capacité d'un étiqueteur à analyser correctement de l'anglais.
Treetagger pour le français et le russe
Précisons tout d'abord que nous appelons Treetagger avec deux options : -token et -lemma. Sans aucune option, Treetagger imprime seulement les catégories, une par ligne. Avec l'option -token, il imprime au début de chaque ligne le mot étiqueté, séparé de son étiquette par une tabulation. Avec l'option -lemma, il imprime (à droite de la catégorie, et séparée de celle-ci par une tabulation) le lemme si celui-ci lui est connu, et <unknown> dans le cas contraire. En effet Treetagger, en raison de sa nature probabiliste et de l'utilisation du lexique des suffixes, donne systématiquement une catégorie même si le mot ne fait pas partie de son lexique et qu'il est donc incapable de lui associer son lemme. Nous verrons des exemples de ce comportement pour le français comme pour le russe. Il existe bien sûr (beaucoup) d'autres options, décrites ici ainsi que la syntaxe d'appel de Treetagger.
POUR LE FRANÇAIS
Une simple séquence NOM-ADJ permet d'illustrer correctement le comportement de Treetagger, aussi nous prendrons pour ce qui suit l'exemple de "guerre civile". Voici la sortie de notre étiqueteur pour ce syntagme (avec bien entendu les options -token et -lemma) :
guerre NOM guerre civile ADJ civil
Il se trouve que les deux formes sont dans son lexique, la preuve en étant le choix d'un lemme pour chacune. Si, pour tester la robustesse de cet outil, nous remplaçons civile par cccivile (qui ne peut pas être dans son lexique), le résultat est :
guerre NOM guerre cccivile ADJ <unknown>
On notera d'abord l'absence (normale) de lemmatisation. Ensuite, on peut se demander à quoi est dû cet étiquetage correct. Un simple test montre que c'est le lexique des suffixes qui a été décisif. Si par exemple on ajoute un suffixe nominal comme -ation (tout en créant volontairement un "non mot"), le résultat est :
guerre NOM guerre civilation NOM <unknown>
Les deux sorties suivantes, pour "belle ççç" et "belle cccivile", montrent encore plus nettement comment l'appel au lexique des suffixes, donc une méthode symbolique et non statistique, peut dans Treetagger être décisif : "ççç" n'ayant aucun suffixe répertorié dans le lexique (on peut du moins l'espérer), c'est l'étiquette la plus probable en fonction seulement de son entourage immédiat (un adjectif à gauche) qui lui est attribué, alors que "cccivile", qui a le même entourage, est étiqueté ADJ en raison de son suffixe :
belle ADJ beau ççç NOM <unknown> belle ADJ beau cccivile ADJ <unknown>
Le fichier de paramètres pour le français a été développé par Achim Stein, qui ne donne pas d'évaluation quant au taux d'étiquetages corrects (il donne par contre un taux d'environ 92% pour le fichier qu'il a développé pour l'ancien français, soit 4% de moins que ce qui est annoncé pour l'anglais). Nous n'avons mené aucun travail d'évaluation, mais au cours des multiples manipulations des séquences NOM-ADJ extraites, nous n'avons pas remarqué d'erreur.
POUR LE RUSSE
Le fichier de paramètres pour le russe a été développé par Serge Sharoff. Nous n'avons pas trouvé d'évaluation du taux d'étiquetages corrects, mais comme pour le cas du français, aucune erreur ne nous a sauté aux yeux pendant les manipulations auxquelles nous avons procédé.
Avant de présenter quelques exemples, il faut signaler que les jeux d'étiquettes de Treetagger peuvent différer d'une langue à l'autre, or c'est le cas entre le français et le russe. Cette différence n'est pas due à la prise en compte de phénomènes qui existent dans une langue et pas dans l'autre, comme le seraient les déclinaisons en l'occurence (puisqu'aucune information morphosyntaxique n'est ajoutée à la catégorie), mais le plus souvent à des choix différents pour noter la même chose. Vous verrez ainsi dans les exemples suivants 'A' pour adjectif, et 'S' pour substantif.
Pour le reste ENCODAGE!!!!!!!!!!!!!!!!!, le fonctionnement et la sortie sont similaires. Prenons comme exemple гражданская война, qui est la traduction de notre premier exemple français, "guerre civile". Le résultat est :
гражданская A гражданский война S война
On peut aisément se rendre compte qu'un lexique des suffixe est également utilisé pour le russe, et qu'il contient la désinence -ая (nominatif féminin des adjectifs à consonne dure), puisqu'un "non mot" ayant cette terminaison est correctement étiqueté :
гггражданская A <unknown> война S война
On remarque que, comme pour le français, Treetagger ne donne pas de lemme dans ce cas. C'est une précision importante étant donné que nous avons choisi, travaillant sur les lemmes, d'éliminer les instances de patron dont le lemme était inconnu. Une option (-no-unknown) permet d'écrire dans ce cas, à la place du lemme, la forme elle-même. Nous n'avons toutefois pas fait ce choix en raison de la multiplication des instances rares qui en aurait résulté, créant artificiellement des problèmes similaires à ceux rencontrés sur l'arabe.