虚拟示例: 我希望NER能够检测位置,动物和运动团体 Matcher \ PhraseMatcher \ EntityRuler(与该用例更相关的是?)可用于添加“简单”规则 喜欢: 地点:纽约芝加哥 动物:公牛,鸡肉 团体:芝加哥公牛队
NER层应该能够了解到芝加哥公牛队是一个团体,而不是位置和动物(就像单独使用火柴人会给人一样) 并且位置+动物的其他组合是运动组,而不是位置动物对(即使训练集中不存在特定组合)
TLDR:我不想按原样使用基于规则的提取实体,但作为另一层的提示,它将使用它们来改善实体提取
答案 0 :(得分:1)
复制我对this issue的回复:
是的,使用匹配模式来改进统计模型很有道理,实际上这是我们在注释工具Prodigy中使用的使收集训练数据更容易的方法之一。规则失败的模棱两可的示例(例如“ bulls”)实际上非常有趣,因为这些都是您希望统计模型处理的示例。
在实际的实现方面,您仍然希望您的工作流具有两个步骤:
您的模型不仅不会在运行时进行更新,因为它不是那么有用-您通常总是需要专门的培训和评估步骤,因此您可以使用一些机器学习技巧,并确保您的模型确实在改进。 / p>
也不要忘记包含先前模型正确的实体-例如,如果您在“芝加哥公牛队”一词中还包含一个人名,则您也希望将此人也包含在训练数据中。所以您的工作流程看起来像这样:
doc.ents
并获取现有的实体。令人高兴的是,大多数操作都可以通过Python脚本自动执行。另请参见this docs section作为示例。
Matcher \ PhraseMatcher \ EntityRuler(与该用例更相关?)
EntityRuler
基本上是一个更高级的组件,它使用Matcher
和PhraseMatcher
在Doc
中查找匹配项,并将其自动添加到{{ 1}}。它还支持输入大型特征码文件,并在保存时将其与模型序列化。它还处理了这样一个事实,即命名实体根据定义不能重叠,因为一个令牌只能是一个实体的一部分。因此,如果您知道要查找的是实体,则doc.ents
可能会更方便,因为这意味着您必须自己编写更少的代码。