Dialogbot นำเสนอเทคโนโลยีโมเดลบทสนทนาที่สมบูรณ์แบบ ผสมผสาน โมเดลบทสนทนาตามการค้นหา โมเดลบทสนทนาตามงาน และ โมเดลบทสนทนาเชิงกำเนิด ทำให้เกิดการตอบสนองบทสนทนาที่ดีที่สุด
Dialogbot ใช้โซลูชันโรบอตบทสนทนาที่หลากหลาย เช่น บทสนทนาถามตอบ บทสนทนาตามงาน และบทสนทนาตามการแชท โดยรองรับการดึงข้อมูลเครือข่ายถามตอบ ถามตอบความรู้โดเมน ถามตอบตามงาน และถามตอบแชทได้ทันที กล่อง
แนะนำ
ระบบบทสนทนาระหว่างมนุษย์กับเครื่องจักรถือเป็นทิศทางสำคัญของ AI มาโดยตลอด การทดสอบทัวริงใช้บทสนทนาเพื่อตรวจสอบว่าเครื่องจักรมีความฉลาดในระดับสูงหรือไม่
จะสร้างระบบบทสนทนาระหว่างมนุษย์กับคอมพิวเตอร์หรือหุ่นยนต์สนทนาได้อย่างไร?
ระบบการสนทนามีการพัฒนามาสามชั่วอายุคน:
ระบบการสนทนาแบ่งออกเป็นสามประเภท:
คำนวณความคล้ายคลึงกันระหว่างคำถามของผู้ใช้กับคำถามในฐานข้อมูลคำถามและคำตอบ เลือกคำถามที่คล้ายกันมากที่สุด แล้วให้คำตอบที่เกี่ยวข้อง
การคำนวณความคล้ายคลึงของประโยคมีวิธีการดังต่อไปนี้:
รับคำตอบจากสรุปผลการค้นหาบน 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"
ตัวอย่าง: example/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 จะเป็นดังนี้
真想找你一起去看电影
突然很想你
我也很想你
想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
เรียกใช้ 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
สำหรับการแนะนำพารามิเตอร์การฝึกเพิ่มเติม คุณสามารถดูคำอธิบายพารามิเตอร์ได้โดยตรงในฟังก์ชัน set_args() ใน train.py
เรียกใช้ Interactive.py และใช้โมเดลที่ได้รับการฝึกอบรมเพื่อโต้ตอบระหว่างมนุษย์กับคอมพิวเตอร์ หลังจากป้อน q เพื่อสิ้นสุดการสนทนา บันทึกการแชทจะถูกบันทึกลงในไฟล์ example.txt
python interact.py --no_cuda --model_dir path_to_your_model
เมื่อดำเนินการโต้ตอบ.py คุณสามารถลองปรับเอฟเฟกต์ที่สร้างขึ้นโดยการปรับพารามิเตอร์ เช่น topk, topp, repetition_penalty, max_history_len เป็นต้น สำหรับการแนะนำพารามิเตอร์เพิ่มเติม คุณสามารถดูคำอธิบายพารามิเตอร์ได้โดยตรงในฟังก์ชัน set_args() ของ Interactive.py หากคุณต้องการใช้ 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:好哒
คลังการสนทนาภาษาจีน | ที่อยู่ชุดข้อมูล | คำอธิบายคอร์ปัส |
---|---|---|
สนทนาภาษาจีนทั่วไป | chinese_chatbot_corpus | รวมถึงคลังข้อมูลเสี่ยวหวงจี, คลังข้อมูล Douban, คลังบทสนทนาละครโทรทัศน์, คลังข้อมูลตอบกลับฟอรัม Tieba, คลังข้อมูล Weibo, คลังข้อมูลซุบซิบของ PTT, คลังข้อมูล Qingyun ฯลฯ |
คลังแชทจีน 500,000 รายการ | Baidu Netdisk [รหัสแยก: 4g5e] หรือ GoogleDrive | ประกอบด้วยคลังข้อมูลต้นฉบับและข้อมูลที่ประมวลผลล่วงหน้าของการสนทนาแบบหลายรอบ 500,000 รายการ |
คลังแชทจีน 1 ล้าน | Baidu Netdisk [รหัสแยก: s908] หรือ GoogleDrive | ประกอบด้วยคลังข้อมูลดั้งเดิมและข้อมูลที่ได้รับการประมวลผลล่วงหน้าของการสนทนาแบบหลายรอบ 1 ล้านครั้ง |
ตัวอย่างของคลังการสนทนาภาษาจีนมีดังนี้:
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
แบบอย่าง | ที่อยู่ที่ใช้ร่วมกัน | คำอธิบายโมเดล |
---|---|---|
model_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese หรือ Baidu Cloud Disk (รหัสแยก: taqh) หรือ GoogleDrive | หลังจากการฝึกอบรม 40 ยุคโดยใช้ข้อมูลบทสนทนา 500,000 รอบ การสูญเสียลดลงเหลือประมาณ 2.0 |
หากคุณใช้ Dialogbot ในการวิจัยของคุณ โปรดอ้างอิงในรูปแบบต่อไปนี้:
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
ข้อตกลงใบอนุญาตคือ The Apache License 2.0 ซึ่งให้บริการฟรีสำหรับใช้ในเชิงพาณิชย์ โปรดแนบลิงก์ไปยังไดอะล็อกบอทและข้อตกลงใบอนุญาตในคำอธิบายผลิตภัณฑ์
รหัสโปรเจ็กต์ยังคงหยาบมาก หากคุณมีการปรับปรุงโค้ดใดๆ คุณสามารถส่งกลับมาที่โปรเจ็กต์นี้ได้ก่อนส่ง โปรดใส่ใจกับสองประเด็นต่อไปนี้:
tests
python -m pytest
เพื่อรันการทดสอบหน่วยทั้งหมดเพื่อให้แน่ใจว่าการทดสอบหน่วยทั้งหมดผ่านจากนั้นคุณสามารถส่ง PR