- vừa được xem lúc

[RASA 3] - Bài 1: Làm quen Rasa 3 - tạo chatbot chào hỏi đơn giản

0 0 26

Người đăng: Tuyên Võ

Theo Viblo Asia

Rasa là framework mã nguồn mở giúp xây dựng chatbot - sử dụng ngôn ngữ lập trình Python.

Có rất nhiều bài giới thiệu về Rasa rồi nên mình không lặp lại nữa. Mục đích chính của chuỗi bài viết này là chia sẻ lại quá trình thực hành với Rasa 3 của mình, hy vọng có thể giúp ích được một vài bạn đang tập tành tìm hiểu Rasa 3 như mình tiếp cận nhanh hơn.

Lưu ý: Tại thời điểm mình viết bài viết này, với version Rasa mới nhất là 3.3.1 thì Rasa 3 chỉ cài được trên Python version 3.7.x và 3.8.x thôi, cũ hơn hoặc mới hơn đều không được nên các bạn lưu ý chổ version Python này tránh mất thời gian cài đặt lỗi mà không biết do đâu.

Cài đặt và khởi tạo Rasa 3

Để chi tiết hơn các bạn có thể xem ở hướng dẫn chính thống của Rasa cho Windows, Ubuntu, MacOS

Dưới đây mình sẽ tóm tắt các bước cài đặt trên Windows.

Mở cửa sổ Terminal lên, di chuyển đến thư mục muốn chứa source và thực hiện các bước sau:

Bước 1: Tạo môi trường ảo

Mình sẽ tạo 1 môi trường ảo để cài Rasa mục đích là khi thực hành vọc phá cài đặt các thứ sẽ không ảnh hưởng đến các project khác, các bạn thấy không cần thiết có thể bỏ qua bước này.

Mình đặt tên venv mới là venvRasa, thực hiện gõ lệnh sau:

python -m venv venvRasa

Khi này trong source sẽ được sinh ra một thư mục venvRasa, gõ thêm lệnh để trỏ đến venv muốn dùng:

venvRasa\Scripts\activate

Kết quả thấy trước lệnh comment có tên venv trong dấu ngoặc đơn như ảnh dưới là đúng nhé

Bước 2: Cài đặt Rasa 3

Chỉ cần gõ 1 lệnh duy nhất như sau:

pip install rasa

Mặc định sẽ cài đặt version mới nhất, nếu bạn muốn chỉ định version thì thêm version phía sau:

pip install rasa==3.3.1

Đợi hơi lâu nhé.

Sau khi cài đặt xong, kiểm tra version Rasa bằng lệnh:

rasa --version

Kết quả như hình dưới:

Bước 3: Khởi tạo một project Rasa mới

Gõ lệnh:

rasa init

Sẽ xuất hiện câu hỏi: ?Please enter a path where the project will be created [default: current directory]

Bước này là Rasa yêu cầu chỉ định thư mục tạo project Rasa, nếu muốn tạo ở thư mục khác thì nhập đường dẫn vào, mặc định là tạo ngay thư mục hiện tại. Lưu ý là thư mục tạo cần là thư mục trống vì trước khi khởi tạo rasa sẽ xóa hết các file đang có trong thư mục.

Mình thì muốn tạo trong 1 thư mục con tên rasa3 nên gõ "rasa3" rồi nhấn Enter để tiếp tục.

Do thư mục rasa3 mình chưa tạo sẵn nên Rasa hỏi tiếp là có muốn tạo mới thư mục không? Nhấn Y để xác nhận đồng ý.

Đợi một lúc bạn sẽ thấy Rasa đã tạo xong thư mục "rasa3" trong máy của mình rồi, bước khởi tạo tới đây coi như hoàn thành.

Tiếp đến Rasa sẽ hỏi: ?Do you want to train an initial model?

Mình thì chọn Y để Rasa train sẵn model với các data mặc định, làm vậy để sau khi khởi tạo là có sẵn chatbot để test.

(Nếu bạn thấy không cần thiết thì nhấn "n" và đi tiếp đến phần "Tạo chatbot chào hỏi siêu cơ bản bằng Tiếng Việt" luôn)

Khi train xong Rasa sẽ hỏi: ? Do you want to speak to the trained assistant on the command line?

Mình nhấn Y để tiếp tục.

Đợi 1 lúc sẽ xuất hiện dòng lệnh "Your input ->", hãy test thử các câu chào hỏi bằng Tiếng Anh xem Rasa phản hồi như thế nào nhé

Để thoát khỏi không gian test bạn gõ /stop và nhấn Enter.

Tạo chatbot chào hỏi cơ bản siêu đơn giản bằng Tiếng Việt

Mục đích phần này là để làm quen với việc sử dụng rasa train chatbot thôi vì mặc định Rasa đã có train các kịch bản chào hỏi và chào tạm biệt cho chatbot rồi nhưng bằng Tiếng Anh, bây giờ mình sẽ custom lại để Rasa có thể chào hỏi theo Tiếng Việt nhé. Cấu trúc source Rasa 3 mới tạo sẽ như ảnh dưới:

Trước mắt, để phục vụ yêu cầu tạo chatbot chào hỏi cơ bản thôi thì chúng ta chỉ quan tâm đến các file trong thư mục data và file domain.yml , các file khác trong các bài chuyên sâu hơn chúng ta sẽ cùng tìm hiểu sau.

Bước 1: Định nghĩa các ý định trong file /data/nlu.yml

File /data/nlu.yml sẽ chứa các ví dụ mẫu để dạy cho bot nhận diện ý định (intent) của người chat. Ví dụ muốn dạy cho bot: Khi người dùng chat câu "tạm biệt" hoặc "ngủ ngon" thì ý định là tạm biệt kết thúc trò chuyện thì khai báo như sau:

nlu:
- intent: goodbye examples: | - tạm biệt - ngủ ngon

Bạn càng dạy cho bot nhiều ví dụ thì bot sẽ càng thông minh hơn.

Mặc định trong file nlu có sẵn một vài intent (ý định), mình không cần dùng nên sẽ xóa hết chừa 2 intent là greet và goodbye thôi.

Tên intent bạn muốn đặt như thế nào cũng được (miễn theo chuẩn đặt tên biến trong python là được), mình thì giữ là greet và goodbye.

Chèn thêm các mẫu câu tương ứng với từng intent như sau:

version: "3.1" nlu:
- intent: greet examples: | - hey - hello - hi - chào - xin chào - chào bot - có ai ở đó không - tôi cần hỗ trợ - Chào bạn - Chào anh - Chào chị - Chào buổi sáng - Có đó không - Rãnh không - Ê - Hú - chào em - em ơi, cho anh hỏi - bot ơi - cho mình hỏi chút - intent: goodbye examples: | - bye - goodbye - g9 - good night - bye bye - tạm biệt - Hẹn gặp lại - Ngủ ngon - Chúc ngủ ngon - Nói chuyện sau nhé - Tôi sẽ liên hệ sau - tạm biệt em - tạm biệt bot nhá - Biến 

Bước 2: Định nghĩa các câu trả lời của bot ở file domain.yml

File domain.yml có tác dụng khai báo các đối tượng và cấu hình chatbot sẽ dùng.

Để phục vụ cho con bot siêu đơn giản trong bài viết này thì mình chỉ quan tâm đến 2 khai báo intents và responses thôi nhé.

instents là nơi khai báo các instent bạn đã định nghĩa ở file /data/nlu.yml. Với 2 intent là greet và goodbye mình khai báo như sau:

intents: - greet - goodbye

responses là nơi khai báo những câu thoại của bot. Để dạy bot chat chào tạm biệt ta định nghĩa như sau:

responses: utter_goodbye: - text: "Tạm biệt bạn!" - text: "Bye!"

Trong đoạn khai báo ở trên utter_goodbye là tên của lời nói mà mình dạy bot, bạn muốn đặt như thế nào cũng được (miễn theo chuẩn đặt tên biến trong python là được).

Phần text là nguyên văn lời nói mà bạn muốn bot phản hồi. Để bot có nhiều câu trả lời khác nhau thì bạn khai báo nhiều text khác nhau, bot sẽ nói ngẫu nhiên trong danh sách các câu bạn định nghĩa.

Rasa có hỗ trợ dạy bot nói những câu linh hoạt hơn nhưng bài này mình chỉ dừng ở trả lời theo mẫu câu cụ thể thôi.

Tổng hợp lại mình sẽ có nội dung file domain.yml như sau:

version: "3.1" intents: - greet - goodbye responses: utter_greet: - text: "Xin chào! Tôi có thể giúp gì cho bạn?" - text: "Chào bạn! Bạn cần Bot giúp gì không?" - text: "Xin chào!\nTôi là Bot, rất hân hạnh được trò chuyện với bạn!" utter_goodbye: - text: "Bye" - text: "Tạm biệt bạn!" - text: "Tạm biệt!\nHẹn gặp lại!" utter_iamabot: - text: "I am a bot, powered by Rasa." session_config: session_expiration_time: 60 carry_over_slots_to_new_session: true 

Bước 3: Chỉ định cách ứng xử của bot trong file /data/rules.yml

File /data/rules.yml có tác dụng dạy cho bot biết cách phản ứng lại với các lời chat như thế nào.

Như muốn dạy bot là: khi xác định được người dùng có ý định chào hỏi với intent là greet thì trả lời với response là utter_greet thì mình nhập thông tin trong file /data/rules.yml như sau:

rules:
- rule: Chào hỏi steps: - intent: greet - action: utter_greet

Tương tự với intent goodbye. Cuối cùng mình có nội dung file /data/rules.yml như sau:

version: "3.1" rules:
- rule: Chào hỏi steps: - intent: greet - action: utter_greet - rule: Tạm biệt steps: - intent: goodbye - action: utter_goodbye

Ngoài chỉ định ứng xử ở rule Rasa còn hỗ trợ dạy cho bot ứng xử linh hoạt và có vẻ thông minh hơn bằng cách định nghĩa các ngữ cảnh ứng xử trong file /data/stories.yml, mình sẽ trình bày trong bài khác cần yêu cầu phức tạp hơn.

Còn có chỗ config ngôn ngữ ở file config.yml nhưng mình thấy ở bài này chưa cần thiết nên bỏ qua luôn.

Bây giờ công đoạn định nghĩa đã xong, bước tiếp mình yêu cầu Rasa dạy cho chatbot các định nghĩa mình đã nhập và xem thành quả thôi.

Bước 4: Chạy lệnh train và test kết quả

Ở cửa sổ Terminal, chuyển vào thư mục chứa source rasa và chạy lệnh sau:

rasa train

Quá trình train hơi lâu tùy theo cấu hình máy tính của bạn. Sau khi train xong thì chạy lệnh sau để test kết quả:

rasa shell

Kết quả sẽ như sau:

Trên đây là 4 bước đơn giản nhất để dạy chatbot Rasa nhận diện ý định của người trò chuyện và trả lời theo văn mẫu.

Chúc bạn thành công!

Có bạn nào thực hiện theo bài này mà gặp lỗi hoặc có góp ý gì thì comment bên dưới nhé.

Tài liệu tham khảo:

https://rasa.com/docs/rasa/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hướng dẫn làm bot Facebook messenger cho tài khoản cá nhân

Giới thiệu. Trong bài viết trước thì mình có hướng dẫn các bạn làm chatbot facebook messenger cho fanpage. Hôm nay mình sẽ hướng dẫn các bạn tạo chatbot cho một tài khoản facebook cá nhân. Chuẩn bị.

0 0 231

- vừa được xem lúc

Tìm hiểu cơ bản về LUIS trong Microsoft Cognitive Services

Trong bài trước mình đã có giới thiệu sơ lược về QnA Maker - một dịch vụ lưu trữ ngôn ngữ tự nhiên trên nền tảng đám mây. Tuy nhiên để có thể sử dụng chatbot linh hoạt và với xu hướng càng thân thiện với người dùng, thì hôm nay mình giới thiệu thêm về LUIS.

0 0 40

- vừa được xem lúc

[ChatterBot] Thư viện chatbot hay ho dành cho Python| phần 4

Hôm nay mình sẽ chia sẽ thêm về một số kiến thức liên quan về ChatterBot. Chắc đây sẽ là bài lý thuyết cuối, để từ đó mỗi bạn có thể tự build cho mình một con chatbot vui vui.

0 0 120

- vừa được xem lúc

[ChatterBot] Thư viện chatbot hay ho dành cho Python| phần 3

Trong bài trước mình đã trình bày về Training data cho chatbot và tiền xử lý dữ liệu. Trong phần này sẽ trình bày với các bạn về logic adapter.

0 0 62

- vừa được xem lúc

Xác định ý định câu hỏi trong hệ thống hỏi đáp

Mục tiêu bài viết. Phân tích câu hỏi là pha đầu tiên trong kiến trúc chung của một hệ thống hỏi đáp, có nhiệm vụ tìm ra các thông tin cần thiết làm đầu vào cho quá trình xử lý của các pha sau (trích c

0 0 94

- vừa được xem lúc

[RASA 3.0] Tuỳ chỉnh pipeline với BERT và RoBERTa

Giới thiệu về Rasa. Rasa là framework mã nguồn mở được phát triển bởi RASA Inc vào năm 2017, Rasa giúp cho việc phát triển các chatbot máy học một cách thuận tiện hơn, có thể giúp cho những người chưa

0 0 52