BàO3

Extraction de patrons morpho-syntaxiques et syntaxiques en dépendance

À partir des fichiers produits dans la BàO2, on a récupéré des informations linguistiques essentielles pour comprendre les caractéristiques principales de chaque rubrique du journal Le Monde. Pour cela, on a construit différentes méthodes d'extraction de patrons morpho-syntaxiques et de relations syntaxiques en dépendances, soit à travers les fichiers étiquetés par TreeTagger, soit à partir de ceux produits par UDpipe.

Plusieurs méthodes ont été mises en place pour réaliser ces extractions. D'un côté, on a écrit des scripts en Perl et en Python qui travaillent principalement à partir des expressions régulières sur les fichiers conll et XML. D’un autre côté, à partir de l'utilisation de langages de la famille XSL et XML, on a confectionné différentes requêtes XQuery, lancées depuis le logiciel BaseX, et des feuilles de style XSLT 1.0, exécutées via xsltproc.

Ici, on va vous présenter les différentes méthodes pour extraire les patrons morpho-syntaxiques et les relations syntaxiques. Chaque script fonctionne spécifiquement pour un type de fichier d'entrée. Néanmoins, leurs méthodes peuvent être généralisées pour travailler sur n'importe lequel de ses fichiers. On a fait le choix de surtout montrer ici leur fonctionnement. La stratégie utilisée dans tous les cas est, en général, la même. On l' expliquera à continuation, avec des expressions régulières.

Méthode 1: expressions régulières

Comme on l'a déjà dit, les fichiers conll et XML étiquetés ont un token annoté par ligne. Il suffit de parcourir les fichiers ligne par ligne, mémoriser les tokens précédents et vérifier que l'on trouve la séquence des étiquettes cherchées, pour pouvoir, enfin, l'extraire. Dans le cas de l'extraction de relations syntaxiques, il faut mémoriser le token du dépendant, qui porte l'étiquette de la relation syntaxique. Selon sa position et la position de la tête syntaxique, il faut aller chercher son gouverneur avant ou après dans le fichier. Dans les deux cas, les expressions régulières servent à séparer chaque élément (token, lemme, étiquette POS, étiquette DEP, etc.) de chaque ligne, soit à travers l'identification des tabulations (conll), soit à travers les balises (XML).

On a travaillé essentiellement sur les fichiers UDpipe, dans les formats conll et XML, pour les extractions des patrons morpho-syntaxiques et des patrons de relations syntaxiques. On a ajouté aussi comme exemple un script capable de traiter la sortie de TreeTagger, malgré qu’il fonctionne de la même façon que la version XML d'UDpipe.

Langage Méthode et patron Entrée Téléchargement
Perl RegExp - POS conll
Perl RegExp - DEP XML UDpipe
Python RegExp - POS conll
Perl RegExp - POS XML TreeTagger

Méthode 2 : lxml en Python

La bibliothèque lxml permet le traitement des fichiers XML et HTML. On a profité de ce langage semi-structuré pour travailler de la façon la plus productive possible. Aussi rapide que n'importe quel parser XML/HTML, cet outil permet de combiner la puissance des langages XML/XSL, avec la simplicité de Python.

Dans le cadre de ce projet, par exemple, on l'utilise pour récupérer les relations syntaxiques à partir de l'utilisation d'un parser XML et des requêtes XPath. Il s'agit d'une solution applicable à tout ce projet et c’est un moyen idéal pour combiner toutes les méthodes que l’on a vu jusqu'à présent. Voici un exemple d'application.

Langage Méthode et patron Entrée Téléchargement
Python Bibliothèque lxml - DEP XML

Méthode 3 : XQuery

Ce langage de requête permet d'explorer des fichiers XML de façon assez puissante. Il suit la structure FLWOR (for, let, where, order by, return). Travailler sur des fichiers XML, en tant que base de données, rend l'exploration de données très rapide. Bien sûr, cette méthode peut aussi être utilisée pour extraire des séquences morpho-syntaxiques et des relations syntaxiques. Pour ne pas être répétitif, on vous présente deux exemples de requêtes utilisées via le logiciel BaseX pour extraire les relations syntaxiques (UDpipe). Avec la prochaine méthode, on extrait de nouveau les séquences morpho-syntaxiques.

Langage Relation syntaxique Entrée Téléchargement
requête Xquery Sujet XML
requête Xquery Objet XML

Précision : Vous trouverez plus des requêtes dans l'exercice 14 du projet fait ce semestre pour la matière Document Structuré. Notamment, des requêtes pour extraire les patrons morpho-syntaxiques.

Méthode 4 : XSLT

On a déjà expliqué que la transformation produite par les feuilles de style XSLT permet l'extraction du contenu textuel. Cette fois-ci, on extrait les différents patrons morpho-syntactique en combinant l'extraction textuelle avec des conditions (if, etc.) pour trouver la bonne séquence d'étiquettes à récupérer. On suit la même stratégie qu'avec les expressions régulières et les requêtes Xquery.

Langage Patron POS Entrée Téléchargement
XSLT ADJ-NOM XML TT
XSLT NOM-ADJ XML TT
XSLT NOM-ADV-ADJ XML TT
XSLT VER-DET-NOM XML TT
XSLT NOM-PRP-NOM-PRP XML TT
XSLT PRP-NOM-KON-PRP-NOM XML TT
XSLT Ex. relation de sujet XML UDpipe

Précision : Vous trouverez plus des requêtes dans l'exercice 14 du projet fait ce semestre pour la matière Document Structuré.

Résultats

Dans tous les cas, nous avons extrait la forme de tokens, mais il est possible aussi d'extraire des lemmes. En outre, pour pouvoir bien compter la fréquence, les résultats sont en minuscules, traitement que l'on fait dans les script Perl et Python.

Rubrique 3208 - "À la une"

Patron Étiquetage d'entrée Téléchargement
NOUN-ADJ UDpipe
NOM-ADJ TreeTagger
ADJ-NOUN UDpipe
ADJ-NOM TreeTagger
NOUN-ADV-ADJ UDPipe
NOM-ADV-ADJ TreeTagger
VERB-DET-NOUN UDpipe
VER-DET-NOM TreeTagger
NOUN-ADP-NOUN-ADP UDpipe
NOM-PRP-NOM-PRP TreeTagger
ADP-NOUN-CCONJ-ADP-NOUN UDpipe
PRP-NOM-KON-PRP-NOM TreeTagger
Relation de dépendance SUJET UDpipe
Relation de dépendance OBJ UDpipe

Rubrique 3232 - "Idées"

Patron Étiquetage d'entrée Téléchargement
NOUN-ADJ UDpipe
NOM-ADJ TreeTagger
ADJ-NOUN UDpipe
ADJ-NOM TreeTagger
NOUN-ADV-ADJ UDPipe
NOM-ADV-ADJ TreeTagger
VERB-DET-NOUN UDpipe
VER-DET-NOM TreeTagger
NOUN-ADP-NOUN-ADP UDpipe
NOM-PRP-NOM-PRP TreeTagger
ADP-NOUN-CCONJ-ADP-NOUN UDpipe
PRP-NOM-KON-PRP-NOM TreeTagger
Relation de dépendance SUJET UDpipe
Relation de dépendance OBJ UDpipe

Rubrique 3260 - "Livres"

Patron Étiquetage d'entrée Téléchargement
NOUN-ADJ UDpipe
NOM-ADJ TreeTagger
ADJ-NOUN UDpipe
ADJ-NOM TreeTagger
NOUN-ADV-ADJ UDPipe
NOM-ADV-ADJ TreeTagger
VERB-DET-NOUN UDpipe
VER-DET-NOM TreeTagger
NOUN-ADP-NOUN-ADP UDpipe
NOM-PRP-NOM-PRP TreeTagger
ADP-NOUN-CCONJ-ADP-NOUN UDpipe
PRP-NOM-KON-PRP-NOM TreeTagger
Relation de dépendance SUJET UDpipe
Relation de dépendance OBJ UDpipe

Rubrique 3476 - "Cinéma"

Patron Étiquetage d'entrée Téléchargement
NOUN-ADJ UDpipe
NOM-ADJ TreeTagger
ADJ-NOUN UDpipe
ADJ-NOM TreeTagger
NOUN-ADV-ADJ UDPipe
NOM-ADV-ADJ TreeTagger
VERB-DET-NOUN UDpipe
VER-DET-NOM TreeTagger
NOUN-ADP-NOUN-ADP UDpipe
NOM-PRP-NOM-PRP TreeTagger
ADP-NOUN-CCONJ-ADP-NOUN UDpipe
PRP-NOM-KON-PRP-NOM TreeTagger
Relation de dépendance SUJET UDpipe
Relation de dépendance OBJ UDpipe

Précision : Il faut télécharger certains fichiers pour pouvoir les bien afficher.