يوفر Dialogbot تقنية نموذج الحوار الكامل، ويجمع بين نموذج الحوار القائم على البحث ونموذج الحوار القائم على المهام ونموذج الحوار التوليدي ، مما يؤدي إلى إخراج الاستجابة المثلى للحوار.
يقوم Dialogbot بتنفيذ مجموعة متنوعة من حلول روبوت الحوار مثل حوار الأسئلة والأجوبة، والحوار القائم على المهام، والحوار القائم على الدردشة، وهو يدعم الأسئلة والأجوبة المتعلقة باسترجاع الشبكة، والأسئلة والأجوبة المتعلقة بمعرفة المجال، والأسئلة والأجوبة الموجهة بالمهام، والأسئلة والأجوبة في الدردشة، مباشرة من خارج الشاشة. الصندوق.
مرشد
لقد كانت أنظمة الحوار بين الإنسان والآلة دائمًا اتجاهًا مهمًا للذكاء الاصطناعي. يستخدم اختبار تورينج الحوار لاكتشاف ما إذا كانت الآلة تتمتع بدرجة عالية من الذكاء.
كيفية بناء نظام الحوار بين الإنسان والحاسوب أو روبوت الحوار؟
لقد تطور نظام الحوار عبر ثلاثة أجيال:
تنقسم أنظمة الحوار إلى ثلاث فئات:
احسب التشابه بين سؤال المستخدم والسؤال في قاعدة بيانات الأسئلة والأجوبة، وحدد السؤال الأكثر تشابهاً، ثم قم بإعطاء الإجابة المقابلة له.
يشمل حساب تشابه الجملة الطرق التالية:
استرجع الإجابات من ملخصات نتائج البحث على Baidu وBing
العرض الرسمي: https://www.mulanai.com/product/dialogbot/
يعتمد المشروع على المحولات 4.4.2+، والشعلة 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
مثال: الأمثلة/bot_demo.py
from dialogbot import Bot
bot = Bot ()
response = bot . answer ( '姚明多高呀?' )
print ( response )
الإخراج:
query: "姚明多高呀?"
answer: "226cm"
مثال: الأمثلة/taskbot_demo.py
نموذج حوار قائم على الدردشة تم تدريبه على أساس النموذج التوليدي GPT2.
تم إصدار النموذج لنماذج المعانقة: shibing624/gpt2-dialogbot-base-chinese
مثال: الأمثلة/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 لإنهاء المحادثة، سيتم حفظ سجل الدردشة في ملف Sample.txt.
python interact.py --no_cuda --model_dir path_to_your_model
عند تنفيذ Interactive.py، يمكنك محاولة ضبط التأثير الناتج عن طريق ضبط المعلمات مثل topk، وtopp، وrepetition_penalty، وmax_history_len، وما إلى ذلك. لمزيد من التعريف بالمعلمات، يمكنك رؤية وصف المعلمة مباشرةً في وظيفة set_args() الخاصة بـinteract.py. إذا كنت تريد استخدام وحدة معالجة الرسومات للإنشاء، فلا تستدعي المعلمة --no_cuda، وحدد وحدة معالجة الرسومات التي تريد استخدامها من خلال -. -جهاز 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 | بما في ذلك مجموعة Xiaohuangji، مجموعة Douban، مجموعة الحوار الدرامي التلفزيوني، مجموعة ردود منتدى Tieba، مجموعة Weibo، مجموعة PTT، مجموعة Qingyun، إلخ. |
500.000 مجموعة دردشة صينية | Baidu Netdisk [رمز الاستخراج: 4g5e] أو GoogleDrive | يحتوي على مجموعة أصلية وبيانات مُجهزة مسبقًا لـ 500000 محادثة متعددة الأدوار |
مليون دردشة صينية | Baidu Netdisk [رمز الاستخراج: s908] أو GoogleDrive | يحتوي على مجموعة أصلية وبيانات مُجهزة مسبقًا لمليون محادثة متعددة الأدوار |
أمثلة على مجموعة الدردشة الصينية هي كما يلي:
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
نموذج | عنوان مشترك | وصف النموذج |
---|---|---|
model_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese أو Baidu Cloud Disk (رمز الاستخراج: taqh) أو GoogleDrive | بعد التدريب لمدة 40 عصرًا باستخدام 500000 جولة من بيانات الحوار، انخفضت الخسارة إلى حوالي 2.0. |
إذا كنت تستخدم Dialogbot في بحثك، فيرجى ذكره بالتنسيق التالي:
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
اتفاقية الترخيص هي ترخيص Apache 2.0، وهو مجاني للاستخدام التجاري. يرجى إرفاق الرابط الخاص بـ Dialogbot واتفاقية الترخيص في وصف المنتج.
لا يزال كود المشروع تقريبيًا للغاية. إذا كان لديك أي تحسينات على الكود، فنحن نرحب بإعادته إلى هذا المشروع قبل الإرسال، يرجى الانتباه إلى النقطتين التاليتين:
tests
python -m pytest
لتشغيل جميع اختبارات الوحدة للتأكد من اجتياز جميع اختبارات الوحدةيمكنك بعد ذلك تقديم العلاقات العامة.