UIMA Ruta 否定条件

UIMA Ruta negating conditions

这可能是一个微不足道的问题,但我是 Ruta 的新手,所以请多多包涵。 我的测试数据由以下格式的数字组成:

0.1 毫米 0,11 毫米 1.1 毫米 1,1 毫米 1 毫米

我使用以下规则来注释前四个示例:

((NUM(COMMA|PERIOD)NUM) W{REGEXP("mm")}) {-> nummm};
Document{->MARK(nummm)};

现在我也想注释“1mm”,例如,但我现在有点卡住了,因为我不知道该怎么做。我尝试否定条件,例如 AFTER(如 "if NUM mm not after comma or period"),但它要么不起作用,要么语法错误。如有任何帮助,我们将不胜感激!

编辑:我要补充一点,我想注释“1mm”,但不是逗号或句点后的 1mm 部分,截至目前,我基本上对所有内容都注释了两次。

在 UIMA Ruta 中确实有很多方法可以指定它。

这是我想到的第一件事:

(NUM{-PARTOF(nummm)} (PM{PARTOF({COMMA,PERIOD})} NUM)? W{REGEXP("mm")}){-> nummm};

这可能不是 "best" 规则,但应该符合您的要求。主要有以下三个变化:

  • 我将规则的中间部分设为可选,这样它也可以匹配单个 NUM
  • 我在第一个规则元素中添加了取反的 PARTOF,因此如果起点已被 nummm 注释覆盖,匹配将失败。 -NOT 条件的快捷方式。
  • 我用一个简单的规则元素替换了昂贵的析取组合规则元素,只是因为它在这里并不是真的有必要。

此规则有效,因为在考虑下一个规则匹配之前,规则匹配的操作已经执行。

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