Чат-боты набирают обороты каждый день, и недалек тот день, когда они коснутся практически всех аспектов жизни. Если вы видите, что такие компании, как IBM, Facebook, Google, Microsoft и Amazon, все активно работают над этим и создают свои собственные фреймворки. Фреймворки, доступные для создания чат-бота, - это стек Rasa, Microsoft Bot Framework, Google Dialogflow и т. д. Давайте посмотрим на преимущество Rasa над другими фреймворками, доступными на рынке.

Почему РАСА?

Стек RASA - это инструмент искусственного интеллекта с открытым исходным кодом, который, будучи фреймворком с открытым исходным кодом, легко настраивается. Основное преимущество RASA NLU заключается в том, что у вас есть доступ ко всему конвейеру обработки Python и вы можете расширить его с помощью сложной настраиваемой логики. На самом деле клиенты не хотят делиться своими данными, и большинство инструментов доступно на облачной платформе . Вы можете создать, развернуть или разместить Rasa на своем сервере или в среде с полным контролем над ним.

Rasa - решение для чат-бота

Rasa предоставляет вам набор инструментов для создания полноценного чат-бота на вашем локальном рабочем столе.

Их флагманские инструменты:

  • Rasa NLU - инструмент понимания естественного языка, который принимает вводимые пользователем данные, определяет намерение и извлекает доступные объекты.
  • Rasa Core - решение для управления диалогами, которое пытается построить вероятностную модель, которая определяет набор действий, которые необходимо выполнить, на основе предыдущего набора пользовательских входов.

Вот некоторые ключевые слова, которые обычно используются при создании чат-бота:

  • Намерение - рассматривайте его как цель или цель пользовательского ввода. Если пользователь говорит: «Какая погода в Лондоне?», Он хочет найти «погоду в Лондоне».
  • Сущность - это полезная информация, которую можно извлечь из пользовательского ввода. Из предыдущего примера мы понимаем, что цель - узнать погоду, но в каком месте? Если мы извлечем «Лондон» как объект, мы сможем выполнить действие с «Лондоном».
  • Действия - Действия - это операции, выполняемые ботом либо с запросом дополнительных сведений для получения всех сущностей, либо с интеграцией с некоторыми API-интерфейсами, либо с запросом к базе данных для получения / сохранения некоторой информации.
  • Истории - это примеры взаимодействий между пользователем и ботом, определяемые с точки зрения зафиксированных намерений и выполненных действий. Разработчик может указать, что делать, если пользователь вводит какое-то намерение с некоторыми объектами или без них. В приведенном выше примере пользователь хочет найти «погоду в Лондоне», но какой день не указан, значит, отсутствует сущность. Это приведет к следующему действию бота.

Теперь, когда мы знаем основы, давайте перейдем к действию :)

В этом посте мы сосредоточимся на понимании естественного языка Rasa, которое включает в себя классификацию намерений и извлечение сущностей.

Понимание естественного языка раса (NLU):

Давайте посмотрим на приведенный ниже пример создания бота.

Пользователь вводит запрос «Какая погода в Лондоне», Rasa NLU предсказывает намерение «информировать» (с достоверностью 94%) и объект «Лондон» (с достоверностью 98%) для данного входного запроса. Ядро Rasa используется для того, чтобы бот мог реагировать на ввод пользователя. В этом примере следующее действие бота - предоставить информацию о погоде в «Лондоне». Таким образом, бот отвечает: «Сейчас солнечно, 10 градусов тепла».

Поскольку мы фокусируемся на Rasa NLU, в этом посте мы рассмотрим следующие темы:

  • Установка и настройка Rasa
  • Установка Rasa-NLU-Trainer
  • Создание обучающих данных
  • Файл конфигурации Rasa
  • Обучение модели раса

Установка и настройка Rasa:

Давайте сначала настроим среду, а для этого нам нужно установить python. Я использую conda для настройки виртуальной среды для Python и настоятельно рекомендую создать ее, так как было бы хорошо иметь всю установку Rasa в одном месте.

conda create -n rasa-chatbot python=3.6
conda activate rasa-chatbot

Установим пакет rasa:

pip install rasa

При этом будут установлены все зависимости rasa, включая rasa-nlu и rasa-core.

python -m spacy download en

Так как язык моего чат-бота английский, я загружу английский словарь, используя spacy

Установка Rasa-NLU-Trainer:

Rasa-NLU-Trainer - это пользовательский интерфейс, который помогает в создании обучающих данных для модели Rasa NLU. Это приложение Javascript, и нам нужны NodeJs и NPM.

Установите последнюю версию NodeJs и NPM с https://nodejs.org/en/

npm i -g rasa-nlu-trainer

Приведенную выше команду следует запустить в терминале в каталоге вашего проекта. Это установит rasa-nlu-trainer.

Создание обучающих данных:

После завершения установки пакета давайте создадим каталог проекта. Я назвал свой проект rasa-chatbot. Мы создаем каталог данных и файл data.json внутри него. Мы также должны создать файл конфигурации «config_spacy.json» и файл python «nlu_model.py».

mkdir rasa-chatbot
cd rasa-chatbot
mkdir data
echo 'config'>config_spacy.json
echo 'nlu_model'>nlu_model.py
cd data
echo 'training_data'>data.json

Есть два способа создать обучающие данные для модели:

  • Создайте данные json в файле data.json
  • Использование пользовательского интерфейса Rasa-NLU-Trainer для создания данных json

Вы также можете использовать пользовательский интерфейс Rasa-NLU-Trainer для создания обучающих данных для модели. Этот пользовательский интерфейс может быть представлен клиентам вашего проекта для добавления новых примеров обучения, для которых они видят, что бот не работает.

cd data
rasa-nlu-trainer

Пользовательский интерфейс Rasa-NLU-Trainer можно использовать для добавления новых примеров, можно указать намерения и выделить объекты в пользовательском интерфейсе. Этот пользовательский интерфейс сгенерировал данные обучения в файле «data.json».

Файл конфигурации Rasa

Файл конфигурации важен для обучения модели rasa. Подробнее об этом читайте в документации.

Мы укажем три вещи в нашем файле конфигурации:

  1. Конвейер - указывает, какие экстракторы функций используются для обработки текстовых сообщений и извлечения необходимой информации. Раса предоставил дополнительную информацию о трубопроводе здесь.
  2. Путь - мы указываем путь, по которому мы хотим сохранить нашу обученную модель Rasa-NLU.
  3. Данные - указываем каталог, в котором хранятся данные обучения

Обучение модели раса

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

Здесь функция train_nlu () обучает модель Rasa-NLU и сохраняет ее в каталоге / models / nlu, а функция run_nlu () использует обученную модель Rasa-NLU для прогнозирования намерений и извлечения сущностей для нового пользовательского запроса. что-то вроде этого:

Несмотря на то, что мы не предоставили пример «Какая сейчас погода в Берлине?», Бот может угадать намерение и извлечь объект «местоположение» со значением «берлин». Всегда полезно обучать модель с большим объемом данных, чтобы она могла учиться на них.

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

Вскоре я расскажу, как использовать Rasa-core для создания диалогов, чтобы бот мог реагировать на ввод пользователя.

Сообщество Rasa представило RasaX, который помогает вам использовать разговоры в реальном времени для улучшения вашего помощника. Вы можете прочитать больше об этом здесь"

Я настоятельно рекомендую просмотреть каждый раздел и прочитать документацию Rasa, чтобы лучше понять ее. Если вам понадобится код, это репозиторий Github.

Поделитесь своими мыслями, отзывами, комментариями и пояснениями.

Спасибо за внимание!