มาช่วยกันสร้างชุดข้อมูลบทสนทนาภาษาไทยสำหรับสอนแชทบอทที่เหมือน ChatGPT กัน!

by tontan
19 February 2023 - 10:51

หลังจากที่กระแส ChatGPT ได้สร้างปรากฏการณ์ในวงการคอมพิวเตอร์จำนวนมาก ทั้ง Bing นำมาเป็นส่วนหนึ่งของระบบค้นหา, Google เปิดตัว Bard ที่ใช้ LaMBDA มาเพื่อแข่งกับ Bing และอื่น ๆ แต่ผู้ใช้งาน ChatGPT คงเจอปัญหาเวลาใช้งาน ChatGPT กับภาษาไทยแล้วทำงานช้ามาก เพราะ ChatGPT ไม่ได้ฝึกฝนด้วยชุดข้อมูลภาษาไทย นอกจากนั้น ChatGPT ยังเป็นซอฟต์แวร์ที่เป็นกรรมสิทธิ์ของ OpenAI และไม่ได้เป็น Open Source (ไม่เปิดเผยชุดข้อมูลที่ใช้ฝึกสอน-ไม่เปิดเผย Source Code)

ในปัจจุบันได้มีความพยายามสร้างโมเดล ChatGPT ในรูปแบบของ Open Source ที่ฝึกสอนโมเดลจากชุดข้อมูลบทสนทนาในภาษาต่าง ๆ ตัวอย่างเช่น ภาษาอังกฤษ, ภาษาจีน โมเดล ChatYuan และภาษาอื่น ๆ แต่สำหรับภาษาไทย ชุดข้อมูลบทสนทนา (conversational datasets) สำหรับใช้สอนโมเดล ณ ปัจจุบันยังไม่มี และค่าใช้จ่ายในการสร้างชุดข้อมูลค่อนข้างสูง เนื่องจากต้องใช้คนมาช่วยกันป้อนข้อมูลบทสนทนาให้โมเดลเรียนรู้ ดังนั้นผมจึงขอเชิญชวนชาว Blognone มาช่วยกันสร้างชุดข้อมูลบทสนทนาภาษาไทยสำหรับสอนแชทบอทที่เหมือน ChatGPT เพื่อให้นักวิจัยไทย และนักพัฒนาปัญญาประดิษฐ์ได้มีชุดข้อมูลสำหรับสร้างปัญญาประดิษฐ์ผู้ช่วยภาษาไทย (Open Assistant; AI Assistant หรือ “ChatGPT ภาษาไทย”)

สำหรับโครงการที่แนะนำคือ โครงการ Open Assistant โดย LAION-AI เจ้าของผลงานชุดข้อมูล LAION-5B ชุดข้อมูลคู่ข้อความ-รูปภาพอันลือลั่นที่ทำให้เกิดปรากฏการณ์ปัญญาประดิษฐ์วาดรูปอย่าง Midjourney และ Stable Diffusion มาแล้ว

ในครั้งนี้ LAION-AI มีเป้าหมายคือสร้างปัญญาประดิษฐ์ผู้ช่วยแบบโอเพนซอร์สเสมือน ChatGPT แต่ใช้งานได้ฟรี, เปิดเผยชุดข้อมูล, เปิดเผย Source Code, และนำไปทำงานบนคอมพิวเตอร์ตัวเองแบบออฟไลน์ได้ทั้งงานวิจัยและเชิงพาณิชย์ ขณะนี้ทางโครงการได้เริ่มต้นรับบริจาคชุดข้อมูลบทสนทนาในภาษาต่าง ๆ แบบ Crowdsourcing โดยหลังจากเสร็จสิ้นจะปล่อยภายใต้ CC BY 4.0 โดยก่อนอื่น ผมขอแนะนำให้อ่านเอกสาร Guidelines ตามที่ทางโครงการ PyThaiNLP ได้จัดทำขึ้นที่ pythainlp.github.io/Open-Assistant-Thailand/

มาเริ่มสร้างชุดข้อมูลกัน!

  1. เข้าไปที่ https://open-assistant.io/th


2. กด Sign In ด้วยอีเมล (ต้องไปเปิดลิงก์ในเมลที่ป้อน) หรือ เข้าสู่ระบบด้วย Discord แล้วจะพบกับหน้าหลักดังนี้


3. ให้เลือกภาษาเป็น “ไทย” เท่านั้น เพราะถ้าเลือกภาษาอื่น ๆ จะไม่สามารถป้อนภาษาไทยได้ โดยงานมีด้วยกัน 7 อย่างดังนี้
3.1 “สร้างข้อความ Prompts เริ่มต้น” (Create Initial Prompts) สำหรับสร้างข้อความเริ่มต้นสนทนากับ Open Assistant ของเรา เช่น “สวัสดี Open Assistant ช่วยบอกวิธีทอดไข่ดาวแบบกึ่งสุกกึ่งดิบให้หน่อย”

โดยข้อมูลที่ป้อนต้องทำตาม Guidelines สรุปย่อ ๆ คือเป็นข้อความใหม่ ไม่ก็อปจากที่ไหน, เป็นข้อความที่ไม่สนับสนุนความรุนแรง/เนื้อหาทางเพศ/ความเกลียดชัง/ข้อความที่ผิดกฎหมาย ข้อความที่ป้อนสามารถใช้ markdown ได้


3.2 “จัดประเภทข้อความ Prompt เริ่มต้น” (Classify Initial Prompt) เป็นการกำกับข้อความเริ่มต้นใน 3.1 ว่าเหมาะสมหรือไม่ ได้แก่

  • เป็นสแปมหรือไม่ (ใช่/ไม่)
  • คุณภาพต่ำ-สูง (1-5)
  • ธรรมดา-สร้างสรรค์ (1-5)
  • จริงจัง-อารมณ์ขัน (1-5)
  • หยาบคาย-สุภาพ (1-5)
  • มีความรุนแรง-ไม่มีอันตราย (1-5)

3.3 “ตอบกลับเป็นผู้ช่วย” (Reply as Assistant) สำหรับสร้างข้อความที่ Open Assistant จะตอบคำถามกลับไปหาผู้ใช้งาน เช่น “การทอดไข่ดาวแบบกึ่งสุกกึ่งดิบมีขั้นตอนดังต่อไปนี้ 1. ใช้ไฟอ่อนๆ …” คำแนะนำในการสร้างข้อความคล้ายกับ 3.1 แต่เพิ่มเติมจาก PyThaiNLP คือให้สวมบทเป็นปัญญาประดิษฐ์ เช่น ใช้คำตอบแบบไม่ระบุเพศ (ไม่ต้องมีครับ/ค่ะ, แทนตัว Open Assistant ด้วยฉัน) เป็นต้น

3.4 “จัดประเภทการตอบกลับของผู้ช่วย” (Classify Assistant Reply) เป็นการกำกับข้อความที่ Open Assistant ตอบกลับใน 3.3 เกณฑ์การประเมินคล้ายกับ 3.2 เพิ่มเติมคือ

  • เป็นการตอบกลับที่ไม่ดีสำหรับ Prompt ที่ให้มาหรือไม่ (ใช่/ไม่) ส่วนใหญ่คือการตอบไม่ตรงคำถาม เช่น

กรณีไม่ดี (ตอบ ใช่)
ถาม: สีประจำวันพุธสีอะไร
ตอบ: วันพุธเป็นวันกลางสัปดาห์

กรณีดี (ตอบ ไม่)
ถาม: สีประจำวันพุธสีอะไร
ตอบ: สีเขียว

  • ไม่เป็นประโยชน์-มีประโยชน์ (1-5)

3.5 “จัดอันดับการตอบกลับของผู้ช่วย” (Rank Assistant Replies) เป็นการจัดอันดับความตอบกลับที่ Open Assistant สร้างขึ้น ให้ลากวางคำตอบที่เหมาะกับ Prompt ที่สุด


3.6 “ตอบกลับเป็นผู้ใช้งาน” (Reply as User) สำหรับสร้างข้อความที่ผู้ใช้งานจะตอบกลับข้อความจากที่ Open Assistant สร้างขึ้นต่อจาก 3.3 เช่น

โจทย์

ผู้ใช้: ช่วยบอกวิธีการทำอาหารอิตาเลี่ยนหน่อย
Open Assistant: คุณต้องการอาหารอิตาเลี่ยนเมนูไหน

คุณต้องตอบด้วยข้อความ เช่น “ขอเมนูพาสต้าแล้วกัน” หรือ “ขอเมนูพิซซ่า” เป็นต้น

3.7 “จัดประเภทการตอบกลับของ Prompter” (Classify Prompter Reply) เป็นการกำกับข้อความที่ผู้ใช้ตอบกลับ Open Assistant ใน 3.6 โดยมีเกณฑ์เดียวกับ 3.2


4. การกำกับข้อความหรือป้อนข้อความใด ๆ ให้ปฏิบัติตาม Guidelines หรือเอกสารแนะนำภาษาไทย อย่างเคร่งครัด ที่สำคัญที่สุดคือ

  • สร้างข้อความใหม่ ไม่ก็อปจากที่ไหน
  • ไม่สร้างข้อความที่สนับสนุนความรุนแรง/เนื้อหาทางเพศ/ความเกลียดชัง/ข้อความที่ผิดกฎหมาย
  • เมื่อสร้างข้อความให้ Open Assistant เป็นคนตอบให้สวมบทปัญญาประดิษฐ์ เช่น ใช้คำตอบแบบไม่ระบุเพศ (ไม่ต้องมีครับ/ค่ะ) เป็นต้น

สามารถดูรายละเอียดเพิ่มเติมได้ที่ Open-Assistant.io/th และ pythainlp.github.io/Open-Assistant-Thailand/

พูดคุยกับชุมชน Open Assistant Thailand ได้ที่ Open Assistant Thailand - Facebook Groups

ข้อมูลเปิดเผย โครงการ PyThaiNLP เป็นผู้เขียนบทความนี้

Blognone Jobs Premium