金 昊,王亞珅,李陽陽
(中國電子科技集團公司電子科學研究院,北京 100041)
隨著人工智能、大數(shù)據(jù)及互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,輿情監(jiān)測分析系統(tǒng)也從人工階段逐漸趨于智能化和自動化。然而,隨著網(wǎng)民數(shù)量的增加以及網(wǎng)絡空間的擴大,所產(chǎn)生的數(shù)據(jù)也呈爆炸式的增長,F(xiàn)acebook每天處理的數(shù)據(jù)超過500 TB,阿里巴巴擁有的數(shù)據(jù)量超過100 PB(1 PB=1 024 TB),新浪微博用戶數(shù)超過5億,每天產(chǎn)生的微博數(shù)超過1億條[1]。面對海量輿情數(shù)據(jù),急需一種有效的文本分類算法來自動識別和分類輿情信息。
文本解析分類作為自然語言處理(NLP)的基本任務之一,目標是將文本分配到對應的類別中,通?;谝延袛?shù)據(jù)集(文本以及文本對應的類別標簽)訓練出一個模型,并使其有一定的泛化能力,從而能夠?qū)π挛谋镜念悇e進行預測。文本解析分類可被用于語義分析、問題分類以及話題分類等。最早期的文本分類方法通過設定專家規(guī)則、構(gòu)建專家系統(tǒng)進行分類,但費時費力、覆蓋范圍和準確率十分有限。后來隨著統(tǒng)計學的發(fā)展,文本分類問題重視人工特征的提取與淺層分類模型。近期,隨著深度學習在圖像領域突飛猛進的發(fā)展,一些技術(shù),如卷積神經(jīng)網(wǎng)絡(CNN)[2]、遞歸神經(jīng)網(wǎng)絡(RNN)[3],也逐漸被應用在文本解析分類領域。
基于深度學習進行文本解析分類的方法將文本輸入到一個深度網(wǎng)絡,首先得到文本特征,然后將文本表示輸入到分類器,最后通過softmax得到每個類別的概率?;诰矸e神經(jīng)網(wǎng)絡(CNN)的模型可獲得具有局部信息的文本特征;基于遞歸神經(jīng)網(wǎng)絡(RNN)的模型可得到具有長階段信息的文本特征。在循環(huán)神經(jīng)網(wǎng)絡RNN中,LSTM和GRU常用于處理單詞序列,同時一些變體也相繼被提出,比如Tree-LSTM[4]和TG-LSTM[5]?;诰矸e神經(jīng)網(wǎng)絡(CNN),VDCNN嘗試構(gòu)建一個更深的CNN網(wǎng)絡用于文本分類[6];DCNN使用了一個動態(tài)的k最大池化機制[7];DPCNN旨在不增加很多計算損失的情況下加深網(wǎng)絡[8]。此外,利用大量未標注數(shù)據(jù)的語言模型預訓練方法可以有效學習通用語言特征。一些代表性模型有ELMo[9]、GPT[10]、BERT[11],均采用無監(jiān)督方法在文本數(shù)據(jù)上訓練神經(jīng)網(wǎng)絡語言模型。
總結(jié)來說,筆者們提出一種基于BERT預訓練模型的輿情文本解析分類方法,將卷積神經(jīng)網(wǎng)絡運用到BERT的任務特定層中,彌補BERT模型忽略局部信息的缺點,使用自注意力機制來讓最終的文本表示關注在文本的重要短語上,從而更有效地獲取文本的局部信息,提升分類性能。在數(shù)據(jù)集上的實驗結(jié)果也證明了此方法可以獲得較好的輿情文本解析分類性能。
方法框架如圖1所示。首先,進行詞編碼得到詞向量;隨后,對應詞向量通過多層轉(zhuǎn)換器編碼,將輸入特征映射成為一個上下文關聯(lián)的特征向量;最后,為了捕獲局部信息,使用卷積神經(jīng)網(wǎng)絡進一步編碼并將編碼后的信息輸入到分類器預測輿情文本屬性。
圖1 方法框架
BERT模型的語言綜合能力在文本分類上表現(xiàn)優(yōu)異,但忽略了文本中某些片段或短語的信息。為了解決這一問題,通過聯(lián)合調(diào)節(jié)所有層中的雙向轉(zhuǎn)換器(Transformer)來訓練預訓練深度雙向特征表示。模型的輸入是一個支持單句文本和句對文本的線性序列,其中句首用符號[CLS]來表示,句尾用符號[SEP]來表示。如果是句對,句子之間要添加符號[SEP]。輸入特征由標志向量(Token)、分割向量(Token)和位置向量(Position)共同組成,分別代表了單詞信息、句子信息和位置信息。對于給定的詞,其輸入表示是可以通過三部分特征嵌入求和組成。假設模型輸入是一個有著個標志的序列,記為X={x1,x2,x3,…,xl}。
使用一個多層的雙向轉(zhuǎn)換器編碼機將輸入表示(即特征)映射到一個上下文嵌入向量的序列C={c,T,s},C∈Rd×1。c和s是分別對應于[CLS]和[SEP]的上下文表示。T={T1,T2,T3,…,Tm}對應于具有實際意義的單詞標志的上下文表示,并且有M=l﹣2m。
輸入符號序列(x1,…,xn)經(jīng)過輸入嵌入,得到映射后的序列Z=(Z1,…,Zn),然后經(jīng)過編碼器編碼后輸入解碼器,一次一個元素地生成輸出符號序列(y1,…,ym)。轉(zhuǎn)換器架構(gòu)如圖2所示,轉(zhuǎn)換器模型由編碼器和解碼器組成,使用堆疊式自注意力與全連接層[12],在產(chǎn)生下一個符號輸出時,會將之前的輸出用作附加輸入,形成自回歸的整體結(jié)構(gòu)。
圖2 轉(zhuǎn)換器架構(gòu)(圖片來源于文獻[12])
編碼器:編碼器由N=6個相同的層組成,每個層又由2個子層組成,分別是多頭注意力機制和全連接的前饋網(wǎng)絡層,并在2個子層中使用殘余連接,然后進行層標準化。因此,每個子層的輸出可以表示為LayerNorm{x+Sublayer(x)},其中Sublayer(x)是由子層實現(xiàn)的函數(shù)。模型中的所有子層與嵌入層輸出的維度均為dmodel=512,用以促進這些殘余連接。
解碼器:解碼器同樣是由N=6個相同的層組成。與編碼器中的2個子層不同,解碼器還插入了對編碼器的輸出執(zhí)行多頭注意力的第三子層,其余與編碼器類似,在每個子層中使用殘余連接,然后進行層標準化。特別地,筆者們修改了解碼器中的自注意力子層,即添加了掩碼,以確保位置i的輸出信息只依賴于位置i之前的輸出,防止與后面的輸出相關聯(lián)。
注意力機制:一個注意力函數(shù)是一個查詢和一組鍵值對輸出的映射,其中查詢、鍵、值和輸出都是向量,通過查詢與對應鍵的兼容性函數(shù),可以獲得每個值的權(quán)重,進而加權(quán)求和得到輸出。
縮放點積注意力機制:“縮放點積注意力”的輸入為三個不同的向量,查詢、鍵以及值,其維度分別為dk、dk與dv,為每個向量計算查詢與鍵的點積,再除以進行歸一化,然后使用softmax函數(shù),將函數(shù)輸出點乘值,得到加權(quán)后的結(jié)果。同時計算一組查詢的注意力函數(shù),將它們打包成矩陣Q,鍵和值打包成矩陣K和V,則輸出矩陣計算為:
加和點積(乘)注意力機制作為兩種最常用的注意力函數(shù),在dk很小的時候它們的執(zhí)行效果相似,當dk較大的時候,如果不進行縮放則加性注意力表現(xiàn)更好,但點積注意力的計算速度更快。對于較大的dk值,點積會增大幅度,由于softmax函數(shù)使梯度過小,因此,將點積縮放,可抵消這種影響。加性注意力機制使用具有單個隱藏層的前饋網(wǎng)絡來計算兼容性函數(shù)。雖然與點積注意力機制在理論上的復雜度相似,但點積注意力機制可以使用高度優(yōu)化的矩陣乘法來實現(xiàn),因此,在實踐中點積注意要快得多,并且空間效率更高。
多頭注意力機制:多頭注意力機制是對查詢、鍵和值做好h次不同的投影,映射的維度分別為dk、dk和dv,然后并行執(zhí)行注意力函數(shù),將不同的結(jié)果拼接在一起,最后通過線性映射輸出,得到最終值。通過多頭注意力,模型可以在不同的表示子空間里學習到相關的信息。對于單頭注意力,平均值抑制了這一點。
為了捕獲文本的局部信息,比如短句和短語,采用卷積神經(jīng)網(wǎng)絡從T中提取特征。假設卷積窗口尺寸為k×1,那么卷積神經(jīng)網(wǎng)絡的輸出為:
式(4)中:O={O1,O2,O3,…,On},n=m-k+1。
為了整合局部卷積神經(jīng)網(wǎng)絡的輸出,在分類器中先采用全連接層將局部特征映射到整個文本的特征表達中。最后一層網(wǎng)絡的輸出經(jīng)過softmax函數(shù),得到:
使用交叉熵作為損失函數(shù)來優(yōu)化模型:
式(6)中:iy和分別為訓練樣本中第i個文本的真實標簽和預測值。
本文采用公開數(shù)據(jù)集SST-1和SST-2(Stanford sentiment treebank[14])來驗證方法的可行性。SST-1共有11 855條樣本,5個標簽,分別為非常積極(very positive)、積極(positive)、中立(neutral)、消極(negative)和非常消極(very negative)。其中,8 544條樣本用來訓練,1 101條樣本用來驗證,2 210條樣本用來測試。SST-2含9 613條樣本,2個標簽,分別為積極(positive)和消極(negative)。其中,6 920條樣本用來訓練,872條樣本用來驗證,1 821條樣本用來測試。本文方法與已有方法在數(shù)據(jù)集上的分類準確率如表1所示,可見取得了較好的結(jié)果。
表1 文本分類準確率
本文的對比方法為SFF[15]和LK-MTL[16]。隨著卷積神經(jīng)網(wǎng)絡在NLP任務中的應用,SFF方法通過一種新穎的權(quán)重初始化方法來提升性能。與隨機初始化卷積神經(jīng)網(wǎng)絡不同,SFF通過編碼語義特征到卷積過濾器,使其在訓練的初始階段便促使模型專注學習有用特征。LK-MTL方法為基于卷積神經(jīng)網(wǎng)路的多任務學習方法。為了解決不同任務間互相干擾的問題,該方法設計了一種帶有泄露單元的多任務卷積神經(jīng)網(wǎng)絡,該單元具有記憶和遺忘機制以在任務之間過濾特征。與這兩種方法相比,本文結(jié)合BERT模型與卷積神經(jīng)網(wǎng)絡,使得在特征提取階段既關注上下文信息,又捕獲文本局部信息,獲得了較高的文本分類準確率。
為了對海量輿情文本數(shù)據(jù)進行智能解析,本文提出了一種基于BERT預訓練模型的輿情文本解析分類方法。為了捕獲文本局部信息,將卷積神經(jīng)網(wǎng)絡用在BERT的特定任務層中,并使用自注意力機制來讓最終的文本表示關注在文本的重要短語上,從而更有效地獲取文本的局部信息,提升分類性能。因此,將基于BERT預訓練模型運用到輿情文本分類方法中是有效且可行的。由于模型具有一定的泛化能力,將其應用于新的文本分類任務也具有一定的可行性。