UIMA Ruta使用由某些文本分隔的要素创建注释

时间:2014-07-07 08:05:36

标签: uima ruta

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

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作为特征。 非常感谢您的回答。

1 个答案:

答案 0 :(得分: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的开发人员)