胡萬亭,賈 真
1(河南大學(xué)濮陽工學(xué)院,濮陽 457000)
2(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 611756)
隨著信息技術(shù)的飛速發(fā)展,信息呈爆炸式增長,文本是信息最重要的載體之一.文本分類技術(shù)是指根據(jù)預(yù)定義的主題類別,按照自動(dòng)化的方法對(duì)未知類別文本進(jìn)行高效、準(zhǔn)確歸類的技術(shù).文本分類按照文本長度可分為短文本分類和長文本分類,本文研究對(duì)象——新聞文本屬于長文本.
文本分類方法主要是基于統(tǒng)計(jì)分析或者機(jī)器學(xué)習(xí)的方法,比如支持向量機(jī)[1]、K近鄰法[2]、樸素貝葉斯[3]、決策樹[4]、LDA 模型[5]、最大熵模型[6]等方法.近幾年的研究熱點(diǎn)主要是基于淺層神經(jīng)網(wǎng)絡(luò)或者深度學(xué)習(xí)的方法.基于淺層神經(jīng)網(wǎng)絡(luò)的方法主要指詞向量通過Word2Vec 生成,然后結(jié)合其他機(jī)器學(xué)習(xí)方法進(jìn)行分類.文獻(xiàn)[7]利用加權(quán)Word2Vec 結(jié)合SVM 技術(shù)進(jìn)行微博情感分類,具有較好的分類效果.深度學(xué)習(xí)文本分類主要是使用CNN、自動(dòng)編碼器等深度學(xué)習(xí)模型進(jìn)行分類,或者是CNN 和LSTM 結(jié)合的混合模型等.文獻(xiàn)[8]研究了將注意力機(jī)制后引入卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行中文新聞文本分類的方法.文獻(xiàn)[9]研究了基于降噪自動(dòng)編碼器的中文新聞文本分類算法.文獻(xiàn)[10]提出一種CNN 和雙向LSTM 特征融合的模型,利用CNN提取文本向量的局部特征,利用BiLSTM 提取下文相關(guān)的全局特征,然后融合兩種模型進(jìn)行情感分析.
本文設(shè)計(jì)一種基于加權(quán)詞向量結(jié)合卷積神經(jīng)網(wǎng)絡(luò)的新聞文本分類方法.Word2Vec 生成的詞向量能夠體現(xiàn)上下文語義信息,所以基于Word2Vec 的詞表示和文檔表示已經(jīng)廣泛應(yīng)用于自然語言處理領(lǐng)域.但是Word2Vec 無法體現(xiàn)詞語對(duì)于文本的重要性,而TFIDF 本質(zhì)上就是詞語的權(quán)重,可以用它來對(duì)詞向量進(jìn)行加權(quán),進(jìn)一步用加權(quán)后的詞向量作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,進(jìn)行新聞文本的分類.因?yàn)樾侣動(dòng)袠?biāo)題和正文兩部分組成,所以本文改進(jìn)了TF-IDF 算法,計(jì)算TF 時(shí)融合了標(biāo)題和正文兩個(gè)部分.
TF-IDF 中文名是“詞頻-逆文本頻率”.TF 即詞頻,統(tǒng)計(jì)每個(gè)詞在每一個(gè)文檔內(nèi)的頻率,體現(xiàn)了詞語對(duì)某篇文檔的重要性.TF 越大,詞語對(duì)文檔越重要,TF 越小,詞語對(duì)文檔越不重要,計(jì)算如式(1)所示.
其中,ni,j是詞語ti在文檔dj中出現(xiàn)的頻數(shù),分母是文檔dj中所有詞語頻數(shù)總和.
IDF 即逆文檔頻率,主要思想是在整個(gè)文檔集合中,某個(gè)詞語所在的文檔數(shù)量越小,該詞語對(duì)這些文檔的標(biāo)識(shí)性越強(qiáng),或者說該詞語對(duì)文檔類別的區(qū)分能力越強(qiáng).比如詞語“記者”在每一篇新聞里的出現(xiàn)頻率可能都較高,但是對(duì)整個(gè)新聞文檔集合來說,把“記者”當(dāng)成新聞文檔分類的重要特征的話,效果顯然很差,不具有區(qū)分度.計(jì)算如式(2)所示.
其中,|D|是文檔總數(shù),分母是包含第i個(gè)詞語的文檔數(shù)量.
TF-IDF 簡單取TF 和IDF 的乘積,如果文檔長度不一致,可以對(duì)TF-IDF 進(jìn)行歸一化.基礎(chǔ)的計(jì)算公式如式(3)所示.
Word2Vec 是Google 提出的一種詞嵌入的算法,主要包含CBOW 和Skip-Grams 兩種神經(jīng)網(wǎng)絡(luò)模型.在詞向量出現(xiàn)之前,詞語一般通過獨(dú)熱編碼表示,文本用詞袋模型表達(dá),向量非常稀疏,容易造成維數(shù)災(zāi)難,而且無法準(zhǔn)確計(jì)算文本的相似度.近年來深度學(xué)習(xí)迅速發(fā)展,自特征抽取的詞嵌入技術(shù)越來越受到學(xué)術(shù)界和工業(yè)界的青睞.Mikolov 等[11]在2013年提出了Word2Vec模型,用于計(jì)算詞向量(又叫上下文分布式表達(dá)).Word2Vec 將詞語上下文信息轉(zhuǎn)化成一個(gè)低維向量,避免計(jì)算災(zāi)難,而且可以很好度量詞語相似度,現(xiàn)在已經(jīng)被廣泛應(yīng)用在自然語言處理的各個(gè)領(lǐng)域[12].
一般認(rèn)為CBOW 的訓(xùn)練時(shí)間更短,Skip-gram 的訓(xùn)練結(jié)果更好,所以我們選擇Skip-gram 模型,如圖1.輸入層向量是輸入中心詞的one-hot 編碼,輸出層向量就是詞典中每一個(gè)詞語出現(xiàn)在中心詞周圍的概率分布.WV*N和W’N*V是權(quán)重矩陣,也就是待求參數(shù).式(4)是求解參數(shù)的目標(biāo)函數(shù),顯然目標(biāo)函數(shù)取最大值的直觀解釋就是文本內(nèi)所有詞作為中心詞產(chǎn)生相應(yīng)周圍詞的條件概率乘積取最大值,近似表示已知詞典生成目標(biāo)文本集合的條件概率取得最大值.目標(biāo)函數(shù)直接取對(duì)數(shù),然后再取負(fù)數(shù),就轉(zhuǎn)化成了目標(biāo)函數(shù)求最小值,就可以利用梯度下降法來求解參數(shù).預(yù)測時(shí),根據(jù)輸入數(shù)據(jù)和參數(shù)可以得到詞向量.目標(biāo)函數(shù)如式(5)所示.
其中,wt是文本里每一個(gè)詞,j的取值范圍就是窗口大小,wt+j就是中心詞的周圍詞.
圖1 Skip-gram 模型
卷積神經(jīng)網(wǎng)絡(luò)是一種深度學(xué)習(xí)模型,有多層感知器結(jié)構(gòu),在圖像識(shí)別和語音識(shí)別領(lǐng)域取得了很好的結(jié)果,現(xiàn)在也被廣泛應(yīng)用到自然語言處理領(lǐng)域.卷積神經(jīng)網(wǎng)絡(luò)的模型如圖2所示.
圖2 卷積神經(jīng)網(wǎng)絡(luò)模型
對(duì)于圖像處理,輸入層就是圖像像素組成的矩陣;對(duì)于文本處理,輸入層是輸入文本的詞向量構(gòu)成的矩陣.卷積層對(duì)輸入數(shù)據(jù)應(yīng)用若干過濾器,進(jìn)行特征提取.一個(gè)過濾器對(duì)應(yīng)一個(gè)卷積核,不同的過濾器代表了不同類型的特征提取,過濾后的結(jié)果被稱為特征圖譜.池化層對(duì)矩陣或者向量進(jìn)行降維,從而減小數(shù)據(jù)規(guī)模,但是要避免主要特征的損失.池化可以選擇最大池化、平均池化等.池化層的數(shù)據(jù)通過全連接的方式接入到Softmax 層后輸出分類結(jié)果.實(shí)際的輸出結(jié)果是一個(gè)向量,輸出的向量里每一個(gè)標(biāo)量的值對(duì)應(yīng)一個(gè)類別的概率,最大標(biāo)量所在位置對(duì)應(yīng)的類別就是分類結(jié)果.
整體框架如圖3所示,主要包括了數(shù)據(jù)預(yù)處理模塊、詞向量生成模塊、TF-IDF 計(jì)算模塊、CNN 分類模塊,前三個(gè)模塊的輸出為CNN 分類模塊提供訓(xùn)練數(shù)據(jù).采用Python 語言編程,除了開發(fā)效率高之外,還有很多的機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、自然語言處理的第三方庫,有助于快速實(shí)現(xiàn)模型.
圖3 總體框架
新聞文本來源于搜狗實(shí)驗(yàn)室公布的搜狐新聞數(shù)據(jù),以XML 形式提供,數(shù)據(jù)的詳細(xì)介紹將在下一節(jié)給出.首先逐個(gè)抽出每個(gè)新聞頁面的文本,文本包含了標(biāo)題和正文.然后用結(jié)巴分詞對(duì)文本進(jìn)行分詞.接著對(duì)分詞結(jié)果進(jìn)行停用詞過濾,停用詞表結(jié)合哈工大停用詞表和百度停用詞表.最后把處理好的數(shù)據(jù)按照類別放到不同的文本文件中,每個(gè)新聞文本數(shù)據(jù)占文件的一行.
本文在計(jì)算TF-IDF 時(shí),對(duì)公式進(jìn)行了改進(jìn),如式(6)所示.新聞文本由新聞標(biāo)題和正文組成,標(biāo)題對(duì)于區(qū)分文本類別也有較大價(jià)值,因其長度相對(duì)正文來說極短,所以標(biāo)題詞語在文本內(nèi)詞頻比正文詞語在文本內(nèi)詞頻有更高的權(quán)重.
其中,w是大于1 的權(quán)重,和文本長度、文本內(nèi)容有很大關(guān)系,可以在實(shí)驗(yàn)過程中根據(jù)實(shí)際情況進(jìn)行調(diào)節(jié),本實(shí)驗(yàn)調(diào)節(jié)到4~5 的范圍內(nèi),取得了較好效果.TFt(t)是文本標(biāo)題內(nèi)出現(xiàn)的詞語t的詞頻,TFc(t)是文本正文內(nèi)出現(xiàn)的詞語t的詞頻.顯然詞語t在標(biāo)題或者正文內(nèi)不出現(xiàn)的話,TFt(t)或者TFc(t)取0.
詞向量生成選擇了Word2Vec 的Skip-Gram 模型.Word2Vec 生成的詞向量雖然可以很好地體現(xiàn)語義上下文的關(guān)聯(lián),但是無法反映詞語對(duì)于文本分類的重要性,而TF-IDF 可以體現(xiàn)詞語對(duì)文本的重要程度,因此可以把TF-IDF 值作為詞語區(qū)分文本類別的權(quán)重.本文參考了文獻(xiàn)[7],對(duì)詞向量用TF-IDF 值進(jìn)行了加權(quán),加權(quán)后的向量可以更好表征文本.向量數(shù)乘公式如式(7)所示.
其中,W2V(t)是詞語t的詞向量,W–W2V(t)是詞語t在第j篇文本內(nèi)加權(quán)后的詞向量.
每個(gè)詞語在不同文檔中的TF-IDF值預(yù)先計(jì)算好.每個(gè)詞語的Word2Vec 詞向量也都預(yù)先訓(xùn)練好,但是沒有區(qū)分它們?cè)诓煌谋局械牟町?新聞文本分類模型的訓(xùn)練和預(yù)測時(shí),需要詞向量表達(dá)的文本數(shù)據(jù)不斷輸入模型.所以,選擇在輸入每個(gè)文本的詞向量矩陣數(shù)據(jù)時(shí),用哈希方法獲得每個(gè)詞語在該文本中的TFIDF 值,通過矩陣運(yùn)算得到加權(quán)后的詞向量矩陣.在本文實(shí)驗(yàn)中,詞向量的維數(shù)調(diào)節(jié)到100.
本文選擇Keras 搭建卷積神經(jīng)網(wǎng)絡(luò).Keras 是建立在Tensorflow 和Theano 之上的神經(jīng)網(wǎng)絡(luò)框架,但是比直接用TensorFlow 搭建神經(jīng)網(wǎng)絡(luò)要容易得多,使用搭積木的方式搭建神經(jīng)網(wǎng)絡(luò).
在輸入層,每個(gè)文本的詞向量矩陣大小一致,都是150×100,150 是文本單詞數(shù)量,100 是詞向量的維數(shù).文本長短不一,單詞數(shù)量多于150 時(shí),按照單詞出現(xiàn)頻數(shù)取前150 個(gè)單詞;單詞數(shù)量不足150 時(shí),用0 補(bǔ)齊矩陣.
在卷積層,選擇200 個(gè)大小為3×100 的卷積核,卷積層輸出200 個(gè)148×1 維的矩陣,也就是200 個(gè)148維向量.形象解釋就是200 個(gè)卷積核從不同角度提取了文本的200 種特征向量.
在池化層,選擇MAX-Pooling,取目標(biāo)區(qū)域的最大值,可以保留文本的突出特征,又進(jìn)行了降維,降低了數(shù)據(jù)運(yùn)算量.當(dāng)然,最大池化不可避免會(huì)損失一些有效信息,這也是CNN 存在的問題,一般可以通過增加特征圖數(shù)量進(jìn)行彌補(bǔ),本文卷積層有200 個(gè)特征圖,可以在一定程度彌補(bǔ)信息損失.池化后的結(jié)果是一個(gè)200維向量,就是該文本的向量表示.
數(shù)據(jù)通過全連接的方式接入到Softmax 層后連接到12 維的類別向量上,該向量就是樣本在12 個(gè)類別上的概率分布情況.預(yù)測樣本類別時(shí),最大值所在的維度映射到對(duì)應(yīng)類別上.
實(shí)驗(yàn)數(shù)據(jù)來自搜狗實(shí)驗(yàn)室對(duì)外開放的搜狐新聞精簡版,保留12 種類別文本,分別是汽車(auto)、商業(yè)(business)、文化(cul)、健康(health)、房產(chǎn)(house)、信息技術(shù)(IT)、教育(learning)、軍事(mil)、運(yùn)動(dòng)(sports)、旅游(travel)、女人(women)、娛樂(yule).數(shù)據(jù)預(yù)處理過程上面已經(jīng)描述過:從XML 文件抽取標(biāo)題、正文和類別,分詞,去掉停用詞,分類別存儲(chǔ).
實(shí)驗(yàn)中,每個(gè)類別取5000 個(gè)樣本,隨機(jī)選4000 個(gè)加入訓(xùn)練集,剩余1000 個(gè)加入測試集.訓(xùn)練集總的樣本數(shù)是48 000 個(gè),測試集總的樣本數(shù)是12 000 個(gè).
本文做了3 組對(duì)照實(shí)驗(yàn),分別采用詞向量+邏輯回歸分類方法(方法1)、詞向量+CNN 方法(方法2)、加權(quán)詞向量+CNN 方法(方法3),實(shí)驗(yàn)結(jié)果分別見表1、表2、表3.確率(Precision)、召回率(Recall)、F1 分?jǐn)?shù)(F1-score)的宏平均(Macro-avg)對(duì)比如圖4所示.宏平均是全部類別性能度量的算術(shù)平均值,通過對(duì)比可以明顯看出方法的性能提升.
表1 詞向量+邏輯回歸分類結(jié)果
3 個(gè)實(shí)驗(yàn)都用Word2Vec 表示詞向量,分析發(fā)現(xiàn)邏輯回歸分類實(shí)驗(yàn)結(jié)果相對(duì)較差,詞向量結(jié)合卷積神經(jīng)網(wǎng)絡(luò)可以取得較好的分類效果,加權(quán)詞向量結(jié)合卷積神經(jīng)網(wǎng)絡(luò)讓實(shí)驗(yàn)結(jié)果進(jìn)一步提升.上文分析過,Word2Vec 能夠體現(xiàn)上下文語義,TF-IDF 能夠反映詞語區(qū)分文本類別的能力,所以對(duì)詞向量加權(quán)后進(jìn)一步提升了分類效果.
表3 加權(quán)詞向量+卷積神經(jīng)網(wǎng)絡(luò)分類結(jié)果
圖4 3 種方法性能的宏平均值對(duì)比圖
搜狗實(shí)驗(yàn)室的搜狐新聞?wù)Z料相對(duì)來說規(guī)模較大、類別準(zhǔn)確、頁面噪聲較低.但是限于實(shí)驗(yàn)機(jī)器運(yùn)算能力,每個(gè)類別選取了5000 個(gè)樣本.提升硬件性能或者結(jié)合并行計(jì)算技術(shù),從而擴(kuò)大訓(xùn)練語料庫規(guī)模,能夠進(jìn)一步提升分類效果.
本文區(qū)分新聞的標(biāo)題和正文,改進(jìn)了TF-IDF 模型,然后使用TF-IDF 對(duì)詞向量進(jìn)行加權(quán),最后用CNN 進(jìn)行新聞分類.在搜狐新聞?wù)Z料內(nèi)部,取得了較好的分類效果.
用搜狐新聞?dòng)?xùn)練的模型,對(duì)全網(wǎng)新聞數(shù)據(jù)進(jìn)行預(yù)測,準(zhǔn)確率和召回率有所下降.分析主要原因是訓(xùn)練數(shù)據(jù)集中在搜狐新聞,對(duì)訓(xùn)練數(shù)據(jù)存在過擬合,而異源新聞的長度、風(fēng)格等存在較大差異,所以分類效果有所下降.今后的研究工作中,期望擴(kuò)大訓(xùn)練數(shù)據(jù)來源,增加不同數(shù)據(jù)源的新聞文本,以更好地適用于全網(wǎng)新聞文本分類.BERT、ERNIE 等詞嵌入模型方興未艾,在自然語言處理各個(gè)領(lǐng)域取得了更好的成績,下一步實(shí)驗(yàn)擬采用BERT 或者其改進(jìn)模型替代Word2Vec,期望進(jìn)一步提高新聞文本分類的效果.