

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

# 多标签模式
<a name="prep-classifier-data-multi-label"></a>

在多标签模式下，各个类代表不相互排斥的不同类别。多标签模式为每个文档分配一个或多个类别。例如，您可以将一部电影归类为纪录片，将另一部电影归类为科幻小说、动作片和喜剧。

对于训练，多标签模式支持多达 100 万个示例，其中包含多达 100 个独特的类别。

**Topics**
+ [纯文本模型](#prep-multi-label-plaintext)
+ [原生文档模型](#prep-multi-label-structured)

## 纯文本模型
<a name="prep-multi-label-plaintext"></a>

要训练纯文本模型，您可以以 CSV 文件或来自 SageMaker AI Ground Truth 的增强清单文件的形式提供带标签的训练数据。

### CSV 文件
<a name="prep-multi-label-plaintext-csv"></a>

有关将 CSV 文件用于训练分类器的常规信息，请参阅 [CSV 文件](prep-class-data-format.md#prep-data-csv)。

以两列 CSV 文件形式提供训练数据。对于每一行，第一列包含类标签值，第二列包含这些类的示例文本文档。要在第一列中输入多个类别，请在每个类别之间使用分隔符（例如\$1）。

```
CLASS,Text of document 1
CLASS,Text of document 2
CLASS|CLASS|CLASS,Text of document 3
```

以下示例显示了 CSV 文件中的一行，该文件用于训练自定义分类器以检测电影摘要中的类别：

```
COMEDY|MYSTERY|SCIENCE_FICTION|TEEN,"A band of misfit teens become unlikely detectives when they discover troubling clues about their high school English teacher. Could the strange Mrs. Doe be an alien from outer space?"
```

类名之间的默认分隔符是竖线字符(\$1)。不过，您可以使用另一个字符作为分隔符。分隔符必须与类名中的所有字符不同。例如，如果您的类名是 CLASS\$11、CLASS\$12 和 CLASS\$13，则下划线(**\$1**)是类名的一部分。因此，不要使用下划线作为分隔类名的分隔符。

### 增强清单文件
<a name="prep-multi-label-plaintext-manifest"></a>

有关使用增强清单文件训练分类器的一般信息，请参阅 [增强清单文件](prep-class-data-format.md#prep-data-annotations)。

对于纯文本文档，增强清单文件的每一行都是一个完整的 JSON 对象。它包含来自 Ground Truth 的训练文档、类名和其他元数据。以下示例是一个增强清单文件，用于训练自定义分类器来检测电影摘要中的类别：

```
{"source":"Document 1 text", "MultiLabelJob":[0,4], "MultiLabelJob-metadata":{"job-name":"labeling-job/multilabeljob", "class-map":{"0":"action", "4":"drama"}, "human-annotated":"yes", "creation-date":"2020-05-21T19:02:21.521882", "confidence-map":{"0":0.66}, "type":"groundtruth/text-classification-multilabel"}}
{"source":"Document 2 text", "MultiLabelJob":[3,6], "MultiLabelJob-metadata":{"job-name":"labeling-job/multilabeljob", "class-map":{"3":"comedy", "6":"horror"}, "human-annotated":"yes", "creation-date":"2020-05-21T19:00:01.291202", "confidence-map":{"1":0.61,"0":0.61}, "type":"groundtruth/text-classification-multilabel"}}
{"source":"Document 3 text", "MultiLabelJob":[1], "MultiLabelJob-metadata":{"job-name":"labeling-job/multilabeljob", "class-map":{"1":"action"}, "human-annotated":"yes", "creation-date":"2020-05-21T18:58:51.662050", "confidence-map":{"1":0.68}, "type":"groundtruth/text-classification-multilabel"}}
```

 以下示例显示了增强清单文件中的一个 JSON 对象，该对象已格式化以提高可读性：

```
{
      "source": "A band of misfit teens become unlikely detectives when 
                   they discover troubling clues about their high school English teacher. 
                     Could the strange Mrs. Doe be an alien from outer space?",
      "MultiLabelJob": [
          3,
          8,
          10,
          11
      ],
      "MultiLabelJob-metadata": {
          "job-name": "labeling-job/multilabeljob",
          "class-map": {
              "3": "comedy",
              "8": "mystery",
              "10": "science_fiction",
              "11": "teen"
          },
          "human-annotated": "yes",
          "creation-date": "2020-05-21T19:00:01.291202",
          "confidence-map": {
              "3": 0.95,
              "8": 0.77,
              "10": 0.83,
              "11": 0.92
          },
          "type": "groundtruth/text-classification-multilabel"
      }
  }
```

在此示例中，`source` 属性提供训练文档的文本，而 `MultiLabelJob` 属性分配分类列表中多个类的索引。`MultiLabelJob` 元数据中的任务名称是您在 Ground Truth 中为标注任务定义的名称。

## 原生文档模型
<a name="prep-multi-label-structured"></a>

原生文档模型是使用原生文档（例如 PDF、DOCX 和图像文件）训练的模型。您以 CSV 文件形式提供标注的训练数据。

### CSV 文件
<a name="prep-multi-label-structured-csv"></a>

有关将 CSV 文件用于训练分类器的常规信息，请参阅 [CSV 文件](prep-class-data-format.md#prep-data-csv)。

以三列 CSV 文件形式提供训练数据。对于每一行，第一列包含类别标签值。第二列包含这些类的示例文档的文件名。第三列包含页码。如果示例文档是图像，则页码是可选项。

要在第一列中输入多个类别，请在每个类别之间使用分隔符（例如\$1）。

```
CLASS,input-doc-1.pdf,3
CLASS,input-doc-2.docx,1
CLASS|CLASS|CLASS,input-doc-3.png,2
```

以下示例显示了 CSV 文件中的一行，该文件用于训练自定义分类器以检测电影摘要中的类别。PDF 文件的第 2 页包含 comedy/teen 电影的示例。

```
COMEDY|TEEN,movie-summary-1.pdf,2
```

类名之间的默认分隔符是竖线字符(\$1)。不过，您可以使用另一个字符作为分隔符。分隔符必须与类名中的所有字符不同。例如，如果您的类名是 CLASS\$11、CLASS\$12 和 CLASS\$13，则下划线(**\$1**)是类名的一部分。因此，不要使用下划线作为分隔类名的分隔符。