【问题标题】:Unable to download nltk data无法下载 nltk 数据
【发布时间】:2016-08-02 16:09:50
【问题描述】:
import nltk
nltk.download()

它显示[SSL:CERTIFICATE_VERIFY_FAILED]。如果是requests,可以使用verify=False,但是在这里做什么。

更新:

此错误在 Mac OS X 10.7.5 和 NLTK 3.0 的 Python 3.6 上仍然存在:

更改 NLTK 下载器中的索引(建议 here)允许下载器显示所有 NLTK 文件,但是当尝试下载所有文件时,会出现另一个 SSL 错误(见照片底部):

【问题讨论】:

  • 您确定您使用的是最新版本的 nltk,也许可以试试 nltk.download('all')
  • Mac OS X 10.7.5 上的 Python 3.6 和 NLTK 3.0 也出现此错误。我还没有找到解决办法。
  • 麻烦。 mac上的python 3.6也一样

标签: python-2.7 python-3.x ssl nltk osx-lion


【解决方案1】:

在 MacOS 10.12.6 上,通过在 bash 终端中输入以下内容解决了这个问题

pip install certifi
/Applications/Python\ 3.6/Install\ Certificates.command

安装 nltk 语料库的常用方法对我有用

import nltk
nltk.download()

【讨论】:

    【解决方案2】:

    我在尝试同时配置 nltk 和 SpaCy 时遇到了同样的问题。根据this question 中的说明,我能够克服这个问题。尝试运行/Applications/Python\ 3.6/Install\ Certificates.command,然后重试您的 NLTK 下载

    【讨论】:

      【解决方案3】:

      如果要手动下载,比如需要tokenizer/punkt数据,可以直接下载到:

      https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip

      并将 punkt 提取的文件夹放在 C:\nltk_data\tokenizers 中。

      【讨论】:

        【解决方案4】:

        (为这个问题的SEO添加“证书验证失败_ssl.c:749”。)

        使用 Paul Barry 的通过 Python 2.7 下载的技巧在 Mac 10.12.2 上为我解决了(我无法评论,因为代表

        遇到并修复的其他问题: 为了能够通过 python 2.7(默认的 Mac Python 2.7 设置)下载 NLTK,我还必须将 Python 文件夹添加到 /.bash_profile,如 this comment 所示。

        然后,因为我已经为 2.7 设置了这个路径变量,所以我必须在下载语料库后删除它才能启动 python3。所以在启动 python3 之前从 /.bash_profile 中删除它。

        毕竟,我可以毫无问题地运行“import nltk”和“from nltk.book import *”。

        【讨论】:

          【解决方案5】:

          好的,这有点小题大做,但我必须这样做才能在我的 Mac 笔记本电脑(运行 macOS 10.12.2)上使用 Python 3.x 中的各种 NLTK 数据文件。

          首先,请注意,仅当我尝试在我的 Mac 上使用 Python 3.x 下载 NLTK 数据时才会出现证书错误(我在 VirtualBox 中的 Ubuntu VM 在使用 Python 3.x 时没有此类错误 - 这很烦人)。为什么这会在我的 Mac 上导致错误超出了我的理解,尤其是当 NLTK 模块使用 pip 安装到 Python 3.x 时没有问题。似乎是与 NLTK 下载服务器的连接导致 SSL 验证问题。

          我的“啊哈!”当我意识到 NLTK - 当安装到 Python 3.x 或 Python 2.x 中时 - 在任何计算机上安装的所有 Python 版本之间共享相同的目录结构时就到了。因此,我使用 macOS 上预装的 Python 2.x 来安装 NLTK,然后在 Python 2.x 中使用nltk.download() 来安装停用词语料库,没有任何问题。完成此操作(在 Python 2.x 中)后,我又回到 Python 3.x,这段代码有效:

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

          正如我所说,这有点像 hack,但这种技术让我可以使用 Python 2.x 安装 NLTK 数据,我可以根据需要使用 Python 3.x 处理这些数据。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-04-08
            • 2017-05-11
            • 1970-01-01
            • 2020-04-05
            • 1970-01-01
            • 2019-03-03
            • 2016-10-28
            相关资源
            最近更新 更多