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)环境下打开。

猜你喜欢

转载自blog.csdn.net/weixin_43846562/article/details/129663863