2014-03-31 67 views
10

我有下面的代码,我试图将停止词列表应用于单词列表。然而,结果仍然显示出我认为在这个过程中将被删除的“a”和“the”这样的词。任何出错的想法都会很棒。NLTK停用词列表

import nltk 
from nltk.corpus import stopwords 

word_list = open("xxx.y.txt", "r") 
filtered_words = [w for w in word_list if not w in stopwords.words('english')] 
print filtered_words 
+0

[停用词去除与NLTK]的可能的复制(http://stackoverflow.com/questions/19130512/stopword-removal-with-nltk) –

回答

18

有几点需要注意。

  • 如果您要反复检查列表中的成员资格,我将使用一个集合而不是一个列表。

  • stopwords.words('english')返回一个列表小写停止词。您的来源很可能有大写字母,并且因此而不匹配。

  • 您没有正确读取文件,您正在检查文件对象而不是空格分隔的单词列表。

全部放在一起:

import nltk 
from nltk.corpus import stopwords 

word_list = open("xxx.y.txt", "r") 
stops = set(stopwords.words('english')) 

for line in word_list: 
    for w in line.split(): 
     if w.lower() not in stops: 
      print w 
+1

注如果你仍然没有过滤标点符号,你会想删除诸如'';“{} [] /?。,!'的东西。 – Hooked

+0

辉煌的工作,必须一直在错误地阅读文件,谢谢。 –