王渤茹,范 菁,張王策,李晨光,倪 旻
(1.云南民族大學(xué) 電氣信息工程學(xué)院, 云南 昆明 650500;2.云南民族大學(xué) 云南省高校信息與通信安全災(zāi)備重點實驗室, 云南 昆明 650500)
文本分類是自然語言處理領(lǐng)域中一個經(jīng)典問題[1].隨著機器學(xué)習(xí)的發(fā)展,形成了基于人工特征的分類模型,該模型中特征選擇是關(guān)鍵的一個步驟[2].面對海量的短文本信息,獲得有價值的信息,進行準(zhǔn)確的分類是自然語言處理領(lǐng)域的一個熱點.
新聞標(biāo)題相對于一般的短文本特征更少,在新聞標(biāo)題的超短文本分類中最關(guān)鍵的問題是對文本特征的提取.由于新聞標(biāo)題屬于超短文本的特殊性,單獨采用常規(guī)的機器學(xué)習(xí)特征選擇算法提取特征效果并不好[3].采用LDA主題模型對新聞標(biāo)題進行特征擴展也沒有得到很好的效果.2013年提出word2vec方法可以對詞語進行稠密向量表示,在向量空間中找到距離最相近的詞,并且距離最相近的詞表示的語義是相近的[4],用距離最近的一個詞對新聞標(biāo)題進行擴展.Fp-growth算法也能有效挖掘需要的信息.
傳統(tǒng)的機器學(xué)習(xí)算法有著共同的局限性:維度災(zāi)難、過擬合,在有限的樣本上性能好,對復(fù)雜函數(shù)的有限表達導(dǎo)致其在大規(guī)模分類問題的泛化能力被制約[5-6].深度神經(jīng)網(wǎng)絡(luò)克服傳統(tǒng)機器學(xué)習(xí)中的一些缺陷,通過多層神經(jīng)網(wǎng)絡(luò)訓(xùn)練使得模型具備良好的特征學(xué)習(xí)能力[7].
因為新聞標(biāo)題特征過少和高維稀疏,通過一些方式對標(biāo)題特征進行擴展[8].本次選用3種方式對新聞標(biāo)題擴展,1種方式通過word2vec訓(xùn)練詞向量尋找與新聞標(biāo)題詞語在空間上最接近的特征詞進行標(biāo)題擴展,第2種種方式通過Fp-growth算法挖掘外部語料庫的頻繁項集.調(diào)用關(guān)聯(lián)規(guī)則挖掘算法,進行頻繁詞項的關(guān)聯(lián)分析.第3種是通過字向量和詞向量兩種不同的向量表示形式.
word2vec模型的建立是為在訓(xùn)練后得到神經(jīng)網(wǎng)絡(luò)中隱藏的參數(shù)矩陣,而不是處理新的預(yù)測任務(wù)[9].訓(xùn)練得到的隱藏層參數(shù)是word2vec去學(xué)習(xí)的詞向量[10].采用這種方式訓(xùn)練出的詞向量,使得相似上下文的詞語在詞向量空間也非常接近[11].word2vec模型可以將文本中的每個詞語映射成一個稠密的,固定長度的向量.這些詞構(gòu)成一個詞向量空間,可以使用余弦距離或者歐式距離,根據(jù)詞之間的距離判斷詞語語義上的相近程度[12].
word2vec主要有CBOW和Skip-Gram兩種模型[13-14].這2種模型十分相似,CBOW模型可以通過輸入周圍n-1個詞來預(yù)測詞本身,而Skip-Gram模型可以根據(jù)詞本身來預(yù)測周圍的詞.本次使用word2vec模型中的CBOW模型訓(xùn)練生成詞向量和字向量.使用外部語料庫wiki語料庫,對語料庫進行預(yù)處理,接著用CBOW的方法訓(xùn)練詞向量.
預(yù)訓(xùn)練的詞嵌入向量,除了將它們輸入到神經(jīng)網(wǎng)絡(luò)之外,還有一個重要用途,就是利用向量之間的相似度函數(shù)Similarity(w1,w2)計算2個詞語之間的相似度.訓(xùn)練出的詞向量可以查看詞匯空間上距離最近的詞,距離上相近的詞在語義上也相似[15].定義兩個詞語的語義相似度為2個詞向量的余弦相似性,計算公式如下所示:
(1)
其中vw1·vw2表示2個向量的內(nèi)積,‖vw1‖表示向量vw1模的長度.‖vw2‖表示向量vw2模的長度.
在訓(xùn)練標(biāo)題集數(shù)量很大的情況下,可以得到的詞向量質(zhì)量越高,利用詞向量計算詞語的空間相近詞質(zhì)量越高.基于word2vec模型對短文本進行詞嵌入擴展可以解決其稀疏性[16].預(yù)訓(xùn)練出詞向量后,找出與標(biāo)題詞匯距離最相近的詞作為新聞標(biāo)題擴展詞匯.雖然擴展詞匯描述了與標(biāo)題不同的事件,但是所擴展的詞匯與原標(biāo)題屬于同一個類別,因此對于標(biāo)題分類仍可以輔助判斷.
Fp-growth算法使用一種壓縮的數(shù)據(jù)結(jié)構(gòu)FP-Tree,該算法通過給定的源數(shù)據(jù)進行2次掃描,將數(shù)據(jù)信息存儲在樹結(jié)構(gòu)中[17].Fp-growth算法挖掘語料庫的頻繁項集不需要創(chuàng)建候選集,且只需要遍歷兩次數(shù)據(jù)集.第1次掃描是統(tǒng)計詞語的支持度,詞語按照支持度降序排列,第2次掃描是構(gòu)建FP樹,挖掘頻繁項集[18].當(dāng)挖掘完包含某個詞語的頻繁項集時,F(xiàn)P樹就不會遍歷這個元素項,它所占用的內(nèi)存空間會立馬釋放[19].
1.2.1 對新聞標(biāo)題進行頻繁詞項特征擴展
此次對NLPCC2017的新聞標(biāo)題進行分類,其中有18類新聞標(biāo)題,所以本次爬取了18類新聞網(wǎng)站的文章,挖掘出每類新聞網(wǎng)站中的頻繁詞項,再通過置信度從頻繁詞項中計算出與每個詞語相關(guān)性最高的一些詞語,對新聞標(biāo)題進行擴充.由關(guān)聯(lián)性高的詞語加入到新聞標(biāo)題中,可以緩解新聞標(biāo)題的特征稀疏性.采用FP-growth算法挖掘頻繁詞項集的具體步驟如下:
步驟1 分別爬取18類新聞網(wǎng)站的文章,定義集合A={d1,d2,…,dn}為某類新聞文章的數(shù)據(jù)集,對爬取的新聞?wù)Z料進行預(yù)處理,包括分詞、去掉停用詞,過濾冗余信息.
步驟2 第1次遍歷每類新聞?wù)Z料,統(tǒng)計每類新聞?wù)Z料中特征詞出現(xiàn)的次數(shù).創(chuàng)建頭指針表,移除頭指針表中小于指定支持度的詞語.
步驟3 第2次遍歷每類新聞?wù)Z料時,初始化FP樹為空集[20].將特征詞按出現(xiàn)的次數(shù)從高往低重新進行過濾和排序.更新FP樹,更新頭指針列表.按順序創(chuàng)建頻繁項條件FP樹,根據(jù)頻繁項前綴路徑計算頻繁項集,加入到頻繁項集合.
1.2.2 基于置信度的特征擴展
所提取到的頻繁詞語集中,求出每個詞語與頻繁詞項中其他相關(guān)詞語的置信度,基于置信度的新聞標(biāo)題特征詞擴展的步驟如下:
1) 從獲取的頻繁詞語集中,選出對標(biāo)題分類貢獻最大的前k個特征為原始特征,由獲取頻繁詞項集的置信度,計算出新聞標(biāo)題中1個詞語出現(xiàn)時與它相關(guān)的置信度較大的幾個詞.置信度的計算方法為當(dāng)頻繁詞語A出現(xiàn)的情況下,頻繁詞語B會以一定的概率出現(xiàn),B出現(xiàn)的概率成為A->B的置信度,記為confidence(A->B).計算公式如以下所示:
confidence(A->B)=p(B|A)=sup(A∪B)/sup(A)
.
(2)
2) 遍歷關(guān)聯(lián)規(guī)則集合,對于每個規(guī)則,隨著置信度閾值的增加,頻繁項集的數(shù)目越來越少.基于置信度擴展的新聞標(biāo)題算法描述如表1所示.
表1 基于置信度擴展的新聞標(biāo)題算法描述
卷積神經(jīng)網(wǎng)絡(luò)不同于傳統(tǒng)的機器學(xué)習(xí)方法,它從大量的新聞標(biāo)題中自主學(xué)習(xí)復(fù)雜,高維,非線性的特征[21].卷積神經(jīng)網(wǎng)絡(luò)在自然語言中取得了很好的表現(xiàn)這是由于其具有捕獲空間,時間結(jié)構(gòu)的局部相關(guān)性特征能力[22].
結(jié)合卷積神經(jīng)網(wǎng)絡(luò)設(shè)計一款基于字向量和詞向量混合的雙路卷積神經(jīng)網(wǎng)絡(luò).由于新聞標(biāo)題特征過少,長度一般在20個字以內(nèi)[23].通過將擴展后的詞向量和字向量分別輸入到卷積神經(jīng)網(wǎng)絡(luò)中進行特征的提取,增大對特征的表達效果,提高對新聞標(biāo)題的分類效果,其中字嵌入向量包含的信息是每個字都可以獨立的作為一個詞的假設(shè)下成立的.
典型的卷積神經(jīng)網(wǎng)絡(luò)由輸入和輸出以及多個隱藏層構(gòu)成,隱藏層通常由卷積層、池化層和全連接層組成[24].卷積層和池化層配合組成卷積組,逐層學(xué)習(xí)新聞標(biāo)題局部到全局的特征[25].卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心,具有權(quán)值共享和局部連接的特征[26].卷積公式為s(t)=(X·W).其中X為擴展后標(biāo)題詞向量的輸入和字向量的輸入,W為卷積核,操作符(·)表示卷積,二維卷積如下公式所示:
(3)
得到的結(jié)果作為激活函數(shù)的輸入,經(jīng)過激活函數(shù)處理后為ci,j=f(s(i,j)+b),b為偏置項,激活函數(shù)f常為sigmoid非線性激活函數(shù)或tanh非線性激活函數(shù),relu非線性激活函數(shù),因為sigmoid、tanh函數(shù)存在計算代價大,梯度消失等缺點,本次卷積神經(jīng)網(wǎng)絡(luò)選擇relu非線性激活函數(shù).
新聞標(biāo)題經(jīng)過雙路卷積后,通過最大池化函數(shù)組合所有的局部特征ci,j產(chǎn)生最大值.對于n個卷積核,生成n個特征向量,選用幾種不同大小的卷積核,生成不同類型的特征向量.全連接層處于卷積神經(jīng)網(wǎng)絡(luò)的最后[27].通過多層的卷積層與池化層處理后,將原始數(shù)據(jù)映射到隱含的特征空間[28].將不同卷積核得到的不同類型特征向量連接起來,再將字向量和詞向量2種不同表達方式得到的特征向量拼接起來.
此次結(jié)合字向量與詞向量設(shè)計實現(xiàn)了雙路卷積神經(jīng)網(wǎng)絡(luò)的新聞標(biāo)題分類模型,從兩種不同的向量表示中分別抽取文本特征,極大地豐富了新聞標(biāo)題的特征信息.字向量和詞向量混合的雙路卷積神經(jīng)網(wǎng)絡(luò)模型如圖1所示.
第1層為輸入層,把擴展后的新聞標(biāo)題分別劃分成不同字和不同詞語輸入到雙路CNN模型中,輸入新聞標(biāo)題均為數(shù)字化處理后的字和詞.第2層為embedding層,embedding將數(shù)字化后得到每個數(shù)轉(zhuǎn)換為預(yù)先訓(xùn)練好的字向量和詞向量,將數(shù)字化的輸入形式變?yōu)橄蛄康妮斎胄问?第3層為雙路卷積神經(jīng)網(wǎng)絡(luò)的卷積層,向量經(jīng)過卷積核后非線性映射,主要負責(zé)提取句子層的特征.第4層池化層,提取卷積層中的最大的幾個特征.第5層特征拼接,將字向量和詞向量提取的特征進行拼接.第6層分類器,分類器根據(jù)新聞標(biāo)題提取的特征,將新聞標(biāo)題分類結(jié)果輸出.
例如,學(xué)??梢砸园嗉墳閱挝唤Q群,由群管理員邀請學(xué)生家長加入,使家?;踊顒幼兊酶痈咝?。尤其是在社會節(jié)奏極快的當(dāng)下,學(xué)生家長要忙于自己的本職工作,因此便少有時間能夠同教師和校方就子女的教育問題及在校表現(xiàn)等進行溝通。而當(dāng)QQ群建立之后,家長便可以通過這一線上溝通工具同教師、校方就子女的學(xué)習(xí)問題以及在校表現(xiàn)進行線上溝通,這樣便縮短了家庭教育同學(xué)校教育之間的距離。
傳統(tǒng)的基于深度學(xué)習(xí)的文本分類方法在提取完特征后會常采用softmax損失函數(shù)作為代價函數(shù)實現(xiàn)文本分類,本次提出采用雙路神經(jīng)網(wǎng)絡(luò)提取特征與決策森林的方法結(jié)合實現(xiàn)新聞標(biāo)題分類.
決策森林是決策樹的組合形式[29].使用決策森林的方法對新聞標(biāo)題進行分類,需要從輸入的詞向量和字向量結(jié)合的雙路卷積神經(jīng)網(wǎng)絡(luò)提取到文本特征,隨后采用決策森林分類.在傳統(tǒng)的決策樹中,分裂節(jié)點是二值的,即它決定了經(jīng)過這個節(jié)點以后是向左走還是右走,并且結(jié)果一旦確定不能更改,這導(dǎo)致網(wǎng)絡(luò)有可能在當(dāng)前節(jié)點上是最優(yōu)的,但是最后的分類效果并不是最優(yōu)的.本次使用深度學(xué)習(xí)和決策森林結(jié)合的分類模型,在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,使用梯度下降法對決策森林的分裂參數(shù)進行調(diào)整.采用概率決策森林的模型[30],其中dn為決策節(jié)點,π為葉子節(jié)點最終的預(yù)測函數(shù).即每個節(jié)點的分裂代表1個分裂概率,采用sigmoid函數(shù)作為分裂節(jié)點對應(yīng)的概率值.
sigmoid函數(shù)把輸入到樹形結(jié)構(gòu)的值壓縮在(0,1)開區(qū)間中.使用概率來劃分左右子樹,當(dāng)左子樹為激活函數(shù)的概率值,右子樹就為剩余的概率值.數(shù)據(jù)集中的新聞標(biāo)題經(jīng)過特征提取后可表示為向量Wk,決策樹每個節(jié)點的分裂函數(shù)如下公式:
(4)
其中f(x;θ)的公式為如下所示,theta表示樹形結(jié)構(gòu)的分裂參數(shù).
f(x;θ)=θΤx
.
(5)
根據(jù)樹形結(jié)構(gòu)的深度,l↙n表示l屬于節(jié)點n的左子樹情況為真,l↘n表示l屬于節(jié)點n的右子樹的情況為真,N表示總共的節(jié)點數(shù).樹的每個節(jié)點的路由決策見圖2所示.樣本x到達某葉子節(jié)點的概率如下公式所示:
(6)
(7)
卷積神經(jīng)網(wǎng)絡(luò)中每個節(jié)點單元的輸出作為分離節(jié)點決策函數(shù)(d1,d2,d3,...,dn)的輸入?yún)?shù),決策采用sigmoid函數(shù).知道決策函數(shù)后,可以計算其路徑函數(shù),每棵樹的根節(jié)點,其路徑賦予的值是1,然后乘以該節(jié)點的決策函數(shù)值d,得到左節(jié)點的路徑函數(shù)為(1*d),右邊子節(jié)點的路徑函數(shù)值為1*(1-d),以此類推,可以計算出每棵決策樹的路徑函數(shù).
最終的損失函數(shù)定義為L(θ,π;x,y)=-log(PT[y|x,θ,π]),利用反向傳播法,更新節(jié)點的分裂參數(shù)theta和葉子節(jié)點的分布參數(shù)π的值.
實驗數(shù)據(jù)是公開數(shù)據(jù)集NLPCC2017新聞標(biāo)題數(shù)據(jù)集,包括entertainment、food、travel、world、history、tech、military、story、essay、sports、game、discovery、finance、car、fashion、society、regimen、baby 18個新聞標(biāo)題類,其中history、military、baby、world、tech、game、society、sports、travel、car、food、entertainment、finance、fashion類分別有10 000個訓(xùn)練樣本,discovery、story、regimen、essay類別分別有4 000個訓(xùn)練樣本,總共有156 000個訓(xùn)練樣本.驗證集和測試集樣標(biāo)題總共有36 000個,此次選擇18 000個作為驗證集新聞標(biāo)題,18 000個作為測試集新聞標(biāo)題.
僅用單一詞向量表示新聞標(biāo)題,采用卷積神經(jīng)網(wǎng)絡(luò)對擴展后的新聞標(biāo)題進行分類,訓(xùn)練集和驗證集準(zhǔn)確率隨迭代次數(shù)變化如下圖3所示,驗證集的準(zhǔn)確率達76.6%.標(biāo)題擴展后的單一詞向量在卷積神經(jīng)網(wǎng)絡(luò)中對新聞標(biāo)題進行分類,訓(xùn)練集損失值隨迭代次數(shù)變化如下圖4所示.從圖中可以看出當(dāng)?shù)螖?shù)為5 100左右的時候,損失速度逐漸變緩直至最后收斂.
用字詞向量表示新聞標(biāo)題,采用雙路卷積神經(jīng)網(wǎng)絡(luò)對擴展后的新聞標(biāo)題分類,訓(xùn)練集和驗證集準(zhǔn)確率隨迭代次數(shù)變化如下圖5所示,驗證集的準(zhǔn)確率達79.8%.標(biāo)題擴展后的字詞混合向量在雙路卷積神經(jīng)網(wǎng)絡(luò)中分類,訓(xùn)練集損失值隨迭代次數(shù)變化如下圖6所示.從圖中可以看出當(dāng)?shù)螖?shù)為4 600左右的時候,損失速度逐漸變緩直至最后收斂.對擴展后的新聞標(biāo)題進行字詞混合兩種向量表示的雙路卷積神經(jīng)網(wǎng)絡(luò)與一種詞向量表示的卷積神經(jīng)網(wǎng)絡(luò)方法進行對比,結(jié)果表明使用字詞混合的雙路卷積神經(jīng)網(wǎng)絡(luò)比單一詞向量表示的神經(jīng)網(wǎng)絡(luò)驗證集準(zhǔn)確率提高約3%.
用字詞向量表示新聞標(biāo)題,采用深度神經(jīng)決策森林方法對擴展后的新聞標(biāo)題分類,訓(xùn)練集和驗證集準(zhǔn)確率隨迭代次數(shù)變化如下圖7所示,標(biāo)題擴展后在深度神經(jīng)決策森林模型上驗證集的準(zhǔn)確率達到82.2%.標(biāo)題擴展后的字詞混合向量使用深度神經(jīng)決策森林方法分類,訓(xùn)練集損失值隨迭代次數(shù)變化如下圖8所示.從圖中可以看出當(dāng)?shù)螖?shù)為2 600左右的時候,損失速度逐漸變緩直至最后收斂.
評判標(biāo)準(zhǔn)除準(zhǔn)確率外,還有精確率、召回率、f1-score值以及混淆矩陣.用以上深度學(xué)習(xí)方法預(yù)測測試集新聞標(biāo)題分類,預(yù)測結(jié)果的對比情況如表2所示.
表2 預(yù)測結(jié)果對比 %
從測試集結(jié)果看,使用字詞混合的雙路卷積神經(jīng)網(wǎng)絡(luò)比單一詞向量的卷積神經(jīng)網(wǎng)絡(luò)在準(zhǔn)確率、精確率、召回率以及F1-score上高,表明使用字詞混合的雙路卷積神經(jīng)網(wǎng)絡(luò)可以增加新聞標(biāo)題的句子特征.使用深度神經(jīng)決策森林方法比其他兩種方法取得的準(zhǔn)確率、精確率、召回率、F1-score高,表明使用概率決策森林方法比深度學(xué)習(xí)中softmax分類函數(shù)在新聞標(biāo)題分類問題上表現(xiàn)出更好的分類優(yōu)勢.
首先針對新聞標(biāo)題特征較少的問題,使用3種方法擴展;其次雙路卷積神經(jīng)網(wǎng)絡(luò)可以自主提取新聞標(biāo)題的特征,在分類算法方面,決策森林表現(xiàn)出分類優(yōu)勢,將2種方法結(jié)合提出深度神經(jīng)決策森林算法.從新聞標(biāo)題分類的實驗結(jié)果看,此次提出的方法優(yōu)于僅使用卷積神經(jīng)網(wǎng)絡(luò)方法和雙路卷積神經(jīng)網(wǎng)絡(luò)方法.
由于故事類和歷史類,故事類和社會類,養(yǎng)生類和食物類,娛樂類和時尚類,它們之間劃分的界限不是很清晰,在新聞標(biāo)題分類的過程中容易混淆;其次標(biāo)題類別數(shù)較多、有些標(biāo)題沒有明顯特征,還有受歧義詞等影響,造成一些標(biāo)題分類判斷錯誤.本次使用的深度神經(jīng)決策森林方法為之后的深度神經(jīng)網(wǎng)絡(luò)與機器學(xué)習(xí)方法相結(jié)合實現(xiàn)端到端融合的文本分類提供一些思路.
針對新聞標(biāo)題分類存在的問題,將來打算在以下幾個方面進行研究:
1) 中文分詞,中文分詞對未登錄的詞識別和歧義詞切分較為棘手,有待改善算法來解決.
2) 未來引入更大的語料庫,對詞向量進行更理想的表示.
3) 短文本的特征擴展進行進一步研究.
4) 深度神經(jīng)網(wǎng)絡(luò)中參數(shù)的調(diào)節(jié)問題.在訓(xùn)練過程中參數(shù)調(diào)節(jié)是至關(guān)重要的,參數(shù)確定的越好,最后的訓(xùn)練模型越好,準(zhǔn)確率越高.
5) 大量文本處理需要很久的時間,海量數(shù)據(jù)分類效率比較低,未來可以使用分布式平臺使算法的時間效率提高.
6) 深度學(xué)習(xí)中的一些方法與機器學(xué)習(xí)中決策森林方法實現(xiàn)端到端融合的模型可以進一步的研究.