李愛黎,張子帥,林蔭,王秋菊,楊建安,孟煒程,張巖峰
1.東北大學(xué)計算機科學(xué)與工程學(xué)院,遼寧 沈陽 110000;
2.東北大學(xué)外國語學(xué)院,遼寧 沈陽 110000
互聯(lián)網(wǎng)的飛速發(fā)展改變了人們傳統(tǒng)的交流習(xí)慣,人們對網(wǎng)絡(luò)的利用率越來越高。互聯(lián)網(wǎng)上相繼出現(xiàn)了社區(qū)、論壇、微博等形式的社交網(wǎng)絡(luò)平臺,用戶在網(wǎng)上通過這些平臺表達自己對某一事件的看法和態(tài)度,這些信息包含了大量的社會熱點及情感傾向[1]。因此,在大數(shù)據(jù)技術(shù)支撐下,挖掘社交網(wǎng)絡(luò)中用戶的觀點、態(tài)度和情感,并服務(wù)于社會,是一個很有意義的工作。
目前,多數(shù)研究主要對主流社交網(wǎng)絡(luò)平臺的熱門數(shù)據(jù)進行情感分析與監(jiān)測。Zhao J C等人[2]構(gòu)建了一個面向中文微博的情感分析系統(tǒng),對異?;蛲话l(fā)事件進行監(jiān)測。Wang H等人[3]利用推特(Twitter)數(shù)據(jù)構(gòu)建了一個針對2012年美國大選結(jié)果的實時預(yù)測系統(tǒng),通過統(tǒng)計美國民眾對4位候選人的情感傾向來預(yù)測大選結(jié)果。Williams J等人[4]提出了一種預(yù)測算法,針對Twitter上發(fā)生的某一事件,預(yù)測其發(fā)生時間。
然而目前的大多數(shù)研究僅僅是對微博、Twitter等某單一平臺進行輿情數(shù)據(jù)的情感分析,并且多數(shù)是針對中文語料和英文語料的分析,國內(nèi)使用日文語料進行情感分析的研究極少。與此同時,針對海量的數(shù)據(jù),利用人工瀏覽、打標(biāo)簽的方式來獲取用戶情感是一件極其復(fù)雜且困難的事情。
因此,本文提出一種面向中日語料的民眾情感監(jiān)測系統(tǒng),該系統(tǒng)能夠同時分析微博和Twitter等社交平臺的中日文輿情數(shù)據(jù)中包含的情感傾向。當(dāng)某一焦點事件發(fā)生時,自動進行中日兩國民眾的情感對比,供相關(guān)輿情部門監(jiān)測。情感分析算法方面,本文在BERT(bidirectional encoder representations from transformers)模型(以下簡稱BERT)的基礎(chǔ)上提出了一個新的情感分析模型——EmoBERT,利用自擴展的情感詞典改進了BERT的預(yù)訓(xùn)練任務(wù),并提出了情感詞增強的注意力機制,彌補了BERT在預(yù)訓(xùn)練階段情感特征提取不充分的缺陷。實驗證明,相比于BERT,EmoBERT在中文和日文情感分類任務(wù)上都取得了更好的效果。
此外,為了更好地對算法結(jié)果進行存儲和展示,本文采用Flask框架搭建網(wǎng)站,設(shè)計并實現(xiàn)了一個自動化情感監(jiān)測系統(tǒng),使用ECharts庫實現(xiàn)情感分析結(jié)果的可視化展示,可交互的動態(tài)曲線可以讓用戶實時監(jiān)測到中日民眾對某一事件的情感態(tài)度變化。針對情感突變點和情感差值較大的區(qū)間,通過詞頻-逆向文件頻率(term frequency-inverse document frequency,TF-IDF)算法自動生成該區(qū)間的關(guān)鍵詞,同時給出熱度排名前5的博文。經(jīng)驗證,生成的關(guān)鍵詞和給出的博文可以很好地對應(yīng)情感突變點處發(fā)生的事件。
輿情監(jiān)測系統(tǒng)是一個網(wǎng)絡(luò)應(yīng)用系統(tǒng),用于監(jiān)測由熱門事件或突發(fā)事件引發(fā)的有影響力且傾向性強的觀點和言論[5]。同時,情感分析技術(shù)也被廣泛應(yīng)用于輿情監(jiān)測的研究,成為當(dāng)前輿情監(jiān)測研究中的主流方法之一。進入21世紀(jì)后,情感分析在自然語言處理的各個領(lǐng)域都被廣泛研究,如數(shù)據(jù)挖掘、文本挖掘、輿情監(jiān)測和信息檢索等。情感分析最早是在2003年由Yi J等人[6]提出的,對文本中包含的情感進行計算,進而分析用戶的情感傾向和觀點。
對文本數(shù)據(jù)進行情感分析的方法主要有3種,分別是基于情感詞典的情感分析方法、基于機器學(xué)習(xí)的情感分析方法以及基于深度學(xué)習(xí)的情感分析方法。3種情感分析方法優(yōu)點與不足見表1。
表1 情感分析方法優(yōu)點與不足
基于情感詞典的情感分析方法是在標(biāo)注極性或極性分?jǐn)?shù)單詞的基礎(chǔ)上,比對情感文本中包含的極性情感詞,然后采用簡單統(tǒng)計的方法或權(quán)值算法進行情感分類。此方法不需要訓(xùn)練數(shù)據(jù),因此被廣泛地應(yīng)用于傳統(tǒng)的文本情感分析。20世紀(jì)90年代末期,國內(nèi)外開始了有關(guān)文本情感分析的研究。Riloff E M等人[7]基于語料數(shù)據(jù)構(gòu)建了語義詞典。熊德蘭等人[8]基于知網(wǎng)(HowNet)常識知識庫研究了句子的褒貶性。潘明慧等人[9]提出了基于詞典的方法識別微博表達的6種情緒。
基于機器學(xué)習(xí)的情感分析方法也被廣泛應(yīng)用于情感分析領(lǐng)域。該方法首先建立一個訓(xùn)練集,并根據(jù)用戶情感標(biāo)記數(shù)據(jù);然后從訓(xùn)練集中提取特征,構(gòu)建分類模型,進而預(yù)測沒有標(biāo)簽的數(shù)據(jù);最后通過分類器對未標(biāo)記的數(shù)據(jù)進行情感傾向判定。在國外,Pang B等人[10]使用了3種機器學(xué)習(xí)的方法進行對比試驗,分別是樸素貝葉斯、最大熵和支持向量機,對電影評論進行了情感極性分類,將情感極性分為積極和消極,并比較3種方法的實驗結(jié)果,其中支持向量機方法的分類效果最好。國內(nèi)也有很多學(xué)者比較不同的分類算法,楊艷霞[11]使用兩種機器學(xué)習(xí)方法對微博數(shù)據(jù)集進行了情感分析,分別是貝葉斯和支持向量機,同時比較了兩種方法在分類性能上的優(yōu)劣,其中貝葉斯方法的準(zhǔn)確率更高。
2011年,Collobert R等人[12]在解決詞性標(biāo)注等問題時最早將深度學(xué)習(xí)應(yīng)用到了自然語言處理領(lǐng)域。深度學(xué)習(xí)最大的特點是可以自動學(xué)習(xí)批量數(shù)據(jù),從而挖掘數(shù)據(jù)中的潛在特征,并通過注意力機制實現(xiàn)對目標(biāo)內(nèi)容的增強關(guān)注,在訓(xùn)練過程中進行參數(shù)的調(diào)整[13]。Schuller B等人[14]引入了一種基于長短期記憶(long shortterm memory,LSTM)循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型的新方法,不需要進行任何特殊的預(yù)處理或特征選擇。宋婷等人[15]為了提取方面級的情感,提出了分層的LSTM模型。徐志棟等人[16]提出一種基于膠囊網(wǎng)絡(luò)的方面級情感分類模型——SCACaps,解決了方面級情感分析中多重情感造成的特征重疊問題。張寶華等人[17]提出了一種多輸入模型,該模型結(jié)合了多通道卷積神經(jīng)網(wǎng)絡(luò)(multi-channel convolutional neural network,MCNN)、LSTM和全連接神經(jīng)網(wǎng)絡(luò)。而深度學(xué)習(xí)中的遷移學(xué)習(xí)(transfer learning)也常常被應(yīng)用于輿情分析領(lǐng)域,如以美團外賣的評論數(shù)據(jù)為原始數(shù)據(jù)集,抽取其特征,建立美團外賣評論的情感分析模型,再將其應(yīng)用到相應(yīng)的目標(biāo)域(如電影評論的情感分析),以此實現(xiàn)模型的大規(guī)模遷移?;诖?,遷移學(xué)習(xí)逐漸成為輿情分析領(lǐng)域的研究熱點。Radford A等人[18]提出了名為OpenAI GPT的預(yù)訓(xùn)練模型,該模型可以經(jīng)過少量的微調(diào)后用于各種下游任務(wù)。近年來,BERT作為一個強大的預(yù)訓(xùn)練模型,首先在大規(guī)模的語料庫上進行預(yù)訓(xùn)練,獲取通用的語言模型,然后進行一系列的微調(diào)以吸收下游具體任務(wù)的相關(guān)知識[19-20]。但是在情感分類任務(wù)上,BERT還有一定的提升空間,這是因為BERT在預(yù)訓(xùn)練階段并沒有考慮任何情感信息。為了解決這個問題,本文將融合情感詞典和BERT,將情感特征引入預(yù)訓(xùn)練過程。
利用Python語言進行編程,使用微博應(yīng)用程序接口(application programming interface,API)、日本Twitter API、網(wǎng)絡(luò)爬蟲等技術(shù)完成輿情數(shù)據(jù)的獲取。
(1)中文輿情數(shù)據(jù)
在中國,新浪微博(以下簡稱微博)具有用戶多、消息數(shù)量大、更新快等特點,成為人們獲取信息、發(fā)表輿論的主要平臺之一,越來越多的民眾習(xí)慣在微博這一社交網(wǎng)絡(luò)平臺上交流觀點、分享信息。這些信息包含了大量的社會熱點及情感,能很好地反映民眾對話題的關(guān)注和態(tài)度。本研究以“日本”為關(guān)鍵詞,通過網(wǎng)絡(luò)爬蟲技術(shù),爬取了2013—2021年的輿情數(shù)據(jù)。數(shù)據(jù)來自科技、體育、娛樂、經(jīng)濟、疫情5個類別,數(shù)據(jù)主要包括微博標(biāo)題、統(tǒng)一資源定位符(uniform resource locator,URL)、時間、內(nèi)容、點贊數(shù)、評論數(shù)及轉(zhuǎn)發(fā)數(shù)等。
(2)日文輿情數(shù)據(jù)
在國外,Twitter無疑是擁有巨大訪問量的社交網(wǎng)絡(luò)平臺之一。在日本,Twitter作為互聯(lián)網(wǎng)Web2.0時代的最新應(yīng)用,逐漸影響和改變世界的交流和溝通方式。因此,Twitter數(shù)據(jù)十分適合進行國外輿情分析。本研究以“中國”為關(guān)鍵詞,通過網(wǎng)絡(luò)爬蟲技術(shù),同樣爬取了2013—2021年的輿情數(shù)據(jù)。數(shù)據(jù)來自科技、體育、娛樂、經(jīng)濟、疫情5個類別,數(shù)據(jù)主要包括推文標(biāo)題、URL、時間、內(nèi)容、點贊數(shù)、評論數(shù)及轉(zhuǎn)發(fā)數(shù)等。
微博和Twitter數(shù)據(jù)文本含有很多標(biāo)簽、注釋等特殊符號,使用Python自然語言處理工具包NLTK和正則表達式等工具對數(shù)據(jù)進行清洗。由于情感分析的質(zhì)量依賴情感詞典,因此必須對清洗后的數(shù)據(jù)做分詞處理,同時移除停用詞。本文以jieba為中文分詞工具,以MeCab為日文分詞工具。主要處理過程包括中文分詞、日文分詞、提取詞元(token)、詞根化(stemming)、移除停用詞等。
其中微博的中文數(shù)據(jù)集采用“百度停用詞表”進行過濾。由于現(xiàn)有的日文停用詞表中停用詞較少且不夠全面,因此,筆者在現(xiàn)有的停用詞表基礎(chǔ)上擴充了新的日文停用詞表,并將其用于Twitter日文數(shù)據(jù)集。
微博和Twitter中的文本具有領(lǐng)域廣、更新速度快等特點,而通用情感詞典存在領(lǐng)域差異、知識覆蓋率較低、情感詞權(quán)值過于固定等問題,因此,本文利用自擴展的中日文情感詞典提出一種情感極性量化算法來計算文本的情感強度值,通過計算情感詞權(quán)值來量化該文本的情感強度。具體方案如下。
首先,在通用情感詞典的基礎(chǔ)上,構(gòu)建適合本研究領(lǐng)域的中日文情感詞典,并對預(yù)處理后的數(shù)據(jù)進行情感傾向性分析;然后,分別構(gòu)建中文和日文的程度詞表和否定詞表,之后對特殊標(biāo)點符號進行量化加權(quán);最后,考慮點贊數(shù),對情感分值進行加權(quán)計算,得到最終的情感分值,并進行情感分類。情感分析框架如圖1所示。
圖1 情感分析框架
情感傾向是用戶對某一事物主觀的內(nèi)心喜惡及主觀評價的一種傾向。不同的情感詞或情感語氣可以表達不同程度的情感傾向。通常給每個情感詞賦予不同的權(quán)值。例如,“楽しい”和“嬉しい”,都表達開心,但是在表達情感程度上,“嬉しい”要比“楽しい”更強烈。中文的“討厭”與“厭惡”都表達消極情感,但是“厭惡”的情感程度會更強烈。因此,情感詞典能否覆蓋全面在一定程度上影響著情感分類結(jié)果,情感詞典的構(gòu)建是情感分析研究的基礎(chǔ),本文盡可能構(gòu)建一個足夠大、覆蓋面足夠廣的情感詞典,并將其應(yīng)用于中日輿情研究領(lǐng)域。本文構(gòu)建情感詞典組成如圖2所示
圖2 情感詞典組成
● 基礎(chǔ)情感詞典?;A(chǔ)情感詞典總結(jié)并整理當(dāng)前已有的情感詞典資源。對于中文情感詞典,本文將HowNet情感詞典作為中文基礎(chǔ)情感詞典,其組成見表2。對于日文情感詞典,本文集成了多個開源的日文情感詞典用于Twitter數(shù)據(jù)集。
表2 基礎(chǔ)情感詞典組成
● 網(wǎng)絡(luò)情感詞典。隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)用語應(yīng)運而生。網(wǎng)絡(luò)用語的形式和傳統(tǒng)詞語有著很大區(qū)別,它們往往具有強烈的感情色彩。這些詞語是不包含在基礎(chǔ)情感詞典當(dāng)中的,但在判別情感傾向中起著重要的作用。
● 領(lǐng)域情感詞典。從微博和Twitter獲取的中日輿情數(shù)據(jù)集中選取適合本研究領(lǐng)域、情感鮮明的詞,并將其作為基準(zhǔn)詞,通過基于擴展的情感傾向點間互信息(semantic orientation pointwise mutual information,SO-PMI)算法計算候選詞與基準(zhǔn)詞的相似度,以此判斷候選詞的情感傾向,將領(lǐng)域情感詞自動加入基礎(chǔ)情感詞典,構(gòu)建適用于中日輿情領(lǐng)域的中日文情感詞典。
情感詞典中積極詞語分值為1,消極詞語分值為-1。假設(shè)一個句子中包含pos_num個積極詞語和neg_num個消極詞語,那么該句子的情感分值score計算過程如下:
筆者發(fā)現(xiàn),在網(wǎng)民發(fā)布的微博和推文中,情感詞語前大有含副詞修飾,如在“非常喜歡”“很喜歡”中,“非?!毙揎棥跋矚g”,“很”也修飾“喜歡”,但是,“非常”所表達的情感強度顯然要多于“很”。為了更加準(zhǔn)確地計算文本的情感傾向,本文構(gòu)建了中文程度詞表,將程度副詞分為5個等級(極強級、中強級、中級、中弱級、微弱級),并將程度副詞的強度取值范圍限定在[0,3]。人工標(biāo)注這些程度副詞語氣的強弱,并用一個二元組level(adv, intensity)來表示,其中adv表示詞語名稱,intensity表示該詞的語氣強度,一個副詞的語氣強度取值范圍為[0,3],越接近0說明該詞表達的情感強度越弱,越接近3說明該詞表達的情感強度越強烈。例如,“出頭”的強度設(shè)置為0.5,“更”的強度設(shè)置為2,“極其”的強度設(shè)置為3。同樣,本文也構(gòu)建了日文程度詞表,并人工對這些程度詞的語氣強度進行了標(biāo)注,與中文的構(gòu)建方法相同,此處不再贅述。
如果一個積極詞語前后出現(xiàn)程度詞,那么:
如果一個消極詞語前后出現(xiàn)程度詞,那么:
其中,inte為程度詞的強度值。
在微博和Twitter文本中,否定詞也是經(jīng)常出現(xiàn)的。例如“不公平”“拒絕接受”,其中“不”用來否定“公平”,“拒絕”用來否定“接受”。為了使文本情感傾向性的計算更加準(zhǔn)確,本文分別構(gòu)建了中文否定詞表和日文否定詞表。對于否定詞表,不需要對其進行標(biāo)注,用一個列表list來表示,當(dāng)一個積極詞語前出現(xiàn)一個否定詞,則該詞語的情感分值變?yōu)樵瓉淼南喾磾?shù)。如果是雙重否定,則該詞語的情感分值不變。消極詞語同理。
除此之外,本文認(rèn)為帶有“!”的感嘆句往往比陳述句的語氣更強烈。因此,本文定義了感嘆句的加權(quán)計算式:
如果一句話是感嘆句,那么對該句的情感分值進行加權(quán),其中n為感嘆號的數(shù)量。
對于微博和Twitter這類熱門的社交網(wǎng)絡(luò)平臺,筆者認(rèn)為,一篇微博或推文的點贊數(shù)能很好地說明其他網(wǎng)民對該觀點的支持度,即點贊數(shù)越多的文本,應(yīng)該被賦予更高的權(quán)重。因此,本文將點贊數(shù)映射到[0,1],對句子的情感分?jǐn)?shù)進行加權(quán)計算,以得到更準(zhǔn)確的分析結(jié)果。
TF-IDF算法是一種常被用來計算一個字或詞語對于一篇文檔的重要程度的統(tǒng)計方法。如果某個詞語在一篇文章中頻繁地出現(xiàn),但在其他文章中很少出現(xiàn),那么就認(rèn)為該詞或者短語對于該文章具有一定的代表性,適合用來分類。計算式如下:
假設(shè)一篇微博共有100個詞語,其中“會議”出現(xiàn)了5次,那么“會議”一詞在該微博中的詞頻TF就是5/100=0.05。而計算逆文檔頻率IDF的方法是測定有多少篇微博出現(xiàn)過“會議”一詞,加1后除數(shù)據(jù)集中的總微博數(shù),最后求對數(shù)。因此,如果“會議”一詞在100條微博中出現(xiàn)過,而文件總數(shù)是1 000 000份的話,那么,其逆文檔頻率IDF就是,約等于4,最后的TF-IDF值約為0.2。
一般來說,一篇文章中某個字或詞語的TF-IDF值越大,這個字或詞語對于這篇文章越重要,因此通過計算文章中每個字或詞語的TF-IDF值,按大小排序,排在最前面的幾個字或詞語,就是可以代表該文章的關(guān)鍵詞。
基于前面的情感分析方法可以得到每個主題的情感變化情況。接下來,通過TF-IDF算法自動生成各個時間區(qū)間內(nèi)詞頻排名前10的關(guān)鍵詞,關(guān)鍵詞可以體現(xiàn)出情感變化的原因及引發(fā)情感突變的事件。
本文以BERT預(yù)訓(xùn)練模型為基礎(chǔ),利用自采集的中日輿情數(shù)據(jù)集,提出一種結(jié)合中日文情感詞典的情感分析模型EmoBERT。
BERT是一種基于雙向Transformer的大規(guī)模預(yù)訓(xùn)練語言模型,其利用了Transformer的編碼層,并在此基礎(chǔ)上加入掩碼機制,能夠自動進行預(yù)測訓(xùn)練?!半p向”是指它在處理一個詞時,可以考慮到該詞前后的單詞的信息,進而得到上下文的語義。本質(zhì)上是在大規(guī)模數(shù)據(jù)集的基礎(chǔ)上,使用自監(jiān)督學(xué)習(xí)方法對單詞學(xué)習(xí)進行模型訓(xùn)練[21]。
BERT結(jié)構(gòu)如圖3所示,可大致分為輸入層、Transformer層以及輸出層。其中Ei表示BERT輸入的編碼向量,Ti表示BERT輸出的編碼向量,Trm表示Tranformer的編碼器結(jié)構(gòu)。
圖3 BERT結(jié)構(gòu)
BERT輸入層的編碼向量包含3種嵌入特征,分別是詞嵌入、段嵌入和位置嵌入,如圖4所示。為了使BERT適應(yīng)下游的任務(wù),在輸入時,為每個句子附加[CLS]和[SEP],這是兩個特殊符號:[CLS]用于下游的分類任務(wù),最終輸出時可以用來表示整個句子;[SEP]用來分割兩個句子,如[CLS]+句子A+[SEP]+句子B+[SEP]。
● 詞嵌入。詞嵌入從詞匯表學(xué)習(xí)得到每個特定詞的嵌入特征,詞嵌入層會將其轉(zhuǎn)換成768維的向量,如圖4所示的句子會被轉(zhuǎn)換成一個(10, 768)的矩陣。
圖4 BERT輸入層編碼向量
● 段嵌入。段嵌入被用來區(qū)別兩種句子,EA表示第一句話,EB表示第二句話。文本中的多個句子被拼接在一起后送入BERT,BERT通過段嵌入?yún)^(qū)分每個句子。
● 位置嵌入。位置嵌入指將單詞的位置信息編碼成特征向量的形式,將單詞位置關(guān)系引入BERT,BERT通過學(xué)習(xí)得到位置向量,實際上,位置嵌入是一個大小為(512,768)的查找表,其中第i行是指一個句子中第i個位置上的單詞的向量。
將3種嵌入向量簡單相加,得到模型的輸入向量,同時傳遞給BERT的編碼層作為輸入表示。TE為詞嵌入向量,SE為段嵌入向量,PE為位置嵌入向量。
然而,盡管輸入層中嵌入了詞向量、段向量和位置向量,能夠獲取一定的句法和語法信息,可以在Transformer層進行掩碼預(yù)測,但是在面對情感分類任務(wù)時,由于缺乏情感特征,預(yù)測效果并不如其他的分類任務(wù)。這使在情感分析任務(wù)上的預(yù)測效果還有待優(yōu)化和提升,尤其是在一些情感詞顯著的樣本中,情感詞的特征無法被充分提取,因而無法發(fā)揮價值。
表3展示了BERT對某兩個樣本預(yù)測時的結(jié)果,其中第一個文本中出現(xiàn)了“繁雜混亂”,第二個文本中出現(xiàn)了“危害”,這兩個詞都是具有明顯情感傾向的情感詞,但BERT在預(yù)測時反而給出了相反的結(jié)果,這說明BERT的多頭自注意力(multi-head attention)機制并沒有給予情感詞更多的關(guān)注,導(dǎo)致包含一個乃至多個情感詞的文本無法利用其具備情感標(biāo)簽的優(yōu)勢。這使情感任務(wù)的預(yù)測準(zhǔn)確率并不理想。
表3 部分預(yù)測結(jié)果
事實上,當(dāng)下游任務(wù)為情感任務(wù)時,在預(yù)訓(xùn)練階段模型的注意力機制應(yīng)該把更多的注意力放在情感詞上,使模型可以更好地提取整個文本的情感特征。因此,本文提出一種情感詞增強的注意力算法。
Transformer層利用了自注意力(self-attention)機制來幫助理解上下文語義。實際上,自注意力機制是一種分配機制,由于文本中的每個詞都與句子中的其他詞進行聯(lián)系,因此,注意力機制會根據(jù)對象的重要程度以及與句子中其他詞的關(guān)聯(lián)性,重新分配權(quán)重。
基于自注意力的這一性質(zhì),本文利用自擴展的中日文情感詞典改進了注意力的計算規(guī)則,提出了一種更注重情感詞增強的注意力算法,以突出對象的情感特征。
Transformer的編碼器結(jié)構(gòu)如圖5所示,Transformer由兩個子層組成,分別是多頭自注意力機制和前饋神經(jīng)網(wǎng)絡(luò),每個子層后連接了一個規(guī)范化層及殘差單元對輸出進行控制,使向量的標(biāo)準(zhǔn)差和均值均為一個固定的數(shù)值。輸入層的數(shù)據(jù)和多頭自注意力層輸出的結(jié)果進行殘差相加后進行標(biāo)準(zhǔn)化,經(jīng)過反饋層之后,再進行上述環(huán)節(jié),最后輸出結(jié)果。其中,多頭自注意力機制是Transformer層的核心,輸入層的3個箭頭分別對應(yīng)多頭自注意力的3個輸入向量,分別是Q、K、V,這3個向量是由輸入層的詞嵌入X和一個矩陣相乘得到的,注意力的計算式如下:
圖5 Transformer編碼器結(jié)構(gòu)
其中,dk表示K的維度。
根據(jù)式(13)可以看出,一個詞的注意力在一定程度上會受到Q、K、V這3個向量大小的影響。而Q、K、V的值是通過原始的詞嵌入得到的,它相當(dāng)于底層的特征信息。因此,在情感分類任務(wù)中,為了情感詞能得到更大的關(guān)注,本文提出一種情感詞增強的注意力算法,希望通過以下兩個方面增強情感詞的注意力。
(1)增強情感詞的詞嵌入X,進而增大Q、K、V的值,增強該詞的注意力,從而提升預(yù)測的準(zhǔn)確率。將在第3節(jié)構(gòu)建的目標(biāo)領(lǐng)域的情感詞典作為輸入層的情感嵌入向量S'E,向模型中加入外部情感信息,將4種嵌入特征相加后,得到模型的輸入向量如下:
(2)將情感詞典中情感詞的分值賦給模型作為額外的權(quán)重。一般來說,情感詞表達的強度越強烈,越能代表其所在句子和文本的情感傾向,越應(yīng)該得到更大的注意力權(quán)重。例如,對于“這家餐廳的服務(wù)太差勁了,菜再好吃我也不來了”這一樣本,由于“差勁”的情感強度較強,因此很大概率是整個文本的情感傾向,應(yīng)該給予更多的關(guān)注。而情感強度相對平和的情感詞,雖然本身具備情感傾向,但是相比于情感強度大的詞,上下文轉(zhuǎn)折的可能性會更大。例如,對于“這家餐廳的服務(wù)不怎么樣,考慮到菜品做得太美味了,下次還來”這一樣本,應(yīng)該把注意力更多放在“美味”上,而非“不怎么樣”上。因此,本文重新定義了針對情感任務(wù)的自注意力算法,計算式如下:
其中,λ為對情感詞的分值歸一化處理后的(0,1]之間的數(shù)值,給BERT的注意力機制量化加權(quán)。
本文利用自擴展的情感詞典提出了一個新的情感分析模型——EmoBERT,模型由3個部分構(gòu)成,如圖6所示。
圖6 EmoBERT模型結(jié)構(gòu)
由于本文改進了注意力機制,因此,在BERT基礎(chǔ)上,進行了進一步的預(yù)訓(xùn)練,預(yù)訓(xùn)練任務(wù)如下。
(1)輸入層。輸入層中每個詞額外加入了情感向量,如圖7中情感嵌入所示,情感向量與其他3個嵌入向量相加,組成了具備情感特征的詞嵌入。
圖7 EmoBERT輸入特征向量
(2)Transformer層。在這一層,根據(jù)本文提出的情感詞增強的注意力機制,可以求出每個子空間的注意力分值,進而計算出多個子空間的輸出結(jié)果,計算式如下:
其中,b表示誤差項。
(3)輸出層。輸入層的詞嵌入X和Transformer層輸出的結(jié)果殘差相加,再進行標(biāo)準(zhǔn)化,經(jīng)過反饋層之后,重復(fù)上述過程,最后輸出結(jié)果。子層最后得到的輸出結(jié)果如式(18)所示:
由于BERT是在通用數(shù)據(jù)集上訓(xùn)練的,在本特定領(lǐng)域的任務(wù)上,原始BERT無法完全抽取出詞元的內(nèi)在含義。因此,需要用本領(lǐng)域語料對其進行微調(diào)。此外,在微調(diào)前使用目標(biāo)領(lǐng)域數(shù)據(jù)集的數(shù)據(jù)對模型進一步預(yù)訓(xùn)練,相當(dāng)于在預(yù)訓(xùn)練階段實現(xiàn)將模型從通用領(lǐng)域向特定領(lǐng)域提前遷移,然后再執(zhí)行目標(biāo)領(lǐng)域的任務(wù)[22],如圖8所示。
圖8 模型流程
為了驗證本文提出的EmoBERT模型在情感分類任務(wù)上的表現(xiàn),基于自采集的微博和Twitter數(shù)據(jù)集進行試驗。
本文將自采集的微博數(shù)據(jù)集和Twitter數(shù)據(jù)集作為中日輿情研究的數(shù)據(jù)集,類別包含娛樂、體育、經(jīng)濟、科技和疫情,具體見表4。
表4 數(shù)據(jù)集
由于自采集的微博數(shù)據(jù)集和Twitter數(shù)據(jù)集數(shù)據(jù)量龐大,并且不包含情感類別標(biāo)簽,因此分別從每個類別提取1 000條數(shù)據(jù),并人工標(biāo)注其情感極性。在加載好實驗所需要的數(shù)據(jù)集之后,分別按照8:2的比例劃分這兩個數(shù)據(jù)集的訓(xùn)練集和測試集。表5展示了各個數(shù)據(jù)集的訓(xùn)練集和測試集包含的情感極性信息。
表5 數(shù)據(jù)集情感極性信息
預(yù)訓(xùn)練階段,批量大?。╞atch size)設(shè)置為256,學(xué)習(xí)率(learning rate)為5×10-5,持續(xù)訓(xùn)練1 000 000步。模型中所有丟失率(dropout)都為0.1,參數(shù)Adamβ1和Adamβ2的值分別為0.9和0.999,L2權(quán)重衰減為0.01。
在微調(diào)過程中,對批量大小、學(xué)習(xí)率和訓(xùn)練周期數(shù)量等進行一定調(diào)整。其中批量大小的值是每次迭代(epoch)訓(xùn)練的句子數(shù)。如果設(shè)置過小,會使訓(xùn)練時間延長;如果設(shè)置過大,損失函數(shù)曲線比較平坦時,將無法得到最優(yōu)模型。不同的下游任務(wù)對應(yīng)不同的最佳超參數(shù)值,為了讓模型得到最佳分類效果,本文經(jīng)多組實驗驗證最優(yōu)的參數(shù)值,具體見表6。
表6 最優(yōu)參數(shù)值
為了評估本文提出的EmoBERT模型在情感二分類任務(wù)上的分類效果,針對自采集的中日文輿情數(shù)據(jù)集分別進行了實驗,同時與BERT及領(lǐng)域遷移后的EmoBERT進行對比,實驗過程中的準(zhǔn)確率變化如圖9和圖10所示。其中,EmoBERT-C是中文模型,EmoBERT-J是日文模型,BERT*為在目標(biāo)領(lǐng)域數(shù)據(jù)集上預(yù)訓(xùn)練之后的模型。
從圖9和圖10中可以清晰地看出準(zhǔn)確率的對比情況,與原始BERT相比,EmoBERT-C和EmoBERT-J都有一定的提升。其中EmoBERT-C相比于原始BERT模型,準(zhǔn)確率從89.68%提升到92.15%。EmoBERT-J相比于原始BERT模型,準(zhǔn)確率從74.73%提升到78.26%。
圖9 EmoBERT-C及原始模型準(zhǔn)確率
圖10 EmoBERT-J及原始模型準(zhǔn)確率
此外,針對中日文輿情數(shù)據(jù)集中的積極文本和消極文本也分別進行了實驗,同時與BERT進行了對比,實驗結(jié)果見表7。從表7中可以看出,本文提出的EmoBERT模型在積極文本和消極文本中分類的效果均優(yōu)于BERT,進一步驗證了模型的有效性。表7中BERT-C表示中文模型,BERT-J表示日文模型。
表7 針對積極文本和消極文本對比實驗結(jié)果
新冠肺炎疫情(以下簡稱疫情)帶來的影響是多元復(fù)雜的。病毒的攻擊具有無差別性、跨國性和極大的不確定性,疫情給全球的經(jīng)濟和金融市場造成了劇烈的沖擊,并且在很大程度上催化了國際關(guān)系的演變。因此,利用該數(shù)據(jù)集分析相關(guān)的中日輿情是很有意義的。
在實驗中,本文以“新冠肺炎”為關(guān)鍵詞,采集了2020年1月至2020年9月的輿情數(shù)據(jù)。使用本文提出的模型對數(shù)據(jù)進行情感分析,結(jié)果如圖11和圖12所示。圖11中橫坐標(biāo)為時間,左側(cè)縱坐標(biāo)為發(fā)文量,右側(cè)縱坐標(biāo)為情感分值。從圖11和圖12中可以看到,兩國民眾的情感態(tài)度普遍是積極的。其中2月和3月兩平臺發(fā)文量非常大,兩平臺對應(yīng)時間的關(guān)鍵詞見表8和表9。通過分析可知,2月和3月是春節(jié)期間,人口流動量巨大且新冠疫苗還未研制成功,正是疫情的暴發(fā)期,也是民眾討論最多的時期。
表8 微博“新冠肺炎”關(guān)鍵詞
表9 Twitter“新冠肺炎”關(guān)鍵詞
圖11 中日民眾情感變化
圖12 中日民眾情感極性分布
整體分析中日民眾情感檢測系統(tǒng)需求,將該系統(tǒng)功能分成三大模塊,分別為:用戶交互模塊、情感分析模塊以及可視化模塊。
(1)實時采集數(shù)據(jù)并分析
在系統(tǒng)功能界面提供用戶輸入數(shù)據(jù)采集條件的接口,為了實時監(jiān)測社交平臺的數(shù)據(jù),本系統(tǒng)服務(wù)端連接微博和Twitter等社交平臺的API,以響應(yīng)用戶輸入的關(guān)鍵詞、詳細(xì)程度、起始時間、結(jié)束時間等條件,從平臺實時采集數(shù)據(jù)信息,并以數(shù)據(jù)流的方式將信息傳輸?shù)椒?wù)器端,解析獲得合法可分析的數(shù)據(jù)集。
(2)接收用戶上傳的數(shù)據(jù)并分析
為了滿足相關(guān)研究領(lǐng)域的專業(yè)用戶,本系統(tǒng)支持用戶自行上傳數(shù)據(jù)集。考慮服務(wù)端情感分析算法的計算方式,數(shù)據(jù)集應(yīng)包含每條社交平臺微博/推文的具體內(nèi)容、點贊數(shù)(喜歡數(shù))以及發(fā)布時間,所上傳的數(shù)據(jù)集最終以表單形式將數(shù)據(jù)集傳給服務(wù)器端。
服務(wù)器端作為自然語言處理的主要執(zhí)行端,以Python為主要語言,通過封裝好的情感分析算法,依賴系統(tǒng)預(yù)先保存的中日文情感詞典、程度詞表、否定詞表等情感資源,分析用戶提交或?qū)崟r采集的數(shù)據(jù)集,本系統(tǒng)所使用算法將從3個方面進行情感分析。第一,根據(jù)用戶指定的關(guān)鍵詞和數(shù)據(jù)集計算中日民眾的情感分值隨時間的變化情況,并實現(xiàn)實時監(jiān)測;第二,對于每個情感突變點都能分析提取該時間區(qū)間熱度排名前10的微博和推文,方便分析中日民眾情感分歧較大的起因事件;第三,根據(jù)算法分析結(jié)果,給出中日民眾對于該主題的情感極性分布情況。三者最終通過Jinja2模板引擎中的模版函數(shù)動態(tài)渲染前端HTML模版文件中的JavaScript腳本變量,再通過JSON解析生成可用于展示的格式,最終傳遞到展示界面,動態(tài)生成用戶需要的分析結(jié)果。
本系統(tǒng)前端展示界面基于CSS、HTML、JavaScript腳本完成開發(fā)。展示模塊包括3個部分,均使用可交互的動態(tài)曲線,其中第一部分是微博和Twitter單獨的可交互數(shù)據(jù)展示,包括以日/月為單位的情感分值隨時間變化曲線圖,以日/月為單位的情感極性隨時間變化曲線圖,熱度前100文章情感散點圖,內(nèi)容來源年份分布扇形圖以及詞云。第二部分是微博和Twitter的情感隨時間變化對比圖,每一數(shù)值點還支持點擊查看影響該點的熱度排名前5的微博和推文。第三部分是根據(jù)用戶輸入對微博某一特定關(guān)鍵詞進行實時檢測,顯示實時變化的情感分值隨時間變化曲線圖。
系統(tǒng)主體基于Web的C/S架構(gòu)設(shè)計,以Flask為開發(fā)框架,其負(fù)責(zé)將HTML文件、JavaScript腳本與后端Python代碼進行連接,同時Jinja2模板引擎和Werkaeug WSGI套件負(fù)責(zé)前后端的數(shù)據(jù)傳遞。本系統(tǒng)從規(guī)模上來說較為輕量,同時Flask框架高度的靈活性也降低了后續(xù)系統(tǒng)功能拓展和維護的成本。
客戶端基于Web技術(shù)設(shè)計,一方面負(fù)責(zé)處理業(yè)務(wù)邏輯,另一方面負(fù)責(zé)返回響應(yīng)內(nèi)容。業(yè)務(wù)邏輯方面,支持用戶在頁面中輸入主題關(guān)鍵詞、詳細(xì)程度、起始時間、結(jié)束時間等條件實時采集數(shù)據(jù)集,或接收用戶自行上傳的本地數(shù)據(jù)集文件,將主題關(guān)鍵詞字符串或合法數(shù)據(jù)集文件通過表單傳遞給服務(wù)器端進行解析處理。返回響應(yīng)內(nèi)容方面,在展示結(jié)果頁面通過Jinja2模板引擎渲染模版,與服務(wù)端進行數(shù)據(jù)傳遞,接收服務(wù)器端傳來的計算結(jié)果,客戶端展示結(jié)果頁面使用可視化工具包Chart.js,生成可交互式情感分值隨時間變化曲線圖和情感極性分布圖等,并將分析的結(jié)果展示給用戶。
服務(wù)器端以Flask框架為主體進行開發(fā),通過不同URL來區(qū)分響應(yīng)前端視圖函數(shù)的不同表單請求,完成業(yè)務(wù)邏輯的具體功能實現(xiàn)。本系統(tǒng)主要包含3個不同URL綁定的功能函數(shù)。monitor()負(fù)責(zé)調(diào)用社交平臺API,即時采集流式數(shù)據(jù),并保存到服務(wù)端。等待系統(tǒng)進行進一步分析處理。uplouder()負(fù)責(zé)將用戶本地數(shù)據(jù)集上傳到服務(wù)器端。此外為了防止數(shù)據(jù)集包含內(nèi)容缺失或不兼容本算法的運算所需條件,在用戶上傳數(shù)據(jù)集后,首先進行合法性檢測,要求數(shù)據(jù)集具有完整性,這保證了系統(tǒng)的穩(wěn)定性。analyse()負(fù)責(zé)調(diào)用本地情感詞典、程度詞表,并通過本地情感分析算法計算分析已經(jīng)上傳到服務(wù)器端的數(shù)據(jù),計算結(jié)果通過Jinja2模版引擎渲染動態(tài)前端系統(tǒng)客戶端的HTML模板文件中的內(nèi)嵌JavaScript變量,進一步進行JSON解析,并使用eval()進行合法性檢測。同時系統(tǒng)使用Flask-Caching擴展的緩存技術(shù)提高程序運行速度。
為了更清晰地展示系統(tǒng)的有效性,本文基于自采集的2018年以“RNG”為主題的中日文數(shù)據(jù)集對系統(tǒng)的功能進行演示。RNG是當(dāng)下深受國內(nèi)外游戲愛好者喜愛的電競戰(zhàn)隊。傳入數(shù)據(jù)集后,后臺算法開始分析,并將結(jié)果反饋給前端可視化界面,圖13和圖14分別為微博和Twitter單一平臺對RNG主題的分析結(jié)果,包括情感極性分布、年份分布、熱度情況分布、詞云、每日情感變化圖、每月情感變化圖、每日發(fā)文量變化圖以及每月發(fā)文量變化圖等,圖上的點均可以點擊,用于和用戶交互,可以展示當(dāng)前點的詳細(xì)信息,如情感分值、積極人數(shù)、中立人數(shù)、消極人數(shù)等。
從圖13可以看出,中國民眾對于“RNG”戰(zhàn)隊的討論度很高,數(shù)據(jù)量達到了38 272條。通過分析情感變化曲線可以看出,共有5個情感波動較為明顯的時間段。在4月28日、5月20日、8月29日以及9月14日這4日前后,中國民眾對該主題的情感非常積極,同時通過柱形圖也可以看出對應(yīng)時間的發(fā)文量很高,通過點擊曲線上對應(yīng)的點可以看到當(dāng)天的熱門微博。
圖13 微博可視化展示界面
從圖14可以看出,日本民眾對“RNG”主題的討論較少,一年中共爬取到7 437條相關(guān)數(shù)據(jù)。同時,通過分析情感變化曲線可以看出,日本民眾對該主題的態(tài)度普遍比較積極且比較平穩(wěn)。圖15展示了微博和Twitter兩平臺中日雙語料的對比分析結(jié)果,針對中日民眾情感分歧較大的點,同樣可以通過點擊對應(yīng)的點查看當(dāng)日兩平臺關(guān)于該主題熱度最高的博文,便于用戶進一步了解情感分歧的原因事件。
圖14 Twitter可視化展示界面
圖15 兩平臺對比結(jié)果可視化展示界面
此外,本系統(tǒng)還提供話題情感的實時監(jiān)測功能,針對用戶輸入的關(guān)鍵詞進行實時監(jiān)測、實時分析,并實時呈現(xiàn)給用戶,如圖16所示。
圖16 話題情感實時監(jiān)測界面
微博、Twitter等社交網(wǎng)絡(luò)平臺的流行使其中蘊含了豐富的情感信息,通過對這些平臺上用戶發(fā)布的內(nèi)容進行情感分析,可以挖掘其中的社會價值。本文采用了基于自擴展的情感詞典結(jié)合改進的BERT預(yù)訓(xùn)練模型進行了實驗,建立的系統(tǒng)可以同時分析中日輿情數(shù)據(jù),并自動生成中日民眾情感態(tài)度對比和情感極性分布,針對情感突變點也能通過分析熱點博文和推文來有效地分析出相應(yīng)的事件,并將分析結(jié)果以可視化的形式展現(xiàn)給用戶。因此,本文系統(tǒng)是合理的、有效的,且彌補了目前單一平臺、單一語料輿情監(jiān)測的缺陷。未來工作將從以下方面進行。
● 社交網(wǎng)絡(luò)平臺用戶的情緒比較豐富,應(yīng)從多個方面分析情感詞,不能局限于積極和消極的二分類,應(yīng)進一步延伸對情感情緒的等級判斷。
● 輿情監(jiān)測系統(tǒng)也不應(yīng)只局限于中文和日文兩種語料,未來應(yīng)支持更多種語料。
● 只對文本進行了情感分析,但現(xiàn)實世界中除文本外,圖片、視頻、語音等信息也會包含強烈的情感傾向,系統(tǒng)應(yīng)實現(xiàn)多模態(tài)的情感分析。