ChatterBot คือ?
เจ้า ChatterBot เป็น Machine Learning ตัวนึงที่ใช้สร้างแชทบอทที่ตอบโต้ได้ โดยใช้หลักการเก็บข้อความในรูปแบบ Graph ซึ่งความเจ๋งของมันคือ มันเทรนด้วยภาษาอะไรก็ได้ แล้วก็มี LogicAdapter ให้เลือกหลายแบบ ซึ่งให้เจ้า LogicAdapter นี่แหละ คือวิธีที่เราจะใช้เลือกคำตอบที่อยู่ใน Data set ของเรา นอกจากจะมีให้ใช้แล้ว เรายังเขียนเพิ่มเข้าไปเองได้ด้วยนะ สุดยอดจริง ๆ ครับ
เอาเป็นว่าลองเริ่มใช้กันก่อนดีกว่าครับ แล้วเดี๋ยวค่อยเจาะลึกว่ามันทำงานยังไง
เริ่มทำ Chatbot
ก่อนอื่นเลยเราต้องมี python กันก่อนนะครับ แล้วก็ทำการลง ChatterBot ให้เรียบร้อยด้วยคำสั่ง
pip install chatterbot
หลังจากที่เราลงเสร็จแล้วก็สร้างไฟล์ขึ้นมาไฟล์นึงครับ แล้วก็พิมพ์โค้ดตามนี้ก่อนเลย
#!/usr/bin/env python
# -*- coding: utf-8 -*-from chatterbot import ChatBot
from chatterbot.trainers import ListTrainerchatbot = ChatBot("PYTHON BOT")conversation = [
u"สวัสดี",
u"ดีจ้า",
u"ทำไรอยู่",
u"กินข้าว"
]chatbot.set_trainer(ListTrainer)
chatbot.train(conversation)print "\nReady!"while(True):
raw = raw_input('> ')
decoded = raw.decode("utf-8")
response = chatbot.get_response(decoded)
print unicode(response)
จากนั้นก็ลองรันดูครับ แล้วรอมันเทรนแปปนึง ก็จะได้ไฟล์ database.db
มา ซึ่งไฟล์นี้ก็จะเอาไว้เก็บ Dataset ของเราครับ
พอมันขึ้นว่า Ready! ก็ลองคุยกับมันเลย มันจะตอบได้บ้างไม่ได้บ้าง แล้วก็จะเขียนไฟล์ database.db ไปเรื่อย ๆ พอยิ่งคุยกับมันเยอะเท่าไหร่ มันก็จะเริ่มตอบได้มากขึ้นเรื่อย ๆ ครับ
ปัญหาคือ แบบนี้ต้องมานั่งพิมพ์คุยกับมันตลอดหรอ อ๊ะไม่ใช่ จริง ๆ แล้วมันมีข้อมูลให้เราเอามาเทรน แล้วก็ใช้งานได้เลยด้วยนะ แต่ยังไม่เห็นภาษาไทยเลย
# Train based on the english corpus
chatbot.train("chatterbot.corpus.english")
นอกจากนี้ไอที่เราเทรน ๆ กันมันก็สามารถ export
เพื่อเอาไปเทรนในบอทตัวอื่น ๆ ได้ด้วยนะ สุดยอดเลยยยย
chatbot.trainer.export_for_training('./export.json')
โอยความสามารถเยอะสุด ๆ ยังไงลองไปอ่านเพิ่มเติมกันได้ใน documentation
นะครับ
แล้วจะหยุดเทรนยังไง
ตัว ChatterBot มีระบบ Read only นะครับ หลังจากที่เราเทรนจนพอใจแล้วก็ให้ใส่ option นี้ลงไปตอนประกาศบอท
chatbot = ChatBot("PYTHON BOT", read_only = True)
อยากได้ข้อมูลไปทำแชทบอททำไง
วิธีแรก
นั่งพิมพ์คุยกับมันครับ หรือจะทำต่อ Messenger หรือ LINE ให้คนอื่นเข้ามาคุยก็ได้
วิธีที่สอง
ใน documentation
ของมันได้มีการแนะนำให้เชื่อมต่อกับ Twitter เพื่อเอาข้อความเหล่านั้นมาเทรนได้ด้วยนะเออ
วิธีที่สาม
โหลด Chat Log ของตัวเอง (อาจจะจาก facebook) มาเทรนเข้าแชทบอทก็ได้ครับ
ยังไงลองนำไปเล่น ๆ กันดูนะครับ ได้ Chatbot ของตัวเองแล้วก็มาแชร์เล่น หรือแนะนำแชทบอทเจ๋ง ๆ กันได้ที่