NLTK下载报错[nltk_data] Error loading reuters: <urlopen error [Errno 11004] [nltk_data] getaddrinfo

在完成cs224n Assignment1时,需要使用nltk库里的reuters语料库,但是运行代码里的nltk.download(“reuters”)时,由于网络问题,会出现报错无法下载:

[nltk_data] Error loading reuters: <urlopen error [Errno 11004] 
[nltk_data]     getaddrinfo

按照网上的教程折腾了很久,踩了很多坑摸索出一套行之有效且极简的解决方式。不用下载整个ntlk包(700多M),只需要按自己的需求下载相应的文件即可。

失败方式一:修改HOST

此方式需要添加代理,使用全局魔法。按照博文NLTK异常问题所给出的在HOSTS里添加IP地址199.232.68.133 raw.githubusercontent.com无效,原因在于此IP已失效。
由于本人只有浏览器端的梯子,没有全局梯子,所以这种方式PASS

失败方式二:下载NLTK包但无法使用

通常给出的方式是去GItee链接上下载NLTK包,但大部分博主都是直接下载整个包(700多M),非常占用内存。这里给出按需所需文件的方式,和特别需要注意的细节!(踩过的坑)

1. 首先查看自己的NLTK目录,没有就创建

在python解释器里键入

import nltk
nltk.download(".")

会看到如下返回,

 Searched in:
    - 'C:\\Users\\YayingLuo/nltk_data'
    - 'C:\\Users\\ghost\\anaconda3\\envs\\cs224n\\nltk_data'
    - 'C:\\Users\\ghost\\anaconda3\\envs\\cs224n\\share\\nltk_data'
    - 'C:\\Users\\ghost\\anaconda3\\envs\\cs224n\\lib\\nltk_data'
    - 'C:\\Users\\YayingLuo\\AppData\\Roaming\\nltk_data'
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'

这些路径会由于各自的用户名不同而有所不同。出现这样的返回是因为没有找到相关nltk_data路径所导致的。在这些路径里选择某一个,在其下创建nltk_data文件夹,如:
C:\Users\ghost\anaconda3\envs\cs224n\nltk_data

2. 下载自己所需要的语料库文件

例如,原来的代码里需要下载的是reuters语料库,一个金融新闻数据集。

nltk.corpus('reuters')

在上面给出的gitee链接里的pacages/corpora路径下,下载reuters.zip文件
reuters包,下载后的命名为xxx_reuters.zip
因为这里在gitee下载,压缩包里包括出现很多路径前缀名,而且真正的reuters文件夹还在这一层之下!需要修改,否则不能正确使用。

3.【重要】修改相关文件路径名并正确放置下载文件

  • 在之前创建的/nltk_data路径下新建一个corpora子文件夹(意思是语料库)
  • 把下载的压缩包重命名为reuters.zip
  • 把这个reuters.zip文件夹重新压缩移动到/nltk_data/corpora`路径下
  • 亲测不用解压缩,直接使用zip即可

这样就可以正常使用了。如果还有问题,请重启jupyter notebook并检查压缩包和路径的命名。

备注

如果anaconda新建env但是jupyter notebook无法连接到该kernel
解决方式是先在anaconda里activate进入相应的环境后,再打开jupyter notebook。而不是在(base)环境下打开。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,当出现"[nltk_data] Error loading punkt: <urlopen error [Errno 11004] [nltk_data] getaddrinfo failed>"错误时,可能是由于网络问题导致无法下载所需的语料库。解决此问题的方法如下: 1. 检查网络连接:确保你的计算机连接到互联网,并且网络连接正常。 2. 设置代理:如果你使用的是代理服务器进行网络连接,请确保已正确设置代理。你可以在Python代码中设置代理,例如: ```python import nltk import urllib proxy = urllib.request.ProxyHandler({'http': 'http://<proxy_address>:<proxy_port>', 'https': 'https://<proxy_address>:<proxy_port>'}) opener = urllib.request.build_opener(proxy) urllib.request.install_opener(opener) nltk.download('punkt') ``` 请将`<proxy_address>`和`<proxy_port>`替换为你的代理服务器地址和端口。 3. 手动下载语料库:如果以上方法仍然无法解决问题,你可以尝试手动下载所需的语料库并将其解压到指定目录。首先,你可以在NLTK官方网站上找到所需的语料库文件(https://www.nltk.org/data.html)。然后,将下载的文件解压缩,并将解压后的文件夹放置在NLTK数据目录中。你可以使用以下代码找到NLTK数据目录的路径: ```python import nltk nltk.data.path.append("<path_to_nltk_data_directory>") ``` 请将`<path_to_nltk_data_directory>`替换为你的NLTK数据目录的路径。 请注意,以上方法中的一种或多种可能会解决"[nltk_data] Error loading punkt: <urlopen error [Errno 11004] [nltk_data] getaddrinfo failed>"错误。你可以根据你的具体情况选择适合你的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值