Chat Bot using Dialogflow & Introduction to NLU

Teera Suri
Teera Suri in MFEC
Mar 14 · 9 min read

Natural Language Processing (NLP) : เป็นสาขาย่อยใน artificial intelligent (AI) ที่เกี่ยวข้องกับการสื่อสารกันระหว่างคอมพิวเตอร์กับมนุษย์โดยใช้ภาษาธรรมชาติ(ของมนุษย์)หรือภาษาที่ใช้ปรกติในชีวิตประจำวัน โดยเป็นการทำให้คอมพิวเตอร์สามารถทำงานกับข้อมูลปริมาณมาก ๆ ที่เป็นภาษาธรรมชาติ

Natural Language Understanding (NLU): เป็นเรื่องย่อยจาก Natural-Language Processing (NLP) และอยู่ภายใต้ AI เช่นกัน โดยเน้นการทำงานที่คอมพิวเตอร์สามารถเข้าใจข้อความจากมนุษย์ได้

หัวข้อหลักในการทำ NLP ได้แก่

  • Syntactic Parsing: การวิเคราะห์โครงสร้างประโยค (อะไรขยายอะไร อะไรคือ N, V หลัก ฯลฯ)
  • Part of Speech (POS): การจำแนกชนิด/หน้าที่ของคำ เช่น ที่นี่เป็นที่ที่เขาและเธอได้พบกัน (ที่-คำนาม/บุพบท) โดยจะมีการทำงานที่ซับซ้อนกว่า Syntactic parsing
  • Name Entity Recognition (NER): การรู้จำชื่อเฉพาะต่างๆ เช่น คน, สถานที่, องค์กร ฯลฯ
  • Co-reference Resolution: การตรวจสอบว่าสรรพนามที่ใช้นั้นอ้างอิงถึงใครหรืออะไรใน โดยดูจากประโยคหรือส่วนก่อนหน้านั้น เช่น เขาชอบไปเที่ยวเชียงใหม่ เขาไปที่นั่นเป็นประจำทุกปี ที่นั่นหมายถึง เชียงใหม่
  • Machine Translation: การแปลภาษาโดยอัตโนมัติ

หัวข้อหลักของ NLU ได้แก่

  • Semantic Parsing: การดึงใจความสำคัญออกมาจากส่วนต่างๆของประโยค เช่น เที่ยวบินจากไหนไปไหนบินวันไหน ฯลฯ
  • Paraphrase: เขียนใหม่จากรูปประโยคหรือคำอื่น
  • Naturanl Language (NL) Interface: การจัดการกับรูปแบบประโยคที่พูดแบบธรรมชาติ (ที่มีโครงสร้างหลากหลาย)
  • Question and Answering (QA): ถามตอบตามข้อมูลที่ให้ไว้ รวมถึงพวก FAQ
  • Sentiment Analysis: การจำแนกอารมณ์ หรือการแสดงความเห็น ว่าเป็น +/-
  • Dialogue Agent: การคุยโต้ตอบได้
Scope of NLP and NLU [credit: https://www.ekino.com/articles/introduction-to-nlp-part-i]

NLP and Machine Learning

NLP and Scope in Machine Learning [credit: https://sonix.ai/articles/difference-between-artificial-intelligence-machine-learning-and-natural-language-processing]

Google Natural Language API

สามารถทดลองการใช้งานได้ที่ Website: https://cloud.google.com/natural-language/

ตัวอย่าง ทดลองนำข้อความต่อไปนี้ไปทำการวิเคระห์ด้วย Google NL API

The Pollution Control Department has warned the level of hazardous dust particles will remain high in greater Bangkok on Monday and Tuesday, trapped by stagnant air, and called for strict enforcement of dust and smoke regulations.

จะได้ผลลัพธ์ดังนี้

การวิเคราะห์ Entities (Google NL API)

การวิเคราะห์ Sentiment (Google NL API)

การวิเคราะห์ Syntax (Google NL API)

การวิเคราะห์ Categories (Google NL API)

Word2Vec

ตัวอย่างของการวางคำใน Vector Space

ต.ย. ของคำที่ถูกจัดวางใน Vector Space หลังที่มีการ Train แล้ว [credit: https://www.tensorflow.org/tutorials/representation/word2vec]

จากคุณสมบัติที่แทนที่คำด้วยค่าที่เป็น Vector ทำให้สามารถนำไปทำเป็น Operation ได้ ตัวอย่างเช่น King - Man + Woman จะมีค่าไปตกใกล้กับคำว่า Queen เป็นต้น (โดยคำว่า Man-Woman และ King-Queen จะมีความสัมพันธ์ของเพศชาย-หญิง) หรือ จากตัวอย่างอื่น ๆ เช่น ความสัมพันธ์ของ Verb Tense หรือ ประเทศ-เมืองหลวง ตามภาพเป็นต้น

Word2Vec with Gensim

  • การหาคำที่ใกล้เคียงกับคำว่า ‘แมว’ จะได้เป็น ‘สุนัข’ (และมีคำใกล้เคียงอื่น ๆ ตามลำดับ)
  • การหาคำที่เกี่ยวข้องมากที่สุดกับคำว่า ‘เฝ้า’ จะได้คำว่า ‘หมา’ (จาก list ของคำที่ให้เลือกที่มี ‘หมา’, ‘หนู’, ‘หมู’, ‘ปากกา’, ‘รถยนต์’, ‘กทม.’, ‘เมืองหลวง’, ‘ไทย’)
  • การหาคำที่แตกต่างจากกลุ่ม(จาก list ของคำที่ให้เลือกที่มี ‘เหนือ’, ‘กลาง’, ‘บิน’, ‘ใต้’) จะได้คำว่า ‘บิน’
  • การหาคำที่ใกล้เคียงจากการนำคำว่า ‘ราชา’ ลบ ‘หญิง’ บวก ‘ชาย’ จะได้คำว่า ‘ราชินี’
ต.ย. การทดสอบการใช้งาน Gensim ภาษาไทยหลังจากที่ Learn ข้อมูลจาก Wikipedia

นอกจาก Gensim แล้ว ปัจจุบันยังมี Library อีกหลายตัวที่สามารถมาทำเรื่อง Word2Vec ได้อีก เช่น TensorFlow, Stanford University’s GloVe, AllenNLP’s Elmo, fastText, Indra, and Deeplearning4j เป็นต้น

Sentiment Classification

ทางทีม RD ได้ทดลองทำการสร้างระบบการวิเคราะห์ Sentiment ด้วย Gensim โดยเรียนรู้จากข้อมูลการ Review การเข้าพักในโรงแรม ร่วมกับการให้คะแนนความคล้ายของคำจาก Gensim (ทั้งนี้เราได้ทดลองเทคนิคอื่นด้วย) โดยผลลัพธ์หลังจากการเรียนรู้ได้ทำการวิเคราะห์ข้อความที่ให้ไปเป็นดังรูป (ข้อความบรรทัดบน, ผลบรรทัดล่าง)

ต.ย.ผลลัพธ์การวิเคราะห์ Sentiment โดย 2 คือ Positive (+) และ 0 คือ Negative (-)

จากประสบการณ์ในการทำงานในการทำ Sentiment Classification มีข้อสังเกตดังนี้

  • ข้อมูลที่ใช้ในการ train เราสามารถรวบรวมมาจาก Internet ได้ (ด้วยเทคนิค Crawling) แต่ข้อมูลที่ได้ควรเป็นข้อมูลที่มีการกำกับหรือจำแนกประเภทแล้ว ไม่เช่นนั้นจะต้องนำมาทำการจำแนกเองด้วยคนอีกครั้ง (เพื่อนำไป train ระบบ)
  • ข้อมูลที่จะนำไป train ควรมีการ Cleaning ข้อมูลที่ไม่ได้บอก Sentiment จริง ๆ ควรโดนนำออก เช่น มีข้อมูลบอกว่า ‘เตียง’ เป็นข้อดีหรือข้อเสีย ซึ่งจริงๆ แล้ว คำนี้เป็นข้อมูลที่ไม่สามารถบอกได้ว่าเป็น บวก หรือ ลบ (เมื่อไม่มีคำขยายเพิ่มเติม) หรือ กรณีที่มีข้อความปะปนกัน เช่น มีการใส่ข้อความรีวิวทั้งข้อดีและข้อเสียรวมกันมา
  • คำบางคำอาจจะสามารถใช้เป็นคำแสดง Sentiment ได้เฉพาะแค่บางเรื่องเท่านั้น แต่สำหรับเรื่องอื่น ๆ จะไม่สามารถใช้ได้

Thai Language and NLP Problems

สำหรับปัญหาที่พบเป็นประจำได้แก่

  • ความแตกต่างทางภาษา
  • การตัดคำและตัดประโยค
  • ความซับซ้อนของวลีหรือประโยค

Chat Bot คือ อะไร ?

Dialogflow

  • Google ซื้อมาในเดือน กันยายน ปี 2016
  • ใช้เทคนิคการสื่อสารระหว่าง Human–Computer ที่ใช้ Natural Language
  • ปัจจุบันรองรับภาษาต่าง ๆ 20 ภาษา รวมถึง ภาษาไทย
  • สามารถใช้งานแบบ Multi-languages สำหรับ Bot/Agent ตัวเดียวกันได้ (รองรับการทำงาน 15 ภาษา)
  • สามารถต่อเข้ากับ Chat program ต่าง ๆ ได้ เช่น Facebook, Line, etc.
  • สามารถใช้งานได้ทั้งแบบ Text และ Speech
  • นอกจากการใช้งานหลักเป็นการสร้าง Chat Bot แล้ว ภายในยังมีเครื่องมือในการทำ NLU ระดับเบื้องต้นโดยทั่วไปอยู่ด้วย แต่สำหรับบางความสามารถปัจจุบันจะใช้งานได้เฉพาะภาษาอังกฤษ เช่น การวิเคราะห์ Sentiment (+/-)

Dialogflow Intents and Training Phrases

สำหรับการสร้าง Intent ควรพิจารณาในสิ่งต่อไปนี้

  • Intent ต่าง ๆ ควรมีความ Unique ไม่ทับซ้อนกัน
  • Training Phrases ที่ใช้ในแต่ละ Intent ต้องมีเพียงพอครอบคลุมการใช้งานทั่วไปแต่ไม่ควรเหมือนหรือใกล้เคียงกับ Intent อื่น (ยกเว้นมีการควบคุม Flow การทำงานไว้แล้ว)
  • การทำงานจากข้อความในทำนองเดียวกันควรทำด้วย Intent เดียวกัน แต่ถ้ามีรายละเอียดปลีกย่อยแตกต่างกันอาจจะแยกออกมาเป็นอีก Intent หรือทำเป็น Intent ย่อยที่ทำงานต่อเนื่องจาก Intent หลักเดียวกัน ฯลฯ
ต.ย. Intent สำหรับคำถามเกี่ยวกับการถามถึงสินค้าที่ขาย โดยใช้ Training Phrase แบบต่าง ๆ

Dialogflow Entities

ต.ย. การกำหนดประเภทเครื่องดื่มที่มีจำหน่าย และ Synonym ของเครื่องดื่มแต่ละประเภท

โดย Entities ที่ถูกใช้ใน Intent ต่าง ๆ จะปรากฎเป็น Parameter สำหรับ Intent นั้น ๆ

การกำหนด Entities ต่าง ๆ มีลักษณะดังนี้

  • ไม่ควรมี Intent ซ้ำซ้อนกัน
  • ควรมีการจัดกลุ่มรวมประเภทเดียวกันที่ใช้แบบเดียวกันไว้ด้วยกัน
  • Entities จะมีค่าที่ใช้เป็นค่าหลัก ซึ่ง Synonym จะถูกแทนด้วยค่าหลัก ค่าหลักจึงควรเป็นค่ามาตรฐานที่เราเลือกใช้
  • Entities สามารถทำแบบ Expansion โดยให้ระบบเรียนรู้ค่าใหม่เพิ่มเติมได้ แต่ควรแบบ Expansion นี้จำกัด (และใช้งานจำกัด)

Dialogflow Automatic Parameter

  • User Entities: User กำหนดเองในส่วนของ Entities (แสดงด้วยชื่อที่ขึ้นต้นด้วยเครื่องหมาย @ และต่อด้วยชื่อที่เราตั้งไว้ใน Entity นั้น ๆ)
  • System Entities: เป็นค่าที่มีอยู่แล้วในระบบ เช่น สี, วัน, เวลา, จำนวน, ฯลฯ (แสดงด้วยชื่อที่ขึ้นต้นด้วย @sys. และต่อด้วยชื่อประเภท Entity นั้น)
ต.ย. การสร้าง Parameter โดยอัตโนมัติ เมื่อมีการตรวจพบ Entities ต่าง ๆ

Dialogflow Action and Parameter

  • Required: ระบุว่าเป็น parameter ที่ user ต้องให้ค่าเสมอหรือไม่ (เมื่อวิเคราะห์แล้วว่าเข้าข่าย Intent นั้น ๆ) กรณีที่ user จำเป็นต้องให้ค่านี้ ระบบจะใช้สิ่งที่เรียกว่า Slot Filling ในการวนลูปให้ user ให้ข้อมูลใหม่จนกว่าจะได้ค่าที่เป็น required parameter ครบทุกอัน โดยแต่ละอันจะมีคำถามสำหรับให้ใส่ค่านั้น ๆ
  • Parameter Name: เป็นชื่อที่ตั้งขึ้นใน Intent นั้น (Auto ตามชื่อ entity และถ้ามีการใช้ entity เดียวกันมากกว่า 1 parameter จะมีเลข running ให้) สามารถเปลี่ยนเป็นชื่อที่ต้องการให้สื่อความหมายได้ และใช้อ้างอิงในการทำงานที่เกี่ยวกับ Intent นี้ โดยชื่ออ้างอิงจะเป็นตามค่าใส่ field Value (มีเครื่องหมาย $ นำหน้า)
  • Entity: เป็นชื่อประเภทของ Entity ของ Parameter นั้น กรณีที่ระบบตรวจจับ Entity ได้แบบ Auto จะใส่เป็น Entity ที่คิดว่าใช่ ในบางกรณีอาจจะผิด(เมื่อมีการใช้ซ้ำซ้อน) หรือ จริง ๆ แล้ว เราไม่ต้องการให้เป็น parameter ก็สามารถเอาออกได้
  • Is List: ใช้ระบุกรณีที่สามารถรับค่า parameter นั้น ๆ ซ้ำได้มากกว่า 1 ครั้ง โดยระบุต่อเนื่องกันในข้อความ เช่น ต้องการเสื้อ สีเขียว สีเหลือง และสีแดง เมื่อกำหนดให้เป็น Is List ค่าสีทั้งสามจะถูกเก็บเป็น list อยู่ภายใน parameter เดียวกัน ทั้งนี้การสร้าง parameter ให้แบบ auto เมื่อระบบพบ entity จะใส่แยกคนละ parameter เสมอ ถ้าต้องการรวมกันต้องลบตัวอื่น ๆ ออก และใช้ตัวเดียว
  • Prompts: เป็นข้อความที่ต้องการให้ระบบถาม กรณีที่เป็น Required parameter แล้ว user ไม่ได้ให้ค่ามา โดยปรกติจะมีค่า Default อัตโนมัติ เมื่อเลือกเป็น Required แล้ว แต่เราสามารถแก้ไขข้อความได้
ต.ย.การกำหนดค่าของ Parameter ต่าง ๆ ใน Intent

Dialogflow Follow-up Intent

  • Intent ตัวลูกจะอยู่ภายใต้ Intent ตัวแม่
  • ต้องผ่านเงื่อนไขการเข้าที่ตัวแม่ก่อนเสมอ
  • Intent Follow-up สามารถเลือกสร้างเป็นแบบที่กำหนดข้อความ Training Phrase สำเร็จรูปไว้อยู่แล้ว(จำนวนหนึ่ง) เช่น yes, no เพื่อตอบรับหรือปฏิเสธ (สามารถแก้ไขหรือใส่เพิ่มหรือเอาออกได้)
  • ผู้ใช้ยังสามารถสร้างแบบที่เป็น custom หรือ สร้างแบบที่เป็น fallback เพื่อรองรับการทำงานของข้อความที่ไม่ได้เตรียม Intent ไว้รองรับ
[credit: https://dialogflow.com/docs/contexts/follow-up-intents]

Dialogflow Input and Output Contexts

  • เรากำหนดให้มี Output Context จาก Intent ใด ๆ จะสามารถใช้งานข้อมูลส่วนนั้นต่อเนื่องไปยัง Intent อื่น ๆ ได้
  • ใช้ Input Context เป็นเหมือน Filter โดยจะเข้า Intent นั้น ๆ ก็ต่อเมื่อมี Context ตามที่กำหนดมาเท่านั้น (อย่างกรณีของ Follow-up, Input Context ของตัวลูกจะถูกกำหนดโดยอัตโนมัติจาก Follow-up context ที่สร้างอัตโนมัติจากตัวแม่ในฝั่ง output
  • สามารถกำหนด Lifespan ของ context ว่าต้องการให้เก็บต่อเนื่องไปกี่ข้อความหลังจากนั้น (ถ้ากำหนดเป็น 0 คือการลบทิ้งหลังผ่านออกไปแล้ว)

Dialogflow Fulfillment and Webhook

  • ใช้ในการทำงานกับการใส่ค่าแบบ Slot Filling ที่มีความซับซ้อนกว่าปรกติ เช่น เพิ่มเงื่อนไขการจัดการค่า Entity ที่มี type เดียวกันแตกต่างกัน
  • ทั้งนี้การใช้งานพวก Webhook จะมีข้อจำกัดหลายอย่าง แต่เราสามารถจัดการพวกนี้ภายนอก Dialogflow ได้ ขึ้นอยู่กับการออกแบบการทำงานว่าให้ Dialogflow จัดการส่วนใดบ้าง และจะเขียน code อย่างไรสำหรับจัดการกับส่วนที่เหลือ
Enable webhook in Intent
Assign Function to handle intents
ต.ย. Code ที่ตอบกลับข้อความต่างกัน จากIntent เดียวกันที่มี Parameter (Entity) เดียวกัน แต่มีค่าต่างกัน

Dialogflow History

สำหรับการทำงานที่ไม่เข้า Intent ตามปรกติจะแสดงด้วยสีใน 2 ลักษณะดังนี้

  • สีเหลือง: ในข้อความนั้นจะมีข้อความที่ไม่สามารถระบุได้ว่าเป็น Intent ใด ๆ และตกไปเป็น Fallback อยู่ (Not match any intent) ถ้าเกิดจากการตั้งใจที่ไม่รองรับข้อความเหล่านั้นอยู่แล้วสามารถข้ามไปได้ แต่บางกรณีเกิดจากการมี Training Phrase ที่ไม่ครอบคลุมหรือใส่ค่าไว้ผิด ทำให้ไม่สามารถรองรับข้อความที่ต้องการให้ทำงานได้
  • สีแดง: มี Error เกิดขึ้นในระบบเช่น Webhook call failed เป็นต้น ควรตรวจสอบและแก้ไข เพราะปรกติเกิดจากการทำงานที่ไม่ถูกต้อง
Warning and Error in History

Dialogflow Training from Usage

  • เพิ่ม Training Phrase โดยการเลือกข้อความที่ไปตกผิด Intent (Click ที่ชื่อ Intent ที่ผิดเพื่อเปลี่ยน) หรือไม่เข้า Intent ใด ๆ ให้เป็นข้อความสำหรับ Intent ที่ต้องการ (Click ตรง Click to Assign)
  • แก้ไข Parameter ที่ detect ผิด ให้เป็นตัวที่ถูกต้องหรือเอาออก (แก้ไข Parameter ตรงที่มีการ Highlight เป็นสีต่าง ๆ)
ทำการแก้ไขการทำงานของ Dialogflow กับข้อความที่เคยได้รับ จะเป็นการ Training ให้กับระบบ

Dialogflow Knowledge

จากการทดลองพบว่า มีความยืดยุ่นในการถามตอบค่อนข้างต่ำ (เช่น ใน Q&A แต่ละรายการต้องถามตอบเรื่องเดียว) และปัจจุบันจะรองรับการทำงานเฉพาะภาษาอังกฤษเท่านั้น

Dialogflow Integration

Dialogflow with Google Assistant

  • ต้องมีการกำหนดชื่อเรียก (เหมือนกับเป็นชื่อ App) ซึ่งจะต้องแตกต่างจากชื่อที่มีอยู่แล้วใน Google Assistant และถ้าเราเคยใช้ชื่อใดไปแล้ว จะไม่สามารถใช้ชื่อเดิมซ้ำได้อีก
  • การเรียกใช้งานจาก Google Assistant จะใช้คำว่า ‘Talk to’ (สำหรับภาษาอังกฤษ) หรือ ‘คุยกับ’ (สำหรับภาษาไทย) แล้วตามด้วยชื่อ Agent นั้น
  • รองรับการทำงานทั้งแบบ Text และ Speech (Speech-to-Text and Text-to-Speech)
  • เนื่องจากใน Google Assistant จะมีคำหรือวลีที่เป็น Reserved Words ที่กำหนดไว้ แม้ขณะใช้งานจะอยู่ภายใต้ Agent(หรือ Bot) ของเราที่กำลังทำงานอยู่ เมื่อได้รับ Reserved Words ตัว Google Assistant จะไปทำงานแทน เช่น ‘ยกเลิก’ จะเป็นการออกจาก Agent นั้น ๆ (จึงไม่สามารถนำไปใช้เป็น Training Phrase สำหรับ Intent ใด ๆ ได้)
  • การใช้งานผ่าน Google Assistant จำสามารถกำหนด ภาษา และ ท้องถิ่นที่ใช้งานได้ (เพื่อกำหนดให้ใช้ได้เฉพาะผู้ใช้ในประเทศที่กำหนด)
  • สามารถกำหนดให้มี Tester เฉพาะบุคคลได้ (Alpha Version)

Create App in Facebook Developer

ต.ย. Facebook App

Dialogflow Integration with Facebook Messenger

ต.ย.การเชื่อมต่อฝั่ง Facebook App
ค่าต่าง ๆ ที่ต้องใส่หรือนำไปใส่ที่ Facebook App

Submission for Test in Facebook

Dialogflow Test on Facebook

ทั้งนี้การใช้งานกับ Facebook Messenger จะทำงานได้เฉพาะ Text Mode เท่านั้น

Dialogflow Problems with Exact Words (Text)

Agent (Bot) ไม่รู้จักคำว่า มอคคา เพราะมีการสอนเฉพาะคำว่า มอคค่า เอาไว้

ทั้งนี้เราสามารถแก้ไขปัญหาเหล่านี้ได้หลายวิธีเช่น การเพิ่มตัวอย่างประโยค, การเพิ่ม Synonym ของ Entity, ฯลฯ ซึ่งขึ้นอยู่กับว่าเราต้องการจัดการกับการแก้ไขปัญหาตรงนี้อย่างไรบ้าง

ส่วนการทำงานแบบ Speech มีข้อดีตรงที่ระบบจะผ่านขั้นตอนของ Speech-to-Text ซึ่งจะพยายามหาคำใกล้เคียงกับเสียงนั้นให้ก่อนแล้วรอบหนึ่ง (แต่ในอีกมุมหนึ่งถ้าเสียงนั้นไม่ชัดเจนอาจจะได้ผลลัพธ์เป็นอย่างอื่นแทนก็ได้)

Using Dialogflow with Python

นอกเหนือจาก Python แล้ว ยังมี Library สำหรับภาษาอื่น ๆ ตามรายละเอียดใน link https://dialogflow.com/docs/sdks

เมื่อมีการเรียกใช้งานผ่าน Python จะพบว่าเราสามารถจัดการได้ในระดับที่ลึกขึ้นด้วย การ coding ที่ Python เอง จากตัวอย่างของ Response ของ Intent จะมีทั้ง confidence (ระดับความมั่นใจ) ค่าของ parameter โดยละเอียด และอื่น ๆ ตามภาพ เราสามารถใช้ค่าต่าง ๆ เหล่านี้ในการตอบกลับแบบมีเงื่อนไขที่สามารถเขียนได้ง่ายและซับซ้อนกว่าการใช้ Webhook ที่อยู่ใน Dialogflow เอง

ต.ย.ค่าต่าง ๆ ที่อ่านได้จาก Response ของ Python เพื่อนำไปประยุกต์ใช้เพิ่ม
ต.ย.รายละเอียดของ Response และ Context ของการตอบกลับ Intent

Dialogflow Pricing

ค่าบริการการใช้งาน (ตัดมาเป็นบางส่วน)
ข้อจำกัดของการใช้งาน (ตัดมาเป็นบางส่วน)

มุมมองต่อ Dialogflow

ข้อดี

  • เป็นเครื่องมือในการทำ Chat Bot ได้ดี ทั้ง Text และ Speech
  • เริ่มต้นใช้งานค่อนข้างง่าย
  • มีความยืดยุ่นของการสร้าง Bot (Agent) จากความสามารถของ NLU
  • มี NLU ภายในที่สามารถให้ข้อมูลเพิ่มเติมได้ ไม่ได้เป็นการทำแบบ Exact Word อย่างเดียว
  • มีการทำงานของ Slot Filling ที่ช่วยในการเก็บ Parameter ให้ครบ
  • การให้ตัวอย่างประโยคที่ทำได้ง่าย
  • สามารถมี Response ที่หลากหลายใน Intent เดียวกัน และรองรับ Parameter แบบต่าง ๆ กันได้
  • สามารถรองรับ Parameter แบบ List ได้
  • มี System Entity ที่ระบบเตรียมไว้แล้ว
  • มีความสามารถในการทำ Intent Classification ที่ดี
  • สามารถ Export Agent แล้วนำไป Import เพิ่มแก้ไขจากของเดิมได้
  • รองรับการเชื่อมต่อกับ Chat Program ที่หลากหลาย

ข้อจำกัด

  • การสร้าง Flow ที่ซับซ้อนทำได้ค่อนข้างยาก
  • ไม่สามารถ Reuse Intent หรือ Entity ได้ง่าย
  • ความคลุมเคลือของการเข้าสู่ Intent ต่าง ๆ
  • System Entity หลายตัว มีความคลุมเครือและยุ่งยากในการใช้งาน (จากการทดลองกับภาษาไทย)
  • ปัจจุบัน รองรับการนำเข้าเสียง (Speech-to-Text) แต่ไม่ได้รองรับการ Synthesis เสียง (Text-to-Speech) ที่ผ่าน Dialogflow หรือ Google API (แต่สามารถใช้งานผ่าน Google Assistant ได้) : ทาง Google แจ้งว่าจะมีการเปิดให้ใช้ในส่วนของ Text-to-Speech API
  • ข้อจำกัดของการใช้งานอาจจะอยู่ที่ระบบที่ทำการ Integrate ด้วย ซึ่งจำเป็นต้องศึกษาข้อจำกัดเหล่านั้นให้ดีก่อนใช้งานจริง (และบางครั้งไม่ได้มีเอกสารคู่มือเฉพาะ โดยเฉพาะการใช้งานในภาษาไทย)
  • Features บางอย่างจำกัดการใช้งานเฉพาะภาษาอังกฤษเท่านั้น

โดยรวม Dialogflow เป็นเครื่องมือที่ดีตัวหนึ่งที่สามารถนำมาใช้งานในการสร้าง Chat Bot หรือเป็นเครื่องมือในการทำงานด้าน NLU ได้ดี

แต่การสร้าง Bot ที่ดีได้ จำเป็นต้องการความสามารถทั้งทางด้านเทคนิค, ความเข้าใจในการสื่อสาร, และความมีศิลปะในการสร้าง Character ที่ต้องการ เปรียบเทียบ Diglogflow เป็นกล้องที่สามารถใช้ถ่ายได้ภาพได้ดีในระดับหนึ่ง แต่ภาพถ่ายที่ได้จะดีหรือไม่ช่างภาพย่อมต้องเข้าใจถึงการใช้งานกล้องและเทคนิคการรังสรรค์ภาพให้ได้ตามที่ต้องการ ซึ่งผู้ที่พัฒนา Chat Bot จำเป็นต้องพัฒนาทักษะเหล่านี้เพื่อให้ได้ Chat Bot ที่ดีด้วย

Qandafe

ผู้ที่สนใจเพิ่มเติมสำหรับ Qandafe สามารถติดต่อกับทางทีม MLab ได้โดยตรง

Dialogflow Experience

  • Using Dialogflow in IVR System: ใช้ Dialogflow ในระบบตอบรับอัตโนมัติทางโทรศัพท์ (แบบ Callcenter) ที่รับข้อมูลทั้งเสียงและการกดปุ่ม
  • Multiple Dialogflow Agent (Bot) in one application: สร้าง Application ที่ควบคุมการทำงานของ Agent (Bot) หลาย ๆ ตัว โดนมีการสลับการทำงานโดยขึ้นอยู่กับเนื้อหาการสนทนา
  • Speech and Text Chat Bot: ใช้ Dialgoflow ทั้งใน Speech (รับเป็นเสียง) และ Text (รับเป็นข้อความตัวหนังสือ) นอกจากนี้เราสามารถใช้เสียงจากการ Synthesis หรือ เสียงที่อัดในการตอบรับก็ได้
  • Intent Classification such as Dialog Checking: ใช้ในการวิเคราะห์เทียบรูปแบบข้อความ เช่น ตรวจสอบว่าพนักงาน Call center ได้ทำการแนะนำตัวหรือไม่ มีการแนะนำ Promotion หรือไม่ หรือ มีการพูดอะไรที่ต้องห้ามหรือไม่
  • Product Specification Analysis for Intent Creation: ทางเราได้พัฒนาเครื่องมือในการสร้าง Intent (และ Entity) จากข้อมูลของสินค้าแบบอัตโนมัติ และทางมีประสบการณ์ในการวิเคราะห์เพื่อสร้าง Intent จากคุณสมบัติของสินค้าหรือบริการที่ต้องการทำ Bot

สำหรับผู้ที่มีคำถามเพิ่มเติมเกี่ยวกับการใช้งานของ Dialogflow หรือต้องการดูตัว Demo สำหรับเรื่อง Dialogflow สามารถติดต่อเพิ่มเติมมากับทางทีม RD ได้ครับ

Weiter By Mr. Teera — MFEC PEPLE

MFEC

Develop new business value

Teera Suri

Written by

MFEC

MFEC

Develop new business value