https://github.com/polinanime/product_bot
https://github.com/polinanime/product_bot
bot chatbot natural-language-processing nlp
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/polinanime/product_bot
- Owner: Polinanime
- License: gpl-3.0
- Created: 2021-12-07T18:19:59.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-02-18T15:41:55.000Z (over 4 years ago)
- Last Synced: 2025-02-07T07:41:41.877Z (over 1 year ago)
- Topics: bot, chatbot, natural-language-processing, nlp
- Language: Python
- Homepage: http://t.me/nlp_sirius_bot
- Size: 26.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ПРОДУКТОВЫЙ NLP БОТ
КТО ЭТО И С ЧЕМ ЕДЯТ
------------------
[Григорий](http://t.me/nlp_sirius_bot) - бот в Телеграме для удобного заказа продуктов и общения на естественном
языке.
Бот имеет собственную базу рекомендаций продуктов на основе заказов пользователя, сделанных через него, поэтому бот
интегрируется в любой маагазин (главное - наличие необходимого API). Система рекомендаций самая примитивная — продается
товар, который пользователь покупает чаще всего в каждой категории.
Сначала бот ищет запрос в заранее написанной таблице вопрос-ответ, затем если он есть, то совершает соответствующие
действия и отвечает, иначе подключает GPT-2 для генерации ответа.
ПОДРОБНЕЕ ПРО NLP
-----------------
В первую очередь при получении запроса он прогоняется через **neuralintents** с таблицей сущностей, написанной заранее.
Если там есть необходимый запрос (например, как дела?, расскажи анекдот и т.д.), то пользователю идет соответствующий
ответ. При чем если запрос касается действий с магазином (заказать продукты, показать корзину и т.д.), то выполняются
нужные действия и лишь затем идет ответ пользователю, что очевидно.
Однако если модуль не нашел в таблице запрос, то подключается модель GPT-2, обученная на моих личным переписках, и
генерирует ответ. Стоит также отметить недочеты в этой части:
- модель обученая на моих личных переписках, поэтому
* может выдать мои данные
* может отправить ссылку или какой-то кусок кода, который я кому-либо отправлял
- слишком мало данных для обучения (всего 97 тыщ строк)
ПОДРОБНЕЕ ПРО ЗАКАЗ ПРОДУКТОВ
-----------------------------
В проекте реализован сервер-затычка, написанный на Go. В нем есть минимальный API (показать данные продукта, добавить в
корзину и т.д.). Общение с сервером идет через защищенное базовой аутентификацией http соединение.
Развернуты два PostgreSQL (для магазина и для бота). Для магазина там таблицы пользователей и продуктов, для бота -
пользователей и рекомендаций.
КОММЕНТАРИИ
-----------
- все держится на моем домашнем сервере (и бот, и магазин, и постгрес), поэтому если что-то сломалось и не отвечает, то
самое просто решение — написать мне, чтобы я подрубил, если что выключил~~ось~~
- проект создан для конкурса "Уроки Настоящего" за ~1 месяц
- впервые работал с
* постгрес
* нейронки вообще
* вместо GPT и neuralintents изначально планировалось использовать косинусное сравнение (?) и индексированию по
словам — отвечал примерно связно, но мало на что находился ответ, поэтому идея была заморожена