胡瓊 李奇 王樹(shù)軍




摘要:在利用神經(jīng)網(wǎng)絡(luò)進(jìn)行文本情緒分析時(shí),不同的詞嵌入會(huì)得到不同的判斷結(jié)果。該文對(duì)比了由文本自身建立的基線模型和預(yù)訓(xùn)練詞嵌入模型GloVe以及FastText的識(shí)別效果,通過(guò)實(shí)驗(yàn)得出了在不同情況下兩種類(lèi)型的識(shí)別優(yōu)劣性。此外,針對(duì)兩種預(yù)訓(xùn)練詞嵌入,得出高頻詞匯的缺失對(duì)總體結(jié)果無(wú)重要影響的結(jié)論。
關(guān)鍵詞:情緒分析;預(yù)訓(xùn)練詞嵌入
中圖分類(lèi)號(hào):TP311? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)36-0109-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
文本情緒分析是在神經(jīng)網(wǎng)絡(luò),尤其是以RNN(Recurrent Neural Network)為方向的深度學(xué)習(xí)方法上所重點(diǎn)研究的對(duì)象之一。簡(jiǎn)單的文本情緒分類(lèi)有正、負(fù)情感評(píng)價(jià)之分,稍微復(fù)雜一點(diǎn)的增加了中性評(píng)價(jià),再為復(fù)雜的分類(lèi)則是以1~5或1~10類(lèi)似的多級(jí)評(píng)分表示,如對(duì)網(wǎng)店商品的打分,對(duì)酒店、旅游景點(diǎn)的評(píng)價(jià)等。研究文本情緒分析可在一定程度上協(xié)助被評(píng)價(jià)方更改產(chǎn)品體驗(yàn),改進(jìn)廣告投放策略等。例如KFC決定用在社交媒體上獲取的“流行文化元素”作為某一季的產(chǎn)品主題,Apple公司以市場(chǎng)調(diào)研和競(jìng)爭(zhēng)對(duì)手產(chǎn)品分析獲取的情感評(píng)價(jià)作為新產(chǎn)品的研發(fā)關(guān)鍵詞等[1]。
在以文本為分析對(duì)象的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,文本信息通常是以詞元(token)的形式進(jìn)行計(jì)算,即將單個(gè)字符(charlevel)或單詞(wordlevel)的數(shù)據(jù)轉(zhuǎn)換為數(shù)字,再將數(shù)字轉(zhuǎn)換為固定大小的向量。向量可以由文本自身決定,也可由外部預(yù)訓(xùn)練詞向量導(dǎo)入。這一將獨(dú)立的文本信息映射為向量或矩陣的形式稱(chēng)為詞嵌入。詞嵌入將作為深度模型中嵌入層的輸入進(jìn)行下一步的運(yùn)算。選擇合適的詞嵌入能更好地建立權(quán)重參數(shù),不僅降低計(jì)算維度,且能更為準(zhǔn)確地描述各個(gè)向量之間的關(guān)系[2]。為對(duì)下文中名詞概念加以解釋說(shuō)明,本文以文本自身建立詞向量作為嵌入層輸入的算法模型稱(chēng)為基線模型,以預(yù)訓(xùn)練詞向量輸入嵌入層所建立的模型稱(chēng)為預(yù)訓(xùn)練嵌入層模型。
目前針對(duì)英文詞嵌入的研究主要包含有Word2Vec、GloVe和FastText三個(gè)方向等,根據(jù)語(yǔ)料庫(kù)差異,又可分為谷歌新聞熱詞模型、維基百科詞匯模型、網(wǎng)絡(luò)爬蟲(chóng)(CommonCrawl)詞匯模型等。使用預(yù)訓(xùn)練詞嵌入的目的一般是為了節(jié)約訓(xùn)練時(shí)間,減少損失,同時(shí)獲得更為準(zhǔn)確的預(yù)測(cè)性。目前,已有不少論文論證了預(yù)訓(xùn)練嵌入層模型的有效性[3],也有部分論文表明相對(duì)基線模型,使用預(yù)訓(xùn)練嵌入層模型并無(wú)優(yōu)勢(shì)[4]。其中大部分論文都是以文本分類(lèi)(如判斷文本內(nèi)容是否包含非法信息等)作為研究方向,針對(duì)文本情緒分析的詞嵌入研究還不太多。
本文選取了金融類(lèi)數(shù)據(jù)集[5],該數(shù)據(jù)集包含散戶投資者對(duì)美國(guó)財(cái)經(jīng)新聞標(biāo)題的4837條看法,每條看法有其對(duì)應(yīng)的情緒標(biāo)簽,為正、負(fù)、中三種評(píng)價(jià)之一。通過(guò)實(shí)驗(yàn),可針對(duì)該數(shù)據(jù)集建立一個(gè)較為準(zhǔn)確的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型。因研究對(duì)象為含有較長(zhǎng)信息的文本變量,實(shí)驗(yàn)選用了RNN算法,基于Tensorflow的Keras[6]建立了神經(jīng)網(wǎng)絡(luò)模型,包括有嵌入層、含有256個(gè)神經(jīng)元的GRU層、最大池化層以及全連接層,激活函數(shù)為softmax。在詞嵌入方面,為研究基線模型及預(yù)訓(xùn)練嵌入層模型的區(qū)別和利弊,本文使用了FastText[7]以及GloVe[8]預(yù)訓(xùn)練詞向量,通過(guò)調(diào)整參數(shù),對(duì)比發(fā)現(xiàn)和使用文本自身詞嵌入時(shí)對(duì)識(shí)別結(jié)果造成的不同影響。
1 預(yù)訓(xùn)練嵌入層和基線模型
在Keras中,定義一個(gè)嵌入層需要有詞匯表大小,輸出詞向量維度,初始化權(quán)重等。在以文本自身為語(yǔ)料庫(kù)的詞向量建立中,可設(shè)嵌入層初始化權(quán)重值為高斯隨機(jī)數(shù),設(shè)定該權(quán)重值可隨著迭代次數(shù)學(xué)習(xí)更新;而在使用預(yù)訓(xùn)練詞向量時(shí),需首先導(dǎo)入詞向量,初始化權(quán)重值為向量值并禁止其迭代更新。在使用GloVe詞向量時(shí),本文采用了其基于維基百科訓(xùn)練的300維詞向量模型,F(xiàn)astText詞匯表同樣如此,同時(shí)為了更好地保持在實(shí)驗(yàn)中各嵌入層一致性,實(shí)驗(yàn)設(shè)定基線模型的輸出詞向量也是300維。
比較兩種預(yù)訓(xùn)練詞嵌入,GloVe以單詞作為訓(xùn)練中的最小單位,通過(guò)構(gòu)建各單詞在指定語(yǔ)料庫(kù)中所對(duì)應(yīng)的共現(xiàn)矩陣進(jìn)行訓(xùn)練,共現(xiàn)矩陣表示了每個(gè)單詞在上下文中出現(xiàn)的頻率。為了提高效率,需要分解共現(xiàn)矩陣以實(shí)現(xiàn)降維計(jì)算,例如在本文中所用GloVe向量為300維,GloVe同時(shí)也提供了100維、50維等向量模型。GloVe的優(yōu)勢(shì)是在詞向量空間中能夠更好地描述詞與詞之間的關(guān)系。
FastText使用n-gram字符作為最小單位。例如,詞向量“apple”可以分解為單獨(dú)的詞向量單元,如“ap”“app”“ple”等,取決于n的大小。使用FastText的最大好處是它可以為稀有詞甚至是訓(xùn)練期間未見(jiàn)過(guò)的詞生成更好的詞嵌入,因?yàn)榻?jīng)過(guò)n-gram分解后的字符向量與其他詞所分解的字符向量部分重復(fù)。這是以單詞為基本學(xué)習(xí)單位的GloVe或Word2vec詞嵌入所無(wú)法實(shí)現(xiàn)的。
2 簡(jiǎn)單預(yù)處理
在訓(xùn)練之前通常會(huì)對(duì)數(shù)據(jù)作預(yù)處理,在本文中,僅對(duì)數(shù)據(jù)作了簡(jiǎn)單的清理,刪除了非英語(yǔ)字符、數(shù)字、各種標(biāo)點(diǎn)符號(hào),以及將所有單詞一律改成小寫(xiě)。盡管在GloVe模型中保留了數(shù)字及部分特殊符號(hào),為和FastText作對(duì)比,文本中統(tǒng)一不予考慮。事實(shí)上,如“經(jīng)濟(jì)增長(zhǎng)10%”這一句中,“經(jīng)濟(jì)增長(zhǎng)”作為關(guān)鍵,數(shù)字10或者符號(hào)%的省去并不會(huì)造成理解上的誤差。
在預(yù)處理后,實(shí)驗(yàn)將預(yù)訓(xùn)練詞向量與文本中所有詞匯量作對(duì)比,取交集作為詞嵌入。對(duì)于文本中出現(xiàn),預(yù)訓(xùn)練詞向量中未出現(xiàn)單詞統(tǒng)一設(shè)零,對(duì)于預(yù)訓(xùn)練詞向量中包含,文本中未包含單詞統(tǒng)一舍去。對(duì)比而言,在基線模型中,預(yù)處理后文本中所有單詞參與訓(xùn)練,沒(méi)有置零或舍去的操作。
3 實(shí)驗(yàn)
3.1 分批次訓(xùn)練
以前文所述RNN模型進(jìn)行實(shí)驗(yàn),機(jī)器運(yùn)行環(huán)境為L(zhǎng)inux系統(tǒng),Anaconda版本4.10.1,Tensorflow-2.4.1,Python-3.8.1。通過(guò)調(diào)整訓(xùn)練集大小和批次大小進(jìn)行分步實(shí)驗(yàn),設(shè)測(cè)試集大小分別占總數(shù)據(jù)集的0.2、0.5和0.8。同時(shí)設(shè)時(shí)期(epoch)為50,提前停止(EarlyStopping)節(jié)點(diǎn)設(shè)定為損失函數(shù)停止下降3次。驗(yàn)證集大小設(shè)為0.2。將訓(xùn)練好的模型用于測(cè)試集,以批次大小為32、128和512分三次進(jìn)行實(shí)驗(yàn)。結(jié)果如圖1所示。
從圖中可以看到,測(cè)試集正確判斷文本情緒的比例總體隨著訓(xùn)練集的增加而上升。當(dāng)訓(xùn)練集數(shù)量占比0.2時(shí),三種詞嵌入形式預(yù)測(cè)正確率都在70%以下,使用預(yù)訓(xùn)練詞嵌入的效果比自嵌入更好,當(dāng)訓(xùn)練集數(shù)量增加時(shí),三種詞嵌入形式預(yù)測(cè)正確率超越70%,使用基線模型的結(jié)果和預(yù)訓(xùn)練詞嵌入的結(jié)果逐漸持平,在訓(xùn)練集占比0.8時(shí),三種詞嵌入形式預(yù)測(cè)正確率在74%上下,基線模型的準(zhǔn)確度和GloVe詞嵌入近似,高于FastText模型。對(duì)比兩種詞嵌入,GloVe的識(shí)別率相對(duì)FastText略高。因設(shè)定訓(xùn)練集每次打亂數(shù)據(jù)進(jìn)行學(xué)習(xí),Keras在同一參數(shù)下運(yùn)行結(jié)果可能產(chǎn)生3%的波動(dòng),根據(jù)上圖并不能取得更詳細(xì)的結(jié)論,同時(shí)經(jīng)作者多次驗(yàn)證,圖1只是所有可能性的一種,實(shí)驗(yàn)結(jié)果證明GloVe并不一定比FastText識(shí)別結(jié)果要好。
3.2 同一批次下?lián)p失函數(shù)分析
從圖1中三種批次大小設(shè)定來(lái)看,32~512的改變并沒(méi)有對(duì)測(cè)試集的識(shí)別率產(chǎn)生重要影響,本例中批次大小改變更多的是影響運(yùn)算效率而非結(jié)果準(zhǔn)確性。圖2展示了以512為批次大小運(yùn)算情況下,不同詞嵌入方式的驗(yàn)證集損失。因設(shè)定了提前停止為3,故選取最后4次時(shí)期運(yùn)算結(jié)果作圖。
從圖中可以看到基線模型損失基本全部高于預(yù)訓(xùn)練詞嵌入模型且呈上升趨勢(shì),兩種詞嵌入模型之間的區(qū)別并不大。說(shuō)明預(yù)訓(xùn)練詞嵌入在取得較小的損失函數(shù)上具有更大的優(yōu)勢(shì)。以本例來(lái)看,基線模型的損失更大,更容易產(chǎn)生過(guò)擬合。另一點(diǎn)需加以說(shuō)明的是在實(shí)驗(yàn)中發(fā)現(xiàn)總體上使用基線模型需要的時(shí)期小于預(yù)訓(xùn)練詞嵌入,也就是在相同參數(shù)的設(shè)定下,基線模型的運(yùn)算速度大于預(yù)訓(xùn)練嵌入層模型。
3.3 GloVe與FastText對(duì)比
為進(jìn)一步找出兩種不同預(yù)訓(xùn)練詞嵌入的區(qū)別,實(shí)驗(yàn)分別對(duì)比了GloVe和FastText詞向量與原文的匹配度,結(jié)果為FastText的詞匯匹配度是80.62%,即4846個(gè)總詞匯量中有3906個(gè)單詞存在于預(yù)訓(xùn)練詞匯庫(kù)中,總文本詞嵌入為94.91%,未匹配單詞為“oyj”等專(zhuān)有名詞。對(duì)比而言,GloVe的單詞匹配度有88.46%,總文本詞嵌入達(dá)到了97.45%,未匹配單詞為“basware”等專(zhuān)有名詞,且出現(xiàn)頻率不高。GloVe的預(yù)訓(xùn)練單詞總量為40萬(wàn),F(xiàn)astText為100萬(wàn),前者是基于2014年的維基百科和英語(yǔ)字典(English Gigaword Fifth Edition), 后者是基于2017年的維基百科、UMBC語(yǔ)料庫(kù)和統(tǒng)計(jì)機(jī)器翻譯(SMT)中新聞數(shù)據(jù)集。表1列出了兩種詞嵌入中前4種高頻未匹配單詞。
以“basware”為界,“oyj”“omx”“nordea”這三個(gè)單詞在GloVe中全部匹配而在FastText中全部未匹配。因無(wú)法獲得真實(shí)的fasttext中三個(gè)單詞所對(duì)應(yīng)的詞向量,實(shí)驗(yàn)將GloVe中這三個(gè)單詞所對(duì)應(yīng)的詞向量值全部置零,重復(fù)前文實(shí)驗(yàn),如測(cè)試集結(jié)果下降則能說(shuō)明更精確的單詞匹配度能獲得更好的識(shí)別效果。為了證明高頻單詞對(duì)全文識(shí)別的影響,實(shí)驗(yàn)同樣考慮將基線模型中這三個(gè)單詞的詞向量置零。
結(jié)果證明在去掉三個(gè)單詞后,文本情緒判斷的準(zhǔn)確率幾乎不受影響,圖3是對(duì)原實(shí)驗(yàn)多次重復(fù)后的一種情況。盡管圖中數(shù)據(jù)間有較大空隙,以Keras計(jì)算波動(dòng)來(lái)看可以說(shuō)幾乎沒(méi)有差別。可見(jiàn)本例中高頻未匹配單詞并不是影響兩種預(yù)訓(xùn)練嵌入層模型測(cè)試結(jié)果之差的主要原因。
4 結(jié)語(yǔ)
本例中,不管是基線模型還是預(yù)訓(xùn)練嵌入層模型都表現(xiàn)出了較好的識(shí)別率,總體損失上后者相比前者更為穩(wěn)健,同時(shí)使用預(yù)訓(xùn)練詞向量可以更好地解決過(guò)擬合的問(wèn)題,如訓(xùn)練集數(shù)量較少,預(yù)訓(xùn)練詞嵌入應(yīng)是一種更為推薦的嵌入層方法。在比較GloVe和FastText兩種預(yù)訓(xùn)練詞嵌入時(shí),前者的單詞匹配度大于后者,測(cè)試集識(shí)別率兩者相近,意味著更高的單詞匹配度不一定帶來(lái)更好的識(shí)別結(jié)果。此外,本文選用金融新聞?lì)悢?shù)據(jù)集,F(xiàn)astText中本身包含有新聞?lì)愓Z(yǔ)料庫(kù)但其真實(shí)匹配度反而不如GloVe,說(shuō)明在選擇預(yù)訓(xùn)練詞嵌入時(shí)不一定要尋找與文本相應(yīng)的類(lèi)別,100萬(wàn)的總詞匯量不一定比40萬(wàn)的詞匯量更貼合文本數(shù)據(jù)。從另一角度來(lái)看,F(xiàn)astText在單詞匹配度較低的情況下可以獲得和GloVe基本一致的識(shí)別率,說(shuō)明n-gram算法確實(shí)對(duì)陌生單詞有更好的識(shí)別率,如文本內(nèi)容較為生僻,F(xiàn)astText詞嵌入或可取得更為優(yōu)異的分析結(jié)果。
參考文獻(xiàn):
[1] Régens. How companies can leverage sentiment analysis to improve operations and maximize their workflows[EB/OL].[2021-04-10].https://www.regens.com/en/-/how-companies-can-leverage-sentiment-analysis-to-improve-operations-and-maximize-their-workflows,2021-3-16.
[2] Levy O, Goldberg Y. Neural word embedding as implicit matrix factorization[J].Advances in neural information processing systems,2014,27:2177-2185.
[3] Kumar P S, Yadav R B, Dhavale S V. A comparison of pre-trained word embeddings for sentiment analysis using Deep Learning[C]//International Conference on Innovative Computing and Communications. Springer, Singapore, 2021: 525-537.
[4] Rezaeinia S M,Rahmani R,Ghodsi A,et al.Sentiment analysis based on improved pre-trained word embeddings[J].Expert Systems With Applications,2019,117:139-147.
[5] Malo P,Sinha A,Korhonen P,et al.Good debt or bad debt:Detecting semantic orientations in economic texts[J].Journal of the Association for Information Science and Technology,2014,65(4):782-796.
[6] Géron A. Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow: Concepts, tools, and techniques to build intelligent systems[M]. Cambridge:O'Reilly Media,2019.
[7] Bojanowski P,Grave E,Joulin A,et al.Enriching word vectors with subword information[J].Transactions of the Association for Computational Linguistics,2017,5:135-146.
[8] Pennington J,Socher R,Manning C.Glove:global vectors for word representation[C]//Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP).Doha,Qatar.Stroudsburg,PA,USA:Association for Computational Linguistics,2014:1532-1543.
【通聯(lián)編輯:朱寶貴】