การสร้างแชทบอทด้วย Rasa ที่รองรับภาษาไทย

คู่มือนี้จะแนะนำขั้นตอนการสร้างแชทบอทด้วย Rasa ที่รองรับภาษาไทยและออกแบบมาเพื่อจัดการกับการขายกล้องในร้านค้า IT Gadget ขนาดใหญ่ เช่น "Big Camera"

ขั้นตอนที่ 1: ติดตั้ง Rasa

ตรวจสอบให้แน่ใจว่าได้ติดตั้ง Python แล้ว จากนั้นติดตั้ง Rasa ด้วยคำสั่ง pip:

pip install rasa

ขั้นตอนที่ 2: เริ่มต้นโปรเจกต์ Rasa ใหม่

สร้างโปรเจกต์ Rasa ใหม่:

rasa init --no-prompt

คำสั่งนี้จะสร้างโครงสร้างโปรเจกต์เริ่มต้น

ขั้นตอนที่ 3: เพิ่มการรองรับภาษาไทย

แก้ไขไฟล์ config.yml เพื่อรองรับภาษาไทย ใช้ tokenizer และ pipeline ที่จัดการภาษาไทยได้อย่างมีประสิทธิภาพ ตัวอย่าง:

language: th
pipeline:
  - name: "CustomTokenizer"
    tokenizer_class: "PyThaiNLPTokenizer"
  - name: "RegexFeaturizer"
  - name: "LexicalSyntacticFeaturizer"
  - name: "CountVectorsFeaturizer"
    analyzer: "word"
  - name: "CountVectorsFeaturizer"
    analyzer: "char_wb"
    min_ngram: 1
    max_ngram: 4
  - name: "DIETClassifier"
    epochs: 100
  - name: "EntitySynonymMapper"
  - name: "ResponseSelector"
    epochs: 100
  - name: "FallbackClassifier"
    threshold: 0.3

ขั้นตอนที่ 4: กำหนด Intent และ Response

ในไฟล์ domain.yml ให้กำหนด intents และ responses ที่เกี่ยวข้องกับการขายกล้อง ตัวอย่าง:

intents:
  - greet
  - ask_discount
  - ask_camera_features
  - check_stock
  - thank_you

responses:
  utter_greet:
    - text: สวัสดีค่ะ! ยินดีต้อนรับสู่แชทบอทขายกล้อง Big Camera ค่ะ!

  utter_ask_discount:
    - text: กล้องตัวนี้มีราคาพิเศษในช่วงนี้ค่ะ! สนใจรุ่นไหนเป็นพิเศษไหมคะ?

  utter_ask_camera_features:
    - text: กรุณาบอกคุณสมบัติกล้องที่คุณต้องการ เช่น ความคมชัดสูง? ซูมเลนส์? เพื่อแนะนำรุ่นที่เหมาะสมค่ะ

  utter_check_stock:
    - text: กรุณาบอกรุ่นกล้องที่คุณต้องการ เพื่อเช็คสถานะสินค้าให้ค่ะ

  utter_thank_you:
    - text: ขอบคุณมากค่ะ! หากมีคำถามเพิ่มเติมสามารถสอบถามได้เลยค่ะ

ขั้นตอนที่ 5: สร้างข้อมูลการฝึกอบรม

เพิ่มตัวอย่างการฝึกอบรมในภาษาไทยในไฟล์ data/nlu.yml:

version: "3.0"
nlu:
  - intent: greet
    examples: |
      - สวัสดี
      - สวัสดีค่ะ

  - intent: ask_discount
    examples: |
      - มีกล้องลดราคามั้ย?
      - กล้องรุ่นนี้มีโปรโมชั่นไหม?

  - intent: ask_camera_features
    examples: |
      - กล้องรุ่นนี้มีคุณสมบัติอะไรบ้าง?
      - อยากได้กล้องที่ความคมชัดสูง

  - intent: check_stock
    examples: |
      - รุ่นนี้มีของมั้ย?
      - ขอเช็คสถานะสินค้าหน่อยค่ะ

  - intent: thank_you
    examples: |
      - ขอบคุณค่ะ
      - ขอบคุณมากค่ะ

ขั้นตอนที่ 6: สร้าง Custom Action

สร้าง Custom Action สำหรับเช็คสถานะสินค้าในไฟล์ actions/actions.py:

from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher

class ActionCheckStock(Action):

    def name(self) -> Text:
        return "action_check_stock"

    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        # ตัวอย่างข้อมูลสินค้า
        stock_data = {
            "camera_x": "มีสินค้า",
            "camera_y": "สินค้าหมด",
        }

        model = tracker.get_slot("camera_model")
        if model in stock_data:
            stock_status = stock_data[model]
            response = f"สถานะสินค้า {model}: {stock_status}"
        else:
            response = "ไม่พบรุ่นที่คุณระบุค่ะ"

        dispatcher.utter_message(text=response)
        return []

อัปเดตไฟล์ domain.yml เพื่อเพิ่ม Custom Action และช่องสำหรับกล้อง:

actions:
  - action_check_stock

slots:
  camera_model:
    type: text

อัปเดต Response utter_check_stock เพื่อแจ้งผู้ใช้หากไม่ได้ระบุชื่อรุ่นกล้อง:

responses:
  utter_check_stock:
    - text: กรุณาระบุชื่อรุ่นกล้องที่ต้องการค่ะ

ขั้นตอนที่ 7: อัปเดต Stories

อัปเดตไฟล์ data/stories.yml เพื่อเพิ่มเรื่องราวการเช็คสินค้า:

version: "3.0"
stories:
  - story: Check Stock
    steps:
      - intent: check_stock
      - action: utter_check_stock
      - slot_was_set:
          - camera_model: "camera_x"
      - action: action_check_stock

ขั้นตอนที่ 8: ทดสอบแชทบอท

เรียกใช้งานแชทบอทด้วยคำสั่งต่อไปนี้:

rasa train
rasa shell

ทดสอบแชทบอทด้วยการป้อนข้อความตัวอย่างในภาษาไทย

ขั้นตอนที่ 9: การปรับใช้แชทบอท

พิจารณาใช้ Rasa X หรือการรวมเข้ากับเว็บอินเทอร์เฟซเพื่อปรับใช้แชทบอท และให้ผู้ใช้สามารถเข้าถึงได้ผ่านเว็บไซต์หรือโซเชียลมีเดีย

ขั้นตอนที่ 10: การปรับปรุงอย่างต่อเนื่อง

วิเคราะห์ประสิทธิภาพของแชทบอท ปรับปรุงข้อมูลการฝึกอบรม และพัฒนาโมเดลเพื่อรองรับคำถามของผู้ใช้อย่างมีประสิทธิภาพ

การทำงานของ Rasa

ด้านล่างเป็นการแสดงการทำงานของ Rasa ด้วย MermaidJS:

graph TD
    User["ผู้ใช้"] -->|"ส่งข้อความ"| NLU[NLU Pipeline]
    NLU -->|"ระบุ Intent และ Entities"| Core[Rasa Core]
    Core -->|"ดำเนินการตามนโยบาย"| Action[Action Server]
    Action -->|"ดำเนินการ Custom Actions หรือ Responses"| Bot[Bot Response]
    Bot -->|"ตอบกลับผู้ใช้"| User
    subgraph ระบบ Rasa
        NLU
        Core
        Action
    end

ด้วยขั้นตอนเหล่านี้ คุณสามารถสร้างแชทบอท Rasa ที่รองรับภาษาไทยสำหรับการจัดการและโปรโมทการขายกล้องในร้าน Big Camera หรือ IT Gadget Shop อื่น ๆ ได้อย่างมีประสิทธิภาพ

Articles

Our Products


Articles

Our Products


Get in Touch with us

Speak to Us or Whatsapp(+66) 83001 0222

Chat with Us on LINEiiitum1984

Our HeadquartersChanthaburi, Thailand