楊建 劉磊 康欣欣

摘要:個性化推薦是音樂推薦系統的核心功能。文章基于用戶行為和音頻特征設計了音樂推薦系統,以期達到系統推薦歌曲與用戶音樂偏好完美匹配的效果。文章首先介紹了系統開發環境和整體組成架構,該系統由用戶模塊、用戶行為模塊、推薦模塊構成,并對各模塊功能的設計與實現方式展開了分析。在個性推薦模塊,使用了基于用戶社區的快速組推薦算法和音樂特征識別技術,保證了推薦結果更加符合用戶的音樂偏好,提高了音樂推薦系統的應用效果。
關鍵詞:音樂推薦系統;用戶行為;音頻特征;SQL語句
中圖分類號:TP311.1
文獻標志碼:A
0 引言
目前多數音樂軟件支持音樂推薦功能,能夠根據用戶在該軟件的歷史記錄,預測用戶的音樂偏好,然后從音樂庫中選擇相似的歌曲并自動生成推薦列表,展示在音樂軟件的首頁。不同音樂軟件的歌曲推薦原理存在差異,例如Spotify音樂平臺是基于音樂體裁標簽的方式,根據用戶收聽過的歌曲,選擇具有相同或相似體裁標簽的歌曲進行推薦。這導致推薦列表里的歌曲音樂風格單一化,用戶容易產生厭倦。因此,設計音樂推薦系統時,必須綜合考慮用戶行為和音頻特征,以保證音樂推薦系統可以向用戶推薦更具個性化的音樂歌單,滿足用戶的音樂收聽需求。
1 基于用戶行為和音頻特征的音樂推薦系統設計
1.1 系統開發環境
本文設計的音樂推薦系統前端基于Layui開發,后端基于Java web開發,使用Python為推進服務提供API。使用到的開發工具有Pycharm v2020.2、HBuilder X2.8;開發環境如下。
CPU:inter i5-3470;
內存:16 GB;
硬盤:512 GB;
數據庫:MySQL5.7;
軟件開發系統:JDK1.8;
開發語言:Python3.7。
1.2 系統整體架構
該系統主要分為3個模塊,分別是用戶模塊、用戶行為模塊及推薦模塊。用戶模塊提供用戶注冊、登錄等基本功能;用戶行為模塊可記錄用戶播放、點贊、收藏等操作行為;推薦模塊可根據用戶行為分析結果推薦歌曲。該音樂推薦系統的智能推進功能是基于用戶行為和音頻特征實現,具體流程如下。
(1)系統獲取用戶的社交信息,計算用戶的相似度,將相似度超過90%的用戶歸入一個社區。同一社區內的用戶,音樂偏好基本相同,能夠減少spark平臺的數據處理時間,加快向用戶推薦音樂的速度。
(2)系統獲取用戶日常的收聽、點贊、收藏等操作行為,并根據聽過、點贊、收藏的歌曲,提取音頻特征。通過深度學習算法和大量的樣本訓練,可以向用戶精準推送個性化的音樂[1]。
在UI界面上,首次使用該系統的用戶可以進行注冊;已注冊的用戶可輸入賬號、密碼登錄。成功登錄后,在首頁有系統推薦的音樂,并可對喜歡的音樂進行點贊、收藏等操作。在數據處理層,該系統會根據用戶在前端的操作行為,以及用戶的社區信息進行精準畫像,更新推薦信息,并將新的音樂列表重新在前端展示。在數據存儲層,該系統會將用戶的各種行為信息保存起來,作為深度學習的樣本,整個流程如圖1所示。
1.3 系統數據庫
本文設計的音樂推薦系統包含兩個數據塊,即用戶數據庫、音樂數據庫。其中,用戶數據庫主要存儲用戶個人信息、交互行為,并以列表形式分別存儲。在用戶數據庫中可創建的列表類型有用戶信息表、播放記錄表、音樂推薦表等。用戶信息表主要存儲用戶注冊時填寫的個人信息,如姓名、性別、年齡等。
播放記錄表主要存儲用戶收聽過的歌曲,包括歌曲名、歌曲時間、收聽次數等;音樂推薦表主要存儲用戶每次獲得的推薦結果。音樂數據庫只包含音樂數據表,支持音樂數據的存儲、讀取等操作。
2 音樂推薦系統各功能模塊的設計與實現
2.1 用戶模塊的設計與實現
音樂推薦系統的用戶模塊可實現的功能有用戶注冊、用戶登錄、設置音樂偏好、查看最近收聽、點贊記錄和獲得每日推薦等。本文在設計用戶模塊時,使用多種函數實現上述功能。例如,findLongin()函數可在用戶提交賬號與密碼后,判斷系統后臺是否有該賬戶的記錄;getValidateCode()函數可生成由字母和數字組合的4位驗證碼;Insert()函數可將用戶注冊時提交的用戶名、密碼、手機號、電子郵箱等信息插入數據庫[2]。
為提高系統的響應速度,本文在設計用戶登錄模塊時,加入了一個事件監聽器onClick(),用于監聽用戶是否進行了登錄操作;當用戶在UI界面上輸入用戶名與密碼,并點擊“登錄”按鈕后,以post方法將提交的信息作為請求,發送給服務器。服務器接收該請求后,利用findLogin()函數將用戶輸入信息與數據庫存儲信息進行對比,兩者匹配則成功登錄,并跳轉至音樂推薦系統的主界面;兩者不匹配,則給出錯誤提示,并重置登錄界面。
2.2 用戶行為記錄的設計與實現
本文在設計音樂推薦系統時,以用戶的行為習慣代替用戶對歌曲的評價。假設用戶多次搜索、收聽某歌手的歌曲,則認為用戶喜歡此歌手或此歌曲的概率較大。為保證系統預測的準確性,需采集用戶的收聽、點贊、收藏等信息,并將上述信息按照發生時間的先后順序填入用戶交互數據表[3]。在用戶點擊聽歌記錄或打開收藏模塊時,系統會通過數據交互表檢索用戶ID對應的數據。該系統使用SQL語句實現用戶收聽、點贊、收藏等操作記錄的查詢。
對于用戶收聽行為的記錄方法,只需要在前端的音樂列表中添加一個SetOnItem()監聽事件,即可記錄已經登錄系統的用戶是否點擊某首歌曲,如果存在點擊行為,則認為用戶存在收聽行為。此外,對于用戶的歌曲收藏與點贊等行為,則使用UserId2songIdCollectionMap()函數進行記錄。假設用戶已收聽過某歌曲,則對該歌曲添加標記,并將用戶交互表中的行為分數設定為1;當今后用戶再次收聽該歌曲后,將行為分數加1。行為分數越高,說明用戶對這首歌曲越喜愛,則音樂推薦系統可以挑選同一歌手或相同風格的歌曲進行個性化推薦。
2.3 推薦功能的設計與實現
本文設計的音樂推薦系統,其推薦模塊由兩部分組成,即“猜你喜歡”和“每日推薦”。子模塊的設計與實現方法如下。
(1)猜你喜歡模塊。在設計該模塊時,使用基于用戶社區的快速推薦算法。首先,以用戶提交的個人信息,以及已經掌握的用戶音樂收聽偏好等,對用戶進行社區劃分[4]。經劃分,可保證同一個社區中所有用戶的音樂偏好具有高度的相似性。其次,導入相關數據后開始離線訓練,根據訓練結果得到RelationLearning數學模型。最后,利用該數學模型,對音樂庫中的歌曲進行評分,并按照從高到低的順序排列,將排名前20的歌曲添加至推薦列表,展示到音樂推薦系統UI界面上的“猜你喜歡”模塊。
這種基于用戶社區的組推薦模式,首先要判斷數據庫中是否有用戶的歷史收聽記錄。如果沒有,則可以直接根據用戶注冊時提交的信息作為社區劃分的依據;如果有少量的歷史記錄,則需要采取以下處理措施:首先,調用初始化函數UserService.getAllRecords()對歌曲推薦列表做初始化處理。其次,使用RecordLikeService()等函數,分別獲取用戶的點贊、收聽、收藏等行為數據,并根據點贊數、收藏數、播放數等計算出用戶行為分數。最后,使用組推薦算法Communitygroupree()劃分社區。
(2)每日推薦模塊。系統需要從用戶個人信息與音樂特征中精準獲取用戶的偏好或需求。將用戶的收聽、點贊、收藏等行為記錄作為輸入信息,輸入到RelationLearning模型中進行深度學習訓練。訓練次數為500次,完成訓練后生成訓練文件。系統讀取文件,并獲取待選歌曲的預測分數,按照分數從高到低的順序添加到數據庫的推薦列表中。將推薦結果顯示到前端,當用戶登錄系統后,即可在UI界面上獲取每日推薦歌曲[5]。隨著用戶收聽歌曲的數量增多,以及點贊數、收藏數增多,音樂推薦系統的“每日推薦”也會更加符合用戶的音樂偏好。
需注意,如果音樂推薦系統的訪問量較大,數據較為集中,可能會因為服務器的處理能力有限而導致系統的延遲響應明顯,無法做到及時推薦。為解決這一問題,系統會選擇訪問量較小的時間段(如凌晨)更新用戶數據、進行歌曲推薦。
3 結語
調查分析當前的主流音樂推薦系統發現,多數系統在向用戶推薦歌曲時,只考慮用戶對音樂的評分。相較于新用戶,或者是收聽記錄較少的用戶,由于其評分的歌曲數量較少,系統無法準確掌握用戶的音樂偏好,無法做到精準推薦。本文將用戶行為與音樂特征結合起來,并通過劃分用戶社區的方式,借助于組推薦算法和深度學習訓練,捕捉用戶與音樂之間的特征,可以做到個性化、精準化推薦,推薦的歌曲能夠與用戶的音樂偏好有較高匹配度。隨著用戶使用時間的延長、收聽歌曲數量的增加,推薦結果的精確性會不斷提升,對增加用戶與音樂推薦系統的黏性有積極幫助。
參考文獻
[1]田杰,胡秋霞,司佳豪.基于深度信念網絡DBN的音樂推薦系統設計[J].電子設計工程,2021(23):5-7.
[2]史愛武,李險貴.基于Spark和微服務架構的電影推薦系統設計與實現[J].電腦知識與技術:學術版,2021(8):117-119.
[3]張利鴿.基于用戶興趣偏好度的音樂智能推薦系統設計分析[J].電子設計工程,2022(11):30-32.
[4]周歡,李宏濱.融合時間信息的音樂推薦算法研究[J].信息記錄材料,2022(9):123-125.
[5]黃川林,魯艷霞.基于協同過濾和標簽的混合音樂推薦算法研究[J].軟件工程,2021(7):18-20.
(編輯 李春燕)
Design and implementation of music recommendation system based on user behavior and audio characteristics
Yang Jian, Liu Lei, Kang Xinxin
(Xian Conservatory of Music, Xian 710061, China)
Abstract: Personalized recommendation is the core function of music recommendation system. This paper designs a music recommendation system based on user behavior and audio characteristics, in order to achieve a perfect match between the systems recommended songs and users music preferences. This paper first introduces the system development environment and the overall structure, the system is composed of user module, user behavior module, recommendation module, and analyzes the design and implementation of each module function. In the personalized recommendation module, the fast group recommendation algorithm based on user community and music feature recognition technology are used to ensure that the recommendation results are more in line with the users music preference, and improve the application effect of the music recommendation system.
Key words: music recommendation system; user behavior; audio characteristics; SQL statement