NLTK数据过时 - Python 3.4

pym*_*man 7 python nlp download nltk wordnet

我正在尝试为Python 3.4安装NLTK.实际的NLTK模块似乎安装得很好.然后我跑了

import nltk

nltk.download()
Run Code Online (Sandbox Code Playgroud)

并选择下载所有内容.然而,在完成后,窗口只是说'过时'.我尝试刷新和下载,但它保持"过时",如下所示:NLTK Window 1

我看了网上并尝试了各种修复,但我还没有找到任何帮助我的情况.

我还尝试手动找到缺少的部分,结果证明是"打开多语言Wordnet"和"Wordnet".以下是我发现缺少哪些部分的方法:打开多语言Wordnet.

我该怎么办?我应该卸载并重新安装NLTK吗?我还没有找到删除软件包的方法(除了手动删除它).

编辑:关于解决方案2和解决方案3:有关解决方案2问题的更多说明:

如果已成功下载某些内容,则输出为:

>>> nltk.download('subjectivity')
[nltk_data] Downloading package subjectivity to
[nltk_data]     C:\Users\Shane\AppData\Roaming\nltk_data...
[nltk_data]   Package subjectivity is already up-to-date!
True
Run Code Online (Sandbox Code Playgroud)

但是,对于'wordnet'和'omw',这是我重新下载时会发生的事情:

>>> nltk.download('omw')
[nltk_data] Downloading package omw to
[nltk_data]     C:\Users\Shane\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping corpora\omw.zip.
True
Run Code Online (Sandbox Code Playgroud)

alv*_*vas 14

简而言之:

不要使用GUI,在python解释器中添加所有包.

$ python3
>>> import nltk
>>> nltk.download('all')
Run Code Online (Sandbox Code Playgroud)

长期:

这可能是因为最近添加了Open Multilingual WordNet一些东西并且无法正常使用NLTK下载GUI界面和索引.

解决方案1:

只需使用nltk.download()GUI并下载两个软件包而不选择全部.(可能不行,但值得一试)

解决方案2:

通过python解释器单独安装包:

>>> import nltk
>>> nltk.download('wordnet')
>>> nltk.download('omw') # Open Multilingual WordNet
Run Code Online (Sandbox Code Playgroud)

解决方案3:

让它nltk.download('all')检查其索引中的所有包,如果它们不可用则下载它们.

>>> import nltk
>>> nltk.downlad('all')
Run Code Online (Sandbox Code Playgroud)

注意:如果任何文件可能由于互联网连接中断而损坏,只需找到存储NLTK数据的目录,然后继续解决方案3.

要查找nltk_data存储nltk.data.path位置,请存储可能的位置:

>>> import nltk
>>> nltk.data.path
['/home/alvas/nltk_data', '/usr/share/nltk_data', '/usr/local/share/nltk_data', '/usr/lib/nltk_data', '/usr/local/lib/nltk_data']
Run Code Online (Sandbox Code Playgroud)

由于数据下载的一点是要使用它们,知道你不会错过你所需要的部件,如果是那样的wordnetomw,你可以试试这个:

>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('bank')[0]
Synset('bank.n.01')
>>> wn.synsets('bank')[0].lemma_names('spa')
['margen', 'orilla', 'vera']
>>> wn.synsets('bank')[0].lemma_names('fre')
['rive', 'banque']
Run Code Online (Sandbox Code Playgroud)

不要担心GUI上显示的内容.一旦nltk.download('all')完成没有错误,这意味着你拥有NLTK支持的所有语料库和模型.

但作为一种好的做法,请在https://github.com/nltk/nltk_data/issues中提出一个问题,以便开发人员可以检查问题是否可以复制.显示更多错误的打印屏幕.建议的解决方案之前和之后也是=)