web-dev-qa-db-ja.com

english.pickleをnltk.data.loadでロードできませんでした

punktトークナイザーをロードしようとしています...

import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')

... LookupErrorが発生しました:

> LookupError: 
>     *********************************************************************   
> Resource 'tokenizers/punkt/english.pickle' not found.  Please use the NLTK Downloader to obtain the resource: nltk.download().   Searched in:
>         - 'C:\\Users\\Martinos/nltk_data'
>         - 'C:\\nltk_data'
>         - 'D:\\nltk_data'
>         - 'E:\\nltk_data'
>         - 'E:\\Python26\\nltk_data'
>         - 'E:\\Python26\\lib\\nltk_data'
>         - 'C:\\Users\\Martinos\\AppData\\Roaming\\nltk_data'
>     **********************************************************************
128
Martin

同じ問題がありました。 pythonシェルに移動して、次を入力します。

>>> import nltk
>>> nltk.download()

次に、インストールウィンドウが表示されます。 「モデル」タブに移動し、「識別子」列の下から「パンク」を選択します。次に、[ダウンロード]をクリックすると、必要なファイルがインストールされます。その後、動作するはずです!

245
richardr
import nltk
nltk.download('punkt')

from nltk import Word_tokenize,sent_tokenize

トークナイザーを使用します:)

86
Naren Yellavula

これはちょうど私のために今働いたものです:

# Do this in a separate python interpreter session, since you only have to do it once
import nltk
nltk.download('punkt')

# Do this in your ipython notebook or analysis script
from nltk.tokenize import Word_tokenize

sentences = [
    "Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very Nice fellow.",
    "Professor Plum has a green plant in his study.",
    "Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]

sentences_tokenized = []
for s in sentences:
    sentences_tokenized.append(Word_tokenize(s))

particles_tokenizedは、トークンのリストのリストです。

[['Mr.', 'Green', 'killed', 'Colonel', 'Mustard', 'in', 'the', 'study', 'with', 'the', 'candlestick', '.', 'Mr.', 'Green', 'is', 'not', 'a', 'very', 'Nice', 'fellow', '.'],
['Professor', 'Plum', 'has', 'a', 'green', 'plant', 'in', 'his', 'study', '.'],
['Miss', 'Scarlett', 'watered', 'Professor', 'Plum', "'s", 'green', 'plant', 'while', 'he', 'was', 'away', 'from', 'his', 'office', 'last', 'week', '.']]

文章は例から取られました 「ソーシャルWebのマイニング、第2版」という本に付属するipythonノートブック

26
jjinking

Bashコマンドラインから、次を実行します。

$ python -c "import nltk; nltk.download('punkt')"
12
cgl

これは私のために働く:

>>> import nltk
>>> nltk.download()

Windowsでは、nltkダウンローダーも入手できます

NLTK Downloader

9
Roshan Bagdiya

シンプルnltk.download()はこの問題を解決しません。私は以下を試してみましたが、うまくいきました:

nltkフォルダーにtokenizersフォルダーを作成し、punktフォルダーをtokenizersフォルダーにコピーします。

これでうまくいきます!フォルダー構造は、図に示すとおりである必要があります! 1

7
Deepthi Karnam

nltkには事前トレーニングされたトークナイザーモデルがあります。モデルは内部で事前定義されたWebソースからダウンロードされ、インストールされたnltkパッケージのパスに格納され、次の可能な関数呼び出しを実行します。

例えば。 1トークナイザー= nltk.data.load( 'nltk:tokenizers/punkt/english.pickle')

例えば。 2 nltk.download( 'punkt')

コードで上記の文を呼び出す場合、ファイアウォールで保護されていないインターネット接続があることを確認してください。

上記の問題をより深く理解して解決するための、より良い代替ネットの方法を共有したいと思います。

次の手順に従って、nltkを使用した英語のWordトークン化をお楽しみください。

手順1:最初に、Webパスに従って「english.pickle」モデルをダウンロードします。

リンク " http://www.nltk.org/nltk_data/ "に移動し、オプション "107. Punkt Tokenizer Models"で "download"をクリックします。

ステップ2:ダウンロードした「punkt.Zip」ファイルを抽出し、そこから「english.pickle」ファイルを見つけてCドライブに配置します。

手順3:次のコードをコピーして貼り付けて実行します。

from nltk.data import load
from nltk.tokenize.treebank import TreebankWordTokenizer

sentences = [
    "Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very Nice fellow.",
    "Professor Plum has a green plant in his study.",
    "Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]

tokenizer = load('file:C:/english.pickle')
treebank_Word_tokenize = TreebankWordTokenizer().tokenize

wordToken = []
for sent in sentences:
    subSentToken = []
    for subSent in tokenizer.tokenize(sent):
        subSentToken.extend([token for token in treebank_Word_tokenize(subSent)])

    wordToken.append(subSentToken)

for token in wordToken:
    print token

問題に直面したら教えてください

5
Jignesh Vasoya

Jenkinsでは、Buildタブの下のVirtualenv Builderに次のようなコードを追加することでこれを修正できます。

python -m nltk.downloader punkt

enter image description here

4
Abhijeet

nltkでposタギングを行おうとしていたときにこの問題に出くわしました。正しい方法は、「taggers」という名前のコーパスディレクトリとともに新しいディレクトリを作成し、ディレクトリタガーにmax_pos_taggerをコピーすることです。
それがあなたにも役立つことを願っています。幸運を祈ります!!!。

2
Ashish Singh

nltk.download()はこの問題を解決しません。私は以下を試してみましたが、うまくいきました:

'...AppData\Roaming\nltk_data\tokenizers'フォルダーで、ダウンロードしたpunkt.Zipフォルダーを同じ場所に抽出します。

0

Punkt tokenizersデータは5 MBを超えると非常に大きくなります。これは、私のように、リソースが限られているラムダなどの環境でnltkを実行している場合、大きな問題になる可能性があります。

1つまたはおそらく少数の言語トークナイザーのみが必要な場合は、それらの言語.pickleファイルのみを含めることで、データのサイズを大幅に削減できます。

英語のみをサポートする必要がある場合は、nltkデータサイズを407 KB(python 3バージョンの場合)に減らすことができます。

手順

  1. Nltk punktデータをダウンロードします: https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.Zip
  2. 環境内のどこかにフォルダーを作成します:nltk_data/tokenizers/punkt、pythonを使用する場合は、新しいフォルダー構造がPY3のようになるように別のフォルダーnltk_data/tokenizers/punkt/PY3を追加します。私の場合、これらのフォルダーをプロジェクトのルートに作成しました。
  3. Zipを解凍し、サポートする言語の.pickleファイルを、作成したpunktフォルダーに移動します。 注:Python 3ユーザーはPY3フォルダーのピクルスを使用する必要があります。言語ファイルをロードすると、次のようになります: example -folder-stucture
  4. ここで、データが 事前定義された検索パス の1つにない場合、nltk_dataフォルダーを検索パスに追加するだけです。環境変数NLTK_DATA='path/to/your/nltk_data'を使用してデータを追加できます。実行時にpythonに実行時にカスタムパスを追加することもできます。
from nltk import data
data.path += ['/path/to/your/nltk_data']

注:実行時にデータをロードしたり、コードにデータをバンドルしたりする必要がない場合は、 builtでnltk_dataフォルダーを作成するのが最善です。 -nltkが探す場所

0
Trent Holliday

Spyderで、アクティブなシェルに移動し、以下の2つのコマンドを使用してnltkをダウンロードします。 import nltk nltk.download()次に、以下のようにNLTKダウンローダーウィンドウが開き、このウィンドウの「モデル」タブに移動し、「punkt」をクリックして「punkt」をダウンロードします。

Window

0
Krish

すべてのNLTKライブラリがあるかどうかを確認します。

0
Torrtuga