← Blog

การประมวลผลภาษาธรรมชาติของแชทบอทใจดี

18-08-2022 16:40:22

ภาพประกอบ

แชทบอทใจดี เป็นแพลตฟอร์มดิจิทัลที่มีเป้าหมายช่วยเหลือเด็กและเยาวชนในด้านสุขภาวะทางจิตใจ โดยแชทบอทจะมีเป้าหมายแนะนำและให้กำลังใจเด็กและเยาวชนให้ผ่านพ้นปัญหาช่วงวัยรุ่น เช่น ปัญหาการเรียน ความรัก ครอบครัว จิตใจ การเงิน ผ่านการเชื่อมโยงประสบการณ์ของคนที่เคยผ่านเรื่องต่างๆ มาแล้ว

เป้าหมายการทำงานของระบบแชทบอทของใจดี คือให้ผู้ใช้พิมพ์ปัญหาที่กำลังเจอในวัยรุ่นวัยเรียน แชทบอทจะไปค้นหาปัญหาและทางแก้ไขให้จากฐานข้อมูลประสบการณ์กว่าหมื่นรายการ โดยลักษณะของฐานข้อมูลจะเป็น natural language เป็นข้อความปกติ ไม่ใช่ structured data

Strategy ในการค้นหา จะแบ่งเป็น 3 ลำดับ เรียงกัน ได้แก่

  1. หาข้อความที่มีความคล้ายกันมากที่สุดกับคำค้น เน้นตรง ไม่เน้นเยอะ แต่ถ้าไม่พบเลย ให้ไปข้อถัดไป
  2. หาข้อความที่มีความคล้ายเชิงประเด็น เน้นเยอะ ไม่เน้นตรง แต่ถ้าไม่พบเลย ให้ไปข้อถัดไป
  3. หาไม่เจอเลย แจ้งผู้ใช้ว่าไม่พบ และให้คำแนะนำเพื่อให้ลองค้นใหม่หรือกดหัวข้อที่เตรียมไว้ล่วงหน้า

กลยุทธ์ที่ 1 ชื่อว่า Strict mode ดำเนินการโดยการใช้ Library ประมวลผลภาษาธรรมชาติภาษาไทย คือ pythainlp แยกข้อความให้เป็นคำๆ จากนั้นระบุหน้าที่ของคำ (part of speech - POS) แล้วเลือกบาง POS มาประกอบกันเป็น regular expression (RegEx) โดย RegEx จะอนุญาตให้สลับตำแหน่งคำได้ (allow all permutations) และเชื่อมแต่ละคำด้วย AND จากนั้นจึงใช้ RegEx นี้พยายามหาข้อมูลที่ match พอพบแล้วก็สุ่มสลับที่ข้อมูล บันทึกผลการค้นหา แล้วส่งไปแสดงผล

จะเห็นว่ากลยุทธ์ที่ 1 จะมีโอกาสพบ match ได้ค่อนข้างยาก เพราะข้อความที่จะ match ได้ ต้องมีคำทั้งหมดที่อยู่ใน RegEx อย่างไรก็ตาม ได้พยายามเพิ่มโอกาส match โดยการเลือกคำเฉพาะบาง POS และอนุญาตให้คำสลับตำแหน่งกันได้ ในทางปฏิบัติ พบว่าคำค้นจากผู้ใช้งานจริงนั้น match สำเร็จโดยใช้กลยุทธ์นี้ประมาณ 60%

สำหรับ 40% ที่เหลือ คือถ้าหาก match ไม่พบเลย จะเข้าสู่กลยุทธ์ที่ 2 เรียกว่า Proxy search

หลักการของ Proxy search คือการพยายามระบุว่าคำค้นนั้นมีเนื้อหาอยู่ในหมวดหมู่ หรือ proxy อะไรบ้าง แล้วทำการค้นหาโดยใช้ proxy นั้น ไม่ได้ค้นโดยตรงจากคำค้น ตัวอย่างเช่น หากพบว่าคำค้นมีคำว่า "แม่" คำนี้จะถูกตีความว่าอยู่ใน proxy เรื่อง "ครอบครัว" แล้วระบบก็จะค้นคำว่า "ครอบครัว" เพื่อให้ match กับฐานข้อมูล

การสร้างระบบ proxy search จะต้องอาศัยคลัง proxy ซึ่งมีข้อมูลว่ามี proxy อะไรบ้าง และแต่ละ proxy มีคำอะไรบ้างที่เมื่อพบจะถูกจัดกลุ่มให้เข้ากับ proxy นั้นๆ คลัง proxy นี้ทีมพัฒนาจะต้องสร้างขึ้นมา และคอยอับเดตให้ทันสมัยอยู่เสมอ โดยให้ครอบคลุมคำที่ผู้ใช้ใช้จริงๆ

Proxy ที่จะนำมาค้นหา อาจมีหลาย proxy ได้ เช่น คำค้นหนึ่ง อาจมีทั้งเรื่อง "ครอบครัว" และ "ความรัก" ระบบจะเชื่อม proxy ทั้งหมดด้วย RegEx OR เพื่ออนุญาตให้ผลลัพธ์ตรงกับ proxy ใด proxy หนึ่งก็ได้ เพื่อเพิ่มโอกาสให้พบข้อความจำนวนมากขึ้น แต่ก็ต้องแลกกับโอกาสที่ข้อความจะไม่ตรงประเด็นของผู้ค้น

สุดท้าย หากไม่สามารถสร้าง proxy ได้ ก็จะถือว่าค้นไม่พบ ก็กำหนดให้ระบบส่งข้อความและคำแนะนำ โดยคำแนะนำจะบอกให้ผู้ใช้ลองเปลี่ยนคำหรือพิมพ์สั้นๆ เพื่อเพิ่มโอกาสในการพบผลลัพธ์ และในขณะเดียวกันก็แสดงปุ่ม shortcut ไปยัง proxy เด่นๆ เพื่อให้ลองกดดู

กลไกประมวลภาษาธรรมชาติทั้งระบบนี้ ก็จะทำให้ระบบสามารถบรรลุเป้าหมาย ซึ่งก็คือ


Tags:  nlp chatbot