Stanford CoreNLP 命名实体识别如何捕获 5 英寸、5 英寸、5 英寸、5 英寸等测量值

How can Stanford CoreNLP Named Entity Recognition capture measurements like 5 inches, 5", 5 in., 5 in

我希望使用 Stanford CoreNLP 捕获测量值。 (如果你能推荐一个不同的提取器,那也很好。)

比如我要求15kg,15kg,15.0kg, 15 公斤15 磅15 磅 等。但是在 CoreNLP 提取规则中,我没有没看到测量值。

当然,我可以使用纯正则表达式来做到这一点,但是工具包可以 运行 更快,并且它们提供了在更高级别进行分块的机会,例如一起处理 gbgigabytes,以及 RAMmemory 作为构建块——即使没有完整的语法分析——因为它们构建更大的单元,如 128 gb RAM8 GB 内存.

我想要一个基于规则的提取器,而不是基于机器学习的提取器),但不要将其视为 RegexNer 或其他地方的一部分。我该怎么做?

IBM Named Entity Extraction可以做到这一点。正则表达式以一种有效的方式 运行 而不是通过每个正则表达式传递文本。并且将正则表达式捆绑在一起以表达有意义的实体,例如将所有度量单位统一为一个概念的实体。

您可以构建自己的训练数据并相应地标记所需的测量值。

例如,如果您有这样的句子 Jack weighs about 50 kgs

因此模型会将您的输入分类为:

Jack, PERSON
weighs, O
about, O
50, MES
kgs, MES

其中 MES 代表尺寸。

我最近为我的自定义问题制作了 Stanford NER tagger 的训练数据,并为它建立了一个模型。

我认为 Stanford CoreNLP NER 你也可以做同样的事情

这可能是 machine learning-based 方法而不是 rule-based 方法

我认为针对此特定任务不存在基于规则的系统。但是,使用 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?