1. Trang chủ
  2. » Tất cả

Đề tài xây dựng hệ thống hỗ trợ quản lí bán vé xem phim tích hợp khuyến nghị

134 6 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Xây dựng hệ thống hỗ trợ quản lí bán vé xem phim tích hợp khuyến nghị
Tác giả Trần Trí Thức, Nguyễn Khánh Linh
Người hướng dẫn ThS. Nguyễn Thị Thanh Trúc
Trường học Đại Học Công Nghệ Thông Tin
Chuyên ngành Khoa công nghệ phần mềm
Thể loại Đồ án
Năm xuất bản 2022
Thành phố Hồ Chí Minh
Định dạng
Số trang 134
Dung lượng 4,84 MB

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

Cấu trúc

  • Chương 1 GIỚI THIỆU TỔNG QUAN ĐỀ TÀI (16)
    • 1.1 Lý do chọn đề tài (16)
    • 1.2 Mục tiêu (16)
    • 1.3 Phạm vi (17)
    • 1.4 Đối tượng (17)
    • 1.5 Phương pháp thực hiện (18)
    • 1.6 Công nghệ sử dụng (18)
    • 1.7 Kết quả mong đợi (18)
    • 1.8 Quy trình thực hiện (18)
  • Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ (20)
    • 2.1 Lý thuyết (20)
      • 2.1.1 Recomment System (20)
      • 2.1.2 Chatbot (26)
    • 2.2 Công nghệ sử dụng (27)
      • 2.2.1 Framework (27)
      • 2.2.2 Thư viện (30)
      • 2.2.3 Database (38)
      • 2.2.4 Tiêu chuẩn (39)
    • 2.3 Hỗ trợ thanh toán trực tuyến (41)
    • 2.4 Google Trends (46)
  • Chương 3 PHÂN TÍCH BÀI TOÁN (48)
    • 3.1 Nghiệp vụ (48)
    • 3.2 Yêu cầu tính năng (49)
    • 3.3 Phân tích yêu cầu chức năng (50)
      • 3.3.1 Admin (50)
      • 3.3.2 Manager (50)
      • 3.3.3 Censor (51)
      • 3.3.4 Customer (51)
    • 3.4 Phân tích yêu cầu phi chức năng (52)
    • 3.5 Phân tích yêu cầu người dùng (52)
    • 3.6 Mô hình use case toàn hệ thống (53)
    • 3.7 Một số mô hình Use case của hệ thống (54)
      • 3.7.1 Use case Đăng nhập (54)
      • 3.7.2 Use case Đăng kí (55)
      • 3.7.3 Use case Chat bot Shemina (55)
      • 3.7.4 Use case Quản lí suất chiếu (57)
      • 3.7.5 Use case Quản lí rạp (58)
      • 3.7.6 Use case Quản lí phòng (59)
      • 3.7.7 Use case Quản lí bài đăng (60)
      • 3.7.8 Use case Bình luận bài đăng (61)
      • 3.7.9 Use case Tìm phim (61)
      • 3.7.10 Use case Tìm diễn viên (62)
      • 3.7.11 Use case Đặt vé (62)
      • 3.7.12 Use case Gợi ý phim (63)
  • Chương 4 THIẾT KẾ HỆ THỐNG (64)
    • 4.1 DFD (64)
      • 4.1.1 Đăng nhập (64)
      • 4.1.2 Đăng kí (65)
      • 4.1.3 Cập nhật thông tin cá nhân (65)
      • 4.1.4 Thanh toán (66)
      • 4.1.5 Tìm diễn viên (66)
      • 4.1.6 Tìm phim (67)
      • 4.1.7 Thêm suất chiếu (68)
      • 4.1.8 Sửa suất chiếu (69)
      • 4.1.9 Xoá suất chiếu (70)
      • 4.1.10 Gợi ý phim (71)
    • 4.2 Thiết kế xử lí (73)
      • 4.2.1 Activity Đăng nhập (74)
      • 4.2.2 Activity Đăng kí (75)
      • 4.2.3 Activity Chatbot (76)
      • 4.2.4 Activity Thêm suất chiếu (78)
      • 4.2.5 Activity Sửa suất chiếu (79)
      • 4.2.6 Activity Xoá suất chiếu (80)
      • 4.2.7 Activity Bình luận (81)
      • 4.2.8 Activity Đặt vé (82)
      • 4.2.9 Activity Tìm phim (83)
      • 4.2.10 Activity Tìm diễn viên (83)
      • 4.2.11 Activity Gợi ý phim (84)
    • 4.3 Thiết kế cơ sở dữ liệu (87)
      • 4.3.1 Lược đồ cơ sở dữ liệu (87)
      • 4.3.2 Mô tả các bảng dữ liệu (87)
    • 4.4 Thiết kế kiến trúc hệ thống (94)
      • 4.4.1 Kiến trúc tổng thể (94)
      • 4.4.2 Kiến trúc thư mục (95)
    • 4.5 Thiết kế giao diện (98)
      • 4.5.1 Sơ đồ liên kết màn hình (98)
      • 4.5.2 Mô tả màn hình (103)
  • Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (131)
    • 5.1 Kết quả đạt được (131)
    • 5.2 Thuận lợi và khó khăn (131)
      • 5.2.1 Thuận lợi (131)
      • 5.2.2 Khó khăn (132)
    • 5.3 Hướng phát triển (132)
  • TÀI LIỆU THAM KHẢO (133)

Nội dung

Về phía công ty: Admin sẽ là người có quyền hạn cao nhất, quản lí dữ liệu và nhân viên khác Manager là người quản lí dữ liệu phim, xuất chiếu, rạp … Censor là người kiểm duyệt các bài đă

Trang 1

Sinh viên thực hiện:

19522321 – Trần Trí Thức

19520145 – Nguyễn Khánh Linh

Thành phố Hồ Chí Minh, tháng 09 năm 2022

Trang 2

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Sinh viên thực hiện:

19522321 – Trần Trí Thức

19520145 – Nguyễn Khánh Linh

Thành phố Hồ Chí Minh, tháng 09 năm 2022

Trang 3

ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG HỖ TRỢ QUẢN LÍ BÁN VÉ XEM PHIM TÍCH HỢP KHUYẾN NGHỊ

Cán bộ hướng dẫn: ThS Nguyễn Thị Thanh Trúc

Thời gian thực hiện: Từ ngày 05/09/2022 đến ngày 31/12/2022

Sinh viên thực hiện:

cứu thông tin; ứng dụng Recommend system gợi ý phim cho khách hàng:

Giúp khách hàng có thể xem thông tin bộ phim, bình luận về phim cũng như thực hiện thao tác đặt vé, đánh giá phim

Hỗ trợ việc tìm kiếm theo nhiều bộ lọc khác nhau

Có hệ thống quản lí dữ liệu: quản lí phim, các cụm rạp, nhân viên, các bài bình luận, các đơn hàng đã đặt, thông tin cá nhân…

Thực hiện kiểm duyệt đối với các bài bình luận phim

Chatbot tư vấn gợi ý phim cho khách hàng

Recommed system gợi ý phim liên quan đến khách hàng

Phạm vi:

Đề tại xây dựng một website cung cấp một số tính năng cơ bản về đặt vé xem phim online với các phân quyền chính:

Trang 4

Về phía công ty:

Admin sẽ là người có quyền hạn cao nhất, quản lí dữ liệu và nhân viên khác

Manager là người quản lí dữ liệu phim, xuất chiếu, rạp …

Censor là người kiểm duyệt các bài đăng từ khách hàng

Về phía khách hàng:

Customer là người đặt vé, thanh toán và đăng các bài bình luận phim trên website

Sử dụng chatbot tra cứu thông tin

Hệ thống đề xuất các phim theo hành vi của người dùng

Đối tượng sử dụng:

Người dùng muốn xem thông tin các bộ phim, các bài bình luận, có nhu cầu đặt vé xem phim

Sử dụng chatbot tư vấn trực tuyến

Hệ thống đợi ý phim theo hành vi của khách hàng

Admin quản lí các nhân viên, cụm rạp; thống kê, báo cáo doanh thu

Nhân viên kiểm tra đơn hàng, giải đáp thắc mắc của khách hàng

Người kiểm duyệt kiểm tra nội dung các bài bình luận phim theo quy định

Phương pháp thực hiện:

Tìm hiểu, phân tích quy trình xây dựng một website, hệ thống gợi ý bằng các công nghệ đã đề ra

Phân tính, đánh giá các ứng dụng tương tự

Khảo sát lấy ý kiến người dùng

Kết quả mong đợi:

Trang 5

Biết được quy trình xây dựng một website cơ bản thông qua các công nghệ đã đề ra

Biết được thủ tục thanh toán, quản lí hệ thống quản lí xem phim

Xây dựng được một ứng dụng website đáp ứng gợi được việc ý phim và chatbot

Wibsite có khả năng mở rộng trong tương lai

Trang 6

LỜI CẢM ƠN

Đồ án với đề tài “XÂY DỰNG HỆ THỐNG HỖ TRỢ ĐĂT VÉ XEM PHIM TÍCH HỢP KHUYẾN NGHỊ” là minh chứng cho quá trình cố gắng không ngừng trong việc tìm tòi, học hỏi khi học tập tại trường Đại học Công nghệ Thông tin Thể hiện khả năng của bản thân trong việc áp dụng kiến thức chuyên môn vào giải quyết bài toán thực tế

Trong quá trình thực hiện đồ án, em đã nhận được sự hướng dẫn tận tình từ cô Một cách đặc biệt, em xin được gửi lời cảm ơn chân thành đến:

Các thầy cô trường Đại học Công nghệ Thông Tin nói chung và Cô Nguyễn Thị Thanh Trúc nói riêng đã tận tình truyền đạt kiến thức tới em trong những năm học tập tại trường

Đó là tài sản quý báu đã giúp em hoàn thành khoá luận và cũng là hành trang cho con đường sự nghiệp của bản thân sau này

Em xin được gửi lời cảm ơn sâu sắc tới ThS Nguyễn Thị Thanh Trúc, người đã trực tiếp hướng dẫn, chỉ bảo, giúp đỡ em những lúc khó khăn, đưa ra những lời khuyên bổ ích để khoá luận được hoàn thành đúng tiến độ và đáp ứng các yêu cầu đề ra ban đầu

Các thành viên trong nhóm đã luôn nổ lực phấn đấu, lắng nghe và luôn sẵn sàng hỗ trợ nhau trong suốt cả quá trình học tập và thực hiện đồ án Để đạt được kết quả như ngày hôm nay

Lời cuối cùng, em xin dành lời cảm ơn gửi tới gia đình, anh chị, bạn bè đã luôn bên cạnh

để động viên và đóng góp ý kiến trong quá trình hoàn thành đồ án này

Thành phố Hồ Chí Minh, tháng 12 năm 2022

Sinh viên 1 Sinh viên 2

Trần Trí Thức Nguyễn Khánh Linh

Trang 7

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 8

DANH MỤC HÌNH ẢNH

Hình 1 Phân loại Recommend System 19

Hình 2 Mô tả thuật toán 21

Hình 3 Ma trận dữ liệu 22

Hình 4 Flask 26

Hình 5 ReactJs 28

Hình 6 ExpressJs 28

Hình 7 Pandas 29

Hình 8 NumPy 30

Hình 9 ScikitsLearn 31

Hình 10 SciPy 33

Hình 11 Mongoose 34

Hình 12 Redux 34

Hình 13 NodeMailer 35

Hình 14 AXIOS 36

Hình 15 MongoDB 37

Hình 16 Cloudinary 38

Hình 17 JWT 39

Hình 18 Sơ đồ của JWT 39

Hình 19 Hình ảnh thực tế JWT 40

Hình 20 Paypal tiêu chuẩn 41

Hình 21 Paypal nâng cao 42

Hình 22 Paypal tuỳ chỉnh 43

Hình 23 Cách thức hoạt động giao dịch Paypal 44

Hình 24 Cách thức hoạt động khi lập hoá đơn Paypal 45

Hình 25 Google Trends 46

Hình 26 Sơ đồ phân rã chức năng Admin 49

Hình 27 Sơ đồ phân rã chức năng manager 49

Hình 28 Sơ đồ phân rã chức năng censor 50

Hình 29 Sơ đồ phân rã chức năng customer 50

Hình 30 Usecase toàn hệ thống 52

Hình 31 Usecase Đăng nhập 53

Hình 32 Usecase đăng kí 54

Hình 33 Usecase chatbot Shinema 54

Hình 34 Usecase chatbot 55

Hình 35 Usecase Quản lí suất chiếu 56

Hình 36 Usecase Quản lí rạp 57

Hình 37 Usecase Quản lí phòng 58

Hình 38 Usecase Quản lí bài đăng 59

Trang 9

Hình 39 Usecase Bình luận 60

Hình 40 Usecase Tìm phim 60

Hình 41 Usecase tìm diễn viên 61

Hình 42 Usecase Đặt vé 61

Hình 43 Usecase Gợi ý phim 62

Hình 44 Sơ đồ DFD đăng nhập 63

Hình 45 Sơ đồ DFD đăng kí 64

Hình 46 Sơ đồ DFD chỉnh sửa thông tin cá nhân 64

Hình 47 Sơ đồ DFD thanh toán 65

Hình 48 Sơ đồ DFD tìm diễn viên 65

Hình 49 Sơ đồ DFD tìm phim 66

Hình 50 Sơ đồ DFD thêm suất chiếu 67

Hình 51 Sơ đồ DFD sửa suất chiếu 68

Hình 52 Sơ đồ DFD xoá suất chiếu 69

Hình 53 Sơ đồ DFD Gợi ý dựa vào nội dung tương tự 70

Hình 54 Sơ đồ DFD Gợi ý phim dựa vào hành vi của các người dùng tương tự khác 71

Hình 55 Sơ đồ DFD dựa vào xu hướng 72

Hình 56 Activity Đăng nhập 73

Hình 57 Activity Đăng kí 74

Hình 58 Activity Chatbot 75

Hình 59 Activity Chatbot 76

Hình 60 Activity Thêm suất chiếu 77

Hình 61 Activity Sửa suất chiếu 78

Hình 62 Activity Xoá suất chiếu 79

Hình 63 Activity Bình luận 80

Hình 64 Activity Đặt vé 81

Hình 65 Activity Tìm phim 82

Hình 66 Activity Tìm diễn viên 82

Hình 67 Activity gợi ý phim tương tự 83

Hình 68 Gợi ý phim dựa vào hành vi người dùng tương tự 84

Hình 69 Gợi ý phim theo xu hướng 85

Hình 70 Lược đồ cơ sở dữ liệu 86

Hình 71 Kiến trúc tổng thể 93

Hình 72 Thư mục client 94

Hình 73 Thư mục server 95

Hình 74 Thư mục server Python 96

Hình 75 Sơ đồ liên kết màn hình admin 97

Hình 76 Sơ đồ liên kết màn hình manager 98

Hình 77 Sơ đồ liên kết màn hình censor 99

Hình 78 Sơ đồ liên kết màn hình customer 102

Trang 10

Hình 79 Màn hình chính 102

Hình 80 Màn hình chính 103

Hình 81 Màn hình chính 104

Hình 82 Màn hình chính 105

Hình 83 Màn hình chính 106

Hình 84 Màn hình chi tiết phim 107

Hình 85 Màn hình chi tiết phim 108

Hình 86 Màn hình chi tiết phim 109

Hình 87 Màn hình chi tiết phim 110

Hình 88 Màn hình chi tiết diễn viên 111

Hình 89 Màn hình chi tiết diễn viên 112

Hình 90 Màn hình chi tiết diễn viên 113

Hình 91 Màn hình thanh toán 114

Hình 92 Màn hình thanh toán 116

Hình 93 Màn hình thanh toán 117

Hình 94 Màn hình thanh toán 119

Hình 95 Danh sách suất chiếu 120

Hình 96 Màn hình thêm suất chiếu 122

Hình 97 Màn hình review phim 124

Hình 98 Màn hình chatbot 126

Hình 99 Màn hình xu hướng 127

Hình 100 Màn hình Report 128

Trang 11

DANH MỤC BẢNG BIỂU

Bảng 1 Phân công công việc 17

Bảng 2 Sandbox account 41

Bảng 3 Bảng nghiệp vụ 47

Bảng 4 Bảng dữ liệu Suất chiếu 86

Bảng 5 Bảng dữ liệu DateTime 87

Bảng 6 Bảng dữ liệu User 87

Bảng 7 Bảng dữ liệu Ticket 88

Bảng 8 Bảng dữ liệu Invoice 89

Bảng 9 Bảng dữ liệu Theater 90

Bảng 10 Bảng dữ liệu Room 90

Bảng 11 Bảng dữ liệu Review 91

Bảng 12 Bảng dữ liệu Comment 92

Bảng 13 Bảng mô tả màn hình chính 102

Bảng 14 Bảng mô tả biến cố màn hình chính 103

Bảng 15 Bảng mô tả màn hình chính 103

Bảng 16 Bảng mô tả biến cố màn hình chính 104

Bảng 17 Bảng mô tả màn hình chính 104

Bảng 18 Bảng mô tả biến cố màn hình chính 105

Bảng 19 Bảng mô tả màn hình chính 105

Bảng 20 Bảng mô tả biến cố màn hình chính 106

Bảng 21 Bảng mô tả màn hình chính 106

Bảng 22 Bảng mô tả biến cố màn hình chính 107

Bảng 23 Bảng mô tả màn hình chính 107

Bảng 24 Bảng mô tả biến cố màn hình chính 108

Bảng 25 Bảng mô tả màn hình chính 109

Bảng 26 Bảng mô tả biến cố màn hình chính 109

Bảng 27 Bảng mô tả màn hình chính 109

Bảng 28 Bảng mô tả biến cố màn hình chính 110

Bảng 29 Bảng mô tả màn hình chính 110

Bảng 30 Bảng mô tả biến cố màn hình chính 111

Bảng 31 Bảng mô tả màn hình chính 111

Bảng 32 Bảng mô tả biến cố màn hình chính 112

Bảng 33 Bảng mô tả màn hình chính 112

Bảng 34 Bảng mô tả biến cố màn hình chính 113

Bảng 35 Bảng mô tả màn hình chính 113

Bảng 36 Bảng mô tả biến cố màn hình chính 114

Trang 12

Bảng 37 Bảng mô tả màn hình chính 114

Bảng 38 Bảng mô tả biến cố màn hình chính 115

Bảng 39 Bảng mô tả màn hình chính 116

Bảng 40 Bảng mô tả biến cố màn hình chính 116

Bảng 41 Bảng mô tả màn hình chính 117

Bảng 42 Bảng mô tả biến cố màn hình chính 118

Bảng 43 Bảng mô tả màn hình chính 119

Bảng 44 Bảng mô tả biến cố màn hình chính 119

Bảng 45 Bảng mô tả màn hình danh sách suất chiếu 120

Bảng 46 Bảng mô tả danh sách biến cố 121

Bảng 47 Bảng mô tả màn hình thêm suất chiếu 122

Bảng 48 Bảng mô tả biến cố màn hình thêm suất chiếu 123

Bảng 49 Bảng mô tả màn hình thêm review phim 124

Bảng 50 Bảng mô tả biến cố màn hình thêm review phim 125

Bảng 51 Bảng mô tả màn hình chatbot 126

Bảng 52 Bảng mô tả biến cố màn hình chatbot 127

Bảng 53 Bảng mô tả màn hình xu hướng 127

Bảng 54 Bảng mô tả biến cố màn hình xu hướng 128

Bảng 55 Bảng mô tả Màn hình report 128

Bảng 56 Bảng mô tả biến cố màn hình Report 129

Trang 13

MỤC LỤC

ĐỀ CƯƠNG CHI TIẾT 2

LỜI CẢM ƠN 5

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 6

Chương 1 GIỚI THIỆU TỔNG QUAN ĐỀ TÀI 15

1.1 Lý do chọn đề tài 15

1.2 Mục tiêu 15

1.3 Phạm vi 16

1.4 Đối tượng 16

1.5 Phương pháp thực hiện 17

1.6 Công nghệ sử dụng 17

1.7 Kết quả mong đợi 17

1.8 Quy trình thực hiện 17

Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ 19

2.1 Lý thuyết 19

2.1.1 Recomment System 19

2.1.2 Chatbot 25

2.2 Công nghệ sử dụng 26

2.2.1 Framework 26

2.2.2 Thư viện 29

2.2.3 Database 37

2.2.4 Tiêu chuẩn 38

2.3 Hỗ trợ thanh toán trực tuyến 40

2.4 Google Trends 45

Chương 3 PHÂN TÍCH BÀI TOÁN 47

3.1 Nghiệp vụ 47

3.2 Yêu cầu tính năng 48

3.3 Phân tích yêu cầu chức năng 49

3.3.1 Admin 49

3.3.2 Manager 49

Trang 14

3.3.3 Censor 50

3.3.4 Customer 50

3.4 Phân tích yêu cầu phi chức năng 51

3.5 Phân tích yêu cầu người dùng 51

3.6 Mô hình use case toàn hệ thống 52

3.7 Một số mô hình Use case của hệ thống 53

3.7.1 Use case Đăng nhập 53

3.7.2 Use case Đăng kí 54

3.7.3 Use case Chat bot Shemina 54

3.7.4 Use case Quản lí suất chiếu 56

3.7.5 Use case Quản lí rạp 57

3.7.6 Use case Quản lí phòng 58

3.7.7 Use case Quản lí bài đăng 59

3.7.8 Use case Bình luận bài đăng 60

3.7.9 Use case Tìm phim 60

3.7.10 Use case Tìm diễn viên 61

3.7.11 Use case Đặt vé 61

3.7.12 Use case Gợi ý phim 62

Chương 4 THIẾT KẾ HỆ THỐNG 63

4.1 DFD 63

4.1.1 Đăng nhập 63

4.1.2 Đăng kí 64

4.1.3 Cập nhật thông tin cá nhân 64

4.1.4 Thanh toán 65

4.1.5 Tìm diễn viên 65

4.1.6 Tìm phim 66

4.1.7 Thêm suất chiếu 67

4.1.8 Sửa suất chiếu 68

4.1.9 Xoá suất chiếu 69

4.1.10 Gợi ý phim 70

Trang 15

4.2 Thiết kế xử lí 72

4.2.1 Activity Đăng nhập 73

4.2.2 Activity Đăng kí 74

4.2.3 Activity Chatbot 75

4.2.4 Activity Thêm suất chiếu 77

4.2.5 Activity Sửa suất chiếu 78

4.2.6 Activity Xoá suất chiếu 79

4.2.7 Activity Bình luận 80

4.2.8 Activity Đặt vé 81

4.2.9 Activity Tìm phim 82

4.2.10 Activity Tìm diễn viên 82

4.2.11 Activity Gợi ý phim 83

4.3 Thiết kế cơ sở dữ liệu 86

4.3.1 Lược đồ cơ sở dữ liệu 86

4.3.2 Mô tả các bảng dữ liệu 86

4.4 Thiết kế kiến trúc hệ thống 93

4.4.1 Kiến trúc tổng thể 93

4.4.2 Kiến trúc thư mục 94

4.5 Thiết kế giao diện 97

4.5.1 Sơ đồ liên kết màn hình 97

4.5.2 Mô tả màn hình 102

Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 130

5.1 Kết quả đạt được 130

5.2 Thuận lợi và khó khăn 130

5.2.1 Thuận lợi 130

5.2.2 Khó khăn 131

5.3 Hướng phát triển 131

TÀI LIỆU THAM KHẢO 132

Trang 16

Chương 1 GIỚI THIỆU TỔNG QUAN ĐỀ TÀI

1.1 Lý do chọn đề tài

Khách quan:

Trong cuộc sống hiện đại ngày nay, các hoạt động giải trí ngày càng được trú trọng Trong

số đó, xem phim là một hoạt động không thể không đề cập đến Khách hàng thường đến các rạp chiếu phim, chọn phim và tiến hành thanh toán Nhưng trong thời đại phát triển, nhu cầu của họ ngày càng cao, họ cần các chức năng xem đánh giá, giới thiệu về bộ phim

để lựa chọn được phim ưng ý nhất, thanh toán online để tiết kiệm thời gian nhất Vấn đề

đó đòi hỏi các công ty phải có các hệ thống đáp ứng được nhu cầu khách hàng Nắm bắt được vấn đề này, nhóm chúng em tiến hành xây dựng một website để người dùng có thể truy cập nhanh chóng mà không cần tải về điện thoại, họ có thể xem hình ảnh, trailer, đánh giá từ những người xem trước để có thể chọn được phim ưng ý nhất và thanh toán online một cách nhanh chóng Hơn thế nữa, khách hàng cần được gợi ý những bộ phim được cho rằng phù hợp với cá nhân họ một cách tự động dựa vào những trải nghiệm cá nhân họ trên

hệ thống và cả những người dùng tương tự Ngoài ra, hệ thống cần gợi ý những phim liên quan đến những vấn đề đang nổi cộm trong xã hội

Chủ quan:

Trong suốt quá trình học tập, nhóm chúng em muốn được trải nghiệm các đề tài khác nhau

và hoạt động trên nhiều nền tảng Cảm thấy hứng thú với công nghệ web và sở thích xem phim, nhóm đã đề xuất ý tưởng xây dựng một website về sở thích của mình Đây là trãi nghiệm lần đầu của nhóm về việc xây dựng một website hoàn chỉnh Ngoài ra, nhóm ấp ủ một sản phẩm hoàn thiện hơn, với việc nghiên cứu và xây dựng các giải pháp cho một hệ thống tự động, không cần tốn nhiều thời gian và công sức của người sử dụng mà vẫn mang đến sự tiện lợi

1.2 Mục tiêu

• Hoàn thiện thêm ứng dụng website với giao diện thân thiện, màu sắc hài hòa, bố cục hợp lí

Trang 17

• Đáp ứng được các tính năng cần thiết với ngôn ngữ Javascript, công nghệ mới ReatcJS, ExpressJS và chuẩn bảo mật JWT

• Giúp khách hàng có thể xem thông tin bộ phim, bình luận về phim cũng như thực hiện thao tác đặt vé, đánh giá phim

• Hỗ trợ việc tìm kiếm theo nhiều bộ lọc khác nhau

• Có hệ thống quản lí dữ liệu: quản lí phim, các cụm rạp, nhân viên, các bài

• bình luận, các đơn hàng đã đặt, thông tin cá nhân

• Thực hiện kiểm duyệt đối với các bài bình luận phim

• Hỗ trợ quản lí thống kê doanh thu, báo cáo

• Nghiên cứu, phát triển các thuật toán, giải pháp với ngôn ngữ Python, công nghệ

• Gợi ý khách hàng các bộ phim có nội dung tương tự với một bộ phim cụ thể

• Đưa ra các phim khách hàng có thể thích dựa vào hành vi của các khách hàng tương

• Có nội dung tương tự với một bộ phim cụ thể

• Các phim khách hàng có thể thích dựa vào hành vi của các khách hàng tương tự

• Dựa vào những vấn đề nổi cộm trong đời sống – xã hội hiện nay

1.4 Đối tượng

• Người dùng muốn xem thông tin các bộ phim, các bài bình luận, có nhu cầu đặt vé xem phim

• Admin quản lí các nhân viên, cụm rạp; thống kê, báo cáo doanh thu

• Nhân viên kiểm tra đơn hàng, giải đáp thắc mắc của khách hàng

• Người kiểm duyệt kiểm tra nội dung các bài bình luận phim theo quy định

Trang 18

1.5 Phương pháp thực hiện

• Tìm hiểu, phân tích quy trình xây dựng một website bằng các công nghệ đã đề ra

• Phân tính, đánh giá các ứng dụng tương tự

• Tìm hiểu tổng quan về Recommend System và các thuật toán liên quan

• Chatbot: Dialogflow, Kommunicate

1.7 Kết quả mong đợi

• Biết được quy trình xây dựng một website cơ bản thông qua các công nghệ đã đề ra

• Website có khả năng mở rộng trong tương lai

• Có khả năng nghiên cứu, phân tích khi gặp một bài toán mới

Cả nhóm

lại Đồ án 1

- Tìm hiểu tổng quan về

Trang 19

Recommended System

- Xây dựng cơ sở

dữ liệu

5 + 6 - Tìm hiểu Content

based recommender systems

- Tìm hiểu

Collaborative filtering recommender systems

- Soạn báo cáo

Trang 20

Amazon sử dụng nó để đề xuất sản phẩm cho khách hàng

Netflix sử dụng gợi ý phim cho người dùng

YouTube sử dụng nó để đề xuất các video và quyết định video sẽ phát tiếp theo trên chế

độ tự động phát

Facebook sử dụng nó để gợi ý kết bạn, đề xuất các trang để thích và mọi người theo dõi

Phân loại:

Hình 1 Phân loại Recommend System

Nhìn chung, hệ thống Recommender System có thể được chia thành 4 loại chính:

Trang 21

Simple Recommenders: Đưa ra các đề xuất tổng quát cho mọi người dùng, dựa trên mức

độ phổ biến và/hoặc thể loại phim Ý tưởng cơ bản đằng sau hệ thống này là những bộ phim nổi tiếng hơn và được giới phê bình đánh giá cao hơn sẽ có xác suất được khán giả bình thường thích cao hơn

Content-based Recommenders: Đề xuất các mặt hàng/phim tương tự dựa trên một mặt

hàng/phim cụ thể Hệ thống này sử dụng siê dữ liệu mục, chẳng hạn như thể loại, đạo diễn,

mô tả, diễn viên, v.v cho phim, để đưa ra các đề xuất này Ý tưởng chung đằng sau các hệ thống giới thiệu này là nếu một người thích một mặt hàng cụ thể, họ cũng sẽ thích một mặt hàng tương tự với nó Và để khuyến nghị điều đó, nó sẽ sử dụng siêu dữ liệu mục trước đây của người dùng Một ví dụ điển hình có thể là YouTube, nơi dựa trên lịch sử của bạn,

nó gợi ý cho bạn những video mới mà bạn có thể xem

Collaborative filtering Recommenders: Những hệ thống này được sử dụng rộng rãi và

chúng cố gắng dự đoán “ratings” hoặc “preference” mà người dùng sẽ đưa ra một mặt hàng dựa trên xếp hạng trước đây và sở thích của những người dùng khác Bộ lọc cộng tác không yêu cầu siêu dữ liệu mục giống như các bộ lọc dựa trên nội dung của nó

Hybrid Recommenders: Hybrid Filtering là sự kết hợp của hai giải thuật Content-based

Filtering và Collabrative Filtering: Hybrid Fitering được sử dụng mềm dẻo khi hệ thống Collabrative Filtering không có các hành vi (ratings), khi đó hệ thống sẽ sử dụng Content-based Filtering và ngược lại, khi Content-based Filtering không có các feature cần thiết trong việc đánh giá thì hệ thống sẽ sử dụng Collaborative Fitering để thay thế

Content-based Recommendation Systems

Đối với phương pháp content-based, hệ thống sẽ đánh giá các đặc tính của items được recommended Nó sẽ gợi ý các item dựa trên hồ sơ (profiles) của người dùng hoặc dựa vào nội dung, thuộc tính (attributes) của những item tương tự như item mà người dùng đã chọn trong quá khứ Ví dụ: một người rất thích ăn cam, vậy thì hệ thống gợi ý một loại trái cây tương tự với cam, ở đây là bưởi để đề xuất Cách tiếp cận này yêu cầu việc sắp xếp các items vào từng nhóm hoặc đi tìm các đặc trưng của từng item

Trang 22

Hình 2 Mô tả thuật toán

Neighborhood-based Collaborative Filtering

Ý tưởng cơ bản của Neighborhood-Based Collaborative Filtering là xác định mức độ quan tâm của một user tới một item dựa trên các users khác gần giống với user này Việc gần giống nhau giữa các users có thể được xác định thông qua mức độ quan tâm của các users này tới các items khác mà hệ thống đã biết Ví dụ, A, B đều thích phim CCC, tức đều rate

bộ phim này 5 sao Ta đã biết A cũng thích một phim AAA, vậy nhiều khả năng B cũng thích bộ phim này

Neighborhood-based Collaborative Filtering trả lời 2 câu hỏi:

Làm thế nào xác định được sự giống nhau giữa hai users?

Khi đã xác định được các users gần giống nhau (similar users) rồi, làm thế nào dự đoán được mức độ quan tâm của một user lên một item?

Trang 23

Việc xác định mức độ quan tâm của mỗi user tới một item dựa trên mức độ quan tâm của similar users tới item đó còn được gọi là User-user collaborative filtering Có một hướng tiếp cận khác được cho là làm việc hiệu quả hơn là Item-item collaborative filtering Trong hướng tiếp cận này, thay vì xác định user similarities, hệ thống sẽ xác định item similarities

Từ đó, hệ thống gợi ý những items gần giống với những items mà user có mức độ quan tâm cao

Một cách trực quan, hành vi của 𝑢0 giống với 𝑢1 hơn là 𝑢2, 𝑢3, 𝑢4, 𝑢5, 𝑢6 Từ đó có thể

dự đoán rằng 𝑢0 sẽ quan tâm tới 𝑖2 vì 𝑢1 cũng quan tâm tới item này

Giả sử có các users từ 𝑢0 đến 𝑢6 và các items từ 𝑖0 đến 𝑖4 trong đó các số trong mỗi ô vuông thể hiện số sao mà mỗi user đã rated cho item với giá trị cao hơn thể hiện mức độ quan tâm cao hơn Các dấu hỏi chấm là các giá trị mà hệ thống cần phải đi tìm Đặt mức

độ giống nhau của hai users 𝑢𝑖, 𝑢𝑗 là 𝑠𝑖𝑚(𝑢𝑖, 𝑢𝑗) Vì vậy, một similiarity function tốt cần

đảm bảo:

Trang 24

𝒔𝒊𝒎(𝒖

𝟎

, 𝒖

𝟏

) > 𝒔𝒊𝒎(𝒖

𝟎

, 𝒖

𝒊

), ∀𝒊 > 𝟏

Để đo similarity giữa hai users, cách thường làm là xây dựng feature vector cho mỗi user rồi áp dụng một hàm có khả năng đo similarity giữa hai vectors đó Chú ý rằng việc xây dựng feature vector này khác với việc xây dựng item profiles như trong Content-based Recommendation Systems Các vectors này được xây dựng trực tiếp dựa trên Utility matrix chứ không dùng dữ liệu ngoài như item profiles Với mỗi user, thông tin duy nhất chúng

ta biết là các ratings mà user đó đã thực hiện, tức cột tương ứng với user đó trong Utility matrix Tuy nhiên, khó khăn là các cột này thường có rất nhiều mising ratings vì mỗi user thường chỉ rated một số lượng rất nhỏ các items Cách khắc phục là bằng cách nào đó, ta giúp hệ thống điền các giá trị này sao cho việc điền không làm ảnh hưởng nhiều tới sự giống nhau giữa hai vector Việc điền này chỉ phục vụ cho việc tính similarity chứ không phải là suy luận ra giá trị cuối cùng

Vậy mỗi dấu ‘?’ nên được thay bởi giá trị nào để hạn chế việc sai lệch quá nhiều? Một lựa chọn có thể nghĩ tới là thay các dấu ‘?’ bằng giá trị ‘0’ Điều này không thực sự tốt vì giá trị ‘0’ tương ứng với mức độ quan tâm thấp nhất Một giá trị an toàn hơn là 2.5 vì nó là trung bình cộng của 0, mức thấp nhất, và 5, mức cao nhất Tuy nhiên, giá trị này có hạn chế đối với những users dễ tính hoặc khó tính Với các users dễ tính, thích tương ứng với

5 sao, không thích có thể ít sao hơn, 3 sao chẳng hạn Việc chọn giá trị 2.5 sẽ khiến cho các items còn lại là quá negative đối với user đó Điều ngược lại xảy ra với những user khó tính hơn khi chỉ cho 3 sao cho các items họ thích và ít sao hơn cho những items họ không thích

Một giá trị khả dĩ hơn cho việc này là trung bình cộng của các ratings mà user tương ứng

đã thực hiện Việc này sẽ tránh được việc users quá khó tính hoặc dễ tính, tức lúc nào cũng

có những items mà một user thích hơn so với những items khác

Chuẩn hoá dữ liệu:

Trang 25

Giá trị cao tương ứng với các user dễ tính và ngược lại Khi đó, nếu tiếp tục trừ từ mỗi rating đi giá trị này và thay các giá trị chưa biết bằng 0, ta sẽ được normalized utility matrix

có thể thắc mắc tại sao bước chuẩn hoá này lại quan trọng, câu trả lời ở ngay đây:

Việc trừ đi trung bình cộng của mỗi cột khiến trong trong mỗi cột có những giá trị dương

và âm Những giá trị dương tương ứng với việc user thích item, những giá trị âm tương ứng với việc user không thích item Những giá trị bằng 0 tương ứng với việc chưa xác định được liệu user có thích item hay không

Về mặt kỹ thuật, số chiều của utility matrix là rất lớn với hàng triệu users và items, nếu lưu toàn bộ các giá trị này trong một ma trận thì khả năng cao là sẽ không đủ bộ nhớ Quan sát thấy rằng vì số lượng ratings biết trước thường là một số rất nhỏ so với kích thước của utility matrix, sẽ tốt hơn nếu chúng ta lưu ma trận này dưới dạng sparse matrix, tức chỉ lưu các giá trị khác không và vị trí của chúng Vì vậy, tốt hơn hết, các dấu ‘?’ nên được thay bằng giá trị ‘0’, tức chưa xác định liệu user có thích item hay không Việc này không những tối ưu bộ nhớ mà việc tính toán similarity matrix sau này cũng hiệu quả hơn

Cosine similarity:

Đây là hàm được sử dụng nhiều nhất, và cũng quen thuộc với các nhất Nếu các không nhớ công thức tính coscos của góc giữa hai vector 𝑢1,𝑢2 trong chương trình phổ thông, thì dưới đây là công thức:

𝒄𝒐𝒔𝒊𝒏𝒆𝒔𝒊𝒎𝒊𝒍𝒂𝒓𝒊𝒕𝒚(𝒖𝟏,𝒖𝟐) = 𝐜𝐨𝐬(𝐮𝟏, 𝐮𝟐) = 𝒖𝑻𝟏𝒖𝟐

||u1||2 ||u2||2

Trong đó 𝑢1,2 là vectors tương ứng với users 1, 2 đã được chuẩn hoá như ở trên

Có một tin vui là python có hàm hỗ trợ tính toán hàm số này một cách hiệu quả

Độ similarity của hai vector là 1 số trong đoạn [-1, 1] Giá trị bằng 1 thể hiện hai vector toàn toàn similar nhau Hàm số coscos của một góc bằng 1 nghĩa là góc giữa hai vector

bằng 0, tức một vector bằng tích của một số dương với vector còn lại Giá trị cos bằng -1

hể hiện hai vector này hoàn toàn trái ngược nhau Điều này cũng hợp lý, tức khi hành vi của hai users là hoàn toàn ngược nhau thi similarity giữa hai vector đó là thấp nhất

Trang 26

2.1.2 Chatbot

Tiền xử lí dữ liệu là giai đoạn rất quan trọng, hay nói cách khác đây là công đoạn làm sạch văn bản Việc văn bản được làm sạch giúp cách thuật toán có thể trích xuất được những đặc trưng tốt nhất từ đó nâng cao hiệu quả, chất lượng của các mô hình, thuật toán

Một số vấn đề cần tiền xử lý như:

Biến đổi chữ thường

Tách câu, chữ

Loại bỏ stop-word

Stemming & Lemmatization (biến đổi về dạng gốc của từ)

Nhưng mạng nơ ron không thể học thông qua các từ đã được xử lý, chúng cần chuyển thành các vector Bag-of-words là một phương pháp hiệu quả Nó được dùng để trích xuất đặc trưng dữ liệu văn bản

Mô tả thuật toán Bag-of-words

Đoạn mẫu câu:

["Joe waited for the train train", "The train was late", "Mary and Samantha took the bus",

"I looked for Mary and Samantha at the bus station", "Mary and Samantha arrived at the bus station early but waited until noon for the bus"]

Trang 27

Sau khi tiền sử lí dữ liệu, ta sẽ thu được danh sách các từ (words) được sắp xếp theo thứ

tự a-z:

['and', 'arrived', 'at', 'bus', 'but', 'early', 'for', 'i', 'joe', 'late', 'looked', 'mary', 'noon',

'samantha', 'station', 'took', 'train', 'until', 'waited', 'was']

Khởi tạo một vector [0, 0, …, 0] với độ dài bằng với số từ trong words So sánh từng từ trong từng câu mẫu với words, với mỗi lần xuất hiện, tăng giá trị vector tại vị trí đó lên 1,

ta thu được vector tương ứng như sau:

Joe waited for the train train [0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 1 0.]

The train was late [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1.]

Mary and Samantha took the bus [1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0.]

I looked for Mary and Samantha at the bus station [1 0 1 1 0 0 1 1 0 0 1 1 0 1 1

Trang 28

Flask là một framework web của Python, còn được coi là một microframework bởi nó không yêu cầu các công cụ hoặc thư viện cụ thể Được phát triển bởi Armin Ronacher, người dẫn đầu một nhóm những người đam mê Python quốc tế có tên là Poocco Flask phát triển dựa trên bộ công cụ Werkzeug WSGI và công cụ mẫu Jinja2 Cả hai đều là các dự án của Pocco

Flask cung cấp cho tất cả các công cụ, thư viện và công nghệ cho phép xây dựng một ứng dụng web Ứng dụng web này có thể là blog, wiki hay một ứng dụng lịch dựa trên web hoặc một web thương mại Như đã nói, Flask là một microframework bởi nó không yêu cầu các công cụ hoặc thư viện cụ thể, điều này mang đến cả ưu điểm và khuyết điểm cho người sử dụng Ưu điểm của Flask là Framework nhẹ, ít phụ thuộc vào các cập nhật và dễ tìm kiếm các lỗi bảo mật Nhược điểm là đôi khi phải tự thêm các danh sách phụ thuộc bằng việc thêm các plugin Trong Flask, các phụ phuộc đó là Werkzeug WSGI và Jinja2

WSGI: Web Server Gateway Interface (Giao diện cổng vào máy chủ Web) được sử dụng

như một tiêu chuẩn để phát triển ứng dụng web Python WSGI mang đặc điểm kỹ thuật giao diện chung giữa máy chủ web và ứng dụng web

Werkzeug: Là một bộ công cụ WSGI thực hiện các yêu cầu, phản hồi đối tượng, và các

chức năng tiện ích Điều này cho phép xây dựng một web framework trên đó Flask sử dụng Werkzeug làm một trong những cơ sở xây dựng web của nó

Jinja2: Là một công cụ mẫu phổ biến cho Python Một hệ thống mẫu web kết hợp một mẫu

với một nguồn dữ liệu cụ thể để hiển thị một trang web động

Flask thường được coi là một microframework Nó được thiết kế để giữ cho cốt lõi của ứng dụng đơn giản và có thể mở rộng (scalable) Thay vì sử dụng một abstraction layer để hỗ trợ cơ sở dữ liệu, Flask hỗ trợ các phần extensions để thêm các khả năng như vậy vào ứng dụng

Trang 29

2.2.1.2 ReactJs

Hình 5 ReactJs

ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản thân

nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành phần trên website Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ liệu không chỉ thực hiện được trên tầng Server mà còn ở dưới Client

2.2.1.3

Express.js

Hình 6 ExpressJs

Expressjs hay còn được viết là Express js, Express.js Đây là một framework mã nguồn mở miễn phí cho Node.js Express.js được sử dụng trong thiết kế và xây dựng các ứng dụng web một cách đơn giản và nhanh chóng

Trang 30

Vì Express js chỉ yêu cầu ngôn ngữ lập trình Javascript nên việc xây dựng các ứng dụng web và API trở nên đơn giản hơn với các lập trình viên và nhà phát triển. Expressjs cũng là một khuôn khổ của Node.js do đó hầu hết các mã code đã được viết sẵn cho các lập trình viên có thể làm việc

Nhờ có Expressjs mà các nhà lập trình có thể dễ dàng tạo các ứng dụng 1 web, nhiều web hoặc kết hợp Do có dung lượng khá nhẹ, Expressjs giúp cho việc tổ chức các ứng dụng web thành một kiến trúc MVC có tổ chức hơn. Để có thể sử dụng được mã nguồn này, chúng ta cần phải biết về Javascript và HTML

Expressjs cũng là một phần của công nghệ giúp quản lý các ứng dụng web một cách

dễ dàng hơn hay còn được gọi là ngăn xếp phần mềm MEAN. Nhờ có thư viện Javascript của Express js đã giúp cho các nhà lập trình xây dựng nên các ứng dụng web hiệu quả và nhanh chóng hơn Expressjs cũng được sử dụng để nâng cao các chức năng của Node.js

DataFrames tương tự như SQL tables hoặc bảng tính mà bạn làm việc trong Excel hoặc Calc Trong nhiều trường hợp, DataFrame nhanh hơn, dễ sử dụng hơn và mạnh hơn bảng hoặc spreadsheets vì chúng là một phần không thể thiếu của hệ sinh thái Python và NumPy

Trang 31

NumPy được phát triển bởi Jim Hugunin Phiên bản ban đầu là Numarray được phát triển,

có một số chức năng bổ sung Năm 2005, Travis Oliphant đã tạo ra gói NumPy bằng cách kết hợp các tính năng của Numarray và gói Numeric

Sử dụng NumPy, lập trình viên có thể thực hiện các thao tác sau:

Các phép toán toán học và logic trên mảng

Các biến đổi Fourier và các quy trình để thao tác shape

Các phép toán liên quan đến đại số tuyến tính NumPy tích hợp sẵn các hàm cho đại số tuyến tính và tạo số ngẫu nhiên

NumPy - Sự thay thế hoàn hảo cho MatLab: NumPy thường được sử dụng cùng với các gói như SciPy (Python Scientific) và Mat-plotlib (thư viện vẽ đồ thị) Sự kết hợp này được

sử dụng rộng rãi để thay thế cho MatLab, một nền tảng phổ biến cho tính toán kỹ thuật

Trang 32

Tuy nhiên, Python thay thế cho MatLab hiện được xem như một ngôn ngữ lập trình hoàn thiện và hiện đại hơn Điều quan trọng hơn cả là Numpy là một thư viện mã nguồn mở, miễn phí so với MatLab là một thư viện mã nguồn đóng và phải trả phí

2.2.2.3 Scikit-learn

Hình 9 ScikitsLearn

Scikit-learn (Sklearn) là thư viện mạnh mẽ nhất dành cho các thuật toán học máy được viết trên ngôn ngữ Python Thư viện cung cấp một tập các công cụ xử lý các bài toán machine learning và statistical modeling gồm: classification, regression, clustering, và dimensionality reduction

Thư viện được cấp phép bản quyền chuẩn FreeBSD và chạy được trên nhiều nền tảng Linux Scikit-learn được sử dụng như một tài liệu để học tập

Những thư viện mở rộng của SciPy thường được đặt tên dạng SciKits Như thư viện này là gói các lớp, hàm sử dụng trong thuật toán học máy thì được đặt tên là scikit-learn

Scikit-learn hỗ trợ mạnh mẽ trong việc xây dựng các sản phẩm Nghĩa là thư viện này tập trung sâu trong việc xây dựng các yếu tố: dễ sử dụng, dễ code, dễ tham khảo, dễ làm việc, hiệu quả cao

Mặc dù được viết cho Python nhưng thực ra các thư viện nền tảng của scikit-learn lại được viết dưới các thư viện của C để tăng hiệu suất làm việc Ví dụ như: Numpy (Tính toán ma trận), LAPACK, LibSVM và Cython

Sau đâu là một số nhóm thuật toán được xây dựng bởi thư viện scikit-learn:

Clustering: Nhóm thuật toán Phân cụm dữ liệu không gán nhãn Ví dụ thuật toán KMeans

Trang 33

Cross Validation: Kiểm thử chéo, đánh giá độ hiệu quả của thuật toán học giám sát sử dụng

dữ liệu kiểm thử (validation data) trong quá trình huấn luyện mô hình

Datasets: Gồm nhóm các Bộ dữ liệu được tích hợp sẵn trong thư viện Hầu như các bộ dữ liệu đều đã được chuẩn hóa và mang lại hiêu suất cao trong quá trình huấn luyện như iris, digit,

Dimensionality Reduction: Mục đích của thuật toán này là để Giảm số lượng thuộc tính quan trọng của dữ liệu bằng các phương pháp như tổng hợp, biểu diễn dữ liệu và lựa chọn đặc trưng Ví dụ thuật toán PCA (Principal component analysis)

Ensemble methods: Các Phương pháp tập hợp sử dụng nhiều thuật toán học tập để có được hiệu suất dự đoán tốt hơn so với bất kỳ thuật toán học cấu thành nào

Feature extraction: Trích xuất đặc trưng Mục đích là để định nghĩa các thuộc tình với dữ liệu hình ảnh và dữ liệu ngôn ngữ

Feature selection: Trích chọn đặc trưng Lựa chọn các đặc trưng có ý nghĩa trong việc huấn luyện mô hình học giám sát

Parameter Tuning: Tinh chỉnh tham số Các thuật toán phục vụ việc lựa chọn tham số phù hợp để tối ưu hóa mô hình

Manifold Learning: Các thuật toán học tổng hợp và Phân tích dữ liệu đa chiều phức tạp

Supervised Models: Học giám sát Mảng lớn các thuật toán học máy hiện nay Ví dụ như linear models, discriminate analysis, naive bayes, lazy methods, neural networks, support vector machines và decision trees

Trang 34

ưu hóa, tích hợp và thống kê

SciPy cung cấp khá nhiều module tính toán từ đại số tuyến tính, tích phân, vi phân, nội suy đến xử lý ảnh, fourier transform blabla… Chức năng của nó tương tự như MathLab, Octave Scilab, R… nhưng nó được sử dụng khá rộng rãi do có hệ thống thư viện tính toán mạnh, ngôn ngữ Python rõ ràng, dễ hiểu, gần gũi với ngôn ngữ tự nhiên, mã nguồn mở và cộng đồng đang dần lớn mạnh từng ngày

SciPy chứa nhiều loại gói phụ giúp giải quyết vấn đề phổ biến nhất liên quan đến tính toán khoa học

SciPy là thư viện Khoa học được sử dụng nhiều nhất chỉ sau Thư viện Khoa học GNU cho C/C ++ hoặc Matlab

Dễ sử dụng và hiểu cũng như sức mạnh tính toán nhanh

Nó có thể hoạt động trên mảng (array) của thư viện NumPy

Trang 35

2.2.2.5 Mongoose

Hình 11 Mongoose

Mongoose là một thư viện mô hình hóa đối tượng (Object Data Model - ODM) cho

MongoDB và Node.js Nó quản lý mối quan hệ giữa dữ liệu, cung cấp sự xác nhận giản đồ

và được sử dụng để dịch giữa các đối tượng trong mã và biểu diễn các đối tượng trong MongoDB

Mongoose cho phép bạn định nghĩa các object (đối tượng) với một schema được định nghĩa

rõ ràng, được ánh xạ tới một MongoDB document.Mongoose cũng cung cấp một số lượng đáng kinh ngạc các chức năng cho việc tạo ra và làm việc với các schema

2.2.2.6 Redux

Hình 12 Redux

Redux là một vùng chứa trạng thái có thể dự đoán được hay còn biết đến là một thư viện

của JavaScript Thư viện này được thiết kế để giúp bạn viết các ứng dụng JavaScript có thể

Trang 36

hoạt động nhất quán trong các môi trường máy khách, máy chủ và môi trường số, đồng thời cho phép dễ dàng kiểm tra

Mặc dù Redux chủ yếu được sử dụng như một công cụ quản lý trạng thái với React, nhưng bạn có thể sử dụng thư viện này với bất kỳ Framework hoặc thư viện JavaScript nào khác Redux khá nhẹ, chỉ ở mức 2KB (bao gồm cả phần phụ thuộc) Vì vậy, bạn không phải lo lắng về việc công cụ này sẽ làm cho kích thước nội dung ứng dụng của bạn lớn hơn Với Redux, trạng thái ứng dụng của bạn sẽ được lưu trong một Store và mỗi thành phần có thể truy cập vào bất kỳ trạng thái nào mà nó cần từ Store này

2.2.2.7 Nodemailer

Hình 13 NodeMailer

Nodemailer là một mô-đun cho các ứng dụng Node.js để cho phép gửi email dễ dàng Dự

án bắt đầu trở lại vào năm 2010 khi không có tùy chọn lành mạnh để gửi email, ngày nay

nó là giải pháp mà hầu hết người dùng Node.js sử dụng theo mặc định

Tính năng và đặc điểm của Nodemailer:

Một mô-đun duy nhất không có phụ thuộc nào - mã dễ dàng kiểm tra, vì không có góc tối Tập trung nhiều vào bảo mật, không ai thích lỗ hổng RCE

Hỗ trợ Unicode để sử dụng bất kỳ ký tự nào, bao gồm biểu tượng cảm xúc

Trang 37

Hỗ trợ Windows - bạn có thể cài đặt nó với npm trên Windows chỉ giống như bất kỳ đun nào khác, không có phần phụ thuộc đã biên dịch Sử dụng không rắc rối từ Azure hoặc

mô-từ hộp Windows của bạn

Sử dụng nội dung HTML, cũng như thay thế văn bản thuần túy

Thêm tệp đính kèm vào thư

Các tệp đính kèm hình ảnh được nhúng cho nội dung HTML - thiết kế của bạn không bị chặn

Gửi email an toàn bằng TLS / STARTTLS

Ngoài ra hỗ trợ SMTP tích hợp sẵn

Đăng tin nhắn với hỗ trợ Plugin tùy chỉnh DKIM để thao tác với tin nhắn

Xác thực Sane OAuth2

Proxy cho kết nối SMTP

Mã ES6 - không còn tình trạng rò rỉ bộ nhớ không chủ ý, do các tài khoản kiểm tra email được tạo tự động của var được nâng cấp từ Ethereal.email

2.2.2.8 AXIOS

Hình 14 AXIOS

Axios là một client HTTP đẳng hình, phổ biến Điều đó có nghĩa là nó có thể chạy trong

trình duyệt và môi trường Node runtime Do đó, bạn có thể sử dụng cùng một cơ sở mã để thực hiện các yêu cầu API trong Node, trong trình duyệt và trong ReactJs

Axios có một số tính năng như hỗ trợ API Promise, tự động chuyển đổi JSON và chặn các yêu cầu và phản hồi mạng, trong số những tính năng khác

Trang 38

Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server ) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng

ta sẽ dùng khái niệm là collection thay vì bảng

So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho row trong RDBMS

Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định

Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB

Trang 39

2.2.3.2 Cloudinary

Hình 16 Cloudinary

Cloudinary là một cloud-based service, nó cung cấp một giải pháp quản lý hình ảnh bao

gồm upload, lưu trữ, thao tác, tối ưu hóa và delivery

Với cloudinary bạn có thể dễ dàng upload ảnh lên cloud, tự động thực thi các thao tác với ảnh một cách thông minh mà không cần phải cài đặt bất kì một phần mềm phức tạp nào khác Cloudinary cung cấp các APIs toàn diện và màn hình quản lý giúp chúng ta dễ dàng tích hợp vào các trang web và ứng dụng di động

Cloudinary cung cấp một Ruby Gem để dễ dàng cho việc tương tác với các app viết bởi

ngôn ngữ Ruby với một số framwork như là Rails hay Sinatra với các tương tác chính

sau:

Xây dựng các URL để chuyển đổi và thao tác với hình ảnh

Rails view helper cho việc nhúng và thay đổi hình ảnh

API wrappers: upload image, quản lý và nhiều thứ khác

Upload image trực tiếp từ trình duyệt sử dụng một jQuery plugin

Tích hợp với Active Record

Trang 40

Hình 17 JWT

JSON Web Mã (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượng JSON Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số JWTs có thể được

ký bằng một thuật toán bí mật (với thuật toán HMAC) hoặc một public/private key sử dụng

mã hoá RSA

Hình 18 Sơ đồ của JWT

Hình ảnh thực tế Json Web Token

Ngày đăng: 01/02/2023, 21:12

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[10] MongoDB Inc., “MongoDB” [Online]. Available: MongoDB: MongoDB Sách, tạp chí
Tiêu đề: MongoDB
[11] StrongLoop, IBM, and other expressjs.com contributors, “Express” [Online]. Available: Express Sách, tạp chí
Tiêu đề: Express
[12] Valeri Karpov, Kathryn Radovan, Hafez, “Mongoose” [Online]. Available: Mongoosejs Sách, tạp chí
Tiêu đề: Mongoose
[13] Techvidvan, “Techvidvan” [Online] Avaiable: Techvidvan Sách, tạp chí
Tiêu đề: Techvidvan
[14] Vũ Hữu Tiệp, “Machine Learning cơ bản” [Online] Available: machinelearningcoban Sách, tạp chí
Tiêu đề: Machine Learning cơ bản
[15] Pallets, “Flask Documentation” [Online] Available: Flask Documentation (palletsprojects.com) Sách, tạp chí
Tiêu đề: Flask Documentation
[16] Python Software Foundation, “Python documentation” [Online] Available: Documentation (python.org) [17] pat310, “google-trends-api” [Online] Sách, tạp chí
Tiêu đề: Python documentation” [Online] Available: Documentation (python.org) [17] pat310, “google-trends-api

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w