Tổng quan về Rasa

1. Mở đầu 

"Chatbot" là một thuật ngữ quen thuộc trong lĩnh vực trí tuệ nhân tạo, đặc biệt là trong lĩnh vực xử lý ngôn ngữ tự nhiên. Chatbot là một công cụ được lập trình để hiểu và trả lời những lời nói, tin nhắn từ con người. Trong bài viết này, nhóm tác giả muốn giới thiệu với bạn đọc một công cụ hỗ trợ xây dựng chatbot thông minh, đó chính là Rasa. 

Mục tiêu hướng tới trong bài viết này bao gồm:

  • Giới thiệu về chatbot và các thành phần chính trong chatbot.

  • Tầm nhìn tổng quan về Rasa.

  • Hiểu được kiến trúc tổng quan trong Rasa.

  • Lý do vì sao Rasa là một công cụ mạnh mẽ và được sử dụng nhiều.

 

2. Giới thiệu về chatbot

Để khởi tạo một chatbot sẽ bao gồm sáu thành phần sau:

  • Xử lý ngôn ngữ tự nhiên (natural language processing): Chatbot chuyển đổi văn bản, âm thanh lời nói của người dùng thành ngôn ngữ máy để máy tính có thể hiểu.

  • Hiểu ngôn ngữ tự nhiên (natural language understanding):

Là một thành phần con của NLP tập trung vào việc hiểu ý nghĩa lời nói,văn bản của con người.NLU phân loại ý định (intents) người dùng dựa trên những dữ liệu được huấn luyện.

  • Lưu trữ dữ liệu (data storage): Dữ liệu của cuộc hội thoại có thể được lưu lại tùy thuộc vào mục đích của nhà phát triển dưới dạng SQL hay lưu trữ trên cloud.

  • Dialog manager: Dialog manager chịu trách nhiệm quản lý và ghi nhớ cuộc hội thoại giữa người và chatbot.

  • Tạo ngôn ngữ tự nhiên (natural language generation):Quá trình máy tạo ra câu trả lời từ mỗi câu hỏi của con người, sau đó chuyển đổi từ ngôn ngữ máy qua ngôn ngữ mà con người có thể hiểu được.

  • Giao diện: Nơi mà người dùng có thể tương tác với chatbot bằng lời nói hoặc văn bản.

Trong đó xử lý ngôn ngữ tự nhiên, hiểu ngôn ngữ tự nhiên và dialog manager đóng vai trò thiết yếu để khởi tạo một chatbot.

 

3. Giới thiệu về Rasa

Rasa là một framework mã nguồn mở, không những thế rasa còn có những thành phần cơ bản như Natural Language Understanding và dialogue management, hai thành phần quan trọng hỗ trợ người dùng có thể xây dựng và tinh chỉnh một chatbot theo mục đích đã được nêu ở phần 2 của bài viết. Đồng thời Rasa cho phép kết nối với nhiều nền tảng khác nhau như: Facebook, Slack, Twitter,...[1]. 

Hình 1. Logo của RASA phiên bản 3.X

 

4. Thành phần chính của Rasa

Rasa gồm 2 phần chính là  Natural Language Understanding và dialogue management [2].

  • Natural Language Understanding (NLU): Đây là một module đóng vai trò xử lý đầu vào của cuộc hội thoại(tokenizer, featurize).NLU sẽ xác định ý định của người dùng muốn nói (Intent Classification) , trích xuất và chọn ra các thông tin chính. (Entity Extraction).

  • Dialogue management: Sau khi hiểu được câu nói của người dùng, module Dialogue management sẽ quyết định hành động tiếp theo trong hội thoại dựa trên các thông tin chính đã được trích xuất thông các chính sách (Policy) sau:

    • RulePolicy: Sử dụng những quy tắc(Rule) đã được định nghĩa trước và đưa ra quyết định.

    • TEDPolicy (Transformer Embedding Dialogue Policy): Sử dụng học sâu để xác định các hành động tiếp theo 

 

 

Hình 2. Các thức hoạt động trong Rasa

 

5. Kiến trúc tổng quát của Rasa

Ngoài hai thành phần chính đã được nêu ở mục 2 thì hệ thống cần thêm phần để xử lý bộ nhớ, kết nối các thành phần lại với nhau để hoạt động hiệu quả.

Hình 3. Kiến trúc tổng quát trong Rasa

  • NLU Pipeline:  Tập hợp các module NLU dùng để phân loại các ý định (intent) và trích xuất thực thể (Entity).

  • Dialog Policies: Tập hợp các chính sách (policy) hỗ trợ đưa ra các quyết định hành động tiếp theo.

  • Action Server:  Cho phép người dùng có thể tùy chỉnh và chạy một đoạn code python bất kỳ như gọi API, truy vấn cơ sở dữ liệu,... hay bất kì việc gì tùy vào mục đích của người dùng.

  • Tracker Store: Module lưu trữ các giá trị của chatbot.

  • Lock Store: Cơ chế đảm bảo rằng cuộc trò chuyện diễn ra đúng thứ tự để tránh tình trạng khi một hệ thống cố gắng thực hiện nhiều hành động cùng một lúc hành động.

  • Filesystem: Lưu trữ các file của một dự án.

  • Agent: Module xử lý chung và kết nối các thành phần khác.

 

6. Tại sao chọn Rasa?

Có ba lý do chính để chọn Rasa [2]:

  • Là một framework mã nguồn mở. Vì là một mã nguồn mã nguồn nên Rasa sẽ có một cộng động lớn và có tính bảo mật cao.

  • Rasa cho phép người dùng có thể phát triển một cách thoải mái và dễ dàng. 

Ví dụ: Tại module Dialogue management ngoài việc sử dụng các mô hình có sẵn. người dùng có thể tạo một mô hình học máy và tích hợp vào Rasa phù hợp vào mục đích người dùng.

  • Hỗ trợ nhiều mục đích sử dụng khác nhau.

  • Cho phép kết nối với các nền tảng khác nhau như: Facebook, Slack, Twitter, … 

 

 

Hình 4.  Rasa kết nối với các nền tảng

7. Kết luận

Bài viết này cung cấp cái nhìn tổng quan về Rasa, kiến trúc tổng quát và cách vận hàng của Rasa. Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu cách cài đặt và làm rõ đặc điểm các tệp sau khi khởi tạo Rasa.



Tài liệu tham khảo

[1] Rasa Architecture Overview. (2023, May 4). Rasa & Rasa Pro Documentation. https://rasa.com/docs/rasa/ 

[2] Kong, X., Wang, G., & Nichol, A. (2021). Conversational AI with Rasa: Build, test, and deploy AI-powered, enterprise-grade virtual assistants and chatbots. Packt Publishing Ltd.