黃建軍,方勇,何祥
(1.四川大學(xué)電子信息學(xué)院,成都 610065;2.四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,成都 610207)
微博是一個以用戶社交關(guān)系為基礎(chǔ)的信息發(fā)布、分享、獲取的在線社交平臺,在微博中,用戶可以隨時隨地發(fā)布信息,并可以對感興趣的微博內(nèi)容進行轉(zhuǎn)發(fā)、點贊和評論[1]。根據(jù)新浪微博官方發(fā)布的數(shù)據(jù),目前微博月活躍用戶已經(jīng)超過4億人,構(gòu)成了一個龐大的用戶網(wǎng)絡(luò),對微博平臺中用戶的特征以及發(fā)布的內(nèi)容和關(guān)注關(guān)系進行分析挖掘是當前的熱門的研究方向,而用戶相似度計算是其中的一個重要研究點。用戶相似度計算相關(guān)技術(shù)可用于好友推薦、相似用戶發(fā)現(xiàn),可在海量用戶中挖掘與目標用戶在關(guān)系和興趣愛好等特征維度相似的用戶并推薦給目標用戶。除此之外,用戶相似度計算在用戶聚類、社區(qū)發(fā)現(xiàn)、熱門微博跟蹤等方面都有著重要意義[2]。本文綜合了社交關(guān)系(關(guān)注、粉絲)和微博文本兩種屬性,給出一種微博用戶相似性度量方法。
社交媒體上的用戶的信息總體上可以分為三類:①用戶的背景信息,包括年齡、性別、地理位置、教育、職業(yè)、標簽信息等;②用戶的社交關(guān)系,包括關(guān)注、粉絲、轉(zhuǎn)發(fā)、點贊等;③用戶發(fā)表的微博信息。已有的研究工作大多都是基于上述三類信息的一種或多種構(gòu)建用戶相似性度量方法。
Bhattacharyya等人[3]從用戶的背景信息中提取關(guān)鍵詞,并通過計算關(guān)鍵詞的語義距離來表示關(guān)鍵詞的相似性,進而度量用戶間的相似度。Krishnamurthy等人[4]通過分析Twitter用戶的關(guān)注和粉絲關(guān)系,并利用用戶關(guān)系構(gòu)成的網(wǎng)絡(luò)結(jié)構(gòu)進行用戶間的相似性進行度量。Kahanda等人[5]利用用戶相互之間的轉(zhuǎn)發(fā)、評論、文件傳輸?shù)冉换バ袨閬矶攘坑脩粝嗨贫?。Xiang等人[6]融合了用戶的屬性(包括學(xué)校、工作單位、興趣組和地理位置等)和用戶間的交互計算用戶關(guān)系強度。徐志明等人[7]在進行微博用戶相似性度量時給出了用戶的背景信息、微博文本、社交信息等多種屬性的相似度計算方法并對各屬性對相似度計算影響大小進行實驗,認為社交信息對用戶的相似性度量最有影響力。鄭志蘊等人[8]結(jié)合微博用戶自身背景信息和交互信息兩種屬性,并利用層次分析法確定各屬性權(quán)值,最后構(gòu)建綜合的用戶相似度計算模型。姚彬修等人[9]分別計算用戶間社交信息相似度、微博內(nèi)容相似度和交互關(guān)系相似度,最后融合各類相似度得出兩個用戶的總相似度來進行用戶推薦。
本文采用用戶社交關(guān)系和微博文本構(gòu)建用戶相似性度量方法,并分別給出基于戶社交關(guān)系信息和微博文本信息的用戶相似度計算方法:①用戶社交關(guān)系相似度計算方面,本文在Jaccard[10-11]方法的基礎(chǔ)上對用戶間的每個共同好友根據(jù)其熱度不同賦予不同的權(quán)重,使相似度計算結(jié)果更加合理。②在微博文本相似度計算方面,本文采用LDA模型[12]來表示微博文本并計算相似度,較基于TF-IDF的VSM模型[13-14]有效地降低了文本向量的維度并提高了相似度計算的效果。
在微博平臺中,用戶之間存在著關(guān)注和被關(guān)注的關(guān)系,用戶會關(guān)注感興趣的賬號,也可以吸引別的用戶成為自己的粉絲,關(guān)注和被關(guān)注的關(guān)系不斷擴展使構(gòu)成了一個龐大的社交關(guān)系網(wǎng)絡(luò)。微博用戶的關(guān)注信息和粉絲信息可以直觀的反映該用戶的興趣,兩個微博用戶擁有的共同粉絲或關(guān)注者越多,說明其具有更加緊密的社交聯(lián)系,這也能在某種程度上反映了兩個用戶間的相似度。對于一個微博用戶u,其社交信息可以表示為:
其中FollowerSet(u)表示用戶u的關(guān)注用戶集,F(xiàn)ansSet(u)表示用戶u的粉絲用戶集。用戶間的社交關(guān)系相似度可以分為關(guān)注信息和粉絲信息兩種屬性的相似度計算問題。
基于用戶社交關(guān)系的相似度計算方法一般使用基于共同鄰居的方法,如Jaccard方法[7-9]。以用戶關(guān)注信息為例,基于Jaccard方法的關(guān)注信息相似度可以表示為:
如上式所示,Jaccard方法通過兩個用戶間的共同關(guān)注用戶的比例來度量用戶間的相似程度,這種方法對不同的共同關(guān)注用戶并沒有分情況處理,無論是熱度較高(即粉絲較多)的用戶,還是普通的用戶,對用戶相似度計算結(jié)果的影響都是相同的。但實際中并非如此,微博平臺上存在著一些熱門用戶,這些熱門用戶擁有海量的粉絲數(shù),受到廣大微博用戶的喜愛和關(guān)注。關(guān)注這樣一個熱門的用戶往往并不能夠反映一個用戶的真正的興趣所在。相反,微博用戶對一個較為冷門的用戶的關(guān)注,從某種程度上來說更能反映用戶真正的興趣所在。基于上述現(xiàn)象,計算用戶u和用戶v的關(guān)注相似度時,共同關(guān)注微博用戶z的粉絲越多,在計算關(guān)注相似度時其權(quán)重越小。與之相反,粉絲數(shù)越少,在計算關(guān)注相似度時其權(quán)重越大?;谠撍悸?,本文在Jaccard方法的基礎(chǔ)上,對每一個共同關(guān)注根據(jù)其熱度賦予不同的權(quán)重,用戶關(guān)注信息相似度計算公式可以表示為:
同理用戶的粉絲信息相似度計算公式可以表示為:
綜合關(guān)注和粉絲兩個方面,對于兩個用戶u,v之間的社交關(guān)系相似度定義為:
Simfollower(u,v)表示兩個用戶關(guān)注信息的相似度,Simfans(u,v)表示兩個用戶粉絲信息的相似度,α1、α2兩者的權(quán)重,α1+α2=1。
在微博平臺上用戶可以隨時隨地的發(fā)表自己的想法與見解,同時還能夠轉(zhuǎn)發(fā)、評論其感興趣用戶的微博內(nèi)容。微博文本是微博用戶間進行互動交流的主要媒介,微博文本直接體現(xiàn)了用戶感興趣的內(nèi)容和話題。兩用戶所發(fā)布微博文本的相似度可以有效地體現(xiàn)兩個用戶間的相似度。
基于TF-IDF的向量空間模型(VSM)文本相似度計算方法被廣泛地用于微博文本相似度計算[7,9]。將用戶的微博文本拼接成一個文檔,通過分詞、提取關(guān)鍵詞,使用TF-IDF計算關(guān)鍵詞權(quán)重,最終將用戶微博表示為一個文本向量,并通過余弦相似度計算兩個用戶的微博文本相似度。VSM將文檔表示成一個高緯度、稀疏的文本向量導(dǎo)致計算效率不高,并且VSM忽略了詞語之間的關(guān)聯(lián),不能完全建模自然語言的復(fù)雜性問題。
針對上述方法存在的缺陷,本文使用LDA主題模型進行文本相似度計算。LDA(Latent Dirichlet Allocation)模型是一種對文本數(shù)據(jù)的主題信息進行建模的方法,它有文檔-主題-特征詞三層貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)。本文用LDA模型對用戶微博文本進行建模,即利用文本的統(tǒng)計特性,挖掘文本中不同主題與詞之間的潛在關(guān)系,將文檔以主題分布的形式展現(xiàn),通過此分布計算文本的相似度。使用LDA主題模型進行文本相似度計算相較于向量空間模型能更好地表示文本的語義并且有效地降低了文本向量的維度。
將用戶所發(fā)布的微博合并成一個長文本作為LDA模型中的文檔層中的一個文檔,從而得到用戶的主題概率多項分布。對于用戶u將其發(fā)布的全部微博所拼接成一個長文本并使用LDA模型其表示為一個主題向量的過程如下:
文本預(yù)處理,對微博文本進行過濾表情符號、URL等無意義文本、分詞、去停用詞等處理;
詞頻向量表示,采用詞頻方法來計算微博文本中的每個特征詞i的權(quán)重,將文本表示為詞頻向量 du=
主題生成,通過LDA模型生成用戶微博文本在k個主題上的概率分布,表示成向量θu=
在將用戶微博表示為主題向量θ后,用戶間的相似度可以通過計算兩用戶對應(yīng)的主題概率分布得到。有人使用KL(Kullback Leibler)散度,來衡量2個概率分布的距離[15],其計算公式為:
由于KL散度是不對稱的,即Dkl(P,Q)≠Dkl(Q,P),可以將其轉(zhuǎn)換為對稱的,如公式(6):
在基于LDA的主題模型中,由主題的概率分布來表示。因此,用戶間的相似程度可以由用戶微博文本主題分布間的KL距離來表示,用戶相似度計算如下所示:
如圖2所示,完整的微博用戶相似度計算是將用戶微博社交關(guān)系相似度和微博文本相似度兩個部分綜合起來得到,更加全面地構(gòu)建微博用戶間的相似性度量。
圖1 微博用戶相似度計算框架
結(jié)合前兩節(jié)內(nèi)容,將綜合的微博用戶相似度表示為:
其中Simrel(u,v)表示用戶社交關(guān)系的相似度,Simtext(u,v)表示用戶微博文本的相似度,ω1、ω2表示兩者的權(quán)重,ω1+ω2=1。
目前,關(guān)于新浪微博用戶相似度計還沒有統(tǒng)一的公開數(shù)據(jù)集,根據(jù)需求,本文使用Scrapy框架編寫爬蟲程序自行從新浪微博上采集相關(guān)數(shù)據(jù)。本文在新浪微博中選取10個種子用戶,并利用其社交關(guān)系鏈向外擴展一層,抓取用戶的基本信息、微博內(nèi)容、社交信息。為了實驗的有效性,對采集的用戶數(shù)據(jù)進行了篩選:①去除不活躍的用戶,即用戶關(guān)注加上粉絲數(shù)少于50或發(fā)表微博數(shù)少于30的用戶;②去除部分無效的微博,即微博字數(shù)少于10個或者僅包含表情符號、URL的微博。
經(jīng)過處理后,挑選出2000名用戶的信息用于實驗,包括用戶社交關(guān)系信息230250條,微博內(nèi)容968016條。
本文使用準確率(Precision Rate)和召回率(Recall Rate)作為衡量實驗結(jié)果的評估指標。通過用戶標簽、簡介以及用戶微博內(nèi)容為用戶劃分領(lǐng)域,以同一領(lǐng)域的用戶為相似用戶。對于用戶集合中的用戶u,通過對其進行Top-N推薦,即使用相似度算法計算各個用戶之間的相似度,將計算結(jié)果排序選出相似度得分最高的N個用戶作為相似用戶推薦結(jié)果。
準確率是指在推薦出的N個用戶中屬于用戶的相似用戶的個數(shù)Nc與推薦結(jié)果總數(shù)N的比值,比值越大則推薦結(jié)果的準確率越高。準確率的計算公式為:
召回率是指推薦結(jié)果中屬于相似用戶的個數(shù)Nc與相似用戶總數(shù)Ns的比值,比值越大則說明推薦結(jié)果越全面。召回率的計算公式為:
本文選擇以下四種方法進行對比實驗:
(1)本文提出的方法,通過多次實驗將社交關(guān)系相似度中關(guān)注相似度和粉絲相似度的權(quán)重分別設(shè)為α1=0.6,α2=0.4;微博文本相似度中LDA模型主題數(shù)k=40;社交關(guān)系相似度和微博文本相似度的權(quán)重分別設(shè)為ω1=0.8,ω2=0.2。
(2)已有的混合方法,借鑒文獻[6-8]的方法,基于用戶社交關(guān)系和微博文本計算用戶的相似度,其中社交關(guān)系相似度采用Jaccard方法,微博文本相似度采用基于TF-IDF的VSM模型計算。
(3)本文所述的基于社交關(guān)系的相似度計算方法。
(4)本文所述的基于微博文本的相似度計算方法。
在實驗中,分別取TOP-N的N={20,40,60,80,100}時的5種情況,四種算法的確率、召回率如圖2-3所示。
圖2 四種算法的準確率對比
從實驗結(jié)果可以看出,隨著推薦數(shù)N的增加,各算法的準確率逐漸降低,在四種算法的對比中本文提出的混合方法的準確率方面均明顯高于其他方法;在召回率方面,隨著N值的增加,召回率越來越高,并且比本文算法的召回率始終高于其他三種算法。本文算法綜合了用戶社交關(guān)系和微博文本兩方面屬性,較于單獨屬性構(gòu)建的相似度算法有更好的表現(xiàn),且與已有的混合方法相比效果上也有一定提升。
本文主要研究微博用戶間的相似性度量方法,對微博用戶社交關(guān)系(關(guān)注、粉絲)和微博文本兩方面信息分別進行分析并給出兩種信息相似度計算方法。對于用戶社交關(guān)系,本文在Jaccard方法的基礎(chǔ)上引入用戶熱度的影響并用于用戶社交信息相似度計算;對于用戶微博文本,本文使用LDA模型進行用戶微博文本相似度計算。最終通過加權(quán)的方式綜合兩種信息構(gòu)建完整的微博用戶相似性度量方法。并使用本文方法進行了Top-N推薦實驗,實驗結(jié)果表明,本文所提算法較其他三種算法具有更好的效果。對于微博用戶相似性度量的進一步研究可以考慮利用微博用戶的其他信息進行相似度計算,如使用點贊、轉(zhuǎn)發(fā)、評論等交互信息來度量用戶相似性。
圖3 四種算法的召回率對比