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

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

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


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


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

  • 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
    На панели сверху нажмите Обучить, чтобы применить изменения

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

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