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 2LỜ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 3DE 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 42.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 5BAAS Đă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 66.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 76.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 86.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 9DANH 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 10Hì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 11DANH 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 12Bả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 13DANH MỤC TU VIET TAT
MVC Model View Controller
AI Artificial Intelligence
ML Machine Learning
API Application Programming Interface BloC Business Logic Component
Trang 14TÓ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 16e 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 18Xâ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 20NỘ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 211.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 23Flutter 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 24Ngoà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 25Python, 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 26MongoDB 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 27Vo 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 28Dynamic 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 29Bả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 30hẹ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 331 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 35Thì 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 36Trong 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 37tí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 38Ma 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 40Hệ 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