#python #nltk
#python #nltk
Вопрос:
Я обновил DEFAULT_URL в downloader.py и я все еще получаю следующую ошибку. Изначально я пробовал только 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. Переопределять не нужно
DEFAULT_URL
. Он игнорируется, когда вы инициализируете загрузчик своим собственным URL-адресом, как вы это делаете. В любом случае я не могу воспроизвести вашу проблему: для меня это работает так, как ожидалось. Может ли ваш прокси-сервер вызывать проблему?2. @alexis это был мой прокси. Я попробовал еще раз, когда вышел из своего офиса, и все сработало нормально. Я использовал тот же прокси-сервер во многих других ситуациях, поэтому мне интересно, работает ли функция «set_proxy» не совсем правильно.
3.
set_proxy
просто вызываетurllib.request.build_opener
иinstall_opener
, которые изменяют обработку URL. Проблема, должно быть, связана с вашим прокси.4. Я использовал «pip install —proxy= example.com:83 packagename» бесчисленное количество раз. Почему это будет работать, но не для nltk?
5. Понятия не имею. Я могу только догадываться, что это как-то связано с кэшированием прокси. Или, может быть, это не прокси, а логическая ошибка в части вашего кода, которая не попала в фрагмент вашего вопроса (если прокси установлен условно, есть место для ошибок).
Ответ №1:
Проблема возникает из-за вашего прокси. Я не могу сказать, что не так с вашей конфигурацией прокси, но инициализация загрузчика с помощью пользовательского URL-адреса загрузки работает так, как задумано (нет необходимости изменять исходный код nltk в nltk/downloader.py
):
dl = nltk.downloader.Downloader("http://example.com/my_corpus_data/index.xml")
Обратите внимание, что пользовательский URL-адрес должен разрешаться в XML-документе, описывающем загружаемые ресурсы, в формате, ожидаемом nltk
; код в вашем вопросе указывает на удобочитаемый список at http://nltk.org/nltk_data
, что просто приведет к ошибке. (Предположительно, ваш реальный код использует другой URL-адрес и другой код для настроек прокси-сервера.)
В любом случае проблема должна быть в вашем прокси или в том, как вы его используете. Функция nltk set_proxy
просто вызывает пару функций из urllib.request
, чтобы объявить прокси. Он никогда не приближается downloader
к модулю nltk, поэтому он никак не может повлиять на настройки загрузчика по умолчанию.
Комментарии:
1. Я согласен, что это мой прокси, поскольку, как только я покинул эту среду, он сработал. Однако меня смущает, как другие утилиты, такие как R, CPAN client, pip и некоторые другие, работают с использованием одного и того же прокси addr:port.