【问题标题】:NLTK data out of date - Python 3.4NLTK 数据过期 - Python 3.4
【发布时间】:2015-10-17 06:34:34
【问题描述】:

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

import nltk

nltk.download()

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

我在网上查看并尝试了各种修复方法,但我还没有找到任何对我的情况有帮助的方法。

我还尝试手动查找丢失的部分,结果是“Open Multilingual 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

【问题讨论】:

  • 您使用的是哪个操作系统?

标签: python download nlp nltk wordnet


【解决方案1】:

简而言之:

不要使用 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,但它并没有解决问题。我也尝试了解决方案 2,但是当我之后转到 GUI 时,它仍然说“过时”。此外,如果我尝试通过该方法重新下载“wordnet”和“omw”,它会重新下载它,就好像它以前不存在一样(而不是说“xyz 已经是最新的”)。我刚刚尝试了解决方案 3。如何判断它是否正常工作?转到 GUI,对于“wordnet”和“omw”,它仍然显示“过时”。如果我在解决方案 3 之后应用解决方案 2,它会重新下载它,就好像它不存在一样。
  • 解决方案 2 问题请参见上文(抱歉我无法在此处正确输入代码)
  • gui 和命令行检查是相同的 - 发生这种情况时,通常是因为自上次生成 nltk 索引(github.com/nltk/nltk_data/blob/gh-pages/index.xml)以来外部包已更改......因此“索引是过时”可能意味着您不是最新的,因为您有旧版本的软件包或因为您有较新的版本。
  • 反对使用 GUI 的建议是因为 GUI 有问题。实际上,我的包永远不会在 GUI 上更新,因为无论我如何使用最新索引更新所有包,它都会一直将它们显示为已卸载的包。因此,避免使用 GUI。每当内核被杀死时,GUI 也会变得混乱,tkinter 就挂在那里。
【解决方案2】:

不要担心“过时”的消息,这是在浪费您的时间。继续使用 nltk。

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

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

但正如我所说,“问题”并不值得解决。享受 NLTK!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2015-06-08
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多