2017-08-10 4 views
2

Le problème que je rencontre est que dans mon code, je ne suis pas en mesure d'obtenir des mots/jetons individuels pour correspondre avec les mots d'arrêt à supprimer du texte original. Au lieu de cela, je reçois une phrase entière et je ne suis donc pas capable de faire correspondre les mots d'arrêt. S'il vous plaît montrez-moi un moyen par lequel je peux obtenir des jetons individuels et ensuite correspondre à ceux avec des mots d'arrêt et les supprimer. Aidez-moi, s'il vous plaît.Comment lire les jetons d'un fichier un par un en Python?

from nltk.corpus import stopwords 
import string, os 
def remove_stopwords(ifile): 
    processed_word_list = [] 
    stopword = stopwords.words("urdu") 
    text = open(ifile, 'r').readlines() 
    for word in text: 
     print(word) 
     if word not in stopword: 
       processed_word_list.append('*') 
       print(processed_word_list) 
       return processed_word_list 

if __name__ == "__main__": 
    print ("Input file path: ") 
    ifile = input() 
    remove_stopwords(ifile) 
+0

La raison pour laquelle vous n'êtes pas obtenir les mots dans le texte est parce que vous utilisez les 'readlines (') fonction. Cela vous donne un itérable des lignes/phrases dans le fichier, puis quand vous dites «pour le mot dans le texte:» vous obtenez les lignes une par une. –

Répondre

2

Essayez ceci:

from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize 
import string, os, ast 
def remove_stopwords(ifile): 
    processed_word_list = [] 
    stopword = stopwords.words("urdu") 
    words = ast.literal_eval(open(ifile, 'r').read()) 
    for word in words: 
     print(word) 
     if word not in stopword: 
      processed_word_list.append('*') 
     else: 
      processed_word_list.append(word) 
    print(processed_word_list) 
    return processed_word_list 

if __name__ == "__main__": 
    print ("Input file path: ") 
    ifile = input() 
    remove_stopwords(ifile) 
+1

Cela ne fonctionnera pas car 'line' est une chaîne de caractères, donc vous irez sur les caractères de' line'. Echangez 'line' pour' line.split() 'et nous sommes prêts à partir. –

+0

Ce code me donne seulement le premier mot après qu'il se termine. Je ne suis pas en mesure d'obtenir la liste entière à la place juste le premier mot dans le fichier. Je veux itérer et faire correspondre tous les mots dans le fichier texte donné aux mots d'arrêt et le montrer moi la liste sans mots d'arrêt ou les mots d'arrêt enlevés. – user3778289

+0

aussi la fonction .split() fait des jetons alors que le fichier que je fournis est déjà segmenté. – user3778289