了解用於建置交談語言理解模型的資源

已完成

若要使用 Language Understanding 服務開發 NLP 解決方案,您必須在 Azure 中建立語言資源。 此資源會用於撰寫模型以及處理來自用戶端應用程式的預測要求。

提示

本課程模組的實驗室涵蓋建置交談語言理解的模型。 如需更側重自訂文字分類和自訂具名實體辨識的課程模組,請參閱開發自然語言解決方案學習路徑中的自訂解決方案模組。

建置模型

如需有預測用途模型的功能,您必須先建置、定型及部署該模型,再使用此模型預測。 此建置和訓練會教導 Azure AI 語言服務要尋找的目標內容。

首先,您必須在 Azure 入口網站 中建立自己的 Azure AI 語言資源。 接下來:

  1. 搜尋 Azure AI 服務
  2. 尋找並選取 [語言服務]
  3. 選取 [語言服務] 底下的 [建立]
  4. 填寫必要的詳細資料,選擇地理位置上最接近您的區域 (以獲得最佳效能) 並為其提供唯一的名稱。

建立該資源之後,您將需要金鑰和端點。 請見 [資源概觀] 頁面左側的 [金鑰與端點] 下方。

使用 Language Studio

如需更豐富的視覺化方法用以建置、定型與部署模型,您可以使用 Language Studio 達成每個步驟的目標。 在主要頁面上,您可以選擇建立交談語言理解專案。 建立專案之後,請利用上文所述的相同程序,建置、定型及部署模型。

Screenshot of the Language Studio home page.

本課程模組中的實驗室會向您逐步解說,如何使用 Language Studio 建置模型。 如果您想要深入了解,請參閱 Language Studio 快速入門

使用 REST API

透過 REST API 可以建置模型。 此模式為建立專案、匯入資料、定型、部署,然後使用模型。

這些工作會以非同步方式完成,每個步驟都必須提交適當的 URI 要求,再傳送另一個要求以取得工作狀態。

例如,如果想要部署交談語言理解專案的模型,您要提交部署工作,然後檢查部署工作的狀態。

驗證

每次呼叫 Azure AI 語言資源,您都要提供下列標頭以驗證要求。

機碼
Ocp-Apim-Subscription-Key 資源的金鑰

要求部署

POST 要求提交至下列端點。

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
預留位置 範例
{ENDPOINT} Azure AI 語言資源的端點 https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} 專案名稱。 此值區分大小寫 myProject
{DEPLOYMENT-NAME} 部署的名稱。 此值區分大小寫 staging
{API-VERSION} 要呼叫的 API 版本 2022-05-01

要求中要包含下列 body

{
  "trainedModelLabel": "{MODEL-NAME}",
}
預留位置
{MODEL-NAME} 模型名稱會指派給您的部署。 此值區分大小寫。

成功提交要求要,您將會收到 202 回應,回應標頭為 operation-location。 此標頭附有可用以要求狀態的 URL,格式如下:

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}

取得部署狀態

GET 要求提交給上述回應標頭中的 URL。 值會根據初始部署要求填入。

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
預留位置
{ENDPOINT} 用於驗證 API 要求的端點
{PROJECT-NAME} 專案名稱 (區分大小寫)
{DEPLOYMENT-NAME} 部署名稱 (區分大小寫)
{JOB-ID} 尋找模型定型狀態的識別碼,可在上文部署要求詳述的標頭值中找到
{API-VERSION} 要呼叫的 API 版本

回應本文會提供部署狀態的詳細資料。 部署完成後,[status] 欄位的值會是「成功」

{
    "jobId":"{JOB-ID}",
    "createdDateTime":"String",
    "lastUpdatedDateTime":"String",
    "expirationDateTime":"String",
    "status":"running"
}

如需每個步驟的完整逐步解說附範例要求,請參閱交談理解快速入門

查詢您的模型

若要查詢您的模型以進行預測,您可以在 C# 或 Python 中使用 SDK,或使用 REST API。

使用 SDK 進行查詢

若要使用 SDK 查詢模型,您必須先建立用戶端。 擁有用戶端之後,您就可以使用用戶端來呼叫適當的端點。

var languageClient = new TextAnalyticsClient(endpoint, credentials);
var response = languageClient.ExtractKeyPhrases(document);
language_client = TextAnalyticsClient(
            endpoint=endpoint, 
            credential=credentials)
response = language_client.extract_key_phrases(documents = documents)[0]

其他語言功能,例如交談語言理解,需要以不同的方式建置並傳送要求。

var data = new
{
    analysisInput = new
    {
        conversationItem = new
        {
            text = userText,
            id = "1",
            participantId = "1",
        }
    },
    parameters = new
    {
        projectName,
        deploymentName,
        // Use Utf16CodeUnit for strings in .NET.
        stringIndexType = "Utf16CodeUnit",
    },
    kind = "Conversation",
};
Response response = await client.AnalyzeConversationAsync(RequestContent.Create(data));
result = client.analyze_conversation(
    task={
        "kind": "Conversation",
        "analysisInput": {
            "conversationItem": {
                "participantId": "1",
                "id": "1",
                "modality": "text",
                "language": "en",
                "text": query
            },
            "isLoggingEnabled": False
        },
        "parameters": {
            "projectName": cls_project,
            "deploymentName": deployment_slot,
            "verbose": True
        }
    }
)

使用 REST API 進行查詢

若要使用 REST 查詢模型,請使用適當的指定主體,在合適的 URL 建立 POST 要求。 若是語言偵測或情感分析等內建功能,您要查詢 analyze-text 端點。

提示

請記住,每個要求都必須使用 Ocp-Apim-Subscription-Key 標頭中的 Azure AI 語言資源金鑰進行驗證

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
預留位置
{ENDPOINT} 用於驗證 API 要求的端點
{API-VERSION} 要呼叫的 API 版本

在該要求的主體中,您必須指定 kind 參數,告知服務您要求的語言理解類型。

例如,如果您想要偵測語言,JSON 主體即會看起來像下面這樣。

{
    "kind": "LanguageDetection",
    "parameters": {
        "modelVersion": "latest"
    },
    "analysisInput":{
        "documents":[
            {
                "id":"1",
                "text": "This is a document written in English."
            }
        ]
    }
}

其他語言功能,例如交談語言理解,需要將要求路由至不同的端點。 例如,交談語言理解要求會傳送至下列端點。

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
預留位置
{ENDPOINT} 用於驗證 API 要求的端點
{API-VERSION} 要呼叫的 API 版本

該要求會包含類似下面這樣的 JSON 主體。

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
預留位置
{PROJECT-NAME} 建置模型的專案名稱
{DEPLOYMENT-NAME} 您部署的名稱

範例回覆

SDK 的查詢回應會在傳回的物件中,視功能而有所不同 (例如在 response.key_phrasesresponse.Value 中)。 REST API 會傳回類似下列的 JSON。

{
    "kind": "KeyPhraseExtractionResults",
    "results": {
        "documents": [{
            "id": "1",
            "keyPhrases": ["modern medical office", "Dr. Smith", "great staff"],
            "warnings": []
        }],
        "errors": [],
        "modelVersion": "{VERSION}"
    }
}

對於交談語言理解等其他模型,查詢的範例回應會類似於下列內容。

{
  "kind": "ConversationResult",
  "result": {
    "query": "String",
    "prediction": {
      "topIntent": "intent1",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "intent1",
          "confidenceScore": 1
        },
        {
          "category": "intent2",
          "confidenceScore": 0
        }
      ],
      "entities": [
        {
          "category": "entity1",
          "text": "text",
          "offset": 7,
          "length": 4,
          "confidenceScore": 1
        }
      ]
    }
  }
}

Python 和 C# 的 SDK 會傳回非常類似於 REST 回應的 JSON。

如需有關功能的完整文件,包括範例和操作指南,請參閱 [Azure AI 語言文件] 文件頁面。