1. Trang chủ
  2. » Cao đẳng - Đại học

Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP

120 27 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 120
Dung lượng 3,76 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đá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 2

LỜ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 4

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 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 5

2 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 6

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 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 7

Sprint 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 8

Sprint 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 10

MỤ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 11

NestJS 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 12

XÂ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 13

DANH 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 14

Hì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 15

DANH 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 16

Bả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 17

Bả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 18

Deploy Tất cả các hoạt động khiến một hệ thống

Trang 19

TÓ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 20

GIỚ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 21

Về 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 24

Tầ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 28

Hệ 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 30

Hì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 32

Hì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 34

Giớ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 35

VNTK

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 36

TÌ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 37

việ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 38

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

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 39

nó 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 40

tin 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

Ngày đăng: 05/09/2021, 20:48

HÌNH ẢNH LIÊN QUAN

Tổng quan về mô hình MVC Khái niệm  - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
ng quan về mô hình MVC Khái niệm (Trang 23)
Hình 2.2.3-1. NestJS - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 2.2.3 1. NestJS (Trang 27)
Hình 3.1.1-1. Cách thức hoạt động của chatbot - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 3.1.1 1. Cách thức hoạt động của chatbot (Trang 36)
Hình 4.2.1-3. Sơ đồ Usecase dành cho quản lí - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 4.2.1 3. Sơ đồ Usecase dành cho quản lí (Trang 51)
Hình 4.2.1-4 Sơ đồ Usecase dành cho admin - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 4.2.1 4 Sơ đồ Usecase dành cho admin (Trang 52)
Bảng 4.2.1-1. Danh sách actors - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 1. Danh sách actors (Trang 53)
2a1. Hệ thống chuyển sang màn hình đăng nhập của google  - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
2a1. Hệ thống chuyển sang màn hình đăng nhập của google (Trang 54)
e. Lưu kết quả bài thi - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
e. Lưu kết quả bài thi (Trang 56)
Bảng 4.2.1-5. Usecase Làm bài test - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 5. Usecase Làm bài test (Trang 56)
Bảng 4.2.1-10. Usecase Xóa bài viết - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 10. Usecase Xóa bài viết (Trang 60)
Bảng 4.2.1-11. Usecase Hủy duyệt bài viết - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 11. Usecase Hủy duyệt bài viết (Trang 61)
Bảng 4.2.1-12. Usecase Tạo câu hỏi mới - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 12. Usecase Tạo câu hỏi mới (Trang 62)
Bảng 4.2.1-16 Usecase Xóa bài test - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 16 Usecase Xóa bài test (Trang 64)
Bảng 4.2.1-19 Duyệt bài viết - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 19 Duyệt bài viết (Trang 66)
Bảng 4.2.1-20 Xóa bài viết - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.1 20 Xóa bài viết (Trang 67)
Bảng 4.2.3-11. Sơ đồ CSDL của module Q&A - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.3 11. Sơ đồ CSDL của module Q&A (Trang 76)
Bảng 4.2.3-13 Sơ đồ CSDL của module Menu - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.2.3 13 Sơ đồ CSDL của module Menu (Trang 77)
Hình 4.3.3-3 Giao diện Xem bài viết - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 4.3.3 3 Giao diện Xem bài viết (Trang 87)
Hình 4.3.3-4 Giao diện Làm bài test - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 4.3.3 4 Giao diện Làm bài test (Trang 88)
Hình 4.3.3-7 Giao diện Thông tin bài test - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 4.3.3 7 Giao diện Thông tin bài test (Trang 93)
Hình 4.3.3-11 Giao diện Chi tiết bài viết - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 4.3.3 11 Giao diện Chi tiết bài viết (Trang 99)
Hình 4.3.3-15 Giao diện Quản lí bài test - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Hình 4.3.3 15 Giao diện Quản lí bài test (Trang 104)
Bảng 4.3.3-19 Mô tả giao diện Quản lí người viết bài - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.3.3 19 Mô tả giao diện Quản lí người viết bài (Trang 109)
Bảng 4.3.3-20 Mô tả giao diện Tạo người viết - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.3.3 20 Mô tả giao diện Tạo người viết (Trang 110)
Bảng 4.3.3-21 Mô tả giao diện Danh sách quản lí - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.3.3 21 Mô tả giao diện Danh sách quản lí (Trang 111)
Bảng 4.3.4-1 Danh sách giao diện Chatbot - Đồ án xây DỰNG ỨNG DỤNG CHATBOT hỗ TRỢ môn học OOP
Bảng 4.3.4 1 Danh sách giao diện Chatbot (Trang 113)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w