我想要匹配一些术语,只有在这个术语背后的术语是相关的我。因此,我创建了一个最小的例子:
这是我的测试数据:
small Large
Large
small我想标记、small、和等术语,但不是“小”。
所以我想,像这样的事情应该有效:
DECLARE Test;
(SW*? CW) {-> CREATE(Test)};但鲁塔只匹配“小大”。
对于测试,我已经将"SW“替换为"W”,它将做我不愿意做的事情。
发布于 2016-11-15 08:32:33
不幸的是,如果规则开始与第一个规则元素匹配,则规则开头处的可选量词不是可选的。这意味着要么需要两个规则,要么需要更改规则元素匹配的顺序。
更改规则元素匹配的顺序会导致不同的规则匹配,因为并非SW的增量序列都是在CW之前考虑的。然而,无论如何,这都是人们通常比较喜欢的事情。这条规则看起来应该是:
(SW* @CW) {-> CREATE(Test)};这两种规则方法看起来类似于:
(SW+? CW) {-> CREATE(Test)};
CW {-> CREATE(Test)};我建议避免使用不情愿的量词,如果由于不必要的额外计算而不是真正需要的话。宁愿使用部分条件,即使它看起来不那么好。
免责声明: Iam是UIMA Ruta的开发人员
https://stackoverflow.com/questions/40515341
复制相似问题