NLTK数据过时 - Python 3.4

时间:2015-10-17 06:34:35

标签: python download nlp nltk wordnet

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

import nltk

nltk.download()

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

我在线查看并尝试了各种修复,但我还没有发现任何有助于我的情况。

我还试图手动找到缺失的部分,结果证明是“打开多语言Wordnet”和“Wordnet”。以下是我发现缺少哪些部分的方法:Open Multilingual 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

然而,对于'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

2 个答案:

答案 0 :(得分:12)

简而言之:

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

$ python3
>>> import nltk
>>> nltk.download('all')

长期:

可能是因为最近添加了Open Multilingual WordNet,并且某些内容无法正常使用NLTK下载GUI界面和索引。

解决方案1:

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

解决方案2:

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

>>> import nltk
>>> nltk.download('wordnet')
>>> nltk.download('omw') # Open Multilingual WordNet

解决方案3:

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

>>> import nltk
>>> nltk.downlad('all')

注意:如果任何文件可能因互联网连接中断而损坏,只需找到存储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']

由于数据下载的目的是使用它们,要知道您没有错过所需的组件,如果是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']

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

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

答案 1 :(得分:1)

不要担心"过时"消息,这是浪费你的时间。继续使用nltk。

NLTK的数据资源几乎完全相互独立。您可能永远没有理由使用标记为"过时"的任何一个软件包,但即使您这样做,它们实际上可能已完全安装并可用。

但是,它也发生在我身上,这就是我发现的:看起来下载者会认为资源过时了#34;如果它检测到其下载文件夹中不在资源清单中的文件。也许这有时是由配置错误的资源引起的,但是如果您使用目录浏览器访问了相关资源,则可能是由于GUI或编辑器遗留的杂散文件或者谁知道什么导致的不匹配。例如,在Mac上,Finder会在其访问的目录中留下.DS_Store个文件。

但正如我所说,"问题"不值得修理。享受NLTK!

PS。据我所知,刷新nltk_data目录的最佳(也是唯一)方法是删除整个内容并重新下载。