2017-02-22 11 views
2

AWSラムダでNLTKコーパス(特にストップワード)を使用するときに問題が発生します。 NLTK_download( 'ストップワード')を使ってコーパスをダウンロードし、nltk_data/corpora/stopwordsにラムダモジュールをアップロードするために使用したzipファイルにそれらを含めたことを私は知っています。PythonでAWSラムダ関数を使用するNLTKコーパスを使用する

次のようにコードで使用される:

from nltk.corpus import stopwords 
stopwords = stopwords.words('english') 
nltk.data.path.append("/nltk_data") 

これは私も

を含めることによって、データを直接ロードすることを試みた

module initialization error: 
********************************************************************** 
    Resource u'corpora/stopwords' not found. Please use the NLTK 
    Downloader to obtain the resource: >>> nltk.download() 
    Searched in: 
    - '/home/sbx_user1062/nltk_data' 
    - '/usr/share/nltk_data' 
    - '/usr/local/share/nltk_data' 
    - '/usr/lib/nltk_data' 
    - '/usr/local/lib/nltk_data' 
    - '/nltk_data' 
********************************************************************** 

ラムダログ出力から次のエラーが返さ

nltk.data.load("/nltk_data/corpora/stopwords/english") 

これは、以下の異なるエラーを生じます

ラムダジップからデータをロードする際に問題があり、外部に格納する必要がある可能性があります.S3では、これはちょっと変わったようです。

誰もが私が間違って行くことができどこ知っていますどのような形式

任意のアイデア? AWSラムダあなたに

from nltk.corpus import stopwords 
nltk.data.path.append("/nltk_data") 

stopwords = stopwords.words('english') 
+0

試し 'ストップワードの=のnltk.corpus.stopwords.words(「英語」)'とコードのブロックで、それは、corpora.stopwordsのための 'nltk_data'フォルダに見えますように見えるが介在/不足している。それはちょうどディレクトリアドレスの問題かもしれません。あなたのシステムやファイルを見ることができないので、これがうまくいくかどうかは100%ではありませんが、そうでなければOKです。 – sconfluentus

+0

フルパスを使用してください。 '/ home/sbx_user1062/nltk_data'と試してみてください:http://stackoverflow.com/a/22987374/610569 – alvas

+0

何も動作しない場合は、http://stackoverflow.com/questions/36382937/nltk-jp/から「magically_find_nltk_data() doesnt-add-nltk-data-to-search-path/36383314#36383314 – alvas

答えて

0

、あなたがコーパスにアクセスしようとする前NLTKを伝える必要があります(ルートではなく、自分のホームディレクトリの下に基づきます)ラムダとNLTK Pythonパッケージを含めるとdata.pyを変更する必要があります

path += [ 
    str('/usr/share/nltk_data'), 
    str('/usr/local/share/nltk_data'), 
    str('/usr/lib/nltk_data'), 
    str('/usr/local/lib/nltk_data') 
] 

path += [ 
    str('/var/task/nltk_data') 
    #str('/usr/share/nltk_data'), 
    #str('/usr/local/share/nltk_data'), 
    #str('/usr/lib/nltk_data'), 
    #str('/usr/local/lib/nltk_data') 
] 
0123に

nltk_dataディレクトリ全体を含めることはできません。すべてのzipファイルを削除してください。停止語だけが必要な場合は、nltk_data - > corpora - > stopwordsを保存して残りをダンプしてください。トークナイザが必要な場合は、nltk_data - > tokenizers - > punktを保存してください。 nltk_dataフォルダの使用アナコンダJupyterノートブックをダウンロードし、

nltk.download()

または

https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/stopwords.zip

または

python -m nltk.downloader all 
+0

私は思いますOPの問題はそれよりも深いです。サーバレスシステムでは、HDD上にある最小限の外部リソース(データ/モデル)ですべてをコードで実行できると想定しています。 – alvas

+0

そうかもしれません。しかし、リソースがまだ経路上になくても問題はありません... – alexis

2

:あなたのストップワードコーパスは/nltk_data下にある場合

+0

変更が必要なdata.pyはどこですか? –

1

を実行するには、私は前に同じ問題を抱えていたが、私は使用してそれを解きます環境変数。

  1. "nltk.download()"を実行して、AWSラムダアプリケーションのルートフォルダにコピーします。
  2. (AWSコンソールの)ラムダ機能のユーザーインターフェイスでは、 "NLTK_DATA" = "./nltk_data"を追加します(このフォルダは "nltk_data"と呼ばれます)。画像をご覧ください。 Configure NLTK DATA for AWS Lambda
関連する問題