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

В Платформа существует функционал "Топ-5 интентов", который представлен в виде Контекстная переменная nlu\_result.Контекстная переменная появляется при прохождении Реплика Собеседника через Слот 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 может содержать разное количество пар ключ-значение:

1. 5 пар — если Слот NLU имеет 5 или более Подслотов intent;
2. 2-4 пары — если Слот NLU имеет от 2 до 4 Подслотов intent (количество пар будет соответствовать количеству Подслотов intent);
3. 1 пару — если Реплика Собеседника является точным совпадением с Обучающая фраза одного из Интентов.

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

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-Lkl_-Xije8/8ba649ab7c6f8ace2ea7b6c8cd10630ffb26a52c921a5af180db63d1cdcb9a609180eebfae996b09145fbad399d36f37a052651aa80c6b223fe6a0f7e0ed54a3f898f79f39fa92a794905039dcd757d33ab85fbb8bea6957ec1d743b1b27f74252b224b2)Агент прогоняет Реплика Собеседника через Слот NLU, определяет, сколько элементов содержит Контекстная переменная nlu\_result,затем выводит Собеседнику текст, содержащий либо топ-5 распознанных Интентов, либо 1 Интент, если Реплика Собеседника является точным совпадением с Обучающая фраза одного из Интентов.

1. Агент содержит Слот NLU с 7 Интентами.
2. После одного из Интентов построен следующий Сценарий агента:
3. 1. Слот Transition Rule с Подслотами condition:
   2. 1. Подслот со значением {{ nlu\_result\[1].intent\_name is defined }}
      2. Переход в ветку данного Подслота произойдет в том случае, если переменная nlu\_result имеет второй элемент (порядковый номер элемента 1, поскольку нумерация начинается с нуля).
      3. Подслотсо значением true
      4. Переход в ветку данного Подслота произойдет в том случае, если  Контекстная переменная nlu\_result имеет только один элемент, что говорит о том, что Реплика Собеседника  является точным совпадением с Обучающая фраза одного из Интентов.
   3. За Подслотом со значением {{ 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 }}
   4. Данный Слот выводит Собеседнику все 5 вариантов распознанных Интентов.
   5. За Подслотом со значением true следует текстовый Слот с текстом: Вот, что я распознал: Интент {{ nlu\_result\[0].intent\_name}} с конфиденсом {{ nlu\_result\[0].confidence }}
   6. Данный Слот выводит Собеседник 1 распознанный Интент.
   7. Ветки с текстовыми Слотами закрыты Слотами Wait For Reaction.
4. После остальных Интентов стоит Слот Jump, ведущий в Слот Transition Rule.
