chatbot เพื่อสุขภาพจิต
อัปเดต (2024)
- แก้ไขปัญหาที่เกี่ยวข้องกับสคริปต์ Python ที่ไม่ทำงานเนื่องจากเวอร์ชันและวิธีการที่ล้าสมัย
- เพิ่มความต้องการ txt สำหรับการติดตั้งการพึ่งพาได้อย่างง่ายดาย
ก่อนที่คุณจะเรียกใช้สคริปต์ตรวจสอบให้แน่ใจว่าคุณมีรุ่น Python <= 3.8 ติดตั้ง (ควรมี Python 3.8; จำเป็นสำหรับการติดตั้งไลบรารีบางอย่างเช่น TensorFlow)
โครงการนี้ทำเพื่อโครงการวิจัยภายใต้ศาสตราจารย์ที่มหาวิทยาลัยของฉันด้วยชุดข้อมูลที่สาดด้วยตนเอง ชุดข้อมูลที่เราใช้เป็นความลับ ดังนั้นฉันจึงใช้ชุดข้อมูล Kaggle ตัวอย่าง ฉันตัดสินใจที่จะทำให้สคริปต์โอเพนซอร์สเพื่อรวบรวม chatbots ที่แตกต่างกันตั้งแต่เริ่มต้นใน Python เนื่องจากฉันต่อสู้กับทรัพยากรดังกล่าวในระหว่างการวิจัยของฉัน
แรงจูงใจเบื้องหลังโครงการนี้
ในปี 2560 การสำรวจสุขภาพจิตแห่งชาติรายงานว่าหนึ่งในเจ็ดคนในอินเดียได้รับความทุกข์ทรมานจากความผิดปกติทางจิตรวมถึงภาวะซึมเศร้าและความวิตกกังวล การรับรู้ที่เพิ่มขึ้นของสุขภาพจิตทำให้เป็นข้อกังวลหลักของการพัฒนา เกือบ 150 ล้านคนในอินเดียต้องการการแทรกแซงที่ซึ่งชนชั้นต่ำและชนชั้นกลางต้องเผชิญกับภาระมากกว่าคนดี โครงการนี้เป็นความพยายามที่จะทำให้สุขภาพจิตสามารถเข้าถึงได้มากขึ้น ตัวแทนการสนทนานี้สามารถเสริมด้วยแพทย์เพื่อให้มีประสิทธิภาพและมีผลมากขึ้น
การจำแนกประเภทของ chatbots
แชทบอทสามารถจำแนกได้บนพื้นฐานของแอตทริบิวต์ที่แตกต่างกัน -

การวิจัยของฉันเกี่ยวข้องกับวิธีการออกแบบคือกฎพื้นฐานการดึงข้อมูลและการกำเนิด
- chatbots ตามกฎ: chatbot ตามกฎใช้การแมปตามกฎอย่างง่ายหรือการจับคู่รูปแบบเพื่อเลือกการตอบสนองจากชุดการตอบสนองที่กำหนดไว้ล่วงหน้า ระบบเหล่านี้ไม่ได้สร้างข้อความใหม่ใด ๆ แต่พวกเขาเลือกคำตอบจากรายการที่กำหนดไว้ล่วงหน้า
- chatbots ที่ใช้การดึงข้อมูล: แชทบ็อตที่ใช้การดึงข้อมูลใช้วงดนตรีการเรียนรู้ของเครื่องเป็นฮิวริสติกสำหรับการประเมินผล คล้ายกับแชทบอทตามกฎพวกเขาไม่ได้สร้างข้อความใหม่
- chatbots ที่ใช้ Generative: รุ่น Generative ไม่พึ่งพาการตอบสนองที่กำหนดไว้ล่วงหน้า พวกเขามาพร้อมกับคำตอบใหม่ตั้งแต่เริ่มต้น โดยทั่วไปแล้วเทคนิคการแปลของเครื่องจะใช้ในแบบจำลองการกำเนิด แต่แทนที่จะแปลจากภาษาหนึ่งไปยังอีกภาษาหนึ่งเรา "แปล" จากอินพุตเป็นเอาต์พุต (การตอบสนอง) แบบจำลองการกำเนิดใช้สำหรับการสร้างเพราะเรียนรู้ตั้งแต่เริ่มต้น
ภาพรวมของบอทที่ผ่านการฝึกอบรม
ชุดข้อมูลถูกหยิบขึ้นมาจาก Kaggle - คำถามที่พบบ่อยด้านสุขภาพจิต ชุดข้อมูลนี้ประกอบด้วยคำถามที่พบบ่อย 98 เรื่องเกี่ยวกับสุขภาพจิต ประกอบด้วย 3 คอลัมน์ - คำถามคำถามและคำตอบ
โปรดทราบว่าในการฝึกอบรม chatbot ดึงไฟล์ CSV ถูกแปลงเป็นไฟล์ JSON ด้วยตนเอง เนื่องจากนี่ไม่ใช่ชุดข้อมูลต้นฉบับที่ใช้สำหรับการวิจัย (อ่านอินโทร) ฉันจึงใช้เฉพาะ 20 แถวแรกสำหรับการฝึกอบรมแบบจำลอง
ที่เก็บประกอบด้วยโน้ตบุ๊กสามใบสำหรับแชทบอทสามประเภท
สำหรับกฎตามกฎ TF-IDF ใช้กับ โทเค็นของ NLTK สำหรับการประมวลผลข้อมูล ข้อมูลที่ประมวลผลได้รับการทดสอบกับผลลัพธ์ที่คาดหวังและ ความคล้ายคลึงกันของโคไซน์ ใช้สำหรับการประเมินผล
สำหรับการดึงข้อมูลการเรียนรู้ของเครื่องจักรและการเรียนรู้อย่างลึกซึ้งได้รับการฝึกอบรม
- วานิลลา rnn
- LSTM
- BI - LSTM
- กรุ
- โมเดลการดึงข้อมูล CNN ได้รับการฝึกฝนในไฟล์ JSON สำหรับทุกรุ่นข้างต้นใช้การทำให้เป็นมาตรฐานและขึ้นอยู่กับการฝึกอบรมและการตรวจสอบความถูกต้องและการสูญเสียแบบจำลองที่ดีที่สุดคือการเปรียบเทียบขั้นสุดท้าย พบว่า สถาปัตยกรรม CNN ให้ผลลัพธ์ที่ดีที่สุด โมเดลประกอบด้วย 3 เลเยอร์ - เครือข่ายประสาทเทียม (CNN) + เลเยอร์การฝัง + และเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์
สำหรับ chatbots ที่ใช้กำเนิดมาใช้ NLP ถูกนำมาใช้เนื่องจาก NLP ช่วยให้แชทบอทสามารถเรียนรู้และเลียนแบบรูปแบบและรูปแบบของการสนทนาของมนุษย์ มันทำให้คุณรู้สึกว่าคุณกำลังคุยกับมนุษย์ไม่ใช่หุ่นยนต์ มันแมปอินพุตผู้ใช้เข้ากับเจตนาโดยมีจุดประสงค์ในการจำแนกข้อความสำหรับการตอบสนองที่กำหนดไว้ล่วงหน้าที่เหมาะสม
- โมเดลตัวเข้ารหัสได้รับการฝึกฝนในไฟล์ CSV Endoder-Decoder เป็นรุ่น SEQ2SEQ หรือที่เรียกว่าโมเดล ENCODER-DECODER ใช้หน่วยความจำระยะยาวระยะยาว-LSTM สำหรับการสร้างข้อความจากคลังข้อมูลการฝึกอบรม
- โมเดล SEQ2SEQ หรือ ENCODER-DECODER ทำอะไรในคำง่ายๆ? มันทำนายคำที่ให้ไว้ในอินพุตของผู้ใช้และจากนั้นแต่ละคำต่อไปจะถูกทำนายโดยใช้ความน่าจะเป็นของความน่าจะเป็นของคำที่เกิดขึ้น
JSON กับ CSV
ในระหว่างโครงการนี้ความสับสนที่ยิ่งใหญ่ที่สุดที่ฉันมีคือสาเหตุที่ chatbot ใช้ไฟล์ JSON แทน CSV สำหรับโมเดลการดึงข้อมูล ฉันได้ระบุบางจุดที่ทำให้การเปรียบเทียบระหว่างสองประเภทไฟล์ -
- JSON จัดเก็บข้อมูลในลักษณะลำดับชั้นซึ่งดีกว่าสำหรับ chatbot แบบดึงข้อมูลเนื่องจาก chatbot จะต้องใช้แท็กและบริบท
- แชทบ็อตที่ได้รับการฝึกฝนได้รับการฝึกฝนให้ตอบกลับที่ดีที่สุดตามกลุ่มของคำตอบที่กำหนดไว้ล่วงหน้า การตอบสนองที่กำหนดไว้ล่วงหน้าเหล่านี้มีจำนวน จำกัด ต้องมีการจัดทำแท็กสำหรับการแมปอินพุทไปยังเอาท์พุท เพื่อให้ง่าย ๆ อินพุตที่ได้รับจากผู้ใช้ (บริบท) จะถูกระบุด้วยแท็กที่ให้ไว้ ขึ้นอยู่กับแท็กที่ดีที่สุดที่คาดการณ์ไว้ผู้ใช้จะแสดงหนึ่งในการตอบสนองที่กำหนดไว้ล่วงหน้า ดังนั้นการจัดเก็บข้อมูลประเภทนี้ในไฟล์ JSON นั้นง่ายขึ้นเนื่องจากความกะทัดรัดและโครงสร้างแบบลำดับชั้น
- ไฟล์ CSV ถูกใช้เพื่อจัดเก็บข้อมูลของ Chatbot Generative chatbot generative ไม่จำเป็นต้องมีแท็กในการทำนาย ข้อมูลเหล่านี้ง่ายกว่าในการจัดเก็บในไฟล์ CSV เนื่องจากเราต้องการเพียงสองคอลัมน์ - อินพุตข้อความและข้อความเอาต์พุต การเพิ่มหรือลบข้อมูลจะง่ายขึ้นในกรณีนี้เมื่อเทียบกับไฟล์ JSON
เป้าหมายในอนาคต
ฉันต้องการค้นคว้าความเป็นไปได้ของ Chatbot ที่ใช้กำเนิด โมเดลตัวเข้ารหัส Decoder ปัจจุบันไม่สามารถจับการพึ่งพาทั้งหมดในชั้นถอดรหัสได้เนื่องจากลักษณะที่กะทัดรัดของ LSTM สามารถเพิ่มเลเยอร์ความสนใจได้หลังจากเลเยอร์ LSTM เพื่อถอดรหัสแต่ละเอาต์พุตแบบไดนามิก