extrait-term-c.pl

#!/usr/bin/perl
use locale; #fait en sorte que le \w prenne aussi les caractères accentués
#mettre le résultat de cordial
##On lance comme cela: perl extrait-term3.pl fichier.cnr fichier_patrons_cordial > culture-c-patron.txt
##Ex:
##perl extrait-term3.pl culture-un.cnr fichier_patrons_cordial_NOM_ADJ > culture-c-NOM-ADJ.txt
##perl extrait-term3.pl culture-un.cnr fichier_patrons_cordial_NOM_NOM > culture-c-NOM-NOM.txt
##perl extrait-term3.pl culture-un.cnr fichier_patrons_cordial_NOM_PREP_NOM > culture-c-NOM-PREP-NOM.txt
#Dans fichier_patond_cordial_NOM_ADJ il est écrit avec des tabulations: ADJFS NCFS (adjectif féminin singulier, nom commun féminin singulier) ou ADJ.. NC.. (adjectif nom commun), etc.
open(FICCORDIAL, $ARGV[0]);
#my: dit que la variable va être locale <va lire une ligne dans ce fichier-là>
#le while permet d'avancer dans le fichier
my $i=0;
while (<FICCORDIAL>) {
#print "<$_>";
next if ($_!~/\t/);
my $ligne = $_;
chomp($ligne);
# si ma ligne ne contient pas pct
if ($ligne !~/PCT/) {
#$ligne = ~/(\w+)\t(\w+)\t(\wt)/;
#\p{IsWord} marche aussi
#au moment de
my @decoupeligne = split (/\t/, $ligne);
push (@token, $decoupeligne[0]); #le decoupeligne c'est le liste chez SF
push(@lemme, $decoupeligne[1]);
push(@pos, $decoupeligne[2]);
$i++;
}
else {
#print "\n Liste des POS: \n @pos \n"; #pos c'est patron chez SF
#print "@token\n";
#print "appuie sur return pour continuer\n";
#my $reponse = <STDIN>;

open (FICPATRON, $ARGV[1]);
while (<FICPATRON>) {
my $patron1 = $_;
chomp($patron1);
my $compare = "";
$compare=join("\t", @pos);
#compare =join(@pos,"\t") ;
#print "Chaine lue: $compare \n";
#print "Patron à chercher: $patron1 \n";

my $j = 0;
my $k = 0;
while ($compare=~/$patron1/g) {
#print "Correspondance OK $i\n";
#$i++;
my $avant = $`;
my $apres = "$'";
while ($avant =~ /\t/g){$j++};
while ($apres =~ /\t/g){$k++};
print "@token[$j..$i-$k-1]\n";
#la longueur du morceau de phrase examinée
$j=0;
$k=0;
#exit;
}
}
close FICPATRON;
@token = (); #D'après Sophie
@lemme = ();
@pos = ();
$i=0;
}
}
close FICCORDIAL;