UIMA Ruta 结合 MATCHEDTEXT 和 Star 或 Plus Reluctant

UIMA Ruta Combining MATCHEDTEXT and Star or Plus Reluctant

我想使用 MATCHEDTEXT 在多个单词上创建匹配。为了选择多个单词,我想使用 Star 或 Plus Reluctant 量词。这很好用,如果 MATCHEDTEXT 部分后面没有规则元素,但如果有,就像我示例中的最后一个 "SW","CW+?" 部分将不匹配。

我的测试字符串

small Large Large small.

我的鲁塔规则

STRING test;
DECLARE myObject(STRING label);
SW (CW+? { -> MATCHEDTEXT(test), CREATE(myObject, "label"=ao) }) SW;

这是 UIMA Ruta <=2.5.0 中的错误。匹配失败,因为不情愿的量词与组合规则元素有问题。

您可以通过删除不需要的组合规则元素来解决您的问题:

SW CW+? { -> MATCHEDTEXT(test), CREATE(myObject, "label"="x")} SW;

...或者避免不情愿的量词,这也不是必需的:

SW CW+ { -> MATCHEDTEXT(test), CREATE(myObject, "label"="x")} SW;

免责声明:我是 UIMA Ruta 的开发者

加上贪婪:

PACKAGE uima.ruta.example;  
DECLARE myObject(STRING label);
STRING test;
DECLARE myObject(STRING label);
SW CW+ {-PARTOF(myObject) -> MATCHEDTEXT(test), CREATE(myObject, "label"="ao") } SW;

加上不情愿:

PACKAGE uima.ruta.example; 
DECLARE myObject(STRING label);
STRING test;
DECLARE myObject(STRING label);
SW CW+? {-PARTOF(myObject) -> MATCHEDTEXT(test), CREATE(myObject, "label"="ao") } SW;