gpt4 book ai didi

uima - 在 UIMA Ruta 中设置特征值为包含注解的计数

转载 作者:行者123 更新时间:2023-12-01 23:54:33 26 4
gpt4 key购买 nike

我有一个 RUTA 脚本,其中所有句子都用 Sentence 注释进行了注释,各种单词和短语都用它们自己的特定注释进行了注释。一切都按预期工作。

这些注释中的每一个都具有包含它的句子索引的特征。所以在一个人为的例子中并给定文本

Jack and Jill went up the hill. Jack fell down.

我有一个“向下”的注释,我想将句子索引设置为2,表示它在第二个句子中。尽管我知道那是不正确的,但我在想类似下面的事情。

Sentence{CONTAINS(Down) -> Down.sentence_index = index

其中索引是句子的索引。 RUTA 这可能吗?如果是这样,什么是合适的脚本。我可以在单独的分析引擎中执行此操作并且过去也这样做过,但我希望用 ruta 脚本替换其中的一些。

谢谢,

尼克

最佳答案

在 UIMA Ruta 中有多种表达方式。我的第一个猜测是这样的:

// just to have an executable example
DECLARE Sentence;
DECLARE Annotation Down (INT sentence_index);
((# PERIOD){-> Sentence})+;
"down" -> Down;

// the acutal rule with a helper variable
INT index;
Sentence{CONTAINS(Down), CURRENTCOUNT(Sentence, index)} ->
{Down{-> Down.sentence_index = index};};

规则匹配所有包含 Down 注释的句子。此外,CURRENTCOUNT 将 Sentence 注释计数到匹配的位置,并将值存储在变量索引中。然后,内联规则(由第一个“->”表示)匹配匹配句子中的所有 Down 注释,并将变量的值分配给匹配的 Down 注释的特征。根据您是想从 0 还是 1 开始,您需要递增分配的值:

... Down.sentence_index = (index+1)};};

条件 CURRENTCOUNT 也可以接受最小值和最大值,以便表现得像真实条件。它真的很旧,所以我不知道它如何扩展大型文档。

这是另一个示例,但这次没有 CURRENTCOUNT 条件并且用于将索引存储在 Sentence 注释中:

DECLARE Annotation Sentence (INT index);
DECLARE Annotation Down (INT sentence_index);
INT index;

(# PERIOD){-> Sentence, ASSIGN(index, (index + 1)), Sentence.index = index};
PERIOD (# PERIOD){-> Sentence, ASSIGN(index, (index + 1)), Sentence.index = index};
"down" -> Down;

Sentence{CONTAINS(Down) -> ASSIGN(index, Sentence.index)}
-> {Down{-> Down.sentence_index = index};};

请注意,不能使用第一个示例中用于创建句子注释的规则,因为它仅使用一个规则匹配,并且其操作应用于匹配的片段。第二个示例中的规则导致许多规则匹配,因此在处理下一个规则匹配之前应用操作。不同匹配范围的 feautre 值之间的复制不是很好,但可能会在某个时候得到改进。

如果你已经有了 Sentence 注释,你可以为索引分配类似的东西:

Sentence{-> ASSIGN(index, (index + 1)), Sentence.index = index};

示例已使用 UIMA Ruta 2.2.1-SNAPSHOT 进行了测试。

(我是 UIMA Ruta 的开发者)

关于uima - 在 UIMA Ruta 中设置特征值为包含注解的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24812029/

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