Boîte à outils 3 : Extraction de patrons

Objectif :

Extraire des patrons dans les sorties produites à l'issu de la boîte à outils 2.

Deux méthodes :

-Un programme qui prend, en entrée, les sorties "brutes" de l'étiquetage;

On a besoin ici d'un fichier au format "cnr". Il s'agit de la sortie obtenue via le programme Cordial.

-Requête XPATH sur le fichier XML construit avec le programme treetagger2xml.pl.

Traitement à réaliser :

Construir une liste de patrons à partir des contenus textuels des fils traités.

Liste de patrons à extraire :

  • NOM ADJ ;
  • NOM NOM ;
  • NOM PREP NOM.

En sortie, une liste de patrons au format TXT.

Ressources :

-Editeur XML Cooktop ;

-Scripts perl fourni par les professeurs.

Réalisation :

Méthode 1 : Extraction de patron avec COOKTOP

A) Pour extraire des patrons via XPATH, nous avons besoins de la sortie XML étiquetée, obtenue via la boîte à outils 2 et de la requête XPTAH.

Il faut utiliser cette requête XPath pour extraire les termes correspondant aux patrons NOM ADJ :

v:(//element[./data[contains(text(),'NOM')]]/following-sibling::element[1][./data[contains(text(),'NOM')]]/data[3]/text()) | (//element[./data[contains(text(),'NOM')]]/preceding-sibling::element[1][./data[contains(text(),'NOM')]]/data[3]/text() )

A partir de ce document XML étiqueté par treetagger et la requête XPATH, nous obtiendrons à un texte brut et aux patrons NOM ADJà l'aide d'une feuille de style XSL.

Pour afficher les listes de patrons NOM ADJ dans un navigateur, on modifie la feuille de style XSL pour qu'elle soit capable d'afficher le patron NOM en bleu et le patron ADJ en rouge.

Dans l'onglet XPATH on ajoute : nodes://element

La feuille de style après la modification : XSL

Grâce à cette feuille de style et le fichier XML, on peut afficher le résultat sur le navigateur ICI

B) On fait les mêmes démarches pour extraire le patron NOM NOM avec une nouvelle feuille de style XSL

D'abord, on écrit la requête XPTAH pour extraire les termes correspondant aux patrons NOM NOM.

v:(//element[./data[contains(text(),'NOM')]]/following-sibling::element[1][./data[contains(text(),'NOM')]]/data[3]/text()) | (//element[./data[contains(text(),'NOM')]]/preceding-sibling::element[1][./data[contains(text(),'NOM')]]/data[3]/text() )

le résultat est un fichier TXT contient le patron NOM NOM.

On modifie la feuille de style pour qu'elle soit comme XSL

Pour l'afficher sur le navigateur, cliquer ICI

C) Extraire le patron NOM PREP NOM

Egalement, on modifie la feuille de style pour qu'elle soit comme XSL

Pour la voir sur le navigateur cliquer ICI


Méthode 2 : Extraction de patron via script PERL

A) Extraire les suites de tokens correspondant aux patrons morpho-syntaxiques via script fournit par Monsieur S.FLEURY.

Ce script aide à extraire le patron NOM ADJ. L'entrée est une sortie cordial au format cnr obtenue via la boîte à outils 2.

La ligne de commande sur le console cygwin sera comme suivant:

Sample Image

#!/usr/bin/perl -w
use locale;

open(FILE,"$ARGV[0]");
#--------------------------------------------
# le patron cherché ici est du type NOM ADJ";
# le modifier pour extraire NOM PREP NOM
#--------------------------------------------
my@lignes=<FILE>;
close(FILE);
while (@lignes) {
my $ligne=shift(@lignes);
chomp $ligne;
my $sequence="";
my $longueur=0;
if ( $ligne =~ /^([^\t]+)\t[^\t]+\tNC.*/) { #recherche tous les noms
my $forme=$1; #récupère les formes des noms
$sequence.=$forme;
$longueur=1;
my $nextligne=$lignes[0];
if ( $nextligne =~ /^([^\t]+)\t[^\t]+\tADJ.*/) {
my $forme=$1;
$sequence.=" ".$forme;
$longueur=2;
}
}
if ($longueur == 2) {
print $sequence,"\n";
}
}

Le script : extract-patron-cordial-NOM-ADJ.pl

Le fichier étiqueté par cordial via la boîte à outils 2: rubrique-cordial-etik.cnr

Le fichier pour extraire le patron NOM ADJ : fichier_patrons_cordial_NOM_ADJ

Le résultat : patron-cordial-NOM-ADJ.txt


- On doit modifier ce script pour qu'il extraite le patron NOM PREP NOM.

#!/usr/bin/perl -w
use locale;
open(FILE,"$ARGV[0]");
#--------------------------------------------
# le modifier pour extraire NOM PREP NOM
#--------------------------------------------
my @lignes=<FILE>;
close(FILE);
while (@lignes) {
my $ligne=shift(@lignes) ;
chomp $ligne;
my $sequence="";
my $longueur=0;
if( $ligne =~ /^([^\t]+)\t[^\t]+\tNC.*/)
{#recherche tous les noms
my $forme=$1; #récupère les formes des noms
$sequence.=$forme;
$longueur=1;
my $nextligne=$lignes[0];
if( $nextligne =~/^([^\t]+)\t[^\t]+\tPREP.*/)
{
my $forme=$1;
$sequence.=$forme;
$longueur=2;
my $nextligne=$lignes[1];
if($nextligne =~/^([^\t]+)\t[^\t]+\tNC.*/) {
my $forme=$1;
$sequence.=" ".$forme;
$longueur=3;
}
}
}
if($longueur == 3) {
print $sequence."\n";
}
}

Le script : extract-patron-cordial-nom-prep-nom.pl

Le fichier étiqueté par cordial via la boîte à outils 2: rubrique-cordial-etik.cnr

Le fichier pour extraire le patron NOM ADJ : fichier_patrons_cordial_NOM_PREP_NOM

Le résultat : patron-cordial-NOM-PREP-NOM

 

-Egalement pour extraire le patron NOM NOM.

Le resultat : patron-cordial-NOM-NOM

Le fichier pour extraire le patron NOM NOM : fichier_patrons_cordial_NOM_NOM


B) Extraire les suites de tokens mais cela avec un script perl fournit par Monsieur J.DAUBE

On écrit la ligne de commande pour extraire le patron NOM ADJ:

perl trouve_terme_cordial.pl rubrique-cordial-etik.cnr fichier_patrons_cordial_ADJ_NOM > trouve-terme-cordial-adj-nom.txt

Le résultat : fichier ADJ-NOM.txt

On écrit la ligne de commande pour extraire le patron NOM NOM:

perl trouve_terme_cordial.pl rubrique-cordial-etik.cnr fichier_patrons_cordial_NOM_NOM > trouve-terme-cordial-nom-nom.txt

Le résultat : fichier NOM-NOM.txt

On écrit la ligne de commande pour extraire le patron NOM PRP NOM:

perl trouve_terme_cordial.pl rubrique-cordial-etik.cnr fichier_patrons_cordial_NOM_PREP_NOM > trouve-terme-cordial-nom-prp_nom.txt

Le résultat : NOM-PRP-NOM.txt

Pour voir le script final, cliquer : ICI et télécharger le script en cliquant : ICI

Pour extraire les patons avec la sorite treetagger nous avons un script fourni par Monsieur J.DAUBE

Ce script prend en entrée un fichier issu de treetagger et un fichier de patrons morphosyntaxiques. Le programme extrait des suites de tokens correspondant aux patrons morpho-syntaxiques contenus dans le fichier de patrons

Exemples d utilisation avec les fichiers d exemple fournis :

perl trouve_terme.pl SORTIE-TREETAGGER.txt patrons-1.txt

Pour extraire NOM ADJ

On écrit la ligne de commande de la manière suivante :

Le résultat de NOM ADJ est obtenu à l'aide de patron-1.txt cliquer ICI

Pareille pour le NOM NOM et NOM PRP NOM

Le résultat de NOM PRP NOM est obtenu à l'aide de patron-2.txt cliquer ICI

Le résultat de NOM NOM est obtenu à l'aide de patron-3.txt cliquer ICI



FOUTOUN CHAAR © 2009.Tout droit réservés.