Как получить корневой узел в 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