当我在代码下面运行时,我得到NotImplementedError
。为什么呢?
import nltk
from nltk import *
from nltk.tag import stanford
from nltk.tag.stanford import StanfordTagger
st = StanfordTagger('C:\\Python27\\stanford-postagger\\models\\english-bidirectional-distsim.tagger',
'C:\\Python27\\stanford-postagger\\stanford-postagger.jar')
print st.tag('What is the airspeed of an unladen swallow ?'.split())
错误讯息:
File "C:\Python27\lib\site-packages\nltk\tag\stanford.py", line 51, in _cmd
raise NotImplementedError
NotImplementedError
答案 0 :(得分:1)
查看源代码here:
_cmd
方法未在StanfordTagger
中实施
- _cmd
property:返回将要执行的命令的属性
执行。
@property
def _cmd(self):
raise NotImplementedError
所以当它在这里调用时会导致你的问题:
# Run the tagger and get the output
stanpos_output, _stderr = java(self._cmd,classpath=self._stanford_jar, \
stdout=PIPE, stderr=PIPE)
在POSTagger
中,方法如下:
@property
def _cmd(self):
return ['edu.stanford.nlp.tagger.maxent.MaxentTagger', \
'-model', self._stanford_model, '-textFile', \
self._input_file_path, '-tokenize', 'false']
您可以在StanfordTagger
中修改该方法以匹配POSTTagger
。
答案 1 :(得分:0)
这不是我的问题的答案,而是一种解决方法:使用POSTagger
代替StanfordTagger
import nltk
from nltk import *
from nltk.tag import stanford
#from nltk.tag.stanford import StanfordTagger
from nltk.tag.stanford import POSTagger
st = POSTagger('C:\\Python27\\stanford-postagger\\models\\english-bidirectional-distsim.tagger',
'C:\\Python27\\stanford-postagger\\stanford-postagger.jar')
print st.tag('What is the airspeed of an unladen swallow ?'.split())