NLTK 和停用词失败 #lookuperror

Posted

技术标签:

【中文标题】NLTK 和停用词失败 #lookuperror【英文标题】:NLTK and Stopwords Fail #lookuperror 【发布时间】:2014-12-28 21:34:21 【问题描述】:

我正在尝试启动一个情感分析项目,我将使用停用词法。我做了一些研究,发现 nltk 有停用词,但是当我执行命令时出现错误。

为了知道 nltk 使用了哪些词(就像你可以在这里找到的 http://www.nltk.org/book/ch02.html 在第 4.1 节中的内容),我所做的如下:

from nltk.corpus import stopwords
stopwords.words('english')

但是当我按下回车时,我得到了

---------------------------------------------------------------------------
LookupError                               Traceback (most recent call last)
<ipython-input-6-ff9cd17f22b2> in <module>()
----> 1 stopwords.words('english')

C:\Users\Usuario\Anaconda\lib\site-packages\nltk\corpus\util.pyc in __getattr__(self, attr)
 66
 67     def __getattr__(self, attr):
---> 68         self.__load()
 69         # This looks circular, but its not, since __load() changes our
 70         # __class__ to something new:

C:\Users\Usuario\Anaconda\lib\site-packages\nltk\corpus\util.pyc in __load(self)
 54             except LookupError, e:
 55                 try: root = nltk.data.find('corpora/%s' % zip_name)
---> 56                 except LookupError: raise e
 57
 58         # Load the corpus.

LookupError:
**********************************************************************
  Resource 'corpora/stopwords' not found.  Please use the NLTK
  Downloader to obtain the resource:  >>> nltk.download()
  Searched in:
- 'C:\\Users\\Meru/nltk_data'
- 'C:\\nltk_data'
- 'D:\\nltk_data'
- 'E:\\nltk_data'
- 'C:\\Users\\Meru\\Anaconda\\nltk_data'
- 'C:\\Users\\Meru\\Anaconda\\lib\\nltk_data'
- 'C:\\Users\\Meru\\AppData\\Roaming\\nltk_data'
**********************************************************************

而且,由于这个问题,这样的事情不能正常运行(得到同样的错误):

>>> from nltk.corpus import stopwords
>>> stop = stopwords.words('english')
>>> sentence = "this is a foo bar sentence"
>>> print [i for i in sentence.split() if i not in stop]

你知道可能是什么问题吗?我必须用西班牙语单词,你推荐另一种方法吗?我也想过使用 Goslate 包和英文数据集

感谢阅读!

P.D.:我用 Ananconda

【问题讨论】:

【参考方案1】:

您的计算机上似乎没有停用词语料库。

您需要启动 NLTK 下载器并下载您需要的所有数据。

打开 Python 控制台并执行以下操作:

>>> import nltk
>>> nltk.download()
showing info http://nltk.github.com/nltk_data/

在打开的 GUI 窗口中,只需按“下载”按钮即可下载所有语料库,或转到“语料库”选项卡并仅下载您需要/想要的。

【讨论】:

或者,如果您想避免使用 GUI 并知道要下载什么:nltk.download("stopwords") 【参考方案2】:

我从 ubuntu 终端尝试过,但我不知道为什么根据 tttthomasssss 的答案没有显示 GUI。所以我遵循了 KLDavenport 的评论,它奏效了。总结如下:

打开你的终端/命令行然后输入python

>>> import nltk .>>> nltk.download("stopwords")

这会将停用词语料库存储在 nltk_data 下。就我而言,它是/home/myusername/nltk_data/corpora/stopwords

如果您需要另一个语料库,请访问 nltk data 并找到带有其 ID 的语料库。然后像我们对停用词一样使用 ID 进行下载。

【讨论】:

这很好用,但我很惊讶这不是你可以用 pip 做的事情。相反,您必须编写脚本以在每个环境中提取这些资源。【参考方案3】:
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
STOPWORDS = set(stopwords.words('english'))

【讨论】:

【参考方案4】:

如果您想手动安装 NLTK 语料库。

1) 转到http://www.nltk.org/nltk_data/ 并下载所需的 NLTK 语料库文件。

2) 现在在 Python shell 中检查 nltk.data.path 的值

3) 选择你机器上存在的路径之一,将数据文件解压到里面的语料库子目录中。

4) 现在您可以从 nltk.corpos import stopwords 导入数据

参考:https://medium.com/@satorulogic/how-to-manually-download-a-nltk-corpus-f01569861da9

【讨论】:

【参考方案5】:

import nltk

nltk.download()

会弹出一个 GUI,然后在语料库部分中选择所需的语料库。 验证结果

【讨论】:

【参考方案6】:
import nltk
nltk.download()

当 gui 提示时单击下载按钮。它对我有用。(nltk.download('stopwords') 对我不起作用)

【讨论】:

【参考方案7】:

您可以使用以下命令

 import nltk

 nltk.download()

点击回车后,将打开一个弹出窗口,您可以从中下载所有必需的语料库和其他 nltk 工具。

【讨论】:

以上是关于NLTK 和停用词失败 #lookuperror的主要内容,如果未能解决你的问题,请参考以下文章

NLTK 停用词列表

如何使用 nltk 或 python 删除停用词

如何在 NLTK 中为停用词添加更多语言?

NLTK 可用于停用词的语言

python 从nltk下载英语停用词

[学习记录]NLTK常见操作一(去网页标记,统计词频,去停用词)