Общие сведения о ресурсах для создания модели распознавания общения

Завершено

Чтобы использовать службу Распознавание речи для разработки решения NLP, необходимо создать языковой ресурс в Azure. Этот ресурс будет использоваться как для разработки модели, так и для обработки запросов прогнозирования от клиентских приложений.

Совет

В этом модуле рассматривается создание модели для распознавания устной речи. Дополнительные ориентированные модули для пользовательской классификации текста и распознавания именованных сущностей см. в модулях пользовательского решения в схеме обучения решений для разработки решений естественного языка.

Создание модели

Для функций, требующих модели прогнозирования, необходимо создать, обучить и развернуть эту модель, прежде чем использовать ее для прогнозирования. В этом здании и обучении вы узнаете, что следует искать в службе языка искусственного интеллекта Azure.

Сначала необходимо создать ресурс языка ИИ Azure в портал Azure. Затем:

  1. Найдите службы ИИ Azure.
  2. Найдите и выберите языковую службу.
  3. Выберите " Создать " в разделе "Языковая служба".
  4. Заполните необходимые сведения, выбрав регион, ближайший к вам географически (для оптимальной производительности) и предоставив ему уникальное имя.

После создания этого ресурса вам потребуются ключ и конечная точка. Их можно найти слева в разделе Ключи и конечная точка на странице обзора ресурсов.

Использование Language Studio

Если вы хотите создавать, обучать и развертывать модель визуально, можно использовать Language Studio для выполнения каждого из этих шагов. На главной странице можно создать проект распознавания речи беседы. После создания проекта выполните те же действия, которые указаны выше, для сборки, обучения и развертывания модели.

Screenshot of the Language Studio home page.

В задании в этом модуле будет создана модель с помощью Language Studio. Дополнительные сведения см. в кратком руководстве по Language Studio.

Использование REST API

Одним из способов создания модели является REST API. Используется следующий шаблон: создать проект, импортировать данные, обучить, развернуть и использовать модель.

Эти задачи выполняются асинхронно; вам потребуется отправить запрос в соответствующий URI для каждого шага, а затем отправить другой запрос, чтобы получить состояние этого задания.

Например, если вы хотите развернуть модель для проекта распознавания устной речи, отправьте задание развертывания, а затем проверьте состояние задания развертывания.

Проверка подлинности

Для каждого вызова ресурса языка искусственного интеллекта Azure выполните проверку подлинности запроса, указав следующий заголовок.

Ключ Значение
Ocp-Apim-Subscription-Key Ключ к ресурсу

Запрос развертывания

Отправьте запрос POST в следующую конечную точку.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка ресурса языка ИИ Azure https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение задается с учетом регистра myProject
{DEPLOYMENT-NAME} Имя, используемое для развертывания. Это значение задается с учетом регистра staging
{API-VERSION} Версия вызываемого API 2022-05-01

Ваш запрос должен включать следующий элемент body.

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Заполнитель Значение
{MODEL-NAME} Имя модели, которое будет назначено развертыванию. Это значение учитывает регистр.

В случае успешной отправки запроса будет получен ответ 202 с заголовком ответа operation-location. Этот заголовок будет иметь URL-адрес, с которым запрашивается состояние, отформатированный следующим образом:

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

Получение состояния развертывания

Отправьте запрос GET в URL-адрес из заголовка ответа, указанного выше. Значения уже будут заполнены на основе первоначального запроса развертывания.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Заполнитель Значение
{ENDPOINT} Конечная точка для проверки подлинности запроса API
{PROJECT-NAME} Имя проекта (задается с учетом регистра)
{DEPLOYMENT-NAME} Имя развертывания (задается с учетом регистра)
{JOB-ID} Идентификатор для поиска состояния обучения модели, указанный в значении заголовка в запросе на развертывание, описанном выше.
{API-VERSION} Версия вызываемого API

Текст ответа будет содержать сведения о состоянии развертывания. Поле status будет иметь значение успешно после завершения развертывания.

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

Полное пошаговое руководство по каждому шагу с примерами запросов см. в кратком руководстве по распознаванию устной речи.

Отправка запроса модели

Чтобы запросить модель для прогнозирования, можно использовать пакеты SDK в C# или Python или использовать REST API.

Запрос с помощью пакетов SDK

Чтобы запросить модель с помощью пакета SDK, сначала необходимо создать клиент. После того как у вас есть клиент, используйте его для вызова соответствующей конечной точки.

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]

Другие языковые функции, такие как понимание общения, требуют создания и отправки запроса по-другому.

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

Запрос с помощью REST API

Чтобы запросить модель с помощью REST, создайте запрос POST на соответствующий URL-адрес с указанным текстом. Для встроенных функций, таких как обнаружение языка или анализ тональности, отправлять запрос следует к конечной точке analyze-text.

Совет

Помните, что каждый запрос необходимо пройти проверку подлинности с помощью ключа ресурса языка искусственного интеллекта Azure в заголовке Ocp-Apim-Subscription-Key

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
Заполнитель Значение
{ENDPOINT} Конечная точка для проверки подлинности запроса API
{API-VERSION} Версия вызываемого API

В тексте этого запроса необходимо указать параметр kind, который сообщает службе, какой тип распознавания речи запрашивается.

Если вы хотите обнаружить язык, например, текст JSON будет выглядеть примерно так, как показано ниже.

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

Для других функций языка, таких как понимание общения, требуется перенаправление запроса на другую конечную точку. Например, запрос на распознавание устной речи будет отправлен в следующую конечную точку.

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Заполнитель Значение
{ENDPOINT} Конечная точка для проверки подлинности запроса API
{API-VERSION} Версия вызываемого API

Этот запрос будет содержать текст JSON, похожий на приведенный ниже.

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
Заполнитель Значение
{PROJECT-NAME} Имя проекта, в котором была создана модель
{DEPLOYMENT-NAME} Имя развертывания

Пример ответа

Ответ запроса из пакета SDK возвращается в возвращаемом объекте, который зависит от функции (например, в response.key_phrases или response.Value). REST API вернет JSON, аналогичный приведенному ниже.

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

Для других моделей, таких как понимание общения, пример ответа на запрос будет аналогичен следующему.

{
  "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 для Python и C# возвращают JSON, которые очень похожи на ответ REST.

Полную документацию по функциям, включая примеры и руководства, см . на страницах документации по языку искусственного интеллекта Azure.