王 梅,沈家潤
(東華大學(xué) 計算機科學(xué)與技術(shù)學(xué)院 上海 201620)
隨著在線社交網(wǎng)絡(luò)(Online Social Network,OSN)的流行和發(fā)展,社交網(wǎng)絡(luò)在人們?nèi)粘=涣髦邪l(fā)揮的作用越來越大。人們可以在社交網(wǎng)絡(luò)中發(fā)布、獲取和傳遞信息,可以和其他用戶交互并構(gòu)建自己的交際網(wǎng)絡(luò),并根據(jù)交際網(wǎng)絡(luò)中獲取的信息做出決策。然而,在社交網(wǎng)絡(luò)中同時存在眾多不真實的、誤導(dǎo)性的信息,以及不可信的用戶。為了甄別可靠信息,建立用戶和信息可信度的評估機制具有重要意義。
目前,對于評估社交網(wǎng)絡(luò)中用戶和博文的研究,大都是以如Twitter、Facebook等國外的社交網(wǎng)絡(luò)平臺為研究對象[1-4]。新浪微博作為全球最大的中文社交網(wǎng)絡(luò)平臺之一,在規(guī)模、使用人群、發(fā)表設(shè)置和用戶交流模式等方面與國外社交網(wǎng)絡(luò)存在顯著差異。
本文針對新浪微博的環(huán)境,在CoRank算法[5-6]的基礎(chǔ)上,引入“點贊”這一關(guān)系完善該算法,定義了“帶有點贊的復(fù)合動作”等復(fù)雜場景,討論了這些場景在社交網(wǎng)絡(luò)模型中所代表的語義以及相應(yīng)的權(quán)重計算方法,針對其中的數(shù)據(jù)缺失問題提出解決辦法,最終提出 SWCoRank(Sina Weibo CoRank)算法。進(jìn)一步,基于采集到的真實新浪微博數(shù)據(jù),對收集到的用戶和博客進(jìn)行信任評估,通過實驗驗證所提SWCoRank的性能。在實驗結(jié)果分析中,一方面通過對PageRank[7]和TURank[8]等當(dāng)前主流方法對相同的數(shù)據(jù)集進(jìn)行計算并將結(jié)果相互比較分析,證明SWCoRank的有效性。另一方面,通過抽樣對樣例用戶和博文進(jìn)行分析和說明。
雖然新浪微博和Twitter都是在線社交網(wǎng)絡(luò),在功能上是相似的,但是他們有很多方面是有區(qū)別的,這些區(qū)別使得在研究的過程中,會產(chǎn)生諸多的不同和挑戰(zhàn)。
1)Twitter的全球化和新浪微博的本地化
雖然 Twitter是一家美國公司,但是 Twitter的用戶來自世界各地,超過70%的瀏覽量是在美國以外的地區(qū)發(fā)出的[9]。由于Twitter用戶的國家、地域和文化有很大的差別,話題分離的現(xiàn)象還是比較普遍的。而絕大多數(shù)的新浪微博用戶來自中國,其用戶在文化上更加相似,在地域上也更加接近。因此,新浪微博的用戶在公共議題上,相比Twitter,有更高的共鳴和參與度。
2)粉絲分布的不同
按照Han等人的統(tǒng)計計算[10],對于關(guān)注關(guān)系,新浪微博中粉絲分布的基尼系數(shù)更高。這就意味著,少數(shù)幾位很受歡迎的新浪微博用戶會吸收大量的粉絲。具體來說,Han統(tǒng)計結(jié)果表明,有0.1%的新浪微博用戶吸引了整個社交網(wǎng)絡(luò)內(nèi)50%的粉絲。而Twitter的粉絲分布并沒有這么夸張,受歡迎的 Twitter用戶也不會吸收像新浪微博那么多的粉絲。
將這兩條不同點放在一起分析,在新浪微博中,一個受歡迎的用戶或者一條很熱門的博文能收到大量的關(guān)注和瀏覽量??紤]到新浪微博更大的規(guī)模,這一特征使得部分?jǐn)?shù)據(jù)的收集和處理工作變得更加困難。
3)發(fā)表設(shè)置的差異
在新浪微博與Twitter這兩個平臺中,部分動作的語義和功能是不同的。以“評論”這個動作為例,Twitter用戶可以使用評論的動作來完成分享、傳播評論內(nèi)容的目的,而在微博環(huán)境下,評論的功能不能滿足Twitter環(huán)境下分享的功能,在微博中,這個功能被部分地用“轉(zhuǎn)發(fā)”所替代。基于這一差異,新浪微博的轉(zhuǎn)發(fā)行為具有部分Twitter中評論回復(fù)的功能。
4)字?jǐn)?shù)限制
Twitter有這樣一個規(guī)則:每一條博文的字?jǐn)?shù)不能超過280個字母,因此,其鼓勵用戶們發(fā)送短信息。新浪微博則取消了字?jǐn)?shù)的限制,允許一條博文包含豐富的信息。因此,兩個平臺的交流模式、傳遞的信息量和用戶的交互頻率是不一樣的。
將以上兩點結(jié)合在一起,一些使用在Twitter上的算法和一些使用到發(fā)表、轉(zhuǎn)發(fā)和評論的關(guān)系的模型,將這些算法和模式直接使用在新浪微博上面,是存在歧義和不合適的。
CoRank算法[5-6]是目前較為先進(jìn)的社交網(wǎng)絡(luò)信用評估算法。其針對Twitter環(huán)境,通過關(guān)注、評論、轉(zhuǎn)發(fā)、推文發(fā)表、推文被發(fā)表和@的關(guān)系,對Twitter中的用戶和推文進(jìn)行信用評估,其算法過程如圖1所示。
圖1 CoRank算法的過程Fig.1 Process of CoRank
整個CoRank分為四個階段:
1)矩陣構(gòu)建。構(gòu)建的 U、M、N、T四個矩陣分別代表用戶之間的關(guān)系、博文對用戶的動作、對博文動作、博文之間的關(guān)系。U矩陣是|U|×|U|大小的矩陣,|U|是樣本用戶的數(shù)量,使用用戶之間的關(guān)注關(guān)系,如果用戶樣本中用戶uj關(guān)注了用戶ui,那么在U矩陣的第i行j列填充權(quán)重wfi。T矩陣是|T|×|T|大小的矩陣,|T|是樣本博文的數(shù)量,使用博文之間的評論、轉(zhuǎn)發(fā)關(guān)系,如果博文樣本中博文bj是博文bi轉(zhuǎn)載貼,或者博文bj是博文bi評論貼,那么在T矩陣的第i行j列填充權(quán)重wr或者wc。M矩陣是|U|×|T|大小的矩陣,使用博文對用戶的“@”和“被發(fā)表”的關(guān)系,如果博文bj@了用戶ui,或者博文bj是用戶ui的作品,那么在M矩陣的第i行j列填充權(quán)重wmi或者wp′。N矩陣是|T|×|U|大小的矩陣,使用用戶對博文發(fā)表的關(guān)系,如果用戶uj發(fā)表了博文bi,那么在N矩陣的第i行j列填充權(quán)重wp。CoRank算法沒有使用到點贊這一關(guān)系,點贊動作是從用戶發(fā)起,指向博文的動作,應(yīng)將點贊的權(quán)重放入N矩陣中,本文所做工作的重點之一,就是將點贊動作加入到模型中,進(jìn)而改造N矩陣。
2)向量計算。用P、Q向量表示用戶樣本和博文樣本的信任值(trust value),P、Q向量的維度分別是為|U|和|T|。通過公式:
表示下一代的Pi′+1、Qi′+1向量是由上一代的iP、Qi向量與四個矩陣加權(quán)求和得到,α和β為常數(shù),[6]中取α=0.2,β=0.6。通過這兩個公式,在每次計算中,用戶和博文所對應(yīng)的信任值在網(wǎng)絡(luò)模型中通過有向邊傳遞給對應(yīng)的節(jié)點,使信任值在網(wǎng)絡(luò)模型中互相流動。
3)函數(shù)映射。上一階段計算得到的P′、Q′向量需要經(jīng)過Sigmoid函數(shù)
的計算得到新的P、Q向量,k和x0是常數(shù),是通過實驗效果自行調(diào)整的。映射函數(shù)使用的目的是將用戶和博文的信用度估計值映射到 0到 1的范圍之內(nèi),防止用戶和博文的信任值差距過大,信任值分布過于不平衡。
4)判斷收斂。在得到新的Pi+1、Qi+1向量后,與上一輪得到的iP、Qi向量進(jìn)行比較,判斷是否收斂,判斷方法是使用斯皮爾曼等級相關(guān)系數(shù)(The Spearman's rank correlation coefficient,SRCC),它已被廣泛用于測量兩個集合之間的差異[11],其公式為:
其中xi和yi是用戶ui或者博文ti的前后兩代不同的排名結(jié)果,N為樣本集合的總數(shù)。由此得到一個數(shù)據(jù)集內(nèi)用戶和博文的信任值。若當(dāng)前的Pi+1、Qi+1向量與上一輪的Pi、Qi向量用 SRCC計算得到的系數(shù)uρ和tρ,都大于設(shè)置的閾值u?和t?,則整個迭代結(jié)束,退出循環(huán),否則進(jìn)入下一輪迭代,P、Q向量更新。
如上所述,在新浪微博與Twitter平臺中,部分動作的語義和功能是不同的。對于一篇博文來說,它可以接收到來自其他用戶的三種類型的互動:點贊、轉(zhuǎn)發(fā)和評論,我們可以通過用戶們對一篇博文所做的行為來判斷此博客的可信程度。特別是“點贊”這一行為可以清楚地反映博文的互動者對于博文的信任程度,信任度較高的博文會受到更多的點贊,信任度較高的博文也會通過被發(fā)表的關(guān)系使得博文的作者也值得信任。當(dāng)“點贊”與同一交互者發(fā)起的其他兩個動作(評論和轉(zhuǎn)發(fā))結(jié)合在一起時,信任傳遞的值應(yīng)該會更大。按照此想法,我們定義了如下權(quán)重機制。
一個用戶對于一條博文的行為被劃分為“單一行為”和“帶有點贊的復(fù)合行為”?!皢我恍袨椤敝傅氖且粋€用戶對博文進(jìn)行的“點贊”,或“評論”,或“轉(zhuǎn)發(fā)”的動作,權(quán)重用符號wl、wc、wr表示。以下是三種“帶有點贊的復(fù)合行為”情況,分別是同一個用戶對一條博文進(jìn)行“點贊+評論”,“點贊+轉(zhuǎn)發(fā)”和“點贊+轉(zhuǎn)發(fā)+評論”的情況。對于這三種關(guān)系所代表的權(quán)重,分別用wl&c、wl&r、wl&c&r表示。
按照“點贊更能反映出用戶對于博文的信任”的假設(shè),我們對“單一行為”的權(quán)重設(shè)置:
帶有點贊的復(fù)合動作的權(quán)重應(yīng)該大于在單獨時行動的權(quán)重之和,用來表示一個用戶對于博文較高的信任,用公式可描述為:
在對N矩陣經(jīng)過改造后,N矩陣中的元素
wp表示發(fā)表關(guān)系的權(quán)重,Ep、Esl、El&c、El&r、El&c&r分別表示所有博文發(fā)表關(guān)系的集合、所有“單一點贊”(single like)關(guān)系的集合、所有單個用戶對一條博文“點贊+評論”、“點贊+轉(zhuǎn)發(fā)”、“點贊+評論+轉(zhuǎn)發(fā)”關(guān)系的集合,當(dāng)用戶ui對于博文tj沒有以上提到的關(guān)系時,所屬的元素位置值為0。
由于在構(gòu)建N矩陣時,一個用戶的評論和轉(zhuǎn)發(fā)如果和點贊出現(xiàn)在一起,他(或她)的評論和轉(zhuǎn)發(fā)就被合并到“帶有點贊的復(fù)合動作”一起,其關(guān)系權(quán)重被算入N矩陣中,所有T矩陣中,存放的是獨立的轉(zhuǎn)發(fā)和評論動作,T矩陣的元素為:
Esc表示所有“獨立單一的評論”(single comment)關(guān)系的集合,Esr表示所有“獨立單一的轉(zhuǎn)發(fā)”(single repost)關(guān)系的集合,如果博文uj對于博文ti沒有以上提到的關(guān)系時,所屬的元素位置值為0。
一方面,部分微博用戶和博文的粉絲數(shù)量和互動數(shù)量都比較大,在建模時不能全部納入計算。另一方面,由于反爬機制,不能得到完整的用戶和博文的信息。具體來說,如果博文的評論數(shù)超過20條,最多只能獲取到20條評論的信息,但評論的總數(shù)可知。如果用戶的粉絲超過4 000人,最多能獲取到4 000人的信息,同樣粉絲總數(shù)可知。
用wf′來表示對關(guān)注的權(quán)重wf在調(diào)整過后的權(quán)重,用公式
表示,m是粉絲的總數(shù)。
若想得到用戶對博文的“點贊+評論”的合理的權(quán)重,用wl′&c來表示對wl&c調(diào)整過的權(quán)重,用公式
表示,n是評論的總數(shù)。
從上述公式,獲取權(quán)重數(shù)據(jù),根據(jù)權(quán)重生成矩陣,調(diào)用公式(1)得到用戶的信用評估,公式(2)得到博文的信用評估,并經(jīng)過1.2節(jié)中函數(shù)映射步驟,反復(fù)迭代直至信任值收斂。
編寫爬蟲對微博用戶和信息進(jìn)行數(shù)據(jù)收集,抽樣出10 000個用戶以及他們發(fā)表的55 392條博文作為數(shù)據(jù)集,對用戶和博文使用SWCoRank進(jìn)行信用評估。
選取四個入度相似的用戶,出于隱私考慮,使用A、B、C、D來分別表示這四個用戶。如表1所示,是用戶A、B、C、D的排名結(jié)果,排名的數(shù)值越小,表示用戶的信任值越大,用戶的排名越靠前。用戶C和用戶D收到了很多的關(guān)注和互動的連接,而用戶B發(fā)表了很多博文。雖然與這四個用戶相關(guān)的節(jié)點總數(shù)相似,但這四個用戶的排名卻截然不同。
表1 用戶A、B、C、D的排名結(jié)果Tab.1 The ranking Results of Users A, B, C, D
對這四個用戶信息的具體分析,如圖2所示。
如圖 2(a)所示,四個用戶的粉絲根據(jù)他們的排名結(jié)果被分成了五個排名級別,每一個排名級別的粉絲數(shù)都是不一樣的。比如,用戶A的粉絲中,有293人的排名在10 000個用戶的樣本中,是在前2 000名內(nèi)的,有120人的排名是在前4 000名到前2 000名內(nèi)的。
將用戶A和用戶B比較,他們的粉絲數(shù)相似,但用戶B的粉絲有更多高信任值、排名靠前的粉絲,而用戶A的粉絲們的排名分布比較分散,換句話說,用戶B的高信任值的粉絲占比高于用戶A的高信任值的粉絲占比,這一結(jié)果影響了用戶A、B的排名。將用戶A和用戶D相比,他們兩人的粉絲排名分布的趨勢是大致相同的,但是用戶D的粉絲數(shù)在每一個級別都比用戶A多,這也是用戶D的排名要靠前于用戶A的因素之一。
如圖 2(b)所示,四個用戶發(fā)表的博文也根據(jù)它們的排名結(jié)果被分成了六個排名級別。將用戶B和用戶C的博文排名分布進(jìn)行比較,用戶C發(fā)表的總博文數(shù)要略微少于用戶B發(fā)表的,但用戶C發(fā)表的大多數(shù)博文都屬于排名級別最高的一組,這是用戶C的排名比用戶B更靠前的因素之一。將用戶A和用戶D比較,他們博文的排名分布趨勢大致相同,但用戶D發(fā)表的博文數(shù)要多于用戶A發(fā)表的博文數(shù),這也影響了是用戶A、D的排名。
圖2(c)顯示了給用戶A、B、C、D的博文點贊的用戶的排名分布,同樣將這些用戶根據(jù)他們的排名結(jié)果分成五個排名級別。將用戶 A、用戶B和用戶D的數(shù)據(jù)相比,給用戶B博客點贊的用戶超過半數(shù)都位于信任級別最高的那一組,這是用戶B的排名相對用戶A更高的因素之一。盡管給用戶D博文點贊的用戶要遠(yuǎn)多于用戶B的,一方面是由于上述提到用戶 B、D的粉絲和發(fā)表博文的數(shù)量和排名分布的因素,另一方面,給用戶B的博文點贊的用戶中高信任值的用戶的數(shù)量也是一個影響因素。將用戶A和用戶D的數(shù)據(jù)相比,我們可以看到,除了用戶分布,互動用戶的數(shù)量也是影響結(jié)果的因素。
圖2(d)顯示了為用戶A、B、C、D的博文評論和轉(zhuǎn)發(fā)的用戶的排名分布。比較用戶A和用戶B,或者用戶A和用戶D的用戶分布,給博文評論和轉(zhuǎn)發(fā)的用戶的排名分布和數(shù)量是兩個重要的因素。但對于用戶C來說,相比其他樣本用戶,他(或她)沒有收到高級別用戶的轉(zhuǎn)發(fā)和評論,也沒有很多的用戶對他(或她)的博文轉(zhuǎn)載和評論,但是用戶 C的最終排名是四個用戶中最高的。一方面,是由于評論或者轉(zhuǎn)發(fā)關(guān)系在整個模型構(gòu)建中,我們并沒有給予這兩種關(guān)系很高的權(quán)值,使這兩種關(guān)系發(fā)揮過大的作用。另一方面,一些單個的關(guān)系的影響是有限的,最終結(jié)果是由多種關(guān)系和因素或多或少、或強或弱的共同作用的結(jié)果。
將相同的數(shù)據(jù)集用 PageRank[7]和 TURank[8]計算。PageRank只使用到了關(guān)注關(guān)系。TURank使用到的數(shù)據(jù)關(guān)系有關(guān)注、發(fā)表、被發(fā)表和轉(zhuǎn)發(fā)。SWCoRank使用除此之外的點贊、@、評論等關(guān)系來構(gòu)建用戶網(wǎng)絡(luò)和博客網(wǎng)絡(luò),用戶和博客之間由發(fā)表、被發(fā)表、點贊和@的關(guān)系耦合而成。經(jīng)過三個方法的計算得到的結(jié)果后,每組方法得到的前100名用戶中,有56位用戶是重合的,說明三種方法在對用戶進(jìn)行評估時,都具有一定的科學(xué)性和趨同。
從表2,表3可以得到結(jié)論:由于PageRank只考慮了關(guān)注關(guān)系,TURank不考慮點贊、@和評論的關(guān)系,使得部分用戶的排名結(jié)果與SWCoRank得到的結(jié)果存在較大的差異。在社交網(wǎng)絡(luò)中,更多關(guān)系的加入使得用戶和信息的評估更加客觀。
表2 四位用戶的PageRank、TURank和SWCoRank排名Tab.2 Ranks of Four Users by PageRank,TURank and SWCoRank
表3 四位用戶的各類數(shù)據(jù)關(guān)系及統(tǒng)計Tab.3 Statistics of Four Users
本文針對新浪微博環(huán)境,提出SWCoRank算法,對微博中的用戶和信息進(jìn)行信用評估,并通過實驗驗證,得到SWCoRank的特性。接下來的研究中,將會對文本內(nèi)容進(jìn)行評估,使用基于圖結(jié)構(gòu)分析為主,基于文本內(nèi)容分析為輔的混合方法,對微博用戶和信息進(jìn)行信用評估。