胡萬亭,賈 真
1(河南大學濮陽工學院,濮陽 457000)
2(西南交通大學 信息科學與技術學院,成都 611756)
隨著信息技術的飛速發展,信息呈爆炸式增長,文本是信息最重要的載體之一.文本分類技術是指根據預定義的主題類別,按照自動化的方法對未知類別文本進行高效、準確歸類的技術.文本分類按照文本長度可分為短文本分類和長文本分類,本文研究對象——新聞文本屬于長文本.
文本分類方法主要是基于統計分析或者機器學習的方法,比如支持向量機[1]、K近鄰法[2]、樸素貝葉斯[3]、決策樹[4]、LDA 模型[5]、最大熵模型[6]等方法.近幾年的研究熱點主要是基于淺層神經網絡或者深度學習的方法.基于淺層神經網絡的方法主要指詞向量通過Word2Vec 生成,然后結合其他機器學習方法進行分類.文獻[7]利用加權Word2Vec 結合SVM 技術進行微博情感分類,具有較好的分類效果.深度學習文本分類主要是使用CNN、自動編碼器等深度學習模型進行分類,或者是CNN 和LSTM 結合的混合模型等.文獻[8]研究了將注意力機制后引入卷積神經網絡模型進行中文新聞文本分類的方法.文獻[9]研究了基于降噪自動編碼器的中文新聞文本分類算法.文獻[10]提出一種CNN 和雙向LSTM 特征融合的模型,利用CNN提取文本向量的局部特征,利用BiLSTM 提取下文相關的全局特征,然后融合兩種模型進行情感分析.
本文設計一種基于加權詞向量結合卷積神經網絡的新聞文本分類方法.Word2Vec 生成的詞向量能夠體現上下文語義信息,所以基于Word2Vec 的詞表示和文檔表示已經廣泛應用于自然語言處理領域.但是Word2Vec 無法體現詞語對于文本的重要性,而TFIDF 本質上就是詞語的權重,可以用它來對詞向量進行加權,進一步用加權后的詞向量作為卷積神經網絡的輸入,進行新聞文本的分類.因為新聞有標題和正文兩部分組成,所以本文改進了TF-IDF 算法,計算TF 時融合了標題和正文兩個部分.
TF-IDF 中文名是“詞頻-逆文本頻率”.TF 即詞頻,統計每個詞在每一個文檔內的頻率,體現了詞語對某篇文檔的重要性.TF 越大,詞語對文檔越重要,TF 越小,詞語對文檔越不重要,計算如式(1)所示.

其中,ni,j是詞語ti在文檔dj中出現的頻數,分母是文檔dj中所有詞語頻數總和.
IDF 即逆文檔頻率,主要思想是在整個文檔集合中,某個詞語所在的文檔數量越小,該詞語對這些文檔的標識性越強,或者說該詞語對文檔類別的區分能力越強.比如詞語“記者”在每一篇新聞里的出現頻率可能都較高,但是對整個新聞文檔集合來說,把“記者”當成新聞文檔分類的重要特征的話,效果顯然很差,不具有區分度.計算如式(2)所示.

其中,|D|是文檔總數,分母是包含第i個詞語的文檔數量.
TF-IDF 簡單取TF 和IDF 的乘積,如果文檔長度不一致,可以對TF-IDF 進行歸一化.基礎的計算公式如式(3)所示.

Word2Vec 是Google 提出的一種詞嵌入的算法,主要包含CBOW 和Skip-Grams 兩種神經網絡模型.在詞向量出現之前,詞語一般通過獨熱編碼表示,文本用詞袋模型表達,向量非常稀疏,容易造成維數災難,而且無法準確計算文本的相似度.近年來深度學習迅速發展,自特征抽取的詞嵌入技術越來越受到學術界和工業界的青睞.Mikolov 等[11]在2013年提出了Word2Vec模型,用于計算詞向量(又叫上下文分布式表達).Word2Vec 將詞語上下文信息轉化成一個低維向量,避免計算災難,而且可以很好度量詞語相似度,現在已經被廣泛應用在自然語言處理的各個領域[12].
一般認為CBOW 的訓練時間更短,Skip-gram 的訓練結果更好,所以我們選擇Skip-gram 模型,如圖1.輸入層向量是輸入中心詞的one-hot 編碼,輸出層向量就是詞典中每一個詞語出現在中心詞周圍的概率分布.WV*N和W’N*V是權重矩陣,也就是待求參數.式(4)是求解參數的目標函數,顯然目標函數取最大值的直觀解釋就是文本內所有詞作為中心詞產生相應周圍詞的條件概率乘積取最大值,近似表示已知詞典生成目標文本集合的條件概率取得最大值.目標函數直接取對數,然后再取負數,就轉化成了目標函數求最小值,就可以利用梯度下降法來求解參數.預測時,根據輸入數據和參數可以得到詞向量.目標函數如式(5)所示.

其中,wt是文本里每一個詞,j的取值范圍就是窗口大小,wt+j就是中心詞的周圍詞.

圖1 Skip-gram 模型
卷積神經網絡是一種深度學習模型,有多層感知器結構,在圖像識別和語音識別領域取得了很好的結果,現在也被廣泛應用到自然語言處理領域.卷積神經網絡的模型如圖2所示.

圖2 卷積神經網絡模型
對于圖像處理,輸入層就是圖像像素組成的矩陣;對于文本處理,輸入層是輸入文本的詞向量構成的矩陣.卷積層對輸入數據應用若干過濾器,進行特征提取.一個過濾器對應一個卷積核,不同的過濾器代表了不同類型的特征提取,過濾后的結果被稱為特征圖譜.池化層對矩陣或者向量進行降維,從而減小數據規模,但是要避免主要特征的損失.池化可以選擇最大池化、平均池化等.池化層的數據通過全連接的方式接入到Softmax 層后輸出分類結果.實際的輸出結果是一個向量,輸出的向量里每一個標量的值對應一個類別的概率,最大標量所在位置對應的類別就是分類結果.
整體框架如圖3所示,主要包括了數據預處理模塊、詞向量生成模塊、TF-IDF 計算模塊、CNN 分類模塊,前三個模塊的輸出為CNN 分類模塊提供訓練數據.采用Python 語言編程,除了開發效率高之外,還有很多的機器學習、深度學習、自然語言處理的第三方庫,有助于快速實現模型.

圖3 總體框架
新聞文本來源于搜狗實驗室公布的搜狐新聞數據,以XML 形式提供,數據的詳細介紹將在下一節給出.首先逐個抽出每個新聞頁面的文本,文本包含了標題和正文.然后用結巴分詞對文本進行分詞.接著對分詞結果進行停用詞過濾,停用詞表結合哈工大停用詞表和百度停用詞表.最后把處理好的數據按照類別放到不同的文本文件中,每個新聞文本數據占文件的一行.
本文在計算TF-IDF 時,對公式進行了改進,如式(6)所示.新聞文本由新聞標題和正文組成,標題對于區分文本類別也有較大價值,因其長度相對正文來說極短,所以標題詞語在文本內詞頻比正文詞語在文本內詞頻有更高的權重.

其中,w是大于1 的權重,和文本長度、文本內容有很大關系,可以在實驗過程中根據實際情況進行調節,本實驗調節到4~5 的范圍內,取得了較好效果.TFt(t)是文本標題內出現的詞語t的詞頻,TFc(t)是文本正文內出現的詞語t的詞頻.顯然詞語t在標題或者正文內不出現的話,TFt(t)或者TFc(t)取0.
詞向量生成選擇了Word2Vec 的Skip-Gram 模型.Word2Vec 生成的詞向量雖然可以很好地體現語義上下文的關聯,但是無法反映詞語對于文本分類的重要性,而TF-IDF 可以體現詞語對文本的重要程度,因此可以把TF-IDF 值作為詞語區分文本類別的權重.本文參考了文獻[7],對詞向量用TF-IDF 值進行了加權,加權后的向量可以更好表征文本.向量數乘公式如式(7)所示.

其中,W2V(t)是詞語t的詞向量,W–W2V(t)是詞語t在第j篇文本內加權后的詞向量.
每個詞語在不同文檔中的TF-IDF值預先計算好.每個詞語的Word2Vec 詞向量也都預先訓練好,但是沒有區分它們在不同文本中的差異.新聞文本分類模型的訓練和預測時,需要詞向量表達的文本數據不斷輸入模型.所以,選擇在輸入每個文本的詞向量矩陣數據時,用哈希方法獲得每個詞語在該文本中的TFIDF 值,通過矩陣運算得到加權后的詞向量矩陣.在本文實驗中,詞向量的維數調節到100.
本文選擇Keras 搭建卷積神經網絡.Keras 是建立在Tensorflow 和Theano 之上的神經網絡框架,但是比直接用TensorFlow 搭建神經網絡要容易得多,使用搭積木的方式搭建神經網絡.
在輸入層,每個文本的詞向量矩陣大小一致,都是150×100,150 是文本單詞數量,100 是詞向量的維數.文本長短不一,單詞數量多于150 時,按照單詞出現頻數取前150 個單詞;單詞數量不足150 時,用0 補齊矩陣.
在卷積層,選擇200 個大小為3×100 的卷積核,卷積層輸出200 個148×1 維的矩陣,也就是200 個148維向量.形象解釋就是200 個卷積核從不同角度提取了文本的200 種特征向量.
在池化層,選擇MAX-Pooling,取目標區域的最大值,可以保留文本的突出特征,又進行了降維,降低了數據運算量.當然,最大池化不可避免會損失一些有效信息,這也是CNN 存在的問題,一般可以通過增加特征圖數量進行彌補,本文卷積層有200 個特征圖,可以在一定程度彌補信息損失.池化后的結果是一個200維向量,就是該文本的向量表示.
數據通過全連接的方式接入到Softmax 層后連接到12 維的類別向量上,該向量就是樣本在12 個類別上的概率分布情況.預測樣本類別時,最大值所在的維度映射到對應類別上.
實驗數據來自搜狗實驗室對外開放的搜狐新聞精簡版,保留12 種類別文本,分別是汽車(auto)、商業(business)、文化(cul)、健康(health)、房產(house)、信息技術(IT)、教育(learning)、軍事(mil)、運動(sports)、旅游(travel)、女人(women)、娛樂(yule).數據預處理過程上面已經描述過:從XML 文件抽取標題、正文和類別,分詞,去掉停用詞,分類別存儲.
實驗中,每個類別取5000 個樣本,隨機選4000 個加入訓練集,剩余1000 個加入測試集.訓練集總的樣本數是48 000 個,測試集總的樣本數是12 000 個.
本文做了3 組對照實驗,分別采用詞向量+邏輯回歸分類方法(方法1)、詞向量+CNN 方法(方法2)、加權詞向量+CNN 方法(方法3),實驗結果分別見表1、表2、表3.確率(Precision)、召回率(Recall)、F1 分數(F1-score)的宏平均(Macro-avg)對比如圖4所示.宏平均是全部類別性能度量的算術平均值,通過對比可以明顯看出方法的性能提升.

表1 詞向量+邏輯回歸分類結果
3 個實驗都用Word2Vec 表示詞向量,分析發現邏輯回歸分類實驗結果相對較差,詞向量結合卷積神經網絡可以取得較好的分類效果,加權詞向量結合卷積神經網絡讓實驗結果進一步提升.上文分析過,Word2Vec 能夠體現上下文語義,TF-IDF 能夠反映詞語區分文本類別的能力,所以對詞向量加權后進一步提升了分類效果.

表3 加權詞向量+卷積神經網絡分類結果

圖4 3 種方法性能的宏平均值對比圖
搜狗實驗室的搜狐新聞語料相對來說規模較大、類別準確、頁面噪聲較低.但是限于實驗機器運算能力,每個類別選取了5000 個樣本.提升硬件性能或者結合并行計算技術,從而擴大訓練語料庫規模,能夠進一步提升分類效果.
本文區分新聞的標題和正文,改進了TF-IDF 模型,然后使用TF-IDF 對詞向量進行加權,最后用CNN 進行新聞分類.在搜狐新聞語料內部,取得了較好的分類效果.
用搜狐新聞訓練的模型,對全網新聞數據進行預測,準確率和召回率有所下降.分析主要原因是訓練數據集中在搜狐新聞,對訓練數據存在過擬合,而異源新聞的長度、風格等存在較大差異,所以分類效果有所下降.今后的研究工作中,期望擴大訓練數據來源,增加不同數據源的新聞文本,以更好地適用于全網新聞文本分類.BERT、ERNIE 等詞嵌入模型方興未艾,在自然語言處理各個領域取得了更好的成績,下一步實驗擬采用BERT 或者其改進模型替代Word2Vec,期望進一步提高新聞文本分類的效果.