10 ตุลาคม 2558

Published 10/10/2558 by with 1 comment

สร้าง Machine Learning โต้ตอบสนทนาด้วย ChatterBot ในภาษาไพทอน

สวัสดีผู้อ่านทุกท่านครับ บทความนี้จะแนะนำการสร้าง Machine Learning โต้ตอบสนทนาด้วย ChatterBot ในภาษาไพทอนกันครับ

ChatterBot เป็นโมดูลในภาษาไพทอน เป็นโมดูลด้านเครื่องเรียนรู้ (Machine Learning) สำหรับใช้โต้ตอบบทสนทนาในภาษาไพทอน เราสามารถสอนให้ ChatterBot เรียนรู้ภาษาอื่นนอกจากภาษาอังกฤษได้ (ใช้ภาษาไทยได้)
รองรับทั้งไพทอน 2 และไพทอน 3
ใช้ BSD Licens

เนื่องจาก ChatterBot เป็นเครื่องเรียนรู้ (Machine Learning) แบบต้องมีผู้สอน จึงไม่มี knowledge สำหรับใช้โต้ตอบมาให้ เราต้องสอน ChatterBot เอง เมื่อพิมพ์ข้อความลงไประบบจะทำการบันทึก ระบบจะทำการตอบกลับที่คล้ายเคียงที่สุดกับข้อควาามที่ได้รับ

สามารถติดตั้งได้โดยใช้คำสั่ง pip:
pip install chatterbot

โค้ดตัวอย่าง
การสอนให้ Bot รู้จักโต้ตอบ

[python]
__author__ = 'วรรณพงษ์'
from chatterbot import ChatBot


bot = ChatBot("Training Bot Example",
storage_adapter="chatterbot.adapters.storage.JsonDatabaseAdapter",
logic_adapter="chatterbot.adapters.logic.ClosestMatchAdapter",
io_adapter="chatterbot.adapters.io.TerminalAdapter",
database="th_database.db") # กำหนดค่า ฐานข้อมูลในนี้คือ th_database.db หากไม่มี ระบบจะทำการสร้างใหม่

'''
ให้ Bot พูดคุยสนทนาง่าย ๆ เพื่อช่วยให้มันได้เรียนรู้วิธีการตอบสนองต่อคำสั่งอื่น
กดปุ่ม ctrl-c หรือ ctrl-d เพื่อออกจากการสนทนา
'''
training_data = [
"สวัสดีค่ะ",
"ทำอะไรอยู่ค่ะ",
"กำลังรอคำสั่งจากท่านค่ะ",
"คุณเป็นใคร",
"กินข้าวยัง",
"ค่ะ"
]

bot.train(training_data)

user_input = ""

while True:
try:
user_input = bot.get_input() # รับข้อความผู้ใช้
bot_input = bot.get_response(user_input) # ดึงข้อมูล
except (KeyboardInterrupt, EOFError, SystemExit):
break
[/python]

ตัวอย่างบทสนทนา
user: สวัสดี
bot: ทำอะไรอยู่ค่ะ
user: เล่นเเกม
bot:กินข้าวยัง
user: กินแล้ว
bot:ค่ะ
user: ครับ
bot: กินข้าวยัง
user: กินแล้วครับ
bot: คุณเป็นใคร
user: นั้นสิ
bot: กินข้าวยัง
user: กินแล้วครับ

เอกสารการใช้งาน https://github.com/gunthercox/ChatterBot/wiki/

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

1 ความคิดเห็น:

  1. ไม่ระบุชื่อ28 ตุลาคม 2560 21:17

    ขอขอบคุณมากครับที่บอก

    ตอบลบ

แสดงความคิดเห็นได้ครับ :)