吳思賢,何勇軍,李辰陽,鄧培至
(哈爾濱理工大學 計算機科學與技術學院,黑龍江 哈爾濱 150080)
當前國內的餐廳推薦系統主要以智慧餐飲系統為主,諸如餓了么、美團等餐飲推薦軟件通過遠程網絡結合用戶地理位置等相關信息,向用戶推薦了大量的美食信息,但存在如下問題,如:搜索過程繁瑣,導致時間被浪費;不夠精確智能的挑選餐廳方式在點餐時容易出錯;預定的餐廳位置有沖突等意圖識別錯誤。現有餐廳推薦系統存在的此類問題很大程度影響了用戶體驗,因此當前急需一種方案解決餐廳推薦過程中意圖識別和實體提取的問題。
基于以上問題,國內外多位學者提出了多種解決方案。2015年Ramanand等人針對消費意圖識別,提出基于規則和圖的方法來獲取意圖模板,在單一領域取得了較好的分類效果[1]。Fuchun等人提出將樸素貝葉斯(Naive Bayes, NB)方法用于意圖識別[2]。Haffner等人提出的支持向量機(Support Vector Machine, SVM)模型在分類領域取得了較好的效果,被廣泛應用到意圖識別任務中[3]。在2005年Tur等人基于AdaBoost算法提出了一種用于自然語言意圖識別的監督方法,實驗發現更復雜更自然的表達方式會增加識別錯誤率[4]。在此基礎上Tur等人于2011年提出了一種句子簡化方法,即重新利用較少的詞匯表達相同的意圖,在相同語料的實驗上錯誤率明顯降低[5]。Jeong等人提出了一種三角形條件隨機場,通過在標準條件隨機場上增加一個額外的隨機變量來進行意圖識別[6]。以上方法都采用較為復雜的人工特征,如語法信息、韻律信息和詞匯信息等,較難捕捉文本的深層語義信息。國內也有很多關于意圖識別方面的研究。錢岳提出了基于CNN與LSTM(Long Short-Term Memory)網絡的出行消費意圖識別模型,該模型彌補了CNN不能提取深層次語義信息的缺點,并且取得了很好的性能[7]。由于短文本數據稀疏,余慧等人提出了結合短文本主題模型(Biterm Topic Model, BTM)和雙向GRU(Bidirectional Gated Recurrent Unit, BGRU)的混合模型,模型在多輪對話下的用戶就醫意圖識別的性能優于文獻所提方法[8]。
現有的意圖識別依舊存在三個難題。
(1)由于短文本內容短、受噪聲干擾較大、一詞多義等客觀問題,增加了文本向量化的難度。
(2)由于短文本特征稀疏,同時還包含較大信息量,使得單輪對話中常出現多意圖的情況,而且特征提取較為困難。
(3)對話短文本通常含有大量省略詞或者指代詞,這使得意圖識別不僅與當前對話信息有關,還受歷史對話信息影響,大大增加了意圖識別的難度。
這些問題嚴重影響了文本表示和特征提取的效果,降低了意圖識別的準確率。
現有的意圖識別方法大多只針對單一方面,要么不考慮復雜情況的影響,單純研究單個意圖識別的情況,要么只考慮某一方面。所以實際對話中的復雜條件嚴重影響了算法實際應用的性能。本文結合了注意力機制對BiLSTM(Bidirectional Long Short-Term Memory)模型進行改進,在BiLSTM模型中添加獨立存儲單元,使其作為一種能被神經網絡按需讀寫的知識庫來增強模型,改善意圖識別中無法充分利用對話歷史信息的問題,提高多輪對話下意圖識別的準確率。
本文提出的智能語音推薦方法主要分為自然語言理解部分和對話管理部分。
自然語言理解部分:識別用戶意圖、細分該任務型場景下的子場景等,主要采用LSTM來實現;采用BiLSTM實現實體識別與槽位填充,用于對話管理模塊的輸入。
基于Rasa_Core的對話管理部分:決策系統主要由長短時記憶神經網絡實現,其根據用戶意圖和實體信息選擇最優反饋方案,合理管理系統中人機對話的過程。
餐廳推薦系統框架如圖1所示。

圖1 餐廳推薦系統框架
LSTM可以充分利用對話過程的上下文對當前話語進行意圖識別。根據意圖識別在對話系統中的實際應用情況,準備充分的意圖識別數據,確定意圖識別的方案,識別前期的文本特征提取方法,制定合適的意圖識別模型,調試并確認最優的模型參數。BiLSTM模型中的兩種記憶模塊和門控制模塊既可以做到記憶歷史信息,又可對歷史信息加以控制,避免無用的歷史信息對識別結果產生負面影響。
人機對話過程中,存在用戶在單輪對話中包含不止一個意圖的情況,而在人機對話中用戶的話語大多有特征稀疏、字數少卻包含信息量多的問題,導致多意圖的識別難于準確確定用戶的意圖與用戶的意圖類別。如果仍然采用傳統的單意圖識別方法識別用戶的多個意圖,會影響用戶多意圖識別的準確性,進而影響對話系統的整體性能。因此,本文對多意圖情況進行研究,從多意圖確認以及多意圖個數識別兩個方面著手,提出一種結合句法結構與神經網絡的多意圖識別模型,改善對話系統中多意圖識別特征難以提取的問題,有效提高多意圖識別的準確率。
相較于傳統的循環神經網絡,LSTM引進了記憶單元和門機制,可以選擇性記住或者遺忘記憶單元的信息,可以體現出上下文信息之間的聯系。長短期記憶網絡結構如圖2所示。

圖2 長短期記憶網絡結構
輸入門、遺忘門和輸出門的計算公式如下:

神經單元的更新方式如下:

式中:Z為當前輸入單元狀態;WC為當前輸入單元權重矩陣。
最后的輸出表達式為:

式中,hLt是當前時刻的隱藏層。
經過以上計算,最終得到特征向量HL={hL1,hL2, ...,hLn},本結果充分考慮當前詞的前文信息,可以提取出輸入文本的全局特征表示,彌補了CNN網絡的不足。
首先對準備好的意圖識別數據進行預處理,即利用結巴分詞算法對數據做分詞處理,并將分詞后的數據通過word2vec模型訓練得到詞向量。然后將訓練好的詞向量數據輸入到LSTM層中,通過LSTM層提取數據的特征向量,再通過mean pooling層得到一個統一的向量。神經網絡意圖識別模型采用LSTM獲取語義特征,輸出不同特征下的概率,再通過softmax函數歸一化分類結果,組合模型具備易修改和智能可訓練的特點。最后將得到的向量放入softmax層進行意圖識別,得到識別結果。LSTM模型結構如圖3所示。

圖3 LSTM模型結構示意圖
為了提高計算機對人們意圖識別的準確性,我們使用多輪對話機制對人機對話內容進行意圖識別。多輪對話系統下的短文本意圖識別框架分為四個部分,如圖4所示,分別為編碼模塊、記憶模塊、門控制模塊和分類模塊。在這四個模塊之前對輸入的對話信息進行向量化表示,便于下游任務的處理。

圖4 文本意圖識別框架
記憶模塊是多輪對話下意圖識別的關鍵組成部分,它存儲了從歷史對話中抽取的語義信息,確保有需要時可以讀取這些信息,現有的數據也可以方便地寫入。結合實際情況,本文只抽取當前短文本的前五輪歷史信息。記憶的方式有兩種,即內部記憶與外部記憶。傳統的深度學習模型(RNN、LSTM、BiLSTM等)均采用內部記憶方式,他們通過隱藏狀態或者注意力機制來達到記憶功能,但依靠內部記憶法存在一個缺點,即生成的記憶太小,無法全面記錄每輪對話中表達的內容,導致輸入編碼時丟失很多歷史信息。而且內部記憶不利于其他模塊從記憶中讀取需要的信息,經過編碼處理后,所有信息都被高度抽象,無法靈活、方便地提取信息。在文本處理的過程中,在BiLSTM模型內部加入記憶模塊,只能做到當前對話的詞級別的記憶,而無法做到記憶句子級別的歷史對話。為彌補這一不足,本系統加入了外部記憶模塊,可以記憶句子級別的歷史信息。通過對多輪對話的分析,主要列舉了兩種需要結合歷史信息來準確識別短文本意圖的情況。
第一種是使用省略句的情況,由于表達方式等原因,人們通常在交流時會省略上下文信息,見表1所列,這對意圖識別來說是一大難點。

表1 省略上下文短文本示例
從表1中可以看到,用戶在第二輪對話時所說的“明天呢?”是省略句,單獨對這句話做處理,無論用多么精妙的模型都很難準確識別出該句表達的意圖。如果我們結合前一輪的表達內容,就知道表達者的意思是“明天這個餐廳會有位置么?”,繼而得出他的意圖是“詢問餐廳是否有空位”,由此可以看出“位置”是關鍵信息。在本模塊中,為了獲得完整的語義表示,拼接P1、P2的語義向量生成一個新的向量,該向量中包含信息“位置”。
第二種情況是部分有相同意圖的短文本的語義信息相似,見表2所列。

表2 相同短文本意圖示例
從表2中可以看出,P1、P2的對話文本語義相似并且表達的是同一種意圖。因此,在記憶單元中可以保留與當前對話內容相似的歷史對話信息。在本文中,通過2個向量之間的內積表示當前對話和歷史信息的相似程度,并利用softmax函數將當前對話與歷史對話向量的內積做歸一化處理,用歸一化后的數值作為注意力的概率分布,概率值越大,表明歷史信息中的某輪對話與當前對話內容相似度越高。
利用記憶模塊引入歷史信息并為其分配權重,但是歷史信息中有些對話與當前對話的意圖相關,也有些對話與當前對話的意圖無關,如果無差別的引入會出現很多噪聲,對當前對話的意圖判別產生負面影響。因此,需要對歷史信息有一定的篩選能力。本文利用門函數計算狀態值,實現控制歷史信息的引入。門函數計算公式如下:

式中:向量hi是第i個記憶單元輸出的歷史信息;g為函數產生的狀態值,其取值在0到1之間。當g接近0,表示當前短文本的意圖識別無需參考歷史信息;當g接近1,表示當前短文本的意圖識別需要參考歷史信息。由于在記憶單元中考慮了兩種情況,因此我們需要引入2個門函數來控制歷史信息。
Rasa_Core是Rasa框架提供的對話管理模塊,它類似于聊天機器人的大腦,主要任務是維護更新對話狀態和動作選擇,然后對用戶的輸入做出響應。所謂對話狀態是一種機器能夠處理的對聊天數據的表征,對話狀態中包含所有可能會影響下一步決策的信息,如自然語言理解模塊的輸出、用戶特征等;動作選擇是指基于當前對話狀態,選擇接下來合適的動作,例如向用戶追問需補充的信息、執行用戶要求的動作等。此外,Rasa還包括Rasa_NLU模塊,該模塊用來理解語義,包括意圖識別、實體識別、把用戶的輸入轉換為結構化數據等。
對于餐廳推薦系統來說,系統不僅能理解用戶話語,還應根據用戶提出的信息做出相應反饋,因此建立基于Rasa_Core的對話管理機制。其中對話管理中的決策系統可以根據用戶意圖和實體信息選擇最優反饋方案,達到合理管理系統中人機對話的目的。對話流程如圖5所示。

圖5 對話流程
首先,將提取到的用戶語音輸入轉為文本消息傳遞到Interpreter(NLU模塊),該模塊負責識別用戶消息中的“意圖”和提取所有“實體”數據;
其次,Rasa_Core會將Interpreter提取到的意圖傳給Tracker對象,該對象的主要作用是跟蹤會話狀態(Conversation state);
再次,利用Policy記錄Tracker對象的當前狀態,并選擇執行相應的動作(Action),其中Action被記錄在Tracker對象中;
最后,將執行Action返回的結果輸出即完成一次人機交互,實現餐飲機器人對用戶的餐廳推薦。
本文中的實驗數據選取了劍橋大學關于餐館預定的多輪對話數據集[9],并對其進行了人工翻譯和標注處理。因預訂餐館的對話數據多為日常用語,本文對其處理成中文后并未對分類結果造成較大影響。數據集包含676段對話,共2 744輪,主題是預定餐館,對話可以根據口味、地點、價格查詢餐廳,選定餐廳后可根據需要提供聯系電話。采集的數據主要通過不同的人與機器對話得到,對話質量較高,適合做意圖識別。考慮到實驗的具體需求,結合標注好的用戶意圖與機器回復對數據集的對話進行多輪處理,構成實驗所需的多輪對話數據集。數據集中的多輪對話示例見表3所列。

表3 餐廳多輪對話示例
實驗標注的多輪對話數據集共包含10 432條對話數據,100組對話,每組對話的輪次在1輪到8輪不等,共出現有11種意圖標簽。數據的意圖類別不均衡,尤其是greet、thanks和deny這三種意圖類別的數據數目非常少,對準確率的計算影響大,容易給實驗帶來較大誤差,因此在后面的實驗中計算各模型的綜合性能時并未包含這三個意圖。實驗時將數據集按6∶2∶2的比例分別分為訓練集、測試集和驗證集。為保證實驗的可對比性,實驗中的數據集均采用相同的劃分方式,實驗中的數據均采用相同的短文本向量表示方法。
對于多輪對話下的意圖識別來說,目前很少有公開的高質量的數據集,許多研究者的實驗也是基于自己標注的數據集,且并未公開。為了證明本文模型的有效性,該部分實驗是在前文介紹的經過處理的數據集上完成,并在同等數據集上分別與傳統的BiLSTM模型、Yun-Nung Chen提出的MemoryNet模型和BiLSTM+Memory模型進行三組對比實驗。BiLSTM模型是單純的傳統雙向記憶網絡模型,并未額外增加記憶模塊。MemoryNet模型增加了基于注意力的記憶向量。BiLSTM+Memory在BiLSTM的基礎上增加了文中描述的兩種記憶模塊,本文模型在BiLSTM+Memory的基礎上增加了門函數。為了保證實驗的對比結果,所有模型中的BiLSTM參數設置相同,且模型的記憶模塊最多記憶5輪對話信息,如果超過5輪對話則保存離當前對話最近的5輪歷史信息。圖6為四種模型在不同意圖標簽上的識別結果的F1值。

圖6 模型識別結果
在各類別的識別結果上,模型BiLSTM+Memory與模型BiLSTM的最高差值為0.06,說明引入歷史信息對準確完成本文意圖識別任務有很大幫助。從圖6中還可以看出,在絕大多數意圖類別的識別結果上,本文模型的F1值略高于BiLSTM+Memory模型,說明增加門函數控制對歷史信息的引入可以在一定程度上改善識別效果。
由于數據不均衡,意圖類別greet、thanks和deny的數據量非常少,從圖6中也可以發現這三類意圖的識別率整體偏低,為了不影響對模型整體性能的評估,這三類意圖的識別結果不計入模型各項指標的計算中。表4為本實驗模型和三個對比模型的識別結果的平均指標值。

表4 餐廳多輪對話示例對比結果
在表4中可以看出,本實驗模型在加入門函數后識別的精確率、召回率和F1值都有提升。在精確率上,MemoryNet模型相較于BiLSTM模型提升了約3個百分點,BiLSTM+Memory模型相較于MemoryNet模型提升了約0.2個百分點,說明加入記憶模塊的模型識別效率高于未加記憶模塊的模型。綜上可知,在BiLSTM模型上增加記憶模塊和門函數對模型性能提升有明顯效果。
本文研究基于語音的餐廳推薦系統中的意圖識別和實體提取的問題,在多輪對話下的意圖識別受歷史信息影響,現有識別模型的內部記憶模塊只能解決一部分歷史問題,大多數意圖識別模型都無法充分考慮上下文信息。本文根據餐廳推薦系統實際應用中對歷史信息的需求情況,在BiLSTM模型的基礎上增加了記憶模塊和門控制模塊,既可以做到記憶歷史信息,又可對歷史信息加以控制,避免無用的歷史信息對識別結果產生負面影響,從而達到提高餐廳推薦準確率的效果。