sergree / DolboNet

🤪 Русскоязычный чат-бот для Discord на архитектуре Transformer
GNU General Public License v3.0
58 stars 17 forks source link
bot chatbot deep-learning discord keras python russian tensorflow tensorflow2 transformer
Dear English speaking users, unfortunately this project is only in Russian at the moment. Sorry for the inconvenience.

DolboNet

Привет!

Мы рады представить Вам нашу разработку - Русскоязычный чат-бот для Discord на архитектуре Transformer.

Нейронная сеть обучена на 36M+ публично доступных сообщениях наиболее популярных русскоязычных серверов Discord в течение одной эпохи (5 суток на GTX 1080). Обучение проходило по принципу: какое сообщение вероятнее всего будет отправлено после 10-ти предыдущих на уровне character trigram embeddings.

Дота?

Данный бот не использует готовую базу данных сообщений, а генерирует новые уникальные сообщения, реализуя концепцию seq2seq на архитектуре Transformer. Основа сети взята из этого руководства по TensorFlow 2.

Дурачок

Эта модель была актуальна в 2019 году, но довольно быстро устарела. Вы можете найти что-то более качественное и современное, проследовав сюда.

Поехали! 🚀

Установка

Илон

Windows 10 64-bit

Протестировано на 2 x 2.6 ГГц CPU + 4 ГБ RAM.

Бот заработает только на 64-разрядной версии Windows и Python.

Ubuntu 20.04 LTS

Протестировано на 2 x 2.6 ГГц CPU + 2 ГБ RAM.

Поддержка GPU

Если на машине присутствует видеокарта NVIDIA, то Вы можете запустить бота используя CUDA, что даст прирост в скорости работы.

Хз

⚠️ Не советуем настраивать поддержку GPU, если Вы делаете это впервые и у Вас нет желания потратить на процесс установки весь вечер ⚠️

Дополнительные настройки

В файле config.py можно отредактировать некоторые параметры, чтобы изменить характер и поведение бота:

Значение Описание
0.01 Я знаю только слово Привет
0.3 Попугай-повторюшка
0.65 По-умолчанию
1.3 Пьяный поэт
3 Уснул на клавиатуре

Для удобства экспериментирования присутствует команда !temp значение, которую можно отправлять в Discord, чтобы редактировать это значение на ходу. Команда работает только у пользователей с привилегией Администратор.

Остальные параметры лучше не редактировать.

Кофе

Кофе

☕ Если Вы заинтересованы в развитии проекта, Вы можете купить мне кофе. ☕

Спасибо! 🙏

FAQ

У меня половина сервера таких долбонетов, зачем нужен ещё один?

Плохо

ПоФорме

Anime

News

Pings

Blind

А если серьёзно, причина только одна.

Хостите ли вы этого бота? Могу ли я обойтись публичной версией? Дайте ссылку!

Ссылка. Бот доступен не всегда и иногда отвечает медленно. Мы не хостим публичную версию бота. Чтобы он появился на Вашем Discord сервере, его необходимо установить.

На каких серверах этот бот уже есть?

Мы знаем, что бот уже хостится здесь:

Напишите нам, чтобы попасть в этот список.

Что-то он в основном бессвязный бред отправляет. 🤔

Бред

Да, есть такое. Но иногда получается забавно.

Это же бесполезная фигня, вы понимаете?

Конечно. Как и многое другое в нашем современном мире.

Бот отправил мне оскорбление или угрозу! Беспредел! 😠

Юра

Нейронная сеть бота лишь отражает публичные данные, на которых проходило обучение. Возможно, это тревожный звоночек о том, что стало с нашим обществом. В любом случае, мы не хотели.

Что насчёт английского языка?

Транслит

На данном этапе мы решили не расходовать ёмкость сети на латинские триграммы. Латиница автоматически транслитерируется в кириллицу с помощью opendatakosovo/cyrillic-transliteration. Мы тестировали много подобных библиотек, эта - самая быстрая.

Почему триграммы?

Потому-что [великий и могучий]. Идея, конечно же, не наша, а взята из этой книги.

Может было бы лучше использовать стемминг?

В данном кейсе нет. Так как лдюи в чатах пиушт с очепятками, а инагда с ашебками. A inogda translitom, ile fse vmesti. 🤪

Другое дело википедию или новостные ленты разбирать.

Он и эмодзи умеет отправлять?

Emoji

Да. Только пока рандомно. Всем кастомным эмодзи присвоен единый токен в словаре. В будущем есть планы привязать CNN с классификатором.

Вы просто скопировали гайд для TensorFlow 2, что вы сделали сами?

А как же LSTM?

Мы просто оставим это здесь.

Что дальше?

Пошла

🤖