Dialogbot は、検索ベースの対話モデル、タスクベースの対話モデル、生成対話モデルを組み合わせた完全な対話モデル技術を提供し、最適な対話応答を出力します。
Dialogbot は、質疑応答対話、タスクベースの対話、チャットベースの対話などのさまざまな対話ロボット ソリューションを実装し、ネットワーク検索 Q&A、ドメイン知識 Q&A、タスクガイド付き Q&A、チャット Q&A をサポートします。箱。
ガイド
人間と機械の対話システムは常に AI の重要な方向性であり、チューリング テストは対話を使用して機械が高度な知能を持っているかどうかを検出します。
人間とコンピュータの対話システムや対話ロボットを構築するにはどうすればよいですか?
対話システムは 3 世代にわたって進化してきました。
対話システムは 3 つのカテゴリに分類されます。
ユーザーの質問と質問と回答データベース内の質問の類似性を計算し、最も類似した質問を選択し、それに対応する回答を返します。
文の類似度の計算には次の方法があります。
Baidu と Bing の検索結果の概要から回答を取得する
公式デモ: https://www.mulanai.com/product/dialogbot/
このプロジェクトは、transformers 4.4.2 以降、torch 1.6.0 以降、および Python 3.6 以降に基づいています。次に、次のようにします。
pip3 install torch # conda install pytorch
pip3 install -U dialogbot
または
pip3 install torch # conda install pytorch
git clone https://github.com/shibing624/dialogbot.git
cd dialogbot
python3 setup.py install
例:examples/bot_demo.py
from dialogbot import Bot
bot = Bot ()
response = bot . answer ( '姚明多高呀?' )
print ( response )
出力:
query: "姚明多高呀?"
answer: "226cm"
例:examples/taskbot_demo.py
GPT2 生成モデルに基づいてトレーニングされたチャットベースの対話モデル。
このモデルは、huggingface モデルにリリースされました: shibing624/gpt2-dialogbot-base-chinese
例:examples/genbot_demo.py
from dialogbot import GPTBot
bot = GPTBot ()
r = bot . answer ( '亲 你吃了吗?' , use_history = False )
print ( 'gpt2' , r )
出力:
query: "亲 吃了吗?"
answer: "吃了"
プロジェクトのルート ディレクトリにデータ フォルダーを作成し、元のトレーニング コーパスに train.txt という名前を付けて、このディレクトリに保存します。 train.txt の形式は以下のとおりです。各チャットは 1 行で区切られます。
真想找你一起去看电影
突然很想你
我也很想你
想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
preprocess.py を実行し、data/train.txt ダイアログ マテリアルをトークン化し、シリアル化して data/train.pkl に保存します。 train.pkl でシリアル化されたオブジェクトのタイプは List[List] で、各会話に含まれるトークンを会話リストに記録します。
cd dialogbot/gpt/
python preprocess.py --train_path data/train.txt --save_path data/train.pkl
train.py を実行し、前処理されたデータを使用してモデルに対して自己回帰トレーニングを実行します。モデルはルート ディレクトリのモデル フォルダーに保存されます。
トレーニング中に、忍耐力パラメータを指定することで早期に停止できます。忍耐 = n の場合、検証セットでのモデルの損失が n 回連続したエポックで減少しない場合、早期停止が実行されてトレーニングが停止されます。忍耐力=0の場合、早期停止は行われません。
実際には、早期停止によって生成されたモデルが必ずしもより良い結果を生み出すとは限らないため、コードでは早期停止はデフォルトでオフになっています。
python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl
トレーニング パラメーターの詳細については、train.py の set_args() 関数でパラメーターの説明を直接確認できます。
interact.py を実行し、トレーニングされたモデルを使用して人間とコンピューターの対話を実行します。q を入力して会話を終了すると、チャット レコードがsample.txt ファイルに保存されます。
python interact.py --no_cuda --model_dir path_to_your_model
interact.py を実行するときに、topk、topp、repetition_penalty、max_history_len などのパラメーターを調整して、生成されるエフェクトを調整してみることができます。パラメーターの詳細については、interact.py の set_args() 関数でパラメーターの説明を直接確認できます。生成に GPU を使用する場合は、 --no_cuda パラメーターを呼び出さず、使用する GPU を指定します。 -デバイスの gpu_id。
user :在干嘛
chatbot:睡觉
user :这么早就睡觉啦
chatbot:嗯啊你也早点睡啊
user :我再玩一会儿手机
chatbot:早点休息晚安
user :拜拜啦
chatbot:晚安晚安
user :多喝热水
chatbot:哈哈哈
user :多喝热水
chatbot:好的咯
user :在吗
chatbot:在
user :我不开心
chatbot:怎么啦
user :最近好累啊
chatbot:是挺累的
user :作业好多啊
chatbot:还好还好
user :我觉得我快要挂科了
chatbot:我也是啊,但是我觉得我快熬出头了
user :不说了,我还有好多作业没写
chatbot:我也是啊好多啊
user :那先这样,下次再聊,再见了
chatbot:好哒
中国語チャットコーパス | データセットアドレス | コーパスの説明 |
---|---|---|
一般的な中国語チャット | 中国語チャットボットコーパス | Xiaohuangjiコーパス、Doubanコーパス、TVドラマセリフコーパス、Tiebaフォーラム返信コーパス、Weiboコーパス、PTTゴシップコーパス、Qingyunコーパスなどが含まれます。 |
500,000 の中国語チャット コーパス | Baidu Netdisk [抽出コード: 4g5e] または GoogleDrive | オリジナルのコーパスと 500,000 のマルチターン会話の前処理データが含まれています |
100万件の中国語チャットコーパス | Baidu Netdisk [抽出コード: s908] または GoogleDrive | オリジナルのコーパスと 100 万件のマルチターン会話の前処理データが含まれています |
中国語チャットコーパスの例は次のとおりです。
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
モデル | 共有アドレス | モデルの説明 |
---|---|---|
モデル_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese または Baidu Cloud Disk (抽出コード: taqh) または GoogleDrive | 500,000 ラウンドの対話データを使用して 40 エポックのトレーニングを行った後、損失は約 2.0 に低下しました。 |
研究で Dialogbot を使用する場合は、次の形式で引用してください。
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
ライセンス契約は Apache License 2.0 で、商用利用は無料です。製品説明にダイアログボットへのリンクと使用許諾契約を添付してください。
プロジェクトのコードはまだ非常にラフです。コードに改善点があれば、このプロジェクトに提出してください。提出する前に、次の 2 つの点に注意してください。
tests
に追加するpython -m pytest
使用してすべての単体テストを実行し、すべての単体テストが合格することを確認します。その後、PR を送信できます。