是否可以根据规则\模式使用“提示”训练/调整spacy-NER模型

2024-05-20 06:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

虚拟示例: 我希望NER能探测到地点,动物和运动团体 Matcher\PhraseMatcher\EntityRuler(哪个与此用例更相关?)可用于添加“简单”规则 比如: 地点:芝加哥,纽约 动物:公牛,鸡 团体:芝加哥公牛队

NER层应该能够了解芝加哥公牛队是一个群体,而不是一个地点和动物(就像单独使用一个火柴会给予) 位置+动物的其他组合是运动组,而不是位置-动物对(即使训练集中没有特定的组合)

TLDR:我不想按原样使用基于规则的提取实体,而是作为另一层的提示,该层将使用这些实体来改进实体提取


Tags: 实体示例规则matcher用例群体动物地点
1条回答
网友
1楼 · 发布于 2024-05-20 06:38:44

正在从this issue复制我的答复:

是的,使用匹配模式来改进统计模型是非常有意义的,这实际上是我们在注释工具Prodigy中使用的一种方法,它使收集训练数据更容易。规则失效的模棱两可的例子(例如“多头”)确实很有趣,因为这些是你希望统计模型处理的。在

在实际实现方面,您仍然希望您的工作流有两个步骤:

  1. 使用匹配来提取候选示例并选择要使用的示例。在
  2. 用新的例子训练/更新模型并对其进行评估。在

你的模型不会只是在运行时快速更新,因为那不是那么有用——你通常需要一个专门的培训和评估步骤,这样你就可以使用一些机器学习技巧,同时确保你的模型确实在改进。在

另外,别忘了包括模型之前正确的实体——例如,如果你在“芝加哥公牛队”中的句子中也包含了一个人名,那么你也希望这个名字也包含在训练数据中。所以你的工作流程应该是这样的:

  • 使用模式规则来提取文本上的匹配项。在
  • 对于每个文本,还要检查doc.ents并获取现有的实体。在
  • 将两者结合起来检查是否正确。在
  • 用这些新的例子更新你的模型。在

好的一点是,这大部分都可以通过Python脚本实现自动化。另请参见this docs section以获取示例。在

a Matcher \ PhraseMatcher\ EntityRuler (which is more relevant for this use case?)

EntityRuler基本上是一个更高级的组件,它使用Matcher和{}在Doc中查找匹配项,并自动将它们添加到doc.ents。它还支持输入大模式文件,并在保存时用模型将其序列化。它还处理这样一个事实:根据定义,命名实体不能重叠,因为一个标记只能是一个实体的一部分。因此,如果你知道你要找的是实体,EntityRuler可能会更方便,因为这意味着你将不得不自己编写更少的代码。在

相关问题 更多 >