问题 在NLTK Python中使用Stanford POS Tagger时出错


我试图在NLTK中使用Stanford POS Tagger,但我无法运行此处给出的示例代码 http://www.nltk.org/api/nltk.tag.html#module-nltk.tag.stanford

import nltk
from nltk.tag.stanford import POSTagger
st = POSTagger(r'english-bidirectional-distim.tagger',r'D:/stanford-postagger/stanford-postagger.jar')
st.tag('What is the airspeed of an unladen swallow?'.split())

我已经添加了环境变量

CLASSPATH = D:/stanford-postagger/stanford-postagger.jar
STANFORD_MODELS =  D:/stanford-postagger/models/

这是我不断得到的错误

回溯(最近的呼叫最后):

File "D:\pos_stanford.py", line 4, in <module>
    st = POSTagger(r'english-bidirectional-distim.tagger',
         r'D:/stanford-postagger/stanford-postagger.jar')  
... LookupError: NLTK was unable to find the english-bidirectional-distim.tagger file! Use software specific configuration paramaters or set the STANFORD_MODELS environment variable.

一些论坛建议

File "C:\Python27\lib\site-packages\nltk\tag\stanford.py", line 45, in __init__
env_vars=('STANFORD_MODELS'), verbose=verbose)

应该改变,以便有一个逗号

env_vars=('STANFORD_MODELS',), verbose=verbose)

但它也没有解决问题。 请帮我解决这个问题。

其他信息: 我在用 Windows 7 64位 Python 2.7 32位 NLTK 2.0


4828
2018-04-08 07:27


起源

我注意到你在环境路径中使用正斜杠(/) - 在Windows上它应该是反斜杠()。另外,尝试从与模型相同的目录运行它以避免路径问题。 - jkoreska
我也试过使用反斜杠。没用。 - B-Abbasi
还尝试更改目录,但没有用 - B-Abbasi
尝试拆开模型罐,确保你有 english-bidirectional-distim.tagger 文件在路径中 STANFORD_MODELS\edu\stanford\nlp\models\pos-tagger\english-bidirectional\  哪里 STANFORD_MODELS 已定义或是您的脚本的CWD - jkoreska
@jkoreska:不正确,Windows至少从2003年开始就允许使用正斜杠。因为你没有进入转义和原始字符串(r''),所以在Python中首选正斜杠 - smci


答案:


注意:只是将其作为答案发布,以防其他人在将来遇到此问题

我终于发现了我做错了什么......结果证明是一个大错。

Tagger文件名不是'english-bidirectional-distim.tagger' 但是'english-bidirectional-distsim.tagger'。


11
2018-04-20 11:55