楊春妮,馮朝勝,2
(1.四川師范大學 計算機科學學院,成都 610101; 2.電子科技大學 信息與軟件工程學院,成都 610054)(*通信作者電子郵箱csfenggy@126.com)
深度學習最近在語音識別領域取得了顯著成就,人機交互的方式已從最初的文本信息交互方式發展到語音交互方式,蘋果的Siri、亞馬遜的Alexa等語音交互助手的廣泛應用宣告著語音交互時代已經到來。語音交互的總體流程大致可分為自動語音識別(Automatic Speech Recognition, ASR)、口語理解(Spoken Language Understanding, SLU)、對話管理(Dialogue Management, DM)和語音合成(Text-To-Speech, TTS)四個步驟。ASR是將用戶說出的話轉化為文本,SLU是理解用戶的意圖并抽取文本中的關鍵信息,DM是對機器和用戶的對話進行管理,TTS是將機器生成的文本用語音返回給用戶。機器對于語義理解的準確率依賴于ASR的準確率,但最重要的還是依賴于SLU的準確率。
而多意圖(Multi-Intention, MI)識別是SLU中的難題,與多標簽(Multi-Label, ML)分類類似,多意圖識別難于如何準確地確定用戶有多少個意圖,用戶的這些意圖分別屬于什么類別。現有的研究方法主要分為兩種:一種是將問題轉化為傳統的分類問題;二是調整現有的算法來適應多意圖的分類,但都不能更好地解決計算量大、準確率低的問題。
本文針對如何發現句子包含多意圖、如何確定具體有幾個意圖、如何準確提取用戶多個意圖這三個問題,提出了一種結合句法特征和CNN的多意圖識別模型。該模型采用現有的智能客服系統的真實數據進行實驗,實驗結果表明,該模型在多意圖識別上具有較高的精準率和召回率,且具有較好的魯棒性和可擴展性。
意圖分類,就是對短文本進行分類。文本分類除了是語義理解的核心部分,也是信息檢索、信息過濾、情感分析等自然語言處理(Natural Language Processing, NLP)領域各個任務的重要組成部分[1]。
對于英文短文本分類問題的方法,主要分為基于規則的方法、基于傳統機器學習的方法和基于深度學習的方法。基于規則的方法首先需要人工進行規則制定,即什么關鍵詞對應什么類別。這種方式大多使用詞袋模型,從詞袋中選取句子特征;但該方法無法脫離人工制定規則的部分,且這種方式不易擴展。基于機器學習的方法通常使用分類器,如邏輯回歸、樸素貝葉斯、支持向量機等,但基于機器學習的方法都無法解決矩陣稀疏的問題,且依賴大量的標注性語料,同樣無法降低人工成本。隨著深度學習在機器視覺和語音識別上取得的顯著成效,研究者們也將其運用在文本分類任務中。文獻[2]提出的單層textCNN模型,利用文獻[3]中訓練的詞向量替換原本的句子進行CNN訓練,該模型在多個基準數據集上測試都取得了較好的效果,證明了其可以運用在多個領域的文本分類中。文獻[4]提出了一個針對短句子的循環神經網絡(Recurrent Neural Network, RNN)模型和針對長句子的長短期記憶(Long Short-Term Memory, LSTM)網絡模型,但是記憶單元深受未登錄詞(Out-Of-Vocabulary, OOV)問題的影響,所以還提出了一個基于n-gram的算法解決OOV問題,該模型比前饋神經網絡和增強型分類器有更好的效果。因CNN無記憶單元,RNN和LSTM不能局部提取文本特征,一些文獻將這兩種類型的網絡結合[5-6]。因神經網絡訓練速度緩慢,文獻[7]提出的Fasttext模型,該模型類似于文獻[3]中連續詞袋(Continuous Bag-Of-Words, CBOW)結構,以樹形結構快速訓練詞向量和文本分類,該模型的特點就是快,但采用詞袋的方式,忽略了詞語的順序。
由于中文存在句子分詞不準、詞匯量大、語義復雜、語境繁雜等問題,英文的短文本分類法不能直接使用。目前中文的短文本分類法主要分為特征擴展的方法和基于深度學習的方法。特征擴展有基于詞向量的和基于文檔主題生成——潛在狄利克雷分析(Latent Dirichlet Allocation, LDA)模型的方法。文獻[8]基于詞向量提出一種短文本特征擴展方法——WEF(Word Embedding Feature),使用多個數據庫訓練詞向量,再對詞向量進行聚類,然后用推理的方法擴展短文本的特征。文獻[9]提出了一種利用LDA的主題詞和特征分類權重相結合的特征擴展方法,并利用不同類別詞匯之間的信息差異的特征權重分布來克服LDA模型進行特征擴展的不足。基于深度學習的方式主要是利用CNN進行短文本分類。文獻[10]提出了一種結合字符和詞(Char and Phrase, CP)的雙輸入CNN模型——CP-CNN,該方法使用拼音序列的文本表征方式來替換以往的詞向量表征方式,并利用k-max降采樣策略來增強模型的特征表達能力。文獻[11]提出一種結合語義擴展和CNN的方法,對新聞數據集進行分類,首先提取標題中的信息,然后利用CNN進行語義擴展。
雖然現已提出很多方法來解決新聞數據等短文本分類問題,但是上述方法不能很好地解決對話系統中的意圖分類問題,因為對話系統中的口語句子隨意性更大,特征更難提取。
多意圖分類的研究工作類似于多標簽(ML)分類的研究。兩者的相同點是:
1)類別數量不確定,有的樣本只屬于一類,而有的樣本屬于多類;
2)類別之間有相關性、依賴性,這一問題是多標簽分類的一大難點。
兩者也有不同點,多標簽分類常用于圖書、文章等長文本,且標簽之前存在關聯性;而本文的多意圖分類用于口語短文本,意圖之間大多不具有關聯性。
目前有很多多標簽分類算法,根據解決問題的角度可分為兩類:一是轉化問題的方法;二是算法適應的方法。轉化問題是增加類別,把多個類別合成一個新的類別,再使用現有的多分類算法來解決,這是從數據的角度來解決;算法適應是針對某一多分類算法進行改進和擴展,使其可以進行處理多標簽的數據,這是從算法的角度來解決。轉化問題的代表性算法有Label power-set method[12]、Binary Relevance[13]、Calibrated Label Ranking[14]、Randomk-labelsets[15],但是這類方法必然會增加標簽個數,且需要更大的數據量,增加了算法復雜度。算法適應的代表算法有基于K最近鄰(K-Nearest Neighbors,KNN)的方法——ML-KNN(Multi-LabelK-Nearest Neighbors)[16]、基于支持向量機(Support Vector Machine, SVM)的方法——Rank-SVM(Rank Support Vector Machine)[17]和擴展標簽依賴的方法——LEAD(multi-label Learning by Exploiting lAbel Dependency)[18],這類方法是針對問題本身進行研究,更加適應多標簽的分類。隨著深度學習的快速發展,基于此的多標簽分類算法也層出不窮,如結合弱監督學習和CNN來解決圖片的多標簽分類問題[19]、結合CNN和RNN解決文本的多標簽分類問題[20]等。在國內的研究中,文獻[21]提出一種結合旋轉森林和AdaBoost分類器的多標簽文本分類法,首先利用旋轉森林來分割樣本,通過特征擴展形成新的樣本集;然后基于AdaBoost對樣本分類。文獻[22]提出一種基于隨機子空間的多標簽類屬特征提取算法——LIFT_RSM(Multi-label learning with Label specific FeaTures based on Random Subspace)算法,該方法通過綜合利用隨機子空間模型和降維方法來提取特征,從而提高分類效果。文獻[23]提出一個針對微博句子的多標簽情感分類系統,首先將語料表示為詞向量,再采用CNN模型將詞向量合為句子向量,最后將這些句子向量作為特征來訓練多標簽分類器。
上述方法解決了部分多標簽分類問題,但不能直接用來解決語義理解中的多意圖識別問題。多意圖識別問題中各個意圖只屬于一個類別,因此需要對文本進行句法分析,此外還需要對用戶進行否定情緒判斷。
本文的多意圖識別模型結合了依存句法分析、語義依存分析、詞頻-逆文檔頻率(Term Frequency-Inverse Document Frequency, TF-IDF)算法、詞向量、標準歐氏距離計算和卷積神經網絡等。該模型在下文中簡稱“模型”。
模型總體框架如圖1所示。模型由4個部分組成,分別是多意圖發現模塊(Multi-intention Discovery Module, MDM)、多意圖個數識別模塊(Size of Multi-intention Finding Module, SMFM)、意圖分類模塊(Multi-intention Classification Module, MCM)、情感極性判斷模塊(Emotional Polarity Judgment Module, EPJM)。

圖1 模型總體框架
MDM的任務是利用依存句法分析(Dependency Parsing, DP)提取句子的句法特征,根據并列關系發現句子是否包含多意圖。這一模塊可以發現句子中顯式的多意圖,且根據并列關系的個數可初步確定意圖的個數。
SMFM的任務是識別句子中多意圖的個數,即可以對MDM中顯示的多意圖個數進行判別,也可以發現隱式的意圖,主要通過計算句子中的詞語與意圖類別的關鍵詞之間的距離,距離越小,詞語與該意圖越相關。
MCM的任務是利用改進的CNN模型對處理后的句子進行意圖分類,對MCM中發現的意圖分別進行分類。用SMFM中計算的距離矩陣作為CNN模型的輸入,替換一般textCNN的輸入,突出意圖類別的特征。
EPJM的任務是正確理解用戶的意圖情感極性,過濾否定極性的意圖。前面的模塊僅僅識別了句子中包含的意圖,未進行情感判斷,EPJM通過對句子的語義依存分析,提取存在的否定極性,計算出用戶的真實意圖。
對于意圖的發現采用DP來提取句法特征。DP通過分析句子組成部分間的依存關系揭示其句法結構特征。直觀地說,DP就是識別句子中的“主謂賓”“定狀補”等語法成分,并分析各部分之間的關系。例如,“我想領優惠券,還想查詢快遞到哪兒了!”(例1)該句子的DP結構如圖2所示,該結構中包含的關系如表1所示。
在多意圖發現任務中,需要關注句子是否含有并列關系(COOrdinate, COO)。COO可以是相互關聯的不同事物,也可以是同一事物的不同方面,還可以是同一主體的不同動作。如果句子的DP結構中存在COO時,說明句子中含有多個事物或動作,也就是多個意圖。

表1 例1中包含的語義依存關系
用SDP={dpi}(i=1,2,…)表示句子s的依存關系集合,ms表示句子是否為多意圖,計算公式如式(1)所示:

(1)

圖2 例1的依存語義分析結構
2.3.1 TF-IDF提取關鍵詞
TF-IDF是一種基于統計的常用加權技術,該值的大小取決于一個詞在文檔或語料中重要度,因此常用來提取一篇文檔的關鍵詞或區別文檔的類別。其中,TF是詞頻(Term Frequency),指一個詞在一篇文檔中出現的頻率;IDF是反文檔頻率(Inverse Document Frequency),指文檔總數與包含該詞語的文檔數之商的對數。TF和IDF的公式如下:
(2)


(3)

TFIDF=TF*IDF
(4)
式(4)是TF-IDF的計算方法,在同一類文檔中出現的高頻詞,但又在所有文檔中屬低頻,產生了高權重的TF-IDF值,因此,TF-IDF高的詞語在特定一類文本中權重大且預測文本分類的能力強。在模型中,首先抽取出每一類意圖中TF-IDF值最高的詞語作為該意圖的關鍵詞。
2.3.2 基于詞向量的意圖個數識別
常用的詞向量技術是one-hot,但是該技術形成的是稀疏矩陣,且無法表示詞語和詞語之間的關系。模型中采用文獻[3]提出的方法來訓練詞向量,該模型是通過神經網絡構建的語言模型,利用上下文信息將詞語表示為低維向量,向量中的每一維都表示詞語語義,可根據向量間的距離來表示詞語的相關性。Rdim表示詞向量空間,dim表示向量空間的維度,詞語向量之間的距離就是詞語的距離,距離越小,兩個詞語就越相關。模型用加權歐氏距離(Weighted Euclidean Distance, WED)表示意圖類別中TF-IDF值高的詞和待識別句子中各個詞語的距離。WED是簡單歐氏距離的改進算法,目的是規避詞向量各維分布不均勻的情況,標準化向量各維數據的公式如下:
x*=(x-m)/a
(5)
其中:x和x*表示原始值和標準化后的值;m和a表示向量的均值和標準差。
假設有兩個n維詞向量A={x1,1,x1,2,…,x1,n}與B={y2,1,y2,2,…,y2,n},用普通的歐氏距離公式計算為:
(6)
將標準化公式代入式(6)中可得:
(7)
用類卷積操作對待識別意圖的句子進行距離計算。具體計算方式如圖3所示。

圖3 距離計算框架
假設有nword個詞語的句子表示為詞向量:
有nclass個意圖,這些意圖的關鍵詞詞向量表示為:
兩者作類卷積的操作計算距離disti,k=distance(wi,wk)。
距離矩陣DIST表示為:
計算分為兩個向量和兩個操作。兩個向量是指待識別句子的詞向量拼接矩陣(Word Embedding)和每個意圖中TF-IDF值最高的關鍵詞的詞向量。兩個操作是指類似于卷積操作和最大池化操作,首先計算待識別句子中的每一個詞與每一個類別的距離,也就是相關度,得到WED矩陣;然后通過最大池化操作提取每個詞最相關的類別,并設置一個相關度閾值,過濾掉小于該值的類別。經過計算可以識別出句子所含意圖的個數。
目前流行的意圖分類算法中fasttext速度最快,但是實驗表明fasttext模型的準確率依然不及textCNN模型。而橫向比較深度學習解決意圖分類問題的模型中,textCNN模型效果最好,本文的模型就是在該textCNN模型上進行改進。改進的CNN模型框架如圖4所示。對多意圖的識別,需突出句子的特征,因此用前面計算的距離矩陣DIST作為輸入層來替換textCNN模型[8]中的輸入,在通過一個卷積層和池化層,并經過全連接層和softmax層輸出意圖集合T。

圖4 改進的CNN模型框架
2.4.1 輸入數據的構造過程
用DIST替換原來模型中的詞向量拼接矩陣。對于單意圖分類,直接把DIST作為CNN模型的輸入;對于多意圖識別,需依次用DIST的均值替換句子中幾個和意圖分類最相關的詞,也就是對句子中的意圖進行一個一個識別,圖中灰色部分表示被均值向量替換后的向量。
2.4.2 模型訓練過程
模型訓練分為4步。
1)卷積層。設置卷積核FLT(filter)的尺寸為n*nclass,目的是提取n個上下文詞語組合的特征,共有m個FLT,所以計算后會有m個feature map,如式(8)所示:
c=Relu(∑DIST?FLT+B)
(8)
其中:B是偏置量,c是卷積層計算結果。
2)池化層。對每個尺寸的feature采用max-pooling最大池化進行采樣,然后flatten所有特征值得到全連接層的輸入。
3)全連接層、softmax層。將特征元素進行全連接操作后,通過softmax輸出10個任務類型的概率。為了防止過擬合,在全連接層使用了dropout策略,就是在計算時隨機丟掉一定比率訓練好的參數,根據Srivastava等[24]交叉驗證實驗,確定dropout為0.5的時候效果最好。反向傳播采用隨機梯度下降(Stochastic Gradient Descent, SGD)法[25]。
4)對輸出向量進行分數評判,設定分數閾值,若某個類型出現的概率最大,且超過閾值,則判定句子包含該意圖。
通常的意圖識別缺少這一環節,卻是最關鍵的環節。例如“我想查話費,不想查快遞”,模型前面的環節只能判斷用戶有查話費和查快遞的意圖,卻忽略了用戶的否定意圖,因此進行用戶情感極性判斷是必要的。模型采用語義依存分析提取句法特征進行極性判斷,判斷用戶的肯定情感和否定情感。主要是判斷分析結果中是否有否定標記mNeg(Negation marker)。上例中的語義分析提取結果如圖5所示,圖中所有標記如表2所示。
情感極性判斷后,利用式(9)計算用戶最終意圖:
Y=∑sp·class
(9)
其中,意圖class包含否定標記mNeg時,則sp為0;反之sp為1。在例2“我想查話費,不想查快遞”中,包含意圖查話費class1和查快遞class2,經過語義分析可知class2含有mNeg關系,因此用戶的最終意圖計算為:
class1*1+class2*0=class1
則上個例子中用戶的意圖為查話費。如果包含3個及以上意圖,也用同樣的方法計算。

圖5 例2的語義依存分析結構

Tab. 2 Semantic relationship in No. 2 example
實驗數據來自正在使用的千行集團智能電商客服平臺,共選取了10個類別,語料共有59 664條,詞數總計940 716個,平均句子長度為15.77。每個類別的語料分布情況如表3所示。其中,隨機劃分70%作為訓練集,剩下的30%作為測試集。

表3 分類語料分布
本實驗中評價方法分為單意圖分類和多意圖識別兩種評價指標。
3.2.1 單意圖分類的評價指標
單意圖分類的評價指標是精準率(Precision)、召回率(Recall)和F值,具體把每個分類看成分類正確和不正確這樣的二分類問題,假設用A表示模型識別的正樣本個數,B表示真正的正樣本個數,則三個指標的計算方式如下:
Precision(A,B)=(A∩B)/A
(10)
Recall(A,B)=(A∩B)/B
(11)
F=(2·Precision·Recall)/(Precision+Recall)
(12)
3.2.2 多意圖識別的評價指標
由于多意圖識別的特殊性,一個句子包含多個意圖,評估效率時需要對這些意圖預測的類別正誤都進行判斷,因此單意圖分類的評價指標不再適用于此。本實驗采用文獻[21]的評價指標,有:準確率(Multi-Intention Accuracy, MIA)、精準率(Multi-Intention Precision, MIP)、召回率(Multi-Intention Recall, MIR)。假設有|D|個多意圖樣本(xi,Yi),0≤i≤|D|。Zi=H(xi)表示多意圖分類器對待測樣本集的預測結果集合,則具體計算方法如下:
(13)
(14)
(15)
根據TF-IDF算法提取的每一類的關鍵詞如表4所示。從表4結果可以看出,提取的關鍵詞都貼近各自的類別,說明該算法的效果好,準確率高。

表4 關鍵詞提取結果
在單意圖分類實驗中,把改進的CNN模型與文獻[2]的textCNN模型和文獻[7]的fasttext模型進行對比,分別對比了3種模型對實驗數據中的10個類別的分類效果,實驗結果如圖6所示。
從圖6(a)可以看出,fasttext模型的對c1、c3、c5、c6、c7、c10分類的精準率都低于另外兩種模型,且在10個類別上的分類效果不穩定,c8和c10的精準率差距達25個百分點。說明fasttext模型對口語意圖的分類不具有普遍適應性,即難以用這一種模型適應有多種意圖且特征隱藏又復雜的情況。textCNN模型分類的精準率相對于fasttext模型更穩定,但是整體精準效果低于本文模型。本文模型分類的精準率和穩定性更高,除對c3的效果稍低于textCNN模型以外,其他類別都高于另外兩個模型。在對c6的分類結果中,分別高出fasttext模型和textCNN模型11個百分點和3個百分點;在對c10的分類結果中,分別高出fasttext模型和textCNN模型17個百分點和6個百分點。從圖6(b)可以看出:fasttext模型的召回率普遍低于另外兩個模型;textCNN模型對各個類別的召回率不穩定,高低起伏較大;而本文模型召回率普遍高于前兩個模型,且穩定性更高。從圖6(c)和圖6(d)可以看出,雖然本文模型有極少的類別的分類效果不及另外兩個模型,但是總體來看效果最好。綜上所述,本文模型對處理隨意性大、特征稀疏的句子效果更好。

圖6 3種模型的評價指標對比
多意圖分類實驗分別從客服平臺中整理了2 000條含2個意圖的句子和2 000條含3個意圖的句子,隨機打亂順序后利用訓練好的模型進行實驗。
3.5.1 距離閾值對意圖個數識別的準確率的影響
圖7展現了不同的距離閾值對意圖個數識別的影響。由圖7可以看出,閾值在0.855之前是上升趨勢,而之后呈下降趨勢,說明閾值過大會導致識別的意圖個數為0,從而降低準確率;過小則會增加意圖的個數,同樣降低準確率。最后選取0.855進行下面的實驗。
3.5.2 多意圖識別部分實驗結果
多意圖識別的部分實驗結果如表5所示,實驗隨機對含有1~3個意圖的句子進行識別。S5是含有否定情感的句子,涉及3個意圖,但實際只有2個意圖。

圖7 距離閾值與意圖個數識別準確率的關系

Tab. 5 Partial experimental results of multi-intention recognition
3.5.3 多意圖識別模型對比實驗
根據前面距離閾值與意圖個數識別的關系,選擇效果最好的0.855作為距離閾值進行多意圖識別實驗,實驗結果分別取模型迭代1~15次的結果。將本文模型與文獻[16]的ML-KNN模型和文獻[23]的CNN特征空間模型對比,結果如圖8所示。
從圖8(a)可知,三個模型的MIA值在多次迭代后都趨于平穩上升趨勢,但本文模型在整體迭代過程中分別比文獻[23]模型和文獻[16]模型平均高出10個百分點和20個百分點。從圖8(b)可知本文模型對多意圖識別的MIP值最高,分別比文獻[23]模型和文獻[16]模型平均高出25個百分點和31個百分點。從圖8(c)可知3個模型的召回率非平穩變化,在迭代過程中均有抖動,其中文獻[16]模型抖動更劇烈。綜合3個指標來看,本文模型比另外兩個模型效果更好。
為解決多意圖識別中發現意圖、抽取意圖和判別意圖類型這幾個問題,本文提出了結合句法特征和CNN的多意圖識別模型,其中利用了依存句法分析、TF-IDF、CNN等技術來解決多意圖識別問題。在10個類別的單意圖分類和多意圖識別實驗中,本文模型相比其他模型都取得了較好的效果,證明了其穩定性和有效性。
由于中文的復雜性,本文依賴于句法分析的結果;此外,僅將用戶意圖的情感粗粒度地分成兩個極性——否定和非否定,但實際上用戶表達意圖的情感更加細粒度。在今后的工作中,將對這兩個問題開展進一步的研究。