NLU

Эта инструкция поможет Вам...

Что такое интенты

  • Интент
    Это тип данных, который позволяет определить намерение контакта: что он хочет узнать, сказать или сделать в данный момент диалога

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


Например, вы можете создать сценарий для ресторана, который обрабатывает вопросы контакта о заказах и отвечает на них. Вы можете создать интент для вопросов о доставке. Если контакт скажет “Мне нужно заказать еду на дом” или “Я хочу пиццу с доставкой”, робот сопоставит эти фразы контакта с интентом доставки.


Модель классифицирует намерения контакта. Робот может извлекать интенты двумя способами:

  • 1
    Нейросеть
    Cпособ распознавания намерений с помощью нейросети. Чтобы использовать этот способ, в интент нужно добавить примеры для обучения нейросети
  • 2
    Регулярные выражения
    извлечение интента по шаблонам с определенным синтаксисом. Чтобы использовать этот способ, в интент нужно добавить шаблоны регулярных выражений
Для каждого интента можно задать приоритет — какой способ использовать первым, а какой вторым, для подстраховки.

Извлечение интентов

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

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

При поиске подходящего интента с помощью нейросети робот оценивает возможные совпадения с достоверностью извлечения интента (уровень уверенности). Эти значения варьируются от 0% (полностью неопределенные) до 100% (полностью определенные). После оценки интентов есть два возможных результата:
  • Если интент с наивысшим результатом имеет уровень уверенности, превышающий или равный заданному порогу доверия, он считается извлеченным
  • Если ни один из интентов в условиях не соответствует пороговому значению, то будет вызван системный сценарий “Не могу вас понять

Примеры для обучения нейросети

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

Примеры делятся на:
  • Эталонные фразы, которые создает пользователь
  • Фразы контакта из диалогов, которые пользователь провалидировал как верные и которые попали в набор обучающих примеров (вкладка “Нейросеть”)
Для каждого интента создается множество обучающих примеров. Когда фраза контакта напоминает один из этих примеров, робот находит соответствующий интент. Например, фраза “Мне нужно к врачу” обучает робота распознавать фразы контакта, похожие на нее: “Я хочу к врачу” или “Запишите меня к врачу”.

Пользователю не нужно указывать все возможные примеры, потому что встроенное в робота машинное обучение автоматически расширяет список пользователя другими похожими фразами. Пользователь должен создать по крайней мере 15-30 (в зависимости от сложности намерения) примеров для интента, чтобы робот мог распознавать различные фразы контакта с одним намерением. Например, чтобы робот понимал, когда контакт говорит о своем родном городе, можно добавить следующие примеры:
  • Я из Москвы
  • Мой город – Ростов
  • Калининград – мой родной город

Правила наполнения интента обучающими примерами

Чтобы модель NLU работала корректно, необходимо следовать правилам наполнения интента примерами.
  • 1
    Чтобы модель могла обучиться, в ней должно быть минимум 2 интента, в каждом из которых должно быть минимум 4 неудаленных примера
  • 2
    Каждый пример в интенте должен иметь законченный смысл
  • 3
    Примеры в одном интенте должны относиться к одной смысловой связке, а смыслы примеров разных интентов одной модели не должны пересекаться
  • 4
    Все интенты в модели должны относиться к одной общей теме и покрывать набор возможных фраз контактов в рамках этой темы
  • 5
    На качество определения интента влияет количество обучающих примеров. Стоит создавать больше обучающих примеров из жизни, реальных фраз людей. Рекомендованное количество — около 30 примеров на 1 интент

Создание и редактирование примера

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

Шаблоны для регулярных выражений

Шаблон — это последовательность слов и символов, которые обязательно должны встретиться во фразе пользователя, чтобы робот на нее отреагировал

Синтаксис шаблонов

  • Ключевое слово
    Слово, которое робот будет распознавать точно так, как оно указано в шаблоне. Например, для интента “купить” ключевыми словами могут быть “купить”, “приобрести”, “надыбать”, “затариться” и др. Каждое ключевое слово или ключевую фразу (смысловую фразу из нескольких ключевых слов) необходимо вводить в отдельный шаблон, т.е. чтобы добавить в ключевые слова “купить”, “приобрести”, “надыбать” и “затариться”, нужно создать 4 шаблона
  • Тильда ( ~ )

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

    “ ~куп~ ” — робот распознает слова “купить”, “покупка”, “закупиться” и др.
  • Звездочка ( * )

    Заменяет любое количество слов/параметров в шаблоне. Пример:

    ” * заказать * стол * ” — робот среагирует на любое количество слов перед, между и после слов “заказать” и “стол” (и если другие слова отсутствуют: “заказать стол”). Сработает на фразах “Я хочу заказать сегодня стол” или “Заказать стол на двоих” и др. Не сработает на фразе “заказать столик”

Приоритеты способов извлечения

По умолчанию для всех интентов стоит приоритет на способе “Нейросеть”. Вы можете переключать приоритеты — при нажатии приоритеты у обоих способов извлечения меняются на противоположные. Например, если у нейросети был высший приоритет, а у регулярных выражений — низший, то при смене у нейросети приоритет поменяется на низший, а приоритет регулярных выражений сменится на высший и робот будет в первую очередь пытаться извлечь намерение с помощью шаблонов и ключевых слов. Приоритет извлечения никак не влияет ни на обучение модели, ни на возможность использования в сценарии.

Создание интента

Чтобы создать интент:
  • 1
    Откройте раздел Интенты
  • 2
    Выберите модель
  • 3
    На панели слева нажмите Создать новый интент
  • 4
    Добавьте название, примеры и/или шаблоны
  • 5
    На панели сверху нажмите Обучить, чтобы применить изменения

Редактирование интента

Перемещение примера

Чтобы переместить пример из одного интента в другой:
  • 1
    Откройте раздел Интенты
  • 2
    Выберите модель
  • 3
    Выберите интент
  • 4
    Справа от примера нажмите на ➡️
  • 5
    Выберите интент для перемещения примера
  • 6
    На панели сверху нажмите Обучить, чтобы применить изменения
Удаление примера
Чтобы удалить пример:
  • 1
    Откройте раздел Интенты
  • 2
    Выберите модель
  • 3
    Выберите интент
  • 4
    Справа от примера нажмите 🗑
  • 5
    На панели сверху нажмите Обучить, чтобы применить изменения

Удаление интента

Чтобы удалить интент:
  • 1
    Откройте раздел Интенты
  • 2
    Выберите модель
  • 3
    Выберите интент
  • 4
    Справа от названия интента нажмите на ⋅⋅⋅
  • 5
    В модальном окне нажмите Удалить
  • 6
    На панели сверху нажмите Обучить, чтобы применить изменения

Модели и обучение

Модели

Модель — это совокупность интентов, объединенных по некоторому признаку (общая тема, аудитория и др.).


Модель служит для группировки интентов одной тематики и разделения похожих интентов разных тематик. Если обе модели используются в одном сценарии, для одного клиента или по одной сфере бизнеса (например, медицина), то все интенты лучше группировать в одну модель. Разделение по моделям лучше делать в самом крайнем случае, когда есть риск перепутать разные намерения пользователей из-за их похожести по тексту (например, два разных интента “записаться к врачу на консультацию” и “записаться на консультацию по обучению на врача” в одной модели могут перепутаться).

Чтобы модель начала работать, нужно создать минимум 2 интента, в каждом из которых будет минимум 4 примера, и обучить модель.

Обучение модели

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

Модель можно обучить, если в ней есть минимум 2 интента, в каждом из которых есть минимум 4 примера.

Уровень уверенности

Уверенность сети — процент соответствия фразы контакта конкретному интенту (насколько нейросеть уверена, что в этой фразе есть этот интент).


Порог доверия — уровень уверенности сети; извлеченные интенты с уверенностью сети ниже этого значения исключаются из потенциально верных (считаются не извлеченными из фразы и не отправляются в разметку).


Этот параметр используется для:

  • Отсева интентов, извлеченных нейросетью неверно (с низким уровнем уверенности)

  • Отсева неоднозначных фраз при автообучении (чтобы в обучающий набор примеров попали только фразы, в которых данный интент определился с максимально высокой точностью)

Вы можете выбрать один из уровней:

  • Низкий уровень — уровень уверенности >=50%

  • Средний уровень — уровень уверенности >=65%

  • Высокий уровень — уровень уверенности >=80%

Автообучение

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

Автообучение может работать отдельно для интентов на нейросети, отдельно для интентов на регулярных выражениях или для всех интентов с обоими способами извлечения одновременно. В зависимости от того, для какого метода извлечения (“нейросеть” и/или “регулярные выражения”) включено автообучение, система проставляет разметку “Верно” для всех фраз, которые обрабатывались этим методом и попали в разметку с определившимся интентом. Эти фразы автоматически попадают в обучающие примеры интента.
Модель будет автоматически переобучаться, когда количество новых примеров в модели достигнет 10% от общего числа примеров в модели

Автообучение нейросетью

При включении все примеры, которые нейросеть определяет подходящими под интент в текущей модели, автоматически попадают в набор примеров для обучения (вкладка “Нейросеть”).

Автообучение регулярными выражениями

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

Разметка

Разметка — это инструмент обработки результатов извлечения интентов.

В Разметку попадают фразы контактов из того места диалога, в котором ожидается интент. Вы можете провалидировать фразы из диалогов, чтобы улучшить качество извлечения интентов. Для этого вам нужно для каждой фразы выбрать, правильно ли было извлечено намерение.
  • Если фраза соответствует извлеченному интенту, размечайте ее Верно ✅ — она попадет в обучающие примеры этого интента
  • Если фраза не соответствует извлеченному интенту, но соответствует какому-то другому интенту, переместите ее в нужный интент по кнопке ➡️, она также добавится в примеры для обучения

Если фраза не соответствует ни извлеченному интенту, ни какому-либо другому, создайте для нее новый интент и переместите в него эту фразу, чтобы робот смог корректно извлекать из них намерение. Валидировать фразу можно только один раз.
При автообучении валидация фраз происходит автоматически.
В зависимости от того, для какого метода извлечения (“Нейросеть” и/или “Регулярные выражения”) включено автообучение, система проставляет разметку Верно ✅ для всех фраз, которые обрабатывались этим методом и попали в разметку с определившимся интентом. Эти фразы автоматически попадают в обучающие примеры интента.

В разделе Разметка вы можете отфильтровать фразы из диалогов по параметрам:
  • Сценарий — фильтрует фразы из диалогов, которые шли по выбранному сценарию
  • Узел — фильтрует фразы из диалогов, которые контакт произнес на выбранном узле сценария, по которому шел диалог

Работать с разметкой можно как в отдельном разделе Разметка, так и в разделе Интенты в каждом отдельном интенте в соответствующей вкладке “Разметка”, где содержатся фразы из диалогов, отфильтрованные по текущему интенту.

Желаем удачи!
Команда Robovoice.
Остались вопросы?
Посмотрите Наши видео-инструкции или отправьте Ваш вопрос менеджеру Robovoice

Общие частые вопросы