假设我有这样一句话:
(NP
(NP (DT A) (JJ single) (NN page))
(PP (IN in)
(NP (DT a) (NN wiki) (NN website))))
在某个特定时刻,我有(JJ single)
的引用,我希望得到NP
节点绑定A single page
。如果我做对了,NP
是节点的父节点,A
和page
是它的兄弟节点,它没有子节点(?)。当我尝试使用树的.parent()
方法时,总是得到null。 API说这是因为实现不知道如何确定父节点。另一种感兴趣的方法是.ancestor(int height, Tree root)
,但我不知道如何获得节点的根。在这两种情况下,由于解析器知道如何缩进和分组树,它必须知道“父”树,对吧?我怎么才能得到它?感谢
答案 0 :(得分:0)
看起来Tree
本身永远不会返回节点的父节点,因为它在Tree
源中是硬编码的。同时TreeGraphNode
会覆盖该方法并且运行良好。将树更改为TreeGraphNode就像
TreeGraphNode sentence = new TreeGraph(tree).root();
答案 1 :(得分:0)
如果保留对树的根的引用,则可以使用方法parent(Tree root)
来获取树中任何节点的父节点。假设树根被称为root
,并且JJ节点被称为jjTree
,则jjTree.parent(root)
将返回父NP节点。