stanford.py NotImplementedError

时间:2014-07-02 08:50:30

标签: 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',
                    '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

2 个答案:

答案 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())