我希望使用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可以做到这一点。正则表达式以有效的方式运行,而不是将文本传递给每个正则表达式。并且正则表达式被捆绑以表达有意义的实体,例如将所有测量单元合并为单个概念的实体。
答案 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
方法