为什么我使用 Stanford CoreNLP 时会出现 UnsupportedOperationException
Why do I get UnsupportedOperationException with Stanford CoreNLP
我想从 Stanford CoreNLP
中的 Tree
中找到每个短语(成分)的中心词,但是当我尝试 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:
我得到 13 作为 parseTree.subTreeList()
的大小,但对于所有这些,我在 constituentTree.parent()
方法上得到 UnsupportedOperationException
。谁能帮我获得树中 "all" 个成分的语义头的正确方法是什么?
我不确定它是否真的适用于所有人,但对我来说很有帮助:
使用包含整个句子的主 Tree
作为所有成分的第二个输入;即:
String head = constituentTree.headTerminal(headFinder, parseTree);
我想从 Stanford CoreNLP
中的 Tree
中找到每个短语(成分)的中心词,但是当我尝试 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:
我得到 13 作为 parseTree.subTreeList()
的大小,但对于所有这些,我在 constituentTree.parent()
方法上得到 UnsupportedOperationException
。谁能帮我获得树中 "all" 个成分的语义头的正确方法是什么?
我不确定它是否真的适用于所有人,但对我来说很有帮助:
使用包含整个句子的主 Tree
作为所有成分的第二个输入;即:
String head = constituentTree.headTerminal(headFinder, parseTree);