Grundlegendes zu Ressourcen zum Erstellen eines Conversational Language Understanding-Modells

Abgeschlossen

Um den Sprachverständnisdienst zum Entwickeln einer NLP-Lösung zu verwenden, müssen Sie eine Sprachressource in Azure erstellen. Diese Ressource wird sowohl zum Erstellen Ihres Modells als auch zum Verarbeiten von Vorhersageanforderungen von Clientanwendungen verwendet.

Tipp

Im Labor dieses Moduls geht es um den Aufbau eines Modells für das Verständnis von Konversationssprache. Für gezieltere Module zur benutzerdefinierten Textklassifikation und benutzerdefinierten Erkennung von benannten Entitäten sehen Sie sich die Module für benutzerdefinierte Lösungen im Lernpfad Entwicklung von Lösungen für natürliche Sprache an.

Erstellen des Modells

Für Features, die ein Modell für die Vorhersage erfordern, müssen Sie dieses Modell erstellen, trainieren und bereitstellen, bevor Sie es verwenden, um eine Vorhersage zu erstellen. Durch diesen Aufbau und diese Schulung wird dem Azure-Sprachdienst beigebracht, worauf er achten soll.

Zunächst müssen Sie Ihre Azure-Sprachressource im Azure-Portal erstellen. Führen Sie dann folgende Schritte aus:

  1. Suchen Sie nach Foundry Tools.
  2. Suchen und wählen Sie "Sprachdienst" aus.
  3. Wählen Sie " Erstellen" unter dem Sprachdienst aus.
  4. Füllen Sie die erforderlichen Details aus, wählen Sie die Region, die Ihnen geografisch am nächsten kommt (für optimale Leistung) und geben Sie ihm einen eindeutigen Namen.

Nachdem diese Ressource erstellt wurde, benötigen Sie einen Schlüssel und den Endpunkt. Sie finden dies auf der linken Seite unter "Schlüssel" und "Endpunkt " der Seite "Ressourcenübersicht".

Verwenden von Language Studio

Für eine visuellere Methode zum Erstellen, Trainieren und Bereitstellen Ihres Modells können Sie Language Studio verwenden, um jede dieser Schritte zu erreichen. Auf der Hauptseite können Sie wählen, ein Projekt zur Verarbeitung von Umgangssprache zu erstellen. Nachdem das Projekt erstellt wurde, durchlaufen Sie denselben Prozess wie oben, um Ihr Modell zu erstellen, zu trainieren und bereitzustellen.

Screenshot der Language Studio-Startseite.

Das Lab in diesem Modul führt sie mithilfe von Language Studio durch die zum Erstellen Ihres Modells erforderlichen Schritte. Weitere Informationen finden Sie in der Schnellstartanleitung von Language Studio.

Verwenden der REST-API

Eine Möglichkeit zum Erstellen Ihres Modells ist die REST-API. Das Muster wäre das Erstellen Ihres Projekts, importieren Sie Daten, trainieren, bereitstellen und dann Ihr Modell verwenden.

Diese Aufgaben werden asynchron ausgeführt; Sie müssen für jeden Schritt eine Anforderung an den entsprechenden URI senden und dann eine weitere Anforderung senden, um den Status dieses Auftrags abzurufen.

Wenn Sie beispielsweise ein Modell für ein Conversational Language Understanding bereitstellen möchten, würden Sie den Bereitstellungsauftrag senden und dann den Status des Bereitstellungsauftrags prüfen.

Authentifizierung

Für jeden Aufruf Ihrer Azure Language-Ressource authentifizieren Sie die Anforderung, indem Sie den folgenden Header angeben.

Schlüssel Wert
Ocp-Apim-Subscription-Key Der Schlüssel zu Ihrer Ressource

Bereitstellung anfordern

Senden Sie eine POST-Anforderung an den folgenden Endpunkt.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Platzhalter Wert Beispiel
{ENDPOINT} Der Endpunkt Ihrer Azure Language-Ressource https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Der Name für Ihr Projekt. Bei diesem Wert ist die Groß-/Kleinschreibung zu beachten myProject
{DEPLOYMENT-NAME} Der Name für Ihre Bereitstellung. Bei diesem Wert ist die Groß-/Kleinschreibung zu beachten staging
{API-VERSION} Die Version der API, die Sie aufrufen 2022-05-01

Fügen Sie Folgendes body in Ihre Anforderung ein.

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Platzhalter Wert
{MODEL-NAME} Der Modellname, der Ihrer Bereitstellung zugewiesen wird. Bei diesem Wert wird die Groß-/Kleinschreibung beachtet.

Die erfolgreiche Übermittlung Ihrer Anforderung erhält eine 202 Antwort mit einem Antwortheader von operation-location. Dieser Header hat eine URL, mit der der Status angefordert werden soll, der wie folgt formatiert ist:

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

Bereitstellungsstatus abrufen

Senden Sie eine GET-Anforderung an die URL aus dem obigen Antwortheader. Die Werte werden bereits basierend auf der anfänglichen Bereitstellungsanforderung ausgefüllt.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Platzhalter Wert
{ENDPOINT} Der Endpunkt für die Authentifizierung Ihrer API-Anforderung
{PROJECT-NAME} Der Name für Ihr Projekt (beachten Sie die Groß- und Kleinschreibung)
{DEPLOYMENT-NAME} Der Name für Ihre Bereitstellung (beim Wert wird die Groß- und Kleinschreibung beachtet)
{JOB-ID} Die ID zum Auffinden des Schulungsstatus Ihres Modells, der im oben in der Bereitstellungsanforderung beschriebenen Headerwert zu finden ist.
{API-VERSION} Die Version der API, die Sie aufrufen

Der Antworttext gibt die Bereitstellungsstatusdetails an. Das status Feld weist den Wert "erfolgreich " auf, wenn die Bereitstellung abgeschlossen ist.

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

Eine vollständige exemplarische Vorgehensweise für jeden Schritt mit Beispielanforderungen finden Sie im Schnellstart zu Conversational Language Understanding .

Ihr Modell abfragen

Um Ihr Modell für eine Vorhersage abzufragen, können Sie SDKs in C# oder Python verwenden oder die REST-API verwenden.

Abfragen mithilfe von SDKs

Um Ihr Modell mit einem SDK abzufragen, müssen Sie zuerst Ihren Client erstellen. Sobald Sie Ihren Client haben, verwenden Sie ihn, um den entsprechenden Endpunkt aufzurufen.

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]

Für andere Sprachfeatures, z. B. das Conversational Language Understanding, muss die Anforderung anders erstellt und gesendet werden.

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

Abfrage mithilfe der REST-API

Um Ihr Modell mit REST abzufragen, erstellen Sie eine POST-Anforderung an die entsprechende URL, wobei der entsprechende Textkörper angegeben ist. Für integrierte Features wie Spracherkennung oder Stimmungsanalyse fragen Sie den analyze-text Endpunkt ab.

Tipp

Denken Sie daran, dass jede Anforderung mit Ihrem Azure Language-Ressourcenschlüssel im Ocp-Apim-Subscription-Key Header authentifiziert werden muss.

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
Platzhalter Wert
{ENDPOINT} Der Endpunkt für die Authentifizierung Ihrer API-Anforderung
{API-VERSION} Die Version der API, die Sie aufrufen

Im Textkörper dieser Anforderung müssen Sie den kind Parameter angeben, der dem Dienst angibt, welche Art von Sprachverständnis Sie anfordern.

Wenn Sie beispielsweise die Sprache erkennen möchten, würde der JSON-Text in etwa wie folgt aussehen.

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

Andere Sprachfeatures, z. B. das Verständnis der Unterhaltungssprache, erfordern die Weiterleitung der Anforderung an einen anderen Endpunkt. Conversational Language Understanding würde beispielsweise an folgenden gesendet.

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Platzhalter Wert
{ENDPOINT} Der Endpunkt für die Authentifizierung Ihrer API-Anforderung
{API-VERSION} Die Version der API, die Sie aufrufen

Diese Anforderung würde einen JSON-Text enthalten, der der folgenden ähnelt.

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
Platzhalter Wert
{PROJECT-NAME} Der Name des Projekts, in dem Sie Ihr Modell erstellt haben
{DEPLOYMENT-NAME} Der Name Ihrer Bereitstellung

Beispielantwort

Die Antwort auf die Abfrage eines SDKs besteht aus dem zurückgegebenen Objekt, das je nach Funktion variiert (z. B. in response.key_phrases oder response.Value). Die REST-API gibt JSON zurück, die dem folgenden ähnlich wäre.

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

Bei anderen Modellen wie unterhaltungssprachlichem Verständnis wäre eine Beispielantwort auf Ihre Abfrage ähnlich wie folgt.

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

Die SDKs für Python und C# geben JSON zurück, die der REST-Antwort sehr ähnlich ist.

Vollständige Dokumentation zu Features, einschließlich Beispielen und Anleitungen, finden Sie auf den Dokumentationsseiten der Azure-Sprachdokumentation .