2016-04-19 2 views
0

Я импортировал пакет nltk. Мне нужно использовать nltk.sent_tokenize и nltk.word_tokenize и когда я делаю, я получаю следующее сообщение об ошибке, независимо от того, что:Azure HDInsight - Ресурс u'tokenizers/punkt/english.pickle 'не найден

An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob. 
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, most recent failure: Lost task 0.3 in stage 1.0 (TID 7, 10.0.0.4): org.apache.spark.api.python.PythonException: Traceback (most recent call last): 
    File "/usr/hdp/current/spark-client/python/lib/pyspark.zip/pyspark/worker.py", line 111, in main 
    process() 
    File "/usr/hdp/current/spark-client/python/lib/pyspark.zip/pyspark/worker.py", line 106, in process 
    serializer.dump_stream(func(split_index, iterator), outfile) 
    File "/usr/hdp/current/spark-client/python/lib/pyspark.zip/pyspark/serializers.py", line 263, in dump_stream 
    vs = list(itertools.islice(iterator, batch)) 
    File "<stdin>", line 2, in <lambda> 
    File "/usr/bin/anaconda/lib/python2.7/site-packages/nltk/tokenize/__init__.py", line 85, in sent_tokenize 
    tokenizer = load('tokenizers/punkt/{0}.pickle'.format(language)) 
    File "/usr/bin/anaconda/lib/python2.7/site-packages/nltk/data.py", line 781, in load 
    opened_resource = _open(resource_url) 
    File "/usr/bin/anaconda/lib/python2.7/site-packages/nltk/data.py", line 895, in _open 
    return find(path_, path + ['']).open() 
    File "/usr/bin/anaconda/lib/python2.7/site-packages/nltk/data.py", line 624, in find 
    raise LookupError(resource_not_found) 
LookupError: 
********************************************************************** 
    Resource u'tokenizers/punkt/english.pickle' not found. Please 
    use the NLTK Downloader to obtain the resource: >>> 
    nltk.download() 
    Searched in: 
    - '/home/nltk_data' 
    - '/usr/share/nltk_data' 
    - '/usr/local/share/nltk_data' 
    - '/usr/lib/nltk_data' 
    - '/usr/local/lib/nltk_data' 
    - u'' 
********************************************************************** 

Я упоминается много сообщений, обсуждающих эту тему и попытался nltk.download (all '), -d, также создавая подпапки.

Python Azure ML не поставляется с библиотекой nltk. Должен быть какой-то другой способ использования nltk на этой платформе. Пожалуйста помоги!! Спасибо!

+0

Попробуйте: 'nltk.download ('all')' – alvas

+0

Возможный дубликат [Resource u'tokenizers/punkt/english.pickle 'not found] (http://stackoverflow.com/questions/26570944/resource-utokenizers -punkt-english-pickle-not-found) – alvas

+0

@alvas - я уже пробовал все, что упоминалось в приведенной выше ссылке, но они не будут работать. Можете ли вы предложить мне другую альтернативу, которая подходит для решения этой проблемы на Azure HDInsight ..? –

ответ

0

Согласно информации об ошибке, я думаю, что проблема была вызвана двумя причинами ниже, как сказал @alvas.

  1. Ресурс не существует.
  2. Путь к ресурсу не добавляется список путей nltk.data.path.

Я попытался следить за комментариями, отправленными @alvas, чтобы выполнить следующие шаги.

# 1. Installation for package `nltk` using `pip` 

~ $ pip install nltk 

# 2. Download resource in Python REPL. 

~ $ python 
>>> import nltk 
>>> nltk.download() 
NLTK Downloader 
--------------------------------------------------------------------------- 
    d) Download l) List u) Update c) Config h) Help q) Quit 
--------------------------------------------------------------------------- 
Downloader> d 

Download which package (l=list; x=cancel)? 
    Identifier> punkt 
    Downloading package punkt to /home/<username>/nltk_data... 
     Unzipping tokenizers/punkt.zip. 

--------------------------------------------------------------------------- 
    d) Download l) List u) Update c) Config h) Help q) Quit 
--------------------------------------------------------------------------- 
Downloader> q 
True 
>>> 

# 3. Check the resource path listed in the path list `nltk.data.path` 
>>> nltk.data.path 
['/home/<username>/nltk_data', '/usr/share/nltk_data', '/usr/local/share/nltk_data', '/usr/lib/nltk_data', '/usr/local/lib/nltk_data'] 

~ $ pwd && ls nltk_data 
/home/<username> 
tokenizers 

# 4. If the dir `nltk_data` not in the path list `nltk.data.path`, 
# you can try to move the dir to the specified path listed in the path list, 
~ $ mv nltk_data /usr/local/share/ 

# or append the path of the dir `nltk_data` into the list variable `nltk.data.path`. 
>>> nltk.data.path.append('/home/<username>/nltk_data/') 

Надеюсь, это поможет.

+0

Я тоже это сделал: (шаг 3 показывает, что у вас там есть. Таким образом, был представлен каталог nltk и подклассы «токенизаторы». NLTK работает внутри консоли. Но, я обращаюсь к этим модулям на ноутбук jupyter над лазурным кластером, и это место, где nltk не работает. Примечание: Я хотел вам рассказать. Я зашел в блокнот jupyter, используя имя пользователя: «admin» и соответствующий пароль. Принимая во внимание, , чтобы загрузить какие-либо пакеты в кластер (например, описанные выше шаги), я могу войти в оболочку с использованием другого имени пользователя. Будет ли это проблемой ..? –

+0

@ prog-life Вы можете попробовать переместить directory 'nltk_data' в другую такие как '/ usr/share' или'/usr/local/share', если у вас есть разрешение на использование 'sudo' или' su'. –

+0

@ prog-life Есть обновление? –

Смежные вопросы