明建華,胡 創(chuàng),周建政,姚金良
1.天鴿互動(dòng)控股有限公司 項(xiàng)目部,杭州310105
2.杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,杭州310018
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,人類社會(huì)逐漸步入了信息時(shí)代。其中4G網(wǎng)絡(luò)的普及催生了以直播為代表的各類信息產(chǎn)業(yè)。直播開始融入到人們的生活當(dāng)中[1],通過(guò)彈幕實(shí)現(xiàn)用戶與主播、用戶與用戶之間的互動(dòng)更是成為一種新型的網(wǎng)絡(luò)社交方式。這種用戶自由發(fā)表內(nèi)容的方式方便了信息的分享與交流,但是這種互聯(lián)網(wǎng)發(fā)布方式也極易被不法分子利用,發(fā)布一些非法廣告信息。各種虛假信息、垃圾信息、色情、暴力等不良短文本遍布在各類直播彈幕中,其中色情廣告在直播彈幕中最為盛行。這類色情廣告通過(guò)彈幕的方式將游客引導(dǎo)至色情網(wǎng)站或者提供色情服務(wù)的微信、QQ 等社交網(wǎng)絡(luò)賬號(hào)上。為了杜絕這類非法信息的傳播,直播平臺(tái)需要在服務(wù)端構(gòu)建專門的程序來(lái)檢測(cè)用戶發(fā)布的內(nèi)容,確認(rèn)是否為非法信息。如果是非法信息,則阻止發(fā)布信息,并封禁非法賬號(hào)[2]。
當(dāng)前實(shí)際應(yīng)用中最為常用的短文本過(guò)濾方法是基于關(guān)鍵詞過(guò)濾的方法[3]。該方法事先構(gòu)建一個(gè)關(guān)鍵詞列表,通過(guò)檢測(cè)短文本中是否含有該關(guān)鍵詞進(jìn)行判別。這種方法的效率高,但同時(shí)識(shí)別率比較低。關(guān)鍵詞列表的構(gòu)建一般需要人為篩選,整個(gè)篩選過(guò)程耗時(shí)耗力。因此,在實(shí)際應(yīng)用中一般選用已經(jīng)構(gòu)建好的通用關(guān)鍵詞列表,然后根據(jù)實(shí)際應(yīng)用的結(jié)果去更新關(guān)鍵詞列表。關(guān)鍵詞列表雖然是目前最為通用的方法,但其并不能滿足實(shí)際應(yīng)用的需求。隨著統(tǒng)計(jì)機(jī)器學(xué)習(xí)的發(fā)展,一些研發(fā)人員采用統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法實(shí)現(xiàn)短文本過(guò)濾。樸素貝葉斯、支持向量機(jī)等方法都在短文本過(guò)濾方面取得不錯(cuò)成績(jī)[4],但是短文本的字符數(shù)量有限,該類方法無(wú)法充分利用詞語(yǔ)的上下文,因此,其識(shí)別準(zhǔn)確率仍難以滿足實(shí)際應(yīng)用的需求。
另外,由于非法用戶也會(huì)根據(jù)檢測(cè)系統(tǒng)改進(jìn)發(fā)布內(nèi)容的形式,從而躲避系統(tǒng)的識(shí)別。當(dāng)前逃避識(shí)別和過(guò)濾的主要方式是對(duì)短文本中的關(guān)鍵詞進(jìn)行變體。比如,將“發(fā)票”寫成“發(fā)漂”,將“裸聊”寫成“落聊”等等。統(tǒng)計(jì)已有的一些非法色情廣告信息,發(fā)現(xiàn)當(dāng)前存在的主要關(guān)鍵詞變體形式為:(1)夾雜特殊符號(hào)(一般是標(biāo)點(diǎn)類的非文字字符),比如:“QQ296『161『7102”;(2)形狀相近的字符替代,比如,“日”替換為“曰”;(3)同音或近音替換,比如:“微”替換為“為”;(4)拼音替換,“微信”替換為“weixin”;(5)關(guān)鍵詞倒序或者整句倒序;(6)中文字符拆分成偏旁和其他字符,比如:“裸”拆分為“衤果”。(7)關(guān)鍵詞繁體化;(8)對(duì)英文和數(shù)字等采用相似形狀字符的穿插,比如:“a5m2coM”;(9)對(duì)數(shù)字字符轉(zhuǎn)換為編號(hào)形式或者中文數(shù)字等,比如:“嶶765510103㈡”。
為了應(yīng)對(duì)關(guān)鍵詞的變體形式,通常采用一種關(guān)鍵詞擴(kuò)展的方法。該方法將關(guān)鍵詞表根據(jù)可能的變體形式構(gòu)造關(guān)鍵詞的變體形式,并作為關(guān)鍵詞表的一部分。另外,為了應(yīng)對(duì)關(guān)鍵詞變體,溫園旭提出了提取變體特征的方法[5]。該方法提出采用一些規(guī)則構(gòu)建特征來(lái)表達(dá)可能出現(xiàn)的關(guān)鍵詞變體形式,然后采用貝葉斯分類器進(jìn)行識(shí)別。但是采用構(gòu)建規(guī)則的方式提取變體特征容易被非法用戶識(shí)別,從而非法用戶可以方便地更新變體的產(chǎn)生方式來(lái)逃避系統(tǒng)的識(shí)別。另外,人為地構(gòu)建變體特征是一項(xiàng)比較困難的工作。
針對(duì)當(dāng)前方法難于有效處理關(guān)鍵詞變體和傳統(tǒng)短文本分類方法準(zhǔn)確率不高的問題,本文提出利用深度學(xué)習(xí)技術(shù)在樣本中發(fā)現(xiàn)可能的變體特征,并挖掘字符之間的相關(guān)性特征,提高帶噪短文本的分類準(zhǔn)確率的方法。該方法利用深度學(xué)習(xí)強(qiáng)大的學(xué)習(xí)能力,并且易于根據(jù)樣本進(jìn)行更新,從而能快速應(yīng)對(duì)新出現(xiàn)的變體形式。該方法可部署于各類直播彈幕檢測(cè)的服務(wù)器端,實(shí)現(xiàn)對(duì)用戶提交的帶噪短文本的自動(dòng)識(shí)別,阻止有害信息的傳播。
帶噪短文本識(shí)別和過(guò)濾是保障網(wǎng)絡(luò)內(nèi)容安全的重要手段,它涉及自然語(yǔ)言處理、信息檢索、信息過(guò)濾和模式識(shí)別等多個(gè)領(lǐng)域。在現(xiàn)有關(guān)鍵詞過(guò)濾方法準(zhǔn)確率低的情況下,許多學(xué)者都開始研究機(jī)器學(xué)習(xí)在短文本過(guò)濾中的應(yīng)用。韓偉在其碩士論文中實(shí)現(xiàn)了樸素貝葉斯、決策樹、支持向量機(jī)、k近鄰、隨機(jī)森林在短文本過(guò)濾中的應(yīng)用[6],取得了不錯(cuò)的成果。也有學(xué)者如劉梅彥、黃改娟通過(guò)依存句法獲取語(yǔ)句的語(yǔ)義框架來(lái)研究文本信息內(nèi)容[7],分析出文本的感情狀態(tài)。從而判定文本是否是某一特殊情感傾向的文本,如包含暴力、色情、詐騙、垃圾信息等的文本。
國(guó)外在文本信息過(guò)濾方面的研究大多以檢測(cè)垃圾郵件為主[8-11],而在短文本識(shí)別過(guò)濾和用戶檢測(cè)方面主要專注于以網(wǎng)絡(luò)垃圾用戶為主的用戶識(shí)別。如在電子商務(wù)領(lǐng)域,利用用戶評(píng)價(jià)數(shù)據(jù)判斷是否為極端用戶。在社交網(wǎng)絡(luò)領(lǐng)域,利用推特用戶的昵稱、發(fā)布的信息,實(shí)現(xiàn)垃圾用戶的檢測(cè)與識(shí)別[12-13]。
本文提出的針對(duì)直播彈幕的TextCNN 過(guò)濾方法分為訓(xùn)練過(guò)程和實(shí)時(shí)識(shí)別過(guò)程。具體方法流程見圖1。在訓(xùn)練過(guò)程中,首先對(duì)訓(xùn)練樣本進(jìn)行預(yù)處理,通過(guò)對(duì)訓(xùn)練樣本中噪聲部分的識(shí)別、分類處理,降低了噪聲對(duì)短文本識(shí)別準(zhǔn)確率的影響。預(yù)處理后得到的數(shù)據(jù)作為訓(xùn)練模型的輸入。接下來(lái),構(gòu)建Text CNN過(guò)濾模型,通過(guò)調(diào)節(jié)訓(xùn)練參數(shù)改善模型訓(xùn)練的結(jié)果。最終,得到訓(xùn)練好的TextCNN過(guò)濾模型。
圖1 針對(duì)直播彈幕的TextCNN過(guò)濾方法示意圖
在實(shí)時(shí)識(shí)別過(guò)程中,將實(shí)時(shí)的帶噪短文本通過(guò)同樣的預(yù)處理過(guò)程得到用于實(shí)時(shí)識(shí)別的數(shù)據(jù)輸入。應(yīng)用訓(xùn)練過(guò)程得到的TextCNN過(guò)濾模型,得到分類結(jié)果。
預(yù)處理的目標(biāo)是減少噪聲的影響,雖然噪聲符號(hào)也可以作為詞匯進(jìn)行短文本卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,但是由于噪聲符號(hào)添加的多樣性和訓(xùn)練樣本數(shù)據(jù)的稀疏性,直接通過(guò)預(yù)處理去掉這些噪聲符號(hào)可以更好地應(yīng)對(duì)各種符號(hào)變換的噪聲添加操作。預(yù)處理步驟通過(guò)6 個(gè)處理過(guò)程對(duì)輸入的帶噪短文本進(jìn)行處理。處理的結(jié)果可以直接用于CNN短文本過(guò)濾模型的訓(xùn)練或?qū)崟r(shí)識(shí)別。
如圖2 所示,本文方法的預(yù)處理步驟包括:數(shù)字字符標(biāo)準(zhǔn)化、英文字符標(biāo)準(zhǔn)化、繁體中文字符轉(zhuǎn)簡(jiǎn)體中文字符、特殊意義符號(hào)處理、去除夾雜噪聲符號(hào)、連續(xù)數(shù)字字符統(tǒng)一表示和字符串切分6個(gè)處理過(guò)程。
圖2 帶噪短文本預(yù)處理流程圖
如圖3 所示,數(shù)字字符標(biāo)準(zhǔn)化是將所有unicode 編碼下具有數(shù)字意義的編碼符號(hào)轉(zhuǎn)換為標(biāo)準(zhǔn)的數(shù)字字符編碼。比如:將“ ⑦”“零”“ ㈡”分別轉(zhuǎn)換為“7”“0”“2”樣式的標(biāo)準(zhǔn)數(shù)字字符。為了實(shí)現(xiàn)這一轉(zhuǎn)換過(guò)程,本文通過(guò)查看unicode 編碼下的所有具有數(shù)字意義的符號(hào),根據(jù)數(shù)字符號(hào)的有序性,構(gòu)建編碼轉(zhuǎn)換的對(duì)應(yīng)關(guān)系。比如:“①”到“?”的符號(hào)在unicode 編碼表中是有序排列的,對(duì)于“①”到“⑨”,本文通過(guò)以下公式實(shí)現(xiàn)變換:ch_out=chr(ord(ch)-ord(“①”)+ord(“1”))。其中ord 函數(shù)是獲得字符的unicode 編碼,chr 函數(shù)是通過(guò)unicode編碼獲得對(duì)應(yīng)的字符。類似的,對(duì)于“⑩”<=ch<=“ ?”,ch_out=“1”+chr(ord(ch)-ord(“ ⑩”)+ord(“0”));對(duì)于“?”則特殊處理,如果ch 為?,則輸出直接賦值為“20”。以同樣的方式,本文的數(shù)字字符標(biāo)準(zhǔn)化處理了“:0”<=ch<=“9”“、⑴”<=ch<==ch<=<=、對(duì)于“⒈”<=ch<=“ ⒛”和“0點(diǎn)”<=ch<=“24點(diǎn)”,則在轉(zhuǎn)換的結(jié)果后面添加“點(diǎn)”符號(hào)。對(duì)于“1日”<=ch<=“31日”,則在轉(zhuǎn)換的結(jié)果后面添加‘日’符號(hào)。對(duì)于“零一二三四五六七八九十”和“壹貳叁肆伍陸柒捌玖”中的字符,則通過(guò)index函數(shù)獲取輸入字符在該字符串中的位置,然后通過(guò)str 函數(shù)將位置的整數(shù)值轉(zhuǎn)換為字符。而對(duì)于非數(shù)字意義的符號(hào),數(shù)字字符標(biāo)準(zhǔn)化不進(jìn)行處理,直接返回原來(lái)的字符。
圖3 數(shù)字字符標(biāo)準(zhǔn)化
如圖4所示,英文字符標(biāo)準(zhǔn)化是將所有的具有相似形狀的不同編碼的字母符號(hào)轉(zhuǎn)換為標(biāo)準(zhǔn)的小寫英文字符。比如:將”分別轉(zhuǎn)換為“a”“f”“k”樣式的標(biāo)準(zhǔn)小寫英文字符。由于相似的字母符號(hào)在unicode編碼表中沒有統(tǒng)一的連續(xù)的進(jìn)行編碼,因此本文通過(guò)構(gòu)建一個(gè)字典結(jié)構(gòu)的對(duì)照表進(jìn)行實(shí)現(xiàn)。為此,本文用一個(gè)文件存儲(chǔ)形狀相似字母符號(hào);將unicode 中形狀相似的字母符號(hào)保存為文件中的一行。比如:
其中第一個(gè)“h”為標(biāo)準(zhǔn)字母,并用“:”將形狀相似的字母分開。后續(xù)的相似字母通過(guò)空格分隔。本文中構(gòu)建了所有26個(gè)英文字母的形狀相似符號(hào)對(duì)應(yīng)關(guān)系。通過(guò)該文件,可以創(chuàng)建一個(gè)字典結(jié)構(gòu),其中的鍵為形狀相似字符,值為標(biāo)準(zhǔn)英文字符。通過(guò)查找該字典實(shí)現(xiàn)字符的轉(zhuǎn)換。對(duì)于大寫字母則通過(guò)常用的大寫字母轉(zhuǎn)小寫字母函數(shù)實(shí)現(xiàn)。英文字母標(biāo)準(zhǔn)化對(duì)于非英文字母,則原樣輸出[14]。
圖4 英文字符標(biāo)準(zhǔn)化
如圖5所示,繁體中文字符轉(zhuǎn)簡(jiǎn)體中文字符是將字符串中可能存在的繁體中文字符轉(zhuǎn)換為簡(jiǎn)體形式。本文通過(guò)構(gòu)建一個(gè)對(duì)應(yīng)關(guān)系的表進(jìn)行實(shí)現(xiàn)。該表是通過(guò)查找unicode編碼中所有簡(jiǎn)體和繁體不一樣的所有中文字符實(shí)現(xiàn)。同樣采用了字典結(jié)構(gòu)實(shí)現(xiàn)快速的轉(zhuǎn)換。實(shí)現(xiàn)的時(shí)候使用了zhtools 這個(gè)python 包。該包構(gòu)建了簡(jiǎn)體和繁體的對(duì)應(yīng)關(guān)系。
圖5 繁體中文字符轉(zhuǎn)簡(jiǎn)體中文字符
如圖6所示,特殊意義符號(hào)轉(zhuǎn)換處理是將一些具有特殊意義的符號(hào)轉(zhuǎn)換為對(duì)應(yīng)的特定意義的符號(hào)。比如:將等形狀類似“+”的符號(hào)轉(zhuǎn)換為中文字符“加”。因?yàn)檫@些特殊意義的字符代表了特定的語(yǔ)義信息,并且比較重要。很多的噪聲添加模式就是通過(guò)將有意義的特定中文字符轉(zhuǎn)換為這類字符,并通過(guò)形狀相似性進(jìn)行了替換。為此,本文采用類似于相似形狀英文字母的轉(zhuǎn)換方法進(jìn)行實(shí)現(xiàn),構(gòu)建了一個(gè)對(duì)照表,比如:
最后通過(guò)字典結(jié)構(gòu)實(shí)現(xiàn)轉(zhuǎn)換。本文通過(guò)對(duì)語(yǔ)料的分析查找可能存在的特殊意義的符號(hào),并構(gòu)建對(duì)照表實(shí)現(xiàn)特殊意義字符的轉(zhuǎn)換。
圖6 特殊意義符號(hào)轉(zhuǎn)化
如圖7所示,去除夾雜噪聲符號(hào)是對(duì)經(jīng)過(guò)上述字符轉(zhuǎn)換操作后得到的短文本過(guò)濾掉非中文字符、非英文字符和非數(shù)字字符的所有符號(hào),比如:
標(biāo)準(zhǔn)化字符后的字符串這一操作比較容易實(shí)現(xiàn),直接去除上述非中文字符、非英文字符和非數(shù)字字符的所有符號(hào)即可。
圖7 去除夾雜噪聲符號(hào)
如圖8所示,連續(xù)數(shù)字字符表示是將經(jīng)過(guò)以上處理的短文本中連續(xù)的數(shù)字字符根據(jù)數(shù)字字符的個(gè)數(shù)表示為“
圖8 連續(xù)數(shù)字字符表示
如圖9所示,字符串切分是經(jīng)過(guò)上述字符轉(zhuǎn)換后對(duì)短文本進(jìn)行切分。在本文中,中文字符被單獨(dú)切分為一個(gè)字符,連續(xù)的英文字符被切分為一個(gè)單元,連續(xù)的數(shù)字字符用“
圖9 字符串切分
TextCNN過(guò)濾模型(見圖10)包括:一個(gè)詞向量的嵌入層,用于將字符轉(zhuǎn)換為向量表示;然后根據(jù)卷積的尺度進(jìn)行卷積,一個(gè)卷積核可以得到len(sequence)-filter_size+1 個(gè)卷積結(jié)果;然后對(duì)所有的卷積結(jié)果進(jìn)行ReLu激活函數(shù)進(jìn)行非線性處理;再對(duì)處理結(jié)果用最大值池化,每一個(gè)filter 得到一個(gè)值。最后將所有的filter 值通過(guò)全連接層輸入到softmax進(jìn)行分類。
圖10 TextCNN模型示意圖
預(yù)處理步驟可以消除大部分噪聲字符的影響。基于預(yù)處理后的數(shù)據(jù)構(gòu)建詞向量表,利用tensorflow 中的VocabularyProcessor 函數(shù)設(shè)定TextCNN 過(guò)濾模型的詞嵌入層的詞向量長(zhǎng)度為128。卷積層的尺度設(shè)置為(3,4,5),也就是卷積核的尺寸分別為3、4、5。從而可以捕獲跨度分別為3、4、5 個(gè)字符之間的關(guān)系。另外,對(duì)每個(gè)卷積尺度又設(shè)置128 個(gè)濾波器。設(shè)定非線性函數(shù)為Relu 函數(shù)。在池化層采用最大值池化,也就是一個(gè)濾波器返回的結(jié)果向量中取最大的值作為池化層的輸出結(jié)果。
構(gòu)建好深度學(xué)習(xí)的網(wǎng)絡(luò)模型后,需要設(shè)定損失函數(shù),從而通過(guò)最優(yōu)化來(lái)得到模型在訓(xùn)練樣本集上最優(yōu)的參數(shù)。本文中卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練時(shí)設(shè)定的損失函數(shù)為:
其中l(wèi)2_loss為了防止參數(shù)過(guò)擬合增加了參數(shù)正則項(xiàng)。該正則項(xiàng)作用于softmax 前的全連接層的權(quán)重。loss1為交差熵?fù)p失函數(shù)。本模型采用tensorflow函數(shù)softmax_cross_entropy_with_logits進(jìn)行實(shí)現(xiàn)。其首先對(duì)全連接層的輸出(輸出為每個(gè)類別的值)進(jìn)行softmax函數(shù)運(yùn)算:
從而將輸出轉(zhuǎn)換為屬于每個(gè)類的概率值;然后對(duì)softmax 函數(shù)的輸出與真實(shí)樣本的標(biāo)簽(類別)做交差熵。Tf.reduce_mean函數(shù)用于計(jì)算loss1中一個(gè)batch的平均交差熵。因此,本模型的損失函數(shù)包括交叉熵函數(shù)和權(quán)重正則項(xiàng)損失,其中Lambda為兩者之間的權(quán)重[15]。
接下來(lái),設(shè)定最優(yōu)化方法,通過(guò)梯度下降算法來(lái)計(jì)算參數(shù)的最優(yōu)解。本模型采用的是Adam 最優(yōu)化方法。Adam算法根據(jù)損失函數(shù)對(duì)每個(gè)參數(shù)的梯度的一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)調(diào)整針對(duì)于每個(gè)參數(shù)的學(xué)習(xí)速率。Adam 方法的學(xué)習(xí)步長(zhǎng)有一個(gè)范圍,不會(huì)因?yàn)槟硞€(gè)樣本上產(chǎn)生很大的梯度導(dǎo)致很大的學(xué)習(xí)步長(zhǎng),參數(shù)變化比較穩(wěn)定。
為了測(cè)試本文設(shè)計(jì)的過(guò)濾模型的效果,實(shí)驗(yàn)采用了來(lái)自視頻直播平臺(tái)上的數(shù)據(jù)。特此說(shuō)明,本次論文的數(shù)據(jù)來(lái)源于天鴿互動(dòng)控股有限公司旗下喵播、歡樂吧等在線直播平臺(tái)。平臺(tái)通過(guò)用戶的發(fā)帖行為模式獲取了色情廣告短文本13萬(wàn)條,正常短文本8萬(wàn)條,總樣本數(shù)21萬(wàn)條。在實(shí)驗(yàn)過(guò)程中,將色情廣告短文本、正常短文本按照9∶1的比例,劃分為訓(xùn)練集和測(cè)試集。對(duì)比實(shí)驗(yàn)中采用同樣的數(shù)據(jù)集,通過(guò)統(tǒng)計(jì)關(guān)鍵詞出現(xiàn)的次數(shù)構(gòu)建樸素貝葉斯模型[16]及SVM模型。
如圖11 所示,作為對(duì)比實(shí)驗(yàn)的樸素貝葉斯模型。在其實(shí)驗(yàn)過(guò)程中,先通過(guò)jieba 分詞對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行處理并統(tǒng)計(jì)詞頻,將詞頻較高的關(guān)鍵詞0-1 向量化作為輸入。接下來(lái)縱向比較不同輸入向量維度下樸素貝葉斯模型的識(shí)別準(zhǔn)確率,即圖11 橫坐標(biāo)表示輸入向量維度??梢钥吹剑?dāng)輸入向量維度為2 000 時(shí),召回率、精準(zhǔn)率、準(zhǔn)確率趨于平緩。此外,在實(shí)驗(yàn)過(guò)程中隨著輸入向量維度的增加,所占用的計(jì)算資源也越來(lái)越大。故在接下來(lái)實(shí)驗(yàn)結(jié)果橫向?qū)Ρ戎?,采用樸素貝葉斯模型在輸入向量維度為4 700時(shí)的各項(xiàng)指標(biāo)。
圖11 樸素貝葉斯實(shí)驗(yàn)結(jié)果
SVM模型的特征輸入采用word2vec向量化表示的方法。事實(shí)上,當(dāng)SVM 模塊采用與樸素貝葉斯模型相同輸入特征時(shí)可以取得與樸素貝葉斯模型相近甚至更好的識(shí)別準(zhǔn)確率,但其消耗的計(jì)算資源也比樸素貝葉斯模型更大,無(wú)法滿足高效識(shí)別的要求。故SVM 模型和本文提出的模型均采用word2vec向量化后的輸入。
SVM 模型、4 700 維輸入向量下的樸素貝葉斯模型和本文提出的Text CNN短文本過(guò)濾模型進(jìn)行比較。結(jié)果見表1。
表1 橫向?qū)Ρ冉Y(jié)果%
從實(shí)驗(yàn)結(jié)果上看,本文提出的針對(duì)直播彈幕的TextCNN 過(guò)濾模型的準(zhǔn)確率達(dá)到90.6%,高于樸素貝葉斯模型的81.2%,且遠(yuǎn)高于SVM模型的53.6%。可以得到,本文提出的針對(duì)直播彈幕的TextCNN過(guò)濾模型是優(yōu)于樸素貝葉斯模型和SVM模型的。
可以看到,word2vec 向量化作為輸入的SVM 模型在可接受的時(shí)間下能夠被計(jì)算出來(lái),同時(shí)也損失了準(zhǔn)確率,甚至低于樸素貝葉斯模型。
此外,單從統(tǒng)計(jì)學(xué)角度去分析數(shù)據(jù)的樸素貝葉斯是無(wú)法充分考慮到詞語(yǔ)的上下文。如表2中非法彈幕“主播的衣服應(yīng)該直接脫掉”,單從“主播”“衣服”“脫掉”這幾個(gè)關(guān)鍵詞考慮,樸素貝葉斯模型的判定結(jié)果是正常的。而針對(duì)直播彈幕的TextCNN短文本則考慮到了“衣服”“脫掉”之間的聯(lián)系,從而給出了正確的判定結(jié)果。除此之外,直播彈幕這一短文本類型還有著重復(fù)率高的特點(diǎn)。統(tǒng)計(jì)單個(gè)字在正負(fù)樣本出現(xiàn)的次數(shù),訓(xùn)練樣本發(fā)現(xiàn)總共出現(xiàn)17 286個(gè)單字,其中正常短文本出現(xiàn)16 722個(gè)單字,不良短文本出現(xiàn)15 072個(gè)單字。大部分字在正負(fù)樣本中都有出現(xiàn),使得只依靠關(guān)鍵詞或者統(tǒng)計(jì)學(xué)的方法難以取得高的準(zhǔn)確率,甚至低于同類方法在垃圾郵件等其他文本分類上的準(zhǔn)確率??偟膩?lái)說(shuō),統(tǒng)計(jì)學(xué)類的機(jī)器學(xué)習(xí)方法因難以充分考慮帶噪短文本字符之間的關(guān)系,使得其難以得到高的識(shí)別準(zhǔn)確率。而且,在直播彈幕這類字符重復(fù)率高的特殊短文本的應(yīng)用上表現(xiàn)更差。本文提出的Text CNN 短文本過(guò)濾模型,則通過(guò)利用字符之間的關(guān)系,在一定程度上解決了直播彈幕識(shí)別率低的問題。但是,本文提出的模型準(zhǔn)確率還有提升的空間。盡管本文提出的方法消除了大部分噪音的影響,也利用了詞語(yǔ)的上下文。但是中文字符的同音字符替換這個(gè)難點(diǎn)問題仍有待進(jìn)一步的優(yōu)化。
表2 識(shí)別結(jié)果示例
此外,為了說(shuō)明預(yù)處理過(guò)程的重要性,還做了有無(wú)預(yù)處理過(guò)程的TextCNN過(guò)濾模型的實(shí)驗(yàn)對(duì)比。
從表3的結(jié)果可以看到,噪聲對(duì)實(shí)驗(yàn)結(jié)果的影響巨大,預(yù)處理過(guò)程能夠更好地幫助模型識(shí)別非法彈幕。
表3 實(shí)驗(yàn)結(jié)果%
本章中共進(jìn)行了三組實(shí)驗(yàn)。第一組實(shí)驗(yàn)中,通過(guò)縱向?qū)Ρ炔煌斎胂蛄烤S度下的樸素貝葉斯模型,得到結(jié)論:隨著輸入向量維度的增加,樸素貝葉斯模型的識(shí)別準(zhǔn)確率在增加,但所占用的計(jì)算資源也在增加。第二組實(shí)驗(yàn),橫向?qū)Ρ攘藰闼刎惾~斯模型、SVM模型和本文提出的針對(duì)直播彈幕的TextCNN 過(guò)濾模型。需要特別說(shuō)明的是,當(dāng)SVM 模型采取和樸素貝葉斯相同的數(shù)據(jù)輸入時(shí),SVM 模型將占用更大的計(jì)算資源,故盡管采用word2vec 向量化的輸入的SVM 模型表現(xiàn)更差,但其所需的計(jì)算資源更少,也只好用其作為對(duì)比實(shí)驗(yàn)之一。第二組實(shí)驗(yàn)的對(duì)比結(jié)果也充分說(shuō)明了本文提出的模型優(yōu)于其他兩種模型,其原因在于本文提出模型,不僅考慮了關(guān)鍵詞是否在當(dāng)前語(yǔ)句存在,更進(jìn)一步了考慮了當(dāng)前語(yǔ)句中存在的關(guān)鍵詞間的關(guān)系。從而能更準(zhǔn)確地識(shí)別非法彈幕。第三組實(shí)驗(yàn)則對(duì)比了有無(wú)預(yù)處理過(guò)程的TextCNN 模型,可以看到無(wú)預(yù)處理過(guò)程的模型表現(xiàn)極差,這也驗(yàn)證了前文所說(shuō)的非法彈幕的發(fā)送者開始有意識(shí)地規(guī)避檢測(cè)。
本文提出了一種針對(duì)直播彈幕場(chǎng)景下的TextCNN過(guò)濾模型。相較于統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法,此方法能夠更深入地考慮到詞語(yǔ)的上下文,從而提高了識(shí)別的準(zhǔn)確率和召回率。在TextCNN過(guò)濾模型中,通過(guò)綜合考慮單個(gè)關(guān)鍵詞的屬性和關(guān)鍵字之間的關(guān)系,判斷整個(gè)短文本的性質(zhì)。在帶噪短文本預(yù)處理的過(guò)程中,通過(guò)6種方式來(lái)降低噪聲的影響。在一定程度上,使得直播彈幕場(chǎng)景下短文本識(shí)別達(dá)到一個(gè)較高的水平。但是帶噪短文本預(yù)處理的過(guò)程中,仍無(wú)法消除中文同音字的影響,使得本文提出的針對(duì)直播彈幕的TextCNN 過(guò)濾模型在短文本識(shí)別里還有進(jìn)步的空間,需要以后深入研究,不斷完善。