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()
【讨论】:
【参考方案6】:import nltk
nltk.download()
当 gui 提示时单击下载按钮。它对我有用。(nltk.download('stopwords')
对我不起作用)
【讨论】:
【参考方案7】:您可以使用以下命令
import nltk
nltk.download()
点击回车后,将打开一个弹出窗口,您可以从中下载所有必需的语料库和其他 nltk 工具。
【讨论】:
以上是关于NLTK 和停用词失败 #lookuperror的主要内容,如果未能解决你的问题,请参考以下文章