NLTK 停用词列表

15 投票
1 回答
50909 浏览
提问于 2025-04-18 00:40

我有下面这段代码,我想把一个停用词列表应用到一组单词上。但是结果中仍然出现了像“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

撰写回答