劉文秀,李艷梅,羅 建,李 薇,付順兵
(西華師范大學(xué) 計(jì)算機(jī)學(xué)院,四川 南充 637009)
文本情感分析是指讓計(jì)算機(jī)對人類所表達(dá)的帶有主觀意識的語言文本進(jìn)行情感分類.近年來,網(wǎng)民們將自己的看法和觀點(diǎn)發(fā)表在社交媒體中的現(xiàn)象越來越普遍,對這些社交網(wǎng)絡(luò)文本進(jìn)行情感分析,可以幫助相關(guān)人員了解和掌握網(wǎng)民的情感走向,從而可以做出更正確的決定.比如,可以通過顧客對某種商品或者服務(wù)的評價(jià),分析得到該產(chǎn)品的優(yōu)點(diǎn)和缺點(diǎn),從而幫助產(chǎn)品所有者做出更加正確的決定.
隨著深度學(xué)習(xí)近年來在文本情感分析上的廣泛應(yīng)用,文本情感分析得到了很大的發(fā)展空間[1].由于目前主流的文本情感分類模型都是基于詞向量的,且這些模型很難解決一詞多義的問題.本文通過學(xué)習(xí)BERT模型[2],即基于雙向 Transformer 的編碼器表示,在BERT預(yù)訓(xùn)練模型基礎(chǔ)上構(gòu)建自己的模型,提出了BERT-BiLSTM(BBL)模型的文本情感分析方法.在實(shí)驗(yàn)所用的數(shù)據(jù)集上,利用NLP的綜合評價(jià)指標(biāo)accuracy、F1、Recall和Precision證明了BBL模型相比于傳統(tǒng)深度學(xué)習(xí)模型效果要好.
在傳統(tǒng)文本情感分析方法中,使用較多的方法有兩種.第一種是基于情感詞典的方法[3],它是利用一系列規(guī)則和情感詞典來進(jìn)行分類的.該方法首先將情感詞典中的詞語和待分析文本中的詞語進(jìn)行匹配,然后通過計(jì)算獲得句子的情感值,最后把得到的情感值作為句子情感傾向分類的判斷依據(jù).雖然這種方法的正確率比較高,但是構(gòu)建情感詞典的成本較大,而且基于情感詞典的方法沒有考慮文本中詞語之間的聯(lián)系,缺少詞義信息.第二種是基于機(jī)器學(xué)習(xí)的方法[4],它利用標(biāo)記好的數(shù)據(jù)與標(biāo)簽,這些數(shù)據(jù)和標(biāo)簽都是人工標(biāo)記的,然后再利用機(jī)器學(xué)習(xí)的方法對文本進(jìn)行情感分析,常用的機(jī)器學(xué)習(xí)方法有樸素貝葉斯NB(Naive Bayes)、決策樹、支持向量機(jī)SVM(Support Vector Machine)等.該方法效果的好壞主要依賴于人工標(biāo)注的數(shù)據(jù)的數(shù)量和質(zhì)量,所以受人的主觀意識影響較大,且要耗費(fèi)大量人工.為了彌補(bǔ)以上兩種方法的不足,后來提出了深度學(xué)習(xí).
近年來,深度學(xué)習(xí)在自然語言處理領(lǐng)域的使用越來越多[5].1990年神經(jīng)網(wǎng)絡(luò)專家Jeffrey L Elman在Jordan network模型的基礎(chǔ)上,結(jié)合BP算法提出了循環(huán)神經(jīng)網(wǎng)絡(luò)模型(recurrent neural networks,RNN)[6].雖然該模型可以利用前饋連接和它內(nèi)部的反饋連接有效處理時(shí)間序列數(shù)據(jù),但存在梯度消失和梯度爆炸問題.1997年Hochreiter提出長短時(shí)記憶網(wǎng)絡(luò)模型(Long Short Term Memory Network,LSTM)[7],該模型通過設(shè)計(jì)使用門控單元和記憶機(jī)制緩解了早期RNN的問題.但是LSTM只能獲得與當(dāng)前詞相關(guān)的前文信息,無法獲得相關(guān)下文信息.2016年Xiao等人在LSTM的基礎(chǔ)上提出雙向長短期記憶網(wǎng)絡(luò)模型(Bidirectional Long Short-term Memory,BiLSTM)[8].該模型通過設(shè)計(jì)使用前后兩個(gè)方向的LSTM,分別獲得了當(dāng)前詞與上文和下文的關(guān)系.所以本文將BiLSTM作為模型的一部分.
為了讓計(jì)算機(jī)認(rèn)識人們所理解的自然語言并對其進(jìn)行操作,需要把人的語言轉(zhuǎn)換成計(jì)算機(jī)的語言,即文本向量化.One-hot[9]向量不僅讓計(jì)算機(jī)能讀懂文本,還解決了分類器處理離散數(shù)據(jù)困難的問題,在一定程度上也起到了擴(kuò)充特征的作用[10],但是One-hot向量不適合處理具有順序信息的文本,因?yàn)樗鼪]有考慮詞與詞之間的順序,認(rèn)為詞與詞之間是相互獨(dú)立的,所以得到的特征是非常稀疏的.后來隨著許多詞向量化表示方法的提出,比如LDA主題模型(Latent Dirichlet Allocation),LDA、CBOW模型(Continuous Bag-of-Words,CBOW)、 Skip-gram神經(jīng)語言模型以及Word2vec[11],這些方法解決了部分詞與詞之間的聯(lián)系問題,為神經(jīng)網(wǎng)絡(luò)等深度學(xué)習(xí)模型處理自然語言奠定了基礎(chǔ).但是這些方法都沒有解決一詞多義的問題,而且這些文本表示方法存在的另一個(gè)問題是需要對文本進(jìn)行分詞處理.但是中文語句非常復(fù)雜,且句子的語義靈活性較高,對句子進(jìn)行詞語劃分的難度較大,因此基于分詞的向量化方法存在一定的局限性.
基于上述存在的問題,2018年谷歌公司提出了BERT語言預(yù)訓(xùn)練模型,該模型不但解決了一詞多義的問題,其中的文本向量化也是基于字符的.本文在BERT的中文和多語言預(yù)訓(xùn)練模型下結(jié)合BiLSTM模型提出了BERT-BiLSTM(BBL)模型,在兩個(gè)中文數(shù)據(jù)集上進(jìn)行文本情感分析實(shí)驗(yàn).
雖然LSTM解決了RNN中長距離依賴的問題,但是在待分析文本中,當(dāng)前詞的信息不僅與上文有關(guān),還與下文有關(guān).所以,本文利用BiLSTM取代LSTM,從而彌補(bǔ)下文信息.BiLSTM 是由一個(gè)正向和一個(gè)反向的LSTM疊加而成的.BiLSTM的網(wǎng)絡(luò)模型如圖1所示.
圖1 BiLSTM網(wǎng)絡(luò)模型
(1)
(2)
(3)
在歷史的發(fā)展中,語言模型經(jīng)歷了專家語法規(guī)則模型,統(tǒng)計(jì)語言模型,神經(jīng)網(wǎng)絡(luò)語言模型[13].針對傳統(tǒng)語言模型無法解決一詞多義的問題,本文采用了BERT預(yù)訓(xùn)練語言模型,其結(jié)構(gòu)圖如圖2所示.其中E1,…,En表示模型的輸入向量,中間是多層雙向Transformer特征抽取器,T1,…,Tn表示模型的輸出向量.和傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)RNN和LSTM相比,雙向的Transformer特征抽取器可以獲取更多的上下文信息,也可以提取更多的文本特征.
圖2 BERT預(yù)訓(xùn)練語言模型
相比于傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò),BERT可以獲取更多上下文信息,也可提取更多特征信息.因?yàn)樗捎昧穗S機(jī)遮擋辦法,實(shí)現(xiàn)了真正的雙向編碼.首先BERT在待預(yù)測文本中隨機(jī)遮擋15%的文本,然后在被遮擋的文本中80%被masked token標(biāo)記代替,10%被隨機(jī)詞代替,10%保持被遮擋不變.
其中,BERT中每個(gè)符號的輸入由Token Embeddings、Segment Embeddings和 Position Embeddings(位置向量)三部分組成,如圖3所示.Token Embeddings表示詞向量,其中的ECLS標(biāo)識了每一個(gè)句子的開始信息,ESEP標(biāo)識了兩個(gè)句子的分割信息.Segment Embeddings表示段向量,其中EA和EB分別表示兩個(gè)句子的段向量,當(dāng)需要對下一個(gè)句子進(jìn)行預(yù)測時(shí),就會(huì)把兩個(gè)句子進(jìn)行拼接.Position Embedding表示位置向量,它是用來標(biāo)識詞向量位置信息的.最后把三個(gè)向量疊加構(gòu)成模型的輸入部分.
圖3 BERT預(yù)訓(xùn)練模型詞向量構(gòu)成
BERT預(yù)訓(xùn)練語言模型使用的特征抽取器是Transformer[14].如圖4所示,Transformer是由多個(gè)重疊的單元組成,每個(gè)單元由兩部分組成,第一部分是自注意力機(jī)制(self-Attention),第二部分是前饋神經(jīng)網(wǎng)絡(luò)(Feed Forward Network).單元內(nèi)部的子層之間設(shè)計(jì)了殘差連接,如圖中虛線所示,該連接可以保證把上一層的信息完整地傳到下一層.當(dāng)輸入部分進(jìn)入Transformer特征抽取器時(shí),在第一個(gè)子層中首先經(jīng)過自注意力層,然后進(jìn)行殘差處理和層標(biāo)準(zhǔn)化;在第二個(gè)子層中把從自注意力層得到的輸出傳遞到前饋神經(jīng)網(wǎng)絡(luò)當(dāng)中,然后同樣進(jìn)行殘差處理和層歸一化.
Transformer特征抽取器中最重要的結(jié)構(gòu)是自注意力機(jī)制模塊,其結(jié)構(gòu)圖如圖5所示.在自注意力機(jī)制中,每個(gè)輸入也對應(yīng)三個(gè)向量,分別是查詢向量(Q),鍵向量(K)和值向量(V),其中Q和K的維度必須相同,V的維度可同也可不同.接下來要計(jì)算每一個(gè)輸入的輸出,步驟如下:
Step1:首先通過向量Q和向量K做點(diǎn)積得每個(gè)詞或字的重要程度得分s.
s=Q□K
(4)
(5)
因?yàn)閱我坏淖宰⒁饬C(jī)制不能獲取更多的子空間信息,所以BERT預(yù)訓(xùn)練模型中使用了多頭注意力機(jī)制(Multihead-attention),用于獲取句子級別的語義信息.該機(jī)制是由多個(gè)自注意力機(jī)制構(gòu)成的,其計(jì)算方式就是把多個(gè)自注意力機(jī)制并行地進(jìn)行計(jì)算,然后把多組輸出乘以隨機(jī)初始化的矩陣W,最后做一次線性變換就可以得到輸出.計(jì)算公式如下:
Multihead=concat(head1,head2,…,headn)W
(6)
(7)
實(shí)驗(yàn)采用工具包是Anaconda,使用的編程語言是Python3.6.使用的框架是Keras,該框架里面封裝好了Keras版的BERT,用戶可以通過官方發(fā)布的預(yù)訓(xùn)練權(quán)重對BERT進(jìn)行調(diào)用.實(shí)驗(yàn)使用的處理器是CPU.
本文實(shí)驗(yàn)所用數(shù)據(jù)集是由譚松波博士整理的酒店評論數(shù)據(jù)集[15].該數(shù)據(jù)集由四個(gè)不同大小的子數(shù)據(jù)集構(gòu)成,分別為:ChnSentiCorp-Htl-ba-2000、ChnSentiCorp-Htl-ba-4000、ChnSentiCorp-Htl-ba-6000、ChnSentiCorp-Htl-ba-10000.為了簡化表示,簡寫為CSC-1、CSC-2、CSC-3、CSC-4.本文實(shí)驗(yàn)采用的數(shù)據(jù)集為CSC-3和CSC-4,其數(shù)據(jù)集概況如表1所示.
表1 數(shù)據(jù)集概況
本文采用的實(shí)驗(yàn)結(jié)果評價(jià)指標(biāo)是F1值、準(zhǔn)確度(Accuracy)、精確度(Precision)和召回率(Recall).這些指標(biāo)都是通過TP、TN、FP和FN計(jì)算得到的.其中TP表示預(yù)測值為真,實(shí)際值也為真;FP表示預(yù)測值為真,實(shí)際值為假;FN表示預(yù)測值為假,實(shí)際值為真;TN表示預(yù)測值為假,實(shí)際值也為假.具體計(jì)算公式如下:
(8)
(9)
(10)
(11)
除此之外,實(shí)驗(yàn)還采用了AUC(Area Under roc Cure)值對實(shí)驗(yàn)結(jié)果進(jìn)行評估,其中AUC值越大,說明模型分類效果越好.
本文采用的參數(shù)主要有:BERT base網(wǎng)絡(luò)結(jié)構(gòu),其中網(wǎng)絡(luò)層數(shù)為12,隱藏層維度為768,注意力的多頭個(gè)數(shù)為12,總參數(shù)大小為110 M.由于譚松波酒店評論數(shù)據(jù)集中文本較短,所以句子的最大長度取值為200,每批次大小為64,迭代的次數(shù)為80,采用的優(yōu)化器是Adam[16],設(shè)置的學(xué)習(xí)率是Le-5.BiLSTM的層數(shù)為1,隱層節(jié)點(diǎn)數(shù)為128.
本文通過進(jìn)行6組實(shí)驗(yàn),分別在測試集上計(jì)算得到F1值、Recall值、Precision值、AUC值和Val-acc值,兩個(gè)數(shù)據(jù)集的對比結(jié)果如表2和表3所示.
表2 CSC-3數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
表3 CSC-4數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
根據(jù)表3列出的實(shí)驗(yàn)結(jié)果可知,BBL模型在CSC-3數(shù)據(jù)集上的運(yùn)行結(jié)果要優(yōu)于其它模型.其中,BiLSTM模型的實(shí)驗(yàn)結(jié)果值高于LSTM模型的實(shí)驗(yàn)結(jié)果值,所以實(shí)驗(yàn)證明BiLSTM模型在學(xué)習(xí)文本上下文特征上的能力比LSTM模型更強(qiáng),從而利于本文模型提取更多上下文信息.從實(shí)驗(yàn)的綜合指標(biāo)F1值和Val-acc來看,BERT-LSTM模型比前四個(gè)模型的實(shí)驗(yàn)結(jié)果都好,證明了BERT預(yù)訓(xùn)練模型訓(xùn)練好的字符向量比詞向量能獲取更多文本特征,更利于本文模型提取文本信息.所以我們結(jié)合BERT和BiLSTM模型構(gòu)成了BBL模型,實(shí)驗(yàn)結(jié)果證明,BBL模型的各個(gè)實(shí)驗(yàn)結(jié)果值確實(shí)優(yōu)于其他模型.
圖6和圖7分別展示了各個(gè)模型在CSC-3測試集上的F1值和Val-acc值變化.其中實(shí)驗(yàn)迭代次數(shù)為80.根據(jù)圖6和圖7可以看出,BBL模型的F1值曲線和Val-acc值始終在其他模型的曲線上方,證明了該模型在進(jìn)行文本情感分類方面的能力較強(qiáng).
為了更有力地證明BBL模型的優(yōu)勢,實(shí)驗(yàn)還在CSC-4數(shù)據(jù)集上進(jìn)行測試,其中迭代次數(shù)也為80.實(shí)驗(yàn)結(jié)果表明,和在CSC-3數(shù)據(jù)集上的結(jié)果相比,使用較大的數(shù)據(jù)集能使BBL模型獲得更好的分類效果.因?yàn)楦嗟臄?shù)據(jù)可以讓模型在訓(xùn)練過程中獲取更多文本特征,提升分類效果.總體上,BBL模型在CSC-4數(shù)據(jù)集上的F1值、Recall值、Precision值和Val-acc比本文其他模型都有提升.
圖8和圖9展示了本文各個(gè)模型在迭代次數(shù)為80時(shí)的F1值和Val-acc的變化.根據(jù)圖8可以看出,BBL模型在迭代次數(shù)為50以后,F(xiàn)1值就始終高于其他模型了.而在圖9中,BBL模型的值始終高于其他模型.
本文提出的BBL模型利用BERT中強(qiáng)大的Transformer機(jī)制,在字符級別上對文本進(jìn)行分析,與傳統(tǒng)LSTM、BiLSTM、TextCNN和BERT-LSTM模型相比,該模型的實(shí)驗(yàn)結(jié)果更好.但是本文只對二分類的文本進(jìn)行文本情感分析,沒有考慮多分類的文本,所以接下來的工作是進(jìn)行多分類的文本情感分析,得到文本更豐富的語義信息.