我想从Tree
中的Stanford CoreNLP
找到每个词组(成分)的首字母,但是当我为tree.Parent()
中的任何一个尝试constituents
时,我得到UnsupportedOperationException
。我做错了什么?
这是我的代码:
List<Tree> allConstituents = new ArrayList<>();
private Tree parseTree;
List<CoreMap> sentences = LoadAndParse(language, filetype, modelPath, text);
for (CoreMap sentence : sentences) {
Tree parse = sentence.get(TreeAnnotation.class);
allConstituents = parseTree.subTreeList();
for (int i = 0; i < allConstituents.size(); i++) {
Tree constituentTree = allConstituents.get(i);
HeadFinder headFinder = new SemanticHeadFinder();
String head = constituentTree.headTerminal(headFinder, constituentTree.parent());
}
}
这是我的一个例子:
Your tasks are challenging:
我得到parseTree.subTreeList()
的大小为13,但对于所有这些,我在UnsupportedOperationException
方法上得到constituentTree.parent()
。任何人都可以帮助我获得树中“所有”成分的语义头的正确方法吗?
答案 0 :(得分:0)
我不确定这是否真的是一个适用于所有人的答案,但就我而言,它很有帮助:
使用包含整个句子的主Tree
作为所有成员的第二个输入;那就是:
String head = constituentTree.headTerminal(headFinder, parseTree);