Перейти к основному содержимому
Версия: 3.0

Понимание языка (NLU)

Раздел «Понимание языка» отвечает за то, как бот понимает свободный текст пользователя, а не только нажатия кнопок меню. Например, если пользователь вместо клика по кнопке «Проверить баланс» напишет «какой у меня баланс на карте?», распознавание намерений поможет боту понять, что это тот же самый запрос.

Список намерений бота «НашБанк — Контакт-центр»

Намерения (интенты)​

Намерение — это то, что хочет пользователь: «узнать баланс», «заблокировать карту», «поговорить с оператором». Для каждого намерения добавляется набор примеров фраз («обучающих высказываний») — чем разнообразнее и естественнее примеры, тем точнее бот распознаёт намерение в реальных сообщениях.

У бота «НашБанк» заведено четыре намерения, как видно на скриншоте: «проверка баланса», «блокировка карты», «вопрос по кредиту», «связь с оператором» — названия специально даны с пробелами, в естественном для русского языка виде, а не технической записью вроде check_balance.

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

  1. Откройте раздел «Понимание естественного языка», вкладку «Намерения».
  2. Нажмите «+» в боковой панели.
  3. Введите название намерения — например, «вопрос по кредиту». Как и в названиях звеньев и процессов, пробелы в названии намерения допустимы и ничего не ломают.
  4. Добавьте несколько обучающих фраз, которыми реальный пользователь мог бы сформулировать этот же запрос: «хочу оформить кредит», «какая ставка по кредиту», «расскажите про условия кредита» — такой набор заведён для намерения «вопрос по кредиту» в демонстрационном боте.
  5. При необходимости добавьте слоты — конкретные данные внутри фразы (сумма, дата, номер телефона), которые должны быть извлечены и переданы дальше в сценарий. Имя слота можно писать по-русски и с пробелами («Сумма кредита»): оно показывается везде в Studio, а в высказываниях и в event.nlu.slots слот называется по-латыни (summa_kredita), это имя видно под полем при создании слота. Список сущностей слота раскрывается поверх окна и не прячется под него.

После добавления или изменения намерений бот нужно переобучить — платформа делает это автоматически в фоне; индикатор внизу интерфейса Studio показывает, идёт ли обучение сейчас.

Если обучение не удалось​

Если обучение закончилось ошибкой, внизу интерфейса Studio снова появляется кнопка «Обучить», а ошибка открывается в окне «Результат обучения». В нём два списка: «Причины» и «Что сделать», а ниже раскрывающийся блок «Подробности от сервера NLU» с точным текстом ответа сервера для администратора. Закрыли окно по ошибке: рядом с кнопкой «Обучение бота» внизу есть ссылка «Подробнее», она открывает его снова. Исправьте причину и нажмите «Обучить» ещё раз.

Окно «Результат обучения»: в намерении нет ни одной фразы

ПричинаЧто сделать
В намерении нет ни одной фразы на этом языкеДобавьте фразы на языке, который обучается, или удалите ненужное намерение
В фразах размечен слот, которого нет в списке слотовУберите разметку из фраз или добавьте слот в намерение
У слота указана сущность, которой не существуетСоздайте сущность на вкладке «Сущности» или выберите другую
Регулярное выражение сущности записано неверно или подходит под пустую строкуИсправьте шаблон сущности
Языковой сервер не поддерживает язык бота или не отвечаетПроверьте плашку «Языки» и раздел «Языки» в консоли администрирования; положите файлы языковой модели в каталог языкового сервера
Сервер NLU не отвечаетПроверьте плашку «NLU», при необходимости журнал NLU
Сервер Duckling недоступенЗапустите Duckling или отключите его в «Настройках сервера»
Процесс обучения аварийно завершилсяЧаще всего не хватило памяти или пропал языковой сервер; освободите память, дождитесь зелёных плашек «Языки» и «NLU», повторите обучение
Обучение прервано: NLU остановился или перезапущенДождитесь, когда плашка «NLU» станет зелёной, и запустите обучение заново

Если обучение останавливается молча и без причины, сначала посмотрите на плашки состояния сервисов: красная «Языки» или «NLU» почти всегда объясняет остановку.

Использование намерения в сценарии​

Чтобы направить диалог по намерению, в условии перехода звена, принимающего свободный текст, используйте выражение вида event.nlu.intent.name === 'вопрос по кредиту' && event.nlu.intent.confidence > 0.5 — так же, как условие по значению кнопки меню (event.payload.payload === 'CREDIT'), только источником служит не клик, а результат распознавания. Проверка уверенности (confidence) отсекает случайные срабатывания на фразы, которые только похожи на намерение.

Сущности (entities)​

Сущность — конкретные данные внутри фразы (дата, номер телефона, город, название продукта), которые бот извлекает и может использовать дальше в сценарии. Платформа поддерживает:

  • Системные сущности — встроенные типы вроде дат, чисел, сумм — доступны без дополнительной настройки.
  • Пользовательские сущности — список значений (например, список городов присутствия банка) или шаблон (регулярное выражение, например для формата номера карты), которые вы заводите сами во вкладке «Сущности».

Несколько языков​

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