孫 鑫,王厚峰
(北京大學 計算語言學教育部重點實驗室,北京 100871)
口語對話系統(tǒng)、語音助手、自動客服等是當前自然語言處理研究的熱點。這些應用的成功不僅取決于語音內容的識別,更在于對句子含義的理解。和自動語音識別(automatic speech recognizer, ASR)是將說話人的語音轉化為文字序列不同,口語理解(spoken language understanding, SLU)側重于確定口語問句包含的意圖[1],并提取出相應的約束條件,再交給對話或任務管理器(dialog or task manager, DM)[2],就可以滿足用戶的特殊需求。ASR、SLU和DM順序連接構成了典型的面向實際目標的會話理解系統(tǒng)[2],是自動客戶服務等應用的關鍵構成部分。本文研究SLU中的意圖識別和約束條件分析,為口語理解提供幫助。
意圖識別(intent determination, ID)旨在確定一句話的意圖,可以看成分類問題。事先在該領域定義各種可能的意圖類別,再用分類方法將問句分到某類之中。約束條件分析(slot filling, SF)則是提取出達成意圖的關鍵信息,可以看成序列標注問題,即將關鍵詞標注為特定標簽,其他詞被標注為普通標簽。
表1中,我們采用In/Out/Begin(IOB)標簽來標注“西安到拉薩8月1號到5號有沒有打折的飛機票”這句話?!拔靼病北粯俗槠瘘c,“拉薩”為終點,“8月1號到5號”被標注為出發(fā)時間,“打折”是票價要求。這句話的意圖是“查機票”。
表1 ID和SF問題樣例
意圖和約束條件這兩個問題通常被當作獨立的兩個問題處理, 前者可以用各種機器學習的分類方法,如支持向量機(support vector machine, SVM)、邏輯回歸等解決;后者可以用序列標注模型實現(xiàn),如條件隨機場(conditional random field, CRF)、循環(huán)神經網(wǎng)絡(recurrent neural networks, RNN)等。但這兩個問題是相關的,兩種信息可以相互幫助、相互影響[3],例如,“查機票”類型的問句,很可能出現(xiàn)“起點”“終點”“時間”這類標簽;反過來,這些標簽的出現(xiàn)也很可能意味著問句的意圖是“查機票”。目前已有研究采用聯(lián)合模型,同時識別意圖和提取出關鍵信息。
單一模型將意圖識別和約束條件分析作為兩個獨立的問題。
意圖識別是分類問題,可以使用分類方法求解,如SVM模型[4]、Adaboost方法[5]等。這類傳統(tǒng)分類方法的一般步驟是,提取特征作為問句的輸入,再用訓練好的分類模型進行多分類;缺點是需要人工設定特征。當數(shù)據(jù)集發(fā)生變化時,需要重新設計特征。這往往會演變成特征設計、特征選取等問題,失去了對課題本質的關注。
約束條件分析一般被視為序列標注問題,條件隨機場[6]是解決這類問題的經典方法。這類方法一般步驟是,將訓練數(shù)據(jù)中的被標注序列和標簽看作很多節(jié)點,設計兩個或多個節(jié)點之間的關系作為特征,訓練出這些特征的權重。最后在測試數(shù)據(jù)集上,將更能反映這些特征的標簽序列作為結果;缺點同樣是需要人工設定特征模板。
深度學習方法可以避免人工構建特征,例如,RNN方法[7]及各種改進模型如LSTM、GRU等。這類方法在計算每個詞標簽的概率時,是在局部進行歸一的,而局部歸一容易出現(xiàn)偏置[8]。CRF方法是全局歸一,關注整個標簽序列占所有可能標簽序列的概率。結合CRF的RNN模型[8]可以提高約束條件分析的效果。不過,這種方法只關注單個問題,沒有解決意圖識別問題,忽略了意圖識別模塊帶來的額外信息。
文獻[3]提出了基于RNN的聯(lián)合模型,以GRU作為基本單元,同時借鑒CRF的思想,在目標函數(shù)中加入了標簽狀態(tài)轉移的評估。缺點是在解決意圖識別問題時,只是取樣了GRU每次輸出的最大值,有信息損失。其次,雖然加入了標簽之間的轉移評估,但是仍然沒有在全局考慮序列的概率。文獻[9]在處理意圖識別問題時,使用了注意力機制,能較好地區(qū)分哪些詞對分類起到了更大的作用,缺點仍然是約束條件分析時,簡單地使用softmax計算概率,沒有考慮整體序列的概率分布,有標注偏置的隱患。
綜上所述,當前RNN聯(lián)合模型沒有很好地兼顧意圖識別和約束條件分析兩個方面,前者需要給有用的詞匯更大的權重,提取更有用的信息,簡單取最大值的操作會損失信息;后者需要在整體標簽序列上計算概率,可以避免標注偏置問題。
基于LSTM的聯(lián)合模型的基本框架如圖1所示。
圖1 常規(guī)處理模型
設置詞向量矩陣Eemb∈(|V|+1)*|e|,|e|表示詞向量維數(shù),|V|表示總詞數(shù),增加一行作為取上下文窗口時空白詞的詞向量。采用詞向量和上下文窗口,將當前詞與窗口內的詞的詞向量連接,作為當前xt,輸入到LSTM單元,設置取樣前后各d個詞匯,如式(1)所示。
其中,e(wt)表示當前詞wt的詞向量,相當于在詞向量表Eemb中查詢到這個詞對應的那一行向量。向量e(wt)∈|e|,向量xt∈(2d+1)|e|,“[]”表式向量的簡單拼接。將xt輸入到正反LSTM模塊中,正反兩個模塊分別使用各自的一套參數(shù)。參數(shù)參數(shù)正向LSTM的公式[10]如式(2)~(7)所示。
本文引入注意力機制實現(xiàn)意圖分析,通過增加CRF識別約束條件。
圖2所示的框架不再和其他模型一樣直接用softmax函數(shù)計算每個標簽的概率,而是借鑒鏈式CRF[6]的方法考慮標簽之間的轉移和整體上標簽序列的概率。從單個時刻看,當前詞對應的標簽都有相應分數(shù), 分數(shù)越大, 對應標簽越有可能;從標簽序列的整體來看,前后標簽有轉移分數(shù),分數(shù)越高,越可能出現(xiàn)這種標簽的轉移。將這兩個分數(shù)相加,分數(shù)最高的標簽序列就是預測結果。先對隱藏層輸出做預處理,如式(9)所示。
圖2 CRF機制
其中,Wcrf∈|S|*|h|,scorest,bcrf∈|S|,|S|表示標簽個數(shù)。向量scorest每個元素表示對應標簽的分數(shù),分數(shù)越大越有可能。同時設置轉移矩陣Etrans∈(|S|+2)*(|S|+2),表示標簽之間的轉移分數(shù),在|S|個標簽的基礎上增加了“開始”和“結束”兩個標簽。一個標簽序列的總分數(shù)是由每個標簽的分數(shù)和它們之間的轉移來決定的,如式(11)所示。
其中,s1:T表示標簽序列,時刻總個數(shù)T等于|L|,也就是該詞語序列的長度。scoretotal(s1:T)是對該標簽序列的總分數(shù)的衡量。Etrans(st-1,st)表示轉移矩陣Etrans第st-1行,第st列的值,即t-1時刻的標簽到t時刻標簽的轉移分數(shù)。scorest(st)表示scorest的第st個元素,即當前標簽是st時的分數(shù)。s0和sT+1分別為“開始”和“結束”標簽,它們對應的scorest(s0)和scorest(sT+1)取零。為了對標簽序列的整體進行概率歸一,本文借用softmax對總分數(shù)進行概率轉換,如式(12)所示。
訓練時,約束條件分析部分的損失函數(shù)如式(14)所示。
即對正確標注該序列的概率的對數(shù)值取反,化簡之后是兩個對數(shù)值的差值。該模塊增加了參數(shù)Etrans、Wtanh、btanh、Wcrf、bcrf。
Attention機制如圖3所示。
圖3 Attention機制
接下來對這個向量表示hintent進行處理,如式(17)、式(18)所示。
其中,ointent的每個元素代表對應意圖類別的概率,取其中概率最大的類別作為預測類別。Wintent∈|I|*|h|,ointent、bintent∈|I|,|I|表示意圖類別個數(shù),ointent(i)表示向量ointent的第i個元素,即該句意圖為i的預測概率。意圖識別模塊的損失函數(shù)如式(19)所示。
CRF-attention-LSTM模型訓練的目標函數(shù)也是把所有句子的損失相加,如式(20)所示。
式(20)就是在當前參數(shù)為θ的情況下,將所有訓練集句子的損失按權重求和。該模塊的參數(shù)是Wmeasure。
本文在兩個數(shù)據(jù)集上進行實驗,分別是中文數(shù)據(jù)集(表2)和英文數(shù)據(jù)集(表3)。
中文數(shù)據(jù)集的相關情況如表2所示,是從“百度知道”中爬取后加工得到的,包括三個領域,即航班、天氣和快遞相關的問題。
英文數(shù)據(jù)集是口語理解問題中最常用的ATIS數(shù)據(jù)集,如表3所示。該數(shù)據(jù)集還包含詞語的類型信息。有研究[12]認為,類型信息在SLU問題中是不常見的,所以本文不使用這種額外的信息。
表2 中文數(shù)據(jù)
表3 英文數(shù)據(jù)
本文使用準確率來評估意圖識別。在ATIS數(shù)據(jù)集中,有些數(shù)據(jù)可能有不止一個意圖,本文按照文獻[2]的方法,只要預測意圖在正確意圖之列就算作預測正確。
實驗使用了F1-分數(shù)來衡量約束條件分析結果,一個約束條件提取正確表示它的范圍和類型都是正確的。F1-分數(shù)由通用的CoNLL評價腳本*http://www.cnts.ua.ac.be/conll2000/chunking/output.html.獲得。
3.3.1 中文數(shù)據(jù)集中的baseline
SVM用于意圖識別,提取的特征主要是一系列關鍵字是否存在的二元特征;CRF方法用于約束條件分析。另外,本文也同幾種不同的RNN模型比較了實驗效果,其中,RNN-ID和RNN-SF分別為普通RNN模型單獨解決這兩個問題時的方法,RNN-joint為普通RNN聯(lián)合模型,bi-RNN-joint為雙向RNN聯(lián)合模型,bi-LSTM為雙向LSTM聯(lián)合模型,它們在SF問題上直接用softmax處理取最大概率的標簽,在ID問題上用最大池取樣作為整句的代表向量。CRF-attention-LSTM為本文方法,結合了CRF和attention的雙向LSTM聯(lián)合模型。
3.3.2 英文數(shù)據(jù)集中的baseline
SVM: 文獻[6]使用前后向移動序列化SVM分類器,用于約束條件分析。
CRF: 文獻[7]提供的baseline。
RNN: 文獻[7]提供的RNN約束條件分析方法。
Boosting: 文獻[2]使用了AdaBoost.MH方法處理意圖識別方法。
Sentence simplification: 文獻[13]使用AdaBoost.MH方法處理意圖識別,用CRF處理SF。
RecNN: 文獻[14]使用的遞歸神經網(wǎng)絡聯(lián)合模型,后加入了Viterbi算法優(yōu)化對標簽序列整體的評估,模型使用了額外的語義信息。
GRU-joint: 文獻[3]使用的GRU聯(lián)合模型,在意圖識別部分使用最大池,在約束條件分析部分考慮了標簽之間的轉移。
中文數(shù)據(jù)集的實驗中,本文采用10-折交叉驗證,不使用字標注,而是將句子分詞后處理;英文數(shù)據(jù)集,使用劃分好的訓練集和測試集。模型的詞向量維數(shù)均設置為100,隱藏層維數(shù)為100,上下文窗口大小設置為1。中文數(shù)據(jù)集使用梯度下降方法更新參數(shù),初始學習率設計為0.062 7;英文數(shù)據(jù)集使用AdaDelta方法[15]更新參數(shù)。代碼使用theano進行編寫,實驗結果表明,分別使用這兩種參數(shù)更新方式,效果更好。
3.5.1 中文數(shù)據(jù)集實驗結果與分析
中文語料實驗結果如表4所示。
表4 中文語料實驗結果
從表4可以看出,在中文數(shù)據(jù)集上,先采用了經典的分類方法SVM和序列標注方法CRF。最簡單的RNN模型分別獨立處理意圖識別和約束條件分析,均超過了SVM和CRF的效果,只是數(shù)據(jù)量較少的“快遞”領域在意圖識別上稍有下降。RNN能捕獲長距離的依賴關系,在數(shù)據(jù)量充足時更加明顯。
RNN聯(lián)合模型相比較RNN單一模型,效果有所下降,只是在“天氣”領域的意圖識別任務上有提高。雙向的RNN聯(lián)合模型在普通RNN聯(lián)合模型基礎上有了一定的提升,說明后向的信息包括了一些有用的內容,只是在“天氣”領域效果略有下降。這可能是因為天氣領域的標簽最少而類別最多,它的局限不在于前后向的信息,而在于模型本身處理、記憶信息的能力。雙向的LSTM聯(lián)合模型基本提高了各個領域的效果,因為LSTM相較普通RNN更能甄別、保留有用信息,分辨能力更強大。
最終的CRF-attention-LSTM模型,基本達到了最好的結果,只是在第三個領域稍低于之前的方法,因為第三個領域的數(shù)據(jù)量較少,不同標簽的數(shù)量分布不均,之前的簡單模型更適合它的復雜度,即便如此,最終模型在約束條件識別上的效果也與它們基本持平。
Attention模塊的效果示例如圖4所示。在這兩個例子中,模型能夠較好地聚焦在關鍵詞上,顏色越深、數(shù)值越大,說明這個詞越重要。
圖4 attention結果示例
在中文數(shù)據(jù)集的實驗表明,RNN模型能夠較好地解決意圖識別和約束條件分析問題;當改為雙向LSTM模塊之后,效果更佳;而引入CRF和attention的LSTM聯(lián)合模型,能夠在兩個問題上更好地利用信息進行分類和標注,達到最優(yōu)的效果。
3.5.2 英文數(shù)據(jù)集實驗結果與分析
為了驗證所提模型CRF-attention-LSTM的有效性,本文使用英文數(shù)據(jù)集ATIS進行了實驗。有些工作使用了ATIS中的額外信息,比如詞的類型信息、語義信息等,本文挑選了一些沒有使用詞的類型信息的相關結果作為比較,結果如表5所示。
表5 英文語料實驗結果
對于單一模型而言,CRF能比SVM更好地處理序列標注問題,RNN因為更能捕獲長距離依賴,效果更好。Sentence simplification不是嚴格意義上的聯(lián)合模型,它使用了不同的分類器處理兩個問題,取得了較好的結果。RecNN結合了語法信息和深度學習,但不適合這個數(shù)據(jù)集,效果不佳。本文提出的CRF-attention-LSTM在約束條件的分析上好于各種baseline,在意圖識別上略低于GRU-joint模型。這表明,本文所提方法在解決意圖識別和約束條件分析上是有效的。
本文提出了結合CRF和attention機制的LSTM聯(lián)合模型,在意圖識別部分通過attention提取和篩選有用的詞語用于分類任務,在約束條件分析部分利用CRF方法,對標簽序列整體上進行歸一化。通過在中文和英文數(shù)據(jù)集上進行實驗比較,驗證了方法的有效性。結合CRF能提升模型整體評估標簽序列的能力,attention可以提高信息篩選能力,在詞語中選擇更重要的詞匯用于分類。
本文將中文數(shù)據(jù)集分為三個領域進行實驗,主要是考慮到了SLU任務中本身就有區(qū)分領域這一模塊,意圖識別和約束條件分析就是在領域確定的情況下進行處理的,也可以合在一起進行實驗,這樣數(shù)據(jù)量充足,也便于比較,只是和現(xiàn)實中SLU任務的真實情況不太相符。在后續(xù)工作中,可以加入ATIS數(shù)據(jù)集中的詞語類型信息,和更多利用了這些額外信息的模型進行對比,以更好地驗證模型效果。
[1] Wang YY, Deng L, Acero A. Spoken language understanding[J]. IEEE Signal Processing Magazine, 2005, 22(5):16-31.
[2] Tur G,Hakkani-Tür D, Heck L. What is left to be understood in ATIS?[J]. Spoken Language Technology Workshop, 2011,29(2):19-24.
[3] Zhang X, Wang H. A joint model of intent determination and slot filling for spoken language understanding[C]//Proceedings of the 25th International Joint Conference on Artifical Intelligence, 2016.
[4] Haffner P, Tur G, Wright J H. Optimizing SVMs for complex call classification[C]//IEEE International Conference on Acoustics. CiteSeer, 2003:I-632-I-635 vol.1.
[5] Schapire R E, Singer Y. BoosTexter: a boosting-based system for text categorization[J]. Machine Learning,2000,39(2-3): 135-168.
[6] Raymond C, Riccardi G. Generative and discriminative algorithms for spoken language understanding[C]//Proceedings of INTERSPEECH-2007,2007: 1605-1608.
[7] Mesnil G, Dauphin Y, Yao K, et al. Using recurrent neural networks for slot filling in spoken language understanding[J].IEEE/ACM Transactions on Audio Speech & Language Processing, 2015, 23(3):530-539.
[8] Yao K, Peng B, Zweig G, et al. Recurrent conditional random field for language understanding[C]//Proceedings of IEEE International Conference on Acoustics, Speech and Signal Processing. IEEE, 2014:4077-4081.
[9] Liu B, Lane I. Attention-based recurrent neural network models for joint intent detection and slotfilling[J]. arXiv preprint arXiv:1609.01454, 2016.
[10] Hochreiter S, Schmidhuber J. Long short-term memory[J]. Neural Computation, 1997, 9(8):1735.
[11] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.
[12] Mesnil G, He X, Deng L, et al. Investigation of recurrent-neural-network architectures and learning methods for spoken language understanding[C]//Proceedings of Interspeech 2013. 2013: 3771-3775.
[13] Tur G,Hakkani-Tur D, Heck L, et al. Sentence simplification for spoken language understanding[J]. 2011, 125(3):5628-5631.
[14] Guo D, Tur G, Yih W T, et al. Joint semantic utterance classification and slot filling with recursive neural networks[C]//Proceedings of Spoken Language Technology Workshop (SLT), 2014 IEEE. IEEE, 2015:554-559.
[15] Zeiler M D. Adadelta: an adaptive learning rate method[J]. arXiv preprint arXiv:1212.5701, 2012.