你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用自定义命名实体识别的特征和限制

重要

仅为方便起见,提供非英语翻译。 有关绑定版本,请参阅本文档的 EN-US 版本。

自定义命名实体识别 (NER) 模型的性能因方案和输入数据而异。 以下部分可帮助你了解有关自定义 NER 模型性能和评估的关键概念。

性能评估指标

查看模型评估是自定义 NER 模型开发生命周期中的一个重要步骤。 它可帮助开发人员了解模型的性能,并让他们了解在生产中使用模型时的预期性能。

在生成模型的过程中,开发人员可以在标记期间定义训练和测试集。 或者,可以在训练期间随机选择这些集。 无论哪种方式,训练和测试集都对于训练和评估自定义 NER 模型至关重要。 训练集用于训练自定义机器学习模型,而测试集用作盲集来评估模型性能。

训练成功完成后,将触发模型评估过程。 评估过程是通过使用训练的模型从测试集中预测用户定义的实体来进行的。 预测实体与所提供的数据标记进行比较,并相应地计算评估指标。

为了计算模型的评估,提取的实体分为:真报、误报或漏报。 下表进一步说明了这些术语,如以下文本示例所示:

The first party of this contract is John Smith resident of Frederick, Nebraska. And the second party is Forrest Ray resident of Corona, New Mexico. There is also Fannie Thomas resident Colorado Springs, Colorado.

类别 正确/不正确 定义 示例:
真正 正确 模型可识别此实体,这与已标记的实体相同。 John SmithFannie Thomas 被正确预测为 PersonColorado Springs 被正确预测为 City
假正 不正确 该模型提取出一个不是实体的单词,或正确提取出一个实体,但猜错了实体的类型。 Forrest 被错误地预测为 City,而它本应为 Personparty 在不应提取时未正确提取。
假阴性 不正确 当数据中存在实体时,模型不会返回结果。 Nebraska 不是由模型提取的,而它应该被预测为 State

然后,上述类别用于计算精度、召回率和分数(称为 F1 分数)。 这些指标作为服务的模型评估的一部分提供给开发人员。 下面是更多详细信息:

  • 精度: 模型的准确性的度量值。 它是真报数与真报和误报数之间的比率。 在预测的正实体中,精度显示其中有多少是实际正值(属于预测的正确实体类型)。

  • 召回率:衡量模型提取实际真报和误报实体的能力。 这是预测的真报数与实际标记的真报与误报数之间的比率。 在实际标记的实体中,召回率揭示了正确预测的实体数。

  • F1 分数: F1 分数是前两个指标的函数。 当你在精度和召回之间寻求平衡时,你需要它。

任何自定义 NER 模型都会有漏报和误报错误。 开发人员需要考虑每种类型的错误如何影响整个系统,并仔细考虑每个用例的权衡。

根据你的方案,精度或召回率可能是评估模型性能的更合适的指标。 例如,如果你的方案是关于从财务合同中提取利率,提取错误的实体将导致不正确的计算和不正确的会计。 在这种情况下,系统应该对误报更敏感,而精准率将是更重要的评估指标。

但是,如果你的方案是提取实体来扩充搜索索引,则未能提取实体将导致索引更差。 在这种情况下,系统应更敏感于误报,然后召回将是更相关的评估指标。

如果要针对常规用途方案进行优化,或者当精度和召回率都很重要时,可以依赖 F1 分数。 了解评估分数受方案和验收条件的主观影响,并且没有适用于所有方案的绝对指标。

增强系统性能的最佳做法

以下几点将帮助你提高系统性能:

  • 了解服务限制: 对用户强制实施一些限制,例如您数据中的文件数和实体数或实体的长度。 详细了解系统限制

  • 规划架构: 标识需要从数据中提取的实体。 开发人员需要相应地规划架构。 详细了解建议的做法

  • 选择训练数据: 训练数据的质量是模型质量的重要因素。 最好使用与生产中预期数据类似的多样化和现实数据。 确保包含在生产环境中所需的所有文本布局和格式。 详细了解建议的做法

  • 准确标记数据: 标记数据的质量是模型性能的一个关键因素,因为这是模型从中学习的“基本事实”。 在标记数据的过程中,请记住:

    • 完全标记。 标记实体时,请确保标记所有文件中的所有实例。
    • 准确且一致地标记。 标记实体时,请确保只标记需要提取的内容,并避免添加不必要的字词。 标记数据的精度、一致性和完整性是确定模型性能的关键因素。
  • 确保数据集中已标记的实体具有足够的表示形式检查数据分布 以确保已充分表示所有实体。 如果某个实体的标记频率低于其他实体,则表示此实体表示不足,并且可能在运行时模型无法正确识别。 在这种情况下,请确保标记此实体的所有实例。 如果已执行此作,请考虑向数据集添加更多文件,并为此实体添加更多标记。

  • 添加更多数据以提高模型性能。 通常,更多的标记数据会导致更好的模型,前提是数据被准确且一致地标记。 我们建议每个实体有大约 200 个标记实例。 如果在评估过程中使用 多语言数据集 并注意到某些语言的性能较低,请考虑向训练集添加更多数据并重新训练模型。

  • 查看评估并改进模型: 成功训练模型后,请检查模型评估和 混淆矩阵。 这有助于了解模型出错的位置,并了解性能不佳的实体。 查看测试集和并排查看预测实体和标记实体。 可以更好地了解模型的性能以及架构或标记中的任何更改是否是必需的。

一般准则

以下指南可帮助你了解和改进自定义 NER 中的性能。

了解置信度分数

标记数据并训练模型后,需要部署它以便在生产环境中使用。 部署模型意味着通过 分析 API 使用它从给定文本中提取实体。 API 返回一个 JSON 对象,其中包含提取的实体列表,每个实体的起始索引、长度和置信度分数。

置信度分数是介于零(0)和1(1)之间的十进制数,它作为系统与其预测的置信度程度的指标。 较高的值表示服务更确信结果准确。 返回的分数直接影响生成自定义模型时标记的数据。 如果用户在提取时的输入类似于训练中使用的数据,则可以预期更高的分数,并提取更准确的实体。

如果某个实体通常是以低置信度分数提取的,开发人员可能需要检查训练集中的标记数据,为此实体添加更多实例,然后重新训练模型。

设置置信度分数阈值

开发人员可以选择根据系统返回的置信度分数在系统中做出决策。 他们可能会选择设置一个阈值,其中置信度分数高于或低于此阈值的实体的处理方式不同。 可以根据开发人员的方案调整置信度分数阈值。

不同的方案要求采用不同的方法。 如果关键动作将基于提取的实体,开发人员可以选择设置更高的阈值,以确保预测的实体准确无误。 在这种情况下,开发人员应得到更少的误报,更多的漏报(因此,精准率更高)。

如果你的方案中没有基于提取的实体做出关键决策,开发人员可以接受较低的阈值,以便从传入文本中提取所有实体。 在这种情况下,你将得到更多的误报,更少的漏报(因此,召回率更高)。

用实际数据依据设定的阈值来评估你的系统是非常重要的。 系统处理生产中的此数据,以确定精度和召回率的影响。

不同的培训课程和评估中的变化

重新训练同一模型而不对标记数据进行任何更改将导致相同的模型输出,因此相同的评估分数。 但是,如果添加或删除标记,模型性能将发生变化。 然后,如果标记期间没有添加新文件,则可以将评估分数与模型的早期版本进行比较。 添加新文件或使用随机集拆分来训练不同的模型,将导致训练集和测试集中的文件不一致。 在这种情况下,无法与其他模型进行直接比较,因为性能表现是针对测试集的不同划分来计算的。

查看不正确的预测以提高性能

训练模型后,可以查看 模型评估详细信息 ,以确定改进领域。 还可以查看 混淆矩阵 ,以确定经常被错误预测的实体,并查看是否可以执行任何作来提高模型性能。 如果发现特定实体通常提取为另一个实体,则可能这两个实体具有类似的语义特征。 可能需要重新思考架构,也可以向数据集添加更多标记的示例,以帮助模型识别这些实体。

查看模型的评估详细信息后,应 改进模型。 这使你可以并排查看预测和标记的实体,以了解模型评估过程中出错的情况。

如果发现重复未提取复杂实体,请考虑将其分解为更简单的实体,以便于提取。 例如,请考虑在不同的实体中单独提取邮政编码、街道名称、城市和州,而不是创建一个同时提取整个地址的地址实体。

如果在数据中未标记实体的情况下预测实体,则这意味着需要检查标记。 确保在所有文件中都正确地标记了实体的所有实例。 详细了解 如何标记数据

性能因功能和语言而异

使用自定义 NER,可以选择使用多种语言的数据。 可以在不同语言的数据集中有多个文件。 此外,还可以使用一种语言训练模型,并用它来查询其他语言的文本。 如果要使用多语言选项,则必须在 创建项目期间启用此功能。 如果发现特定语言的分数较低,请考虑将此语言中的更多数据添加到训练集。 有关详细信息,请参阅 支持的语言

后续步骤