แนะนำ Dialogflow: การใช้ regex เพื่อดึงข้อมูลด้วย pattern

การสร้าง 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 ที่กำหนดไว้ ทำให้ระบบสามารถตรวจจับข้อมูลนั้นได้

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเรียกใช้งาน Google Apps Script

ลดเวลาการเรียก API ใน Apps Script ด้วย fecthAll

ออกแบบระบบให้คุยข้าม module กันได้ ด้วย Pub/Sub