在 UIMA RUTA 中注释货币价值的最佳方式

Best way to annotate money values in UIMA RUTA

我是 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);

(即便如此,有时我也无法正常工作,并且没有涵盖我的所有情况)

做什么会更容易且资源消耗更少?

如果您只能处理字符级别并且不需要注释,正则表达式可能是最快的选择。

使用UIMA Ruta中的普通匹配规则,就看灵活度了。他们是否还应该检测其他语言环境,例如英语或法语数字?毕竟,运行时还取决于文档包含多少数字等等,以及是否针对用例调整了 ruta(词法分析器、内部索引……)

您的规则不会按预期工作,因为规则开头的可选元素不是可选的(如果没有手动锚点),并且 BEFORE 条件将至少排除第一个数字。

这条规则应该可以满足你的要求,但肯定不是最快的:

(NUM{-PARTOF(Value)} (PERIOD NUM{REGEXP("...")})* COMMA NUM{REGEXP("..")}){-> Value};

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