Petch Kruapanich
readmoreth
Published in
3 min readApr 8, 2018

--

พัฒนาแชทบอทแบบ Rule-based approach VS AI based approach

ถ้าเรามองย้อนไปในอดีต ก่อนที่จะมีการพูดถึงแชทบอทมากเท่าทุกวันนี้ เราน่าจะคุ้นเคยกับคำว่า “บอท” ไม่มากก็น้อย โดยถ้าอ้างอิงตามนิยาม บอท ก็คือซอฟต์แวร์ที่ถูกพัฒนาให้สามารถทำงานได้ด้วยตนเอง โดยไม่จำเป็นต้องมีความช่วยเหลือจากมนุษย์ เช่น เราส่งข้อความไปจองร้านอาหาร โดยระบบจะจัดการให้ทุกอย่าง ไม่จำเป็นต้องมีพนักงานเข้ามายุ่ง หรือแอพพลิเคชั่นพยากรณ์อากาศที่แจ้งเตือนเรา ว่าวันพรุ่งนี้อากาศจะเป็นอย่างไร โดยที่เราไม่ต้องกดเข้าไปดู เป็นต้น

พอมาเป็นแชทบอท (chat bot) ก็สามารถสรุปได้ว่ามันคือซอฟต์แวร์ที่ถูกพัฒนาขึ้นมา เพื่อติดต่อกับผู้ใช้งานผ่านการพูดคุย ด้วยภาษาที่คนทั่วๆไปใช้กัน เอาเข้าจริงแล้วแชทบอทไม่ได้เป็นของใหม่แต่อย่างใด ย้อนไปเมื่อปี 1966 ก็มีนักวิจัยจาก MIT Joseph Weizenbaum ได้พัฒนา Eliza แชทบอทตัวแรกของโลก ที่จำลองตัวเองเป็นนักจิตบำบัดแล้ว

โดย Eliza ถือได้ว่าเป็นซอฟท์แวร์ที่ใช้ Natural Language Processing ตัวแรกๆของโลกเลยก็ว่าได้ เพราะสามารถสื่อสารกับผู้ใช้งานได้ด้วยภาษาพูดปกติ ไม่จำเป็นต้องใช้ภาษาคอมพิวเตอร์มาช่วยในการสื่อสารแต่อย่างใด สิ่งที่เจ๋งไปกว่านั้นก็คือ Eliza ยังผ่าน Turing Test โดยสามารถทำให้ผู้ใช้งานจำนวนหนึ่งเข้าใจว่ากำลังคุยกับนักจิตบำบัดจริงๆ (ถ้าอยากลองคุยกับ Eliza ลองได้ที่นี้นะ)

Rule-based VS AI based

ถ้าพูดถึงประเภทของแชทบอท ในแง่ของการพัฒนา เราสามารถแบ่งมันออกได้เป็น 2 ประเภทใหญ่ๆ คือ Rule-based approach และ AI base approach ซึ่งทั้งสองต่างมีข้อดี และข้อเสียแตกต่างกันไป ขึ้นอยู่กับแนวทางการนำไปใช้

Rule-Based approach

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

ปัจจุบันเราจะเห็นแชทบอทที่ใช้ Rule-Based approach ในรูปแบบการทำฟอร์มรับสมัคร หรือแบบสอบถามค่อนข้างเยอะ เพราะสามารถพัฒนาได้ง่าย การตอบคำถามจะเป็นในทางเดียว คือตอบไปเรื่อยๆ เป็นข้อๆ ไม่มีการกระโดดข้ามไป ข้ามมา ซึ่งก็มีตัวอย่างที่น่าสนใจหลายอันเช่น แชทบอทสำหรับวางแผนการเกษียณ เตรียมเกษียณกับนายรวยทรัพย์ หรือแชทบอทสำหรับประเมินความเสี่ยงในการลงทุนผ่าน Line @Treasurist เป็นต้น

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

keywords: สวัสดี, สวัสดีจ้า, สวัสดีครับ, สวัสดีคะ, สวัสดีค่ะ สวัสดีค๊ะ, สวัสดีค่า
Answer: สวัสดีค่ะ มีอะไรให้ช่วย สามารถแจ้งมาได้เลยจ้า

จากตัวอย่างเป็นการกำหนดเงื่อนไขการทักทาย โดยแชทบอทของเราจะตอบว่า “สวัสดีค่ะ มีอะไรให้ช่วย สามารถแจ้งมาได้เลยจ้า” ในกรณีที่ผู้ใช้งานได้พิมพ์ keywords ตามที่กำหนดไว้ แต่ปัญหาก็คือเราไม่มีทางรู้ได้เลย ว่า keywords ที่กำหนดไปมันเพียงพอแล้วรึยัง และถ้าผู้ใช้งานพิมพ์เป็นภาษาอื่นเข้ามา บอทเราก็จะไม่เข้าใจ เพราะไม่มี keywords ดังกล่าวอยู่ใน Training list นั้นเอง

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

AI-Based approach

AI-Based approach หรือบางครั้งเราอาจจะเคยได้ยินจากชื่อ Intent based chatbot ซึ่งนี่คือแนวทางการพัฒนาแชทบอท ที่ให้ความสำคัญกับความตั้งใจ (Intent) และบริบท (Context) ซึ่งจำเป็นต้องใช้เทคโนโลยีอย่าง National Language Processing เข้ามาช่วย เพื่อให้แชทบอทเข้าใจว่า ผู้ใช้กำลังจะสื่อเรื่องอะไรออกมา เช่น

Input: ฉันหิว
Input: หิวแล้วววววว
Input: หิวแล้วโว้ยยยย
Input: I'm Hungry
Input:
I'm starving
Intent: หิว

จากตัวอย่างเราจะเห็นว่า ผู้ใช้งานต้องการจะสื่อว่า ตอนนี้หิว แต่สามารถส่ง Input ที่เป็น Natural Language เข้ามาได้หลายแบบมาก ทั้งภาษาไทย และอังกฤษ ซึ่งแชทบอทจะเข้าใจได้ ก็ต้องมีกระบวนการ National Language Processing เข้ามาทำความเข้าใจมันอีกที

ปัจจุบันการพัฒนาแชทบอทด้วยแนวทางนี้ ก็สามารถทำได้ง่ายมากขึ้น เพราะมีเครื่องมือที่ช่วยให้เราทำ National Language Processing เช่น LUIS, WIT.ai, Dialogflow และอื่นๆอีกมากมาย ซึ่ง platform ดังกล่าวก็ช่วยให้เราไม่ต้องไปปวดหัวกับการทำ Part-of-Speech (POS), Named Entity Recognition (NER), Morphological segmentation เหมือนเมื่อก่อน แต่อย่างไรก็ตาม ถ้าเราเข้าใจถึงแนวคิด และวิธีการทำงานของมัน ก็จะช่วยให้เราออกแบบแชทบอทได้ดีมากยิ่งขึ้น

Intent, Entity, Context ความสัมพันธ์ ที่แยกกันไม่ได้

อยากที่กล่าวไปในตอนต้นว่าการทำ AI Base approach จำเป็นต้องนำ National Language Processing เข้ามาช่วยในการประมวลผล เพื่อให้แชทบอทเข้าใจว่าผู้ใช้งานต้องการจะสื่ออะไรออกมา โดยปกติแล้วการพัฒนาอะไรเกี่ยวกับ Natural Language เราจำเป็นจะต้องจับ 3 สิ่งสำคัญนี้ให้ได้นั้นก็คือ

Intent หรือความตั้งใจ ที่ผู้ใช้งานต้องการจะสื่อ เช่นเราบอกไปว่า “หารองเท้า Adidas Pure Boost X สีขาว เบอร์ 7.5 ให้หน่อย” ซึ่งความตั้งใจก็คือหาสินค้าให้หน่อยว่ามันอยู่ไหน

Input: หารองเท้า Adidas Pure Boost X สีขาว เบอร์ 7.5 ให้หน่อย
Intent: หาสินค้า

Entity หรืออาจจะเรียกว่า metadata ของสิ่งที่เราสนใจ เช่น รองเท้า Adidas Pure Boost X สีขาว เบอร์ 7.5 สามารถแตก metadata (Component Entity) ออกมาได้เป็น

Input: รองเท้า Adidas Pure Boost X สีขาว เบอร์ 7.5
Entity: รายละเอียดสินค้า (product)
Component Entity:
- Type: รองเท้า
- Brand: Adidas
- Edition: Pure Boost X
- Color: สีขาว
- Size:7.5

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

User: ช่วยหารองเท้า Adidas Pure Boost X สีขาวให้หน่อย
Bot: ที่ห้าง Central World ชั้น 3 กับ Paragon ชั้น 4 มีขายนะ
User: เบอร์ 7.5 นะ
Bot: ห้าง Central World ชั้น 3 มีขายนะ

จากตัวอย่างการสนทนา จะเห็นว่าเราสามารถแยก Input ออกได้เป็น 2 ส่วนคือ การหารองเท้า และการระบุขนาด ซึ่งก็จะแตก Intent และ Entity ออกมาได้แนวนี้

Input: ช่วยหารองเท้า Adidas Pure Boost X สีขาวให้หน่อย
Intent: หาสินค้า
Entity: รายละเอียดสินค้า (product)
Component Entity:
- Type: รองเท้า
- Brand: Adidas
- Edition: Pure Boost X
- Color: สีขาว

แต่เมื่อผู้ใช้งานบอกเพิ่มว่าขนาด 7.5 นั้นคือ Follow up Intent ซึ่งเป็นการเติมเต็ม Component Entity ของรายละเอียดสินค้า ในส่วนของ Size เพิ่มเติมเลยทำให้ตัวแชทบอทมีข้อมูลเพิ่มขึ้น

Input: ช่วยหารองเท้า Adidas Pure Boost X สีขาวให้หน่อย
Intent: หาสินค้า
Entity: รายละเอียดสินค้า (product)
Component Entity:
- Type: รองเท้า
- Brand: Adidas
- Edition: Pure Boost X
- Color: สีขาว
- Size:7.5

จากนั้นก็จะเข้าสู่กระบวนการในการค้นหาข้อมูล และส่งคำตอบกลับไปให้ผู้ใช้งาน จากตัวอย่างนี้จะเห็นได้ว่า การทำแชทบอทด้วยแนวทางนี้ จะค่อนข้างซับซ้อน แต่ในมุมมองของผู้ใช้ จะให้ความรู้สึกเหมือนกำลังคุยกับมนุษย์จริงๆ ซึ่งนี่อาจจะเป็นสิ่งที่เราต้องแลกกับมันมา ส่วนถ้าใครอยากลองใช้งานแชทบอทที่เป็น AI Based approach ก็ลองใช้งานได้จาก SIRI, Google Assistant, Cortana ได้เลย

จากที่เล่ามาทั้งหมด จะเห็นได้ว่าการพัฒนาแชทบอทไม่ว่าจะเป็น Rule based approach หรือ AI based approach ก็จะมีข้อดี และข้อเสียที่แตกต่างกันไป ขึ้นอยู่กับรูปแบบของงานที่เราต้องการจะนำไปใช้ แต่อย่างไรก็ตามไม่ว่าจะเป็นการพัฒนาในแนวทางไหน สิ่งที่สำคัญที่สุดในการพัฒนาแชทบอทก็คือ การฝึกฝน หรือทำการ training อย่างสม่ำเสมอ เพื่อให้แชทบอทที่เราสร้างขึ้นมา มีความฉลาด และเข้าใจความต้องการที่หลากหลาย ของผู้ใช้งานได้มากขึ้น

--

--

Petch Kruapanich
readmoreth

Full time Developer, Part time writer, Vinyl lover