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
Ответы
Ответ 1
Update
Оригинальный ответ был написан для Stanford POS Tagger Version 3.6.0, Date 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 the airspeed of an unladen swallow ?"))
print(text)
Оригинальный ответ
У меня была такая же проблема (но с использованием OS X и PyCharm), наконец, она работала. Вот что я собрал из Документация StanfordPOSTagger и работа над 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 the airspeed of an unladen swallow ?"))
print(text)
Надеюсь, что это поможет.