2016-04-19 4 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、サブフォルダも同様に配置します。

Azure MLのpythonにはnltkライブラリが付属していません。このプラットフォームでnltkを使用するには、他にもいくつかの方法があります。助けてください!! ありがとうございました!

+0

試してみてください: 'nltk.download( 'all')' – alvas

+0

[リソースu'tokenizers/punkt/english.pickle 'が見つかりません](http://stackoverflow.com/questions/26570944/resource-utokenizers) -punkt-english-pickle-not-found) – alvas

+0

@alvas - 私はすでに上記のリンクで言及したすべてを試しましたが、動作しません。 Azure HDInsightでこれを解決するための具体的な方法を教えてください。 –

答えて

0

エラー情報によると、@alvasは次の2つの理由で問題が発生したと考えています。

  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ディレクトリとサブディレクトリ 'tokenizers'が存在していた。 NLTKはコンソール内で動作する。紺碧のクラスタ上のジュピターのノートブックです。これはnltkが動作しない場所です。 注:私はこれに言いたいのですが、私はユーザー名「admin」と関連するパスワードを使ってジュピターノートにログインします。 上記の手順などでクラスタにパッケージをダウンロードするには、別のユーザ名を使用してシェルにログインします。 これは問題でしょうか? –

+0

@ prog-lifeディレクトリ 'nltk_data'をもう片方に'sudo'や' su'を使う権限があれば '/ usr/share'や'/usr/local/share'のようなパスが必要です。 –

+0

@ prog-lifeアップデートはありますか? –

関連する問題