NLTK - 缺失的停用词 - 英文

4

我刚刚下载了最新的NLTK版本以及相关资源。

我发现couldwould没有列入停用词列表。但是should被视为停用词。

这是否是一些已知的bug或者其他什么原因?

In [7]: import nltk

In [8]: "shouldn't" in nltk.corpus.stopwords.words("english")
Out[8]: True

In [9]: "couldn't" in nltk.corpus.stopwords.words("english")
Out[9]: True

In [10]: "wouldn't" in nltk.corpus.stopwords.words("english")
Out[10]: True

In [11]: "should" in nltk.corpus.stopwords.words("english")
Out[11]: True

In [12]: "could" in nltk.corpus.stopwords.words("english")
Out[12]: False

In [13]: "would" in nltk.corpus.stopwords.words("english")
Out[13]: False

1
这不是一个bug,而是停用词列表编译器的故意决定。这个决定可能与以下两点相关:(1)这些单词在停用词列表基于的语料库中的相对频率;以及(2)列表的编译者决定它应该包含2400个单词。 - BoarGules
@BoarGules 嗯...但从逻辑角度来看,这没有意义,是吗?“决定应该由2,400个单词组成”>>>我不明白。哪个列表应该包含2400个单词?停用词列表目前由179个单词组成。 - peter.petrov
根据NLTK文档,最初的停用词列表由Porter等人编写,涵盖11种语言,共2400个单词。没有其他参考资料,我无法找到它,已经尝试过了。可能2400是在所有11种语言中计算的,而不仅仅是英语。如果您想为该列表内容提供理由,则需要向nltk.org网站上的人员咨询。 - BoarGules
2个回答

2
这不算是一个明显的错误。什么词语被认为是停用词,有时会有一些模糊。那个列表制定者不知何故没有包含"should"这个词 - 或许他们有充分的理由,或许没有 - 但无论如何,你应该能够将它添加到你自己的项目语料库中,并查看它是否对你的任务提供了更好的结果。
总之,这似乎值得在他们的github问题上提出来。

2

哦,实际上这非常有趣!

乔尔·诺思曼曾经查看过停用词并发现了一些令人不安的结果。请参见https://aclweb.org/anthology/papers/W/W18/W18-2502/

同意伊桑·麦考的看法,这绝对是应该通过在NLTK的GitHub问题跟踪器上提出来解决的问题。

最初的回答来源于Joel Nothman和Ethan McCue的评论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接