Dialogbot, menyediakan teknologi model dialog yang lengkap. Menggabungkan model dialog berbasis pencarian , model dialog berbasis tugas , dan model dialog generatif , menghasilkan respons dialog yang optimal.
Dialogbot mengimplementasikan berbagai solusi robot dialog seperti dialog tanya jawab, dialog berbasis tugas, dan dialog berbasis obrolan. Dialogbot mendukung Tanya Jawab pengambilan jaringan, Tanya Jawab pengetahuan domain, Tanya Jawab yang dipandu tugas, dan Tanya Jawab obrolan, langsung dari itu. kotak itu.
Memandu
Sistem dialog manusia-mesin selalu menjadi arah penting AI. Tes Turing menggunakan dialog untuk mendeteksi apakah suatu mesin memiliki tingkat kecerdasan yang tinggi.
Bagaimana cara membangun sistem dialog manusia-komputer atau robot dialog?
Sistem dialog telah berkembang melalui tiga generasi:
Sistem dialog dibagi menjadi tiga kategori:
Hitung kemiripan antara pertanyaan pengguna dan pertanyaan di database tanya jawab, pilih pertanyaan yang paling mirip, dan berikan jawaban yang sesuai.
Perhitungan kesamaan kalimat meliputi metode berikut:
Ambil jawaban dari ringkasan hasil pencarian di Baidu dan Bing
Demo Resmi: https://www.mulanai.com/product/dialogbot/
Proyek ini didasarkan pada transformer 4.4.2+, torch 1.6.0+ dan Python 3.6+ Kemudian, lakukan saja:
pip3 install torch # conda install pytorch
pip3 install -U dialogbot
atau
pip3 install torch # conda install pytorch
git clone https://github.com/shibing624/dialogbot.git
cd dialogbot
python3 setup.py install
contoh: contoh/bot_demo.py
from dialogbot import Bot
bot = Bot ()
response = bot . answer ( '姚明多高呀?' )
print ( response )
keluaran:
query: "姚明多高呀?"
answer: "226cm"
contoh: contoh/taskbot_demo.py
Model dialog berbasis obrolan dilatih berdasarkan model generatif GPT2.
Model telah dirilis ke model pelukan: shibing624/gpt2-dialogbot-base-chinese
contoh: contoh/genbot_demo.py
from dialogbot import GPTBot
bot = GPTBot ()
r = bot . answer ( '亲 你吃了吗?' , use_history = False )
print ( 'gpt2' , r )
keluaran:
query: "亲 吃了吗?"
answer: "吃了"
Buat folder data di direktori akar proyek, beri nama korpus pelatihan asli train.txt, dan simpan di direktori ini. Format train.txt adalah sebagai berikut. Setiap chat dipisahkan oleh satu baris.
真想找你一起去看电影
突然很想你
我也很想你
想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Jalankan preprocess.py, tokenisasi materi dialog data/train.txt, lalu buat serial dan simpan ke data/train.pkl. Tipe objek yang diserialkan di train.pkl adalah Daftar[Daftar], yang mencatat token yang terdapat dalam setiap percakapan dalam daftar percakapan.
cd dialogbot/gpt/
python preprocess.py --train_path data/train.txt --save_path data/train.pkl
Jalankan train.py dan gunakan data yang telah diproses sebelumnya untuk melakukan pelatihan autoregresif pada model. Model disimpan dalam folder model di direktori root.
Selama pelatihan, Anda dapat berhenti lebih awal dengan menentukan parameter kesabaran. Ketika kesabaran=n, jika kerugian model pada set validasi tidak berkurang selama n periode berturut-turut, penghentian awal akan dilakukan untuk menghentikan pelatihan. Ketika kesabaran=0, penghentian awal tidak dilakukan.
Penghentian awal dinonaktifkan secara default dalam kode, karena dalam praktiknya, model yang dihasilkan oleh penghentian awal belum tentu memberikan hasil yang lebih baik.
python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl
Untuk pengenalan parameter pelatihan lebih lanjut, Anda dapat langsung melihat deskripsi parameter pada fungsi set_args() di train.py
Jalankan interact.py dan gunakan model terlatih untuk melakukan interaksi manusia-komputer. Setelah memasukkan q untuk mengakhiri percakapan, rekaman obrolan akan disimpan ke file sample.txt.
python interact.py --no_cuda --model_dir path_to_your_model
Saat menjalankan interact.py, Anda dapat mencoba menyesuaikan efek yang dihasilkan dengan menyesuaikan parameter seperti topk, topp, repeat_penalty, max_history_len, dll. Untuk pengenalan parameter lebih lanjut, Anda dapat langsung melihat deskripsi parameter di fungsi set_args() dari interaksi.py. Jika Anda ingin menggunakan GPU untuk pembuatan, jangan panggil parameter --no_cuda, dan tentukan GPU mana yang akan digunakan melalui --no_cuda. -perangkat 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:好哒
Korpus obrolan Cina | Alamat kumpulan data | Deskripsi korpus |
---|---|---|
Obrolan Umum Cina | chinese_chatbot_corpus | Termasuk korpus Xiaohuangji, korpus Douban, korpus dialog drama TV, korpus balasan forum Tieba, korpus Weibo, korpus gosip PTT, korpus Qingyun, dll. |
500.000 korpus obrolan Tiongkok | Baidu Netdisk [kode ekstraksi: 4g5e] atau GoogleDrive | Berisi korpus asli dan data yang telah diproses sebelumnya dari 500.000 percakapan multi-giliran |
1 juta korpus obrolan Tiongkok | Baidu Netdisk [kode ekstraksi: s908] atau GoogleDrive | Berisi korpus asli dan data yang telah diproses sebelumnya dari 1 juta percakapan multi-putaran |
Contoh korpus obrolan berbahasa Mandarin adalah sebagai berikut:
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Model | alamat bersama | Deskripsi model |
---|---|---|
model_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese atau Baidu Cloud Disk (kode ekstrak: taqh) atau GoogleDrive | Setelah pelatihan selama 40 epoch menggunakan 500.000 putaran data dialog, kerugiannya turun menjadi sekitar 2,0. |
Jika Anda menggunakan Dialogbot dalam penelitian Anda, harap kutip dalam format berikut:
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
Perjanjian lisensinya adalah The Apache License 2.0, yang gratis untuk penggunaan komersial. Harap lampirkan tautan ke dialogbot dan perjanjian lisensi di deskripsi produk.
Kode proyek masih sangat kasar. Jika Anda memiliki perbaikan pada kode tersebut, Anda dipersilakan untuk mengirimkannya kembali ke proyek ini. Sebelum mengirimkan, harap perhatikan dua poin berikut:
tests
python -m pytest
untuk menjalankan semua pengujian unit guna memastikan bahwa semua pengujian unit lulusAnda kemudian dapat mengirimkan PR.