为什么我使用Stanford CoreNLP获取UnsupportedOperationException

时间:2017-09-04 08:16:28

标签: java stanford-nlp parse-tree

我想从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()。任何人都可以帮助我获得树中“所有”成分的语义头的正确方法吗?

1 个答案:

答案 0 :(得分:0)

我不确定这是否真的是一个适用于所有人的答案,但就我而言,它很有帮助:

使用包含整个句子的主Tree作为所有成员的第二个输入;那就是:

                String head = constituentTree.headTerminal(headFinder, parseTree);