劉 勇,王 振
(青島科技大學(xué) 信息科學(xué)與技術(shù)學(xué)院,青島 266100)
恐懼、焦慮、內(nèi)疚、壓抑、憤怒、沮喪······每個(gè)人的身體里,都有一張關(guān)于情緒的地圖.研究指出,70%以上的人會(huì)不同程度的遭受到情緒對(duì)身體器官的“攻擊”,如“癌癥”的產(chǎn)生與長(zhǎng)時(shí)間的怨恨情緒有關(guān)[1],經(jīng)常受到批評(píng)的人容易患關(guān)節(jié)炎[2]等.據(jù)統(tǒng)計(jì),目前與情緒有關(guān)的病已達(dá)到200 多種,在所有患病人群中,70%以上都和情緒有關(guān).因此,我們可以通過跟蹤目標(biāo)人物的情緒變化,及時(shí)的將結(jié)果反饋給相關(guān)專家進(jìn)行分析,在分析值到達(dá)某臨界狀態(tài)時(shí),進(jìn)行預(yù)警處理.故通過分析情緒波動(dòng)狀況來及時(shí)發(fā)現(xiàn)、處理情緒變化的影響,可以更好的輔助疾病預(yù)防工作.
目前,越來越多的人喜歡通過微信、QQ 等實(shí)時(shí)在線工具進(jìn)行溝通交流.為更好的發(fā)現(xiàn)和關(guān)注目標(biāo)人物的情緒波動(dòng)狀況,我們結(jié)合深度學(xué)習(xí)相關(guān)技術(shù),研究了基于深度學(xué)習(xí)對(duì)目標(biāo)人物情緒預(yù)測(cè).
針對(duì)情感預(yù)測(cè)方面的研究已受到國(guó)內(nèi)外學(xué)者的廣泛關(guān)注.從Hearst 等[3]開始表示情感傾向分析預(yù)測(cè)在文本處理中的重要意義.此后Brown 等[4]發(fā)現(xiàn)情緒指標(biāo)與投資者的關(guān)系.在最近幾年,Pagolu 等[5]使用Word2Vec對(duì)情緒進(jìn)行了預(yù)測(cè)分析,將情感預(yù)測(cè)的準(zhǔn)確率提升到一個(gè)新層次.李瀟瀟等[6]依據(jù)DHS 模型對(duì)情感的影響及走勢(shì)建立了模型.朱小微[7]通過使用TS-BP 模型,實(shí)現(xiàn)了對(duì)中文影評(píng)情感傾向的研究.
以往關(guān)于情感傾向預(yù)測(cè)研究中大部分使用統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的方法,而統(tǒng)計(jì)方法會(huì)帶來準(zhǔn)確率低等問題.使用機(jī)器學(xué)習(xí)的方式可以帶來準(zhǔn)確率的提高,但其分類效果僅停留在二分類方面.深度學(xué)習(xí)的出現(xiàn)解決了這兩種方法的局限性,在提高準(zhǔn)確率的同時(shí),保證分類結(jié)果不再局限于兩類
本文提出了一種基于深度學(xué)習(xí)的目標(biāo)人物的情緒預(yù)測(cè)模型.首先調(diào)用BERT 預(yù)訓(xùn)練集,訓(xùn)練好情感識(shí)別模型,然后調(diào)用情緒定量算法,判定一個(gè)人的情感常態(tài),最后將模型與定量算法結(jié)合對(duì)目標(biāo)人物的情感進(jìn)行預(yù)測(cè).
在情緒預(yù)測(cè)算法中,最重要的是情緒定量相關(guān)的算法.只有將情緒進(jìn)行量化處理,才能進(jìn)行數(shù)值的預(yù)測(cè)與分析.因此,在情緒預(yù)測(cè)前必然要邁過的一道門檻兒就是情緒定量問題.在目前情緒定量的算法中,人們更多的是通過特征詞對(duì)情緒進(jìn)行定量.Hu 等[8]利用規(guī)則提取出高詞頻的名詞和名詞性短語(yǔ)作為高頻屬性,但該方法的問題是屬性詞過于分散,且沒有進(jìn)行歸類篩選,從而導(dǎo)致實(shí)驗(yàn)的準(zhǔn)確度較低.周清清等[9]利用高頻名詞構(gòu)建候選屬性詞,通過深度學(xué)習(xí)來構(gòu)建候選屬性詞向量,根據(jù)屬性詞向量完成候選屬性詞聚類,得到目標(biāo)候選屬性詞集.這種方法可以更全面發(fā)現(xiàn)評(píng)論對(duì)象細(xì)粒度屬性,但在噪音過濾方面仍需加強(qiáng),并且對(duì)于冷門屬性的效果較差.此外,也有好多的實(shí)驗(yàn)更偏向于心理學(xué)和理學(xué)方面,而沒有站在計(jì)算機(jī)角度去分析研究.在未來的發(fā)展中,只有不同學(xué)科領(lǐng)域進(jìn)行交叉融合,才能更好的應(yīng)用于現(xiàn)實(shí)生活.因此,本文提出了一種基于數(shù)據(jù)集的定量方法,通過研究目標(biāo)人物的日常整體對(duì)話,來對(duì)其整體情緒進(jìn)行定量.
目前,在情緒預(yù)測(cè)方面有很多的學(xué)者都以網(wǎng)絡(luò)文本來做相關(guān)研究,但最終更多的是應(yīng)用在經(jīng)濟(jì)領(lǐng)域上.Oliveeira 等[10]使用從微博中提取的情感和注意力指標(biāo)(采用大型Twitter 數(shù)據(jù)集)以及調(diào)查指數(shù)來預(yù)測(cè)股市的行為.Si 等[11]提出一種基于Twitter 情感主題的技術(shù)來預(yù)測(cè)股票市場(chǎng).Ding 等[12]發(fā)現(xiàn)Facebook 的“l(fā)ike”數(shù)量會(huì)影響票房表現(xiàn).張帥等[13]通過識(shí)別分析投資者的情緒來預(yù)測(cè)研究市場(chǎng)的成交量.
本文提出情緒定量和擬合算法,結(jié)合情緒定量化與算法進(jìn)行預(yù)測(cè).首先通過訓(xùn)練改進(jìn)對(duì)話識(shí)別模型,執(zhí)行參數(shù)傳遞來啟動(dòng)情感預(yù)測(cè)算法.通過情緒預(yù)測(cè)的定量算法確定用戶的情緒程度系數(shù),用BERT 神經(jīng)網(wǎng)絡(luò)進(jìn)行情緒分類.將得到的分類情緒與程度系數(shù)相結(jié)合,得到一天的整體情緒,放到情緒擬合算法中,預(yù)測(cè)目標(biāo)人物第二天的情緒.具體架構(gòu)如圖1所示.其中,數(shù)據(jù)集有兩大作用,一是通過定量算法的調(diào)用確定情緒程度系數(shù),二是為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練提供訓(xùn)練集.
圖1 情緒預(yù)測(cè)算法架構(gòu)
在情感定量和擬合算法中,數(shù)據(jù)集是其基礎(chǔ)的數(shù)據(jù).因此算法中為了使識(shí)別到的情緒更加準(zhǔn)確,添加了多種標(biāo)簽.分別為氣憤,厭煩,中立,開心,興奮5 種情緒標(biāo)簽,并分別使用1,2,3,4,5 來進(jìn)行代替.同時(shí),我們也對(duì)數(shù)據(jù)集加上了具體的時(shí)間特征,來為最終結(jié)果的定量分析與時(shí)間引用提供幫助.
目標(biāo)人物在某個(gè)具體時(shí)間的情緒很好判斷,但是其一天內(nèi)的情緒卻無法判斷,因此在本節(jié)提出一種情緒定量算法來判斷一天內(nèi)的主流情緒.
由于每個(gè)人的情緒狀況也不是均衡分布的,比如有的人生性易怒,有的人天生和善.情緒定量算法應(yīng)用了歸一化算法Z-score 標(biāo)準(zhǔn)化(0-1 標(biāo)準(zhǔn)化方法).將每個(gè)人的脾氣進(jìn)行分類,根據(jù)數(shù)據(jù)集給每種情緒來確定其情緒程度系數(shù)進(jìn)行定量.具體公式如下:
其中,x表示5 種情緒中一種情緒的標(biāo)簽待定數(shù)值,μ表示所有數(shù)據(jù)集平均值,σ表示所有數(shù)據(jù)集的標(biāo)準(zhǔn)差也稱為標(biāo)準(zhǔn)偏差.
σ標(biāo)準(zhǔn)差公式如下:
其中,N為數(shù)據(jù)集的數(shù)量大小,xi是 數(shù)據(jù)集中第i個(gè)數(shù)據(jù)的情緒待定值.
除去8 小時(shí)晚上休息的時(shí)間,我們按照一天的16 個(gè)小時(shí)對(duì)識(shí)別結(jié)果進(jìn)行處理.根據(jù)數(shù)據(jù)集的標(biāo)注,將其中1 代表生氣,2 代表厭煩,3 代表中立,4 代表開心,5 代表興奮,通過如下公式進(jìn)行處理,對(duì)一天內(nèi)所代表的情緒進(jìn)行總結(jié):
其中,E代表一天內(nèi)的主流情緒,α,β,χ,δ,ε分別代表生氣,厭煩,中立,開心的情緒程度系數(shù)[14],是由式(1)所求出的 |X*|,N代表的是識(shí)別到的一天內(nèi)情緒個(gè)數(shù),最終得到的E值就代表了該目標(biāo)人物某一天的主流情緒.
為解決根據(jù)已知數(shù)值來預(yù)測(cè)未來數(shù)值的難題,我們將數(shù)學(xué)領(lǐng)域中的最小二乘法公式與情緒識(shí)別領(lǐng)域相結(jié)合,提出了一種新的情緒擬合算法.在識(shí)別出情緒,完成定量后,下一步需要對(duì)未來的情緒進(jìn)行預(yù)測(cè),情緒擬合算法使用最小二乘法的思想來對(duì)已知結(jié)果進(jìn)行擬合曲線,來預(yù)測(cè)未來可能產(chǎn)生的情緒.
最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù).該技術(shù)通過最小化誤差的平方和來尋找數(shù)據(jù)的最佳函數(shù)匹配.利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小.下面我們以一元的公式為例,最小二乘法公式推導(dǎo)如下:
給定如下成對(duì)的數(shù)據(jù){(x1,y1),(x2,y2),···,(xm,ym)},設(shè)待擬合的公式為:
誤差結(jié)果為:
當(dāng)擬合直線的誤差最小時(shí),直線參數(shù)a0,a1滿足:
即:
整理上式結(jié)果可得:
求解方程組可得:
最終將得到的a0,a1帶入式(1)中,得到0 最終求解,然后再使用y=a0+a1x公式,結(jié)合后面BERT 做好的情緒分類與定量算法相結(jié)合所得到的數(shù)值,去預(yù)測(cè)目標(biāo)人物情緒的變化.
目標(biāo)情緒識(shí)別是將目標(biāo)人物的情緒識(shí)別出來,并且進(jìn)行定量分析和對(duì)目標(biāo)人物的情緒進(jìn)行匯總,再進(jìn)行預(yù)測(cè).
如圖2所示,首先對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,然后對(duì)數(shù)據(jù)集中的語(yǔ)句進(jìn)行分詞處理,處理完畢將其放到BERT[15]的預(yù)訓(xùn)練模型中轉(zhuǎn)換成向量后,再將其放入到BERT神經(jīng)網(wǎng)絡(luò)中對(duì)其進(jìn)行訓(xùn)練,之后利用訓(xùn)練好的模型對(duì)目標(biāo)人物的簡(jiǎn)單對(duì)話進(jìn)行識(shí)別,對(duì)識(shí)別的情緒進(jìn)行匯總預(yù)測(cè)與分析,得到最終結(jié)果.
圖2 系統(tǒng)總體架構(gòu)
BERT 作為Transformer 結(jié)構(gòu)的網(wǎng)絡(luò)一經(jīng)推出,便刷新了很多NLP 任務(wù)的最好性能,其結(jié)構(gòu)如圖3所示.在SQuADv1.1 上將BERT 與其他先進(jìn)的NLP 系統(tǒng)進(jìn)行了對(duì)比,獲得了93.2%的F1 分?jǐn)?shù)(一種準(zhǔn)確度的衡量指標(biāo)),超過了之前最高水準(zhǔn)分?jǐn)?shù)91.6%合人類分?jǐn)?shù)91.2%.并且BERT 具有廣泛的通用性,可以很簡(jiǎn)單的移植到情感分類方面.
BERT 作為Transform 特征抽取器,與傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)相比,可以獲取更長(zhǎng)的上下文信息.同時(shí),傳統(tǒng)的LSTM 模型只學(xué)習(xí)到了單向的信息,而BERT 改進(jìn)了常見的語(yǔ)言雙向模型,轉(zhuǎn)而使用上下文融合語(yǔ)言模型.其不同于Word2Vec 需要對(duì)輸入模型的所有詞序列進(jìn)行預(yù)測(cè),BERT 語(yǔ)言模型不再是簡(jiǎn)單地將從左到右和從右到左的句子編碼簡(jiǎn)單拼接起來,而是隨機(jī)遮擋部分字符,訓(xùn)練中損失函數(shù)只計(jì)算被遮擋的token[16],避免了上下文中對(duì)當(dāng)前詞類的影響,在真正意義上實(shí)現(xiàn)雙向.
圖3 BERT 預(yù)訓(xùn)練語(yǔ)言模型
預(yù)訓(xùn)練是BERT 的重要部分,但預(yù)訓(xùn)練需要巨大的運(yùn)算資源.按照論文里描述的參數(shù),其Base 的設(shè)定在消費(fèi)級(jí)的顯卡Titan x 或Titan 1080ti (12 GB RAM)上,甚至需要近幾個(gè)月的時(shí)間進(jìn)行預(yù)訓(xùn)練,同時(shí)還會(huì)面臨顯存不足的問題.
谷歌公布的預(yù)訓(xùn)練集為兩部分,分別為Base 版本和Large 版本,Base 版本大小在400 MB 左右,Large版本大小在1.2 GB 左右.谷歌針對(duì)大部分的語(yǔ)言都公布了BERT 的預(yù)訓(xùn)練模型,滿足了各國(guó)研究者的需求.因此可以更方便地在自己的數(shù)據(jù)集上進(jìn)行微調(diào).
本文使用的數(shù)據(jù)集為subtitle 電視劇對(duì)話數(shù)據(jù)集,經(jīng)過整理篩選出17 500 句日常的簡(jiǎn)單對(duì)話,對(duì)其進(jìn)行校準(zhǔn)標(biāo)注.其含有包含 5 種情感,其中喜悅、興奮、憤怒、生氣各有3300 條,平常的感情狀態(tài)有4300 條.數(shù)據(jù)結(jié)構(gòu)如圖4所示.對(duì)話數(shù)據(jù)集包含3 部分:時(shí)間,內(nèi)容和情緒標(biāo)簽.我們可以根據(jù)時(shí)間去推算情緒隨著時(shí)間的變化,根據(jù)內(nèi)容和情感標(biāo)簽,去訓(xùn)練神經(jīng)網(wǎng)絡(luò),以及情感系數(shù)的確定.
在進(jìn)行訓(xùn)練時(shí),BERT 開始前會(huì)給每個(gè)輸入文本開頭和結(jié)尾分別加上[CLS]和[SEP].在中文BERT 模型中,中文分詞是基于字而非詞的分詞.BERT 會(huì)為標(biāo)識(shí)真實(shí)字符/補(bǔ)全字符標(biāo)識(shí)符,其中真實(shí)文本的每個(gè)字對(duì)應(yīng)1,補(bǔ)全符號(hào)對(duì)應(yīng)0,[CLS]和[SEP]也為1.轉(zhuǎn)換完成后的特征值就可以作為輸入,用于模型的訓(xùn)練和測(cè)試.
完成讀取數(shù)據(jù)、特征轉(zhuǎn)換之后,將特征送入模型進(jìn)行訓(xùn)練,訓(xùn)練算法為BERT 專用的Adam 算法,其中的訓(xùn)練集、測(cè)試集、驗(yàn)證集比例為3:1:1.
圖4 對(duì)話數(shù)據(jù)集
在保存訓(xùn)練集時(shí)回保存為TFRecord 類型的文件減小,程序運(yùn)行時(shí)零散的數(shù)據(jù)集對(duì)其的影響.我們進(jìn)行訓(xùn)練調(diào)用,與驗(yàn)證時(shí)同樣直接調(diào)用TFRecord 文件.
實(shí)驗(yàn)中涉及神經(jīng)網(wǎng)絡(luò)參數(shù)的設(shè)置,具體設(shè)置如表1所示.使用谷歌開放的中文預(yù)訓(xùn)練模型參與訓(xùn)練,Base版本Chinese_L-12_H-768_A-12,使用的訓(xùn)練機(jī)器為雙顯卡1080ti,顯存為12 GB.使用的編程語(yǔ)言為Python,使用到的主要庫(kù)為Tensorflow1.9.0.
表1 模型參數(shù)設(shè)置
為了驗(yàn)證本文提出的基于深度學(xué)習(xí)在情感預(yù)測(cè)上面的有效性,分別使用過BERT 和正在廣泛應(yīng)用Bi-LSTM,LSTM 進(jìn)行對(duì)比.實(shí)驗(yàn)中沒有使用SVM 等機(jī)器學(xué)習(xí)方法是由于機(jī)器學(xué)習(xí)方法僅能做到兩分類狀況,無法做到多分類.
圖5為不同深度模型中運(yùn)行結(jié)果的對(duì)比圖,在第一行中分別使LSTM,Bi-LSTM,BERT 對(duì)同一天的數(shù)據(jù)對(duì)其預(yù)測(cè)的結(jié)果圖,其中橫軸為時(shí)間縱軸為情緒,其中每一個(gè)點(diǎn)為經(jīng)過訓(xùn)練模型識(shí)別得到結(jié)果.從圖中可以看出,主要為早上8 點(diǎn)到晚上24 點(diǎn)之間的情緒變化.第二行為同一數(shù)據(jù)對(duì)半個(gè)月內(nèi)的情緒變化,其中虛線為對(duì)情緒變化的擬合.可以看出LSTM 對(duì)下一步的情感預(yù)測(cè)將是往平淡方向發(fā)展,而Bi-LSTM 和BERT 的趨勢(shì)將是往興奮方面發(fā)展.
圖5 運(yùn)行結(jié)果對(duì)比
得益于BERT 在特征提取方面的優(yōu)勢(shì)和雙向性的結(jié)合他的F1 值高于LSTM 和BI-LSTM,足以展現(xiàn)其在深度學(xué)習(xí)當(dāng)中的優(yōu)勢(shì).
在用BERT 進(jìn)行訓(xùn)練時(shí),其驗(yàn)證集的準(zhǔn)確率可以達(dá)到90%,其中驗(yàn)證集的誤差是0.3.其中結(jié)合情感定量算法所得到的情感系數(shù)從生氣到興奮之間的系數(shù)分別為0.89、1.27、0.89、1.74、0.89.從系數(shù)可以看出,其偏向于樂觀的性格.虛線表示為經(jīng)過情緒量化算法后得到的結(jié)果,藍(lán)色曲線的變化為目標(biāo)人物從9.17 到10.3 這段時(shí)間內(nèi)的情緒變化,虛線為擬合算法擬合出來的預(yù)測(cè)曲線最高次冪為10 次,其結(jié)果如表2所示.
表2 實(shí)驗(yàn)結(jié)果
再將x值相當(dāng)于日期輸入到公式中即可預(yù)測(cè)其目標(biāo)人物的未來情緒狀況.
實(shí)驗(yàn)結(jié)果如圖6所示,隨著預(yù)測(cè)需要預(yù)測(cè)時(shí)間的增加,其準(zhǔn)確率也在不斷地變化,從第2 天的90%準(zhǔn)確率逐步降低,當(dāng)預(yù)測(cè)到第10 天時(shí),準(zhǔn)確率下降速率最快,但是隨著時(shí)間的推移預(yù)測(cè)的準(zhǔn)確率也在不斷的降低,最終的結(jié)果在20%上下浮動(dòng).
本文主要使用基于深度學(xué)習(xí)的方法進(jìn)行情感預(yù)測(cè),使用BERT 來訓(xùn)練情感識(shí)別模型,然后通過情緒定量算法,判定一個(gè)人的情感常態(tài).最后將模型與定量算法相結(jié)合有效預(yù)測(cè)目標(biāo)人物的情感走向變化.
本文提出的情感預(yù)測(cè)模型有廣闊的發(fā)展應(yīng)用前景.在醫(yī)學(xué)領(lǐng)域,可以通過對(duì)目標(biāo)人物的情緒變化信息進(jìn)行收集,為目標(biāo)人物的疾病進(jìn)行預(yù)警.在市場(chǎng)經(jīng)濟(jì)領(lǐng)域,也可以利用情感預(yù)測(cè)模型大體判斷出目標(biāo)投資人的意愿走向.
為進(jìn)一步提高精確度,可以增加數(shù)據(jù)集內(nèi)容.在后續(xù)工作中,可以從細(xì)化,完善數(shù)據(jù)集中的標(biāo)記規(guī)則進(jìn)行著手,同時(shí)擴(kuò)展語(yǔ)料的規(guī)模.單純使用實(shí)體權(quán)重相同的損失函數(shù)進(jìn)行訓(xùn)練效果并不是太理想,可以對(duì)各類設(shè)置加權(quán)損失函數(shù),進(jìn)一步提升情緒的識(shí)別效率.
圖6 準(zhǔn)確率與時(shí)間推移的關(guān)系