t ça continue avec l'étiquetage...
Nous voici avec des tas de données divisées en différentes rubriques, des données dont on ne peut rien faire tant qu'elles ne contiendront pas d'informations linguistiques: les étiquettes morphosyntaxiques. On voudrait associer les mots de notre corpus à leur partie du discours (Part-of-Speech, soit catégorie syntaxique) en utilisant des ressources linguistiques externes. On dispose pour cette deuxième Boîte à Outils de deux programmes, Cordial et TreeTagger, qui donneront tous deux une sortie de type forme-lemme-catégorie, mais dont les différences sont telles que l'on a dû diviser cette partie en deux.

TreeTagger

TreeTagger est un outil d'annotation de texte qui permet donc d'établir pour chaque mot d'un texte tokenisé sa partie du discours et son lemme. Il est très pratique pour notre projet parce qu'il est non seulement gratuit mais peut aussi s'installer et se lancer avec une ligne de commande sous Linux, et peut donc être directement intégré à nos scripts de la BàO1! Yihaa~!

Enfin, directement oui, mais pas immédiatement. Il a d'abord fallu adapter nos sorties au type d'entrée que prend TreeTagger:

  1. Segmentation du texte en token
  2. Application de TreeTagger dans le(s) script(s)
  3. Transformation de la sortie TXT en arbre XML (en prévision de la BàO3)

3 étapes, en 3 lignes regroupées dans une fonction magique (exemple ici tiré du fichier XML::RSS):

sub TreeTagger {
	system("perl tokenise-utf8.pl $output3 > ./SORTIES/TXTatagger-xmlrss.txt");
	system("./tree-tagger-linux-3.2/bin/tree-tagger -token -lemma -no-unknown -sgml french-utf8.par ./SORTIES/TXTatagger-xmlrss.txt 
./SORTIES/TXTtagged-xmlrss.txt");
	system("perl treetagger2xml-utf8.pl ./SORTIES/TXTtagged-xmlrss.txt $encodagesortie");
}

Tout le travail est en réalité fait par les deux scripts cités dans le code, et évidemment le programme TreeTagger. Les seuls éléments que l'on a pu paramétrer sont les options que prend TreeTagger!

Cordial, ou pas

"Cordial, dans sa grande bonté, ne supporte pas UTF-8!" SF

Même fonction que TTG pour notre projet, mais différences radicales- Cordial nous intéresse pour son analyseur syntaxique, mais c'est surtout un logiciel propriétaire (cher...) de correction grammaticale et d'aide à la rédaction pour le français développé par Synapse. Quelques particularités donc: il a été créé pour l'environnement Windows, prend des entrées en ISO-8859-1 pas plus lourdes que 2 Mo. Petit rappel sur notre projet: développé essentiellement sous Ubuntu, en UTF-8 et avec des sorties en UTF-8 sur un corpus de plus de 300 Mo. Cherchez l'erreur.

Il va donc sans dire que l'on a dû adapter notre travail à Cordial:

  1. Segmentation du texte en token (cf. TTG)
  2. Conversion des fichiers UTF-8 en ISO-8859-1
  3. Passage sous Windows (INALCO ou ILPGA) pour une application à la main

Une Boîte à Outils qui nécessite beaucoup moins de programmation que la première, puisqu'il semble s'agir plutôt d'utiliser des outils tout faits, et pourtant! Nous nous sommes rendues compte ici de plusieurs problèmes concernant l'encodage des caractères (hmprf, pour changer).

Sur Ubuntu (donc encodage local UTF-8), il semblerait qu'il y ait une incompatibilité au niveau de la table d'encodage pour certains caractères spéciaux (les guillements allemands, l'e dans l'o (minuscule et majuscule) entre autres) présents dans le corpus qui s'affichent alors comme des caractères de contrôle que l'on a voulu alors remplacer par le caractère UTF-8 correspondant: remplacement caracteres de controle

...en vain. Ces caractères semblent être en réalité incomplets et ne peuvent donc pas être matchés par nos motifs (que l'on a pourtant copié-collé! ARRGGG), ni dans le terminal, ni dans le script, ni avec egrep, ni sed ni... La seule manière que l'on a trouvé pour s'en débarrasser est d'utiliser une classe de perl: [[:cntrl:]]. En revanche, cette classe récupère tous les caractères de contrôle et on ne peut pas remplacer au cas par cas comme auparavant... Solution provisoire adoptée faute de mieux: remplacer tous les caractères de contrôle par le seul caractère significatif pour ce projet (œ), puis, supprimer tous les " œ " (entouré d'espaces) puisque les autres cas de caractères mal affichés étaient à l'origine des signes de ponctuation et pour ne garder que les mots contenant le caractère. Cette méthode permet uniquement de ne pas avoir de problèmes avec notamment Cordial.

Outils


Download