1

我想使用 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;
4

2 回答 2

2

这是 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 的开发人员

于 2016-10-27T07:55:06.513 回答
1

加上贪婪:

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;
于 2016-10-27T10:31:52.290 回答