การสร้าง chatbot engine ด้วย Dialogflow นั้น มีความสะดวกตรงที่ เราสามารถใส่ตัวอย่างข้อความที่ผู้ใช้จะพิมพ์มาคุยกับ bot ลงใน training phrase ระบบจะเรียนรู้จากข้อมูลตัวอย่างนั้นและทำความเข้าใจประโยค ทำให้เมื่อผู้ใช้พิมพ์มาไม่ตรงกับ training phrase ระบบก็ยังสามารถเข้าใจความหมายและโต้ตอบได้อย่างถูกต้อง (อ่านเพิ่มเติม:
แนะนำ Dialogflow: Intent, Parameters และ Fulfillment)
ในบางกรณี ข้อมูลที่เราต้องการจากผู้ใช้ ไม่สามารถระบุลงไปใน training phrase ได้โดยตรง เนื่องจากเป็นข้อมูลที่ไม่ตายตัว จึงไม่สามารถใช้วิธีการยกตัวอย่างเพื่อให้ระบบเรียนรู้ได้ เช่น สำหรับ chatbot
แจกป๊อบคอร์น สมมติว่า เราจะขอให้ผู้ใช้ใส่เลขบัตรประจำตัวประชาชนมาเพื่อยืนยันตัวตนก่อน จึงจะแจกป๊อปคอร์นให้ จะเห็นว่า ค่าที่ผู้ใช่จะใส่เข้ามานั้นเป็นค่าเฉพาะของแต่ละคนและไม่ซ้ำกันเลย การจะระบุค่านี้ได้เราจะใช้ความสามารถของ regex เข้ามาช่วยครับ
regex หรือ
Regular Expression เป็นวิธีการระบุรูปแบบ (pattern) ของตัวอักษรที่เราต้องการค้นหา ซึ่งจะใช้ได้ดีกับการค้นหาข้อมูลที่มีรูปแบบ ในกรณีนี้เราจะใช้ regex เพื่อระบุรูปแบบของเลขบัตรประจำตัวประชาชนกันครับ
สิ่งที่เรารู้คือ เลขบัตรประจำตัวประชาชนมี 13 หลัก เบื้องต้นเราจะระบุ regex ง่ายๆ เพื่อดักจับตัวเลข 13 ตัว โดยเราสามารถทดสอบ regex กับข้อมูลได้ที่
https://regexr.com/ โดยการใช้งานจะมี 2 ส่วนคือ
- Expression: ส่วนที่ให้เราระบุ regex ที่จะใช้
- Text: ข้อมูลสำหรับใช้ทดสอบ regex หาก regex ที่ระบุใน expression ตรงกับส่วนไหน ก็จะขึ้นแถบสีฟ้าคลุมข้อมูลส่วนนั้นให้
 |
regex ตัวแรก ใช้ได้กับตัวเลขติดกัน 13 ตัว |
 |
regex ตัวที่สอบ ใช้ได้กับตัวเลขติดกัน 13 ตัว คั่นด้วย "-" |
 |
regex ตัวที่สอบ ใช้ได้กับตัวเลขติดกัน 13 ตัว คั่นด้วย ช่องว่าง |
เมื่อได้ regex ที่ต้องการแล้ว (จากตัวอย่างระบุไว้ 3 รูปแบบ ซึ่งยังใช้งานได้ไม่ดีพอ แต่เอามาให้ดูเพื่อให้เห็นภาพ) ให้เราไปกำหนด entities บน Dialogflow และเลือก Regexg entity ไว้ด้วย
 |
สร้าง Entities บน Dialogflow เลือก Regex entity และระบุ regex ที่จะใช้ |
ต่อมา ให้เข้าไปที่ training phrase ใน intent ที่เราต้องการ และใส่ตัวอย่างข้อมูลเลขบัตรประชาชน และกำหนดเป็น parameter ชื่อเดียวกับ entities ที่เราตั้งไว้
 |
ใส่ตัวอย่างข้อมูลใน Training phrases |
 |
ระบุให้เป็น parameter ตามที่ตั้ง entity ไว้ |
 |
สามารถดึง parameter ไปใช้งานต่อได้ |
เมื่อผู้ใช้พิมพ์ข้อมูลตรงกับรูปแบบของ regex ระบบจะสามารถดึงค่านั้นๆ มาใส่ parameter และนำไปใช้งานต่อได้ เช่น อาจจะนำค่าไปตรวจสอบความถูกต้องก่อน หรือนำไปบันทึกลงในฐานข้อมูลเป็นต้น
 |
สิ่งที่ผู้ใช้พิมพ์มาไม่ได้อยู่ใน training phrase แต่ตรงกับ regex ที่กำหนดไว้ ทำให้ระบบสามารถตรวจจับข้อมูลนั้นได้ |
ความคิดเห็น
แสดงความคิดเห็น