Создание делимого приложения LUIS

Важно!

Поддержка LUIS будет прекращена 1 октября 2025 г., а начиная с 1 апреля 2023 г. вы не сможете создавать новые ресурсы LUIS. Мы рекомендуем перенести приложения LUIS в распознавание устной речи , чтобы воспользоваться преимуществами постоянной поддержки продуктов и многоязычных возможностей.

С помощью этого учебника вы сможете создать телекоммуникационное приложение LUIS, которое может прогнозировать различные намерения пользователей. По окончании изучения должно получиться телекоммуникационное приложение, которое может предсказать намерения пользователей на основе предоставленного ими текста.

Мы будем обрабатывать различные пользовательские сценарии (намерения), например:

  • Регистрация новой телекоммуникационной линии
  • Обновление существующего уровня
  • Оплата счета

Из этого учебного курса вы узнаете следующее:

  1. Создание приложения LUIS
  2. Создание намерений.
  3. Добавление сущностей
  4. Добавление высказываний
  5. Добавление меток к примеру речевого фрагмента
  6. Обучение приложения
  7. Публикация приложения
  8. Получение прогнозов из опубликованной конечной точки

Создание приложения LUIS

  1. Войдите на портал LUIS

  2. Создайте новое приложение, выбрав + новое приложение.

    Снимок экрана: экран создания приложения.

  3. В появившемся окне введите имя "Учебник по телекоммуникационной связи", сохранив язык и региональные параметры по умолчанию (Английский). Другие поля являются необязательными, не задавайте их значения. Нажмите кнопку Готово.

    Снимок экрана: поля создания приложения LUIS.

Намерения пользователей

Первое, что вы увидите в разделе Сборка — это намерения приложения. Намерения представляют собой задачу или действие, которые пользователь хочет выполнить.

Предположим, что у вас есть телекоммуникационное приложение LUIS; что может потребоваться пользователю?

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

Результирующая схема выглядит следующим образом. Дополнительные сведения см. в разделе рекомендации по планированию схемы.

Намерение Назначение
UserActions Определение действий пользователя
Справка Запросить справку
UpdateTier Обновить текущий уровень
PayBill Оплата неоплаченного счета
Ни одного Определение того, спрашивает ли пользователь что-либо, на что приложение LUIS не должно отвечать. Это намерение предоставляется как часть создания приложения и не может быть удалено.

Создание намерения

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

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

  1. Выберите Сборка в верхнем меню навигации, затем выберите Намерения в левой части экрана. Щелкните + Создать, чтобы добавить новое намерение. Введите новое имя намерения "UserAction" и нажмите кнопку Готово

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

  2. Добавьте в намерение несколько примеров высказываний, которые ожидаются от пользователя.

    • Привет! Я хочу зарегистрироваться, чтобы создать новую строку
    • Можно ли зарегистрироваться для создания новой строки?
    • Привет, я хочу создать новую строку
    • Я забыл свой номер строки!
    • Я хочу создать новый номер строки

    Снимок экрана: примеры речевых фрагментов для намерения UserAction.

Для намерения PayBill некоторые высказывания могут быть следующими.

  • Я хочу оплатить счет
  • Покрыть задолженность
  • Оплатить счет
  • Я хочу закрыть текущий баланс
  • Эй! Я хочу оплатить текущий счет

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

Эти несколько фраз предназначены только для демонстрации. В реальном приложении следует использовать не менее 15-30 речевых фрагментов разной длины, с разным порядком и количеством слов, в разных временах и с разной степенью грамматической и пунктуационной правильности.

Создание оставшихся намерений

Выполните описанные выше действия, чтобы добавить в приложение следующие намерения.

"Справка"

  • "Мне нужна помощь"
  • "Мне требуется помощь"
  • "Нужна помощь"
  • "Может ли кто-нибудь оказать мне поддержку?"
  • "Я запутался, не могли бы вы мне помочь"
  • "Могу ли я получить помощь?"

"UpdateTier"

  • "Я хочу обновить уровень"
  • "Обновить уровень"
  • "Я хочу изменить уровень виртуального IP-адреса"
  • "Изменить мою подписку на стандартный уровень"

Примеры речевых фрагментов для намерения None

Клиентскому приложению необходимо определить, имеет ли смысл высказывание и подходит ли оно для приложения. Намерение "None" (Отсутствует) добавляется к каждому приложению как часть процесса создания для определения возможности ответа клиентского приложения речевому фрагменту.

Если LUIS возвращает намерение "None" (Отсутствует) для речевого фрагмента, клиентское приложение может спросить, хочет ли пользователь завершить разговор или предоставить новые указания для его продолжения.

Если оставить намерение "None" (Отсутствует), то речевой фрагмент, который должен быть спрогнозирован вне предметной области, будет спрогнозирован в одной из существующих предметных областей намерений. В результате клиентское приложение, например чат-бот, будет выполнять неправильные операции, исходя из ошибочного прогноза.

  1. Выберите намерения на панели слева.

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

    • "Когда мой рейс?"
    • "Мне нужно изменить мой заказ на пиццу"
    • "Какая сегодня погода?"

Добавление сущностей

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

  1. В разделе сборки выберите Сущности.

  2. Чтобы добавить новую сущность, выберите + создать

    В этом примере мы создадим две сущности: "UpdateTierInfo" в качестве типа сущности, прошедшей машинное обучение, и "Уровень" в качестве типа сущности списка. Luis также позволяет создавать различные типы сущностей.

  3. В появившемся окне введите "UpdateTierInfo" и выберите из доступных типов "Прошедшая машинное обучение". Установите флажок Добавить структуру, чтобы иметь возможность добавить структуру в эту сущность.

    Снимок экрана: сущность.

  4. Выберите Далее.

  5. Чтобы добавить дочернюю вложенную, выберите символ "+" и начните добавлять дочерний элемент. Для нашего примера сущности "UpdateTierInfo" потребуется следующее.

    • OriginalTier
    • NewTier
    • PhoneNumber

    Снимок экрана: вложенные сущности в приложении.

  6. Выберите Создать после добавления всех вложенных сущностей.

    Мы создадим еще одну сущность с именем "Уровень", но на этот раз это будет сущность списка, которая будет включать все уровни, которые могут быть предоставлены: уровень "Стандартный", уровень "Премиум" и уровень виртуальных IP-адресов.

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

  8. Добавьте элементы в список и, при необходимости, можете добавить синонимы, чтобы убедиться, что все варианты этого упоминания будут понятны.

    Снимок экрана: сущность списка.

  9. Теперь вернитесь к сущности "UpdateTierInfo" и добавьте сущность "tier" в качестве компонента для сущностей "OriginalTier" и "newTier", которые мы создали ранее. Должно отобразиться примерно следующее:

    Снимок экрана: функции сущности.

    Мы добавили уровень в качестве компонента как для "originalTier", так и для "newTier", а также добавили сущность "Phonenumber", которая является типом регулярного выражения. Его можно создать так же, как и ML и сущность списка.

Теперь мы успешно создали намерения, добавили примеры речевых фрагментов и сущности. Мы создали четыре намерения (отличные от намерения "none") и три сущности.

Добавление меток к примеру речевого фрагмента

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

Существует два способа пометки речевых фрагментов.

  1. Использование средства маркировки данных

    1. Откройте палитру сущностей и на контекстной панели инструментов выберите символ "@".
    2. Выбирая каждую строку сущности в палитре, выберите сущность с помощью курсора палитры в каждом примере речевого фрагмента.
  2. Выделите текст, перетащив курсор. С помощью курсора выделите текст, который нужно пометить. На следующем изображении мы выделили "уровень виртуального IP-адреса" и выбрали сущность "NewTier".

    Снимок экрана: добавление меток к речевым фрагментам.

Обучение приложения

В верхней правой части веб-сайта LUIS нажмите кнопку Train (Обучить).

Перед обучением убедитесь, что для каждого намерения существует по крайней мере один речевой фрагмент.

Снимок экрана: но для обучения приложения.

Публикация приложения

Чтобы получать результаты прогнозирования LUIS в чат-боте или другом приложении, необходимо опубликовать приложение в конечной точке прогнозирования. Для публикации необходимо сначала обучить приложение.

  1. Выберите Опубликовать на правой верхней панели навигации.

    Снимок экрана: кнопка для публикации приложения.

  2. Выберите слот Рабочий и нажмите кнопку Готово.

    Снимок экрана: селектор рабочего слота.

  3. Выберите Получить доступ к URL-адресам конечных точек в уведомлении, чтобы открыть страницу Ресурсы Azure. Вы будете видеть URL-адреса только в том случае, если с приложением связан ресурс для прогнозирования. Вы также можете перейти к странице Ресурсы Azure, щелкнув Управление в левой части экрана.

    Снимок экрана: уведомление о доступе к конечной точке.

Получение прогноза намерения

  1. Выберите Управление в верхнем правом меню, а затем щелкните Ресурсы Azure слева.

  2. Скопируйте URL-адрес примера запроса и вставьте его в новую вкладку веб-браузера.

    URL-адрес конечной точки имеет следующий формат.

    https://YOUR-CUSTOM-SUBDOMAIN.api.cognitive.microsoft.com/luis/prediction/v3.0/apps/YOUR-APP-ID/slots/production/predict?subscription-key=YOUR-KEY-ID&verbose=true&show-all-intents=true&log=true&query=YOUR\_QUERY\_HERE
    
  3. Перейдите в конец URL-адреса в адресной строке и замените параметр строки query= на следующее:

    "Hello! I am looking for a new number please."

    Речевой фрагмент запрос передается в универсальный код ресурса (URI). Этот речевой фрагмент не совпадает ни с одним из примеров, и должен стать хорошей проверкой того, прогнозирует ли LUIS намерение UserAction как имеющее наивысший показатель.

    {
        "query": "hello! i am looking for a new number please",
        "prediction": 
        {
            "topIntent": "UserAction",
            "intents": 
            {
                "UserAction": {
                "score": 0.8607431},
                "Help":{
                "score": 0.031376917},
                "PayBill": {
                "score": 0.01989629},
                "None": {
                "score": 0.013738701},
                "UpdateTier": {
                "score": 0.012313577}
            },
        "entities": {}
        }
    }
    

Результат JSON определяет намерение с наивысшим показателем как свойство prediction.topIntent. Все оценки находятся в диапазоне 0–1, наилучшие оценки — те, которые ближе к 1.

Дальнейшие действия клиентского приложения

В этом учебнике создано приложение LUIS, а также намерения и сущности, добавлены примеры речевых фрагментов для каждого намерения, в том числе, для намерения "None", которые обучены, опубликованы и протестированы на конечной точке. Ниже приведены основные этапы создания модели LUIS.

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

Очистка ресурсов

Удалите приложение LUIS, если оно больше не нужно. Для этого выберите Мои приложения в меню слева вверху. Щелкните многоточие ( ... ) справа от имени приложения в списке и выберите пункт Удалить. Во всплывающем диалоговом окне Delete app? (Удаление приложения) щелкните ОК.