摘 要:意圖識別是自然語言處理中一個重要部分。在人工智能熱潮前,對于文字信息特征提取的方法非常有局限性,數(shù)據(jù)分析中文字信息往往被舍去。在深度神經(jīng)網(wǎng)絡取得突破后,自然語言處理向前跨越了一大步。意圖識別就是其中一個重要應用,它通過某人一段評論或一段話識別其意圖。本文在卷積神經(jīng)網(wǎng)絡模型基礎上,加入注意力機制,將正確率從60%提升到了63.8%。
關(guān)鍵詞:意圖識別;注意力機制;卷積神經(jīng)網(wǎng)絡;GRU網(wǎng)絡
隨著人工智能的興起,文本數(shù)據(jù)挖掘受到了人們的廣泛關(guān)注。文本的情感分析、意圖識別是其中重要的應用。識別語言中的意圖,難點在于如何提取句子中的特征。Harris Z S提出的Bag-of-Words模型,有三個問題:一是喪失了詞語之間先后順序信息;二是每個句子中都有很多無用詞語,對建模造成干擾;三是語言中詞的個數(shù)有很多,在建模時存在維數(shù)爆炸和矩陣稀疏問題。Kim Y首次將卷積神經(jīng)網(wǎng)絡應用在文本分類上,是卷積神經(jīng)網(wǎng)絡在自然語言中的有效應用。
一、研究設計
(一)模型建立
對文字進行分析處理,首先要將文字轉(zhuǎn)化成可以計算的數(shù)字,然后才能建模分析。先定義一個漢字字典,本文采用的是15000字的漢字字典,幾乎涵蓋所有簡體字。將每個字按照某種順序轉(zhuǎn)化成獨熱編碼,也就是一個由0-1組成的長度為15000的向量,在各自的維度上為1,其他維度都為0。通過獨熱編碼與映射矩陣Mi,j相乘可以得到各自的k維向量(見圖1),例如“下”字映射后的向量為M1,j。M為模型的參數(shù),最初是給定的隨機值。這個映射矩陣的好處在于降低了維度和獨熱編碼的稀疏性。
模型的主體結(jié)構(gòu)是Kim Y的卷積結(jié)構(gòu)的變形。V∈Rk是一個k維的矩陣(見圖2),這個矩陣是通過Mi,j矩陣映射而來,每個字都對應了自己的一個向量Vi。相比于Kim Y直接進行卷積的方式,本文加入了注意力機制。V1不再完全由映射矩陣得到,而是與整個句子中的每個字都進行了相似度的計算,通過加權(quán)和的方式,V1得到了重新的表征。這樣做的好處在于每個字都包含了句子的部分信息,并且不同的字對于句子中的不同部分關(guān)注程度不一樣,每個字都更加關(guān)注與自己相似的部分,向量的表達能力更強。經(jīng)過了注意力機制之后,相比于Kim Y的單層卷積,本文采用了3種不同的卷積核,分別在相鄰的3個字、4個字和5個字進行了卷積和池化運算,再將他們的結(jié)果進行拼接,通過一個全連接進行分類輸出,計算模型的損失。最終的損失函數(shù)采用的是一個交叉熵的變形,多分類的交叉熵只用了標簽為1的那個維度上的值與1進行比較來計算損失,在其他維度上的損失都是0,不參與損失計算的。本文的損失函數(shù)將其他維度的損失與0進行比較,同樣參與了損失的計算。
n表示一個batch的數(shù)量,m表示類別的數(shù)量,樣本進入模型經(jīng)過最后一層輸出全連接后為一個大小為[n,m]的矩陣。m列中,當樣本標簽為真的那一列,j值為1,其他列的j值都為0,是一個樣本在各個類別的得分,經(jīng)過softmax函數(shù)后得到的得分分布。S是對正確類別的一個微小懲罰因子。loss計算的是一個batch下的平均損失。
(二)參數(shù)設定
字向量維度設置為512維。句子長度設置為64個字,大于64個字的句子進行截斷處理,小于64個字的句子padding到64個字。卷積核選用3*3、4*4和5*5方陣,卷積核深度為128,池化層采用最大值池化。懲罰因子s取0.2。為了提高模型泛化能力,損失函數(shù)中加入了參數(shù)的L2范數(shù)正則項。
二、實驗過程
本文的數(shù)據(jù)來源于XXX公司智能客服業(yè)務線上的真實數(shù)據(jù),通過對用戶的真實提問進行意圖分類標注,并經(jīng)過去重和簡單預處理處理,得到3w條共197個類別數(shù)據(jù)。數(shù)據(jù)集存在兩個方面的問題:一是線上真實數(shù)據(jù)的噪音會比較大,并且分布非常不均衡,存在一些類別有上千條數(shù)據(jù),另一些類別只有幾十條數(shù)據(jù)的情況。二是人工標注的時候會出現(xiàn)統(tǒng)計誤差,對模型性能存在一定的影響。數(shù)據(jù)采用隨機抽樣的方式選取了90%的數(shù)據(jù)作為訓練集,剩下的10%的數(shù)據(jù)作為測試集。句子長度的選取上,既要考慮到客服系統(tǒng)大多數(shù)用戶提問時字數(shù)的分布情況,又要考慮到模型的性能,最終長度采用了64個字。
在最初的試驗中,本文采用的是分詞的預處理的方式。映射矩陣為詞向量的映射矩陣。詞對于句子來說更具有意義,就像一個“下”字,根本看不出句子的意圖,而“下載”則已經(jīng)具備了基本的意義。但是從試驗的結(jié)果來看,字向量的準確率往往比詞向量要高2%-3%。并且字向量的擴展性能更加強大,因為常用詞的個數(shù)遠遠大于字的個數(shù),15000個字幾乎可以涵蓋所有的字,但是即使只是常用詞都已經(jīng)是十幾萬了。因此,在測試集中的部分詞語在訓練集中是沒有出現(xiàn)過的,只能用unknown表示,這樣就降低了模型的泛化能力。在卷積過濾器Filter的選擇上,嘗試了在3個Filter的基礎上繼續(xù)增加,實驗結(jié)果表明無法繼續(xù)提高模型的準確性??赡艿脑蚴荈ilter增加導致參數(shù)的增加相對于3萬多個樣本過多,因此繼續(xù)增加Filter也沒有效果了。懲罰因子分別嘗試了0.1、0.2和0.3,在0.2的時候效果最好,在測試集上能提高1.5%的準確率。
三、結(jié)論
本文選擇了GRU模型和Kim Y論文中的CNN模型作為baseline進行對比。試驗結(jié)果為3次后的平均值(見表1)。GRU模型在處理序列問題上準確率確實比較高,但由于每次計算都依賴于上一次計算結(jié)果,無法并行運算。在Batch數(shù)為64,總訓練次數(shù)為3000次的情況下,花費時間是CNN模型的1.5倍。本文采用模型加入了注意力機制,并且微調(diào)了損失函數(shù)的模型,與CNN對比幾乎沒有增加時間成本,但準確率提高了2.6%,幾乎與GRU持平。通過損失函數(shù)對比圖可以看出,改進后的CNN模型收斂更快,并且在收斂過程中相比于CNN模型更加穩(wěn)定,波動性更小。因此,改進的損失函數(shù)在效果上有所提升。
參考文獻
[1]丁兆云等.微博數(shù)據(jù)挖掘研究綜述[J].計算機研究與發(fā)展,2014,51(4):691-706.
[2]張仰森等.基于雙重注意力模型的微博情感分析方法[J].清華大學學報:自然科學版,2018,(6):11-13.
[3]Le Q,Mikolov T.Distributed representations of sentences and documents[C].International conference on machine learning.2014:1188-1196.
作者簡介:
張子軒(1994.01-),男,漢族,燕山大學理學院應用統(tǒng)計專業(yè)碩士在讀,主要研究方向:應用統(tǒng)計。
(作者單位:燕山大學理學院)