web-dev-qa-db-ja.com

NLTKはstanford-postagger.jarを見つけることができませんでした! CLASSPATH環境変数を設定する

私はnltkとpythonを使用してトークンにタグを付ける必要があるプロジェクトに取り組んでいます。だから私はこれを使いたかった。しかし、いくつかの問題が発生しました。私は他の多くの質問やフォーラムに参加しましたが、まだこの問題に精通することができませんでした。問題は、以下を実行しようとしたときです。


from nltk.tag import StanfordPOSTagger st = StanfordPOSTagger('english-bidirectional-distsim.tagger')


私は以下を得ます:


_    Traceback (most recent call last):

    `File "<pyshell#13>", line 1, in <module>
        st = StanfordPOSTagger('english-bidirectional-distsim.tagger')`

    `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.Egg\nltk\tag\stanford.py", line 131, in __init__
        super(StanfordPOSTagger, self).__init__(*args, **kwargs)`

    `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.Egg\nltk\tag\stanford.py", line 53, in __init__
        verbose=verbose)`

     `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.Egg\nltk\internals.py", line 652, in find_jar
        searchpath, url, verbose, is_regex))`

     `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.Egg\nltk\internals.py", line 647, in find_jar_iter
        raise LookupError('\n\n%s\n%s\n%s' % (div, msg, div))`

    LookupError: 

    ===========================================================================
      NLTK was unable to find stanford-postagger.jar! Set the CLASSPATH
      environment variable.

    ===========================================================================
_

私はすでにCLASSPATHを設定しました-_C:\Users\MY3\Desktop\nltk\stanford\stanford-postagger.jar_私もそれを_C:\Users\MY3\Desktop\nltk\stanford_として試しました。

STANFORD_MODELS-_C:\Users\MY3\Desktop\nltk\stanford\models\_

私もこれをやってみました..無駄にFile "C:\Python27\lib\site-packages\nltk\tag\stanford.py", line 45, in __init__ env_vars=('STANFORD_MODELS',), verbose=verbose)ですが、問題も解決しません。この問題の解決を手伝ってください。

私はWindows 8を使用していますpython 3.5およびnltk 3.1

11

更新

元の回答はStanford POS Taggerバージョン3.6.0、日付2015-12-09用に書かれました

新しいバージョン(3.7.0、2016年10月31日リリース)があります。新しいバージョンのコードは次のとおりです。

from nltk.tag import StanfordPOSTagger
from nltk import Word_tokenize

# Add the jar and model via their path (instead of setting environment variables):
jar = 'your_path/stanford-postagger-full-2016-10-31/stanford-postagger.jar'
model = 'your_path/stanford-postagger-full-2016-10-31/models/english-left3words-distsim.tagger'

pos_tagger = StanfordPOSTagger(model, jar, encoding='utf8')

text = pos_tagger.tag(Word_tokenize("What's the airspeed of an unladen swallow ?"))
print(text)

元の答え

私は同じ問題を抱えていましたが(OS XとPyCharmを使用して)、ようやく動作しました。 StanfordPOSTagger Documentation および 問題に関するalvas 'の作業 (大感謝!)から私がまとめたものを以下に示します。

from nltk.internals import find_jars_within_path
from nltk.tag import StanfordPOSTagger
from nltk import Word_tokenize

# Alternatively to setting the CLASSPATH add the jar and model via their path:
jar = '/Users/nischi/PycharmProjects/stanford-postagger-full-2015-12-09/stanford-postagger.jar'
model = '/Users/nischi/PycharmProjects/stanford-postagger-full-2015-12-09/models/english-left3words-distsim.tagger'

pos_tagger = StanfordPOSTagger(model, jar)

# Add other jars from Stanford directory
stanford_dir = pos_tagger._stanford_jar.rpartition('/')[0]
stanford_jars = find_jars_within_path(stanford_dir)
pos_tagger._stanford_jar = ':'.join(stanford_jars)

text = pos_tagger.tag(Word_tokenize("What's the airspeed of an unladen swallow ?"))
print(text)

お役に立てれば。

22
nischi