準備分類的文字訓練資料

本頁面說明如何準備文字資料,以便在 Vertex AI 資料集中訓練單一標籤和多標籤分類模型。

單一標籤分類

對於單一標籤分類,訓練資料包含文件和適用於這些文件的分類類別。單一標籤分類可讓您為文件指派一個標籤。

資料條件

  • 您必須提供至少 20 份但不超過 1,000,000 份的訓練文件。
  • 您必須提供至少 2 個但不超過 5000 個不重複的類別標籤。
  • 您必須將每個標籤套用於至少 10 份文件。
  • 如為多標籤分類,您可以為文件套用一或多個標籤。
  • 您可以內嵌文件或參考 Cloud Storage 值區中的 TXT 檔案。

訓練 AutoML 模型的文字資料最佳做法

以下建議適用於用於訓練 AutoML 模型的資料集。

  • 使用訓練資料時,請確保資料與要用來進行預測的資料同樣多樣化。加入長度不等的文件、不同作者撰寫的文件、使用不同用語或風格的文件等等。
  • 使用真人讀者容易分類的文件。AutoML 模型通常無法預測人類無法指派的類別標籤。因此,如果無法訓練人類透過閱讀文件的方式指定標籤,可能也無法訓練您的模式發揮同樣的作用。
  • 請盡量為每個標籤提供訓練文件,只要為每個標籤提供更多範例,即可提高模型的可信度分數。使用每個標籤的 50 個範例訓練模型,並評估結果。新增更多範例並重新訓練,直到達到準確度目標為止。每個標籤可能需要數百個甚至 1000 個範例。
  • 最常用標籤文件的數量不多於最少用標籤文件的 100 倍時,模型的訓練效果最佳。建議移除頻率非常低的標籤。
  • 請考慮為不符合任一已定義標籤的文件加入非網域標籤 (例如 None_of_the_above)。例如,若只為有關藝術和娛樂的文件加上標籤,但資料集包含與其他主題有關的文件,例如運動或科技,請為與其他主題相關的文件加上 None_of_the_above 標籤。如果沒有這類標籤,經過訓練的模型會嘗試將所有文件指派給其中一個定義的標籤,即使這些標籤不適合文件也一樣。
  • 如果您有大量文件目前不符合標記,請篩除這些文件,以免模型將預測結果偏向非領域標記。舉例來說,您可以建立篩選模型,預測文件是否符合目前的標籤組合,或是不屬於該領域。篩選後,您將擁有另一個模型,可分類僅限於網域內的文件。

輸入檔案

單標籤分類支援 JSON Lines 或 CSV 輸入檔案。您只能為特定文件指定一個標籤 (註解)。以下各節將說明輸入檔案,並提供各檔案類型的範例。

JSON 行

JSON Lines 檔案的格式、欄位名稱和值類型,是由結構定義檔案決定,這些檔案是可公開存取的 YAML 檔案。

您可以從下列 Cloud Storage 位置下載單標籤分類的結構定義檔案:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_single_label_io_format_1.0.0.yaml

JSON 行範例

以下範例說明如何使用結構定義建立自己的 JSON Lines 檔案。為了方便閱讀,範例中加入了換行符號。在 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 份但不超過 1,000,000 份的訓練文件。
  • 您必須提供至少 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 Lines 檔案的格式、欄位名稱和值類型,是由結構定義檔案決定,這些檔案是可公開存取的 YAML 檔案。

您可以從下列 Cloud Storage 位置下載多標籤分類的架構檔案:
gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_multi_label_io_format_1.0.0.yaml

JSON 行範例

以下範例說明如何使用結構定義建立自己的 JSON Lines 檔案。為了方便閱讀,範例中加入了換行符號。在 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