如何通过Java命令行获取Stanford NLP的Enhanced++依存关系标签?
Stanford NLP 获取Enhanced++依存关系标签的问题与解决
问题说明
对Java不熟悉,尝试通过Stanford NLP解析器获取Enhanced++依存关系标签,执行命令如下:
java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators "tokenize,ssplit,pos,lemma,depparse" -file input.txt
输出结果不符合预期:
- 输入句
The older couple is picnicking with wine中,picnicking与wine的依存关系预期为nmod,实际返回obl:with - 输入句
What do you call it?中,call与it的依存关系预期为dobj,实际返回obj
调整命令获取Enhanced++标签
要得到Enhanced++通用依存关系标签,需在命令中明确指定解析器的模型与输出模式,修改后的命令如下:
java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators "tokenize,ssplit,pos,lemma,depparse" -depparse.model "edu/stanford/nlp/models/parser/nndep/english_enhanced++_UD.gz" -depparse.deprel "enhanced++" -file input.txt
核心参数解释:
-depparse.model:指定使用Enhanced++预训练依存解析模型-depparse.deprel:强制输出Enhanced++格式的依存关系标签
关于annotators的必要性说明
如果仅关注依存解析(depparse):
- 必须保留
tokenize,ssplit,pos:这三个是依存解析的前置依赖——tokenize负责拆分词元,ssplit拆分句子,pos提供词性标注,三者是解析器生成正确依存结构的必要输入 - 可以移除
lemma:词形还原不是依存解析的强制要求,去掉后不影响核心功能
内容的提问来源于stack exchange,提问作者Galit
相关产品推荐
相关产品推荐

