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

如何为自定义 NER 准备数据并定义架构

若要创建自定义 NER 模型,需要质量数据来训练它。 本文介绍应如何选择和准备数据,以及如何定义架构。 定义架构是项目开发生命周期中的第一步,它定义需要模型在运行时从文本中提取的实体类型/类别。

架构设计

架构定义需要模型在运行时从文本中提取的实体类型/类别。

  • 查看数据集中的文档,熟悉其格式和结构。

  • 标识要从数据中提取的实体

    例如,如果要从支持电子邮件中提取实体,则可能需要提取“客户名称”、“产品名称”、“请求日期”和“联系信息”。

  • 避免实体类型含糊不清。

    当你选择的类型彼此相似时,就会发生歧义。 架构越模棱两可,需要区分不同实体类型所需的标记数据越多。

    例如,如果要从法律协定中提取数据,若要提取“第一方的名称”和“第二方的名称”,则需要添加更多示例来克服歧义,因为双方的名称看起来相似。 请避免歧义,因为它可以省时省力,并获得更好的结果。

  • 避免使用复杂实体。 复杂实体可能难以从文本中精确选取。 请考虑将其分解为多个实体。

    例如,如果未分解为较小的实体,则提取“地址”将很有挑战性。 地址的显示方式有很多种变化,如果以整体形式提取地址而不进行分解,则需要大量带标记的实体来指导模型提取地址。 但是,如果将“地址”替换为“街道名称”、“PO Box”、“City”、“State”和“Zip”,则模型要求每个实体的标签更少。

数据选择

训练模型的数据质量会极大地影响模型性能。

  • 使用反映域问题空间的真实数据可以有效地训练模型。 可以使用综合数据来加速初始模型训练过程,但它与实际数据不同,并在使用时降低模型效率。

  • 在不偏离真实数据分布的情况下,尽可能平衡数据分布。

  • 尽可能使用多样化数据,以避免过度拟合模型。 训练数据的多样性较低可能会导致模型学习真实数据中可能不存在的虚假关联。

  • 避免数据中出现重复文档。 重复数据会对训练过程、模型指标和模型性能产生负面影响。

  • 考虑数据来源。 如果仅从一个人、一个部门或场景的一部分收集数据,则可能会缺少对于模型学习而言重要的多样性。

注意

如果文档采用多种语言,请在项目创建过程中选择“启用多语言”选项,并将语言选项设置为大多数文档的语言。

数据准备

作为创建项目的先决条件,需要将训练数据上传到存储帐户中的 Blob 容器。 可使用 Azure 存储资源管理器工具或直接从 Azure 创建和上传训练文档。 使用 Azure 存储资源管理器工具可以快速上传更多数据。

仅可使用 .txt 文档。 如果数据采用其他格式,则可使用 CLUtils 分析命令更改文档格式。

可以上传批注数据集,也可以上传未批注数据集并标记数据。

测试集

定义测试集时,请确保包含训练集中不存在的示例文档。 定义测试集是计算模型性能的重要步骤。 此外,请确保测试集包含代表项目中使用的所有实体的文档。

后续步骤

如果尚未创建,请创建一个自定义 NER 项目。 如果是第一次使用自定义 NER,请考虑按照快速入门创建一个示例项目。 有关详细信息,请参阅操作指南文章