我正在开发一个项目,要求我使用nltk和python标记标记.所以我想用这个.但想出了一些问题.我经历了很多其他已经问过的问题和其他论坛,但我仍然无法解决这个问题.问题是当我尝试执行以下操作时:
from nltk.tag import StanfordPOSTagger
st = StanfordPOSTagger('english-bidirectional-distsim.tagger')
我得到以下内容:
Traceback (most recent call last): `File "", line 1, in 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
原始答案是为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's 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's the airspeed of an unladen swallow ?")) print(text)
希望这可以帮助.