Boîte à outils II

Les objectifs

On réalise, à partir du fichier texte obtenu précédemment, un étiquetage morpho-syntaxique des mots. Pour ce faire, on utilise deux méthodes différentes :

Les scripts

Pour cette BàO, nous avons modifié les deux scripts de la BàO1 pour y insérer un traitement TreeTagger. Pour ce faire, on crée deux fichiers temporaires qui vont recevoir un titre et une description à la fois :



On crée une variable $recup qui va recevoir tour à tour le contenu des balises <title> et <description> une fois qu'il aura été nettoyé par le sous-programme entite. Le contenu de cette variable $recup va être envoyé à chaque tour de boucle dans un des fichiers temporaires. Ces fichiers temporaires vont ensuite être traités par TreeTagger, au moyen d'une commande system :


On appelle TreeTagger en précisant le chemin du programme, et on envoie le résultat vers un fichier nommé templates-tt.txt. Ce fichier sera ensuite traité par le programme Treetagger2XML, légèrement modifié :



...qui permet de transformer le résultat d'un étiquetage TreeTagger en fichier XML. On crée ensuite deux variables, ici, contenu_titre_xml et contenu_titre_txt qui vont contenir le contenu textuel de templates-tt.txt et templates-tt.txt.xml. Afin de conserver la structure de nos fichiers XML élaborée en BàO1, on imprime le contenu de ces variables entre des balises <titre> et <item> (avec l'attribut number qui nous permet de compter le nombre d'items traités) et on l'envoie vers la variable DUMPFULL :



Si l'item est un doublon, on ne le traite pas mais on le numérote quand même en laissant la balise <titre> vide (elle ne contient qu'un tiret).
A ce stade, la balise <item> est toujours ouverte : en effet, dans notre programme, nous avons besoin de traiter la balise description avant de pouvoir refermer <item>. Le même processus est appliqué au contenu de <description> : cette fois ci, $recup va recevoir le contenu de la variable $3 (qui correspond au contenu de la troisième paire de parenthèses de cette expression régulière : (<item>|<channel>)<title>(.+?)<\/title>.+?<description>(.+?)<\/description>) une fois passé dans le sous-programme entite. Ce n'est qu'une fois le traitement de description effectué que l'on peut refermer la balise <item> :



Une fois le traitement des deux balises <title> et <description> effectué, on ferme les fichiers temporaires, on incrémente le nombre d'items par rubrique, et on imprime le contenu des variables DUMPFULL (1 pour la sortie XML et 2 pour la sortie TXT) :



Encore une fois, pour garder la structure des fichiers XML de la BàO1, on imprime DUMPFULL entre une balise <filtrage> avec les attributs file et name.

La même routine est appliquée au script utilisant la bibliothèque XML::RSS. Le traitement des doublons est cependant simplifié :



Afficher le script classique complet
Afficher le script XML::RSS complet

Les résultats

Le résultat du fichier txt a cette allure :



La forme est suivie de son étiquette et de son lemme.
le résultat du fichier xml a quant à lui cette allure :



Chaque forme est contenue dans une balise <element> qui elle-même contient trois balises <data> accompagnées d'un attribut type.

L'étiquetage Cordial s'effectue quant à lui manuellement : on entre les fichiers TXT obtenuS dans la BàO1, reconvertis en latin 1, dans Cordial, et on clique sur "étiquetage de texte" dans l'onglet "Syntaxe". On décoche un maximum d'options pour obtenir un fichier similaire à celui de TreeTagger :



Voici le résultat :



Nous avons eu affaire à quelques bugs, Cordial arrêtait de fonctionner pendant l'étiquetage de certains fichiers qui ne présentaient pourtant aucun problème apparent d'encodage, et faisaient bien moins de 2mo. En découpant les fichiers en deux à l'endroit où Cordial s'arrêtait, nous avons pu avoir des sorties complètes pour chaque rubrique. Les étiquettes s'avèrent plus précises que celles de TreeTagger.

Pour télécharger les scripts et les résultats de cette BàO : Vers la page Téléchargements