2017-10-01 2 views
0

Je suis donc en train d'étiqueter un corpus et je veux que chaque mot d'arrêt soit déclaré comme NON RELATIF. J'ai essayé de le faire en python, mais ça ne fonctionne pas btw Im juste un nouveau en python.Comment ajouter une chaîne dans un ensemble spécifique de chaînes dans un fichier

stop_words = set(stopwords.words('english')) 
    for line in word_tokenize(input_file): 
     if stop_words in line: 
     line = line + " NOTRELATED\n" 
output_file.write(line) 

entrée de l'échantillon (fichier texte):
Le
coût
de
dégâts
à
agriculture
et
infrastructures
dans
zones
dévasté
par
Typhoon
Lando
a monté en flèche
à
plus
que
P6.3
milliards
.

sortie (fichier):
Le
coût
de NOTRELATED
dégâts
à NOTRELATED
agriculture
et NOTRELATED
infrastructures
dans NOTRELATED
zones
.
. .

+0

ce qui est la sortie que vous obtenez dans le fichier? – MaNKuR

+0

'si stop_words en ligne:' ceci ne vérifie pas si les mots dans le stop_words sont en ligne.Vous devez parcourir votre ensemble 'stop_words' et vérifier chaque mot. – Vinny

+0

@MaNKuR son blanc. –

Répondre

1

Il y a quelques problèmes. Le premier est que vous devriez vérifier pour voir si les mots du fichier d'entrée sont dans le jeu de mots d'arrêt, pas l'inverse. Alors

if stop_words in line: 

devrait être:

if line in stop_words: 

Le reste ressemble la plupart du temps comme un problème de retrait. Au lieu d'écrire line dans le fichier une fois la boucle for terminée, écrivez dans le fichier pendant la boucle. Et word serait un meilleur choix que line:

stop_words = set(stopwords.words('english')) 
for word in word_tokenize(input_file): 
    print(word, 'NOTRELATED' if word in stop_words else '', file=output_file) 
+0

woah, son fonctionnement! Merci. –

1

Le problème est le line qui est remplacé à chaque démarrage de la boucle. Essayez le code ci-dessous et voyez si cela aide.

stop_words = set(stopwords.words('english')) 
file_content = set() 
for line in word_tokenize(input_file): 
    if line in stop_words: 
     line += " NOTRELATED" 
    line += '\n' 
    file_content.add(line) 

output_file.write(''.join(file_content)) 
0

Votre ligne de sortie doit être dans la boucle qui lit réellement la ligne. Essayez ceci ...

stop_words = set(stopwords.words('english')) 
for line in word_tokenize(input_file): 
    if stop_words in line: 
     line = line + " NOTRELATED\n" 
    output_file.write(line)