今天跟大家分享一篇來自Rokid美女工程師沈磊關於自然語言理解的文章,如果各位知乎er看了覺得有所收穫,歡迎多多留言交流呀。

by Rokid A-lab 沈磊

隨著智能對話系統的發展,其應用場景越來越多,目前已經成為了研究的熱點。一個完整的任務型語音對話系統包括下圖幾個部分[wang2016],其中主要有五大部分構成:語音識別,自然語言理解,對話管理、對話生成,語音合成。

自然語言理解,指的是分析識別為文本的用戶輸入,得到用戶的意圖和輸入中的關鍵信息。自然語言理解主要包括領域、意圖和槽的預測,如圖中畫綠色虛線的部分所示。本文將針對這一部分,即領域識別,意圖識別和槽抽取介紹主流方法和研究進展。

圖1

下面舉例說明任務式對話系統。例如,用戶說了一句話:「我想聽周杰倫的菊花臺」,需要識別出這句話的領域是音樂領域,用戶的意圖是播放,句子中的槽(關鍵信息)是「歌手」:「周杰倫」和「歌曲」:「菊花臺」。而任務式對話系統中的自然語言理解,由於語言本身的特性,有很多難點。

1.自然語言理解的難點

1.1語言的複雜性

語言本身很複雜,雖然有很多語法去描述,但是語言不是一個語法可以描述完全的。比如有用戶輸入:「這首歌太難聽了我想聽世界上最最最好聽的」,「你為什麼找了一首哈狗幫的歌我要聽bigbang的歌」,「播放風吹麥浪我不好安慰一下」,這些輸入實際上可以需要分成並列的兩句話來分析。

1.2語言的隨意性

不同於書面用語,用戶的說法很口語化,有時不符合語法,比如有播放意圖的,「有沒有什麼故事給我聽」,或者控制類的,「別講了」。

1.3語言的魯棒性

由於在語音識別的過程中會產生錯字,自然語言理解模塊需要對這些錯字有容錯和糾錯的能力。如「我想聽葫蘆娃十集」識別成了「我想聽葫蘆娃石級」,自然語言理解模塊需要能夠對內容進行抽取和糾正。

1.4語言的歧義性

比如,用戶輸入「關閉放華晨宇的山海」,用戶到底是想關閉還是播放,這個有一定的歧義。

2.規則系統

自然語言處理使用的系統可分為規則系統和機器學習模型,目前工業界的主流是規則系統。例如CMU Phoenix System,就是較早使用的規則系統。

意圖判斷和槽抽取的規則系統的方法有FST語法等。規則系統的pattern需要系統去配置,pattern的覆蓋度和準確度在某種程度上靠pattern的質量。

例如,我們需要支持「開空調」的意圖,那麼可以做如下的配置:

意圖:開空調

句式:(請|幫我)(打開|啟動)(這個|那個)?(空調|電視機|音箱)(啊|吧)?

句式可以展開成圖:

圖2

用戶輸入:「幫我打開空調」,那麼匹配路徑如圖中紅色箭頭所示:

圖3

規則系統的優點是可配置,如果需要增加支持的pattern,只需要在配置系統內加入即可。但是缺點是pattern的配置較為複雜,pattern質量較差的話影響規則系統的效果。對於前面提到的幾個問題,如問題1.1語言的複雜性,規則系統可以通過配置更複雜的pattern來進行解決部分問題,對於問題1.2語言的隨意性,規則系統可以配置更靈活的pattern來解決部分問題,但配置了複雜或者靈活的pattern,可能會使規則系統接受很多本來沒有意圖的用戶輸入,降低規則系統的準確率。

而機器學習的方法不需要系統去配置pattern,只要有標註數據,就可以進行學習。下面介紹機器學習的方法(在這裡我們也稱統計模型的方法)。

3.機器學習的方法

機器學習的方法,又分成兩種方法,生成式、判別式。生成式模型(generative model)主要採用聯合概率模型,對x和y的聯合分佈p(x,y)進行建模,然後通過貝葉斯公式來求得p(y|x), 最後選取使得p(y|x)最大的yi。判別式模型(discriminative model) 使用的是條件概率模型,直接對p(y|x)進行建模。

3.1生成式

[Horvitz and Paek 1999]使用貝葉斯網路的方法。如下圖所示。這裡的句子特徵都是人工進行處理的特徵。

圖4

生成式模型要對類條件密度p(x|yi)進行建模, 而判別式模型只需要對類後驗密度進行建模, 前者通常會比後者要複雜, 更難以建模。之後使用的機器學習模型大多是判別式模型。

3.2判別式

3.2.1.單模型

深度學習出現之前,判別式的模型主要使用SVM的方法。

判別式的方法可以使用SVM方法,[Henderson et al. 2012]分別對意圖進行多分類(早期的意圖預測應用場景較為簡單,一般都限定在同一領域),對每個種類的槽進行二分類。例如提取出可能的地點槽是「北京」,那麼將候選「北京」和句子特徵輸入二分類模型,判斷「北京」是否是真正的地點槽。如下圖所示。此方法輸入的特徵也是人工特徵。

圖5

這種方法較為依賴人工特徵的質量,而人為提取的特徵很難將句子特徵覆蓋全。並且這種方法對於每個槽都要訓練一個分類器,如果槽的數量很多就無法實現。

深度學習發展以後,判別式的方法多使用深度學習的演算法,意圖識別使用CNN對意圖進行多分類,領域分類和意圖分類較為類似。而槽的預測可以看成是標籤序列預測問題。例如句子「我想聽周杰倫的菊花臺」,標籤可以定義如下圖。標籤序列預測多使用CRF,RNN[Mesnil2015],LSTM,LSTM+CRF的模型。深度學習方法輸入的特徵也改用詞向量,這種利用大規模語料訓練出來的詞向量會包含詞語的語義信息,在一定程度上蘊含了句子的語義信息。

圖6

圖7

機器學習的方法,可以在一定程度上解決之前提出的前三個問題,可以在複雜和口語化的語句中提取出意圖和關鍵信息,也有一定的容錯能力。

圖7中這三個單個模型是順序的關係,首先進行領域分類,然後進行意圖分類,再進行槽抽取。但是這樣一來,累積的錯誤就會越來越大,假設每個模型的正確率都是0.9,但合起來的正確率會大大降低。而且意圖分類的預測結果不能影響之前的領域分類的結果,槽抽取預測的結果不能再影響之前意圖分類的結果。由此,學術界提出了聯合模型。

3.2.2聯合模型

聯合模型在聯合訓練的時候,可以互相利用信息,互相糾正錯誤,提高整體的準確率。在聯合模型中,或者將意圖看作多分類任務,槽抽取看作標籤序列預測,或者將槽抽取看作標籤序列預測,意圖作為序列的最後一個標籤進行預測。

意圖預測和槽抽取的聯合模型的架構有:CRF[Jeong2006],CNN+CRF[Xu2014],CRNN[Liu2015],RNN[Chen2016],LSTM[Liu2016a,Liu2016b],LSTM+CRF[Yu2018]。下圖所示是CNN+CRF方法的架構。

圖8

圖中X表示輸入,Y表示輸出標籤序列,Z表示意圖,h表示從輸入X經過模型得到的特徵向量,θ表示學習到的從h到Y的參數映射。彎曲的虛線部分表示模型學習到的意圖對於槽的依賴關係。

另外,還有將三個任務聯合起來使用一個模型預測的,領域和意圖預測以及槽抽取的聯合模型,如[Hakkani-Tür2016],[Shi2015],[Guo2014]。下圖是使用RNN作為預測方法的結構圖。

圖中x1, x2, x3, x4是輸入的序列,在這個圖中,為」from LA to Seattle」,」O, FromLoc, O, ToLoc」是輸出的標籤序列,」Flight」是要預測的意圖,h是輸入序列經過LSTM模型得到的特徵向量,c是模型中的上下文信息。

圖9

以上模型將領域、意圖看作多分類任務,槽抽取看作標籤序列預測。還有一些模型將槽抽取看作標籤序列預測,而領域和意圖作為序列最後的標籤進行預測。

例如句子w0, w1, w2,…, wn-1是句子的輸入序列,y1, y2,…, yn-1是預測標籤序列,而最後一個輸入wn輸入為「EOS」,對應yn的輸出是「dk_ik」,即意圖和領域相結合的標籤。如下圖所示。

圖10

以上介紹的統計模型,大多使用CNN、LSTM或其變種結構。最近谷歌提出的BERT模型,主要採用attention結構,可以學習文本單詞之間的上下文關係,未來可以嘗試用於任務型的自然語言理解。

4.總結

目前的自然語言處理模塊,無論是規則系統還是統計模型,只能部分解決前面提出的幾個問題。對於問題1.1語言的複雜性,規則系統可以通過配置解決部分問題,統計模型也可以將其中主要的意圖和槽抽取出來;對於問題1.2語言的隨意性,規則系統可以通過配置解決部分問題,統計模型也可以接受一定程度上的隨意輸入;對於問題1.3語言的魯棒性,目前統計模型有一定的容錯能力,但是不能夠糾正錯誤;對於問題1.4語言的歧義性,即使由人來判定,也不能準確地判定用戶的意圖,需要藉助其他的手段,如與用戶的進一步交互來解決。總之,目前的任務型對話系統的自然語言理解,還存在很多未解的問題,未來需要我們更多的研究和探索,去更好地理解用戶的輸入內容。

References

Xiaojie Wang, Caixia Yuan, Recent Advances on Human-Computer Dialogue, CAAI Transactions on Intelligence Technology, Volume 1, Issue 4, 2016, Pages 303-312.

Horvitz, E., & Paek, T.(1999). A computational architecture for conversation. Courses and Lectures International.

Jeong M, Lee G G. Jointly predicting dialog act and named entity for spoken language understanding[C]//Spoken Language Technology Workshop, 2006. IEEE. IEEE, 2006: 66-69.

Henderson M, Ga?i? M, Thomson B, et al. Discriminative spoken language understanding using word confusion networks[C]// Spoken Language Technology Workshop. IEEE, 2012:176-181.

Xu P, Sarikaya R. Joint intent detection and slot filling using convolutional neural networks[C]//Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing. 2014.

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, and Language Processing, 2015, 23(3): 530-539.

Liu C, Xu P, Sarikaya R. Deep contextual language understanding in spoken dialogue systems[C]//Sixteenth annual conference of the international speech communication association. 2015.

Liu, B., & Lane, I. Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling. Interspeech2016a.

Liu B, Lane I. Joint online spoken language understanding and language modeling with recurrent neural networks[J]. arXiv preprint arXiv:1609.01462, 2016b.

Chen Y N, Hakkani-Tür D, Tür G, et al. End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding[C]//INTERSPEECH. 2016: 3245-3249.

Hakkani-Tür D, Tür G, Celikyilmaz A, et al. Multi-Domain Joint Semantic Frame Parsing Using Bi-Directional RNN-LSTM[C]//Interspeech. 2016: 715-719.

Shi Y, Yao K, Chen H, et al. Contextual spoken language understanding using recurrent neural networks[C]//Acoustics, Speech and Signal Processing (ICASSP), 2015 IEEE International Conference on. IEEE, 2015: 5271-5275.

Guo D, Tur G, Yih W, et al. Joint semantic utterance classification and slot filling with recursive neural networks[C]//Spoken Language Technology Workshop (SLT), 2014 IEEE. IEEE, 2014: 554-559.

Yu S, Shen L, Zhu P C, Chen J S. ACJIS: A Novel Attentive Cross Approach For Joint Intent Detection And Slot Filling. IJCNN 2018: 1-7.

自然語言理解-從規則到深度學習,sohu.com/a/164124053_72

推薦閱讀:

相關文章