Boite à outils 3 : Extraction terminologique
Après avoir récupéré les fichiers étiquetés, il permet d'extraire les patrons morphosyntaxiques
Liste de patron à traiter:
NOM ADJ
NOM PREP NOM
En sortie, nous récuperons une liste de patron en forme TXT.
Script:
Le script pour extraire le patron NOM ADJ:
#--------------------------------------------
# le patron cherché ici est du type NOM ADJ";
#--------------------------------------------
my $rubrique = "$ARGV[0]";
open(FILE,"<:encoding(utf8)","$rubrique.xml") or die "NE PEUT PAS OUVIRE LE FICHIER !";
open(OUTPUT,">>:encoding(utf8)","N_ADJ_$rubrique.txt") or die "NE PEUT PAS OUVIRE LE FICHIER !";
my @lignes=<FILE>;
close(FILE);
while (my $ligne=shift(@lignes))
{
chomp $ligne;
my $sequence = "";
my $longueur = 0;
if ( $ligne =~ /<element><data type=\"type\">NOM<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/)
{
my $forme = $1;
$sequence.=$forme;
$longueur = 1;
my $nextligne = $lignes[0];
if ( $nextligne =~ /<element><data type=\"type\">ADJ<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/)
{
my $forme = $1;
$sequence.=" ".$forme;
$longueur = 2;
}
}
if ($longueur == 2)
{
print "$sequence\n";
print OUTPUT "$sequence\n";
}
}
close OUTPUT;
Pour voir le script complet, cliquez sur le lien suivant
Le script pour extraire le patron NOM PREP NOM:
#--------------------------------------------------------
# le patron cherché ici est du type NOM PREP NOM";
#--------------------------------------------------------
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
my $rubrique = "$ARGV[0]";
open(FILE,"<:encoding(utf8)","$rubrique.xml") or die "NE PEUT PAS OUVIRE LE FICHIER !";
open(OUTPUT,">>:encoding(utf8)","N_PRP_N_$rubrique.txt") or die "NE PEUT PAS OUVIRE LE FICHIER !";
my @lignes=<FILE>;
close(FILE);
while (my $ligne=shift(@lignes))
{
chomp $ligne;
my $sequence = "";
my $longueur = 0;
if ($ligne =~ /<element><data type=\"type\">NOM<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/)
{
my $forme = $1;
$sequence.=$forme;
$longueur = 1;
my $nextligne = $lignes[0];
if ($nextligne =~ /<element><data type=\"type\">PRP<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/)
{
my $forme = $1;
$sequence.=" ".$forme;
$longueur = 2;
my $nextligne = $lignes[1];
if($nextligne =~ /<element><data type=\"type\">NOM<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/)
{
my $forme=$1;
$sequence.=" ".$forme;
$longueur = 3;
}
}
}
if ($longueur == 3)
{
print "$sequence\n";
print OUTPUT "$sequence\n";
}
}
close OUTPUT;
Pour voir le script complet, cliquez sur le lien suivant
Fichier sortie TXT
Rubrique 3208: NOM_ADJ
Rubrique 3208: NOM_PREP_NOM
Rubrique 3210: NOM_ADJ
Rubrique 3210: NOM_PREP_NOM
Rubrique 3224: NOM_ADJ
Rubrique 3224: NOM_PREP_NOM
Rubrique 823353: NOM_ADJ XML
Rubrique 823353: NOM_PREP_NOM XML