Ví dụ như Netflix đã chứng minh tính hiệu quả của hệ thống gợi ý phim khi sử dụng thuật toán học máy để đề xuất các bộ phim phù hợp, cải thiện trải nghiệm người dùng và tăng thời gian tư
Trang 1TRƯỜNG ĐẠI HỌC QUỐC TẾ HỒNG BÀNG
KHOA CÔNG NGHỆ - KỸ THUẬT
BỘ MÔN CÔNG NGHỆ THÔNG TIN
-
-ĐỒ ÁN CHUYÊN NGÀNH
ĐỀ TÀI : PHÁT TRIỂN WEBSITE DÀNH GỢI Ý PHIM DÀNH CHO SINH VIÊN
Người Hướng Dẫn : Lê Văn Hạnh
Sinh viên thực hiện : Nguyễn Cao Triều
Mã số sinh viên : 2111111028
TP Hồ Chí Minh, tháng 07 năm 2024
Trang 2MỤC LỤC
Trang 3CHƯƠNG 1
TỔNG QUAN VỀ ĐỀ TÀI
1.1 GIỚI THIỆU VỀ ĐỀ TÀI
Hiện nay, với số lượng phim ngày càng nhiều, người dùng thường gặp khó khăn trong việc lựa chọn bộ phim phù hợp Việc phải tìm kiếm giữa hàng ngàn tùy chọn làm cho quá trình chọn phim trở nên phức tạp hơn Các hệ thống gợi ý phim ra đời nhằm giải quyết vấn đề này, giúp người dùng chọn phim dựa trên sở thích cá nhân Tuy nhiên, độ chính xác và hiệu quả của các hệ thống hiện tại vẫn còn hạn chế, khiến người dùng không phải lúc nào cũng tìm được phim ưng ý
Song song với đó, việc đặt vé xem phim trực tuyến ngày càng trở nên phổ biến, nhưng không phải hệ thống nào cũng cung cấp đầy đủ các tính năng cần thiết Việc kết hợp một hệ thống gợi ý phim với chức năng đặt vé trực tuyến sẽ giúp người dùng, đặc biệt là học sinh và sinh viên, trải nghiệm việc tìm kiếm và đặt vé một cách thuận tiện hơn
Ví dụ như Netflix đã chứng minh tính hiệu quả của hệ thống gợi ý phim khi sử dụng thuật toán học máy để đề xuất các bộ phim phù hợp, cải thiện trải nghiệm người dùng và tăng thời gian tương tác
Dự án website này hướng tới việc xây dựng một hệ thống gợi ý phim dựa trên sở thích cá nhân và tích hợp tính năng đặt vé trực tuyến, giúp nâng cao trải nghiệm người dùng và đáp ứng nhu cầu ngày càng tăng của thị trường Hơn nữa, hệ thống còn có tiềm năng áp dụng trong giáo dục, hỗ trợ học sinh và sinh viên tìm kiếm các nội dung phim tài liệu phù hợp, từ đó nâng cao chất lượng học tập
1.1.1.Khảo Sát Hiện Trạng
1.1.1.1 Thực trạng chọn phim và đặt vé xem phim
Ngày nay, với số lượng phim khổng lồ từ các nền tảng trực tuyến và rạp chiếu, người dùng gặp khó khăn trong việc lựa chọn một bộ phim phù hợp Mặc dù các hệ thống gợi ý phim đã ra đời nhằm giải quyết vấn đề này, độ chính xác và tính hữu ích vẫn còn nhiều hạn chế, khiến việc tìm được phim theo đúng sở thích của người dùng trở nên phức tạp
Đồng thời, việc đặt vé xem phim trực tuyến đã trở nên rất phổ biến, giúp người dùng tiết kiệm thời gian xếp hàng mua vé tại rạp Tuy nhiên, một số hệ thống đặt vé hiện nay vẫn chưa cung cấp đủ các tính năng tiện ích như chọn chỗ ngồi, thời gian chiếu linh hoạt hay tích hợp gợi ý phim theo sở thích người dùng, dẫn đến trải nghiệm chưa thực sự tối ưu
1.1.1.2 Hệ thống gợi ý phim hiện nay
Nhiều nền tảng phát trực tuyến lớn như Netflix, YouTube hay Amazon Prime Video đã áp dụng các thuật toán gợi ý phim dựa trên lịch sử xem, sở thích, và hành vi người dùng Các hệ thống này sử dụng những thuật toán tiên tiến như Collaborative Filtering (lọc cộng tác), Content-Based Filtering (lọc dựa trên nội dung), và Hybrid
Trang 4Methods (phương pháp kết hợp) để đề xuất phim Tuy nhiên, chúng vẫn chưa hoàn toàn chính xác trong mọi trường hợp, và đôi khi các đề xuất không thực sự phù hợp với sở thích cụ thể của từng cá nhân
1.1.1.3 Hệ thống đặt vé xem phim trực tuyến
Các rạp chiếu phim và nền tảng trực tuyến ngày càng phát triển các hệ thống đặt
vé online nhằm mang lại sự tiện lợi cho người dùng Một số hệ thống nổi bật như CGV, Galaxy, Lotte Cinema đã cung cấp các tính năng đặt vé trực tuyến, cho phép người dùng chọn chỗ ngồi và giờ chiếu Tuy nhiên, việc tích hợp tính năng gợi ý phim trong các nền tảng này vẫn còn hạn chế, khiến người dùng phải tự tìm kiếm phim trước khi tiến hành đặt vé
1.1.1.4 Hạn chế của các hệ thống hiện nay
Khả năng cá nhân hóa chưa cao: Hệ thống gợi ý phim hiện tại còn phụ thuộc nhiều vào lịch sử xem của người dùng thay vì phân tích sâu về sở thích thực tế và các yếu tố tinh vi khác như tâm trạng hay bối cảnh
Thiếu tích hợp giữa gợi ý và đặt vé: Nhiều nền tảng đặt vé chưa tích hợp tính năng gợi ý phim, khiến người dùng phải chuyển đổi giữa các ứng dụng hoặc nền tảng khác nhau
Trải nghiệm người dùng chưa tối ưu: Một số nền tảng đặt vé có giao diện khó sử dụng hoặc thiếu linh hoạt khi lựa chọn thời gian, chỗ ngồi
1.1.1.5 Xu hướng phát triển
Với nhu cầu ngày càng cao về giải trí và sự tiện lợi, các hệ thống gợi ý phim và đặt
vé trực tuyến cần được cải thiện về khả năng cá nhân hóa và tích hợp các tính năng gợi ý phim trực tiếp ngay trên nền tảng đặt vé Việc áp dụng trí tuệ nhân tạo (AI) và các thuật toán học máy (machine learning) để nâng cao độ chính xác của hệ thống gợi ý là xu hướng tất yếu trong tương lai
Từ khảo sát này, có thể thấy tiềm năng và cơ hội lớn để phát triển một hệ thống gợi
ý phim tích hợp với đặt vé trực tuyến, đặc biệt hướng đến nhóm đối tượng học sinh, sinh viên
1.1.2.Yêu cầu chức năng của ứng dụng
- Quản Lý Người Dùng
- Gợi ý phim
- Tương tác người dùng
- Tìm kiếm phim
- Quản lý admin
1.2 Giới thiệu về (các) cơ sở lý thuyết sử dụng trong đề tài.
1.2.1.Collaborative Filtering (Lọc cộng tác)
Collaborative Filtering là một trong những phương pháp phổ biến nhất được sử
dụng trong hệ thống gợi ý, đặc biệt là với các ứng dụng gợi ý phim Có hai loại chính: U
Trang 5ser-based Collaborative Filtering (lọc cộng tác dựa trên người dùng) và Item-based Collaborative Filtering (lọc cộng tác dựa trên sản phẩm).
Item-based Collaborative Filtering được chọn trong đề tài này vì tính ổn định
và hiệu quả trong việc gợi ý các sản phẩm tương tự dựa trên hành vi của người dùng Phương pháp này phân tích lịch sử tương tác của người dùng với các phim và tính toán độ tương đồng giữa các phim Dựa trên những gì người dùng
đã xem, hệ thống sẽ gợi ý các phim có độ tương đồng cao với những phim mà
họ đã thích hoặc đánh giá cao
Triển khai:
Sử dụng thư viện SciKit-Learn (Python) hoặc Apache Mahout (Java) để triển khai thuật toán Item-based Collaborative Filtering Các thư viện này cung
cấp các công cụ mạnh mẽ để thực hiện tính toán ma trận tương đồng giữa các phim dựa trên lịch sử tương tác
Dữ liệu từ MySQL sẽ được sử dụng để huấn luyện mô hình, bao gồm các đánh
giá hoặc tương tác của người dùng với các bộ phim Các bước tính toán độ tương đồng giữa các mục sẽ dựa trên dữ liệu này để đề xuất các phim phù hợp
1.2.2 Content-Based Filtering (Lọc dựa trên nội dung)
Phương pháp Content-Based Filtering dựa trên đặc điểm của phim (thể loại, mô
tả, diễn viên, đạo diễn) để gợi ý các phim có nội dung tương tự với những phim mà người
dùng đã thích hoặc tìm kiếm Trong đề tài này, TF-IDF (Term Frequency-Inverse
Document Frequency) sẽ được sử dụng để phân tích từ khóa trong mô tả phim, giúp tìm
kiếm các phim có nội dung tương tự
TF-IDF là một kỹ thuật giúp biểu diễn văn bản dưới dạng vector, dựa trên tần
suất xuất hiện của các từ trong tài liệu Điều này giúp hệ thống xác định các phim có nội dung tương tự bằng cách tính toán độ tương đồng giữa các phim dựa trên mô tả và thông tin chi tiết của phim
Triển khai:
Sử dụng thư viện Python như TfidfVectorizer từ SciKit-Learn để biểu diễn
các văn bản liên quan đến phim (ví dụ như tên phim, mô tả, thể loại)
Khi người dùng thực hiện tìm kiếm hoặc tương tác với một bộ phim, hệ thống
sẽ tính toán độ tương đồng giữa từ khóa tìm kiếm hoặc nội dung phim đã xem với các phim khác trong cơ sở dữ liệu, từ đó đề xuất các phim tương tự
1.2.3 Tích hợp Flask vào Spring Boot Backend
Để triển khai các mô hình gợi ý sử dụng Python, Flask sẽ được tích hợp với backend Spring Boot.
Flask API sẽ được xây dựng để xử lý các mô hình gợi ý, bao gồm cả
Collaborative Filtering và Content-Based Filtering Flask sẽ chịu trách
nhiệm tính toán kết quả gợi ý dựa trên dữ liệu nhận từ Spring Boot
Triển khai:
Trang 6 Khi người dùng thực hiện một hành động (như tìm kiếm phim hoặc xem một
phim cụ thể), Spring Boot sẽ gửi dữ liệu (thông tin phim hoặc người dùng) đến
Flask API.
Flask API sẽ xử lý dữ liệu bằng mô hình học máy (Collaborative hoặc Content-Based Filtering) và trả về danh sách các phim được gợi ý
Spring Boot sẽ nhận kết quả từ Flask và trả về cho frontend React.js, hiển thị
các phim gợi ý cho người dùng
1.2.4.Sử dụng MySQL cho dữ liệu và huấn luyện mô hình
Cơ sở dữ liệu MySQL sẽ được sử dụng để lưu trữ toàn bộ dữ liệu cần thiết cho hệ
thống, bao gồm thông tin phim, đánh giá của người dùng, và lịch sử tương tác
Vai trò của MySQL trong gợi ý:
Dữ liệu từ MySQL sẽ được sử dụng để huấn luyện các mô hình gợi ý
Với Collaborative Filtering, dữ liệu bao gồm lịch sử xem và đánh giá của
người dùng sẽ được sử dụng để tính toán độ tương đồng giữa các phim hoặc người dùng
Với Content-Based Filtering, thông tin chi tiết về các phim (mô tả, thể loại,
diễn viên, đạo diễn) sẽ được sử dụng để tính toán độ tương đồng dựa trên nội dung phim
MySQL cũng sẽ lưu trữ kết quả gợi ý, thông tin người dùng, và lịch sử đặt vé
1.3 Giới thiệu về (các) công cụ sẽ sử dụng trong đề tài
Intellij idea : Tạo một RESTful API để thự hiện các chức năng trong website gợi
ý phim bằng Java Spring Boot
1 Tạo Project Spring Boot trong IntelliJ IDEA
2.Cấu hình kết nối MySQL
3 Tạo các Entity (Model) cho hệ thống
4 Tạo Repository Layer
5 Tạo Service Layer
6 Tạo Controller Layer
7 Chạy ứng dụng
Trang 7MySQL : là quản lý và lưu trữ dữ liệu của hệ thống về (Lịch chiếu phim, Thông
tin vé, Thông tin ghế, Dữ liệu phim….)
1 Cài đặt MySQL
2.Tạo cơ sở dữ liệu (Database)
3 Tạo các bảng (Tables)
4.Nhập dữ liệu mẫu
5 Kết nối Spring Boot với MySQL
6 Tạo API để tương tác với cơ sở dữ liệu
7 Test và quản lý cơ sở dữ liệu
Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn mở được nhiều
lập trình viên ưa chuộng để phát triển các ứng dụng React JS Dưới đây là cách thiết lập
và sử dụng VS Code để lập trình React JS:
1 Cài đặt Node.js và NPM
2 Cài đặt Visual Studio Code
3 Cài đặt Extensions cần thiết cho React JS
4 Tạo ứng dụng React bằng Create React App
5 Cấu trúc thư mục cơ bản trong React
6 Tạo Component trong React
7 Debugging React trong VS Code
8 Chạy thử và tối ưu hóa ứng dụng
Trang 8Flask là một micro-framework Python phổ biến để xây dựng các ứng dụng web,
bao gồm việc xây dựng RESTful APIs Dưới đây là hướng dẫn từng bước để xây dựng một Flask API đơn giản trong Python:
1 Cài đặt Flask
2 Cấu trúc thư mục của dự án
3 Tạo file app.py
4 Chạy Flask API
5 Test API bằng Postman hoặc Curl
6 Mở rộng và tích hợp với MySQL
1.4 Triển khai ứng dụng
1.4.1.Thiết kế
1.4.1.1 Thiết kế dữ liệu
Bảng User
Bảng Banner
Bảng Tin Tức
Bảng Lịch Sử
Bảng Rạp Chiếu
Bảng Cụm Rạp
Bảng Phim
Trang 91.4.1.2 Thiết kế giao diện
1.4.1.2.1 1 Giao Diện Chính
Giao diện chính của hệ thống sẽ bao gồm các thành phần sau:
Header: Chứa logo, menu điều hướng (đăng nhập, đăng ký, liên hệ, thanh toán),
thanh tìm kiếm phim
Footer: Chứa thông tin liên hệ, mạng xã hội, các liên kết hữu ích.
Banner: Khu vực hiển thị banner quảng cáo hoặc banner phim hot.
Tin tức: Hiển thị các bài viết tin tức về phim ảnh, lịch chiếu, cập nhật sự kiện điện
ảnh
Các phim sắp chiếu và đang chiếu: Hiển thị danh sách các phim sắp chiếu và
đang chiếu kèm theo hình ảnh, thông tin cơ bản
Danh sách phim gợi ý: Hiển thị các bộ phim gợi ý dựa trên sở thích người dùng
hoặc lịch sử xem phim của họ
Thanh tìm kiếm phim: Cho phép người dùng tìm kiếm phim theo từ khóa hoặc
thể loại
1.4.1.2.2 Giao Diện Trang Tin Tức
Hiển thị các tin tức: Liệt kê các bài viết về tin tức mới nhất, có thể lọc theo danh
mục hoặc từ khóa tìm kiếm Mỗi bài viết hiển thị tiêu đề, hình ảnh, và mô tả ngắn
1.4.1.2.3 Giao Diện Trang Phim
Danh sách phim: Hiển thị các phim sắp chiếu và đang chiếu Mỗi phim có hình
ảnh đại diện, tên phim, và nút "Xem chi tiết"
1.4.1.2.4 Trang Chi Tiết Phim
Hiển thị thông tin chi tiết của phim: Bao gồm tên phim, trailer, thể loại, đánh
giá, mô tả, lịch chiếu
Danh sách rạp chiếu: Hiển thị các cụm rạp và rạp chiếu cho phim, kèm theo lịch
chiếu tại từng rạp
1.4.1.2.5 Giao Diện Trang Danh Sách Ghế Ngồi
Lựa chọn ghế: Cho phép người dùng chọn ghế ngồi trong rạp, hiển thị trạng thái
ghế (đã đặt, còn trống, VIP, thường)
Thông tin vé và thanh toán: Hiển thị tổng số tiền cần thanh toán, thông tin vé, và
nút thanh toán
1.4.1.2.6 Giao Diện Trang Quản Lý Của Admin
Quản lý người dùng: Hiển thị danh sách người dùng, cho phép admin tạo, chỉnh
sửa, và xóa tài khoản người dùng
Quản lý phim: Admin có thể thêm phim mới, chỉnh sửa thông tin phim, xóa
phim
Trang 10 Quản lý lịch chiếu: Cho phép admin tạo và quản lý lịch chiếu phim tại các cụm
rạp
Quản lý banner: Admin có thể thêm hoặc xóa banner phim quảng cáo.
Quản lý tin tức: Admin có thể thêm, chỉnh sửa hoặc xóa bài viết tin tức.
1.4.1.3 Thiết kế xử lý
1.4.1.3.1 Cơ sở dữ liệu liên quan
Chức năng gợi ý phim sẽ tương tác với các bảng sau trong cơ sở dữ liệu:
Bảng User: Lưu trữ thông tin người dùng, bao gồm cả thông tin cá nhân và lịch sử
đăng nhập
Bảng Phim: Chứa thông tin về các bộ phim bao gồm tên phim, thể loại, đánh giá,
trạng thái chiếu (đang chiếu, sắp chiếu), và các thông tin khác
Bảng Lịch Sử: Lưu trữ lịch sử xem phim của người dùng, bao gồm các thông tin
về phim đã xem, thời gian xem và đánh giá của người dùng đối với phim đó
1.4.1.3.2 Các thuật toán và phương pháp gợi ý
Để gợi ý phim hiệu quả, có một số phương pháp xử lý và thuật toán mà hệ thống có thể sử dụng:
1.4.1.3.3 Collaborative Filtering (Lọc cộng tác)
Nguyên lý: Dựa vào lịch sử xem phim của người dùng khác để gợi ý phim cho
người dùng hiện tại Phương pháp này sẽ tìm ra những người dùng có hành vi xem phim tương tự, sau đó gợi ý các phim mà người dùng khác đã xem nhưng người dùng hiện tại chưa xem
Xử lý: Dựa trên bảng Lịch Sử, hệ thống sẽ so sánh hành vi của người dùng hiện tại
với các người dùng khác và đưa ra các gợi ý dựa trên sự tương đồng trong sở thích phim
1.4.1.3.4 Content-based Filtering (Lọc dựa trên nội dung)
Nguyên lý: Dựa vào thông tin về các phim mà người dùng đã xem (thể loại, diễn
viên, đạo diễn, ) để gợi ý các bộ phim tương tự
Xử lý: Hệ thống phân tích thể loại và các thông tin liên quan đến phim mà người
dùng đã xem từ bảng Lịch Sử, sau đó truy vấn bảng Phim để tìm các phim có đặc điểm tương tự
1.4.1.3.5 Hybrid Filtering (Kết hợp)
Nguyên lý: Kết hợp cả hai phương pháp Collaborative Filtering và Content-based Filtering để gợi ý phim chính xác hơn.
Xử lý: Hệ thống sử dụng cả dữ liệu từ người dùng (hành vi xem phim) và dữ liệu
về nội dung phim (thể loại, đánh giá, ) để đưa ra gợi ý
Trang 111.4.1.3.6 Quy trình xử lý gợi ý phim
Bước 1: Thu thập thông tin từ người dùng
Khi người dùng đăng nhập vào hệ thống, thông tin về các phim họ đã xem (lấy từ bảng Lịch Sử) sẽ được phân tích
Hệ thống sẽ sử dụng dữ liệu này để xác định các thể loại phim mà người dùng yêu thích hoặc các xu hướng xem phim của họ
Bước 2: Xử lý và phân tích dữ liệu
Hệ thống thực hiện phân tích dữ liệu dựa trên các phương pháp lọc như đã mô tả ở trên
Các phim phù hợp sẽ được lấy từ bảng Phim, dựa trên sự tương đồng về thể loại, đạo diễn, diễn viên hoặc lịch sử xem phim của các người dùng khác có hành vi tương tự
Bước 3: Gợi ý phim cho người dùng
Sau khi phân tích, hệ thống sẽ hiển thị danh sách các phim gợi ý cho người dùng trên trang chính hoặc một phần riêng trên giao diện
Các phim có thể được phân loại thành "Phim bạn có thể thích", "Phim tương tự với những gì bạn đã xem", hoặc "Phim phổ biến mà bạn chưa xem"
1.4.1.3.7 Giao diện hiển thị gợi ý phim
Trên giao diện chính, danh sách phim gợi ý sẽ được hiển thị ở một vị trí dễ nhìn, thường
là dưới banner hoặc bên cạnh danh sách các phim đang chiếu, sắp chiếu Mỗi phim gợi ý
sẽ hiển thị thông tin cơ bản như:
Tên phim
Ảnh bìa
Thể loại
Đánh giá
Nút "Xem chi tiết"
1.4.1.3.8 Tích hợp với các tính năng khác
Chức năng gợi ý phim có thể được kết hợp với các tính năng khác như:
Lịch sử xem phim: Dựa trên các phim đã xem trước đó để cung cấp gợi ý mới.
Đánh giá phim: Nếu người dùng đánh giá một phim cao, hệ thống có thể gợi ý
các phim tương tự
Phim hot: Các bộ phim nổi bật có thể được ưu tiên gợi ý cho người dùng.
1.4.1.3.9 Tối ưu hóa trải nghiệm người dùng
Để nâng cao trải nghiệm người dùng, chức năng gợi ý phim cần:
Độ chính xác cao: Càng gợi ý những phim phù hợp với sở thích cá nhân của
người dùng thì khả năng giữ chân họ trên hệ thống càng lớn