馬 倩,王 新,鄭承宇,王 婷
(云南民族大學(xué) 數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,云南 昆明 650500)
在科技進(jìn)步、因特網(wǎng)發(fā)展的背景下,出現(xiàn)了各種社交媒體應(yīng)用,用戶能夠利用社交媒體分享自身心得,推薦自己喜歡的東西,發(fā)表自己的觀點,和別人交流各種經(jīng)驗等,從1個信息接受者成為了信息發(fā)布和接受者.微博是1種很有代表性的可以分享圖片、文字、視頻的社交媒體.2020年微博發(fā)布首季度財報,其中數(shù)據(jù)顯示,微博用戶規(guī)模首季度增長再創(chuàng)新高,月活人數(shù)均值已經(jīng)達(dá)到5.5億,日活人數(shù)均值也超過2.41億,尤其是新冠疫情之后,越來越多的用戶利用微博獲取全球各種新聞,使得民眾以最快的速度了解到當(dāng)前的疫情發(fā)展趨勢,同時微博也開始成為各國各地防疫新情況、防疫新措施的重要平臺,每天登陸瀏覽、發(fā)布微博的用戶也更加活躍,平均每天超2億,其日均流量已經(jīng)持續(xù)一、二月,超過2019年同期五成之上.因此,如何能夠更好更迅速地搜索到自己喜歡的微博,甚至不用搜索就可以被微博自主推薦越來越受到關(guān)注.
針對微博推薦算法主要分成以下幾類:①協(xié)同過濾推薦.基于用戶或項目的類似性進(jìn)行推薦.②在協(xié)同過濾的技術(shù)的基礎(chǔ)上延伸和發(fā)展出來的推薦方法,研究引入不同的屬性,譬如,專家信息、用戶間的社交關(guān)系等;或改善協(xié)同過濾中的模型,如矩陣分解等.Manca M等[1]針對社交交互超載,在社交書簽領(lǐng)域通過挖掘標(biāo)記系統(tǒng)中的用戶行為,分析用戶標(biāo)記的書簽以及每個使用的標(biāo)記的頻率進(jìn)行推薦.He Y等[2]利用關(guān)注關(guān)系,引入推特?zé)嵋蜃雍陀脩魴?quán)限因子,使用RS和線性回歸的方法來確定參數(shù)平衡推特?zé)嵋蜃又岛陀脩魴?quán)限事實,從而建立了基于語義網(wǎng)絡(luò)的新浪推文及時個性化推薦模型,實現(xiàn)個性化、實時的推薦.Lu X等[3]通過改進(jìn)簡單的正、反關(guān)系模型中定義了相似公式,提出了基于結(jié)構(gòu)平衡的交互式朋友推薦系統(tǒng)的構(gòu)建方法,但是交互信息考慮得并不完善.學(xué)者們對于加入重要用戶的信息也展開了深入的研究.張凱涵等[4]通過劃分社區(qū),確定各個社區(qū)的專家,引入信任關(guān)系和專家信息對專家評分矩陣進(jìn)行填補(bǔ),對新用戶產(chǎn)生推薦,可以對冷啟動問題進(jìn)行一定弱化.王建芳等[5]學(xué)者在對專家信任度進(jìn)行量化時,引入了評價偏差度、活躍度、可信度等指標(biāo),從而對專家算法進(jìn)行優(yōu)化,同時和用戶、項目偏置算法結(jié)合,得出更客觀的預(yù)測評分,但是信息融合的不夠完善.劉國麗等借助于jaccard相關(guān)系數(shù),與加權(quán)處理的pearson相關(guān)系數(shù)、用戶平均評分因子等,對相似度算法進(jìn)行相應(yīng)優(yōu)化,并在預(yù)測評分時在傳統(tǒng)的同社區(qū)內(nèi)專家信任的基礎(chǔ)上,引入不同社區(qū)專家信任,顯著提高推薦準(zhǔn)確性[6].
將目前的推薦算法應(yīng)用到微博推薦中,可能會有以下問題:①社區(qū)劃分.一般社區(qū)劃分算法都是根據(jù)內(nèi)容進(jìn)行劃分.這種劃分可能使得劃分的社區(qū)過多,數(shù)據(jù)稀疏.②專家的確定.微博用戶的影響力除了需要考慮根據(jù)用戶的粉絲數(shù),平均被轉(zhuǎn)發(fā)數(shù),平均被評論數(shù),平均被點贊數(shù)幾種因素以外,微博用戶是否進(jìn)行認(rèn)證、用戶的認(rèn)證類型以及發(fā)布的微博的質(zhì)量也是很重要的1個影響因素.但目前進(jìn)行微博推薦的文獻(xiàn)中,較少反映了這一點.③社交關(guān)系的引入.大部分文獻(xiàn)中引入的社交關(guān)系都是用戶的信任關(guān)系,但是僅考慮信任關(guān)系不太符合現(xiàn)實生活,且容易忽略其他因素的影響.不同社區(qū)專家的信息的引入,再計算用戶和專家集合的相似性為用戶進(jìn)行推薦預(yù)測,這使得推薦結(jié)果的準(zhǔn)確率得到一定的提升.但是專家信息形成的相關(guān)矩陣有些稀疏,且社區(qū)間的專家之間的關(guān)系也沒有考慮.以文獻(xiàn)[7]所給出的社區(qū)劃分法為基礎(chǔ),通過改進(jìn)的規(guī)則計算用戶權(quán)威度得出專家用戶,將專家興趣作為目標(biāo)來對用戶加以推薦.
社交網(wǎng)絡(luò)中的社區(qū)劃分主要是對節(jié)點(即用戶)的屬性進(jìn)行劃分,譬如用戶相似度、社交關(guān)系等.將具有一致屬性節(jié)點分派到相同社區(qū)之中.分到同一社區(qū)之后,根據(jù)需要進(jìn)行好友推薦,興趣愛好推薦等.張繼東根據(jù)這一特性提出了基于用戶交互級別、用戶專業(yè)知識水平、信任程度的算法對社區(qū)進(jìn)行劃分[7].用戶的交互程度可以用用戶之間的連線來表示,連線的粗細(xì)分別代表著用戶之間交互的強(qiáng)弱.這種社區(qū)劃分的算法有別于其他的社區(qū),進(jìn)行推薦時精確度會更高.
用戶交互級別(LoI)(指一段時間內(nèi)用戶交互的程度) 如公式 (1)所示.
(1)
其中,NoI(x,y)t是用戶x與朋友y在一段時間t內(nèi)的交互次數(shù),NoIall(x)t是同時段內(nèi)用戶x與其所有朋友的交互的總次數(shù).
文獻(xiàn)[7]中為了算出不同用戶之間的信任度,還進(jìn)一步提出用戶專業(yè)知識水平概念.專業(yè)知識水平(LoE)(指目標(biāo)用戶的好友中同一類型的好友可能有多個,為了有更好的推薦,需要選擇專業(yè)領(lǐng)域中專業(yè)知識水平更高些的用戶,判別水平高低的概念即為專業(yè)知識水平),如式(2)所示.
(2)
信任值 (LoE) 通過對用戶交互級別和用戶的專業(yè)知識水平的加權(quán)和計算得到,如式(3)所示.
LoT(x,y)=α×LoI(x,y)t+(1-α)×LoE(x,y).
(3)
文獻(xiàn)[7]中為了避免使用靜態(tài)信任閾值喪失的部分真實性,還提出了動態(tài)信任閾值? ,如式(4)所示.
(4)
H是x對其所有朋友的信任等級列表,而∑Distinct(ti) 是H中不同值的列表.如果LoT(x,y)≥?,則可向用戶x推薦用戶y.
在進(jìn)行社區(qū)劃分時,文獻(xiàn)[7]將單個用戶表示的節(jié)點作為初始的獨立社區(qū),然后通過與其他節(jié)點計算用戶之間的交互級別、專業(yè)知識水平、用戶間的信任程度等,來確定是否用戶可以添加到原始社區(qū),重復(fù)以上步驟,至所有節(jié)點都可以規(guī)劃到某一社區(qū)內(nèi),即社區(qū)劃分結(jié)束;但是過多的特征并不一定會得到更精確的結(jié)果.
本文利用了文獻(xiàn)[7]中的社區(qū)劃分方法,縮小網(wǎng)絡(luò)范圍,在其基礎(chǔ)上引入了專家信息,對數(shù)據(jù)稀疏問題進(jìn)行緩解,提升推薦效果.其中信任度和閾值比較之后剩余的用戶人數(shù)成為專家候選集U1;然后根據(jù)改進(jìn)的用戶權(quán)威度的方法選出專家候選集U2,對專家興趣相似度進(jìn)行計算,從而向目標(biāo)用戶開展推薦.
微博用戶的權(quán)威度是微博用戶通過自身的影響力直接或間接地影響微博的傳播效率以及傳播范圍.學(xué)者們對于用戶的權(quán)威度度量也進(jìn)行了一些研究.張凱涵等通過計算用戶可信度、權(quán)威性、評分多樣性確定專家[4].文獻(xiàn)[8]中學(xué)者提出微博用戶權(quán)威度定量評價模型,而且這種模型是以多特征融合作為基礎(chǔ),主要是定量計算用戶信息完整度、用戶活躍度、信息傳播影響力、平臺認(rèn)證指數(shù)這幾個特征來實現(xiàn).文獻(xiàn)[9]在用戶權(quán)威度算法基礎(chǔ)上引入了用戶博文的傳播率挖掘用戶的潛在影響力,結(jié)合用戶的好友質(zhì)量,以優(yōu)化的PR算法為基礎(chǔ),成功搭建用戶權(quán)威度評估方法.
1) 用戶平臺的認(rèn)證指數(shù)UPI.微博用戶在經(jīng)過官方認(rèn)證之后,會成為加V用戶,受到更多的來自其他用戶的關(guān)注和認(rèn)可,從而影響用戶的權(quán)威度.根據(jù)文獻(xiàn)[8]定義的認(rèn)證計算公式(5).
UPI(x)=δ·A(x)+τ·G(x)+γ·V(x).
(5)
其中,x為用戶,其是否為認(rèn)證用戶則用A(x)表示,值為0或1,認(rèn)證為1,非認(rèn)證為0;G(x)代表用戶x的微博賬號等級;V(x)代表用戶x是否為VIP用戶,值為0(不是VIP用戶)或1(VIP用戶).但是由于微博的等級查詢功能已經(jīng)下架,因此,引入用戶等級的計算方法無法使用,因此本文在認(rèn)證指數(shù)中引入認(rèn)證類型的分配權(quán)重,如式(6)所示.
UPI(x)=(δ·A(x)+γ·V(x))·wij.
(6)
wij是特征詞ti在認(rèn)證類型文檔Dj中的基本權(quán)重,是經(jīng)典TF-IDF的變形,用文檔頻率的對數(shù)代替TF,減少TF的線性增長,具體計算公式如(7)所示:
(7)
2) 用戶活躍度.影響力較大的用戶發(fā)布的微博一般比較多,因此用戶的活躍度可以通過計算用戶在一段時間內(nèi)的發(fā)表的微博的數(shù)量來度量,在這里引入一個時間效用函數(shù),降低計算的復(fù)雜度,如式(8)所示.
(8)
f(t)=(1+θ)-t.
(9)
是1種時間效用函數(shù)[10].微博的f(t)的取值范圍為(0,1],值越大,活躍度變化趨勢越大,意味著微博的發(fā)布時間對用戶活躍度的影響越大.θ(θ>0)是調(diào)整因子,是一個表示微博新鮮度的數(shù)值,值越小,新鮮度變化趨勢越小,意味著微博發(fā)布時間對微博新鮮度的影響越小;如果值為0,意味著任何時間發(fā)布這個微博完全不影響微博的新鮮度.t為微博的發(fā)布時間與爬取時間的間隔天數(shù).
3) 用戶的傳播影響力.用戶的傳播影響力和用戶的粉絲數(shù)、用戶發(fā)布微博的被轉(zhuǎn)發(fā)數(shù)、用戶發(fā)布微博的被評論數(shù)有關(guān),用戶的傳播影響力如式(10)所示.
(10)
由于用戶的不同屬性的特征之間的區(qū)間差距很大,因此,屬性特征值區(qū)間差異較大,不能直接進(jìn)行線性相加計算,需要進(jìn)行歸一化處理,如式(11)所示.
(11)
通過歸一化處理之后,其特征值用F0表示,F(xiàn)表示原始的特征值,F(xiàn)min表示所有用戶的該特征的最小值,F(xiàn)max對應(yīng)的是全部用戶所對應(yīng)此特征的最大值.
本文對微博用戶自身特征信息進(jìn)行歸一化處理后,定義了用戶自身影響力分?jǐn)?shù),計算公式如式(12)所示.
(12)
其中,Auth(x)表示用戶的權(quán)威度值,為了減少計算難度,權(quán)威度值為用戶的認(rèn)證信息,用戶的活躍度,以及用戶的傳播影響力的平均值.
按照用戶權(quán)威度,并遵循由大至小的次序進(jìn)行排列,選擇權(quán)威度排名前120名的用戶為專家用戶候選集U2;而專家用戶候選集U1和U2兩個專家用戶的合集為最終的專家用戶集.
2個用戶之間的相似度可以從用戶興趣相似的和用戶關(guān)系相似度等方面來計算.基于用戶興趣的相似度能夠充分挖掘用戶間的興趣愛好,可以給擁有相似興趣愛好的用戶推薦其感興趣的項目.基于用戶關(guān)系的相似度計算,能夠給用戶的信任好友進(jìn)行推薦.運用專家興趣愛好完成相似度計算,并將潛在專家向感興趣用戶進(jìn)行推薦,在一定程度上可以降低計算難度,緩解信息過載的問題[7].因為專家用戶發(fā)布的微博中一般原創(chuàng)微博的數(shù)量遠(yuǎn)超轉(zhuǎn)發(fā)微博的數(shù)量,能夠從原創(chuàng)微博中找出專家用戶興趣愛好,①借助于TF-IDF來對專家用戶原創(chuàng)微博興趣愛好關(guān)鍵詞加以提?。虎谟嬎氵@些關(guān)鍵詞的權(quán)重;③在計算興趣相似度時,應(yīng)用是余弦相似度方法,如式(13)所示.
(13)
其中,ui,vi表示專家用戶u,v的第i個興趣關(guān)鍵詞的TF-IDF值,m是興趣愛好關(guān)鍵詞的總數(shù).
結(jié)合算出的專家用戶興趣相似度、用戶信任度,得到最終推薦度,進(jìn)行推薦.
Pu,i=LoT(x,y)+sim(u,v).
(14)
通過對算法各階段的介紹,本文基于社區(qū)專家用戶權(quán)威度的微博興趣推薦算法流程如圖1所示,首先對于爬取到的微博數(shù)據(jù)按微博內(nèi)容的性質(zhì)進(jìn)行分類,對每個類別中的用戶按照粉絲數(shù),收藏數(shù),評論數(shù),點贊數(shù)之和排名選擇用戶,獲取其互關(guān)好友列表,通過計算用戶交互強(qiáng)度、用戶專業(yè)知識水平、用戶信任度來判斷用戶是否可以加入專家候選集U1.然后對原始微博數(shù)據(jù)按照其評論數(shù)是否大于50進(jìn)行一個預(yù)處理,通過計算用戶平臺認(rèn)證指數(shù)、用戶活躍度、用戶傳播影響力來判斷用戶權(quán)威度的大小,組成專家用戶的候選集U2.對U1、U2合集的專家用戶的原創(chuàng)微博通過TF-IDF提取興趣關(guān)鍵詞,并計算其權(quán)重;最后借助于余弦相似度,算出專家用戶的興趣相似度,結(jié)合用戶的信任度進(jìn)行推薦.
圖1 算法流程圖
通過網(wǎng)絡(luò)爬蟲技術(shù)及新浪微博提供的 API 獲取 10 525 條微博數(shù)據(jù).其中的用戶信息包括用戶昵稱、用戶ID、微博內(nèi)容、轉(zhuǎn)發(fā)數(shù)、評論數(shù)、點贊數(shù)、收藏數(shù)、總發(fā)博數(shù)目、關(guān)注人數(shù)、粉絲數(shù)、發(fā)布時間、微博類型、是否為VIP、認(rèn)證與否以及認(rèn)證類型等一系列信息.
本文在社區(qū)劃分中對用戶交互級別進(jìn)行計算時,需要對單個用戶的用戶好友列表的互關(guān)好友查看共同好友,以便計算共同好友比例;工程較為繁雜,且容易產(chǎn)生重復(fù)數(shù)據(jù),因此現(xiàn)將爬取到的微博數(shù)據(jù)經(jīng)過分詞,提取關(guān)鍵詞,進(jìn)行預(yù)處理之后,粗略地將將數(shù)據(jù)分為財經(jīng)、音樂、電影、綜藝、美妝、旅游、新聞、明星、汽車、房產(chǎn)、小說、游戲等12個社區(qū).以12個社區(qū)每個類社區(qū)點贊數(shù)、評論數(shù)、轉(zhuǎn)發(fā)數(shù)、粉絲數(shù)之和排名前10 的用戶為代表,統(tǒng)計這120名用戶在微博上的共同好友列表,計算共同好友的比例,統(tǒng)計用戶間的互動次數(shù)和總的交互次數(shù),此處的互動數(shù),主要囊括了點贊、評論與轉(zhuǎn)發(fā)數(shù)量;并應(yīng)用到后續(xù)的用戶交互級別計算中.
圖2 用戶專業(yè)知識水平網(wǎng)絡(luò)圖
專業(yè)知識評價可以根據(jù)目標(biāo)用戶的歷史行為(比如點贊數(shù)、評論數(shù)、轉(zhuǎn)發(fā)數(shù)等),以及有用的文字消息(如認(rèn)證類型、認(rèn)證類型描述)進(jìn)行判別.如圖2所示,如果目標(biāo)用戶A想要查詢最近好看的綜藝方面的信息,可以從用戶B,C那里查找,詢問;如果想要查找新聞方面的消息,可以向用戶B,E,F(xiàn)請求相關(guān)信息.假設(shè)用戶B、E、F提供的信息中的有用新聞信息占新聞總消息的比例(比例即為專業(yè)知識水平,實際情況時需要通過爬取到的信息根據(jù)公式(2)計算)分別為8/10、2/5、3/12,比例進(jìn)行比較之后,就可以將用戶B的新聞領(lǐng)域的專業(yè)知識推給目標(biāo)用戶.
計算用戶權(quán)威度時,為了減少計算量,先將其中評論數(shù)少于50的微博刪除.之所以選擇以評論數(shù)為判斷依據(jù)而不是轉(zhuǎn)發(fā)數(shù)或者點贊數(shù),主要是因為評論的操作較其他2種復(fù)雜,權(quán)重系數(shù)偏重;而收藏數(shù),爬取出的數(shù)據(jù)基本都較少,差距并不大,因此不考慮.利用Python中開源項目jieba分詞對認(rèn)證類型、認(rèn)證類型描述組成的文本進(jìn)行分詞,去停用詞,關(guān)鍵詞提取和刪除特殊符號,最后根據(jù)公式(12)計算權(quán)威值.
確定公式(6)中的δ、γ權(quán)值系數(shù)和公式(10)中的α1、α2、α3系數(shù),利用對最大特征向量與特征值進(jìn)行計算,并加入一次性校驗,最終可以得到5個因素的權(quán)值分別為(δ,γ)=(0.634 8,0.365 2),(α1,α2,α3)=(0.261 4,0.501 7,0.235 9).
公式(9)中的通過文獻(xiàn)研究得知,微博的保鮮時間為16.8天,所以θ一般取值為0.1~0.3,本文中取平均值0.2.
本文爬取到的微博信息中,特意選擇活躍度較高的明星社區(qū)中一個用戶作為目標(biāo)用戶u0,經(jīng)過統(tǒng)計得到目標(biāo)用戶與社區(qū)內(nèi)其他用戶的總交互頻次 159 870(即評論 53 442,點贊 104 517,轉(zhuǎn)發(fā) 1 327,收藏584),對微博文本進(jìn)行分析后提取各用戶提供給目標(biāo)用戶的信息總數(shù),目標(biāo)用戶所運用的信息總數(shù),見表1.
表1 目標(biāo)用戶u0的用戶交互以及用戶專業(yè)水平信息表
用戶權(quán)威度的計算出的結(jié)果基本符合實際情況,部分用戶的權(quán)威度如表2所示.
表2 用戶權(quán)威度計算結(jié)果
從表2中可以看到,權(quán)威度高的用戶大多是知名人物,其中娛樂明星占大多數(shù),而官方微博會偏低些.主要是因為知名人物的更新微博頻率較高,且粉絲數(shù)龐大,用戶交互頻率、傳播影響力較高;官方微博的專業(yè)知識水平較高,微博質(zhì)量高,粉絲領(lǐng)域非常廣泛,常常會就某一實事引起熱議,潛在影響力遠(yuǎn)大于一般明星.
圖3 不同算法的準(zhǔn)確率對比結(jié)果
大部分進(jìn)行微博推薦研究的數(shù)據(jù)集從大小,內(nèi)容,時間等都不相同,并且方法、評價指標(biāo)也各有組合,本次研究在評估實驗結(jié)果時,主要是對比分析召回率與準(zhǔn)確率.
在進(jìn)行對比實驗之時,先后與文獻(xiàn)[4,7,10]中的推薦算法加以對比,其中文獻(xiàn)[4]中為了保證算法性能占優(yōu),按照原文中實驗得的專家占比設(shè)置為0.2.各個算法的準(zhǔn)確率、召回率以及F1值的對比結(jié)果如下圖所示 .
從圖3可以看出,4種算法的準(zhǔn)確率都是1種上升的狀態(tài),但是相較于其他算法來說,本文的算法較為平緩,起伏不會過大.
圖4中,召回率剛開始最高的是文獻(xiàn)[4]中的算法,但是在一定程度時,另外3種算法下降幅度太大,整體來看,本文的算法召回效果稍好一些.
對于F1值而言,它是1個綜合性指標(biāo),可以衡量出召回率與準(zhǔn)確率,4種算法雖然綜合指標(biāo)差距不大,但是依然能從圖中看出整體而言,本文的算法還是稍好一些,在F1值、準(zhǔn)確率、召回率這幾個指標(biāo)方面都有一定改善.
圖4 不同算法的召回率對比結(jié)果 圖5 不同算法的F1值對比結(jié)果
本文中的推薦算法通過結(jié)合已有的由用戶交互強(qiáng)弱和專業(yè)知識水平組成的信任關(guān)系進(jìn)行社區(qū)劃分,選出專家候選集,并融合了改進(jìn)的用戶權(quán)威度選擇極具代表性的專家用戶候選集,計算專家用戶的原創(chuàng)微博的興趣作為推薦的依據(jù),對目標(biāo)用戶進(jìn)行推薦,同時以真實數(shù)據(jù)集為基礎(chǔ),和已有推薦算法進(jìn)行實驗結(jié)果對比,結(jié)果顯示,進(jìn)行社區(qū)劃分之后的專家推薦在提高推薦率的同時,還為用戶感興趣的領(lǐng)域推薦更專業(yè)的專家好友.但是,在本文中的實驗在進(jìn)行社區(qū)劃分時,過于粗糙,沒有進(jìn)行多項數(shù)目選擇的對比實驗,且很多參數(shù)直接根據(jù)多篇文獻(xiàn)的參數(shù)估算得到,實驗有待進(jìn)一步完善.今后的任務(wù)是繼續(xù)研究如何在進(jìn)行更精確地社區(qū)劃分后,提高微博的推薦的實時性,提高推薦算法的各項指標(biāo)及應(yīng)用到實際的推薦系統(tǒng)中,對推薦算法進(jìn)行優(yōu)化.