ที่เก็บนี้มีรหัสเพื่อพัฒนา chatbot ที่สามารถใช้หนึ่งใน 16 ประเภทบุคลิกภาพ Myers-Briggs
chatbot ได้รับการปรับแต่งอย่างละเอียดสำหรับแต่ละบุคลิกโดยใช้โพสต์และความคิดเห็นที่เป็นของ subreddit ที่เกี่ยวข้อง (ตัวอย่างเช่น R/INFJ สำหรับ ประเภท INFJ )
reddit_scraper.py มีสคริปต์เพื่อขูด subreddit ที่กำหนด ในการดำเนินการคุณต้องมีอินสแตนซ์ของฐานข้อมูล MySQL เพื่อเชื่อมต่อ นอกจากนี้คุณยังต้องมีพารามิเตอร์บางอย่างที่เกี่ยวข้องกับบัญชี reddit ของคุณและฐานข้อมูล MySQL: ทั้งหมดจำเป็นต้องใส่ในไฟล์ config.py ตามสคีมาของ config.example.py
สคริปต์จะโหลดโพสต์ทั้งหมดในตารางที่เรียกว่า posts ก่อนจากนั้นความคิดเห็นของพวกเขาในตารางที่เรียก comments แม้ว่าจะใช้การขนานกัน แต่ส่วนที่สองนี้จะใช้เวลาหลายชั่วโมง นั่นเป็นเหตุผลว่าทำไมเมื่อคุณดาวน์โหลดโพสต์ที่คุณสนใจผ่านสคริปต์หลัก (~ 20 นาที) คุณสามารถใช้สคริปต์ความคิดเห็น comments_scraper.py เพื่อดาวน์โหลดความคิดเห็นที่เกี่ยวข้อง หากคุณขัดจังหวะในครั้งต่อไปที่คุณเรียกใช้สคริปต์จะเริ่มจากที่ที่คุณจากไป
ในการฝึกอบรมแบบจำลองฉันรายงานข้อมูลเป็นครั้งแรกใน conversational dataset format เช่นตาราง CSV ที่มีโครงสร้างต่อไปนี้
| รหัสประจำตัว | การตอบสนอง | บริบท | บริบท/0 | - | บริบท/n |
|---|---|---|---|---|---|
| S892NN | ฉันสบายดี | ไม่เป็นไร. แล้วคุณล่ะ | ชีวิตเป็นอย่างไร? | - | สวัสดี! |
ที่นี่ บริบท/n แสดงถึงจุดเริ่มต้นของการสนทนาไปสู่การแลกเปลี่ยนล่าสุด (แสดงใน บริบท/0 บริบท และ การตอบสนอง ซึ่งเป็นประโยคล่าสุดในการสนทนา) มันเป็นไปได้ที่จะเปลี่ยน cardinality ของบริบทโดยการแทนที่พารามิเตอร์ NUMBER_OF_CONTEXTS ในไฟล์ config.py
สคริปต์ create_conversational_dataset.py สร้าง CSV เริ่มต้นจากตาราง SQL ที่สร้างขึ้นในระหว่างขั้นตอนการขูดโดยบันทึกเป็นไฟล์ดองในโฟลเดอร์ข้อมูล การสนทนาถูกสร้างขึ้นจากโพสต์และหนึ่งในความคิดเห็นโดยตรงหรือจากโพสต์ความคิดเห็นและห่วงโซ่ความคิดเห็น
การดำเนินการของสคริปต์นั้นขนานกันดังนั้นจึงเขียนบน n ที่แตกต่างกัน CSVS - N ขึ้นอยู่กับพารามิเตอร์ NUMBER_OF_PROCESSES - ในที่สุดก็ต่อกันเพื่อสร้างไฟล์ดองที่ได้
training.py โน้ตบุ๊ก PY มีการปรับแต่งแบบจำลองภาษา DialoGPT-medium บนข้อมูลการสนทนาและส่วนใหญ่เป็นการปรับรหัสที่คุณสามารถหาได้ใน this notebook
การดำเนินการ demo.py จะเริ่มการสนทนา
ในการเรียกใช้รหัสทั้งหมดในการตอบสนองคุณสามารถสร้างสภาพแวดล้อมเสมือนจริงและเรียกใช้คำสั่งต่อไปนี้
virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt