Обучение бота

База знаний, по которой бот понимает, что необходимо ответить пользователю

Для полноценной работы чат-бота с распознаванием намерений пользователя, необходимо создать и настроить базу знаний, по запросам к которой бот будет давать правильные ответы и выстраивать логику взаимодействия с пользователем.

Для этого вам понадобится сервис Dialogflow. На нем необходимо авторизоваться с помощью аккаунта Google.

Как выполнять регистрацию и интеграцию с соответствующим намерением из базы знаний в DF рекомендуем ознакомиться в разделах Регистрация с Dialogflow и Интеграция с Dialogflow.

После авторизации на сервисе Dialogflow и создании нового Проекта / Агента дальнейшая работа по обучению бота будет производиться в разделе Intents.

Создаем Намерения, с помощью которых бот сможет распознавать текстовые запросы пользователя и подбирать правильные ответы из базы знаний. По кнопке Create Intent или нажав на + около Intents, создаем новое намерение.

Например, создадим намерение Приветствие для стартового скрипта бота.

  • В поле Intent name указать заголовок намерения. например, "Приветствие".

  • В разделе ADD TRAINING PHRASES описываем перечень возможных вариантов обращения пользователя к чат-боту или синонимы ключевых слов.

Если заголовок намерения состоит более чем из одного слова, то слова в заголовке должны быть соединены знаком нижнего подчеркивания "_".

Заголовок намерения необходимо указывать такой же, как и параметр NLP Намерение в свойствах создаваемых скриптов, при этом регистр первых и последующих букв не важен.

Галочку на NLP Action следует установить, если вы хотите, чтобы в данном скрипте была возможность распознавания других намерений, если же ваш скрипт является переходящим или не предполагает свободного ввода текста, то этот пункт можно не заполнять.

При обучении бота, чем больше вы введете однородных по смыслу запросов и синонимов ключевых слов, тем более качественно ваш бот будет обучен.

Рекомендуем включить проверку на пересечение обучаемых фраз в различных Намерениях. Для этого в настройках Проекта / Агента установите активность параметра проверки.

Отслеживать проверку на пересечение необходимо в разделе Validation.

При обучении бота необходимо избегать лишних слов и фраз, таких как "пожалуйста", "будьте добры" и так далее.

Так же при обучении бота намерению важно стараться не допускать фраз, которые могут повторяться в соседних намерениях, иначе бот из базы знаний может выбрать некорректный ответ.

Знаки вопроса и прочие знаки препинания в конце предложения здесь прописывать не нужно. Применение вариантов с перестановкой слов приветствуется.

На момент создания и описания намерения, а также и в дальнейшей работе доступна возможность редактирования намерения.

После ввода всех вариантов возможных обращение необходимо сохранить намерение, нажав на кнопку Save.

В процессе обучения бота нужно проверять правильность вводимых значений. Для этого, в поле Try it now необходимо указать один из введенных вариантов обращения и система должна предоставить ссылку на нужное намерение. Например, при варианте вопроса "До скольки вы открыты" выдается намерение "Часы_работы".

Для того, чтобы бот отвечал на обращение пользователя не описанные в намерениях, необходимо создать скрипт Живой разговор:

  • Укажите название скрипта. Например: "Живой разговор";

  • Установить опцию Включить NLP;

  • Установить интеграцию с намерением в поле NLP намерение - установить значение " .* ";

  • Установить опцию Использовать определение NLP Action;

  • Установить интеграцию с функцией SmallTalk в поле NLP Action

    - установить значение " .* ";

  • Остальные параметры без изменения.

Для того, чтобы вывести Small Talk ответ бота по распознанному NLP Action, то в скрипт нужно добавить команду Отправить текст и в поле Текст указать

{{ $nlpLastReponseText }}

Таким образом бот пришлет пользователю сообщение с ответом, полученным от DialogFlow Small Talk.

В блоке Меню необходимо добавить пункт меню Повторяем, применяя следующие параметры:

  • Нажмите на кнопку Добавить пункт меню;

  • В поле Код укажите букву "а" и в фигурных скобках значение 300, например, а{300}. Это регулярное выражение обезопасит чат-бот от случайно введенного не заложенного в сценарии варианта, который может привести к остановке бота.

а{300} - это означает, что пользователь должен ввести символ "а" триста раз, чтобы попасть в этот пункт меню.

Однако, поскольку мы включили опцию Включить NLP у скрипта, то ввод от пользователя в первую очередь будет отправлен в DF для распознавания намерения и только в случае, если намерение не будет найдено, ввод от пользователя будет использован для поиска пункта меню с соответствующим кодом.

Так сейчас работает интеграция с NLP-машиной на платформе Metabot. Если в скрипте включена опция NLP, то при достижении меню ввод от пользователя вначале проверяется в базе знаний NLP и только потом по меню.

  • Установить опцию Скрыть код;

  • В поле Подпись пункта меню укажите, например, фразу "Повторяем";

  • Установите опцию Скрыть весь пункт меню

Именно для того, чтобы логика распознавания намерения вначале проверялась в базе знаний NLP, мы установили у пункта меню опцию Скрыть весь пункт меню. Таким образом меню существует в логике, но не видно на экране. "Заглушка" в виде a{300} означает, что работает только NLP распознавание по базе и пользователь никогда не попадет в пункт меню.

В Dialogflow нужно включить функцию Живой разговор, где в свою очередь его тоже можно обучить. Для этого нужно перейти в раздел Small talk, активировав параметр Enable.

Поздравляем Вас с успешным обучением бота распознавать свободное общение бота с пользователями в сервисе Dialogflow!

Last updated