武夢(mèng)旭
(燕山大學(xué) 理學(xué)院,河北 秦皇島066004)
識(shí)別網(wǎng)絡(luò)不良文本問(wèn)題的實(shí)質(zhì)是文本分類問(wèn)題,即將網(wǎng)絡(luò)文本分為正常文本和不良文本兩類,其中不良文本多是敏感性、攻擊性、辱罵性的內(nèi)容。對(duì)于不良文本信息的攔截過(guò)濾技術(shù)研究可以追溯到21世紀(jì)初,Denning[1]首次提出了垃圾信息過(guò)濾的概念,在郵件的接收過(guò)程中可以通過(guò)郵件內(nèi)容判斷郵件的緊急性,以保證郵件接收者及時(shí)處理緊急郵件。近年來(lái),許多研究人員在社交媒體安全性研究方面取得了長(zhǎng)足進(jìn)步,對(duì)不良內(nèi)容的過(guò)濾許多都是基于黑白名單、關(guān)鍵字、規(guī)則表達(dá)式和分類技術(shù)等方法。Njaji、Zhang等[2]利用與仇恨言論相關(guān)的主觀性和語(yǔ)義特征,構(gòu)建包含仇恨動(dòng)詞的詞典來(lái)檢測(cè)仇恨言論。Silva、Mondal等[3]根據(jù)句子結(jié)構(gòu)提出一個(gè)基本表達(dá)式來(lái)檢測(cè)Whisper和Twitter中的仇恨言論,并將這些仇恨言論通過(guò)人工標(biāo)記劃分細(xì)粒度。
隨著自然語(yǔ)言處理技術(shù)的發(fā)展以及計(jì)算機(jī)性能的提高,深度學(xué)習(xí)網(wǎng)絡(luò)模型逐漸應(yīng)用到文本分類領(lǐng)域,憑借其高效的特征提取方法,能夠有效的提升分類效果。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是深度神經(jīng)網(wǎng)絡(luò)的兩個(gè)主要結(jié)構(gòu)。Le、Botton等[4]在研究計(jì)算機(jī)圖像處理時(shí)首次提出卷積神經(jīng)網(wǎng)絡(luò),主要利用卷積核提取局部特征,效果優(yōu)于當(dāng)時(shí)其他技術(shù)。Socher、Huval等[5]利用矩陣和向量構(gòu)建了一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)(MV-RNN),通過(guò)該網(wǎng)絡(luò)能夠從任意句法類型和長(zhǎng)短不一的句子中學(xué)習(xí)潛在的語(yǔ)義關(guān)系,每個(gè)句子生成長(zhǎng)度一致的特征向量,實(shí)驗(yàn)結(jié)果顯示相比傳統(tǒng)機(jī)器學(xué)習(xí)算法其效果更好。Yang、Zhang等[6]基于兩個(gè)前后連接的雙向循環(huán)神經(jīng)網(wǎng)絡(luò)并結(jié)合注意力機(jī)制(Attention Mechanism)構(gòu)建分層注意力網(wǎng)絡(luò)模型,在單詞層面和句子層面應(yīng)用兩個(gè)級(jí)別的注意機(jī)制對(duì)文本內(nèi)容進(jìn)行編碼,取得較好的分類效果。
網(wǎng)絡(luò)不良文本多由網(wǎng)民自主創(chuàng)造,具有靈活多變的特點(diǎn)。深度學(xué)習(xí)模型能自主地學(xué)習(xí)文本中的特征,可以有效地避免人工標(biāo)準(zhǔn)特征存在的不足,并且深度學(xué)習(xí)模型能通過(guò)不斷的學(xué)習(xí)來(lái)適應(yīng)文本的變化。
將詞特征和語(yǔ)義特征結(jié)合,提出一種基于多特征融合的BiLSTM模型的網(wǎng)絡(luò)不良文本分類方法,用于提高檢測(cè)的性能,模型結(jié)構(gòu)圖如圖1所示。該方法主要由三部分組成,第一部分是利用N-Gram進(jìn)行文本詞特征的向量表示,第二部分是使用Word2Vec模型提取深層語(yǔ)義特征,第三部分是將這兩部分的特征向量拼接相融合并使用Softmax激活函數(shù)實(shí)現(xiàn)分類。
圖1 多特征融合的BiLSTM模型結(jié)構(gòu)圖
1.詞特征提取
選用語(yǔ)法特征作為詞特征。N-Gram是一種基于統(tǒng)計(jì)語(yǔ)言模型的算法,對(duì)文本內(nèi)容按照字節(jié)采取大小為N的滑動(dòng)窗口操作,形成長(zhǎng)度是N的字節(jié)片段序列,即將連續(xù)的N個(gè)詞作為向量空間中的一個(gè)維度。忽視一個(gè)文本的詞序、語(yǔ)法,句法,僅將其視為一個(gè)詞集合,且假設(shè)文中的每個(gè)詞的出現(xiàn)都是獨(dú)立的,不依賴于其他詞是否出現(xiàn),則從一個(gè)句子中提取N個(gè)連續(xù)的單詞,可以獲取到詞的前后信息。
N-Gram模型基于隱馬爾科夫假設(shè),各個(gè)詞出現(xiàn)的概率乘積就等于整個(gè)句子出現(xiàn)的概率,各個(gè)詞出現(xiàn)的概率可以直接通過(guò)語(yǔ)料統(tǒng)計(jì)計(jì)算得到。當(dāng)一個(gè)詞的出現(xiàn)只依賴于前一個(gè)詞,概率計(jì)算公式如下:
如果一個(gè)詞的出現(xiàn)僅依賴于它前面出現(xiàn)的兩個(gè)詞時(shí),概率計(jì)算公式如下:
公式(1)和(2)中,n表示文本包含的詞數(shù)量,每一個(gè)詞用 wi表示,P(wi|wi-1)和 P(wi|wi-1wi-2)表示在文本中前1個(gè)詞是wi-1和前2個(gè)詞是wi-1、wi-2的條件下第i個(gè)詞是wi的概率。
在對(duì)n值的選取上,n越大計(jì)算所依賴的詞越多,可獲得的信息量越多,對(duì)未來(lái)的預(yù)測(cè)就越準(zhǔn)確,模型效果也越好。然而,考慮到網(wǎng)絡(luò)不良文本中存在較多拼寫(xiě)錯(cuò)誤和語(yǔ)法不規(guī)范問(wèn)題,若n取值較大,可以獲得下一個(gè)詞更多的約束信息,但很容易出現(xiàn)訓(xùn)練集中沒(méi)有的詞,產(chǎn)生數(shù)據(jù)稀疏。若n取值較小,則在訓(xùn)練語(yǔ)料庫(kù)中出現(xiàn)的次數(shù)更多,統(tǒng)計(jì)結(jié)果更可信。所以n取值不宜過(guò)大,可以取n值為2,選用Bi-gram提取文本詞特征。
2.語(yǔ)義特征提取
采用結(jié)合Word2Vec預(yù)訓(xùn)練詞嵌入的BiLSTM(Bi-directional Long Short-Term Memory)模型提取深層語(yǔ)義特征。首先,采用Word2Vec方法中的CBOW模型進(jìn)行詞向量的表示。其次,BiLSTM作為文本特征的映射器,將CBOW模型學(xué)習(xí)到的文本詞向量輸入BiLSTM模型的數(shù)據(jù)通道中,在forward層從前向后計(jì)算一遍,在backward層從后往前運(yùn)算一遍,每個(gè)時(shí)刻結(jié)合forward層和backward層的相應(yīng)時(shí)刻輸出的結(jié)果,經(jīng)過(guò)映射和激活函數(shù)的處理,將得到一組輸出,并將其進(jìn)行全連接處理,作為文本語(yǔ)義特征。
(1)Word2Vec
Word2Vec在語(yǔ)料集訓(xùn)練上主要分為CBOW(Continuous Bag-of-Word Model)和 Skip-Gram兩種模式,結(jié)構(gòu)如圖2所示。其中CBOW是在NNLM的基礎(chǔ)上去除前向反饋神經(jīng)網(wǎng)絡(luò)中的非線性隱層,直接將中間層與輸出層連接,輸入層輸入詞的One-Hot向量,隱藏層直接對(duì)輸入的向量累加求和并取平均值的運(yùn)算,輸出層輸出當(dāng)前詞的某個(gè)向量概率,向量概率最大的位置代表的單詞為預(yù)測(cè)出的中間詞,即CBOW是從上下文到當(dāng)前詞的某種映射或者預(yù)測(cè),CBOW模型的目標(biāo)函數(shù)是輸出的真實(shí)中心詞概率最大,計(jì)算公式為:
圖2 CBOW和Skip-Gram模型結(jié)構(gòu)示意圖
公式(3)中,wt表示當(dāng)前詞匯,wt-c,wt-1,wt+1,…,wt+c表示與wt距離c個(gè)單位以內(nèi)的詞匯,通過(guò)相鄰的c個(gè)詞匯可以計(jì)算wt的概率分布,然后使用中間隱藏層進(jìn)行均值計(jì)算得到詞匯wt的詞向量表示。Skip-Gram則是從當(dāng)前詞預(yù)測(cè)上下文,Skip-Gram模型的計(jì)算公式如下:
(2)BiLSTM
LSTM模型是RNN的一種變體,RNN存在梯度消失的問(wèn)題且只有短期記憶。LSTM將短期記憶與長(zhǎng)期記憶通過(guò)精妙的門(mén)控制結(jié)合起來(lái),并且在一定程度上緩解了梯度消失的問(wèn)題,LSTM結(jié)構(gòu)圖如圖3所示。LSTM模型只使用了上文的信息,而沒(méi)有考慮到下文的信息,而預(yù)測(cè)可能需要使用到整個(gè)輸入序列的信息,BiLSTM是結(jié)合文本從前到后作為輸入的LSTM和從后向前作為輸入的LSTM組合而成,BiLSTM結(jié)構(gòu)圖如圖4所示。
圖3 LSTM結(jié)構(gòu)圖
圖4 BiLSTM結(jié)構(gòu)圖
LSTM包括輸入門(mén)、遺忘門(mén)、輸出門(mén)三個(gè)“門(mén)”結(jié)構(gòu),通過(guò)對(duì)細(xì)胞狀態(tài)中信息遺忘和記憶新的信息使得對(duì)后續(xù)時(shí)刻計(jì)算有用的信息得以傳遞,而無(wú)用的信息被丟棄,并在每個(gè)時(shí)間步輸出隱層狀態(tài),遺忘門(mén)決定從細(xì)胞狀態(tài)中丟棄信息,通過(guò)上一個(gè)細(xì)胞狀態(tài)的輸出和當(dāng)前細(xì)胞的輸入,使用Sigmoid函數(shù)輸出一個(gè)在0到1之間的數(shù)值,1表示完全保留信息,0表示完全舍棄。其計(jì)算公式為:
輸出門(mén)確定輸出值。確定細(xì)胞狀態(tài)的輸出部分ot,然后對(duì)細(xì)胞狀態(tài)進(jìn)行過(guò)濾處理確定輸入部分ht:
其中xt為t時(shí)刻的輸入詞向量,ht-1表示循環(huán)單元上一時(shí)刻的隱層狀態(tài),Wf,Wi,Wo,WC分別表示上一時(shí)刻輸出值在遺忘門(mén)、記憶門(mén)、輸出門(mén)、臨時(shí)細(xì)胞狀態(tài)更新中的權(quán)重系數(shù),bf、bi、bo、bC表示遺忘門(mén)、記憶門(mén)、輸出門(mén)、臨時(shí)細(xì)胞狀態(tài)的更新偏置量。
3.輸出層
對(duì)本節(jié)模型的前兩部分的中間層輸出向量作拼接的靜態(tài)融合,得到該模型的特征向量,包含了詞和語(yǔ)義兩種特征,然后進(jìn)行協(xié)同訓(xùn)練使用Softmax激活函數(shù)將特征向量轉(zhuǎn)化成概率,根據(jù)概率判斷網(wǎng)絡(luò)文本是正常文本或不良文本,其計(jì)算公式為:
1.數(shù)據(jù)采集及標(biāo)注
通過(guò)網(wǎng)絡(luò)爬蟲(chóng)的方式進(jìn)行網(wǎng)絡(luò)文本數(shù)據(jù)的采集。采用Scrapy框架在微博平臺(tái)上獲取相應(yīng)數(shù)據(jù),這個(gè)框架爬取數(shù)據(jù)的結(jié)構(gòu)圖如圖5所示。
圖5 微博數(shù)據(jù)爬取流程圖
網(wǎng)絡(luò)文本分析所需要的數(shù)據(jù)類型主要包括兩部分:網(wǎng)絡(luò)不良文本和網(wǎng)絡(luò)正常文本。從微博社區(qū)管理中心的舉報(bào)處理大廳收集來(lái)自人身攻擊類、辱罵低俗類的微博。從微博首頁(yè)收集正常微博,共搜集微博文本數(shù)據(jù)8000條,并對(duì)所有數(shù)據(jù)集按照8:2的比例分配給訓(xùn)練集和測(cè)試集。對(duì)于爬取到的微博文本數(shù)據(jù),根據(jù)其是否為不良文本用0和1對(duì)其進(jìn)行人工標(biāo)記,其中不良文本標(biāo)記為1,正常文本標(biāo)記為0,實(shí)驗(yàn)數(shù)據(jù)見(jiàn)表1。
表1 文本分類實(shí)驗(yàn)數(shù)據(jù)表
2.文本預(yù)處理
微博搜集的文本存在噪音干擾大的問(wèn)題,針對(duì)微博文本采取以下方法對(duì)文本數(shù)據(jù)集進(jìn)行預(yù)處理,從而提高網(wǎng)絡(luò)不良文本的識(shí)別精確度。
(1)去噪
構(gòu)建正則表達(dá)式過(guò)濾html、url,去除@及用戶名、情感符號(hào)和非中英文的字符,保留文本中的標(biāo)簽信息以及將繁體字轉(zhuǎn)為簡(jiǎn)體字等。html和url對(duì)于判斷文本是否屬于不良文本沒(méi)有任何實(shí)質(zhì)作用,故過(guò)濾掉html和url;針對(duì)帶有@及用戶名的文本,需要排除用戶名對(duì)文本的干擾,所以去除@及用戶名;為了防止干擾,將特殊字符及非中英文的字符統(tǒng)一去除掉;針對(duì)帶有“#標(biāo)簽#”的文本數(shù)據(jù),如果僅去除符號(hào)#和標(biāo)簽內(nèi)容,可能會(huì)影響微博用戶所要表達(dá)的意思,因此保留文本中的標(biāo)簽內(nèi)容。
(2)去除停用詞
對(duì)于一些沒(méi)有意義的詞,例如“的、了、哦”和一些標(biāo)點(diǎn)等,使用停用詞詞典進(jìn)行去除。在互聯(lián)網(wǎng)上中英文混用的現(xiàn)象非常普遍,而有些無(wú)意義的英文單詞的出現(xiàn)也會(huì)對(duì)不良文本識(shí)別產(chǎn)生影響,因此也需要將英文停用詞加入到停用詞典中。本文使用的停用詞詞典是基于哈工大停用詞詞表構(gòu)造的,在哈工大停用詞詞表的基礎(chǔ)上增加英文停用詞。哈工大停用詞詞表共含有768項(xiàng)中文、標(biāo)點(diǎn)以及特殊字符,在此基礎(chǔ)上增加英文停用詞640項(xiàng),新的停用詞詞典共1408項(xiàng)。
(3)分詞
現(xiàn)在的中文分詞工具有很多,本文使用基于結(jié)巴分詞的工具來(lái)對(duì)微博文本進(jìn)行中文分詞。結(jié)巴分詞工具中的自定義詞典可以添加一些最新的網(wǎng)絡(luò)熱詞以及縮略詞,但是還有一些不良詞匯及變體沒(méi)有收錄。因此,構(gòu)建不良詞匯詞典,并將不良詞匯詞典添加到結(jié)巴分詞工具的自定義詞典中,實(shí)現(xiàn)對(duì)文本更準(zhǔn)確的切分。
3.模型參數(shù)設(shè)置
模型中會(huì)有許多的超參數(shù)需要設(shè)置,不同超參數(shù)的設(shè)置會(huì)對(duì)模型的性能有不同的影響。對(duì)這些超參數(shù)論文進(jìn)行基準(zhǔn)值設(shè)定,超參數(shù)基準(zhǔn)設(shè)定如表2所示。
表2 超參數(shù)基準(zhǔn)設(shè)定值
4.評(píng)價(jià)標(biāo)準(zhǔn)
在對(duì)網(wǎng)絡(luò)文本分類過(guò)程中,評(píng)價(jià)指標(biāo)包括準(zhǔn)確率(precision)、召回率(recall)和F1值。在對(duì)網(wǎng)絡(luò)文本進(jìn)行分類過(guò)程中,有可能會(huì)出現(xiàn)4種結(jié)果,模型預(yù)測(cè)結(jié)果如表3所示。
表3 模型預(yù)測(cè)結(jié)果
準(zhǔn)確率表示在對(duì)網(wǎng)絡(luò)文本進(jìn)行分類的過(guò)程中,模型正確分類出來(lái)的網(wǎng)絡(luò)不良文本數(shù)和預(yù)測(cè)出來(lái)的網(wǎng)絡(luò)不良文本數(shù)的比值,準(zhǔn)確率的計(jì)算公式如下:
召回率表示在對(duì)網(wǎng)絡(luò)文本進(jìn)行分類的過(guò)程中,模型正確分類出來(lái)的網(wǎng)絡(luò)不良文本數(shù)和實(shí)際產(chǎn)生的網(wǎng)絡(luò)不良文本數(shù)的比值,召回率的計(jì)算方式如下:
F1值是用來(lái)對(duì)精確率以及召回率進(jìn)行調(diào)和的平均值。F1值是對(duì)模型的精確率和召回率進(jìn)行綜合的考慮,與精確率和召回率相比更能反應(yīng)模型的分類效果。F1值的計(jì)算方式如下:
5.實(shí)驗(yàn)結(jié)果分析
為了避免實(shí)驗(yàn)結(jié)果出現(xiàn)偶然性,對(duì)于模型均采用十折交叉驗(yàn)證取平均值。
(1)對(duì)于傳統(tǒng)的機(jī)器學(xué)習(xí)方法,使用樸素貝葉斯分類器和SVM分類器。
SVM的懲罰系數(shù)設(shè)為1000,徑向基核函數(shù)參數(shù)設(shè)為0.001。
(2)Word2Vec-CNN模型:模型以Word2Vec模型作為詞向量模型,然后把詞向量輸入到CNN模型,CNN利用不同大小的卷積核提取每條數(shù)據(jù)中詞語(yǔ)的信息,多層CNN可以提取每條數(shù)據(jù)中的深層信息,然后通過(guò)Softmax對(duì)文本進(jìn)行分類。對(duì)于CNN設(shè)置3、4、5三種高度的卷積核,卷積核個(gè)數(shù)設(shè)置為100。
(3)Word2Vec-LSTM模型:模型以 Word2Vec模型作為詞向量模型,以LSTM模型對(duì)文本數(shù)據(jù)再次提取特征信息,最后通過(guò)Softmax對(duì)文本進(jìn)行分類。
(4)Word2Vec-BiLSTM模型:模型以Word2Vec模型作為詞向量模型,以BiLSTM模型對(duì)文本數(shù)據(jù)再次提取特征信息,最后通過(guò)Softmax進(jìn)行分類。
在數(shù)據(jù)集上,各個(gè)模型的實(shí)驗(yàn)結(jié)果如表4所示。
表4 各模型實(shí)驗(yàn)結(jié)果對(duì)比
從實(shí)驗(yàn)結(jié)果可以看出本文提出的模型在網(wǎng)絡(luò)網(wǎng)絡(luò)文本數(shù)據(jù)集中的評(píng)價(jià)指標(biāo)均優(yōu)于其他模型,驗(yàn)證了本文模型在網(wǎng)絡(luò)不良文本分類中的有效性。
實(shí)驗(yàn)數(shù)據(jù)顯示,在數(shù)據(jù)相同的條件下,深度學(xué)習(xí)方法在準(zhǔn)確率和召回率上相比于傳統(tǒng)的機(jī)器學(xué)習(xí)方法均有較大的提高,驗(yàn)證了深度學(xué)習(xí)模型在網(wǎng)絡(luò)不良文本分類上確實(shí)優(yōu)于傳統(tǒng)的機(jī)器學(xué)習(xí)方法。
在實(shí)驗(yàn)結(jié)果中,樸素貝葉斯和線性SVM模型的分類效果較差,原因主要在于特征選取的方式是以詞頻和逆向詞頻為主,文本中每個(gè)詞出現(xiàn)的頻率都較低,無(wú)法通過(guò)統(tǒng)計(jì)詞頻大小進(jìn)行文本重要性的判斷,所以在網(wǎng)絡(luò)不良文本的分類中不占優(yōu)勢(shì)。
對(duì)比循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò),在嵌入層輸入矩陣組成相同的情況下,循環(huán)神經(jīng)網(wǎng)絡(luò)比卷積神經(jīng)網(wǎng)絡(luò)有一定的提高。由于網(wǎng)絡(luò)文本存在長(zhǎng)短不一的情況,卷積神經(jīng)網(wǎng)絡(luò)只能提取局部的信息,而沒(méi)有關(guān)心上下文的相關(guān)性,循環(huán)神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)就會(huì)顯現(xiàn)。
對(duì)比本文模型和Word2Vec-BiLSTM模型,本文模型在精確率、召回率和F1值上均有提高,原因在于本文模型使用的特征多了一個(gè)詞特征,在網(wǎng)絡(luò)文本分類的任務(wù)中,BiLSTM網(wǎng)絡(luò)通過(guò)結(jié)合詞特征和語(yǔ)特征就能較好地區(qū)分網(wǎng)絡(luò)不良文本。
本文對(duì)網(wǎng)絡(luò)不良文本的特點(diǎn)做了相關(guān)分析,針對(duì)網(wǎng)絡(luò)不良文本分類時(shí)特征提取不足導(dǎo)致分類精度不高的問(wèn)題,將N-Gram提取的詞特征和基于Word2Vec的BiLSTM提取文本語(yǔ)義特征融合,能有效避免文本信息損失,更好地提取文本信息。在數(shù)據(jù)集上實(shí)驗(yàn)并與其他分類方法進(jìn)行對(duì)比,結(jié)果表明,特征融合分類方法比傳統(tǒng)機(jī)器學(xué)習(xí)方法和單一特征提取的深度學(xué)習(xí)方法具有更好的網(wǎng)絡(luò)不良文本分類性能和效果?!?/p>