open(FILE,"$ARGV[0]"); open (FILEOUT, ">extractNOMPREPNOM-Cordial.txt"); #-------------------------------------------- # le patron cherché ici est du type NOM PREP NOM; #-------------------------------------------- my @lignes=; #on met tout le fichier dans une liste close(FILE); while (@lignes) { #tant qu'il y a quelque chose à lire my $ligne=shift(@lignes); # on prend le premier élément de la ligne chomp $ligne; # on enlève le retour chariot my $sequence=""; # on initialise séquence à vide my $longueur=0; # au début la longueur est 0 if ( $ligne =~ /^([^\t]+)\t[^\t]+\tNC.*/) { # est ce que cette ligne correspond à NC my $forme=$1; # si c'est un NC on récupère son token qui est en première colonne d'où $1 $sequence.=$forme; #on concatène dans la séquence finale $longueur=1; # on dit que le nombre de mot dans la séquence est 1 my $nextligne=$lignes[0]; # comme on a vidé un élément, la ligne suivante est à l'indice 0 if ( $nextligne =~ /^([^\t]+)\t[^\t]+\tPREP.*/) { # est ce que cette ligne désigne une PREP my $forme=$1; # on récupère le token $sequence.=" ".$forme; # on concatène dans la séquence finale qui contient un nom $longueur=2; #maintenant la longueur vaut 2 my $nextligne=$lignes[1]; # comme on a vidé un élément, la ligne suivante est à l'indice 0 if ( $nextligne =~ /^([^\t]+)\t[^\t]+\tNC.*/) { # est ce que cette ligne désigne un NC my $forme=$1; # on récupère le token $sequence.=" ".$forme; # on concatène dans la séquence finale qui contient un nom $longueur=3; #maintenant la longueur vaut 3 } } } if ($longueur == 3) { # si la séquence vaut 2 : c'est à dire qu'on a NOM + ADJ print FILEOUT $sequence,"\n"; # on écrit le nom + le det } } close (FILEOUT);