BAO 2

Annotation morpho-syntaxique avec TreeTagger et UDpipe

Une fois les titres et les descriptions des articles récupérés à l’aide de la BAO1, le but de la BAO2 est de les annoter. Pour la suite du projet, on aura besoin de la forme, du lemme, du POS et des relations de dépendance de chaque token. On va pour cela utiliser deux étiqueteurs différents : Treetagger pour la sortie XML, et Udpipe pour la sortie au format CoNLL.

On va reprendre les programmes de la BAO1, en y ajoutant des fonctionnalités qui permettront d’obtenir en résultat des fichiers annotés. On a donc de nouveau des programmes Perl et Python, auxquels on doit fournir le répertoire des fils RSS et le numéro de la rubrique à extraire.

PROGRAMMES

LangageCommande de lancement dans le terminalProgramme commentéRésultat
Perl perl bao2.pl 2021 3246 bao2.pl bao2_TT_pl_3246.xml
bao2_UD_pl_3246.udpipe
Python python3 bao2.py 2021 3246 bao2.py bao2_TT_py_3246.xml
bao2_UD_py_3246.udpipe
Python (spacy udpipe) python3 bao2_spacyudpipe.py 2021 3246 bao2_spacyudpipe.py bao2_TT_py_3246.xml
bao2_UD_py_3246.udpipe

Programme PERL

bao2.pl

Ce programme prend en arguments le répertoire contenant les fils RSS, et le numéro de la rubrique à extraire. Une première fonction reproduit le processus de la BAO1, en modifiant la sortie XML afin qu'elle soit compéhensible par le programme d'annotation TreeTagger : chaque titre et description est segmenté de manière à avoir un mot par ligne, à l'aide du programme tokenise-utf8.pl fourni par les professeurs. Une fois ces deux fichiers obtenus, on exécute deux fonctions. La fonction "etiquetageUP" annote le fichier TXT avec UDpipe, à l'aide du programme udpipe.exe fourni par les professeurs. On obtient par la suite un fichier CoNLL, avec l'extention ".udpipe". La fonction "etiquetageTT" annote le fichier XML via le programme tree-tagger.exe, avant de convertir le résultat obtenu au format XML avec le programme treetagger2xml-utf8.pl.

RubriqueFormat de sortieRésultat
Culture CoNLL bao2_UD_pl_3246.udpipe
Culture XML bao2_TT_pl_3246.xml
Idées CoNLL bao2_UD_pl_3232.udpipe
Idées XML bao2_TT_pl_3232.xml

Programme PYTHON (TreeTagger et UDpipe)

bao2.py

Ce programme prend comme arguments le répertoire contenant les fils RSS, et le numéro de la rubrique à extraire. Une première fonction reproduit le processus de la BAO1, en modifiant la sortie XML afin qu'elle soit compéhensible par le programme d'annotation TreeTagger : chaque titre et description est segmenté de manière à avoir un mot par ligne, à l'aide du programme tokenise-utf8.pl fourni par les professeurs. Une fois ces deux fichiers obtenus, on exécute deux fonctions. La fonction "etiquetageUP" annote le fichier TXT avec UDpipe, à l'aide du programme udpipe.exe fourni par les professeurs. On obtient par la suite un fichier CoNLL, avec l'extention ".udpipe". La fonction "etiquetageTT" annote le fichier XML via le programme tree-tagger.exe, avant de convertir le résultat obtenu au format XML avec le programme treetagger2xml-utf8.pl. Ce résultat en XML n'est pas exploitable à cause d'un problème de format XML : les "&" doivent être suivis de "amp;" pour ne pas influer sur la structure du fichier, cependant ici il manque le ";". On a donc ajouté une étape dans cette fonction, pour remplacer "amp" par "amp;".

RubriqueFormat de sortieRésultat
Culture CoNLL (UDpipe) bao2_UD_py_3246.udpipe
Culture XML (TreeTagger) bao2_TT_py_3246.xml
Idées CoNLL (UDpipe) bao2_UD_py_3232.udpipe
Idées XML (TreeTagger) bao2_TT_py_3232.xml

Programme PYTHON (module Spacy_udpipe)

bao2_spacyudpipe.py

Ce programme est une alternative au programme Python précédent. Au lieu d'utiliser des programmes extérieurs fournis par les professeurs, on utilise directement UDpipe dans la librairie Spacy. Il est également possible d'utiliser TreeTagger en Python, mais je n'ai pas réussi à l'installer sur Windows. J'ai donc utilisé le module Spacy_udpipe pour les deux sorties TXT et XML, ce qui rend les résultats moins intéressants. De plus, il n'est pas possible de récupérer les relations de dépendance, on ne peut donc pas l'utiliser pour la suite du projet.

Ce programme fonctionne comme les deux précédents, avec le répertoire des fils RSS et le numéro de la rubrique comme arguments. Il reprend le programme de la BAO1, en modifiant directement les titres et descriptions avant de les écrire dans les fichiers de sortie. On a pour cela créé deux fonctions ; "analyse_txt" et "analyse_xml". Dans chacune d'entre elles, on transforme le texte en objet spacy_udpipe, puis on récupère les catégories morpho-syntaxiques (POS), lemmes et formes de chaque token, avant de les formater au format voulu : on les sépare par des tabulations pour le fichier TXT, et on ajoute des balises au même format que TreeTagger dans les programmes précédents, pour le fichier XML.

RubriqueFormat de sortieRésultat
Culture TXT (UDpipe) bao2_spacyud_py_3246.txt
Culture XML (UDpipe) bao2_spacyud_py_3246.xml
Idées TXT (UDpipe) bao2_spacyud_py_3232.txt
Idées XML (UDpipe) bao2_spacyud_py_3232.xml