Explication

Nous avons, dans un premier temps, entré tous les patrons morpho-syntaxiques dans deux fichiers texte brut, en prenant soin de bien respecter la syntaxe des POS tag utilisés par chaque outil (TreeTagger et UDPipe). Nous utiliserons ces fichiers lors de l’exécution du script Perl.


Globalement, la méthode utilisée se présente comme ceci.
  • Nous récupérons tout d’abord la liste de patrons morpho-syntaxiques du fichier de patrons.
  • Ensuite, nous lisons le fichier annoté. Si nous trouvons dans le fichier une partie de discours (part-of-speech, POS) qui correspond également à la première étiquette d’un patron, nous récupérons la suite de POS et de tokens associés de la même longueur que le patron.
  • Nous comparons par la suite le patron et la suite de POS extraite. Si les deux coïncident, nous sauvegardons la suite de tokens associée dans une table de hashage qui regroupe, à la fin du programme, toutes les séquences trouvées.
Le fichier obtenu grâce à ces programmes contient les séquences de tokens et leurs nombres d'occurrences, affichés par ordre de fréquence décroissant.

Extraction des patrons morphosyntaxiques

Extrcation à partir des sorties TreeTagger

Les fichiers annotés par TreeTagger étant des fichiers XML, nous avons utilisé des expressions régulières pour extraire les séquences de mots correspondant aux patrons morpho-syntaxiques.

Dans les fichiers TreeTagger, les différents types de prépositions sont annotés “PRP”, ou bien “PRP:det”. Grâce aux expressions régulières, il suffit de mettre seulement “PRP” dans les patrons pour que les deux types d’étiquettes soient extraites. Il n’y a pas besoin de rajouter “.+?” dans le patron, d’autant plus qu’avec cet ajout, l’extraction pour ce patron ne marche pas.

Pour exécuter ce programme, nous devons nous placer sur le répertoire de travail ProjetEncadre et donner en argument le numéro/les caractères correspondant à une rubrique.

perl ./BAO3/Perl/BAO3_ExtractionPatrons_TreeTagger.pl numero_rubrique

Extrcation à partir des sorties UDPipe

Pour l’extraction des patrons morpho-syntaxiques, nous utilisons la sortie UDPipe brute, c’est-à-dire au format CONLL, et non la version transformée en XML.

Contrairement à la version TreeTagger, nous n’utilisons pas ici les expressions régulières pour récupérer les POS et les tokens. Nous employons la fonction split de Perl et attrapons les informations nécessaires grâce à leur position sur la ligne.

Dans les POS tags utilisés par UDPipe, l’étiquette pour les prépositions n'existe pas. C’est l’étiquette des adpositions (prépositions et postpositions) qui est utilisée : “ADP”.

Comme pour le programme pour les fichiers TreeTagger, il faut se placer à un endroit précis de l’arborescence : le répertoire de travail ProjetEncadre.

perl ./BAO3/Perl/BAO3_ExtractionPatrons_UDPipe.pl numero_rubrique

Résultats obtenus

Comparaison des résultats

Grâce aux sorties de ces programmes, nous pouvons remarquer des erreurs d’étiquetage de la part de TreeTagger et de UDPipe. Voici des listes non exhaustives des fautes trouvées.

Erreurs d’étiquetage TreeTagger

  • La double quote (”) est étiquetée comme NOM.
  • Les mots dans la séquence “d’un” ne sont pas séparés. De plus, “d’un” est annoté comme ADJ.
  • La suite “qu’il n’y” est annotée comme “ADJ NOM”.
  • “UN GRAPHIQUE –” ou bien “LE CHIFFRE –” sont annotés comme “NAM NAM VER:futu”.
  • “…” est annoté comme ADJ ou NOM.

La plupart des erreurs de TreeTagger sont peut-être liées à la ponctuation, comme l’utilisation des quotes françaises et non de quotes droites. Par conséquent, la tokenisation n’a pas eu lieu et l’annotation tend donc à être fausse.
L’autre type d’erreurs semble reposer sur la mauvaise interprétation des mots en majuscules.

Erreurs d’étiquetage UDPipe

  • “jusqu’en” n’est pas séparé et il est annoté soit en NOUN, soit en ADJ.
  • Dans le même genre, “jusqu’à” n’est pas séparé et il est considéré comme ADP (induit par “à”) ou comme ADV (induit par “jusqu’”).
  • “d’Emmanuel” est encore une fois non séparé. Selon les circonstances, il est annoté comme PROPN, ADJ ou DET.

On note également des différences d’étiquetage entre UDPipe et TreeTagger qui explique les écarts dans les résultats des deux programmes. Quelques exemples sont présentés ci-dessous :

Token Annotation TreeTagger Annotation UDPipe
“premier” NUM ADJ
“l’union” NOM NOUN ou PROPN
“d’euros” NOM ADJ
“due” VER:pper ADJ

Extraction des relations en dépendances

Vu que nous utilisons la sortie UDPipe mais au format XML, nous pourrions utiliser une bibliothèque en Perl pour pouvoir se baser sur un modèle d’arborescence XML.
Néanmoins, nous décidons ici de s'appuyer uniquement sur les données textuelles brutes qui sont à notre disposition. Pour cela, l’emploi des expressions régulières est simple et très efficace pour rechercher la présence de la relation attendue .
L’outil TreeTagger n’effectuant pas d’annotations syntaxiques de dépendance, nous sommes obligés de nous référer à l’annotation de UDPipe.

Nous suivons ici aussi les mêmes étapes que les deux autres méthodes. Nous perdons juste la notion de “frère” issu du format XML, qui est supportée par les méthodes XSLT et XQuery.

Commande permettant l’exécution du programme :

perl ./BAO3/Perl/BAO3_ExtractionDep_UDPipe.pl numero_rubrique "relation_dep"

ATTENTION : Il y a un petit élément à prendre en compte.
Vu que nous travaillons ici sur la version XML de la sortie UDPipe (avec les données au format CONLL), les seules fichiers sur lequel nous pouvons travailler sont ceux qui ont été reformatés, c’est-à-dire les 8 rubriques que nous avons marqués auparavant dans le tableau de la BAO2.