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
Langage | Commande de lancement dans le terminal | Programme 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
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.
Rubrique | Format de sortie | Ré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)
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;".
Rubrique | Format de sortie | Ré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)
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.
Rubrique | Format de sortie | Ré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 |