徐凱旋,李 憲,潘亞磊
(青島大學(xué) a.復(fù)雜性科學(xué)研究所;b.未來研究院,山東 青島 266071)
情感分類是情感分析中的一項(xiàng)基本任務(wù),是對(duì)帶有感情色彩的主觀性文本進(jìn)行分析、推理的過程[1]。它與傳統(tǒng)的文本主題分類又不相同,傳統(tǒng)主題分類是分析文本討論的客觀內(nèi)容,而情感分類是要從文本中得到它是否支持某種觀點(diǎn)的信息。情感分類也是文本分類的一種形式,其中必須將一段文本分類作為預(yù)定的情感分類之一,這是有監(jiān)督的機(jī)器學(xué)習(xí)問題[2]。情感分類模型要求其輸入是固定大小的數(shù)字向量。因此,需要將文本轉(zhuǎn)換為固定大小的矢量,該矢量對(duì)文本的有意義的信息進(jìn)行編碼[3]。為此,已經(jīng)提出了許多統(tǒng)計(jì)和深度學(xué)習(xí)NLP模型。
Mikolov[4]在2013年提出Word2vec模型,該模型有兩種訓(xùn)練方法:1)通過周圍單詞預(yù)測(cè)當(dāng)前單詞;2)通過當(dāng)前單詞預(yù)測(cè)局部窗口單詞。該模型將高維向量映射到低維空間中,解決了獨(dú)熱編碼的維數(shù)爆炸問題;但是受到訓(xùn)練方法的影響,模型只考慮到了詞的局部信息,沒有考慮到詞與局部窗口外單詞的聯(lián)系,詞和向量屬于一對(duì)一的關(guān)系,無法解決多義詞的問題。2014年,Kim[5]提出基于Word2vec的文本卷積神經(jīng)網(wǎng)絡(luò)(Text Convolutional Neural Network,Text-CNN)模型用于句子分類任務(wù),由Word2vec詞向量作為文本卷積神經(jīng)網(wǎng)絡(luò)的輸入,通過卷積操作進(jìn)行特征檢測(cè),得到多個(gè)特征映射,然后通過池化操作對(duì)特征進(jìn)行篩選,過濾噪音,提取關(guān)鍵信息用來分類。Jeffrey Pennington等人[6]在2014年提出了一種新的單詞全局向量表示模型(Global Vectors for Word Representation,Glove),該模型是全局對(duì)數(shù)線性回歸模型,采用全局矩陣分解和局部上下文窗口方法來學(xué)習(xí)詞向量,將統(tǒng)計(jì)信息與局部上下文窗口方法的優(yōu)點(diǎn)結(jié)合起來,其效果確實(shí)得到了提升。隨后Peters[7]在2018年提出了嵌入語言模型(Embedding from Language Models,ELMo),采用雙向LSTM結(jié)構(gòu),能夠?qū)W習(xí)到單詞用法的復(fù)雜特性。同年,OPEN AI[8]提出生成式預(yù)訓(xùn)練轉(zhuǎn)換器模型(Generative Pre-trained Transformer,GPT),該模型采用單向轉(zhuǎn)換器結(jié)構(gòu)[9],轉(zhuǎn)換器獨(dú)特的自注意力機(jī)制,能夠更加準(zhǔn)確地提取句子特征。隨后Google研究人員發(fā)布了雙向編碼轉(zhuǎn)換器(Bidirectional Encoder Representations from Transformers,BERT)[10],這是一種基于Transformer架構(gòu)的深層雙向語言模型,并在許多流行的NLP任務(wù)中改進(jìn)了最新技術(shù)神經(jīng)網(wǎng)絡(luò)語言模型的預(yù)訓(xùn)練,如ELMo、GPT、BERT等模型相繼出現(xiàn),ELMo、GPT模式受模型以及算法的影響,對(duì)于多分句文本的語義提取不如BERT的效果理想。其中BERT以及基于BERT改進(jìn)的預(yù)訓(xùn)練語言模型在多種自然語言任務(wù)上取得了最佳結(jié)果,Google發(fā)布了BERT中文預(yù)訓(xùn)練模型,加快了中文文本處理的進(jìn)展。2019年,CMU和Google Brain團(tuán)隊(duì)發(fā)布了XLNet[11]模型,XLNet是一種通用的自回歸預(yù)訓(xùn)練模型,融合了當(dāng)前最優(yōu)自回歸模型長(zhǎng)文本轉(zhuǎn)換器(Transformer-Extra Long)[12]的思路,通過最大化所有可能的因式分解順序的對(duì)數(shù)似然,學(xué)習(xí)雙向語境信息。但是XLNet模型在中文處理方面不成熟,沒有可用的中文預(yù)訓(xùn)練模型。
上述研究對(duì)微博評(píng)論情感分類提供了參考和依據(jù),本文采用BERT-Text CNN模型,從微博爬取評(píng)論,對(duì)其進(jìn)行預(yù)處理,輸入到BERT模型中,利用BERT獨(dú)特自注意力機(jī)制的雙向編碼轉(zhuǎn)換器結(jié)構(gòu)獲得具有句子全局特征的字向量,將字向量輸入到Text CNN中以提取語義以及上下文聯(lián)系等高階特征,進(jìn)而得到高精度的分類結(jié)果,以及與ELMo-Text CNN模型、GPT模型、BERT模型進(jìn)行比較,經(jīng)simplifyweibo_4_moods數(shù)據(jù)集的驗(yàn)證結(jié)果顯示,該模型具有較好的分類結(jié)果。
圖1 情感分類流程圖
基于BERT-Text CNN情感分類流程圖,如圖1所示。本文將從微博獲取的評(píng)論進(jìn)行清洗、截?cái)?、序列?biāo)注,將預(yù)處理后的數(shù)據(jù)輸入BERT中文預(yù)訓(xùn)練模型,接入Text CNN模型,進(jìn)行微調(diào),以達(dá)到理想的分類效果。本文采用的模型包含兩部分結(jié)構(gòu):BERT模型和Text CNN模型。兩個(gè)模型進(jìn)行層級(jí)連接。該模型總體結(jié)構(gòu)如圖2所示。
BERT的模型結(jié)構(gòu)是一種多層雙向轉(zhuǎn)換器結(jié)構(gòu),與最近的其他語言表示模型不同,BERT旨在通過聯(lián)合調(diào)節(jié)所有層中的上下文來預(yù)訓(xùn)練深度雙向表示。轉(zhuǎn)換器是一個(gè)編碼-解碼的結(jié)構(gòu),如圖3所示。在轉(zhuǎn)換器的編碼過程中,數(shù)據(jù)首先會(huì)經(jīng)過自注意力模塊得到加權(quán)的特征向量:
圖2 雙向編碼轉(zhuǎn)換器和文本卷積神經(jīng)網(wǎng)絡(luò)模型
(1)
其中,Q,K,V分別由3個(gè)嵌入向量得到。
特征向量Z經(jīng)過前饋神經(jīng)網(wǎng)絡(luò)得到單詞編碼:
FFN(Z)=max(0,ZW1+b1)W2+b2
(2)
BERT的輸入是由標(biāo)記詞嵌入、句子詞嵌入和位置詞嵌入3個(gè)部分組成,其中:1)字符嵌入表示當(dāng)前字的嵌入;2)段落嵌入表示當(dāng)前字所在句子的索引嵌入;3)位置嵌入表示當(dāng)前字所在位置的索引嵌入。輸入如圖4所示,例如“今天我中獎(jiǎng)了,我請(qǐng)客吃飯”。
BERT輸出則是輸入各字對(duì)應(yīng)的融合全文語義信息后的向量表示。BERT作為一個(gè)預(yù)訓(xùn)練模型,其預(yù)訓(xùn)練方法采用的是掩碼語言模型和下一句預(yù)測(cè)模型[13]。掩碼語言模型:輸入向量的15%的字符會(huì)被隨機(jī)掩飾掉。在訓(xùn)練模型時(shí),一個(gè)向量會(huì)被多次輸入到模型中用于參數(shù)學(xué)習(xí),但是Google并沒有在每次都掩飾掉這些單詞,而是在確定要掩飾掉的單詞之后,80%的時(shí)候會(huì)直接替換為“[Mask]”,10%的時(shí)候?qū)⑵涮鎿Q為其它任意單詞,10%的時(shí)候會(huì)保留原始標(biāo)記。
圖3 轉(zhuǎn)換器模型
圖4 BERT輸入表示
下一句預(yù)測(cè)模型:判斷句子B是否是句子A的下文。如果是的話輸出“Is Next”,否則輸出“Not Next”。訓(xùn)練數(shù)據(jù)的生成方式是從語料中隨機(jī)抽取的連續(xù)兩句話,其中50%保留抽取的兩句話,它們符合Is Next關(guān)系,另外50%的第二句話是隨機(jī)從預(yù)料中提取的,它們符合Not Next關(guān)系。
將BERT輸出的具有全局特征的字向量作為Text CNN的輸入,區(qū)別于圖像卷積[14],圖像卷積采用的是二維向量,文本卷積采用的是一維向量,本文采用的是一維卷積層-最大池化層-分類層的結(jié)構(gòu)模式,添加丟棄層以防止模型訓(xùn)練過程中出現(xiàn)過擬合、過度參數(shù)化等現(xiàn)象,結(jié)構(gòu)如圖5所示。經(jīng)過預(yù)處理后的一個(gè)長(zhǎng)度為n的文本序列,通過BERT預(yù)訓(xùn)練模型編碼得到每個(gè)字的特征映射:
exi=E[xi]
(3)
其中,xi表示對(duì)應(yīng)位置字符i的字向量,E[xi]表示字向量在模型中訓(xùn)練好的稠密向量。序列的特征映射表示為
ei:n=ex1⊕ex2⊕…⊕exn
ex1表示處于序列中第一位的向量,⊕表示串聯(lián)運(yùn)算符。詞向量經(jīng)過一維卷積層得到特征映射ci:
ci=f(wi*exi+b)
(4)
其中,wi表示權(quán)重,b表示偏差。
特征映射表示為
c=[c1,c2,…,cn]
(5)
經(jīng)過最大化池化層得到特征向量:
(6)
經(jīng)過全連接層得出分類結(jié)果:
(7)
圖5 文本卷積神經(jīng)網(wǎng)絡(luò)模型
表1 實(shí)驗(yàn)環(huán)境配置
本實(shí)驗(yàn)采用的數(shù)據(jù)集是用Web Scrapy從微博爬取的評(píng)論,篩選出10 000條長(zhǎng)度在60以內(nèi)的評(píng)論,將數(shù)據(jù)進(jìn)行清洗、序列標(biāo)注。該數(shù)據(jù)集分為4種情感評(píng)論,其中喜悅約4 000條,憤怒、厭惡、低落各約2 000條。字段說明如表2所示。例子如表3所示。
表2 標(biāo)簽
表3 數(shù)據(jù)實(shí)例
針對(duì)每個(gè)標(biāo)簽隨機(jī)抽取2 000條作為訓(xùn)練集(共計(jì)8 000條訓(xùn)練集),額外爬取500條作為測(cè)試集。將訓(xùn)練集進(jìn)行分詞、標(biāo)簽化、截?cái)?、填充等步驟最終得到可以輸入模型的文本,本文采用的是基于BERT的中文預(yù)訓(xùn)練模型,網(wǎng)絡(luò)層12層,隱藏層768層,自注意力頭數(shù)為12個(gè),參數(shù)大小為110M。
模型優(yōu)化方法采用Adam梯度下降和交叉熵?fù)p失函數(shù)方法,經(jīng)調(diào)試設(shè)定學(xué)習(xí)率為0.000 4,設(shè)置批量大小為32,為了避免模型在訓(xùn)練中出現(xiàn)過擬合、過度參數(shù)化等現(xiàn)象,設(shè)置丟棄層參數(shù)為0.4。實(shí)驗(yàn)參數(shù)如表4所示。測(cè)試集統(tǒng)計(jì)標(biāo)簽數(shù)如圖6所示。
圖6 測(cè)試集統(tǒng)計(jì)
表4 實(shí)驗(yàn)參數(shù)配置
本研究采用宏精確率(Micro_P)、宏召回率(Micro_R)以及綜合指標(biāo)宏F1值(Micro_F1)作為情感分類模型的評(píng)測(cè)指標(biāo),由于是4分類任務(wù),所以公式如下:
其中,Pi預(yù)測(cè)分類標(biāo)簽為i的正確的評(píng)論數(shù)除以預(yù)測(cè)結(jié)果為該類的評(píng)論總數(shù);Ri是預(yù)測(cè)分類標(biāo)簽為i的正確的評(píng)論數(shù)除以該類的測(cè)試集總數(shù)。
模型迭代過程中,損失曲線如圖7所示。由圖7看出,模型在訓(xùn)練了5次(迭代1 300次)的時(shí)候,損失曲線趨于平穩(wěn),分類效果達(dá)到最佳。該模型在測(cè)試集數(shù)目不變的情況下,測(cè)試精度隨著訓(xùn)練數(shù)目增加如圖8所示。圖8表明,隨著訓(xùn)練數(shù)據(jù)的增加,模型準(zhǔn)確率逐漸提高,少量的數(shù)據(jù)集很難達(dá)到想要的模型準(zhǔn)確率,模型的準(zhǔn)確率需要大量的數(shù)據(jù)支持。
圖7 損失曲線
圖8 準(zhǔn)確率-訓(xùn)練數(shù)據(jù)數(shù)目變化
部分測(cè)試實(shí)例如表5所示。BERT-Text CNN及對(duì)比模型各個(gè)類別測(cè)試精確度結(jié)果如表6所示。其對(duì)應(yīng)的柱狀圖如圖9所示。由圖9可以看出,BERT-Text CNN精確率優(yōu)于其他模型;標(biāo)簽“憤怒”和“厭惡”的精確率普遍低于標(biāo)簽“喜悅”和“低落”,經(jīng)數(shù)據(jù)對(duì)比得到,“憤怒”和“厭惡”數(shù)據(jù)集中含有部分相似的消極性詞語,影響了模型的判斷,說明不同的數(shù)據(jù)集對(duì)模型的精度影響不同。
表5 測(cè)試實(shí)例
表6 精確度測(cè)試
圖9 各類別精確率
BERT-Text CNN及對(duì)比模型在本文數(shù)據(jù)集以及simplifyweibo_4_moods數(shù)據(jù)集的測(cè)試結(jié)果如表7和表8所示。由表7和表8可以看出,BERT-Text CNN模型Micro_P、Micro_R、Micro_F1值均高于其他模型,證實(shí)了該模型的優(yōu)越性;BERT-Text CNN的Micro_F1比BERT的分類模型高出2~3個(gè)百分點(diǎn),證明Text CNN具有提高文本語義提取的能力;BERT的Micro_F1值高于ELMo-Text CNN模型和GPT模型,證明BERT對(duì)文本語義的表征能力高于GPT和ELMo模型;BERT-Text CNN能夠更好地解決微博評(píng)論情感分類問題。
表7 本文數(shù)據(jù)集
表8 simplifyweibo_4_moods數(shù)據(jù)集
本文針對(duì)微博情感細(xì)粒度分類問題,采用了BERT-Text CNN進(jìn)行分類,相對(duì)于ELMo-Text CNN、GPT、BERT分類模型,具有更好的文本分類效果。實(shí)驗(yàn)表明,BERT模型在接入CNN之后,會(huì)上升2~3個(gè)百分點(diǎn),是因?yàn)镃NN具有很強(qiáng)的提取局部特征的能力,BERT-Text CNN具有強(qiáng)大的捕獲句子中語義和長(zhǎng)距離依賴關(guān)系的能力,提升了情感分類效果。實(shí)驗(yàn)結(jié)果表明BERT-Text CNN在情感分類方面是一個(gè)合理的模型。
然而,由于BERT預(yù)訓(xùn)練模型的參數(shù)量巨大,在不同的應(yīng)用環(huán)境下想要模型達(dá)到理想的精確度,需要不同大量的數(shù)據(jù)支持,需要很大成本;由于BERT的預(yù)訓(xùn)練的掩碼機(jī)制,雖然通過它可以實(shí)現(xiàn)雙向語言模型的訓(xùn)練,但是由于微調(diào)語料中沒有掩碼這樣會(huì)導(dǎo)致預(yù)訓(xùn)練和在下游任務(wù)上進(jìn)行微調(diào)時(shí)的部分不一致,而如果能夠在這些方面做出改進(jìn),那么相信模型的性能會(huì)有進(jìn)一步的提高。
復(fù)雜系統(tǒng)與復(fù)雜性科學(xué)2021年2期