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