Stanford CoreNLP命名实体识别如何捕获5英寸、5英寸、;,5英寸,5英寸

Stanford CoreNLP命名实体识别如何捕获5英寸、5英寸、;,5英寸,5英寸,nlp,stanford-nlp,named-entity-recognition,named-entity-extraction,Nlp,Stanford Nlp,Named Entity Recognition,Named Entity Extraction,我正在寻找捕捉测量使用。(如果你能推荐不同的提取器,也可以。) 例如,我想找到15kg,15kg,15kg,15lbs,15lbs,等等。但在CoreNLPs提取规则中,我没有看到一个用于测量的规则 当然,我可以用纯正则表达式来实现这一点,但工具包可以运行得更快,而且它们提供了在更高级别上进行数据块划分的机会,例如将gb和gb放在一起处理,和RAM和内存作为构建块——即使没有完整的语法分析——因为它们构建了更大的单元,如128GB RAM和8GB内存 我想要一个基于规则的提取器,而不是基于机器学

我正在寻找捕捉测量使用。(如果你能推荐不同的提取器,也可以。)

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

当然,我可以用纯正则表达式来实现这一点,但工具包可以运行得更快,而且它们提供了在更高级别上进行数据块划分的机会,例如将gbgb放在一起处理,和RAM内存作为构建块——即使没有完整的语法分析——因为它们构建了更大的单元,如128GB RAM8GB内存

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


我能做到这一点。正则表达式以高效的方式运行,而不是通过每个正则表达式传递文本。并且正则表达式被捆绑以表示有意义的实体,例如将所有度量单位合并为一个概念的实体。

您可以构建自己的培训数据并相应地标记所需的度量

例如,如果你有一句话,如“杰克重约50公斤”

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

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

其中
MES
代表测量值

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

我认为对于斯坦福大学的CoreNLP NER,你也可以做同样的事情


这可能是一种基于
机器学习的方法,而不是基于
规则的方法

我认为没有一个基于规则的系统用于这项特定任务。然而,使用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?

谢谢你,罗汉。基于ML的方法可能很有价值。但很明显,一些规则会给我们带来很多价值。对于没有CoreNLP的临时解决方案来说,有太多的正则表达式使其变得简单或性能不佳,但我希望实体提取工具能够让我以一种使其简单且性能良好的方式捆绑这些正则表达式。这似乎是IBM命名实体提取的一个特殊功能。正则表达式当然在任何系统中都是可能的,但是IBMNEE可以更有效地运行模式;并将相关概念放在一起处理。(例如,邮政编码在世界范围内有几十种形式,但出于更高层次概念的目的,它们都是“邮政编码”)。需要对这个问题进行大量研究。:)看起来这是IBM命名实体提取的一个特殊功能。正则表达式当然在任何系统中都是可能的,但是IBMNEE可以更有效地运行模式;并将相关概念放在一起处理。(例如,邮政编码在世界范围内有几十种形式,但出于更高级概念的目的,它们都是“邮政编码”)。这当然是真的:IBM有一个更快的引擎来进行这种正则表达式匹配。然而,上面的例子来自CoreNLP。TokensRegex(包含在CoreNLP中)对于大多数应用程序来说通常足够快;特别是如果(1)模式很简单(没有可变长度匹配),或者(2)模式太少。如果您正在寻找一个主要基于正则表达式的解决方案,您还可以看看GATE的正则表达式环境。我不确定它是否比我们的更快,但它确实有更多的GUI支持。