Đặt vấn đề Những năm gần đây, những thành tựu của trí tuệ nhân tạo cùng với sự bùng nổ của các ứng dụng nhắn tin đã và đang thúc đẩy sự tăng trưởng và phát triển của chatbot. Hiểu một cách đơn giản, chatbot là một chương trình máy tính mô phỏng cuộc trò chuyện của con người. Từ yêu cầu đầu vào, chatbot phán đoán ý định, mong muốn của người dùng, phản hồi hành động tương ứng. Chatbot có thể hỗ trợ doanh nghiệp trong nhiều lĩnh vực khác nhau như chăm sóc khách hàng, marketing trực tuyến, v.v Hoạt động của chatbot dựa trên giải thuật xử lý ngôn ngữ tự nhiên (Natural Language Processing – NLP).
Qua đó, chatbot có thể tự động trả lời từ dữ liệu con người đã dạy. Chatbot có hoạt động tốt hay không, có “thông minh” hay không, dữ liệu huấn luyện đóng vai trò quan trọng. Việc xây dựng và huấn luyện chatbot, hiện nay trên thế giới và Việt Nam, đã có một số nền tảng phổ biến như Chatfuel [1], Dialogflow [2] và FPT.v Tuy nhiên các nền tảng trên có một số hạn chế về tạo dữ liệu từ hội thoại để huấn luyện. Đó là chưa tận dụng được hoặc chưa tận dụng triệt để lịch sử hội thoại của người dùng, chưa có quy trình phê duyệt đảm bảo chất lượng dữ liệu, việc đánh giá chất lượng chatbot triển khai trong thực tế còn chưa rõ ràng.
Các vấn đề kể trên khiến việc tạo dữ liệu để huấn luyện còn gặp nhiều khó khăn, số lượng dữ liệu có thể ít, chất lượng không đảm bảo, dẫn tới khả năng bot có thể phản hồi không tốt với người dùng. Do đó, em chọn đề tài “Hệ thống xây dựng dữ liệu huấn luyện từ hội thoại trong chatbot” để cải tiến chất lượng, số lượng dữ liệu hội thoại huấn luyện, đánh giá và nâng cao độ hiệu quả của chatbot trong thực tế.2 Mục tiêu và phạm vi đề tài Dựa vào những vấn đề thực tiễn và mục đích nêu trên, đồ án tập trung vào các mục tiêu bao gồm i) xây dựng cơ chế tạo dữ liệu huấn luyện từ hội thoại, ii) thiết kế phương pháp đảm 1 bảo chất lượng dữ liệu để đưa vào huấn luyện, iii) cung cấp công cụ trực quan hóa hiệu quả hoạt động của chatbot trong thực tế sử dụng. Với mục tiêu như vậy, em phân tích, thiết kế và xây dựng hệ thống với những chức năng chính bao gồm người làm dữ liệu có thể tạo dữ liệu huấn luyện từ hội thoại một cách trực quan sinh động và dễ sử dụng, dữ liệu được xây dựng phải tuân theo một quy trình để được đưa vào huấn luyện. Các dữ liệu đã xây dựng cần phải theo một quy trình khắt khe để được chấp nhận đưa vào huấn luyện Ngoài ra, để quan sát tính hiệu quả của bot trong thực tế, hệ thống cung cấp các bảng biểu và các dạng báo cáo thích hợp.
Qua đó, công việc tạo và huấn luyện chatbot trở nên dễ dàng hơn và đạt hiệu quả mong muốn.3 Định hướng giải pháp Để đạt được mục tiêu như trên, em đề xuất và thiết kế một số giải pháp. Đầu tiên, do hệ thống dựa trên hội thoại để xây dựng dữ liệu huấn luyện nên nguồn hội thoại là vô cùng quan trọng. Để có được nguồn hội thoại phong phú và dồi dào, em đưa ra hai hướng giải quyết. Thứ nhất là hỗ trợ bóc tách lịch sử chat của người dùng để đưa vào xây dựng dữ liệu huấn luyện.
Phương pháp này giúp người làm dữ liệu có nguồn hội thoại khách quan từ người dùng. Thứ hai là cung cấp công cụ chat cho chính người làm dữ liệu để tương tác, chỉnh sửa hành vi của bot trong quá trình chat trực tiếp. Cách này giúp người làm dữ liệu có được những đoạn hội thoại một cách chủ quan theo mong muốn của mình. Để đảm bảo chất lượng dữ liệu huấn luyện, em thiết kế quy trình xây dựng và phê duyệt dữ liệu một cách nghiêm ngặt.
Dữ liệu được phân chia theo nhóm và theo các cấp bậc quản lý. Cấp bậc quản lý được chia làm hai cấp: quản trị dữ liệu và biên tập dữ liệu. Dữ liệu sẽ được trải qua năm trạng thái: đang xây dựng, chờ phê duyệt, đang phê duyệt, trả lại, chấp nhận. Khi đó, chỉ những dữ liệu ở trạng thái chấp nhận mới được đưa vào huấn luyện.
Quy trình như vậy sẽ rất thích hợp với các công ty lớn, nhiều phòng ban, nhiều nhân viên cùng làm dữ liệu cho chatbot. Để xây dựng được quy trình như vậy, giao diện hệ thống cũng đòi hỏi phải thể hiện phù hợp theo từng vai trò. Nếu không giải quyết khéo léo, việc mở rộng mã nguồn sau này sẽ gặp khó khăn khi phát sinh các yêu cầu mới, vai trò mới. Do vậy, em xây dựng một thành phần quản lý quyền một cách linh hoạt và tập trung.
Cách xử lý logic về quyền hiển thị được tập trung tập trung tại một chỗ. Sau này khi có thay đổi, ta chỉ cần chỉnh sửa tại một chỗ mà không ảnh hưởng nhiều tới các thành phần khác trong mã nguồn. Cuối cùng, hệ thống sẽ thiết kế tính năng thống kê và báo cáo tình hình xây dựng dữ liệu và hoạt động của bot trong thực tế. Tính năng này sẽ đưa ra các dạng biểu đồ và báo cáo thích hợp cho người quản trị dễ dàng xem xét và đánh giá.
Với nhiều người sử dụng trên nhiều máy tính khác nhau, chức năng cần giao diện phức tạp như vậy, em đề xuất triển khai hệ thống trên nền tảng web. Hệ thống được chia làm 2 phần 2 frontend và backend riêng biệt tương tác với nhau qua REST API giúp quá trình mở rộng hệ thống sau này dễ dàng hơn. Phần frontend em sử dụng framework của React là NextJS. NextJS có ưu điểm dễ dàng cấu hình dự án, tối ưu tải Javascript cho từng đường dẫn, tăng tốc độ tải trang.
Phần backend em sử dụng framework ExpressJS của NodeJS. NodeJS có ưu điểm bất đồng bộ, hướng sự kiện, có hiệu năng tốt. Ngoài ra, cùng một hệ sinh thái Javascript, việc phát triển ứng dụng sẽ nhanh hơn, ít lỗi hơn. Phần cơ sở dữ liệu em sử dụng cơ sở dữ liệu MongoDB.
Nó là cơ sở dữ liệu có tính mở rộng cao, thích hợp với dữ liệu lớn, tùy biến cao như lịch sử trò chuyện, hội thoại.4 Bố cục đồ án Phần còn lại của báo cáo đồ án tốt nghiệp này được tổ chức như sau. Chương 2, em sẽ khảo sát các nền tảng tạo và huấn luyện chatbot sẵn có trên thị trường. Qua quá trình khảo sát, em sẽ phân tích yêu cầu, trình bày tổng quan chức năng và làm rõ các chức năng chính của hệ thống. Tiếp theo, chương 3, em sẽ mô tả về những công nghệ áp dụng trong đồ án này, lý do lựa chọn công nghệ đó để giải quyết bài toán.
Chương 4 mô tả chi tiết kiến trúc phát triển và triển khai ứng dụng bao gồm các quá trình thiết kế, xây dựng, kiểm thử và triển khai. Trong chương 5, em sẽ trình bày tất cả những đóng góp, giải pháp mà em thấy tâm đắc nhất trong suốt quá trình làm ĐATN. Đó là những kinh nghiệm, bài học giúp em phát triển bản thân trên con đường kỹ sư sau này. Cuối cùng, chương 6 là kết luận, ưu điểm, nhược điểm, những gì đã làm được và chưa làm được của em.
Ngoài ra, em đề xuất các định hướng phát triển cho hệ thống trong tương lai để hệ thống hoàn thiện hơn. Sau đây, em sẽ đi vào chi tiết từng phần của đồ án. 3 Chương 2 Khảo sát và phân tích yêu cầu Chương 2 em sẽ mô tả cách thức hoạt động của chatbot để làm rõ các khái niệm liên quan. Sau đó, em sẽ khảo sát các nền tảng tương tự trên thị trường để phân tích yêu cầu cho hệ thống.1 Kịch bản điển hình của chatbot Trước khi khảo sát các nền tảng khác, em sẽ trình bày rõ ràng hơn về các khái niệm, cách thức, kịch bản hoạt động của chatbot.
Chatbot là chương trình máy tính có khả năng tương tác với người dùng bằng cách giao tiếp tự nhiên [4]. Hình 1 Các thành phần của chatbot [4] Hình 1 mô tả thứ tự xử lý và các thành phần trong một hệ thống chatbot. Người dùng đưa yêu cầu đầu vào qua các dạng như văn bản, giọng nói. Khi đó, thành phần hiểu ngôn ngữ tự nhiên trích xuất ra thông tin bao gồm ý định của người dùng và các thông tin quan trọng trong câu hay còn gọi là các thực thể.
Các thông tin này sẽ được ghi lại vào bộ lưu trữ lịch sử hội thoại ở bước 2. Đến bước 3, khối dự đoán hành động nhận thông tin các trạng thái từ bộ lưu trữ để đưa ra các hành động tiếp theo sao cho phù hợp và thực thi hành động đó ở bước 4. Hành động đã dự đoán sẽ được ghi chép lại ở bộ lưu trữ hội thoại tại bước 5 và trả về phản hồi cho người dùng ở bước 6. Ý định (intent) là những mong muốn, mục đích của người dùng.
Ý định gắn với những nghiệp vụ của doanh nghiệp. Ví dụ với chatbot về ngân hàng đó là hỏi thông tin thẻ, thông 4 tin tài khoản, tra cứu ATM. Còn với chatbot về bán hàng, ý định có thể là tra cứu sản phẩm, mua bán sản phẩm, v.v Thực thể (entity) là những thông tin có ý nghĩa được trích xuất từ yêu cầu đầu vào người dùng. Ví dụ trong câu “Cho mình hỏi địa điểm ATM quận cầu giấy”, “quận cầu giấy” là một thực thể chỉ địa điểm.
Để huấn luyện cho bot hiểu ý định và trích xuất được thực thể, người làm dữ liệu phải cung cấp cho bot tập câu mẫu. Câu mẫu là những câu có sẵn phù hợp với ý định và đã được đánh dấu thực thể nếu có. Ví dụ với với ý định “Hướng dẫn sử dụng ngân hàng điện tử” thì tập câu mẫu có thể là “làm sao để đổi mật khẩu trên mobile banking”, “hướng dẫn tôi cách hủy dịch vụ khác trên internet banking”, “chuyển tiền trong internet banking như thế nào”, v.v Hành động (action) mô tả phản hồi của của bot sau khi phân tích yêu cầu. Hành động có thể gồm nhiều dạng như chữ, hình ảnh, video, audio phản hồi lại người dùng hay các lệnh thực thi như gửi email, tắt đèn, v.v để tác động vào bên thứ ba.
Để thuận tiện cho việc đánh giá và chỉnh sửa, em đề xuất hiển thị hội thoại thành các đơn vị hội thoại. Đơn vị hội thoại bao gồm một câu đầu vào của người dùng đi kèm với thông tin về ý định, thực thể được trích xuất, tiếp theo là những hành động phản hồi của bot.