19 กุมภาพันธ์ 2561

Published กุมภาพันธ์ 19, 2561 by with 2 comments

สร้าง ChatBot ด้วย Chatterbot : ตอนที่ 2 Train ข้อมูลและจัดเก็บ

หลังจากที่บทความที่ผ่านมา เราได้ทดลองสร้าง ChatBot ง่าย ๆ กันไปแล้ว วันนี้เราจะมา Train ให้กับ ChatBot ของเราที่สร้างโดย Chatterbot กันครับ

ทางโมดูล Chatterbot ได้เตรียมชุดข้อมูลสำหรับใช้ Train บทสนทนาเบื้องต้นให้กับเราแล้ว โดยเราสามารถเรียกใช้งานชุดข้อมูลได้ตามตัวอย่างนี้
from chatterbot.trainers import ChatterBotCorpusTrainer

chatterbot = ChatBot("Training Example") # ชื่อแชทบ็อต
chatterbot.set_trainer(ChatterBotCorpusTrainer) # กำหนดให้ Train จากชุดข้อมูลของ Chatterbot

chatterbot.train(
    "chatterbot.corpus.english"
) # เรียกใช้ชุดข้อมูล chatterbot.corpus.english
และถ้าเราต้องการจัดเก็บข้อมูลที่ Train ให้กำหนด Storage Adapters ใน ChatBot (อ่านเอกสารได้ที่ http://chatterbot.readthedocs.io/en/stable/storage/index.html)
หากต้องการจัดเก็บไว้ใน Sqllite ให้ใช้ chatterbot.storage.SQLStorageAdapter
ตัวอย่างเช่น
chatbot = ChatBot(
    'Charlie', # ชื่อแชตบ็อต
    storage_adapter='chatterbot.storage.SQLStorageAdapter', # กำหนดการจัดเก็บเป็น Sqllite
    database='Charlie.sqlite3' # ที่ตั้งฐานข้อมูล
)
ลองมาโค้ดกัน

เสร็จแล้ว ลองเรียกใช้งานกันดู
ai.yml Training: [####################] 100%
botprofile.yml Training: [####################] 100%
computers.yml Training: [####################] 100%
conversations.yml Training: [####################] 100%
emotion.yml Training: [####################] 100%
food.yml Training: [####################] 100%
gossip.yml Training: [####################] 100%
greetings.yml Training: [####################] 100%
history.yml Training: [####################] 100%
humor.yml Training: [####################] 100%
literature.yml Training: [####################] 100%
money.yml Training: [####################] 100%
movies.yml Training: [####################] 100%
politics.yml Training: [####################] 100%
psychology.yml Training: [####################] 100%
science.yml Training: [####################] 100%
sports.yml Training: [####################] 100%
trivia.yml Training: [####################] 100%
เมื่อรัน ทาง  Chatterbot จะทำการ Train ข้อมูลให้เราก่อนเรียกใช้งาน เมื่อทำก่าร Train เสร็จแล้วลองใช้งาน
Text : Hi
How are you doing?
Text : I play game.
You have to run very fast to be any good at running
Text : Yes,I have.
What is it like?
Text : Are you ok?
Bots like myself are not able to feel boredom.
Text : How are you?
I am doing well.
Text : Do you love me?
I think I could be programmed to love.
จะเห็นได้ว่า การโต้ตอบคล้ายคลึงกับมนุุษย์มากยิ่งขึ้นเนื่องจากจำนวนข้อมูลที่ใช้ในการ Train มาก ทำให้เครื่องเรียนรู้ของ Chatterbot สามารถโต้ตอบด้วยประโยคที่เหมาะสมได้

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

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

  1. มันขึ้นเออเรอแบบนี้เพราะอะไรหรอครับ

    [nltk_data] Downloading package stopwords to C:\Users\User-
    [nltk_data] PC\AppData\Roaming\nltk_data...
    [nltk_data] Package stopwords is already up-to-date!
    [nltk_data] Downloading package averaged_perceptron_tagger to
    [nltk_data] C:\Users\User-PC\AppData\Roaming\nltk_data...
    [nltk_data] Package averaged_perceptron_tagger is already up-to-
    [nltk_data] date!
    Traceback (most recent call last):
    File "C:\Users\User-PC\Desktop\chatv1.py", line 10, in
    chatbot.set_trainer(ChatterBotCorpusTrainer) # กำหนดให้ Train จากชุดข้อมูลของ Chatterbot
    AttributeError: 'ChatBot' object has no attribute 'set_trainer'

    ตอบลบ
    คำตอบ
    1. แก้ไขแล้วครับ เพราะ Chatterbot มีการเปลี่ยนแปลง API ใหม่ครับ

      ลบ

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