我是UIMA RUTA的新手(但我有简单的UIMA和uimaFIT的经验),我想知道最好的方法(性能明智)找到钱的价值。如果在句子中应用正则表达式或创建新规则(以及它的外观)
我的价值观如下:
1.000,00 1000,00 1.100.000,00 100,00 甚至1000000,00是可能的
我创建了一个像
这样的规则(NUM{BEFORE(PERIOD)})*(NUM{AFTER(COMMA)}) {-> MARK(Value, 1, 2);
(即便如此,我有时也无法正常工作,并且不能涵盖我的所有情况)
做什么更容易,资源消耗更少?
答案 0 :(得分:1)
如果只能处理字符级别且不需要注释,则正则表达式可能是最快的选项。
在UIMA Ruta中使用常规匹配规则,取决于它们应该具有多大的灵活性。他们是否还应检测其他语言环境,如英语或法语数字?毕竟,运行时还取决于文档包含的数量等等,以及ruta是否针对用例进行调整(词法分析器,内部索引,...)
您的规则无法按预期工作,因为规则开头的可选元素不是可选的(如果没有手动锚点),BEFORE条件将至少排除第一个数字。
这条规则可以做你想要的,但肯定不是最快的:
(NUM{-PARTOF(Value)} (PERIOD NUM{REGEXP("...")})* COMMA NUM{REGEXP("..")}){-> Value};
免责声明:我是UIMA Ruta的开发者