定型是模型從標記資料中學習的流程。 完成定型後,您可以檢視模型的效能,並判斷是否需要改善模型。
若要定型模型,您可以啟動定型作業,而且只有順利完成的作業會建立模型。 定型作業會在七天後到期,這表示您在此時間後無法擷取作業詳細資料。 如果你的訓練工作成功完成且模型已建立,該模型不會受到影響。 您一次只能執行一個定型作業,而且您無法在同一個專案中啟動其他作業。
訓練時間會有所不同。 訓練時間從處理少量文件時幾分鐘到數小時不等,視資料集大小和結構的複雜度而定。
先決條件
請參閱 專案開發生命週期。
資料分割
開始定型程序之前,專案中加上標籤的文件會分成定型集和測試集。 每一個都提供不同的功能。 訓練集用於訓練模型。 它是模型學習標記實體以及要擷取哪些文字區段作為實體的集合。 該測試集是一個盲集,不會在定型期間 (而是只在評估期間) 引入模型。 模型訓練成功完成後,模型會根據測試文件進行預測,並計算 評估指標 。 建議您確定所有實體都已充分呈現在訓練和測試集中。
自訂 NER 支援兩種資料分割方法:
- 自動將測試集與訓練資料分離:系統會根據你選擇的百分比,將標記的資料分配到訓練集和測試集之間。 建議的百分比分割是 80% 用於定型,20% 用於測試。
附註
如果您選擇 [ 從定型數據自動分割測試集 ] 選項,則只有指派給定型集的數據會根據提供的百分比來分割。
- 使用手動分割定型和測試資料:此方法可讓使用者定義哪些具有標籤的文件應該屬於哪個集合。 若您在資料標註過程中將文件加入測試集,此步驟才會啟用。
訓練模型(REST API)
當你標記好資料並設定好資料分割設定後,就可以開始使用 REST API 訓練自訂的 NER 模型。 培訓流程包括提交培訓工作申請並監控進度直到完成。 本節提供啟動訓練及檢查訓練工作狀態所需的 API 呼叫。
開始定型作業
使用下列 URL、標頭和 JSON 本文來提交 POST 要求,以提交定型作業。 以您自己的值取代預留位置值。
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
| 預留位置 | 值 | 範例 |
|---|---|---|
{ENDPOINT} |
用於驗證 API 要求的端點。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
您專案的名稱。 此值區分大小寫。 | myProject |
{API-VERSION} |
您所呼叫 API 的版本。 所引用的值為最新版本。 欲了解更多資訊, 請參閱模型生命週期。 | 2022-05-01 |
headers
使用下列標頭來驗證您的要求。
| Key | 值 |
|---|---|
Ocp-Apim-Subscription-Key |
資源的金鑰。 用於驗證 API 要求。 |
請求主體
在您的要求本文中使用下列 JSON。 訓練完成之後,該模型會被指定為 {MODEL-NAME}。 只有成功的培訓工作才能產生模型。
{
"modelLabel": "{MODEL-NAME}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"trainingSplitPercentage": 80,
"testingSplitPercentage": 20
}
}
| Key | 預留位置 | 值 | 範例 |
|---|---|---|---|
| modelLabel | {MODEL-NAME} |
在成功訓練之後指派給模型的模型名稱。 | myModel |
| trainingConfigVersion | {CONFIG-VERSION} |
這是用來訓練模型的 模型版本 。 | 2022-05-01 |
| evaluationOptions | 將您的資料分割到定型集和測試集的選項。 | {} |
|
| 種類 | percentage |
分割方法。 可能的值為 percentage 或 manual。 如需詳細資訊, 請參閱如何定型模型。 |
percentage |
| trainingSplitPercentage | 80 |
要包含在定型集中的標記資料百分比。 建議的值為 80。 |
80 |
| testingSplitPercentage | 20 |
要包含在測試集中的標記資料百分比。 建議的值為 20。 |
20 |
附註
只有在 trainingSplitPercentage 設定為 testingSplitPercentage 且這兩個百分比的總和應該等於 100 時,才需要 Kind 和 percentage。
傳送 API 請求後,您會收到回應 202 ,指出任務已正確提交。 在回應標頭中,擷取 location 的值,格式如下:
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
{JOB-ID} 用來識別您的要求,因為此為非同步作業。 您可以使用此 URL 來取得定型狀態。
查詢培訓職缺狀態(REST API)
訓練可能需要一些時間,這取決於你的訓練資料大小和結構的複雜度。 你可以使用以下請求持續查詢培訓工作狀態,直到成功完成。
使用下列 GET 要求來取得模型定型程序的狀態。 以您自己的值取代預留位置值。
要求 URL
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
| 預留位置 | 值 | 範例 |
|---|---|---|
{ENDPOINT} |
用於驗證 API 要求的端點。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
您專案的名稱。 此值區分大小寫。 | myProject |
{JOB-ID} |
用來尋找模型定型狀態的識別碼。 此值是在上一個步驟中收到的 location 標頭值。 |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
您所呼叫 API 的版本。 所引用的值為最新版本。 欲了解更多資訊, 請參閱模型生命週期。 | 2022-05-01 |
headers
使用下列標頭來驗證您的要求。
| Key | 值 |
|---|---|
Ocp-Apim-Subscription-Key |
資源的金鑰。 用於驗證 API 要求。 |
回應本文
一旦你發送請求,就會收到以下回覆。
{
"result": {
"modelLabel": "{MODEL-NAME}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"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": "{JOB-ID}",
"createdDateTime": "2022-04-18T15:44:44Z",
"lastUpdatedDateTime": "2022-04-18T15:45:48Z",
"expirationDateTime": "2022-04-25T15:44:44Z",
"status": "running"
}
取消訓練工作(REST API)
如果你需要停止正在進行中的訓練工作,可以用 REST API 取消它。 當你發現資料或設定有問題,想要在重新開始訓練流程前做修正時,取消訓練工作非常有用。
使用下列 URL、標頭和 JSON 本文來建立 POST 要求,以取消定型工作。
要求 URL
建立 API 要求時,請使用下列 URL。 以您自己的值取代預留位置值。
{Endpoint}/language/authoring/analyze-text/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 的版本。 所參考的值適用於最新發行的模型版本。 | 2022-05-01 |
headers
使用下列標頭來驗證您的要求。
| Key | 值 |
|---|---|
Ocp-Apim-Subscription-Key |
資源的金鑰。 用於驗證 API 要求。 |
在您發送 API 請求後,您會收到一個 202 回應,其中包含用來檢查任務狀態的Operation-Location 標頭。
後續步驟
完成定型後,您可以檢視模型效能,並視需要選擇性地改善模型。 在對模型感到滿意之後,您就可以將其部署並用於從文字中擷取實體。