景永霞,茍和平,劉 強
(1.瓊臺師范學院 信息科學技術學院,海南 ???571100;2.瓊臺師范學院 教育大數據與人工智能研究所,海南 海口 571100)
文本分類是自然語言處理的主要任務之一,應用在很多場景,如人機對話、情感分析、垃圾郵件過濾和搜索引擎等領域,特別是近年來智能化應用的不斷發(fā)展,文本分類受到許多學者的廣泛關注。短文本作為一種特殊的文本類別,主要存在口語化、文本短小和語法不規(guī)范等特點,這為文本特征的有效學習帶來很大困難。傳統(tǒng)的機器學習方法,如支持向量機(SVM)[1]和k最近鄰算法(kNN)[2]等算法都是常用的文本分類模型,但這些傳統(tǒng)的機器分類模型沒有獲得文本上下文的語義關系,特別是針對短文本數據,產生高維稀疏數據表示等問題,造成分類計算開銷大。目前,深度學習技術已經成為主流的文本分析模型,如研究人員采用CNN[3]、RNN、RNN與CNN融合等模型[4],將深度學習應用到短文本分類中,采用基于深度學習的良好特征選擇算法,提高文本分類的精度。但是對于短文本來說,單純地通過增加網絡深度來獲取文本表示特征,難以提高分類效果。研究人員采用基于詞向量的短文本分類方法[5],融合基于詞向量和主題模型,提高文本特征向量的語義表征能力?;赥ransformer的BERT預訓練模型能夠很好地獲取文本上下文語義信息,特別是獲得長距離的語義信息,如采用BERT和特征投影網絡的特征提取方法[6]。采用基于深度學習的文本分類算法是目前流行的文本分類算法,但需要大規(guī)模的語料進行訓練。本文提出一種基于BERT預訓練模型文本分類方法,通過領域數據集的微調,獲得文本向量表示,然后將文本向量送入到CNN網絡中進行文本分類,使得CNN獲取更好的分類特征,提高分類效果。
在文本分類過程中,將文本輸入分類模型前需要實現文本向量化表示,才能實現后續(xù)文本分類模型的相關計算操作,核心是獲得的向量能夠充分實現文本語義表達。
傳統(tǒng)的文本向量化方法有獨熱(One-hot)模型、詞袋(Bag of Word)模型、TFIDF模型等,存在問題主要表現為:① 文本表示稀疏,形成稀疏矩陣,造成計算開銷大;② 文本語義分析不足,難以解決一詞多義在文本分類中的干擾現象;③ 上下文語義關系理解不夠。
特別是對于短文本,隨著文本數量的增加,文本表示更稀疏,且由于文本數量巨大,而每一條文本的詞量少,文本之間的語義關系挖掘困難,文本分類效果不佳。
通過神經網絡模型獲取文本特征,能夠有效地解決文本特征語義問題,特別是預訓練模型的使用,能夠更好地獲得文本語義表示,有效解決文本分類過程中的一詞多義帶來的分類問題。
目前廣泛使用的基于神經網絡文本表示模型是根據上下文與目標詞之間的關系進行建模,常用的模型有Word2Vec和BERT。
Word2Vec是一種淺層神經網絡,根據給定語料庫,通過網絡訓練將文本數據中的每個分詞(token)轉化為k維空間上的向量,Word2Vec采用CBOW和Skip-gram兩種訓練模型。CBOW模型是根據目標單詞(token)的上下文,輸出目標單詞的預測。Skip-gram模型根據已知目標單詞(token),預測其上下文。
BERT是谷歌公司2018年提出的一種基于深度學習的語言表示模型,與Word2Vec類似,是一種預訓練語言模型,通過給定語料庫訓練獲得文本向量表示,很好地捕獲文本上下文之間的語義關系。BERT模型是基于是Transformer多層雙向編碼器[7],結構如圖1所示。
圖1 BERT模型架構
Ei(i=1,2,3,…,N)是文本向量表示,是經過字符向量、字符類型向量、位置向量相加獲得向量表示。Trm表示Transformer處理,多個雙向Transformer進行文本處理,主要獲得文本上下文信息。Ti(i=1,2,3,…,N)表示經過多層雙向Transformer進行編碼后輸出的文本字符向量。BERT模型采用兩種無監(jiān)督任務進行預訓練[7]:掩碼語言模型(Mask Language Model,ML),隨機屏蔽每個句子一定百分比的輸入標記,然后再根據上下文(剩余的標記)預測那些被屏蔽的標記;下句預測(Next Sentence Prediction,NSP),許多重要的下游任務都是基于對兩個句子之間關系的理解,如問答系統(tǒng)和自然語言推理,為了訓練一個能夠理解句子關系的模型,訓練數據選擇兩個句子,其中選擇一定比例的數據表示一個句子是另一個句子的下一句,剩余的是隨機選擇的兩個句子,判斷第二個句子是不是第一個句子的下文。
獲取短文本中良好的文本特征、實現文本向量化表示是實現分類的關鍵,CNN的應用能夠很好地獲取文本特征,但需要大量語料庫進行訓練模型,以獲取良好的特征。BERT模型能夠獲得文本詞之間的深層語義關系,解決一詞多義問題。本文提出了一種融合BERT和CNN的短文本分類模型,通過BERT模型通過微調獲取短文本詞向量表示,再將文本詞向量送入CNN模型去實現文本分類?;玖鞒倘鐖D2所示。
圖2 基于BERT和CNN的短文本分類流程
CNN模型的基本結構如圖3所示,分別采用256個大小為3加5的卷積核對文本表示向量進行兩次卷積,同時采用256個大小為2的卷積核對文本表示向量進行卷積操作,最后對兩個卷積結果進行連接操作。
采用BERT和CNN的短文本分類方法,把BERT關注文本上下文語義信息和CNN模型關注局部信息二者結合起來,實現文本特征的加強語義表示。對于包含K個類別的短文本數據集D={Ci{i=1,2,…,K},實現分類過程如下:
(1)首先采用數據集D對 BERT模型的微調,使其能夠更好地適應應用數據集。
(2)根據微調后的BERT模型實現短文本數據的向量化表示。對于包含m個分詞(tokens)的任意文本d∈D,其表示為
d={w1,w2,…,wm}
(1)
對于分詞wi,其表示向量為
(2)
則文本d通過BERT模型的輸出d′表示為
(3)
式中:d′的維度為m×n,即數據集D中的每一條文本數據的維度為m×n;m表示文本的長度(tokens的數量),長度超過m的文本將會被截斷,少于m的進行補齊;n表示向量的長度,就是BERT模型最后一層隱層的hidden_size。
(3)獲得文本數據集的向量表示,即一條文本就表示為二維向量,將其作為CNN模型的輸入,CNN分別采用不同卷積核進行卷積操作,獲得不同層面的文本特征,最后對特征進行連接操作。
(4)通過全連接層(FC)和Softmax處理,獲得最后的分類結果。經過全連接層處理獲取的輸出
y=WTd′+b
(4)
W為768×15維的權重矩陣,b為偏置項。則有
(5)
(6)
實驗采用Anaconda集成環(huán)境、Python 3.9。文本預訓練模型為:BERTBASE(L=12,H=768,A=12,Total Parameters=110 M),模型微調實驗數據來自今日頭條短文本數據集。
今日頭條短文本數據集(TNEWS),包含 15個類別共382 691條數據,其中訓練集267 882條,驗證集57 404條,測試集57 405條。BERT訓練和CNN分類相關參數如表1所示。
表1 參數設置表
短文本分類算法評價采用精確率precision、召回率recall、綜合評價指標F1(F1-measure)、宏平均及其加權平均。
基于BERT和基于BERT與CNN的文本實現的文本分類算法,算法的訓練損失和驗證損失、訓練準確率、驗證準確率如圖4和圖5所示。
(a)損失
(b)準確率
(a)損失
(b)準確率
對比分析基于BERT的文本分類算法和基于BERT和CNN的文本分類算法,其測試的精確率、召回率、F1值的宏平均(Macro avg)和加權平均(Weighted avg)如表2和表3所示。
表2 基于BERT的文本分類測試結果
表3 基于BERT和CNN的文本分類測試結果
與BERT分類相比較,本文實現算法的分類準確率(accuracy)達到89.42%,高于單純采用BERT算法的分類準確率。15個類別的F1-score值的宏平均和加權平均達到82.93%和89.38%。采用本文提出的結合BERT模型和CNN的短文本分類算法,能夠很好地把短文本中的全局和局部語義信息結合起來獲取文本特征,有效地提高算法的分類效果。
提出的短文本分類方法采用BERT預訓練模型微調獲得文本特征抽取,主要目標是解決數據量小的情況下采用BERT模型可獲得文本語義表征的向量,再將這些經過特征提取后的數據特征向量作為CNN模型的輸入,采用不同大小卷積核進一步提取分類語義特征,此方法能夠有效地提高文本分類效果。