我正在寻找使用Stanford CoreNLP捕获测量值。 (如果您可以建议使用其他提取器,那也可以。)
例如,我想找到15kg,15kg,15.0kg,15kg,15lbs,15磅等。但是在CoreNLP提取规则中,我看不到要进行测量的规则。
当然,我可以使用纯正则表达式来执行此操作,但是工具包可以运行得更快,并且它们提供了在更高层次上进行分块的机会,例如将GB和GB以及RAM和内存作为构建块(即使没有完整的语法解析)一起处理,因为它们可以构建更大的单元,例如128 GB RAM和8 GB内存。
我想要一个基于规则的提取器,而不是基于机器学习的提取器,但是不要将其视为RegexNer或其他部分的一部分。我该怎么办?
IBM Named Entity Extraction可以做到这一点。正则表达式以一种有效的方式运行,而不是通过每个文本传递文本。并将正则表达式捆绑在一起以表达有意义的实体,例如将所有度量单位统一为一个概念的实体。
最佳答案
我认为该特定任务不存在基于规则的系统。但是,使用TokensregexNER并不难。例如,映射如下:
[{ner:NUMBER}]+ /(k|m|g|t)b/ memory? MEMORY
[{ner:NUMBER}]+ /"|''|in(ches)?/ LENGTH
...
您也可以尝试使用vanilla TokensRegex,然后通过捕获组提取相关值:
(?$group_name [{ner:NUMBER}]+) /(k|m|g|t)b/ memory?