黃細鳳,廖泓舟
(中國電子科技集團公司第十研究所,四川 成都 610036)
群體性事件[1]是指由某些社會矛盾引發,特定群體通過規模性聚集、對社會造成負面影響的群體活動,因而對社會秩序和社會穩定造成重大負面影響的各種事件。由于群體性事件大多以現有公共次序的對立面所出現,所以通常無法利用傳統的新聞媒介公開進行大規模的組織和傳播,其傳播的隱蔽性使得提前預知相關信息十分困難。近年來隨著網絡社交媒體的廣泛應用,群體性事件的組織策劃者得以利用其強大的信息傳播能力和組織動員能力推動群體性事件的發生。這一方面極大地推動了群體性事件在全球許多地區愈演愈烈,而另一方面,社交媒體的公開性也使得獲取群體性事件的相關線索,甚至進行提前預測成為了可能。
該文從自然語言處理的角度研究了針對社交網絡文本的事件挖掘任務。事件挖掘旨在從文本中挖掘出結構化的事件信息,包括是否包含事件、事件類型、事件參與者、事件發生的時間和地點等。所有這些信息被稱為事件要素。通過標準化之后的事件要素可以將事件信息以結構化的形式進行關聯,形成事件知識圖譜,從而為下一步利用知識圖譜相關技術對事件分析處理提供基礎。
筆者在對事件挖掘的研究過程中發現,社交網絡上所挖掘出的事件,有相當一部分其發布時間會早于事件的實際發生時間,例如在圖1中所展示的從Twitter中挖掘到的事件信息。這一現象也很容易解釋:社交網絡作為群體性事件的重要組織工具,理所當然地會發布大量的事件召集信息。也就是說,社交網絡上的信息也許可以作為群體性事件預測的指示信息。基于這一觀察結果,重點研究利用社交網絡挖掘得到的結構化事件信息作為精確事件預測指標的可行性。
首先給出基于社交網絡事件挖掘的完整流程,逐一詳細描述所采用的處理步驟和方法,包括事件預處理、事件要素抽取、事件要素信息標準化和事件歸并等具體流程;接下來會詳細測試事件挖掘的整體流程以及各個步驟的性能,給出定量的評測結果;最后探討基于所挖掘的結構化事件信息進行群體性事件預測的效果,并針對香港地區近年來多發的群體性事件,給出了具體的預測結果;之后討論與該文相關的其他事件挖掘和預測的最新研究工作,與該文研究工作進行對比探討;最終給出結論和未來研究方向。
事件庫是以結構化事件的方式對歷史信息進行收集和記錄的一種重要工具,事件庫的構建需要從粗糙的非結構化數據批量生成結構化的事件數據。相關的學術研究和實際應用經歷了手動集成到大規模自動提取和集成的發展過程。Correlates of War event data (COW)[2]是最早的互聯網事件庫,采用手動的方式收集和整理了一系列國家間軍事爭端事件。Global Terrorism Database (GTD)[3]收集了全球15萬條恐怖事件的完整數據,是垂直領域上人工構建事件庫的優秀成果。Integrated Conflict Early Warning System (ICEWS)[4]是第一個有著全球影響力的自動事件數據庫,它也是針對暴力沖突類事件,收集了超過2.5億條事件數據,并免費向公眾開放。由Google支持的Global Dataset of Events, Location, and Tone (GDELT)把這些工作提升到一個新的高度,它監控了全球超過1.5萬個新聞源,以15分鐘更新一次的方式實時地向公眾發布事件庫信息。除此之外,針對特定領域和地區的事件庫還包括News Reader、Event Registry、EMBERS等。這些現有的事件庫大多以新聞或者專業文檔(如維基百科)作為事件源,但是目前還沒有發現以社交網絡作為主要信息源的事件數據庫。Tweet事件挖掘示例如圖1所示。

圖1 Tweet事件挖掘示例
結構化的事件抽取是事件數據庫自動化構建的核心技術,可以分為數據驅動和知識驅動兩大基本途徑。數據驅動的事件抽取采用統計機器學習的方法,通過“標注—學習—抽取”的范式來開展事件抽取工作。與之對應,知識驅動的事件抽取依賴于專家知識,通常采用“模式編寫—模式匹配”的方式開展工作。早期的結構化事件抽取工作大多采用知識驅動的技術途徑,利用詞匯句法模式(Lexical Syntactic Patterns)的匹配來抽取事件[5]。由于其高性能和有效性,在之后的各個事件抽取工作中也大都作為其中的一個處理步驟[6]。文中系統中的事件發現部分就是采用這種傳統而行之有效的方法。由于早期統計模型的計算能力不足,數據驅動的事件抽取的準確率大多較低,但是其優勢在于領域的普適性。近年來隨著深度神經網絡的大發展,數據驅動的事件抽取逐漸成為了主流,CNN、RNN、LSTM、Transformer等最新的神經網絡架構被應用到事件抽取中,極大地提高了事件抽取的準確性。但是在面對大規模數據的時候,神經網絡方法大多存在計算開銷過大的劣勢,需要與傳統方法融合使用。
事件預測是一個還有待研究人員進一步深入探索的領域。隨著事件庫構建技術的逐漸成熟,已經有不少研究者將下一步的研究目標瞄準了事件預測。這類研究大多以統計模型為基礎,通過大量地提取事件的各種潛在特征和前期征兆來構建復雜的神經網絡模型,從而實現事件預測[7-17]。但是這些方法準確率和召回率都極低,不存在實際應用的可能性。這是由于事件預測這一任務本身所具備的復雜性決定的。與前述的這些方法不同,該文瞄準群體性事件這一特定的事件類型,采用社交網絡這一特殊的數據源,用文本挖掘的方式較好地實現了事件預測這一困難任務。
事件挖掘指從已獲取的社交網絡文本語料中挖掘歷史事件,識別事件類型,提取事件要素,歸并不同來源的結構化事件表示,最終得到事件庫。事件庫是一個大規模的結構化知識庫,可以導出到知識圖譜系統進行可視化查詢,檢索,分析和瀏覽。
事件挖掘系統的輸入為非結構化的文本信息,輸出為完整的事件要素五元組Event:(Actor1,Actor2,Type,Time,Location)。這種五元組的事件表示是國際通用的表示框架,并且在CAMEO(Conflict and Mediation Event Observations)[18]中得到了明確定義。CAMEO是一個事件編碼框架,是為了研究國際爭端中的重大事件而優化,同時也包括政治,經濟,民生領域的幾乎所有重要事件類型。其中的141和144類型即為該文所關注的群體性事件類型。該文的事件挖掘系統將會遵循CAMEO的事件框架定義。
實現事件挖掘的整體流程如圖2所示,其核心步驟包括:文本預處理、事件類型判斷、要素抽取、地理位置抽取及標準化、時間抽取及標準化等。

圖2 事件挖掘系統工作流程
在進行事件要素抽取和事件類型判斷之前,需要對文本進行預處理,對語料進行切割,以便對句子級別的文本進行事件分析。要素抽取的過程依賴于語法樹的建立,使用基于StanfordNLP[19]的短語分析工具對句子進行預處理,生成樹狀結構以對句子中的句法關系進行描述。將語法關系統一表示為類型依賴關系。語法解析以一個完整的句子作為輸入,以一顆對應的語法解析樹作為輸出。使用統計的方法生成語法分析樹,如概率上下文無關語法(Probabilistic Context-Free Grammar,PCFG)。
PCFG是一個監督學習方法,需要對PCFG的參數進行估計。其訓練數據為一個句子及其解析樹,通常把這樣的標注數據稱為樹庫(Tree Bank)。PCFG的參數就是某種規則的概率,當給定一個Tree Bank后,統計相應的規則轉移的概率。StanfordNLP利用PCFG對輸入句子進行分析,分析結果包含句子中單詞的基本形式、依存關系、詞性、命名實體等。在事件挖掘過程中,依賴其詞性標注方法生成詞性語法樹,并對語法樹進行建模分析。
在文本預處理得到解析樹后,對解析樹進行觸發詞判斷,發現事件要素和事件類型。
本模塊以句子及其解析樹作為輸入,以三元組(Actor1,Actor2,Type)作為輸出。解析核心基于觸發詞,在進行事件識別時,本模塊將解析樹的核心動詞與事件觸發詞表進行匹配,從而實現事件的發現以及類型識別。
人物要素抽取與事件類型判斷的核心邏輯基于對語法樹的解析。其接收句子的句法分析樹作為輸入,并且將分析樹存儲為鏈接節點的樹形結構,其中每個節點都是一個短語。語法樹在數據結構中是一個簡單的樹形結構,每個短語或單詞都是其自己的節點,并帶有指向父節點的指針以及子節點集。每個句子都由多個部分組成,一個組成部分可以是單個單詞或整個短語(構成要素的組成部分),每個組成部分都有特定的句法角色。對語法樹進行迭代處理并將樹中的單詞類型轉化為短語類型,單詞被組合在一起直到形成一個名詞或動詞短語。動詞短語包含了當前句子的大部分含義,并解釋了句子中相關名詞以及動詞的交互過程。若短語可以產生符合CAMEO觸發詞字典的正確交互關系,則將該句判斷為事件句,并輸出事件基礎三元組。
句法樹的遞歸過程,可以抽象為以下步驟:
(1)使用Pharse類將句法解析讀取到內存中;
(2)識別名詞短語中的參與者編碼;
(3)根據字典確定動詞短語;
(4)識別動詞如何與其他詞性短語進行交互;
(5)使用CAMEO詞庫進行判斷;
(6)返回事件編碼和參與者編碼。
在得到事件句及其所對應的要素三元組(Actor1,Actor2,Type)后,需要進行地點要素抽取。由于文本中地理位置信息描述的多樣性,該文采用三段式的處理方式:首先對文本中所有的地理位置信息進行抽取;然后對所抽取的地理信息進行分類,判斷其是否描述了目標事件的地理位置;最后采用GeoNames[20]數據庫進行地理位置信息標準化。
(1)地理位置信息抽取。
使用spaCy命名實體識別框架進行地理位置識別,抽取事件地點,選擇事件句實體抽取結果中所有標注為GEO的實體作為地理位置要素候選集。
(2)事件地理位置信息識別。
地理位置信息抽取后,針對地理位置候選集,選擇最可能的地理位置作為事件地理要素。使用在Keras中實現的分類神經網絡,并接受了帶有Prodigy標簽的新注釋數據進行訓練,以推斷每個地名的正確國家和地名詞典條目。
(3)地理位置信息標準化。
在得到事件的地理位置信息后,使用GeoNames庫提取地名的坐標和位置代碼。根據事件地理要素,使用Elasticsearch快速檢索GeoNames地理數據庫得到地理位置信息和編碼。
事件的時間要素抽取的流程與地點要素抽取的流程一致,也存在著抽取、識別和標準化三個階段,其中抽取和識別的階段處理流程與地點要素抽取是一致的,這里不再贅述。時間要素抽取的難點在于時間要素的標準化,由于時間表達方式更加多樣化,因此不能采用查表的方式進行時間要素的標準化。
時間表達式歸一化的目標是計算機能夠理解它們得到的時間信息,比如,在一個文本里出現1962.3.1,而另一篇出現的是1962/3/1或3/1/1962,計算機應該能夠知道它們說的都是同一時間。
在龐大的互聯網上,時間信息的表示是多種多樣的,導致對文本信息的理解非常困難,如果將時間信息統一到同一種表示方式,將會對機器的自動內容識別有很大幫助,同時對信息檢索、文摘生成等領域都發揮重要作用。具體的,在時間抽取任務中,使用SUTIME庫[21]實現事件時間抽取,產生事件時間的歸一化表達。
事件歸并是指將生成的對所抽取的多個事件進行歸并。同一事件在不同數據來源會獲取多個不同角度的事件描述,事件歸并將多個不同來源的同一事件的不同描述歸并為一個統一的事件描述,從而避免系統的二義性,提高事件挖掘和預測的準確率。
事件歸并依賴于事件要素抽取結果。一個事件可以描述為一個五元組(Actor1,Actor2,Type,Time,Location)。不同來源的新聞可能對同一事件有不同的描述,事件描述元組相同的事件為同一事件。若不同來源的新聞描述了同一事件,引入事件提及數作為參考量,表示同一事件在不同新聞源的提及數,作為衡量事件重要程度的指標。
為了分析通過社交網絡進行事件挖掘的有效性,特別是其中的群體性事件的可挖掘性和可預測性,爬取中國香港地區,從2019年1月1日到2020年6月30日的所有Twitter推文,共計370萬條文本數據,然后對其進行了基本的過濾,僅選取其中的英文數據作為實驗數據,共計1 302 801條。需要指出的是,由于訪問量限制過于苛刻,并沒有采用Twitter所提供的API,而是利用了搜索接口進行數據獲取。不同的數據獲取方式所得的數據量可能會有一定的出入,但是作為驗證性實驗數據筆者認為是足夠的。
為了驗證社交網絡時間挖掘的真實性,使用全球語言數據庫[22](Global Database of Events, Language,and Tone,GDELT)作為時間挖掘的對比結果。GDELT是一個最初由喬治敦大學建立,并被Google資助和運行的全球最大的事件數據庫。它通過監控全球超過100種語言的上萬個新聞源來進行事件獲取,分析并得到結構化的事件信息。和該系統一樣,GDELT也遵循CAMEO事件框架,所以兩個系統的事件挖掘結果能夠相互印證。雖然GDELT也存在著事件遺漏的情況,但仍然足以給該系統提供一個可行的評估依據。
(1)評測指標。
在所收集的130萬條的實驗數據之上開展事件挖掘實驗,通過準確率、召回率和F值三個指標對該系統進行評價。具體如下:
準確率是指系統挖掘到事件的準確性。這里的判斷依據是挖掘結果是否符合文本信息,以及是否符合真實情況,稱之為字面準確率,表示為Precisionliteraly。由于缺乏一個標準事件數據集,所以這里采用GDELT作為參考依據,這種準確率也可以稱為GDELT準確率,表示為PrecisionGDELT。對于字面準確率,采用抽樣人工評價的方式進行測試,隨機抽取1 000條系統挖掘的事件結果,人工對比源文本,判斷挖掘結果是否準確。對于GDELT準確率,則是比較該系統所挖掘的結果在GDELT數據庫中是否存在,如果存在則認為是準確的。
召回率是指實際發生的事件中被系統挖掘到的數量,同樣分為字面召回率Recallliteraly和GDELT召回率RecallGDELT。字面召回率的統計也是人工進行,隨機抽取測試數據中的語料,抽取1 000條事件數據,與系統挖掘的結果進行對比判斷是否被系統召回。對于GDELT召回率,則是比較GDELT數據庫中的特定地點和特定類型的事件是否被該系統所挖掘到,如果被挖掘到則認為是成功召回的。
F值是準確率和召回率的調和平均值,其計算公式為:
該文取β=1,即為F-1值。
(2)實驗結果和分析。
表1給出了針對上述實驗數據的測試結果,其中Events列給出了挖掘到的事件數量,為1 532件。這說明基于社交網絡的事件挖掘是非常有效的,確實能夠挖掘得到大量的事件。特別要注意的是,這里的事件不僅僅是群體性事件,但是其中的群體性事件數量占有較大比例。在所有的GDELT事件中,群體性事件(對應于CAMEO的141和144類型)僅僅占比大約2%左右,而社交網絡挖掘得到的事件有一大半都是群體性事件。

表1 測試結果
事件挖掘結果同樣保持了不錯的準確率,基本能達到預期設想。就字面準確率而言,該系統的事件挖掘子系統準確率能到達約80%。對于GDELT準確率而言,相比字面準確率都有了一定程度的下降,但是差距并不明顯。這兩種之間的比值可以認為是GDELT事件收錄的召回率,這一定程度上說明GDELT事件集的召回率相當的高。
該系統事件挖掘的字面召回率也保存了不錯的水平,達到了80%以上。但是,GDELT召回率則相當的低。這是由于GDELT監控了大量的新聞源,能夠獲取到非常豐富的事件信息,其信息豐富程度遠高于社交網絡。另一方面,社交網絡作為事件挖掘的信息源能夠達到約58%的召回率,這意味著在群體性事件挖掘方面可以在一定程度上作為GDELT的補充。
(1)評價指標。
采用準確率和召回率作為系統的評價指標,同樣采用GDELT事件數據庫作為評價標準。計算預測事件在GDELT中是否會發生,記為PrecisionGDELT;以及GDELT中的事件是否會被社交網絡預測到,記為RecallGDELT。

圖3 事件預測提前期計算方法說明
對于事件預測而言,預測提前期(Lead Time)是一個重要的指標。所謂預測提前期是指發出事件預測的日期和事件被報道的日期之差。這里的“發出事件預測的日期”就是該系統通過社交網絡信息發現事件的日期;“事件被報道的日期”采用GDELT中事件的報到日期為依據。兩種相減得到事件預測的預測提前期,如圖3所示。
(2)實驗結果和分析。
表2給出了針對香港地區的社交網絡數據群體性事件預測實驗結果。

表2 針對香港地區的社交網絡數據群體性 事件預測實驗結果
其中第一列LT=n表明的是不同的事件預測提前期,LT=1即是提取一天預測,此時的預測的事件數量最多,準確率和召回率也都較高。隨著LT數值的增加,能夠預測到的事件數量降低,這一定程度上意味著大量的群體性事件都并沒有經過長時間的準備,而僅僅是在2~5天內短期召集形成的。
根據準確率和召回率進行分析,可以看到基于社交網絡的群體性事件預測準確率較高,也是符合預期的:社交網絡線索相對明確,一旦出現了社交網絡上的群體性事件召集信息,就會有比較大的概率真實發生該事件。另一方面,事件預測召回率在LT=1時達到了0.45,這意味著有接近一半的群體性事件都可以在社交網絡上找到明確線索。還有一點值得注意的是,對于LT>10的情況,準確率和召回率都較低,尚不足以作為可靠的預測線索。
社交網絡的群體性事件挖掘是一個自動化的信息抽取任務。該文設計并實現了對社交網路信息進行事件挖掘和事件預測的系統。其中包括事件發現、事件要素抽取、事件分類、地理位置抽取、事件歸并等子任務。基于所挖掘到的社交網絡群體性事件相對于事件發生日期有一定提前性的這一發現,探索了將所挖掘到的結構化事件信息用于事件預測的可能性,實驗證明這一探索有較好的效果,能夠以較高的準確率和召回率提前預測特定地區的群體性事件。