Python 是否可以使用“调整”来训练\调整spacy NER模型;“提示”;基于规则\模式

Python 是否可以使用“调整”来训练\调整spacy NER模型;“提示”;基于规则\模式,python,nlp,spacy,Python,Nlp,Spacy,虚拟示例: 我希望NER能够检测位置、动物和运动团体 可以使用Matcher\PhraseMatcher\EntityRuler(哪个与此用例更相关?)来添加“简单”规则 比如: 地点:芝加哥,纽约 动物:公牛、鸡 组别:芝加哥公牛队 NER层应该能够了解到芝加哥公牛队是一个群体,而不是一个地点和动物(就像单独使用匹配器一样) 位置+动物的其他组合是运动组,而不是位置-动物对(即使训练集中不存在特定组合) TLDR:我不想按原样使用基于规则的提取实体,而是作为另一层的提示,该层将使用它们改进实体

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

NER层应该能够了解到芝加哥公牛队是一个群体,而不是一个地点和动物(就像单独使用匹配器一样) 位置+动物的其他组合是运动组,而不是位置-动物对(即使训练集中不存在特定组合)


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

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

就实际实现而言,您仍然希望工作流包含两个步骤:

  • 使用“匹配”提取候选示例并选择要使用的示例
  • 使用新示例培训/更新模型,并对其进行评估
  • 您的模型不会只是在运行时自动更新,因为这不是很有用——您通常需要一个专门的培训和评估步骤,这样您就可以使用一些机器学习技巧,并确保您的模型确实在改进

    另外,不要忘了包括模型之前正确的实体——例如,如果你在“芝加哥公牛队”的句子中还包括一个人名,那么你希望这也包括在训练数据中。因此,您的工作流程可以如下所示:

    • 使用模式规则提取文本中的匹配项
    • 对于每个文本,还要检查
      doc.ents
      ,并获取现有实体
    • 将两者结合起来,检查它们是否正确
    • 用这些新示例更新您的模型
    很好的一点是,大多数这一切都可以通过Python脚本实现自动化。另请参见示例

    Matcher\PhraseMatcher\EntityRuler(哪个与此用例更相关?)


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

    谢谢,我不确定我是否完全理解如果我培训一个NER模型,它将使用来自上游模型的功能,如标记文本、标记形状、词性、,等等。我可以让它也使用匹配器生成的属性作为模型的特征吗?澄清:EntityRecognizer模型可以使用自定义扩展属性作为特征吗?