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