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 →