An open API service indexing awesome lists of open source software.

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

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 изначально планировалось использовать косинусное сравнение (?) и индексированию по
словам — отвечал примерно связно, но мало на что находился ответ, поэтому идея была заморожена