2016-12-29 7 views
1

私は新しい人ですが、私はPythonターミナル内でいくつかのコマンドを実行可能なプレイブックを通じて実行しようとしています。具体的には、私はコーパスをダウンロードしたいと思う。現在Pythonターミナルでコマンドを実行するには

$python 
>import nltk 
>nltk.download 
> ~ d (download) 
> ~ book 
> ~ q (quit) 
>quit() 

、私の脚本ファイルがrequirements.txtを通じてNLTKをインストールしますが、私はそれを手動でダウンロードすることなく、特定のNLTK機能を取得する方法がわからないvirtualenvのを作成します。

私の検索ではこの行を見つけましたが、python -m nltk.downloader allは私のプログラムを満たしていますが、メモリを消費して不必要なものがたくさんダウンロードされています。しかし、その間に、私は実行して、それを試してみました:

- name: Get the nltk corpus 
    shell: "python -m nltk.downloader all" 

が、これはメッセージを誤っ:

TASK [Get the nltk corpus]***************************************************** 
fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "python -m nltk.downloader book", "delta": "0:00:00.016227", "end": "2016-12-29 20:06:09.156953", "failed": true, "rc": 1, "start": "2016-12-29 20:06:09.140726", "stderr": "/usr/bin/python: No module named nltk", "stdout": "", "stdout_lines": [], "warnings": []} 

は、上記のコードの作業のいずれかを作成する方法上の任意の提案はありますか特定のnltk機能を有能な人に手渡すことで私の目標を達成する別の方法は?


UPDATE

ほんの少し明確になるように、私はansible脚本で販売の外でのpythonシェルで正常に動作するコマンドを実行しようとしています。

たとえば、nltk.download("book")という行は、Pythonターミナル内で必要と同じように動作します。しかし、私は手動でターミナルに入ることなく、また、不可能な演劇の中で仕事をすることなく、これを実行する必要があります。

私はこれに似たものを試しましたが、コンパイルしても実際には必要に応じて本コーパスをダウンロードしません。

- name: Get the "book" nltk corpus 
    shell: "/usr/local/venv/bin/python -m nltk.downloader book" 

答えて

2

Documentationsource codeあなたは個々のモジュールをダウンロードすることができますヒント:

個々のパッケージがそのすべきパッケージのパッケージ識別子を与え、単一の引数をダウンロード()関数を呼び出すことでダウンロードすることができますbookはあなたの例では、パッケージは、(私はNLTKに慣れていないよ)である場合

をダウンロードすることが、試してみてください。

をPOSタガーのようなもののためのコーパスと訓練されたモデル:
- name: Get the nltk corpus 
    shell: "python -m nltk.downloader book" 
+0

私は試してみるべき素晴らしい提案ですが、その文を修正する前に、私はそれを動かせるようにする必要があります。不可解なプレイブックのコードはコンパイルされません。 (上記のエラーメッセージを編集して追加しました) –

+0

pipenパッケージをvirtualenvにインストールする場合、 'chdir'(' shell'モジュール用のパラメータがあります)を忘れずに、デフォルトのpythonインタプリタではなくローカルのPythonインタプリタを実行してください。 –

+0

それはうまくいった!私は明示的に '/ path/in/venv/to **/** python ** -m nltk.downloader book'に存在していたpythonのパスを実行しなければならなかった。 ありがとう! –

1

コマンドnltk.download()データをNLTKダウンロードするためです。これを使用するには、すでにnltkコードがインストールされている必要があります。つまり、import nltkを正常に実行できる必要があります。利用可能なnltkモジュールを使用してvirtualenvで実行していますが、エラーメッセージには、/usr/bin/python: No module named nltkが表示されます。それが本当の問題なら、まずそれを並べ替える(そして/またはあなたの質問を修正する)必要があります。

import nltk文が成功するようにPythonを起動できると仮定すると、茶色のコーパスにはnltk.import("brown")などのコーパスをダウンロードすることができます。 (もちろん、これはimport nltkの後に実行する必要があります。)NLTKの本に記載されているすべてのリソースをダウンロードするには、nltk.import("book")を使用してください。

+0

私は正常にnltkをダウンロードし、 'nltk'をうまくインポートできます。それは私が質問で述べた問題ではありませんでした。疑問は、不可能なスクリプトでこれを自動化する方法でした。ソリューションの場合と同様に、安全なコードになります。 –

+0

Pythonセッションで 'nltk.download(" brown ")'を実行しようとしましたか?要は、このようにすれば、対話型のGUIポップアップに応答を与える必要はありません。 – alexis

+0

これはpythonセッションでうまく動作しますが、私の目標は、私が手動でPythonセッションを開いてそこで実行することなくこの文を実行することです。私はPythonセッションを開いて実行し、そのPythonセッションを終了することができます。 –

関連する問題