Nos complace presentarles nuestro desarrollo: un chatbot en ruso para Discord basado en la arquitectura Transformer .
La red neuronal se entrenó en más de 36 millones de mensajes disponibles públicamente de los servidores Discord en ruso más populares durante una época (5 días en una GTX 1080 ) . El entrenamiento se basó en el principio: qué mensaje se enviará con mayor probabilidad después de los 10 anteriores en el nivel de incrustaciones de trigramas de caracteres .
Este bot no utiliza una base de datos de mensajes ya preparada, sino que genera nuevos mensajes únicos, implementando el concepto seq2seq en la arquitectura Transformer . La base de la red se tomó de este tutorial de TensorFlow 2 .
Este modelo era relevante en 2019, pero quedó obsoleto con bastante rapidez. Puedes encontrar algo mejor y más moderno siguiendo aquí.
¡Vamos!
Probado con 2 CPU de 2,6 GHz + 4 GB de RAM .
Install launcher for all users (recommended)
y Add Python 3.8 to PATH
scipy
Git Bash Here
git clone https://github.com/sergree/DolboNet
cd DolboNet
pip install -r requirements.txt
en la ventana que aparececonfig.py
, insertando el token del bot en token = "..."
python bot.py
El bot solo funcionará en Windows de 64 bits y Python .
Probado con 2 CPU de 2,6 GHz + 2 GB de RAM .
git clone https://github.com/sergree/DolboNet
cd DolboNet
pip3
aún no está instalado, instálelo: sudo apt install python3-pip
pip3 install -r requirements.txt
nano config.py
, insertando el token del bot en token = "..."
python3 bot.py
Si la máquina tiene una tarjeta de video NVIDIA , puede ejecutar el bot usando CUDA , lo que aumentará su velocidad.
tensorflow
si ya ha instalado las dependencias: pip uninstall tensorflow
pip install tensorflow-gpu>=2.3.1
o pip install -r requirements_gpu.txt
En el archivo config.py
, puedes editar algunos parámetros para cambiar la naturaleza y el comportamiento del bot:
temperature
- temperatura de muestreo - regula la naturaleza y variedad del texto generadoSignificado | Descripción |
---|---|
0,01 | solo se la palabra hola |
0.3 | repetir loro |
0,65 | Por defecto |
1.3 | poeta borracho |
3 | Me quedé dormido en el teclado |
Para facilitar la experimentación, existe un comando !temp значение
que se puede enviar a Discord para editar este valor sobre la marcha . El comando solo funciona para usuarios con privilegios de administrador .
mention_prob
: la probabilidad de que el bot responda a un mensaje en el que se menciona. Puede tomar valores de 0
a 1
. Predeterminado: 1
, es decir 100%no_mention_prob
: la probabilidad de que el bot responda a un mensaje en el que no se menciona. Puede tomar valores de 0
a 1
. Predeterminado: 0.2
, es decir. 20%command_temperature_change
: ¿comando para cambiar la temperatura si no te gusta !temp значение
?use_delay
: emulación de la velocidad de escritura humana en el teclado. False
de forma predeterminada, porque En la CPU el proceso de generación no es lo suficientemente rápidodiscord_game_name
- estado del bot en DiscordEs mejor no editar los parámetros restantes.
☕ Si estás interesado en el desarrollo del proyecto, puedes invitarme a un café. ☕
¡Gracias!
Tengo medio servidor de esos idiotas, ¿para qué necesito otro?
Pero en serio, sólo hay una razón.
¿Alojas este bot? ¿Puedo arreglármelas con la versión pública? ¡Dame un enlace!
Enlace. El bot no siempre está disponible y, en ocasiones, responde con lentitud. No alojamos una versión pública del bot. Para que aparezca en su servidor Discord , debe estar instalado.
¿Qué servidores ya tienen este bot?
Sabemos que el bot ya está alojado aquí:
Escríbenos para estar en esta lista.
Básicamente está enviando tonterías incoherentes. ?
Sí, existe tal cosa. Pero a veces resulta divertido.
Esto es una tontería inútil, ¿entiendes?
Ciertamente. Como muchas otras cosas en nuestro mundo moderno.
¡El bot me envió un insulto o una amenaza! ¡Violencia! ?
La red neuronal del robot solo refleja los datos públicos sobre los que se realizó el entrenamiento. Quizás esto sea una llamada de atención sobre lo que ha sido de nuestra sociedad. De todos modos no queríamos hacerlo.
¿Qué pasa con el inglés?
En esta etapa, decidimos no desperdiciar la capacidad de la red en trigramas latinos. El latín se translitera automáticamente al cirílico mediante opendatakosovo/cyrillic-transliteration . Hemos probado muchas bibliotecas similares, esta es la más rápida.
¿Por qué trigramas?
Porque él es grande y poderoso. La idea, por supuesto, no es nuestra, sino extraída de este libro.
¿Quizás sería mejor utilizar derivaciones?
No en este caso. Dado que la gente en los chats habla con errores y, a veces, con ashebs. A veces translitom, ile fse vmesti. ?
Otra cosa es revisar Wikipedia o las noticias.
¿Puede enviar emojis también?
Sí. Por ahora sólo al azar. A todos los emoji personalizados se les asigna un único token en el diccionario. En el futuro, hay planes para vincular CNN con un clasificador.
Acabas de copiar la guía de TensorFlow 2 , ¿qué hiciste tú mismo?
¿Qué pasa con LSTM ?
Lo dejaremos aquí.
¿Qué sigue?
?