代码之家  ›  专栏  ›  技术社区  ›  Fluffy

如何在Stanford的JavaNLP中获取父节点?

  •  1
  • Fluffy  · 技术社区  · 14 年前

    假设我有这么一个句子:

    (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) ,但我不知道如何获取节点的根。在这两种情况下,由于解析器知道如何缩进和分组树,所以它必须知道“父”树,对吧?我怎么才能拿到?谢谢

    2 回复  |  直到 8 年前
        1
  •  0
  •   Fluffy    14 年前

    看起来像是 Tree 它本身永远不会返回节点的父节点,因为它在 来源。同时 TreeGraphNode 重写该方法并运行良好。将树更改为treegraphnode非常简单

    TreeGraphNode sentence = new TreeGraph(tree).root();
    
        2
  •  0
  •   yassoulassou    8 年前

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