Intent-Based vs. Flow-Based Conversation

ปัจจุบันแม้ว่าการสร้างแชทบอทจะง่ายขึ้นกว่าแต่ก่อนมาก คนที่เขียนโปรแกรมไม่ได้ก็สามารถสร้างแชทบอทได้ ภายใน 5 นาที ทำให้มีการใช้งานแชทบอทกันอย่างแพร่หลายมากขึ้น ไม่ว่าจะเป็นธุรกิจขนาดใหญ่, SMEs, ภายในกลุ่ม, หรือแม้กระทั่งผู้ช่วยส่วนบุคคล

แต่ทว่าปัญหาที่เกิดขึ้น ไม่ใช่แค่เพียง “สร้างแชทบอทยังไง?” แต่มันกลายเป็น “สร้างแชทบอทยังไงให้ดี?” ซึ่งส่วนนี้จำเป็นต้องอาศัยความรู้ความเข้าใจ ที่เกิดจากการเรียนรู้พฤติกรรมของการถาม-ตอบ ของผู้ใช้บอทแต่ละตัว

วันนี้ผมจะอธิบายรูปแบบ Conversation 2 แบบหลัก ๆ ที่จะช่วยให้คุณเข้าใจรูปแบบการออกแบบแชทบอทได้ดีขึ้นครับ

Intent-Based

Ref: http://www.pveller.com/intent-recognizer-for-a-chatbot/

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

Ref: http://sketchhunt.com/2016/07/29/chat-bot-ux-flow-design-template-sketch-arctouch/

แชทบอทที่ถูกพัฒนาด้วยรูปแบบ Flow-Based มีจุดเด่นคือเราสามารถนำผู้ใช้ที่เข้ามาคุยกับแชทบอทไปยังจุดต่างๆ ตามที่เรากำหนดได้ เช่น ผู้ใช้อาจจะไม่รู้ว่าแชทบอทตัวนี้ทำอะไรได้บ้าง แชทบอทก็จะเป็นคนเริ่มบทสนทนา แล้วก็ค่อยๆ พาผู้ใช้ไปตาม flow ที่ออกแบบไว้ เช่น

บอท > สวัสดีคร้าบ
บอท > สนใจซื้อสินค้าตัวไหนครับ
บอท > (รายการสินค้า)
ผู้ใช้ > (เลือกสินค้า A)
บอท > สินค้า A ราคา X บาท สนใจซื้อไหมครับ
บอท > (สนใจ) (ไม่สนใจ)
...

ทำให้เราสามารถควบคุมรูปแบบการใช้งานหรือโต้ตอบระหว่าง ผู้ใช้กับแชทบอทได้ เช่น ถ้าผู้ใช้ออกนอก flow ที่เรากำหนดไว้ เราก็สามารถดึงเค้ากลับเข้ามาตาม flow หลักที่เรากำหนดได้เช่นกัน

สรุป

Intent-Based

  • หาความต้องการของผู้ใช้จากข้อความที่กำหนดมา
  • หา Entity เพื่อดึงข้อมูลที่จำเป็นมาจากข้อความนั้น
  • สร้าง Context เพื่อช่วยจำแนก intent ขั้นต่อไป
  • แชทบอทจะฉลาด ถ้ามีข้อมูลเยอะมากพอ (กำหนด Intent, Entity ไว้ครอบคลุมพอ)

Flow-Based

  • สร้างแชทบอทตาม flow ที่กำหนดไว้
  • ช่วยแนะนำผู้ใช้ และพาไปยังจุดที่ต้องการ
  • แชทบอทจะพิมพ์ข้อความซ้ำเยอะ (หรืออาจจะน่าเบื่อ) หากมีรูปแบบ flow ไม่กว้างพอ

ส่งท้าย

การสร้างแชทบอทไม่ได้มีเพียงแค่สองแบบนี้ แต่ในบทความนี้ผมอยากจะนำวิธีการคิดและสร้างแชทบอทในสองรูปแบบที่แตกต่างกันมาเล่าให้ฟัง เผื่อเพื่อนๆ ผู้อ่านจะมีไอเดียหรือได้ไอเดียการสร้างแชทบอทเพิ่มมากขึ้นครับ :D หากใครมีไอเดียการสร้างแชทบอท หรืออยากจะสร้างแชทบอทแต่ไม่รู้จะเริ่มยังไงก็เข้ามาคุยกันได้นะครับที่ Thai Bot Maker นะคร้าบ


👏👏 ปรบมือหรือแนะนำบทความนี้ให้กับคนอื่น ๆ 👏👏
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.