Nous sommes heureux de vous présenter notre développement - un chatbot en russe pour Discord basé sur l'architecture Transformer .
Le réseau neuronal a été formé sur plus de 36 millions de messages accessibles au public provenant des serveurs Discord en langue russe les plus populaires au cours d'une période (5 jours sur une GTX 1080 ) . La formation était basée sur le principe : quel message sera le plus probablement envoyé après les 10 précédents au niveau de l'intégration du trigramme de caractères .
Ce bot n'utilise pas une base de données de messages prête à l'emploi, mais génère de nouveaux messages uniques, implémentant le concept seq2seq sur l'architecture Transformer . La base du réseau est tirée de ce tutoriel TensorFlow 2 .
Ce modèle était pertinent en 2019, mais est devenu assez rapidement obsolète. Vous pouvez trouver quelque chose de mieux et de plus moderne en suivant ici.
Allons-y!
Testé sur 2 processeurs 2,6 GHz + 4 Go de RAM .
Install launcher for all users (recommended)
et Add Python 3.8 to PATH
doivent être cochésscipy
Git Bash Here
git clone https://github.com/sergree/DolboNet
cd DolboNet
pip install -r requirements.txt
dans la fenêtre qui apparaîtconfig.py
en insérant le jeton du bot dans token = "..."
python bot.py
Le bot ne fonctionnera que sur Windows et Python 64 bits .
Testé sur 2 processeurs 2,6 GHz + 2 Go de RAM .
git clone https://github.com/sergree/DolboNet
cd DolboNet
pip3
n'est pas déjà installé, installez-le : sudo apt install python3-pip
pip3 install -r requirements.txt
nano config.py
, en insérant le jeton du bot dans token = "..."
python3 bot.py
Si la machine dispose d'une carte vidéo NVIDIA , vous pouvez exécuter le bot à l'aide de CUDA , ce qui augmentera sa vitesse.
tensorflow
si vous avez déjà installé les dépendances : pip uninstall tensorflow
pip install tensorflow-gpu>=2.3.1
ou pip install -r requirements_gpu.txt
Dans le fichier config.py
, vous pouvez modifier certains paramètres pour modifier la nature et le comportement du bot :
temperature
- température d'échantillonnage - régule la nature et la variété du texte généréSignification | Description |
---|---|
0,01 | Je ne connais que le mot bonjour |
0,3 | Répéter le perroquet |
0,65 | Défaut |
1.3 | Poète ivre |
3 | Je me suis endormi sur le clavier |
Pour faciliter l'expérimentation, il existe une commande !temp значение
qui peut être envoyée à Discord pour modifier cette valeur à la volée . La commande ne fonctionne que pour les utilisateurs disposant du privilège Administrateur .
mention_prob
- la probabilité que le bot réponde à un message dans lequel il a été mentionné. Peut prendre des valeurs de 0
à 1
. Par défaut : 1
, c'est-à-dire 100%no_mention_prob
- la probabilité que le bot réponde à un message dans lequel il n'a pas été mentionné. Peut prendre des valeurs de 0
à 1
. Par défaut : 0.2
, c'est-à-dire 20%command_temperature_change
- commande pour changer la température si vous n'aimez pas !temp значение
?use_delay
- émulation de la vitesse de frappe humaine sur le clavier, False
par défaut, car Sur le CPU le processus de génération n'est pas assez rapidediscord_game_name
- statut du bot dans DiscordIl est préférable de ne pas modifier les paramètres restants.
☕ Si le développement du projet vous intéresse, vous pouvez m'offrir un café. ☕
Merci!
J'ai un demi-serveur composé de ces idiots, pourquoi ai-je besoin d'en un autre ?
Mais sérieusement, il n’y a qu’une seule raison.
Hébergez-vous ce bot ? Puis-je me contenter de la version publique ? Donne-moi un lien !
Lien. Le bot n'est pas toujours disponible et répond parfois lentement. Nous n'hébergeons pas de version publique du bot. Pour qu'il apparaisse sur votre serveur Discord , il doit être installé.
Sur quels serveurs sont déjà installés ce bot ?
Nous savons que le bot est déjà hébergé ici :
Écrivez-nous pour figurer sur cette liste.
En gros, il envoie des bêtises incohérentes. ?
Oui, une telle chose existe. Mais parfois, cela s'avère drôle.
C'est des conneries inutiles, tu comprends ?
Certainement. Comme bien d’autres choses dans notre monde moderne.
Le bot m'a envoyé une insulte ou une menace ! Grabuge! ?
Le réseau neuronal du bot ne reflète que les données publiques sur lesquelles la formation a eu lieu. C’est peut-être un signal d’alarme sur ce qu’est devenue notre société. De toute façon, nous ne voulions pas.
Et l'anglais ?
A ce stade, nous avons décidé de ne pas gaspiller la capacité du réseau sur les trigrammes latins. Le latin est automatiquement translittéré en cyrillique en utilisant opendatakosovo/cyrillic-transliteration . Nous avons testé de nombreuses bibliothèques similaires, celle-ci est la plus rapide.
Pourquoi des trigrammes ?
Parce qu'il est grand et puissant. L’idée, bien sûr, n’est pas la nôtre, mais tirée de ce livre.
Peut-être serait-il préférable d'utiliser le stemming ?
Pas dans ce cas. Puisque les gens dans les discussions parlent avec des erreurs, et parfois avec des cendres. Un parfois translitom, ile fse vmesti. ?
C'en est une autre de trier Wikipédia ou les fils d'actualité.
Peut-il aussi envoyer des emojis ?
Oui. Juste au hasard pour l'instant. Tous les emoji personnalisés se voient attribuer un seul jeton dans le dictionnaire. À l’avenir, il est prévu de relier CNN à un classificateur.
Vous venez de copier le guide de TensorFlow 2 , qu'avez-vous fait vous-même ?
Et le LSTM ?
Nous allons simplement le laisser ici.
Quelle est la prochaine étape ?
?