يحتوي هذا المستودع على الكود لتطوير chatbot يمكن أن يأخذ أحد أنواع شخصية Myers-Briggs الـ 16 .
تم ضبط Chatbot لكل شخصية باستخدام المنشورات والتعليقات التي تنتمي إلى SubredDit المقابلة (على سبيل المثال ، R/INFJ لنوع INFJ ).
reddit_scraper.py يحتوي على البرنامج النصي لكشط subreddit معين. لتنفيذها ، تحتاج أولاً إلى مثيل لقاعدة بيانات MySQL للاتصال به. تحتاج أيضًا إلى بعض المعلمات المرتبطة بحساب Reddit الخاص بك وإلى قاعدة بيانات MySQL: يجب إدراجها جميعًا في ملف config.py ، باتباع مخطط config.example.py .
ستعمل البرنامج النصي أولاً على تحميل جميع المنشورات في جدول يسمى posts ، ثم تعليقاتهم في جدول يسمى comments . على الرغم من تطبيق التوازي ، فإن هذا الجزء الثاني سيستغرق عدة ساعات. لهذا السبب ، بمجرد تنزيل المنشورات التي تهتم بها من خلال البرنامج النصي الرئيسي (حوالي 20 دقيقة) ، يمكنك استخدام Script comments_scraper.py لتنزيل التعليقات المرتبطة بها. إذا قاطعته ، في المرة القادمة التي تقوم فيها بتشغيله ، سيبدأ البرنامج النصي من حيث غادرت.
لتدريب النموذج ، أبلغت أولاً عن البيانات conversational dataset format ، أي جدول CSV مع الهيكل التالي.
| بطاقة تعريف | إجابة | سياق | السياق/0 | ... | السياق/ن |
|---|---|---|---|---|---|
| S892nn | أنا بخير | لا بأس. ماذا عنك؟ | كيف حال الحياة؟ | ... | أهلاً! |
هنا ، يمثل السياق/n بداية المحادثة ، والذهاب إلى آخر تبادل (أظهر في السياق/0 ، السياق والاستجابة ، وهي أحدث جملة في المحادثة). من الممكن تغيير Cardinality للسياقات عن طريق تجاوز معلمة NUMBER_OF_CONTEXTS في ملف config.py .
يقوم البرنامج النصي create_conversational_dataset.py بإنشاء CSV بدءًا من جداول SQL التي تم إنشاؤها أثناء مرحلة التجريف ، مما يحفظه في ملف مخلل في مجلد البيانات. تم تصميم محادثة إما من منشور وواحد من تعليقاتها المباشرة أو من منشور ، وتعليق وسلسلة التعليقات الخاصة به.
إن تنفيذ البرنامج النصي موازٍ ، لذلك يكتب على CSVs مختلفة - N اعتمادًا على معلمة NUMBER_OF_PROCESSES - تم تسلسلها أخيرًا لإنشاء ملف المخلل الناتج.
يحتوي training.py دفتر Notebor.py على صقل نموذج لغة DialoGPT-medium على بيانات المحادثة ، وهو أساسًا تكيفًا للرمز الذي يمكنك العثور عليه في this notebook .
تنفيذ demo.py سيبدأ المحادثة.
لتشغيل جميع التعليمات البرمجية في Respository ، يمكنك إنشاء بيئة افتراضية وتشغيل الأوامر التالية.
virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt