首页 > 解决方案 > 使用 spaCy 进行额外命名实体识别所需的训练数据量是多少?

问题描述

我正在使用 spaCy 模块来查找输入文本的名称实体。我正在训练模型来预测医学术语。我目前可以访问 200 万份医疗记录,我编写了一个程序来对这些记录进行注释。

我将医学笔记与用于注释任务的约 9 万个术语的预定义列表进行交叉引用。以目前的批注速度,批注 10000 条笔记大约需要一个半小时。注释当前的工作方式,我最终得到了大约 90% 的注释没有注释(我目前正在努力获得更好的交叉引用术语列表),所以我采用大约 1000 个注释注释并训练模型在这些上。

我已经检查过,模型对它所看到的已知注释术语做出了响应(例如,该术语tachycardia之前已经从注释中看到过,并且有时会在该术语出现在文本中时将其拾取)。

这个背景可能与我的特定问题不太相关,但我想我会为我目前的职位提供一点背景。

我想知道是否有人在 spaCy 中成功训练了一个新实体,是否可以让我深入了解他们在训练量方面的个人经验,这对于至少有一定程度的可靠实体识别是必要的。

谢谢!

标签: machine-learningnlpspacynamed-entity-recognition

解决方案


我从头开始训练希腊语的命名实体识别器,因为没有可用的数据,所以我会尝试为您总结一下我在我的案例中注意到的事情。

我用Prodigy注释工具训练了 NER 。根据我的个人经验,您的问题的答案取决于以下几点:

  • 您希望识别器能够预测的标签数量。有意义的是,当标签(可能的输出)数量增加时,您的神经网络更难以区分它们,因此您需要的数据量也会增加。
  • 标签有多么不同。例如,GPE 和 LOC 标记非常接近,并且经常在相同的上下文中使用,因此神经网络在开始时非常混淆它们。建议提供更多与彼此接近的标签相关的数据。
  • 训练方式。这里几乎有两种可能性:
    • 完全注释的句子。这意味着您告诉您的神经网络您的注释没有丢失的标签。
    • 部分注释的句子。这意味着您告诉您的神经网络您的注释是正确的,但可能缺少一些标签。这使得网络更难依赖您的数据,因此需要提供更多数据。
  • 超参数。微调网络以充分利用数据集非常重要。
  • 数据集的质量。这意味着,如果数据集代表您将要求您的网络预测的事物,则需要较少的数据。但是,如果您正在构建一个更通用的神经网络(可以在不同的上下文中正确回答),则需要更多的数据。

对于希腊模型,我尝试在 6 个足够清晰的标签中进行预测,我提供了大约 2000个完整注释的句子,并花费了大量时间进行微调。

结果:70% F-measure,这对于任务的复杂性来说是相当不错的。

希望能帮助到你!


推荐阅读