劉曉芳,歐榮安,羅 歡,劉芳婷,張輝極,韓 冰,趙建強,5*
(1.廈門市美亞柏科信息股份有限公司,福建 廈門 361008;2.廣州市刑事科學(xué)技術(shù)研究所,廣東 廣州 510030;3.福州大學(xué),福建 福州 350108;4.廈門市人民檢察院檢察技術(shù)信息部,福建 廈門 361008;5.西安電子科技大學(xué),陜西 西安 710071)
近年來移動互聯(lián)網(wǎng)發(fā)展迅猛,截止2020年12月,中國網(wǎng)民的規(guī)模已達到9.89億,其中手機網(wǎng)民占比為99.7%,即時通信類APP占手機網(wǎng)民的99.2%[1]。以QQ、微信為代表的通訊軟件已成為多數(shù)人日常工作和生活中不可或缺的一部分,其群組聊天與微博、論壇等瀑布型弱關(guān)系為主的社交網(wǎng)絡(luò)不同,以交友和表達為主,展現(xiàn)出多對多的復(fù)雜社交關(guān)系和情感依賴特征。在電子數(shù)據(jù)取證分析領(lǐng)域,聊天文本中的關(guān)鍵話題和人物行為的挖掘能為案件偵破帶來關(guān)鍵進展。
目前,基于詞匯特征的話題分類方法已經(jīng)具備一定的特征捕捉和語義理解能力,但仍存在特征冗余問題,因此需要選擇性地關(guān)注話題中的關(guān)鍵詞匯,同時使用豐富的語義特征提升話題分類的性能??墒?,單純得到聊天話題,無法多方位地刻畫人物,無法對案件快速有效地定位。為解決該問題,該文在分析聊天話題的同時從多個維度對人物行為進行刻畫,為案件偵辦提供更有力的支撐。
會話分析理論(Conversation Analysis Theory)[2]起源于20 世紀(jì)60年代美國的一種社會學(xué)研究理論:基于真實會話揭示人的社會行為和互動交際行為的內(nèi)在組織結(jié)構(gòu),進而發(fā)現(xiàn)人類言語交際模式和規(guī)律[3]。文獻[3-5]對該理論進行進一步分析,將會話結(jié)構(gòu)劃分為整體結(jié)構(gòu)與局部結(jié)構(gòu)兩部分。整體結(jié)構(gòu)指一個完整會話活動在其展開過程中依照交際要求所形成的功能模式,包括會話的開始、維持及結(jié)束整個過程;局部結(jié)構(gòu)指話題參與者的局部發(fā)言,包括發(fā)言者聯(lián)系、話輪交替及構(gòu)成連貫話語的方式等。文獻[6-8]基于文本語義統(tǒng)計信息和聚類算法,實現(xiàn)對微博等社交網(wǎng)絡(luò)話題的挖掘。話題分類是文本分類的重要應(yīng)用,目前,基于神經(jīng)網(wǎng)絡(luò)的文本分類方法是文本分類的主流方向。Kim最早提出使用TextCNN對文本進行分類,利用不同尺度的卷積核很好地捕捉到文本的局部關(guān)鍵信息[9]。Kalchbrenner提出DCNN模型,使用寬卷積和K-max池化采樣解決了TextCNN無法捕獲長距離信息的問題,取得了不錯的分類效果[10]。
因CNN快速的計算能力和可并行性,不僅被廣泛應(yīng)用于工業(yè)界,同時也吸引了研究者對其網(wǎng)絡(luò)結(jié)構(gòu)的不斷改進,通過使用注意力機制[11]、增加網(wǎng)絡(luò)深度[12]、使用層級網(wǎng)絡(luò)[13]等實現(xiàn)對CNN分類效果的優(yōu)化。另外,也有研究者通過不同的嵌入方式,取得了不錯的分類效果。目前主流的文本嵌入方法有詞嵌入[14]、字符嵌入[15]、句子嵌入[16]及不同嵌入方式的組合。詞嵌入雖然可以捕獲到文本的句法和語義特征,但是無法處理未登錄詞,存在OOV(Out-of Vocabulary)問題,字嵌入可以解決這一問題。同時,為豐富詞匯和字符的表征能力,研究者提出不同的預(yù)訓(xùn)練模型:Word2vec[17],GloVe[18],CoVe[19]和ELMo[20],ULMFiT[21],OpenAI-GPT[22]和Bert[23],以獲取文本中詞和字更豐富的表征,提高分類性能。
基于預(yù)訓(xùn)練模型的詞嵌入方式雖然能夠獲取很好的文本分類效果,但是每個詞匯對文本分類的貢獻度并不等價。因此,該文使用LDA主題模型,在獲取關(guān)鍵話題的同時提取到影響話題的關(guān)鍵詞,并通過訓(xùn)練好的詞向量獲得關(guān)鍵詞的語義表示,同時增加字符特征,以提高話題的分類性能。為多方位、多維度地刻畫人員行為,除了獲取聊天話題,還應(yīng)該包含該人員在聊天中的互動強度、活躍程度及其他附屬標(biāo)簽等描述信息。
群組的各個成員在聊天中扮演著不同的角色,因此每個對話并不是簡單的文字輸入,而是一個成員在網(wǎng)絡(luò)空間行為的表達[24]。近年來,人物行為的定量分析領(lǐng)域取得了一定進展,文獻[25]使用聚類分析和關(guān)聯(lián)分析的方法獲取人物行為。文獻[26]提出基于同義詞詞林的關(guān)系抽取技術(shù),擴展了傳統(tǒng)二元關(guān)系,并實現(xiàn)了人際網(wǎng)絡(luò)的定量分析及結(jié)果的可視化,在一定程度上促進了人物行為刻畫技術(shù)的發(fā)展。文獻[27]研究微信群內(nèi)的會話數(shù)據(jù),通過構(gòu)造成員活躍度和基于成員相互回應(yīng)行為與共同回應(yīng)行為設(shè)計成員關(guān)聯(lián)強度算法,進而構(gòu)建會話交流網(wǎng)絡(luò)來分析群聊天的靜態(tài)結(jié)構(gòu)特征及動態(tài)結(jié)構(gòu)演化過程。文獻[28]以聊天時間為對象,利用聚類分析技術(shù)發(fā)現(xiàn)通信時間與人物行為之間的關(guān)聯(lián)關(guān)系,將人物行為按照“親疏遠(yuǎn)近”分類。
該文提出一種基于候選主題詞的話題分類算法-CTW和人物行為刻畫方案,主要創(chuàng)新為:
(1)CTW不僅充分考慮聊天文本中字符級別信息,同時關(guān)注影響話題的關(guān)鍵詞信息,緩解了詞匯特征的冗余問題。
(2)從話題類別、成員互動強度、活躍程度和社會標(biāo)簽等多個維度對人物行為進行刻畫,豐富了人物行為的描述。
(3)還考慮到了聊天中成員的社會屬性標(biāo)簽,通過構(gòu)建的人物行為庫,建立人物行為拓?fù)鋱D。進而幫助取證人員快速形成嫌疑人員的畫像,提高取證效率。
LDA[29]模型是一種經(jīng)典主題模型算法,可以計算出文檔集中每個文檔的主題概率分布。具體地,一個語料庫由M篇文檔的文檔集合D=
θd~Dir(α),φk~Dir(β),zi~θd,wi~φzi
(1)
P(θ,z,w|α,β)=
(2)
根據(jù)已知的文檔和單詞分布,給出兩個超參數(shù)α和β來求解該模型,得到文檔主題分布θ和單詞主題分布φ。
2.2.1 數(shù)據(jù)預(yù)處理
聊天數(shù)據(jù)中存在大量的噪聲,會影響模型分類效果。為解決該問題,該文對數(shù)據(jù)進行預(yù)處理操作,具體預(yù)處理流程包括:
(1)數(shù)據(jù)清洗:去除各類系統(tǒng)通知消息、各類表情符號、各類型網(wǎng)頁、圖片、視頻連接及其他亂碼和非中文字符。
(2)去停用詞:構(gòu)建停用詞表,去除文本中多次出現(xiàn)但對文本語義價值不大的詞。
(3)分詞:采用jieba對數(shù)據(jù)進行分詞。
(4)分段:因聊天話題不時的變化,需對聊天文本進行分段處理,以確保話題的唯一性。通過對聊天時間、文本長度、句子數(shù)、聊天話題的分析,設(shè)計了如圖1的分段策略。
圖1 聊天數(shù)據(jù)分段策略
針對每個聊天文本,按時間間隔和句子數(shù)量分段。如果上下句間間隔大于20分鐘,并且句子數(shù)量在10到80句之間或字符長度大于420,則分段,字符長度大于420的長文本一般為廣告、通知等消息;如果上下句間隔大于20分鐘,但是句子數(shù)量小于10(通過分析得到小于10句的聊天文本不包含關(guān)鍵話題),則繼續(xù)向下尋找時間間隔大于20分鐘的句子;如果句子數(shù)量大于80,則從50至80句之間尋找一個最大的時間間隔分段,并依次向下按該規(guī)則分段。該文以預(yù)處理后的子片段為單位,作為CTW模型的輸入。提出的基于候選主題詞的話題分類算法分類的模型結(jié)構(gòu)如圖2所示,CTW的模型主要包括特征輸入層、嵌入層、卷積層、K-max池化層、全連接層和輸出層。
圖2 CTW網(wǎng)絡(luò)模型結(jié)構(gòu)
2.2.2 嵌入層
嵌入層包含關(guān)鍵詞嵌入和字符嵌入兩個模塊。首先,使用LDA主題模型獲取聊天話題中的關(guān)鍵詞,假定一個分段后的子片段僅包含一個主要關(guān)鍵主題。因此,使用LDA主題模型獲取每個片段的關(guān)鍵話題,同時得到主話題前k個主題詞xTop-k-words={x1,x2,…,xk};然后,使用騰訊訓(xùn)練好的詞向量,得到k個主題詞的詞嵌入矩陣k×n,n為每個詞語對應(yīng)的詞向量的維度;其次,針對輸入文本xchar={xchar-1,xchar-2,…,xchar-m},得到維度為m×n的字符嵌入矩陣,m為一個段落中的字符數(shù),n為每個字符對應(yīng)的字向量的維度,xchar-i∈n表示段落中第i個字符的n維字嵌入。最后,拼接得到整個CTW網(wǎng)絡(luò)的輸入:
學(xué)生通過此類模型很容易理解3×0.5這種表達的意義.但事實上,上述的解釋仍是整數(shù)乘法的意義,即“相等的量相加”.同樣以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表示所包含的字符或詞語個數(shù),w為權(quán)重矩陣,b為偏置參數(shù),f為非線性函數(shù)。通過定義不同尺度卷積核,提取不同尺度的特征向量,得到聊天內(nèi)容的上下文語義特征。
ci=c1⊕c2⊕…⊕ci+h-1
(5)
2.2.4 K-max池化層
將語義特征ci輸入到K-max池化層,保留強化特征:
o=kmax{ci}
(6)
最后對全連接層的輸出,采用SoftMax對輸出特征分類得到輸入片段的主題類別。
2.3.1 群成員互動強度
在群聊天過程中,群成員間存在某些互動模式來支撐話題的起承轉(zhuǎn)合,這些互動模式中隱藏著群成員間的關(guān)系信息。因此,本算法考慮引入成員的互動強度指標(biāo)來刻畫群成員的關(guān)系強弱?;訌姸确譃閮煞N:顯性互動強度和隱性互動強度[30]。顯性互動強度為成員通過點對點@功能建立的強關(guān)聯(lián)關(guān)系;隱性互動強度為成員圍繞某一話題展開多對多交流時產(chǎn)生的弱關(guān)聯(lián)關(guān)系。該文認(rèn)為在即時通訊軟件的群聊天中顯性互動強度對于成員關(guān)系刻畫的貢獻度高于隱性互動強度。在顯性互動強度中,成員間相互@的互動行為是對成員間關(guān)系的最直觀體現(xiàn)。并且,由于@行為具有指向性,因此顯性互動強度指標(biāo)具有不對稱性,如公式(7)所示。
Ove_intimacyij=At_Numij
(7)
其中,At_Numij表示在某個話題內(nèi)成員i對成員j發(fā)出@行為的次數(shù)。隱性互動強度考慮成員在每一個話題片段內(nèi)的共現(xiàn)關(guān)系,因此針對每個話題片段借助科學(xué)計量學(xué)中的合作強度Salton指標(biāo)來計算基于話題片段的隱性互動強度。計算公式如下:
(8)
其中,T_occurij表示成員i和成員j的互動頻次,即兩個成員共同參與話題討論的次數(shù),文中表現(xiàn)為成員i和成員j在同一個話題片段中共同出現(xiàn)的次數(shù),Ti和Tj分別表示兩位成員各自參與的話題總數(shù)量。Salton指數(shù)越高,表示兩者間的隱性互動強度越強。
為平衡兩種互動強度的貢獻程度,引入權(quán)重控制因子λ,統(tǒng)一后的互動強度公式為:
Intiij=λOve_intimacyij+θImp_intimacyij
(9)
其中,λ和θ表示控制兩種互動強度的權(quán)重因子,λ+θ=1。該文考慮顯性和隱性互動強度的重要程度,將λ設(shè)置為0.7,θ設(shè)置為0.3。
2.3.2 群成員活躍程度
在群聊天的會話過程中,不同群成員在群中的參與地位存在很大差異。少數(shù)處于中樞位置的成員在群會話中扮演重要角色,這種成員發(fā)言量大,常作為話題片段的發(fā)起者和積極參與者。另外有部分成員則恰恰相反,對群會話交流更多持圍觀態(tài)度而非積極參與。此外,還存在部分成員只和固定幾個成員互動的情況。因此,為了刻畫群聊天內(nèi)成員的人物行為,有必要先對群成員的活躍程度進行分析。該文認(rèn)為發(fā)言數(shù)量是最直觀反映群成員活躍程度的指標(biāo),而發(fā)言天數(shù)則反映了成員對該群的黏度,因此綜合考慮發(fā)言數(shù)量和發(fā)言天數(shù),群成員活躍程度計算公式如(10)所示[31]:
Corenessi=
(10)
其中,α和β表示發(fā)言數(shù)量和黏度的影響因子;Mes_Mumi表示成員i在某個話題內(nèi)的發(fā)言數(shù)量;Total_Mes_Mumi表示該話題內(nèi)所有成員的總發(fā)言數(shù)量;Mes_Dayi表示成員i在某話題內(nèi)的發(fā)言天數(shù);Total_Mes_Dayi表示該話題的總發(fā)言天數(shù)。該文假定發(fā)言量和發(fā)言天數(shù)對描述成員互動強度具有同等重要性,因此設(shè)定α=β=0.5。針對全體成員的Coreness指標(biāo),排序后計算相鄰數(shù)值間的差值,取差值前三的節(jié)點作為活躍程度的分隔點,將全體成員分為:核心成員、活躍成員、圍觀成員和疏離成員四種類型[32]。
2.3.3 群成員社會標(biāo)簽
對于每個話題片段,成員間的人物行為刻畫分為:群成員間互動強度,群成員活躍程度和群成員間社會關(guān)系標(biāo)簽。社會關(guān)系標(biāo)簽考慮聊天中發(fā)言人昵稱和成員的備注。該文發(fā)現(xiàn)通過群昵稱和設(shè)置的備注信息可以捕獲部分成員的社會關(guān)系。例如:若出現(xiàn)“爸”、“老婆”等備注信息則能夠發(fā)現(xiàn)家庭關(guān)系的標(biāo)簽;出現(xiàn)“教練”、“學(xué)員”等備注時則可能是健身交流。
考慮到聊天中的人物行為是基于話題構(gòu)建的,因此將聊天建模成(群聊-話題-成員)的層次模型。整個聊天被按照分段策略分割若干個段落,并對聊天話題類別歸類,每個片段中由若干個參與話題討論的群成員組成。圖3展示了基于層次模型建模的人物行為庫。
圖3 人物行為庫
通過上述的人物行為刻畫規(guī)則,構(gòu)建了基于話題片段的人物行為圖庫,每個成員代表圖庫中的一個節(jié)點,圖庫的邊可添加成員間的互動強度、活躍程度和社會關(guān)系標(biāo)簽的屬性。增加了社會關(guān)系標(biāo)簽的基于話題的成員人物行為圖庫如圖4所示。
圖4 話題i的成員人物行為圖庫
實驗所用操作系統(tǒng)Ubuntu18.0,CPU Inter?Xeon?Sliver 4116 CPUC 2.1 GHz GPU為RTX8000,顯存48G,開發(fā)環(huán)境為python 3.7.4和tensorflow 1.14.0。模型參數(shù)初始化設(shè)置為:文本最大長度為500;候選詞個數(shù)是10;字嵌入維度為200;詞嵌入維度為200;學(xué)習(xí)率為0.01;正則化學(xué)習(xí)率為0.1;Dropout為0.5;Batch_size為512;詞向量總數(shù)為100 000,字符總數(shù)是5 000。針對不同數(shù)目的候選關(guān)鍵詞進行實驗,選取關(guān)鍵詞個數(shù)分別為5,10,15,30,綜合考慮精度、召回率、F1值發(fā)現(xiàn),關(guān)鍵詞數(shù)量為10時,主題分類效果最好。
從微信、QQ等社交APP上收集不同種類的聊天文本數(shù)據(jù),通過分段、人工標(biāo)注最終形成21 473段中文社交短文本樣本,共包含8個話題類別。采用分層抽樣將數(shù)據(jù)劃分為訓(xùn)練集17 167段和測試集4 306段,各個類別數(shù)據(jù)樣本分布如表1所示。
表1 數(shù)據(jù)集樣本分布
使用GibbsLDA++軟件包對聊天文本中的話題關(guān)鍵詞進行抽取。給出2個文本聊天對話中前4個主要關(guān)鍵主題詞的抽取結(jié)果,文本1:王者、榮耀、鉆石、排位;文本2:教練、訓(xùn)練、瘦身、出汗。因此,LDA能夠得到某些聊天話題的主題詞集合。從文本1的關(guān)鍵詞看,該文本屬于游戲主題,而文本2屬于健身主題,與人工標(biāo)注結(jié)果一致。
使用CTW和基線模型TextCNN做對比實驗,使用精度、召回率和F1值(文本分類通用指標(biāo))作為該文的評價指標(biāo),表2展示了7類對取證有重要幫助話題的分類結(jié)果。
表2 聊天話題分類結(jié)果
從表2中可以看出,與基線模型相比,除美食、學(xué)校、健身三類的精度低于TextCNN外,其他話題分類精度均高于TextCNN模型;召回率均高于基線模型;提出的CTW算法的F1值均高于TextCNN模型。結(jié)果表明,增加話題關(guān)鍵詞作為特征,可以增強文本的語義特征,得到更豐富的語義表征,同時兼具字符特征可以有效捕獲文本不同層次的特征表示,提升話題識別的性能。
3.4.1 群成員互動強度
親密程度的判定基于不同話題中成員間的互動強度,文本中采用啟發(fā)式的固定閾值進行判定,將親密度程度判定為:親密、一般親密、不親密三種程度,不同話題設(shè)置不同的閾值,在一定程度上反映了同一話題中不同成員間互動強度的相對親密程度。表3展示了不同話題中部分成員間的互動強度和親密程度。
(1)在不同的話題中,因互動強度的計算方式導(dǎo)致互動強度的絕對數(shù)值范圍往往不一致,占據(jù)聊天更多篇幅的話題會使互動強度的數(shù)值偏大,因此在親密度判定時要根據(jù)不同的話題設(shè)置不同閾值。
(2)成員在不同的話題中親密程度存在差異,這也證明提出的針對不同的話題刻畫成員行為是合理的。
表3 不同聊天話題中部分成員間的
3.4.2 群成員活躍程度
從搜集的數(shù)據(jù)中選取美食、物業(yè)、寵物三個話題,統(tǒng)計其在0~24時的活躍度,圖5展示了不同時間下發(fā)言數(shù)量的分布情況。其中橫軸表示發(fā)言時間,縱軸表示發(fā)言數(shù)量。從圖5中可以發(fā)現(xiàn):
圖5 群聊天發(fā)言數(shù)量分布
(1)不同群聊天的活躍程度存在較大差別,活躍度曲線也反映出群聊天的性質(zhì)。如物業(yè)在辦公時間段內(nèi)活躍度較高;寵物群在每個時間段均保持較高的活躍度;美食群則在中午、晚上及夜宵活躍度較高。
(2)群聊天的活躍程度是分析群成員活躍程度的一個重要因素,群聊天的活躍程度反映了群成員在該時間段內(nèi)的活躍程度總和。
基于2.3.2中的描述,表4展示了不同話題中成員活躍程度的數(shù)值及成員類型判定結(jié)果。
表4 不同話題中成員類型
續(xù)表4
從表4中可以發(fā)現(xiàn):
(1)同一群成員在不同的話題中參與程度不同,成員更偏向于參與自己感興趣的話題。
(2)部分群中會出現(xiàn)某些成員在所有話題中均非?;钴S,屬于核心成員,作為話題的發(fā)起者和積極參與者,在群中具有很強的號召力和影響力,在取證過程中應(yīng)重點關(guān)注。
(3)在多成員構(gòu)成的群聊中,疏離成員占據(jù)群聊天的大多數(shù),許多人在群里都屬于“潛水”的角色,一直在接收群信息但不發(fā)言。
結(jié)合群成員互動強度和活躍程度,即可構(gòu)建出基于每個話題的三元聯(lián)系表(成員-親密程度-成員),兩邊的節(jié)點代表群成員,邊表示親密程度類型,成員的屬性為活躍程度。在檢索時,通過檢索目標(biāo)成員名稱即可獲取與該成員產(chǎn)生親密關(guān)系的所有成員和成員的活躍程度。可用于進一步挖掘與目標(biāo)成員關(guān)系密切的其他成員信息,刻畫出人物行為畫像,從而為梳理群成員之間的關(guān)系提供有力支撐。
為解決詞匯特征的冗余問題,提出了一種基于候選主題詞的話題分類算法。該算法首先使用LDA主題模型抽取群聊天話題中的關(guān)鍵詞,獲取文本的強語義表征,同時算法融合了詞匯和字符不同維度的特征,提升了話題分類的性能。為了豐富人物行為的描述,提出的人物刻畫方案,不僅關(guān)注話題類別,同時也關(guān)注到成員間的互動強度、成員活躍程度、成員社會關(guān)系等多個維度。實驗結(jié)果和分析驗證了該方法的有效性和可行性,為群聊天中的人物行為刻畫提供了新的分析視角,對海量電子數(shù)據(jù)中關(guān)鍵信息和人員的識別和定位提供有力的支撐,同時,有助于進一步挖掘關(guān)鍵聊天內(nèi)容、成員及成員關(guān)系。提出的話題分類方法針對單個話題,實現(xiàn)多話題標(biāo)簽的分類是本研究持續(xù)關(guān)注和優(yōu)化的方向。