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'
> **********************************************************************
同じ問題がありました。 pythonシェルに移動して、次を入力します。
>>> import nltk
>>> nltk.download()
次に、インストールウィンドウが表示されます。 「モデル」タブに移動し、「識別子」列の下から「パンク」を選択します。次に、[ダウンロード]をクリックすると、必要なファイルがインストールされます。その後、動作するはずです!
import nltk
nltk.download('punkt')
from nltk import Word_tokenize,sent_tokenize
トークナイザーを使用します:)
これはちょうど私のために今働いたものです:
# 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ノートブック
Bashコマンドラインから、次を実行します。
$ python -c "import nltk; nltk.download('punkt')"
シンプルnltk.download()
はこの問題を解決しません。私は以下を試してみましたが、うまくいきました:
nltk
フォルダーにtokenizers
フォルダーを作成し、punkt
フォルダーをtokenizers
フォルダーにコピーします。
これでうまくいきます!フォルダー構造は、図に示すとおりである必要があります! 1
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
問題に直面したら教えてください
nltkでposタギングを行おうとしていたときにこの問題に出くわしました。正しい方法は、「taggers」という名前のコーパスディレクトリとともに新しいディレクトリを作成し、ディレクトリタガーにmax_pos_taggerをコピーすることです。
それがあなたにも役立つことを願っています。幸運を祈ります!!!。
nltk.download()
はこの問題を解決しません。私は以下を試してみましたが、うまくいきました:
'...AppData\Roaming\nltk_data\tokenizers'
フォルダーで、ダウンロードしたpunkt.Zip
フォルダーを同じ場所に抽出します。
Punkt tokenizersデータは5 MBを超えると非常に大きくなります。これは、私のように、リソースが限られているラムダなどの環境でnltkを実行している場合、大きな問題になる可能性があります。
1つまたはおそらく少数の言語トークナイザーのみが必要な場合は、それらの言語.pickle
ファイルのみを含めることで、データのサイズを大幅に削減できます。
英語のみをサポートする必要がある場合は、nltkデータサイズを407 KB(python 3バージョンの場合)に減らすことができます。
nltk_data/tokenizers/punkt
、pythonを使用する場合は、新しいフォルダー構造がPY3
のようになるように別のフォルダーnltk_data/tokenizers/punkt/PY3
を追加します。私の場合、これらのフォルダーをプロジェクトのルートに作成しました。.pickle
ファイルを、作成したpunkt
フォルダーに移動します。 注:Python 3ユーザーはPY3
フォルダーのピクルスを使用する必要があります。言語ファイルをロードすると、次のようになります: example -folder-stucturenltk_data
フォルダーを検索パスに追加するだけです。環境変数NLTK_DATA='path/to/your/nltk_data'
を使用してデータを追加できます。実行時にpythonに実行時にカスタムパスを追加することもできます。from nltk import data
data.path += ['/path/to/your/nltk_data']
注:実行時にデータをロードしたり、コードにデータをバンドルしたりする必要がない場合は、 builtでnltk_data
フォルダーを作成するのが最善です。 -nltkが探す場所 。
すべてのNLTKライブラリがあるかどうかを確認します。