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