曹春萍,黃 偉
(上海理工大學 光電信息與計算機工程學院,上海 200093)
隨著微博成為網民公眾公開的表達意愿的平臺,政治、教育、民生、輿情監控等各個領域都與微博話題息息相關,從而使得信息傳播的影響也越來越難以控制。微博信息以指數級暴增,使得大眾對信息的獲取增加了難度,而微博熱點話題的發現能夠對政府的決策起參照作用,增強用戶信息獲取的能力。因此,通過分析微博數據內容,從微博的海量文本數據中挖掘出熱點話題的影響因素和熱點話題,對政府部門與官方微博在輿情監控以及輿論溝通方面上的決策具有重要意義[1]。
但是由于微博文本自身的特點,內容短小、表達隨意,且微博間還包含一些轉發評論點贊等引用關系,使得傳統的文本挖掘算法在微博中的表現不是很好。故本文針對微博的特點,綜合微博文本和微博用戶之間的關系,將特征詞、用戶權威度和微博之間的引用關系考慮到熱度分配算法中,得到特征詞的熱度排序結果,最后結合文本聚類得到大概主題即熱點話題。
目前,可以將微博熱點挖掘研究分為兩大類。一類是基于微博內容的研究。微博內容的研究主要分為概率模型和文本聚類兩大類方法。概率模型以LDA模型為代表,徐佳俊等[2]對微博語料集使用LDA模型,將話題從語料中提取出來,通過話題空間對應的話題文檔,計算話題強度,最終得到話題強度的排序。林丹等[3]利用LDA得到的關鍵詞進行聚類分析,提出文本關聯詞算法,最后對LDA話題簇進行優化調整,得到熱點話題。雖然當時LDA算法已經相當成熟,但是它并不能很好得將詞之間語義融合到熱點話題中,在話題提取中表現不佳。隨著深度學習在自然語言處理方面的巨大成功,這使得微博熱點話題挖掘又有了一大進步。劉少鵬等[4]研究了微博時效性、用戶喜好及話題符號對熱點話題的影響,通過聚類解決數據稀疏問題,將分層Dirichlet過程集成到非參數貝葉斯模型中,并提出了MB-HDP模型。于潔[5]指出,使用分布式方法得到的詞向量,能夠體現詞之間的相關性,從而克服微博話題中數據稀疏的問題。但是采用深度學習的進行文本聚類權值的選擇相對復雜,聚類時間相對較長。這類研究對詞頻,特征權重及引用關系的挖掘較準確,但往往會忽視用戶的相關屬性對文本聚類的影響,從而會使結果存在一些偏差。
另一類是基于微博用戶的研究,微博用戶的權威度因素,通過影響粉絲的對話題的關注與轉發,對微博熱點話題產生影響。陳姝等[6]基于理性行為分析微博用戶的轉發行為,考慮了微博語義、用戶特征、用戶交互等特點,發現了用戶活躍度、微博文本與用戶興趣的相似度對轉發行為影響顯著。劉功申等[7]研究用戶行為對微博轉發操作的影響,根據博主擁有的粉絲數量,以及粉絲與博主之間的互動,提出用戶對轉發量的影響力度量算法。但是上述研究僅根據影響力來研究熱門話題的產生,忽視了特征詞權重、詞對關系及引用關系,具有局限性。
針對以上問題,獲取較準確的微博熱點話題需綜合多個因素,每個因素的權重大小又會影響話題準確性。因此,本文提出基于用戶權威度與熱度分配聚類的微博熱點挖掘算法,該模型綜合特征詞權重排序順序、用戶權威度及博文之間的引用關系進行聚類分析計算特征詞熱度,得到特征詞的熱度排序結果即熱點話題。
本章認為:每條微博除了表面顯式的文本內容外,還有一些隱藏屬性,稱為隱式屬性。選擇哪些因素可以參考文獻[8]。本文選取下列顯式屬性,文字、話題標簽、被轉發數、被評論數、被點贊數;選取下列隱式屬性,特征詞以及權重、詞對關系、用戶權威度;作為評估微博熱門話題的因素。
對于微博的文本,要從兩個方面著重研究:第一,微博普通文本;第二,帶有話題標簽的文本。對于話題標簽,本文用topicTag表示,topicTag基本上是由##和【】表示,針對微博中的這些topicTag,還需單獨考慮其權重問題。
特征詞ti在微博dj中的權重及微博dj中含有topicTag信息的權重,使用改進TF-IDF[9]公式。
特征詞ti在微博dj中的基本權重,如式(1)所示
(1)
對于博文中含有topicTag信息的權重,如式(2)所示
(2)
最后,特征詞ti在微博dj中的權重定義為
weightij=tag_weightij×wij
(3)
微博文本中,使用基于SSE的自適應聚類算法[10]對微博數據進行聚類,得到聚類結果。
微博用戶權威度是通過對用戶轉發、評論的影響,從而間接性地影響微博熱點話題熱度。本文從用戶權威UA(user authority)入手,對其進行度量。具體定義見張仰森等的定義說明[11],用戶權威度的評價特征如下:
用戶擴散水平包括用戶粉絲數、博文被轉數、博文被評數;用戶活動率包括用戶關注數、用戶發博數、用戶評論數、用戶注冊時間;用戶平臺認證指數包括是否認證用戶、賬號等級。
構建評價特征三元組E(UDI,UAR,UPI), 其中UDI表示用戶擴散水平,UAR為用戶活動率,UPI表示用戶平臺認證指數。
用戶權威度UA(ui)、UDI(ui)、UAR(ui) 以及UPI(ui) 的計算公式將使用UIRank算法[11]。
用戶權威度具體如式(4)所示
UA(ui)=v1×UDI(ui)+v2×UAR(ui)+v3×UPI(ui)
(4)
關于用戶擴散水平,具體如式(5)所示
(5)
關于用戶活動率,具體如式(6)所示
(6)
關于用戶平臺認證指數,具體如式(7)所示
UPI(ui)=φ·A(ui)+ω·G(ui)
(7)
微博中,存在大量轉發、評論和點贊關系,稱之為引用關系,引用的微博約占微博總數的71%,引用的微博又是與主題相關的,本文算法將引用關系作為算法的重要因素。2.1節是關于特征詞在微博中的權重計算,可根據其權重計算結果對特征詞進行降序排序,排序越靠前表明越重要。
微博之間的引用關系可以用一個有向網絡來描述。被引用的微博用集合D={d1,d2,…,dm} 表示,引用的微博用集合C={c1,c2,…,cn} 表示,鏈接由上面兩個集合組成,方向從引用微博指向被引用微博,其中轉發關系用集合RP={rp1,rp2,…,rpl}, 比重為α; 評論關系用集合CM={cm1,cm2,…,cml} 表示,比重為β; 點贊關系用集合L={l1,l2,…,ll} 表示,比重為γ; 其中α+β+γ=1取α=0.3,β=0.5,γ=0.2。 特征詞用集合W={w1,w2,…,wl} 表示。
熱度分配算法(hot allocation method,HAM),HAM方法計算過程如圖1和圖2所示,詳細過程如下。

圖1 HAM方法計算過程1

圖2 HAM方法計算過程2
(1)隨機選取數據集中包含特征詞wi的微博dj, 并生成與微博dj有引用關系的微博集C={c1,c2,…,cb}。 接下來我們定義集合Pj={d1,d2,…,dc}, 該集合中的每條微博至少和微博dj有一個共同的特征詞,并且和微博集Cj有引用關系。
(2)我們計算Pj中第h條微博被集合Cj引用的引用權重qj,h, 其中rpx,y,cmx,y,lx,y分別表示cx與py之間是否有轉發、評論、點贊關系,且α+β+γ=1, 如式(8)所示
qj,h=∑rpx,y×α+∑cmx,y×β+∑lx,y×γ
(8)
然后計算一個熱度共享矩陣A,其元素是awi,h, 表示Pj中第h條微博中的wi特征詞的熱度含量。假設wi在包含k個特征詞的第h條微博中位于第r個位置,則awi,h的計算公式如下
(9)
(3)mwi,j表示特征詞wi在微博dj中分配的熱度,公式如下
(10)
其中,τ表示權重系數取τ=0.45, 在實驗部分確定,UA表示該條微博對應的用戶權威度。

(5)通過對M進行降序排序,我們就能得到特征詞的熱度排名。
通過對微博影響因素的分析與總結,得出算法總過程如下。
提取微博文檔數據集的topicTag信息。使用ICTCLAS分詞系統對文本內容及話題標簽進行分詞。根據式(3)計算微博中特征詞分配得到的權重,并使用基于SSE的聚類算法進行聚類。根據式(4)計算每篇微博對應博主的用戶權威度。根據詞熱度分配算法計算,得到特征詞的熱度排序降序結果。根據排序結果中的特征詞,得到對應聚類類簇的大概主題。
本實驗目的是驗證本文提出的基于用戶權威度與熱度分配的熱點話題發現算法是否能夠更準確地挖掘微博中的熱點話題。
本文采用八爪魚爬蟲工具從微博中爬取實驗數據集U,以2016年8月份微博的數據內容作為采集數據對象,總共采集了63 416個用戶的博文數據。該數據包括用戶信息、微博文本、文本間引用(轉評贊)關系。經過篩選剔除后,共得到有效樣本52 450個用戶數據,甄別無效樣本10 966個用戶數據。
本文對數據集進行人工話題篩選,得到10個話題類別,見表1。

表1 實驗語料
TDT評測會議給出了話題檢測的相關規范指標[12],本文采用的評價指標為:吞吐量、運行時間、準確率以及F值。
吞吐量(TPS)測試主要用來觀察模型建立的過程,每秒能夠進行多少條微博的處理;運行時間(T)表示從分詞之后到得到熱度分配的排序結果以及詞對共現矩陣排序結果的時間;準確率是算法結果與官方處理結果之間的正確性的比值;F值用于評價算法的綜合指標。
首先通過實驗為式(2)的常數ε選取合適的值,分別選取數據集中8000,15 000,25 000條數據的情況下,研究不同的ε值對熱度分配算法排序結果的準確性影響。
當ε過小時,與傳統的TF-IDF區別不大,當ε過大時,忽略微博中topicTag以外的特證詞,通過結果可知,ε=1.5的正確率是最高的,故本文選取ε=1.5。
其次,確定式(4)中的v1,v2,v3權值系數。求解最大特征值以及最大特征向量,并且加入一致性校驗,最終得到評價特征的權值為(v1,v2,v3)=(0.6373,0.1353,0.2273); 同理得到式(7)中的兩個因素的特征權值為(φ,ω)=(0.8334,0.1666)。
實驗步驟分為吞吐量測試、運行時間測試、準確率測試和F值測試4個部分。本文算法作為算法1與以下兩種算法進行比較。算法2:劉少鵬等的基于MB-HDP模型的微博主題挖掘[4];算法3:Yan D等詞向量+Single-Pass聚類[13]。
吞吐量測試主要用來檢查熱度分配與詞對共現矩陣模型建立的過程,吞吐量測試結果如圖3所示。

圖3 吞吐量測試結果
由結果可知,本文算法吞吐量結果基本穩定在8000條/s,在數據量大的情況下表現較好可以應對大數據的情況。
在運行時間測試之前,為了使實驗更具有對比度,本文將原始數據集U隨機分為3組不同的數據集進行測試。A組有8456微博數,B組有10 577微博數,C組有24 417微博數。
針對3組數據,分別使用上面說明的算法1、算法2以及算法3進行計算,運行時間的測試結果如圖4所示。

圖4 運行時間對比
可以看出在數據集規模相差較大的情況下,算法1運行時間受數據量影響不大,算法2、算法3運行時間受數據規模影響較為敏感,會隨著數據集的增長而較快增長。由此可見,本文算法效率適用于大數據集的場景,并且表現相對較好。
對于準確率的測試,本文收集了微博官方給出的熱門話題列表,將算法結果與官方結果進行比較。使用運行時間測試中的C組數據進行測試,準確率測試結果如圖5所示。

圖5 準確率測試結果
通過對比可以看出,本文算法在準確率方面也是優于算法1和算法2,得到熱點話題與官方話題基本相同,僅在話題順序上有點不同,同時選出的熱點話題帶有topicTag標記,使得話題描述更加準確。
F值測試主要用來檢測聚類的效果,為了進一步驗證算法的穩定性,驗證微博數據集為5000-40000逐漸遞增情況下的F值,F值測試的結果如圖6所示。

圖6 微博數據集對F值的影響
從圖6中可以看出,算法1的聚類效果隨著微博數據集增加F值的表現越來越好,符合聚類算法的特性。
本文針對以往熱點話題挖掘的缺陷,綜合多個熱點話題的影響因素,提出了基于用戶權威度與熱度分配的微博熱點話題算法,該算法很好結合了微博熱點話題的影響因素,綜合特征詞權重降序順序,對微博文本進行聚類分析得到主題類簇;根據用戶權威度及博文之間的引用關系計算特征詞熱度,得到特征詞的熱度排序結果,獲取特征詞對應聚類類簇的大概主題即熱點話題。實驗結果表明本文算法在微博熱點話題挖掘上表現較好。下一步可以考慮在文本內容之外,結合圖片表情及視頻資料,對微博數據內容進行更全面的分析,從而對微博話題進行更好的挖掘。