python - 使用 NLTK、Python 在 StanfordDependencyParser 中设置几个 corenlp_options
问题描述
我正在尝试为与 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'])
它运作良好......
我还查看了 nltk 代码,用于计算命令行的 _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 参数中放置 1 个选项?
谢谢您的帮助!!
解决方案
我一直在寻找解决方案,但似乎没有“简单”的解决方案。我找到并且对我有用的解决方案是直接修改 nltk\parse\ 文件夹中的 stanford.py 文件。我换了
cmd.append(self.corenlp_options)
和
cmd.extend(self.corenlp_options)
尽管我怀疑这是最好的做法,但没有再提出异常...
推荐阅读
- java - Java 进程解码存储库 getById
- documentation - 谷歌文档添加只读模式
- django - 将summernote设置添加到项目中
- css - 隐藏 WordPress 上的 3 级子菜单,除非处于活动状态
- mysql - 如何从 Docker 容器中恢复 MySQL 数据
- php - PHP:如果签名者 1 数据电子邮件与 DocuSign 沙盒帐户电子邮件不同,则沙盒嵌入签名不显示:正常吗?
- html - 使用 flatpickr 角度无法正确显示日历
- node.js - MSAL 范围问题(NodeJS 服务器端 Web 应用程序)
- javascript - 滚动后启动完整的动画
- java-ee-7 - 如何在 JSR-352 Java Batch 应用程序中使用 JSL 中的动态值