如何使用Apache UIMA Ruta从两个子字符串中提取ID和Date?

时间:2019-05-05 19:50:00

标签: apache uima ruta

如何使用Ruta在以下文本中提取2个ID和日期编号:

  

ID:1341234
  日期:20191021

我尝试了以下操作:

RETAINTYPE(WS);
"ID:" n:NUM{-> CREATE(Entity, "label" = "ID", "value"=n.ct)};
"Date:" n:NUM{-> CREATE(Entity, "label" = "Date", "value"=n.ct)};
RETAINTYPE;

感谢您的帮助。 菲利普

1 个答案:

答案 0 :(得分:2)

针对规则元素的匹配条件的文字字符串匹配依赖于ruta的内部索引,并且仅基于单个RutaBasic进行匹配。这意味着实际匹配可能取决于所有先前创建的注释。因此,我不建议使用文字字符串匹配,或仅用于快速原型制作。 (Ruta版本2.7.0,可能会更改为更高版本)

在您的示例中,这意味着第一个规则元素不匹配,因为RutaEngine的播种器会为单词/字母和标点符号创建单独的注释,从而导致两个RutaBasic注释。

如果您这样重写规则,则该规则可能会起作用:

RETAINTYPE(WS);
"ID" ":" n:NUM{-> CREATE(Entity, "label" = "ID", "value"=n.ct)};
"Date" ":" n:NUM{-> CREATE(Entity, "label" = "Date", "value"=n.ct)};
RETAINTYPE;

或者没有文字字符串匹配

RETAINTYPE(WS);
CAP.ct=="ID" COLON n:NUM{-> CREATE(Entity, "label" = "ID", "value"=n.ct)};
W.ct=="Date" COLON n:NUM{-> CREATE(Entity, "label" = "Date", "value"=n.ct)};
RETAINTYPE;

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