Создание чат-бота с помощью IRIS и Python
В этой статье я собираюсь показать, как интегрировать базу данных InterSystems IRIS с Python для обслуживания модели машинного
обучения обработке естественного языка (NLP).
Почему Python?
Благодаря широкому внедрению и использованию в мире Python располагает отличным сообществом и множеством ускорителей | библиотек для развертывания приложений любого типа.
Если вам интересно (https://www.python.org/about/apps /).
Iris Globals
По мере того, как я начинаю узнавать о ^ globals, я стал привыкать использовать их как быстрый способ ввода данных в готовую модель данных.
Итак, сначала я собираюсь использовать ^ globals для хранения данных обучения и разговоров для регистрации поведения чат-бота.
Обработка естественного языка
Обработка естественного языка или NLP - это предмет искусственного интеллекта, который создает способность читать и понимать значение наших
языков для машин. Как вы можете себе представить, это не совсем просто, но я собираюсь показать, как выполнить ваши первые шаги в этой
широкой и красивой области.
Демо-версия - Попробуйте сами
Я развернул приложение чат-бота в качестве демо-версии здесь:
http://iris-python-suite.eastus.cloudapp.azure.com:8080
Как это работает?
Машинное обучение
Для начала полезно знать, что парадигма машинного обучения отличается от обычной разработки программного обеспечения.
Главный момент, который трудно понять, - это цикл разработки моделей машинного обучения.
Предупреждение о неполном объяснении
Стандартный цикл разработки приложения подобен:
Разработка кода -> Тестирование (с данными разработки) -> Развертывание (использование реальных данных)
И машинное обучение кода само по себе не имеет одинаковой ценности. Он разделяет ответственность с данными! И никаких данных,
реальных данных! Потому что конечный код, который будет выполняться, генерируется путем объединения концепций разработки и используемых данных.
Таким образом, цикл приложения для машинного обучения должен быть похож:
Разработка (обучение) модели + реальные данные-> Проверка-> Развертывание результата этого (модели)
Как обучить модель?
Существует множество методов обучения моделей, и каждый случай и задача требуют длительного обучения. В данном случае я использую
библиотеку ChatterBot, которая инкапсулирует некоторые методы и предоставляет обучающие
методы и предварительно обработанные обучающие данные, чтобы помочь нам сосредоточиться на результатах.
Предварительно обученные языки моделей и пользовательская модель
Вы можете начать с этого, чтобы создать базового чат-бота для общения. Вы также можете создать все данные для обучения своего чат-бота,
которые могут идеально соответствовать вашим потребностям, но их сложно создать за короткое время. В этом проекте я использую en_core_web_sm в качестве основы для
беседы и объединяю с пользовательскими обучающими данными, которые вы можете создать с помощью формы
Базовая архитектура
Что я использовал в Python
В этой прикладной среде я использую Python 3.7 со следующими модулями:
- PyYAML<=5.0.0
- dash==1.12.0
- dash-bootstrap-components==0.10.1
- dash-core-components==1.10.0
- dash-html-components==1.0.3
- dash-renderer==1.4.1
- dash-table==4.7.0
- plotly==4.7.1
- numpy==1.18.4
- networkx==2.4
- Flask>=1.0.0
- chatterbot>=1.0.0
- chatterbot-corpus>=1.2.0
- SQLAlchemy>=1.2
- ./nativeAPI_wheel/irisnative-1.0.0-cp34-abi3-linux_x86_64.whl
Структура проекта
Этот проект имеет простую структуру, которую легко понять. В основной папке у нас есть 3 наиболее важных вложенных папки:
- ./app: со всем кодом приложения и установочной конфигурацией.
- ./iris: с помощью InterSystems IRIS dockerfile готовится к обслуживанию приложения.
- ./data: Для привязки хоста к контейнерной среде с помощью тома
Структура приложения
Теперь внутри каталога ./app мы можем увидеть некоторые файлы:
- chatbot.py : с реализацией веб-приложения
- iris_python_suite.py : класс с некоторыми ускорителями для использования с базой данных IRIS и Python с помощью IRIS Native API.
Структура базы данных
Это приложение использует Intersystems IRIS в качестве репозитория, в качестве глобальных файлов используются:
- ^chatbot.training.data: хранит все пользовательские данные обучения в формате вопросов и ответов.
- ^ chatbot.conversation: сохраняет всю полезную информацию о беседе.
- ^ chatbot.training.isupdated : управляет конвейером обучения.
Преимущества моего другого решения
Я не создавал отчет по всем разговорам, но это не проблема, с помощью моего средства просмотра глобальных графиков я могу следить за
разговорами.
Запуск приложения самостоятельно
Предварительные требования
- git
- docker и docker-compose (и дополнительные настройки памяти в docker не менее 4 ГБ)
- доступ к терминалу в вашей среде
Шаги
С помощью docker-compose вы можете легко создать единую среду со всеми элементами и конфигурациями перейдите в папку iris-python-covid19
и введите это:
$ docker compose build
$ docker compose up
Расчетное время на создание контейнеров
первый запуск будет зависеть от вашей интернет-ссылки для загрузки изображений и зависимостей.
Если это продлится более 15 минут, вероятно, что-то пойдет не так, не стесняйтесь сообщать здесь.
После первого запуска следующие будут работать лучше и займут менее 2 минут.
Все ли в порядке
Через некоторое время вы сможете открыть свой браузер и перейти по адресу:
Форма данных для обучения
http://localhost:8050/chatbot-training-data
Чат-бот
http://localhost:8080
Вам следует заглянуть на портал администратора IRIS
Пока я использую пространство имен USER
http://localhost:9092
user: _SYSTEM
pass: theansweris42