了解自訂具名實體辨識
自訂 NER 是一項 Azure API 服務,適用於文件、身分識別及擷取使用者定義的實體。 這些實體可以是任何內容,無論是銀行對帳單上姓名和地址,還是用於改善搜尋結果的知識採礦內容。
自訂 NER 是 Azure AI 服務中 Azure AI 語言的一部分。
自訂與內建 NER
Aure AI 語言提供某些內建實體辨識功能,可辨識人員、地點、組織或 URL 等項目。 內建 NER 可讓您以最少的設定設定服務及擷取實體。 若要呼叫內建 NER,請建立服務,並呼叫該 NER 服務的端點,如下所示:
<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
預留位置 | 值 | 範例 |
---|---|---|
<YOUR-ENDPOINT> |
API 要求的端點 | https://<your-resource>.cognitiveservices.azure.com |
<API-VERSION> |
您呼叫的 API 版本 | 2023-05-01 |
呼叫的本文將包含擷取實體的來源文件,標頭則包含您的服務金鑰。
上述呼叫的回應會包含辨識出的實體陣列,例如:
<...>
"entities":[
{
"text":"Seattle",
"category":"Location",
"subcategory":"GPE",
"offset":45,
"length":7,
"confidenceScore":0.99
},
{
"text":"next week",
"category":"DateTime",
"subcategory":"DateRange",
"offset":104,
"length":9,
"confidenceScore":0.8
}
]
<...>
適合使用內建 NER 的範例情況包括在冗長文字文件中尋找地點、名稱或 URL。
提示
NER 文件提供已辨識實體類別的完整清單。
如果要擷取的實體不屬於內建服務的範圍,或是只想擷取特定實體,可以使用自訂 NER,本課程模組的其餘內容將加以說明。 您可以根據應用程式的需求,將自訂 NER 模型設定為簡單或複雜。
範例情況如下:您希望自訂 NER 包含特定的法律或銀行資料、進行知識採礦來增強目錄搜尋結果,或尋找稽核政策中的特定文字。 每個專案都需要一組特定的實體和需要擷取的資料。
Azure AI 語言專案生命週期
建立實體擷取模型通常會遵循與大部分 Azure AI 語言服務功能類似的路徑:
- 定義實體:了解您想要識別的資料和實體,並嘗試盡可能明確定義出來。 例如,定義您要擷取銀行對帳單中的確切部分。
- 標記資料:為您現有的資料加上標籤或標記,並指定資料集中的文字對應至哪個實體。 正確且徹底執行此步驟很重要,因為任何錯誤或遺漏的標籤都會降低定型模型的有效性。 可能的輸入文件有多種變化會很有幫助。 例如,可標記銀行名稱、客戶姓名、客戶地址、特定貸款或帳戶條款、貸款或帳戶金額,以及帳戶號碼。
- 定型模型:標記實體之後定型模型。 定型可教導模型如何辨識您標記的實體。
- 檢視模型:定型模型之後,檢視模型的結果。 此頁面包含根據測試資料的精確度和召回率得出的分數 (範圍 0 到 1)。 您可以看到哪些實體成效良好 (例如客戶姓名),以及哪些實體需要改進 (例如帳戶號碼)。
- 改善模型:查看哪些實體無法辨識,以及哪些實體未正確擷取,以改善您的模型。 了解為了改善效能需新增至模型定型的資料。 此頁面會顯示實體失敗的程度,以及哪些實體 (例如帳戶號碼) 需要與其他相似的實體 (例如貸款金額) 區別開來。
- 部署模型:模型如期望般執行後,可部署模型,使其可透過 API 使用。 在我們的範例中,您可以在模型部署以擷取銀行帳單實體時,將要求傳送至模型。
- 擷取實體:使用模型來擷取實體。 實驗室會說明如何使用 API,您也可以參閱 API 參考取得詳細資訊。
資料選取和精簡實體的考量
為了獲得最佳效能,需使用高品質資料來定型模型,以及清楚定義的實體類型。
高品質的資料可讓您花較少的時間進行改善,並讓模型產生更好的結果。
- 多樣性 - 盡可能使用多種資料集,且不缺少真實資料中預期的實際分佈。 您需盡可能使用來自多種來源的樣本資料,且各自有專屬的格式和實體數。 讓資料集代表越多來源越好。
- 分佈 - 使用適當的文件類型分佈。 用於定型模型的資料集越多元,越能協助模型避免從資料中學習不正確的關聯性。
- 精確度 - 使用的資料盡可能接近真實世界資料。 假資料在定型程序剛開始時有效,但可能與實際資料有所差異,導致模型無法正確擷取。
也需要仔細考慮實體,並盡可能明確定義。 避免模棱兩可的實體 (例如,銀行對帳單上相鄰的兩個名稱),因為這會導致模型難以區分。 如果需使用模棱兩可的實體,請務必提供更多範例讓模型學習以了解差異。
讓實體保持相異也有助於提升模型效能。 例如,嘗試擷取電話號碼、社交媒體名稱或電子郵件地址這類「聯絡資訊」時,需有多個範例來正確教導模型。 而是嘗試細分為更具體的實體,例如「電話」、「電子郵件」和「社交媒體」,並讓模型標記所找到的連絡人資訊類型。
如何擷取實體
若要提交擷取工作,API 需要 JSON 主體,用於指定要執行的工作。 針對自訂 NER,JSON 承載的工作是 CustomEntityRecognition
。
您的承載看起來會類似下列 JSON:
{
"displayName": "string",
"analysisInput": {
"documents": [
{
"id": "doc1",
"text": "string"
},
{
"id": "doc2",
"text": "string"
}
]
},
"tasks": [
{
"kind": "CustomEntityRecognition",
"taskName": "MyRecognitionTaskName",
"parameters": {
"projectName": "MyProject",
"deploymentName": "MyDeployment"
}
}
]
}
專案限制
Azure AI 語言服務會強制執行下列限制:
- 定型 - 至少 10 個檔案,上限為 100,000 個
- 部署 - 每個專案 10 個部署名稱
- API
- 製作 - 此 API 會建立專案、定型及部署模型。 上限為每分鐘 10 個 POST 和 100 個 GET
- 分析 - 此 API 會執行實際擷取實體的工作;它會要求工作並取出結果。 限制為 20 個 GET 或 POST
- 專案 - 每個專案只有 1 個儲存體帳戶、每個資源 500 個專案,以及每個專案 50 個已定型的模型
- 實體 - 每個實體最多可以有 500 個字元。 您最多可以有 200 個實體類型。
如需詳細資訊,請參閱 Azure AI 語言的服務限制 頁面。