劉曉芳,歐榮安,羅 歡,劉芳婷,張輝極,韓 冰,趙建強,5*
(1.廈門市美亞柏科信息股份有限公司,福建 廈門 361008;2.廣州市刑事科學技術研究所,廣東 廣州 510030;3.福州大學,福建 福州 350108;4.廈門市人民檢察院檢察技術信息部,福建 廈門 361008;5.西安電子科技大學,陜西 西安 710071)
近年來移動互聯網發展迅猛,截止2020年12月,中國網民的規模已達到9.89億,其中手機網民占比為99.7%,即時通信類APP占手機網民的99.2%[1]。以QQ、微信為代表的通訊軟件已成為多數人日常工作和生活中不可或缺的一部分,其群組聊天與微博、論壇等瀑布型弱關系為主的社交網絡不同,以交友和表達為主,展現出多對多的復雜社交關系和情感依賴特征。在電子數據取證分析領域,聊天文本中的關鍵話題和人物行為的挖掘能為案件偵破帶來關鍵進展。
目前,基于詞匯特征的話題分類方法已經具備一定的特征捕捉和語義理解能力,但仍存在特征冗余問題,因此需要選擇性地關注話題中的關鍵詞匯,同時使用豐富的語義特征提升話題分類的性能。可是,單純得到聊天話題,無法多方位地刻畫人物,無法對案件快速有效地定位。為解決該問題,該文在分析聊天話題的同時從多個維度對人物行為進行刻畫,為案件偵辦提供更有力的支撐。
會話分析理論(Conversation Analysis Theory)[2]起源于20 世紀60年代美國的一種社會學研究理論:基于真實會話揭示人的社會行為和互動交際行為的內在組織結構,進而發現人類言語交際模式和規律[3]。文獻[3-5]對該理論進行進一步分析,將會話結構劃分為整體結構與局部結構兩部分。整體結構指一個完整會話活動在其展開過程中依照交際要求所形成的功能模式,包括會話的開始、維持及結束整個過程;局部結構指話題參與者的局部發言,包括發言者聯系、話輪交替及構成連貫話語的方式等。文獻[6-8]基于文本語義統計信息和聚類算法,實現對微博等社交網絡話題的挖掘。話題分類是文本分類的重要應用,目前,基于神經網絡的文本分類方法是文本分類的主流方向。Kim最早提出使用TextCNN對文本進行分類,利用不同尺度的卷積核很好地捕捉到文本的局部關鍵信息[9]。Kalchbrenner提出DCNN模型,使用寬卷積和K-max池化采樣解決了TextCNN無法捕獲長距離信息的問題,取得了不錯的分類效果[10]。
因CNN快速的計算能力和可并行性,不僅被廣泛應用于工業界,同時也吸引了研究者對其網絡結構的不斷改進,通過使用注意力機制[11]、增加網絡深度[12]、使用層級網絡[13]等實現對CNN分類效果的優化。另外,也有研究者通過不同的嵌入方式,取得了不錯的分類效果。目前主流的文本嵌入方法有詞嵌入[14]、字符嵌入[15]、句子嵌入[16]及不同嵌入方式的組合。詞嵌入雖然可以捕獲到文本的句法和語義特征,但是無法處理未登錄詞,存在OOV(Out-of Vocabulary)問題,字嵌入可以解決這一問題。同時,為豐富詞匯和字符的表征能力,研究者提出不同的預訓練模型:Word2vec[17],GloVe[18],CoVe[19]和ELMo[20],ULMFiT[21],OpenAI-GPT[22]和Bert[23],以獲取文本中詞和字更豐富的表征,提高分類性能。
基于預訓練模型的詞嵌入方式雖然能夠獲取很好的文本分類效果,但是每個詞匯對文本分類的貢獻度并不等價。因此,該文使用LDA主題模型,在獲取關鍵話題的同時提取到影響話題的關鍵詞,并通過訓練好的詞向量獲得關鍵詞的語義表示,同時增加字符特征,以提高話題的分類性能。為多方位、多維度地刻畫人員行為,除了獲取聊天話題,還應該包含該人員在聊天中的互動強度、活躍程度及其他附屬標簽等描述信息。
群組的各個成員在聊天中扮演著不同的角色,因此每個對話并不是簡單的文字輸入,而是一個成員在網絡空間行為的表達[24]。近年來,人物行為的定量分析領域取得了一定進展,文獻[25]使用聚類分析和關聯分析的方法獲取人物行為。文獻[26]提出基于同義詞詞林的關系抽取技術,擴展了傳統二元關系,并實現了人際網絡的定量分析及結果的可視化,在一定程度上促進了人物行為刻畫技術的發展。文獻[27]研究微信群內的會話數據,通過構造成員活躍度和基于成員相互回應行為與共同回應行為設計成員關聯強度算法,進而構建會話交流網絡來分析群聊天的靜態結構特征及動態結構演化過程。文獻[28]以聊天時間為對象,利用聚類分析技術發現通信時間與人物行為之間的關聯關系,將人物行為按照“親疏遠近”分類。
該文提出一種基于候選主題詞的話題分類算法-CTW和人物行為刻畫方案,主要創新為:
(1)CTW不僅充分考慮聊天文本中字符級別信息,同時關注影響話題的關鍵詞信息,緩解了詞匯特征的冗余問題。
(2)從話題類別、成員互動強度、活躍程度和社會標簽等多個維度對人物行為進行刻畫,豐富了人物行為的描述。
(3)還考慮到了聊天中成員的社會屬性標簽,通過構建的人物行為庫,建立人物行為拓撲圖。進而幫助取證人員快速形成嫌疑人員的畫像,提高取證效率。
LDA[29]模型是一種經典主題模型算法,可以計算出文檔集中每個文檔的主題概率分布。具體地,一個語料庫由M篇文檔的文檔集合D=
θd~Dir(α),φk~Dir(β),zi~θd,wi~φzi
(1)
P(θ,z,w|α,β)=
(2)
根據已知的文檔和單詞分布,給出兩個超參數α和β來求解該模型,得到文檔主題分布θ和單詞主題分布φ。
2.2.1 數據預處理
聊天數據中存在大量的噪聲,會影響模型分類效果。為解決該問題,該文對數據進行預處理操作,具體預處理流程包括:
(1)數據清洗:去除各類系統通知消息、各類表情符號、各類型網頁、圖片、視頻連接及其他亂碼和非中文字符。
(2)去停用詞:構建停用詞表,去除文本中多次出現但對文本語義價值不大的詞。
(3)分詞:采用jieba對數據進行分詞。
(4)分段:因聊天話題不時的變化,需對聊天文本進行分段處理,以確保話題的唯一性。通過對聊天時間、文本長度、句子數、聊天話題的分析,設計了如圖1的分段策略。

圖1 聊天數據分段策略
針對每個聊天文本,按時間間隔和句子數量分段。如果上下句間間隔大于20分鐘,并且句子數量在10到80句之間或字符長度大于420,則分段,字符長度大于420的長文本一般為廣告、通知等消息;如果上下句間隔大于20分鐘,但是句子數量小于10(通過分析得到小于10句的聊天文本不包含關鍵話題),則繼續向下尋找時間間隔大于20分鐘的句子;如果句子數量大于80,則從50至80句之間尋找一個最大的時間間隔分段,并依次向下按該規則分段。該文以預處理后的子片段為單位,作為CTW模型的輸入。提出的基于候選主題詞的話題分類算法分類的模型結構如圖2所示,CTW的模型主要包括特征輸入層、嵌入層、卷積層、K-max池化層、全連接層和輸出層。

圖2 CTW網絡模型結構
2.2.2 嵌入層
嵌入層包含關鍵詞嵌入和字符嵌入兩個模塊。首先,使用LDA主題模型獲取聊天話題中的關鍵詞,假定一個分段后的子片段僅包含一個主要關鍵主題。因此,使用LDA主題模型獲取每個片段的關鍵話題,同時得到主話題前k個主題詞xTop-k-words={x1,x2,…,xk};然后,使用騰訊訓練好的詞向量,得到k個主題詞的詞嵌入矩陣k×n,n為每個詞語對應的詞向量的維度;其次,針對輸入文本xchar={xchar-1,xchar-2,…,xchar-m},得到維度為m×n的字符嵌入矩陣,m為一個段落中的字符數,n為每個字符對應的字向量的維度,xchar-i∈n表示段落中第i個字符的n維字嵌入。最后,拼接得到整個CTW網絡的輸入:
學生通過此類模型很容易理解3×0.5這種表達的意義.但事實上,上述的解釋仍是整數乘法的意義,即“相等的量相加”.同樣以3×0.5為例,考慮下述情境:
x={xchar,xTop-k-words}
(3)
其中,x為(m+k)×n維矩陣。
2.2.3 卷積層
在嵌入層矩陣上使用卷積操作得到輸入文本的特征:
ci=f(w?xi:i+h-1+b)
(4)
其中,xi:i+h-1表示輸入矩陣第i到第i+h-1行所組成的h×n的窗口,h表示所包含的字符或詞語個數,w為權重矩陣,b為偏置參數,f為非線性函數。通過定義不同尺度卷積核,提取不同尺度的特征向量,得到聊天內容的上下文語義特征。
ci=c1⊕c2⊕…⊕ci+h-1
(5)
2.2.4 K-max池化層
將語義特征ci輸入到K-max池化層,保留強化特征:
o=kmax{ci}
(6)
最后對全連接層的輸出,采用SoftMax對輸出特征分類得到輸入片段的主題類別。
2.3.1 群成員互動強度
在群聊天過程中,群成員間存在某些互動模式來支撐話題的起承轉合,這些互動模式中隱藏著群成員間的關系信息。因此,本算法考慮引入成員的互動強度指標來刻畫群成員的關系強弱。互動強度分為兩種:顯性互動強度和隱性互動強度[30]。顯性互動強度為成員通過點對點@功能建立的強關聯關系;隱性互動強度為成員圍繞某一話題展開多對多交流時產生的弱關聯關系。該文認為在即時通訊軟件的群聊天中顯性互動強度對于成員關系刻畫的貢獻度高于隱性互動強度。在顯性互動強度中,成員間相互@的互動行為是對成員間關系的最直觀體現。并且,由于@行為具有指向性,因此顯性互動強度指標具有不對稱性,如公式(7)所示。
Ove_intimacyij=At_Numij
(7)
其中,At_Numij表示在某個話題內成員i對成員j發出@行為的次數。隱性互動強度考慮成員在每一個話題片段內的共現關系,因此針對每個話題片段借助科學計量學中的合作強度Salton指標來計算基于話題片段的隱性互動強度。計算公式如下:
(8)
其中,T_occurij表示成員i和成員j的互動頻次,即兩個成員共同參與話題討論的次數,文中表現為成員i和成員j在同一個話題片段中共同出現的次數,Ti和Tj分別表示兩位成員各自參與的話題總數量。Salton指數越高,表示兩者間的隱性互動強度越強。
為平衡兩種互動強度的貢獻程度,引入權重控制因子λ,統一后的互動強度公式為:
Intiij=λOve_intimacyij+θImp_intimacyij
(9)
其中,λ和θ表示控制兩種互動強度的權重因子,λ+θ=1。該文考慮顯性和隱性互動強度的重要程度,將λ設置為0.7,θ設置為0.3。
2.3.2 群成員活躍程度
在群聊天的會話過程中,不同群成員在群中的參與地位存在很大差異。少數處于中樞位置的成員在群會話中扮演重要角色,這種成員發言量大,常作為話題片段的發起者和積極參與者。另外有部分成員則恰恰相反,對群會話交流更多持圍觀態度而非積極參與。此外,還存在部分成員只和固定幾個成員互動的情況。因此,為了刻畫群聊天內成員的人物行為,有必要先對群成員的活躍程度進行分析。該文認為發言數量是最直觀反映群成員活躍程度的指標,而發言天數則反映了成員對該群的黏度,因此綜合考慮發言數量和發言天數,群成員活躍程度計算公式如(10)所示[31]:
Corenessi=
(10)
其中,α和β表示發言數量和黏度的影響因子;Mes_Mumi表示成員i在某個話題內的發言數量;Total_Mes_Mumi表示該話題內所有成員的總發言數量;Mes_Dayi表示成員i在某話題內的發言天數;Total_Mes_Dayi表示該話題的總發言天數。該文假定發言量和發言天數對描述成員互動強度具有同等重要性,因此設定α=β=0.5。針對全體成員的Coreness指標,排序后計算相鄰數值間的差值,取差值前三的節點作為活躍程度的分隔點,將全體成員分為:核心成員、活躍成員、圍觀成員和疏離成員四種類型[32]。
2.3.3 群成員社會標簽
對于每個話題片段,成員間的人物行為刻畫分為:群成員間互動強度,群成員活躍程度和群成員間社會關系標簽。社會關系標簽考慮聊天中發言人昵稱和成員的備注。該文發現通過群昵稱和設置的備注信息可以捕獲部分成員的社會關系。例如:若出現“爸”、“老婆”等備注信息則能夠發現家庭關系的標簽;出現“教練”、“學員”等備注時則可能是健身交流。
考慮到聊天中的人物行為是基于話題構建的,因此將聊天建模成(群聊-話題-成員)的層次模型。整個聊天被按照分段策略分割若干個段落,并對聊天話題類別歸類,每個片段中由若干個參與話題討論的群成員組成。圖3展示了基于層次模型建模的人物行為庫。

圖3 人物行為庫
通過上述的人物行為刻畫規則,構建了基于話題片段的人物行為圖庫,每個成員代表圖庫中的一個節點,圖庫的邊可添加成員間的互動強度、活躍程度和社會關系標簽的屬性。增加了社會關系標簽的基于話題的成員人物行為圖庫如圖4所示。

圖4 話題i的成員人物行為圖庫
實驗所用操作系統Ubuntu18.0,CPU Inter?Xeon?Sliver 4116 CPUC 2.1 GHz GPU為RTX8000,顯存48G,開發環境為python 3.7.4和tensorflow 1.14.0。模型參數初始化設置為:文本最大長度為500;候選詞個數是10;字嵌入維度為200;詞嵌入維度為200;學習率為0.01;正則化學習率為0.1;Dropout為0.5;Batch_size為512;詞向量總數為100 000,字符總數是5 000。針對不同數目的候選關鍵詞進行實驗,選取關鍵詞個數分別為5,10,15,30,綜合考慮精度、召回率、F1值發現,關鍵詞數量為10時,主題分類效果最好。
從微信、QQ等社交APP上收集不同種類的聊天文本數據,通過分段、人工標注最終形成21 473段中文社交短文本樣本,共包含8個話題類別。采用分層抽樣將數據劃分為訓練集17 167段和測試集4 306段,各個類別數據樣本分布如表1所示。

表1 數據集樣本分布
使用GibbsLDA++軟件包對聊天文本中的話題關鍵詞進行抽取。給出2個文本聊天對話中前4個主要關鍵主題詞的抽取結果,文本1:王者、榮耀、鉆石、排位;文本2:教練、訓練、瘦身、出汗。因此,LDA能夠得到某些聊天話題的主題詞集合。從文本1的關鍵詞看,該文本屬于游戲主題,而文本2屬于健身主題,與人工標注結果一致。
使用CTW和基線模型TextCNN做對比實驗,使用精度、召回率和F1值(文本分類通用指標)作為該文的評價指標,表2展示了7類對取證有重要幫助話題的分類結果。

表2 聊天話題分類結果
從表2中可以看出,與基線模型相比,除美食、學校、健身三類的精度低于TextCNN外,其他話題分類精度均高于TextCNN模型;召回率均高于基線模型;提出的CTW算法的F1值均高于TextCNN模型。結果表明,增加話題關鍵詞作為特征,可以增強文本的語義特征,得到更豐富的語義表征,同時兼具字符特征可以有效捕獲文本不同層次的特征表示,提升話題識別的性能。
3.4.1 群成員互動強度
親密程度的判定基于不同話題中成員間的互動強度,文本中采用啟發式的固定閾值進行判定,將親密度程度判定為:親密、一般親密、不親密三種程度,不同話題設置不同的閾值,在一定程度上反映了同一話題中不同成員間互動強度的相對親密程度。表3展示了不同話題中部分成員間的互動強度和親密程度。
(1)在不同的話題中,因互動強度的計算方式導致互動強度的絕對數值范圍往往不一致,占據聊天更多篇幅的話題會使互動強度的數值偏大,因此在親密度判定時要根據不同的話題設置不同閾值。
(2)成員在不同的話題中親密程度存在差異,這也證明提出的針對不同的話題刻畫成員行為是合理的。

表3 不同聊天話題中部分成員間的
3.4.2 群成員活躍程度
從搜集的數據中選取美食、物業、寵物三個話題,統計其在0~24時的活躍度,圖5展示了不同時間下發言數量的分布情況。其中橫軸表示發言時間,縱軸表示發言數量。從圖5中可以發現:

圖5 群聊天發言數量分布
(1)不同群聊天的活躍程度存在較大差別,活躍度曲線也反映出群聊天的性質。如物業在辦公時間段內活躍度較高;寵物群在每個時間段均保持較高的活躍度;美食群則在中午、晚上及夜宵活躍度較高。
(2)群聊天的活躍程度是分析群成員活躍程度的一個重要因素,群聊天的活躍程度反映了群成員在該時間段內的活躍程度總和。
基于2.3.2中的描述,表4展示了不同話題中成員活躍程度的數值及成員類型判定結果。

表4 不同話題中成員類型

續表4
從表4中可以發現:
(1)同一群成員在不同的話題中參與程度不同,成員更偏向于參與自己感興趣的話題。
(2)部分群中會出現某些成員在所有話題中均非常活躍,屬于核心成員,作為話題的發起者和積極參與者,在群中具有很強的號召力和影響力,在取證過程中應重點關注。
(3)在多成員構成的群聊中,疏離成員占據群聊天的大多數,許多人在群里都屬于“潛水”的角色,一直在接收群信息但不發言。
結合群成員互動強度和活躍程度,即可構建出基于每個話題的三元聯系表(成員-親密程度-成員),兩邊的節點代表群成員,邊表示親密程度類型,成員的屬性為活躍程度。在檢索時,通過檢索目標成員名稱即可獲取與該成員產生親密關系的所有成員和成員的活躍程度。可用于進一步挖掘與目標成員關系密切的其他成員信息,刻畫出人物行為畫像,從而為梳理群成員之間的關系提供有力支撐。
為解決詞匯特征的冗余問題,提出了一種基于候選主題詞的話題分類算法。該算法首先使用LDA主題模型抽取群聊天話題中的關鍵詞,獲取文本的強語義表征,同時算法融合了詞匯和字符不同維度的特征,提升了話題分類的性能。為了豐富人物行為的描述,提出的人物刻畫方案,不僅關注話題類別,同時也關注到成員間的互動強度、成員活躍程度、成員社會關系等多個維度。實驗結果和分析驗證了該方法的有效性和可行性,為群聊天中的人物行為刻畫提供了新的分析視角,對海量電子數據中關鍵信息和人員的識別和定位提供有力的支撐,同時,有助于進一步挖掘關鍵聊天內容、成員及成員關系。提出的話題分類方法針對單個話題,實現多話題標簽的分類是本研究持續關注和優化的方向。