在 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 的开发者
我是 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 的开发者