使用NLTK停用词的正确方法是什么?

时间:2016-07-06 14:43:49

标签: python nltk stop-words

我正在处理一个单词项目,我想从NLTK停用词列表中删除停用词。现在,我正在这样做:

words.difference_update(set(stopwords.words("english")))

(单词是包含语料库中所有单词的集合)

但是,当我查看stopwords.words("english")的内容时,我看到的字样如下:" couldn"并且"没有"。我认为这些是单词的前缀,例如" cann'#34;并且"没有"#34;也许还有其他的话。

所以,我假设有一种方法可以检查单词是否在停用词列表中比纯字符串相等更复杂,但我无法弄清楚它是什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

使用停用词没有正确的方法。这取决于你想要完成的任务。但是,根据您提供的信息,似乎NLTK假设您通过空格和标点符号拆分文档。但是,我可以猜测停用词列表还会包含coulddoes等字词。我的方法是使用NLTK的tokenize包首先创建语料库的令牌,然后运行difference_update

words = set(nltk.word_tokenize(document))

请注意,根据标记化模型,该函数可能会将couldn't等否定字拆分为['could',"n't"]。因此,如果停用词列表中没有包含n't字符串,则您也必须将其删除。

我做的另一个假设是你的语料库只包含小写单词。

希望有所帮助!