Boîte à outil 2 : étiquetage des données

Objectif

Une fois le corpus constitué, il est nécessaire de procéder à l'étiquetage du contenu textuel. Chaque "mot" ou token des titres et des résumés des articles sera analysé par un programme qui associera à sa forme son lemme et sa catégorie grammaticale. Pour effectuer cette tâche, nous avons testé deux programmes différents selon qu'on travaille à partir des sorties de la BAO1 au format TXT ou XML.

Étiquetage des sorties TXT par Cordial®

Pour étiqueter les sorties TXT de la BAO1, nous avons utilisé le logiciel Cordial®. Cet outil développé par la Société Synapse-Développement est à la fois un correcteur orthographique et grammatical. Il permet un étiquetage très complet des données puisqu'il reconnaît 201 types grammaticaux, les lemmes et les fonctions grammaticales des mots ainsi que différentes informations sémantiques.

Ce programme présence malgrè tout quelques contraintes pour notre projet :

  • Il ne peut pas traiter des fichiers trop long
  • Les données doivent être encodées en ISO-8859-1
  • Les fichiers en entrées doivent être au format TXT
  • Tous les fichiers doivent être traités manuellement un à un.
  • Cet outil est payant

Nous avons donc commencé par mettre au point un petit script pour convertir les sorties TXT de la BAO1 en ISO-8859-1. Pour cela, nous avons repris le début du script précédant qui permet de parcourir les fichiers d'un dossier. Pour chacun des fichiers textes trouvés, nous avons recupéré son chemin et son nom dans une variable. Nous avons ensuite lancé une commande shell depuis le script Perl pour convertir le document de l'UTF-8 vers l'ISO-8859-1. Le résultat de la conversion est enregistré dans un nouveau fichier portant le même nom suivi du nom de l'encodage. Ce script est consultable ici.

Une fois les fichiers de sortie TXT convertis au bon format, nous les avons ouvert avec le logiciel Cordial®. Comme les fichiers trop longs ne peuvent pas être étiquetés par ce logiciel, nous avons plutôt travaillé avec les fichiers de sorties par rubrique.

Voici les résultats obtenus après étiquetage du contenu textuel des rubriques Europe et Société. Comme on peut le voir sur ces documents, la forme de chaque mot est séparée par une tabulation de son lemme et de sa catégorie grammaticale.

Étiquetage des sorties XML par TreeTagger

TreeTagger est un outil qui permet d'annoter un texte avec des informations morphosyntaxiques et des informations de lemmatisation. Le résultat obtenu est très proche de celui obtenu avec Cordial® et il présente les avantages suivants :

  • On peut lancé ce programme depuis le terminal
  • TreeTagger a été adapté pour différentes langues
  • Ce programme peut être paramétré pour travailler en UTF-8
  • Les fichiers d'entrée peuvent être au format XML
  • Il n'y a pas vraiment de limite de taille pour les fichiers en entrée
  • TreeTagger est gratuit

Pour traiter les sorties au format XML de la BAO1, nous avons mis au point un script qui effectue les tâches suivantes :

  • À partir d'un fichier de sortie d'une rubrique la BAO1 au format XML, on extrait pour chaque article le contenu textuel du titre et du résumé
  • On enregistre ces données dans deux fichiers tampons différents
  • On lance sur ces fichiers tampons le programme d'étiquetage de TreeTagger pour le français en utf-8 et on enregistre le résultat de l'étiquetage dans un troisième fichier tampon.
  • On utilise ensuite le programme treetagger2xml-utf8.pl qui permet à partir d'une sortie classique de Treetagger d'obtenir une sortie au format XML
  • On enregistre alors dans des variables distinctes le résultat de cet étiquetage au format XML pour le titre, mais aussi pour le résumé de l'article.
  • On imprime dans un fichier de sortie la valeur de ces variables en prenant soin d'insérer au bon endroit les balises manquantes pour obtenir un nouveau document XML de la rubrique qui soit valide.

Voici les résultats obtenus pour l'étiquetage des rubriques Europe et Culture. (Attention, l'affichage peut prendre un certain temps !)

Comparaison des résultats d'étiquetage

Il est parfois possible que Treetagger ou Cordial® fasse des erreurs d'étiquetage. Dans la rubrique Europe, on a l'énoncé suivant :
"L'opposante russe et militante écologiste Evguenia Tchirikova a été interpellée sur la place Rouge à Moscou."

Voici les gloses produites par Cordial® :

L'opposante L'opposante NPI
russe russe ADJSIG
et et COO
militante militant NCFS
écologiste écologiste ADJSIG
Evguenia Evguenia NPI
Tchirikova Tchirikova NPI
a avoir VINDP3S
été être VPARPMS
interpellée interpeller VPARPFS
sur sur PREP
la le DETDFS
place place NCFS
Rouge Rouge ADJSIG
à à PREP
Moscou Moscou NPSIG
. . PCTFORTE

Voici celles obtenues avec TreeTagger :

L' l' DET:ART
opposante opposant NOM
russe russe ADJ
et et KON
militante militant ADJ
écologiste écologiste ADJ
Evguenia Evguenia NOM
Tchirikova Tchirikova NAM
a avoir VER:pres
été VER:pper VPARPMS
interpellée interpeller VER:pper
sur sur PRP
la le DET:ART
place place NOM
Rouge Rouge NAM
à à PRP
Moscou Moscou NAM
. . SENT

On constate dans cet exemple que Cordial® n'identifie pas correctement la chaîne de caractère "L'opposante" comme elle n'est pas précédée d'un point dans notre corpus au format TXT. Le mot "militante" est glosé comme un nom féminin singulier alors qu'il s'agit d'un adjectif comme l'a analysé TreeTagger. De manière générale, les gloses produites par Cordial® sont sémantiquement plus précises que celles obtenues avec TreeTagger.

Des erreurs se sont produites à cause de certains caractères qui n'ont pas été nettoyés au cours de la BAO1. C'est par exemple le cas du caractère de contrôle encodé en UTF-8 par les octets C2 96. Lorsque TreeTagger rencontre ce caractère il affiche le message d'erreur suivant :

Warning: incomplete utf8 character in function utf8_get_char!
Warning: invalid UTF8 character encountered (2)!
Error: invalid UTF8 character encountered (3)!

Certains titres ou résumés ont alors été glosés que partiellement puisque TreeTagger ignore tous les mots qui suivent un caractère non reconnu. Voici une série de caputres d'écran montrant le texte d'origine, le message d'erreur dans le terminal et le résultat du glosage de l'article 18564 de la rubrique Europe :

Avec Cordial®, ce caractère n'a pas posé de problème, car une fois encodé en ISO-8859-1, il a été identifié comme un symbole de poncutation faible :

On peut en conclure que de meilleurs résultats pourraient être obtenus en s'assurant pour Cordial® que la fin de chaque titre et de chaque résumé se termine par un point ou un autre symbole de poncutation forte et que tous les caractères posant problème à TreeTagger ont bien été nettoyés avant le glosage.