0
我想打印一個依賴關係圖的子樹。特別是對於句子「I turn the red meat
」和起始詞meat-NN
,輸出應爲:「the red meat
」。如何打印部分的依賴關係圖
現在我在做這樣的:
protected String printSubGraph(IndexedWord startingWord, SemanticGraph graph) {
Iterable<SemanticGraphEdge> outiter = graph.outgoingEdgeIterable(startingWord);
// set the default bounds to the startingWord
int start = startingWord.beginPosition();
int end = startingWord.endPosition();
// search the next level for larger bounds
// assume that everything in between the bounds belongs to the sub-graph of the startingWord
for (SemanticGraphEdge edge : outiter) {
start = Math.min(start, edge.getGovernor().beginPosition());
start = Math.min(start, edge.getDependent().beginPosition());
end = Math.max(end, edge.getGovernor().endPosition());
end = Math.max(end, edge.getDependent().endPosition());
}
return graph.toRecoveredSentenceString().substring(start, end);
}
這是不好的原因有三:
- 我認爲一切都在標記之間屬於起始字的子樹。
- 我不搜索整個子樹的大邊界。
- 我假定圖形是整個文本,邊界對於RecoveredSentenceString是有效的。 (這是不對的,如果原文包含多個句子)
有沒有辦法從SemanticGraph或CoreMap中獲取這個子樹(而且只有這個子樹)而不用自己實現DFS?我知道the other way,但我不知道任何方法來查找樹中的IndexedWord。