◆李浩瑞
基于深度學習的相聲推薦系統
◆李浩瑞
(太原理工大學 軟件學院 山西 030600)
隨著互聯網的快速發展,根據用戶個性化的情感推薦成為至關重要的問題,全文以相聲為例進行設計,作為音頻資源重要組成之一的相聲,其資源數量越來越龐大,但卻十分分散。目前網上專門做相聲智能推薦系統的網站較為少見,設計相聲個性化推薦系統刻不容緩。本文設計了一個相聲智能推薦系統。系統采用Python語言,使用Web重量級框架Django的MTV設計模式和B/S開發模式。本系統包含用戶標識模塊、相聲爬取模塊、相聲展示板塊、相聲收藏模塊以及相聲推薦模塊設計。系統大量的相聲資源是利用網絡爬蟲技術從喜馬拉雅等網站爬取所得,并存儲到MySQL數據庫,數據庫中的相聲資源按不同的類別展示在前端頁面。用戶可以用瀏覽器便可訪問系統,收聽自己喜歡的相聲,成功注冊也登錄的用戶還可以對自己喜歡的相聲進行收藏。本系統使用協調過濾算法,依據用戶的收藏列表計算用戶喜歡的相聲類別,并在數據庫中進行匹配,將相似度較高的相聲推薦給用戶。本文利用爬蟲技術來爬取大量的相聲資源,并利用協同過濾算法為用戶推薦與其興趣愛好契合度較高的相聲,很大程度上節約了用戶時間,增加了網站系統的用戶黏性,能給企業帶來一定效益。
推薦系統;協同過濾;個性化服務;網絡爬蟲;相聲
隨著互聯網的快速發展,互聯網的相聲資源在不斷增多,相聲數據量不斷膨脹,每天都會有數以億計的數據涌現。隨著互聯網技術的不斷發展,個性化推薦也運用而生。但是,最初的自動推薦系統,只是會將時下熱門的、大眾都愛的或者能使公司獲得最大收益的產品推薦給用戶,并沒有針對每一個用戶進行分析給出推薦。這樣推薦的效果非常不理想。因此,人們希望有一種能向用戶自動推薦項目的系統和方法,并且這個系統基于用戶的偏好且對所推薦的產品進行屬性分析。這就是個性化推薦系統。
通過分析個性化推薦系統的目的,可以知道此類系統主要是為用戶服務。那么關注用戶成了必要,用戶使用系統會產生與用戶相關的信息,這些信息也是此類系統關注的重點。用戶產生的信息成了用戶和系統的紐帶,系統通過用戶產生的信息,為用戶推薦自己想要的信息。
但是目前網上專門做相聲智能推薦系統的網站非常少見,相聲資源數據量多但是非常分散。本項目旨在通過爬蟲獲取大量的相聲資源,通過把相聲歸類、排行等方式向人們推薦自己喜歡的相聲,方便人們聽取相聲。
2.1.1目標
本網站將設計用戶標識模塊、相聲爬取模塊、相聲展示模塊、相聲收藏模塊、相聲推薦模塊五個功能模塊,為每一個用戶推薦與其興趣愛好契合度較高的相聲,很大程度上節省用戶找相聲的時間,增加網站系統的用戶黏性,滿足用戶對于相聲的需求,同時能給企業帶來社會效益。
2.1.2運行環境
硬件環境:筆記本電腦;
操作系統:Windows操作系統
開發工具:JetBrainsPyCharm 2018.3.3 x64
數據庫:MySQL數據庫
2.1.3系統總體結構
本系統從互聯網上各大網站爬取大量相聲資源,經過數據重組和篩選,基于推薦算法得出推薦結果保存至數據庫中,并通過Django框架進行前端展示。本系統采用 B/S(瀏覽器/服務器)體系結構,用戶只需要瀏覽器,而不需要下載任何APP即可使用該系統。
通過前面的技術介紹與分析,可以得到相聲智能推薦系統設計所需的技術語言如下:
(1)Python:負責該系統數據處理邏輯的代碼編寫,將用戶的數據存儲到數據庫,又將生成的推薦結果展示到前端頁面。
(2)HTML5:進行前端頁面的開發。
(3)CSS3:美化前端頁面,特別是對相聲分類板塊做處理。
(4)jQuery:實現提交表單和首頁中的星星評分效果。
本系統采用MySQL數據庫,數據庫中包括用戶信息表、相聲屬性表、相聲收藏表表。下面將介紹主要的數據庫表的結構。
2.2.1用戶信息表
用戶信息表用來保存系統中注冊的每位用戶的信息,包括用戶的用戶名、密碼、年齡、生日、頭像五個字段,數據表的名字為t_user。
2.2.2相聲屬性表
相聲屬性表用來保存系統中的每個相聲的屬性,包括相聲的名稱、表演者、類型、音頻、播放量五個字段,數據表的名字為t_cross_talk。
2.2.3相聲收藏表
相聲收藏表用來保存系統中的每個用戶收藏的相聲,包括用戶的id和相聲的id這2個字段,數據表的名字為t_cross_talk_user。這個表里的數據就是推薦算法得出推薦結果的依據。算法只有遍歷這個數據表,才能計算出登錄用戶喜歡那些類型的相聲,從而給出推薦結果。
相聲智能推薦系統使用協同過濾算法,采用Django重量級 Web 框架設計并實現。包括了用戶標識模塊、相聲爬取模塊、相聲展示模塊、相聲收藏模塊和相聲推薦模塊。
首先用戶可以在不登錄狀態下進入系統歡迎界面后聽取自己喜歡的相聲,但是如果需要收藏相聲,則需要注冊、登錄。在注冊時需要輸入用戶名、密碼、年齡、生日和頭像,注冊成功后才可以登錄上系統。登錄時需要輸入用戶名和密碼,還可以勾選七天免登錄來在后七天免去登錄過程。點擊登錄按鈕,系統會自動檢測登錄用戶的用戶名和密碼,如果二者輸入不匹配,則登錄失敗且系統給出錯誤提示。若賬號和密碼正確,則跳轉到歡迎界面。
相聲展示模塊是歡迎界面,本頁面共有四個大分類,個性推薦、表演者、排行榜和分類表單。個性推薦是針對已經登錄的用戶進行的推薦,表演者又分為郭德綱、于謙、馮鞏、方清平等眾多演員小分類,排行榜是按播放量進行的排名,分類表單分為單口、對口和群聲三個類別。
推薦算法會根據“您的收藏”類別的相聲類型來進行相聲相似度計算,為您推薦您可能喜歡的相聲。如何用戶未登錄,系統會為其推薦播放量最多的一些相聲。相聲智能推薦系統的業務流程圖如圖1所示。
本系統使用協同過濾算法,采用Django重量級 Web 框架設計并實現。包括了用戶標識模塊、相聲爬取模塊、相聲展示模塊、相聲收藏模塊和相聲推薦模塊。
3.2.1用戶標識模塊
首先用戶在進入系統歡迎界面后,用戶可以聽取相聲,但是如果需要收藏相聲,則需要注冊、登錄。在注冊時需要輸入用戶名、密碼、年齡、生日和頭像,注冊成功后則可以登錄上系統。在登錄的過程中需要輸入用戶名和密碼,還可以選擇七天免登錄,點擊登錄按鈕,系統會自動檢測登錄用戶的用戶名和密碼,如果二者有錯誤,則登錄失敗且系統給出錯誤提示,否則登錄成功跳轉到歡迎界面。
3.2.2相聲爬取模塊
本系統的相聲資源是利用爬蟲技術從互聯網各個大網站爬取所得,存放在MySQL數據庫t_cross_talk表中。本系統從喜馬拉雅、騰訊視頻、愛奇藝視頻等爬取大量相聲。
3.2.3相聲展示模塊
相聲展示模塊是歡迎界面,本頁面共有四個大分類,個性推薦、表演者、排行榜和分類表單。個性推薦是針對已經登錄的用戶進行的推薦,表演者又分為郭德綱、于謙、馮鞏、方清平等眾多演員小分類,排行榜是按播放量進行的排名,分類表單分為單口、對口和群口三個類別。用戶點擊這些超鏈接就會展示對應的相聲,其中每個相聲又包括相聲名、表演者、類型、播放量、播放、暫停和收藏。用戶點擊播放可播放相聲音頻、點擊暫停可暫停相聲音頻、點擊收藏可收藏該相聲。收藏相聲必須是登錄狀態下。
3.2.4相聲收藏模塊
在系統首頁,用戶可以聽取自己的相聲,如果想要收藏某個相聲,只需要點擊相聲后邊的收藏來把該相聲放進“我的收藏”中。“我的收藏”中的刪除標簽可以進行刪除。推薦算法會根據“我的收藏”來進行推薦您可能喜歡的相聲。用戶收藏相聲必須是登錄狀態下。
3.2.5相聲推薦模塊
針對已經登錄的用戶,系統根據“我的收藏”里邊的相聲進行相似度計算,為用戶推薦用戶可能喜歡的相聲。如何用戶未登錄,系統會為其推薦播放量最多的一些相聲。

圖1 系統使用流程圖
本文通過使用軟件工程分析中的各種手段對項目的各個功能模塊進行了具體的規劃,詳細描述了系統的系統流程圖、各個功能模塊的流程圖設計、代碼設計以及界面展示等方面的內容。然后介紹了系統的總體設計,對系統設計方面的要求,硬件設施及軟件環境進行了設計,同時對數據庫表的結構進行了設計。本系統采用B/S的設計架構,用戶通過瀏覽器直接向服務器發送HTTP請求;在系統展示中,采用Django框架中的MTV模式提高模塊之間的內聚性,降低模塊之間的耦合性。
[1]相聲的分類[J].孔子學院,2019(02):80-81.
[2]郝亮.個性化電影推薦系統的研究與設計[D].四川:電子科技大學,2019.
[3]畢秋爽.脫口秀、相聲和stand-up comedy對比分析[J].傳播力研究,2019,3(02):211.
[4]范樹鎮.基于協同過濾的推薦系統算法研究[D].天津:天津理工大學,2019.