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