Bonjour
J’ai un fichier contenant chaque ligne un terme et son catégorie grammaticale.
Je cherche le motif 1 dans une ligne et le motif 2 dans une autre ligne.
Pour le motif 1, je cherche la ligne où il y a le terme qui contient la catégorie grammaticale n (dans mes exemples, la lettre qui est juste après le point) et le motif 2, je cherche la ligne où il y a le terme qui contient une autre catégorie ng par exemple. S’ils sont les mêmes termes, je ne garde que la ligne où il y a le motif 1, mais pas le motif 2 dans le fichier de sortie. En effet, dans mon programme, il cherche d’abord le terme avec le motif 1 ensuite avec le motif 2. Mais si un terme a le motif 2 est affiché avant le motif dans mon lexique, du coup, le programme ne va pas prendre en compte. Pouvez m’aider comment je peux faire pour chercher deux motifs sans comprendre en compte leur position dans le ficher d’entré. Merci beaucoup!
Ex :
livre,livre.n+py=xxx
livre,livre.v+py=xxx
pouvoir,pouvoir.n+py=xxx
pouvoir,pouvoir.v+py=xxx
en,en.pre+py
en,en.pron+py
while ($ligne1 = <INFILE>){
$compteur++;
#print OUTFILE $compteur." "."$ligne1";
# recherche du motif 1 qui contient la premiere categorie grammaticle comme "n" (ex entree du lexique: 严冬,严冬.n+py=yan2 dong1)
if($ligne1=~/^(([^,]+),([^.]+)\.n\+py.+)/) {
$mot1=$1;
$mot2=$2;
#print OUTFILE "$mot1\n";
}
# recherche du motif 2 qui contient la deuxieme categorie grammaticale comme "ng"
if($ligne1=~/^(([^,]+),([^.]+)\.ng\+py.+)/) {
$mot3=$1;
$mot4=$2;
#print OUTFILE "$mot4\n";
# les deux termes sont identique pour l'operateur eq ; les deux termes sont different pour l'operateur ne
if($mot2 eq $mot4){
print OUTFILE $compteur." "."$mot3\n";
#print OUTFILE "$mot4\n";
}
}
}