Transformer 아키텍처를 기반으로 한 Discord용 러시아어 채팅 봇 개발을 소개하게 된 것을 기쁘게 생각합니다.
신경망은 한 시대 ( GTX 1080 의 경우 5일) 동안 가장 인기 있는 러시아어 Discord 서버에서 공개적으로 사용 가능한 3600만 개 이상의 메시지에 대해 훈련되었습니다. 훈련은 문자 트라이그램 임베딩 수준에서 이전 10개 이후에 어떤 메시지가 전송될 가능성이 가장 높은지라는 원칙을 기반으로 했습니다.
이 봇은 기성 메시지 데이터베이스를 사용하지 않지만 Transformer 아키텍처에 seq2seq 개념을 구현하여 새로운 고유 메시지를 생성합니다. 네트워크의 기초는 이 TensorFlow 2 튜토리얼에서 가져왔습니다.
이 모델은 2019년에 관련이 있었지만 꽤 빨리 구식이 되었습니다. 여기를 따르면 더 좋고 현대적인 것을 찾을 수 있습니다.
갑시다!
2개의 2.6GHz CPU + 4GB RAM 에서 테스트되었습니다.
Install launcher for all users (recommended)
및 Add Python 3.8 to PATH
선택해야 합니다.scipy
에 필요Git Bash Here
선택하여 Git Bash를 엽니다.git clone https://github.com/sergree/DolboNet
cd DolboNet
pip install -r requirements.txt
실행하세요.config.py
구성 파일을 편집하여 봇 토큰을 token = "..."
에 삽입합니다.python bot.py
봇은 64비트 Windows 및 Python 에서만 작동합니다.
2개의 2.6GHz CPU + 2GB 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
머신에 NVIDIA 비디오 카드가 있는 경우 CUDA를 사용하여 봇을 실행하면 속도가 향상됩니다.
tensorflow
제거하십시오. pip uninstall tensorflow
pip install tensorflow-gpu>=2.3.1
또는 pip install -r requirements_gpu.txt
설치하십시오. config.py
파일에서 일부 매개변수를 편집하여 봇의 특성과 동작을 변경할 수 있습니다.
temperature
- 샘플링 온도 - 생성된 텍스트의 성격과 다양성을 조절합니다.의미 | 설명 |
---|---|
0.01 | 난 Hello 라는 단어만 알아요 |
0.3 | 반복 앵무새 |
0.65 | 기본 |
1.3 | 술 취한 시인 |
3 | 키보드 위에서 잠들다 |
실험을 쉽게 하기 위해 Discord 로 전송하여 이 값을 즉시 편집할 수 있는 !temp значение
명령이 있습니다. 이 명령은 관리자 권한이 있는 사용자에게만 작동합니다.
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 의 봇 상태나머지 매개변수는 편집하지 않는 것이 좋습니다.
? 프로젝트 발전에 관심이 있으신 분들은 저에게 커피 한 잔 사주시면 됩니다. 찻잔
감사합니다!
나는 그런 바보들로 구성된 서버의 절반을 가지고 있는데 왜 또 다른 서버가 필요합니까?
그런데 엄밀히 말하면 이유는 딱 하나입니다.
이 봇을 호스팅하시나요? 공개 버전을 사용해도 되나요? 링크를 주세요!
링크. 봇을 항상 사용할 수 있는 것은 아니며 때때로 느리게 응답합니다. 우리는 봇의 공개 버전을 호스팅하지 않습니다. Discord 서버에 표시하려면 설치해야 합니다.
어떤 서버에 이미 이 봇이 설치되어 있나요?
우리는 봇이 이미 여기에 호스팅되어 있다는 것을 알고 있습니다.
이 목록에 오르려면 우리에게 편지를 보내십시오.
그는 기본적으로 일관되지 않은 말도 안되는 소리를 보내고 있습니다. ?
예, 그런 것이 있습니다. 그러나 때로는 재미있는 일이 발생합니다.
이건 쓸데없는 헛소리야, 알겠어?
틀림없이. 현대 세계의 다른 많은 것들처럼.
봇이 나에게 모욕이나 위협을 보냈습니다! 신체 상해! ?
봇의 신경망은 훈련이 발생한 공개 데이터만 반영합니다. 어쩌면 이것은 우리 사회가 어떻게 되었는지에 대한 경각심을 불러일으키는 것일 수도 있습니다. 어쨌든 우리는 원하지 않았습니다.
영어는 어떻습니까?
이 단계에서 우리는 라틴 트라이그램에 네트워크 용량을 낭비하지 않기로 결정했습니다. 라틴어는 opendatakosovo/cyrillic-transliteration 을 사용하여 자동으로 키릴 문자로 음역됩니다. 우리는 유사한 라이브러리를 많이 테스트했는데 이것이 가장 빠릅니다.
왜 트라이그램인가?
왜냐하면 그는 위대하고 강력하기 때문입니다. 물론 그 아이디어는 우리의 것이 아니라 이 책에서 가져온 것입니다.
아마도 형태소 분석을 사용하는 것이 더 나을 것입니까?
이 경우에는 그렇지 않습니다. 채팅에 참여하는 사람들은 실수로 이야기하고 때로는 잿더미로 이야기하기 때문입니다. 때때로 translitom, ile fse vmesti. ?
Wikipedia나 뉴스피드를 정렬하는 것도 또 다른 일입니다.
그 사람도 이모티콘을 보낼 수 있나요?
예. 지금은 무작위로요. 모든 맞춤 이모티콘에는 사전의 단일 토큰이 할당됩니다. 앞으로는 CNN을 분류기와 연결할 계획이 있습니다.
방금 TensorFlow 2 가이드를 복사했습니다. 직접 무엇을 하셨나요?
LSTM은 어떻습니까?
그냥 여기에 두겠습니다.
다음은 무엇입니까?
?