2

我有一些带有注释的文本,如下所示:

wewf.werwfwef. wewfwefwwew. wefewefwff
AnnotationA
asdfawece aefae eafewfaefa aefafe ceaewfae
adfcaecae acaeaet aegaegageg caeacdaefa
AnnotationB
sadaeceaee aef aewfaegg rresf ceeaefaeaeaf
adfcaecae acaeaet aegaegageg caeacdaefa
AnnotationA
adfcaecae acaeaet aegaegageg caeacdaefa
adfcaecae acaeaet aegaegageg caeacdaefa
AnnotationB
adfcaecae acaeaet aegaegageg caeacdaefa
adfcaecae acaeaet aegaegageg caeacdaefa

我想用 AnnotationA 及其最接近的 AnnotationB 作为特征创建一个注释。我应该如何用 Ruta 来表达这个?

我尝试了以下不正确的方法:

DECLARE Annotation TargetAnnotation (AnnotationA ana, AnnotationB anb);
Document {-> CREATE(TargetAnnotation, "ana" = AnnotationA, "anb" = AnnotationB)};

该规则涵盖整个文档。我只想要以 AnnotationA 及其最接近的 AnnotationB 作为特征的注释。非常感谢您的任何回答。

4

1 回答 1

1

在 UIMA Ruta 中有几种方法可以指定它,它们主要取决于创建的 TargetAnnotation 应该获得的偏移量。CREATE 操作使用规则元素匹配的跨度来识别特征的值。

如果创建的注释的偏移量并不重要,那么您可以简单地使用结合注释 AnnotationA 和 AnnotationB 的跨度:

(AnnotationA # AnnotationB){-> CREATE(TargetAnnotation, "ana" = AnnotationA, "anb" = AnnotationB)};

请注意,此规则在两个注释之间引入了顺序依赖关系。您还可以指定不关心的规则,但它们可能会返回太多匹配项。这取决于你想要完成什么。

如果创建的注解的偏移量应该等于提供的注解之一,例如,AnnotationA,那么您应该使用 GATHER 而不是 CREATE。GATHER 允许指定规则元素的索引,其匹配应分配给特征。

 AnnotationA{-> GATHER(TargetAnnotation, "ana" = 1, "anb" = 3)} # AnnotationB;

(我是 UIMA Ruta 的开发者)

于 2014-07-07T19:37:28.693 回答