本文簡要介紹我做的基於深度學習的音樂推薦系統。主要從需求分析與設計實現的角度來進行介紹。
(一)需求分析
基於深度學習的音樂推薦系統旨在以個性化音樂推薦模型爲基礎,使用B/S架構的形式實現。個性化推薦模型使用了 隨機梯度下降(SGD)、 K近鄰分類算法(KNN)、協同過濾等傳統機器學習領域算法進行音樂推薦的,同時使用了類似於Word2vec的詞袋模型和詞向量模型來對歌詞進行文本處理,構建了異構文本網絡,來標識用戶的歌曲偏好,然後在此基礎上引入了一個Java方面深度學習庫deepLearning4j來實現對音樂特徵提取,對音樂進行標籤化,分爲古典、流行等類別。可參考來進行混合推薦的。在本系統中,用戶可以瀏覽音樂,還可以收藏音樂,同時還能爲所喜愛的音樂點贊,同時還可以進行登錄和註冊。管理員除了可以實現普通用戶所實現的功能外,還可以進行音樂、評論、用戶的管理。系統通過隱式收集用戶操作記錄向用戶推薦個性化的音樂,與此同時,該系統還具有排行榜、熱歌推薦等普通音樂網站所具有的功能,其中排行榜分爲日榜和月榜,熱歌推薦是根據當天用戶點擊量最高的50首歌曲進行推薦給用戶的。
模塊名 | 功能描述 |
---|---|
用戶管理 | 用戶註冊、登錄,收藏、評論、點贊,瀏覽歷史記錄,搜索音樂,播放控制音樂,下載 |
管理員管理 | 對用戶的查找、刪除;對音樂的上傳,對評論的查詢、刪除;對歌曲的查詢、刪除; |
個性化推薦 | 通過協同過濾推薦算法對用戶進行操作數據的收集,從而對用戶進行音樂推薦;通過用戶播放歌曲的歌詞作爲分析數據結合深度學習領域相關算法對用戶進行歌曲推薦 |
排行榜 | 分爲日榜和月榜,分別爲當日和當月播放量最高的歌曲推薦 |
熱歌推薦 | 對播放量、用戶評論量等數據進行綜合分析,得出一些熱門歌曲推薦給用戶 |
(二)概要設計
1、系統架構
本系統採用MVC模式作爲架構,其中使用了MyBatis來作爲數據持久化框架,進行數據庫數據的映射。同時前端採用了JSP、JavaScript、CSS來進行開發,後端採用SSM框架來進行開發,該框架爲當前企業中較爲流行的一種框架。
2、系統總體設計圖
3、數據庫設計
數據庫方面我主要設計了11個表,分別是歌曲收藏表、歌曲下載記錄表、用戶點贊表、音樂播放記錄表、歌曲推薦表a、歌曲推薦表b、歌曲評論表、用戶角色表、音樂詳情表、用戶信息表、用戶角色表。下面是數據庫關係圖。
(三)詳細設計
1、所用技術
開發 | 具體實現所用技術 |
---|---|
數據庫 | MYSQL、Navicat for MySql |
前端 | Bootstrap、jsp |
後端 | IDEA、SSM框架 |
個性化推薦模型 | 傳統機器學習算法(KNN等)、詞向量模型、java_tensorflow_music深度學習開源模型 |
需求、概要設計 | processOn、xmind |
架構 | b/s架構 |
設計模式 | mvc |
軟件測試 | Junit、apache-jmeter-3.2 |
應用服務器 | tomcat7.0 |
2、具體模塊設計
(1)用戶註冊模塊
(2)用戶登錄模塊
(3)管理員管理模塊
(4)音樂播放模塊
(5)歌曲排行榜模塊
(6)個性化音樂推薦模塊模塊
(五)實現
已經將完整項目上傳github,可參考:基於深度學習的音樂推薦系統