为什么我使用 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);