Theo xu thế phát triển thị trường, vấn đề trao đổi thông tin thông qua các kênh truyền thông ngày càng phổ biến. Đặc biệt, trong thời điểm dịch bệnh virút Corona (COVID19) bùng phát, nhu cầu về trao đổi, tư vấn, giải đáp thắc mắc trực tuyến (thông qua kênh chat, fanpage, message, website…) lại càng được nâng cao. Trong lĩnh vực Giáo dục cũng vậy, việc giảng dạy, trao đổi thông tin với sinh viên trực tuyến đã trở nên thông dụng. Vậy làm thế nào để các Thầy Cô có thể trả lời, giải đáp mọi lúc mọi nơi các câu hỏi, mà đôi khi lại trùng lắp ý định lẫn nhau (do cách diễn dạt câu từ khác nhau) một cách nhanh chóng, chính xác, đỡ tốn nhiều công sức ? Câu hỏi trên thôi thúc tôi quyết định thực hiện luận văn thạc sĩ này nhằm nghiên cứu, xây dựng một Hệ thống Cố vấn Học tập ảo với vai trò hỗ trợ các Thầy Cô trong việc giải đáp các câu hỏi, thắc mắc cho các Sinh viên. Hệ thống sẽ được xây dựng trên miền dữ liệu đóng – là phạm vi mà Hệ thống sẽ chỉ trả lời các câu hỏi liên quan đến một lĩnh vực nào đó (như giáo dục, bán hàng, y tế, …), cụ thể sẽ trả lời chỉ các câu hỏi liên quan đến Quy chế Học vụ của Trường Đại học Cần Thơ. Luận văn tập trung nghiên cứu, tìm hiểu các kỹ thuật xử lý ngôn ngữ tự nhiên, cách tìm câu trả lời theo mô hình truy xuất thông tin dựa trên các thuật toán máy học, các thành phần cấu tạo nên một chatbot dựa trên framework Rasa – là hệ thống trả lời tự động với mã nguồn mở Rasa. Áp dụng các kiến thức đã tìm hiểu để xây dựng thành một Hệ thống Cố vấn Học tập ảo có thể ứng dụng được vào thực tế
Trang 1CHẤP THUẬN CỦA HỘI ĐỒNG
Luận văn này, với đề tựa là “Xây dựng Hệ thống Cố vấn Học tập
Ảo”, do học viên Dương Nguyễn Phú Cường thực hiện theo sự hướng dẫn
của PGs.Ts Nguyễn Thái Nghe Luận văn đã báo cáo và được Hội đồng
chấm luận văn thông qua ngày ………
Trang 2LỜI CẢM ƠN
Đầu tiên em xin gởi lời cám ơn đến Thầy PGs Ts Nguyễn Thái Nghe đã tận tình thu nhận, hướng dẫn và cung cấp các chỉ dẫn quý báu cho em trong suốt quá trình thực hiện luận văn tốt nghiệp
Em xin bày tỏ lời cám ơn chân thành đến các Thầy Cô khoa Công Nghệ Thông Tin và Truyền Thông Trường Đại học Cần Thơ đã tận tình giảng dạy những kiến thức bổ ích trong suốt khóa học cao học vừa qua
Xin gởi lời cám ơn đến Trung tâm Công nghệ Phần mềm Đại học Cần thơ
đã tạo điều kiện cho em tham gia khóa học cao học vừa qua, giúp em nâng cao được rất nhiều kiến thức
Cuối cùng, em xin gởi lời cám ơn đến gia đình, những người thân, các đồng nghiệp và bạn bè đã thường xuyên quan tâm, truyền động lực, động viên, chia sẻ kinh nghiệm và cung cấp các tài liệu hữu ích trong thời gian học tập, cũng như trong suốt quá trình thực hiện luận văn tốt nghiệp
Cần Thơ, ngày tháng năm 2020
Ký tên
Dương Nguyễn Phú Cường
Trang 3TÓM TẮT
Theo xu thế phát triển thị trường, vấn đề trao đổi thông tin thông qua các kênh truyền thông ngày càng phổ biến Đặc biệt, trong thời điểm dịch bệnh vi-rút Corona (COVID-19) bùng phát, nhu cầu về trao đổi, tư vấn, giải đáp thắc mắc trực tuyến (thông qua kênh chat, fanpage, message, website…) lại càng được nâng cao Trong lĩnh vực Giáo dục cũng vậy, việc giảng dạy, trao đổi thông tin với sinh viên trực tuyến đã trở nên thông dụng Vậy làm thế nào để các Thầy Cô có thể trả lời, giải đáp mọi lúc mọi nơi các câu hỏi, mà đôi khi lại trùng lắp ý định lẫn nhau (do cách diễn dạt câu từ khác nhau) một cách nhanh chóng, chính xác, đỡ tốn nhiều công sức ?
Câu hỏi trên thôi thúc tôi quyết định thực hiện luận văn thạc sĩ này nhằm nghiên cứu, xây dựng một Hệ thống Cố vấn Học tập ảo với vai trò hỗ trợ các Thầy Cô trong việc giải đáp các câu hỏi, thắc mắc cho các Sinh viên Hệ thống
sẽ được xây dựng trên miền dữ liệu đóng – là phạm vi mà Hệ thống sẽ chỉ trả lời các câu hỏi liên quan đến một lĩnh vực nào đó (như giáo dục, bán hàng, y tế,
…), cụ thể sẽ trả lời chỉ các câu hỏi liên quan đến Quy chế Học vụ của Trường Đại học Cần Thơ
Luận văn tập trung nghiên cứu, tìm hiểu các kỹ thuật xử lý ngôn ngữ tự nhiên, cách tìm câu trả lời theo mô hình truy xuất thông tin dựa trên các thuật toán máy học, các thành phần cấu tạo nên một chatbot dựa trên framework Rasa – là hệ thống trả lời tự động với mã nguồn mở Rasa Áp dụng các kiến thức đã tìm hiểu để xây dựng thành một Hệ thống Cố vấn Học tập ảo có thể ứng dụng được vào thực tế
Trang 4ABSTRACTS
According to the market development trend, the need to exchange information through communication channels is increasingly popular Especially, during the outbreak of Corona epidemic, the demand for online exchange, consultation, and inquiry answers (via chat, fanpages, messages, websites ) has been enhanced In Education, teaching and online exchanging information with students have become more and more popular So how can the teachers answer and answer questions anytime, anywhere quickly accurately as well as take a little effort ?
The above question inspired me to do this master's thesis in order to research and build a Virtual Learning Advisory System with the role of supporting teachers in answering questions for students The system will be built on closed data domain – it means the System will only answer questions related to a certain field (such as education, sales, health, ) In particular, my system will only answer questions related to the Academic Policy of Can Tho University
The thesis researches into the understanding of natural language processing techniques, how to find answers according to the information retrieval model based on machine learning algorithms and the components of a chatbot based on framework Rasa - an open source autoresponder system From the above knowledge, we build a Virtual Learning Advisory System which can make it practical
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan luận văn “Xây dựng Hệ thống Cố vấn Học tập ảo“ được hoàn thành là do tôi nghiên cứu, tìm hiểu và phát triển dưới sự hướng dẫn của PGs Ts Nguyễn Thái Nghe
Luận văn này không phải là sự sao chép từ các tài liệu, công trình nghiên cứu của người khác mà không ghi rõ nguồn gốc trong tài liệu tham khảo Các kết quả của nghiên cứu này chưa được dùng cho bất cứ luận văn cùng cấp nào khác Tôi xin chịu trách nhiệm về lời cam đoan
Ngày /……/2020
Ký tên
Dương Nguyễn Phú Cường
Trang 6MỤC LỤC
LỜI CẢM ƠN ii
TÓM TẮT iii
ABSTRACTS iv
LỜI CAM ĐOAN v
MỤC LỤC vi
DANH MỤC BẢNG viii
DANH MỤC HÌNH ix
DANH MỤC TỪ VIẾT TẮT xii
Chương 1 MỞ ĐẦU 1
1.1 Đặt vấn đề 1
1.2 Mục tiêu nghiên cứu 2
1.2.1 Mục tiêu tổng quát 2
1.2.2 Mục tiêu cụ thể 2
1.3 Đối tượng và phạm vi nghiên cứu 3
1.3.1 Đối tượng nghiên cứu 3
1.3.2 Phương pháp nghiên cứu 3
1.3.3 Phạm vi nghiên cứu 3
1.4 Bố cục luận văn 5
Chương 2 CƠ SỞ LÝ THUYẾT 6
2.1 Tổng quan của một hệ thống chatbot 6
2.1.1 Giới thiệu 6
2.1.2 Các thành phần cơ bản của một hệ thống chatbot 7
2.2 Luồng hoạt động và xử lý của một hệ thống chatbot 8
2.2.1 Thành phần Hiểu ngôn ngữ tự nhiên (NLU) 8
2.2.2 Thành phần Quản lý hội thoại (DM) 12
2.2.3 Thành phần sinh ngôn ngữ (NLG) 15
2.3 Tổng quan về Framework Rasa 17
2.3.1 Giới thiệu 17
2.3.2 Các thành phần chính trong Rasa Framework 18
Chương 3 PHƯƠNG PHÁP NGHIÊN CỨU 24
3.1 Xử lí ngôn ngữ tự nhiên 24
3.1.1 Làm sạch dữ liệu 24
3.1.2 Tách từ 25
3.1.3 Chuẩn hóa từ 26
3.1.4 Loại bỏ Stopwords 26
3.1.5 Vectơ hóa văn bản 28
3.2 Xác định ý định và các thực thể của câu hỏi 31
3.2.1 Xác định ý định của câu hỏi 31
Trang 73.2.2 Xác định các thực thể từ nội dung (Trích xuất đặc trưng) 32
3.3 Phân loại câu hỏi bằng các kỹ thuật học sâu (Deep Learning) 36 3.3.1 Mạng nơron nhân tạo (Artificial Neural Network – ANN) 36
3.3.2 Mạng Multi Player Perceptron (MLP) 39
3.3.3 Mạng nơ ron hồi quy RNN 40
3.3.4 Vấn đề lưu trữ thông tin ngữ cảnh phụ thuộc lâu dài 43
3.3.5 Mạng Long Short-Term Memory (LSTM) 44
3.3.6 Phân tích mô hình LSTM 46
3.3.7 Quy trình hoạt động của mô hình mạng LSTM được thông qua các bước cụ thể như sau: 47
Chương 4 KẾT QUẢ THỰC NGHIỆM 50
4.1 Xây dựng Hệ thống Cố vấn Học tập ảo 50
4.1.1 Thiết kế Tổng thể 50
4.1.2 Cấu trúc Hệ thống chatbot 51
4.1.3 Ứng dụng Rasa Framework xây dựng chatbot 52
4.1.4 Xây dựng dữ liệu cho chatbot 53
4.2 Huấn luyện mô hinh 57
4.3 Thực nghiệm 58
4.3.1 Môi trường thực nghiệm 58
4.3.2 Test thực nghiệm 58
4.4 Demo hệ thống 61
4.4.1 Miền giao diện Backend 61
4.4.2 Phần Giao diện Người dùng 66
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 71
5.1 Kết luận 71
5.2 Hướng phát triển của đề tài 71
TÀI LIỆU THAM KHẢO 73
Trang 8DANH MỤC BẢNG
Bảng 2.1: Frame cho chatbot hỏi thông tin khách hàng 15
Bảng 2.2: Ví dụ sinh ngôn ngữ dựa trên các dữ liệu [5] 15
Bảng 2.3: Phương pháp sinh ngôn ngữ dựa trên tập mẫu câu trả lời 16
Bảng 3.1: Danh sách stopwords trong tiếng Việt, xem chi tiết trong đường link tại [11] 28
Bảng 3.2: Danh sách cách thực thể có thể được trích xuất trong thư viện Facebook Duckling [19] 34
Bảng 3.3: Mô tả dữ liệu bài toán POS Tag [21] 35
Bảng 3.4: Mô tả dữ liệu bài toán Chunking 36
Bảng 4.1: Khung kịch bản cuộc hội thoại về ý định Cảnh báo học vụ 53
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ụ 54
Bảng 4.3: đoạn javascript cho phép nhúng chatbot widget 66
Trang 9DANH MỤC HÌNH
Hình 1.1: 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 4
Hình 2.1: Các thành phần cơ bản của một hệ thống chatbot 7
Hình 2.2: Luồng hoạt động và xử lý của một hệ thống chatbot 8
Hình 2.3: Các bước xử lý trong pipeline của NLU [3] 9
Hình 2.4: Các bước xử lý trong NLU 9
Hình 2.5: Sơ đồ xử lý Ngôn ngữ tự nhiên áp dụng trong hệ thống Tiếng việt 10 Hình 2.6: Các bước Tiền xử lý câu chữ trong Tiếng Việt 11
Hình 2.7: Ví dụ về trích xuất thông tin từ người dùng 11
Hình 2.8: Mô hình quản lý trạng thái và quyết định action trong hội thoại 13
Hình 2.9: Quản lý hội thoại theo mô hình máy trạng thái hữu hạn FSA [4] 14
Hình 2.10: Phương pháp sinh ngôn ngữ Plan-based 16
Hình 2.11: Phương pháp sinh ngôn ngữ Class-based 16
Hình 2.12: Sơ đồ hoạt động các thành phần của Rasa Framework 17
Hình 2.13: Luồng hoạt động của các thành phần trong Rasa Framework 18
Hình 2.14: File config.yml - quản lý cấu hình trong Rasa Framework 19
Hình 2.15: File nlu.md - ví dụ về cấu hình ý định người dùng 19
Hình 2.16: File config.yml - cấu hình cho Rasa Core 20
Hình 2.17: Ví dụ thiết lập file domain.yml cho Rasa Core 21
Hình 2.18: Ví dụ về kịch bản Xét và công nhận tốt nghiệp 22
Hình 2.19: Ví dụ Custom Action gọi API lấy danh sách học phần 23
Hình 2.20: Ví dụ thiết lập cổng chạy Custom Action là 5055 23
Hình 3.1: Các bước Tiền xử lý dữ liệu 24
Hình 3.2: Loại bỏ các ký tự gây nhiễu (noise filter) 24
Hình 3.3: Ví dụ phân tách từ theo từ loại 26
Hình 3.4: Loại bỏ stopword bằng cách dùng từ điển 27
Hình 3.5: Danh sách 50 từ xuất hiện nhiều lần nhất trong Tiếng Anh [10] 27
Hình 3.6: Vector hóa từ 28
Hình 3.7: Kết quả thực nghiệm từ cùng ngữ cảnh [13] 29
Hình 3.8: Mô hình CBOW và Skip-Ngram [15] 29
Hình 3.9: Hình biểu diễn câu trong không gian vector [18] 30
Hình 3.10: Ví dụ các biến thể cách đặt câu cùng một ý định 32
Hình 3.11: Kết quả sau khi tách từ 34
Hình 3.12: Kết quả sau khi gán nhãn POS Tag 35
Hình 3.13: Kết quả sau khi tiến hành chunking 36
Hình 3.14: Kết quả sau khi xác định Thực thể có tên NER 36
Hình 3.15: Một nơ rơn sinh học [16] 37
Hình 3.16: Một nơ ron nhân tạo [16] 37
Hình 3.17: Hàm sigmoid [16] 38
Hình 3.18: Hàm tanh [16] 39
Hình 3.19: Hàm ReLU 39
Hình 3.20: Mạng MLP 3 tầng 40
Hình 3.21: Mạng RNN 41
Hình 3.22: Mạng RNN 2 chiều 42
Trang 10Hình 3.23: Mạng RNN nhiều tầng 43
Hình 3.24: RNN phụ thuộc short-term [17] 43
Hình 3.25: RNN phụ thuộc long-term [17] 44
Hình 3.26: Mô hình tính Ht của RNN [17] 45
Hình 3.27: Các mô-đun lặp của mạng RNN chứa một layer [17] 45
Hình 3.28: Các ký hiệu sử dụng trong mạng LSTM [17] 46
Hình 3.29: Cell state của LSTM giống như một băng chuyền [17] 46
Hình 3.30: Cổng trạng thái LSTM [17] 47
Hình 3.31: LSTM focus f (forget gate) [17] 47
Hình 3.32: LSTM focus I và hàm tanh [17] 48
Hình 3.33: LSTM focus C [17] 48
Hình 3.34: LSTM focus O [17] 49
Hình 4.1: Mô hình hoạt động của Hệ thống Cố vấn Học tập ảo 50
Hình 4.2: Cấu trúc Hệ thống chatbot Cố vấn học tập 51
Hình 4.3: Cấu hình Rasa Pipeline sử dụng trong Hệ thống 53
Hình 4.4: Các bước chính xây dựng chatbot 54
Hình 4.5: Ví dụ tạo ý định người dùng 55
Hình 4.6: Danh sách các slot thông tin người dùng 55
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ụ 55
Hình 4.8: Ví dụ Default action 56
Hình 4.9: Ví dụ Utter Action 56
Hình 4.10: Custom action truy vấn Danh sách Học phần 57
Hình 4.11: Kịch bản hỏi điều kiện xét tốt nghiệp 57
Hình 4.12: Chạy câu lệnh train mô hình sử dụng Rasa Framework 58
Hình 4.13: Kết quả thực nghiệm 58
Hình 4.14: Bộ dữ liệu test ngẫu nhiên 1 59
Hình 4.15: Bộ dữ liệu test ngẫu nhiên 2 59
Hình 4.16: Hình ma trận ước lượng nhầm lẫn xây dựng dữ liệu intent 60
Hình 4.17: Hình ước lượng độ chính xác tập dữ liệu training intent 61
Hình 4.18: Chức năng Cấu hình kịch bản (stories) giữa Người và Máy dành cho Quản trị Hệ thống 62
Hình 4.19: Cấu hình phản hồi với Ảnh (images) và các Nút (buttons) tương tác với người dùng 62
Hình 4.20: Cấu hình gán nhãn, gắn các slots trích xuất thông tin thực thể 63
Hình 4.21: Cấu hình các từ viết tắt, đồng nghĩa 63
Hình 4.22: Kiểm tra kết quả xác định ý định của người dùng 64
Hình 4.23: Quản lý các đoạn hội thoại giữa người và máy trong lịch sử 64
Hình 4.24: Chức năng giúp quản trị viên tự cấu hình lại các ý định và huấn luyện lại mô hình 65
Hình 4.25: Chức năng cấu hình nhiều biến thể cho các câu trả lời 65
Hình 4.26: Giao diện chatbot widget trong trang web ở trạng thái đóng 66
Hình 4.27: Giao diện chatbot widget trong trang web ở trang thái mở 67
Hình 4.28: Ví dụ đoạn hội thoại hỏi về cảnh báo học vụ - phần chào hỏi 68
Hình 4.29: Ví dụ đoạn hội thoại về cảnh báo học vụ 1 68
Hình 4.30: Ví dụ đoạn hội thoại về cảnh báo học vụ 2 69
Hình 4.31: Ví dụ đoạn hội thoại chatbot phản hồi bằng hình ảnh 69
Trang 11Hình 4.32: Ví dụ về đoạn hội thoại chatbot phản hồi bằng danh sách các ảnh
có thể cuộn tới lui (carousel) 70Hình 4.33: Ví dụ về đoạn hội thoại chatbot phản hồi bằng các nút (buttons) tương tác với người dùng 70
Trang 12DANH MỤC TỪ VIẾT TẮT
ANN Artificial Nerual Network Mạng nơ ron nhân tạo API Application Programming Interface Giao diện lập trình ứng
dụng CBOW Continuous Bag of Words Sử dụng ngữ cảnh để dự
đoán mục tiêu CRF Conditional Random Fields Mô hình xác xuất trường
điều kiện ngẫu nhiên
LSTM Long short-term memory Mạng cải tiến để giải quyết
vấn đề phụ thuộc quá dài NER Named Entity Recognition Nhận diện thực thể có tên NLG Natural Language Generation Thành phần sinh ngôn ngữ NLP Natural Language Processing Xử lý ngôn ngữ tự nhiên NLU Natural Language Understandin Hiểu ngôn ngữ tự nhiên
RNN Recurrent Neural Network Mạng nơ ron hồi quy SQL Structure Query Language Câu lệnh truy vấn Cơ sở dữ
liệu
Trang 13Chương 1 MỞ ĐẦU 1.1 Đặt vấn đề
Theo xu thế phát triển của thị trường, các Cơ quan / Doanh nghiệp / Cơ sở Kinh doanh muốn tăng doanh thu / lợi nhuận, mở rộng thị trường đều phải làm tốt và rất tốt công việc Chăm sóc khách hàng Khi đó nhu cầu về việc phải đáp ứng thông tin Tức thời, Chính xác và Mọi lúc mọi nơi cho Khách hàng là một nhu cầu cấp thiết cho mọi Cơ quan / Doanh nghiệp / Cơ sở Kinh doanh Để đáp ứng việc này, các Cơ quan / Doanh nghiệp / Cơ sở Kinh doanh phải tốn chi phí
để thuê nhiều nhân viên chăm sóc Khách hàng và tốn nhiều thời gian cho những câu hỏi / thắc mắc có tính lặp đi lặp lại; tốn nhiều thời gian để tra cứu, Tính toán, tìm kết quả để phản hồi lại Khách hàng
Trong lĩnh vực Giáo dục cũng vậy Các Trường / Cơ sở Giáo dục ngày nay muốn chiêu sinh tốt thì phải nâng cao chất lượng Giáo dục Đào tạo, Hỗ trợ Giải đáp các thắc mắc cho học sinh, sinh viên… một cách nhanh chóng và chính xác Các Trường / Cơ sở Giáo dục ngày nay đa phần đều sử dụng Phần mềm Quản lý Trường học, đều có cơ sở dữ liệu lưu trữ thông tin học sinh, sinh viên, giảng viên; thông tin quy chế Học vụ… Tuy nhiên, việc khai thác thông tin để tạo ra tri thức đáp ứng về việc trả lời các thắc mắc của học sinh, sinh viên còn hạn chế Cụ thể, một trong những vấn đề các học sinh, sinh viên thường hay thắc mắc có liên quan đến quy chế Học vụ của nhà trường Các câu hỏi này có khả năng sẽ bị trùng lặp, lặp đi lặp lại cùng một câu hỏi nhưng với cách diễn đạt câu từ khác nhau với mỗi bạn Học Sinh, Sinh viên… Điều đó dẫn đến việc tiêu tốn thời gian của Cán bộ Cố vấn Học tập khi phải trả lời cùng một câu hỏi cho nhiều bạn học sinh, sinh viên…; tốn thời gian để tra cứu quy chế học vụ, tốn thời gian cho việc tính toán, kiểm tra kết quả học tập của học sinh, sinh viên nhằm đưa ra câu trả lời phù hợp cho học sinh, sinh viên
Đặc biệt, trong thời điểm dịch bệnh vi-rút Corona (COVID-19) đang bùng phát, nhu cầu về trao đổi, tư vấn, giải đáp thắc mắc trực tuyến lại càng được nâng cao Các kênh truyền thông tin lại ngày càng đa dạng với thời đại bùng nổ của tin nhắn (cụ thể là trao đổi thông qua kênh chat, fanpage, message, email
…) Theo số liệu thống kê của Statista [1] thì tại top các ứng dụng tin nhắn hàng đầu tại VietNam là Zalo, Facebook, Instagram, Skype, với lưu lượng thông tin xử lý là hàng triệu tin nhắn mỗi ngày Cán bộ Cố vấn Học tập không thể trả lời cùng lúc nhiều người, cùng lúc truy xuất các thông tin về quy chế học vụ một cách nhanh chóng để trả lời ngay cho học sinh, Sinh viên Nhận thấy thiếu sót và khó khăn này, từ đó nhóm quyết định xây dựng một Hệ thống Cố vấn Học tập ảo (chatbot) với vai trò giải đáp các câu hỏi, thắc mắc của học sinh, sinh viên… giúp tiết kiệm thời gian, công sức cho các Thầy Cô Cố vấn Học tập
Trang 14Các hệ thống về dạng chatbot hỗ trợ đã có một số đề tài thực hiện trước
đó như đề tài HỆ THỐNG HỖ TRỢ TƯ VẤN TUYỂN SINH của thầy Nguyễn Thái Nghe và thầy Trương Quốc Định [2]: đây là một hệ thống phân loại câu hỏi và gởi đến các chuyên gia, dùng người thật để gởi các câu trả lời lại cho người dùng; đề tài NGHIÊN CỨU VÀ XÂY DỰNG CHATBOT HỖ TRỢ NGƯỜI DÙNG TRONG NGÂN HÀNG của ông Nguyễn Tất Tiến [1]: là hệ thống chatbot có khả năng phân loại ý định người dùng và trả lời các câu hỏi liên quan về lĩnh vực Ngân hàng Tuy nhiên chỉ phản hồi lại câu thuần văn bản
và chưa có các API để truy vấn dữ liệu
Nhóm kết hợp các ý tưởng trên và phát triển thêm thành một Hệ thống Trợ
lý ảo hoàn chỉnh với khả năng tự động phân loại ý định và tự động phản hồi lại người dùng với các nhiều dạng tương tác hơn như multimedia – gồm câu chữ, hình ảnh và video; các dạng nút tương tác – button; các form thu thập thông tin
Hệ thống cũng có khả năng phân loại ý định và kết nối trực tiếp giữa Người dùng với các Thầy Cô khi còn chưa thỏa mãn với câu trả lời của chatbot Hệ thống sẽ hỗ trợ trả lời người dùng trong một miền dữ liệu đóng (closed domain)
1.2 Mục tiêu nghiên cứu
1.2.1 Mục tiêu tổng quát
Mục tiêu tổng quát là xây dựng được một Hệ thống Cố vấn Học tập ảo (chatbot) có giao diện thân thiện và có các chức năng dành cho các Thầy Cô (quản trị viên) như: bổ sung, hiệu chỉnh các câu hỏi, ý định, kịch bản, chức năng huấn luyện lại mô hình dành; có giao diện khung chat có thể tích hợp (nhúng) vào các trang web khác dành cho sinh viên có thể chat trực tiếp với chatbot qua khung chat này Chatbot có khả năng trả lời các câu hỏi vả giúp các bạn hiểu rõ một số thông tin về Quy chế Học vụ của Trường về Quy chế Học vụ của Trường Đại học Cần Thơ
1.2.2 Mục tiêu cụ thể
Tìm hiểu các mô hình, các thành phần và các luồng hoạt động của một hệ thống trả lời tự động
Thiết kế cơ sở dữ liệu và nạp dữ liệu bằng phương pháp thủ công với miền
dữ liệu đóng (closed domain) phục vụ cho việc trả lời các câu hỏi của người dùng trong đề tài được trích xuất 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.”
Tìm hiểu hệ thống chatbot mã nguồn mở Framework Rasa
Xây dựng mô hình phân loại ý định và trích xuất đặc trưng theo ngôn ngữ tiếng Việt của người dùng
Trang 15Xây dựng các API truy xuất, tổng hợp dữ liệu từ cơ sở dữ liệu để tìm các câu trả lời phù hợp
Xây dựng giao diện Web chat (widget) có thể nhúng chatbot vào bất kỳ trang web nào Có khả năng hiển thị các câu trả lời theo các dạng multimedia (câu chữ, hình ảnh, video)
Xây dựng hệ thống cho phép người dùng đánh giá (feedback) các câu trả lời từ chatbot
Xây dựng hệ thống có khả năng điều hướng cho phép người dùng có thể chat trực tiếp với Cán bộ Cố vấn
Xây dựng hệ thống có các chức năng hỗ trợ người quản trị có thể huấn luyện theo hình thức học tương tác trực quan (interactive learning)
1.3 Đối tượng và phạm vi nghiên cứu
1.3.1 Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài là tập trung khai thác Quy chế Học vụ của Trường Đại học Cần Thơ, từ đó xây dựng thành cơ sở dữ liệu và mô hình nhằm xác định ý định của người dùng để tìm câu trả lời phù hợp
Đối tượng hỗ trợ người dùng của chatbot ở đây là các sinh viên có các câu hỏi thắc mắc về các vấn đề liên quan đến Quy chế Học vụ của Nhà trường
1.3.2 Phương pháp nghiên cứu
Tìm hiểu tài liệu, kiến thức liên quan về hệ thống chatbot, cách gán nhãn
từ loại CRF, Framework Rasa, ngôn ngữ lập trình Python, ngôn ngữ lập trình PHP, ngôn ngữ lập trình Javascript, cơ sở dữ liệu MySQL, MongoDB
Tìm hiểu cách thu thập dữ liệu tiếng việt, phân tích, tiền xử lý dữ liệu Tìm hiểu các kỹ thuật xử lý Ngôn ngữ tự nhiên: phân tích cú pháp câu (sentence segmentation); phân tích cú pháp từ (word segmentation); gán nhãn
từ loại (Part of Speech Tagging); trích xuất đặc trưng, xác định thực thể có tên (Named Entity Recognition - NER); phân loại ý định người dùng (text classification)
Tìm hiểu mô hình truy xuất thông tin (Retrieval process) và mô hình Sinh ngôn ngữ (Generative process)
Tìm hiểu cách áp dụng Framework Rasa và cách triển khai trên một Hệ thống Server nền web
Thực nghiệm, đánh giá độ lỗi của Hệ thống đã xây dựng qua ứng dụng thực tiễn
1.3.3 Phạm vi nghiên cứu
Nghiên cứu tập trung chủ yếu là xây dựng được một hệ thống chatbot có khả năng tư vấn, giải đáp các thắc mắc và trả lời bằng ngôn ngữ tiếng Việt các
Trang 16câu hỏi liên quan đến Quy chế Học vụ của Trường Đại học Cần Thơ Cụ thể theo quy chế được ban hành trong “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”:
Hình 1.1: 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
Trang 17Đề xuất mô hình chatbot hỗ trợ Quy chế Học vụ và hệ thống đưa ra câu trả lời tương ứng
Huấn luyện mô hình và kiểm thử bằng thực nghiệm với người dùng trên
hệ thống thực tế
1.4 Bố cục luận văn
Báo cáo luận văn gồm có 5 chương như sau:
Chương 1: Mở đầu Giới thiệu tổng quan về đề tài như mục tiêu nghiên cứu, đối
tượng, phạm vi nghiên cứu
Chương 2: Cơ sở lý thuyết Chương này giới thiệu về các lý thuyết liên quan
đến các nội dung nghiên cứu để xây dựng Hệ thống Cố vấn Học tập ảo, giới thiệu tổng quan về một hệ thống chatbot, các lý thuyết nền về việc xử lý ngôn ngữ tự nhiên, mô hình xác định ý định người dùng, mô hình Sinh hội thoại và các kiến thức liên quan đến mã nguồn mở Framework Rasa [3] được áp dụng chính trong Hệ thống
Chương 3: Phương pháp nghiên cứu Trình bày Phương pháp xử lí ngôn ngữ tự
nhiên, các phương pháp xác định ý định người dùng, các phương pháp trích xuất thông tin thực thể trong câu hỏi người dùng để áp dụng và mô hình nhằm lựa chọn được các câu trả lời tương ứng cho câu hỏi đó với độ chính xác khả quan Trình bày phương pháp thực nghiệm và cách đánh giá kết quả thực nghiệm được
áp dụng trong đề tài
Chương 4: Kết quả thực nghiệm Trình bày từng bước cách xây dựng hệ thống,
cách xây dựng mô hình xác định ý định và trích xuất các thực thể của người dùng, cấu hình các câu trả lời, khung kịch bản cho các đoạn hội thoại của chatbot
Cố vấn học tập ảo Phần thực nghiệm được triển khai trên nền web và kết quả đánh giá sẽ cho ta biết khả năng phục vụ của chatbot nhằm cải tiến chatbot để tìm ra các hướng cải tiến hơn trong việc xây dựng chatbot
Chương 5: Kết luận và hướng phát triển Chương này đưa ra kết luận của đề tài
về những điều đã thực hiện được so với mục tiêu đề tài đặt ra, những mặt còn hạn chế và hướng phát triển của hệ thống
Trang 18Chương 2 CƠ SỞ LÝ THUYẾT 2.1 Tổng quan của một hệ thống chatbot
2.1.1 Giới thiệu
Chatbot là một hệ thống đối thoại giữa người và máy Đây là một chương trình máy tính có khả năng tiến hàng các cuộc trò chuyện thông tin nhắn, người dùng có thể gởi các câu hỏi và chatbot sẽ có khả năng tự động trả lời hoặc xử lý tình huống theo đúng ý định của người dùng Các chatbot hiện đại còn có các khả năng tân tiến như ngoài các câu chữ, còn có khả năng nhận diện giọng nói
từ người dùng và trả lời lại người dùng với giọng nói tương tự như người (speech
to text và text to speech) Chatbot ngày nay thường được ứng dụng trong nhiều lĩnh vực khác nhau như Chăm sóc khách hàng, Thương mại điện tử, Y tế, Tài chính ngân hàng, Dịch vụ Du lịch, Giải trí, Game, …
Chatbot có thể được chia làm 2 loại chính:
Hệ thống chatbot phục vụ theo một miền dữ liệu mở (open domain):
đây là mô hình trả lời tự động trên miền mở cho phép người dùng có thể tham gia trao đổi với bất kỳ chủ đề nào, không cần phải có một ý định cụ thể nào cả Các đoạn hội thoại trên các mạng xã hội như Facebook, Twitter, Instagram thường là miền mở, người dùng có thể trao đổi trên mọi chủ đề Do số lượng các chủ đề được người dùng hướng đến là không giới hạn (hay vô tận), điều này dẫn đến tri thức yêu cầu để có thể tạo ra được các câu trả lời đáp ứng cho các câu đối trong trong miền mở là một bài toán cực kỳ khó
Hệ thống chatbot phục vụ theo một miền dữ liệu đóng (closed domain): ngược lại với miền dữ liệu mở, đây là mô hình trả lời tự động theo dữ
liệu phục vụ trong một lĩnh vực cụ thể nào đó, ví dụ như chatbot hỗ trợ Y tế, Giáo dục, Bán hàng, Du lịch… chỉ phục vụ các câu hỏi trong phạm vi lĩnh vực của nó
Trong một miền dữ liệu đóng, số lượng các mẫu câu hỏi và câu trả lời là một tập có số lượng hữu hạn nào đó, do đó các chatbot này được cố gắng để đạt được một mục tiêu nào đó một cách cụ thể Ví dụ như các chatbot dạng tư vấn:
tư vấn Hỗ trợ Hỏi đáp Kỹ thuật, tư vấn Mua hàng… Đối với các câu hỏi ngoài phạm vi lĩnh vực, chatbot thường không xử lý được và sẽ rơi vào trường hợp ngoại lệ Tùy tình huống xử lý của Hệ thống như liên hệ trực tiếp với người thật
hay lưu lại thông tin người dùng và chờ người xử lý sau
Trang 192.1.2 Các thành phần cơ bản của một hệ thống chatbot
Hình 2.1: Các thành phần cơ bản của một hệ thống chatbot
Chatbot gồm có 3 thành phần chính là Hiểu ngôn ngữ tự nhiên (NLU –
Natural Language Understanding); Quản lý Hội thoại (DM - Dialogue Management); Bộ sinh ngôn ngữ (NLG – Natural Language Generation)
Mỗi thành phần đều có vai trò riêng:
NLU - Natural Language Understanding: đây là thành phần chính và
rất quan trọng trong hệ thống chatbot, có nhiệm vụ xử lý ngôn ngữ tự nhiên (NLP – Natural Language Processing) để xác định được ý định của người dùng (intent classification), trích xuất lưu trữ các đặc trưng (slots filter) từ câu hỏi của người dùng
DM – Dialogue Management: đây là thành phần quản lý hội thoại có
nhiêm vụ xác định hành động (action) tiếp theo dựa vào trạng thái hành động trước đó hay trong ngữ cảnh hội thoại mà chatbot và người dùng đang trò chuyện, với thông tin đã được bộ nhớ lưu trữ theo dõi trạng thái của hội thoại lưu lại (dialog state tracker) Các ngữ cảnh này cần được đối chiếu trong các khung kịch bản đã được dựng sẵn (history) và đã huấn luyện cho chatbot Thành phần này cũng có các hành động truy cập thông tin, lấy dữ liệu từ các hệ thống khác thông qua các API có trong action, do hệ thống tự cấu hình thêm
NLG - Natural Language Generation: đây là thành phần sinh ngôn ngữ
dựa vào các quy luật (policy) và các hành động đã được xác định trong bước xử
lý trước đó (DM – Dialog Management) thông qua các tập hội thoại NLG có thể được sinh ra các câu trả lời dựa trên các tập mẫu câu trả lời (templates) đã được cấu hình sẵn cho chatbot
Trang 202.2 Luồng hoạt động và xử lý của một hệ thống chatbot
Hình 2.2: Luồng hoạt động và xử lý của một hệ thống chatbot
Hình trên là mô hình về luồng hoạt động và xử lý của một hệ thống chatbot Với các thành phần hoạt động chính theo tuần tự như sau:
2.2.1 Thành phần Hiểu ngôn ngữ tự nhiên (NLU)
Đây là thành phần quan trọng nhất của chatbot Việc một chatbot có thông minh hay không phần lớn là có xác định được chính xác ý định của người dùng muốn hỏi gì? Chức năng của thành phần này là trích xuất ra các thông tin hữu ích từ tin nhắn của người dùng gởi đến để các thành phần tiếp theo xử lý Các thông tin cần trích xuất như sau:
- Đầu tiên là phân loại theo lĩnh vực (domain classification): tùy theo câu hỏi của người dùng tùy thuộc vào lĩnh vực nào thì chatbot sẽ phân loại tương ứng Ví dụ như câu hỏi về lĩnh vực Y tế, Ngân hàng, Thương mại… Trong trường hợp chỉ có một lĩnh vực được cấu hình trong chatbot thì có thể bỏ qua bước phân loại này
- Tiếp đến là phân loại ý định của người dùng (intent classification), ví dụ như xác định được ý định người dùng muốn hỏi trong câu là cần hỏi về công tác cảnh báo học vụ, bao nhiêu điểm thì bị cảnh bảo học vụ…
- Sau khi xác định ý định người dùng, sẽ đến bước trích xuất thông tin (slots filter) hoặc trích xuất thông tin theo thực thể đã được đặt tên trước (entity extraction) trong câu hỏi của người dùng Ví dụ chatbot cần phải trích xuất được thông tin mã số sinh viên và điểm số của người dùng trong câu hỏi: “em mã số
sv M2518001, thi học kỳ được 2.5 thì có bị cảnh báo học vụ không?” Từ việc trích xuất được thông tin Mã sinh viên và Điểm số thì mới có cơ sở để các thành phần tiếp theo có hành động (action) phản hồi phù hợp cho người dùng
Thông thường, NLU xử lý tin nhắn người dùng gởi đến bằng chuỗi các hành động nối tiếp nhau một cách tuần tự theo hình ống (pipeline), với kết quả đầu ra của hành động trước là kết quả đầu vào của hành động sau
Trang 21Hình 2.3: Các bước xử lý trong pipeline của NLU [4]
Trong đường ống (pipeline) này thì chatbot có thể tùy chỉnh các thành phần từ Phân loại tên miền, mô hình ngôn ngữ, cách áp dụng các thuật toán tách
từ và trích xuất thông tin thực thể… Cuối cùng sau khi xử lý xong chuỗi hành động liên tiếp này thì bộ NLU sẽ có được một mô hình để có thể sử dụng trong chatbot
2.2.1.1 Các bước xử lý trong NLU
Để hiểu rõ hơn về việc xử lý của NLU trong một pipeline, xem xét ví dụ
xử lý của NLU đối với một câu hỏi từ người dùng gởi đến:
Hình 2.4: Các bước xử lý trong NLU
Để có thể phân loại được ý định của người dùng thì cần phải mô hình hóa ngôn ngữ, tức là phải biểu diễn dưới dạng vector số học để máy có thể hiểu được (vectorization) Một phương pháp phổ biến là word embedding (nhúng từ) Tập nhúng từ là tên chung cho một tập hợp các mô hình ngôn ngữ và các phương
Trang 22pháp học đặc trưng trong xử lý ngôn ngữ tự nhiên (NLP), nơi các từ hoặc cụm
từ được ánh xạ thành các vector số thực
Sau khi mô hình hóa ngôn ngữ bao gồm dữ liệu đầu vào training cho bot thì việc xác định ý định người dùng dựa trên tập đã training trước là bước phân loại ý định (intent classification) hay phân loại văn bản [5] Ở các chatbot hiện đại đều sử dụng mô hình máy học sâu (deep learning) như RNN và LSTM để phân loại ý định người dùng Khó khăn nhất của bước xác định ý định người dùng là việc xác định kép hay nhiều ý định (multiple intents) trong cùng một câu nói của người dùng Ví dụ như người dùng nói: “xin chào, em muốn liên hệ trường và em vắng thi thì có được thi lại không?” Trong cùng câu nói trên thì chatbot cần phải xác định được 3 ý định “chào hỏi”, “liên hệ trường”, “quy chế thi cử” Nếu chatbot có thể hiểu được chính xác tất cả ý định của người dùng thì chatbot sẽ thực sự thông minh và đoạn hội thoại giữa người và chatbot sẽ tự nhiên hơn
Tiếp đến là việc trích xuất các thông tin hữu ích từ người dùng Các thông tin cần được trích xuất thường sẽ có dạng số, ngày tháng, chuỗi tên và đã được cài đặt và huấn luyện trước
Việc phân tách các từ (Tokenization) là một một qua trình xử lý nhằm xác định ranh giới của từ, và gán các nhãn cho từ như từ đơn, từ ghép… Có một số thuật toán hỗ trợ cho việc giải quyết các bài toán phân tách từ này như mô hình
so khớp từ dài nhất (longest matching), so khớp cực đại (Maximum Matching) hay mô hình CRF (conditional random field)…
2.2.1.2 Các bước xử lý trong việc Phân loại Ý định người dùng
Hình 2.5: Sơ đồ xử lý Ngôn ngữ tự nhiên áp dụng trong hệ thống Tiếng việt
Các bước xử lý trong việc Phân loại ý định người dùng có các bước cơ bản sau:
Tiền xử lý: đây là thao tác giúp “làm sạch” dữ liệu Bao gồm các thao tác
cơ bản như hình sau:
Trang 23Hình 2.6: Các bước Tiền xử lý câu chữ trong Tiếng Việt
Tiền xử lý dữ liệu thường thực hiện các bước như loại bỏ các câu chữ dư thừa, không có ý nghĩa (stopwords); chuẩn hóa dữ liệu, tách từ trong câu, sửa lỗi chính tả, chuẩn hóa các từ viết tắt… Đây là bước có vai trò quan trọng trong
hệ thống chatbot Việc loại bỏ và chuẩn hóa thông tin trước khi tiến hành các bước phân tích tiếp theo làm tăng khả năng chính xác trong việc xác định ý định của người dùng, cũng như độ thông minh của chatbot
Trích xuất đặc trưng: sau khi dữ liệu có được dữ liệu đã được “làm sạch”
từ bước Tiền xử lý Phần tiếp theo của NLU đảm nhận nhiệm vụ trích xuất đặc trưng nhằm xác định các thông tin hữu ích có trong tin nhắn của người dùng gởi đến chatbot để làm tiền đề bước xử lý tiếp theo nhằm đưa ra các hành động phù hợp với ý định của người dùng
Ví dụ: trích xuất thông tin về Thời gian, địa điểm trong đoạn hội thoại với người dùng:
Hình 2.7: Ví dụ về trích xuất thông tin từ người dùng
Trang 24Có nhiều thuật toán được sử dụng trong việc xử lý ngôn ngữ tự nhiên nhằm trích xuất được thông tin từ người dùng Tuy nhiên Conditional Random Field (CRF) là một mô hình xác suất cho các bài toán dự đoán có cấu trúc và đã được
áp dụng rất thành công trong rất nhiều lĩnh vực như thị giác máy tính, xử lý ngôn ngữ tự nhiên, sinh-tin học, … Trong mô hình CRF, các node chứa dữ liệu đầu vào và các node chứa dữ liệu đầu ra được kết nối trực tiếp với nhau, đối nghịch với kiến trúc của LSTM hoặc BiLSTM trong đó các đầu vào và đầu ra được kết nối gián tiếp qua các memory cell CRF có thể được sử dụng để gán nhãn tên riêng với đầu vào là các đặc trưng của một từ được rút trích bằng tay như: Chữ cái đầu có được viết hoa hay không? Viết hoa toàn bộ? Là số? Từ đứng trước là từ hoa? Từ đang xem xét? Từ đứng trước và từ đang xét … Để trích xuất được những đặc trưng tốt, cần phải phân tích dữ liệu khá tỉ mỉ và cần
cả những tri thức chuyên gia trong từng miền dữ liệu cụ thể
Huấn luyện mô hình: bước này nhận dữ liệu đầu vào là các đặc trưng đã
được trích xuất và áp dụng một số thuật toán học máy để học ra mô hình phân lớp Các mô hình phân lớp có thể là các luật phân lớp hoặc là các vector trọng
số tương ứng với các đặc trưng đã trích xuất được
Xây dựng mô hình phân lớp: đối với miền ứng dụng đóng (closed
domain), chúng ta có thể giới hạn số lượng ý định của người dùng nằm trong một tập hữu hạn những ý định đã được định nghĩa sẵn, có liên quan đến nghiệp
vụ mà chatbot có thể hỗ trợ Với giới hạn này thì bài toán xác định ý định người dùng có thể quy về bài toán phân loại văn bản [5] Với đầu vào là một câu giao tiếp của người dùng, hệ thống phân lớp sẽ xác định ý định tương ứng với câu
đó trong tập các intent đã được định nghĩa trước
Để xây dựng một mô hình phân lớp ý định người dùng, cần phải có một tập dữ liệu huấn luyện bao gồm các cách diễn đạt khác nhau cho từng ý định
Ví dụ: cùng một ý định hỏi về quy chế cảnh báo học vụ, chúng ta có thể hỏi nhiều cách như sau:
- Em học bị dưới trung bình có bị cảnh báo học vụ không?
- Không đóng tiền học trong 1 năm có bị cảnh cáo không?
- Cảnh báo học vụ khi nào?
2.2.2 Thành phần Quản lý hội thoại (DM)
Trong các phiên trao đổi dài (long conversation) giữa người và chatbot, chatbot sẽ cần ghi nhớ những thông tin về ngữ cảnh (context) hay quản lý các trạng thái hội thoại (dialog state) Vấn đề quản lý hội thoại (dialoge management) khi đó là quan trọng để đảm bảo việc trao đổi giữa người và máy
là thông suốt Chức năng của thành phần quản lý hội thoại là nhận đầu vào từ thành phần NLU, quản lý các trạng thái hội thoại (dialogue state), ngữ cảnh hội thoại (dialogue context), và truyền đầu ra cho thành phần sinh ngôn ngữ (Natural Language Generation, viết tắt là NLG
Trang 25Hình 2.8: Mô hình quản lý trạng thái và quyết định action trong hội thoại
Trạng thái hội thoại (dialog state) được lưu lại và dựa vào tập luật hội thoại (dialog policy) để quyết định hành động tiếp theo cho câu trả lời của bot trong một kịch bản hội thoại, hay hành động (action) chỉ phụ thuộc vào trạng thái (dialog state) trước của nó
Ví dụ module quản lý dialogue trong một chatbot phục vụ đặt vé máy bay cần biết khi nào người dùng đã cung cấp đủ thông tin cho việc đặt vé để tạo một ticket tới hệ thống hoặc khi nào cần phải xác nhận lại thông tin do người dùng đưa vào Hiện nay, các sản phẩm chatbot thường dùng mô hình máy trạng thái hữu hạn (Finite State Automata – FSA), mô hình Frame-based (Slot Filling), hoặc kết hợp hai mô hình này Một số hướng nghiên cứu mới có áp dụng mô hình ANN vào việc quản lý hội thoại giúp bot thông minh hơn
Trang 262.2.2.1 Mô hình máy trạng thái hữu hạn FSA
Hình 2.9: Quản lý hội thoại theo mô hình máy trạng thái hữu hạn FSA [6]
Mô hình FSA quản lý hội thoại đơn giản nhất Ví dụ hệ thống chăm sóc khách hàng của một công ty viễn thông, phục vụ cho những khách hàng than phiền về vấn đề mạng chậm Nhiệm vụ của chatbot là hỏi tên khách hàng, số điện thoại, tên gói Internet khách hàng đang dùng, tốc độ Internet thực tế của khách hàng Hình vẽ minh hoạ một mô hình quản lý hội thoại cho chatbot chăm sóc khách hàng Các trạng thái của FSA tương ứng với các câu hỏi mà dialogue manager hỏi người dùng Các cung nối giữa các trạng thái tương ứng với các hành động của chatbot sẽ thực hiện Các hành động này phụ thuộc phản hồi của người dùng cho các câu hỏi Trong mô hình FSA, chatbot là phía định hướng người sử dụng trong cuộc hội thoại
Ưu điểm của mô hình FSA là đơn giản và chatbot sẽ định trước dạng câu trả lời mong muốn từ phía người dùng Tuy nhiên, mô hình FSA không thực sự phù hợp cho các hệ thống chatbot phức tạp hoặc khi người dùng đưa ra nhiều thông tin khác nhau trong cùng một câu hội thoại Trong ví dụ chatbot ở trên, khi người dùng đồng thời cung cấp cả tên và số điện thoại, nếu chatbot tiếp tục hỏi số điện thoại, người dùng có thể cảm thấy khó chịu
2.2.2.2 Mô hình Frame-based
Mô hình Frame-based (hoặc tên khác là Form-based) có thể giải quyết vấn
đề mà mô hình FSA gặp phải Mô hình Frame-based dựa trên các frame định
Trang 27sẵn để định hướng cuộc hội thoại Mỗi frame sẽ bao gồm các thông tin (slot) cần điền và các câu hỏi tương ứng mà dialogue manager hỏi người dùng Mô hình này cho phép người dùng điền thông tin vào nhiều slot khác nhau trong frame Hình vẽ là một ví dụ về một frame cho chatbot ở trên
Số điện thoại Số điện thoại của quý khách là gì ạ? Tên gói internet Gói Internet mà quý khách đang
dùng là gì ạ?
Tốc độ internet thực tế Tốc độ vào Internet của quý khách
hiện thời là bao nhiêu ạ?
Bảng 2.1: Frame cho chatbot hỏi thông tin khách hàng
Thành phần quản lý dialogue theo mô hình Frame-based sẽ đưa ra câu hỏi cho khách hàng, điền thông tin vào các slot dựa trên thông tin khách hàng cung cấp cho đến khi có đủ thông tin cần thiết Khi người dùng trả lời nhiều câu hỏi cùng lúc, hệ thống sẽ phải điền vào các slot tương ứng và ghi nhớ để không hỏi lại những câu hỏi đã có câu trả lời
Trong các miền ứng dụng phức tạp, một cuộc hội thoại có thể có nhiều frame khác nhau Vấn đề đặt ra cho người phát triển chatbot khi đó là làm sao
để biết khi nào cần chuyển đổi giữa các frame Cách tiếp cận thường dùng để quản lý việc chuyển điều khiển giữa các frame là định nghĩa các luật (production rule) Các luật này dựa trên một số các thành tố như câu hội thoại hoặc câu hỏi gần nhất mà người dùng đưa ra
2.2.3 Thành phần sinh ngôn ngữ (NLG)
NLG là thành phần sinh câu trả lời của chatbot Nó dựa vào việc ánh xạ các hành động của quản lý hội thoại vào ngôn ngữ tự nhiên để trả lời người dùng
Bảng 2.2: Ví dụ sinh ngôn ngữ dựa trên các dữ liệu [7]
Trang 28Có các phương pháp ánh xạ hay dùng là: Template-Base, Plan-based, Class-base
2.2.3.1 Template-based NLG
Phương pháp ánh xạ câu trả lời này là dùng những câu mẫu trả lời của bot đã được định nghĩa từ trước để sinh câu trả lời
product you are looking for
confirm(area=$V) Do you want somewhere in the $V? confirm(food=$V) Do you want a $V restaurant?
confirm(food=$V,area=$W) Do you want a $V restaurant in the
$W
Bảng 2.3: Phương pháp sinh ngôn ngữ dựa trên tập mẫu câu trả lời
- Ưu điểm: đơn giản, kiểm soát dễ dàng Phù hợp cho các bài toán miền
đóng
- Nhược điểm: tốn thời gian định nghĩa các luật, không mang tính tự nhiên
trong câu trả lời Đối với các hệ thống lớn thì khó kiểm soát các luật dẫn đến hệ thống cũng khó phát triển và duy trì
2.2.3.2 Plan-based NLG
Hình 2.10: Phương pháp sinh ngôn ngữ Plan-based
- Ưu điểm: Có thể mô hình hóa cấu trúc ngôn ngữ phức tạp
- Nhược điểm: Thiết kế nặng nề, đòi hỏi phải rõ miền kiến thức
2.2.3.3 Class-based NLG
Hình 2.11: Phương pháp sinh ngôn ngữ Class-based
Trang 29Phương pháp này dựa trên việc cho bot học những câu trả lời đầu vào đã được gán nhãn Ứng với các hành động (action) và thông tin (slot) từ quản lý hội thoại thì bot sẽ đưa ra câu trả lời gần nhất dựa trên tập dữ liệu trả lời được đào tạo trước đó
- Ưu điểm: dễ dàng thực thi
- Nhược điểm: phụ thuộc vào dữ liệu trả lời đã được gán nhãn đào tạo
Hình 2.12: Sơ đồ hoạt động các thành phần của Rasa Framework
Rasa Framework nổi tiếng trong cộng đồng vì một vài lý do sau:
- Rasa thực sự dễ tiếp cận cho người mới bắt đầu, thậm chí là người không biết gì về chatbot hay xử lý ngôn ngữ tự nhiên (NLP) Người sử dụng chỉ việc tập trung xây dựng nội dung kịch bản, nghiệp vụ của chatbot chứ không cần thiết phải quan tâm đến công nghệ xây dựng
- Rasa hoạt động khá tốt và mạnh mẽ, đặc biệt trong vấn đề xác định ý định người dùng (intent) và đối tượng được nhắc đến trong câu (entity) dù dữ liệu bạn thu thập và cung cấp cho rasa là vô cùng ít
Trang 30- Mã nguồn của Rasa là mã nguồn mở, do đó Rasa giúp bạn biết chính xác được bạn đang làm gì với chatbot của mình, thậm chí có thể tùy chỉnh (custom) chatbot theo ý thích của bản thân, ví dụ như: custom action, custom tokenizer, hay cả việc quyết định nền tảng tin nhắn của chatbot custom connector
2.3.2 Các thành phần chính trong Rasa Framework
Rasa Framework bao gổm 3 thành phần chính, giữ vai trò lõi của ứng dụng
là Rasa NLU, Rasa Core và Rasa NLG
Xem sơ đồ luồng hoạt động của Rasa như sau:
Hình 2.13: Luồng hoạt động của các thành phần trong Rasa Framework [8]
2.3.2.1 Thành phần Rasa NLU
Rasa NLU (Natural Language Understanding), đây là thành phần đầu tiên
và đóng vai trò quan trọng trong Rasa Framework Có nhiện vụ xử lý ngôn ngữ
tự nhiên nhằm xác định ý định của người dùng và trích xuất các đặc trưng trong câu hỏi của người dùng
Rasa NLU cho phép người sử dụng có thể cấu hình các pipeline với một quy trình hoàn chỉnh từ lựa chọn các bộ tách từ (Tokenizer), chuẩn hóa (Featurizer), trích xuất thông tin (Extractor) đến các lớp phân loại (Classifier)
Việc cấu hình này được Rasa NLU đơn giản hóa trong file “config.yml” giúp
người lập trình có thể tùy chỉnh theo ý muốn
Trang 31Hình 2.14: File config.yml - quản lý cấu hình trong Rasa Framework
Sau khi thiết lập pipeline theo ý muốn thì người sử dụng có thể thiết lập
bộ các ý định và các câu nói sẽ xác định được ý định đó Mỗi ý định có thể cấu hình theo nhiều biến thể khác nhau Thiết lập ý định người dùng trong file
“nlu.md”
Hình 2.15: File nlu.md - ví dụ về cấu hình ý định người dùng
Sau khi thiết lập bộ ý định người sử dụng, có thể huấn luyện (train) mô
hình với câu lệnh “rasa train nlu”
Trang 322.3.2.2 Thành phần Rasa Core
Đây là thành phần lõi, nơi nhận dữ liệu đầu vào là kết quả của quá trình thực thi Rasa NLU, có vai trò thực hiện việc quản lý các luồng hội thoại Dựa vào các ý định (intent) và các thực thể (entities) đã được xác định ở bước Rasa NLU trước đó, Rasa Core sẽ tiến hành việc quyết định xem sẽ thực hiện hành động nào tiếp theo để trả về phản hồi cho người dùng
Đầu tiên cần thiết lập các thông số policy cần thiết trong file “config.yml”
Có các thông số cơ bản như sau:
Hình 2.16: File config.yml - cấu hình cho Rasa Core
Trong Rasa Framework đã cài đặt sẵn một số policy cơ bản như sau:
- MemoizationPolicy: quyết định message đầu ra dựa vào thông tin của những đoạn hội thoại trước đó
- KerasPolicy: sử dụng mạng LSTM để tính xác suất đưa ra lựa chọn cho message tiếp theo
- MappingPolicy: quyết định message dựa vào dữ liệu đã mapping và trong trường hợp, việc tính xác suất đầu ra không thể vượt được ngưỡng mà FallbackPolicy đề ra, message trả ra sẽ là một utter_fallback kiểu như: "Xin lỗi bot chưa hiểu rõ thông tin bạn nói."
Sau khi thiết lập cấu hình, cần phải khai báo các thông tin cần thiết trong
file “domain.yml”
Trang 33Hình 2.17: Ví dụ thiết lập file domain.yml cho Rasa Core
Sau khi khai báo trong domain.yml, cần phải xây dựng các kịch bản cần thiết cho việc trò chuyện của chatbot
Trang 34Hình 2.18: Ví dụ về kịch bản Xét và công nhận tốt nghiệp
2.3.2.3 Thành phần Custom Action
Framework Rasa có khả năng tùy biến mạnh mẽ khi cung cấp cho người lập trình tính năng có thể viết thêm các hành động tùy biến (custom action), thường các custom action này sẽ có nhu cầu truy vấn đến các API hay cơ sở dữ liệu để có thể thu thập được thêm nhiều dữ liệu phục vụ cho câu phản hồi tới người dùng của chatbot được tốt hơn
Custom action được viết bằng ngôn ngữ lập trình Python Mặc định Rasa Framework cung cấp file “action.py” để hỗ trợ chúng ta làm điều này
Trang 35Hình 2.19: Ví dụ Custom Action gọi API lấy danh sách học phần
Sau khi viết thêm các code cho Custom Action, cần phải thiết lập cổng để
chạy riêng cho dịch vụ action Tùy chỉnh trong file “endpoint.yml”
Hình 2.20: Ví dụ thiết lập cổng chạy Custom Action là 5055
2.3.2.4 Thành phần Rasa NLG
Đây là thành phần sinh ngôn ngữ của Rasa Framework, đảm nhận việc hiển thị phản hồi từ kết quả xử lý của Rasa NLU và Rasa Core đến các cổng thông tin mà người dùng kết nối đến
Trang 36Chương 3 PHƯƠNG PHÁP NGHIÊN CỨU 3.1 Xử lí ngôn ngữ tự nhiên
Xử lý ngôn ngữ tự nhiên (natural language processing - NLP) là một nhánh của trí tuệ nhân tạo tập trung vào các ứng dụng trên ngôn ngữ của con người Trong trí tuệ nhân tạo thì xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất vì nó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ-công cụ hoàn hảo nhất của tư duy và giao tiếp [9]
Hình 3.1: Các bước Tiền xử lý dữ liệu
3.1.1 Làm sạch dữ liệu
Loại bỏ dấu câu, noise trong văn bản Đa phần noise là các thẻ HTML, các đoạn code JavaScript Làm sạch dữ liệu sẽ làm cho khả năng xác định ý định người dùng của chatbot được tăng cao
Ví dụ:
Hình 3.2: Loại bỏ các ký tự gây nhiễu (noise filter)
Trang 37Thông thường, các ký tự gây nhiễu thường là các thẻ HTML hoặc các đoạn code JavaScript khi thu thập dữ liệu từ web Tuy nhiên cũng có thể các ký tự gây nhiễu là những ký tự không có ý nghĩa như ($#^%,.;’”! )
3.1.2 Tách từ
Là quá trình xác định từ đơn, từ ghép, từ dừng, từ không có nghĩa, những
từ sai cú pháp tiếng Việt, từ nối, có trong câu, mục đích là xác định được đâu
là từ trong câu, đối với con người đây là vấn đề đơn giản nhưng đối với máy là một vấn đề phức tạp Trong văn bản tiếng Việt, dấu cách (space) không được
sử dụng như 1 ký hiệu phân tách từ, nó chỉ có ý nghĩa phân tách các âm tiết với nhau Vì thế, để xử lý tiếng Việt, công đoạn tách từ (word segmentation) là 1 trong những bài toán cơ bản và quan trọng bậc nhất
Văn bản tiếng Việt đặt dấu cách giữa các âm tiết chứ không phải giữa các
từ, một từ thì có thể có một hai hoặc nhiều âm tiết nếu có nhiều cách phân chia các âm tiết thành các từ gây ra nhập nhằng, quá trình phân giải này gọi là bài toán tách từ Ví dụ: từ “đất nước” được tạo ra từ 2 âm tiết “đất” và “nước” Cả
2 âm tiết này đều có nghĩa riêng khi đứng độc lập, nhưng khi ghép lại sẽ mang một nghĩa khác Vì đặc điểm này, bài toán tách từ trở thành 1 bài toán tiền đề cho các ứng dụng xử lý ngôn ngữ tự nhiên khác như phân loại văn bản [5], tóm tắt văn bạn, máy dịch tự động,
Một số phương pháp tách từ thường gặp:
Phương pháp ghép cực đại:
Là phương pháp tách từ đầu tiên, đơn giản là tạo ra một từ điển và đặt các
từ này vào một câu sao cho phủ hết được câu đó, phương pháp này có ưu điểm nhanh nhưng rất hạn chế chẳng hạn như độ chính xác thấp, chỉ xử lí những từ
có trong từ điển [10]
Phương pháp đồ thị hóa:
Với mỗi âm tiết có trong từ điển tương ứng một đỉnh, các đỉnh sẽ được tính toán trên tập dữ liệu huấn luyện Chẳng hạn như tần số xuất hiện cạnh nhau thì khả năng liên kết giữa từ loại của hai từ, phương pháp này có hiệu quả nhưng vẫn chưa được đánh giá tốt, phương pháp này cần phải có nguồn dữ liệu lớn, nhưng chương trình chạy mất thời gian [11]
Phương pháp PointWise:
Khắc phục nhược điểm các phương pháp trên, các nhãn được đánh giá một cách độc lập, không tham khảo kết quả các nhãn trước đó Vì vậy phương pháp PointWise chỉ cần một từ điển vừa phải và dễ dàng xác định những từ mới không có trong từ điển, phù hợp với ngôn ngữ tiếng Việt Vì các vị trí được đánh giá độc lập, các đặc trưng chỉ là thông tin văn bản xung quanh vị trí đó nên PointWise thực hiện được những dữ liệu không đầy đủ Các đặc trưng cơ bản
Trang 38của phương pháp PointWise là n-gram chủng loại của âm tiết, n-gram âm tiết
và đặt trưng từ điển [12]
Ví dụ:
Hình 3.3: Ví dụ phân tách từ theo từ loại
Kết quả sẽ được hiển thị dạng: Tôi và anh_ấy là chiến_hữu tốt
3.1.3 Chuẩn hóa từ
Là đưa văn bản từ các dạng không đồng nhất về cùng một dạng Dưới góc
độ tối ưu bộ nhớ lưu trữ và tính chính xác cũng rất quan trọng
bỏ StopWords nhưng có 2 cách chính là:
Dùng từ điển: Cách này đơn giản nhất, chúng ta tiến hành filter văn bản,
loại bỏ những từ xuất hiện trong từ điển StopWords: cậu, của, cứ, dù, nọ, phóc, này, có, kia, để, bỗng dưng, bớ, bởi,
Trang 39Hình 3.4: Loại bỏ stopword bằng cách dùng từ điển
Dựa theo tần suất xuất hiện của từ: Với cách này, chúng ta tiến hành
đếm số lần xuất hiện của từng từ trong data sau đó sẽ loại bỏ những từ xuất hiện nhiều lần (cũng có thể là ít lần)
Hình 3.5: Danh sách 50 từ xuất hiện nhiều lần nhất trong Tiếng Anh [13]
Danh sách các từ stopwords trong tiếng Việt:
Trang 40Bảng 3.1: Danh sách stopwords trong tiếng Việt, xem chi tiết trong đường link tại [14]
3.1.5 Vectơ hóa văn bản
Word Embedding là mô hình xử lý ngôn ngữ tự nhiên (NLP), các từ hoặc
cụm từ được ánh xạ sang các vector số (thường là số thực) Đây là một công cụ đóng vai trò quan trọng đối với hầu hết các thuật toán, kiến trúc Machine Learning, Deep Learning trong việc xử lý Input ở dạng text, do chúng chỉ có thể hiểu được Input ở dạng là số, từ đó mới thực hiện các công việc phân loại.Word
embbding có các mô hình nổi tiếng là One-hot vectơ, word2vec [15] và Glove
One-hot vectơ:
Giả sử chúng ta có từ điển là tập hợp gồm n từ vựng {Tín chỉ, học kỳ, học phần, } Khi đó mỗi từ sẽ được đại diện bởi một giá trị chính là index của nó
Từ “Tín chỉ” có index = 0, “học kỳ” có index = 2 One-hot véc tơ của từ vựng thứ i, i≤ (n - 1) sẽ là vectơ ei= [0, …, 0, 1, 0, …, 0] ∈Rn sao cho các phần
tử eij của véc tơ thoả mãn:
Giả sử ta có danh sách các từ sau: (Học phần có bao nhiêu tín chỉ?) khi
vector hoá từ “có”, ta sẽ được:
Hình 3.6: Vector hóa từ
Word2vec:
Là một ý tưởng được đưa ra bởi Tomas Mikolov- một kỹ sư đang làm tại Google vào năm 2013 đã giải quyết được các vấn đề trên bằng một mô hình hoàn toàn khác Mô hình được sử dụng tốt cho đến ngày nay và được gọi là mô hình Word2vec [15] Word2vec học trực tiếp word vector có số chiều thấp trong quá trình dự đoán các từ xung quanh mỗi từ Đặc điểm của phương pháp này là nhanh hơn và có thể dễ dàng kết hợp một câu, một văn bản mới hoặc thêm vào từ vựng Các word vectors được xác định trong không gian vector sao cho những từ có