สวัสดีอีกครั้งครับ สำหรับรอบก่อนที่บอกว่าเราจะสร้าง Chatbot กันรอบที่แล้วผมอธิบายวิธีดาวน์โหลดโมดูลที่เราจะใช้มาแล้ว(ผมเขียนเองทั้งหมดครับ ถ้าใครสงสัยสามารถสอบถามได้) วันนี้เราจะมาใช้มันกันครับ

มาสร้าง Chatbot กัน!

ใครยังไม่ได้อ่านเข้าไปอ่านได้ที่นี่เลยครับ

http://destyy.com/qANaBR

สำหรับสิ่งที่เราจะทำกันในวันนี้คือมาทำ Intent Parser เพื่อที่จะไปใช้ใน Chatbot ของเรากัน

โอเค! เรามาวางแผนกันก่อนว่า AI ของเราควรจะทำอะไรได้บ้าง อย่างแรกเลยที่ผมต้องการคืออยากให้มันทักทายเราได้ครับ อย่างที่สองบางทีเวลาเราอยากทราบเวลาเราก็อยากที่จะถามใครซักคน(ถ้าเราไม่มีนาฬิกา) ดังนั้นไหนๆเราก็ก็จะสร้าง Chatbot ทำให้มันบอกเวลาได้ด้วยน่าจะเจ๋ง! (555) แล้วถ้าเราอยากจะเลิกคุยกับมัน เราอาจจะบอกลามันก็ได้

สรุปคือเราต้องการให้ Chatbot ของเราทำได้ 3 อย่างครับ

  • ทักทาย
  • บอกเวลา
  • บอกลาก่อน

ถ้าท่านอื่นๆอยากเพิ่มความสามารถให้มันก็ไม่อยากเลยครับ แต่ว่าเพื่อไม่ให้มันยาวมากเกินไป ผมจะขอรวบมาแค่นี้ก่อนครับ

เริ่มแรกการทักทาย ถ้านึกถึงการทักทายคำแรกที่เราจะพูดคือ Hello, Hi หรือ How are you? ประมาณนี้ครับ การที่จะบอก Chatbot ของเราให้สวัสดีได้ไง มีคำที่บ่งบอกก็คือ Hello หรือ Hi ประมาณนี้ครับ เพราะฉะนั้น Keyword ของเราคือ Hello กับ Hi เป็นคำที่เราต้องการ

เรื่มสร้าง IntentParser เลยครับ

สร้างไฟล์ขึ้นมาชื่ออะไรก็ได้ในที่นี้ผมตั้งชื่อว่า hello_intent.py แล้วเก็บไว้ที่ Desktop ครับ

แค่นี้ก็ได้ Intent Parser มาแล้ว (http://destyy.com/qANapn)

ทำเสร็จแล้วก็มาลองใช้กันซักหน่อย

ผลลัพท์ที่ได้

เสร็จไปหนึ่งครับ อย่างต่อไปที่เราต้องการคือให้มันบอกเวลาได้ แต่ว่ามันจะเป็นอันที่ยากสุดผมเลยขอยกไปอันสุดท้ายครับ เพราะฉะนั้นผมขอสร้าง intent สำหรับบอกลาก่อน

สำหรับการบอกลาก็เหมือนกับสวัสดีครับ Keyword ของเราคือคำว่า Bye (ผมคิดออกคำเดียวแฮะ ใครคิดออกเพิ่มก็แนะนำได้นะครับ) มาทำเลยดีกว่าครับ

ผมสร้างไฟล์ใหม่ชื่อ bye_intent.py วางไว้ที่ Desktop เหมือนเดิมแล้วแก้จากเดิมแค่นิดหน่อยครับ

เปลี่ยนแค่นิดหน่อยเอง (http://destyy.com/qANsri)

ลองใช้กันซักนิด

ก็พอใช้ได้อยู่นะ

โอเค มาถึงอันยากสุดแล้วครับ ที่บอกว่ายากสุดเนี่ยไม่ใช่เพราะมันยากเลยนะครับ แต่เพราะว่ามันมีสิ่งนึงที่เพิ่มขึ้นมาครับ

เวลาเราบอกเวลาเราไม่ได้อยากรู้แค่ในรูปแบบเดียว (format เดียว) แต่อาจจะอยากรู้ว่าวันนี้วันอะไร ปีอะไร หรือกี่โมงแล้ว ซึ่งถ้าเราประกาศ intent แบบที่เราใช้ๆมาด้านต้นก็อาจจะไม่ครอบคลุมครับ เลยมีตัวแปรนึกเพิ่มขึ้นมาคือ scope ของเวลาที่เราต้องการทราบ(ใน tuts นี้ผมขอครอบคลุมแค่ถามเวลากับถามวันเพื่อไม่ให้ยาวเกินนะครับ) อย่างเช่นถ้าเราต้องการรู้ว่าเวลานี้กี่โมงแล้วแล้วให้คนตอบกลับมาเป็น เวลาในตอนนั้น (เช่น 21.20) เราจะใช้คำถามว่า What’s time is it?, What’s the time? ประมาณนี้ แต่ถ้าเราต้องการจะถามวัน เราจะถามว่า What’s day is this? หรือ What’s day is it? แทนใช่มั้ยครับ

แล้วเราจะบอกอย่างไรว่าผู้ใช้ถามวันหรือเวลา เรามาดูความต่างของประโยค อย่างประโยคที่ผมยกไว้ ถ้าถามเวลามักจะมีคำว่า time แต่ถ้าถามวันจะมีคำว่า day แทน และนั่นแหละครับ คือ argument ของเรา

คีย์เวิร์ดล่ะ? เป็นประโยคคำถามก็ต้องมีคำว่า What ถามเวลาก็มีคำว่า clock ทีนี้มีอีกสิ่งที่ต้องรู้กันหน่อย คำว่า time กับ day จำเป็นมั้ยในประโยค? ก็อาจจะไม่เสมอไปครับ อยากเช่นถ้าถามว่า What’s the clock? เราก็รู้ครับว่าต้องการทราบเวลา แล้วเอ๊ะ ที่เราสร้างกันมาทั้งหมด keyword ที่เราต้องมีเสมอนี่นา (อย่างประโยคทักทายก็ต้องมี Hi หรือ Hello ทุกประโยค)

คำว่า time และ day จึงต้องถูกจัดเป็น optiีonal แปลว่า “มี” หรือ “ไม่มี” ก็ได้นั่นเองครับ

พล่ามมายาวเขียนโค้ดดีกว่า

เสร็จแว้ว http://destyy.com/qANsbv

ทดสอบกันหน่อย

ทำงานได้ดี!!!

เสร็จแล้วครับ จะเห็นได้เลยว่ามันไม่ได้ยากมากเลยครับ เดี๋ยวใน part หน้าผมจะมา สร้าง Chatbot จริงๆกันแล้วครับ ถ้าใครสนใจก็กด follow ไว้ได้นะครับ ใครชอบถ้ากด recommend ให้จะเป็นพระคุณมากครับ สำหรับวันนี้ขอลาไปเพียงเท่านี้

ขอบคุณมากครับ :D

ป.ล. ขอโทษที่ต้องใส่โฆษณาในลิ้งค์ด้วยนะครับ พอดีลิ้งค์มันยาวเลยหาที่ย่อแต่พอคิดว่าจะย่อแล้วเลยเอาโฆษณาใส่ด้วยเลยดีกว่า ขออภัยในความไม่สะดวกนะครับ T T