Objectif : extraction de patrons syntaxiques

A partir des sorties étiquetées morphosyntaxiquement à l'étape précédente, on va créer des listes de patrons syntaxiques au format texte brut, de forme :
- NOM ADJ
- NOM PREP NOM.

On proposera plusieurs méthodes pour chacune des sorties de la BàO2 :
- différents scripts Perl pour la sortie de Cordial au format texte brut
- des méthodes avec les modules XML::LibXML et XML::XPath de Perl, et avec une feuille de style XSLT pour la sortie de Treetagger au formal XML.

Sur le corpus étiqueté en texte brut

1) Méthode de Jean-Michel Daube

Cette méthode consiste à lire le fichier étiqueté jusqu'à trouver une ponctuation forte. Dans la portion qui va d'une ponctuation forte à l'autre, on va chercher une ou des correspondances avec les patrons syntaxiques successifs.

Ces patrons sont dans un fichier à part qu'on appelle en argument du programme. Ils sont de la forme :
- NC[A-Z]+ ADJ[A-Z]+
- NC[A-Z]+ PREP NC[A-Z]+

Voici le programme et un exemple de sortie, à partir de la rubrique Cinéma (fichier étiqueté avec Cordial).

2) Méthode de Serge Fleury

Avec cette solution, on parcourt la liste des tags et des tokens en parallèle : si un tag correspond au premier tag d'un patron, on vérifie si les tags suivants correspondent à la suite du patron. Si c'est le cas, on affiche les tokens correspondant aux tags repérés.

Les patrons sont ici de la forme :
- NC[^ ]+#ADJ[^ ]+
- NC[^ ]+#PREP#NC[^ ]+

Voici le programme et un exemple de sortie, toujours à partir de la rubrique Cinéma.

3) Méthode d'Axel Court

Cette variante consiste à générer des n-grams de tags. Chaque patron est associé à son nombre de tags. On va donc parcourir des séquences de tags de la longueur des patrons pour repérer celles qui correspondent aux patrons.

Voici le programme, la liste de patrons et un exemple de sortie, à partir de la rubrique Cinéma.

Sur le corpus étiqueté en XML

1) Bibliothèque Perl XML::XPath

Dans un script en Perl, on va recourir à des requêtes XPath en utilisant la bibliothèque XML::XPath.

On donne en entrée la sortie étiquetée par Treetagger en XML ainsi qu'un fichier de patrons syntaxiques de forme : NOM ADJ et NOM PREP NOM. On obtient en sortie un fichier par patron.

L'inconvénient de cette méthode est la taille importante du fichier XML d'entrée, à cause de laquelle l'exécution du programme prend beaucoup de temps.

Voici le programme et un exemple de sortie.

2) Bibliothèque Perl XML::LibXML

La méthode utilisant la bibliothèque XML::LibXML est très similaire à celle utilisant XML::XPath. Elle prend également en entrée une sortie étiquetée avec Treetagger et un fichier de patrons, et donne en sortie un fichier par patron. De même, le temps d'exécution est assez long : le traitement pour une seule rubrique prend environ 10min.

Un autre problème se pose avec cette bibliothèque : la difficulté de son installation ! En effet, on ne pourra pas installer seule cette bibliothèque, qui nécessite l'installation de nombreux autres paquets (XML::SAX, XML::NamespaceSupport, libxml2, etc), qu'il faut d'abord identifier puis trouver...

Voici le programme et les sorties pour le patron NOM ADJ et le patron NOM PREP NOM, à partir de la rubrique "Idées" (fichier étiqueté avec Treetagger).

3) Requête XPath dans une feuille de style XSLT

Il s'agit ici de transformer notre sortie XML taggée à l'aide d'une feuille de style XSLT. Une feuille de style XSLT permet de transformer un fichier XML. En l'occurrence, nous allons ici le transformer en un autre format : en document HTML. Outre cette transformation, nous appliquons également des requêtes XPath. Ces requêtes permettent de repérer les noeuds de l'arborescence XML correspondant à nos patrons morpho-syntaxiques. Les résultats de ces requêtes sont alors transformés pour être intégrés au nouveau document HTML.

Cependant, nous avons remarqué une erreur d'annotation automatique du corpus avec Treetagger : les guillemets ouvrantes et fermantes « et » avaient été tagguées parfois comme ADJ, parfois comme NOM. Cela entraînait beaucoup de bruit dans nos résultats d'extraction. Nous avons donc écrit un petit script en Python qui modifie automatiquement les annotations erronnées. Cela nous donne un nouveau fichier XML étiqueté.

Après cette rectification, il nous faut appliquer des feuilles de style au nouveau fichier XML : une pour repérer les patrons NOM ADJ, une pour les patrons NOM PREP NOM.

On pourra alors ouvrir le fichier XML associé à la feuille de style NOM ADJ ou le fichier associé à la feuille de style NOM PREP NOM (dans ces deux fichiers, seule varie la référence à la feuille de style XLST, celle qui repère les NOM ADJ ou les NOM PREP NOM).

←  Page précédente Page suivante  →