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

How to extract ID and Date from two substrings using Apache UIMA Ruta?

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

ID:1341234
Date:20191021

我尝试了以下方法:

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

感谢您的帮助。 菲利普

用于规则元素匹配条件的文字字符串匹配依赖于ruta 的内部索引并且仅在单个RutaBasic 上匹配。这意味着实际匹配可能取决于所有先前创建的注释。因此,我不推荐使用文字字符串匹配,或者只推荐用于快速原型制作。 (Ruta Version 2.7.0, 后续版本可能会有所改动)

对于您的示例,这意味着第一个规则元素不匹配,因为 RutaEngine 的播种器为 words/letters 和标点符号创建了单独的注释,这导致了两个 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 的开发者