如何匹配UIMA Ruta中的特定标记?

时间:2014-09-25 14:57:12

标签: uima ruta

DECLARE A,B;
DECLARE Annotation C(Annotation firstA, Annotation secondA,...);
"token1|token2|...|tokenn" -> A;
"token3|token4" -> B;

A A B {->MARK(C,1,3)}; 

我做过GATHER

(A  COMMA A B) {-> GATHER(C,1,4,"firstA"=1,"secondA" = 3,"B"=4)};

但是在A型未知序列的情况下怎么样?如下所示,如何在功能中存储所有A?功能的数量也是未知的。在计划java中,我们声明String数组并且可以添加元素,但是在Ruta中似乎没有这样的过程。

(A  (COMMA A)+ B) {-PARTOF(C) -> GATHER(C,beginPosition,endPosition,"firstA"=1,"secondA" = 3,"thirdA"=?,so on)};

1 个答案:

答案 0 :(得分:0)

UIMA中的注释是指从开始偏移到结束偏移的完整跨度。所以,如果你想用两个元素指定一些东西,那么一个简单的注释是不够的。您不能创建涵盖第一个A和B但不包含第二个A的类型C的注释。

但是,您可以将重要信息存储在要素值中。如何实现它取决于各种事情。

如果您想要记住总是正好有两个注释,那么添加两个要素以键入C并在给定规则中指定要素值,例如,通过CREATE(C,1,3," first&#34) ; = A,"秒" = B)。

您还可以使用GATHER等不同的操作,或使用一个FSArray功能来存储注释。

FSArray的完整示例:

DECLARE A, B;
DECLARE Annotation C (FSArray as, B b);
"A" -> A;
"B" -> B;
(A (COMMA A)+ B){-PARTOF(C) -> CREATE(C, "as" = A, "b" = B)};

如果应用于诸如" A,A,A B"之类的文本,则最后一条规则会创建一个C类注释,该注释在特征中存储三个A注释" as"和特征中的一个B注释" b"