對話系統(tǒng)的設(shè)計(jì)思路大致如下:(以下內(nèi)容摘自賈熹濱, 李讓, 胡長建,等. 智能對話系統(tǒng)研究綜述[J]. 北京工業(yè)大學(xué)學(xué)報(bào), 2017(9).)

自然語言理解(NLU)部分
自然語言理解(NLU)部分的關(guān)鍵可以這樣理解:文本分類(text classification)和序列標(biāo)注(sequence labeling)。
文本分類:
文本分類的目的是根據(jù)預(yù)先定義的主題類別,按照一定的規(guī)則為未知類別的文本自動確定一個(gè)類別.
對話系統(tǒng)中,通過文本分類的方法,將用戶的自然語言根據(jù)涉及領(lǐng)域的不同分為幾類,以判斷用戶的意圖.
目前應(yīng)用在文本分類領(lǐng)域傳統(tǒng)的機(jī)器學(xué)習(xí)模型有
k近鄰(k-nearest neighbor,kNN)
樸素貝葉斯(naive Bayesian)
支 持 向 量 機(jī)(support vector machines,SVM)等.
神經(jīng)網(wǎng)絡(luò)興起后,一些基于深度學(xué)習(xí)模型的研究也取得了不俗的效果,
主要是運(yùn)用了卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)模型,以及CNN和循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural networks,RNN)相結(jié)合的模型.
序列標(biāo)注
序列標(biāo)注模型被廣泛應(yīng)用于文本處理相關(guān)領(lǐng)域,以得到自然語言序列對應(yīng)的標(biāo)簽序列.
對話系統(tǒng)中利用序列標(biāo)注的方法對自然語言序列進(jìn)行
分詞(word segmentation)
詞 性 標(biāo) 注(part-of-speechtagging)
命 名 實(shí) 體 識 別(named entity recognition,NER)等工作
得到標(biāo)簽序列后生成結(jié)構(gòu)化的數(shù)據(jù),便于對整個(gè)句子進(jìn)行理解.
序列標(biāo)注領(lǐng)域中常用的模型有隱馬爾科夫(hidden Markov model,HMM)、最大熵馬爾科夫(maximum entropy Markov model,MEMM)[15]、條件隨機(jī)場(conditionalrandomfields,CRF)等.
與傳統(tǒng)的方法相比,深度學(xué)習(xí)中常用的長短期記憶網(wǎng)絡(luò)(long-short term memory,LSTM)模型也取得了相近的效果.另外,將神經(jīng)網(wǎng)絡(luò)模型自動提取特征的優(yōu)點(diǎn)與機(jī)器學(xué)習(xí)模型計(jì)算聯(lián)合概率的方式結(jié)合在一起,得到了LSTM + CRF模型,這也是目前學(xué)術(shù)界常用的做法.口語對話中句式靈活多變,且用戶有不同的語言習(xí)慣,再加上語音識別本身出現(xiàn)的錯(cuò)誤,語言理解模塊同樣面臨著重大挑戰(zhàn).
對話狀態(tài)跟蹤
對話狀態(tài)跟蹤的作用在于通過語言理解生成的結(jié)構(gòu)化數(shù)據(jù)理解或者捕捉用戶的意圖或目標(biāo),目前應(yīng)用在這個(gè)領(lǐng)域的模型很多,包括有限狀態(tài)機(jī)、填槽法、基于實(shí)例方法、基于規(guī)劃方法、貝葉斯網(wǎng)絡(luò)等,文獻(xiàn)對其中一部分方法進(jìn)行了分析和比較.
對話狀態(tài)跟蹤的思想是將系統(tǒng)和用戶交互時(shí)的行為看作是在填寫一張記錄用戶當(dāng)前對話狀態(tài)的表格.以訂機(jī)票為例,將這張表格預(yù)先設(shè)定好狀態(tài),比如 目 的 地、出 發(fā) 地、出 發(fā) 時(shí) 間 等,與 系 統(tǒng) 背 后 的 業(yè) 務(wù)數(shù)據(jù)表中的屬性相關(guān)聯(lián),不斷地從對話中抽取相應(yīng)的值來填充這個(gè)表格.這是一個(gè)利用監(jiān)督學(xué)習(xí)(supervised learning)完成的多分類任務(wù),根據(jù)對話的分類結(jié)果判斷這句話中包括哪些狀態(tài)和值.往往從一句對話中獲取所有的狀態(tài)只是理想情況,當(dāng)狀態(tài)表中的信息存在空白時(shí),系統(tǒng)會根據(jù)空白的狀態(tài)來提問并獲取對應(yīng)的值,直到獲取到足夠的狀態(tài),給出對用戶的建議,或者進(jìn)行相應(yīng)的服務(wù).對話狀態(tài) .跟蹤如圖2所示.

自然語言生成
自然語言生成的作用是組織適當(dāng)?shù)膽?yīng)答語句,將系統(tǒng)的答復(fù)轉(zhuǎn)換成用戶能夠理解的自然語言,通常有3種解決方案:基于人工模板(rule-based)、基于知識庫檢索(query-based)和基于深度學(xué)習(xí)的序列到序列(Sequence-to-Sequence)生成模型.語言生成方案的優(yōu)缺點(diǎn)和適用場景總結(jié)如表1所示.自然語言生成是對話系統(tǒng)的核心內(nèi)容,本文將在第3節(jié)中對其中不同的解決方法進(jìn)行詳細(xì)介紹.
