1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị

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

Tiêu đề Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Tác giả Trần Văn Thiệt, Trần Đình Khôi
Người hướng dẫn Th.S Trần Anh Dũng
Trường học Đại Học Quốc Gia TP. Hồ Chí Minh
Chuyên ngành Khoa Công Nghệ Phần Mềm
Thể loại Đồ án
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 124
Dung lượng 5,67 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: MỞ ĐẦU (23)
    • 1.1. Lý do chọn đề tài (23)
    • 1.2. Mục đích nghiên cứu (24)
      • 1.2.1. Khách quan (24)
      • 1.2.2. Chủ quan (24)
    • 1.3. Đối tượng nghiên cứu (24)
      • 1.3.1. Các công nghệ nghiên cứu (24)
      • 1.3.2. Đối tượng sử dụng đề tài hướng đến (25)
    • 1.4. Phạm vi nghiên cứu (25)
      • 1.4.1. Phạm vi môi trường (25)
      • 1.4.2. Phạm vi chức năng (25)
    • 1.5. Mục tiêu đề tài (25)
      • 1.5.1. Xây dựng mô hình (25)
      • 1.5.2. Xây dựng ứng dụng (25)
  • CHƯƠNG 2: KIẾN THỨC NỀN TẢNG (27)
    • 2.1. Flutter (27)
    • 2.2. Dart (29)
    • 2.3. ASP.Net Core (31)
    • 2.4. C# (32)
    • 2.5. MS SQL Server (33)
    • 2.6. Microsoft-ML (35)
  • CHƯƠNG 3: HỆ THỐNG GỢI Ý RECOMMENDER SYSTEM (37)
    • 3.1. Khái niệm (37)
      • 3.1.1. Recommendater System (37)
      • 3.1.2. Phương pháp Collaborative Filtering (38)
    • 3.2. Các thành phần chính (40)
      • 3.2.1. Utility Matrix (40)
      • 3.2.2. Thuật toán Matrix Factorization (41)
    • 3.3. Áp dụng vào đề tài (43)
      • 3.3.1. Luồng xử lý (43)
      • 3.3.2. Phân tích bộ dữ liệu (43)
      • 3.3.3. Xây dựng Recommender System (44)
      • 3.3.4. Thử nghiệm và đánh giá (44)
  • CHƯƠNG 4: XÂY DỰNG HỆ THỐNG (46)
    • 4.1. Kiến trúc hệ thống tổng quan (46)
    • 4.2. Kiến trúc phía Client (47)
      • 4.2.1. Kiến trúc hệ thống (47)
      • 4.2.2. Chi tiết các thành phần trong hệ thống (47)
    • 4.3. Kiến trúc phía Server (50)
      • 4.3.1. Kiến trúc hệ thống (50)
      • 4.3.2. Chi tiết các thành phần trong hệ thống (50)
    • 4.4. Sơ đồ Use case (54)
      • 4.4.1. Danh sách các tác nhân (55)
      • 4.4.2. Danh sách Use case (55)
      • 4.4.3. Mô tả chi tiết Use case (57)
    • 4.5. Sơ đồ hoạt động (69)
      • 4.5.1. Sơ đồ hoạt động cho Xem thông tin phim (69)
      • 4.5.2. Sơ đồ hoạt động cho Xem phim (70)
      • 4.5.3. Sơ đồ hoạt động cho Gợi ý phim (71)
    • 4.6. Thiết kế cơ sở dữ liệu (72)
      • 4.6.1. Sơ đồ các bảng (72)
      • 4.6.2. Danh sách các bảng dữ liệu (72)
      • 4.6.3. Mô tả chi tiết các bảng dữ liệu (75)
  • CHƯƠNG 5: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG (89)
    • 5.1. Sơ đồ liên kết màn hình (89)
    • 5.2. Danh sách các màn hình (89)
    • 5.3. Mô tả chi tiết các màn hình (92)
      • 5.3.1. Màn hình Get Started (92)
      • 5.3.2. Màn hình Login (94)
      • 5.3.3. Màn hình Signup (95)
      • 5.3.4. Màn hình Verify Signup (97)
      • 5.3.5. Màn hình Forgot pass (99)
      • 5.3.6. Màn hình Verify forgot pass (100)
      • 5.3.7. Màn hình New pass (102)
      • 5.3.8. Màn hình Congrats (103)
      • 5.3.9. Màn hình Home (105)
      • 5.3.10. Màn hình Movie list (106)
      • 5.3.11. Màn hình Movie detail (108)
      • 5.3.12. Màn hình Actor detail (109)
      • 5.3.13. Màn hình Actor search (111)
      • 5.3.14. Màn hình Search filter (112)
      • 5.3.15. Màn hình Watching (113)
      • 5.3.16. Màn hình Profile (114)
      • 5.3.17. Màn hình Saved (114)
      • 5.3.18. Màn hình Review (116)
      • 5.3.19. Màn hình History (117)
      • 5.3.20. Màn hình Settings (118)
  • CHƯƠNG 6: CÀI ĐẶT VÀ KIỂM THỬ (120)
    • 6.1. Kiểm thử phía ứng dụng (120)
      • 6.1.1. Môi trường kiểm thử (120)
      • 6.1.2. Kết quả kiểm thử (120)
    • 6.2. Kiểm thử hệ thống khyến nghị (120)
      • 6.2.1. Môi trường kiểm thử (120)
      • 6.2.2. Kết quả kiểm thử (121)
  • CHƯƠNG 7: TỔNG KẾT (123)
    • 7.1. Kết quả đạt được (123)

Nội dung

KIẾN THỨC NỀN TẢNG

Flutter

Flutter là một SDK phát triển ứng dụng di động mã nguồn mở do Google phát triển, ra mắt vào năm 2017 Nó cung cấp một thư viện mạnh mẽ cho việc phát triển ứng dụng đa nền tảng trên các hệ điều hành như Android, iOS, Mac, Windows và Linux Điểm nổi bật của Flutter là hiệu năng cao nhờ vào việc sử dụng ngôn ngữ Dart, giúp tối ưu hóa quá trình phát triển các thành phần ứng dụng.

Flutter vượt trội hơn các nền tảng trước như React Native về hiệu năng nhờ khả năng chạy gần như native Ngôn ngữ Dart được sử dụng để viết cả giao diện người dùng và logic ứng dụng, với mã nguồn được Flutter SDK biên dịch sang mã native và thực thi trực tiếp trên hệ điều hành Flutter có khả năng quét 60 lần mỗi giây để kiểm tra và cập nhật giao diện mà không tiêu tốn nhiều tài nguyên Bằng cách so sánh sự thay đổi giữa các widget trong RenderTree, Flutter tối ưu hóa quá trình render hiệu quả Trước khi bắt tay vào cài đặt và cấu hình, chúng ta cần tìm hiểu một số khái niệm cơ bản.

- Giới thiệu về Widget Tree:

Widget Tree là tập hợp tất cả các Widget được sử dụng để xây dựng ứng dụng, trong đó mã code chúng ta viết sẽ tạo ra cấu trúc Widget Tree Chúng ta hoàn toàn kiểm soát quá trình này bằng cách khai báo và lồng ghép các widget để tạo nên bố cục mong muốn.

Cây widget trong Flutter được tạo ra khi phương thức build() được gọi từ mã nguồn của chúng ta, và nó bao gồm các cài đặt cấu hình mà Flutter sẽ xử lý.

Widget tree không chỉ đơn thuần xuất hiện trên màn hình mà còn cung cấp thông tin cho Flutter về những gì sẽ được vẽ trong lần tiếp theo Nó thường xuyên được rebuild, cho thấy tính linh hoạt và khả năng cập nhật của Flutter.

- Giới thiệu về Element Tree:

Element Tree liên kết với Widget Tree, chứa thông tin về các đối tượng hiển thị thực tế và hiếm khi được tái tạo Quá trình quản lý Element Tree khác với Widget Tree, và nó không tái tạo khi phương thức build() được gọi Mỗi Widget trong Widget Tree sẽ tự động tạo một element khi Flutter xử lý lần đầu Element là đối tượng được Flutter quản lý trong bộ nhớ, liên quan đến Widget trong Widget Tree và chỉ giữ một tham chiếu tới Widget đang chứa các thông số giao diện.

- Giới thiệu về Render Tree:

Render Tree đại diện cho các đối tượng thực sự hiển thị trên màn hình và không được xây dựng lại thường xuyên Element Tree liên kết với Render Tree, trong đó các element trong Element Tree tham chiếu đến các đối tượng render mà người dùng thấy Khi Flutter phát hiện một element chưa được render, nó sẽ tham chiếu đến Widget trong Widget Tree để thiết lập và tạo một element trong Element Tree Flutter cũng trải qua một giai đoạn layout, trong đó nó tính toán không gian, chiều, kích thước và hướng có sẵn trên màn hình.

Nó cũng có một phase khác để thiết lập các listeners với các Widget để chúng ta có thể thao tác các sự kiện, v.v

Widget là các thành phần giao diện của ứng dụng, được thiết kế dưới dạng lớp (class) có khả năng lồng ghép tạo thành một cây Widget (Widget Tree) Trong Flutter, có hai loại Widget chính: StatelessWidget và StatefulWidget.

State: thể hiện trạng thái của ứng dụng, khi state thay đồi thì Widget đồng thời render lại để cập nhật UI (chỉ có ở StatefulWidget).

Dart

Hình 2.2: Ngôn ngữ lập trình Dart

Dart là một ngôn ngữ lập trình hiện đại do Google phát triển, ra mắt lần đầu vào năm 2011 và phiên bản ổn định được phát hành vào tháng 6 năm 2017 Mặc dù không phổ biến ngay từ đầu, Dart đã thu hút sự chú ý khi trở thành ngôn ngữ chính cho việc phát triển ứng dụng với Flutter.

Dart là một ngôn ngữ lập trình động, hướng đối tượng và dựa trên lớp, có cú pháp tương tự như Java, C và JavaScript Nếu bạn đã quen thuộc với một trong những ngôn ngữ này, việc học Dart sẽ trở nên dễ dàng hơn.

Dart là ngôn ngữ lập trình mã nguồn mở phổ biến cho phát triển ứng dụng di động, web hiện đại, ứng dụng máy tính để bàn và Internet of Things (IoT) thông qua khung Flutter Ngôn ngữ này hỗ trợ các khái niệm nâng cao như Interface, mixin, lớp trừu tượng và generic type Dart là một ngôn ngữ biên dịch, cung cấp hai kỹ thuật biên dịch khác nhau.

Ahead Of Time (AOT) là phương pháp biên dịch mà ngôn ngữ Dart được chuyển đổi trực tiếp sang mã gốc, mang lại hiệu suất tối ưu cho ứng dụng Khi chạy chương trình, AOT thực hiện biên dịch toàn bộ mã từ đầu đến cuối, giúp cải thiện tốc độ và hiệu quả hoạt động.

Just In Time (JIT) cho phép tính năng hot reloading hoạt động hiệu quả, giúp cải thiện tốc độ phát triển sản phẩm Điều này tương tự như quá trình debug trong các ngôn ngữ lập trình khác, nơi mà khi gọi hàm, hệ thống sẽ biên dịch ngay lập tức đến vị trí cần thiết.

Một số khái niệm quan trọng cần nắm khi học Dart:

- Do Dart là ngô ngữ thuần OOP nên tất cả những thứ bạn gán cho biến đều là object, mọi object đều là instance (thể hiện) của một class

- Kể cả số, method (hàm) và null cũng đều là object Tất cả các object đều kế thừa từ Object class

- Type của 1 variable (biến) là optional bởi vì Dart có thể tự suy ra type dựa trên giá trị truyền vào cho biến

Biến number thường được hiểu là kiểu int trong lập trình Khi bạn cần khai báo một biến mà loại của nó không được xác định và có khả năng thay đổi, bạn nên sử dụng kiểu dynamic để linh hoạt hơn trong việc xử lý dữ liệu.

Dart hỗ trợ kiểu dữ liệu tổng quát (generic type) tương tự như nhiều ngôn ngữ lập trình khác, cho phép tạo ra các danh sách như List (danh sách số nguyên) hoặc List (danh sách các đối tượng với kiểu không xác định), giúp Dart linh hoạt trong việc chấp nhận mọi loại kiểu dữ liệu.

Dart hỗ trợ hàm cấp cao (top-level function), cho phép bạn sử dụng hàm mà không cần phải thông qua tên lớp hay bất kỳ thể hiện nào của lớp.

- Bạn cũng có thể tạo một hàm bên trong hàm (còn gọi là nested function hoặc local function)

- Tương tự Dart cũng hỗ trợ top-level variable

Dart khác với Java ở chỗ không hỗ trợ các mức độ truy cập như public, protected và private Trong Dart, nếu một identifier (tên biến, hàm, ) bắt đầu bằng dấu gạch dưới (_), nó sẽ được coi là private trong thư viện của nó.

- Mỗi file dart được coi là 1 library Identifier có thể bắt đầu bằng một chữ cái hoặc dấu gạch dưới (_)

- Dart tools có thể báo cho bạn 2 loại vấn đề: warning và errors.

ASP.Net Core

ASP.NET Core, một sản phẩm phát triển từ NET Framework, đã được cộng đồng ủng hộ và phát triển ổn định trong thời gian dài Sự ra đời của ASP.NET Core đánh dấu một bước chuyển mình mạnh mẽ, mang đến những đặc tính nổi bật của công nghệ lập trình hiện đại.

ASP.NET Core là một framework hiện đại, được phát triển dựa trên kinh nghiệm từ các framework module hóa khác Nó sử dụng Nuget Packages, cho phép tối ưu hóa thiết kế ứng dụng bằng cách chỉ bao gồm các thành phần cần thiết Nhờ đó, ứng dụng ASP.NET có dung lượng nhỏ hơn, bảo mật tốt hơn và hiệu suất ổn định hơn Quá trình xây dựng ứng dụng cũng trở nên đơn giản hơn, giúp việc phát triển và bảo trì dễ dàng hơn trong tương lai.

Khi làm việc với ASP.NET core bạn đã được những cải tiến đáng kể như:

- Tương thích hệ thống xây dựng Web UI và Web APIs

- Tích hợp những client – side frameworks hiện đại và những luồng phát triển

- Hệ thống cấu hình dựa trên mô hình đám mây

- Dependency injection được xây dựng sẵn

- HTTP request được tối ưu nhẹ hơn

- Có thể host trên IIS hoặc self- host trong process của riêng mình

- Được xây dựng trên NET Core, hỗ trợ app vesioning

- Chuyển thực thể, thành phần, module như những NuGet packages

- Các công cụ mới để đơn giản hóa quá trình phát triển web hiện đại

- Xây dựng và chạy đa nền tảng, mã nguồn mở, tập trung vào cộng đồng

C#

Hình 2.4: Ngôn ngữ lập trình C#

C# là một ngôn ngữ lập trình hướng đối tượng do Microsoft phát triển, hoạt động trên nền tảng NET Framework Ngôn ngữ này có nguồn gốc từ C và tương tự như các ngôn ngữ phổ biến khác như C++ và Java.

Phiên bản đầu tiên được phát hành vào năm 2002 Phiên bản mới nhất, C# 11, được phát hành vào tháng 11 năm 2022

Ngôn ngữ lập trình C# có những đặc trưng cơ bản sau:

- Là một ngôn ngữ thuần hướng đối tượng

- Là ngôn ngữ khá đơn giản, chỉ có khoảng 80 từ khóa và hơn mười mấy kiểu dữ liệu được dựng sẵn

- Cung cấp những đặc tính hướng thành phần (component-oriented) như là Property, Event

- C# không khuyến khích sử dụng con trỏ như trong C++ nhưng nếu bạn thực sự muốn sử dụng thì phải đánh dấu đây là mã không an toàn (unsafe)

- C# có bộ Garbage Collector sẽ tự động thu gom vùng nhớ khi không còn sử dụng nữa

- C# đã loại bỏ đa kế thừa trong C++ mà thay vào đó C# sẽ hỗ trợ thực thi giao diện

Một số ưu điểm nổi bật của C#:

- Gần gũi với các ngôn ngữ lập trình thông dụng (C++, Java, Pascal)

- Xây dựng dựa trên nền tảng của các ngôn ngữ lập trình mạnh nên thừa hưởng những ưu điểm của những ngôn ngữ đó

- Cải tiến các khuyết điểm của C/C++ như con trỏ, các hiệu ứng phụ

- Dễ tiếp cận, dễ phát triển.

MS SQL Server

SQL Server là hệ quản trị cơ sở dữ liệu quan hệ do Microsoft phát triển, được sử dụng rộng rãi để lưu trữ và quản lý dữ liệu trong các ứng dụng doanh nghiệp và web Nó có khả năng thực hiện nhiều tác vụ liên quan đến cơ sở dữ liệu như tạo, xóa, sửa đổi và truy vấn dữ liệu một cách hiệu quả.

SQL Server được phát triển để phục vụ các ứng dụng với nhiều người dùng đồng thời và có khả năng mở rộng, đáp ứng nhu cầu tăng trưởng của doanh nghiệp Nó cũng tích hợp các tính năng bảo mật cao, giúp bảo vệ dữ liệu khỏi các cuộc tấn công từ bên ngoài và đảm bảo tính toàn vẹn của thông tin.

SQL Server hỗ trợ nhiều ngôn ngữ lập trình như C++, Java, Python và NET, đồng thời có khả năng tích hợp với các hệ thống khác nhau, bao gồm ứng dụng doanh nghiệp, hệ thống quản lý nội dung, hệ thống quản lý quan hệ khách hàng và hệ thống phân tích dữ liệu.

SQL Server cung cấp nhiều tính năng nâng cao, bao gồm sao lưu và khôi phục dữ liệu, phân tích và báo cáo, phân vùng dữ liệu, và xử lý dữ liệu phân tán Ngoài ra, nó hỗ trợ in-memory OLTP và AlwaysOn, giúp tăng tốc độ xử lý và đảm bảo tính sẵn sàng cao cho các ứng dụng quan trọng.

Microsoft-ML

Microsoft-ML là thư viện machine learning mã nguồn mở do Microsoft phát triển, cung cấp các công cụ và thuật toán tiên tiến giúp người dùng xây dựng mô hình dự đoán và phân tích dữ liệu hiệu quả.

Microsoft-ML hỗ trợ ngôn ngữ lập trình R và Python, giúp người dùng áp dụng các công cụ và thuật toán machine learning trong các môi trường lập trình phổ biến Thư viện này cũng tích hợp tốt với các sản phẩm của Microsoft như SQL Server và Azure, cho phép người dùng triển khai machine learning trong môi trường đám mây.

Microsoft-ML cung cấp đa dạng thuật toán machine learning như hồi quy, phân loại, phân cụm và gợi ý Nó cũng trang bị các công cụ và thuật toán hỗ trợ xử lý dữ liệu, giúp người dùng chuẩn bị dữ liệu trước khi áp dụng thuật toán machine learning Các công cụ này bao gồm kỹ thuật tiền xử lý dữ liệu như loại bỏ dữ liệu thiếu, chuẩn hóa và mã hóa dữ liệu.

Microsoft-ML cung cấp các tính năng tiên tiến như học máy trên dữ liệu lớn và dữ liệu phân tán, cho phép người dùng xử lý hiệu quả các tập dữ liệu khổng lồ Điều này không chỉ tăng tốc độ xử lý mà còn giảm thiểu thời gian huấn luyện mô hình.

Microsoft-ML cung cấp các công cụ và tính năng đánh giá mô hình, cho phép người dùng kiểm tra hiệu suất và điều chỉnh các tham số để phù hợp với mục đích sử dụng của mình.

Microsoft-ML cung cấp các gói cài đặt cho R và Python, hỗ trợ cài đặt trên Windows, Linux và macOS Thư viện này tích hợp với các công cụ phát triển như Visual Studio và Jupyter Notebook, giúp người dùng dễ dàng phát triển và sử dụng các mô hình machine learning.

HỆ THỐNG GỢI Ý RECOMMENDER SYSTEM

Khái niệm

Hệ thống gợi ý (Recommender System) là công cụ tự động đề xuất sản phẩm phù hợp với sở thích của người dùng, vượt trội hơn so với các thuật toán tìm kiếm truyền thống Bằng cách phân tích dữ liệu người dùng đã thu thập, hệ thống có khả năng dự đoán và gợi ý các sản phẩm, tính năng hay dịch vụ liên quan, ngay cả khi người dùng không thực hiện tìm kiếm Điều này không chỉ nâng cao chất lượng dịch vụ ứng dụng mà còn giúp tăng lợi nhuận, đặc biệt trong lĩnh vực thương mại điện tử.

Hệ thống gợi ý (Recommender System) là một lĩnh vực quan trọng trong Học Máy với lịch sử lâu dài, được Jussi Karlgren đề cập lần đầu trong một báo cáo kỹ thuật năm 1990 tại Đại Học Columbia Tuy nhiên, sự bùng nổ thực sự của các hệ thống gợi ý chỉ diễn ra trong 10-15 năm qua, nhờ vào sự gia tăng tương tác trực tuyến của người dùng và sự phát triển mạnh mẽ của các sàn thương mại điện tử, cùng với những tiến bộ trong ngành Khoa học dữ liệu.

Các thuật ngữ sau đây sẽ thường được sử dụng,

- Đối tượng, hay người dùng mà hệ thống gợi ý hướng đến được gọi là users,

- Sản phẩm mà hệ thống đưa ra gợi ý được gọi là items

- Sự tương quan giữa các đối tượng và sản phẩm, mức độ quan tâm của đối tượng đối với sản phẩm đó được gọi là rating

Về phân loại, các Recommender Systems thường được chia thành hai nhóm lớn:

- Content-based systems: hoạt động dựa vào đặc điểm của items

- Collaborative filtering: hoạt động với sự cộng tác của users và rating

Trong đề tài này, nhóm chúng em tập trung phát triển hệ thống gợi ý, Recommender System theo hướng thứ hai: Collaborative filtering

Lọc cộng tác (Collaborative filtering) là một phương pháp trong hệ thống gợi ý, hoạt động dựa trên sự tương quan giữa người dùng, sản phẩm và đánh giá Phương pháp này giúp xác định sản phẩm mà người dùng có khả năng yêu thích dựa trên lựa chọn của những người dùng có hành vi tương tự trước đó Ưu điểm của lọc cộng tác là khả năng cung cấp gợi ý chính xác và cá nhân hóa cho người dùng.

Hệ thống sử dụng thông tin từ người dùng để phân tích hành vi Bằng cách nhận diện các đặc điểm hành vi của những người dùng tương tự, hệ thống có khả năng suy luận hành vi của các người dùng khác, từ đó cải thiện trải nghiệm người dùng và tối ưu hóa dịch vụ.

- Đơn giản, không cần phải mô tả đặc điểm mỗi item như Content-base

Nhược điểm của Collaborative filtering,

Hệ thống gặp khó khăn trong việc xử lý vấn đề khởi đầu lạnh (cold-start problem) khi người dùng mới không có thông tin hành vi hoặc chưa đánh giá sản phẩm nào, cũng như khi các sản phẩm mới chưa nhận được đánh giá từ người dùng.

Khi ma trận đánh giá có quy mô lớn với nhiều người dùng và sản phẩm, thời gian tính toán sẽ tăng lên đáng kể, gây khó khăn trong việc cung cấp tư vấn theo thời gian thực hoặc gần thời gian thực.

Khi hai người dùng A và B cùng đánh giá cao các sản phẩm với điểm từ 4 đến 5, hệ thống sẽ phân tích dữ liệu của người dùng A để xác định những sản phẩm khác mà A yêu thích Dựa vào sở thích này, hệ thống sẽ gợi ý những sản phẩm tương tự cho người dùng B, vì có khả năng B cũng sẽ thích những sản phẩm đó.

Hình 3.1: Cách thức hoạt động của Collaborative filtering

User -user Collaborative Filtering là phương pháp xác định mức độ quan tâm của từng người dùng đối với một sản phẩm dựa trên sự quan tâm của những người dùng tương tự.

Trên thực tế, User-user Collaboration filtering cũng tồn tại mặt hạn chế

Số lượng người dùng thường vượt xa số lượng sản phẩm, dẫn đến việc tính toán trở nên phức tạp và khối lượng dữ liệu cần lưu trữ cũng tăng cao.

- Khi một user thay đổi rating, hoặc rating thêm items, toàn bộ tính toán sẽ phải thực hiện lại

Một phương pháp tiếp cận khác trong hệ thống gợi ý là xác định sự tương đồng giữa các mục, được gọi là Item-Item Collaborative Filtering Phương pháp này có thể khắc phục những hạn chế của User-user và thường được áp dụng rộng rãi trong thực tế.

Trong đề tài này, nhóm chúng em phát triển hệ thống gợi ý, Collaborative filtering Recommender System theo hướng thứ nhất: User-user

Các thành phần chính

Trong các hệ thống gợi ý, có hai thực thể chính là người dùng (users) và sản phẩm (items) Mỗi người dùng sẽ thể hiện mức độ quan tâm khác nhau đối với từng sản phẩm, được gọi là rating, và gán cho mỗi cặp người dùng-sản phẩm một giá trị cụ thể Tất cả các rating, bao gồm cả những giá trị chưa biết cần được dự đoán, tạo thành một ma trận được gọi là ma trận utility.

Người dùng đánh giá các mục từ 1 đến 3 với điểm số từ 0 đến 5 dựa trên mức độ quan tâm Các dấu '?' biểu thị cho dữ liệu chưa có trong cơ sở dữ liệu, do đó, hệ thống gợi ý cần thực hiện tính toán để dự đoán giá trị cho những vị trí này.

Trong hệ thống có nhiều người dùng và sản phẩm, mỗi người chỉ đánh giá một số ít sản phẩm, thậm chí có người không đánh giá sản phẩm nào Sự chính xác của hệ thống gợi ý tăng lên khi số lượng đánh giá được nhiều hơn, vì vậy, các hệ thống luôn khuyến khích người dùng đánh giá nhiều sản phẩm Việc đánh giá không chỉ giúp người dùng khác nhận biết chất lượng sản phẩm mà còn giúp hệ thống nắm bắt sở thích của người dùng, từ đó đưa ra những gợi ý chính xác hơn cho những người dùng sau.

Phân tích ma trận thành nhân tử, hay còn gọi là Matrix Factorization, hoặc Matrix Decomposition là một thuật toán của phương pháp Collaborative Filtering Recommendation System

Thuật toán Matrix Factorization trong hệ thống gợi ý dựa trên giả định rằng tồn tại các tính chất ẩn mô tả mối quan hệ giữa items và users Những tính chất ẩn này có thể là đặc điểm riêng của từng item hoặc là sự kết hợp của nhiều đặc điểm khác nhau Mỗi item sẽ có một mức độ tính chất ẩn nhất định, được biểu thị qua các hệ số trong vector 𝑿, với hệ số cao hơn tương ứng với tính chất mạnh hơn Tương tự, mỗi user cũng có những sở thích về các tính chất ẩn, được mô tả bởi các hệ số trong vector 𝑾 của họ.

Hình 3.4: Hình minh họa thuật toán Matrix Factorization dưới dạng biểu thức

Sau khi tìm được các ma trận items 𝑿 và ma trận users 𝑾, giá trị ước lượng rating của một user 𝒋 lên mt item 𝒊 bằng biểu thức 𝑦̂ = 𝑥 𝑖𝑗 𝑖 𝑇 𝑤 𝑗

Giá trị của biểu thức sẽ tăng lên khi các thành phần của 𝑿 và 𝑾 đều cao, cho thấy item có những đặc điểm mà người dùng ưa thích Do đó, việc gợi ý item này cho người dùng là hợp lý.

Xây dựng hàm mất mát

Việc xây dựng hàm mất mát cũng được dựa trên các thành phần đã được điền của Utility Matrix 𝒀 dựa trên biểu thức sau:

Hình 3.5: Hàm mất mát của thuật toán Matrix Factorization

Trong đó, r mn = 1 nếu item thứ m đã được đánh giá bởi user thứ n, và giá trị này là căn bậc hai của tổng bình phương tất cả các phần tử trong ma trận, với s là tổng số ratings đã có.

Việc tối ưu đồng thời các ma trận 𝑿 và 𝑾 khá phức tạp, vì vậy phương pháp hiệu quả hơn là tối ưu từng ma trận một trong khi giữ ma trận kia cố định, cho đến khi đạt được sự hội tụ.

Khi cố định X, việc tối ưu W đưa về việc tối ưu hàm:

Hình 3.6: Hàm tối ưu W khi cố định X

Khi cố định W, việc tối ưu X đưa về viêc tối ưu hàm:

Hình 3.7: Hàm tối ưu X khi cố định W

Áp dụng vào đề tài

Sau khi hệ thống xác định người dùng dựa trên thông tin về các bộ phim đã xem và đánh giá, kết quả sẽ được gửi đến Hệ thống Gợi ý (Recommender System) Tại đây, Hệ thống Gợi ý sử dụng bộ dữ liệu từ Movielens kết hợp với dữ liệu mới và áp dụng thuật toán Matrix Factorization Collaborative Filtering để xử lý dữ liệu, từ đó đưa ra danh sách các bộ phim được đề xuất mà những người dùng trước đó cũng đã đánh giá cao.

3.3.2 Phân tích bộ dữ liệu

Nhóm lấy bộ dữ liệu từ Movielens, bao gồm:

- Bộ dữ liệu train với 100836 dòng dữ liệu, gồm 610 users, 9724 bộ phim được đánh giá, mỗi user đều rating giá trị từ 0 đến 5, bước giá trị 0,5

- Bộ dữ liệu test với 500 dòng dữ liệu, gồm các dữ liệu được lọc random từ bộ dữ liệu train

Hình 3.8: Hình minh họa bộ dữ liệu train

The team developed a Recommender System utilizing Matrix Factorization algorithms through the Microsoft.ML and Microsoft.ML.Recommender libraries, integrated within a web API using ASP.NET Core version 6.0.

3.3.4 Thử nghiệm và đánh giá

Hình 3.9: Đánh giá mô hình và kết quả dự đoán của từng mã khóa học-thời gian

Trong đó, xét theo thang giá trị từ 0 -> 1:

Sai số dự đoán, hay còn gọi là Root Mean Squared Error (RMS hoặc RMSE), là chỉ số đánh giá sự khác biệt giữa giá trị dự đoán của mô hình và giá trị thực tế trong bộ dữ liệu Test RMSE được tính bằng căn bậc hai của trung bình các sai số bình phương Sai số dự đoán càng thấp, độ chính xác của hệ thống gợi ý (Recommender System) càng cao.

R bình phương (R Squared) là chỉ số đánh giá mức độ phù hợp của bộ dữ liệu với mô hình nghiên cứu, được tính dựa trên tỷ lệ phần biến thiên do hồi quy so với phần biến thiên do phần dư Giá trị R bình phương càng cao, mô hình nghiên cứu càng thể hiện sự phù hợp tốt hơn với dữ liệu.

XÂY DỰNG HỆ THỐNG

Kiến trúc hệ thống tổng quan

TMDB là nền tảng lưu trữ dữ liệu gốc về phim và các tài nguyên liên quan, trong khi máy chủ đóng vai trò xử lý các truy vấn cơ sở dữ liệu và lưu trữ thông tin xuống cơ sở dữ liệu.

MS SQL: Cơ sở dữ liệu lưu trữ tất cả thông tin hệ thống ứng dụng

Ứng dụng là phần mà người dùng tương tác trực tiếp, gửi yêu cầu đến server dựa trên hành vi của họ và nhận dữ liệu tương ứng Giao tiếp giữa client và server diễn ra thông qua chuẩn Restful API.

Firebase: Nơi lưu trữ các cài đặt, cấu hình ứng dụng để ứng dụng được hoạt động mượt mà nhất

Hình 4.1: Sơ đồ kiến trúc hệ thống tổng quan

Kiến trúc phía Client

Hình 4.2: Sơ đồ kiến trúc hệ thống phía client

4.2.2 Chi tiết các thành phần trong hệ thống

STT Thành phần Chi tiết

Service locator là một mẫu thiết kế giúp quản lý và cung cấp tất cả các phụ thuộc cần thiết cho các module trong hệ thống Nó hoạt động như một kho chứa, cho phép các module khác truy cập và sử dụng các phụ thuộc thông qua cơ chế dependency injection.

2 Presentation Module Đây là nơi trực tiếp quản lý các hành vi tương tác của người dùng

When a user interface receives an interaction from a user, it triggers an event known as a Bloc Event, which is sent to the BloC (UI Logic) block This BloC processes the necessary logic by calling the Usecase and then emits a state referred to as Bloc State The user interface then receives this state and renders the corresponding interface.

3 Domain Module Đây là nơi chủ chốt xử lý các business logic của ứng dụng

Entity sẽ là các thực thể dùng để lưu trữ dữ liệu nhận từ Repository và UI sẽ dùng các entity này để render

A use case serves as the framework for writing business logic and interacting with the Repository The Abstract Repository is an interface within the domain module, which is inherited and implemented by the Repository class in the Data module This design aims to eliminate dependencies between the two major modules: Domain and Data.

4 Data Module Đây là nơi chủ chốt để xử lý các thao tác lưu trữ dữ liệu, thao tác gọi API

The article discusses the integration of remote data, which includes API services, and local data, represented by Local Storage Additionally, it highlights the use of RemoteConfig for retrieving configuration settings.

Một thành phần quan trọng trong hệ thống là Model, chịu trách nhiệm lưu trữ dữ liệu từ cơ sở dữ liệu, trong khi quá trình phân tích dữ liệu sẽ được thực hiện bởi Data Mapper.

Module chia sẻ là thành phần chứa các chức năng chung thiết yếu cho toàn hệ thống, bao gồm cấu hình đa ngôn ngữ, hàm trợ giúp tính toán, các component phổ biến, cùng với các hằng số và cài đặt tổng quát.

Bảng 4.1: Các thành phần trong hệ thống phía client

Kiến trúc phía Server

Hình 4.3: Sơ đồ kiến trúc hệ thống phía server

4.3.2 Chi tiết các thành phần trong hệ thống

STT Thành phần Chi tiết

Máy chủ Web dùng để hosting API Nó dùng để nhận và xử lý các yêu cầu HTTP đến, chuyển hướng đến endpoint phù hợp

Hai bộ điều khiển Web API đóng vai trò là điểm vào cho các endpoint, chịu trách nhiệm xử lý các yêu cầu HTTP, thực hiện các logic liên quan và tạo ra các phản hồi phù hợp.

Là các đối tượng cung cấp định dạng cấu trúc để trao đổi thông tin giữa Controller và Unit of Work

Unit of Work (UoW) là một phần quan trọng trong việc xử lý các thao tác đọc, thêm, xóa và sửa dữ liệu Bằng cách kết hợp mẫu UoW với mẫu Repository, chúng ta tạo ra một cấu trúc rõ ràng và dễ dàng cho các thao tác CRUD Điều này cung cấp một lớp trung gian giúp truy xuất dữ liệu một cách trừu tượng và hiệu quả.

MlContext sử dụng mô hình đã được huấn luyện kết hợp với các thành phần khác trong UoW để thực hiện tính toán, xuất kết quả và cung cấp gợi ý cho người dùng.

5 EF 6 Đây là Object-Relational Mapping cung cấp lớp trừu tượng cấp cao chịu trách nhiệm tương tác với cơ sở dữ liệu

Là mô hình đã được dạy để hỗ trợ cho việc gợi ý phim cho người dùng đã tồn tại trong dataset

7 TMDB API Là API ngoài cung cấp thông tin các phim như: Tên phim, hình ảnh, diễn viên

Là thành phần quản lý các phụ thuộc, quản lý phạm vi và cung cấp các phụ thuộc qua cơ chế Dependency Injection

Lớp trừu tượng cấp cao hoạt động như một ổ đĩa lớn, được tạo thành từ nhiều ổ đĩa nhỏ hơn, nhằm nâng cao khả năng mở rộng chiều ngang cho hệ thống.

10 Indexing Đánh chỉ mục cho các file có trong hệ thống để dễ dàng tìm kiếm và quản lý các tập tin

Stream Processing đóng vai trò quan trọng trong việc tương tác với các file do RAID Storage cung cấp, giúp chia nhỏ và chuyển đổi dữ liệu để phù hợp với kích thước và nhu cầu của khách hàng.

12 Controllers đóng vai trò là điểm vào cho các endpoint, chịu trách nhiệm xử lý các yêu cầu HTTP đến, kiểm tra các tập tin và trả về tập tin (Stream) phù hợp.

Là một loại máy chủ tệp tin cho phép người dùng truy cập và chia sẻ tệp qua giao thức HTTP

Là công cụ tạo đường hầm (tunnel) hỗ trợ việc kết nối giữa localhost và internet giúp cho người dùng trên internet có thể truy cập được vào localhost

Bảng 4.2: Các thành phần trong hệ thống phía server

Sơ đồ Use case

Hình 4.4: Sơ đồ Use case

4.4.1 Danh sách các tác nhân

- User (người dùng): Có quyền truy cập tất cả các tính năng

STT Use case chính Phân rã Use case Ý nghĩa/Ghi chú

1 Đăng nhập Đăng nhập Người dùng đăng nhập vào hệ thống bằng tài khoản

Xác nhận sẽ đăng ký tài khoản với các thông tin mà người dùng đã nhập

Xác thực email mà người dùng sử dụng để đăng ký là hợp lệ

Kiểm tra xem tài khoản đang yêu cầu có tồn tại trong hệ thống không

Xác minh người đang yêu cầu khôi phục là chủ của tài khoản

Lập mật khẩu mới Thiết lập mật khẩu mới cho người dùng

Tra cứu phim Duyệt phim theo các tiêu chuẩn tra cứu Tra cứu diễn viên Duyệt diễn viên theo các tiêu chuẩn tra cứu

Yêu thích phim Lưu phim vào danh sách yêu thích Đánh giá phim Để lại bình luận và đánh giá phim

Xem phim Trình chiếu phim đang được chọn

Tải phim Tải phim về máy cục bộ

Chia sẻ phim qua tin nhắn văn bản hoặc QR (Chưa phát triển)

Lưu lịch sử Lưu lịch sử xem phim của người dùng Đánh giá phim Để lại bình luận và đánh giá phim

7 Xem thông tin diễn viên Xem thông tin Xem thông tin diễn viên cụ thể

8 Quản lý tài khoản Đổi mật khẩu Đổi mật khẩu tài khoản

Quản lý yêu thích Tra cứu hoặc xoá phim yêu thích Quản lý lịch sử Tra cứu, xoá phim đã xem

Quản lý đánh giá Tra cứu, xoá, sửa các đánh giá trong quá khứ

Cài đặt ứng dụng Đổi ngôn ngữ hoặc chủ đề ứng dụng

Bảng 4.3: Danh sách các Use case

4.4.3 Mô tả chi tiết Use case

Để tham gia vào hệ thống, người dùng cần thực hiện việc đăng nhập, trong đó tính năng này giúp xác thực danh tính người dùng thông qua tài khoản và mật khẩu.

Pre-Condition 1 Đã được cung cấp sẵn tài khoản

2 Hệ thống đang vận hành ổn định Post-Condition 1 Hệ thống hiển thị màn hình làm việc chính

2 Hệ thống ghi nhận hoạt động của người dùng Main Flow 1 Người dùng khởi động ứng dụng

3 Người dùng nhập mật khẩu

4 Người dùng Click Button Đăng nhập trên màn hình

5 Hệ thống xác nhận thông tin đăng nhập cho người dùng

6 Hệ thống ghi nhận thông tin đăng nhập người dùng

7 Kết thúc Use-case Alternative Flow 5a Hệ thống kiểm tra tài khoản người dùng nhập có tồn tại trong hệ thống hay không

5a1 Hệ thống hiển thị thông báo “Người dùng không tồn tại”

5a2 Kết thúc Use-case 5b Hệ thống kiểm tra tài khoản người dùng có mật khẩu không chính xác

5b1 Hệ thống hiển thị thông báo “Sai mật khẩu”

Bảng 4.4: Đặc tả use case dăng nhập

4.4.3.1 Use case Quên mật khẩu

Tên Use-case Khôi phục mật khẩu

Tóm tắt Cho phép người dùng truy cập lại tài khoản khi quên mật khẩu đăng nhập

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Người dùng nhấn vào tuỳ chọn “Quên mật khẩu”

2 Hệ thống hiển thị giao diện khôi phục mật khẩu

3 Người dùng nhập tài khoản mail liên kết với tài khoản cần khôi phục

4 Nếu tài khoản hợp lệ thì hệ thống tiến hành gửi mã xác thực và chuyển sang giao diện nhập mã

5 Người dùng nhập mã xác thực được gửi tới mail trước đó và nhấn “Xác thực”

6 Nếu mã hợp lệ thì hệ thống chuyển sang màn hình nhập mật khẩu

7 Người dùng nhập mật khẩu mới và sau đó nhấn “Xác nhận”

8 Nếu mật khẩu hợp lệ thì hệ thống chuyển sang màn hình Trang chủ

Alternative Flow 3a Hệ thống kiểm tra email vừa nhập Nếu không tồn tại email thì báo lỗi và kết thúc Usecase

5a Hệ thống kiểm tra mã vừa nhập Nếu không hợp lệ thì báo lỗi và kết thúc Usecase

6a Hệ thống kiểm tra mật khẩu vừa nhập Nếu xảy ra các trường hợp sau đây thì kết thúc Usecase

6a1 Mật khẩu mới (New password) và nhập lại mật khẩu mới (Re-enter new password) không khớp thì báo lỗi

6a2 Mật khẩu mới ngắn hơn 6 ký tự thì báo lỗi

Bảng 4.5: Đặc tả use case quên mật khẩu

4.4.3.2 Use case Đăng ký tài khoản

Tên Use-case Đăng ký tài khoản

Tóm tắt Cho phép người dùng tạo tài khoản mới

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Người dùng nhấn vào tuỳ chọn “Đăng ký”

2 Hệ thống hiển thị giao diện đăng ký tài khoản

3 Người dùng nhập tài khoản email và mật khẩu

4 Nếu tài khoản hợp lệ thì hệ thống tiến hành gửi mã xác thực và chuyển sang giao diện nhập mã

5 Người dùng nhập mã xác thực được gửi tới mail trước đó và nhấn “Xác thực”

6 Nếu mã hợp lệ thì hệ thống chuyển sang màn hình Trang chủ

Alternative Flow 3a1 Hệ thống kiểm tra email vừa nhập Nếu đã tồn tại email thì báo lỗi và kết thúc Usecase

3a2 Hệ thống kiểm tra mật khẩu, nếu không khớp hoặc ngắn hơn 6 ký tự thì báo lỗi và kết thúc Usecase

5a Hệ thống kiểm tra mã vừa nhập Nếu không hợp lệ thì báo lỗi và kết thúc Usecase

Bảng 4.6: Đặc tả use case đăng ký tài khoản

4.4.3.3 Use case Tra cứu phim – diễn viên

Tên Use-case Tra cứu phim – diễn viên

Tóm tắt Cho phép người dùng tìm kiếm thông tin về phim hoặc diễn viên

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Người dùng nhấn vào tuỳ chọn tìm kiếm

2 Hệ thống hiển thị giao diện tìm kiếm

3 Người dùng có thể chọn phim tìm theo hoặc diễn viên (thao tác tương tự nhau)

4 Người dùng nhập chuỗi ký tự cần tìm kiếm

5 Người dùng nhấn xác nhận “Tìm kiếm”

6 Hệ thống trả về danh sách kết quả phù hợp

Alternative Flow 3a1 Hệ thống kiểm tra chuỗi vừa nhập Nếu chuỗi rỗng thì kết thúc Usecase

Bảng 4.7: Đặc tả use case tra cứu phim, diễn viên

4.4.3.4 Use case Yêu thích phim

Tên Use-case Yêu thích phim

Tóm tắt Cho phép người dùng lưu hoặc xoá phim đang chọn vào danh sách yêu thích

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Người dùng nhấn vào một bộ phim

2 Tại màn hình thông tin phim, người dùng nhấn vào biểu tượng Trái tim (yêu thích)

3 Hệ thống cập nhật phim vào danh sách phim yêu thích

Alternative Flow 3a Hệ thống kiểm tra nếu danh sách phim yêu thích, nếy đã tồn tại phim thì xoá, ngược lại thêm vào danh sách Kết thúc use case

Bảng 4.8: Đặc tả use case yêu thích phim

4.4.3.5 Use case Đánh giá phim

Tên Use-case Đánh giá phim

Tóm tắt Cho phép người dùng bình luận và đánh giá phim

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Người dùng nhấn vào một bộ phim

2 Tại màn hình thông tin phim, người dùng điền bình luận vào ô nội dung, chọn mức đánh giá từ 1 đến 5

3 Người dùng nhấn vào nút Xác nhận

4 Hệ thống lưu bình luận của người dùng

Alternative Flow 3a Hệ thống kiểm tra nếu bình luận trống hoặc đánh giá

= 0 thì báo lỗi Kết thúc use case

Bảng 4.9: Đặc tả use case đánh giá phim

Tên Use-case Xem phim

Tóm tắt Cho phép người dùng xem phim

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Người dùng nhấn vào một bộ phim

2 Tại màn hình thông tin phim, người dùng nhấn vào áp phích của bộ phim

3 Hệ thống chuyển sang màn hình xem phim

4 Hệ thống lưu phim hiện tại vào lịch sử xem phim của người dùng

5 Hệ thống khởi tạo và lấy dữ liệu phim

6 Hệ thống trình chiếu phim lên giao diện

Alternative Flow 5a Hệ thống thử lấy dữ liệu về phim, nếu lấy thất bại thì báo lỗi Kết thúc use case

Bảng 4.10: Đặc tả use case xem phim

Tên Use-case Tải phim

Tóm tắt Cho phép người dùng tải phim đang xem

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình xem phim, người dùng nhấn vào biểu tượng Tải xuống

2 Hệ thống khởi tạo phiên tải xuống và thông báo ra giao diện

3 Khi tải xuống hoàn tất, hệ thống lưu tệp phim vào thư mục ứng dụng

4 Kết thúc use case Alternative Flow 1a Nếu đã trong quá trình tải xuống, hệ thống sẽ huỷ phiên tải hiện tại Kết thúc use case

Bảng 4.11: Đặc tả use case tải phim

4.4.3.8 Use case Xem thông tin phim

Tên Use-case Xem thông tin phim

Tóm tắt Cho phép người dùng xem thông tin chi tiết một bộ phim

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình bất kỳ nếu có thể điều hướng tới màn chi tiết phim, người dùng nhấn vào phim cần xem thông tin

2 Hệ thống tải tất cả thông tin cần thiết về phim

3 Người dùng có thể thao tác các trường hợp như xem phim, đánh giá, xem diễn viên trong phim, cảnh nổi bật

4 Kết thúc use case Alternative Flow 2a Nếu trong quá trình lấy thông tin lỗi, hệ thống sẽ trở về màn trước và thông báo lỗi Kết thúc use case

Bảng 4.12: Đặc tả use case xem thông tin phim

4.4.3.9 Use case Xem thông tin diễn viên

Tên Use-case Xem thông tin phim

Tóm tắt Cho phép người dùng xem thông tin chi tiết một diễn viên

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình bất kỳ nếu có thể điều hướng tới màn chi tiết diễn viên, người dùng nhấn vào diễn viên cần xem thông tin

2 Hệ thống tải tất cả thông tin cần thiết về diễn viên

3 Người dùng có thể thao tác các trường hợp như xem tiểu sử, các phim diễn viên này tham gia

Alternative Flow 2a Nếu trong quá trình lấy thông tin lỗi, hệ thống sẽ trở về màn trước và thông báo lỗi Kết thúc use case

Bảng 4.13: Đặc tả use case xem thông tin diễn viên

4.4.3.10 Use case Đổi mật khẩu

Tên Use-case Đổi mật khẩu

Tóm tắt Cho phép người dùng đổi mật khẩu tài khoản

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình Profile, người dùng nhấn tuỳ chọn Đổi mật khẩu

2 Hệ thống hiển thị hộp thoại mật khẩu mới

3 Người dùng nhập mật khẩu cũ, mật khẩu mới và nhập lại mật khẩu mới

4 Người dùng nhấn xác nhận

5 Hệ thống cập nhật dữ liệu mới

6 Kết thúc Use case Alternative Flow 5a Hệ thống kiểm tra mật khẩu cũ tài khoản, nếu không khớp thì báo lỗi và kết thúc use case

5b Hệ thống kiểm tra mật khẩu mới, nếu không trùng khớp hoặc ngắn hơn 6 ký tự thì báo lỗi và kết thúc use case

Bảng 4.14: Đặc tả use case đổi mật khẩu

4.4.3.11 Use case Quản lý yêu thích

Tên Use-case Quản lý yêu thích

Tóm tắt Cho phép người dùng quản lý các bộ phim đã lưu

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình Profile, người dùng nhấn tuỳ chọn

2 Hệ thống chuyển sang giao diện Saved

3 Người dùng nhấn vào một mục phim trong danh sách, sau đó nhấn huỷ yêu thích

4 Hệ thống cập nhật dữ liệu mới

5 Kết thúc Use case Alternative Flow

Bảng 4.15: Đặc tả use case quản lý yêu thích

4.4.3.12 Use case Quản lý lịch sử

Tên Use-case Quản lý lịch sử

Tóm tắt Cho phép người dùng quản lý lịch sử các phim đã xem

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình Profile, người dùng nhấn tuỳ chọn

2 Hệ thống chuyển sang giao diện History

3 Người dùng nhấn giữ một mục trong danh sách

4 Hệ thống hiển thị hộp thoại xác nhận xoá mục

5 Kết thúc Use case Alternative Flow 4a Nếu người dùng nhấn đồng ý thì hệ thống thực hiện xoá mục phim ra khỏi danh sách, kết thúc use case

Bảng 4.16: Đặc tả use case quản lý lịch sử

4.4.3.13 Use case Quản lý đánh giá

Tên Use-case Quản lý đánh giá

Tóm tắt Cho phép người dùng quản lý các bình luận của bản thân của tất cả các phim

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình Profile, người dùng nhấn tuỳ chọn

2 Hệ thống chuyển sang giao diện Review

3 Người dùng nhấn giữ một mục trong danh sách

4 Hệ thống hiển thị hộp thoại xác nhận xoá mục

5 Người dùng nhấn vào một mục trong danh sách

6 Hệ thống hiển thị thông tin chi tiết của mục đó

7 Người dùng nhấn vào biểu tượng chỉnh sửa

8 Hệ thống hiển thị hộp thoại chỉnh sửa đánh giá

Alternative Flow 4a Nếu người dùng nhấn đồng ý thì hệ thống thực hiện xoá mục ra khỏi danh sách, kết thúc use case

6a Nếu người dùng nhấn vào áp phích phim trong đánh giá thì hệ thống chuyển sang màn hình xem phim, kết thúc use case

8a Người dùng nhập thông tin cần chỉnh sửa và nhấn xác nhận

8b Hệ thống kiểm tra điều kiện nhập và cập nhật lại đánh giá Kết thúc use case

Bảng 4.17: Đặc tả use case quản lý đánh giá

4.4.3.14 Use case Cài đặt ứng dụng

Tên Use-case Cài đặt ứng dụng

Tóm tắt Cho phép người dùng thay đổi ngôn ngữ hoặc chủ đề của ứng dụng

Pre-Condition Hệ thống đang ở trạng thái hoạt động

Main Flow 1 Tại màn hình Profile, người dùng nhấn tuỳ chọn

2 Hệ thống chuyển sang giao diện Settings

3 Người dùng nhấn vào mục Ngôn ngữ

4 Hệ thống hiển thị hộp thoại chọn ngôn ngữ

5 Người dùng nhấn vào công tắc Chủ đề

6 Hệ thống cập nhật giao diện tương ứng với chủ đề

7 Kết thúc Use case Alternative Flow 3a Nếu người dùng nhất chọn một ngôn ngữ mới, hệ thống sẽ cập nhật lại giao diện tương ứng Kết thúc use case

Bảng 4.18: Đặc tả use case cài đặt ứng dụng

Sơ đồ hoạt động

4.5.1 Sơ đồ hoạt động cho Xem thông tin phim

Hình 4.5: Xem thông tin phim Activity Diagram

4.5.2 Sơ đồ hoạt động cho Xem phim

Hình 4.6: Xem phim Activity Diagram

4.5.3 Sơ đồ hoạt động cho Gợi ý phim

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

Hình 4.8: Sơ đồ liên kết các màn hình

4.6.2 Danh sách các bảng dữ liệu

Thứ tự Tên bảng dữ liệu Diễn giải

Mô tả thông tin người dùng gồm Mã người dùng, Tên hiển thị, Email, Mật khẩu, Mã quốc gia

2 COUNTRY Mô tả thông tin quốc gia gồm Mã quốc gia,

Tên quốc gia, Mã quốc gia trên thế giới

71 theo tiêu chuẩn ISO-3166-2, Tên quốc gia theo tiếng Việt

Bài viết này mô tả thông tin đánh giá phim, bao gồm các yếu tố quan trọng như Mã đánh giá, Mã người dùng, Mã phim, thời gian Đánh giá phim, Điểm số đánh giá và Nội dung đánh giá của người dùng.

Mô tả thông tin lịch sử xem phim của người dùng gồm Mã người dùng, Mã phim, Xem phim vào lúc

5 FAVOURITE Mô tả thông tin phim yêu thích gồm Mã người dùng, Mã phim, Thời gian thêm

Mô tả tiêu đề và mô tả phịm theo từng quốc gia gồm Mã phim, Mã quốc gia, Tiêu đề, Miêu tả

Mã phim, ngôn ngữ chính, điểm số phổ biến, ngày ra mắt, ngân sách sản xuất, doanh thu và độ dài phim là những thông tin quan trọng cần được mô tả để hiểu rõ hơn về bộ phim.

Mã trạng thái của phim, Điểm đánh giá trung bình, Số lượng đánh giá

8 MOVIE_STATUS Mô tả thông tin trạng thái của phim gồm

Mã trạng thái, Tên trạng thái

9 DEPARTMENT Mô tả thông tin vai trò của diễn viên trong phim gồm Mã vai trò, Tên vai trò

Mô tả thông tin diễn viên tham gia vào phim gồm Mã vai trò, Mã phim, Mã diễn viên, Tên nhân vật

Mô tả thông tin các mã định danh trên các cơ sở dữ liệu khác gồm Mã phim, Mã định danh trên TMDB, Mã định danh trên IMDB

12 MOVIE_GENRES Mô tả thông tin phim thuộc về thể loại phim gồm Mã phim, Mã thể loại

13 MOVIE_VIDEO Mô tả thông tin về các tư liệu video của phim gồm Mã phim, Mã nguồn phim

14 MOVIE_IMAGE Mô tả thông tin về các tư liệu hình ảnh của phim gồm Mã phim, Mã nguồn ảnh

Diễn viên được mô tả với các thông tin quan trọng như mã diễn viên và mã định danh trên IMDB, tên, ngày sinh, ngày mất, nơi sinh, giới tính, và tổng quan về sự nghiệp Ngoài ra, diễn viên còn được biết đến với các vai trò cụ thể và mã vai trò tương ứng, kèm theo đường dẫn chân dung để người hâm mộ dễ dàng tìm hiểu thêm.

16 GENRES Mô tả thông tin thể loại phim gồm Mã thể loại, Tên thể loại

17 VIDEO Mô tả thông tin tư liệu phim gồm Mã tư liệu phim, Mã loại tư liệu phim, Mã tập tin

18 IMAGE Mô tả thông tin tư liệu hình ảnh gồm Mã tư liệu ảnh, Mã loại tư liệu ảnh, Mã tập tin

Mô tả thông tin tập tin gồm Mã tập tin, Đường dẫn trên hệ thống, Thời gian chỉnh sửa cuối cùng, Kích thước của tập tin

20 MOVIE_VIDEO_TYPE Mô tả loại tư liệu phim gồm Mã tư liệu phim, Tên loại tự liệu phim

21 MOVIE_IMAGE_TYPE Mô tả loại tư liệu hình ảnh gồm Mã tư liệu ảnh, Tên loại tư liệu ảnh

Mô tả thông tin dữ liệu thô trước khi đem đi dạy mô hình gồm Mã người dùng, Mã phim, Điểm số đánh giá

23 PARAMS Mô tả các tham số của hệ thóng gồm Mã tham số, giá trị của tham số

Bảng 4.19: Danh sách các bảng

4.6.3 Mô tả chi tiết các bảng dữ liệu

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng USER

2 Username NVARCHAR(200) Tên người dùng/Tên hiển thị

Thuộc tính là khóa ngoại tham chiếu đến

Bảng 4.20: Mô tả bảng USER

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng

2 Name NVARCHAR(50) Tên quốc gia

3 Code VARCHAR (10) Mã quốc gia theo tiêu chuẩn quốc tế

4 Name_Vi NVARCHAR(100) Tên quốc gia theo tiếng Việt

Bảng 4.21: Mô tả bảng COUNTRY

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng REVIEW

Thuộc tính là khóa ngoại tham chiếu đến

Thuộc tính là khóa ngoại tham chiếu đến

4 Timestamp DATETIME Dấu thời gian

5 Rating DECIMAL(3,1) Điểm đánh giá

6 Content NVARCHAR(MAX) Nội dung đánh giá

Bảng 4.22: Mô tả bảng REVIEW

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng USER

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

3 Timestamp DATETIME Dấu thời gian

Bảng 4.23: Mô tả bảng HISTORY

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng USER

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

3 Timestamp DATETIME Dấu thời gian

Bảng 4.24: Mô tả bảng FAVOURITE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

Thuộc tính vừa tham gia làm khóa chính

FOREIGN KEY, NOT NULL vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng COUNTRY

3 Title NVARCHAR(MAX) Tiêu đề

4 Overview NVARCHAR(MAX) Mô tả

Bảng 4.25: Mô tả bảng MOVIE_LANGUAGE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng MOVIE

Thuộc tính là khóa ngoại tham chiếu đến Id của bảng COUNTRY

3 Popularity DECIMAL(5,3) Điểm bổ biến

4 ReleaseDate DATETIME Ngày ra mắt

7 Runtime INT Thời lượng phim

Thuộc tính là khóa ngoại tham chiếu

78 đến Id của bảng MOVIE_STATUS

9 VoteAverage DECIMAL(3,1) Điểm đánh giá trung bình

10 VoteCount INT Mẫu số đánh giá

Bảng 4.26: Mô tả bảng MOVIE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng

Bảng 4.27: Mô tả bảng MOVIE_STATUS

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng

Bảng 4.28: Mô tả bảng DEPARTMENT

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng DEPARTMENT

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng PERSON

4 Character VARCHAR(100) Đóng trong vai

Bảng 4.29: Mô tả bảng MOVIE_CREDIT

Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng MOVIE_EXTENAL_IDS

2 IdTmdb INT Mã số định danh trên

3 IdImdb VARCHAR(100) Mã số định danh trên

Bảng 4.30: Mô tả bảng MOVIE_EXTERNAL_IDS

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng GENRES

Bảng 4.31: Mô tả bảng MOVIE_GENRES

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính vừa tham gia làm khóa chính

FOREIGN KEY, NOT NULL vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng VIDEO

Bảng 4.32: Mô tả bảng MOVIE_VIDEO

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng IMAGE

Bảng 4.33: Mô tả bảng MOVIE_IMAGE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng PERSON

Mã số định danh trên IMDB

7 Gender SMALLINT Giới tính (1: Nữ, 2: Nam)

(MAX) Tổng quan diễn viên

Thuộc tính là khóa ngoại tham chiếu đến Id của bảng DEPARTMENT

(MAX) Đường dẫn chân dung

Bảng 4.34: Mô tả bảng PERSON

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng GENRES

2 Name VARCHAR(100) Tên thể loại

Bảng 4.35: Mô tả bảng GENRES

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng VIDEO

Thuộc tính là khóa ngoại tham chiếu đến Id của bảng

Thuộc tính là khóa ngoại tham chiếu đến Id của bảng FILE

Bảng 4.36: Mô tả bảng VIDEO

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng IMAGE

Thuộc tính là khóa ngoại tham chiếu đến Id của bảng

Thuộc tính là khóa ngoại tham chiếu đến Id của bảng FILE

Bảng 4.37: Mô tả bảng IMAGE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng FILE

2 Path NVARCHAR(MAX) Đường dẫn tập tin trên hệ thống

3 LastModified DATETIME Thời gian chỉnh sửa cuối cùng

4 Size INT Kích thước tập tin

Bảng 4.38: Mô tả bảng FILE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong

Bảng 4.39: Mô tả bảng MOVIE_VIDEO_TYPE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng MOVIE_IMAGE_TYPE

2 Name VARCHAR(100) Loại hình ảnh

Bảng 4.40: Mô tả bảng MOVIE_IMAGE_TYPE

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng USER

PRIMARY KEY, FOREIGN KEY, NOT NULL

Thuộc tính vừa tham gia làm khóa chính vừa là khóa ngoại tham chiếu đến khóa chính Id của bảng MOVIE

3 Rating DECIMAL(3,1) Điểm số đánh giá

Bảng 4.41: Mô tả bảng TRAINING

Thứ tự Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải

Thuộc tính định danh cho mỗi bảng ghi trong bảng PARAMS

2 Value NVARCHAR(MAX) Giá trị của tham số

Bảng 4.42: Mô tả bảng PARAMS

THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG

CÀI ĐẶT VÀ KIỂM THỬ

TỔNG KẾT

Ngày đăng: 04/09/2023, 20:28

HÌNH ẢNH LIÊN QUAN

Hình 3.1: Cách thức hoạt động của Collaborative filtering - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 3.1 Cách thức hoạt động của Collaborative filtering (Trang 39)
4.5. Sơ đồ hoạt động - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
4.5. Sơ đồ hoạt động (Trang 69)
4.5.3. Sơ đồ hoạt động cho Gợi ý phim - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
4.5.3. Sơ đồ hoạt động cho Gợi ý phim (Trang 71)
4.6.1. Sơ đồ các bảng - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
4.6.1. Sơ đồ các bảng (Trang 72)
5.1. Sơ đồ liên kết màn hình - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
5.1. Sơ đồ liên kết màn hình (Trang 89)
Hình 5.2: Màn hình Get Started - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.2 Màn hình Get Started (Trang 93)
Hình 5.5: Màn hình Verify Signup - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.5 Màn hình Verify Signup (Trang 98)
Hình 5.7: Màn hình Verify forgot pass - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.7 Màn hình Verify forgot pass (Trang 101)
Hình 5.9: Màn hình Congrats - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.9 Màn hình Congrats (Trang 104)
Hình 5.10: Màn hình Home - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.10 Màn hình Home (Trang 105)
Hình 5.11: Màn hình Movie list - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.11 Màn hình Movie list (Trang 107)
Hình 5.12: Màn hình Movie detail - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.12 Màn hình Movie detail (Trang 108)
Bảng 5.25: Biến cố và xử lý trên màn hình Actor detail - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Bảng 5.25 Biến cố và xử lý trên màn hình Actor detail (Trang 111)
Hình 5.16: Màn hình Watching - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.16 Màn hình Watching (Trang 113)
Hình 5.18: Màn hình Saved - Đồ án ứng dụng xem phim hỗ trợ gợi ý phim sử dụng hệ thống khuyến nghị
Hình 5.18 Màn hình Saved (Trang 115)

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