Temos o prazer de apresentar nosso desenvolvimento - um bot de bate-papo em russo para Discord baseado na arquitetura Transformer .
A rede neural foi treinada em mais de 36 milhões de mensagens publicamente disponíveis dos servidores Discord de língua russa mais populares durante uma época (5 dias em uma GTX 1080 ) . O treinamento foi baseado no princípio: qual mensagem provavelmente será enviada após as 10 anteriores no nível de incorporação de trigramas de caracteres .
Este bot não utiliza um banco de dados de mensagens pronto, mas gera novas mensagens exclusivas, implementando o conceito seq2seq na arquitetura Transformer . A base da rede foi retirada deste tutorial do TensorFlow 2 .
Este modelo era relevante em 2019, mas ficou desatualizado rapidamente. Você pode encontrar algo melhor e mais moderno seguindo aqui.
Vamos!
Testado em CPU de 2 x 2,6 GHz + 4 GB de RAM .
Install launcher for all users (recommended)
e Add Python 3.8 to PATH
devem ser verificadosscipy
Git Bash Here
git clone https://github.com/sergree/DolboNet
cd DolboNet
pip install -r requirements.txt
na janela que aparececonfig.py
, inserindo o token do bot em token = "..."
python bot.py
O bot funcionará apenas em Windows e Python de 64 bits .
Testado em CPU de 2 x 2,6 GHz + 2 GB de RAM .
git clone https://github.com/sergree/DolboNet
cd DolboNet
pip3
ainda não estiver instalado, instale-o: sudo apt install python3-pip
pip3 install -r requirements.txt
nano config.py
, inserindo o token do bot em token = "..."
python3 bot.py
Se a máquina tiver placa de vídeo NVIDIA , então você poderá rodar o bot usando CUDA , o que aumentará sua velocidade.
tensorflow
se você já tiver instalado as dependências: pip uninstall tensorflow
pip install tensorflow-gpu>=2.3.1
ou pip install -r requirements_gpu.txt
No arquivo config.py
, você pode editar alguns parâmetros para alterar a natureza e o comportamento do bot:
temperature
- temperatura de amostragem - regula a natureza e variedade do texto geradoSignificado | Descrição |
---|---|
0,01 | Eu só conheço a palavra Olá |
0,3 | Repetir papagaio |
0,65 | Padrão |
1.3 | Poeta bêbado |
3 | Adormeci no teclado |
Para facilitar a experimentação, existe um comando !temp значение
que pode ser enviado ao Discord para editar esse valor instantaneamente . O comando só funciona para usuários com privilégio de administrador .
mention_prob
- a probabilidade de o bot responder a uma mensagem na qual foi mencionado. Pode assumir valores de 0
a 1
. Padrão: 1
, ou seja, 100%no_mention_prob
- a probabilidade de o bot responder a uma mensagem na qual não foi mencionado. Pode assumir valores de 0
a 1
. Padrão: 0.2
, ou seja, 20%command_temperature_change
- comando para alterar a temperatura se você não gostar !temp значение
use_delay
- emulação da velocidade de digitação humana no teclado, False
por padrão, porque Na CPU o processo de geração não é rápido o suficientediscord_game_name
- status do bot no DiscordÉ melhor não editar os parâmetros restantes.
☕ Se você tiver interesse no desenvolvimento do projeto, pode me pagar um café. ☕
Obrigado!
Tenho meio servidor desses idiotas, por que preciso de outro?
Mas, falando sério, só há um motivo.
Você hospeda este bot? Posso sobreviver com a versão pública? Dê-me um link!
Link. O bot nem sempre está disponível e às vezes responde lentamente. Não hospedamos uma versão pública do bot. Para que apareça no seu servidor Discord , ele deve estar instalado.
Quais servidores já possuem esse bot?
Sabemos que o bot já está hospedado aqui:
Escreva-nos para estar nesta lista.
Ele está basicamente enviando bobagens incoerentes. ?
Sim, existe tal coisa. Mas às vezes fica engraçado.
Isso é besteira inútil, entendeu?
Certamente. Como muitas outras coisas em nosso mundo moderno.
O bot me enviou um insulto ou ameaça! Caos! ?
A rede neural do bot reflete apenas os dados públicos nos quais ocorreu o treinamento. Talvez este seja um alerta sobre o que aconteceu à nossa sociedade. Nós não queríamos de qualquer maneira.
E o inglês?
Nesta fase, decidimos não desperdiçar a capacidade da rede com trigramas latinos. O latim é automaticamente transliterado para o cirílico usando opendatakosovo/cyrillic-transliteration . Testamos muitas bibliotecas semelhantes, esta é a mais rápida.
Por que trigramas?
Porque ele é grande e poderoso. A ideia, claro, não é nossa, mas sim retirada deste livro.
Talvez fosse melhor usar lematização?
Não neste caso. Já que as pessoas nos chats falam com erros e às vezes com cinzas. Às vezes translitom, ile fse vmesti. ?
Outra coisa é pesquisar na Wikipédia ou nos feeds de notícias.
Ele pode enviar emojis também?
Sim. Apenas aleatório por enquanto. Todos os emojis personalizados recebem um único token no dicionário. No futuro, existem planos para vincular a CNN a um classificador.
Você acabou de copiar o guia do TensorFlow 2 , o que você fez?
E o LSTM ?
Vamos deixar aqui.
O que vem a seguir?
?