謝思雅, 施一萍, 胡佳玲, 陳 藩, 劉 瑾
(上海工程技術大學 電子電氣工程學院,上海 201620)
文本情感分類任務是對帶有情感屬性的主觀性文本的信息進行分析和判斷[1]。由于傳統(tǒng)的文本情感分類任務存在耗時長、準確率較低的問題。袁磊[2]對卡方統(tǒng)計量算法進行改進,從而提高分類準確率。在處理文本分類的任務中,注意力機制可以提取到數(shù)據(jù)的重要特征。Bahdanau D等人[3]將神經(jīng)網(wǎng)絡和注意力機制相結合,證明了該模型的有效性。韓萍等人[4]提出將多維自注意力機制與情感融合結合構建情感分類模型,建立起文本中詞語間的依賴關系,結果表明提高了分類性能。石磊等人[5]將自注意機制和Tree-長短時記憶(long and short-term menory,LSTM)結合構建模型,并在模型中引入了Maxout神經(jīng)元,從而提升情感分類的準確率。
隨著自然語言處理研究的火熱進行,文本情感分析作為自然語言處理的一大子任務,研究也越來越深入,但是應用的場景卻不多。Django框架是由Python語言編寫的一種Web框架,集成了一個輕量的Web服務器。開發(fā)人員可以利用Django框架的代碼少、速度快的優(yōu)勢進行Web應用的開發(fā)和調(diào)試[6]。白相辰正是利用了Django框架的優(yōu)勢,設計實現(xiàn)了一種Web在線教育平臺[7]。本文利用Django Web框架設計實現(xiàn)了一種文本情感分類系統(tǒng)。
近年來,越來越多的研究者將深度學習算法應用在文本情感分類任務中。金宸等人[8]將雙向的LSTM(bidirectional LSTM,BiLSTM)模型運用到中文情感分類中,構建模型。2017年,Google機器翻譯團隊在文獻[9]中,使用自注意力機制來學習文本表示。自注意力機制開始在各類自然語言處理任務中進行探索。余珊珊等人[10]利用自注意力在學習句子中重要局部特征方面的優(yōu)勢,結合LSTM網(wǎng)絡,在文本分類任務上實現(xiàn)效果較好。
文獻[11]中,趙希明設計實現(xiàn)的微博情感分析系統(tǒng)采用B/S架構。后端采用的是Flask框架,前端主要包括有HTML,CSS,jQuery等技術,系統(tǒng)實現(xiàn)效果良好。文獻[12]中,周泳東設計實現(xiàn)的情感傾向性分析系統(tǒng)采用的也是B/S架構,使用Apache作為網(wǎng)絡服務器,后端采用的是Flask框架。與Flask框架相比,Django自帶了數(shù)據(jù)庫管理,且具有速度快、較穩(wěn)定的優(yōu)勢。所以,本文采用的是與文獻[13]相同的Django框架,進而設計實現(xiàn)的簡易情感分析系統(tǒng)。
本文提出的系統(tǒng)總體結構如圖1所示。前端部分采用了文本輸入框和提交按鈕交互組件。輸入文本后,點擊分類按鈕,會將文本框中的文本發(fā)送給后臺,利用構建好的情感分類模型進行情感分析,再將分類結果返回前端頁面,從而展示給用戶。
圖1 系統(tǒng)總體模塊
瀏覽器客戶端(也即前端界面)與服務器的通信基于HTTP協(xié)議。HTTP通信協(xié)議主要包括HTTP請求和HTTP響應。HTTP請求的鏈接通過URL進行實現(xiàn),將每個URL的頁面請求分給相應的控制器函數(shù)進行處理??刂破鞯闹饕康氖墙邮誋TTP的請求,并且將符合條件的請求數(shù)據(jù)連同附加信息一起作為HTTP響應數(shù)據(jù)返回發(fā)送到相應瀏覽器客戶端。如此實現(xiàn)了控制器對請求的接收、處理和對客戶端的響應。
前端頁面中主要利用HTML,CSS和JS進行設計樣式。其中,jQuery的$.get()方法通過遠程HTTP GET請求載入信息,并將該請求發(fā)送給對應的路由。這里的請求信息是文本框中輸入的文本。
Django框架擁有大量的功能封裝,能把相對復雜的功能進行封裝后做到一定的簡化,并且框架是以模塊劃分的,負責不同的功能,易于管理。Django框架遵循MVC(model view controller)模式。其中M代表模型,控制數(shù)據(jù)庫表結構;V代表視圖,負責響應頁面的呈現(xiàn);C代表控制器,具體負責實現(xiàn)的功能。
用戶打開瀏覽器,輸入域名,控制器根據(jù)HTTP請求通過URL路由執(zhí)行函數(shù),主要實現(xiàn)前端頁面的展示。當路由調(diào)用search_form函數(shù)時,就會出現(xiàn)頁面展示給用戶。
如圖2所示,數(shù)據(jù)處理模塊主要對前端輸入的文本,經(jīng)過BiLSTM結合自注意力機制構建的模型對其進行情感分類。這個情感分類模型包括文本輸入層、詞嵌入層、BiLSTM層、自注意力層以及分類層。
圖2 情感分類模型
1)文本輸入層
該層輸入語料庫中的文本,例如有一段文本X為“沒感覺有什么問題”,經(jīng)過Jieba分詞等預處理后,輸入文本X為
X=[′沒′,′感覺′,′有′,′什么′,′問題′]
(1)
2)詞嵌入層
該層采用word2vec訓練詞向量,得到向量列表
式中X中的第i行代表文本X中的第i個詞語所對應的n維詞向量。
3)BiLSTM網(wǎng)絡層
使用BiLSTM模型從詞向量層獲取高級特征。BiLSTM是由兩個LSTM上下反向組成的,輸出由這兩個LSTM的狀態(tài)共同決定。
4)自注意力機制層
自注意力機制可以通過聯(lián)系輸入序列中不同位置的信息,從而計算得出整條輸入序列所要表達的內(nèi)容,可以說是注意力機制的一種特殊情形。自注意力機制對外部信息的依賴降低了許多,并且更擅長于捕捉內(nèi)部信息關系[14]。在自注意力機制中,每個序列中的單元會和該序列中所有單元進行Attention計算。將上一層輸入的向量集合表示為
T︰[t1,t2,…,tn]
(3)
其自注意力機制層的權重矩陣公式為
M=tanh(T)
(4)
α=softmax(wTM)
(5)
r=TαT
(6)
h*=tanh(r)
(7)
式中T∈dw×n,dw為詞向量維度,wT為訓練得到的參數(shù)向量的轉置,h*為經(jīng)過自注意力機制層的輸出。
5)分類層
將經(jīng)過模型處理的文本信息通過SoftMax層輸出情感類別判定結果。
實驗1BiLSTM-SA模型實驗
1)實驗環(huán)境
實驗環(huán)境配置采用Python編程語言,基于PyCharm開發(fā)環(huán)境,Windows 10系統(tǒng),8 GB運行內(nèi)存等。
實驗中超參數(shù)設置都是根據(jù)每一次迭代結果調(diào)整的。經(jīng)過10次迭代,實驗設置的主要超參數(shù)為:隱藏層128,學習率為0.001,dropout為0.3,batch_size為32,注意力監(jiān)督損失值分配的權重為0.05。實驗中,訓練集有8 000條語句,驗證集有1 000條語句,測試集有600條語句。
2)實驗結果分析
實驗主要采用準確率和迭代時長來作為評價標準。實驗結果如圖3。
圖3 實驗結果
由圖3可以看出,在10次迭代中,train_acc(訓練集準確率)在逐漸趨于1,dev_acc(驗證集準確率)在第2次迭代時最高為0.780,最終測試集的準確率達到84.4 %。在第10次迭代時,耗時最短為13.282 min,耗時最長是在第6次迭代,為14.820 min,10次迭代平均耗時為14.235 min。由數(shù)據(jù)可見,本文提出的BiLSTM結合自注意力機制構建的文本情感分類模型具有良好的準確率和性能。
實驗2前端測試
實驗中Django版本是3.0.3。在pycharm中打開terminal,在terminal中輸入:python manage.py runserver開始運行程序。程序運行后會在terminal中顯示出一個小型服務器地址,也可以使用localhost:8000/,點擊出現(xiàn)一個網(wǎng)頁,在后面加上search_form,回車,會出現(xiàn)分類界面,在文本框中輸入文本,點擊分類按鈕,會給服務器發(fā)送請求,后端調(diào)用訓練好的模型,將結果返回給前端。
在文本框中輸入文本后,點擊分類按鈕,界面會顯示如圖4的結果。通過簡單的手動測試,系統(tǒng)的分類結果較好。
圖4 情感分類結果
本文通過Django框架搭建了簡單的前后端文本情感分類系統(tǒng)。文本分類模型采用的是BiLSTM網(wǎng)絡結合自注意力機制構建的模型,進一步優(yōu)化了系統(tǒng)的性能。實驗結果表明,本文設計的文本情感系統(tǒng)總體實現(xiàn)了較好的效果。