NLTK 停用词列表
我有下面这段代码,我想把一个停用词列表应用到一组单词上。但是结果中仍然出现了像“a”和“the”这样的词,我本以为这些词会被这个过程去掉。请问有什么地方出错了吗?
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
1 个回答
29
有几点需要注意。
如果你需要反复检查某个列表中的成员,我建议用集合(set)来代替列表(list)。
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