7

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

例如,我想找到15kg15 kg15.0 kg15 kg15 lbs15磅等。但是在 CoreNLPs 提取规则中,我没有看到用于测量的规则。

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

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

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

4

2 回答 2

6

我认为这个特定任务不存在基于规则的系统。但是,使用 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?
于 2015-12-23T22:09:03.733 回答
2

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

例如,如果你有一个句子Jack weighs about 50 kgs

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

Jack, PERSON
体重, O
约, O
50, MES
kgs, MES

哪里MES代表测量。

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

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

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

于 2015-12-23T10:16:49.033 回答