如何使用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;
感谢您的帮助。 菲利普
答案 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的开发人员