准备用于分类的文本训练数据

本页面介绍了如何准备文本数据,以便在 Vertex AI 数据集中使用来训练单标签和多标签分类模型。

单标签分类

对于单标签分类,训练数据包含文档以及适用于这些文档的分类类别。单标签分类只允许为一个文档分配一个标签。

数据要求

  • 您必须提供至少 20 个训练文档,但最多不得超过 100 万个训练文档。
  • 您必须提供至少 2 个具有唯一性的类别标签,但最多不得超过 5000 个。
  • 您必须将每个标签应用于至少 10 个文档。
  • 对于多标签分类,您可以对文档应用一个或多个标签。
  • 您可以添加内嵌或引用 Cloud Storage 存储分区中的 TXT 文件。

用于训练 AutoML 模型的文本数据的最佳做法

以下建议适用于训练 AutoML 模型的数据集。

  • 使用与要对其执行预测的数据一样的训练数据。包含不同长度的文档,由不同人员撰写的文档,使用不同措辞和风格的文档等等。
  • 使用人类读者可以轻松分类的文档。 AutoML 模型通常不能预测人类无法分配的类别标签。因此,如果一个人经过训练,仍无法在阅读某个文档后为其分配标签,那么模型很可能也无法通过训练做到这一点。
  • 为每个标签提供尽可能多的训练文档。您可以每个标签使用更多样本,从而提高模型的置信度分数。每个标签使用 50 个示例训练模型并评估结果。添加更多示例并进行重新培训,直到达到准确性目标为止,每个标签可能需要数百甚至 1000 个示例。
  • 当最常用标签的文档最多比最不常用标签的文档多 100 倍时,该模型效果最佳。建议移除出现频率极低的标签。
  • 考虑为不符合任何已定义标签的文档添加网域外部标签(例如 None_of_the_above)。例如,如果您仅为艺术和娱乐方面的文档添加了标签,但数据集包含有关其他主题(例如体育或技术)的文档,请为有关其他主题的文档添加 None_of_the_above 标签。如果没有这样的标签,则经过训练的模型会尝试将所有文档分配给已定义的标签之一,即使这些标签并不适合文档也是如此。
  • 如果您的大量文档当前与您的标签不匹配,请过滤掉这些文档,这样模型就不会将预测与域外标签混淆。例如,您可能有一个过滤模型,用于预测文档是适合当前标签集还是位于例外网域中。过滤之后,您会获得另一个模型,以便仅对网域文档进行分类。

输入文件

单标签分类支持 JSON 行或 CSV 输入文件。对于一个给定文档,您只能指定一个标签(注解)。以下部分介绍输入文件并为每种文件类型提供示例。

JSON 行

JSON 行文件的格式、字段名称、值类型由架构文件(可公开访问的 YAML 文件)决定。

您可以从以下 Cloud Storage 位置下载单标签分类的架构文件:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_single_label_io_format_1.0.0.yaml

JSON 行示例

以下示例展示了如何使用架构创建自己的 JSON 行文件。为了便于阅读,示例包括换行符。在 JSON 文件中,请仅在每个文档后面添加换行符。例如,dataItemResourceLabels 字段指定 ml_use 且是可选的。

{
  "classificationAnnotation": {
    "displayName": "label"
  },
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotation": {
    "displayName": "label2"
  },
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

CSV 文件中的每一行指的是一个文档。以下示例展示了有效 CSV 文件的一般格式。ml_use 列是可选列。

[ml_use],gcs_file_uri|"inline_text",label

以下片段是输入 CSV 文件的一个示例。

test,gs://path_to_file,label1
test,"inline_text",label2
training,gs://path_to_file,label3
validation,gs://path_to_file,label1

多标签分类

对于多标签分类,训练数据包含文档以及适用于这些文档的分类类别。多标签分类允许为一个文档分配一个或多个标签。

数据要求

  • 您必须提供至少 20 个训练文档,但最多不得超过 100 万个训练文档。
  • 您必须提供至少 2 个具有唯一性的类别标签,但最多不得超过 5000 个。
  • 您必须将每个标签应用于至少 10 个文档。
  • 对于多标签分类,您可以对文档应用一个或多个标签。
  • 您可以添加内嵌或引用 Cloud Storage 存储分区中的 TXT 文件。

用于训练 AutoML 模型的文本数据的最佳做法

以下建议适用于训练 AutoML 模型的数据集。

  • 使用与要对其执行预测的数据一样的训练数据。包含不同长度的文档,由不同人员撰写的文档,使用不同措辞和风格的文档等等。
  • 使用人类读者可以轻松分类的文档。 AutoML 模型通常不能预测人类无法分配的类别标签。因此,如果一个人经过训练,仍无法在阅读某个文档后为其分配标签,那么模型很可能也无法通过训练做到这一点。
  • 使用多标签分类时,请为每个文档应用所有相关标签。例如,如果您要为详细介绍药物的文档添加标签,则要会有标有 DosageSide Effects 的文档。
  • 为每个标签提供尽可能多的训练文档。您可以每个标签使用更多样本,从而提高模型的置信度分数。如果模型对文档进行分类时返回多个标签,提高置信度分数尤其有用。 每个标签使用 50 个示例训练模型并评估结果。添加更多示例并进行重新培训,直到达到准确性目标为止,每个标签可能需要数百甚至 1000 个示例。
  • 当最常用标签的文档最多比最不常用标签的文档多 100 倍时,该模型效果最佳。建议移除出现频率极低的标签。
  • 考虑为不符合任何已定义标签的文档添加网域外部标签(例如 None_of_the_above)。例如,如果您仅为艺术和娱乐方面的文档添加了标签,但数据集包含有关其他主题(例如体育或技术)的文档,请为有关其他主题的文档添加 None_of_the_above 标签。如果没有这样的标签,则经过训练的模型会尝试将所有文档分配给已定义的标签之一,即使这些标签并不适合文档也是如此。
  • 如果您的大量文档当前与您的标签不匹配,请过滤掉这些文档,这样模型就不会将预测与域外标签混淆。例如,您可能有一个过滤模型,用于预测文档是适合当前标签集还是位于例外网域中。过滤之后,您会获得另一个模型,以便仅对网域文档进行分类。

输入文件

多标签分类支持 JSON 行或 CSV 输入文件。对于一个给定文档,您可以指定多个标签(注解)。以下部分介绍输入文件并为每种文件类型提供示例。

JSON 行

JSON 行文件的格式、字段名称、值类型由架构文件(可公开访问的 YAML 文件)决定。

您可以从以下 Cloud Storage 位置下载多标签分类的架构文件:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_multi_label_io_format_1.0.0.yaml

JSON 行示例

以下示例展示了如何使用架构创建自己的 JSON 行文件。为了便于阅读,示例包括换行符。在 JSON 文件中,请仅在每个文档后面添加换行符。例如,dataItemResourceLabels 字段指定 ml_use 且是可选的。

{
  "classificationAnnotations": [{
    "displayName": "label1"
    },{
    "displayName": "label2"
  }],
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotations": [{
    "displayName": "label2"
    },{
    "displayName": "label3"
  }],
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

CSV

CSV 文件中的每一行指的是一个文档。以下示例展示了有效 CSV 文件的一般格式。ml_use 列是可选列。

[ml_use],gcs_file_uri|"inline_text",label1,label2,...

以下片段是输入 CSV 文件的一个示例。

test,gs://path_to_file,label1,label2
test,"inline_text",label3
training,gs://path_to_file,label1,label2,label3
validation,gs://path_to_file,label4,label5