(江蘇師范大學 數學與統計學院,江蘇 徐州 221000)
隨著數字電視、網絡電視的快速普及,服務提供商可以根據數字電視或網絡電視的收視紀錄,來更好地了解用戶的收視行為和偏好[1]。迄今為止,個性化推薦的算法技術發展迅速,其中,最常用的是協同過濾算法和聚類算法。例如:黃賢英等(2018)[2]提出了新聞文本內容相似度的計算方式和時間窗的概念,考慮了特征詞的詞性以及它在新聞中的位置的因素,建立了個性化新聞推薦模型。此外,還有其他的算法應用于個性化推薦,例如:徐宏等(2018)[3]建立了基于MC-Apriori 算法的面向旅游用戶個性化搜索的關鍵詞推薦模型,向用戶推薦滿足其當前搜索興趣的旅游信息。由于每戶家庭的電視用戶類型不同、收看的節目類型也不同,因此本文針對不同的數據集,采用了基于電視產品內容的協同過濾算法和基于電視用戶的協同過濾算法,為用戶做出合理化的推薦。
基于內容(CB)的推薦算法[4]的原理很簡單:它是根據用戶過去喜愛的物品,提取出每個物品的一些特征,并利用這些特征數據,學習該用戶的喜好,最后與候選的物品特征進行比較,為用戶推薦相似度較大的物品。
1.jieba 分詞。本文采用Python 軟件對附件1 中的文本信息進行中文jieba 分詞[5-6]。分詞是對于一個特定的字符串Q,將其切分成多個詞語組成的字符串,會有q 個分割方案。我們采用概率語言模型的分詞方法來選擇最佳的切分方案。
2.概率語言模型的分詞方法。對于多個切分方案,我們需要計算出可能性最大的切分序列,其概率模型表示為:

其中Ri表示第i 種切分方案,(1,2,…,q)。
計算P(R1|Q)和P(R2|Q),選擇概率值較大的切分方案。根據貝葉斯公式:

其中P(Q)是字符串在語料庫中出現的概率,且P(Q|Ri)=1。
因此,比較P(R1|Q)和P(R2|Q)的值,也就是比較P(R1)和P(R2)的大小,因此P(Ri)的概率表達式即為:
P(Ri)=P(Ri1Ri2…Rim)≈P(Ri1)×P(Ri2)×…×P(Rim)
其中,對于不同的Ri,m 的值不同,一般來說m的值越大,Ri越小。也就是說,分出的詞越多,概率越小。下面,我們需要計算P(Rij):

因此,我們可以推導出:
logP(Rij)=log(Freq(Rij))-log(N)
本文基于概率語言模型,分別對電視劇、電影、綜藝、動漫的“detail”文本數據進行jieba 分詞,得到所有的分詞結果,并將它們保存在向量text 中。
3.計算分詞詞頻。根據上一步text 中的分詞結果,我們遍歷每個單詞,計算出每個單詞在該“detail”文本中出現的次數,找出詞頻大于1 的單詞,舍棄詞頻為0 的單詞,并且通過dict 創建字典,對每個詞頻大于1 的單詞進行編號。
1.建立向量表示的語料庫。根據分詞對所有的電影“detail”文本數據的分詞結果進行向量表示,并保存在語料庫中。
2.TF-IDF 分詞權重模型。設所有電影的“detail”文本數據的集合為:
C={C1,C2,…,CN}
而所有電影的“detail”文本數據中出現的分詞的集合為:
T={T1,T1,…,TW}
即:這些“detail”文本數據中包含了W 個詞,使用一個向量表示所有的電影。比如第j 個文章被表示為:
Cj={W1j,W2j,…,Wnj}
其中Wij表示第i 個詞Ti在第j 個電影“detail”中的權重,值越大表示越重要。在大多數已有的基于內容的推薦算法中,Wij的取值常用的是詞頻-逆文檔頻率[6-7](TF-IDF)。TF-IDF 的分詞權重模型表示為:


假設我們的矩陣A 是一個m×n 的矩陣,那么我們定義矩陣A 的SVD 為:

其中U 是一個m×m 的矩陣;∑是一個m×n 的矩陣,主對角線上的元素稱為奇異值;V 是一個n×n的矩陣。U 和V 都是酉矩陣[8]。
TOPSIS 是計算諸評價對象與兩者方案的距離,得到相對接近程度,找出最優方案和最劣方案。計算步驟如下:
第一步:設某一問題,決策矩陣為F。構成規范化的決策矩陣Z',其元素為,且有:

第二步:決定理想解、負理想解。決策矩陣Z 中元素Zij值越大說明方案越好,則:

第三步:計算每個方案到正負理想點的距離,找到距離最短的最優解。
余弦相似度,是計算兩個向量的夾角余弦值,評價兩個方案的相似度[9-10]。
均方根誤差是觀測值與真值偏差的平方和觀測次數n 比值的平方根,可以檢驗模型預測的偏差程度。
模型求解步驟如下:
我很小很小的時候,在澡盆里洗澡,洗完了,澡盆被端走,地上有一個圓圓的水印,我就指著水印說:“太陽!太陽!”據說我當時這樣說的時候,是十分激動的。夏天,我赤著腳在地上走,腳上有水,地上就有腳印,我又指著腳印說:“小船!小船!”看來我小時候是有些想象力的,而我現在想象力要比那時糟得多。
第一步:通過Python 軟件中的Pyspide 系統進行網絡爬蟲,爬取出附件中用戶單片點播和點播的所有收視節目的相關信息以及所有電視劇、電影、綜藝等的相關信息。
第二步:數據預處理:補充點播和單片點播數據中文本數據的缺失值,用“無”代替;對點播中的“用戶付費金額”“用戶收視時長”的數據進行標準化;用中位數法分別對單片點播、點播中的演員、導演、細節、地區、種類、類型的數據矩陣中的缺失數據進行補充;采用最小-最大值規范化方法對點播數據矩陣“點播2”和單片點播數據矩陣“單片2”中的每一列數據進行歸一化處理。
第三步:對用戶點播、用戶單片點播的數據進行分析:(1)將點播的演員、導演、細節、地區、節目種類、節目類型、二級目錄的文本數據分別生成列表,并通過計算詞頻將文本數據轉換成數字向量;(2)計算TF-IDF 權重;(3)采用SVD 模型對每一列的TF-IDF 權重數據進行降維,得到奇異值矩陣,并存入DataFrame 二維數據結構中[11]。
第四步:采用topsis 綜合評價法對每位用戶觀看節目的所有信息數據進行綜合評價,得到綜合評價值,并將用戶、節目名稱、評分構成新的矩陣[12]。
第五步:將爬蟲后得到的所有電視劇、電影、綜藝節目、動畫片的相關信息做第一步至第四步的同樣的分詞處理。
第六步:采用交叉驗證方法驗證模型的可靠性,本文我們隨機分了80%的訓練集,20%的測試集,計算訓練數據與測試數據之間的均方誤差來檢驗模型。
第七步:采用余弦相似度模型對處理后的爬蟲數據與點播、單片點播數據進行相似性分析,得到爬蟲數據與用戶點播、單片點播數據的相似度即為推薦指數。
第八步:采用均方值誤差對模型進行檢驗,得到誤差為:RMSE=0.65。

表1 用戶11004 的推薦結果
基于用戶的協同過濾算法,是一種采集用戶之前的愛好習慣預測用戶對商品和內容的嗜好,將同類型的用戶放在一起,進行推薦。
1.尋找用戶間的相似度。我們利用上文建立的余弦相似度模型,計算用戶之間的相似度,對用戶進行分類。
2.推薦物品。在選取上述方法中的一種得到各個用戶之間相似度,針對目標用戶u,進一步選出相似的k 個用戶,用集合S(u,k)表示;提取出S 中所有用戶喜歡的物品,去掉目標用戶u 曾經喜歡的物品;對剩下的物品進行評分與相似度加權,最后根據相似度從高到低對目標用戶u 進行推薦。
3.數據連接。把55 個銷售產品作為電影產品,提取出它們的標簽,對于缺失數據,我們采用支持向量機模型進行預測,得到所有的電影產品的標簽,部分數據如表1 所示。然后根據爬蟲后的數據與用戶的收視數據進行分析,得到基于用戶收視行為的標簽。
4.相似性分析及RMSE 檢驗。本文采用余弦相似度計算用戶與用戶之間標簽的相似性和55 個銷售產品與用戶之間的標簽的相似性,并進行RMSE模型的檢驗。
采集用戶之前的收視愛好習慣以及用戶的基本信息,我們可以將用戶進行分類,分成很多個用戶群,如表2 所示。

表2 用戶群以及觀看特征
根據表2 的用戶群特征,用戶群1 可以基本定位為兒童用戶群體,可以估測該電視用戶的家中有兒童,針對這一用戶群體,可以重點宣傳與突出營銷,對此類群體可以通過動畫產品的宣傳不斷吸引用戶的觀看興趣,提高用戶的持續觀看的概率。
用戶群2 偏女性居多,且觀看電視的時長較短,針對此類用戶群,不進行重點推銷,運用宣傳手段進行趣味主頁和趣味活動的引導,挖掘或者激發用戶的觀看興趣。此外,還可以向該用戶群提供有關廚藝和家務勞動小技巧的短視頻,既能節約用戶群的觀看時間,又能吸引用戶的興趣,而不產生厭惡感。
用戶群3 可以定位為TFBOYS 的粉絲,因此,電視產品供應商可以在電視主頁進行推薦,吸引用戶的觀看興趣。同時,對于該用戶群中的VIP 用戶,采取優惠政策,推送一些VIP 專享節目,既能滿足用戶群3 中VIP 用戶的觀看需求,穩固用戶群,還能吸引用戶群3 中非VIP 用戶的VIP 充值興趣,增加會員制的營銷收入,促進電視產品的營銷。
針對電視產品的推薦,我們采用了基于內容的協同過濾算法,分析用戶的收視內容以及爬蟲后得到的數據信息,為每位用戶推薦了相似度(從高到低)前20 的電視產品。此外,我們利用基于用戶的協同過濾算法,分析用戶的觀看行為,將用戶進行分類,為用戶做出了推薦。本文采用的RMSE 檢驗法得到的RMSE 檢驗值為0.67 和0.69,數值較高,結果完美,但是結果與用戶的記錄有些出入,我們還需要對中文文本挖掘進行深入探討。