Creating a Chatbot with Rasa to Support Japanese for Big Camera Sales

This guide will walk you through the steps to create a Rasa-based chatbot that supports Japanese and is tailored for managing a big camera sale.

Step 1: Install Rasa

Ensure you have Python installed, then install Rasa using pip:

pip install rasa

Step 2: Initialize a New Rasa Project

Create a new Rasa project:

rasa init --no-prompt

This will generate a default project structure.

Step 3: Add Japanese Language Support

Modify the config.yml file to add support for Japanese. Use a tokenizer and pipeline that handles Japanese effectively. For example:

language: ja
pipeline:
  - name: "JiebaTokenizer"
  - 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

Step 4: Define Intents and Responses

In the domain.yml file, define intents and responses related to the camera sale. For example:

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

responses:
  utter_greet:
    - text: こんにちは! カメラセールチャットへようこそ!

  utter_ask_discount:
    - text: このカメラは今だけ特別価格で提供されています! ご興味のあるモデルはありますか?

  utter_ask_camera_features:
    - text: ご希望のカメラの特徴をお知らせください:高画質?ズームレンズ?列挙しますので、お使いになる方法を教えてください!

  utter_check_stock:
    - text: ご希望のモデルをお知らせください。在庫状況を確認します。

  utter_thank_you:
    - text: ありがとうございます! ご問題があれば、ご不明な点をご訪問ください。

Step 5: Create Training Data

In data/nlu.yml, add training examples in Japanese:

version: "3.0"
nlu:
  - intent: greet
    examples: |
      - こんにちは
      - ハロー

  - intent: ask_discount
    examples: |
      - 何か特別価格の商品はありますか?
      - 値引はありますか?

  - intent: ask_camera_features
    examples: |
      - このカメラはどんな特徴がありますか?
      - 高画質のカメラはどれですか?

  - intent: check_stock
    examples: |
      - このカメラの在庫はありますか?
      - 在庫状況を教えてください。

  - intent: thank_you
    examples: |
      - ありがとう
      - せんきゅう

Step 6: Create Custom Actions

Create a custom action for checking stock. In actions/actions.py, define the action:

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]]:

        # Example stock data
        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 []

Update the domain.yml file to include the custom action and a slot for the camera model:

actions:
  - action_check_stock

slots:
  camera_model:
    type: text

Update the utter_check_stock response to prompt the user for the camera model if it's not provided:

responses:
  utter_check_stock:
    - text: ご希望のモデル名を教えてください。

Step 7: Update Stories

In data/stories.yml, update the story for checking stock:

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

Step 8: Test Your Chatbot

Run your chatbot using:

rasa train
rasa shell

Test your chatbot by entering sample inputs in Japanese.

Step 9: Deploy the Chatbot

For deployment, consider using Rasa X or integrating with a web interface. Ensure the chatbot is accessible via platforms like your sales website or social media channels.

Step 10: Continuous Improvement

Analyze the chatbot’s performance, refine training data, and improve the model to handle diverse user queries effectively.

Rasa Workflow

Below is a visual representation of the Rasa workflow using MermaidJS:

graph TD
    User[User Input] -->|Sends a message| NLU[NLU Pipeline]
    NLU -->|Classifies Intent and Entities| Core[Rasa Core]
    Core -->|Follows Policies| Action[Action Server]
    Action -->|Executes Custom Actions or Responses| Bot[Bot Response]
    Bot -->|Replies to User| User
    subgraph Rasa System
        NLU
        Core
        Action
    end

By following these steps, you can create a Japanese-supporting Rasa chatbot specifically designed for managing and promoting a big camera sale.

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