本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
实体列表(仅限纯文本)
要使用实体列表训练模型,您需要提供两条信息:实体名称及其对应的自定义实体类型的列表,以及您希望实体出现在其中的未注释文档的集合。
当您提供实体列表时,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 编码,即使在大多数情况下将其用作默认编码。
-
它必须包含列名:
Type
和Text
。
我们强烈建议您以编程方式生成 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”),请在实体列表中同时提供这两个实体。
其他建议可以在 提高自定义实体识别器的性能 找到