了解分類專案的類型
自訂文字分類會將標籤 (在 Azure AI 語言服務中稱為「類別」) 指派給文字檔。 例如,電玩遊戲摘要可能分類為「冒險」、「策略」、「動作」或「運動」。
自訂文字分類分為兩種類型的專案:
- 單一標籤分類 - 只能為每個檔案指派一個類別。 沿用上述範例,電玩遊戲摘要只能分類為「冒險」或「策略」。
- 多標籤分類 - 可為每個檔案指派多個類別。 這種類型的專案可讓您將電玩遊戲摘要分類為「冒險」或「冒險與策略」。
建立自訂文字分類專案時,您可以指定要建置哪種專案。
單一標籤與多標籤專案
除了可將檔案歸入多個分類之外,多標籤分類專案的主要差異是標記、改善模型的考量,以及分類工作的 API 承載。
為資料加上標籤
在單一標籤專案中,每個檔案在標記流程期間都會獲得一個指派的類別;Azure AI 語言中的類別指派只能讓您選取一個類別。
標記多標籤專案時,可以為每個檔案指派您想要的類別數目。 增加複雜度遭成的影響表示您的資料必須保持清晰,並妥善分佈可能的輸入,以便讓模型從中學習。
正確標記資料與模型效能直接相互關聯,特別是多標籤專案。 資料集的品質、清晰度和變異程度愈高,模型就越精確。
評估及改善模型
衡量模型的預測效能超出正確預測的數量。 正確的分類是當實際標籤為 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"
}
]
}
]
}
}