Chương 4. KẾT QUẢ THỰC NGHIỆM
4.1 Xây dựng Hệ thống Cố vấn Học tập ảo
4.1.4 Xây dựng dữ liệu cho chatbot
Nguồn dữ liệu xây dựng chatbot hỗ trợ Cố vấn Học tập sẽ được trích xuất bằng phương pháp thủ công từ “Quyết định ban hành Quy định Công tác Học vụ dành cho Sinh viên trình độ Đại học Chính Quy) - số 2093/QĐ-ĐHCT - ngày 17/08/2020”; các nguồn dữ liệu từ trang web của Trường Đại học Cần Thơ; các em sinh viên và một số dữ liệu về mã ngành, mã khoa từ việc sưu tầm dữ liệu.
Một đoạn hội thoại là một nhóm các câu hỏi – đáp một cách liền mạnh giữa người và chatbot để giải quyết một vấn đề nào đó. Ví dụ đoạn hội thoại về thông tin cảnh báo học vụ:
Người dùng Chatbot
hey, em mã SV M2518001, em vắng học 5 buổi, em muốn hỏi như thế nào thì bị Cảnh báo Học vụ ạ?
Chào bạn, tôi đã nhận được thông tin của bạn. Tuy nhiên vẫn cần thêm một số thông tin để xác định chính xác hơn.
Bạn cho hỏi là bạn đang học môn nào thế?
Mình học Lập trình Căn bản
Okey, bạn đợi tí.
Chúc mừng bạn, nghỉ 5 buổi thì vẫn chưa sao đâu. Tuy nhiên bạn nên xin phép Thầy Cô đàng hoàng nhé.
Yes, cám ơn bot!
Vâng, rất vui giúp ích được bạn. Bye!
Bảng 4.1: Khung kịch bản cuộc hội thoại về ý định Cảnh báo học vụ
Trên đây là khung kịch bản cho ý định của người dùng hỏi về cảnh báo học vụ. Sau đây là một đoạn hội thoại khác cũng để hỏi về thông tin Cảnh báo học vụ như sau:
54
Người dùng Chatbot
Hi, điểm tb học kỳ em có 0.9, không biết có bị cảnh báo học vụ không?
Hmm, thấy có vẻ nguy hiểm. Đợi tôi tra cứu tí nhé.
Chúc mừng, 0.8 mới bị cảnh báo học vụ nhé. Bạn cần học tập chăm chỉ hơn nhé.
Bảng 4.2: Khung kịch bản cuộc hội thoại khác về ý định Cảnh báo học vụ
Như vậy với bài toán xây dựng chatbot theo miền đóng là xây dựng danh sách các khung kịch bản như 2 kịch bản ví dụ trên. Ứng với mỗi câu trong đoạn hội thoại là một ý định (intent). Ý định của người dùng có thể là một danh sách các câu nói khác nhau về ngữ điệu, cách nói nhưng có cùng một mục đích cụ thể. Ví dụ với mục đích là chào hỏi thì người dùng có thể nói là "hi", "xin chào",
"2222", …
Trong mỗi intent chatbot cần phải trích xuất ra thông tin của người dùng.
Đó là các thực thể (entity). Các thực thể nào có thể được lưu lại vào các slot (là bộ nhớ của chatbot) để phục vụ cho các hành động tiếp sau của bot. Như các ví dụ trên ta có thông tin slot ma_sv="M2518001" ; so_buoi_vang="5", diem_tb_hocky="0.9".
Như vậy việc xây dựng chatbot sẽ thực hiện qua một số bước chính như sau:
Hình 4.4: Các bước chính xây dựng chatbot
4.1.4.1 Xây dựng ý định (intent) người dùng
Việc xây dựng ý định sẽ được tạo theo nguyên tắc là những mẫu câu hỏi phổ biến nhất của người dùng, thông dụng nhất có thể. Mỗi ý định sẽ có ít nhất 3 câu hỏi tùy biến khác nhau. Hiện tại chatbot hỗ trợ khoảng trên 80 intent. Cấu hình intent trong framework Rasa cần hiệu chỉnh file “nlu.md”.
Xây dựng ý định người dùng (intent)
Xây dựng thực thể (entity) - Slot
Xây dựng câu trả lời cho Bot
Xây dựng kịch bản cho Bot
Đào tạo, huấn luyện mô hình cho Bot
Thử nghiệm và cải tiến cho Bot
55
Hình 4.5: Ví dụ tạo ý định người dùng
4.1.4.2 Xây dựng thực thể (entity)
Entity là các thông tin trích xuất từ ý định của người dùng. Slot là các thông tin được trích lọc trong câu nói của người dùng được chatbot lưu lại trong bộ nhớ để sử dụng trong các action hay câu trả lời của bot và tránh việc hỏi lại thông tin từ phía người dùng. Hiện tại bot đang được cấu hình khoảng 12 slot.
Hình 4.6: Danh sách các slot thông tin người dùng
4.1.4.3 Xây dựng câu trả lời cho Bot
Đây là phần dùng để cấu hình ứng với mỗi câu hỏi của người dùng thì ta cũng phải xây dựng các mẫu câu (template) trả lời được có dạng:
Hình 4.7: Mẫu câu trả lời tương ứng cho ý định hỏi về Cảnh báo học vụ
56
Để tạo tính tự nhiên trong đoạn hội thoại thì ta có thể xây dựng nhiều câu trả lời cho chatbot chọn ngẫu nhiên để phản hồi lại người dùng.
Với nhu cầu cần phản hồi thêm nhiều dữ liệu được tập hợp từ các hệ thống khác, Rasa Framework có cung cấp các loại action có thể điều hướng tùy biến dựa theo dialog state tracker, policy và dispatcher. Có 3 loại action được sử dụng trong Rasa Core:
Default Actions: đây là các action mặc định của Rasa như lắng nghe người dùng, khởi động lại đoạn hội thoại hoặc trả lời với câu mặc định khi không phân loại được ý định người dùng.
Hình 4.8: Ví dụ Default action
Utter actions: đây là các câu trả lời mẫu (template) cần sử dụng trong hệ thống.
Hình 4.9: Ví dụ Utter Action
Custom actions: khi các tập các mẫu câu trả lời không đáp ứng được nhu cầu cần truy vấn dữ liệu từ một nguồn dữ liệu khác để có câu trả lời chính xác hơn cho người dùng thì custom action sẽ được sử dụng. Đây là một lớp action tùy biến được viết bằng ngôn ngữ lập trình Python.
57
Hình 4.10: Custom action truy vấn Danh sách Học phần
4.1.4.4 Xây dựng khung kịch bản (history) cho Bot
Tạo ra một khung kịch bản dựa vào tập các intent và các câu hỏi của người dùng thông thông qua việc sắp xếp chúng thành một đoạn hội thoại.
Hình 4.11: Kịch bản hỏi điều kiện xét tốt nghiệp