All Projects → sergree → DolboNet

sergree / DolboNet

Licence: GPL-3.0 license
Русскоязычный чат-бот для Discord на архитектуре Transformer

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to DolboNet

transformer-tensorflow2.0
transformer in tensorflow 2.0
Stars: ✭ 53 (+0%)
Mutual labels:  transformer, tensorflow2
transformer
Build English-Vietnamese machine translation with ProtonX Transformer. :D
Stars: ✭ 41 (-22.64%)
Mutual labels:  transformer, tensorflow2
ru-dalle
Generate images from texts. In Russian
Stars: ✭ 1,606 (+2930.19%)
Mutual labels:  transformer, russian
point-cloud-segmentation
TF2 implementation of PointNet for segmenting point clouds
Stars: ✭ 33 (-37.74%)
Mutual labels:  tensorflow2
doctr
docTR (Document Text Recognition) - a seamless, high-performing & accessible library for OCR-related tasks powered by Deep Learning.
Stars: ✭ 1,409 (+2558.49%)
Mutual labels:  tensorflow2
sklonenie
Light-weight and fast library to decline Russian names
Stars: ✭ 23 (-56.6%)
Mutual labels:  russian
js-stack-from-scratch
🌺 Russian translation of "JavaScript Stack from Scratch" from the React-Theming developers https://github.com/sm-react/react-theming
Stars: ✭ 394 (+643.4%)
Mutual labels:  russian
Adaptive-Gradient-Clipping
Minimal implementation of adaptive gradient clipping (https://arxiv.org/abs/2102.06171) in TensorFlow 2.
Stars: ✭ 74 (+39.62%)
Mutual labels:  tensorflow2
basis-expansions
Basis expansion transformers in sklearn style.
Stars: ✭ 74 (+39.62%)
Mutual labels:  transformer
pku-Artificial-intelligence-practice-homework
2019北京大学软件与微电子学院曹健老师的《人工智能实践》作业,有完整的注释,欢迎提出issue以及request
Stars: ✭ 45 (-15.09%)
Mutual labels:  tensorflow2
TF2-GAN
🐳 GAN implemented as Tensorflow 2.X
Stars: ✭ 61 (+15.09%)
Mutual labels:  tensorflow2
ClusterTransformer
Topic clustering library built on Transformer embeddings and cosine similarity metrics.Compatible with all BERT base transformers from huggingface.
Stars: ✭ 36 (-32.08%)
Mutual labels:  transformer
tf retrieval baseline
A Tensorflow retrieval (space embedding) baseline. Metric learning baseline on CUB and Stanford Online Products.
Stars: ✭ 39 (-26.42%)
Mutual labels:  tensorflow2
kospeech
Open-Source Toolkit for End-to-End Korean Automatic Speech Recognition leveraging PyTorch and Hydra.
Stars: ✭ 456 (+760.38%)
Mutual labels:  transformer
TRAR-VQA
[ICCV 2021] TRAR: Routing the Attention Spans in Transformers for Visual Question Answering -- Official Implementation
Stars: ✭ 49 (-7.55%)
Mutual labels:  transformer
rx-scheduler-transformer
rxjava scheduler transformer tools for android
Stars: ✭ 15 (-71.7%)
Mutual labels:  transformer
Zero-Shot-TTS
Unofficial Implementation of Zero-Shot Text-to-Speech for Text-Based Insertion in Audio Narration
Stars: ✭ 33 (-37.74%)
Mutual labels:  transformer
tf-image
TensorFlow2+ graph image augmentation library optimized for tf.data.Dataset.
Stars: ✭ 24 (-54.72%)
Mutual labels:  tensorflow2
keyword-transformer
Official implementation of the Keyword Transformer: https://arxiv.org/abs/2104.00769
Stars: ✭ 76 (+43.4%)
Mutual labels:  transformer
Neural-Machine-Translation
Several basic neural machine translation models implemented by PyTorch & TensorFlow
Stars: ✭ 29 (-45.28%)
Mutual labels:  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.

Дурачок

Поехали! 🚀

Установка

Илон

Windows 10 64-bit

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

  • Установите Python 3.8 64-bit
  • При установке Python 3.8 64-bit должны стоять галочки Install launcher for all users (recommended) и Add Python 3.9 to PATH
  • Установите Git
  • Установите Visual C++ Redistributable - необходим для scipy
  • Откройте Git Bash, щелкнув правой кнопкой мыши по пустому месту внутри папки (например, Мои документы) и выбрав Git Bash Here
  • Скачайте репозиторий: git clone https://github.com/sergree/DolboNet
  • Перейдите в папку: cd DolboNet
  • Выполните pip install -r requirements.txt в появившемся окне
  • Получите токен вашего бота - инструкция
  • Отредактируйте файл конфигурации config.py, вставив токен бота в token = "..."
  • И наконец, запустите бота: python bot.py
  • Бот будет загружаться 5-10 минут

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

Ubuntu 20.04 LTS

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

  • Скачайте репозиторий: git clone https://github.com/sergree/DolboNet
  • Перейдите в папку: cd DolboNet
  • Если ещё не установлен pip3, то установите его: sudo apt install python3-pip
  • Установите зависимости: pip3 install -r requirements.txt
  • Получите токен вашего бота - инструкция
  • Отредактируйте файл конфигурации: nano config.py, вставив токен бота в token = "..."
  • И наконец, запустите бота: python3 bot.py
  • Бот будет загружаться 5-10 минут

Поддержка GPU

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

  • Удалите tensorflow, если успели установить зависимости: pip uninstall tensorflow
  • Установите CUDA® Toolkit и cuDNN SDK - инструкция
  • Установите pip install tensorflow-gpu>=2.3.1 или pip install -r requirements_gpu.txt

Хз

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

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

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

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

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

  • mention_prob - вероятность того, что бот ответит на сообщение, в котором его упомянули. Может принимать значения от 0 до 1. По умолчанию: 1, т.е. 100%
  • no_mention_prob - вероятность того, что бот ответит на сообщение, в котором его не упоминали. Может принимать значения от 0 до 1. По умолчанию: 0.2, т.е. 20%
  • command_temperature_change - команда изменения температуры, если не нравится !temp значение 😛
  • use_delay - эмуляция человеческой скорости печати на клавиатуре, по-умолчанию False, т.к. на CPU процесс генерации и так не быстрый
  • discord_game_name - статус бота в Discord

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

Кофе

Кофе

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

Спасибо! 🙏

FAQ

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

  • Он может помогать в модерации:

Плохо

  • Иногда даже очень хорошо:

ПоФорме

  • Любит аниме:

Anime

  • Делится свежими новостями:

News

  • А ещё он не даст заскучать:

Pings

  • Ну и, конечно же, у него отличный вкус:

Blind

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

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

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

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

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

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

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

Бред

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

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

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

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

Юра

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

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

Транслит

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

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

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

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

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

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

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

Emoji

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

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

  • Алгоритм токенизации русского текста и разбора сущностей Discord: упоминания пользователей / ролей / каналов, ссылки, эмодзи и т.д.
  • Перелопатили уйму доступных реализаций Transformer
  • Нашли подходящую реализацию и связали её с нашим токенизатором и Discord API
  • Спарсили 36M+ публичных сообщений русскоязычного Discord комьюнити и обучили трансформер на нём
  • Напечатали этот текст

А как же LSTM?

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

Что дальше?

  • Больше парсить, дольше обучать
  • CNN для классификации эмодзи без учителя
  • Пробуем Universal Transformer
  • И Transformer XL
  • Если не закончится кофе

Пошла

🤖

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].