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

时间:2015-12-13 14:30:17

标签: nlp stanford-nlp named-entity-recognition named-entity-extraction

我希望使用Stanford CoreNLP捕获测量结果。 (如果你可以建议一个不同的提取器,那也没关系。)

例如,我想找 15kg 15 kg 15.0 kg 15 kg 15磅 15磅等。但在CoreNLPs提取规则中,我没有看到一个用于测量。

当然,我可以使用纯正则表达式执行此操作,但工具包可以更快地运行,并且它们提供了更高级别的块的机会,例如一起处理 gb 千兆字节,以及 RAM 内存作为构建块 - 即使没有完整的语法分析 - - 他们建造更大的单位,如 128 GB RAM 8 GB内存

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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

例如,如果您有Jack weighs about 50 kgs

之类的句子

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

  

杰克,人     重量,O
    关于,O
    50,MES
    kgs,MES

MES代表测量值。

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

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

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