Как получить корневой узел в Stanford Parse-Tree?

У меня есть это дерево разбора здесь:

Я хочу, чтобы все слова от общего родителя были заданы словом из набора дочерних элементов поддерева. Например, если вы берете словобутылки"тогда я хочу получить"бутылки Восс"или, может быть, даже"Восс бутылки с водой"но я не знаю, как это сделать.

Annotation document = new Annotation(sentenceText); 
this.pipeline.annotate(document);

List<CoreMap> sentences = document.get(SentencesAnnotation.class);

for (CoreMap sentence : sentences) {

    Tree tree = sentence.get(TreeAnnotation.class);

    List<Tree> leaves = new ArrayList<>();
    leaves = tree.getLeaves(leaves);

    for (Tree leave : leaves) {         
        String compare = leave.toString().toLowerCase();            
        if(compare.equals(word) == true) {
            // Get other nodes in the same subtree
        }
    }
}

призваниеleave.parent() не работает. Я тоже пробовалtree.parent(leave) но это тоже не работает (возвращаетnull).

Я тоже пробовал

for (Tree leave : tree) {
    String compare = leave.toString().toLowerCase();        
    if(compare.equals(word) == true) {
        // ..
    }
}

но я получаю то же самое.

public Tree parent(Tree root)
Вернуть родителя узла дерева. Эта подпрограмма будет проходить по дереву (сначала в глубину) от данного корня и будет правильно находить родителя, независимо от того, хранит ли родительский класс конкретный класс. Он вернет значение null, только если этот узел является корневым узлом или если этот узел не содержится в дереве с корнем в корне.

Как мне это сделать?#EverythingIsBrokenAllTheTime

Ответы на вопрос(1)

Ваш ответ на вопрос