Informacje o zasobach związanych z tworzeniem modelu interpretacji języka konwersacyjnego
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:
- Wyszukaj Foundry Tools.
- Znajdź i wybierz pozycję Usługa językowa.
- Wybierz pozycję Utwórz w obszarze Usługa językowa.
- 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.
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 .