Почему я получаю исключение UnsupportedOperationException со Stanford CoreNLP
Я хотел бы найти ключевое слово каждой фразы (составляющей) из 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:
Я получаю 13 как размер parseTree.subTreeList()
но для всех них я получаю UnsupportedOperationException
на constituentTree.parent()
метод. Может кто-нибудь помочь мне, как правильно получить семантическую головку "всех" составляющих в дереве?
1 ответ
Решение
Я не уверен, что это действительно ответ, который работает для всех, но в моем случае это было полезно:
Используйте основной Tree
который включает в себя все предложение в качестве второго ввода для всех составляющих; то есть:
String head = constituentTree.headTerminal(headFinder, parseTree);