Распознавание намерений | Слот NLU и под-слоты Intent и Fallback
Слот NLU – слот, предназначенный для реализации распознавания речи Собеседника Агентом ー обработки сообщений на естественном языке с целью определить высказанное намерение (Интент) Собеседника и в зависимости от определенного интента выполнить переход в соответствующую ветку Сценария.

Слот NLU является комплексным слотом и не может существовать без дочерних под-слотов Intent и под-слота Fallback, которые начинают собственные ветки, в которые осуществляется переход после распознавания соответствующего намерения.
Слот NLU обрабатывает входящую реплику Собеседника, предварительно записанную в переменную client_message.
Слот NLU распознает только те интенты, которые заключены в его под-слоты Intent. Остальные возможные намерения Собеседников (интенты) не участвуют в распознавании в данном NLU слоте. Например, на изображении выше, слот NLU будет обучен распознавать только два интента, которые выбраны в его под-слотах Intent. Если ни один из этих интентов не будет распознан, общение перейдет в под-слот Fallback.

- 1.Name – название слота. Максимальная длина значения поля — 40 символов.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если поле пустое, выводится ошибка Please enter a slot name
- 2.если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
- 2.Confidence Threshold – выраженное в процентах минимальное значение уверенности в распознанном намерении, при котором интент считается распознанным, и общение переходит в ветку соответствующего под-слота Intent. Значение Confidence threshold может быть целым числом от 0 до 100.
- 1.Значение Confidence Threshold зависит от количества интентов в Дереве Сценария. Рекомендуется, чтобы значение было обратно пропорционально количеству под-слотов Intent в Сценарии: чем больше интентов, тем меньше должен быть Confidence Threshold.
- 2.Для начала рекомендуется сначала устанавливать значение, равное 15 – при таком Confidence Threshold распознавание происходит наиболее успешно у большинства Ботов. В зависимости от результатов тестирования Бота Confidence Threshold можно будет изменить. Подробнее в разделе Подбор оптимального значения Confidence Threshold.
- 3.Каждому сообщению Собеседника присваивается значение Confidence (число от 0 до 1). Confidence характеризует уверенность Бота в том, что сообщение относится к определенному интенту.
- 4.Значение Confidence Threshold – это выраженное в процентах минимальное значение Confidence, при котором Бот переходит в слот одного из интентов. Если значение Confidence меньше Confidence threshold, Бот переходит в слот Fallback.
- 5.При сохранении Слота проверяется значение в поле:
- 1.если поле пустое, выводится ошибка Please enter confidence threshold
- 2.при значении более 100 выводится ошибка Confidence threshold must be less than or equal to 100
- 3.при указании нецелого значения выводится ошибка Confidence threshold must be an integer
- 1.Name — название слота, которое будет отображено в Дереве сценария. Максимальная длина значения поля — 40 символов. Если название не введено, Платформа автоматически копирует название Интента из поля Intent в поле Name.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
- 2.Intent* — Интент, при распознании которого Сценарий пойдет по Ветке сценария , следующей за данным интентом.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если поле пустое, выводится ошибка Please choose an intent.
- 3.Кнопка SHOW INTENT IN A NEW TAB — по нажатию кнопки выбранный в поле Интент открывается в соседней вкладке браузера.
Name — название подслота, которое будет отображено в Дереве сценария. Максимальная длина значения поля — 40 символов. При создании слота NLU в поле Name подслота Fallback автоматически подставляется содержимое поля Name слота NLU. Если содержимое поля Name удалено, подслот в Дерево сценария будет отображаться без названия.
При сохранении Слота проверяется значение в поле:
- 1.если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
- При создании слота NLU автоматически создаются два подслота Intent и подслот Fallback.
Если предварительно интенты не были созданы, за слотом NLU будут созданы под-слоты с автоматически сгенерированными интентами:

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

- Для того чтобы добавить новый под-слот, нужно нажать на кнопку +. Новый под-слот отобразится в Сценарии выше под-слота Fallback, который всегда располагается самым нижним.
Слот NLU обучается на выборках Интентов, добавленных в качестве его подслотов. О создании Интентов и их обучающих выборок см статью Вкладка интентов — Intents . Слот NLU на входе принимает переменную client_message (Confidence threshold, указанный в слоте NLU), обрабатывает ее, распознавая Интент, и переводит Общение в ветку распознанного Интента. Если же ни один Интент не распознан с должным уровнем уверенности, Общение переходит в под-слот fallback.
- 1.Обучение: слот NLU обучается на выборках интентов, добавленных в качестве его под-слотов Intent и после этого становится частью обученной модели Агента.
- 2.Получение реплики: слот NLU в обученной модели Агента на входе принимает реплики Собеседниковー текст из переменной client_message.
- 3.Классификация реплики: Обученная модель Агента производит классификацию реплики Собеседника из переменной client_message и расставляет все интенты данного слота NLU по уровню уверенности в них ー Confidence (в процентах, аналогично Confidence Threshold).
- 4.Сохранение топ-5 интентов в Контексте чата: в Контексте Чата создается Контекстная переменная nlu_result, значением которой становится json-объект, содержащий информацию о топ-5 распознанных интентов в порядке убывания их Сonfidence. Пример:
[{'intent_name': 'size', 'confidence': 0.9993743300437927}, {'intent_name': 'product_in_stock', 'confidence': 0.00019508253899402916}, {'intent_name': 'model_price', 'confidence': 0.00012844608863815665}, {'intent_name': 'address', 'confidence': 0.00010525238758418709}]
Важно: в поле Confidence Threshold Слота NLU значение задается в процентах, а в данной Контекстной переменной — в долях от единицы. - 5.Переход в интент: переход осуществляется в интент с максимальным Confidence при условии, что Confidence >= Confidence Threshold в настройках данного слота NLU, и является интентом, которым распознана реплика Собеседника. Как следствие:
- Общение перейдет в ветку данного под-слота Intent;
- В системных контекстных переменных создается переменная intent_name ー название распознанного интента;
- В системных контекстных переменных создается переменная confidence – степень уверенности Бота в том, что реплика Собеседника относится к данному интенту (в процентах);
- Переменные intent_name и confidence сохраняются в контексте Чата до следующего выполнения этого же или другого слота NLU в данном Чате .
- 6.Переход в Fallbaclk: переход в под-слот Fallbaclk осуществляется, если Confidence всех интентов ниже значения Confidence Threshold в настройках данного слота NLU. Это означает, что ни один из интентов не был распознан. Как следствие:
- Общение перейдет в ветку данного под-слота Fallback;
- В системных контекстных переменных создается переменная error – текст ошибки. Значение error сохраняется в контексте Чата до: - Следующего выполнения этого же или другого слота NLU; - Выполнения слота Regular Expression; - Выполнения слота External Request.
В данном случае реплика Собеседника была отнесена слотом NLU к интенту joke, и Сценарий перешел по соответствующей данному интенту ветке.


Last modified 1mo ago