如何在斯坦福大学的JavaNLP中获取父节点?

时间:2010-04-24 06:06:14

标签: java data-structures tree nlp stanford-nlp

假设我有这样一句话:

(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是节点的父节点,Apage是它的兄弟节点,它没有子节点(?)。当我尝试使用树的.parent()方法时,总是得到null。 API说这是因为实现不知道如何确定父节点。另一种感兴趣的方法是.ancestor(int height, Tree root),但我不知道如何获得节点的根。在这两种情况下,由于解析器知道如何缩进和分组树,它必须知道“父”树,对吧?我怎么才能得到它?感谢

2 个答案:

答案 0 :(得分:0)

看起来Tree本身永远不会返回节点的父节点,因为它在Tree源中是硬编码的。同时TreeGraphNode会覆盖该方法并且运行良好。将树更改为TreeGraphNode就像

一样简单
TreeGraphNode sentence = new TreeGraph(tree).root();

答案 1 :(得分:0)

如果保留对树的根的引用,则可以使用方法parent(Tree root)来获取树中任何节点的父节点。假设树根被称为root,并且JJ节点被称为jjTree,则jjTree.parent(root)将返回父NP节点。