了解分類專案的類型

已完成

自訂文字分類會將標籤 (在 Azure AI 語言服務中稱為「類別」) 指派給文字檔。 例如,電玩遊戲摘要可能分類為「冒險」、「策略」、「動作」或「運動」。

自訂文字分類分為兩種類型的專案:

  • 單一標籤分類 - 只能為每個檔案指派一個類別。 沿用上述範例,電玩遊戲摘要只能分類為「冒險」或「策略」。
  • 多標籤分類 - 可為每個檔案指派多個類別。 這種類型的專案可讓您將電玩遊戲摘要分類為「冒險」或「冒險與策略」。

建立自訂文字分類專案時,您可以指定要建置哪種專案。

單一標籤與多標籤專案

除了可將檔案歸入多個分類之外,多標籤分類專案的主要差異是標記、改善模型的考量,以及分類工作的 API 承載。

為資料加上標籤

在單一標籤專案中,每個檔案在標記流程期間都會獲得一個指派的類別;Azure AI 語言中的類別指派只能讓您選取一個類別。

標記多標籤專案時,可以為每個檔案指派您想要的類別數目。 增加複雜度遭成的影響表示您的資料必須保持清晰,並妥善分佈可能的輸入,以便讓模型從中學習。

Conceptual diagram that shows mapping of documents to labels for single label and multiple label classifications.

正確標記資料與模型效能直接相互關聯,特別是多標籤專案。 資料集的品質、清晰度和變異程度愈高,模型就越精確。

評估及改善模型

衡量模型的預測效能超出正確預測的數量。 正確的分類是當實際標籤為 x 且模型預測標籤 x 時。 在真實世界中,當分類不正確時,文件會產生不同類型的錯誤:

  • 誤判 - 模型預測 x,但檔案沒有加上 x 標籤。
  • 誤判 - 模型沒有預測標籤 x,但檔案事實上已加上 x 標籤。

這些計量會轉譯成 Azure AI 語言所提供的三個量值:

  • 召回率 - 所有實際標籤中識別出的數目;確判為真與所有已加上標籤的比率。
  • 精確度 - 正確預測標籤的數目;確判為真與所有已識別確判的比率。
  • F1 分數 - 召回率精確度的函式,用途是提供單一分數以最大化每個元件的平衡

提示

深入了解 Azure AI 語言評估計量,包括計算這些計量的確切方式

使用單一標籤專案,您可以識別哪些類別未分類及已分類的項目,並尋找更多高品質資料來定型模型。 針對多標籤專案,找出高品質資料會因為標籤的可能排列組合矩陣而變得更複雜。

例如,模型可正確分類「動作」遊戲和「動作和策略」遊戲,但分類「策略」遊戲卻失敗了。 為了改善模型,您需找出「動作和策略」以及「策略」遊戲品質更高的且有不同變化的摘要,藉此教導模型如何區分這兩者。 隨著模型分類的可能類別增加,這項挑戰性會以指數方式提高。

API 承載

Azure AI 語言會使用 JSON 主體來指定要求,以提供 REST API 來建置模型並與之互動。 此 API 會抽離成多個語言專用的 SDK,不過在本課程模組中,我們將範例著重於基礎 REST API。

若要提交分類工作,API 需要 JSON 主體,用於指定要執行的工作。 您將在下一個單元中深入了解 REST API,但先熟悉一下所需主體的各個部分會有所幫助。

單一標籤分類模型會指定 customSingleLabelClassification 的專案類型:

{
  "projectFileVersion": "<API-VERSION>",
  "stringIndexType": "Utf16CodeUnit",
  "metadata": {
    "projectName": "<PROJECT-NAME>",
    "storageInputContainerName": "<CONTAINER-NAME>",
    "projectKind": "customSingleLabelClassification",
    "description": "Trying out custom multi label text classification",
    "language": "<LANGUAGE-CODE>",
    "multilingual": true,
    "settings": {}
  },
  "assets": {
    "projectKind": "customSingleLabelClassification",
        "classes": [
            {
                "category": "Class1"
            },
            {
                "category": "Class2"
            }
        ],
        "documents": [
            {
                "location": "<DOCUMENT-NAME>",
                "language": "<LANGUAGE-CODE>",
                "dataset": "<DATASET>",
                "class": {
                    "category": "Class2"
                }
            },
            {
                "location": "<DOCUMENT-NAME>",
                "language": "<LANGUAGE-CODE>",
                "dataset": "<DATASET>",
                "class": {
                    "category": "Class1"
                }
            }
        ]
    }
}

多標籤分類模型會指定 CustomMultiLabelClassification 的專案類型

{
  "projectFileVersion": "<API-VERSION>",
  "stringIndexType": "Utf16CodeUnit",
  "metadata": {
    "projectName": "<PROJECT-NAME>",
    "storageInputContainerName": "<CONTAINER-NAME>",
    "projectKind": "customMultiLabelClassification",
    "description": "Trying out custom multi label text classification",
    "language": "<LANGUAGE-CODE>",
    "multilingual": true,
    "settings": {}
  },
  "assets": {
    "projectKind": "customMultiLabelClassification",
    "classes": [
      {
        "category": "Class1"
      },
      {
        "category": "Class2"
      }
    ],
    "documents": [
      {
        "location": "<DOCUMENT-NAME>",
        "language": "<LANGUAGE-CODE>",
        "dataset": "<DATASET>",
        "classes": [
          {
            "category": "Class1"
          },
          {
            "category": "Class2"
          }
        ]
      },
      {
        "location": "<DOCUMENT-NAME>",
        "language": "<LANGUAGE-CODE>",
        "dataset": "<DATASET>",
        "classes": [
          {
            "category": "Class2"
          }
        ]
      }
    ]
  }
}