gpt4 book ai didi

java - 如何打印依赖关系图的一部分

转载 作者:行者123 更新时间:2023-12-01 14:03:54 24 4
gpt4 key购买 nike

我想打印依赖图的子树。具体来说,对于句子“Iturn 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);
}

这很糟糕,原因有三个:

  1. 我假设标记之间的所有内容都属于起始单词的子树。
  2. 我不会在整个子树中搜索更大的范围。
  3. 我假设图表是整个文本,并且边界对于 RecoveredSentenceString 有效。 (如果原文包含多个句子,则事实并非如此。)

有没有办法从 SemanticGraph 或 CoreMap 获取这个子树(并且只有这个子树),而无需自己实现 DFS?我知道the other way ,但我不知道有什么方法可以在树中定位 IndexedWord。

最佳答案

也许您正在寻找的不是依存解析而是短语结构解析。

你的句子是:

I turn the red meat.

其短语结构解析为:

(ROOT (S (NP (PRP I)) (VP (VBP turn) (NP (DT the) (JJ red) (NN meat))) (. .)))

你可以写一个 TregexPattern形式:

NP< (NN < meat)

获取所需的子树或简单

NP

获取所有名词短语。

关于java - 如何打印依赖关系图的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com