(江蘇師范大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,江蘇 徐州 221000)
隨著數(shù)字電視、網(wǎng)絡(luò)電視的快速普及,服務(wù)提供商可以根據(jù)數(shù)字電視或網(wǎng)絡(luò)電視的收視紀(jì)錄,來(lái)更好地了解用戶(hù)的收視行為和偏好[1]。迄今為止,個(gè)性化推薦的算法技術(shù)發(fā)展迅速,其中,最常用的是協(xié)同過(guò)濾算法和聚類(lèi)算法。例如:黃賢英等(2018)[2]提出了新聞文本內(nèi)容相似度的計(jì)算方式和時(shí)間窗的概念,考慮了特征詞的詞性以及它在新聞中的位置的因素,建立了個(gè)性化新聞推薦模型。此外,還有其他的算法應(yīng)用于個(gè)性化推薦,例如:徐宏等(2018)[3]建立了基于MC-Apriori 算法的面向旅游用戶(hù)個(gè)性化搜索的關(guān)鍵詞推薦模型,向用戶(hù)推薦滿(mǎn)足其當(dāng)前搜索興趣的旅游信息。由于每戶(hù)家庭的電視用戶(hù)類(lèi)型不同、收看的節(jié)目類(lèi)型也不同,因此本文針對(duì)不同的數(shù)據(jù)集,采用了基于電視產(chǎn)品內(nèi)容的協(xié)同過(guò)濾算法和基于電視用戶(hù)的協(xié)同過(guò)濾算法,為用戶(hù)做出合理化的推薦。
基于內(nèi)容(CB)的推薦算法[4]的原理很簡(jiǎn)單:它是根據(jù)用戶(hù)過(guò)去喜愛(ài)的物品,提取出每個(gè)物品的一些特征,并利用這些特征數(shù)據(jù),學(xué)習(xí)該用戶(hù)的喜好,最后與候選的物品特征進(jìn)行比較,為用戶(hù)推薦相似度較大的物品。
1.jieba 分詞。本文采用Python 軟件對(duì)附件1 中的文本信息進(jìn)行中文jieba 分詞[5-6]。分詞是對(duì)于一個(gè)特定的字符串Q,將其切分成多個(gè)詞語(yǔ)組成的字符串,會(huì)有q 個(gè)分割方案。我們采用概率語(yǔ)言模型的分詞方法來(lái)選擇最佳的切分方案。
2.概率語(yǔ)言模型的分詞方法。對(duì)于多個(gè)切分方案,我們需要計(jì)算出可能性最大的切分序列,其概率模型表示為:
其中Ri表示第i 種切分方案,(1,2,…,q)。
計(jì)算P(R1|Q)和P(R2|Q),選擇概率值較大的切分方案。根據(jù)貝葉斯公式:
其中P(Q)是字符串在語(yǔ)料庫(kù)中出現(xiàn)的概率,且P(Q|Ri)=1。
因此,比較P(R1|Q)和P(R2|Q)的值,也就是比較P(R1)和P(R2)的大小,因此P(Ri)的概率表達(dá)式即為:
P(Ri)=P(Ri1Ri2…Rim)≈P(Ri1)×P(Ri2)×…×P(Rim)
其中,對(duì)于不同的Ri,m 的值不同,一般來(lái)說(shuō)m的值越大,Ri越小。也就是說(shuō),分出的詞越多,概率越小。下面,我們需要計(jì)算P(Rij):
因此,我們可以推導(dǎo)出:
logP(Rij)=log(Freq(Rij))-log(N)
本文基于概率語(yǔ)言模型,分別對(duì)電視劇、電影、綜藝、動(dòng)漫的“detail”文本數(shù)據(jù)進(jìn)行jieba 分詞,得到所有的分詞結(jié)果,并將它們保存在向量text 中。
3.計(jì)算分詞詞頻。根據(jù)上一步text 中的分詞結(jié)果,我們遍歷每個(gè)單詞,計(jì)算出每個(gè)單詞在該“detail”文本中出現(xiàn)的次數(shù),找出詞頻大于1 的單詞,舍棄詞頻為0 的單詞,并且通過(guò)dict 創(chuàng)建字典,對(duì)每個(gè)詞頻大于1 的單詞進(jìn)行編號(hào)。
1.建立向量表示的語(yǔ)料庫(kù)。根據(jù)分詞對(duì)所有的電影“detail”文本數(shù)據(jù)的分詞結(jié)果進(jìn)行向量表示,并保存在語(yǔ)料庫(kù)中。
2.TF-IDF 分詞權(quán)重模型。設(shè)所有電影的“detail”文本數(shù)據(jù)的集合為:
C={C1,C2,…,CN}
而所有電影的“detail”文本數(shù)據(jù)中出現(xiàn)的分詞的集合為:
T={T1,T1,…,TW}
即:這些“detail”文本數(shù)據(jù)中包含了W 個(gè)詞,使用一個(gè)向量表示所有的電影。比如第j 個(gè)文章被表示為:
Cj={W1j,W2j,…,Wnj}
其中Wij表示第i 個(gè)詞Ti在第j 個(gè)電影“detail”中的權(quán)重,值越大表示越重要。在大多數(shù)已有的基于內(nèi)容的推薦算法中,Wij的取值常用的是詞頻-逆文檔頻率[6-7](TF-IDF)。TF-IDF 的分詞權(quán)重模型表示為:
假設(shè)我們的矩陣A 是一個(gè)m×n 的矩陣,那么我們定義矩陣A 的SVD 為:
其中U 是一個(gè)m×m 的矩陣;∑是一個(gè)m×n 的矩陣,主對(duì)角線(xiàn)上的元素稱(chēng)為奇異值;V 是一個(gè)n×n的矩陣。U 和V 都是酉矩陣[8]。
TOPSIS 是計(jì)算諸評(píng)價(jià)對(duì)象與兩者方案的距離,得到相對(duì)接近程度,找出最優(yōu)方案和最劣方案。計(jì)算步驟如下:
第一步:設(shè)某一問(wèn)題,決策矩陣為F。構(gòu)成規(guī)范化的決策矩陣Z',其元素為,且有:
第二步:決定理想解、負(fù)理想解。決策矩陣Z 中元素Zij值越大說(shuō)明方案越好,則:
第三步:計(jì)算每個(gè)方案到正負(fù)理想點(diǎn)的距離,找到距離最短的最優(yōu)解。
余弦相似度,是計(jì)算兩個(gè)向量的夾角余弦值,評(píng)價(jià)兩個(gè)方案的相似度[9-10]。
均方根誤差是觀測(cè)值與真值偏差的平方和觀測(cè)次數(shù)n 比值的平方根,可以檢驗(yàn)?zāi)P皖A(yù)測(cè)的偏差程度。
模型求解步驟如下:
我很小很小的時(shí)候,在澡盆里洗澡,洗完了,澡盆被端走,地上有一個(gè)圓圓的水印,我就指著水印說(shuō):“太陽(yáng)!太陽(yáng)!”據(jù)說(shuō)我當(dāng)時(shí)這樣說(shuō)的時(shí)候,是十分激動(dòng)的。夏天,我赤著腳在地上走,腳上有水,地上就有腳印,我又指著腳印說(shuō):“小船!小船!”看來(lái)我小時(shí)候是有些想象力的,而我現(xiàn)在想象力要比那時(shí)糟得多。
第一步:通過(guò)Python 軟件中的Pyspide 系統(tǒng)進(jìn)行網(wǎng)絡(luò)爬蟲(chóng),爬取出附件中用戶(hù)單片點(diǎn)播和點(diǎn)播的所有收視節(jié)目的相關(guān)信息以及所有電視劇、電影、綜藝等的相關(guān)信息。
第二步:數(shù)據(jù)預(yù)處理:補(bǔ)充點(diǎn)播和單片點(diǎn)播數(shù)據(jù)中文本數(shù)據(jù)的缺失值,用“無(wú)”代替;對(duì)點(diǎn)播中的“用戶(hù)付費(fèi)金額”“用戶(hù)收視時(shí)長(zhǎng)”的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化;用中位數(shù)法分別對(duì)單片點(diǎn)播、點(diǎn)播中的演員、導(dǎo)演、細(xì)節(jié)、地區(qū)、種類(lèi)、類(lèi)型的數(shù)據(jù)矩陣中的缺失數(shù)據(jù)進(jìn)行補(bǔ)充;采用最小-最大值規(guī)范化方法對(duì)點(diǎn)播數(shù)據(jù)矩陣“點(diǎn)播2”和單片點(diǎn)播數(shù)據(jù)矩陣“單片2”中的每一列數(shù)據(jù)進(jìn)行歸一化處理。
第三步:對(duì)用戶(hù)點(diǎn)播、用戶(hù)單片點(diǎn)播的數(shù)據(jù)進(jìn)行分析:(1)將點(diǎn)播的演員、導(dǎo)演、細(xì)節(jié)、地區(qū)、節(jié)目種類(lèi)、節(jié)目類(lèi)型、二級(jí)目錄的文本數(shù)據(jù)分別生成列表,并通過(guò)計(jì)算詞頻將文本數(shù)據(jù)轉(zhuǎn)換成數(shù)字向量;(2)計(jì)算TF-IDF 權(quán)重;(3)采用SVD 模型對(duì)每一列的TF-IDF 權(quán)重?cái)?shù)據(jù)進(jìn)行降維,得到奇異值矩陣,并存入DataFrame 二維數(shù)據(jù)結(jié)構(gòu)中[11]。
第四步:采用topsis 綜合評(píng)價(jià)法對(duì)每位用戶(hù)觀看節(jié)目的所有信息數(shù)據(jù)進(jìn)行綜合評(píng)價(jià),得到綜合評(píng)價(jià)值,并將用戶(hù)、節(jié)目名稱(chēng)、評(píng)分構(gòu)成新的矩陣[12]。
第五步:將爬蟲(chóng)后得到的所有電視劇、電影、綜藝節(jié)目、動(dòng)畫(huà)片的相關(guān)信息做第一步至第四步的同樣的分詞處理。
第六步:采用交叉驗(yàn)證方法驗(yàn)證模型的可靠性,本文我們隨機(jī)分了80%的訓(xùn)練集,20%的測(cè)試集,計(jì)算訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)之間的均方誤差來(lái)檢驗(yàn)?zāi)P汀?/p>
第七步:采用余弦相似度模型對(duì)處理后的爬蟲(chóng)數(shù)據(jù)與點(diǎn)播、單片點(diǎn)播數(shù)據(jù)進(jìn)行相似性分析,得到爬蟲(chóng)數(shù)據(jù)與用戶(hù)點(diǎn)播、單片點(diǎn)播數(shù)據(jù)的相似度即為推薦指數(shù)。
第八步:采用均方值誤差對(duì)模型進(jìn)行檢驗(yàn),得到誤差為:RMSE=0.65。
表1 用戶(hù)11004 的推薦結(jié)果
基于用戶(hù)的協(xié)同過(guò)濾算法,是一種采集用戶(hù)之前的愛(ài)好習(xí)慣預(yù)測(cè)用戶(hù)對(duì)商品和內(nèi)容的嗜好,將同類(lèi)型的用戶(hù)放在一起,進(jìn)行推薦。
1.尋找用戶(hù)間的相似度。我們利用上文建立的余弦相似度模型,計(jì)算用戶(hù)之間的相似度,對(duì)用戶(hù)進(jìn)行分類(lèi)。
2.推薦物品。在選取上述方法中的一種得到各個(gè)用戶(hù)之間相似度,針對(duì)目標(biāo)用戶(hù)u,進(jìn)一步選出相似的k 個(gè)用戶(hù),用集合S(u,k)表示;提取出S 中所有用戶(hù)喜歡的物品,去掉目標(biāo)用戶(hù)u 曾經(jīng)喜歡的物品;對(duì)剩下的物品進(jìn)行評(píng)分與相似度加權(quán),最后根據(jù)相似度從高到低對(duì)目標(biāo)用戶(hù)u 進(jìn)行推薦。
3.數(shù)據(jù)連接。把55 個(gè)銷(xiāo)售產(chǎn)品作為電影產(chǎn)品,提取出它們的標(biāo)簽,對(duì)于缺失數(shù)據(jù),我們采用支持向量機(jī)模型進(jìn)行預(yù)測(cè),得到所有的電影產(chǎn)品的標(biāo)簽,部分?jǐn)?shù)據(jù)如表1 所示。然后根據(jù)爬蟲(chóng)后的數(shù)據(jù)與用戶(hù)的收視數(shù)據(jù)進(jìn)行分析,得到基于用戶(hù)收視行為的標(biāo)簽。
4.相似性分析及RMSE 檢驗(yàn)。本文采用余弦相似度計(jì)算用戶(hù)與用戶(hù)之間標(biāo)簽的相似性和55 個(gè)銷(xiāo)售產(chǎn)品與用戶(hù)之間的標(biāo)簽的相似性,并進(jìn)行RMSE模型的檢驗(yàn)。
采集用戶(hù)之前的收視愛(ài)好習(xí)慣以及用戶(hù)的基本信息,我們可以將用戶(hù)進(jìn)行分類(lèi),分成很多個(gè)用戶(hù)群,如表2 所示。
表2 用戶(hù)群以及觀看特征
根據(jù)表2 的用戶(hù)群特征,用戶(hù)群1 可以基本定位為兒童用戶(hù)群體,可以估測(cè)該電視用戶(hù)的家中有兒童,針對(duì)這一用戶(hù)群體,可以重點(diǎn)宣傳與突出營(yíng)銷(xiāo),對(duì)此類(lèi)群體可以通過(guò)動(dòng)畫(huà)產(chǎn)品的宣傳不斷吸引用戶(hù)的觀看興趣,提高用戶(hù)的持續(xù)觀看的概率。
用戶(hù)群2 偏女性居多,且觀看電視的時(shí)長(zhǎng)較短,針對(duì)此類(lèi)用戶(hù)群,不進(jìn)行重點(diǎn)推銷(xiāo),運(yùn)用宣傳手段進(jìn)行趣味主頁(yè)和趣味活動(dòng)的引導(dǎo),挖掘或者激發(fā)用戶(hù)的觀看興趣。此外,還可以向該用戶(hù)群提供有關(guān)廚藝和家務(wù)勞動(dòng)小技巧的短視頻,既能節(jié)約用戶(hù)群的觀看時(shí)間,又能吸引用戶(hù)的興趣,而不產(chǎn)生厭惡感。
用戶(hù)群3 可以定位為T(mén)FBOYS 的粉絲,因此,電視產(chǎn)品供應(yīng)商可以在電視主頁(yè)進(jìn)行推薦,吸引用戶(hù)的觀看興趣。同時(shí),對(duì)于該用戶(hù)群中的VIP 用戶(hù),采取優(yōu)惠政策,推送一些VIP 專(zhuān)享節(jié)目,既能滿(mǎn)足用戶(hù)群3 中VIP 用戶(hù)的觀看需求,穩(wěn)固用戶(hù)群,還能吸引用戶(hù)群3 中非VIP 用戶(hù)的VIP 充值興趣,增加會(huì)員制的營(yíng)銷(xiāo)收入,促進(jìn)電視產(chǎn)品的營(yíng)銷(xiāo)。
針對(duì)電視產(chǎn)品的推薦,我們采用了基于內(nèi)容的協(xié)同過(guò)濾算法,分析用戶(hù)的收視內(nèi)容以及爬蟲(chóng)后得到的數(shù)據(jù)信息,為每位用戶(hù)推薦了相似度(從高到低)前20 的電視產(chǎn)品。此外,我們利用基于用戶(hù)的協(xié)同過(guò)濾算法,分析用戶(hù)的觀看行為,將用戶(hù)進(jìn)行分類(lèi),為用戶(hù)做出了推薦。本文采用的RMSE 檢驗(yàn)法得到的RMSE 檢驗(yàn)值為0.67 和0.69,數(shù)值較高,結(jié)果完美,但是結(jié)果與用戶(hù)的記錄有些出入,我們還需要對(duì)中文文本挖掘進(jìn)行深入探討。