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);
}
我正在尝试从 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);
}