我正在尝试为与NLTK一起使用的StanfordDependencyParser设置几个选项:
from nltk.parse.stanford import StanfordDependencyParser
os.environ['CLASSPATH'] = "path/to/stanford-parser-3.9.1-models.jar"
sdp = StanfordDependencyParser('path/to/stanford-parser-3.9.1-models.jar', corenlp_options=['-retainTmpSubcategories', '-originalDependencies'])
但是我知道
raise OSError('Java command failed : ' + str(cmd))
OSError: Java command failed : ['C:\\Program Files\\Java\\jdk-11\\bin\\java.exe', '-mx1000m', '-cp', '\\stanford-parser.jar', 'edu.stanford.nlp.parser.lexparser.LexicalizedParser', '-model', 'edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz', '-sentences', 'newline', '-outputFormat', 'conll2007', '-encoding', 'utf8', ['-retainTmpSubcategories', '-originalDependencies'], 'C:\\Users\\...']
(为了使内容更清晰,我删除了一些路径。)
如果我只使用
sdp = StanfordDependencyParser('path/to/stanford-parser-3.9.1-models.jar', corenlp_options=['-retainTmpSubcategories'])
或
sdp = StanfordDependencyParser('path/to/stanford-parser-3.9.1-models.jar', corenlp_options=['-originalDependencies'])
效果很好...
我还查看了the nltk code,它是用于计算命令行的_execute函数
def _execute(self, cmd, input_, verbose=False):
encoding = self._encoding
cmd.extend(['-encoding', encoding])
if self.corenlp_options:
cmd.append(self.corenlp_options)
这是否意味着我只能在corenlp_options参数中放入一个选项?
谢谢您的帮助!
答案 0 :(得分:0)
我一直在寻找解决方案,但似乎没有“简单”的解决方案。 我找到的对我有用的解决方案是直接修改nltk \ parse \文件夹中的stanford.py文件。我替换了
cmd.append(self.corenlp_options)
使用
cmd.extend(self.corenlp_options)
尽管我怀疑这是最好的选择,但也没有提出更多例外情况...