实体列表(仅限纯文本) - Amazon Comprehend

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

实体列表(仅限纯文本)

要使用实体列表训练模型,您需要提供两条信息:实体名称及其对应的自定义实体类型的列表,以及您希望实体出现在其中的未注释文档的集合。

当您提供实体列表时,Amazon Comprehend 会使用智能算法来检测文档中出现的实体,以此作为训练自定义实体识别器模型的基础。

对于实体列表,请在实体列表中为每种实体类型提供至少 25 个实体匹配项。

用于自定义实体识别的实体列表,需要一个逗号分隔值 (CSV) 文件,文件包含以下几列:

  • 文本:条目示例的文本与随附的文档语料库中显示的完全相同。

  • 类型:客户定义的实体类型。实体类型必须使用大写的、下划线分隔的字符串,例如 MANAGER 或 SENIOR_MANAGER。每个模型最多可以训练 25 种实体类型。

文件 documents.txt 包含四行:

Jo Brown is an engineer in the high tech industry. John Doe has been a engineer for 14 years. Emilio Johnson is a judge on the Washington Supreme Court. Our latest new employee, Jane Smith, has been a manager in the industry for 4 years.

包含实体列表的 CSV 文件包含以下几行:

Text, Type Jo Brown, ENGINEER John Doe, ENGINEER Jane Smith, MANAGER
注意

在实体列表中,Emilio Johnson 的条目不存在,因为它不包含 ENGINEER 或 MANAGER 实体。

创建您的数据文件

请务必将您的实体列表放在正确配置的 CSV 文件中,这样您的实体列表文件出现问题的几率就会降至最低。要手动配置 CSV 文件,必须满足以下条件:

  • 必须明确指定 UTF-8 编码,即使在大多数情况下将其用作默认编码。

  • 它必须包含列名:TypeText

我们强烈建议您以编程方式生成 CSV 输入文件,以避免出现潜在问题。

以下示例使用 Python 为上面显示的注释生成 CSV:

import csv with open("./entitylist/entitylist.csv", "w", encoding="utf-8") as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerow(["Text", "Type"]) csv_writer.writerow(["Jo Brown", " ENGINEER"]) csv_writer.writerow(["John Doe", " ENGINEER"]) csv_writer.writerow(["Jane Smith", " MANAGER"])

最佳实践

要在使用实体列表时获得最佳结果,需要考虑很多因素,包括:

  • 列表中实体的顺序对模型训练没有影响。

  • 使用实体列表项目,这些项目应涵盖未注释文档语料库中提及的 80%-100% 的正面实体示例。

  • 通过删除常用单词和短语,避免使用与文档语料库中非实体相匹配的实体示例。即使是少量不正确的匹配也会严重影响生成的模型的准确性。例如,实体列表中类似单词将导致大量匹配项,而这些匹配项不太可能成为您要查找的实体,因此会严重影响您的准确性。

  • 输入数据不应包含重复项。重复样本的存在可能会导致测试集污染,从而对训练过程、模型指标和模型行为产生负面影响。

  • 提供尽可能与真实用例非常相似的文档。不要将玩具数据或合成数据用于生产系统。输入数据应尽可能多样化,以避免过度拟合,并帮助底层模型更好地概括真实示例。

  • 实体列表区分大小写,目前不支持正则表达式。但是,即使实体与实体列表中提供的大小写不完全匹配,经过训练后的模型通常仍然可以识别实体。

  • 如果您的实体是另一个实体的子字符串(例如“Smith”和“Jane Smith”),请在实体列表中同时提供这两个实体。

其他建议可以在 提高自定义实体识别器的性能 找到