趙旭劍,王崇偉,王俊力
(西南科技大學計算機科學與技術學院,四川綿陽 621010)
社交網絡平臺的開放性與社交性導致其迅速發(fā)展,與之對應的則是爆炸式的微博數(shù)據(jù)增長[1]。微博中突發(fā)社會事件以社交網絡或新聞網站為傳播載體,經過傳播發(fā)酵產生社會熱點事件,隨著時間推移與事態(tài)發(fā)展,熱點事件形成動態(tài)演化,在各個時間戳上產生不同的關鍵信息,其中蘊含著事件間錯綜復雜的發(fā)展演化關系。盡管微博擁有豐富的社會熱點事件資源,但面對海量數(shù)據(jù),用戶卻難以捕獲社會熱點事件中的各個演化階段的關鍵信息。作為社交網絡的代表性平臺,新浪微博為事件的傳播作出了巨大貢獻,但從社會網絡信息傳播的角度看,微博的“轉發(fā)”特性帶來大量冗余信息也導致了信息泛濫,因此,社會熱點事件的過濾篩選和關鍵事件抽取對用戶了解社會熱點、追蹤熱點演化具有重要意義[2-4]。此外,從社會熱點事件中提取關鍵事件,對決策者分析輿情態(tài)勢、引導社會輿論等同樣具有研究意義。
目前,社會熱點事件的相關研究工作以事件內容特征為基礎,傳統(tǒng)方法中詞頻-逆文本頻率(Term Frequency-Inverse Document Frequency,TF-IDF)模型是衡量文本重要性的最常用模型,但TF-IDF 模型僅能在詞語級別揭示事件的重要性。最近有研究人員基于貝葉斯網絡對網絡輿情事件分析[5],也有一些研究提出將事件建模為圖結構,利用支配集算法或計算圖節(jié)點的度與聚集系數(shù),從圖論的角度考慮節(jié)點的重要性,從而提取關鍵事件[6-7],但構建圖需要豐富的事件語義信息,而這是微博數(shù)據(jù)所缺乏的??傊?,以上研究都忽略了微博環(huán)境下事件的傳播對關鍵事件的影響。
為解決上述問題,本文提出一種融合事件社會影響力和時間分布的微博關鍵事件提取方法。首先,基于微博中事件特征對事件的社會影響力建模;然后,基于事件演化的時間分布特征,提取不同時間分布下的關鍵事件;最后,基于真實微博數(shù)據(jù)集的實驗表明,本文方法能有效提取社會熱點事件各演化階段的關鍵事件。本文主要工作如下:
1)提出了一種建模微博事件重要性的方法。通過建立與事件主題相關的社會影響模型,挖掘微博事件重要元素,構建基于微博社會影響力的事件重要性評價模型。
2)建立融合事件社會影響力和時間分布的微博關鍵事件檢測模型?;谑录鐣绊懥?,融合微博事件演化過程中的時間特性以捕獲事件在不同時間分布下的差異,并檢測各演化階段的關鍵事件。
3)在兩個真實微博數(shù)據(jù)集上對本文提出的抽取方法進行了實驗驗證并構建了一個微博關鍵事件抽取系統(tǒng),實驗結果表明,所提方法能有效抽取微博熱點中的關鍵事件,抽取效果優(yōu)于傳統(tǒng)方法。
面向社交網絡的數(shù)據(jù)挖掘是目前Web 文本挖掘的重要研究方向。針對微博的數(shù)據(jù)挖掘分析一般包含話題事件挖掘、情感分析和網絡輿情分析等。其中話題事件挖掘包括高質量信息抽?。?]和事件演化挖掘[9-10]等,而目前高質量信息抽取側重于事件抽取[11]和事件摘要[12],有別于本文工作所關注的關鍵事件抽取研究。當前社會熱點中關鍵事件提取方法可分為基于傳統(tǒng)內容特征的方法、基于圖的方法和基于機器學習的方法,下面將簡述不同方法的特點與不足。
1)基于傳統(tǒng)內容特征的方法。該類方法利用事件內容特征對事件進行評價排序,通過得分排名提取關鍵事件。如歐陽逸等[11]計算事件中關鍵詞的TF-IDF 得分,將關鍵詞得分之和作為事件得分,提取得分排名靠前的事件作為關鍵事件;彭敏等[8]將事件多特征融合并轉換到小波域捕獲事件間的細節(jié)差異,并引入核主成分分析進行特征變換提取關鍵事件;夏立新等[13]利用事件熱點劃分輿情關系,基于TextRank算法提取事件關鍵詞和關鍵事件的文本摘要,最后建立事理圖譜并可視化事件摘要。
2)基于圖的方法。該類方法基于事件內容特征關系把事件建模為圖結構,利用圖算法,將提取關鍵事件轉化為提取圖中關鍵節(jié)點。如李培等[6]基于相似性將微博建模為多視點圖,利用最小權重支配集求解重要節(jié)點以提取關鍵事件,并引入Top-K集緩解微博數(shù)據(jù)量巨大的問題;Yuan 等[7]引入度與聚集系數(shù)[14]評價圖中節(jié)點重要性提取關鍵事件。
3)基于機器學習的方法。該類方法利用機器學習算法對熱點事件建模學習,實現(xiàn)關鍵事件提取。如田世海等[15]融合網絡表示學習與K均值聚類算法,將輿情事件用低維向量表示,聚類得到輿情事件;李進華等[16]使用K均值聚類算法、K最近鄰分類算法和決策樹三類方法建模微博事件的地理特征,檢測提取不同地理位置的關鍵事件。
上述方法從事件內容特征的角度對事件重要性進行評價,并引入了外部模型(例如圖算法)進行算法增強,但忽略了事件傳播對事件重要性的影響,彭敏等[8]雖然引入微博事件的傳播行為特征,但復雜的數(shù)學變換將導致巨大的時間開銷?;跈C器學習的方法雖然對事件特征進行細粒度建模,但忽略了社交網絡中的事件特性。本文利用事件的社會影響力彌補基于內容特征方法的不足,此外引入事件時間分布,最大限度保證抽取事件在時間線上分布的合理性,提升關鍵事件抽取精度。
定義1熱點事件。熱點事件E指社會突發(fā)事件在傳播介質中經過傳播發(fā)酵和演化發(fā)展形成的具有一定演化階段的事件聚合體。
定義2關鍵事件。關鍵事件e指熱點事件E在其演化過程中,各時間戳上最具代表性的事件,是組成熱點事件的基本單位。因此,上述熱點事件E可形式化定義為E={e1,e2,…,ei,ei+1,…,en},其中ei表示E在第i個時間戳上最具代表性的事件。
為有效提取社會熱點中的關鍵事件,反映社會熱點事件的發(fā)展演化過程,本文提出一種融合微博事件社會影響力和時間分布的關鍵事件抽取方法,主要包括如下4 個步驟,如圖1 所示。
圖1 融合社會影響力和時間分布的微博關鍵事件提取框架Fig.1 Framework of key event extraction integrating social influence and temporal distribution
1)微博數(shù)據(jù)采集,基于微博的“話題”標簽對熱點事件的數(shù)據(jù)進行采集。
2)文本預處理,對微博數(shù)據(jù)進行切分、冗余過濾、時間表達式規(guī)范化等。
3)社會影響力建模,基于微博的社會影響力特征建立事件重要性評價模型。
4)時間分布模型,分析事件演化的時間分布,捕獲不同時間戳上的關鍵事件。
為采集相關社會事件微博數(shù)據(jù),利用微博的“話題”標簽,能夠有效提升檢索事件帖子的相關性。根據(jù)微博的搜索工具(https://s.weibo.com)對相關話題進行檢索,基于Scrapy爬蟲框架捕獲相關數(shù)據(jù)。圖2 展示了微博數(shù)據(jù)采集以及儲存的設計流程。對于初始化層,首先確定研究的社會熱點事件,分析事件核心詞和起止時間;在業(yè)務層,利用核心詞和時間構建爬蟲URL 地址池,基于Scrapy 爬蟲框架模擬用戶登錄并解析頁面中的微博帖子數(shù)據(jù);最后,將數(shù)據(jù)規(guī)范化并儲存。通過爬蟲解析并儲存到本地的微博數(shù)據(jù)主要包括微博發(fā)布者、微博原始文本、發(fā)布時間、轉發(fā)量、評論量、點贊量和原文鏈接等核心數(shù)據(jù)。
圖2 數(shù)據(jù)采集流程Fig.2 Flowchart of data acquisition
對于微博集合,本文的預處理模塊主要包含微博切分、冗余過濾和時間規(guī)范化3 個步驟。圖3 展示了文本預處理過程。
圖3 文本預處理流程Fig.3 Flowchart of text preprocessing
微博切分 每一個完整的微博句子都能表示一種完整的事件語義信息,因此基于表達句子結尾意思的標點符號對微博帖子進行切分,得到大致的事件集合,然后考慮將每一個包含時間表達式的微博帖子視為一個事件。事件文本中的鏈接將被移除,并且少于25 個字符的事件將被舍棄,這些事件構成了最初的事件集合。
其中:Norz(len(ei))為歸一化事件ei的內容長度,ε指自然常數(shù)。
冗余過濾 由于微博的“社交”特性,轉發(fā)將導致大量的冗余微博,使事件集合存在大量冗余事件導致信息泛濫。此外,同一社會事件不同發(fā)布人員可能包含相似的文本內容,這部分重復數(shù)據(jù)也應該考慮刪除。因此為了有效過濾冗余帖子,基于顯式相似度對事件集合進行冗余過濾,提出了使用兩層相似度衡量事件相似性,分別是句子層面和事件集合層面:句子層面的相似度由最長公共子串計算,可以有效去除由轉發(fā)帶來的重復微博;事件集合層面的相似度利用TF-IDF 算法將事件文本表示為向量,通過計算事件向量的余弦相似性得到,能有效去除由相同事件帶來的重復微博。最后總體相似度由式(2)計算:
基于事件間的總體相似度,利用增量聚類的思想形成事件集合,此時每個事件集合中事件內容高度相似,保留每個事件集合中可理解性權重最大的事件,由此得到了低冗余度的事件集合。
時間規(guī)范化 時間是事件最重要的特征之一,微博事件中時間表達式主要可分為兩類[17],分別為顯式時間表達和隱式時間表達,其中顯式時間表達指直接的時間戳描述,而隱式事件表達指間接的時間戳描述。本文沿用其中對時間概念的定義,并對時間進行了細粒度劃分,把顯式時間表達劃分為完整顯式時間表達和模糊顯式時間表達,具體信息如表1 所示。時間表達式規(guī)范化主要是將模糊顯式時間表達和隱式時間表達進行規(guī)范,將其統(tǒng)一為完整顯式時間表達的格式。
表1 時間表達式分類Tab.1 Classification of time expressions
此外,通過數(shù)據(jù)分析發(fā)現(xiàn)微博中社會事件的時間精度往往較低,因此本文僅將事件的時間精度精確到“日”級別。對于顯式時間表達,利用正則表達式對事件中的所有顯式時間進行識別,設定了兩種模糊粒度,分別為(a)“X 月X 日”和(b)“X 日”,并提取其時間表達式,采用一種順序匹配的方法對事件中的模糊時間進行補全。首先,經過時間表達式匹配得到了每個事件中的所有時間表達式集合,并把該事件微博的發(fā)表時間作為基準時間;然后,遍歷時間集合中的時間表達式,用基準時間補全每次遍歷到的時間戳(如果該時間戳為模糊時間的話);接著,將新補全的時間表達式作為新的基準時間,繼續(xù)遍歷時間集合,直到集合遍歷完畢。算法1 展示了對每個事件包含的模糊時間表達式規(guī)范化過程。
算法1 模糊時間表達式規(guī)范化。
輸入 事件tei,時間戳集合T={t1,t2,…,ti,ti+1,…,tn}。
輸出 具有標準化時間表達式的事件te'i。
對于隱式時間表達,基于規(guī)則編寫隱式時間表達式識別的正則表達式,通過建立時間映射規(guī)則將隱式時間表達式規(guī)范化。例如“今日”“今天”和事件原始微博的發(fā)布時間建立映射關系,而“昨日”“昨天”在建立映射關系的前提下,相較基準時間進行時間偏移。表2 展示了部分高頻隱式時間表達式的映射關系。
表2 隱式時間表達映射Tab.2 Implicit time expression mapping
微博熱點事件往往隨時間在各個演化階段產生事件內容的動態(tài)變化,導致傳統(tǒng)的事件抽取方法不能準確提取各個演化階段的事件信息;同時,用于構建熱點事件演化集合的事件個體在時間維度上必須能全面地代表熱點事件的演化信息。對于社交網絡而言,意見領袖對微博社會事件傳播具有更強的影響力,因為他們通常比普通用戶傳遞更多的關鍵信息,因此,意見領袖發(fā)表的帖子更有可能成為具有代表性的事件。本文提出使用基于社會影響力的評價模型來衡量事件的代表性,利用微博的轉發(fā)、評論和點贊來量化事件的代表性程度。如果一篇文章有更多轉發(fā)、評論和點贊,那么本文認為該帖子包含了大量用戶都能識別的基本信息。因此,與那些轉發(fā)、評論和點贊相對較少的微博相比,這條微博將更有可能討論具有代表性的事件。具體來說,事件的社會影響力(Social Influence,SI)可以用式(3)來表示:
其中轉發(fā)、評論和點贊的數(shù)量被定義為fn、Cn和ln;α、β和γ表示不同的影響力權重;ε是自然常數(shù),使計算得到的社會影響力大于0 并且更加平滑。
微博熱點事件由許多關鍵事件構成,反映熱點事件隨時間的演變。對于同時發(fā)生的事件,用戶的注意力是有限的,這意味著用戶通常關注具有更大社會影響力的事件,因此,提取代表性事件需要考慮事件的時間分布。本文根據(jù)事件的時間分布,選取具有更大社會影響力的事件來表征關鍵事件。
關鍵事件序列在事件演化時間軸上的分布是較為分散的,過于集中在某個時間戳上的關鍵事件將無法反映事件演化的全部過程。通過考慮事件的社會影響力,對每一個時間戳的重要性程度加權,在每一個時間戳上提取具有更高社會影響力的事件,同時通過時間戳權重確定每個時間戳上提取的事件數(shù)量。對事件的時間序列Et,每個時間戳的權重IW(ti)定義為:
即ti時刻事件的社會影響力之和。同時,ti時刻提取的關鍵事件個數(shù)N(ti)被定義為:
式中:Min_IW和Max_IW分別指所有時間戳上社會影響力的最小值和最大值,通過歸一化計算得到每個時間戳的重要性程度加權;n是一個常數(shù),表示每個時間戳提取關鍵事件的最大值,通過實驗本文n值取2,最外層括號表示向下取整。
算法2 描述了通過融合微博事件演化過程中的時間特性以捕獲事件在不同時間分布下的差異,并檢測各演化階段關鍵事件的具體過程。首先對熱點事件E={e1,e2,…,ei,ei+1,…,en},記錄每一個事件的時間戳信息,得到事件的時間戳序列Et={t1:[…,e(i-1),ei,e(i+1),…],t2:[…,e(j-1),ej,e(j+1),…],…};然后遍歷每個時間戳ti中的事件,將ti中具有最大社會影響力的事件加入關鍵事件集合C中,并從ti中刪除該事件;接著判斷ti時刻提取的關鍵事件是否為n個,若小于n則重復上述過程直到提取事件個數(shù)滿足條件;最后得到抽取的關鍵事件集合C。
算法2 關鍵事件提取。
輸入 熱點事件E={e1,e2,…,ei,ei+1,…,en}。
輸出 關鍵事件抽取結果C={e'1,e'2,…,e'j,e'j+1,…,e'm}。
為了評估系統(tǒng)的性能,在新浪微博上收集了兩個真實事件的微博數(shù)據(jù)集進行實驗,通過特定事件相關的查詢詞,對包含這些查詢詞的微博帖子進行爬取。數(shù)據(jù)集詳情如表3所示,圖4 顯示了數(shù)據(jù)集中不同日期的帖子數(shù)量。
表3 數(shù)據(jù)集詳情Tab.3 Details of datasets
圖4 不同時間節(jié)點的帖子數(shù)量Fig.4 Number of posts at different time nodes
為了評測事件提取方法的實驗性能,將本文方法與4 種基準方法進行了比較,如下所述:
1)隨機選擇(Random),從事件集合中隨機選擇關鍵事件,表示一種隨機的思想。
2)詞頻-逆文本頻率(TF-IDF)[11],計算TF-IDF 分數(shù),選擇較高分數(shù)的事件作為關鍵事件。
3)最小權重支配集(Minimum-Weight connected Dominating Set,MWDS)[6],基于事件相似度構建圖結構,利用最小權重支配集算法選擇關鍵事件。
4)度與聚集系數(shù)(Degree and Clustering Coefficient Information,DCCI)[7],基于事件相似度構建圖結構,基于度與聚集系數(shù)選擇關鍵事件。
本文的事件提取評價標準基于人工標注,邀請數(shù)據(jù)挖掘的研究人員從微博帖子中提取標準的關鍵事件,并使用完整性和冗余度作為事件提取的評價指標。完整性是指集合中的關鍵事件是否能充分反映熱點事件隨時間的演變過程。本文基于ROUGE(Recall-Oriented Understudy for Gisting Evaluation)來評估事件集的完整性[18]。具體使用ROUGE-1和ROUGE-L(ROUGE-Longest common subsequence)來評價事件集的完整性;此外,本文還用冗余度來評估事件集的重復信息。本文定義每個事件的冗余度是與集合中最相似事件的相似度,而事件集合的冗余度是每個事件的冗余度之和。這意味著每個事件與其他事件盡可能不同,事件集的冗余度將更小。其中冗余度(Redundancy)由式(6)計算:
表4 展示了在兩個不同數(shù)據(jù)集上的幾種方法的性能比較結果。與其他方法相比,在完整性評估中,本文方法取得了最佳的ROUGE-1 和ROUGE-L,這意味著本文提出的基于社會影響力和時間分布的方法能夠從微博中準確提取關鍵事件。此外,本文方法在Dataset1的冗余度評價中取得了第二名,在Dataset2中取得了第一名,這意味著本文方法提取的關鍵事件幾乎都是純凈的,即每個事件都能較好地表示熱點事件在不同演化階段的差異。進一步分析,本文方法在Dataset1上的冗余度性能略差于TF-IDF 算法,部分原因是TF-IDF 算法考慮了事件中單詞的特殊性,導致TF-IDF 算法提取的關鍵事件是盡可能稀有的。而事實上,由于社交網絡的轉發(fā)特性,包含稀有詞匯的事件社會影響很小,這恰恰與本文考慮的方法相反。
表4 事件提取性能比較Tab.4 Comparison of event extraction performance
為了驗證本文方法在微博環(huán)境下抽取關鍵事件的有效性,本文設計并開發(fā)了一個面向微博的微博事件抽取系統(tǒng)Post2Event。如圖5 所示,Post2Event 主要包含兩個對象模塊:數(shù)據(jù)模塊(圖5(a))和事件模塊(圖5(b))。數(shù)據(jù)模塊顯示本地數(shù)據(jù)集以及數(shù)據(jù)集中各熱點事件的微博熱度。用戶可以瀏覽本地數(shù)據(jù)集,并在界面中可視化每個數(shù)據(jù)的詳細信息。此外,Post2Event 提供了一個查詢接口,用戶可以從數(shù)據(jù)庫中檢索相關的熱點事件。在事件模塊中,用戶能得到系統(tǒng)自動抽取出的各個時間戳上的關鍵事件以及整個熱點事件的關鍵詞分布,讓用戶可以準確把握熱點事件演化分支的主題方向。
圖5 Post2Event系統(tǒng)快照Fig.5 Snapshots of Post2Event system
社會熱點事件爆發(fā)往往會引起數(shù)百萬的微博討論,針對新浪微博信息爆炸式增長的問題,從社會熱點事件中提取關鍵事件具有較高應用價值。本文通過將事件的社會影響力和時間分布進行混合建模,提出一個面向微博熱點事件的關鍵事件提取框架,能夠有效抽取微博熱點中的關鍵事件,建模事件的發(fā)展演化過程。在兩個真實微博數(shù)據(jù)集上對本文提出的抽取方法進行了實驗驗證并構建了一個微博關鍵事件抽取系統(tǒng),對完整性和冗余度兩個指標進行評價,結果表明本文提出的抽取方法能保證提取事件集合的完整性,同時有效減小提取事件集合的冗余度。