2017-08-10 148 views
2

我遇到的問題是,在我的代碼中,我無法獲取單個詞/標記以匹配停用詞從原始文本中刪除。相反,我得到了一整句話,因此無法將它與停用詞相匹配。請告訴我一種方法,我可以獲取個人令牌,然後用停用詞匹配並刪除它們。請幫幫我。如何在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

你沒有得到文本的話的原因是因爲你使用'readlines方法()'函數。這給你一個文件中的行/句子的迭代,然後當你說'文本中的單詞'時,你會逐一獲取這些行。 –

回答

2

試試這個:

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

這不會起作用,因爲'line'是一個字符串,因此您將遍歷'line'中的字符。儘管'line.split()'交換'line',我們很高興去。 –

+0

這段代碼在它終止後只給我第一個單詞。我無法獲得整個列表,而只是獲取文件中的第一個單詞。我希望它迭代並將給定文本文件中的所有單詞匹配到停用詞,並向列表中顯示沒有停用詞或停用詞的列表。 – user3778289

+0

也.split()函數令牌,而我提供的文件已被標記。 – user3778289