王浩暢,孫銘澤
(東北石油大學 計算機與信息技術學院,黑龍江 大慶 163318)
文本分類(text classification)是自然語言處理(natural language processing,NLP)學科的一門重要研究方向,而短文本分類則是文本分類的一個重要分支。隨著自然語言處理技術研究的不斷深入,文本分類算法研究也獲得了巨大突破[1]。文本分類由最初依靠人工進行規則提取方式,轉向基于機器學習的自動分類方式,通過機器學習方法提取文本分類規則進行自動分類,將機器學習算法應用到文本分類領域[2]。
文本分類過程一般包括:文本預處理、特征提取、模型選擇、損失函數計算、測試評估[3]。文本分類方法經過長期的研究在很多場景下已經得到了應用,但是短文本分類研究起步比較晚,且一直沒有什么通用的、效果良好的方法。短文文本分類一般存在兩個問題,其一是短文本提供的詞語少,提供的有效信息有限;其二是根據分詞結果構建的詞頻或者特征矩陣稀疏,大多數算法重點放在處理稀疏矩陣,效果都不好。因此短文本分類重心放在特征處理和分類算法環節上,就需要加深對深度學習模型的研究。
深度學習模型在文本分類上表現出了相對較好的分類效果,得益于模型在復雜特征提取和文本表示方面有著更強大的能力[4]。例如,快速文本分類FastText[5]模型,具有模型結構簡單、訓練速度快的特點,能夠處理樣本數量大、類別標簽多的任務,文本分類任務中將整篇文檔的詞疊加得到文檔向量。卷積神經網絡(convolutional neural network,CNN)文本分類模型TextCNN[6],簡化了卷積層,具有參數數目少、計算量少、訓練速度快等優勢。在循環神經網絡(recurrent neural network,RNN[7])和CNN基礎上,Lai S[8]等提出了一種循環卷積神經網絡(recurrent convolutional neural network,RCNN)分類方法,汲取了RNN和CNN共同的優勢,具有訓練時間更短、訓練速度更快、處理樣本更多等優勢,采用雙向循環結構,能最大程度捕捉下文信息,極大提高了分類的準確率,分類效果更明顯。
近年來,隨著深度學習的發展,使得預訓練語言模型受到廣泛關注,預訓練模型是利用訓練好的詞向量初始化網絡文本表征問題。當前最好的預訓練模型有Bert[9]、ERNIE[10]模型。李可悅等[11]提出基于BERT的社交電商文本分類算法,采用BERT預訓練語言模型,完成社交電商文本句子層面的特征向量表示,有針對性地將獲取特征向量輸入分類器進行分類,能夠高效準確地判斷文本所描述商品的類別。邢照野等[12]提出基于改進ERNIE模型的中文文本分類,通過利用知識增強的語義表示預訓練模型生成基于上下文信息的詞向量,有效提高了中文文本分類性能。
伴隨文本分類技術的成熟,對于短文本分類技術的需求日益突顯,一些研究者陸續開始著重短文本分類技術研究。王玉燕等[13]針對短文本存在篇幅短、特征稀疏、主題多變等問題,提出基于深度學習的短文本分類技術,采用CNN和RNN系列模型,結合場景需要,應用到文本分類方案中,通過實驗驗證,各個模型都表現出了更好的性能。呂飛亞等[14]針對短文本分類中存在特征表示高維稀疏、語義分布不明顯、上下文語意聯系不強等問題,會對信息抽取造成困擾,提出了基于BiLSTM與Bert的短文本分類方法,其中BiLSTM層獲取更多上下文不同距離的語義信息,注意力機制層對經過的編碼數據進行轉變加權提升序列的學習任務。
段丹丹等[15]針對短文本分類算法存在的特征稀疏、用詞不規范和數據海量問題,提出一種基于Transformer的雙向編碼器表示BERT的中文短文本分類算法,使用BERT預訓練語言模型對短文本進行句子層面的特征向量表示,將獲得的特征向量輸入到Softmax回歸模型進行訓練分類。齊佳琪等[16]針對短文本分類中存在的長度短、數據海量、文本噪音大等問題,提出了ERNIE詞向量與深金字塔卷積神經網絡模型的短文本分類研究,運用ERNIE實體掩碼方式捕獲詞匯和語義信息,使用卷積神經網絡進行特征提取,取得了很好的分類效果。
根據以上研究,該文針對短文本存在的特征詞少、規范性少、數據規模量大的難點,提出將ERNIE預訓練模型與RCNN模型進行融合的短文本分類方法。該模型以ERNIE作為詞向量,對實體和詞語義單元掩碼,后連接Transformer[17]的Encoder層,對ERNIE層輸出詞嵌入向量進行編碼,優化模型過擬合問題,增強泛化能力,RCNN模型對ERNIE輸入的詞向量進行特征提取,卷積層利用大小不同的卷積核提取大小不同的特征值,池化層進行映射處理,最后通過softmax進行分類,提高了中文短文本分類性能。
ERNIE模型是一種基于知識增強策略的持續學習語義理解模型,通過不斷吸收大量文本數據里的結構、語義、詞匯等知識,實現模型效果不斷進化。與BERT相比,ERNIE也是由微調和預訓練兩部分組成,不同的是其預訓練過程利用了更豐富的語義知識和語義任務,在多個NLP任務上效果顯著。ERNIE模型結構是經過多層、雙向Transformer編碼和ERNIE詞向量構成,如圖1所示。

圖1 ERNIE模型
由圖1模型看出,E1,E2,…,EN表示文本輸入,經過Transformer編碼后,輸出ERNIE詞向量。在整個預訓練過程中,ERNIE使用的數據是對整個詞語進行屏蔽,從而學習到詞與實體表達。
1.1.1 ERNIE結構詳解
ERNIE結構是由12個Encoder組成,從輸入上看第一個輸入是一個特殊的CLS,CLS表示的是分類任務。底層是單詞輸入,其中共有768個隱藏單位,對輸入的單詞通過Mask機制進行中文實體掩碼,然后把結果傳輸到下一個Encoder層,最后輸出結果。
1.1.2 ERNIE Encoder模型結構
ERNIE Encoder基本上是Transformer的Encoder部分,并且Encoder在結構上全部是一樣的,但并不共享權重。ERNIE Encoder結構如圖2所示。

圖2 ERNIE Encoder結構
由圖2可以看出,最下層輸入的是embedding的向量,然后經過一個位置信息的嵌入,輸出到多頭自注意力機制層,進行多頭自注意力計算。接下來ERNIE Encoder的輸出會經過一層Add&Norm層,Add表示對來自多頭自注意力機制層的輸入和輸出進行殘差連接,Norm表示對輸入和輸出進行歸一化處理,歸一化處理后的結果會傳入前饋神經網絡層。然后再經過一層Add&Norm層,通過同樣的處理后會輸出歸一化的詞向量列表。
RCNN是卷積神經網絡用于目標檢測的模型,其中CNN具有良好的特征提取和分類回歸性能。算法步驟如下:(1)候選區域選擇;(2)CNN特征提取;(3)分類與邊界回歸。RCNN模型如圖3所示。
1.2.1 候選區域選擇
候選區域選擇是一種傳統的區域提取方法,方法用的是選擇性搜索(selective search,SS[18])方法,SS用來查看現有的小區域,合并兩個最有可能的區域,然后重復操作,最后輸出候選區域。候選區域一般為1k~2k左右,可理解為將信息劃分為1k~2k個網格,之后再對網絡進行特征提取或卷積操作。
1.2.2 CNN特征提取
CNN特征提取可以再次提取文本中的關鍵信息及深層結構信息,且CNN可以并行運行,能夠加快訓練速度。如圖3所示,CNN由若干個卷積層、池化層、全連接層組成。卷積層會將Encoder層輸出的向量提取出不同長度詞語的信息和結構信息。如輸入一個句子,卷積層首先會對這個句子進行切分,假設C1~Cn為1到n個單詞,對每個單詞進行詞嵌入,可以得到X1~Xn詞向量。假設詞向量共d維,將X1~Xn詞向量拼接(X1,X2,…,Xn),那么對于這個句子便可以得到n行d列的矩陣X。

圖3 RCNN模型
文本生成的詞向量通過拼接構建成的句子向量是二維向量,因此卷積過程可由如下公式表示:
s(i,j)=(X,W)(i,j)=

式中,X為卷積核,W為被卷積矩陣,m為對應矩陣的詞向量行數,n為矩陣的維數,i和j為映射后的行和列,s(i,j)為卷積和W對應的輸出矩陣的對應位置元素的值。
池化層會對卷積層獲得的特征值進行特征映射處理,由于不同尺寸的卷積核得到的特征值大小是不一樣的,因此池化層會對每個特征圖使用池化函數,使得它們的維度相同,最常用的就是最大池化層,提取出特征圖句子的最大值,這樣卷積核得到的特征就是一個值,然后對所有的卷積核使用最大池化層,最后經過全連接層把所有卷積核連接起來,就可以得到最終的特征向量。為了防止過擬合,全連接層還引入了drop out機制。
1.2.3 分類與邊界回歸
分類與邊界回歸共有兩個子步驟:第一個是對前一步的輸出向量進行分類;第二個是通過邊界回歸框回歸獲得精確的區域的信息。目的是準確定位和合并完成分類的預期目標,并避免多重檢測。
步驟1:對輸入的數據集進行預處理,得到輸入文本,記為E=(E1,E2,…,Ei,…,En),其中Ei(i=1,2,…,n)表示文本的第i個字。
步驟2:將每個Ei輸入到ERNIE預訓練層,進行Mask掩碼,然后經過Transformer編碼器編碼后,將文本E進行序列特征化,輸出文本Wi=(W1i,W2i,…,Wni),其中Wni表示文本中第i句中的第n個詞的詞向量,將W1~Wn詞向量拼接(W1,W2,…,Wn),得到矩陣W,即ERNIE詞向量。
步驟3:將ERNIE詞向量輸入到RCNN模型,RCNN模型經過再次特征提取,將ERNIE輸入的詞向量W經過卷積層操作,輸出Xi=(X1i,X2i,…,Xni),將X1~Xn詞向量拼接(X1,X2,…,Xn)得到的矩陣X,然后經過池化層映射處理,得到統一的特征值,經過全連接層連接和softmax回歸,生成新的特征向量,最后輸出。ERNIE-RCNN模型如圖4所示。

圖4 ERNIE-RCNN模型
實驗選用的是THUCNews中文新聞數據集[19],THUCNews是根據新浪新聞RSS訂閱頻道05到11年間的歷史數據篩選過濾生成,包括74萬篇新聞文檔,均為UTF-8純文本格式。從THUCNews中抽取了20萬條新聞標題,其中18萬條作為訓練集,1萬條作為測試集,1萬條作為驗證集,文本長度在20到30之間。一共10個類別,分別為財經、家居、房產、教育、科技、時尚、時政、體育、游戲、軍事,每個類別數據共2萬條,數據分類均衡。
實驗采用的硬件GPU為NVIDIA-SMI,內存容量為8 G,CPU為Intel(R)Core(TM)i7-9700KCPU @ 3.60 GHz,Python版本為3.7.7。
實驗用了文本分類中常用的評價指標:精確率、召回率、F1值,計算公式如下:
式中,TP為實際值和預測值均為正值時數據的數量,FP為實際值為負值、預測值為正值時的數據數量,FN為實際值為正值、預測值為負值時數據的數量,P為精確率,R為召回率。
為對比模型分類性能,選擇TextRNN、Transformer、TextCNN、TextRCNN、Bert、ERNIE、Bert-RCNN[20]7種模型與ERNIE-RCNN模型進行三組對比實驗,為進一步比較模型的性能,查閱了兩篇使用同樣數據集文章,進行一組簡單對比。
對比1:從圖5可以看出,ERNIE-RCNN模型準確率最高,說明分類效果最好。其中相對ERNIE和Bert-RCNN差別不大,但相對TextRNN、Transformer、TextCNN、TextRCNN模型,分類效果有明顯差別。

圖5 模型準確率的變化
對比2:從表1可以看出,ERNIE-RCNN模型在精準率、召回率、F1值這三個指標上均優于其他模型,其中在精確率上,比TextRNN、Transformer、TextCNN、TextRCNN、Bert、ENRIE、Bert-RCNN分別提高了4.23、4.11、3.74、3.39、1.09、0.65、0.78個百分點。TextRC-NN、Transformer、TextCNN、TextRCNN模型分類結果差距不大,說明embedding部分沒有很好地提取文本特征,下游模型的變化對分類結果影響不大,而對于Transformer模型分類也并不理想,說明embedding后的下游模型是決定分類結果的重要部分。
對比3:從表2可以看到,ERNIE-RCNN模型比Bert、ENRIE、Bert-RCNN模型訓練時間更短一些,ERNIE-RCNN模型隨著數據的增加,模型訓練效果時間成本更低。

表1 不同模型的測試結果

表2 不同模型的訓練時間
對比4:齊佳琪等[16]和雷景生等[21]使用共同THUCNews中文新聞數據集,針對其論文的實驗結果與本實驗結果進行了精確率、召回率、F1值上的對比,如表3所示。可以看出,ERNIE-RCNN模型在精確率、召回率上比ERNIE-BiGRU模型分別高出了0.64、0.83個百分點,比ERNIE-CNN模型分別高出了1.02、1個百分點,表明ERNIE-RCNN模型具有更好的分類效果。

表3 使用THUCNews數據集模型比較
在解決中文短文本存在難點時,提出一種基于ERNIE-RCNN模型的中文短文本分類方法,利用ERNIE預訓練模型提取文本特征信息,輸出對應的詞向量,將輸出結果作為RCNN模型的輸入進行訓練。從實驗結果表明,ERNIE-RCNN模型在測試集上具有更高的準確率,分類性能更強。不足之處是訓練時間效果并不明顯,還需進一步提高模型訓練性能,縮短訓練時間。