李飛鴿,王 芳,黃樹成
(江蘇科技大學 計算機學院,江蘇 鎮(zhèn)江,212100)
在移動互聯(lián)時代,文本數(shù)據(jù)呈現(xiàn)爆炸式增長。通過對文本數(shù)據(jù)進行多標簽標注,能夠快速查詢所需信息。根據(jù)文本信息關聯(lián)的標簽個數(shù)可分為單標簽文本和多標簽文本[1]。
目前,傳統(tǒng)文本分類方法通過人為設計規(guī)則提取文本數(shù)據(jù)特征,造成文本分類結(jié)果誤差較大并且提取的文本表征較差[2]?,F(xiàn)階段,基于深度學習的多標簽分類方法逐漸成為主流,通過數(shù)據(jù)清洗、去重等操作提高文本提取的質(zhì)量。
為此,本文提出一種基于Albert(A Lite BERT)和TextCNN(Text Convolutional Neural Network)的中文文本分類研究方法。其中,Albert 是一種預訓練模型,文本數(shù)據(jù)首先經(jīng)過Albert內(nèi)部的雙向Transformer 編碼器獲得相應的動態(tài)文本詞向量;然后使用TF-IDF 算法抽取文本數(shù)據(jù)中權重最高的5 個詞構建關鍵詞表;接下來將關鍵詞表與詞向量進行向量拼接構成融合關鍵詞信息的多義詞向量,并將其作為TextCNN嵌入層的輸入;最后實現(xiàn)多標簽文本分類。
詞向量是文本數(shù)據(jù)向量化的一種主要表現(xiàn)形式,當前存在靜態(tài)詞向量和動態(tài)詞向量兩種。其中,靜態(tài)詞向量通過Word2vec 模型和Glove 模型獲取;動態(tài)詞向量則通過BERT(Bidirectional Encoder Representations from Transformers)模型獲取。例如,Radford 等[3]提出Word2vec 模型包含Cbow 和Skip-Gram 兩種方法,但均未充分利用語句間的整體信息。Penington 等[4]基于統(tǒng)計學詞匯共現(xiàn)技術提出Glove 模型訓練詞向量,考慮了文本數(shù)據(jù)的全部信息。Devlin 等[5]提出BERT 預訓練模型,通過注意力機制將任意兩個單詞位置間距轉(zhuǎn)換為1,同時基于遮掩語言模型和句子上下文關系預測學習任務,能在海量文本數(shù)據(jù)中自主學習字符、語義級文本特征,并將學習到的文本特征向量應用于下游任務。Lan 等[6]提出Albert 模型改善BERT 訓練參數(shù)過多、訓練時間過長等問題。
目前,機器學習和深度學習在文本分類中發(fā)展迅速,例如樸素貝葉斯方法[7]和支持向量機(SVN)。其中,樸素貝葉斯方法屬于概率論分類算法,根據(jù)特征屬性對某個對象進行分類;支持向量機通過簡單的直覺和嚴謹?shù)臄?shù)學方法解決最小化問題,應用拉格朗日定理解決約束優(yōu)化問題。
謝金寶等[8]提出一種基于語義理解的多元特征融合文本分類模型,通過神經(jīng)網(wǎng)絡嵌入各層通路,提取不同層次的文本特征表示。孫松濤等[9]使用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)將文本內(nèi)容詞向量融合成句子向量,并將句子向量作為訓練多標簽分類器的語料。Long 等[10]采用多通道CNN 模型進行監(jiān)督學習,將詞矢量作為模型輸入特征,可以在不同的窗口大小進行語義合成,完成文本分類任務Kim 等[11]提出文本卷積神經(jīng)網(wǎng)絡模型通過一維卷積獲取句子中n-gram 的特征表示,通過卷積核窗口抽取深層文本局部特征表示。實驗表明,該模型對文本數(shù)據(jù)淺層特征具有較強的抽取能力。
1.3.1 TF-IDF
在中文文本數(shù)據(jù)中,詞的重要程度與出現(xiàn)次數(shù)呈現(xiàn)正相關。其中,頻數(shù)(Term Frequency,TF)為詞在一個文本數(shù)據(jù)中出現(xiàn)的次數(shù),逆文檔(Inverse Document Frequency,IDF)用來衡量詞的重要程度[12]。具體計算公式如下:
其中,N代表整個語料集中的文本總數(shù),|{j:ti∈dj}|表示詞ti在整個語料中存在的文檔數(shù)。當一個詞出現(xiàn)次數(shù)越多,IDF 值越小且無限趨近于0,為了避免零值,分母加上0.01。
1.3.2 Albert模型
模型內(nèi)部Transformer 編碼器使用編碼特征提取器提取文本數(shù)據(jù)特征,特征向量經(jīng)過雙向Transformers 編碼器獲得相應的動態(tài)詞向量輸出。如圖1 所示,輸出向量包括兩種形式,其中C={C1,C2,…,CN}表示初始輸入文本數(shù)據(jù)中的字符,經(jīng)過Albert 模型訓練最終輸出動態(tài)字向量特征表示Z={Z1,Z2,…,ZN}和CLS句子級別向量表示。
Fig.1 Albert model structure圖1 Albert模型結(jié)構
Albert 采用基于Seq2Seq 模型的Transformer 編碼器[13]提取各網(wǎng)絡層的多頭自注意力機制層[14]和前饋網(wǎng)絡層。其中,對于前者通過b個不同線性變換對A、B、C 進行投影,拼接注意力結(jié)果;對于后者提供非線性變換,融合文本內(nèi)容位置信息,并且每個子層都含有Add&Norm 層與上層相加后的輸入與輸出。
此外,將隱藏層歸一化為標準正態(tài)分布,加速模型收斂速度,計算公式如下:
1.3.3 TextCNN模型
CNN 主要使用矩陣表示句子,特點是捕捉文本數(shù)據(jù)的局部信息[15]。具體的,利用矩陣的行代表單詞或字符,即矩陣一行代表一個詞向量。TextCNN 由CNN 衍變而來,主要用于文本分類領域,可設置過濾核范圍對文本不同大小的局部特征進行組合和篩選。如圖2 所示,TextCNN 包含嵌入層、卷積層、池化層和全連接層。
Fig.2 TextCNN model圖2 TextCNN模型
(1)嵌入層。如圖3 所示,該層將文本數(shù)據(jù)向量轉(zhuǎn)化為指定大小,矩陣中每一行對應一個詞。例如,句子X有n個詞代表矩陣行數(shù),則句子矩陣大小表示為:
其中,Xi為當前文本中的第i個詞,⊕為向量拼接操作。
(2)卷積層。TextCNN 模型使用卷積核過濾器與輸入層句子矩陣計算單位節(jié)點矩陣[16]。該矩陣能提取不同的層次特征,然后通過非線性激活函數(shù)得到特征映射矩陣C=[c1,c2,…,cn],特征公式為:
Fig.3 TextCNN convolutional layer model圖3 TextCNN卷積層模型
其中,W為輸出卷積核的權重矩陣,H為偏置參數(shù),f為激活函數(shù)。
(3)池化層。目前,主要使用最大池化算法[17]拼接特征向量,構成一維向量表示以聚合重要特征,從而減少神經(jīng)網(wǎng)絡參數(shù)和特征向量個數(shù),達到降維效果,在一定程度上也防止了過擬合現(xiàn)象。具體計算公式如下:
(4)全連接層。由于TextCNN 模型參數(shù)過多,為了避免過擬合現(xiàn)象發(fā)生,在全連接層加入Dropout 使神經(jīng)元一定概率置0,減少網(wǎng)絡對連接的過度依賴。然而,無論是前向還是反向傳播,為了保持信息總量不變,需要根據(jù)Dropout概率進行修正補償。
此外,在全連接層后接入softmax 函數(shù)層得到標簽概率分布,具體計算公式如下:
為了高效管理互聯(lián)網(wǎng)的海量中文文本數(shù)據(jù),提出基于Albert 和TextCNN 的中文文本分類方法(簡稱為ATT),如圖4所示。
Fig.4 ATT model圖4 ATT模型
該模型首先使用Albert 預訓練模型獲取多義詞向量,基于TF-IDF 算法構建當前文檔關鍵詞表,通過向量拼接方法將兩者融合成具有關鍵詞信息的多義詞向量。然后,將其作為嵌入層的輸出和卷積層的輸入,使用調(diào)整的卷積核窗口獲取文本數(shù)據(jù)深層局部語義特征。最后,通過Sigmoid函數(shù)計算文本數(shù)據(jù)的標簽類別。
(1)嵌入層。該層對文本數(shù)據(jù)進行預處理,包括數(shù)據(jù)清洗、分詞等操作。本文在詞向量上進行改進,使用縱向拼接方式進行向量拼接生成固定長度的維度矩陣。例如,首先訓練得到一個DN×S矩陣,其中N為文本字符個數(shù),S為Albert 代表的自定義維度;然后將TF-IDF 計算的關鍵詞表構建成DM×S,選取M中前5個關鍵詞組成關鍵詞表,因此每個子文檔不同關鍵詞的TF-IDF 值各不相同;接下來將每個子文檔的關鍵詞信息進行拼接構成整個文檔的關鍵詞表;最后將預處理后的文本數(shù)據(jù)融合Albert-TF-IDF 詞向量模型得到Oi:j=(O1,O2,…,On),并將其作為嵌入層輸出。如圖5所示。
Fig.5 Vector fusion strategy圖5 向量融合策略
(2)卷積層。為解決中文文本數(shù)據(jù)的語言特點,基于hellonlp 對卷積層進行超參數(shù)調(diào)整。具體為,將卷積核的窗口大小h設置為3、4、5、6,使用不同大小卷積核捕獲文本多字符特征和多個相鄰字之間的隱藏相關性。具體公式如下:
其中,h為卷積核大小,Q為輸出卷積核的權重矩陣,E為偏置參數(shù),f為激活函數(shù),Z為是卷積層提取到的特征向量。
(3)池化層。該層對卷積層的特征矩陣進行壓縮,提取主要局部特征。本文采用最大池化方式獲得主要的局部特征,丟棄部分次要特征,將計算結(jié)果拼接構成新矩陣,具體計算公式如下:
其中,Z為卷積矩陣,Y為最大池化后矩陣。通常情況下,新矩陣維度會變小,可為后續(xù)操作減少訓練參數(shù),如圖6所示。
(4)全連接分類層。首先將池化層輸出結(jié)果進行Sigmoid 函數(shù)歸一化,得到文本標簽概率分布矩陣R。然后,取出R超過設定閾值的索引得到中文多標簽文本分類的結(jié)果。具體計算公式如下:
Fig.6 Maximum pooling model圖6 最大池化模型
然而,當在多標簽文本分類問題中使用Sigmoid 非線性激活函數(shù)時,為判斷實際概率和期望值間的差距,需要使用交叉熵損失函數(shù)判定式:
其中,i為標簽個數(shù),n為Sigmoid 函數(shù)的結(jié)果,n∈[0,1],若Sigmoid 函數(shù)計算的值超過閾值,Ri=1。
本文實驗環(huán)境基于Centos 操作系統(tǒng),處理器為AMD 3600 3.60GHz,內(nèi)存為16G,顯卡為RTX2080Ti,硬盤大小為512G。底層框架為Tensorflow,使用Python 語言編程。
通過爬蟲技術在今日頭條等網(wǎng)站爬取82 102 篇新聞數(shù)據(jù)。為了保證數(shù)據(jù)的有效性和真實性,去除低于200 個字符的文本數(shù)據(jù),最后得到63 290 篇數(shù)據(jù)進行實驗。然后利用各大新聞網(wǎng)站上的主題進行標簽去重后得到30 個標簽,設定驗證集、測試集、訓練集比例為1∶1∶8。
在固定其他參數(shù)前提下,經(jīng)過多次實驗改變模型可變參數(shù)數(shù)值,得到最優(yōu)參數(shù)如表1所示。
Table 1 Model parameters表1 模型參數(shù)
為了比較不同模型的優(yōu)劣,采用精確率、召回率、F1 對模型進行評估。P(Positive)代表1、N(Negative)代表0、T(True)代表正確和F(False)代表錯誤避免數(shù)字造成的歧義。其中,精確率(Precision)表示所有被預測為正的樣本中,真正是正樣本的百分比;召回率(Recall)表示在實際為正的樣本被預測為正樣本的百分比;F1即精確值和召回率的調(diào)和均值。具體公式如式(15)-式(17)所示:
為體現(xiàn)本文模型的優(yōu)勢,在構建的中文新聞文本數(shù)據(jù)集中將ATT 與BR 算法[18]、CC[19]算法、Word2vec、Albert、TextCNN 進行比較。
Table 2 Model comparison表2 模型比較
由表2 可知,Albert、word2vec 模型的F1 值分別為83.77%和82.79%,說明Albert 生成的多義詞向量特征向量多樣化、代表性更高。Albert、ATT 模型的F1 值分別為83.77%和85.65%,說明融入TF-IDF 算法的關鍵詞信息可避免Albert 生成詞向量時丟失部分詞。傳統(tǒng)TextCNN、本文模型的F1 值分別為83.39%和85.65%,說明較大的卷積核窗口能理解中文文本局部上下文語意。
本文提出一種基于改進的詞向量和TextCNN 的多標簽文本分類模型。其中,Albert 能更好使用雙向編碼器獲取上下文信息,TF-IDF 算法抽取文本數(shù)據(jù)中權重最高的5個詞構建關鍵詞表,將關鍵詞表與Albert 生成的詞向量進行向量拼接,構成一個融合關鍵詞信息的多義詞向量。為了適用中文文本數(shù)據(jù)特點,通過調(diào)整卷積核窗口大小使TextCNN 更好地捕捉文本局部信息,避免丟失部分特征信息。在新聞評論數(shù)據(jù)集的實驗表明,本文模型相較于基線模型效果更好,在一定程度上提升了訓練效果。
然而,本文數(shù)據(jù)集僅來源于新聞評論,下一步將擴充實驗數(shù)據(jù)集以提升模型的適用性和可靠性。