Python stanford.py未实现错误
当我在代码下面运行时,我得到一个Python stanford.py未实现错误,python,stanford-nlp,Python,Stanford Nlp,当我在代码下面运行时,我得到一个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',
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
这不是我问题的答案,而是一个解决方法:使用
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())
查看源代码:
\u cmd
方法未在StanfordTagger
-\u cmd
属性:返回要执行的命令的属性
执行
因此,当在此处调用时,会导致您的问题:
# 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
@property
def _cmd(self):
return ['edu.stanford.nlp.tagger.maxent.MaxentTagger', \
'-model', self._stanford_model, '-textFile', \
self._input_file_path, '-tokenize', 'false']