將您的交談語言理解模型定型
完成標記表達之後,您就可以開始定型模型。 定型是模型從標記表達中學習的流程。
若要定型模型,請啟動定型作業。 只有成功完成的作業才能建立模型。 定型作業會在七天後到期,您在此時間後無法擷取作業詳細資料。 如果您的定型作業順利完成,且已建立模型,模型將不會受到作業到期的影響。 您一次只能執行一個定型作業,而且您無法在同一個專案中啟動其他作業。
定型時間的範圍可以從處理協調流程工作流程專案時的幾秒鐘,一直到觸及表達上限的幾小時。
成功完成定型之後,就會自動觸發模型評估。 評估流程一開始會使用已定型的模型,在測試集中的表達上執行預測,並比較預測的結果與提供的標籤 (以建立事實基準)。
必要條件
平衡訓練資料
在訓練資料方面,您應該嘗試讓結構描述保持良好平衡。 包含大量單一意圖及包含少量另一個意圖,會導致模型偏向於特定意圖。
若要解決此案例,您可能須針對訓練集縮小取樣。 或者,您可以選擇新增至訓練集。 若要縮小取樣,您可以:
- 隨機移除特定百分比的訓練資料。
- 分析資料集並移除代表性過高的重複項目,從而採用更系統化的方式。
若要新增至訓練集,請在 Language Studio 中,選取 [資料標記] 索引標籤中的 [建議表達]。 交談語言理解會將呼叫傳送給 Azure OpenAI 以產生類似的表達。
您也應該在訓練集中尋找非預期的「模式」。 例如,確認特定意圖的訓練集是否全部採用小寫,或以特定片語開頭。 在這種情況下,您訓練的模型可能會在訓練集中學習這些非預期的偏差,而不是能夠進行一般化。
建議您在訓練集中引進大小寫和標點符號多樣性。 如果您的模型預期會處理變化,務必要有一個也會反映該多樣性的訓練集。 例如,包含一些採用適當大小寫的表達,以及一些全部採用小寫的表達。
資料分割
開始定型程序之前,專案中加上標籤的表達會分成定型集和測試集。 每一個都提供不同的功能。
定型集用於定型模型,模型從此定型集學習加上標籤的表達。
該測試集是一個盲集,不會在定型期間 (而是只在評估期間) 引入模型。
成功定型模型之後,會用來從測試集中的表達進行預測。 這些預測用來計算評估計量。
建議您確定所有意圖和實體都已充分呈現在定型和測試集中。
交談語言理解支援兩種資料分割方法:
- 從定型資料自動分割測試集:系統會根據選擇的百分比,在定型與測試集之間分割標記的資料。 建議的百分比分割是 80% 用於定型,20% 用於測試。
注意
如果您選擇 [從定型資料自動分割測試集] 選項,則只會根據提供的百分比來分割向定型集指派的資料。
- 使用手動分割定型和測試資料:此方法可讓使用者定義哪些表達應該屬於哪個集合。 只有在您已在標記期間將表達新增至測試集時,才會啟用此步驟。
定型模式
CLU 支援兩種定型模型的模式
標準定型會使用快速的機器學習演算法,以相對快速的方式來定型您的模型。 此模式目前僅支援英文,針對未以英文 (美國) 或英文 (英國) 為其主要語言的任何專案,則為停用。 這個定型選項是免費的。 標準定型可讓您新增表達,並快速進行測試。 顯示的評估分數應可引導您了解專案哪些位置需進行變更,並新增更多表達。 在逐一查看數次並進行漸進式改進之後,您就可以考慮使用進階定型來定型其他版本的模型。
進階定型會使用最新的機器學習技術,以利用您的資料自訂模型。 此模式預期會為您的模型顯示較佳效能分數,也可讓您使用 CLU 的多語系功能。 進階定型採不同定價方式。 如需詳細資料,請參閱定價資訊。
使用評估分數來引導決策。 有時候,相較於使用標準定型模式,特定範例在進階定型中的預測反而不正確。 不過,如果使用進階定型的整體評估結果較佳,則建議您使用最終模型。 如果不是這種情況,而且您不想使用任何多語系功能,則可以繼續使用以標準模式定型的模型。
注意
當每個演算法以不同的方式校正其分數時,您應該會看到各定型模式間意圖信賴分數的行為差異。
定型模型
若要從 Language Studio 內開始定型模型:
從左側功能表中選取 [定型模型]。
從頂端功能表中選取 [開始定型作業]。
選取 [定型新模型],然後在文字輸入框中輸入模型名稱。 否則,若要以在新資料上定型的模型取代現有的模型,請選取 [覆寫現有的模型],然後選取現有的模型。 覆寫定型的模型是無法復原的,但在您部署新模型之前,不會影響已部署的模型。
選取定型模式。 您可以選擇 [標準定型] 來加快定型速度,但僅適用於英文。 或者,您可以選擇支援其他語言和多語系專案的 [進階定型],但需要較長的定型時間。 深入瞭解模型定型。
選取資料分割方法。 您可以選擇 [從定型資料自動分割測試集],使用此方法時,系統會根據指定的百分比,將您的表達分割為定型集與測試集。 或者,您可以選擇 [使用手動分割定型和測試資料],但只有在表達已新增至測試集,且您標記表達時,才會啟用此選項。
選取 [定型] 按鈕。
選取清單中的定型作業識別碼。 隨即顯示窗格,您可以在其中檢查此作業的定型進度、作業狀態及其他詳細資料。
注意
- 只有成功完成的定型作業才會產生模型。
- 根據表達的計數,定型可能需要幾分鐘到幾小時的時間。
- 您一次只能執行一個定型作業。 除非執行中的作業完成,否則無法在同一個專案內啟動其他定型作業。
- 用來定型模型的機器學習會定期更新。 若要在先前的設定版本上定型,請從 [開始定型作業] 頁面選取 [選取這裡以變更],然後選擇舊版。
開始定型作業
使用下列 URL、標頭和 JSON 本文來建立 POST 要求,以提交定型作業。
要求 URL
建立 API 要求時,請使用下列 URL。 以您自己的值取代預留位置值。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
預留位置 |
值 |
範例 |
{ENDPOINT} |
用於驗證 API 要求的端點。 |
https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
專案名稱。 此值區分大小寫。 |
EmailApp |
{API-VERSION} |
您正在呼叫的 API 版本。 |
2023-04-01 |
使用下列標頭來驗證您的要求。
機碼 |
值 |
Ocp-Apim-Subscription-Key |
資源的金鑰。 用於驗證 API 要求。 |
要求本文
在您的要求中使用下列物件。 定型完成後,模型會以您用於 modelLabel
參數的值命名。
{
"modelLabel": "{MODEL-NAME}",
"trainingMode": "{TRAINING-MODE}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"testingSplitPercentage": 20,
"trainingSplitPercentage": 80
}
}
機碼 |
預留位置 |
值 |
範例 |
modelLabel |
{MODEL-NAME} |
您的模型名稱。 |
Model1 |
trainingConfigVersion |
{CONFIG-VERSION} |
定型設定模型版本。 預設使用最新的模型版本。 |
2022-05-01 |
trainingMode |
{TRAINING-MODE} |
要用於定型的定型模式。 支援的模式是 [標準定型] 和 [進階定型],前者定型速度較快,但僅適用於英文;後者支援其他語言和多語系專案,但需要較長的定型時間。 深入瞭解模型定型。 |
standard |
kind |
percentage |
分割方法。 可能的值為 percentage 或 manual 。 如需詳細資訊,請參閱如何定型模型。 |
percentage |
trainingSplitPercentage |
80 |
要包含在定型集中的標記資料百分比。 建議的值為 80 。 |
80 |
testingSplitPercentage |
20 |
要包含在測試集中的標記資料百分比。 建議的值為 20 。 |
20 |
注意
只有在 Kind
設定為 percentage
且這兩個百分比的總和應該等於 100 時,才需要 trainingSplitPercentage
和 testingSplitPercentage
。
傳送 API 要求之後,您會收到表示成功的 202
回應。 在回應標頭中,擷取 operation-location
值。 其格式如下:
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
您可以使用此 URL 來取得定型作業狀態。
取得定型作業狀態
定型有時可能會視定型資料大小和結構描述構的複雜度而定。 您可以使用下列要求來持續輪詢定型作業的狀態,直到成功完成為止。
當您傳送成功的訓練要求時,檢查作業狀態的完整要求 URL (包括端點、專案名稱和作業識別碼) 包含在回應的 operation-location
標頭中。
使用下列 GET 要求來取得模型定型程序的狀態。 請以您自己的值取代下列預留位置值。
要求 URL
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
預留位置 |
值 |
範例 |
{YOUR-ENDPOINT} |
用於驗證 API 要求的端點。 |
https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
專案名稱。 此值區分大小寫。 |
EmailApp |
{JOB-ID} |
用來尋找模型定型狀態的識別碼。 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
您正在呼叫的 API 版本。 |
2023-04-01 |
使用下列標頭來驗證您的要求。
機碼 |
值 |
Ocp-Apim-Subscription-Key |
資源的金鑰。 用於驗證 API 要求。 |
回應本文
傳送要求之後,您會收到下列回應。 持續輪詢此端點,直到狀態參數變更為「成功」為止。
{
"result": {
"modelLabel": "{MODEL-LABEL}",
"trainingConfigVersion": "{TRAINING-CONFIG-VERSION}",
"trainingMode": "{TRAINING-MODE}",
"estimatedEndDateTime": "2022-04-18T15:47:58.8190649Z",
"trainingStatus": {
"percentComplete": 3,
"startDateTime": "2022-04-18T15:45:06.8190649Z",
"status": "running"
},
"evaluationStatus": {
"percentComplete": 0,
"status": "notStarted"
}
},
"jobId": "xxxxx-xxxxx-xxxx-xxxxx-xxxx",
"createdDateTime": "2022-04-18T15:44:44Z",
"lastUpdatedDateTime": "2022-04-18T15:45:48Z",
"expirationDateTime": "2022-04-25T15:44:44Z",
"status": "running"
}
機碼 |
值 |
範例 |
modelLabel |
模型名稱 |
Model1 |
trainingConfigVersion |
定型設定版本。 預設使用最新版本。 |
2022-05-01 |
trainingMode |
您選取的定型模式。 |
standard |
startDateTime |
開始定型的時間 |
2022-04-14T10:23:04.2598544Z |
status |
定型作業的狀態 |
running |
estimatedEndDateTime |
定型作業完成的估計時間 |
2022-04-14T10:29:38.2598544Z |
jobId |
定型作業識別碼 |
xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx |
createdDateTime |
定型作業建立日期及時間 |
2022-04-14T10:22:42Z |
lastUpdatedDateTime |
定型作業上次更新的日期及時間 |
2022-04-14T10:23:45Z |
expirationDateTime |
定型作業到期日及時間 |
2022-04-14T10:22:42Z |
取消定型作業
使用下列 URL、標頭和 JSON 本文來建立 POST 要求,以取消定型作業。
要求 URL
建立 API 要求時,請使用下列 URL。 請以您自己的值取代下列預留位置值。
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}/:cancel?api-version={API-VERSION}
預留位置 |
值 |
範例 |
{ENDPOINT} |
用於驗證 API 要求的端點。 |
https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
專案名稱。 此值區分大小寫。 |
EmailApp |
{JOB-ID} |
這是定型作業識別碼。 |
XXXXX-XXXXX-XXXX-XX |
{API-VERSION} |
您正在呼叫的 API 版本。 |
2023-04-01 |
使用下列標頭來驗證您的要求。
機碼 |
值 |
Ocp-Apim-Subscription-Key |
資源的金鑰。 用於驗證 API 要求。 |
傳送 API 要求之後,您將會收到指出成功的 202 回應,這表示您的定型作業已取消。 成功呼叫的結果是用於檢查作業狀態的 Operation-Location
標頭。
下一步