Informatie over resources voor het bouwen van een model voor het begrijpen van gesprekstalen

Voltooid

Als u de Language Understanding-service wilt gebruiken om een NLP-oplossing te ontwikkelen, moet u een Taalresource maken in Azure. Deze resource wordt gebruikt voor het ontwerpen van uw model en het verwerken van voorspellingsaanvragen van clienttoepassingen.

Fooi

Het lab van deze module bevat informatie over het bouwen van een model voor het begrijpen van gesprekstalen. Zie de aangepaste oplossingsmodules in het leertraject Oplossingen voor natuurlijke taal ontwikkelen voor meer gerichte modules over aangepaste tekstclassificatie en aangepaste entiteitsherkenning.

Uw model bouwen

Voor functies waarvoor een model voor voorspelling is vereist, moet u dat model bouwen, trainen en implementeren voordat u dit model gebruikt om een voorspelling te doen. In dit gebouw en de training leert u de Azure AI Language-service waar u naar moet zoeken.

Eerst moet u uw Azure AI Language-resource maken in Azure Portal. Daarna kunt u het volgende doen:

  1. Zoek naar Azure AI-services.
  2. Taalservice zoeken en selecteren.
  3. Selecteer Maken onder taalservice.
  4. Vul de benodigde gegevens in, kies de regio die het dichtst bij u ligt (voor de beste prestaties) en geef deze een unieke naam.

Zodra deze resource is gemaakt, hebt u een sleutel en het eindpunt nodig. U vindt dat aan de linkerkant onder Sleutels en Eindpunt van de overzichtspagina van de resource.

Language Studio gebruiken

Voor een meer visuele methode voor het bouwen, trainen en implementeren van uw model kunt u Language Studio gebruiken om elk van deze stappen te bereiken. Op de hoofdpagina kunt u ervoor kiezen om een Conversational Language Understanding-project te maken. Zodra het project is gemaakt, doorloopt u hetzelfde proces als hierboven om uw model te bouwen, te trainen en te implementeren.

Screenshot of the Language Studio home page.

Het lab in deze module begeleidt het gebruik van Language Studio om uw model te bouwen. Als u meer wilt weten, raadpleegt u de quickstart van Language Studio

REST-API gebruiken

Een manier om uw model te bouwen, is via de REST API. Het patroon is om uw project te maken, gegevens te importeren, te trainen, te implementeren en vervolgens uw model te gebruiken.

Deze taken worden asynchroon uitgevoerd; U moet voor elke stap een aanvraag indienen bij de juiste URI en vervolgens een andere aanvraag verzenden om de status van die taak op te halen.

Als u bijvoorbeeld een model wilt implementeren voor een gesprekstaalkennisproject, dient u de implementatietaak in en controleert u vervolgens de status van de implementatietaak.

Verificatie

Voor elke aanroep naar uw Azure AI Language-resource verifieert u de aanvraag door de volgende header op te geven.

Sleutel Waarde
Ocp-Apim-Subscription-Key De sleutel voor uw resource

Implementatie aanvragen

Dien een POST-aanvraag in bij het volgende eindpunt.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Tijdelijke aanduiding Waarde Voorbeeld
{ENDPOINT} Het eindpunt van uw Azure AI Language-resource https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} De naam voor uw project. Deze waarde is hoofdlettergevoelig myProject
{DEPLOYMENT-NAME} De naam voor uw implementatie. Deze waarde is hoofdlettergevoelig staging
{API-VERSION} De versie van de API die u aanroept 2022-05-01

Neem het volgende body op met uw aanvraag.

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Tijdelijke aanduiding Waarde
{MODEL-NAME} De modelnaam die wordt toegewezen aan uw implementatie. Deze waarde is hoofdlettergevoelig.

Als u uw aanvraag hebt ingediend, ontvangt u een 202 antwoord met een antwoordheader van operation-location. Deze header heeft een URL waarmee de status moet worden aangevraagd, opgemaakt als volgt:

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

Implementatiestatus ophalen

Dien een GET-aanvraag in bij de URL vanuit de bovenstaande antwoordheader. De waarden worden al ingevuld op basis van de eerste implementatieaanvraag.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Tijdelijke aanduiding Waarde
{ENDPOINT} Het eindpunt voor het verifiëren van uw API-aanvraag
{PROJECT-NAME} De naam voor uw project (hoofdlettergevoelig)
{DEPLOYMENT-NAME} De naam voor uw implementatie (hoofdlettergevoelig)
{JOB-ID} De id voor het vinden van de trainingsstatus van uw model, gevonden in de headerwaarde die hierboven is beschreven in de implementatieaanvraag
{API-VERSION} De versie van de API die u aanroept

De antwoordtekst geeft de details van de implementatiestatus. Het status veld heeft de waarde van geslaagd wanneer de implementatie is voltooid.

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

Zie de quickstart voor gesprekskennis voor een volledig overzicht van elke stap met voorbeeldaanvragen.

Query's uitvoeren op uw model

Als u een query wilt uitvoeren op uw model voor een voorspelling, kunt u SDK's in C# of Python gebruiken of de REST API gebruiken.

Query's uitvoeren met SDK's

Als u een query wilt uitvoeren op uw model met behulp van een SDK, moet u eerst uw client maken. Zodra u uw client hebt, gebruikt u deze om het juiste eindpunt aan te roepen.

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]

Voor andere taalfuncties, zoals het begrip van de gesprekstaal, moet de aanvraag anders worden gemaakt en verzonden.

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

Query's uitvoeren met behulp van de REST API

Als u een query wilt uitvoeren op uw model met behulp van REST, maakt u een POST-aanvraag naar de juiste URL met de juiste hoofdtekst die is opgegeven. Voor ingebouwde functies zoals taaldetectie of sentimentanalyse voert u een query uit op het analyze-text eindpunt.

Fooi

Onthoud dat elke aanvraag moet worden geverifieerd met uw Azure AI Language-resourcesleutel in de Ocp-Apim-Subscription-Key header

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
Tijdelijke aanduiding Waarde
{ENDPOINT} Het eindpunt voor het verifiëren van uw API-aanvraag
{API-VERSION} De versie van de API die u aanroept

In de hoofdtekst van die aanvraag moet u de kind parameter opgeven, waarmee de service aangeeft welk type taalkennis u aanvraagt.

Als u de taal wilt detecteren, ziet de JSON-hoofdtekst er bijvoorbeeld ongeveer als volgt uit.

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

Voor andere taalfuncties, zoals het begrip van de gesprekstaal, moet de aanvraag worden doorgestuurd naar een ander eindpunt. De aanvraag voor het begrijpen van de gesprekstaal wordt bijvoorbeeld verzonden naar het volgende.

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Tijdelijke aanduiding Waarde
{ENDPOINT} Het eindpunt voor het verifiëren van uw API-aanvraag
{API-VERSION} De versie van de API die u aanroept

Deze aanvraag bevat een JSON-hoofdtekst die vergelijkbaar is met de volgende.

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
Tijdelijke aanduiding Waarde
{PROJECT-NAME} De naam van het project waarin u uw model hebt gebouwd
{DEPLOYMENT-NAME} De naam van uw implementatie

Voorbeeldrespons

Het queryantwoord van een SDK wordt geretourneerd in het object dat afhankelijk is van de functie (zoals in response.key_phrases of response.Value). De REST API retourneert JSON die er ongeveer als volgt uitziet.

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

Voor andere modellen, zoals begrip van gesprekstalen, zou een voorbeeldantwoord op uw query er ongeveer als volgt uitzien.

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

De SDK's voor zowel Python als C# retourneren JSON die vergelijkbaar is met het REST-antwoord.

Zie de documentatiepagina's voor Azure AI Language voor volledige documentatie over functies, waaronder voorbeelden en handleidingen.