嚴(yán)長春 生佳根 於躍成 李 君
(江蘇科技大學(xué)計算機(jī)學(xué)院 鎮(zhèn)江 212003)
微博是近年來出現(xiàn)的新興媒體,是一個基于用戶關(guān)系的信息分享、傳播以及獲取平臺。它具有便捷性、原創(chuàng)性、時效性、隨意性等特性。尤其是便捷性,用戶可以隨時隨地發(fā)布自己的信息,這給人們的信息交流帶來質(zhì)的飛躍。然而,微博中充斥著各種各樣的短信息,也給用戶獲取自己感興趣的突發(fā)話題增加了難度[1]。在數(shù)據(jù)爆炸的今天,用戶不可能通過閱讀大量的微博信息來獲取實(shí)時的突發(fā)事件。
但是面對海量信息,用戶很難快速發(fā)現(xiàn)自己真正感興趣的東西;并且,互聯(lián)網(wǎng)服務(wù)提供商也很難在短時間內(nèi)把自己產(chǎn)品信息推送到對其真正感興趣的用戶面前。推薦系統(tǒng)(Recommendation System,RS)正是解決這一矛盾的有效途徑,它能為用戶快速推薦滿足其興趣愛好的產(chǎn)品,并幫助提供商尋找到自己的忠實(shí)客戶。
微博信息量龐大,不能只通過人工方式發(fā)現(xiàn)突發(fā)事件,需要一個全自動或半自動的檢測系統(tǒng)輔助發(fā)現(xiàn)突發(fā)事件。為解決以上的問題,本文主要內(nèi)容包括兩方面,微博突發(fā)事件檢測、微博個性化實(shí)時推薦。通過突發(fā)事件檢測,能夠自動、快速地檢測出即將發(fā)生傳播的突發(fā)事件。通過個性化實(shí)時推薦,用戶能更早地獲得朋友圈內(nèi)流行的話題,而不是被動地接收新聞推送。
本文使用主題模型 LDA[2](Latent Dirichlet Allocation)推斷微博的主題分布和用戶的興趣取向,從而實(shí)時、連續(xù)地向用戶推薦他們感興趣的微博。
協(xié)同過濾是一種被廣泛使用的推薦算法,是通過收集與目標(biāo)用戶歷史選擇相似的用戶對項(xiàng)目的評價,來預(yù)測目標(biāo)用戶對未知項(xiàng)目的喜好。該算法基于這樣的假設(shè):具有相同歷史選擇的用戶,他們在某種潛在因素上的傾向是一致的,那么在未來對于其他項(xiàng)目的選擇喜好也是一致的。主要分為兩類:鄰域方法(Neighborhood-based CFApproach)[3-4]和潛在因素模型(Latent Factor Model)[5~6]。本文主要研究基于用戶的鄰域方法,該算法的步驟可概括如下:1)收集用戶的歷史行為記錄,獲得用戶的偏好信息;2)基于興趣程度計算相似度,搜索目標(biāo)用戶的K近鄰;3)根據(jù)鄰域信息產(chǎn)生推薦。鄰域方法主要包括基于物品的協(xié)同過濾(Item-Based CF)[3]和基于用戶的協(xié)同過濾(User-Based CF)[7]。基于用戶的協(xié)同過濾分為以下三步:首先計算用戶之間的相似度,構(gòu)造用戶相似度矩陣;然后選擇與目標(biāo)用戶相似度最大的前K個用戶;最后根據(jù)目標(biāo)用戶的鄰居集的已知評分的加權(quán)來預(yù)測他對未知項(xiàng)目的評分?;陧?xiàng)目的協(xié)同過濾基本類似,主要是尋找和目標(biāo)用戶興趣相似的項(xiàng)目。實(shí)際應(yīng)用場景中,用戶和項(xiàng)目的數(shù)量非常龐大,并且用戶只能對很小一部分項(xiàng)目進(jìn)行操作,因此,該類方法存在著嚴(yán)重的數(shù)據(jù)稀疏問題。導(dǎo)致通過計算得到的用戶相似度并不準(zhǔn)確,影響了推薦質(zhì)量。
在進(jìn)行文本挖掘時,需要在大量的文本中挖掘出文檔的特征,在出現(xiàn)主題模型前,主要采用向量空間模型和統(tǒng)計語言模型,這兩種模型都將文本內(nèi)容映射到向量空間來簡化運(yùn)算,認(rèn)為文檔是在詞典空間的表示,用向量空間中的向量相似度來表示語義的相似度。但是詞語存在同義多義的問題,直到隱語義模型的出現(xiàn),將文檔從高維詞匯空間映射到低維主題空間,原來的“文檔→詞”映射表示變成了“文檔→語義→文檔”映射表示,Hoffman在此基礎(chǔ)上又提出了pLSA[8],它引入了概率統(tǒng)計的思想,避免了復(fù)雜的向量計算,但是pLSA對于文檔中主題的權(quán)重沒有任何先驗(yàn)假設(shè),使得模型參數(shù)和訓(xùn)練數(shù)據(jù)相關(guān),容易出現(xiàn)過擬合現(xiàn)象,為了解決這一問題,Blei等人提出一個更為完全和更為徹底的概率主題模型LDA[2],它是一個層次貝葉斯模型,將模型參數(shù)作為隨機(jī)變量,該變量服從一定的概率分布,從而引入可以控制模型參數(shù)的參數(shù)。
LDA模型本質(zhì)上是一種非監(jiān)督的機(jī)器學(xué)習(xí)模型,是一種使用概率的生成式模型,將高維文本單詞空間表示為低維主題空間,它采用了詞袋(bag of words)的方法,該方法沒有考慮詞與詞之間的順序,這簡化了問題的復(fù)雜性,也避免了陷入分析語句和獲取語義的復(fù)雜計算的陷阱,該方法將每一篇文檔視為一個詞頻向量,從而將文本信息轉(zhuǎn)化為了易于建模的數(shù)字信息,忽略了跟文本相關(guān)的類別信息。
對于語料庫中的每篇文檔,LDA定義了如下生成過程:
1)對每篇文檔,從主題分布中抽取一個主題;
2)從上述被抽到的主題所對應(yīng)的單詞分布中抽取一個單詞;
3)重復(fù)上述過程至遍歷文檔中的每個單詞。
圖1 LDA概率圖模型
其中,D代表文檔數(shù)目,T代表主題數(shù)目,詞匯表中有V個詞,Nd表示第d篇文檔的單詞個數(shù),w和z表示可觀測到的單詞和其主題,θ表示每篇文章的主題多項(xiàng)式分布,φ表示每個主題與詞匯表V個單詞的多項(xiàng)式分布,語料庫中的每一篇文檔與T(通過反復(fù)試驗(yàn)等方法事先給定)個主題的一個多項(xiàng)分布相對應(yīng),將該多項(xiàng)分布記為θ。每個主題又與詞匯表(vocabulary)中的V個單詞的一個多項(xiàng)分布相對應(yīng),將這個多項(xiàng)分布記為φ。θ和φ分別有一個帶有超參數(shù)α和β的Dirichlet先驗(yàn)分布。對于一篇文檔d中的每一個單詞,我們從該文檔所對應(yīng)的多項(xiàng)分布θ中抽取一個主題z,然后我們再從主題z所對應(yīng)的多項(xiàng)分布φ中抽取一個單詞w。將這個過程重復(fù)Nd次,就產(chǎn)生了文檔d。
該模型有兩個參數(shù)需要推斷:一個是“文檔-主題”分布θ,另外是T個“主題-單詞”分布φ。通過學(xué)習(xí)這兩個參數(shù),我們可以知道文檔作者感興趣的主題,以及每篇文檔所涵蓋的主題比例等。本文實(shí)驗(yàn)采用的是現(xiàn)在常用的Gibbs抽樣法。
為了推薦具有突發(fā)(bursty)[9]性質(zhì)的,同時符合用戶興趣的微博給目標(biāo)用戶,本文改進(jìn)了結(jié)合主題模型的協(xié)同過濾算法,該算法是結(jié)合了突發(fā)詞篩選,潛在因素模型和鄰域方法的混合協(xié)同過濾方法。分為以下幾個步驟:
突發(fā)詞篩選:對一定時間內(nèi)的微博進(jìn)行突發(fā)詞篩選,過濾不具有時效性的,具有噪音的微博,同時對帶有突發(fā)詞的微博進(jìn)行標(biāo)記;
主題建模:使用UserLDA主題模型對標(biāo)記微博進(jìn)行建模;再根據(jù)用戶已發(fā)微博進(jìn)行主題建模;
計算相似度:將通過UserLDA模型訓(xùn)練得到的用戶-主題概率分布進(jìn)行相似度計算;
產(chǎn)生推薦:根據(jù)鄰域方法預(yù)測目標(biāo)用戶對微博的感興趣程度,最后選擇感興趣程度高的微博進(jìn)行推送。
突發(fā)詞是指在短時間內(nèi)大量出現(xiàn)的有意義的代表話題走向的詞,但并不是所有在一段時間內(nèi)出現(xiàn)頻率高的詞就能成為突發(fā)詞,微博中有一類詞語,它們的突發(fā)詞是指在短時間內(nèi)大量出現(xiàn)的有意義的代表話題走向的詞,但并不是所有在一段時間內(nèi)出現(xiàn)頻率高的詞就能成為突發(fā)詞,微博中有一類詞語,它們的詞頻增量較高,但卻不能歸為突發(fā)詞的范疇。例如到晚餐的時候,關(guān)于飲食的詞匯會突然增多。然而,這類詞語并不具有突發(fā)性質(zhì),將其用于突發(fā)事件檢測,往往會對檢測結(jié)果造成一定的干擾。因此本文從相對詞頻、詞頻增長率、突發(fā)權(quán)重三個維度來對突發(fā)詞進(jìn)行篩選,使抽取的突發(fā)詞更能準(zhǔn)確地表征突發(fā)事件。
3.1.1 相對詞頻
如果一段時間內(nèi),一個詞匯出現(xiàn)的頻率明顯高于該時間段內(nèi)出現(xiàn)的其他詞匯,說明該詞匯熱度比較高,很可能是熱門或者突發(fā)事件的主題詞,需要注意的是,討論同一個話題時,應(yīng)該把同義詞或者近義詞算作同一種詞,常用方法是通過使用基于語義的知識詞典的詞語語義度來進(jìn)行相似度計算。相對詞頻的定義如下:段時間內(nèi),一個詞匯出現(xiàn)的頻率明顯高于該時間段內(nèi)出現(xiàn)的其他詞匯,說明該詞匯熱度比較高,很可能是熱門或者突發(fā)事件的主題詞,需要注意的是,討論同一個話題時,應(yīng)該把同義詞或者近義詞算作同一種詞,常用方法是通過使用基于語義的知識詞典的詞語語義度來進(jìn)行相似度計算。相對詞頻的定義如下:
式中:Rij是詞匯i在時間窗口j上的相對詞頻Fij是詞匯i在時間窗口j出現(xiàn)的頻率,F(xiàn)max是該時間窗口下出現(xiàn)的最高詞頻。
3.1.2 詞頻增長率
熱點(diǎn)話題的主題詞的相對詞頻一般都很高,因此僅僅依靠相對詞頻的計算會將熱點(diǎn)話題的主題詞歸納進(jìn)來。如果一個詞匯在某一時間段內(nèi)不僅相對詞頻較高,而且出現(xiàn)頻率比上一個時間段有大幅度的提升,則一定程度上表示該詞匯有可能是突發(fā)話題的主題詞。詞頻增長率定義如下:
式中:Gij表示詞匯i在時間窗口j的增長率,F(xiàn)i(j-1)是詞匯i在時間窗口(j-1)的出現(xiàn)頻率。
3.1.3 突發(fā)詞權(quán)重
TF-IDF(term frequency-inverse document frequency)[11]是一種用于資訊檢索的常用權(quán)重計算方法,用以評估詞匯對于一個文件集中的其中一份文件的重要程度。該方法能夠使相對詞頻高,且區(qū)分度大的詞匯擁有更大的權(quán)重。然而,在微博應(yīng)用場景中,突發(fā)事件中的主題詞匯以較高頻率出現(xiàn)在不同微博中,因此主題詞匯的區(qū)分度不高,使用TF-IDF算法會降低具有突發(fā)性質(zhì)的詞匯的權(quán)重,容易被忽略。本文使用另一種由Bun等提出的詞匯權(quán)重模式 TF-PDF[12]。
其中,wj表示詞匯j的權(quán)重;Fjc表示詞匯j在時間窗口c出現(xiàn)的頻率;njc表示詞匯j所在時間窗口的全部文檔數(shù)量;Nc表示時間窗口c中文檔的總數(shù)量;D表示時間窗口的數(shù)量,由公式可知,某個時間窗口內(nèi),一個詞匯的權(quán)重與它在該時間窗口出現(xiàn)的頻率是線性關(guān)系,與該時間窗口包含詞匯的文檔是指數(shù)關(guān)系。詞匯的總權(quán)重是該詞匯在每個時間窗口的權(quán)重之和。
標(biāo)準(zhǔn)主題模型LDA并不適用于處理微博短文本,微博長度限制在140字符以內(nèi),相比于傳統(tǒng)的博客,長度相差很大,其中也會出現(xiàn)很多錯誤的拼寫,俚語和縮寫,給主題建模造成了一定的干擾,因此,本文采用UserLDA[13]模型,該模型將標(biāo)準(zhǔn)LDA模型的“文檔-主題-詞”結(jié)構(gòu)轉(zhuǎn)化成“用戶-主題-詞”結(jié)構(gòu),能夠更好地應(yīng)用于社交網(wǎng)絡(luò)中,根據(jù)用戶文檔,更好地挖掘用戶主題,從而體現(xiàn)用戶對感興趣話題的興趣度?;赨serLDA模型的用戶主題建模步驟如下:
1)將微博中目標(biāo)用戶所發(fā)微博dt,轉(zhuǎn)發(fā)的微博dr,和轉(zhuǎn)發(fā)過程中的所有用戶的評論文本dc聚集成用戶文檔du;
2)對用戶文檔du預(yù)處理,進(jìn)行中文分詞,刪除停用詞和特征詞的提??;
3)將處理好的文檔作為LDA模型的輸入,訓(xùn)練模型;
模型訓(xùn)練完成后,我們可以得到用戶文檔-主題概率分布,用戶在某一主題上的概率分布越大,說明用戶對該主題感興趣程度越高,反之亦然。進(jìn)而,可以利用這個分布來計算用戶的相似性。
協(xié)同過濾算法基于用戶的歷史行為來計算相似度,搜索目標(biāo)對象的K近鄰,最后根據(jù)鄰域信息產(chǎn)生推薦。本文在主題建模時使用的是UserLDA,得到用戶-主題概率分布,因此,本文使用基于用戶的協(xié)同過濾推薦方法,該算法認(rèn)為,一個用戶會喜歡和他興趣愛好相似的鄰居喜歡的東西。其核心是計算用戶相似度,并構(gòu)造與目標(biāo)用戶相似的鄰居集。
通過UserLDA主題模型得到的用戶-主題概率分布,實(shí)際上是一種降維的思想,可以有效地解決數(shù)據(jù)稀疏的問題,即使共同操作過的微博數(shù)量并不多,但是只要這些微博屬于同一個主題,那么用戶之間的興趣也會相似。
KL(Kullback-Leibler divergence)[14]散度和 JS(Jensen-Shannon divergence)散度是典型的計算兩個概率分布之間距離的方法,KL散度也叫相對熵(Relative Entropy),是兩個概率分布P和Q差別的非對稱性度量,計算公式如下:
其中P和Q是兩個不同用戶的用戶-主題概率分布,p(xi)和q(xi)是這兩其中P和Q是兩個不同用戶的用戶-主題概率分布,p(xi)和q(xi)是這兩個用戶在第i個主題上的概率分布,T為主題總數(shù)。由公式可知,KL散度是非對稱的,個用戶在第i個主題上的概率分布,T為主題總數(shù)。由公式可知,KL散度是非對稱的,即DKL(P||Q)≠DKL(Q||P),但在實(shí)際的應(yīng)用中,主題的概率分布是具有對稱性的,即P和Q的概率分布的距離會等于Q和P的概率分布距離,因此引入JS散度,公式如下:
計算完用戶相似度之后,采用鄰域方法預(yù)測目標(biāo)用戶對未知微博的感興趣程度[15]。本文采用考慮了用戶個體差異的加權(quán)平均偏差方法(Weighted Average Deviation)。公式如下:
其中,|Ni,u|=K表示為已經(jīng)對項(xiàng)目i評分的用戶集合Ui中,與用戶u最為相近的K名鄰居用戶。rv,i表示鄰居用戶v對物品i的評分,su,v表示用戶u和用戶v的相似度。
為了評估結(jié)合突發(fā)詞篩選的混合協(xié)同過濾算法的有效性,結(jié)合新浪API,從新浪微博上使用爬蟲程序爬取了900個用戶,一共302086條微博記錄。從數(shù)據(jù)集中抽取80%的微博作為訓(xùn)練輸入語料,20%作為測試算法性能的測試集,使用5折交叉平均實(shí)驗(yàn)結(jié)果來減少誤差。
首先我們設(shè)定主題數(shù)目K=20,觀察鄰居數(shù)目K對MAE值的影響。選擇鄰域方法作為基準(zhǔn)方法,根據(jù)皮爾遜相關(guān)系數(shù)和JS散度計算用戶的相似度,簡寫為ItemCF和UserLDA-CF-JS,使用平均絕對誤差(MAE)作為評價指標(biāo),MAE值越小則算法的預(yù)測越準(zhǔn)確。
圖2 鄰居數(shù)目對MAE的影響
從圖2中可以看出,鄰居數(shù)目在不斷變大時,ItemCF和UserLDA-CF-JS算法的MAE值都在不斷下降,說明基于鄰域方法的算法對于鄰居數(shù)目的多少很敏感,也可以清晰辨別UserLDA-CF-JS算法性能明顯優(yōu)于ItemCF算法。
然后固定鄰居數(shù)目K=26,觀察主題數(shù)目對MAE值的影響,我們使用基于用戶和基于項(xiàng)目的兩種不同的思路,相似度計算使用JS散度和KL散度,分別簡寫為UserLDA-CF-KL,UserLDA-CF-JS,ItemLDA-CF-KL和ItemLDA-CF-JS。由圖3可知主題數(shù)目的變化對MAE值的變化影響不明顯,基于KL散度的相似度計算方法無論在基于用戶還是基于項(xiàng)目的協(xié)同過濾算法上,性能都優(yōu)于基于JS散度的相似度計算方法。并且基于用戶的UserLDA-CF-KL,UserLDA-CF-JS算法性能都分別優(yōu)于ItemLDA-CF-KL和ItemLDA-CF-JS,說明基于用戶的協(xié)同過濾算法更適合用戶數(shù)量和微博數(shù)量都很多的微博場景下。
圖3 不同算法MAE值比較
該論文以傳統(tǒng)的LDA主題模型為基礎(chǔ),鑒于微博平臺的特點(diǎn),加入了突發(fā)話題篩選和用戶已發(fā)微博UserLDA方法,對傳統(tǒng)的協(xié)同過濾算法進(jìn)行改進(jìn),提出了基于主題模型的微博突發(fā)話題推薦方法。
實(shí)驗(yàn)結(jié)果可以看出,結(jié)合主題模型和時效性的協(xié)同過濾模型與傳統(tǒng)模型相比較,不僅話題的時效性有很大程度地提高,而且相對來說降低了噪音,減少信息冗余,提高了檢測結(jié)果的準(zhǔn)確性和時效性。但推薦系統(tǒng)還存在很多挑戰(zhàn),如冷啟動問題、推薦解釋性問題、安全性等問題。因此,本文以后的工作將在不同場景下致力于研究和改進(jìn)更多的算法來解決推薦系統(tǒng)所面臨的各種挑戰(zhàn),以提高推薦系統(tǒng)的性能。