В данном проекте реализован скрипт для формирования ответов чат-бота.
На вопрос о товарах скрипт возвращает информацию о товаре.
На остальные вопросы отвечает "болталкой".
Данные для реализации чат-бота предложены в курсе ML инженер от SkillFactory.
Исходные данные представляют из себя текстовый файл с вопросами и ответами на mail.ru (./data/mail_ru_answers.txt)
а также таблицу с данными о товарах (./data/products.csv)
По причине большого объема файлов папки data с данными и models с моделями
вынесены отдельно https://disk.yandex.ru/d/5DmPNEMe4BTamw .
Формирование ответа чат-бота работает по следующей схеме:
-
На основе файла с вопросами и ответами с mail.ru создана модель
Word2Vecдля векторизации вопросов к "болталке".
Создан индекс существующих вопросов с помощьюAnnoy.
Реализована функция поиска ответа, наиболее подходящего под вопрос пользователя. -
На основе названий и описаний товаров создана модель
Word2Vecдля векторизации вопросов о товарах.
Создан индекс названий и описаний товаров с помощьюAnnoy.
Реализована функция поиска товара, наиболее подходящего под запрос пользователя. -
Создан классификатор интента пользователя (отличающий продуктовый вопрос от постороннего).
Для этого с помощьюTfidfVectorizerсозданы векторные признаки описаний товаров и вопросов из данных для "болталки".
На полученных векторах обучена логистическая регрессия. -
Реализована итоговая функция, которая получает на вход вопрос пользователя
и возвращает либо описание товара, либо ответ из "болталки".
-
data - таблицы (папка вынесена сюда https://disk.yandex.ru/d/5DmPNEMe4BTamw )
-
models - модели (папка вынесена сюда https://disk.yandex.ru/d/5DmPNEMe4BTamw )
-
chatbot - содержит файлы с логикой чат-бота
- 01_talker.ipynb - реализация логики для получения ответов "болталки".
- 02_intent_classifier.ipynb - реализация классификатора интентов пользователя на запрос о продукте и все остальное.
- 03_product.ipynb - реализация логики для получения ответов на вопрос о товаре.
- 04_answer.ipynb - реализация итоговой логики чат-бота, которая возвращает ответ на вопрос пользователя.
# Создаем папку проекта
mkdir chatbot_product_talker
# Переходим в нее
cd chatbot_product_talker
# Клонируем репозиторий
git clone https://github.com/experiment0/chatbot_product_talker.gitВ данном проекте используется утилита uv.
Если она не установлена, ее можно установить по инструкции.
Далее для установки зависимостей проекта нужно выполнить команду:
uv sync