Informacje o zasobach związanych z tworzeniem modelu interpretacji języka konwersacyjnego

Ukończone

Aby utworzyć rozwiązanie NLP przy użyciu usługi Language Understanding, należy utworzyć zasób language na platformie Azure. Ten zasób będzie używany zarówno do tworzenia modelu, jak i przetwarzania żądań przewidywania z aplikacji klienckich.

Wskazówka

Laboratorium w tym module obejmuje tworzenie modelu na potrzeby interpretacji języka konwersacyjnego. Aby uzyskać bardziej ukierunkowane moduły dotyczące niestandardowej klasyfikacji tekstu i niestandardowego rozpoznawania jednostek nazwanych, zobacz niestandardowe moduły rozwiązania w ścieżce szkoleniowej Opracowywanie rozwiązań języka naturalnego .

Tworzenie modelu

W przypadku funkcji wymagających modelu do przewidywania należy utworzyć, wytrenować i wdrożyć ten model przed użyciem go w celu przewidywania. Proces tworzenia i trenowania nauczy usługę języka platformy Azure, na co należy zwracać uwagę.

Najpierw musisz utworzyć zasób języka platformy Azure w witrynie Azure Portal. Następnie:

  1. Wyszukaj Foundry Tools.
  2. Znajdź i wybierz pozycję Usługa językowa.
  3. Wybierz pozycję Utwórz w obszarze Usługa językowa.
  4. Podaj niezbędne szczegóły, wybierając region najbliżej Ciebie geograficznie (aby uzyskać najlepszą wydajność) i podając unikatową nazwę.

Po utworzeniu tego zasobu będziesz potrzebować klucza i punktu końcowego. Możesz to znaleźć po lewej stronie w obszarze Klucze i punkt końcowy strony przeglądu zasobu.

Korzystanie z programu Language Studio

Aby uzyskać bardziej wizualną metodę tworzenia, trenowania i wdrażania modelu, możesz użyć programu Language Studio , aby wykonać każde z tych kroków. Na stronie głównej możesz utworzyć projekt rozumienia języka konwersacyjnego. Po utworzeniu projektu wykonaj ten sam proces, co powyżej, aby skompilować, wytrenować i wdrożyć model.

Zrzut ekranu przedstawiający stronę główną programu Language Studio.

Laboratorium w tym module przeprowadzi proces tworzenia modelu przy użyciu programu Language Studio. Jeśli chcesz dowiedzieć się więcej, zobacz Przewodnik Szybki start dla programu Language Studio

Korzystanie z interfejsu API REST

Jednym ze sposobów tworzenia modelu jest interfejs API REST. Wzorzec to tworzenie projektu, importowanie danych, trenowanie, wdrażanie, a następnie używanie modelu.

Te zadania są wykonywane asynchronicznie; będziesz musiał przesłać żądanie do odpowiedniego identyfikatora URI dla każdego kroku, a następnie wysłać dodatkowe żądanie, aby uzyskać status tego zadania.

Jeśli na przykład chcesz wdrożyć model dla projektu interpretacji języka konwersacyjnego, prześlij zadanie wdrożenia, a następnie sprawdź stan zadania wdrożenia.

Uwierzytelnianie

Dla każdego wywołania zasobu języka platformy Azure uwierzytelniasz żądanie, podając następujący nagłówek.

Klawisz Wartość
Ocp-Apim-Subscription-Key Klucz do twojego zasobu

Żądanie wdrożenia

Prześlij żądanie POST do następującego punktu końcowego.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Zastępczy element Wartość Przykład
{ENDPOINT} Punkt końcowy zasobu języka platformy Azure https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter myProject
{DEPLOYMENT-NAME} Nazwa twojego wdrożenia. Ta wartość jest uwzględniana w wielkości liter staging
{API-VERSION} Wersja wywoływanego interfejsu API 2022-05-01

Dołącz następujące body do zgłoszenia.

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Zastępczy element Wartość
{MODEL-NAME} Nazwa modelu, która zostanie przypisana do Twojego wdrożenia. Ta wartość jest wrażliwa na wielkość liter.

Po pomyślnym przesłaniu twojego żądania otrzymasz odpowiedź 202 z nagłówkiem odpowiedzi operation-location. Ten nagłówek będzie miał adres URL, za pomocą którego można zażądać stanu, sformatowany w następujący sposób:

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

Uzyskiwanie stanu wdrożenia

Prześlij żądanie GET do adresu URL z powyższego nagłówka odpowiedzi. Wartości zostaną już wypełnione na podstawie początkowego żądania wdrożenia.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Zastępczy element Wartość
{ENDPOINT} Punkt końcowy do uwierzytelniania żądania interfejsu API
{PROJECT-NAME} Nazwa dla twojego projektu (z uwzględnieniem wielkości liter)
{DEPLOYMENT-NAME} Nazwa dla twojego wdrożenia (z uwzględnieniem wielkości liter)
{JOB-ID} Identyfikator do lokalizowania stanu trenowania Twojego modelu, znajdujący się w wartości nagłówka, szczegółowo opisanej powyżej w żądaniu wdrożenia.
{API-VERSION} Wersja wywoływanego interfejsu API

Treść odpowiedzi będzie zawierać szczegóły stanu wdrożenia. Pole status będzie miało wartość powodzenia po zakończeniu wdrażania.

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

Pełny przewodnik po każdym kroku z przykładowymi żądaniami można znaleźć w przewodniku Szybki start z omówieniem konwersacji.

Zapytaj swój model

Aby wykonać zapytanie dotyczące modelu pod kątem przewidywania, możesz użyć zestawów SDK w języku C# lub Python albo użyć interfejsu API REST.

Wykonywanie zapytań przy użyciu zestawów SDK

Aby wykonać zapytanie dotyczące modelu przy użyciu zestawu SDK, należy najpierw utworzyć klienta. Po utworzeniu klienta należy go użyć do wywołania odpowiedniego punktu końcowego.

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]

Inne funkcje językowe, takie jak znajomość języka konwersacyjnego, wymagają skompilować i wysłać żądanie w inny sposób.

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

Wykonywanie zapytań przy użyciu interfejsu API REST

Aby wysłać zapytanie do modelu przy użyciu interfejsu REST, utwórz żądanie POST do odpowiedniego adresu URL z określoną odpowiednią treścią. W przypadku wbudowanych funkcji, takich jak wykrywanie języka lub analiza tonacji, wysyłasz zapytanie do endpointu analyze-text.

Wskazówka

Pamiętaj, że każde żądanie musi być uwierzytelnione przy użyciu klucza zasobu języka platformy Azure w nagłówku Ocp-Apim-Subscription-Key

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
Zastępczy element Wartość
{ENDPOINT} Punkt końcowy do uwierzytelniania żądania interfejsu API
{API-VERSION} Wersja wywoływanego interfejsu API

W treści tego żądania musisz określić parametr kind, który informuje usługę, jaki rodzaj rozumienia języka żądasz.

Jeśli chcesz wykryć język, na przykład treść JSON będzie wyglądać podobnie do poniższego.

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

Inne funkcje językowe, takie jak interpretacja języka konwersacyjnego, wymagają, aby żądanie było kierowane do innego punktu końcowego. Na przykład żądanie rozumienia języka konwersacyjnego zostanie wysłane do poniższego miejsca.

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Zastępczy element Wartość
{ENDPOINT} Punkt końcowy do uwierzytelniania żądania interfejsu API
{API-VERSION} Wersja wywoływanego interfejsu API

To żądanie będzie zawierać treść JSON podobną do poniższej.

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
Zastępczy element Wartość
{PROJECT-NAME} Nazwa projektu, w którym utworzono model
{DEPLOYMENT-NAME} Nazwa wdrożenia

Przykładowa odpowiedź

Odpowiedź zapytania z zestawu SDK zostanie zwrócona w obiekcie, który różni się w zależności od funkcji (takich jak w response.key_phrases lub response.Value). Interfejs API REST zwróci kod JSON podobny do poniższego.

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

W przypadku innych modeli, takich jak interpretacja języka konwersacyjnego, przykładowa odpowiedź na zapytanie będzie podobna do poniższej.

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

Zestawy SDK dla języków Python i C# zwracają kod JSON, który jest bardzo podobny do odpowiedzi REST.

Aby uzyskać pełną dokumentację dotyczącą funkcji, w tym przykładów i przewodników z instrukcjami, zobacz strony dokumentacji języka platformy Azure .