了解自訂具名實體辨識

已完成

自訂 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 語言專案生命週期

Conceptual diagram showing a project steps to define entities, tag data, train model, view model, improve model, deploy model, and extract entities.

建立實體擷取模型通常會遵循與大部分 Azure AI 語言服務功能類似的路徑:

  1. 定義實體:了解您想要識別的資料和實體,並嘗試盡可能明確定義出來。 例如,定義您要擷取銀行對帳單中的確切部分。
  2. 標記資料:為您現有的資料加上標籤或標記,並指定資料集中的文字對應至哪個實體。 正確且徹底執行此步驟很重要,因為任何錯誤或遺漏的標籤都會降低定型模型的有效性。 可能的輸入文件有多種變化會很有幫助。 例如,可標記銀行名稱、客戶姓名、客戶地址、特定貸款或帳戶條款、貸款或帳戶金額,以及帳戶號碼。
  3. 定型模型:標記實體之後定型模型。 定型可教導模型如何辨識您標記的實體。
  4. 檢視模型:定型模型之後,檢視模型的結果。 此頁面包含根據測試資料的精確度和召回率得出的分數 (範圍 0 到 1)。 您可以看到哪些實體成效良好 (例如客戶姓名),以及哪些實體需要改進 (例如帳戶號碼)。
  5. 改善模型:查看哪些實體無法辨識,以及哪些實體未正確擷取,以改善您的模型。 了解為了改善效能需新增至模型定型的資料。 此頁面會顯示實體失敗的程度,以及哪些實體 (例如帳戶號碼) 需要與其他相似的實體 (例如貸款金額) 區別開來。
  6. 部署模型:模型如期望般執行後,可部署模型,使其可透過 API 使用。 在我們的範例中,您可以在模型部署以擷取銀行帳單實體時,將要求傳送至模型。
  7. 擷取實體:使用模型來擷取實體。 實驗室會說明如何使用 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 語言的服務限制 頁面。