Việc khuyến nghị âm nhạc với Spotify và Machine Learning là một điều khá hợp thời khi người dùng có thể nghe những bài nhạc mới có nội dung, cảm xúc tương tự với những bào nhạc mà họ yêu
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO CUỐI KỲ
MÔN: ĐỒ ÁN 2
ĐỀ TÀI:
KHUYẾN NGHỊ ÂM NHẠC VỚI SPOTIFY VÀ MACHINE LEARNING
Giảng viên hướng dẫn: MAI TRỌNG KHANG
Sinh viên thực hiện:
- HUỲNH QUỐC AN – 17520207
- NGUYỄN ĐỨC MINH NGUYÊN - 17520823
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 3………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4MỤC LỤC
LỜI CẢM ƠN 5
TỔNG QUAN ĐỀ TÀI 6
CHƯƠNG 1: GIỚI THIỆU VỀ SPOTIFY 7
1.1 Spotify là gì? 7
1.2 Spotify api 7
1.3 Khuyến nghị âm nhạc với Spotify 8
CHƯƠNG 2: GIỚI THIỆU VỀ MACHINE LEARNING 9
2.1 Machine Learning là gì? 9
a Học có giám sát (Supervised Learning): 9
b Học không giám sát (Unsupervised Learning): 9
c Học bán giám sát (Semi-Supervised Learning) 10
d Học củng cố (Reinforcement Learning) 10
2.2 Mạng nơ-ron nhân tạo là gì? 10
a Khái niệm 10
b Cách hoạt động 11
c Huấn luyện mạng nơ-ron 11
CHƯƠNG 3: QUÁ TRÌNH THỰC HIỆN 12
3.1 Tạo cơ sở dữ liệu trong máy 12
a Công nghệ sử dụng 12
b Các bước thực hiện 12
3.2 Huấn luyện máy học 17
CHƯƠNG 4: KẾT LUẬN 18
TÀI LIỆU THAM KHẢO 19
Trang 5LỜI CẢM ƠN
Trước tiên, nhóm xin được gửi lời cảm ơn và lòng biết ơn sâu sắc tới Thầy Mai
Trọng Khang, người đã tận tình chỉ bảo, hướng dẫn và giải đáp các thắc mắc để
nhóm có thể hoàn thiện bài báo cáo
Sinh viên Huỳnh Quốc An Nguyễn Đức Minh Nguyêm
Trang 6TỔNG QUAN ĐỀ TÀI
Với sự phát triển không ngừng của công nghệ thông tin, việc ứng dụng công nghệ thông tin trong các ngành giải trí ngày càng được quan tâm và triển khai hiệu quả Việc khuyến nghị âm nhạc với Spotify và Machine Learning là một điều khá hợp thời khi người dùng có thể nghe những bài nhạc mới có nội dung, cảm xúc tương
tự với những bào nhạc mà họ yêu thích và nghe thường xuyên
Sự ra đời của Machine Learning là một bước phát triển lớn đối với ngành công nghệ thông tin Machine Learning nhanh chóng được các nhà phát triển trên khắp thế giới sử dụng vào sản phẩm của mình, nhờ đó có thể tạo ra những sản phẩm có tính cá nhân hoá cao
Hiện nay, thị trường có rất nhiều ứng dụng nghe nhạc có tích hợp công nghệ khuyến nghị âm nhạc với Machine Learning như Apple Music, Shazam, Spotify,…
và trong số những ứng dụng đó, các nhà phát triển còn tạo riêng bộ thư viện để chia
sẻ kho dữ liệu âm nhạc khổng lồ của họ Spotify là một trong số các nhà phát triển
đó Do vậy, nhóm em chọn Spotify để sử dụng kho dữ liệu ấy với mục đích khuyến nghị âm nhạc với Machine Learning
Trang 7CHƯƠNG 1: GIỚI THIỆU VỀ SPOTIFY
1.1 Spotify là gì?
Spotify là một ứng dụng quản lý âm nhạc trực tuyến, cho phép người dùng truy cập
đến hàng triệu bài hát và những nội dung khác từ các nghệ sĩ trên khắp thế giới
Các chức năng cơ bản như nghe nhạc là hoàn toàn miễn phí, nhưng người dùng cũng
có thể nâng cấp lên Spotify Premium Tài khoản Free hay Premium đều có thể:
o Chọn bài hát với chức năng Duyệt và Tìm kiếm
o Sử dụng những bài hát được khuyến nghị từ chức năng được cá nhân hoá,
như Khám phá hàng tuần, Vừa ra mắt, Ngẫu nhiên hàng ngày
o Xem bạn bè, nghệ sĩ hay người nổi tiếng đang nghe gì
o Xây dựng một bộ sưu tập nhạc cho chính mình
o Tạo một Trạm Radio cho bản thân
Spotify có mặt trên nhiều loại thiết bị, bao gồm máy tính, điện thoại, máy tính bảng,
loa, TV, và cả xe hơi, người dùng có thể dễ dàng chuyển đổi giữa các loại thiết bị
với Spotify Connect
1.2 Spotify api
- Spotify api là bộ công cụ dành cho nhà phát triển được tạo ra bởi Spotify giúp các nhà phát triển khác có thể truy cập đến kho dữ liệu của Spotify
- Spotify api có các chức năng:
o Audio Features & Analysis: Giúp người dùng lấy được các thông tin của một bài nhạc, ví dụ như: năng lượng, khả năng nhảy, tâm trạng, thuộc tính, bối cảnh, phân đoạn,
o Playback: Cho phép các lập trình viên chơi nhạc từ Spotify trực tiếp trên ứng dụng của họ trên các nền tảng web, mobile
o Recommendations: Tùy biến và sử dụng nguồn lực của Spotify để khuyến nghị những bài nhạc dựa trên sở thích của người dùng
o Search: Tìm kiếm các bản nhạc dựa theo tên, tác giả, album,
Playlist: Quản lý danh sách phát của người dùng ngay trên ứng dụng
o Metadata: Truy cập thông tin của bất kỳ bài nhạc, nghệ sĩ, album,
o Curated content: Phát những bài nhạc được dành riêng cho từng thị trường
Trang 8o User taste: Lấy dữ liệu về thị hiếu nghe nhạc của người dùng trên Spotify
o Ví dụ:
▪ Chức năng Duyệt bài hát:
1.3 Khuyến nghị âm nhạc với Spotify
Hệ thống khuyến nghị âm nhạc của Spotify cung cấp các gợi ý cho người dùng dựa trên lịch sử tương tác của họ (nghe/chuyển bài/thêm vào playlist), thuộc tính của bài hát/nghệ sĩ mà họ nghe và sở thích của những người dùng có vẻ “tương tự”
Trong khi một số dịch vụ nghe nhạc khác dùng các thẻ để phân loại nhạc, Spotify sử dụng Deep Learning để tự động hoá các quá trình và xác nhận các mẫu ẩn giữa nghệ sĩ, thể loại và sở thích người dùng
Spotify áp dụng ba mô hình khuyến nghị:
o Lọc cộng tác: Sử dụng hành vi của người dùng này và của những người dùng tương tự khác
o Xử lý ngôn ngữ tự nhiên: Dành cho lời bài hát, playlist, blog posts, các bình luận trên truyền thông xã hội
o Mô hình âm thanh: Được dùng trên âm thanh thô
Trang 9CHƯƠNG 2: GIỚI THIỆU VỀ MACHINE LEARNING
2.1 Machine Learning là gì?
- Machine Learning là một tập con của Trí tuệ Nhân tạo (Artificial Intellingence AI)
- Nói đơn giản, Machine Learning là một lĩnh vực nhỏ của Khoa học Máy tính,
nó có khả năng tự học hỏi dựa trên sữ liệu được đưa vào mà không cần phải được lập trình cụ thể
- Phương thức học của Machine Learning được chia làm hai loại: Học có giám sát (Supervised Learning) và Học không giám sát (Unsupervised Learning)
a Học có giám sát (Supervised Learning):
• Supervised Learning là thuật toán dự đoán đầu ra (outcome) của một dữ
liệu mới (input) dựa trên các cặp input-outcome đã biết từ trước Cặp dữ liệu này còn được gọi là data-label, hay dữ liệu-nhãn
• Supervised Learning là nhóm phổ biến nhất trong các thuật toán Machine Learning
• Được chia làm hai loại nhỏ:
o Classification (Phân loại): Một bài toán được gọi là classification
nếu các label của input data được chia thành một số hữu hạn nhóm
Ví dụ: Gmail xác định xem một email có phải là spam hay không; các hãng tín dụng xác định xem một khách hàng có khả năng thanh toán nợ hay không
o Regression (Hồi quy): Một bài toán được gọi là regression nếu label
không được chia thành các nhóm mà là một giá trị thực cụ thể Ví
dụ: Một căn nhà rộng x m2, có y phòng ngủ và cách trung tâm thành phố z km sẽ có giá là bao nhiêu?
b Học không giám sát (Unsupervised Learning):
• Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ
có dữ liệu đầu vào Thuật toán unsupervised learning sẽ dựa vào cấu trúc
dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm (clusstering) hoặc giảm số chiều của dữ liệu (dimmension reduction) để thuận tiện trong việc lưu trữ và tính toán
• Trong toán học, Học không giám sát là khi chúng ta chỉ có dữ liệu vào X
mà không biết nhãn Y tương ứng
Trang 10• Được chia làm hai loại nhỏ:
o Clusstering (Phân nhóm): Một bài toán phân nhóm toàn bộ dữ liệu
X thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm Ví dụ: Phân nhóm khách hàng dựa trên hành vi mua sắm
o Association (Kết hợp): Là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên những dữ liệu cho trước Ví dụ: Những khách hàng nam mua quần áo thường có xu hướng mua thêm đồng hồ hoặc thắt lưng
c Học bán giám sát (Semi-Supervised Learning)
• Các bài toán khi chúng ta có một lượng lớn dữ liệu X nhưng chỉ một phần trong chúng được gán nhãn được gọi là Semi-Supervised Learning Những bài toán thuộc nhóm này nằm giữa hai nhóm được nêu bên trên
d Học củng cố (Reinforcement Learning)
• Reinforcement learning là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the performance) Hiện tại, Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò Chơi (Game Theory), các thuật toán cần xác định nước
đi tiếp theo để đạt được điểm số cao nhất
2.2 Mạng nơ-ron nhân tạo là gì?
a Khái niệm
- Mạng nơ-ron nhân tạo có thể coi là một phương thức để miêu tả cách hoạt động trong bộ não con người
- Nói một cách đơn giản, mạng nơ-ron là một hàm nhận một đầu vào x, xử lý
nó và đưa ra một đầu ra y tương ứng
- Mạng nơ-ron gồm các thành phần:
o Một lớp biểu diễn đầu vào x
o Một số lượng các lớp ẩn
o Một lớp biểu diễn đầu ra y
o Một bộ các chỉ số weights(W) và bias(b) giữa các lớp
o Một hàm kích hoạt giữa các lớp
Trang 11b Cách hoạt động
Các nơ-ron được nhóm vào ba loại layers khác nhau:
- Input layer nhận các dữ liệu đầu vào
- Hidden layer thực hiện các phép tính toán cho các đầu vào Thử thách lớn nhất trong việc tạo mạng nơ-ron là quyết định số lượng các hidden layer, cũng như
số nơ-ron cho mỗi layer
- Output layer trả dữ liệu đầu ra
c Huấn luyện mạng nơ-ron
- Để huấn luyện một mạng nơ-ron, cần có:
o Lượng lớn tập dữ liệu (data set)
o Một máy tính mạnh để tính toán
- Để huấn luyện AI, chúng ta cần đưa các dữ liệu đầu vào từ tập dữ liệu, sau đó
so sánh với đầu ra của nó với đầu ra của tập dữ liệu mẫu Khi AI chưa được huấn luyện, đầu ra của nó có thể bị sai
- Khi đã hoàn thành với tập dữ liệu, ta có thể tạo một hàm hiển thị độ sai của đầu ra của AI so với đầu ra thực tế Hàm này được gọi là Cost Function
- Hiểu đơn giản, ta muốn Cost Function sẽ trả về 0, khi đó đầu ra của AI cũng
sẽ giống với đầu ra thực tế từ tập dữ liệu
Trang 12CHƯƠNG 3: QUÁ TRÌNH THỰC HIỆN
a Công nghệ sử dụng
- Đồ án này sử dụng các công nghệ sau:
o Framework React, ngôn ngữ ReactJS
o HTML, CSS
b Các bước thực hiện
- Truy cập developer.spotify.com/dashboard để đăng nhập hoặc tạo tài khoản
- Tạo project, điền các mục
- Sau khi tạo xong, nhấn vào project, ta lấy được hai dữ liệu ClientID và ClientSecret
- Tạo hàm Credentials để chứa hai dữ liệu vừa có
- Sử dụng UseEffect để gọi API getToken Sau khi API response (tokenResponse) thì sẽ lấy để gọi API Genres, kết quả trả về là một danh sách Genres
Trang 13- Ảnh demo
- Khi có được listOfPlaylistFromAPI, button Search được tạo ra để lấy danh sách bài hát API Tracks có thể lấy tối đa 100 bài mỗi lần
Trang 14- Dưới hình là danh sách bài hát được hiển thị
- Hàm listboxChecked có chức năng khi ta nhấn vào một bài hát thì nó sẽ hiện
ra thông tin của bài hát đó, như ảnh, tên ca sĩ, tên bài hát
Trang 15- Sử dụng thư viện CSVLink để download dữ liệu
- Để xuất data ra file excel, dùng lệnh Excel.listExcel
• Một số hình ảnh minh hoạ cách tạo dữ liệu
Trang 173.2 Huấn luyện máy học
Trang 18CHƯƠNG 4: KẾT LUẬN
Nhu cầu về sử dụng Machine Learning cho việc phát triển phần mềm mang tính cá nhân hoá cao được sử dụng ngày càng nhiều Khuyến nghị âm nhạc với Machine Learning là điều không thể thiếu đối với những nhà phát triển âm nhạc, nó làm cho người dùng dễ dàng tìm được những bài hát đúng với sở thích, tâm trạng của mình
Đồ án này đã giúp nhóm em tiếp cận gần hơn với công nghệ Machine Learning, thực hiện việc áp dụng Machine Learning vào ứng dụng khuyến nghị âm nhạc dễ dàng hơn
Đồ án đã đạt được những kết quả sau:
- Tìm hiểu được vai trò, ý nghĩa của Machine Learning trong khuyến nghị âm nhạc
- Tìm hiểu được cách Machine Learning đưa ra kết quả sau một loạt các thuật toán
- Áp dụng được vào việc khuyến nghị âm nhạc sử dụng Spotify API
Do thời gian và kiến thức có hạn của nhóm nên đồ án còn nhiều thiếu sót Những thiếu sót này sẽ được khắc phục và hoàn thiện trong tương lai
Trang 19TÀI LIỆU THAM KHẢO
https://machinelearningcoban.com/2016/12/26/introduce/
https://machinelearningcoban.com/2016/12/27/categories/
https://loda.me/huong-dan-chi-tiet-tu-xay-dung-mot-mang-neural-voi-python-loda1551933570178/
https://www.youtube.com/watch?v=jLCdPnig84Q
https://developer.spotify.com/documentation/web-api/reference/
https://viblo.asia/p/export-du-lieu-ra-excel-trong-ung-dung-react-Qpmleo9VKrd