从解析树中获取某些节点

2023-12-19

我正在研究一个涉及通过霍布斯算法进行照应解析的项目。我已经使用斯坦福解析器解析了我的文本,现在我想操作节点以实现我的算法。

目前,我不明白如何:

  • 根据 POS 标签访问节点(例如,我需要以代词开头 - 如何获取所有代词?)。

  • 使用访客。我对 Java 有点菜鸟,但在 C++ 中,我需要实现一个 Visitor 函子,然后处理它的钩子。不过,我找不到太多有关斯坦福解析器树结构的信息。那是jgrapht吗?如果是的话,您能为我提供一些代码片段的指示吗?


@dhg 的答案很好,但了解以下两个其他选项可能也很有用:

  • The Tree类工具Iterable。您可以遍历 a 的所有节点Tree,或者严格来说,在前序遍历中以每个节点为首的子树:

    for (Tree subtree : t) { 
        if (subtree.label().value().equals("PRP")) {
            pronouns.add(subtree);
        }
    }
    
  • 您还可以通过使用来获取满足某些(可能非常复杂的模式)的节点tregex,其行为类似于java.util.regex通过允许树上的模式匹配。你会得到类似的东西:

    TregexPattern tgrepPattern = TregexPattern.compile("PRP");
    TregexMatcher m = tgrepPattern.matcher(t);
    while (m.find()) {
        Tree subtree = m.getMatch();
        pronouns.add(subtree);
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从解析树中获取某些节点 的相关文章

随机推荐