王 杉, 丁 磊, 王曉旭
(云南大學(xué)滇池學(xué)院 理工學(xué)院, 昆明 650228)
隨著智能設(shè)備和人機交互技術(shù)的發(fā)展, 如“Siri”“小度”等使用自然語言的人機對話系統(tǒng)逐漸出現(xiàn)在各類型智能設(shè)備中, 給人們的生活帶來了便利[1]. 近年來, 得益于NLP技術(shù)的發(fā)展, 在人機對話系統(tǒng)中能夠使用自然語言進(jìn)行表達(dá)和交互. 然而, 自然語言中存在的歧義使對話系統(tǒng)很難完全理解命令任務(wù)并執(zhí)行符合人類意圖的任務(wù). 因為人們?nèi)粘A?xí)慣的交談大多使用短句, 對任務(wù)的上下文通常隱含著許多的假設(shè), 對話系統(tǒng)難以準(zhǔn)確地識別人類所傳達(dá)的命令任務(wù). 為了解決此類問題, 一些研究提出了基于受限的自然語言交互[2]. 可以在一定程度上減輕交互對話中可能出現(xiàn)的歧義, 而且也能適當(dāng)簡化計劃任務(wù)的生成過程, 和執(zhí)行任務(wù)的過程. 但是, 在多功能的人機對話系統(tǒng)中, 功能集可能非常大, 針對每個任務(wù)的編程會帶來巨大的工作量. 另外,還有一些研究表明對自然語言的限制會降低人機對話系統(tǒng)的可用性和可接受性, 尤其是在問詢、聊天等日常的對話環(huán)境中[3,4].
一個人機對話系統(tǒng)在獲得自然語言指令后, 通常會按以下的步驟進(jìn)行任務(wù)識別和處理, 如圖1所示.
圖1 自然語言人機對話系統(tǒng)基本構(gòu)架
圖1表述了基于自然語言的人機對話系統(tǒng)的基本構(gòu)架, 其中NLP引擎是重要的組成部分. 除此之外, 還有一些問題需要解決. 首先, 通用的NLP引擎往往僅提供自然語言指令的語法細(xì)節(jié), 不處理句子的歸類和分級, 也不提供任務(wù)類型以及歸納隱藏在句子中的參數(shù)集的機制. 因為這需要對系統(tǒng)所運行的領(lǐng)域和對話系統(tǒng)所處領(lǐng)域的功能集有所了解. 其次, 在自然語言對話中, 單向互動會產(chǎn)生歧義, 系統(tǒng)不能很準(zhǔn)確識別人類的意圖. 因此, 需要基于雙向?qū)υ掃M(jìn)行設(shè)計, 在對話系統(tǒng)上有許多工作[5–7]進(jìn)行了嘗試, 但在有效率和準(zhǔn)確性方面仍存在不足. 針對以上問題和不足, 本次研究提出了一個“對話任務(wù)代理”器模型, 以不受限制的自然語言接收用戶發(fā)出的任務(wù)指令, 并將其轉(zhuǎn)換為計劃程序.該模型主要包括有以下模塊: 對話引擎、基礎(chǔ)NLP工具集、任務(wù)分類器、計劃器. 對話引擎和基礎(chǔ)NLP工具集用于對接收到的自然語言指令和對話進(jìn)行語法分析和任務(wù)識別. 任務(wù)分類器使用一組已知的任務(wù)進(jìn)行訓(xùn)練, 并把這些任務(wù)映射到對話系統(tǒng)的任務(wù)功能中. 任務(wù)分類器使用了“Temporal Grounding Graph”模型[8], 提供了類似的知識庫和任務(wù)模板, 每個任務(wù)都與一個模板相關(guān)聯(lián), 這個模板會由前置條件和后置條件組成. 在給出自然語言指令的情況下, 編碼生成一組基礎(chǔ)邏輯命題, 這些命題代表任務(wù)預(yù)期范圍內(nèi)的初始狀態(tài)和最終狀態(tài), 然后基于邏輯的符號狀態(tài)進(jìn)行推理. 最后, 提出了任務(wù)計劃問題, 并設(shè)計一個“計劃器”以解決該問題.
在自然語言理解方面已經(jīng)有了大量研究和工作,在這里著重探討關(guān)于人機交互指令的理解, 以及在處理模棱兩可或不完整任務(wù)指令的問題.
在早期的一些研究中, Lauria等人嘗試了自然語言給出的導(dǎo)航指令, 其中將任務(wù)轉(zhuǎn)換為一階邏輯形式和語義樹結(jié)構(gòu), 以提取動作過程和相應(yīng)的參數(shù)[9]. 之后,有研究將監(jiān)督學(xué)習(xí)方法用于學(xué)習(xí)語義解析器, 該語義解析器將路由指令映射到原始動作和控制表達(dá)式[4]. 這些研究在理解自然語言指令方面提供了有價值的指導(dǎo),但僅通過導(dǎo)航操作卻有著很大的限制.
將基于豐富詞法資源的語義解釋器用于理解通用的自然語言指令也有嘗試, 例如FrameNet[10]. FrameNet通過框架元素、詞元、詞義類型等各項信息表達(dá)了詞匯的本質(zhì)屬性, 并結(jié)合深層句法和語義分析, 以實現(xiàn)對自然語言指令的解析[11]. 但是, 因為僅將語言信息作為輸入, 而沒有考慮用世界模型的細(xì)節(jié)去設(shè)置上下文, 所以這些解析器很難在人機系統(tǒng)執(zhí)行指令之前完全消除歧義. 判別重排序模型(DRMs)在一定程度上解決了歧義問題[12], 但是在實際的人機對話場景中, 機器所定義的動作程序相對“低級”, 而自然的人類命令通常包含較高級的任務(wù)目標(biāo), 這使得此類映射的學(xué)習(xí)比較困難. 在不同的上下文中, 很難預(yù)測任務(wù)的所有原始動作的順序. 因此, 將非結(jié)構(gòu)化的自然語言輸入生成計劃器仍然是研究的焦點.
Thomas等人提出了RoboFrameNet[13], 該框架可以將人類指令解析為FrameNet的語義框架, 然后生成原始動作序列. 他們使用手工制作的詞匯資源來預(yù)測任務(wù), 并使用通用的依賴解析器來提取動作參數(shù). 但這會使語言的理解能力受到限制, 而且使用隨機搜索來找到動作序列相對低效, 并且較難擴展到真實場景.
在近期的一些研究中, Antunes等人提出了一種基于概率計劃的體系結(jié)構(gòu), 以嘗試針對子任務(wù)失敗以及子目標(biāo)的重新排序而采取不同的措施, 從而生成復(fù)雜任務(wù)的計劃[14]. Misra等人也提出了一種通過在相似情況下從學(xué)習(xí)樣本中添加、刪除和替換動作來實現(xiàn)動作序列接地的方法[15]. 這些研究雖然較之前的方法有了進(jìn)步, 但是因為需要大量的精力來創(chuàng)建新的數(shù)據(jù)集和訓(xùn)練數(shù), 所以這種學(xué)習(xí)給定任務(wù)的原始動作序列的方法, 并不能很好地在新的人機對話領(lǐng)域和具有不同功能的對話系統(tǒng)中應(yīng)用.
在實際應(yīng)用中, 經(jīng)常會基于WordNet通過單詞相似性度量來處理理解包含新動詞的指令[16]或通過使用特定于環(huán)境的訓(xùn)練數(shù)據(jù)[17]消除歧義. 但我們的模型提出了一種對話策略來理解新詞匯和模棱兩可的指令,以實現(xiàn)更好的指令解釋和更短的交互. 并且系統(tǒng)以PDDL形式語言生成輸入, 減少了在新的對話域中重構(gòu)系統(tǒng)的工作量. 我們還在語義解析信息轉(zhuǎn)換計劃器正式語言方法[18]的基礎(chǔ)上, 將其擴展為一個完整的框架, 使用人機對話和上下文相關(guān)的任務(wù)計劃, 將自然語言指令更準(zhǔn)確地轉(zhuǎn)換為計劃的原始動作序列.
“對話任務(wù)代理”器模型由4個主要部分組成.
(1) 處理對話系統(tǒng)與用戶之間雙向交互的對話引擎;
(2) 任務(wù)標(biāo)識符, 該標(biāo)識符標(biāo)識預(yù)期任務(wù)和交互中的相關(guān)參數(shù);
(3) 一個計劃生成器, 用于為給定任務(wù)生成有效的計劃;
(4) 知識庫, 其中包含對話系統(tǒng)正在運行的世界規(guī)則模型以及用于計劃生成的任務(wù)模板.
對話引擎由一組通用的NLP工具集組成(可以使用基于深度學(xué)習(xí)的TensorFlow或者PaddlePaddle等框架), 該工具集對用戶發(fā)出的自然語言指令進(jìn)行分詞和功能提取, 并且設(shè)定一個問題框架制定相關(guān)問題, 以解決任務(wù)理解中的歧義. 例如, 如果用戶說“播放一首王某的歌”, 則NLP工具會對其進(jìn)行分詞處理, 得到以下具有語法特征的輸出:
(播放, 動詞, 中心詞), (一首, 數(shù)量詞, 定語), (王某,名詞, 定語), (的, 助詞, 定語), (歌, 名詞, 賓語)
為了消除歧義并理解NLP工具集提供的語義信息, 對話系統(tǒng)和人類必須形成順暢的溝通, 即使人類用自然語言發(fā)出指令, 也可以將其轉(zhuǎn)換為計算機可以存儲和處理的中間表示形式. 我們使用了基于FrameNet框架[19,20]關(guān)系來實現(xiàn)任務(wù)標(biāo)識符的建模. 框架語義把現(xiàn)實世界中的事件建立為框架模型, 模型使用事件的參與實體(稱為框架元素)全面地描述事件, 框架元素包括主題和來源, 主題表示受事件影響的對象, 來源表示存在主題的位置. 因此, 當(dāng)任務(wù)標(biāo)識符處理NLP工具的輸出時, 將產(chǎn)生以下輸出:
[播放]激活[一首王某的]來源[歌]主題
同時可以設(shè)計一個分類器來識別框架和框架元素.如果分類器無法獲取足夠的判別信息, 則會向用戶詢問相關(guān)問題, 以解決歧義和信息不足的問題.
在人類預(yù)期的任務(wù)指令與計算機所能支持的原始動作之間通常無法進(jìn)行一對一映射, 因為某些高級任務(wù)目標(biāo)會包含一系列子任務(wù). 所以, 為實現(xiàn)任務(wù)計劃,必須讓計算機理解用戶真實意圖, 使任務(wù)能夠以初始狀態(tài)遷移至不同的目標(biāo)狀態(tài).
規(guī)劃域定義語言(PDDL)[21], 是一種標(biāo)準(zhǔn)化的人工智能規(guī)劃語言, 提供了一種以形式化的語言對世界的初始狀態(tài)和目標(biāo)狀態(tài)進(jìn)行編碼的方法. 為了能夠執(zhí)行計劃的動作序列, 每個動作都要映射到PDDL狀態(tài)轉(zhuǎn)換運算符. 在PDDL中, 把謂詞、參數(shù)變量和狀態(tài)轉(zhuǎn)換運算符集定義為域, 而基礎(chǔ)的初始條件和目標(biāo)條件集稱為問題. 這樣形式化的計劃器就可以解決給定領(lǐng)域中的計劃問題, 從而找到滿足人類預(yù)期任務(wù)目標(biāo)的機器動作序列.
知識庫存儲世界規(guī)則模型和任務(wù)模板. 與“Temporal Grounding Graph”模型的世界狀態(tài)的感知基礎(chǔ)模型相似[8], 世界規(guī)則模型包含了對話系統(tǒng)正在操作的世界規(guī)則和環(huán)境, 并表示為當(dāng)前狀態(tài)的符號. 知識庫還提供了在任務(wù)計劃生成器生成計劃問題時需要考慮的任務(wù)上下文. 并在機器執(zhí)行動作后, 還會考慮更新知識庫. 另一方面, 任務(wù)模板用于存儲生成任務(wù)計劃問題時需要的前提條件和后置條件, 這些條件與FrameNet框架語義相符. 如果對于給定的任務(wù)指令難以判別, 則對話系統(tǒng)將會發(fā)起與用戶的對話以收集更多信息.
為了實現(xiàn)對任務(wù)命令識別和計劃的目標(biāo), 以及保持技術(shù)的先進(jìn)性, 本次研究提出了3個核心的組成功能.
任務(wù)標(biāo)識符的作用是在給定一段句法標(biāo)記的文本后, 識別預(yù)期的任務(wù)及其相應(yīng)的參數(shù), 并將單詞或短語分類為任務(wù)類型或任務(wù)參數(shù). 為此, 我們參考了“條件隨機場” (CRF)模型, 該模型結(jié)合了最大熵模型和隱馬爾可夫模型的特點, 近年來在分詞、詞性標(biāo)注和命名實體識別等序列標(biāo)注任務(wù)中取得了很好的效果[22]. 解析過程分為兩個連續(xù)的階段——任務(wù)類型預(yù)測和參數(shù)提取. 任務(wù)類型預(yù)測階段預(yù)測給定文本中可能的詞序列. 然后, 在給出前一階段可能出現(xiàn)的詞的預(yù)測情況下,參數(shù)提取階段將預(yù)測文本中詞元素的序列. 通過預(yù)測文本中每個詞標(biāo)記的IOB標(biāo)簽來標(biāo)記預(yù)測的序列, 表示是在內(nèi)部(I), 外部(O)還是在開頭(B).
在任務(wù)類型識別階段, 訓(xùn)練數(shù)據(jù)如下表示:
句子zj由一個M×2的矩陣構(gòu)成,ci表示句子中的單詞,rti表示單詞所對應(yīng)的任務(wù)類型的IOB標(biāo)簽,N表示訓(xùn)練數(shù)據(jù)中此類句子的數(shù)量.
在參數(shù)提取階段, 訓(xùn)練數(shù)據(jù)如下表示:
其中,Ti表 示與單詞ci關(guān)聯(lián)的預(yù)測任務(wù)類型, 而cti表示參數(shù)類型的IOB標(biāo)簽.
用于任務(wù)類型識別的CRF模型定義了如下的條件概率分布:
其中, φk是特征函數(shù)的第k項分量,k是特征數(shù),Wk是第k項特征的權(quán)重, τ是歸一化因子. 使用梯度下降優(yōu)化從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)權(quán)重.
對于參數(shù)提取階段, CRF模型定義以下條件概率分布:
最后, 使用詞匯和語法特征來預(yù)測任務(wù)和參數(shù)類型. 詞匯特征包括單詞本身、詞根以及單詞的上下文.語法特征包括詞和上下文詞的詞性以及句法依賴性.
即使準(zhǔn)確定義了任務(wù)標(biāo)識符, 但當(dāng)用戶以自然語言進(jìn)行指令傳遞時, 仍有可產(chǎn)生歧義而導(dǎo)致識別失敗或錯誤預(yù)測. 現(xiàn)有的任務(wù)識別模型通常使用指令中存在的動詞和動詞周圍的語言特征進(jìn)行訓(xùn)練[15,18]. 但是當(dāng)用戶為非專業(yè)人士時, 用戶可能會使用未登記詞匯, 那么任務(wù)識別模型可能會無法進(jìn)行有效地預(yù)測, 導(dǎo)致錯誤地預(yù)測任務(wù)類型. 由于任務(wù)類型識別處于處理流程的前期階段, 因此需要解決其故障和錯誤, 才能夠往后執(zhí)行指令. 通常在這種情況下, 對話系統(tǒng)會在與人類的對話中進(jìn)行互動交流, 以能在錯誤預(yù)測的情況下確定指令的含義或正確的任務(wù)類型[3]. 但是, 非專業(yè)用戶可能不知道對話系統(tǒng)使用的術(shù)語, 所以也不能直接給出提問的正確回答. 例如對話系統(tǒng)如果提問“這是什么類型的任務(wù)?”, 用戶是完全無法回答的, 因為用戶根本不知道系統(tǒng)是如何對指令歸類. 為此, 對話系統(tǒng)可以采用一些提示問題, 例如“這是類似于…嗎?”, 然后用戶給出肯定或否定的回答. 然而, 這又會引發(fā)兩個新問題.首先, 對話系統(tǒng)儲存的任務(wù)類型數(shù)量通常有很多, 如果機器人一一提出建議, 則會嚴(yán)重降低用戶體驗. 其次,非專業(yè)用戶可能仍然無法理解該建議的意思, 需要對話系統(tǒng)進(jìn)一步解釋.
針對以上情況, 這里提出一種對話策略以解決上述問題. 對于給定的指令, 識別任務(wù)可以通過動詞和充當(dāng)動詞自變量的名詞短語共同表征, 并利用數(shù)據(jù)集中存在的這些任務(wù)與參數(shù)關(guān)系(使用訓(xùn)練解析器的同一數(shù)據(jù)集)來估計已知任務(wù)被傳遞的可能性. 給定一個句子Z和一組所有可能的任務(wù)類型T={T1,T2,···,Tn},然后定義一個n元組T′, 每個元素Ti′表示T中的一個任務(wù)類型,Ti′成為給定句子的真實任務(wù)類型的可能性決定了T′的 順序, 即P(Ti|C).
可以使用以下過程估算T′: 首先, 使用參數(shù)類型預(yù)測模型, 該模型用于查找指令中可能存在的參數(shù)類型.參數(shù)類型預(yù)測模型也使用CRF來實現(xiàn):
這個模型與參數(shù)提取模型的不同之處在于, 該模型可預(yù)測每個單詞(ci)的參數(shù)(cti′)的IOB標(biāo)簽, 而不用考慮句子的任務(wù)類型.
然后, 將預(yù)測的cti′里轉(zhuǎn)換為句子中的一個參數(shù)類型集合, 并定義為CTP. 再定義另一個集合CTD表示一個任務(wù)類型的參數(shù)類型, 該類型出現(xiàn)于訓(xùn)練數(shù)據(jù)集中.接下來對訓(xùn)練數(shù)據(jù)集所有指令中, 滿足CTP?CTD的任務(wù)類型Ti的實例數(shù)量進(jìn)行統(tǒng)計, 生成一個n元組, 其中元素來自集合T, 由相應(yīng)的計數(shù)排序. 將計數(shù)歸一化并將其轉(zhuǎn)換到概率分布, 然后按概率對n元組進(jìn)行排序, 最終得到T′.
為了回答用戶有關(guān)任務(wù)類型定義的問題, 模型為每種任務(wù)類型設(shè)置一個問題模板, 可以將參數(shù)類型預(yù)測模型預(yù)測的結(jié)果填充到模板中. 例如, 如果要求非專業(yè)用戶清楚查詢?nèi)蝿?wù)的含義, 則使用模板“是否要我在[主 題 ]中查詢[目 標(biāo) ]”. 例如:
詢問1: 查詢張三
回答1: 這個任務(wù)類似于查找嗎?
詢問2: 我不明白
回答2: 你要我在通訊錄中查詢張三名片嗎?
詢問3: 是的
回答3: 明白了
當(dāng)確定對話缺少參數(shù)時, 就可以使用類似的模板來提問. 非專業(yè)用戶指定的高級任務(wù)也可以由已知任務(wù)組成, 這時模型具有與用戶進(jìn)行交互以提取已知任務(wù)序列的能力. 在這種對話情況下, 系統(tǒng)會要求用戶說出執(zhí)行高級任務(wù)的步驟. 然后, 將響應(yīng)視為包含多個序列化任務(wù)的單個指令, 將其作為輸入來生成計劃.
一個任務(wù)其實就是自然語言指令表示的一個可被實現(xiàn)的目標(biāo), 任務(wù)也可被假定為由任務(wù)的初始狀態(tài)表示的世界狀態(tài)給出. 為了更好表達(dá)和實現(xiàn)任務(wù)計劃, 我們采用PDDL進(jìn)行任務(wù)計劃的描述, 并且按PDDL規(guī)則將每種任務(wù)類型的初始狀態(tài)和目標(biāo)狀態(tài)的模板存儲在知識庫中. 表1顯示了此類模板的一些實例.
表1 在PDDL中生成初始狀態(tài)和目標(biāo)狀態(tài)的模板示例
在此類模板中, 可以通過使用從指令中提取的參數(shù)將抽取的變量進(jìn)行定義, 然后再用世界模型進(jìn)行驗證, 從而生成計劃問題的初始狀態(tài)和目標(biāo)狀態(tài). 通?;赑DDL域的謂詞并根據(jù)建模任務(wù)的框架的定義來創(chuàng)建模板.
如果人機對話系統(tǒng)能自主工作, 那么它將持續(xù)接受來自人類用戶的新任務(wù)并執(zhí)行這些任務(wù). 在為新任務(wù)生成計劃問題時, 將使用世界模型來驗證假定的初始狀態(tài), 并能使計劃中的狀態(tài)轉(zhuǎn)換算子后置條件建模和世界狀態(tài)的編碼更加流暢.
算法1顯示了生成計劃任務(wù)的完整過程. 對于一個已序列化, 且包含要實現(xiàn)的多個任務(wù)目標(biāo)說明, 可以通過保留指令中所有任務(wù)的世界狀態(tài)上下文來處理此類復(fù)合指令. 存儲的模板機制還可以對新任務(wù)的集成或遷移進(jìn)行簡化, 并通過引入新模板以及PDDL域中的謂詞和狀態(tài)轉(zhuǎn)換運算符來添加新任務(wù).
算法1. 生成PDDL計劃任務(wù)1) 輸入: 目標(biāo)狀態(tài)模板: Ts, 初始狀態(tài)模板: T0 , 世界狀態(tài): H, 已解析的參數(shù): K 2) 初始化: 初始狀態(tài)=φ, 目標(biāo)狀態(tài)=φ 3) while(T0!=φ){從T0中獲得c;grounded_atom = ground(template_atom, K);while(H!=φ){從H中獲得fluent;if(fluent與grounded_atom矛盾){新增fluent到初始狀態(tài);}else{新增grounded_atom到初始狀態(tài);}}while(Ts!=φ){從Ts中獲得template_atom;grounded_atom = ground(template_atom, K);新增template_atom到目標(biāo)狀態(tài);}}4) 輸出: 初始狀態(tài), 目標(biāo)狀態(tài)
為了驗證和評估系統(tǒng), 我們使用了中文公開對話語料庫chinese_chatbot_corpus[23]的部分?jǐn)?shù)據(jù)進(jìn)行測試. 該庫對目前市面上已有的開源中文對話語料進(jìn)行了整理, 包含8組公開閑聊與對話的常用語料. 在測試中, 選取4組較有代表性的語料庫中的部分?jǐn)?shù)據(jù)作為輸入, 以測試和評估系統(tǒng)對任務(wù)的理解和計劃能力. 并與僅使用基本功能的基準(zhǔn)系統(tǒng)、以及加入部分功能的試驗系統(tǒng)進(jìn)行比較, 以顯示系統(tǒng)在解決問題時的能力.表2顯示了使用不同的方法模塊的不同系統(tǒng).
表2 任務(wù)識別和計劃生成的不同方法
通過與中文公開對話語料庫數(shù)據(jù)集中的注解進(jìn)行比較, 系統(tǒng)的框架語義解析器可以從389個類指令語句中識別到436個任務(wù), 且經(jīng)過比對, 其中412個任務(wù)符合正確含義, 平均總正確率為94.49% (如表3所示).所以系統(tǒng)解析器從自然語言指令中預(yù)測任務(wù)類型是較為準(zhǔn)確的.
表3 系統(tǒng)在中文公開對話語料庫上進(jìn)行任務(wù)識別的性能
在任務(wù)識別的基礎(chǔ)上, 我們進(jìn)一步進(jìn)行了任務(wù)計劃生成的測試(如表4所示).
表4 系統(tǒng)在中文公開對話語料庫上進(jìn)行計劃生成的性能
從測試可以發(fā)現(xiàn)即使有較高的任務(wù)預(yù)測率, 但是由于基準(zhǔn)系統(tǒng)不使用對話來獲取缺少的信息, 并且使用了靜態(tài)模板, 不會為多個目標(biāo)狀態(tài)沖突的任務(wù)指令生成計劃. 基所以準(zhǔn)系統(tǒng)的計劃生成性能較低(平均生成率僅41.01%).
在交互任務(wù)理解系統(tǒng)中, 通過添加對話模塊以獲取缺少的參數(shù)可以在一定程度上解決了指令不完整的問題, 系統(tǒng)使用對話策略來引導(dǎo)模糊指令的識別分析,生成計劃的有效率得到了提高(平均生成率為58.75%),一定程度上解決了指令不完整的問題. 但是使用靜態(tài)模板無法處理需要上下文相關(guān)計劃的復(fù)雜指令, 于是在增加了上下文規(guī)劃的交互任務(wù)理解模型中, 并使用了基于世界模型的動態(tài)更新模板, 使得計劃生成率進(jìn)一步提高(平均生成率為73.04%).
最后, 通過在系統(tǒng)中使用了共引解析, 把指代相同對象的名詞歸類指向同一個實體. 系統(tǒng)生成了353個任務(wù)計劃, 獲得了較好的計劃生成率(平均生成率為92.01%), 這也與正確的任務(wù)識別率(94.49%)相接近.
我們也尋求了正確預(yù)測任務(wù)但未生成有效計劃的原因, 主要是包含在測試數(shù)據(jù)中已經(jīng)存在的參數(shù)未能有效地析出; 其次在某些情況下, 由于錯誤地假定上下文, 任務(wù)的計劃失敗會導(dǎo)致同一指令中的從屬任務(wù)也失敗.
在本次工作中, 研究了人機對話系統(tǒng)的任務(wù)對話代理模型, 該代理根據(jù)自然語言指令執(zhí)行任務(wù)計劃, 并提出了一種方法來整合自然語言解析器和對話代理的自動計劃器. 為了實現(xiàn)該方法, 我們開發(fā)了一種語言理解模型來識別預(yù)期的任務(wù)和相關(guān)的參數(shù), 同時研究了一種對話策略, 對模棱兩可的指示進(jìn)行識別, 以完成與人機對話的互動. 測試和評估表明系統(tǒng)能基于知識庫的上下文感知推理完成與生成計劃的對話, 并且能以較少的詢問獲得有意義的問題. 在后續(xù)的研究中, 可以對該系統(tǒng)進(jìn)行進(jìn)一步的擴展, 例如加入概率和分層計劃, 還可以基于更豐富的知識庫進(jìn)行推理, 以期獲得更好的對話效果和任務(wù)計劃識別.