Malt 解析器,在 java 中迭代已解析的树

Malt parser, iterate over parsed tree in java

我正在尝试从 Malt ConcurrentMaltParserModel 中提取树依赖项。我像这样遍历边缘:

SortedSet<ConcurrentDependencyEdge> edges = graph.getEdges();
for (ConcurrentDependencyEdge e : edges) {
      //here I would need to extract the dependency type
}

我以为我可以用与 StanfordParser 类似的方式提取依赖类型,但不幸的是我不知道该怎么做。

首先获取一个SemanticGraph对象(例如通过在CoreNLP管道中获取BasicDependenciesAnnotation的值,或者直接用Stanford Parser解析)。如有必要,我可以详细说明这一点。

SemanticGraph 提供了一个简单的可迭代边,用于处理独立的图边。 (参见 SemanticGraphEdge class. Also, note that SemanticGraphEdge.getRelation returns a GrammaticalRelation 实例。)

SemanticGraph sg = ....
for (SemanticGraphEdge edge : sg.getEdgesIterable()) {
  int headIndex = edge.getGovernor().index();
  int depIndex = edge.getDependent().index();
  String label = edge.getRelation().getShortName();

  System.out.printf("%d %d %s%n", headIndex, depIndex, label);
}