将文本从一个注释标记为另一个

时间:2019-07-18 16:11:42

标签: uima ruta

我正在尝试在两个注释之间注释一些Text。尽管这看起来很简单,但我想明确排除包含其他注释的文本段落。

比方说,我之前对文档的最后一个令牌和一些POI进行了注释,作为其他一些注释。现在,我想将文档的最后一个POI注释移至该令牌。但是该文本中不得包含其他POI。

我目前正在做什么:

POI1 {->SHIFT(POI1,1,3)} ANY*?{-CONTAINS(POI2)} EndToken;

Ruta仍将使用此规则对其他所有包含POI2注释的文本进行注释。

我想念什么?

1 个答案:

答案 0 :(得分:1)

您的规则将不起作用,因为ANY*没有塞子,因此贪婪的量词*将覆盖EndToken。另外,您通常会使用CONTAINS在另一个内部排他检查注释。因此,PARTOF条件适用于您的情况。

在UIMA Ruta中,您可以使用至少两种方法来解决您的问题:

1。)边界匹配-注释预定义边界之间的文本

(Annotation1 ANY+{-PARTOF(Annotation2)} Annotation3){-> Annotation4};

2。)转换-修改目标注释的偏移量(您的解决方案)

Annotation1{->SHIFT(Annotation1,1,2)} Annotation2;

如果您的目标是仅更改POI1批注的偏移量,则以下规则应适用:

POI1{->SHIFT(POI1,1,3)} ANY*?{-PARTOF(POI2), -PARTOF(EndToken)} EndToken;