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

Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch

74 0 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 Khuyến Nghị Dựa Trên Xếp Hạng Cho Website Đánh Giá Phim Sử Dụng Elasticsearch
Tác giả Bùi Thế Vinh
Người hướng dẫn ThS. Nguyễn Thị Phương Trang
Trường học Trường Đại Học Mở Thành Phố Hồ Chí Minh
Chuyên ngành Hệ Thống Thông Tin Quản Lý
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 74
Dung lượng 1,85 MB

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

Nội dung

Hệ thống khuyến nghị sẽ tiến hành đi phân tích dữ liệu đánh giá hoặc dữ liệu cá nhân của một người dùng với các người dùng khác trong hệ thống để có thể tìm ra sự tương đồng của người dù

Trang 1

TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ hồ chí MINH

1

TP HỒ CHÍ MINH, NĂM 2021

Trang 2

PHIM SỬ DỤNG ELASTICSEARCH

«1

a

số sinh viên: 1751040102

KHÓA LUẬN TỐT NGHIỆP

«1

'

TP HỒ CHÍ MINH, NĂM 2021

Trang 3

TRƯỜNG ĐẠI HỌC MỞ

THÀNH PHỐ HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨAVIỆT NAM

Độc lập – Tự do – Hạnh phúc

GIẤY XÁC NHẬN

Tôi tên là: Bùi Thế Vinh

Chuyên ngành: Hệ thống thông tin quản lý Mã học viên: 1751040102 Tôi đồng ý cung cấp toàn văn thông tin khóa luận tốt nghiệp hợp lệ về bản quyền cho Thư viện trường đại học Mở Thành phố Hồ Chí Minh Thư viện trường đại học Mở Thành phố Hồ Chí Minh sẽ kết nối toàn văn thông tin khóa luận tốt nghiệp vào hệ thống thông tin khoa học của Sở Khoa học và Công nghệ Thành phố Hồ Chí Minh

Trang 4

TRƯỜNG ĐẠI HỌC MỞ TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP

Tên đề tài: Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website đánh

gía phim sử dụng Elasticsearch

Giảng viên hướng dẫn: ThS Nguyễn Thị Phương Trang

1 Nhận xét về phần trình bày quyển báo cáo:

❖ Về hình thức bố cục trình bày:

- Luận văn gồm 5 chương, 72 trang

- Về bố cục, luận văn có đầy đủ các thành phần cần thiết của luận văn tốt nghiệp

- Về hình thức trình bày: Hình thức báo cáo trình bày đúng theo quy định

❖ Về nội dung trình bày:

- Nội dung của luận văn được trình bày súc tích, đầy đù

- Luận văn xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website đánh gía phim với hai hệ thống: Xây dựng hệ khuyến nghị phim dựa trên dữ liệu đánh giá của người dùng, và triển khai website khuyến nghị phim cho người dùng

- Cơ sở lý thuyết và nguyên lý vận hành của một số công nghệ phát triển web, công cụ tìm kiếm Elasticsearch, mô hình khuyễn nghị được trình bày chi tiết

- Mô hình khuyến nghị phim tự động theo hai mô hình là Collaborative và Demographic filtering được mô tả, thực nghiệm, đánh giá rõ ràng

- Mô hình triển khai website được mô tả và triển khai hợp lý

2 Nhận xét về phần thực hiện chương trình phần mềm:

Luận văn đã triển khai được website khuyến nghị phim

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập - Tự do - Hạnh phúc

Sinh viên thực hiện: Bùi Thế Vinh MSSV: 1751040102

Trang 5

Kiến trúc hệ thống bao gồm 4 thành phần: Server quản lý website, admin sử dụng django, tìm kiếm thông tin sử dụng elasticsearch; Server API lấy dữ liệu khuyến nghị từ hệ thống khuyến nghị sử dụng flask; Quản lý dữ liệu sử dụng nodejs; Website sử dụng ReactJS và triển khai trên môi trường Docker

Luận văn đã triển khai được website khuyến nghị phim hoàn chỉnh, với dữ liệu website gồm 30.000 bộ phim và hơn 100.000 đánh giá

3 Đánh giá của giảng viên hướng dẫn:

- Về mảng kiến thức + Kỹ năng của sinh viên: Luận văn có sử dụng thêm mảng kiến thức mới so với chương trình đào tạo Sinh viên có kiến thức về ngôn ngữ mới Sinh viên có kiến thức tốt, hiểu rõ các kiến thức trình bày trong luận văn,

có khả năng tự học tự nghiên cứu tốt

- Về phần thực nghiệm, sinh viên đã xây dựng được hệ thống khuyến nghị phim, triển khai được website khuyến nghị phim với kết quả xuất sắc

- Đánh giá đề tài: đề tài đạt xuất sắc

Ngày 07 tháng 07 năm 2021 Giảng viên hướng dẫn

Nguyễn Thị Phương Trang

Trang 6

LỜI CẢM ƠN

Để hoàn thành tốt luận văn tốt nghiệp, trước tiên em gửi lời cảm ơn sau sắc nhất tới ThS Nguyễn Thị Phương Trang đã tận tình hướng dẫn và gợi ý cho em trong quá trình làm Báo cáo thực tập và Luận văn tốt nghiệp

Em xin chân thành cám ơn các thầy cô của Khoa Công Nghệ Thông Tin trường Đại học Mở Thành Phố Hồ Chí Minh đã nhiệt tình giảng dạy, cung cấp cho em những kiến thức bổ ích, kinh nghiệm không chỉ trong học tập mà còn trong cuộc sống

Em cũng xin được gửi lời cảm ơn đến ba mẹ, bạn bè đã động viên, giúp đỡ và tạo điều kiện tốt nhất cho em trong suốt khóa học tại Trường Đại học Mở Thành Phố

Hồ Chí Minh để em có thể hoàn thiện tốt luận văn tốt nghiệp của mình

TP.HCM, ngày tháng năm 2022

Sinh viên thực hiện

Bùi Thế Vinh

Trang 7

MỤC LỤC

DANH MỤC BẢNG BIỂU 8

DANH MỤC HÌNH VẼ 9

DANH MỤC CÁC THUẬT NGỮ TIẾNG ANH VÀ CÁC TỪ VIẾT TẮT 11

MỞ ĐẦU 12

Chương 1 TỔNG QUAN ĐỀ TÀI 14

1.1 Giới thiệu tổng quan và lý do lựa chọn đề tài 14

1.2 Mục tiêu của đề tài 15

1.3 Phương pháp nghiên cứu 15

1.4 Đóng góp của đề tài 16

1.5 Kết cấu của luận văn 16

Chương 2 CƠ SỞ LÝ THUYẾT 17

2.1 Giới thiệu 17

2.2 Cơ sở lý thuyết 17

2.2.1 Django REST Framework 17

2.2.2 Flask 18

2.2.3 ReactJS 18

2.2.4 Elasticsearch 21

2.2.5 PostgreSQL 26

2.2.6 Docker 26

2.2.7 Hệ thống khuyến nghị 27

Chương 3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 37

3.1 Giới thiệu website đánh giá phim 37

3.2 Kiến trúc của website đánh giá phim 38

3.3 Các giai đoạn chính trong hệ thống 38

Trang 8

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

3.5 Hệ thống khuyến nghị 44

3.5.1 Kiến trúc của Server hệ thống khuyến nghị 44

3.5.2 Hệ thống khuyến nghị dành cho người dùng mới 45

3.5.3 Hệ thống khuyến nghị cho người dùng đã có dữ liệu hoạt động 47

Chương 4 HIỆN THỰC HỆ THỐNG 49

4.1 Tổng quan Website đánh giá phim 49

4.1.1 Quản lý dữ liệu website 49

4.1.2 Trang web đánh giá phim 55

4.1.3 Hệ thống khuyến nghị 63

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

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

5.2 Những điểm chưa hoàn thiện 69

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

TÀI LIỆU THAM KHẢO 70

PHỤ LỤC 72

Trang 9

DANH MỤC BẢNG BIỂU

Bảng 2.1: Ma trận Utility Matrix 28

Bảng 2.2: Điểm trung bình hoạt động đánh giá của người dùng 29

Bảng 2.3: Ma trận đánh giá đã được chuẩn hóa 29

Bảng 2.4: Ma trận tương đồng dữ liệu đánh giá 30

Bảng 2.5: Cấu trúc của vector thông tin người dùng 32

Bảng 2.6: Bảng ví dụ thông tin người dùng 32

Bảng 2.7: Bảng thể hiện vector hóa thông tin người dùng 33

Bảng 2.8: Ma trận tương đồng dữ liệu cá nhân của người dùng 34

Bảng 2.9: Điểm trung bình hoạt động đánh giá của người dùng 35

Bảng 2.10: Ma trận đánh giá đã được chuẩn hóa 35

Bảng 3.1: Thiết kế cơ sở dữ liệu 40

Trang 10

DANH MỤC HÌNH VẼ

Hình 2.1: Vòng đời của ReactJS 19

Hình 2.2: Mô hình cụm Cluster của Elastic Search 22

Hình 2.3: Mô tả hoạt động đánh chỉ mục và tìm kiếm trong Elasticsearch 23

Hình 2.4: So sánh giữa các thành phần của Elasticsearch với cơ sở dữ liệu quan hệ 24

Hình 3.1: Kiến trúc của website đánh giá phim 38

Hình 3.2: Cấu trúc cơ sở dữ liệu của hệ thống 39

Hình 3.3: Mô tả kiến trúc của Server hệ thống khuyến nghị 44

Hình 3.4: Hệ thống khuyến nghị dành cho người dùng mới 45

Hình 3.5: Hệ thống khuyến nghị cho người dùng đã có dữ liệu hoạt động 47

Hình 4.1: Cách tạo superuser để đăng nhập Django Admin 49

Hình 4.2: Giao diện chức năng đăng nhập cho admin 50

Hình 4.3: Chức năng cập nhật mật khẩu cho admin 50

Hình 4.4: Chức năng hiển thị tất cả các bảng dữ liệu ở trang chủ quản lý 51

Hình 4.5: Giao diện hiển thị danh sách dữ liệu trong bảng 52

Hình 4.6: Chức năng tìm kiếm dữ liệu trong trang quản lý 53

Hình 4.7: Giao diện hiển thị chi tết dữ liệu trong trang quản lý 54

Hình 4.8: Giao diện xem lịch sử chỉnh sửa trong trang quản lý 54

Hình 4.9: Giao diện đăng nhập cho người dùng vào trang web đánh giá phim 55

Hình 4.10: Giao diện đăng ký tài khoản cho người dùng 56

Hình 4.11: Giao diện chức năng đăng xuất cho người dùng 57

Hình 4.12: Giao diện hiển thị những bộ phim nổi bật trong hệ thống 57

Hình 4.13: Giao diện hiển thị những bộ phim được đánh giá cao trong hệ thống 58

Hình 4.14: Giao diện chức năng tìm kiếm phim sử dụng Elasticsearch 58

Hình 4.15: Giao diện hiển thị kết tìm kiếm từ Elasticsearch Autocomplete 58

Trang 11

Hình 4.16: Giao diện hiển thị trang kết quả tìm kiếm bằng Elastisearch 59

Hình 4.17: Giao diện hiển thị tìm kiếm phim theo thể loại 60

Hình 4.18: Giao diện của một bộ phim 61

Hình 4.19: Giao diện chi tiết của một bộ phim 61

Hình 4.20: Giao diên chức năng đánh giá phim 62

Hình 4.21: Giao diện hiển thị những bình luận trong một bộ phim 62

Hình 4.22: Giao diện chức năng bình luận cho phim 62

Hình 4.23: Giao diện hiển thị khi không tìm thấy trang 63

Hình 4.24: Giao diện khuyến nghị phim cho người dùng ở trang chủ 63

Hình 4.25: Giao diện khuyến nghị phim dành cho người dùng ở trang chi tiết phim 64

Hình 4.26: Một số thống kê về dữ liệu train 65

Hình 4.27: Ma trận nhị phân thông tin nhân khẩu học của người dùng 66

Hình 4.28: Ma trận tương đồng thông tin nhân khẩu học 66

Hình 4.29: Kết quả dự đoán của DF 67

Hình 4.30: Ma trận tương đồng đánh giá của người dùng 68

Hình 4.31: Kết quả dự đoán của CF 68

Trang 12

DANH MỤC CÁC THUẬT NGỮ TIẾNG ANH VÀ CÁC TỪ VIẾT TẮT

STT Thuật ngữ Diễn giải

Trang 13

MỞ ĐẦU

Trong những năm gần đây với sự phát triển của các ngành dịch vụ và giải trí trên website đồng thời cũng là sự phát triển của những trang thương mại điện tử Với sự ra đời của vô số các website dịch vụ, giải trí, cửa hàng trực tuyến để hỗ trợ, cung cấp rất nhiều sản phẩm, dịch vụ khác nhau ra thị trường Điều đó là nguyên nhân làm cho những người dùng phải đối mặt với việc tốn thời gian để tìm kiếm, lựa chọn những sản phẩm phù hợp với bản thân Với thời đại dữ liệu lớn như hiện nay, các công ty đều muốn thúc đẩy phát triển doanh thu của họ bằng phát triển nhiều chức năng hỗ trợ người tiêu dùng trên hệ thống và một trong những cách phổ biển hiện tại được nhiều doanh nghiệp áp dụng là xây dựng hệ thống gợi ý sản phầm Hệ thống gợi ý này sẽ đem đến những sản phẩm phù hợp với nhu cầu của người tiêu dùng đến với họ, từ đó giúp người dùng có thể tìm kiếm được sản phẩm mà học có thể thích, tiết kiệm thời gian trong việc tìm kiếm, doanh nghiệp có thể gia tăng được lợi nhuận kinh doanh

Ví dụ về hệ thống gợi ý phim của Netflix

Một hệ thống khuyến nghị hay còn gọi là hệ thống gợi ý, tư vấn là một hệ thống dùng để lọc thông tin, mục đích ra đời nhằm dự đoán sở thích và nhu cầu của người dùng để có thể đưa ra một hoặc nhiều sản phẩm mà người dùng có thể thích hoặc sẽ có nhu cầu dùng đến trong tương lai Ý tưởng của hệ thống này sẽ dựa vào thông tin, hành vi của người của người dùng trên hệ thống Hệ thống khuyến nghị sẽ tiến hành đi phân tích dữ liệu đánh giá hoặc dữ liệu cá nhân của một người dùng với các người dùng khác trong hệ thống để có thể tìm ra sự tương đồng của người dùng hiện tại với

Trang 14

những người dùng còn lại từ đó sẽ dự đoán các sản phẩm có thể sẽ phù hợp với người dùng đó

Một trong những có thể xem như là khó khăn tiếp theo mà người dùng có thể sẽ gặp phải trong việc tìm kiếm thông tin dữ liệu sản phẩm trong một trang web nào đó chính là khả năng tìm kiếm chính xác thông tin mong muốn trong kho dữ liệu rộng lớn, khả năng tìm kiếm nhanh chóng với số lượng lớn dữ liệu Nếu hệ thống đơn giản chỉ dùng những câu truy vấn tìm kiếm dữ liệu trong một hệ cơ sở dữ liệu quan hệ nào

đó sẽ gặp một giới hạn trong việc tìm kiếm thông tin như: Giới hạn bởi cú pháp trong câu lệnh SQL, thời gian tìm kiếm chậm và không chính xác, khi người dùng nhập sai chính tả sẽ không tìm kiếm được sản phẩm hoặc không chính xác,… Điều đó làm ra đời nhiều những hệ thống tìm kiếm, một trong các hệ thống nổi bật có thể thấy là Google và DuckDuckGo Hiện nay cũng có thể tìm thấy một số thư viện mã nguồn mở

hỗ trợ việc xây dựng một hệ thống tìm kiếm ví dụ như: Xapian, Lucene, Sphinx, Egothor, Sphinx …

Đề tài này sẽ tìm hiểu, ứng dụng công cụ tìm kiếm Elasticsearch vào một website và xây dựng khuyến nghị dựa trên đánh giá người dùng trong hệ thống từ đó gợi ý hỗ trợ họ tìm ra được sản phẩm phù hợp với sở thích cá nhân của họ Đề tài này

sẽ mang đến một sự tiện lợi nhất định đối với khách hàng, đáp ứng nhu cầu giải trí hiện nay trong cuộc sống hiện đại ngày nay dưới sự phát triển nhanh chóng của công nghệ Hệ thống không những thỏa mãn nhu cầu của người dùng mà còn đem lại doanh thu nhất định đối với những nhà cung cấp dịch vụ

Trang 15

Chương 1 TỔNG QUAN ĐỀ TÀI

1.1 Giới thiệu tổng quan và lý do lựa chọn đề tài

Hiện nay xã hội đang ngày càng phát triển, việc đó kéo theo mức sống của người dân ngày càng tăng cao thì nhu cầu vui chơi, giải trí của mọi người để giảm bớt những căng thẳng mệt mỏi sau một ngày làm việc căng thẳng là một nhu cầu thiết yếu Thường thì mọi người sẽ xem phim, nghe nhạc, chơi game,… để có thể xả stress sau những giờ làm việc

Từ những nhu cầu giải trí đó mà hiện nay xuất hiện rất nhiều những kênh Youtube

về đánh giá phim, tóm tắt phim,…ra đời Nhưng lúc này ở Việt Nam chưa có website nào để mọi người cùng nhau bình luận và đánh giá về một bộ phim nào đó, nếu có đó

là những trang web không chính thống Trên thế giới đã có rất nhiều những website như thế như là: IMDb, TMDb, Rotten Tomatoes Rating, vì vậy có lẽ người dùng sẽ cần một hệ thống có thể giúp những họ có thể thoãi mái đánh giá phim và bình luận về những bộ phim sắp ra mắt hoặc những bộ phim mà họ đã từng xem, từ đó có thể phát triển xây dựng được một mạng xã hội cho người dùng yêu thích phim

Khi một website trở nên lớn dần và có một kho dữ liệu phim lớn thì làm cách nào

để người dùng có thể tìm kiếm được những bộ phim phù hợp với họ Đây được coi như là một vấn đề chung của những trang web cung cấp sản phẩm và dịch vụ như vậy

Vì thế nhằm để giải quyết được vấn đề trên một hệ thống hỗ trợ gợi ý sản phẩm đã ra đời Hệ thống gợi ý này có thể giúp người dùng tìm ra được những bộ phim với nhu cầu của bản thân mà không cần phải tốn công sức tìm kiếm Hệ thống khuyến nghị (Recommendation System – RS) cho đến hiện tại đã trãi qua một quá trình nghiên cứu

và phát triển, những hệ thống lớn và thành công được biết đến nhiều ở thời điểm hiện tại như là: Hệ thống gợi ý nhạc của Spotify, hệ thống khuyến nghị phim của Netfix, hệ thống giới thiệu sản phẩm của Amazon,…

Những hệ thống khuyến nghị này chứng minh được vai trò quan trọng của mình trong hầu như ở rất nhiều lĩnh vực khác nhau, nó giúp người dùng không bị quá tải đối với thông tin to lớn của một hệ thống nào đó mà người dùng sử dụng Chính vì vậy, hệ thống khuyến nghị hay còn gọi là hệ thống gợi ý chính là một công cụ hữu ích mà tất

cả những website về thương mại, dịch vụ cần phải có

Trang 16

Để đem lại thực hiện hóa như cầu trên giúp mang đến sự tiện tích mọi người, luận

văn quyết định chọn đề tài “Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho

website đánh giá phim sử dụng Elasticsearch” Hệ thống này vận hành trên nền tảng

một website, để có thể hỗ trợ tốt hơn và mang đến sự tiện lợi cho người dùng hệ thống còn tích hợp sử dụng một công tụ tìm kiếm đang được sử dụng hầu như ở những trang web lớn có tên là Elasticsearch Đây một công cụ tìm kiếm hữu ích khi nó trả về kế quả gần như là thời gian thực và hỗ tìm kiếm toàn văn bản (Full-text search) giúp họ

có thể tìm kiếm phim nhanh chóng và gần ý muốn nhất

1.2 Mục tiêu của đề tài

Tìm hiểu được các công nghệ để có thể phát triển một trang web, công nghệ truy hồi dữ liệu, truy hồi thông tin Nghiên cứu các lý thuyết để xây dựng được một hệ thống khuyến nghị cho website và sau đó cài đặt các hệ thống khuyến nghị này phù hợp với từng người dùng nhờ có thể giúp họ lựa chọn được những bộ phim phù hợp

1.3 Phương pháp nghiên cứu

Từ nhu cầu của hệ thống, đề tài sẽ tiến hành thực hiện dựa trên những công nghệ mới đang được sử dụng hiện nay Để tài sử dụng Django Rest Framework để viết API cho phía server trang web đánh giá phim và sử dụng ReacJS để xây dựng phần giao diện tương tác cho người người dùng Trang quản lý dữ liệu của toàn bộ hệ thống sẽ dùng của Django Admin và chỉnh sửa lại cho phù hợp Ngoài ra để giúp người dùng tìm kiếm phim được chính xác và nhanh hơn hệ thống tích hợp Elasticsearch để giúp truy vấn dữ liệu tốt hơn và những dữ liệu về phim trong website cũng sẽ được lấy từ Elasticsearch để nhận được kết quả nhanh hơn

Website cũng tích hợp hệ thống khuyến nghị và sẽ tiếp cận với 2 phương pháp chính đó là: Phương pháp lọc nhân khẩu (Demographic Filtering) và lọc cộng tác (Collaborative Filtering) Sau khi tích hợp sẽ phân tích, đánh giá lại hệ thống và tìm ra được những giải pháp phù hợp với từng loại người dùng

Để có thể đánh giá được độ chính xác của RS đề tài sẽ sử dụng một bộ dữ liệu từ Grouplens đo trường đại học Minnesota cung cấp, địa chỉ của toàn bộ cơ sở dữ liệu này: https://grouplens.org/datasets/movielens/

Trang 17

1.4 Đóng góp của đề tài

Đề tài đã xây dựng với kho dữ liệu gần 30000 bộ phim với hơn 100000 dữ liệu đánh giá giúp cho trang web có một số lượng dữ liệu phim đủ lớn để thõa mãn nhu cầu cho người dùng với đầy đủ các thể loại

Hệ thống giúp đáp ứng nhu cầu của người dùng khi tích hợp nhiều những tính năng như đánh giá phim và bình luận về những bộ phim họ quan tâm bên cạnh đó còn khuyến nghị phim cho người dùng dựa trên sở thích của người dùng như dựa vào những thông tin cá nhân của người dùng để sử dụng phương pháp khuyến nghị Demographic Filtering và Collaborative Filtering từ đó chọn lọc và đưa ra những bộ tương ứng với sở thích của họ

Hệ thống này còn được tích hợp tìm kiếm, gợi ý tìm kiếm bằng Elasticsearch nhờ

đó giúp người dùng dễ dàng tìm kiếm và nhanh chóng phim mà họ mong muốn

Hệ thống khuyến nghị và Elasticsearch này có thể được dùng cho nhiều bộ dữ liệu khác nhau từ đó có thể sử dụng lên rất nhiều những trang web khác nhau điển hình

là những trang thương mại điện tử

1.5 Kết cấu của luận văn

Bố cục luận văn được chia thành những chương như sau:

Chương 1: Giới thiệu về đề tài, lý do lựa chọn đề tài, phương pháp và mục tiêu

nghiên cứu của đề tài, đóng góp của đề tài đối với thực tế

Chương 2: Trình bày một số cơ sở lý thuyết, các khái niệm cơ bản về các công

nghệ xây dựng web, công cụ tìm tiếm Elasticsearch và hệ thống khuyến nghị

Chương 3: Giới thiệu về giải pháp phát triển, kiến trúc cho toàn bộ hệ thống

website đánh giá phim

Chương 4: Hiện thực trang web đánh giá phim và đánh giá hệ thống

Chương 5: Kết luận đề tài và hướng phát triển trong tương lai

Trang 18

Chương 2 CƠ SỞ LÝ THUYẾT

2.1 Giới thiệu

Trong phần này, luận văn sẽ giới thiệu về những công nghệ xây dựng website, các

cơ sở lý thuyết nền tảng của hệ thống gợi ý và một số công nghệ liên quan

Đầu tiên, luận văn sẽ trình bày các khái niệm của Django Rest Framework, Flask, Elasticsearch để viết phần server API cho hệ thống Sau đó trình bài khái niệm về ReactJS để viết phần giao diện website cho người dùng tương tác và cuối cùng sẽ giới thiệu về hệ thống khuyến nghị gồm thuật toán Demographic Filtering và Collaborative Filtering

Django REST Framework (DRF) là một bộ công cụ cho việc xây dựng nhanh chóng các API RESTful dựa trên các mô hình Django Khi sử dụng DRF thì có thể sử dụng lại những thư viện của Django nói cách khác DRF biến đổi một ứng dụng không phải RESTful thành một ứng dụng RESTful

b Django Object Relational Mapper

Django Object Relational Mapper là một kĩ thuật lập trình mà trong đó sẽ ánh xạ

dữ liệu trong cơ sở dữ liệu thành các đối tượng, vật thể đã được định nghĩa trong class Nhờ đó có thể sử dụng ngôn ngữ Python để có thể xử lý những các dòng dữ liệu trong

cơ sở dữ liệu mà không cần dùng đến các câu lệnh SQL

c Serializers

Trang 19

Serialization là một quá trình chuyển đổi dữ liệu thành một định dạng có thể được lưu hoặc truyền đi và sau đó tái tạo lại Được sử dụng mọi lúc khi phát triển ứng dụng hoặc lưu trữ dữ liệu trong cơ sở dữ liệu, trong bộ nhớ hoặc chuyển đổi thành tệp Serializers trong DRF giúp việc chuyển đổi từ những dạng dữ liệu phức tạp như là querysets và model instances sang loại dữ liệu của Python và sau đó có thể dễ dàng trả

về dạng dữ liệu JSON, XML hoặc là những loại dữ liệu khác Và nó cũng hỗ trợ chuyển đổi lại thành dữ liệu ban đầu đưa vào

Đây là một Framework của ngôn ngữ Python với mục đích cung cấp những công

cụ giúp nhà phát triển website xây dựng API cho phía server

Flask được biết đến như là một framework gọn nhẹ, micro-framework có ít sự phụ thuộc, mang đến lõi chức năng đơn giản nhưng có thể dễ dàng mở rộng và phát triển

Trang 20

ReactJS là thư viện của ngôn ngữ Javascript hiện nay đang phát triển mạnh với xu hướng Single Page Application, hỗ trợ mạnh mẽ trong việc xây dựng phần giao diện cho một trang web ReactJS nổi lên với sự đơn giản và dễ dàng dùng chung với các thư viện Javascript khác ReactJS cho phép nhà phát triển tạo những giao diện có độ phức tạp cao từ những đoạn code nhỏ hơn và độc lập với nhau thành một trang web

hoàn chỉnh Những phần code nhỏ này thường được gọi là các components

b Vòng đời của ReactJS

Hình 2.1: Vòng đời của ReactJS

• contructor(): Đây là giai đoạn khởi đâu nơi mà component thiết lập các

state và props

• render(): Hàm này được sẽ gọi vào lần đầu và phương thức (method) bắt

buộc phải có trong một component Hàm này cũng được gọi mỗi khi component đó được cập nhật (khi props được cập nhật hoặc thay đổi state)

• componentDidMount(): Hàm được gọi được gọi duy nhất khi render lần đầu tiên, ví dụ những trường hợp gọi API để lấy dữ liệu hiện lên giao diện

• componentDidUpdate(): Phương thức này sẽ được gọi khi render lại các

component Khi component cập nhật state hoặc dữ liệu từ props cập nhật vào DOM và sau đó phương thức này sẽ được thực hiện sẽ được gọi

Phương thức này nhận vào 2 tham số là prevProps và prevState

Trang 21

• componentWillUnmount(): Hàm này sẽ được gọi khi một component sắp

bị xóa khỏi cây DOM, ví dụ người dùng chuyển trang khi đó component

hiện tại sẽ bị xóa và thay thế nào một component khác

c JSX

JSX là từ viết tắt của Javascript XML, là một ngôn ngữ cho phép các nhà phát triển

có thể viết cả Javascript và HTML vào cùng một file chung Thay vì, lúc trước phải tách ra làm hai file riêng (.html và js) bây giờ chỉ cần một file (.jsx) là đủ Cụ thể những hàm xử lý logic và component sẽ được viết trong những hàm JS sau đó HTML

sẽ được viết ở nơi return trong component

d Props

Là những dữ liệu, thông tin truyền từ component này sang component khác được gọi là props Props của một component khi được nhận là một ojbect chứ thông tin về các thành phần của nó

e React Hooks

• useState()

Hooks được thêm vào từ React version 16.8, trước kia thay vì phải khởi tạo state trong hàm constructor ở một class component nhà phát triển có thể khởi tạo một state cho component hiện tại bằng một biến bằng dùng useState() được gọi từ thư viện react

useState() sẽ nhận vào một giá trị khởi tạo cho state gọi là initialsate, sau đó trả

về một mảng gồm hai phần tử là state và hàm dùng để cập nhật cho state đó

• useEffect()

Khi lần đầu tìm hiểu về ReactJS để hiểu được Life Cycle Method của nó không phải là một điều dễ dàng vì thế ở hooks đã thêm vào một thứ gọi là useEffect để có thể thay thế cho các Life Cycle Method phức tạp cũ useEffect() được ứng với 3 phương

thức: componentDidMount, componentDidUpdate, componentWillUnmount

f Lợi ích khi sử dụng

Trang 22

Với ReactJS hỗ trợ nhà pháp triển có thể chia nhỏ giao diện website thành những phần nhỏ khác nhau giúp cho việc phát triển được đơn giản và dễ hiểu hơn rất nhiều và điều đó giúp cho nó trở nên mới lạ và mạnh mẽ.

Thông qua việc truyền Props, các components dễ dàng kết nối với nhau, đây cũng được xem là một trong những ưu điểm của ReactJS, có thể chuyển các dữ liệu, các hàm đã được tùy biến đến một component khác

Hiện nay đã có Redux giúp cho việc quản lý state nơi đó sẽ có một State chung mà bất cứ component nào cũng có thể lấy được Việc truyền dữ liệu trở nên đơn giản hơn rất nhiều, và dòng dữ liệu trong ứng dụng sẽ trở nên rõ ràng hơn

2.2.4 Elasticsearch

a Định nghĩa

Elasticsearch là một công cụ giúp truy vấn và phân tích dữ liệu mã nguồn mở, mạnh mẽ và khó khả năng mở rộng cao Elasticsearch được phát triển trên nền tảng thư viện search-engine mã nguồn mở nổi tiếng là “Apache Lucene” Apache Lucene

sử dụng ngôn ngữ Java là nền tảng và phức tạp để có thể sử dụng Và để mọi thứ dễ dàng hơn trong việc sử dụng thì việc tương tác với Elasticsearch sẽ được thực hiện qua các RESTful API được xây dựng như một server cloud Elasticsearch cho phép tìm kiếm, phân tích và lưu trữ một lượng lớn dữ liệu thời gian thực Nó thường được sử dụng để hỗ trợ cho những ứng dụng có nhu cầu tìm kiếm phức tạp, cần tìm kiếm trên nhiều trường, nhiều loại file khác nhau, cần tốc độ nhanh

Trang 23

b Kiến trúc của Elasticsearch

• Elasticsearch Cluster

Hình 2.2: Mô hình cụm Cluster của Elastic Search

Một Cụ Elasticsearch Cluster bao gồm một hoặc nhiều nút (nodes) có cùng tên Cluster mà nó tham gia vào Các nodses trong cụm Cluster làm việc cùng nhau và chia

sẻ dữ liệu và tải (workload) với nhau Khi một node được thêm vào hoặc rời khỏi cụm thì Cluster tự động tổ chức và tính toán lại dữ liệu và năng lực tính toán

Mỗi cụm Elasticsearch Cluster có một Master node chịu trách nhiệm quản lý các thay đổi trong toàn cụm như tạo, xóa index hoặc thêm hay loại bỏ node vào/ra cụm Cluster Master node sẽ không tham gia vào quá trình xử lý tìm kiếm Bất kỳ node nào trong cụm cũng có thể trở thành master node Với cụm Cluster chỉ có 1 node thì node

đó sẽ thực hiện cả vai trò là master node và node xử lý tìm kiếm Tất cả các nodes trong cụm Cluster được kết nối, chia sẽ dữ liệu và tải với nhau

Tất cả các nodes đều biết chính xác dữ liệu được lưu trữ ở đâu, do đó khi có một yêu cầu cần xử lý được gửi đến chúng có thể trực tiếp xử lý hoặc chuyển tiếp yêu cầu đến node mà đang thực sự chứa dữ liệu cần xử lý và trả ra kết quả

Trang 24

c Cách hoạt động của Elasticsearch

Hình 2.3: Mô tả hoạt động đánh chỉ mục và tìm kiếm trong Elasticsearch

Một Elasticsearch sẽ gồm có hai phần chính đó là chỉ mục tài liệu và tìm kiếm Đây cũng chính là hai thành phần quan trọng nhất trong Elasticsearch

d Tìm kiếm trong Elasticsearch

Có 2 dạng tìm kiếm trong Elasticsearch là lọc (Filter) và truy vấn (Query) Hai dạng này sẽ có khác nhau tùy theo mục đích sử dụng với Query sẽ tính toán độ chính xác và giảm dần điểm xếp hạng của kết quả tìm kiếm, còn Filter sẽ trả về kết quả chính xác từ điều kiện tìm kiếm mà không có tính toán hay sắp xếp kết quả

• Filter

Khi muốn tìm kiếm chính xác các tài liệu chứa một giá trị nào đó ta sẽ sử dụng câu lệnh lọc (filter) Bởi vì Filter không tính toán độ liên quan và xếp hạng kết quả tìm kiếm nên tốc độ của filter là rất nhanh Và để tăng tốc hơn nữa cho các câu lệnh filter, Elasticsearch hỗ trợ lưu vào bộ nhớ đệm (Cache) các kết quả tìm kiếm của câu lệnh Filter phục vụ cho các lần tìm kiếm sau

• Query

Trang 25

Khác với câu lệnh Filter thì câu lệnh Query sẽ tính toán độ liên quan và xếp hạng kết quả trả ra cho câu truy vấn Có 2 khía cạnh quan trọng nhất của câu lệnh truy vấn là:

Độ liên quan (Relevance): Tính toán và xếp hạng độ liên quan của kết quả trả ra

cho câu truy vấn Thuật toán để tính toán mặc định trong Elasticsearch là thuật toán BM25

Phân tích (Analysis): Tiến trình phân tích văn bản thành các từ tố (token) để phục

vụ đánh chỉ mục ngược và truy vấn trong chỉ mục ngược

e Các khái niệm cơ bản

Elasticsearch được phát triển và đã trải qua rất nhiều các phiên bản khác nhau, phiên bản chính thức mới nhất tại thời điểm nghiên cứu là phiên bản 7.12 Trong phiên bản này có sự thay đổi so với các phiên bản trước đó, đó là chỉ có một kiểu mapping type duy nhất trong một Elasticsearch Index Để hiểu rõ luận văn sẽ nghiên cứu các thành phần trong Elasticsearch Các thành phần trong Elasticsearch khi so sánh với một cơ sở dữ liệu quan hệ như sau:

Hình 2.4: So sánh giữa các thành phần của Elasticsearch với cơ sở dữ liệu quan hệ

Trang 26

Trong CSDL quan hệ thường lưu objects của cùng class trong cùng một bảng bởi vì chúng sử dụng cấu trúc giống nhau Tương tự, Elasticsearch sử dụng cùng type của document để miêu tả các thứ trong cùng class

một kiểu String, Boolean, Integer, …

• Field

Khái niệm Field để chỉ một trường của tài liệu JSON Field trong tài liệu JSON được biểu diễn dưới dạng <Key, Value>, với Key là tên của Field và Value là giá trị của Field đó, Value có thể là kiểu String, Boolean, Integer, …

Trang 27

Elasticsearch hỗ trợ việc tìm kiếm mờ (thường được gọi là fuzzy), có nghĩa là từ khóa tìm kiếm của người dùng có sẽ thể đôi lúc không đúng chính tả hay không đúng thứ tự, cú pháp câu mong muốn thì Elasticsearch vẫn có thể phân tích và cho kết quả

Hỗ trợ tìm kiếm toàn văn (Full-text search)

Hỗ trợ được rất nhiều ngôn ngữa như Java, Python, Javascript, NET,…

2.2.5 PostgreSQL

a Định nghĩa

PostgreSQL là một hệ quản trị CSDL quan hệ hướng đối tượng, miễn phí mã nguồn mở và mạnh mẽ sử dụng, mở rộng ngôn ngữ SQL Mã nguồn khả dụng the license của PostgreSQL đây là một license nguồn mở tự do Theo đó những nhà phát triển có thể sử dụng, sửa đổi và phần phối PostgreSQL với nhiều hình thức khác nhau

b Lợi ích khi sử dụng

Khi sử dụng chung với Django có nhiều lợi ích sau:

• Django cung cấp một số loại dữ liệu chỉ có thể hoạt động được với PostgreSQL

• Django có thư viện django.contrib.postgres để có thể tương tác dễ dàng với PostgreSQL

• PostgreSQL có một bộ chức năng phong phú được hỗ trợ bởi Django

Trang 28

Giúp đễ dàng vận chuyển, triển khai phần mềm trung bình có thể gấp 7 lần so với cách cũ

Tiết kiệm được một số lượng lớn tài nguyên hệ thống và tiền bạc vì nó chạy nhiều phần mềm hơn trên một máy chủ và tận dụng được tối đa tài nguyên của máy chủ đó

2.2.7 Hệ thống khuyến nghị

• Collaborative Filtering

Phương pháp lọc này sẽ dùng những dữ liệu hoạt động đánh giá từ người dùng được lưu lại trong hệ thống, hiện nay một trong những kỹ thuật phổ biến của phương pháp này và sử dụng phổ biến nhất là đi tìm k láng giềng gần nhất (K-nearest neighbors) Phương pháp lọc này sẽ đi tính toán những người dùng có sự tương đồng

về hoạt động đánh giá nhờ vậy có thể dự đoán được một bộ phim nào đó đến người dùng nhờ vào đánh giá trung bình của những người dùng tương tự người dùng đó Một ví dụ đơn giản của kỹ thuật này là: Nếu cả hai người dùng A và B đều đánh giá cho bộ phim Fight Club 5 điểm, thì có khả năng cao nếu người dùng B đánh giá cho bộ phim Doraemon 5 điểm thì người dùng A cũng sẽ thích hoặc quan tâm đến phim đó

• Demographic Filtering

Phương pháp lọc này sẽ sử dụng những dữ liệu nhân khẩu học của người dùng như là: nghề nghiệp, giới tính, tuổi tác, và dữu liệ hoạt động đánh giá từ người dùng để có thể đi dự đoán Hệ thống này được sinh ra để giải quyết một vấn đề khi người dùng đăng nhập hoặc mới tạo tài khoản mà Collaborative Filtering không thể giải quyết được gọi là khởi động nguội (Cold Start Problem) Vì nó không sử dụng đến lịch sử đánh giá để tính sự tương đồng mà sử dụng thông tin, dữ liệu cá nhân của người dùng

để đi tính sự tương đồng của người mới với các người dùng khác trong hệ thống Một ví dụ về kĩ thuật này là: Nếu cả hai người dùng A và B đều ở độ tuổi dưới 25,

là nam, và nghề nghiệp có thể giống nhau là sinh viên Thì khi đó sự tương đồng giữa

A với B là giống nhau rất cao, nếu người dùng A có sự quan tâm đến một bộ phim nào

đó thì khả năng lớn là người dùng B cũng sẽ quan tâm đến và hệ thống sẽ khuyến nghị những phim đó cho người dùng B

Trang 29

a Collaborative Filtering:

• Tiến hành xây dựng ma trận Utility Matrix

Một hệ thống khuyến nghị sẽ bao gồm 2 thực thể đó là người dùng trong hệ thống và các bộ phim trong hệ thống Mỗi người dùng sẽ có một điểm đánh giá (gọi là mức độ quan tâm) đến một bộ phim nào đó trong hệ thống và giá trị này sẽ tương ứng với các cặp dữ liệu user-item Sau đó sẽ tập hợp tất cả các đánh giá sẽ bao gồm những giá trị đánh giá chưa biết sẽ được dự đoán trong tương lai vào trong một ma trận Ma trận được tạo ra đó gọi là Utility Maxtrix Một hệ thống muốn được phát triển thì việc

đi xây dựng ma trận này là một bước rất quan trọng, vì nếu không có hệ thống rất có thể sẽ hoạt động không chính xác

Bảng 2.1: Ma trận Utility Matrix

Ví dụ rằng hệ thống có dữ liệu 6 người dùng từ A đến F và các bộ phim hiện có

là 5 bộ phim từ Fight Club đến Belgica Có thể nhìn thấy rằng những ô vuông đang hiển thị những giá trị khác nhau thì đó chính là giá trị đánh giá của một người dùng dành cho một bộ phim Với những điểm số lớn hơn 3 có thể thấy rằng người dùng này

có vẻ thích bộ phim đó và ngược lại Những dấu chấm hỏi nói lên những giá trị đánh giá chưa biết mà hệ thống phải đi tìm trong tương lai

• Tiến hành chuẩn hóa dữ liệu hoạt động đánh giá phim từ người dùng

Công việc đầu tiên trong việc chuẩn hóa là phải tìm ra được trung bình đánh giá của người dùng trong hệ thống Sau đó sẽ đi trừ lại các đánh giá của người dùng với giá trị trung bình đánh giá vừa tìm được Sau khi đã có được những đánh giá vừa được chuẩn hóa từ việc trừ đi giá trị trung bình Lúc này hệ thống sẽ nhận vào các loại giá trị

Trang 30

như sau: Nếu giá trị đánh giá là dương nói lên người dùng đó thích bộ phim đó hay không, ngược lại những bộ phim nào nhận giá trị âm được xem như người dùng không thích phim đó và cuối cùng đối với những giá trị chưa được dự đoán sẽ được thay thế bằng số 0

Bảng 2.2: Điểm trung bình hoạt động đánh giá của người dùng

Sau khi tính được trung bình đánh giá của tất cả các người dùng thể hiện ở hàng cuối cùng của bảng trên Với những người dùng có điểm trung bình đánh giá cao nói lên người dùng này có thể khá là dễ tính trong việc đánh giá và ngược lại

Bảng 2.3: Ma trận đánh giá đã được chuẩn hóa

Sau khi trừ có thể thấy kết quả sẽ nhận được các giá trị âm và dương khác nhau Gía trị đó nói lên người dùng có thích phim đó hay không Còn lại là 0 thể hiện được những giá trị chưa có và cần đi tìm

• Tìm ma trận tương đồng dữ liệu đánh giá của người dùng

Để có thể tìm được ma trận tương đồng hệ thống sẽ sử dụng công thức tính hệ

Trang 31

số tương quan Pearson để tính được sự tương đồng dữ liệu đánh giá của người dùng với nhau như sau:

sẽ nói lên 2 người dùng này thích phim giống nhau, S < 0 thì hai người dùng này hầu như có sở thích phim khác nhau

Bảng 2.4: Ma trận tương đồng dữ liệu đánh giá

Công thức Pearson correlation sẽ tính sự tương đồng dữ liệu người dùng và biến đổi từ ma trận đánh giá đã được chuẩn hóa thành ma trận tương đồng dữ liệu đánh giá

Ma trận này sẽ là một ma trận đối xứng với nhau với số hàng và cột bằng tổng số người dùng trong bộ dữ liệu đánh giá

• Dự đoán đánh giá

Để đự đoán được đánh giá việc đầu tiên là cần xác định được k người dùng có

độ tương đồng gần nhất, CF chỉ quan tâm tới các người dùng đã đánh giá bộ phim đang đi khuyến nghị Dự đoán đánh giá thường được xác định là trung bình có trọng

số của các đánh giá đã chuẩn hoá Dựa trên cơ sở từ nguồn đại học Texas hệ thống sẽ

sử dụng công thức dự đoán của u cho i là:

𝑝𝑢,𝑖 = 𝑞𝑟̅̅̅̅ + 𝑢 ∑𝑣∈𝑁𝑠𝑖𝑚(𝑢,𝑣).(𝑟𝑣,𝑖− 𝑟̅̅̅)𝑣

∑𝑣∈𝑁|𝑠𝑖𝑚(𝑢,𝑣)| (2)

Trang 32

Trong đó 𝑝𝑢,𝑖 là điểm dự đoán đánh giá của người dùng u cho một bộ phim i nào đó, 𝑁 là tập hợp k-NN của u mà đã đánh giá i Trung bình đánh giá của u cũng được cộng vào để chuẩn hóa điểm đánh giá về thang 5

Dùng công thức trên để có thể dự đoán được đánh giá của người dùng A cho bộ phim Warcraft và cho ngưỡng k là 2, thực hiện theo bước sau:

1) Đầu tiên cần phải tìm những người dùng đã đánh giá cho bộ phim Warcraft, đó là

bao gồm 2 người dùng: B F

2) Tiếp theo cần xác định độ tương đồng của A với các người dùng này và nhận được -0.5, 0.5 Vì k bằng 2 nên lấy 2 giá trị lớn nhấn hiện có là -0.5 và 0.5 tương ứng với B và F

3) Cần xác định được giá trị đánh của B, F đã qua chuẩn hóa cho Warcraft, và khi đó

thu về được 2 giá trị là -1.25 và 0.7

4) Dự đoán đánh giá của người dùng A dành cho bộ phim Warcraft:

Trang 33

b Demographic Filtering:

• Vector hóa dữ liệu thông tin người dùng

Từ dữ liệu nhân khẩu học của người dùng mà hệ thống đặt ra các quy tắc để có

thể biến đổi những dữ liệu như là: nghề nghiệp, tuổi tác, giới tính thành những giá trị 0

và 1

Bảng 2.5: Cấu trúc của vector thông tin người dùng

Bảng 2.6: Bảng ví dụ thông tin người dùng

Bảng trên miêu tả ví dụ về dữ liệu thông tin người dùng khi được đưa vào dữ liệu để khuyến nghị trong hệ thống Sau đó sẽ biến đổi những dữ liệu thành này các giá trị 0 1 như bảng bên dưới

Trang 34

Bảng 2.7: Bảng thể hiện vector hóa thông tin người dùng

• Tiến hành xây dựng ma trận tương đồng thông tin người dùng

Từ dữ liệu thông tin của người dùng sau khi được vector hóa, hệ thống sẽ sử dụng công thức Cosine Similarity để đi tính sự tương đồng dữ liệu giữa các người dùng trong hệ thống với nhau

𝑐𝑜𝑠𝑖𝑛𝑒𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦(𝑢1,𝑢2) = cos(𝑢1, 𝑢2) = 𝑢1𝑇𝑢 2

‖𝑢1‖2 ‖𝑢 2 ‖2 (3) Trong đó 𝑢1, 𝑢2 là vectors tương ứng với hai người dùng 1 và 2 đã được vector hóa Độ tương đồng của hai vector có giá trị trong khoảng [-1, 1] Hàm số cos của một góc bằng 1 nghĩa là góc giữa hai vector bằng 0, tức độ tương đồng về hoạt động đánh giá của hai người dùng là hoàn toàn giống nhau và ngược lại nếu cho giá trị bằng -1 thì thể sự tương đồng của hai người dùng này hầu như không có

Trang 35

Bảng 2.8: Ma trận tương đồng dữ liệu cá nhân của người dùng

Công thức Cosine similiraty sẽ tính sự tương đồng thông tin người dùng và biến đổi từ ma trận nhị nhân thông tin thành ma trận tương đồng dữ liệu đánh giá Ma trận này sẽ là một ma trận đối xứng với nhau với số hàng và cột bằng tổng số người dùng trong bộ dữ liệu đánh giá

• Tiến hành chuẩn hóa dữ liệu hoạt động đánh giá phim từ người dùng

Công việc đầu tiên trong việc chuẩn hóa là phải tìm ra được trung bình đánh giá của người dùng trong hệ thống Sau đó sẽ đi trừ lại các đánh giá của người dùng với giá trị trung bình đánh giá vừa tìm được Sau khi đã có được những đánh giá vừa được chuẩn hóa từ việc trừ đi giá trị trung bình Lúc này hệ thống sẽ nhận vào các loại giá trị như sau: Nếu giá trị đánh giá là dương nói lên người dùng đó thích bộ phim đó hay không, ngược lại những bộ phim nào nhận giá trị âm được xem như người dùng không thích phim đó và cuối cùng đối với những giá trị chưa được dự đoán sẽ được thay thế bằng số 0

Trang 36

Bảng 2.9: Điểm trung bình hoạt động đánh giá của người dùng

Sau khi tính được trung bình đánh giá của tất cả các người dùng thể hiện ở hàng cuối cùng của bảng trên Với những người dùng có điểm trung bình đánh giá cao nói lên người dùng này có thể khá là dễ tính trong việc đánh giá và ngược lại

Bảng 2.10: Ma trận đánh giá đã được chuẩn hóa

Sau khi trừ có thể thấy kết quả sẽ nhận được các giá trị âm và dương khác nhau Gía trị đó nói lên người dùng có thích phim đó hay không Còn lại là 0 thể hiện được những giá trị chưa có và cần đi tìm

• Dự đoán đánh giá

Để đự đoán được đánh giá việc đầu tiên là cần xác định được k người dùng có

độ tương đồng gần nhất Dự đoán đánh giá thường được xác định là trung bình có trọng số của các đánh giá đã chuẩn hoá Dựa trên cơ sở từ nguồn đại học Texas hệ thống sẽ sử dụng công thức dự đoán của u cho i là:

𝑝𝑢,𝑖 = 𝑞𝑟̅̅̅̅ + 𝑢 ∑𝑣∈𝑁𝑠𝑖𝑚(𝑢,𝑣).(𝑟𝑣,𝑖− 𝑟̅̅̅)𝑣

∑𝑣∈𝑁|𝑠𝑖𝑚(𝑢,𝑣)| (4)

Trang 37

Trong đó 𝑝𝑢,𝑖 là điểm dự đoán đánh giá của người dùng u cho một bộ phim i nào đó, 𝑁 là tập hợp k-NN của u mà đã đánh giá i Trung bình đánh giá của u cũng được cộng vào để chuẩn hóa điểm đánh giá về thang 5

Dùng công thức trên để có thể dự đoán được đánh giá của người dùng C cho bộ phim Ride Along 2 và cho ngưỡng k là 2, thực hiện theo bước sau:

5) Đầu tiên cần phải tìm những người dùng đã đánh giá cho bộ phim Ride Along 2,

đó là bao gồm 2 người dùng: A B D F

6) Tiếp theo cần xác định độ tương đồng của A với các người dùng này và nhận được 0.67, 0, 0.33, 0 Vì k bằng 2 nên lấy 2 giá trị lớn nhấn hiện có là 0.67 và 0.33 tương ứng với A và D

7) Cần xác định được giá trị đánh của A, D đã qua chuẩn hóa cho Ride Along 2, và

khi đó thu về được 2 giá trị là 1.5 và 0.34

8) Dự đoán đánh giá của người dùng C dành cho bộ phim Ride Along 2:

𝑝𝑢1,𝑖1 =(0.67∗1.5)+(0.33∗0.34)

Ngày đăng: 04/02/2025, 18:46

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[11] Django – https://docs.djangoproject.com/ Link
[12] Django REST Framework – https://www.django-rest-framework.org/ Link
[13] Django REST Framework - An Introduction – https://realpython.com/django-rest-framework-quick-start/ Link
[14] ReactJS – https://reactjs.org/docs/getting-started.html Link
[15] Elasticsearch – https://www.elastic.co/guide/en/Elasticsearch/reference/current/ Link
[16] PostgreSQL – https://www.postgresql.org/docs/ Link
[17] Why Django is so impressive for developing with PostgreSQL and Python – https://www.enterprisedb.com/postgres-tutorials/why-django-so-impressive-developing-postgresql-and-python Link
[19] Machine Learning Cơ bản – https://machinelearningcoban.com/ Link
[20] Collaborative Filtering | Stanford University – https://www.youtube.com/watch?v=h9gpufJFF-0&amp;t=436s Link
[21] Crontab – https://crontab.guru/crontab.5.html Link
[22] Tìm hiểu Crontab trên Linux – https://viblo.asia/p/tim-hieu-crontab-tren-linux-WApGx3DbM06y Link
[23] Introduction to JSON Web Tokens – https://jwt.io/introduction Link
[24] Khái niệm về JSON Web Token – https://techmaster.vn/posts/33959/khai-niem-ve-json-web-token Link
[2] Francesco Ricci and Lior Rokach and Bracha Shapira (2011), Introduction to Recommender Systems Handbook, Recommender Systems Handbook, pp. 1-35 Khác
[3] Zheng Wen (2008), Recommendation System Based on Collaborative Filtering Khác
[4] Anand Rajaraman, Jeffrey David Ullman, Chapter 9 Recommendation Systems 3rd edition Khác
[5] Nicholas Ruozzi, Collaborative Filtering Slide University of Texas. Tài liệu tiếng Việt Khác
[6] Bùi Thế Vinh (2020), Xây dựng hệ thống khuyến nghị trong thương mại điện tử dựa vào phương pháp lọc cộng tác, Đại học Mở Thành Phố Hồ Chí Minh Khác
[8] Trần Văn Linh (2019), Nghiên cứu giải pháp tự động phát hiện sự cố hệ thống dựa trên công nghệ ELK (Elasticsearch, Logstash và Kibana), Đại học Công nghệ – Đại học Quốc gia Hà Nội Khác
[9] Nguyễn Thị Loan (2017), Nghiên cứu công nghệ tìm kiếm (Mã nguồn mở) Lucene áp dụng giải quyết bài toán tìm kiếm trong hệ thống Văn bản, Đại học Công nghệ - Đại học Quốc Gia Khác

HÌNH ẢNH LIÊN QUAN

Bảng 2.1: Ma trận Utility Matrix - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.1 Ma trận Utility Matrix (Trang 29)
Bảng 2.3: Ma trận đánh giá đã được chuẩn hóa - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.3 Ma trận đánh giá đã được chuẩn hóa (Trang 30)
Bảng 2.4: Ma trận tương đồng dữ liệu đánh giá - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.4 Ma trận tương đồng dữ liệu đánh giá (Trang 31)
Bảng 2.5: Cấu trúc của vector thông tin người dùng - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.5 Cấu trúc của vector thông tin người dùng (Trang 33)
Bảng 2.6: Bảng ví dụ thông tin người dùng - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.6 Bảng ví dụ thông tin người dùng (Trang 33)
Bảng 2.7: Bảng thể hiện vector hóa thông tin người dùng - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.7 Bảng thể hiện vector hóa thông tin người dùng (Trang 34)
Bảng 2.8: Ma trận tương đồng dữ liệu cá nhân của người dùng - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.8 Ma trận tương đồng dữ liệu cá nhân của người dùng (Trang 35)
Bảng 2.10: Ma trận đánh giá đã được chuẩn hóa - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 2.10 Ma trận đánh giá đã được chuẩn hóa (Trang 36)
Bảng 3.1: Thiết kế cơ sở dữ liệu - Xây dựng hệ thống khuyến nghị dựa trên xếp hạng cho website Đánh giá phim sử dụng elasticsearch
Bảng 3.1 Thiết kế cơ sở dữ liệu (Trang 41)

TRÍCH ĐOẠN

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