賈宏志 徐亞峰



摘? 要: 隨著互聯網的發展,人們更愿意在網絡上分享自己對熱點事件的觀點并發表自己的評論,這些評論通常包含了個人的情緒和情感傾向,所以對網絡短評進行情感分析能高效、精準的挖掘人們的情感態度。本系統首先對知乎平臺的網絡短評進行定向抓取,然后進行數據清洗、分析出人們的情感取向,最后利用詞云進行直觀的展示。本系統的情感分析模塊主要使用了Google的TensorFlow框架,并采用長短期記憶網絡(LSTM)對已經標注好正負情感評論的語料進行訓練,然后使用Python Scrapy框架對知乎熱榜評論進行定向數據爬取,并做出情感預測,最后使用Tornado框架實現情感分析系統的Web圖形化操作。利用本系統可以高效、精準的挖掘人們的情感態度,有助于輿情分析、用戶分析等方面的應用。
關鍵詞: 深度學習;情感分析;LSTM;定向爬取
中圖分類號: TP311.52? ? 文獻標識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.10.008
本文著錄格式:賈宏志,徐亞峰. 基于深度學習和知乎的情感分析系統[J]. 軟件,2019,40(10):3336
Emotional Analysis System Based on Deep Learning and Zhihu
JIA Hong-zhi, XU Ya-feng
(Xuzhou Institute of Technology, Xuzhou, Jiangsu 221000)
【Abstract】: With the development of the Internet, people are more willing to share their views on hot issues and make their own comments on the Internet, which usually contain personal emotions and emotional tendencies. Therefore, the emotional analysis of online short comments can effectively and accurately explore people's emotional attitudes. This system first grabs the network short comments on zhihu platform, then cleans the data, analyzes people's emotional orientation, and finally USES the word cloud to display intuitively. The emotional analysis module of this system mainly USES the Google TensorFlow framework, using both short-term and long-term memory network (LSTM) to have training corpus with the positive and negative emotional comments, and then use the Python Scrapy framework to zhihu crawl hot list of comments for directional data, and make emotional prediction, sentiment analysis is realized by using Tornado framework Web graphical operation of the system. This system can be used to effectively and accurately explore people's emotional attitude, which is conducive to the application of public opinion analysis, user analysis and other aspects.
【Key words】: Deep learning; Emotional analysis; LSTM; Directional crawling
0? 引言
近年來,互聯網發展越來越迅速。截至2017年12月,中國網民規模達7.72億,手機網民規模達7.53億,網民中使用手機上網人群的占比由2016年的95.1%提升至97.5%,網絡成了人們交流的平臺[1],越來越多的人喜歡在網上發表自己對熱點事件的觀點態度。因此,對網絡評論的情感分析成為研究人們對待社會熱點問題看法的有效途徑之一。本系統則是一個基于深度學習和知乎的情感分析系統,其使用了Word2vec工具建立詞向量,基于深度學習的LSTM(Long Short-Term Memory,長短期記憶網絡)模型建立情感分析模型,利用Python scrapy框架對知乎熱榜中的評論進行定向數據抓取,并使用Python的Tornado框架完成了系統的圖形化操作。利用本系統,可以實現半自動化的定向的情感分析。
1? 深度學習簡介
深度學習(又稱深層結構學習),這一定義最早由Hinton等人[2]在2006年提出,它是基于人工神經網絡的更廣泛的機器學習方法系列的一部分,是樣本數據通過一定的訓練方式獲得含有多層級的深度網絡結構的機器學習過程。最初,Hinton教授提出了兩個主要觀點,第一個觀點是利用計算機模擬人腦神經元工作的特征,形成神經網絡模型,這一模型可以有效的學習數據特征,進而能夠進行分類,回歸及可視化等工作;第二個觀點是采用逐層訓練的方式對神經網絡輸入參數進行訓練,即采用無監督的學習方式讓深度學習網絡達到最佳效果[3]。到目前,深度學習在語音識別領域、圖像識別領域、自然語言處理領域均有一定的發展。但是,相對于圖像識別和語音識別而言,深度學習在自然語言處理方面的應用起步較晚。本文主要運用深度學習在自然語言處理領域的相關技術,并涉及到目前廣泛應用的深度學習結構——LSTM。
3.2? 基于keras、TensorFlow的情感分析模塊的設計與實現
Tensorflow是由谷歌開發團隊開發并在2015年開放源代碼的符號數學系統,被廣泛應用于各類機器學習算法的編程實現。keras則是基于TensorFlow、Theano以及CNTK后端,由Python編寫開發的高層神經網絡API,它具有高度模塊化、極簡和可擴充的特征,并支持CNN和RNN,且能在CPU和GPU中無縫切換。本系統的情感分析模塊則是以keras作為應用環境設計并實現。
本文設計的情感分析模塊主要分為兩部分,第一部分是訓練情感分析模型,第二部分是將抓取的評論預處理后通過訓練的模型進行情感預測,其簡要分析過程如圖4所示。
根據圖中所示,第一步是對語料庫的預處理,因為是對網絡短評進行情感分析,所以我選擇了基于新浪微博評論的12萬條已做好情感標注的樣本作為訓練的語料,0表示消極的情感態度,1表示積極的情感態度。分詞使用了jieba分詞的全模式分詞,讓詞庫的內容最大化、最精準化。為防止分詞中含有特殊字符影響訓練結果,使用正則表達式過濾掉特殊字符(數據中無用的符號、數據中的網址信息),最后使用了哈工大和百度的停用詞列表將詞表中的的語氣助詞、代詞等無需使用的功能詞去除。預處理后詞表輸出至文本文檔中,每一句為一行。結果如圖5所示。數據預處理后,開始使用Word2vec進行詞向量構建。首先,設置好詞向量維度為256以及相關參數,然后加載進我們處理后的數據,選擇CBOW模式開始訓練,訓練好的數據保存為文本文檔,其中包含了詞語以及對應向量,接著利用keras中的Tokenizer類制作數據詞典,并將詞典數量設置為4000,即統計出詞典中詞頻出現較高的前4000個單詞。然后使用texts_to_sequences()函數將我們訓練后的數據轉換為數字列表,并采取截長補短的方式使每一個數字列表的長度均為20(數據內容一般是短評,所以其長度在20詞左右),長度小于20的語句由0補全,長度超過20的語句其超出的部分將會被截取。這組列表將作為訓練模型輸入層的x軸,而y軸則是每條數據標注好的情感值列表。構建詞向量后,利用keras相關模塊創建一個訓練模型。首先,向模型中加入一個輸入維度為4000,輸出維度為32的嵌入層(Embedding)用來降低LSTM模型輸入的維度,接著加入輸入維度為32的LSTM層,之后加入隱藏層和Dropout層避免過度擬合,獲得最后的模型后,開始對模型進行訓練。訓練模型時,首先設置好x,y軸輸入的列表,然后指定進行梯度下降時每個batch包含的樣本數量為200,訓練終止時的epoch值為60,最后指定訓練集占比為0.2的數據作為驗證集,來驗證每批次訓練的精確度。訓練過程如下圖6所示。
訓練結束后,保存訓練好的模型,該模型作為情感分析模型,利用scrapy框架爬取的數據進行預處理后制作成數字列表,然后使用該模型進行情感分析,最后即可得出情感值和分析結果。
3.3? 基于Tornado框架的系統架構
Tornado全稱Tornado Web Server,是一個用Python語言寫成的Web服務器兼Web應用開發框架。Tornado以其輕量、異步非阻塞IO的處理方式和較為出色的抗負載能力受到大眾的關注。圖7是Tornado框架和其他Python框架性能對比。
本文設計的系統因含有大量的耗時操作(數據爬取、情感分析),所以優先選擇可以較好的處理異步非阻塞系統的Tornado框架。在設計中,使用@run_on_executor 修飾耗時方法用來創建額外線程進行處理,使用@asynchronous與@coroutine修飾調用耗時方法的post方法,其中@asynchronous作用是保持長連接,而@coroutine使之修飾的方法完成后會自動調用finish。
4? 結語
情感分析作為自然語言處理領域的熱點方向之一,具有很高的社會意義,一個更精確、適用性更廣的情感分析系統是分析公民情感態度、網絡輿情的重要基礎。政府也可以通過對網絡輿情的分析更好的維護社會的平穩發展。本系統則是基于深度學習的半自動的網絡評論情感分析系統,它使用了word2vec建立詞向量,基于LSTM建立情感分析模型,并使用了Scrapy框架對知乎熱榜的在線評論進行數據爬取。本系統使用Tornado框架將功能圖形化展示,在使用方面做到了簡單、便捷,其具有較好的實用性。未來可以進一步的建立對話題具有針對性的分析模型,使系統能更加精準的分析出評論中的情感傾向,可以在更廣泛的范圍內使用。
參考文獻
[1]第41次《中國互聯網絡發展狀況統計報告》發布[J]. 中國廣播, 2018(03): 96.
[2]Geoffrey Hinton, Yoshua Bengio, Yann LeCun 等.
[3]Hinton Geoffrey E, Osindero Simon, Teh Yee-Whye. A fast learning algorithm for deep belief nets. [J]. Neural Computation, 2006, 18(7).
[4]方明之. 自然語言處理技術發展與未來[J]. 科技傳播, 2019, 11(06): 143-144.
[5]朱磊. 基于word2vec詞向量的文本分類研究[D]. 西南大學, 2017.
[6]gensim: models. word2vec–Deep learning with word2vec [EB/OL]. [2018-06-08]. https://radimrehurek.com/gensim/models/ word2vec.html.
[7]周練. Word2vec的工作原理及應用探究[J]. 科技情報開發與經濟, 2015, 25(02): 145-148.
[8]伍行素, 陳錦回. 基于LSTM深度神經網絡的情感分析方法[J]. 上饒師范學院學報, 2018, 38(06): 10-14.
[9]王晨超, 劉洋. 基于Doc2vec和深度神經網絡的中文文本情感傾向研究[J]. 電子技術與軟件工程, 2018(10): 154-157.