สร้าง Chatbot ที่สอนได้ ด้วย ChatterBot

lukkiddd
HBOT.io
Published in
2 min readJun 13, 2017

สวัสดีคร้าบทุกคน วันนี้ไปเจอสิ่งที่น่าสนใจมานำเสนอนั่นคือ ChatterBot

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 ListTrainer
chatbot = 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 ของตัวเองแล้วก็มาแชร์เล่น หรือแนะนำแชทบอทเจ๋ง ๆ กันได้ที่

--

--