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