Распознавание агентом естественного языка

icon picker
Функционал "Топ-5 интентов"

В
@Платформа
существует функционал "Топ-5 интентов", который представлен в виде
@Контекстная переменная
.
@Контекстная переменная
появляется при прохождении
@Реплика
@Собеседник
а через
@Слот
@NLU
и содержит информацию о топ-5 распознанных
@Интент
ов в порядке убывания конфиденса.
Пример
@Контекстная переменная
: [{'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}, {'intent_name': 'change_info', 'confidence': 6.851823127362877e-05}]
Переменная nlu_result может содержать разное количество пар ключ-значение:
5 пар — если
@Слот
@NLU
имеет 5 или более
@Подслот
ов
@intent
;
2-4 пары — если
@Слот
@NLU
имеет от 2 до 4
@Подслот
ов
@intent
(количество пар будет соответствовать количеству
@Подслот
ов
@intent
);
1 пару — если
@Реплика
@Собеседник
а является точным совпадением с
@Обучающая фраза
одного из
@Интент
ов.

Пример реализации Сценария с использованием функционала

image.png
@Агент
прогоняет
@Реплика
@Собеседник
а через
@Слот
@NLU
, определяет, сколько элементов содержит
@Контекстная переменная
, затем выводит
@Собеседник
у текст, содержащий либо топ-5 распознанных
@Интент
ов, либо 1
@Интент
, если
@Реплика
@Собеседник
а является точным совпадением с
@Обучающая фраза
одного из
@Интент
ов.
@Агент
содержит
@Слот
@NLU
с 7
@Интент
ами.
После одного из
@Интент
ов построен следующий
@Сценарий
:
@Слот
@Transition Rule
с
@Подслот
ами
@condition
:
@Подслот
со значением {{ nlu_result[1].intent_name is defined }}
Переход в ветку данного
@Подслот
а произойдет в том случае, если переменная nlu_result имеет второй элемент (порядковый номер элемента 1, поскольку нумерация начинается с нуля).
@Подслот
со значением true
Переход в ветку данного
@Подслот
а произойдет в том случае, если
@Контекстная переменная
имеет только один элемент, что говорит о том, что
@Реплика
@Собеседник
а является точным совпадением с
@Обучающая фраза
одного из
@Интент
ов.
За
@Подслот
ом со значением {{ nlu_result[1].intent_name is defined }} следует текстовый
@Слот
с текстом: Вот, что я распознал: Интент {{ nlu_result[0].intent_name}} с конфиденсом {{ nlu_result[0].confidence }} Интент {{ nlu_result[1].intent_name}} с конфиденсом {{ nlu_result[1].confidence }} Интент {{ nlu_result[2].intent_name}} с конфиденсом {{ nlu_result[2].confidence }} Интент {{ nlu_result[3].intent_name}} с конфиденсом {{ nlu_result[3].confidence }} Интент {{ nlu_result[4].intent_name}} с конфиденсом {{ nlu_result[4].confidence }}
Данный
@Слот
выводит
@Собеседник
у все 5 вариантов распознанных
@Интент
ов.
За
@Подслот
ом со значением true следует текстовый
@Слот
с текстом: Вот, что я распознал: Интент {{ nlu_result[0].intent_name}} с конфиденсом {{ nlu_result[0].confidence }}
Данный
@Слот
выводит
@Собеседник
1 распознанный
@Интент
.
Ветки с текстовыми
@Слот
ами закрыты
@Слот
ами
@Wait For Reaction
.
После остальных
@Интент
ов стоит
@Слот
@Jump
, ведущий в
@Слот
@Transition Rule
.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.