Почему я получаю исключение 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);
Другие вопросы по тегам