*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
24 Mai 2012 à 02:12:20

Connexion avec identifiant, mot de passe et durée de la session



 

perl extraction des termes


« sujet précédent | | sujet suivant »
Pages: [1] Imprimer
Auteur Fil de discussion: perl extraction des termes  (Lu 2166 fois)
wulucie
Nouveau membre
*

Points gagnés: 0
Messages: 1


Voir le profil
perl extraction des termes
« le: 05 Décembre 2009 à 23:31:10 »

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
Code:
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";
}
}

}
Journalisée
Pages: [1] Imprimer 
« sujet précédent | | sujet suivant »
Aller à:  

Powered by SMF 1.1.12 | SMF © 2006, Simple Machines LLC

Page générée en 0.133 secondes avec 18 requêtes.