

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

# 实体列表（仅限纯文本）
实体列表

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

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

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

用于自定义实体识别的实体列表，需要一个逗号分隔值 (CSV) 文件，文件包含以下几列：
+ **文本**：条目示例的文本与随附的文档语料库中显示的完全相同。
+ **类型**：客户定义的实体类型。实体类型必须使用大写的、下划线分隔的字符串，例如 MANAGER 或 SENIOR\$1MANAGER。每个模型最多可以训练 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”），请在实体列表中同时提供这两个实体。

其他建议可以在 [提高自定义实体识别器的性能](cer-metrics.md#cer-performance) 找到 