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

Khóa luận tốt nghiệp Kỹ thuật phần mềm: Xây dựng ứng dụng nghe nhạc trên mobile tích hợp gợi ý và chia sẻ nhạc

118 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 đề Ứng dụng nghe nhạc trên mobile tích hợp gợi ý và chia sẻ nhạc
Tác giả Nguyen Doan Thinh, Cao Nguyen Minh Quan
Người hướng dẫn Ts. Đỗ Thị Thanh Tuyền, Th.S Trần Anh Dũng
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Kỹ Thuật Phần Mềm
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 118
Dung lượng 59,17 MB

Nội dung

Nắm bắt được xuhướng, nhóm chúng em quyết định chọn đề tài “Xây dựng ứng dụng nghe nhạc trên Mobiletích hợp chia sẻ và gợi ý nhạc” nhằm mục đích xây dựng một ứng dụng di động đáp ứng nhu

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THONG TIN

KHOA CÔNG NGHỆ PHAN MEM

NGUYEN DOAN THỊNH - 19522281

CAO NGUYEN MINH QUAN - 19522074

KHOA LUAN TOT NGHIEP

UNG DUNG NGHE NHAC TREN MOBILE TÍCH HOP

GỢI Y VA CHIA SE NHAC

MUSIC MOBILE APPLICATION WITH MUSIC

RECOMMENDATION AND SHARING

KY SU/ CU NHAN NGANH KY THUAT PHAN MEM

GIANG VIEN HUONG DAN

Ts Đỗ Thị Thanh Tuyền

Th.S Trần Anh Dũng

TP HO CHÍ MINH, 2023

Trang 2

LỜI CẢM ƠN

Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến tập thé quý thầy cô Trường Dai học

Công nghệ thông tin - Đại học Quốc gia TP.HCM và quý thầy cô khoa Công nghệ phần

mềm đã giúp cho chúng em có những kiến thức cơ bản làm nền tảng dé thực hiện dé tài

này.

Đặc biệt, nhóm tác giả xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầy Trần AnhDũng và cô Đỗ Thị Thanh Tuyền, người đã hướng dẫn tận tình, sửa chữa và đóng góp

nhiêu ý kiên quý báu giúp em hoàn thành báo cáo môn học của mình.

Trong thời gian một học kỳ thực hiện đề tài, em đã vận dụng những kiến thức nền tảng đãtích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới Từ đó, em

đã vận dụng tôi đa những gì đã thu thập được dé hoàn thành một báo cáo đồ án tốt nhất.Tuy nhiên, trong quá trình thực hiện không tránh khỏi những thiếu sót Chính vì vậy, emrất mong nhận được những sự góp ý từ phía các thầy/cô nhằm hoàn thiện những kiến thức

mà em đã học tập và là hành trang dé em thực hiện tiếp các đề tài khác trong tương lai

Xin chân thành cảm ơn quý thay/cé!

Thành phố Hồ Chí Minh, 03 tháng 07 năm 2023

Sinh Viên

CAO NGUYEN MINH QUAN

NGUYEN DOAN THINH

Trang 3

DE CƯƠNG CHI TIẾT oo.cccecccsssscssssessssesssscsssscsucsssssscsscscsesucassesecsesusscsesesseeesseees 2 NOI DUNG KHÓA LUẬN ooieccccecscsccscsscsessesesscscsucsesscscsvsscsesecsvsussesucsssesassesscavees 7

Chương 1 TÔNG QUAN DE TÀII 2-52 5 SE9SE2EEEEEEEEEEEEEEEEEEEEEEEEEErkerkrree 7

lnGH: i7 AB 7

1.2 Lý do chọn đề tài ccc cSc ST cv T0151121811 1111111111111 01111 re 7

1.3 Mục đích nghiÊn CỨU - -Ă S11 1S SH kg key 7

1.4 Đối tượng nghiÊn cỨU - 52 ©t+SE2E+E£2E2EEEEEEEEEEEEEEEEEEErkerrrkrrrree 8

1.4.1 Cac công nghệ nghiên CỨU <1 SE +21 E9 kg re 8

1.4.2 Đối tượng dé tài (-5-Scc2E 1 2121211211111111101112111121101 01x re 8

1.5 Pham vi nghién CỨU c2 E1 10111111113 10 1E 1 19 vn ky 8

1.5.1 Pham vi môi trường cv HH kh 8

1.5.2 Phạm vi chỨc năng -c c1 111112 1111181111118 111 ng kg 8

Chương2 CO SO LÝ THUYET ooceceececcscsscssssssssssessessssussesssssssecsesessussessessssessessssesseess 9

2.1 Kiến thức nền tang c.ccccccccscssessessssessesssssssessessssesesssssssessessssesseessseseeseeeees 9

2.1.1 Tìm hiểu về FÏutter ¿2-5252 ©s+S++S+2E£EE£EE2EEEEEEEEErkerxzrrkerxeree 9

2.1.2 Spring FramewWOTK - «sen, 10 2.1.3 FastAPT ccccccccceccceccccccceessecccceeeseessseccccssuueessecccsseseaeeescsseseuuesseeees 11 2.1.4 MongolDB ng kg 12

2.1.5 Firebase Dynamic LẴINKS - - <c +3 11131338 1 EESeeeerrereseeerre 14 2.2 Mang pcNùoc 15

2.2.1 Giới thiệu 2.5.2 tt St 3E 2211112121111 ke 15

Trang 4

2.2.3 Hướng giải quyết 5-52 2t 22t EEEE121212212112121211 2111 ce 15

2.2.4 Damnh gid d6 chinh nc vn 16

2.3 Hệ thống gợi ý Recommender System c.c.cccccsesesssseseseseseseseeseseeeseeees 16

2.3.1 Khái niỆm cọ HH HH và 16

2.3.2 Thuật toán Locality-Sensitive-Hashing (LSH) -. - 19

2.3.3 Áp dụng LSH vào đề tài - - Sex 121211 re 20

2.3.4 Thuật toán Neighborhood-based Collaborative Filtering 22

2.3.5 Các thành phần chính trong thuật toán Neighborhood-based

Collaborative EIÏf€TITIE .- c1 00 re 23

2.3.6 Áp dụng Neighbor-based collaborative filtering vào đề tài 26

Chương 3 DAC TẢ USECASE - 2 5S SE EEE2E51121211212112121 21212 xe, 29

SH ¬ ốc 29

3.2 Danh sách tác nhân - + 1111122111111 9111 1H vn ngư 30

3.3 Danh sách USecase - SH ngư 30

3.4 Mô tả chỉ tiẾT ccccc th HnHhngHn HH Hư 32

3.4.1 Dang nhap G ẨẤ / X V h^ 32

3.4.2 Đăng ký — SM 7 cư ÔÁÔĂÔẴÔ— Q21 83015 1K s† xe 34

3.4.3 Quên mật khâu St TtT TT 11111 11111111111111 11111111111 36

3.4.4 Cập nhật thông tIn - G1 11H ngư 38

3.4.5 Đổi mật khâu c++ccttt the 40

3.4.6 (7 Ả 42 3.4.7 Tạo pÏayÏHS( ST TH TH HH tre 45

3.4.8 Thêm bài hát vào pÏayÏ1SK - c c 1v ng ngư 47

3.4.9 Cập nhật thông tin playÏHS{ - - .-c 111113 g reg 49

3.4.10 Xa playlISK SH HH HH HH ng 51

BALL THM KIM ee ceecceecsseesseesseesseeesneesseessneesseessneesueeseneesueesnecsneesseesees 52

3.4.12 Phát nhạc -.-L HS TH HH kg ng kh 54 3.4.13 Kem lịch sử nghe nhạc 5 3332133 +22 EE+SEEEsrsererseerersere 56 3.4.14 Hem gIờ LH HH HH 57

Trang 5

BAAS Đăng Ùài HT TH HH HH nh 58

3.4.16 Goi ý bài hát kế tHe pec ccc ccc cssssteseesesseseeseesesessesuestesessssteseeeeas 59

3.4.17 Tao recommend playlist - c1 33333 EESSeseerrrsersseesrrs 60 3.4.18 Yêu thích bài dang cc cccsccceessneceeessneeeceeeeeneeeeesseneeeeeesenees 62 3.4.19 Bình luận - +52 SE 1E 121E2121111212111121 211111111 cxe 63 3.4.20 Chia ho 4441133:;71‡⁄à 64

3.4.21 Kem pTOÍiÌ€ - - Gv HH nh 65

Chương 4 XÂY DỰNG HE THNG - + ¿2 S+S£+E+E2E£EEEEEEEEEEEEEEEererrrri 67

4.1 Kiến trúc ứng dụng - + <SE+E+E£ESEEE2EEEEEE 1212112111111 ere 67 4.2 Kiến trúc hệ thống - ¿+ SE EEEEEEE21112111112111 11.111 cre 67 4.3 Sơ đồ LOD coeccecccccccccscssssessssesssscsessssesscsesssscsessssesussesucscsessesesassesusscsesssaeeecaes 69

Chương 5 THIET KE CƠ SỞ DU LIỆU 5-2-5 52+E2E2+E+E££E+EeEEzEererrsrs 70

5.2 Danh sách các quan hỆ - -‹ + c1 111132 111113115 1111158511111 1 xe, 71

Chương 6 THIẾT KE GIAO DIỆN + 2©cS2EE2ESEE2ESEEEESEEEEEEEEEEEErkrkererkres 72

6.3.1 Mô tả tong quất ¿c5 221221921 211112121112111 1111211 cxe 74 6.3.2 M6 1ong 1n 74 6.4 Màn hình reset mật khâu - + - ¿2 +SE+E+E£E#EEEESEEEEEEEEEEEerrrkrrrree 75

6.4.1 Mô tả tong quất - 2:52 2212219121111 212111121 112111211 cxe 75 6.4.2 Mô tả chỉ tiẾt - 5c c2 S321 21E21210112111121211111011 1121111 c6 75 6.5 Màn hình Email reset mật khâu - ¿2 + 2+£+£++E+£e+x+Eerszxerszed 76

6.5.1 Mô tả tong quất - ¿c5 St 2EEE2EEE211112121212111 2111211 76

Trang 6

6.5.2 Mô tả chỉ tiét ccccccccccccccssccscsscscscsscseseescsesecsssesvsesevscseavsesevsesecacsesevacsees 76

6.6 Màn hình Email confirm - << c + * 21s esez 77

6.6.1 Mô tả tong quat occ csecsescscscsscscscscsssscsescssscecscststsecsssvseseeaeees 77

6.6.2 Mô tả chỉ tidt oo cecccceccccccccscssecsesesessesssecsessesssessessssessessssessesessssesseenees 71

6.7 Màn hình Chink cc ccccccccccccccsseecccccccccuesececceeecsueseecccseeuueeecccseeeuuaesess 78

6.7.1 Mô tả tong quat o.cecececeeccccscsccscscscscsscscscsesesscsescsesssscsesesssesssscseseeeeees 78 6.7.2 Mô tả chỉ tiẾt 5: Set E1 EEE1215112111121111 1111111111111 c6 78 6.8 Màn hình tìm kiếm -:- ¿SE ESE2EEEEEEEEEEEE21212121 111111111 xe, 79

6.8.1 Mô tả tong quất + <Se E1 EEEEE211111 2121111111111 xe 79 6.8.2 Mô tả chỉ tiẾt 5: Set E1 1 2121E1121111211112111 1111211111112 xe 79

6.9 Màn hình chơi nhac - 2-2222 2222111111111 kkkeree 80

6.9.1 Mô tả tong quất -ccc-c Set EE5E1212811 11 1211111111111 cxe 80

6.9.2 Mô tả chỉ tiẾt S:ccn ST 1 1 111211111 1121111111 111101211 rye 80

6.10 Màn hình Thêm bài hát vào playlist - - 2 2 2 x+£++£zzxezzxzxered 81

6.10.1 M6 tả tông quat oo eeecccececeesececscscsscscscscsssatecscsesscscsescsecscscscseseeeeaes 81 6.10.2 M6 tả chỉ tiẾt c c1 C3 1E 12111 11111111211 1121 ke 82 6.11 Màn hình hen giờ tắt nhạc ¿- 52+ 2E SE2E£EE2E£EE£EeEEErEerkrrererrres 82

6.11.1 Mô tả tông quát ¿©2522 E#EEEEEEEEEEEErkerrkerrrees 82

6.11.2 M6 tả chỉ tiẾC 5c c2 1E 1112211121111 erke 82

6.12 Màn hình chơi nhạc trên navigation DaT - 555 +++<s+++seeeeseeess 83

6.12.1 M6 ta tng QUuat 4 83 6.12.2 M6 tả chỉ tiẾt Set 1E 1E 211112111111111111211 112112 re 83 6.13 Màn hình Danh sách playlist, nghệ sĩ, bài hát theo chủ đề 84

6.13.1 Mô tả tông quát :- 5: ++c+S2+k‡EE2EEEEESEEEEEEEEEEEEErkerrrkes 84 6.13.2 Mô tả chỉ ti6t oo.cecccccccccccccsscseesssessssessesesesesessesessssesscsessessseeseeeees 84

6.14 Màn hình playÏISf - - - << 1109 HH gưy 85

6.14.1 M6 tả tổng quát SE SE SE2EEEEE1 1211111121211 xe 85 6.14.2 M6 tả chỉ tiẾt - 5c tt St 1E 21E12211111211121011 1121112 re 85

6.15 Màn hình nghé Sĩ c1 1322211111119 1 11111823111 11821111 ng vi 86

Trang 7

6.15.1 Mô tả tông quát -¿- +: ++c+S++ESEE2EEEEEEEEEEEEEEEkerrrkerrrkes 86 6.15.2 Mô tả chỉ ti6t oo.cccccccccccccscsscsessssessssessesesscsesessesessssesscseseseseeseseeees 86

6.16 Man hình mạng xã hội oo eceessseceesesteeeeeessneeeeesseeeeeesesnseeeeesenneeeeees 87

6.16.1 M6 tả tổng quát c5 SEESE2E1E5E1 1211112121211 87 6.16.2 M6 tả chỉ ti€t ccccccccccccccccccessscssssessssesscsesesesessesessssessssessessseeseeeeees 87

6.17 Màn hình bài đăng chi tiét 0.0.cccccccecccscsecesescsescsestscseesceeseseseesestseseeees 88

6.17.1 M6 tả tong quất - ¿+ Sc222SE SE EE21E2121121 21112121 xe 88

6.17.2 M6 tả Chi tIẾẲ Ặ c c2 H HH cv nen 88

6.18 Màn hình danh sách bình luận - -+++++++++eeeeeeees 89

6.18.1 M6 tả tổng quất - ¿5-5222 2223212121121 21112121 ve 89 6.18.2 M6 tả chỉ tiẾt - c5 1 1 221E22101211111211121 2111212 rke 89

6.19 Màn hình chia sẻ bài đăng c2 1 2S 111v ngư 90

6.19.1 Mô tả tông quất c- ¿+52 St‡22EE2E2E2EEEESEEEErkerrrkerrrvee 90

6.19.2 MG ta Chi 7 4343BHHĂ)L 90

6.20 Màn hình profile người khác - + + +21 sseseerreeses 9]

6.20.1 M6 tả tổng quát -c- 5:52 2x23 EEE2E21121 211121 2xerrrei 91 6.20.2 M6 tả chỉ ti6t oo cecceccccsceeescsessesesscsessesessssesessesessesesscseseseseeseseeees 91 6.21 Màn hình tìm kiếm bai dang c.cececcecccccccssessessesessessessesessessssessesssseseeseaes 92

6.21.1 M6 tả tổng quất :©:- 5: 222 2EE212E2122121121 21112121 ve, 92 6.21.2 MG tả chỉ tiẾt - (5c c n2 21112111 2121111101111 211112 xe 92

6.22 Màn hình tạo bài đăng mớii -¿- ¿2 22s +x+EE+EtEEEEEEEEEeEkErrkerkrree 93

6.22.1 M6 tả tổng quất - ¿5 2222 2E 2 2121211212111 ve 93 6.22.2 MO tả chỉ tiẾt (5c St S22 21112111121211111011 1121111 xe 93

6.23 Màn hình chỉnh sửa, xóa bai đăng Ă S11 S3 ve 94

6.23.1 M6 tả tông quát ¿5-52 t2 2E112111112111 2111211 cxe 94 6.23.2 MO tả chỉ tiẾt -.- 5c CS 22tET 211 2111211212111 11211112 xe 94

6.24 Màn hình người dùng +1 1111221111111 111 111921111 ng nen 95

6.24.1 M6 tả tổng quất -:©2-S+252+E 2E 2E2EEEE2E21 2111212 errcei 95 6.24.2, MO tả chỉ tiẾt -(- 5c St 22t E221 1 2111211211111 0111 ke 95

Trang 8

6.25 Màn hình yêu thích của người dùng - -sS 13+ irseeseerree 96

6.25.1 Mô tả tông quát - ¿5522222211211 212111211111 96 6.25.2 MO tả chỉ tiẾt 5c c2 2211 2111212111210 ke 96

6.26 Màn hình playlist cá nhân - - << E1 1E 1S HH vn gkt 97

6.26.1 Mô tả tông quát - ¿s22 2EEEEEEE2121 112121111111 cxe 97 6.26.2 MO tả chỉ ti6t o.cecceccccccccccccscssssessssessssessssessssessseseesssessesesnsseseessaeeees 97

6.27 Man hình lịch sử của người đùng «s6 + xxx vs ssikrrekessk 99

6.27.1 M6 tả tổng quất ¿2-5522 StSE2EEEEEE2EE21 212.2 Exerrrei 99

6.28 Màn hình cập nhật thông tin - S5 33+ 2 3+3 xirerrrreree 100

6.28.1 Mô tả tổng quát 21t St 1 12121121112111111111E11x xe 100 6.28.2 MO tả chỉ tiẾt ẶQQ 2121 1Ề 1212121112111 rke 100 6.29 Màn hình đôi mật khẩu ¿2 SE St EEE2E121E1EEE11111E1 1E ckrki 101

6.29.1 M6 tả tông quất 2222222111 2151212111 2112 xe 101 6.29.2 MO tả chỉ tiẾt 2L ST n2 1212211121111 ca 101

Chuong7 CÀI ĐẶT VÀ KIEM THỬ 2+s+E2+E+E££E+E£EE+EeEErEererrereree 102

7.1 Môi trường cài đặt và kiểm thử 2 + 2+x+£££E+Ee£xzEerrkerrxeree 102 7.2 Kết quả kiểm thử -¿ ¿+ 2S 1 111 EE121211121121211111111111 11x 102

Chương8 TONG KẾT 2 G221 32211212111 2121 212111211121 re 103

§.1 Kết quả đạt được c-c TT t1 1111212111111112111111111E tre 103 8.2 Hạn chế S5c t2 2 2EE21911212121211111111211111211 1111 ty 104 8.3 Hướng phát triỂn ¿+ SE 2EEEEEEEE121217111 111211111 re 104 TÀI LIEU THAM KHẢO 2S2S+ SE SE SE SEEEEEEEE+ESESESEEEEEESESESEEEEEESEEErErkrkrkree 1

Trang 9

DANH MỤC HÌNH ẢNH

Hinh 2.1 Flutter 0 © 9 Hình 2.2 Spring FraImeWOTĂ - - c1 1S TH HH re 10 Hình 2.3 FastALPÌ - - c1 HH nọ nọ TH nh 11 Hình 2.4 MongoDB - - - <1 1113210111159 1011119 11H HH re 12 Hình 2.5 Firebase Dynamic LITIK - + +2 1E 21011119101 119111 9 1 K99 vn vn ng krey 14 Hình 4.1 Hình minh họa dit liệu bài hát 222222 2**£££EEEEEEEEEEeeeeeeeeeeees 21 Hình 4.2 Thông tin bài hát thử nghiệm - <5 1118311113911 1 11 kkrrskree 21 Hình 4.3 Danh sách các bài hát được recommend - «+ ++++++++++++ssssssexx+2 22 Hình 4.4 Utility ÍMatT1X - G5 1H HH re 23 Hình 4.5 Utility matrix Y và giá tri ratings trung bình «<< + c++seesserss 24

Hình 4.6 Normalized utility matrix c3 0111812311 1113991111 911 kg key 25

Hình 4.7 Đầu ra tham khảo của thuật toán - - + + tt ‡E£ESEEEEEEEEEEEEEEEEEEErEkrkrkrkerrri 26

Hình 4.8 Hình minh họa dữ liệu nghe - - - c5 32 E311 133EEEEESEEEkssreerrseeree 27

Hình 4.9 Biểu đồ thống kê lượt nghe của người dùng - ¿5 + s+£+cz+x+zzxzez 28

Hình 4.10 Mean Absolute Error của Recommender SŠystem . «+ ++-s++++s+>++ 28

Hình 5.1 Sơ đồ Usecase se.scsscssssseesssesssesssecenneesnnsessssrsessnsessnsesneeesnsesnneesseeesneeesneessess 29

Hình 6.1 Màn hình đăng nhập - ó1 111kg hệt 72

Hình 6.2 Màn hình đăng ky Q11 HH TH ệt 73

Hình 6.3 Màn hình Quên mật khâu + 2 +E+E£EE2E£EE2E£EE£E+EEEE+EEEEZEeEErErrerrrrs 74Hình 6.4 Màn hình reset mật Khau ¿ c:+c+tc2EtttEktttrrrtrrrrtrtrrrrtrrrrrirrrrrrrrree 75Hình 6.5 Màn hình email reset mật khâu - ¿+ ¿+ SE EEEEEEEEEEEEEEEEEerererererers 76

Hình 6.6 Màn hình Email confirm - - - - << 1821011111121 11 11991111 9E tk key 77

Hình 6.7 Màn hình hién thị trang chủ ứng dụng - 2+ 2+s+££++E££++Eezzxererxers 78Hình 6.8 Màn hình tìm kiẾm : 5+©+++E+tt2Ektt2 tre 79

Hình 6.9 Màn hình chơi nhạc - - (2c 2c 1111322222231 11111 1111255311111 1kg 1111 re 80

Hình 6.10 Màn hình Thêm bài hát vào playÏ1Sf 5c c1 1S ng rey 81

Hình 6.11 Màn hình hen giờ tắt nhac - ¿5-52 52+SSE£EE2EE2E£EEEEEEEEEEEEEEErkrrkerxrree 82

Hình 6.12 Màn hình chơi nhạc trên Navigation Bar cv knsikres 83

Hình 6.13 Màn hình danh sách playlist, nghệ sĩ, bài hát theo chủ ee 84

Hình 6.14 Man hình playlist ee ees eeececessecesseeceseeeseessneecssaeesseesseeecesaeesseeesneeeeeaees 85 Hình 6.15 Man hình nghệ Si eee eeccceceeeneceeeeenceeeceeaeeceeenaeeeeeeaeeeeesenaeeeeeeaeeesenaeeees 86

Hình 6.16 Man hình mạng xã hộIi - - - ¿2 E32 1331111191111 1111111118111 811 E911 ng key 87

Hình 6.17 Màn hình bài đăng chi tiẾt 2 52 +ES£SE2E£EE2E£EEEESEEEEEEEEEEEEEErrrrerrrri 88

Trang 10

Hình 6.18 Màn hình danh sách bình luận 22222 **££££££££EEEEEEeeeeeeeeeeees 89 Hình 6.19 Màn hình chia sẻ bài đăng - - - - 1 SH ng HH key 90

Hình 6.20 Màn hình profile người khác - - <6 1 E231 1E31 1E 911 1 91v 9v ng rey 91

Hình 6.21 Màn hình tim kiếm bài Gang cccccccccccccscssessessesscsessessssecsessesucseesesscssseeseseeaes 92

Hình 6.22 Màn hình tạo bài đắng TmỚii - «5 +13 ng ng ưệt 93 Hình 6.23 Màn hình chỉnh sửa, xóa bài đăng - - 5 111kg kg rey 94 Hình 6.24 Màn hình người ùng - - + E1 1101901 ng rry 95 Hình 6.25 Màn hình yêu thích của người dùng <6 s1 ssikrrseeres 96 Hình 6.26 Man hình Playlist cá nhân - - 56 11112 v 19v vn key 97 Hình 6.27 Màn hình lich sử của người dùng - 2c 1v re 99 Hình 6.28 Màn hình cập nhật thông tin - - - - 5 E113 +23 3+3 EESSEEEsrersrseereeekre 100

Hình 6.29 Màn hình đổi mật khâu ¿ 2-52 tệ tEkrtghg 101

Trang 11

DANH MỤC BANG

Bang 2.1 Danh sách các bài hát test bản quyên ¿2 S2 +E+E2E+E££zEvzzxrrerrerd 16

Bảng 2.2 Ưu, nhược điểm của Content-based systems - 2 255 s+cz+zczxczs+se2 18

Bảng 2.3 Ưu, nhược điểm của Collaborative Filtering -¿-¿©s s+cs+sezxezzsez 19

Bảng 3.1 Danh sách tác nhân - - - E1 111909 ng re 30 Bảng 3.2 Danh sách USsecase G1 HH TH HH Hit 31 Bảng 3.3 Usecase Dang nhập - - - + 1H ng HH nh 33

Bảng 3.4 Usecase Đăng KY LH HH TH HH HH re 35

Bang 3.5 Usecase Quên mật khâu 2-2 2E +E+E£EE+EEEEEEEEEEEEEE2E2E21212121 2e xe, 37

Bang 3.6 Usecase Cập nhật thông tIn - - - - Ă 1 1111211112 1111 111 9111 91v ng ng rey 39

Bang 3.7 Usecase Đổi mật khẩu ¿- 2 5E 2E9SSEEEEE2EEE1212121211212112121 21211 xe, 41

Bang 3.8 Usecase Yêu thích - - - E19 ng re 44

Bang 3.9 Usecase Tao pÏayÏIS c 1111211191 SH TH ng 46

Bảng 3.10 Use case Thêm bài hát vào playlist 6c c1 121 S9 sgk 48 Bảng 3.11 Usecase Cập nhật thông tin pÌay Ï1SE - - - <5 2511 *2 kE+sekEsseeersseerss 50

Bảng 3.13 Usecase Tìm kiẾm - ¿5:21 2223 2E92122121121221211217111212111211 11111 cxe 33

Bảng 3.14 Usecase Phát nhạc - c1 1S TH TH Hy 55

Bảng 3.15 Usecase Xem lịch sử nghe nhạc - c2 22c 33+ EESeeeseeeerreeeres 57

Bảng 3.16 Usecase Hẹn g1Ờ - c0 1 21H HH re 58

Bang 3.17 Usecase Dang Đài - - 2c 1199119 vn re 59

Bảng 3.18 Usecase Gợi ý bài hát kế tiẾp - 52521 222E221E21211211212121121 21 xe 60

Bảng 3.19 Usecase Tao recommend pÏayÏ1SẨ - + + **+**‡+seEE+eeeseeeeeeeeerss 61 Bang 3.20 Usecase Yêu thích bài đăng - - - E1 1121129111911 911 11 ng rey 63 Bảng 3.21 Usecase Binh luận - - 5 E1 1120112111911 ng ng key 64

Bảng 3.22 Usecase Chia SẺ Gà grre 65 Bảng 3.23 Usecase Xem DTOẨTÏG - - - c1 112101113111 1 910 11910119 ng Hee 66

Bảng 5.1 Danh sách các quan hỆ - - - - E1 1119111111991 1 1199 1n kh 71

Bang 6.1 Mô tả chi tiết Màn hình Dang nhập ¿2-5 52 +S£+E+E£E+E££EzEeEEzrererrrrd 72Bang 6.2 Mô tả chỉ tiết Màn hình Dang ký - 2-5-5225 SE E213 2121212121212 ce, 73Bang 6.3 Mô tả chỉ tiết Màn hình Quên mật khẩu - - 2 5£ 52+£+££+£+£zE+£ezxezz 74Bang 6.4 Mô tả chỉ tiết Màn hình Reset mật khẫu 2- - 2+ 2 2+E+£z+E+£zxezrxerd 75Bang 6.5 Mô tả chỉ tiết Email Reset Mật khẩu - 2 S2 +E+E£E+Ec£zEezzxererrred 76

Bang 6.6 Mô tả chỉ tiết Email xác thực tài khoản - 2-5 2 +E+E2E+Ee£zEezzrererreed 71

Bảng 6.7 Mô tả chỉ tiết Màn hình chính 2-52 5c SS£S£2E£2E£EE£EE2EE£EeEEeEzEerxrrerree 78Bảng 6.8 Mô tả chi tiết Màn hình tìm kiếm - 2-5255 S2S22E£EE‡EE2EE£EeEEEEzErrkrrxrree 79Bảng 6.9 Mô tả chì tiết Giao điện chơi nhạc - - - St +x+k‡k‡EEEEEEEEEEEEEEEEEEekerrrkrkrkes 81

Trang 12

Bảng 6.10 Mô tả chỉ tiết giao điện Thêm bài hát vào Playlist 2- ¿5-2552 82 Bảng 6.11 Mô ta chi tiết giao điện hẹn giờ đi nQU cccecececcssesessesesseseesesesesesscsesteseeeesees 83

Bảng 6.12 Mô tả chỉ tiết giao điện chơi nhạc trên navigation bar . -5-52- 83 Bảng 6.13 Danh sách playlist, nghệ sĩ, bài hát theo chủ DA 84

Bảng 6.14 Bảng mô tả chỉ tiết Màn hình hiển thị thông tin của playlist -. 86

Bảng 6.15 Mô tả chỉ tiết Màn hình hiền thị thông tin của nghệ sĩ -. -: 87

Bang 6.16 Mô tả chi tiết Màn hình hiển thị mạng xã hội chia sẻ nhạc - 87

Bang 6.17 Mô tả chi tiết Man hình hién thi thông tin chi tiết của bai đăng 88

Bảng 6.18 Bảng mô tả chi tiết giao điện danh sách bình luận -+5¿ 89 Bang 6.19 Mô tả chỉ tiết màn hình hiển thị chia sẻ bài đăng -2- ¿55525552 90 Bang 6.20 Mô tả chỉ tiết giao điện profile người khác - 2 - 25+ s+xezzxezzxees 92 Bang 6.21 Mô tả chỉ tiết giao điện tìm kiếm bài đăng 2-2-5 522cccz+xczrxsez 93 Bảng 6.22 Mô tả chỉ tiết giao diện tạo bài đăng mới - ¿2-2 + x+c++zzxcrxerszree 94 Bảng 6.23 Mô tả chỉ tiết chỉnh sửa bài đăng ¿5c S2 2222 2EEEEEE2 2E crkerrree 95 Bảng 6.24 Mô tả chỉ tiết màn hình hiển thị thông tin người dùng - 96 Bảng 6.25 Mô tả chỉ tiết danh sách yêu thích 2 2+22+s+£x+£++E£Ee£zEzEerxerssxee 97 Bảng 6.26 Mô tả chỉ tiết giao điện playlist cá nhân ¿2 + ++s£+x+z+£zxezxezezsez 98 Bảng 6.27 Mô ta chỉ tiết màn hình lich sử nghe nhac 2- 2 25s s+52+£e£x+z++s+2 99 Bảng 6.28 Mô tả chỉ tiết giao điện cập nhật thông tin 2-5252 +25++s+zx+zsz2 101 Bang 6.29 Mô tả chỉ tiết giao diện đổi mật khâu 2-2 2+2 ££+E+£+E+£czxzzzcxz 101 Bang 7.1 Bảng kết quả kiểm thử 5-52 E52 522 EEEEEEEEE12EE21215212121121212121 11211 ce2 102

Trang 13

DANH MỤC TU VIET TAT

MVC Model View Controller

AI Artificial Intelligence

ML Machine Learning

API Application Programming Interface BloC Business Logic Component

Trang 14

TÓM TÁT KHÓA LUẬN

Hiện nay xu hướng nghe nhạc của mọi người ngảy càng đa dạng và phong phú Các bạn

trẻ không chỉ là những người thích nghe nhạc, họ còn muốn sáng tạo nghệ thuật, tạo ra cácbài nhạc hay và thú vi, và mong muốn chia sẻ chúng đến với mọi người Nắm bắt được xuhướng, nhóm chúng em quyết định chọn đề tài “Xây dựng ứng dụng nghe nhạc trên Mobiletích hợp chia sẻ và gợi ý nhạc” nhằm mục đích xây dựng một ứng dụng di động đáp ứng

nhu câu nghe nhạc và chia sẻ nhạc của mọi người.

Ứng dụng tích hợp các chức năng cơ bản bao gồm phát nhạc, tìm kiếm các bài hát, ca sĩ,playlist, tạo danh sách phát cho riêng mình dé nghe các bài hát theo thứ tự yêu thích, cũng

như cho phép điều chỉnh các chức năng phát nhạc như tua nhanh, tua chậm, lặp lại, phát

ngau nhién,

Ngoài ra ứng dung còn tích hợp chức nang gợi ý nhạc dựa trên các nhu câu của người dùng cũng như từ những người dùng khác nhau và mạng xã hội đê người dùng có thê chia sẻ các

bài nhạc do mình sáng tác với mọi người Điêu này giúp tạo một sân chơi, một cộng đông

dé két nôi mọi người với nhau.

Trang 15

ĐÈ CƯƠNG CHI TIẾT

TÊN ĐÈ TÀI XÂY DỰNG ỨNG DỤNG NGHE VÀ CHIA SẺ NHẠC

TEN DE TÀI (TIENG ANH)

BUIDING A MOBILE APPLICATION TO LISTEN AND SHARE MUSIC

Giang vién huéng dan ThS Tran Anh Dũng

TS Đỗ Thi Thanh Tuyền Thời gian thực hiện: Từ ngày 06/02/2023 đến ngày 25/06/2023

Sinh viên thực hiện: Nguyễn Doãn Thịnh - 19522281

Cao Nguyễn Minh Quân- 19522074

Nội dung đề tài:

1 Lý do chọn đề tài:

- Am nhạc vốn từ lâu đã là một phần không thé thiếu đối với chúng ta Âm nhạc xuất

hiện trong mọi khía cạnh của cuộc sông Âm nhac không chỉ dùng dé giải tỏa căng thang, nó còn được sử dụng dé sử dụng như là một cach đề kết nối với thế giới.

Ngoài ra, trong thời chiến tranh, âm nhạc còn duoc sử dụng để khích lệ tinh thần đồng đội, “tiếng hát at tiếng bom”,

=> Chính vì những điều trên, chúng em, những con người yêu âm nhạc đã quyết định

làm một ứng dụng nghe nhạc, để mỗi người chúng ta, sau những giờ làm việc mệt mỏi có thé đắm chim vào những giai điệu đề quên đi căng thăng mét mỏi.

- Bên cạnh đó, ứng dụng của chúng em còn cho phép người dùng có thé chia sẻ

những đoạn thu âm, những bài hát do chính họ làm ra.

2 Mục tiêu đề tài:

- _ Xây dựng ứng dụng nghe nhạc đáp ứng những chức năng như: nghe nhạc, thêm bai

hát, playlist vào danh sách yêu thích.

- Tu động gợi ý những bài hát liên quan đến bài hát người dùng đã nghe gần đây

3 Phạm vi

e Phạm vi môi trường

o Môi trường phát triển: Android và iOS

o Server: JAVA Spring

Trang 16

e Pham vi chức nang:

o Nghe nhac

o Tim bai hát

o Thêm bài hat, playlist vào danh sách yêu thích

o Thêm, xóa bài hát ra khỏi danh sách yêu thích

o Tạo playlist của cho mình

o Đăng tải nhạc, bình luận,

o Xem thông tin nghệ sĩ

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

e Những người có sở thích nghe nhạc, chia sẻ âm nhạc đến với mọi người

e _ Những hãng thu âm có nhu cầu tìm kiếm những ca sĩ trẻ, tài năng.

e Những ca sĩ trẻ muốn mọi người biết đến mình nhiều hơn.

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

Trước khi bắt đầu phát triển dự án, nhóm đã tìm hiéu và xác định rõ những mục tiêu,

những chứcnăng cần phải đạt được dé tạo ra một ứng dụng đáp ứng với dự tính ban đầu.

Nhóm đi đến quyết định phát triển dự án thông qua các bước sau:

B1 Tìm hiểu và nghiên cứu các ứng dụng nghe nhạc được nhiều người sử dụng.

Đánh giá khả năng và hạn chế của ứng dụng hiện tại.

B2 Phân tích chức năng của ứng dụng.

B3 Phân tích và đặc tả ứng dụng.

B4 Thiết kế cơ sở đữ liệu và xây dựng ứng dụng

B5 Thiết kế giao điện cho ứng dụng.

B6 Kiểm thử, sửa lỗi.

B8 Bổ sung, cập nhật tài liệu.

6 Nền tảng công nghệ:

o Backend: JAVA Spring, Python, REST API

o Database: MongoDB

o Frontend: Flutter

o Quản lý: Github, Figma, Microsoft Team, Trello

7 Kết qua mong đợi

Trang 17

Ứng dụng có thê đáp ứng được các nhu cầu:

- _ Yêu câu chức năng: đáp ứng các yêu câu đê ra

- Giao diện than thiện với người dùng, dễ dàng thao tác.

- Hiệu năng: Ít lỗi và tốc độ xử lý nhanh

- Nang cấp: Dễ dàng nâng cấp và bảo trì trong tương lai

Kế hoạch thực hiện:

Thời gian thực hiện 06/02 — 03/07

Thời gian Công việc Phụ trách

- Tìm hiểu về công nghệ

thực hiện (Flutter, 06/2 — 20/2

(Tìm hiểu công nghệ) Spring, NoSQL)

- Tim hiéu vé Machine

- Build demo Frontend.

- Tao ZingMP3 API

- Phân tích và đặc ta ứng

dụng bằng các biêu đồ

(sequence, usecase, )

- Cập nhật nội dung tài

liệu báo cáo

Quân, Thịnh

Quân, Thịnh Quân.

09/3 — 16/3

- Xay dung API cho cac

chức năng: tìm kiếm bài

hát, phát nhạc,

thêm/xóa bài hát sách

thích.

Quân

Trang 18

Xây dựng API cho các

chức năng:

authentication, authorization

- Cập nhật nội dung báo cáo Quân

vào trong tai liệu

- Phân tích dataset và kết

02/5 - 14/05 quả huấn luyện, chọn Quân, Thịnh

model dự đoán phù hợp

- Kiểm thử, sửa lỗi

15/05 — 10/06 phan mềm Quan, Thinh

- Hoàn thiện khóa luận

11/06 — 20/06 - Demo san phâm Quân, Thịnh

- Cập nhật, bô sung chức

21/06 - 03/7 năng cho ứng dụng, theo Quân, Thịnh

góp ý của giảng viên hướng dân

Trang 19

(Ký và ghi rõ họ tên)

Nguyễn Doãn Thinh

Sinh viên 2 (Ký và ghi rõ họ tên)

Cao Nguyễn Minh Quân

Trang 20

NỘI DUNG KHÓA LUẬN

Chương 1 TONG QUAN DE TÀI

1.1 Hién trang

Hiện nay, hai hình thức giải tri phổ biến nhất đó chính là nghe nhac và mạng xã hội

Đối với ứng dụng nghe nhạc, những ứng dụng nhiều người sử dụng có thé kế đến

như là Spotify,Youtube Music, Zing MP3, Còn đối với những mạng xã hội,

Facebook, Tiktok, Souncloud có thể kế đến như là những ứng dung hàng đầu cho

mục đích này Tuy nhiên, ngoải Youtube thì chưa có một ứng dụng nào là áp dụng

tất cả hai hình thức trên

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

Âm nhạc từ lâu luôn đóng góp vị trí quan trọng trong sự phát triển của đời sống và xãhội Mọi người thường nghe âm nhac dé giải trí, thư giản, giải toa áp lực của bản thân,cũng như dé đáp ứng nhu cầu của bản thân trong cuộc sống thường ngày Đôi khi âmnhạc cũng là sợi dây gắn kết mọi người lại với nhau, họ chia sẻ cũng như trò chuyện vềnhững bài nhạc họ yêu thích Do đó, nham đáp ứng nhu cầu nghe nhạc cũng như chia

sẻ nhạc của mọi người, nhóm chúng em quyết định chọn dé tài này, xây dựng ứng dụng

nghe nhạc trên Mobile tích hợp gợi ý và chia sẻ nhạc.

Ứng dụng cung cấp những tiện ích giúp người dùng dễ dàng tiếp cận với những bài

nhạc mới cũng như gợi ý những bài nhạc hay dựa trên những thông tin của người dùng.

Bên cạnh đó, ứng dụng còn có mạng xã hội để mọi người chia sẻ những bai nhạc của

mình với moi người.

1.3 Mục đích nghiên cứu

Chúng em mong muôn đáp ứng nhu câu nghe nhạc và chia sẻ nhạc của mọi người

Chúng em đã luôn tò mò và hứng thú đối với các công nghệ liên quan tới Mobile đặcbiệt là Flutter, cũng như sự hệ thống gợi ý

Chúng em mong muốn được áp dụng những kiến thức và kĩ năng đã học vào dự án

Trang 21

1.4 Đối tượng nghiên cứu

1.4.1 Các công nghệ nghiên cứu

Đối với thiết kế hệ thống:

- Luu trữ ảnh thông qua Cloudinary

- _ Trao đổi mail thông qua Spring Mail

- _ Lưu trữ các đường dan thông qua Firebase Dynamic Linking

- _ Nguồn nhạc thông qua ZingMP3

1.4.2 Đối tượng để tài

Những người có sở thích nghe nhạc cũng như những người muốn chia sẻ đam mê nghe

nhac tới moi người.

1.5 Phạm vỉ nghiên cứu

1.5.1 Phạm vỉ môi trường

Ứng dụng di động trên Android

1.5.2 Phạm vỉ chức năng

- _ Cung cấp các bài nhạc, playlist, nghệ sĩ dựa trên ZingMP3

- Phat nhạc và kèm lyric nếu có

- Lut danh sách các bài hát, album, nghệ sĩ yêu thích

- Chon nhạc random va repeat danh sách nhac dang chơi

Trang 22

- Cac playlist, thông tin nghệ sĩ được quản lí tiện lợi kèm theo một số chức năng như

xem thông tin bài hát cũng như chuyên đổi qua lại giữa các bài hát trong playlist

hoặc của nghệ sĩ

- _ Chức năng hen giờ tắt nhạc

- Goi ý các bài nhạc dựa trên lịch sử nghe nhạc của người dùng

- _ Xem thông tin các bài hát của mọi người trên mạng xã hội

- _ Đăng bài và kiểm tra bài quyền của bài nhạc đã đăng

- Binh luận và yêu thích bai đăng

- Chia sẻ bai nhạc của bài đăng

Chương 2 CƠ SỞ LÝ THUYET

2.1 Kiến thức nền tảng

2.1.1 Tìm hiểu về Flutter

Flutter

Hinh 2.1 Flutter

Flutter là một công cụ phát triển giao điện người dùng mã nguồn mở được sử dung dé tao

ra các ứng dụng di động cho Android và iOS Được phát triển bởi Google, Flutter sử

dụng ngôn ngữ Dart đề xây dựng các ứng dụng đẹp và hiệu quả

Trang 23

Flutter sử dụng một cấu trúc UI được gọi là "widget tree", cho phép bạn xây dựng giaodiện người dùng bằng cách sắp xếp các widget khác nhau Widget là một khối xây dựnggiao diện được sử dụng dé tạo ra các thành phần khác nhau của ứng dụng như nút, trường

văn bản, hình ảnh, danh sách, menu, v.v.

Với tính năng "Hot Reload" cho phép bạnxem kết quả ngay tức thì khi thay đổi code, hỗtrợ cho nhiều thiết bị và nhiều kích thước màn hình, cũng như khả năng xây dựng ứngdụng chạy trên nền tảng web và máytính để bàn Flutter được đánh giá là một công cụ hữuích cho các nhà phát triển di động vìtính linh hoạt và hiệu suất của nó

Hình 2.2 Spring Framework

Spring Framework là một trong những framework phát triển ứng dụng Java phô biến nhấthiện nay Xây dựng trên các nguyên tắc của Dependency Injection (DI) và Inversion ofControl (IoC), giúp giảm thiểu sự phức tạp của việc quản lý các đối tượng trong ứng

dụng.

10

Trang 24

Ngoài ra, Spring Framework cũng cung cấp nhiều tính năng như:

e Spring Data: cung cấp một cách dễ dàng dé tương tác với các cơ sở dữ liệu khác

nhau, bao gồm cả RDBMS và NoSQL.

e Spring Security: cung cap cac tinh nang bao mat cho tng dung, bao gồm xác thực

và phân quyền

e Spring MVC: cung cấp một kiến trúc MVC dé phát triển các ứng dụng web

e Spring Boot: cung cấp một cách nhanh chóng dé tạo ra các ứng dụng độc lập và tự

động cấu hình.

Spring Framework cũng được tích hợp với các công nghệ khác như Hibernate, JPA,

Thymeleaf, và nhiều thư viện khác dé giúp giải quyết các van dé phát triển ứng dụng Java

Với các tính năng và lợi ích của nó, Spring Framework đã trở thành một trong những công

nghệ phổ biến nhất trong lĩnh vực phát triển ứng dung Java

2.1.3 FastAPI

© FasLAPI

Hình 2.3 FastAPI

FastAPI là một framework web phát triển ứng dụng API nhanh và hiệu quả bằng Python

Nó được thiết kế với mục đích cung cấp hiệu suất cao, tính năng tải liệu hóa tự động, và

hỗ trợ đầy đủ cho các tính năng của Python, bao gồm cả async/await

FastAPI được xây dựng trên nền tảng Starlette, một framework web ASGI (Asynchronous

Server Gateway Interface) được phát triển bởi Encode Với sự kết hợp của Starlette và

11

Trang 25

Python, FastAPI cho phép phát triển ứng dụng API nhanh chóng và dễ dàng, với các tính

năng như:

e Tu động tạo tài liệu API với OpenAPI và JSON Schema.

e©_ Sử dụng type hints (chú thích kiểu dit liệu) dé tao ra các API endpoint và kiểm tra

đầu vào dữ liệu tự động

e Hỗ trợ các tính năng ASGI và asyncio dé tối ưu hóa hiệu suất và xử lý các yêu cầu

đồng thời

© Cung cấp các công cụ dé xử lý lỗi, xác thực người dùng và phân quyền truy cập

FastAPI cũng được đánh giá là một trong những framework web phát trién API nhanh nhất

hiện nay, với khả năng xử lý hàng ngàn yêu cầu mỗi giây trên một máy chủ đơn giản.

Hình 2.4 MongoDB

MongoDB là một hệ thống cơ sở dữ liệu phi quan hệ (NoSQL) được phát triển bởi

MongoDB Inc MongoDB lưu trữ dữ liệu dưới dạng tài liệu JSON linh hoạt và có khả năng

mở rộng tốt, cho phép lưu trữ dữ liệu lớn và xử lý các yêu cầu truy vấn phức tạp

12

Trang 26

MongoDB là một hệ thống cơ sở đữ liệu tài liệu mã nguồn mở và có sẵn miễn phí Nó được

thiết kế dé tương thích với các ứng dung web hiện đại và các ứng dụng đám mây MongoDB

cung câp các tính năng như:

e Khả năng lưu trữ dữ liệu dưới dang tài liệu JSON linh hoạt, cho phép dé dàng thêm,

sửa, xóa các trường và đối tượng trong cơ sở dữ liệu

e_ Khả năng mở rộng tốt, có thé scale-out cơ sở dữ liệu bằng cách thêm các node vào

ích của nó, MongoDB đã trở thành một trong những công nghệ cơ sở đữ liệu phi quan hệ

phô biến nhất trong lĩnh vực phát triển ứng dụng web và đám mây

13

Trang 27

Vo Dynamic Links

Hinh 2.5 Firebase Dynamic Link

Dynamic Link là một tinh năng của Google Firebase, cho phép tạo ra các liên kết động dé

chia sẻ nội dung và thông tin giữa các ứng dụng va trang web Với Dynamic Link, người

dùng có thé truy cập nội dung của ứng dụng hoặc trang web một cách dé dang và nhanh

chóng.

Khi tạo một Dynamic Link, người dùng có thể tùy chỉnh liên kết để phù hợp với mục đích

sử dụng của mình, bao gồm cả tùy chỉnh URL, tùy chỉnh nội dung và tùy chỉnh tham số.

Điều này giúp tăng tính linh hoạt và tăng khả năng tương tác của ứng dụng hoặc trang web

Dynamic Link cũng cung cấp các tính năng như theo dõi, phân tích và kiểm soát truy cập,

cho phép người dùng theo dõi và phân tích các hoạt động của người dùng khi truy cập vào

liên kết Điều này giúp tối ưu hóa chiến lược tiếp thị và cải thiện hiệu quả của ứng dụng

hoặc trang web.

14

Trang 28

Dynamic Link được tích hợp với nhiều ứng dụng và trang web khác nhau, cho phép tạo racác liên kết động giữa chúng Với các tính năng và lợi ích của nó, Dynamic Link đã trởthành một công nghệ quan trọng trong lĩnh vực phát triển ứng dụng và tiếp thị sd.

2.2 Mạng xã hội

2.2.1 Giới thiệu

Mang xã hội sẽ là nơi dé người dùng có thé đăng những ban thu âm về bài hát ( có thé là

do chính họ sáng tác hoặc cover ) và nhận được những bình luận, tương tác của người dùng

khác Người dùng có thể chia sẻ bài hát mình yêu thích cho người khác

2.2.2 Bản quyền bài hát2.2.3 Hướng giải quyết

Khi xây dựng mạng xã hội dé chia sẻ bài hát, một vấn dé cần được đặt ra đó là bản quyền

bài hát.

Nhóm đã làm một API endpoint dé kiểm tra bản quyền bài hat dựa vào thư viện TinyTag

của Python.

Mỗi bài hát sẽ được đánh dau bản quyền bằng một chuan tag là ID3 Thư viện TinyTag

này có chức năng sẽ trích xuất thông tin ID3 của bài hát người dùng đăng tải Nếu ID3 tagxuất hiện trong file nhạc của người dùng thì bài hát đó sẽ vi phạm bản quyền

Lý Ngựa Ô Quang Linh 1993

15

Trang 29

Bảng 2.1 Danh sách các bài hát test bản quyền

2.3 Hệ thống gợi ý Recommender System

2.3.1 Khái niệm

Hệ thống gợi ý (Recommender System) là một ứng dụng phổ biến nhất của khoa học dữ

liệu ngày nay Chúng được sử dụng để dự đoán mặt hàng thích hợp nhất cho một người

dùng Hệ thống gợi ý đặc biệt hữu dụng khi người dùng cần chọn ra một sản phâm phù hợp

nhất với mình từ một lượng lớn sản phẩm có trong hệ thống

Hệ thống gợi ý hiện tại được sử dụng rộng rãi ở nhiều lĩnh vực Ví dụ thường thấy nhất là

những ứng dụng nghe nhạc, nơi hệ thống gợi ý được sử dụng đề tạo ra những playlist, gợi

ý những bài hát mà người dùng có thê sẽ thích nghe, gợi ý những sản phẩm trên những sàn

thương mại điện tử Hệ thống gợI ý con phô biến ở một số lĩnh vực cụ thé như nhà hàng,

16

Trang 30

hẹn hò online Không những thế, hệ thống gợi y còn được phat triển cho mục đích nghiêncứu, phát triển và các các dịch vụ tài chính,

Các thuật ngữ sau đây sẽ đượ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

- Bài hát 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à ratings

Recommender thường được chia thành hai nhóm lớn:

1 Content-based systems: đánh giá đặc tính của items được recommended.

Ví dụ: một user xem rất nhiều các bộ phim về cảnh sát hình sự, vậy thì gợi ý một bộ phim

trong cơ sở dtr liệu có chung đặc tính hình sự tới user nay, ví dụ phim Người phán xử Cách

tiếp cận này yêu cầu việc sắp xếp các items vào từng nhóm hoặc đi tìm các đặc trưng của

từng item.

17

Trang 31

Ưu điểm Nhược điểm

- Goi ý được những sản phẩm phù | - Không tận dụng được thông tin từ

hợp với sở thích của từng khách các users khác

hang riêng biệt - C6 những item không có nhóm cụ

- Goi ý không phụ thuộc vào dữ liệu thể và việc xác định nhóm hoặc

của user khác đặc trưng của từng item đôi khi là

- Goi y được những items tương tự bất khả thi

với những sản phâm mà users đã

thích trong quá khứ

Bang 2.2 Ưu, nhược điêm của Content-based systems

2 Collaborative filtering: hệ thống gợi ý items dựa trên sự tương quan (similarity) giữa

các users và/ hoặc items Có thê hiểu rằng ở nhóm này một item được recommended

tới một user dựa trên những users có hành vi tương tự.

Ví du: users A, B, C đều thích các bài hát của Noo Phước Thịnh Ngoài ra, hệ thốngbiết rằng user B, C cũng thích các bài hát của Bích Phương nhưng chưa có thông tin về

việc liệu user A có thích Bích Phuong hay không Dựa trên thông tin của những users

tương tự là B và C, hệ thông có thê dự đoán rằng A cũng thích Bích Phương và gợi ý

các bài hát của ca sĩ này tới A.

Ưu điểm Nhược điểm

- Tận dụng được những thông tin từ | - Không giải quyết được bài toán

users khác Những thông tin này khởi đầu lạnh (cold-start problem)

rất hữu ích vì các users thường khi mà người dung mới không có

được nhóm thành một vài nhóm đặc điểm gì về hành vi

đơn giản.

18

Trang 32

- Đơn giản, không cần phải mô tả | - Khi ma trận đánh giá lớn, tức số

đặc điểm của mỗi items như lượng người dung lẫn sản phẩm

Content-based lớn thì thời gian tính toán sé tang

cao, khó đáp ứng tư vấn thời gianthực hoặc gần thời gian thực

Bảng 2.3 Ưu, nhược điểm của Collaborative Filtering

2.3.2 Thuật toán Locality-Sensitive-Hashing (LSH)

Ý tưởng của LSH là sử dụng một hàm băm h(.) để băm các điểm dữ liệu trong P

vào một bảng TỊ.] sao cho nếu hai điểm sao cho nếu hai điểm p,q gần nhau thì khả

năng cao p, q sẽ được băm vào cùng một ô Ngược lại, p và q sẽ bị băm vào hai ô khác

nhau Khi trả lời truy vấn, ta chỉ việc tính mã băm h(p) và đưa ra tất cả các điểm lưutrong ô T[h(p)] Hàm băm h(.) như vậy được gọi là kiểu locality sensitive

Tại sao phải sử dụng LSH?

Lây bài toán sau:

Nearest Neighbor Search (NNS): Cho một tập các điểm P gồm n điểm trong khônggian d chiều và một số thực r Thiết kế cấu trúc dữ liệu trả lời truy van dang: cho trước

một điểm p € P€, tìm một (vài) điểm q € Pmà d(p, q) <r, trong đó d(p, q)là khoảngcách từ điểm p tới điểm q

Trong bai này, ta chỉ xét hàm khoảng cách d(., ) là khoảng cách Euclidean Cách đơn

giản dé thiết kế cấu trúc dữ liệu như vậy là ta sẽ tính khoảng cách giữa moi cặp điểm,

và sau đó lưu vào một mảng hay nhiều (ma trận) DỊ , | Mỗi khi ta nhận được điểmtruy van p, ta chỉ việc duyệt qua tất cả các điểm khác và đưa ra các điểm có khoảngcách không quá r từ p Dễ thấy:

19

Trang 33

1 Xây dựng bảng D mất thời gian O(n2d) vi ta phải trả thời gian O(d) dé tính

khoảng cách giữa hai điểm cho trước

2 Trả lời một truy van mất thời gian O(d)

Vì vậy, với những tập dữ liệu lớn, việc sử dụng những thuật toán thông thường sẽ tốn

khá nhiều thời gian

LSH là một kĩ thuật xấp xi dùng dé giải quyết tìm điểm gần nhất một cách hiệu qua

khi n và d đều vô cùng lớn

Các bước chính của thuật toán LSH bao gồm:

1 Chon số lượng bộ băm: Số lượng bộ băm sẽ ảnh hưởng đến độ chính xác và tốc độ

của thuật toán.

2 Chọn bộ tham số: Bộ tham số sẽ xác định cách mà các đối tượng sẽ được ánh xạ

vào các nhóm.

3 Chọn ham băm: Hàm băm sẽ được sử dụng dé ánh xa các đôi tượng vào các nhóm.

4 Anh xạ các đôi tượng vào các nhóm: Cac đôi tượng sẽ được ánh xạ vào các nhóm

dựa trên các hàm băm và bộ tham sô.

5 Tìm kiếm các đối tượng tương tự: Các đối tượng tương tự sẽ được tìm kiếm trong

cùng một nhóm hoặc các nhóm gân nhau.

Thuật toán LSH được sử dụng rộng rãi trong các ứng dụng như tìm kiếm hình ảnh vàvideo, tìm kiếm văn bản và các tác vụ khác liên quan đến tìm kiếm đối tượng tương tự

trong tap dir liệu lớn.

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

2.3.3.1 Luồng xử lýKhi người dùng nghe một bài hát mà họ vừa tìm được ở thanh tìm kiếm, sau khingười dung nghe xong bài hát hoặc bam vào nút chuyên bài, hệ thống sẽ dựa vào cácđặc điểm của bài hát người dùng hiện tại đang nghe như là tên ca sĩ, thể loại bài hát, sau

20

Trang 34

đó dựa vào bộ dữ liệu được cung cấp để gợi y cho người dùng bai hat kế tiếp mà người

dung có thê sẽ thích

Ví dụ: sau khi nghe xong bài hát Đường Đến Ngày Vinh Quang của nhóm nhạc BứcTường, hệ thống sẽ gợi ý bài hát Người Đàn Bà Hóa Đá của nhóm Bức Tường

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

Bộ dữ liệu bao gồm thông tin của hơn 100,000 bài hát được lấy từ Zing MP3

Hinh 2.6 Hinh minh hoa dir liéu bai hat

2.3.3.3 Xây dung Content-Based Recommender System

Nhóm xây dựng hệ thống gợi ý, Recommender System, áp dụng thuật toán LocalitySensitive Hashing bằng cách áp dụng thư viện MinHashLSH và MinHash của datasketch

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

Ở đây, nhóm chúng em sẽ test bài hát có ID là ZW6WCW76, thông tin cụ thé của bài hát

đó là

21

Trang 35

Thì các bài hát sau sẽ được recommend:

encode_ id

ZWZ9ZWEF Anh Đã Hiểu Tinh Em[ ' TWZ9Z081 ', "IWZ9Z088', 'I

ZW6WCW77 Con Trai[ 'TWZ9Z081 ', 'IWZ9Z088', 'TWZ97FCD' ]

ZW6W89F6 Giấu[ ' TIZ97Z081 ' , ‘1WZ9Z088', 'TWZ97FCD' |]

ZIl6WCW66 Giấu[ ' TuZ9Z08T ' , ‘1WZ9Z088', 'TWZ97FCD' |]

ZWZ9ZWFO Binh Yên Từ Trai Tim Tôi[ 'TWZ9708T' 'TWZ9Z088

ZW6UCC9B Anh Van Nhớ EmL'IWZ9Z08I', 'TWZ9Z08 ; "TMZĐUTE

ZMW7B8EZZ Con Gái[ 'TWZ9Z081 ', 'TwZ9Z08s', 'TWZ97FCD' ]

ZW6WCW68 Em Đúng Tôi Không Sail'IWZ9Z08I', 'IwZ9Z088',

ZW6UCWG6I Bui Phan[ 'TuiZ9Z081 ' , TIWZ9Z888', 'TWZ97FCD' ]

Hình 2.8 Danh sách các bài hát được recommend

Như có thé thay ở đây, tất cả bài hát được recommend đều có chứa các genre ID

[“IWZ908T’, “IWZ9088”, “IWZ97FCD”’].

2.3.4 Thuật toán Neighbor-based Collaborative Filtering

Ý tưởng của Neighbor-based Collaborative Filtering (NBCF) là xác định sự tương quancủa một user tới một item dựa trên các users khác gần giống với user này Sự tương quangiữa các users có thê xác định thông qua mức độ quan tâm của các users này tới các itemskhác mà hệ thống đã biết Vi dụ, Quân và Thịnh đều thích nghe bài Thay Chưa của Ngọt,Thịnh thích bài Em Không của Vũ Thanh Vân, nên nhiều khả năng Quân cũng thích bài

hát này.

Từ đó, ta đặt ra hai câu hỏi quan trọng nhất trong hệ thống Neighborhood-based

Collaborative Filtering:

® Làm thê nào xác định được su giông nhau giữa hai users?

® Khi đã xác định được các users gân giông nhau (similar users) rôi, làm thé nao

dự đoán được mức độ quan tâm của một user lên một item?

Việc xác định mức độ quan tâm của mỗi user tới một item dựa trên mức độ quan tâm

cua similar users tới item đó còn được gọi là User-user collaborative filtering Có một

hướng tiếp cận khác được cho là làm việc hiệu quả hơn là Item-item collaborative filtering

22

Trang 36

Trong hướng tiép cận nay, thay vì xác định user similarities, hệ thông sẽ xác định item

similarities Từ đó, hệ thông gợi ý những items gân giông với những items mà user có mức

độ quan tâm cao.

Trong đề tài này, nhóm chúng em sẽ làm theo hướng User-user collaborative filtering.

2.3.5 Các thành phần chính trong thuật toán

Đề có thé sử dụng ma trận này vào việc tính toán, chúng ta cần thay những dấu ‘?’ bởi một

giá trị Đơn giản nhất thì chúng ta có thê thay vào đó giá trị “0° Hoặc dùng một giá trị khác

là ‘2.5’ — giá trị trung bình giữa 0 và 5 Tuy nhiên, những cách này không thực sự tốt vinhững giá trị này sẽ hạn chế với những users dễ tính hoặc khó tính Với những users dễ

23

Trang 37

tính, thích tương ứng với 5 sao, không thích sẽ ít sao hơn, như 2 hoặc 3 sao Khi đó, “2.5”

sẽ làm những đánh giá không thích sẽ trở thành negative Ngược lại, với những user khó tính, họ thậm chí chỉ đánh 3 sao khi thích và dưới 3 khi không thích Vì vậy, hợp lý hơn

cả, chúng ta sẽ sử dung giá tri trung bình cộng ratings của moi user.

Cụ thể, chúng ta sẽ xử lý như sau:

Uj AS 25 4es/9 5 | 1,45 2bm/ 1.5 | 3.33

Hình 2.10 Utility matrix Y và giá tri ratings trung bình

Như trong hình vẽ, chúng ta có một ví dụ về ratings trung bình của mỗi users Tuy nhiên,thay vì trực tiếp sử dụng các giá trị này thay cho các dau ‘?’ của mỗi user Chúng ta sẽ trừratings của mỗi user cho giá trị trung bình ratings tương ứng của user đó và thay dấu ‘?’băng giá trị 0 Mục đích của cách xử lý này là:

Phân loại ratings thành 2 loại: giá tri 4m (user không thích item) và giá trị dương (user

thích item) Các giá trị băng 0, tương ứng với những item chưa được đánh giá

Số chiều của Utility matrix thường rất lớn, trong khi lượng ratings biết trước thường rấtnhỏ so với kích thước của toàn bộ ma trận Nếu thay dấu ‘?’ bằng ‘0’ thì chúng ta có thé

sử dụng sparce matrix, tức ma trận chỉ lưu các giá trị khác 0 và vi tri của giá trị đó Như

vậy, việc lưu trữ sẽ tối ưu hơn

24

Trang 38

Ma trận sau khi chuẩn hóa được gọi là Normalized Utility Matrix:

«Te fiasfas|« [fas

ta 25I-0.75| 0.5 |2.67| 1.5

la 25|-2.75| 1.5

b) Normalized utility matrix Y.

Hình 2.11 Normalized utility matrix

2.3.5.2 Similarity Function

Sau khi chuẩn hóa ma trận Utility, chúng ta cần tính toán độ tương đồng giữa các users

Xét tiếp ví dụ

Trong đó, có 7 users lần lượt là ul, u2, u3, u4, u5, u6 và 5 items lầm lượt là ¡1,12, 13, 14, i5.

Có thé quan sát thấy u0, ul đều thích ¡0 và không thích i3, ¡4lắm, còn các users khác thì

ngược lại.

Đặt mức độ giống nhau giữa hai user ui, uj là sim(ui, uj) Khi đó, một similarity function

tốt, cần đảm bảo:

sim (u0, ul)>sim(u0, ui), Vi>1.

Một số similarity function thường được sử dung là Cosine Similarity va Pearson Similarity

25

Trang 39

Ở trong đề tài này, tụi em sẽ sử dụng Cosine Similarity

ufua

1

cosine_similarity(ui,u;) = cos(u1,u2) =

|Iuilla ||ua|lz q)

Trong đó uj là vectors tương ứng với user1, 2 đã được chuẩn hóa như ở trên

2.3.6 Ap dung Neighbor-based collaborative filtering vào đề tài

2.3.6.1 Luồng xử lý

Khi khởi chạy ứng dụng, hệ thống sẽ lựa chọn 10 bài hát được người dùng nghenhiều nhất Sau đó, hệ thống sẽ gửi trực tiếp những ID bài hát này đến RecommenderSystem Tại đây, Recommender System sẽ tiễn hành generate ra một playlist chứa danh

sách các bài hát mà người dùng có thể sẽ thích nghe dựa vào bộ dữ liệu đã được train.

Ví dụ: Sau khi chọn ra danh sách top 10 bài hát người dung nghe nhiều nhất bao gồm

[ZW9CCC8C, ZW7WBZA7, ZW9C967U, ZW66FII9, ZWA7CE0B, ZWZD9DCB, ZW7IUAG6E, ZO6EIB7B, ZOUBADAF, ZW807CUD]

http://127.0.0.1:5000/generated_recommend_playlist

Authorization Headers (8) Body Pre-request Script Tests Settings Cookies

(@) Heads up! These parameters hold sensitive data To keep this data secure while working in a x

collaborative environment, we recommend using variables Learn more about variables 2

Trang 40

Hệ thống sẽ tạo ra một playlist bao gồm các bài hát [Z6UBADAF, ZW7OCEOE,

ZO6EIB7B, ZWZD9DCB, ZW8W777E, ZW7IUA6E, ZWA7CE0B, ZW807CUD, ZW9CFDU9, ZW6CZ0OW]

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

Bộ dữ liệu sẽ được lay từ lịch sử nghe nhac cua các users trong database

Z6UCWZUD Z6UFF9Z6 ZZAAZBZE ZZIIZTFC

ZU6E7O

›/63a63f32bb9d71460 Z7W9CFDU9

32bb9d71460 EU80WO

ZW7O8W7U ZWADO97U

Hình 2.13 Hình minh hoa dữ liệu nghe

Nhóm đã sử dụng thư viện như numpy, pandas, seaborn, matplotlib.pyplot, để xử lý dữ

liệu, visualize data.

27

Ngày đăng: 02/10/2024, 04:37

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN