宋尚文,盧 超,閻紅燦
(華北理工大學理學院,河北 唐山 063210)
隨著深度學習領域的發展,自然語言處理問題的解決方式也逐漸向深度學習偏移[1]。情感分析是自然語言處理中常見的場景,比如說電商、餐飲、娛樂等等產品的使用用戶評價信息,對于指導產品更新迭代都具有關鍵性作用。
由于中英文語系的差異較大,英文的情感分析主要問題在于詞性標注、詞匯粒度、句法結構、詞匯之間的關聯關系等;中文特點很明顯,在自然語言處理的過程中第一步是分詞,而英文天然情況下就是存在空格的,中文分詞就是一個很有挑戰性的任務,除此之外,由于中華文化發展源遠流長,漢字之間的關聯性、省略內容填充和內容補足等方面來說都是難以進行處理的。
因此國內外在中文的情感極性分析相對于英文或者其它語言來說有更多對應的深度學習方法。如今中文的自然語言處理領域已進入了深度學習時代,大部分方法將詞作為底層特征,在此特征基礎上,完成了詞性標注、命名實體識別和語義角色標注等多個任務,之后利用遞歸神經網絡完成了句法分析、情感分析和句子表示等多個任務,這也為語言表示提供了新的思路。
從數據集角度分析,新聞類的數據客觀性極強,較為樸素的傳統機器學習方法有可能在處理其問題時保證一定的正確率的同時會具有更加突出的效率。本文選用DT(Decision Tree,決策樹)和SVM(support vector machine,支持向量機)兩大類分類器應用于情感極性分析中進行研究。
SVM起初是針對二分類問題提出的,但是實際應用中多分類問題更加普遍。它的核函數的利用使它成為實質上的非線性分類器,SVM基本思路是求解能夠正確劃分訓練數據集并且幾何間隔最大的分離超平面。非線性分類時相對應的在高維空間使用 SVM 求解分類問題則需要更換核函數,其意義是利用核函數計算目標函數而去代替最原始的內積計算。
并且支持向量機[2]的優點就是很適合小數量樣本數據,解決高維的問題,由于求解的是幾何間隔最大的分離超平面因此可解釋較強。
針對現有數據集,選擇SVM是一個合適的選擇。核函數不是 SVM 專屬的,但是它的優化方向會涉及到各種場景,多分類,類別不平衡都可以通過改變核函數來適應場景。為避免分類訓練時間過長與過度擬合和較大程度適應高維空間的分類,引入兩類核函數:(1)linear核函數的特點是參數少速度快,對于一般的數據分類效果比較理想;(2)rbf核函數的特點就是將可數據映射至高維空間解決復雜且抽象的分類任務。本文采用rbf和linear兩種基礎核函數加入訓練與對比分析。
決策樹是一種邏輯簡單的機器學習算法,采用樹形結構,需要監督學習。在樣本集合中針對每個樣本都有一組屬性和一個分類結果,通過樣本的學習的得到一個決策樹,再對測試集數據給出正確的分類。決策樹由圖1所示三種元素構成,根節點:包含樣本的全集;內部節點:對應特征屬性測試;葉節點:代表決策的結果 DT中有幾種典型的方法ID3、C4.5和CART(Classfication And Regression Tree,分類與回歸樹)等。CART的分類效果一般優于其他決策樹,其是一個二叉樹,也是一個回歸樹,同時也是分類樹。相對與ID3和C4.5,CART的優勢[3]在于在分類過程中只能將父節點分為兩個子節點,采用基尼指數決定是否進行節點的分裂。與熵的概念類似,數據內部的類別越繁雜基尼指數就會越大。作為回歸樹,CART對葉子節點內部的數據進行均值方差計算,以此來換取計算成本,過程中存在細小分割,但是其支持剪枝,可以有效地避免過度擬合的問題。
圖1 決策樹的樹形結構Fig.1 The tree structure of the decision tree
結合上述的分析,本文實驗中在選取 CART作為決策樹方法的分類器。
數據集提供三個文件(訓練集、訓練集標簽、測試集)為常規的數據科學競賽提供的數據種類,本文則使用訓練集與訓練集標簽來檢驗傳統機器學習方法的性能。首先需要對訓練數據集的文本長度分布,文本標簽分布簡要進行統計。
圖2所示發現新聞字段的長度分布趨勢相對穩定的分布在1~6 000位字符的范圍,呈現出正偏態分布,其中位數在分布于 3 000左右;圖3新聞標簽的分布沒有體現出平均化,特別是0值(情感極性類別為正面情緒)所占整體數據的比例只有10.47%,顯然這屬于非均衡的數據集,在構建模型的時候需要考慮到數據不均等[4]的因素。
圖2 新聞字數統計圖Fig.2 News word count statistics
圖3 新聞標簽統計Fig.3 New s label statistics
數據集中新聞文本資料大多來自互聯網,通過簡要觀察數據可以發現有以下三個問題:(1)訓練集數據與標簽的序號沒有正確的存在對等關系;(2)訓練集文本數據分為標題和內容兩部分;(3)訓練集數據中網絡新聞有少量網址信息、手機號碼、亂碼符號等干擾情感分析的噪聲信息。
考慮到訓練集數據的問題做如下處理:(1)對數訓練集的兩個文件進行序號的離散化處理,之后再建立一一映射關系,刪除無映射關系的信息,保證訓練集數據和標簽劃分的正確性;(2)新聞文本標題囊括了內容里的主要部分類似于論文的摘要,因此這部分在處理時需要額外保留標題的信息,以后續調整兩者拼接比例方式實現(3)為了優化分類效果需要刪除其中的所有非中文符號(包含上述第二個問題中的噪聲信息與標點符號),之后對相關文本數據進行拼合。利用正則表達式處理數據集的字符串得到完全由中文組成的訓練集和測試集兩個列表數據。
正則化處理過程主要利用的是 Python的 re庫進行操作,其處理函數如下:
英文的行文中單詞之間是以空格為分界符,不同于拉丁語系,中文只有字、句、段能通過明顯的分界符劃分界限,但是在詞的這一點沒有明顯意義上的分界符。中文分詞是中文文本處理的一個基本步驟,在中文自然語言處理時進行的預處理通常是要先分詞[5],分詞將直接影響詞性,句法樹等模塊的效果。
中文分詞技術已經漸漸成熟,根據實現原理主要分為兩類,第一類為基于詞典的分詞算法,一般是按照一定的匹配算法依托一個建立好的充分大的詞典進行詞語匹配;第二類是基于統計的機器學習算法,常見的分詞器都是使用機器學習算法和詞典相結合,一方面能夠提高分詞準確率,另一方面能夠改善領域適應性。具有代表性的方法是jieba分詞[6],內部動態規劃實現查找最大概率路徑,未記錄的詞語會采用基于漢字成詞能力的HMM模型,國內外的高校與公司也開源了分詞代碼或者分詞調用接口,結合分詞過程中的代碼復雜性、實現的分詞程度、調用便捷程度和運算時間復雜度最終選擇jieba分詞,分詞函數代碼:
如圖4中是數據集使用jieba分詞的分詞效果。
圖4 分詞效果Fig.4 Result of word segmenting
自然語言處理的分析首先要解決詞向量的數字化表達問題,詞向量是通過一個高維向量去表達一個詞或字。在統計語言模型研究的背景下,Google公司在 2013年開放了一款用于訓練詞向量的軟件(Word2vec)工具[7]。
Word2vec依賴 skip-grams或連續詞袋(CBOW)使用一個淺層的神經網絡,用一個只具有一個隱藏層的神經網絡學習詞嵌入,該模型在預測上下文的同時產生了一個副產品,即分詞在n維向量空間的表示。簡單的理解方法是兩個詞語的相似程度可以由計算兩個高維詞向量的余弦得出,余弦函數在實數數域內有上下限,因此可以由余弦的數值來區分兩詞語的相似度。
本文采用的句向量計算是無監督學習的詞向量的詞袋模型。其中最樸素的方法是式(1)所示的預訓練詞向量求平均的計算方法,其中SeqVec表示句向量,m表示為每個樣本中詞的個數,分子表達的是詞的詞向量。 好處是計算速度快,但是缺點忽略了句子的次序,在語句順序較敏感的中文文本處理問題中效果不佳。針對于新聞的文本信息分析,從其客觀確切、簡練樸實的角度分析,最終認為線性加權的方法計算句向量在本文數據集中是一種較為客觀的方式。
數據增強(Data Aug mentation)是一種通過有限數據產生更多的等價數據來人工擴展數據集的技術。計算機視覺領域中,數據增強的應用更為廣泛,通過圖片的移動翻轉裁剪等手段都可以滿足;相反在自然語言處理過程中,數據增強應用更少,其使用在原數據集中進行同義詞的更換,隨機插入刪除等等方法,本文此處將對句向量進行增強,有效避免了二次處理中文語句數據集,不能保證是有利的但是這也同時意味著更大的機遇。
針對不均衡問題,一般有采樣和代價敏感學習兩種策略,采樣的話又分為 over-sampling和under-sampling。其中,smote算法算是 oversampling中比較常用的一種。由于訓練集數據的標簽不均衡,考慮到訓練集與測試集的比例為1∶1。采用過采樣是一種比較合理的方法,通過增加分類中樣本較少的類別的采集數量來實現平衡。
SMOTE[8-9]的思想是合成新的少數類樣本合成策略是對每一個樣本a,從它最近鄰選一個樣本b,然后在a、b之間的連線上隨機選取一點作為新合成的少數類樣本。算法流程如下:
對于一個樣本xi使用K近鄰法[10],定義距離為樣本之間的n維特征空間的歐氏距離,以定義方法計算求出距離xi到少數類樣本集的所有樣本的距離,得到其K近鄰;
根據樣本不平衡比例設置一個采樣比例以確定采樣倍率N,對于每一個少數類樣本x,從其k近鄰中隨機選擇若干個樣本,假設選擇的近鄰為xn;
對于每一個隨機選出的近鄰xn,分別與原樣本按照上述的公式構建新的樣本,其中δ? ( 0,1)。
SMOTE 方法生成的樣本均分布在xi和x?i相連的直線上,經過 SMOTE的數據過采樣補充形成了10 770×200的訓練集句向量,上述描述代碼如下:
屆時得到的句向量為數據集的常規句向量,為了提升標題在內容中的比重需要進行式(3)的操作,其中λ? ( 0,1),生成句向量的過程比較耗時并且某些標題的長度可能過短,所以不適合進行標題與內容句向量的分別計算疊加。同等意義,本文將隨機變量設置使得為整數,之后在進行詞向量處理時將標題詞向量疊加同等倍數最后合并計算新的句向量即為所要求出的向量結果。
準確率(Accuracy),精確率(Precision)和召回率(Recall)是信息檢索,人工智能,和搜索引擎的設計中很重要的幾個概念和指標。
其中β是參數,P是精確率,R是召回率,當參數β=1時,理論上解釋為精準率與召回率同等重要,這也是數據科學比賽中最常見的排名評價指標。考慮到本文結果應與網絡上結果作比較,所以選擇 F1-score作為模型的評價指標。
將原始詞向量訓練集做如下處理:(1)詞向量以標題和內容做劃分疊加詞向量并將標題的特征放大形成最終的句向量;(2)用 SMOTE方法處理句向量數據集使得訓練集標簽達到相對均衡;(3)將最終形成的訓練集抽取20%作為測試集以評估本文使用的方法的性能;(4)使用最原始的詞向量生成方式和特征放大經過過采樣的數據進行三種方法的訓練。
本文訓練所使用的計算機環境為:
操作系統:win10 x64
處理器:Intel(R) Core(TM) i5-8250U CPU @1.60 GHz 1.80 GHz
RAM:12 GB
語言環境:gcc version 8.2.0;python 3.7.5
采用F1值作為模型評價指標。由于訓練數據量較少得分評估不穩定,結合程序時間復雜度接近O(n2),所以采取運行20次取均值的方法,得到的多組訓練結果如圖5所示。
圖5 不同訓練集與模型的多組學習效果Fig.5 Learning effects of different training sets and models in multiple groups
由運行結果的圖像初步分析得出原始 CART和原始 rbfSVM的效果普遍偏低,過采樣數據集的測試準確度水平較為均衡,因此得出結論:使用 SMOTE和特征放大的方式可以有效的處理數據不均衡問題并且較不使用其方法的同等試驗下能得到較好的結果。
運行20次之后縱向分析,刪除數據最大最小值后取均值得表1數據屬性,過采樣句向量數據的效果均好于同等狀態下原始不均衡數據的效果,再次說明數據增強的方法可能適用于在實驗中期處理具有一定數學關系的數據;支持向量機方法的處理結果優于決策樹方法,并且線性核函數的支持向量機效果相對明顯,結合數據量和數據復雜度分析,驗證了線性核函數適用于小型數據集、高維特征的多分類問題。
表1 模型訓練得分情況Tab.1 M odel training scores
過采樣數據條件下采用線性核函數的支持向量機在數據分析中獲得評分的均值最高,評分達到 0.74577,且方差為 7 .84× 1 0-5,表示該方法的運行結果相對較平穩。方差角度分析本次實驗:六類實驗的方差都比較低,實驗結果都比較穩定,可信度較高。
由實驗驗證結果與網絡數據比賽結果對比可知,利用上述挑選出的最優方法針對互聯網新聞情緒極性分析效果較遜色于近幾年新產生的中文文本處理方法[11],尤其是深度學習領域發展的幾大類方法重新定義了這類問題。但是從時間效率講目前來說傳統的機器學習方法占用的計算時間損耗和精力要遠遠小于深度神經網絡方法,從框架的使用難度、神經網絡的原理角度來看,深度學習的復雜程度較高,在未來的機器學習中,深度學習會占據絕大部分領域。但是在小型且特征明顯的數據處理時,采取本文使用的線性核函數的支持向量機方法也會得到準確率與深度學習方法相當的結果。
利用新穎的自然語言處理文字處理方法結合傳統的數據挖掘中常用的分類訓練方法可以基本解決語義較清晰的中文文本情緒分類任務,但是在很多方面還有進步空間比方說:數據維度處理過大而采用了普通的計算方式,運算效率相對較低;詞向量到句向量的處理過于樸素在一定程度上可能丟失了有價值的信息從而影響了準確率等等。