趙亞歐,張家重,李貽斌,付憲瑞,生 偉
(1. 浪潮集團金融信息技術有限公司,濟南250101; 2. 濟南大學信息科學與工程學院,濟南250022;3. 山東大學控制科學與工程學院,濟南250061)
(*通信作者電子郵箱zhaoyaou@inspur.com)
情感分析(Sentiment Analysis)是對帶有情感色彩的主觀性文本或句子進行分析、處理和抽取的技術[1]。隨著互聯網技術的發(fā)展,人們的活動越來越多地集中在網絡上,人們通過網絡進行學習、交流、購物、娛樂,同時對社會熱點事件、熱門商品和相關服務進行評論。通過這些評論挖掘數據背后人們的觀點、傾向是十分重要的,利用這些數據,政府部門能夠及時作出反應,進行輿論引導,避免重大輿情事件;商戶能夠掌握用戶需求,進行個性化精準營銷;產品制造商也可以了解產品優(yōu)劣,及時對產品進行改進。
從評論中自動提取用戶觀點并不容易,現在主流的方法主要有有監(jiān)督和無監(jiān)督兩類。有監(jiān)督方法主要是利用機器學習技術,如支持向量機(Support Vector Machine,SVM)、最大熵方法和樸素貝葉斯方法等[2-4],對文本進行學習,然后進行情感分類。無監(jiān)督方法主要是分析文本中的情感詞、語法和語義,通過抽取文本的統(tǒng)計特征實現情感分類。
深度學習是人工智能的一個熱點,其方法也被廣泛應用在情感分析領域。Socher等[5]于2011 年提出使用遞歸自編碼網絡(Recurrent Auto-Encoder,RAE)對文本特征進行抽取和分類。隨后,Qian 等[6]提出使用動態(tài)卷積神經網絡(Dynamic Convolutional Neural Network,DCNN)進行文本分類,DCNN 采用動態(tài)K-Max 池化操作,能夠有效地捕捉詞語之間的聯系。Wang 等[7]提出利用長短程記憶(Long Short-Term Memory,LSTM)網絡對推特文本進行情感分類,該方法利用LSTM的門控結構,能夠更好存儲文本特征。LSTM 隨后被擴展為雙向LSTM、疊層雙向LSTM等一系列模型。此外,多種網絡結構的融合方法也被提出,如Wang 等[8]提出的卷積神經網絡(Convolutional Neural Network,CNN)和 循 環(huán) 神 經 網 絡(Recurrent Neural Network,RNN)相結合的模型CNN-RNN、Guggilla 等[9]提出的LSTM-CNN 模型等。Akhtar 等[10]于2017年提出利用多個神經網絡集成進行情感分類,也取得了很好的效果。
注意力機制最早應用于圖像領域,它可以聚焦圖像的特定區(qū)域,抽取圖像的有用特征。2016 年,Bahdanau 等[11]最先把注意力機制應用到自然語言處理任務中,構造了當時性能最好的機器翻譯模型。隨后,研究人員也把注意力機制應用到情感分析任務中。曾鋒等[12]將注意力機制和循環(huán)神經網絡相結合,通過雙層注意力分別對單詞層和句子層進行建模,捕獲不同單詞和不同句子的重要性。曾碧卿等[13]將注意力機制和卷積神經網絡相結合,提出一種雙注意力機制的卷積神經網絡模型,用來確定情感傾向。韓萍等[14]提出了基于情感融合和多維自注意力機制的微博文本情感分析模型,實現了文本中詞語間依賴關系的建立以及多角度情感語義信息的獲取。此外,石磊等[15]將注意力機制與樹形結構的LSTM 網絡相結合,提升情感分析的準確率。
使用深度學習技術對自然語言進行處理,另外一個重要的問題是如何將文字符號轉化為數字特征。前人的方法大都利用Word2Vec、GloVe(Global Vectors)等詞嵌入工具得到詞語的嵌入向量(embedding)。但此類方法存在的主要問題是難以對多義詞進行向量表示。比如蘋果,由于上下文不同,可能表示的是一種水果,也可能是指蘋果公司,甚至可能是指電影名稱,然而,利用詞嵌入技術,這三個不同的語義只會被表示為一個向量。為了解決這個問題,本文提出使用基于語言模型的詞嵌入(Embedding from Language Model,ELMo)獲取詞向量。該模型獲得的詞向量不但包含詞語本身信息,也包含其對應的上下文信息,能夠表達多義詞的不同語義。此外,針對中文環(huán)境下ELMo 難以訓練的問題,本文提出使用預訓練獲得的字符向量初始化ELMo 的嵌入層,可加快模型的訓練,提高訓練精度。最后,針對情感分類,本文提出使用融合ELMo 和多尺度卷積神經網絡(Multi-Scale Convolutional Neural Network,MSCNN)作為分類器。該模型使用不同尺度的卷積核對文本施加卷積操作,并利用最大值池化操作對獲得的特征進行篩選,最后將這些特征融合,作為最終文本的特征。該方法考慮了不同尺度的短語特征,相較于單純采用詞向量或者字向量,效果更好。
自然語言處理的核心任務是抽取語言文字表象符號背后的隱藏含義,得到計算機可以理解的數據化表征。一個好的數字化表征對于后續(xù)自然語言處理任務,如情感分析、語義分析、機器翻譯等十分重要,是自然語言處理研究的熱點。方法從早期的獨熱編碼(One-hot),到詞袋(Bag-of-words)模型,再到后來的tf-idf(term frequency-inverse document frequency),不斷涌現。
最近幾年,隨著深度學習技術的發(fā)展,越來越多的學者嘗試使用神經網絡方法抽取詞語的特征:2003年,Bengio等[16]提出了NNLM(Neural Network Language Model),利用三層神經網絡學習語言模型,這是神經網絡在自然語言表征方面的首次 嘗 試;隨 后 在2013 年,谷 歌 的Mikolov 等[17]在CBow(Continuous Bag-of-words)和Skip-gram 模型的基礎上構建了Word2vec 工具,該模型使用兩層神經網絡,去掉了隱含層,簡化了神經網絡結構,并且使用噪聲對比估計(Noise-Contrastive Estimation,NCE)和 層 級Softmax(Hierarchical Softmax)技術,減小了算法復雜度,使神經網絡的大規(guī)模應用成為可能;同一時期,斯坦福的自然語言處理小組的Pennington等[18]提出GloVe算法,也取得了不錯的效果。
隨著研究的不斷深入,開始從研究詞語表征轉向研究句子表征。2015 年Kiros 等[19]提出Skip-thoughts 方法。該方法首先利用循環(huán)神經網絡(RNN)對句子進行編碼,然后構造另外兩個RNN 對句子進行解碼,通過編碼-解碼模型獲取句子向 量。2018 年,Logeswaran 等[20]在 此 基 礎 上 提 出quickthoughts 方法,該方法去掉了解碼過程,直接將句子的編碼作為特征接入后續(xù)網絡,簡化了網絡結構,提高了模型性能。
雖然句子表征取得了一定進展,但效果往往不佳。2017年,McCann等[21]提出了句子特征和詞語特征的融合方法。首先在機器翻譯語料上訓練編碼器-解碼器(Encoder-Decoder)模型,然后抽取編碼器的輸出層和嵌入層(embedding),其中,編碼器的結果作為句子特征,嵌入層作為句子中詞語的特征,最后將兩者融合作為最終特征。該方法的意義在于,對于每一個詞語特征,都融入了該詞語所在的句子特征,語義表示更加準確。
相對于詞語,句子的復雜度更大,需要大規(guī)模語料作為訓練集,但大多數自然語言處理任務的語料規(guī)模都很小。為了解決這個問題,人們開始探索預訓練的方法。2018 年Cer等[22]提出在大規(guī)模語料中預訓練句子向量,然后通過遷移學習技術應用到小規(guī)模任務中,但這些方法僅考慮了句子特征,而沒有考慮句中的詞語特征。
Peters 等[23]于2018 年提出了ELMo。該方法結合了上述模型的優(yōu)點,既采用預訓練的方式,又注意融合詞語和句子特征。算法主要分為兩步:第一步是構建基于LSTM 的雙向語言模型(bilateral Language Model,biLM),并在大規(guī)模語料上進行訓練,獲取模型參數;第二步是將文本輸入biLM,抽取biLM 的輸入層和隱含層,將其進行加權組合,獲得文本的ELMo特征向量。
和Word2vec 的思想類似,ELMo 也是通過構造語言模型獲取詞向量的。一個含有N個詞的句子S={t1,t2,…,tN},其出現概率P(t1,t2,…,tN)可以通過計算每個詞tk的出現概率P(tk)得到,而P(tk)只與tk前面出現的詞語t1,t2,…,tk-1有關,因此,P(t1,t2,…,tN)可以使用式(1)計算:
如果使用LSTM 對語言模型進行建模,則tk對應LSTM 隱狀態(tài)hk。如果LSTM 存在L層細胞單元(Cell),則對應隱狀態(tài)集合為。將最后一層的隱狀態(tài)輸入softmax層獲得輸出ok,ok代表語言模型中tk出現概率P(tk|t1,t2,…,tk-1)。
tk出現概率不但與其前面的詞有關,也可能與其后面的詞有關,因此需要構建后向模型。后向模型和前向模型一樣,也采用一個L層的LSTM,將tN,tN-1,…,tk依次輸入網絡,得到隱狀態(tài)集合。將隱狀態(tài)輸入softmax 層得 到 輸 出o′k、o′k表 示 后 向 模 型 中tk出 現 概 率P(tk|tk+1,tk+2,…,tN)。
ELMo 所采用的biLM 模型如圖1 所示,從圖中可以看出,biLM 的核心是兩個LSTM 網絡,兩個網絡都由多層cell 組成(一般采用二層結構),一個網絡負責前向語言模型的建模,一個負責后向語言模型的建模。為了保持網絡訓練穩(wěn)定,在兩層cell 之間加入殘差連接。最終層的隱狀態(tài)融合前后兩個網絡輸出,通過softmax計算上下文條件概率。
圖1 基于LSTM的雙向語言模型(biLM)架構Fig. 1 Architecture of bilateral language model based on LSTM
模型采用的損失函數為句子中所有詞tk對應概率乘積的似然,即:
其中:θ、θ′分別對應前向LSTM 模型和后向LSTM 模型的待優(yōu)化參數。
將后續(xù)分類任務中的文本輸入biLM 模型,獲取biLM 每一層隱狀態(tài),…,。將tk對應的詞嵌入向量xk與每一層隱狀態(tài)進行線性組合,獲得tk的ELMo表示,其計算公式為:
其中:γ為縮放因子,sj為歸一化的系數,表示每個特征的占比,這些參數都需要在后續(xù)任務中進行二次訓練獲得。
在實際使用過程中,ELMo 的輸入既可以是詞向量,也可以是字符向量。如果輸入的是字符向量,則需要額外添加一個基于字符的卷積神經網絡(character Convolutional Neural Network,char-CNN),用其生成字符對應單詞的嵌入向量。其對應的結構如圖2所示。
這樣做的優(yōu)點是:1)能夠避免詞典外詞語無法表示的問題(Out Of Vocabulary,OOV);2)無需存儲詞典中詞語的詞嵌入向量,只需存儲char-CNN 的模型參數即可,減小了存儲空間占用。
圖2 char-CNN模型結構Fig. 2 Architecture of char-CNN model
雖然采用基于字符的卷積神經網絡有諸多好處,但如果直接遷移到中文語料中,還存在一定的問題。主要是因為英文字符的初始向量一般采用隨機初始化的方式產生,但英文僅有26 個字母,加上特殊符號,也不會超過256 個。然而,中文系統(tǒng)中漢字數量一般都在5 000以上,如果也采用和英文相同的隨機初始化方式,則向量的不確定性太大,后續(xù)char-CNN網絡將難以訓練。
為了解決這個問題,本文提出使用預訓練的中文字符向量來初始化ELMo。該方法首先在大規(guī)模語料中預訓練中文字符向量,然后將訓練得到的字符向量作為char-CNN 模型的初始向量。這種方式預先加入了漢字的語義信息,與隨機初始化相比,不確定程度大大降低,有助于加快模型的訓練,提高訓練精度。
該算法分為兩步,第一步利用Word2vec 工具對漢字字符進行預訓練,獲取字符向量,其模型結構如圖3所示。
圖3 漢字字符向量預訓練模型Fig. 3 Pre-training model for Chinese characters
具體做法是,對于第i個漢字,首先獲取其獨熱編碼bi,編碼維數為漢字字典的大小Nchar,然后與嵌入矩陣Memb相乘(Memb∈RNchar×Dchar),得到維度為Dchar的緊致編碼ci,再將其與上下文矩陣Mctx(Mctx∈RDchar×Nchar)相乘,經過softmax 激勵,獲得輸出oi(oi∈RNchar)。最后,根據oi計算似然損失函數,并利用梯度下降法調整嵌入矩陣Memb和上下文矩陣Mctx。
第二步,使用預訓練的嵌入矩陣Memb初始化char-CNN 的嵌入層,并進一步精調參數。
假設句子中第k個詞為tk,將tk中每一個漢字的獨熱編碼與矩陣Memb相乘,得到漢字對應的字向量,然后輸入char-CNN 網絡,進行卷積、池化操作,得到對應的詞向量vk。對于tk的前驅詞tk-1和后繼詞tk+1,按照同樣操作得到對應詞向量vk-1和vk+1。
將vk輸入biLM 模型,生成其前驅詞向量v′k-1和后繼向量v′k+1。比對v′k-1、v′k+1與vk-1、vk+1,計算似然損失,據此調整ELMo 對應的模型參數,包括嵌入矩陣Memb,char-CNN 和biLM的參數。其模型結構如圖4所示。
圖4 基于預訓練漢字向量的ELMoFig. 4 ELMo based on pre-trained vectors of Chinese characters
ELMo僅僅對文本特征進行了編碼,進行情感分類還需要一個分類器。常用的分類器有支持向量機(SVM)、卷積神經網絡(CNN)和循環(huán)神經網絡(RNN)等。
句子的含義通過其組成詞語來體現,然而詞語并不直接組成句子,而是首先組成短語,然后通過短語組成句子。與char-CNN 的思想類似,如果對詞語進行卷積,則可以得出短語對應的語義向量,如果采用不同尺度大小的卷積核,則可以獲得不同尺度的短語語義向量,將這些短語向量與詞向量融合,作為句子最終的特征,其語義信息比單純使用詞向量要豐富許多?;谏鲜鏊枷?,本文構造了多尺度卷積神經網絡分類器。
假設長度為N的句子所對應的詞向量分別為v1,v2,…,vN,將N個 向 量 進 行 連 接,構 成 矩 陣V,即V=[v1,v2,…,vN],V∈Rd×N,其中d為詞向量的維數。假設采用的卷積核為K,K∈Rd×w,w表示卷積寬度,則V通過K進行卷積運算的公式為:
其中:· 代表卷積操作,fi為卷積之后的特征,fi∈R,i∈{1,2,…,N-w+ 1}。
將得到的N-w+ 1 個卷積特征輸入池化層,按照式(5)進行最大值池化運算,其公式為:
其中y∈R。
對卷積核K,矩陣V經過卷積、池化操作后可得到輸出y。假設存在不同尺度的m個卷積核,如K1∈Rd×w1,Κ2∈Rd×w2,…,Km∈Rd×wm,則經過卷積操作會得到m個輸出y1,y2,…,ym。將其連接成一個向量,得到Y=[y1,y2,…,ym],Y∈Rm,Y為不同尺度短語的融合特征。最后,將Y輸入到兩層全連接神經網絡中,并利用softmax 激勵實現分類。多尺度卷積神經網絡(MSCNN)模型結構圖5所示。
圖5 多尺度卷積神經網絡模型結構Fig. 5 Model architecture of MSCNN
基于上述模型,本文提出了基于ELMo 和多尺度卷積神經網絡的融合模型用于情感分析。該模型主要由兩部分組成:第一部分是利用ELMo 學習預訓練數據,生成句子上下文相關的詞向量;第二部分是利用多尺度卷積神經網絡,對詞向量的特征進行二次抽取,并進行特征融合,生成句子的整體語義表示。最后,經過softmax 激勵函數實現文本情感傾向的分類。
該模型的優(yōu)勢在:1)ELMo 是預訓練模型,通常在大規(guī)模語料上進行訓練,生成的特征其泛化能力更強;2)ELMo 學習的詞向量不但可以準確表示多義詞的多個不同語義,而且還融入了詞語所在句子的語義;3)該模型既利用了循環(huán)神經網絡結構(ELMo 中的雙向LSTM 網絡結構),也利用卷積神經網絡結構(MSCNN),相對于采用單一網絡結構的方法,提取的特征更加豐富多樣。
實驗在兩個數據集上進行(表1),一是Tan等[24]收集的酒店評論數據,該數據集由10 000個文件組成,每個文件存儲一條酒店評論信息,其中7 000條為正面評論,3 000條為負面評論。該數據集按照不同規(guī)模被劃分為4個數據集,分別是htl-2000、htl-4000、htl-6000和htl-10000。另一個是中文信息學會舉辦的自然語言處理會議公布的深度學習情感分類評測數據集(NLPCC2014 task2),包含訓練數據集和測試數據集,其中訓練數據集含有1萬條中文產品評論數據;測試數據集包含2 500條中文產品評論數據,1250條正面評論,1250條負面評論。
表1 實驗數據集Tab. 1 Datasets used in the experiment
本文使用正確率(Accuracy)對實驗結果進行評價,其計算公式為:
其中:TP(True Positive)代表真陽性,TN(True Negative)代表真陰性,FP(False Positive)代表假陽性,FN(False Negative)代表假陰性。
在進行情感分類之前,需要對ELMo 進行預訓練,以獲得上下文相關的詞向量信息。預訓練在百科類問答數據集上進行,該數據集通過爬取社區(qū)問答數據獲得,含有150 萬個預先過濾的問題和答案,數據大小為1.48 GB。
原始數據為json 格式,預處理首先抽取每一條數據的content 部分,去除內容中的空行、特殊符號,過濾詞語少于5的句子。然后,利用北京大學提供的通用切詞工具pkuseg,對句子進行切詞。處理后得到9 205 479 個句子,每個句子占一行,句子詞語之間用空格分隔。樣例如圖6。
圖6 預處理后的訓練語料樣例Fig. 6 Sample of preprocessed training corpus
ELMo 的訓練分為二步:第一步采用Word2vec 工具的skip-gram 模型,學習字符預訓練語料,獲取字符向量,實驗中字符向量的維度設為128,上下文窗口大小設為5;第二步訓練ELMo,利用上述學習到的字符向量初始化char-CNN 的嵌入層,然后學習分詞語料,獲得模型參數,實驗中char-CNN 的輸出維數為256,biLM 模型層數設為2,隱狀態(tài)的維數為512,展開深度設為30。
實驗對比了采用預訓練字符向量初始化和采用隨機向量初始化兩種方法,ELMo 的訓練誤差曲線如圖7 所示。從圖中可以看出,對于采用預訓練向量初始化的ELMo,其訓練收斂速度更快,訓練精度更高。
圖7 采用不同初始化方法的ELMo訓練誤差曲線Fig. 7 Training error curves of ELMo with different initialization strategies
利用上述方法對酒店評論數據進行預處理,將處理后的句子輸入改進ELMo,獲取對應的ELMo 特征向量,最后將特征輸入MSCNN模型,進行分類。
為了獲得MSCNN 的最優(yōu)卷積尺度,分別在酒店評論和NLPCC2014 task2 兩個數據集上進行測試,實驗結果如圖8所示。
圖8 不同卷積尺度下MSCNN的分類結果Fig. 8 Classification results of MSCNN on different convolution scales
圖中卷積尺度1-n表示同時使用卷積尺度為1,2,…,n的卷積核。卷積尺度為卷積核的寬度,代表卷積核所覆蓋的詞語數目。卷積核的實際大小為512×卷積核的寬度,其中512為ELMo 的特征向量維數。卷積核的尺度越大,對應卷積核的數目也應該越多。實驗中,對于尺度為1 的卷積核,卷積核數目設為64;尺度為2、3 的卷積核,數目設為128;尺度為4、5的卷積核,數目設為256。
從圖8 可以看出,分類正確率隨著卷積尺度的增大而逐漸增加,這說明使用多尺度特征確實有助于提高分類精度。當選用卷積尺度為1-4 時,效果最好。當選用卷積尺度為1-5時,效果不如1-4,這有可能是由于漢語中距離超過4 的詞語之間的語義聯系較弱的緣故。
最終確定最優(yōu)卷積尺度為1-4,在該尺度下對酒店評論數據集進行實驗,效果如表2所示。
從表中可以看出,對不同規(guī)模的數據集,本文方法的分類正確率始終維持在93%以上,即使是針對不平衡數據集htl-10000,正確率也達到了93.3%,和平衡數據集相比,幾乎沒有下降,這說明本文方法有很好的魯棒性,并且能夠處理不均衡樣本集。
表2 不同酒店評論數據集上的實驗結果Tab. 2 Experimental results on different hotel review datasets
論文同樣對比了其他方法,如支持向量機(SVM)、樸素貝葉 斯(Na?ve Bayes,NB)、融 合 字、詞 的 雙 向LSTM 模 型(Character,Word and Part-of-Speech Attention model based on Bi-LSTM,CWPAT-Bi-LSTM)和卷積神經網絡(CNN),結果如表3所示。
表3 不同方法在酒店評論數據集上的正確率指標比較Tab. 3 Classification accuracy of different methods on hotel review datasets
從表3 中可以看出,本文方法明顯優(yōu)于SVM 和NB 方法,與SVM 方法相比正確率平均提升12.56個百分點,與NB方法相比正確率平均提升24.93 個百分點。這說明由于神經網絡方法具有特征自動抽取的能力,能夠獲得更有效的語義特征,從而得到了更高的分類正確率。對比神經網絡方法,本文方法相對卷積神經網絡模型,正確率平均提升了3.56 個百分點。即使對比當前最好方法,基于注意力機制的循環(huán)神經網絡模型,正確率也平均提升了1.08 個百分點。主要原因是本文方法實際上是循環(huán)神經網絡模型和卷積神經網絡的混合模型,在詞向量生成階段,使用雙向LSTM 構造上下文相關詞向量,在分類器階段,利用多尺度卷積進行詞向量的融合,進一步抽取可用的語義特征。該混合模型綜合了兩種模型的優(yōu)勢,所以效果更好。
為進一步驗證本文模型的性能,實驗還在NLPCC2014 task2數據集進行了測試,其結果如表4所示。
表4 不同方法在NLPCC2014_task2數據集上的實驗結果Tab. 4 Experimental results of different methods on dataset NLPCC2014_task2
從表中可以看出,與經典的循環(huán)神經網絡模型LSTM 和門控循環(huán)單元網絡(Gated Recurrent Unit,GRU)相比,本文方法的正確率提高了11.68個百分點和4.4個百分點,與卷積神經網絡相比,正確率提高了4.96 個百分點。該結果和酒店評論數據集上的結果是一致的,說明本文模型遷移到新數據集上同樣有效。與LSTM 和CNN 的混合方法相比,正確率也提高了2.16個百分點。雖然本文模型從表面上看也是LSTM 和CNN 的混合模型,但本文的LSTM 是蘊含在ELMo 中的,而ELMo采用的是預訓練的方式,是從大語料而非任務語料中訓練語義向量,得到的詞語表征其泛化程度更高,這是基于任務的訓練模型無法比擬的。
不同于傳統(tǒng)的將詞嵌入向量作為神經網絡的輸入,本文提出將ELMo 獲得的詞語向量作為網絡輸入,該向量融合了詞語本身和詞語所在上下文的語義特征,可以很好地表示多義詞的不同語義。此外,針對中文語料,本文提出采用預訓練的漢字字符向量初始化ELMo 的嵌入層,可加快ELMo 的訓練,提高訓練精度。最后,分類器采用多尺度的卷積神經網絡(MSCNN),該分類器能夠融合不同尺度的短語特征,有利于后續(xù)分類。實驗結果表明,本文提出的方法能有效提高情感分類的正確率。
最近幾年,基于多頭自注意力的網絡,如Transformer模型在自然語言處理領域嶄露頭角,Transformer能夠有側重地進行語義向量的融合,其本質更像是針對自然語言的卷積操作,下一步也嘗試將ELMo 和Transformer 模型混合,分別利用ELMo 和Transformer各自的優(yōu)勢,構造更適用于情感分析的模型。
在句子語法層面,中、英文是有顯著的區(qū)別的。例如,中文句子往往是由很多小的短句構成(大量逗號分隔的短句),而英文一般只會有1~2 個從句,而且從句大都不以子句的形式存在(中間沒有逗號分隔)。因此,如何改進ELMo 結構,使其更適用于中文語法結構,也是下一步的研究方向。