使用 spaCy 进行额外命名实体识别所需的训练数据量是多少?

What is the amount of training data needed for additional Named Entity Recognition with spaCy?

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

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

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

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

我想知道是否有人在 spaCy 中成功训练了一个新实体,能否让我了解他们的个人经验,了解至少在某种程度上可靠的实体识别所必需的训练量。

谢谢!

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

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

  • 您希望识别器能够预测的标签数量。这是有道理的,当标签(可能的输出)数量增加时,您的神经网络将变得更加难以区分它们,因此您需要的数据量也会增加。
  • 标签有何不同。例如,GPE 和 LOC 标签非常接近并且经常在相同的上下文中使用,所以神经网络一开始就把它们搞混了。建议提供更多与彼此接近的标签相关的数据。
  • 训练的方式。这里几乎有两种可能性:
    • 完整注释的句子。这意味着您告诉您的神经网络您的注释没有遗漏标签。
    • 部分注释的句子。这意味着您告诉您的神经网络您的注释是正确的,但可能缺少某些标签。这使得网络更难依赖您的数据,因此,需要提供更多数据。
  • 超参数。为了最大限度地利用数据集,微调网络非常重要。
  • 数据集的质量。这意味着如果数据集代表了你要让你的网络预测的东西,那么就需要更少的数据。但是,如果您要构建更通用的神经网络(可以在不同的上下文中正确回答),则需要更多数据。

对于希腊语模型,我尝试在 6 个足够明显的标签中进行预测,我提供了大约 2000 个 完全 注释的句子,我花了很多时间进行微调.

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

希望对您有所帮助!