Đáp ứng nhu cầu đó, các ứng dụng giao tiếp, mạng xã hội xuất hiện ngày càng nhiều, kéo theo thời lượng sử dụng các ứng dụng này đốt thời gian ngày càng cao vì nhiều mục đích khác nhau nh
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
Nguyễn Du Lịch - 17520096 Nguyễn Duy Minh - 17520754
ĐỒ ÁN 2 XÂY DỰNG ỨNG DỤNG CHATBOT
HỖ TRỢ MÔN HỌC OOP BUIDING CHATBOT APPLICATION
TO SUPPORT LEARNING OOP
GIẢNG VIÊN HƯỚNG DẪN Thạc sĩ: Trần Anh Dũng
TP HỒ CHÍ MINH, 2021
Trang 2LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học
Công nghệ Thông tin – ĐHQG TP.HCM chúng em đã được trang bị các kiến thức cơ
bản, các kỹ năng thực tế để có thể hoàn thành Khóa luận tốt nghiệp của mình
Để hoàn thành khóa luận này, chúng em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo
điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài
liệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin
Chúng em xin gửi lời cảm ơn chân thành đến thầy Trần Anh Dũng đã tận tình giúp
đỡ, định hướng cách tư duy và cách làm việc khoa học Đó là những góp ý hết sức
quý báu không chỉ trong quá trình thực hiện luận văn này mà còn là hành trang tiếp
bước cho chúng em trong quá trình học tập và lập nghiệp sau này
Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa,
bạn bè, tập thể lớp KTPM2017 là những người luôn sẵn sàng sẻ chia và giúp đỡ trong
học tập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau
Trong quá trình làm khóa luận này chúng em không tránh khỏi được những sai sót,
chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để khóa luận
được hoàn thiện hơn
Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng
Trang 3ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng … năm 2021
ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: Xây dựng ứng dụng Chatbot hỗ trợ học môn OOP TÊN ĐỀ TÀI (TIẾNG ANH): Building Chatbot application to support learning
OOP
Cán bộ hướng dẫn: ThS Trần Anh Dũng
Thời gian thực hiện: Từ ngày 10/03/2021 đến ngày 30/06/2021
Sinh viên thực hiện:
Nguyễn Du Lịch – 17520096 Nguyễn Duy Minh – 17520754 Nội dung đề tài
1 Lý do chọn đề tài:
OOP là tên viết tắt của Object-oriented programming – Lập tình hướng đối tượng Đây là một mẫu hình lập trình hết sức quan trọng đối với mọi cá nhân có như cầu học lập trình
Tuy nhiên với những ai chưa từng hoặc ít tiếp xúc với lập trình trước đây, OOP và một môn khó học với nhiều kiến thức mới cùng khái niệm khó khiến việc học môn OOP trở nên dễ nản
Cùng với đó việc internet hiện nay đã và đang mang lại một sự thay đổi to lớn cho
cả nền kinh tế, khoa học, kỹ thuật trên thế giới Đặc biệt là tình hình hiện nay nhu
Trang 4cầu chia sẻ thông tin với tốc độ nhanh chóng, tiện lợi là nhu cầu gần như tất yếu của mỗi người Đáp ứng nhu cầu đó, các ứng dụng giao tiếp, mạng xã hội xuất hiện ngày càng nhiều, kéo theo thời lượng sử dụng các ứng dụng này đốt thời gian ngày càng cao vì nhiều mục đích khác nhau như học tập, giải trí, giao tiếp, …
Chính vì đó chúng em quyết định chọn đề tài này để giúp người dùng mạng xã hội
có một công cụ để học tập, tìm hiểu, giải quyết nhanh các vấn đề trong trong việc học
Tình trạng hiện nay:
chưa trả lời được các câu hỏi phức tạp, câu hỏi nhiều vế, thành phần
trong khi thực tế người dùng không cần nhiều thông tin đến thế
những bạn không có nhu cầu học sâu hay tìm hiểu, tra cứu thông tin
⇒ Vì những lý dó đó nhóm quyết định xây dụng một chatbot giúp hỗ trợ việc học một cách dễ dàng cũng như tra cứu thông tin, giải đề mẫu cũng như cung cấp ví dụ minh họa Qua đó đáp ứng nhu cầu học phi tuyến tính cũng như tuyến tính, luyện tập cũng như tra cứu, tăng trình độ học vấn cho môn học OOP
2 Mục tiêu: bao gồm 2 mục tiêu chính:
1 Xây dựng chatbot:
+ FAQ giải đáp nhanh các thắc mắc chung, giảm tối đa thời gian tiêu tốn cần thiết cho việc tìm kiếm không cần thiết
+ Cung cấp bài tập luyện tập
+ Giải câu hỏi / chấm điểm tự động ngay trên chatbot
+ Áp dụng xử lý ngôn ngữ tự nhiên để giao tiếp
Trang 52 Xây dựng trang web hỗ trợ chatbot: dành cho những tương tác bị giới hạn bởi API chatbot Ví dụ như:
3 Phạm vi:
Phạm vi môi trường: Web
Phạm vi chức năng:
− Đối với chatbot:
+ Có khả năng trả lời các câu hỏi về OOP (khái niệm, định nghĩa, ký hiệu…) + Tìm kiếm và cung cấp các thông tin bài học chi tiết và ví dụ tại trang web chính
+ Chatbot hiểu được tương đối ngôn ngữ tự nhiên
− Đối với ứng dụng Web:
+ Cung cấp lộ trình học OOP
+ Cung cấp các bài học OOP theo chủ đề
+ Cung cấp các chức năng quản lí bài viết, câu hỏi, bài thi, …
4 Đối tượng sử dụng:
giúp đỡ người mới
5 Phương pháp thực hiện:
Phương pháp làm việc:
− Làm việc nhóm 2 thành viên thông qua cả 2 phương thức online và offline dưới
sự hướng dẫn của giảng viên hướng dẫn
Trang 6Phương pháp nghiên cứu:
− Phân tích nhu cầu sử dụng của đối tượng người dùng
− Nghiên cứu tài liệu các công nghệ liên quan
Phương pháp công nghệ:
− Tìm hiểu cách thức xây dựng Messenger Chatbot
− Xây dựng RESTful API để thao tác với dữ liệu
− Xây dựng giao diện Web để tương tác với người dùng và chương trình cho phép tạo dựng các sơ đồ lớp và bài học dưới dạng tương tác trực tiếp
− Tìm hiểu bài toán xử lí ngôn ngữ tự nhiên
7 Kết quả mong đợi:
8 Kế hoạch làm việc:
Thời gian thực hiện từ ngày 10/3/2021 đến ngày 30/6/2021
Nhóm chia thành 2 giai đoạn cụ thể:
Giai đoạn 1: Hoàn thiện các chức năng cơ bản Giai đoạn này gồm 2 sprint:
Thời gian: 10/3/2021 – 15/4/2021
Sprint 1: Tìm hiểu công nghệ
Trang 7Sprint 2: Phân tích yêu cầu và chức năng, xây dựng CSDL, RESTful API, wireframe giao diện
Sprint 3: Xây dựng và phát triển ứng dụng để thực hiện các chức năng ở
- Phân tích yêu cầu và chức năng
- Xây dựng CSDL và RESTful API
- Wireframe giao diện
- Tìm hiểu xử lý ngôn ngữ tự nhiên
5/4/2021
- Xây dựng NodeJS Server
- Xây dựng giao diện Web
- Xây dựng Messenger Chatbot với các chức năng cơ bản
- Áp dụng cơ bản xử lý ngôn ngữ tự nhiên ở mức nhận bi
ết
- Triển khai lần 1
Giai đoạn 2: Hoàn thiện các chức năng trong giai đoạn 1, đồng thời xây dựng các
chức nâng cao như xây dựng lộ trình học, cho phép người dùng xây dựng và đóng góp các ví dụ, …
Giai đoạn này gồm 3 sprint:
Sprint 4: Hoàn thiện các chức năng ở giai đoạn 1
Sprint 5: Xây dựng các chức mở rộng
Trang 8Sprint 6: Triển khai và viết báo cáo
- Cho phép người dùng đóng góp và chỉnh sửa ví dụ
- Quản trị viên: kiểm duyệt nội dung đóng góp
- Tự động đánh giá bài làm người dùng
Sprint 6 1/6/2021
– 21/6/2021
- Triển khai sản phẩm
- Viết báo cáo
9 Phân công công việc
Công việc
Công việc
chung
- Phân tích yêu cầu, chức năng
- Xây dựng CSDL, RESTful API
- Wireframe giao diện
- Tìm hiểu Xử lí Ngôn Ngữ Tự Nhiên
Công việc
cá nhân
- Xây dựng Messenger Chatbot
- Backend: RESTful API
Trang 9- Xử lý ngôn ngữ tự nhiên - Frontend: giao diện người dùng,
quản trị viên
Xác nhận của CBHD
(Ký tên và ghi rõ họ tên)
TP HCM, ngày 6 tháng 3 năm 2021
Trang 10MỤC LỤC
TÓM TẮT KHÓA LUẬN 1
GIỚI THIỆU CHUNG 2
Lý do chọn đề tài 2
Tính năng mới/ khác biệt 2
Đối tượng nghiên cứu 3
Phạm vi nghiên cứu 3
Phương pháp thực hiện 4
KIẾN THỨC NỀN TẢNG 5
Tổng quan về mô hình MVC 5
Khái niệm 5
Cấu trúc mô hình MVC 5
Mô hình MVC trong ứng dụng Web 6
Tổng quan về Nodejs 7
Giới thiệu 7
Tạo sao chọn Nodejs để phát triển server 8
Áp dụng vào đề tài 9
Hệ quản trị cơ sở dữ liệu MongoDB 10
Giới thiệu 10
Ưu điểm của MongoDB 10
VueJS 11
Giới thiệu 11
Vòng đời của VueJS (Vuejs Lifecycle) 12
Ưu nhược điểm của VueJS 15
Trang 11NestJS 15
Giới thiệu 16
Ưu điểm 16
VNTK 17
Giới thiệu 17
Ưu điểm 17
TÌM HIỂU VÀ LỰA CHỌN CÔNG NGHỆ ỨNG DỤNG CHATBOT 18
Tìm hiểu về chatbot 18
Chatbot là gì? 18
Tính ứng dụng 18
Xu hướng phát triển 19
Tìm hiểu về Facebook Messenger 21
Tổng quan 21
Đánh giá 22
Giới thiệu về Chatbot Facebook 22
Cách hoạt động 23
Một số khái niệm cơ bản 23
Áp dụng công nghệ vào chatbot 24
Facebook Api 24
Facebook Graph Api 24
Đánh dấu từ loại 26
Tách câu đa nghĩa 26
Phân loại từ nhanh 27
Trang 12XÂY DỰNG HỆ THỐNG 28
Xây dựng kiến trúc hệ thống 28
Kiến trúc hệ thống Website 28
Kiến trúc hệ thống ChatBot 29
Phân tích thiết kế hệ thống 30
Sơ đồ use case 30
Sơ đồ module 51
Sơ đồ dữ liệu 51
Thiết kế giao diện trang web 63
Sơ đồ thiết kế giao diện trang web 64
Danh sách giao diện trang web 65
Mô tả chi tiết giao diện trang web 67
Thiết kế giao diện chat bot 94
Sơ đồ kịch bản chatbot 97
Kết quả đạt được 98
KẾT LUẬN, HƯỚNG PHÁT TRIỂN 99
Ưu điểm 99
Nhược điểm 99
Kết quả đạt được 99
Về mặt nghiên cứu: 99
Về mặt sản phẩm: 99
Hướng phát triển 101
TÀI LIỆU THAM KHẢO 102
Trang 13DANH MỤC HÌNH ẢNH
Hình 2.1.1-1 Mô hình MVC 5
Hình 2.1.3-1 Mô hình MVC trong lập trình Web 6
Hình 2.2.1-1 Kiến trúc của NodeJS 7
Hình 2.2.3-1 NestJS 9
Hình 2.3.1-1 So sánh mức độ phổ biến của MongoDB 10
Hình 2.4.1-1 VueJS 11
Hình 2.4.1-2 Cấu trúc 1 file.vue 12
Hình 2.4.2-1 Vòng đời của 1 component trong VueJS 14
Hình 0-1 Kiến trúc module hóa của NestJS 16
Hình 3.1.1-1 Cách thức hoạt động của chatbot 18
Hình 3.1.3-1 - Thống kê lượng người dùng của các ứng dụng nhắn tin 20
Hình 3.2.1-1 Lượng người sử dụng Facebook Messenger theo thời gian 21
Hình 3.2.3-1 Chatbot Facebook Messenger 22
Hình 3.2.4-1 Cách hoạt động của Chatbot liên kết với Messenger 23
Hình 3.3.2-1 - Graph API 25
Hình 4.1.1-1 Kiến trúc hệ thống của website 28
Hình 4.1.2-1 Kiến trúc hệ thống Chatbot 29
Hình 4.2.1-1 Sơ đồ Usecase dành cho người dùng 31
Hình 4.2.1-2 Sơ đồ Usecase dành cho người viết bài 32
Hình 4.2.1-3 Sơ đồ Usecase dành cho quản lí 33
Hình 4.2.1-4 Sơ đồ Usecase dành cho admin 34
Hình 4.3.3-1 67
Hình 4.3.3-2 Giao diện Đăng nhập 68
Hình 4.3.3-3 Giao diện Xem bài viết 69
Hình 4.3.3-4 Giao diện Làm bài test 70
Hình 4.3.3-5 Giao diện Kiểm tra kết quả 72
Hình 4.3.3-6 Giao diện Trang cá nhân 74
Trang 14Hình 4.3.3-7 Giao diện Thông tin bài test 75
Hình 4.3.3-8 Giao diện Kết quả bài test 76
Hình 4.3.3-9 Giao diện Quản lí bài viết 78
Hình 4.3.3-10 Giao diện Tạo bài viết 79
Hình 4.3.3-11 Giao diện Chi tiết bài viết 81
Hình 4.3.3-12 Giao diện Bài viết chờ duyệt 82
Hình 4.3.3-13 Giao diện Q&A 84
Hình 4.3.3-14 Giao diện Tạo câu hỏi 85
Hình 4.3.3-15 Giao diện Quản lí bài test 86
Hình 4.3.3-16 Giao diện Tạo bài test 87
Hình 4.3.3-17 Giao diện Cập nhật thông tin quyền 89
Hình 4.3.3-18 Giao diện Duyệt bài viết 90
Hình 4.3.3-19 Giao diện Quản lí người viết bài 91
Hình 4.3.3-20 Giao diện Tạo người viết 92
Hình 4.3.3-21 Giao diện Danh sách quản lí 93
Hình 4.3.3-22 Giao diện Tạo quản lí 94
Hình 4.3.4-1 Giao diện bắt đầu 95
Hình 4.3.4-2 Giao diện thông tin chatbot 95
Hình 4.3.4-3 Giao diện chào mừng 96
Hình 4.3.4-4 Tìm kiếm bài thi 96
Hình 4.3.4-5 Ví dụ về màn hình QnA 96
Hình 4.3.5-1 Kịch bản cơ bản của Chatbot 97
Hình 4.3.5-2 Tìm kiếm bài thi 98
Trang 15DANH MỤC BẢNG
Bảng 4.2.1-1 Danh sách actors 35
Bảng 4.2.1-2 Usecase Đăng nhập 36
Bảng 4.2.1-3 Usecase Tìm kiếm chung 37
Bảng 4.2.1-4 Usecase Xem bài viết 37
Bảng 4.2.1-5 Usecase Làm bài test 38
Bảng 4.2.1-6 Usecase Lưu kết quả bài thi 39
Bảng 4.2.1-7 Usecase Cập nhật thông tin cá nhân 40
Bảng 4.2.1-8 Usecase Tạo bài viết 40
Bảng 4.2.1-9 Usecase Cập nhật bài viết 41
Bảng 4.2.1-10 Usecase Xóa bài viết 42
Bảng 4.2.1-11 Usecase Hủy duyệt bài viết 43
Bảng 4.2.1-12 Usecase Tạo câu hỏi mới 44
Bảng 4.2.1-13 Usecase Cập nhật câu hỏi 44
Bảng 4.2.1-14 Usecase Tạo bài test 45
Bảng 4.2.1-15 Usecase Cập nhật bài test 45
Bảng 4.2.1-16 Usecase Xóa bài test 46
Bảng 4.2.1-17 Usecase Khôi phục bài test 47
Bảng 4.2.1-18 Usecase Quản lí thông tin cá nhân người viết 47
Bảng 4.2.1-19 Duyệt bài viết 48
Bảng 4.2.1-20 Xóa bài viết 49
Bảng 4.2.1-21 Xem thông tin bài duyệt 49
Bảng 4.2.1-22 Quản lí người viết bài 50
Bảng 8.2.3-1 Sơ đồ CSDL của module Test 52
Bảng 4.2.3-2 Bảng TestQuiz 53
Bảng 4.2.3-3 Bảng TestSentence 53
Bảng 4.2.3-4 Bảng TestTopic 54
Bảng 4.2.3-5 Bảng TestResult 54
Bảng 4.2.3-6 Sơ đồ CSDL của module Post 55
Trang 16Bảng 4.2.3-7 Bảng Post 56
Bảng 4.2.3-8 Bảng PostMetadata 56
Bảng 4.2.3-9 Bảng Topic 57
Bảng 4.2.3-10 Bảng PostVerification 58
Bảng 4.2.3-11 Sơ đồ CSDL của module Q&A 58
Bảng 4.2.3-12 Bảng Question 59
Bảng 8.2.3-13 Sơ đồ CSDL của module Menu 59
Bảng 4.2.3-14 Bảng Menu 60
Bảng 4.2.3-15 Sơ đồ CSDL của module RoleManagement 61
Bảng 4.2.3-16 Bảng User 62
Bảng 4.2.3-17 Bảng Creator 63
Bảng 4.2.3-18 Bảng Manager 63
Bảng 4.3.1-1 Sơ đồ màn hình giao diện của ứng dụng 64
Bảng 4.3.2-1 Danh sách màn hình của ứng dụng 67
Bảng 4.3.3-1 Mô tả giao diện Trang chủ 68
Bảng 4.3.3-2 Mô tả giao diện Đăng nhập 69
Bảng 4.3.3-3 Mô tả giao diện Xem bài viết 70
Bảng 4.3.3-4 Mô tả giao diện Làm bài test 72
Bảng 4.3.3-5 Mô tả giao diện Kiểm tra kết quả 73
Bảng 4.3.3-6 Mô tả giao diện Trang cá nhân 75
Bảng 4.3.3-7 Mô tả giao diện Thông tin bài test 76
Bảng 4.3.3-8 Mô tả giao diện Kết quả bài test 77
Bảng 4.3.3-9 Mô tả giao diện Quản lí bài viết 79
Bảng 4.3.3-10 Mô tả giao diện Tạo bài viết 80
Bảng 4.3.3-11 Mô tả giao diện Chi tiết bài viết 82
Bảng 4.3.3-12 Mô tả giao diện Bài viết chờ duỵet 83
Bảng 4.3.3-13 Mô tả giao diện Q&A 85
Bảng 4.3.3-14 Mô tả giao diện Tạo câu hỏi 86
Bảng 4.3.3-15 Mô tả giao diện Quản lí bài test 87
Trang 17Bảng 4.3.3-16 Mô tả giao diện Tạo bài test 88
Bảng 4.3.3-17 Mô tả giao diện Cập nhật thông tin quyền 89
Bảng 4.3.3-18 Mô tả giao diện Duyệt bài viết 90
Bảng 4.3.3-19 Mô tả giao diện Quản lí người viết bài 91
Bảng 4.3.3-20 Mô tả giao diện Tạo người viết 92
Bảng 4.3.3-21 Mô tả giao diện Danh sách quản lí 93
Bảng 4.3.3-22 Mô tả giao diện Tạo quản lí 94
Bảng 4.3.4-1 Danh sách giao diện Chatbot 95
Bảng 4.3.4-2 Mô tả giao diện Chatbot tìm kiếm bài viết 97
Bảng 4.3.4-3 Mô tả giao diện Chatbot tìm kiếm bài thi 97
DANH MỤC TỪ VIẾT TẮT
Interface
Giao diện lập trình ứng dụng
nên một bộ khung và các thư viện lập trình được đóng gói Cung cấp các tính năng có sẵn như mô hình, API và các yếu tố khác
để tối giản cho việc phát triển các ứng dụng web
Protocol
Giao thức truyền siêu văn bản
Notation
Định dạng trao đổi dữ liệu
Trang 18Deploy Tất cả các hoạt động khiến một hệ thống
Trang 19TÓM TẮT KHÓA LUẬN
Khóa luận “Xây dựng ứng dụng Chatbot hỗ trợ học môn OOP” gồm 06 chương:
Chương 1: Giới thiệu về đề tài, đưa ra các điểm nổi bật so với các ứng dụng trước
Tiếp đến là đề xuất các giải pháp để giải quyết các vấn đề đã đặt ra Ngoài ra, chương
1 cũng đề cập đến đối tượng nghiên cứu, phạm vi đề tài, phương pháp nghiên cứu
Chương 2: Trình bày các kiến thức nền tảng liên quan đến ứng dụng
Chương 3: Trình bày chi tiết kiến thức, áp dụng thuật toán và công nghệ liên quan
đến Chatbot Facebook
Chương 4: Trình bày chi tiết quy trình xây dựng hệ thống, từ xác định và phân tích
yêu cầu bài toán cho đến xây dựng CSDL, cuối cùng là xây dựng giao diện cho ứng dụng
Chương 5: Kết luận, rút ra được các ưu nhược điểm của ứng dụng và hướng phát
triển trong tương lai
Trang 20GIỚI THIỆU CHUNG
Lý do chọn đề tài
OOP là tên viết tắt của Object-oriented programming – lập trình hướng đối tượng Đây là một mẫu hình lập trình hết sức quan trọng đối với mọi cá nhân có nhu cầu học programming
Tuy nhiên với những ai chưa từng hoặc ít tiếp xúc với lập trình trước đây, OOP và một môn khó học với nhiều kiến thức mới cùng khái niệm khó khiến việc học môn OOP trở nên dễ nản
Cùng với đó việc internet hiện nay đã và đang mang lại một sự thay đổi to lớn cho cả nền kinh tế, khoa học, kỹ thuật trên thế giới Đặc biệt là tình hình hiện nay nhu cầu chia sẻ thông tin với tốc độ nhanh chóng, tiện lợi là nhu cầu gần như tất yếu của mỗi người Đáp ứng nhu cầu đó, các ứng dụng giao tiếp, mạng xã hội xuất hiện ngày càng nhiều, kéo theo thời lượng sử dụng các ứng dụng này đốt thời gian ngày càng cao vì nhiều mục đích khác nhau như học tập, giải trí, giao tiếp, …
Chính vì đó chúng em quyết định chọn đề tài này để giúp người dùng mạng xã hội có một công cụ để học tập, tìm hiểu, giải quyết nhanh các vấn đề trong trong việc học
Tính năng mới/ khác biệt
Sau khi tham khảo một số chatbot hỗ trợ học OOP hiện nay nhóm nhận thấy các vấn
đề sau:
− Chatbot hỗ trợ học OOP hiện nay chủ yếu chỉ trả lời được câu hỏi đơn giản, chưa trả lời được các câu hỏi phức tạp, câu hỏi nhiều vế, thành phần
− Một số chatbot trả lời bằng cách spam tin nhắn gây lost focus người dùng
− Một số chatbot khác lại lựa chọn trả lời toàn bộ nội dung về một chủ đề, trong khi thực tế người dùng không cần nhiều thông tin đến thế
Từ đó nhóm quyết định thực hiện chatbot với đầy đủ chức năng cơ bản như tra cứu thông tin, ví dụ cũng như thêm vào một số chức năng mới phục vụ việc học và ôn tập
Trang 21Về phần giao diện: Nhóm quyết định sử dụng tương tác chat từ người dùng là chủ yếu, lấy hiểu ý nghĩa câu nói làm gốc thay vi làm hệ thống button menu chọn phức tạp Chỉ hiển thị button ở một số trường hợp đặc biệt với điều kiện lúc này dùng button nhanh hơn chat
Về phần chức năng:
− Kế thừa toàn bộ các chức năng chatbot cũ đã có
− Thêm xử lý câu hỏi nhiều vấn đề
− Thêm chức năng duyệt bài viết, làm bài tập ôn luyện
Đối tượng nghiên cứu
Khoá luận này hướng đến nghiên cứu các đối tượng sau:
− Các công nghệ:
+ Front-end: VueJS
+ Back-end: Nodejs
+ Database: MongoDB
+ Chatbot Facebook Messenger
+ Phân tích ngôn ngữ tự nhiên
+ VNTK
+ IDE: Visual Studio Code
− Đối tượng trong phạm vị đề tài hướng đến:
+ Học sinh, sinh viên bắt đầu học OOP hoặc đã học nhưng chưa nắm rõ
+ Creator muốn đóng góp kiến thức, kinh nghiệm, học vấn, … của bản thân để giúp đỡ người mới
Trang 22+ Có khả năng trả lời các câu hỏi cơ bản về kiến thức OOP (khái niệm, định
nghĩa, ký hiệu, …)
+ Cung cấp thông tin bài học chi tiết + ví dụ mẫu tại trang web chính
+ Hiểu được tương đối ngôn ngữ tự nhiên
− Đối với ứng dụng Web:
+ Cung cấp lộ trình học OOP
+ Cung cấp các bài học OOP ở nhiều mức độ khác nhau
− Cho phép người dùng làm các bài test để kiểm tra khả năng hiểu của người dùng
Phương pháp thực hiện
Phương pháp làm việc:
− Làm việc nhóm 2 thành viên thông qua cả 2 phương thức online và offline dưới
sự hướng dẫn của giảng viên hướng dẫn
Phương pháp nghiên cứu:
− Phân tích nhu cầu sử dụng của đối tượng người dùng
− Nghiên cứu tài liệu các công nghệ liên quan
− Phương pháp thực nghiệm
Phương pháp công nghệ:
− Tìm hiểu cách thức xây dựng Messenger Chatbot
− Tìm hiểu bài toán xử lí ngôn ngữ tự nhiên (Natural Language Processing)
− Xây dựng RESTful API để thao tác với dữ liệu
− Xây dựng website hỗ trợ tương tác giữa người dùng và hệ thống
Trang 24Tầng logic dữ liệu – Model
Tầng Model là trung gian giữa ứng dụng và hệ quản trị cơ sở dữ liệu để cung cấp và quản lí mô hình và các thao tác lên dữ liệu Thông thường, tầng Model sẽ kết nối với một hoặc nhiều cơ sở dữ liệu để thực hiện các thao tác lên dữ liệu
Tầng giao diện – View
Thể hiện giao diện người dùng, là thành phần giao tiếp giữa người dùng (user) và ứng dụng (application)
Mô hình MVC trong ứng dụng Web
Với sự phát triển của các công nghệ xây dựng web ở cả Frontend và Backend, các nhà phát triển có thể xây dựng và phát triển ứng dụng web một cách độc lập nhưng vẫn đảm bảo được tính kiến trúc của ứng dụng
Hình 2.1.3-1 Mô hình MVC trong lập trình Web
Trang 25− Tầng giao diện người dùng (View) sẽ được phát triển độc lập ở phía client sử
dụng các công nghệ Frontend như VueJS, ReactJS, … Nói cách khác, client sẽ được chạy trên 1 server độc lập và có thể tương tác với phía server của backend
− Tầng xử lí (Controller) và logic dữ liệu (Model) sẽ được phát triển độc lập ở
phía server sử dụng các công nghệ Backend như ExpressJS, DotNetCore, Flank,
…
− Sau khi hoàn thành việc phát triển, client sẽ cung cấp 1 bản build hoàn chỉnh để thêm vào phía Server Người dùng sẽ yêu cầu thành phần giao diện thông qua request gửi đến Server
Tổng quan về Nodejs
Giới thiệu
Hình 2.2.1-1 Kiến trúc của NodeJS
NodeJS là một môi trường thực thi mã nguồn mở của Javascript Hiện nay - NodeJS rất phổ biến và được sử dụng trong rất nhiều project có quy mô lớn và nhỏ khác nhau
Trang 26Đặc trưng của NodeJS
Mỗi ứng dụng NodeJS chạy trên một process đơn và không tạo thêm luồng mới cho mỗi request Đây cũng là điểm khác biệt của NodeJS so với các môi trường thực thi
khác như DotNetCore, … Thay vào đó, NodeJS sử dụng cơ chế bất đồng bộ I/O
(non-blocking I/O) để quản lí các request thay vì block chúng nhằm giảm thiểu việc
tốn tài nguyên xử lí Nhờ vào cơ chế này, NodeJS có thể xử lý hàng ngàn kết nối đồng thời với 1 server duy nhất mà không cần nhà phát triển phải bỏ công sức và thời gian
để quản lí các luồng
Tạo sao chọn Nodejs để phát triển server
− Nodejs giúp các ứng dụng có tốc độ xử lý nhanh
− Nodejs có cơ chế non-blocking I/O làm ứng dụng nhẹ nhưng hiệu quả
− NodeJS có thể hoạt động đa nền tảng do đó rất tiện lợi cho việc phát triển ứng dụng nói chung
− NodeJS sử dụng Javascript, ngôn ngữ lập trình được hàng triệu nhà phát triển
sử dụng Có nhiều thư viện và framework mã nguồn mở hỗ trợ mạnh mẽ cho việc phát triển
Trang 27Áp dụng vào đề tài
Hình 2.2.3-1 NestJS
Đối với đề tài đã chọn, nhóm đã sử dụng NestJS, một framework được xây dựng dựa
trên ExpressJS NestJS là một framework vô cùng mạnh mẽ để xây dựng ứng dụng NodeJS và có cung cấp các thư viện hữu ích, qua đó tăng hiệu suất cho quá trình phát triển ứng dụng Cụ thể về NestJS sẽ được trình bày tại phần NestJS
Trang 28Hệ quản trị cơ sở dữ liệu MongoDB
Giới thiệu
Hình 2.3.1-1 So sánh mức độ phổ biến của MongoDB
Hệ quản trị cơ sở dữ liệu MongoDB là một mã nguồn mở NoSQL Thay vì sử dụng các bảng và hàng như trong các cơ sở dữ liệu truyển thống, MongoDB sử dụng
collection và document
Đặc điểm của MongoDB:
− Khác với SQL, MongoDB không cần định nghĩa sẵn các schema, các trường có thể được thêm vào trực tiếp
− Document:
+ Mỗi document sẽ có dạng là các cặp key-value (tương tự như JSON) Các document có thể có các key-value, kích thước, và nội dung khác nhau (Không cố định như SQL)
+ Mỗi trường có thể lưu trữ nhiều loại kiểu dữ liệu từ đơn giản (như number, string) đến phức tạp (Object, Array, …)
− Collection: Mỗi collection sẽ chứa nhiều Document và các phương thức hỗ trợ
thao tác lên dữ liệu
Ưu điểm của MongoDB
− MongoDB lưu trữ dữ liệu dễ dàng, linh hoạt và dễ dàng mở rộng vì dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau
Trang 29− MongoDB có tốc độ truy vấn nhanh hơn so với các cơ sở dữ liệu quan hệ
− MongoDB có khả năng mở rộng tốt thông qua các cluster
VueJS được tạo ra bởi Evan You vào tháng 2/2014 Tới thời điểm hiện tại, VueJS đã
qua 3 phiên bản Phiên bản mới nhất (Vue3) được ra mắt vào 18/9/2020 với khả năng tối ưu hóa và scale cao so với Vue2
VueJS giới thiệu khác niệm Single File Component Mỗi file (có đuôi là vue) sẽ bao
hàm toàn bộ đặc điểm của component bao gồm kết cấu giao diện, logic và style
Trang 30Hình 2.4.1-2 Cấu trúc 1 file.vue
Vòng đời của VueJS (Vuejs Lifecycle)
Mỗi component của Vue sẽ có 1 vòng đời bao gồm các giai đoạn khác nhau (khởi tạo, render, cập nhật, hủy, …) Tại mỗi giai đoạn của vòng đời sẽ có các hook mà nhà phát triển có thể can thiệp để tối ưu hóa component
Trang 32Hình 2.4.2-1 Vòng đời của 1 component trong VueJS
Trang 33Ưu nhược điểm của VueJS
Ưu điểm
− Kích thước nhỏ: VueJS có kích thước rất nhỏ so với các framework khác Qua
đó giảm thiểu kích cỡ download của client và tăng hiệu suất của ứng dụng
− Virtual DOM Renderding: VueJS cung cấp 1 cây DOM (Document Object
Model) ảo hỗ trợ cập nhật và render các phần tử HTML một cách hiệu quả hơn
− Two-way data binding: VueJS hỗ trợ binding dữ liệu 2 chiều (tương tự như
Angular), qua đó giúp quản lý và theo dõi sự thay đổi của dữ liệu và khả năng cập nhật tự động của component
− Single File Component
Trang 34Giới thiệu
NestJS là framework hỗ trợ xây dựng ứng dụng NodeJS một cách hiệu quả và có khả năng mở rộng cao NestJS hỗ trợ TypeScript (ngôn ngữ hướng đối tượng của Javascript) nên có thể tận dụng được những yếu tố của OOP (Object Oriend Programming) và sự linh động của Javascript
NestJS giới thiệu chúng ta những thành phần kiến trúc nhưng module, service, controller hỗ trợ module hóa các chức năng và đảm bảo cho ứng dụng có khả năng
mở rộng và kiểm thử cao
Hình 0-1 Kiến trúc module hóa của NestJS
Ưu điểm
− NestJS cung cấp khả năng module hóa cao Giúp ứng dụng dễ bảo trì và kiểm thử
− Có thể dễ dàng tich hợp các thư viện bên thứ 3 vào trong NestJS
− Hỗ trợ cả kiến trúc monolithic và microservices
Trang 35VNTK
Giới thiệu
Vietnamese NLP Toolkit là bộ thư viện viết bởi tác giả Vũ Bảo Như với nhiều tính năng tích hợp sẵn như Tokenizer, Word Segmentation, POS Tagging, … cực kì hữu dụng trong xử lý ngôn ngữ tự nhiên, hỗ trợ đầy đủ cho Nodejs server và ngôn ngữ Việt Nam
Ưu điểm
− Hỗ trợ đầy đủ tiếng Việt
− Đã build sẵn nhiều tính năng hữu ích
− Tốc độ thực thi cao
Trang 36TÌM HIỂU VÀ LỰA CHỌN CÔNG NGHỆ ỨNG DỤNG CHATBOT
Tìm hiểu về chatbot
Chatbot là gì?
Chatbot là một phần mềm có thể giả lập một cuộc hội thoại hoặc trò chuyện với người dùng bằng ngôn ngữ tự nhiên hoặc các nội dung được lập trình sẵn thông qua ứng dụng, website, ứng dụng mobile hoặc thông qua điện thoại Chúng hợp lý hóa các tương tác giữa con người và dịch vụ, nâng cao trải nghiệm của khách hàng Đồng thời, chúng cung cấp cho các công ty hoặc cửa hàng cơ hội mới để cải thiện quy trình tham gia của khách hàng và hiệu quả hoạt động bằng cách giảm chi phí dịch vụ khách hàng
Cách thức một chatbot hoạt động:
Hình 3.1.1-1 Cách thức hoạt động của chatbot
Như đã được minh họa trên hình, một chatbot sẽ trả về các phản hồi dựa trên dữ liệu đầu vào của người dùng
Tính ứng dụng
Ứng dụng của chatbot hiện nay khá là phổ biến Hầu hết trong các lĩnh vực về kinh doanh, các website hầu hết cũng đã có những chatbot đơn giản hỗ trợ trả lời cho khách hàng những câu hỏi đơn giản Các ứng dụng nhắn tin phổ biến hiện nay như Messenger, Discord, Telegram, … cũng đều cho phép tích hợp chatbot Có thể nói
Trang 37việc đưa chatbot vào ứng dụng nhắn tin cũng là một phần giúp củng cố và nâng cao
vị thế của ứng dụng để cạnh tranh với các đối thủ khác
Chatbot rất đa dạng về mục đính sử dụng tùy thuộc vào lĩnh vực như:
Trang 38Hình 3.1.3-1 - Thống kê lượng người dùng của các ứng dụng nhắn tin
Với lượng người dùng đông đảo này kéo theo lượng tin nhắn được gửi đi cũng khổng
lồ không kém Từ đây ta thấy được cơ hội kinh doanh mới xuất hiện và xem ra chatbot
là giải pháp đầu tiên và đơn giản nhất mà chúng ta có thể vận dụng để tiếp cận thời đại này
Sự phát triển của “NLP” và “NLU”
Trước khi NLP (Natural Language Processing) và NLU (Natural Language Understanding) ra đời, các chatbot thường chủ yếu dùng phương thức command-base (nhập khớp lệnh) để giao tiếp với người dùng Đột nhiên “Cách mạng công nghiệp 4.0” đến và soi sáng con đường phát triển của chatbot, Khi mà các công nghệ như đã được đầu tư mạnh để phát triển và sử dụng các kỹ thuật và công nghệ mới, làm cho
Trang 39nó thông minh hơn và “giống người” hơn Đồng thời tạo ra các công cụ xây dựng chatbot ngày một nhiều và chính xác hơn
Hệ sinh thái, platform
Tất cả các top messenger đều có platform của riêng mình để hỗ trợ cho việc xây dựng chatbot Từ những điều trên, ta có thể khẳng định khả năng phát triển của chatbot hiện nay là cực kỳ mạnh mẽ, xu hướng sẽ hướng đến các phần mềm nhắn tin và các trang web thương mại điện tử
Tìm hiểu về Facebook Messenger
Tổng quan
Facebook Messenger là một ứng dụng trò chuyện của Facebook Nó cho phép người dùng Facebook trò chuyện với mọi người trên nhiều nền tảng
Về số lượng người dùng, theo thống kê ta có bảng đánh giá:
Hình 3.2.1-1 Lượng người sử dụng Facebook Messenger theo thời gian
Sơ đồ cho thấy số lượng người dùng tăng rất nhanh theo thời gian Có thể chatbot còn góp một phần quan trọng trong lĩnh vực truyền thông Vì rất có thể chat bot, trí thông minh nhân tạo trong tương lai, thông qua Messenger có thể cho bạn biết về các thông
Trang 40tin nóng trên mạng xã hội, được nhiều người tìm và chia sẻ tại thời điểm bạn đưa ra câu hỏi
Đánh giá
Sau khi đánh giá các nền tảng có thể phát triển Chatbot, chúng tôi lựa chọn Messenger làm nền tảng chủ yếu vì các lý do sau:
− Lượng người dùng khổng lồ
− Khả năng tùy biến cao
− Giao diện hóa văn bản
− Cho phép can thiệp trực tiếp vào quá trình chatbot vận hành
Giới thiệu về Chatbot Facebook
Hình 3.2.3-1 Chatbot Facebook Messenger
Về mặt kỹ thuật, có thể hiểu đơn giản chatbot là một chương trình được lập trình
sẵn tương tác tự động với người dùng bằng ngôn ngữ tự nhiên dưới giao diện tin nhắn
Chatbot Facebook là một phần mở rộng cho chức năng nhắn tin trên trang Facebook của bạn