Förstå resurser för att skapa en modell för förståelse av konversationsspråk

Slutförd

Om du vill använda tjänsten Language Understanding för att utveckla en NLP-lösning måste du skapa en språkresurs i Azure. Resursen kommer att användas för att både redigera din modell och bearbeta förutsägelsebegäranden från klientprogram.

Dricks

I den här modulens labb beskrivs hur du skapar en modell för förståelse av konversationsspråk. Mer fokuserade moduler om anpassad textklassificering och anpassad namngiven entitetsigenkänning finns i modulerna för anpassade lösningar i utbildningsvägen Utveckla naturliga språklösningar .

Skapa din modell

För funktioner som kräver en modell för förutsägelse måste du skapa, träna och distribuera modellen innan du använder den för att göra en förutsägelse. Den här byggnaden och utbildningen lär Azure AI Language-tjänsten vad du ska leta efter.

Först måste du skapa din Azure AI Language-resurs i Azure-portalen. Sedan:

  1. Sök efter Azure AI-tjänster.
  2. Leta upp och välj Språktjänst.
  3. Välj Skapa under Språktjänst.
  4. Fyll i nödvändig information, välj den region som är närmast dig geografiskt (för bästa prestanda) och ge den ett unikt namn.

När resursen har skapats behöver du en nyckel och slutpunkten. Du hittar det till vänster under Nycklar och slutpunkten på resursöversiktssidan.

Använda Language Studio

Om du vill ha en mer visuell metod för att skapa, träna och distribuera din modell kan du använda Language Studio för att uppnå vart och ett av dessa steg. På huvudsidan kan du välja att skapa ett projekt för förståelse av konversationsspråk. När projektet har skapats går du igenom samma process som ovan för att skapa, träna och distribuera din modell.

Screenshot of the Language Studio home page.

Labbet i den här modulen går igenom hur du skapar din modell med Hjälp av Language Studio. Om du vill veta mer kan du läsa Language Studio-snabbstarten

Använda REST API

Ett sätt att skapa din modell är via REST-API:et. Mönstret skulle vara att skapa projektet, importera data, träna, distribuera och sedan använda din modell.

Dessa uppgifter utförs asynkront. Du måste skicka en begäran till lämplig URI för varje steg och sedan skicka en annan begäran för att få status för jobbet.

Om du till exempel vill distribuera en modell för ett projekt för att förstå konversationsspråk skickar du distributionsjobbet och kontrollerar sedan distributionsjobbets status.

Autentisering

För varje anrop till din Azure AI Language-resurs autentiserar du begäran genom att ange följande rubrik.

Tangent Värde
Ocp-Apim-Subscription-Key Nyckeln till din resurs

Begärandedistribution

Skicka en POST-begäran till följande slutpunkt.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Platshållare Värde Exempel
{ENDPOINT} Slutpunkten för din Azure AI Language-resurs https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Namnet på projektet. Det här värdet är skiftlägeskänsligt myProject
{DEPLOYMENT-NAME} Namnet på distributionen. Det här värdet är skiftlägeskänsligt staging
{API-VERSION} Den version av API:et som du anropar 2022-05-01

Inkludera följande body med din begäran.

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Platshållare Värde
{MODEL-NAME} Modellnamnet som ska tilldelas distributionen. Det här värdet är skiftlägeskänsligt.

Om du skickar din begäran får du ett 202 svar med svarshuvudet operation-location. Det här huvudet har en URL som du kan begära status med, formaterad så här:

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

Hämta distributionsstatus

Skicka en GET-begäran till URL:en från svarshuvudet ovan. Värdena fylls redan i baserat på den första distributionsbegäran.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Platshållare Värde
{ENDPOINT} Slutpunkten för att autentisera din API-begäran
{PROJECT-NAME} Namnet på projektet (skiftlägeskänsligt)
{DEPLOYMENT-NAME} Namnet på distributionen (skiftlägeskänslig)
{JOB-ID} ID:t för att hitta modellens träningsstatus finns i huvudvärdet som beskrivs ovan i distributionsbegäran
{API-VERSION} Den version av API:et som du anropar

Svarstexten innehåller information om distributionsstatus. Fältet status har värdet lyckades när distributionen är klar.

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

En fullständig genomgång av varje steg med exempelbegäranden finns i snabbstarten för konversationstolkning.

Fråga din modell

Om du vill fråga din modell om en förutsägelse kan du använda SDK:er i C# eller Python eller använda REST-API:et.

Fråga med SDK:er

Om du vill köra frågor mot din modell med hjälp av ett SDK måste du först skapa klienten. När du har din klient använder du den för att anropa lämplig slutpunkt.

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]

Andra språkfunktioner, till exempel förståelse av konversationsspråk, kräver att begäran skapas och skickas på olika sätt.

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

Fråga med hjälp av REST-API:et

Om du vill köra frågor mot din modell med HJÄLP av REST skapar du en POST-begäran till lämplig URL med rätt brödtext angiven. För inbyggda funktioner som språkidentifiering eller attitydanalys frågar analyze-text du slutpunkten.

Dricks

Kom ihåg att varje begäran måste autentiseras Ocp-Apim-Subscription-Key med din Azure AI Language-resursnyckel i rubriken

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
Platshållare Värde
{ENDPOINT} Slutpunkten för att autentisera din API-begäran
{API-VERSION} Den version av API:et som du anropar

I brödtexten i begäran måste du ange parametern kind , som talar om för tjänsten vilken typ av språktolkning du begär.

Om du till exempel vill identifiera språket skulle JSON-brödtexten se ut ungefär så här.

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

Andra språkfunktioner, till exempel förståelse av konversationsspråk, kräver att begäran dirigeras till en annan slutpunkt. Till exempel skickas begäran om förståelse av konversationsspråk till följande.

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Platshållare Värde
{ENDPOINT} Slutpunkten för att autentisera din API-begäran
{API-VERSION} Den version av API:et som du anropar

Den begäran skulle innehålla en JSON-brödtext som liknar följande.

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
Platshållare Värde
{PROJECT-NAME} Namnet på projektet där du skapade din modell
{DEPLOYMENT-NAME} Namnet på distributionen

Exempelsvar

Frågesvaret från en SDK returneras i objektet som returneras, vilket varierar beroende på funktionen (till exempel i response.key_phrases eller response.Value). REST-API:et returnerar JSON som liknar följande.

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

För andra modeller som förståelse av konversationsspråk skulle ett exempelsvar på din fråga likna följande.

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

SDK:erna för både Python och C# returnerar JSON som liknar REST-svaret.

Fullständig dokumentation om funktioner, inklusive exempel och guider, finns på dokumentationssidorna för Dokumentation om Azure AI Language .