Vysvětlení prostředků pro vytvoření modelu pro porozumění konverzačnímu jazyku

Dokončeno

Pokud chcete použít službu Language Understanding k vývoji řešení NLP, budete muset v Azure vytvořit prostředek jazyka. Tento prostředek se použije pro vytváření modelu i zpracování žádostí o predikce z klientských aplikací.

Tip

Cvičení tohoto modulu popisuje vytvoření modelu pro porozumění konverzačnímu jazyku. Další moduly zaměřené na vlastní klasifikaci textu a rozpoznávání vlastních pojmenovaných entit najdete v modulu vlastních řešení v studijním programu Vývoj řešení přirozeného jazyka.

Sestavení modelu

U funkcí, které vyžadují model pro predikci, budete muset tento model sestavit, vytrénovat a nasadit předtím, než ho použijete k vytvoření předpovědi. Toto sestavení a školení naučí službu Azure AI Language, co hledat.

Nejprve budete muset vytvořit prostředek Azure AI Language na webu Azure Portal. Potom:

  1. Vyhledejte služby Azure AI.
  2. Vyhledejte a vyberte Službu jazyka.
  3. V části Služba jazyka vyberte Vytvořit.
  4. Vyplňte potřebné podrobnosti a vyberte oblast, která je vám geograficky nejblíže (pro zajištění nejlepšího výkonu) a pojmenujte ji jedinečným názvem.

Po vytvoření prostředku budete potřebovat klíč a koncový bod. To najdete na levé straně v části Klíče a koncový bod na stránce přehledu prostředků.

Použití sady Language Studio

Pro vizuální metodu vytváření, trénování a nasazování modelu můžete k dosažení každého z těchto kroků použít Language Studio . Na hlavní stránce můžete vytvořit projekt pro porozumění konverzačnímu jazyku. Jakmile se projekt vytvoří, projděte si stejný proces jako výše a sestavte, vytrénujte a nasaďte model.

Screenshot of the Language Studio home page.

Testovací prostředí v tomto modulu vás provede pomocí sady Language Studio k sestavení modelu. Pokud se chcete dozvědět víc, podívejte se na rychlý start k sadě Language Studio.

Použití rozhraní REST API

Jedním ze způsobů, jak vytvořit model, je prostřednictvím rozhraní REST API. Vzorem by bylo vytvoření projektu, import dat, trénování, nasazení a následné použití modelu.

Tyto úlohy se provádějí asynchronně; Budete muset odeslat požadavek na příslušný identifikátor URI pro každý krok a pak odeslat další požadavek, abyste získali stav této úlohy.

Pokud například chcete nasadit model pro projekt pro porozumění konverzačnímu jazyku, odeslali byste úlohu nasazení a pak zkontrolujte stav úlohy nasazení.

Authentication

Pro každé volání prostředku Azure AI Language ověříte požadavek zadáním následující hlavičky.

Key Hodnota
Ocp-Apim-Subscription-Key Klíč k vašemu prostředku

Žádost o nasazení

Odešlete požadavek POST do následujícího koncového bodu.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Zástupný symbol Hodnota Příklad
{ENDPOINT} Koncový bod prostředku Azure AI Language https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Název projektu. U této hodnoty se rozlišují malá a velká písmena. myProject
{DEPLOYMENT-NAME} Název nasazení. U této hodnoty se rozlišují malá a velká písmena. staging
{API-VERSION} Verze rozhraní API, které voláte 2022-05-01

Do své žádosti zahrňte následující body údaje.

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Zástupný symbol Hodnota
{MODEL-NAME} Název modelu, který se přiřadí k vašemu nasazení. U této hodnoty se rozlišují malá a velká písmena.

Úspěšné odeslání požadavku obdrží odpověď s hlavičkou 202operation-locationodpovědi . Tato hlavička bude obsahovat adresu URL, se kterou se má vyžádat stav, který bude formátován takto:

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

Získání stavu nasazení

Odešlete požadavek GET na adresu URL z výše uvedené hlavičky odpovědi. Hodnoty se už vyplní na základě počáteční žádosti o nasazení.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Zástupný symbol Hodnota
{ENDPOINT} Koncový bod pro ověření požadavku rozhraní API
{PROJECT-NAME} Název projektu (rozlišují se malá a velká písmena)
{DEPLOYMENT-NAME} Název nasazení (rozlišují se malá a velká písmena)
{JOB-ID} ID pro vyhledání stavu trénování modelu, které najdete v hodnotě hlavičky uvedené výše v žádosti o nasazení
{API-VERSION} Verze rozhraní API, které voláte

Tělo odpovědi poskytne podrobnosti o stavu nasazení. Po status dokončení nasazení bude mít pole hodnotu úspěšného nasazení.

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

Úplný názorný postup jednotlivých kroků s ukázkovými žádostmi najdete v rychlém startu s konverzačním porozuměním.

Dotazování modelu

K dotazování modelu na predikci můžete použít sady SDK v jazyce C# nebo Python nebo použít rozhraní REST API.

Dotazování pomocí sad SDK

Pokud chcete dotazovat model pomocí sady SDK, musíte nejprve vytvořit klienta. Jakmile budete mít klienta, použijete ho k volání příslušného koncového bodu.

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]

Jiné jazykové funkce, jako je porozumění konverzačnímu jazyku, vyžadují, aby se požadavek sestavil a odesílal jinak.

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
        }
    }
)

Dotazování pomocí rozhraní REST API

Pokud chcete dotazovat model pomocí REST, vytvořte požadavek POST na příslušnou adresu URL se zadaným příslušným textem. U integrovaných funkcí, jako je rozpoznávání jazyka nebo analýza mínění, se budete dotazovat na analyze-text koncový bod.

Tip

Nezapomeňte, že každý požadavek musí být ověřený pomocí klíče prostředku Azure AI Language v Ocp-Apim-Subscription-Key hlavičce.

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
Zástupný symbol Hodnota
{ENDPOINT} Koncový bod pro ověření požadavku rozhraní API
{API-VERSION} Verze rozhraní API, které voláte

V textu tohoto požadavku musíte zadat kind parametr, který službě řekne, jaký typ jazyka rozumíte.

Pokud chcete například rozpoznat jazyk, text JSON by vypadal přibližně takto.

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

Jiné funkce jazyka, jako je porozumění konverzačnímu jazyku, vyžadují směrování požadavku do jiného koncového bodu. Například požadavek na porozumění konverzačnímu jazyku by se odeslal do následujícího příkladu.

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Zástupný symbol Hodnota
{ENDPOINT} Koncový bod pro ověření požadavku rozhraní API
{API-VERSION} Verze rozhraní API, které voláte

Tento požadavek by obsahoval text JSON podobný následujícímu.

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
Zástupný symbol Hodnota
{PROJECT-NAME} Název projektu, ve kterém jste vytvořili model
{DEPLOYMENT-NAME} Název nasazení

Ukázková odpověď

Odpověď dotazu ze sady SDK se vrátí do vráceného objektu, který se liší v závislosti na funkci (například v response.key_phrases nebo response.Value). Rozhraní REST API vrátí json, který by byl podobný následujícímu.

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

U jiných modelů, jako je porozumění konverzačnímu jazyku, by ukázková odpověď na váš dotaz byla podobná následující.

{
  "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
        }
      ]
    }
  }
}

Sady SDK pro Python i C# vrací json, který je velmi podobný odpovědi REST.

Úplnou dokumentaci k funkcím, včetně příkladů a návodů, najdete na stránkách dokumentace k jazyku Azure AI.