ปัจจุบันแม้ว่าการสร้างแชทบอทจะง่ายขึ้นกว่าแต่ก่อนมาก คนที่เขียนโปรแกรมไม่ได้ก็สามารถสร้างแชทบอทได้ ภายใน 5 นาที ทำให้มีการใช้งานแชทบอทกันอย่างแพร่หลายมากขึ้น ไม่ว่าจะเป็นธุรกิจขนาดใหญ่, SMEs, ภายในกลุ่ม, หรือแม้กระทั่งผู้ช่วยส่วนบุคคล
แต่ทว่าปัญหาที่เกิดขึ้น ไม่ใช่แค่เพียง “สร้างแชทบอทยังไง?” แต่มันกลายเป็น “สร้างแชทบอทยังไงให้ดี?” ซึ่งส่วนนี้จำเป็นต้องอาศัยความรู้ความเข้าใจ ที่เกิดจากการเรียนรู้พฤติกรรมของการถาม-ตอบ ของผู้ใช้บอทแต่ละตัว
วันนี้ผมจะอธิบายรูปแบบ Conversation 2 แบบหลัก ๆ ที่จะช่วยให้คุณเข้าใจรูปแบบการออกแบบแชทบอทได้ดีขึ้นครับ
Intent-Based
Intent คือความเจตนาในการทำอย่างใดอย่างหนึ่ง ดังนั้นแชทบอทที่ทำแบบ Intent-Based คือการหาว่าข้อความที่ผู้ใช้พิมพ์มานั้นต้องการจะทำอะไร เช่น
ผู้ใช้ > ประธานาธิบดีของสหรัฐคือใคร
------ ข้อความข้างบน คือ ความเจตนาในการถามหาเกี่ยวกับบุคคล
------ Intent = President
เอแล้วมันเข้ามาช่วยยังไงหว่า คำตอบก็คือ เราสามารถจัดกลุ่มของประโยคคำถาม และ คำตอบ แบ่งตาม Intent เพื่อให้แชทบอทเรา ฉลาดขึ้นได้ครับ ยกตัวอย่างเช่น
Intent: President
เมื่อผู้ใช้พิมพ์ว่า
> ประธานาธิบดีของสหรัฐคือใคร
> ใครคือประธานาธิบดีของสหรัฐ
> ประธานาธิบดีสหรัฐ
> ประธานาธิบดี
> ผู้นำ
> ผู้นำสหรัฐ
ให้ตอบไปว่า
> Donald Trump
และด้วยเทคโนโลยีปัจจุบันเช่น NLP(Natural Language Processing), NLU (Natural Language Understanding), ML (Machine Learning) และอีกมากมาย ช่วยให้เราสามารถจำแนก Intent ได้ง่ายขึ้น โดยที่ไม่ต้องใช้ Rule-Based ในการจำแนก Intent อีกต่อไป
นอกจากนี้การทำ Intent-Based ก็อาจจะมีการทำสิ่งที่เรียกว่า Entity Recognition อีกด้วย
Entity Extraction
มันคือการที่เรารู้ว่าในประโยคที่ผู้ใช้พิมพ์มามี Entity อะไรบ้าง เช่น
เรากำหนด Entity ชื่อ Country ให้มีค่าดังนี้
Country:
- USA : US, สหรัฐอเมริกา, อเมริกา, เมกา, สหรัฐ
และเมื่อผู้ใช้พิมพ์ว่า
> ประธานาธิบดีของ'สหรัฐ'คือใคร
> ใครคือประธานาธิบดีของ'สหรัฐอเมริกา'
> ประธานาธิบดี'เมกา'
> ประธานาธิบดี
> ผู้นำ
> ผู้นำ'สหรัฐ'
จะเห็นว่าเราจะสามารถดึง Entity country ออกมาจากประโยคที่ผู้ใช้พิมพ์มาได้ด้วย คราวนี้เราก็สามารถ รับข้อความได้หลากหลายมากขึ้นแล้วครับ
ยัง!! ยังไม่หมด มันยังมีสิ่งที่เรียกว่า context เพิ่มเข้ามาอีก
Context
เพราะว่าการออกแบบ แบบ Intent-based จะเป็นการถามตอบแบบประโยคต่อประโยค แล้วถ้าผู้ใช้ต้องการจะถามต่อละ ทำไงดี เช่น
> ประธานาธิบดีของ'สหรัฐ'คือใคร
< Donal Trump> เค้าอายุเท่าไหร่
< ....
context เลยเข้ามาช่วยแก้ปัญหานี้ครับ เช่น เราอาจจะบันทึกไว้ว่า ถ้าเค้าเข้ามาที่ Intent: President แล้ว ให้เก็บ context ไว้ว่า president
แล้วเราก็ทำ Followed-up intent ไว้ว่า เมื่อมี context president แล้ว ให้ไปหา intent ชุดต่อมานะ เช่น
Intent: president.age
จะถูกเรียกใช้งานเมื่อมี context president เท่านั้น
Flow-Based
แชทบอทที่ถูกพัฒนาด้วยรูปแบบ Flow-Based มีจุดเด่นคือเราสามารถนำผู้ใช้ที่เข้ามาคุยกับแชทบอทไปยังจุดต่างๆ ตามที่เรากำหนดได้ เช่น ผู้ใช้อาจจะไม่รู้ว่าแชทบอทตัวนี้ทำอะไรได้บ้าง แชทบอทก็จะเป็นคนเริ่มบทสนทนา แล้วก็ค่อยๆ พาผู้ใช้ไปตาม flow ที่ออกแบบไว้ เช่น
บอท > สวัสดีคร้าบ
บอท > สนใจซื้อสินค้าตัวไหนครับ
บอท > (รายการสินค้า)ผู้ใช้ > (เลือกสินค้า A)
บอท > สินค้า A ราคา X บาท สนใจซื้อไหมครับ
บอท > (สนใจ) (ไม่สนใจ)
...
ทำให้เราสามารถควบคุมรูปแบบการใช้งานหรือโต้ตอบระหว่าง ผู้ใช้กับแชทบอทได้ เช่น ถ้าผู้ใช้ออกนอก flow ที่เรากำหนดไว้ เราก็สามารถดึงเค้ากลับเข้ามาตาม flow หลักที่เรากำหนดได้เช่นกัน
สรุป
Intent-Based
- หาความต้องการของผู้ใช้จากข้อความที่กำหนดมา
- หา Entity เพื่อดึงข้อมูลที่จำเป็นมาจากข้อความนั้น
- สร้าง Context เพื่อช่วยจำแนก intent ขั้นต่อไป
- แชทบอทจะฉลาด ถ้ามีข้อมูลเยอะมากพอ (กำหนด Intent, Entity ไว้ครอบคลุมพอ)
Flow-Based
- สร้างแชทบอทตาม flow ที่กำหนดไว้
- ช่วยแนะนำผู้ใช้ และพาไปยังจุดที่ต้องการ
- แชทบอทจะพิมพ์ข้อความซ้ำเยอะ (หรืออาจจะน่าเบื่อ) หากมีรูปแบบ flow ไม่กว้างพอ
ส่งท้าย
การสร้างแชทบอทไม่ได้มีเพียงแค่สองแบบนี้ แต่ในบทความนี้ผมอยากจะนำวิธีการคิดและสร้างแชทบอทในสองรูปแบบที่แตกต่างกันมาเล่าให้ฟัง เผื่อเพื่อนๆ ผู้อ่านจะมีไอเดียหรือได้ไอเดียการสร้างแชทบอทเพิ่มมากขึ้นครับ :D หากใครมีไอเดียการสร้างแชทบอท หรืออยากจะสร้างแชทบอทแต่ไม่รู้จะเริ่มยังไงก็เข้ามาคุยกันได้นะครับที่ Thai Bot Maker นะคร้าบ
บทความที่น่าสนใจเกี่ยวกับ Chatbot