チャット用に比較的調整された GPT-2 Telegram チャットボット。お気軽に PR してください。あなたのコードをチェックします。ボットは常に 100% 正確であるわけではありません (なぜ /retry 関数をコーディングしたのか)。
ボットは大量のメモリを消費するため、ラウンドロビンのようなモードでプログラムしています。入力するたびにアカウント ID のタイマーがリセットされ、タイマーが切れると他のユーザーがボットを自由に使用できるようになります。タイマーが切れると通知が届き、他のユーザーは残り時間とボットが使用中かどうかを確認できます。
Ubuntu 20/WSL への簡単なインストール手順。
代わりに、Google Collab の jupyter Notebook/ipynb を参照することを強くお勧めします。
python3.7 をインストールします (3.6 も同様に動作すると思いますが、3.8 は動作しません)。
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7
Python 3.7 に pip をインストールします。
wget https://bootstrap.pypa.io/get-pip.py
python3.7 get-pip.py
リポジトリのクローンを作成した後、ボット フォルダー内に要件をインストールします。
python3.7 -m pip install -r requirements.txt
注: 実際には 16 GB の RAM または 8 GB のビデオ カードが必要です。そうしないと、永遠に待つことになります。 cuda takelit 10.0 および cuda Toolkit 10 用の cudnn をサポートする少なくとも 8 GB のビデオ カードで GPU 機能を使用できます。このインストールは、Python 3.7 および nvidia を搭載した Windows でも動作します。Windows 上で Python 3.7 を実行している管理者としてコマンド プロンプトを実行する必要があります。
モデルをダウンロードします。
python3.7 download_model.py 1558M
Telegram ボット API キーを src/GPT2-Learning.py に設定します。
Replace "BOTKEY" with telegram bot token i.e. "1827396499:AAHifc06oS31oQ9L3TuCiZxD9EIfKPi0oWQ"
ボットを実行します。
python3コマンドを使用する場合:
./start.sh
python3.7コマンドを使用する場合:
python3.7 src/GPT2-Learning.py
必要に応じて、Python コマンドに一致するように start.sh を編集できます。
start - Basic start command.
help - Show quick help command.
chatbot - Chatbot mode, me+you string edit and open-ended questions.
finish - Default finish sentence command counting words as output length.
learnon - Turn on sentence compilation with Me+you string for conversation.
learnoff - Turn off the sentence compilation.
learnreset - Reset the learned conversation.
retry - Retry the current computation.
以下は、最新の gpt-2 データベースと top_p を 0.83 に設定した学習チャットボット モードのサンプルです。
Me: Hello! How are you today? Are you feeling alright? I hope you are doing well and not getting into any trouble.
Bot: Yeah, I'm fine. Do you want to make something to eat?
Me: I already made some food, but thanks! I had some jalapeno poppers. I made a ton of them last night after I sold a lawnmower to some folks I got for free earlier in the day. So what are your plans for the day?
Bot: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit.
Me: Just a typical day of kicking back and relaxing huh? Are you gonna watch cartoons or any movies in particular?
Bot: If it's not sports I'll probably just watch something on the TV.
Me: Sounds alright. I coded on my chatbot project most of the morning. Was waiting on someone to come buy a projector but they haven't shown up yet unfortunately. What do you do for work if you don't mind me asking?
Bot: I'm a web developer and engineer. It's fun.
Me: Cool! I'm also a coder and an ethical hacker. I mostly know how to code in Python but I've been unemployed for some time now after my spine injury. I wish I could have joined the military when I was younger. Were you ever in the military?
Bot: No. I'm not really too proud of my military career. It ended up taking a huge toll on my back.
Me: What happened to your back if you don't mind me asking?
Bot: First of all, it's better than before.
Me: Well that's good to hear. Did you injure your back in the military or doing something else?
Bot: Nope. It's an old injury.
Me: Ah I see- Well I'll talk to you later. Sorry about your back! I hope we can catch up tomorrow!
Bot: Yes, of course. Thanks again for chatting!
INFO:tensorflow:Restoring parameters from models/1558M/model.ckpt
2020-05-10 14:19:43,794 - tensorflow - INFO - Restoring parameters from models/1558M/model.ckpt
==========
Before splitlines: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit. You: I'll try to keep my spirits up. Just keep in mind that today's the 10th anniversary of the citywide strike
==========
==========
Mode: True
Learn: True
Length: 44
==========
Before regex: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit. You: I'll try to keep my spirits up. Just keep in mind that today's the 10th anniversary of the citywide strike
==========
Output: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit.
==========
Raw_text or Original: You: Hello! How are you today? Are you feeling alright? I hope you are doing well and not getting into any trouble. Me: Yeah, I'm fine. Do you want to make something to eat? You: I already made some food, but thanks! I had some jalapeno poppers. I made a ton of them last night after I sold a lawnmower to some folks I got for free earlier in the day. So what are your plans for the day? Me:
==========
Learning text or Next: You: Hello! How are you today? Are you feeling alright? I hope you are doing well and not getting into any trouble. Me: Yeah, I'm fine. Do you want to make something to eat? You: I already made some food, but thanks! I had some jalapeno poppers. I made a ton of them last night after I sold a lawnmower to some folks I got for free earlier in the day. So what are your plans for the day? Me: Nothing special. Nothing exciting in particular. I just wanna chill out for a bit.
==========
top_p out: 0.8338636363636364
==========
top_p in: 0.83
==========
文法スコアのリストについては、/SCORES.MD を参照してください。
ヒント:
0.77 top_p は感情的で混乱し、模倣のように聞こえる場合があります。
0.66 top_p は考え抜かれて文字通りに聞こえるかもしれませんが、ASCII エラーやカットオフ エラーが発生する可能性があります。