Python 3.5:NLTK下载默认URL不会更改

时间:2016-10-04 17:17:57

标签: python nltk

我已经更新了downloader.py中的DEFAULT_URL,我仍然收到以下错误消息。我最初只尝试了nltk.downloader()并更新了文件浏览器,但是当我尝试下载时,它仍然恢复到github网站。

DEFAULT_URL = 'http://nltk.org/nltk_data/'

import nltk
nltk.set_proxy('proxyaddress',user=None)
dl = nltk.downloader.Downloader("http://nltk.org/nltk_data/")
dl.download('all')

[nltk_data] Downloading collection 'all'
[nltk_data]    |
[nltk_data]    | Downloading package abc to C:\nltk_data...
[nltk_data]    | Error downloading 'abc' from
[nltk_data]    |     <https://raw.githubusercontent.com/nltk/nltk_data
[nltk_data]    |     /gh-pages/packages/corpora/abc.zip>:   <urlopen
[nltk_data]    |     error [Errno 11004] getaddrinfo failed>

为什么这仍然是默认为raw.githubusercontent.com/nltk/nltk_data?

1 个答案:

答案 0 :(得分:1)

问题来自您的代理。我无法说出您的代理配置有什么问题,但使用自定义下载网址初始化下载程序可以按预期工作(无需修改nltk/downloader.py中的nltk源代码):

dl = nltk.downloader.Downloader("http://example.com/my_corpus_data/index.xml")

请注意,自定义网址必须以nltk所需的格式解析为描述可下载资源的XML文档;您问题中的代码指向http://nltk.org/nltk_data处的人类可读列表,这只会导致错误。 (据推测,您的真实代码使用不同的URL,并围绕代理设置使用不同的代码。)

无论如何,问题必须在您的代理中,或者您使用它的方式。 nltk的set_proxy函数只调用urllib.request中的几个函数来声明代理。它永远不会出现在nltk的downloader模块附近,因此它无法影响下载程序的默认值。