張漢琴,范宇晨,劉加海
(浙江大學城市學院,浙江 杭州 310000)
在電影行業蓬勃發展的當下,電影本身的質量卻出現了越來越參差不齊的情況。你是否有過精心挑選了一部新電影卻在看了10分鐘后便覺得索然無味而退出的經歷?像這樣浪費在挑選影片上的時間還不如用來沖一杯咖啡。強大的搜索引擎也許可以幫助用戶快速找到所想要觀看的影片,但在無目標的情況下只有利用好推薦系統算法,才能把用戶從洪水般泛濫的影片中解放,享受到全自動的個性化觀影體驗。
用戶體驗需求是多樣化的,通過電影本身的內容可以給用戶帶來良好的感官體驗、情感體驗和思考體驗,而一個完整的電影體驗模式還需要加上行動和關聯的體驗來完成構建。
經過發放153份針對“用戶觀影體驗”的問卷后發現,喜歡在網上看電影的用戶占總調查人數的82.69%,同時為了打發時間放松身心而觀影的用戶達到總調查人數的69.23%,而隨機選擇影片來觀看的用戶數量高達總人數的89.64%。不少用戶表示他們通常從類型出發選擇想看的電影,但往往需要耗費一定時間才能找到滿意的影片,而且通常無法一次性就選中適合自己的影片觀看。
通過上一段的問卷調查,在本段中將針對優化行動體驗和關聯體驗展開討論。首先行動體驗的目標是將影響用戶體驗的有形行為和生活形態最優化,利用精確的算法和前沿的技術改變用戶原本低效的行為模式,得以創造出前所未有的良好體驗感。而關聯體驗更是一種綜合體驗,讓產品成為關聯用戶情感、理想和文化的橋梁,并建立用戶對產品的信任和偏好,同時讓產品也擁有一個逐漸聚攏的用戶群。因此,本研究決定利用推薦系統算法改善用戶在選擇影片時的行動體驗,同時讓用戶在使用的過程中逐漸加深對產品的信任感,從而加強關聯體驗,實現用戶和產品雙方的共贏。
目前已知的推薦系統算法中有基于流行度的算法、基于內容的算法、基于知識的算法等,在本研究中將采用協同過濾算法來提高用戶閑暇時選擇影片的體驗感,目的是豐富個性化的推薦目錄,提高用戶電影體驗的同時可以推廣冷門影片。協同過濾算法有基于用戶和基于物品兩種,本研究中采用基于物品的算法。在編程時采用python3主流的數據分析模塊numpy與數據讀取模塊csv后期搭配Spyder的調試功來加速代碼測試和優化,用MYSQl搭建后臺存儲數據庫[1]。
算法首先針對影片的所有評價進行分析,然后依據用戶觀影歷史記錄中的影片類型計算所有電影之間的相似度,選出與當前用戶觀影記錄相似度最高的N部影片,再從這N部影片中選出當前用戶沒有預覽過并且評價最高的m部影片作為最終推薦項。
整體代碼分為5個基本模塊:數據集讀取模塊csv_read(),余弦相似度算法模塊cosine_sim(),標準SVD評分模塊:svd_est(),推薦處理模塊:recommend(),圖形化界面模塊:GUI()。
5個模塊中最為核心的就是推薦處理模塊,其模塊代碼為recommend()[2]。整體模塊處理流程設計如下:用戶正常登錄觀影系統后,后臺通過數據庫訪問用戶的歷史觀影信息,和影片庫中的影片進行相似度對比分析,然后通過觀影系統首頁的“每日推薦”菜單將高相似度且未推薦過的影片進行推薦,在用戶觀看影片的同時后臺記錄用戶的觀影數據,包括用戶的觀影時長、快進次數、是否點贊收藏等操作數據。將所有的操作數據保存在后臺數據庫中用作后期推薦反饋分析。
查詢矩陣中用戶未評分過的影片(unrated_items):
unrated_items=np.nonzero(mat[user, :].A == 0)
從未評分影片中進行循環,進入相似度算法SVD模型,通過mat用戶矩陣,推薦用戶,相似度算法,未評分物品標號估算出影片的得分:
for item in unrated_items
score = estimate(mat, user, math_method, item)
item_scores.append((item, score))
按照得分將影片逆排序,獲取前N個未評級影片作為推薦項:
sorted(item_scores, key=lambda jj: jj, reverse=True)[: N]
通過算法實現的影片推薦將在首頁的“每日推薦”中展現,用戶在閑暇時想觀看一部電影,不必再通過長時間的影片篩選,可以直接點擊每日推薦中的電影進行觀看,如圖1所示。

圖1 電影購票系統部分原型設計
隨著用戶對該功能的使用時間增加,用戶的品位將逐漸訓練“每日推薦”中影片的質量,在這個用戶體驗感不斷上升的過程中,用戶與產品之間也建立起了深厚的情感關聯,最后對整個觀影系統產生越來越強的信賴,實現了構建一個良性運轉的電影體驗模式[3]。
本研究的實驗部分通過movielens官網(https:∥grouplens.org/datasets/movielens/)的電影數據來進行,透過協同過濾算法,利用以屬性或興趣相近的用戶觀影經驗與數據作為提供個性化推薦的基礎。實現了程序的運行,完成了優化用戶行動體驗和關聯體驗的初衷。不足之處在于本研究中設計的程序運行時間較長,所以未來還需要在程序代碼上做出更多的優化。