#/usr/bin/perl #c'est le chibong!! open (FICCORDIAL, "$ARGV[0]"); open(FILEOUT, ">NomAdjavecCordial"); while () { # variable par défaut correspondante : $_ next if ($_!~/\t/); # on saute les lignes dans lesquelles il n'y a rien my $ligne = $_; chomp $ligne; # pour enlever le caractère de retour à chaque fin de ligne if ($ligne!~/PCT/) { # si la ligne ne contient pas de ponctuation # MADE IN J-M DAUBE : $ligne=~/(\w+)\t(\w+)\t(\w+)\t/; # ATTENTION cette ligne n'est pas satisfaisante pour les mots qui contiennent des espaces !! exemple : au moment de # avec la bibliothèque locale (use locale) 'w' aurait aussi contenu les caractères accentués car on se place en France @cutcut=split(/\t/, $ligne); #on utilise le fait que les mots sont séparés par des tabulations push (@token, $cutcut[0]); push (@lemme, $cutcut[1]); push (@pos, $cutcut[2]); $i++; #ça compte les pos } else { #print "@token\n"; #print "appuie sur return pour continuer\n"; #my $reponse=; open (PATRONS, "$ARGV[1]"); # c'est le fichier des patrons qu'on veut trouver while () { my $patron = $_; # on met dans la variable patron ce qui est contenu dans patrons.txt chomp $patron; # pour enlever le caractère de retour à chaque fin de ligne $compare=""; # on initialise $compare à vide foreach my $element (@pos) { # pour chaque partie du discours $compare=$compare."\t".$element; # on met à la suite toutes les parties du discours avec entre deux parties une tabulation } # fin de foreach # if ($compare =~/$patron/) { # si il y a une correspondance entre le patron et la suite des parties du discours my $j = 0; my $k = 0; while ($compare =~/$patron/g) { #tant qu'on trouve le patron $apres=$'; #on met dans $apres le contexte droit $avant=$`; #on met dans $avant le contexte gauche while ($avant =~/\t/g) { $j++; } while ($apres =~/\t/g) { $k++; } # print "There is a match!\n\n"; # on écrit "There is a match ! " print FILEOUT "@token[$j-1..$i-$k-1]\n"; #on prend les mots qui ont les indices compris entre x .. y comme [a..z] $j = 0 ; $k = 0; } # fin de if } # fin de while close PATRONS; #on ferme PATRONS @token=(); #on remet la liste token à zéro @lemme=(); #on remet la liste lemme à zéro @pos=(); #on remet la liste pos à zéro $i=0; } # fin de else } # fin de while