專利名稱:一種實(shí)現(xiàn)多路對(duì)話的人-機(jī)漢語口語對(duì)話系統(tǒng)的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)及信息服務(wù)技術(shù)領(lǐng)域,特別涉及可根據(jù)不同領(lǐng)域特點(diǎn)和任務(wù)需求,快速實(shí)現(xiàn)相應(yīng)的人-機(jī)漢語口語對(duì)話系統(tǒng)的方法。
背景技術(shù):
人-機(jī)對(duì)話系統(tǒng)(Man-Machine Dialogue System),簡(jiǎn)稱對(duì)話系統(tǒng),是以人類語言為媒介與使用者進(jìn)行信息交流的計(jì)算機(jī)程序集合,該使用者稱為對(duì)話系統(tǒng)的用戶(User)。人-機(jī)漢語口語對(duì)話系統(tǒng)是特指使用漢語口語為交流媒介的對(duì)話系統(tǒng),計(jì)算機(jī)接收使用者的口語輸入,經(jīng)過理解后給出相應(yīng)的回答,并可同時(shí)執(zhí)行相應(yīng)的操作。
語言是人類使用最多最方便的交流方式之一,生活中最直接自然的就是人類口語。當(dāng)前是信息時(shí)代,人們對(duì)各類信息服務(wù)的需求越來越大,口語對(duì)話系統(tǒng)能以較好的交互方式提供這些信息。在某些情況下,例如開車時(shí),人的手眼都沒有空閑,只能通過對(duì)話(嘴巴和耳朵)來獲取信息。對(duì)話系統(tǒng)可廣泛用于多種信息服務(wù)領(lǐng)域,例如火車訂票、航班信息查詢、影視信息查詢、電話號(hào)碼查詢、高考成績(jī)查詢、股票買賣等。
典型的對(duì)話系統(tǒng)由語音識(shí)別、自然語言理解、對(duì)話管理、自然語言生成、語音合成等模塊組成,如圖1所示。對(duì)話系統(tǒng)的輸入為用戶語音,輸出為應(yīng)答語音。語音識(shí)別模塊可采用多種識(shí)別技術(shù)加以實(shí)現(xiàn),如關(guān)鍵詞識(shí)別和連續(xù)語音識(shí)別,將用戶語音識(shí)別為文本。識(shí)別文本可以是單個(gè)的句子,也可以是多個(gè)句子候選,或者是詞網(wǎng)格,由自然語言理解模塊翻譯成系統(tǒng)內(nèi)部的語義信息表示。對(duì)話管理模塊根據(jù)這個(gè)回合(Turn)的語義信息,結(jié)合對(duì)話歷史(Dialogue History)和對(duì)話上下文(Dialogue Context)決定應(yīng)該回答的語義,即應(yīng)答焦點(diǎn)。自然語言生成模塊根據(jù)應(yīng)答語義生成真正應(yīng)答的文本,由語音合成模塊將文字轉(zhuǎn)化為語音反饋給用戶。某些對(duì)話系統(tǒng)的信息用數(shù)據(jù)庫來存儲(chǔ),這時(shí)由對(duì)話管理模塊負(fù)責(zé)數(shù)據(jù)庫的各種訪問操作。
自然語言理解模塊的研究由來已久,目前研究主流為用基于規(guī)則的語言理解方法來實(shí)現(xiàn),即根據(jù)已有的文法進(jìn)行句法語義分析,其基礎(chǔ)是形式語言理論。
形式語言理論將一個(gè)文法G定義為四元式G=(VT,VN,S,P) (1)其中VT是一個(gè)非空有限集,它的每個(gè)元素都是終結(jié)符。所謂終結(jié)符是組成語言的基本符號(hào),從語法分析的角度來說,可以說終結(jié)符是一個(gè)語言不可再分的原子符號(hào)。在實(shí)際應(yīng)用中VT被稱為詞表或詞典(Lexicon或Vocabulary)。VN是一個(gè)非空有限集,它的每個(gè)元素都是非終結(jié)符。非終結(jié)符是語法范疇,它代表一定的語法概念,每個(gè)非終結(jié)符也表示一些符號(hào)串(由終結(jié)符和非終結(jié)符組成)的集合。S是一個(gè)特殊的非終結(jié)符,S∈VN,也稱為起始符號(hào)。它代表所定義語言中的“句子”。P是一個(gè)有限產(chǎn)生式集合,每個(gè)產(chǎn)生式的形式是α→β,其中α∈(VT∪VN)*且至少含有一個(gè)非終結(jié)符;β∈(VT∪VN)*;S必須至少在某個(gè)產(chǎn)生式的左部出現(xiàn)一次。其中(a)*表示長(zhǎng)度可為零的字符串,串中每個(gè)字符都屬于集合a。產(chǎn)生式也可稱為語法規(guī)則。
有了文法的定義之后,可定義由文法如何生成語言。如果A→γ是一個(gè)產(chǎn)生式,且α,β∈(VT∪VN)*,稱αAβ直接推出αγβ,記作αAβαγβ。如果有α1α2,α2α3,…,αn-1αn,則稱α1可推導(dǎo)出αn。用 表示從α1出發(fā)經(jīng)過一步或若干步,可推導(dǎo)出αn;用 表示從α1出發(fā)經(jīng)過零步或若干步,可推導(dǎo)出αn。
假定G是一個(gè)文法,S是它的起始符號(hào),如果 則稱α是一個(gè)句型,如果α只含終結(jié)符,則稱α是一個(gè)句子。文法G所產(chǎn)生的句子的全體是一個(gè)語言,記為L(zhǎng)(G),L(G)={α|S⇒+α,α∈VT*}---(2)]]>對(duì)于文法G,如果它的任意一個(gè)產(chǎn)生式都滿足A→γ的形式,其中A∈VN,β∈(VN∪VT)*,那么稱G是一個(gè)2型文法,由一個(gè)2型文法生成的語言稱為一個(gè)2型語言。直觀地說,2型文法要求每一個(gè)產(chǎn)生式的左部是一個(gè)單獨(dú)的非終結(jié)符。2型文法的推導(dǎo)不要求依賴于特定的上下文,因此這種文法也稱為上下文無關(guān)文法。
文法是描述語言結(jié)構(gòu)的手段,使用文法來判定句子的合法性并給出句法結(jié)構(gòu),則需要用到文法分析器。分析算法可以這樣描述給定輸入句子,在文法規(guī)則的各種各樣的組合方式之中,找出一種可能是該句子文法樹結(jié)構(gòu)的組合方式的搜索過程。這意味著兩個(gè)目標(biāo),一是判斷句子是否被文法所接受,二是如果被接受,則同時(shí)給出句法結(jié)構(gòu)。在分析句子之前,一般先要根據(jù)VT對(duì)句子進(jìn)行分詞(Partition),即確定句子是由哪些終結(jié)符順序組成的,然后再根據(jù)文法進(jìn)行分析。
圖表分析(Chart Parsing)是一種典型的高效的分析方法。該方法涉及到三個(gè)主要的數(shù)據(jù)結(jié)構(gòu)a.圖表(Chart),它是存放當(dāng)前所有已經(jīng)分析得到的部分結(jié)果的數(shù)據(jù)結(jié)構(gòu),通過這個(gè)機(jī)制,可以避免已有的成分被多次地歸結(jié),實(shí)現(xiàn)共享。這里歸結(jié)指的是根據(jù)給定的規(guī)則集,將當(dāng)前句子中匹配某規(guī)則右邊符號(hào)串的部分替換為該規(guī)則左邊的非終結(jié)符。
b.活動(dòng)弧(Active Arc),指當(dāng)前已經(jīng)擴(kuò)展了一部分但仍沒有得到最后歸結(jié)的規(guī)則實(shí)例。它的表示方法與規(guī)則類似,但需在右部符號(hào)間插入一個(gè)圓點(diǎn),指示下一步的匹配位置。比如NP→ART o ADJ N這條活動(dòng)弧,它指示下一個(gè)待擴(kuò)展的符號(hào)是ADJ這個(gè)終結(jié)符,其中代表名詞短語的NP、代表冠詞的ART、代表形容詞的ADJ以及代表名詞的N均是非終結(jié)符。
c.議程表(Agenda),新歸結(jié)得到的成分存放在議程表中,直到它們均已被處理(被擴(kuò)展)為止。
自底向上的圖表分析方法,如圖2所示,其步驟為1)如果議程表非空,則轉(zhuǎn)步驟3);2)如果還有輸入,則將下一輸入詞的所有解釋加入議程表,否則算法結(jié)束;3)從議程表中取出一個(gè)成分,稱為當(dāng)前成分;4)在文法中查找以當(dāng)前成分為第1個(gè)右部符號(hào)的規(guī)則,生成相應(yīng)的匹配位置為1的一個(gè)活動(dòng)??;5)應(yīng)用弧擴(kuò)展算法將當(dāng)前成分加入圖表。具體為a.將當(dāng)前成分加入圖表;b.枚舉所有以當(dāng)前成分為下一個(gè)匹配符號(hào)的活動(dòng)弧,生成新的活動(dòng)弧,并遞進(jìn)匹配位置;c.對(duì)于以當(dāng)前成分為最后一個(gè)匹配符號(hào)的活動(dòng)弧,歸結(jié)生成以該活動(dòng)弧左項(xiàng)符號(hào)為符號(hào)的新成分,放入議程表中;6)轉(zhuǎn)步驟1)。
文法分析器給出了句子的句法結(jié)構(gòu)后,自然語言理解模塊可進(jìn)一步對(duì)該句的語義進(jìn)行分析,給出以對(duì)話系統(tǒng)內(nèi)部形式表示的句子語義。
常見的自然語言理解模塊主要用2型文法描述和分析處理書面語??谡Z與書面語相比有其特點(diǎn)句式較簡(jiǎn)單,句法結(jié)構(gòu)較隨意,常伴有多種口語語言現(xiàn)象(重復(fù)、修正、省略、指代等)。而漢語口語與英語口語相比,句式更靈活,語序更隨意。傳統(tǒng)的上下文無關(guān)文法很難有效地表示漢語口語的諸多現(xiàn)象,因此難以滿足漢語口語對(duì)話系統(tǒng)的自然語言理解要求。
對(duì)話管理(Dialogue Management)模塊是對(duì)話系統(tǒng)的核心模塊,其作用是在人機(jī)對(duì)話系統(tǒng)中指導(dǎo)產(chǎn)生計(jì)算機(jī)這一方的所有話語。目前常見實(shí)現(xiàn)對(duì)話管理模塊的方法包括有限狀態(tài)方法和基于規(guī)劃的方法。
有限狀態(tài)的對(duì)話管理方法將對(duì)話分為多個(gè)狀態(tài),每個(gè)狀態(tài)與某個(gè)問題相聯(lián)系,用戶的應(yīng)答是觸發(fā)狀態(tài)轉(zhuǎn)移的條件。對(duì)話狀態(tài)和狀態(tài)轉(zhuǎn)移構(gòu)成一個(gè)對(duì)話狀態(tài)的網(wǎng)絡(luò),決定了系統(tǒng)在對(duì)話任一狀態(tài)下的應(yīng)答,也就決定了整個(gè)對(duì)話過程。
這一對(duì)話管理方法有很大的局限性。首先,由于對(duì)話過程已由對(duì)話系統(tǒng)事先確定,用戶只能配合由計(jì)算機(jī)主導(dǎo)的對(duì)話而不能主導(dǎo)對(duì)話的進(jìn)行。如果用戶在對(duì)話的某回合中提供的信息多于系統(tǒng)事先定義的內(nèi)容,系統(tǒng)根據(jù)既定的功能處理時(shí)會(huì)忽略多余信息,但在后面的對(duì)話過程中卻會(huì)向用戶詢問那些被忽略信息;在對(duì)話過程中,用戶有時(shí)會(huì)改變?cè)瓉淼囊鈭D,更改某些信息,或有時(shí)沒有聽清系統(tǒng)的應(yīng)答而會(huì)要求計(jì)算機(jī)重復(fù)原先的問話,而這時(shí)系統(tǒng)已無法回退到之前的狀態(tài),也就無法正確回應(yīng)用戶。其次,有些對(duì)話任務(wù)是需要系統(tǒng)和用戶進(jìn)行協(xié)商的,對(duì)話相關(guān)的各項(xiàng)信息彼此約束相互影響,用戶不可能在對(duì)話一開始就確定所有信息,只能通過和系統(tǒng)的交流討論才能完成。這時(shí)對(duì)話管理的有限狀態(tài)方法也無法適用。最后,對(duì)話系統(tǒng)在應(yīng)用時(shí)可能會(huì)涉及領(lǐng)域任務(wù)內(nèi)多個(gè)相關(guān)主題,在對(duì)話過程中可以在多處自然地出現(xiàn)主題轉(zhuǎn)移。有限狀態(tài)方法難以將這些情況都事先定義到對(duì)話狀態(tài)網(wǎng)絡(luò)中。
基于規(guī)劃的對(duì)話管理方法并不事先確定對(duì)話過程,而是將特定的對(duì)話任務(wù)劃分為多個(gè)小目標(biāo),依據(jù)當(dāng)前對(duì)話狀態(tài)動(dòng)態(tài)地決定對(duì)話的進(jìn)展方向,控制對(duì)話過程逐步實(shí)現(xiàn)這些小目標(biāo),最終完成整個(gè)對(duì)話任務(wù)。這一方法避免了有限狀態(tài)方法中事先定義狀態(tài)和轉(zhuǎn)移的工作,表達(dá)對(duì)話狀態(tài)的能力強(qiáng),便于處理復(fù)雜的任務(wù),且對(duì)話控制較為靈活,易于實(shí)現(xiàn)對(duì)話過程的人機(jī)混合主導(dǎo)。
基于規(guī)劃的對(duì)話管理方法有多種表現(xiàn)形式,往往要根據(jù)領(lǐng)域任務(wù)來設(shè)計(jì)相應(yīng)的控制策略。表格是常見的控制形式,存儲(chǔ)了各種領(lǐng)域信息條件下該如何應(yīng)答的信息。這樣的結(jié)構(gòu)不是人們認(rèn)識(shí)事物的自然形式,需要進(jìn)行總結(jié)歸納,當(dāng)任務(wù)復(fù)雜或涉及多個(gè)主題時(shí),難以完全列舉各種信息狀態(tài),也就難以用這一形式的對(duì)話管理。
目前,對(duì)話系統(tǒng)的實(shí)現(xiàn)是一個(gè)很困難的過程。由于當(dāng)前技術(shù)水平的限制,語音識(shí)別、自然語言理解、自然語言生成模塊都要根據(jù)具體任務(wù)來設(shè)計(jì),特別是對(duì)話管理模塊。在對(duì)話系統(tǒng)中,人-機(jī)雙方所交流的多項(xiàng)信息是和領(lǐng)域任務(wù)有關(guān)的。這些信息之間有相互關(guān)系,它們的整體構(gòu)成了領(lǐng)域概念。為了達(dá)到信息服務(wù)的目的,對(duì)話系統(tǒng)應(yīng)合理安排各項(xiàng)信息的交流次序,就是領(lǐng)域任務(wù)本身的結(jié)構(gòu)。領(lǐng)域概念和領(lǐng)域任務(wù)的結(jié)構(gòu),是對(duì)話管理模塊控制對(duì)話過程的根據(jù)。因此對(duì)于不同的領(lǐng)域任務(wù),往往要重新設(shè)計(jì)對(duì)話控制流程,協(xié)調(diào)各模塊的運(yùn)行。
目前已有的實(shí)現(xiàn)對(duì)話系統(tǒng)的方法,大都應(yīng)用了有限狀態(tài)的對(duì)話管理方法。這一方法的對(duì)話控制較簡(jiǎn)單,對(duì)話過程可以用有限狀態(tài)網(wǎng)絡(luò)來表示,因此易于實(shí)現(xiàn)一定的可移植性。但如前所述該對(duì)話管理方法有較大的局限性,使得相應(yīng)的實(shí)現(xiàn)對(duì)話系統(tǒng)的方法只能用于名址錄、調(diào)查問卷、簡(jiǎn)單的列車時(shí)刻查詢等領(lǐng)域任務(wù)的對(duì)話系統(tǒng)?;谝?guī)劃的對(duì)話管理方法適用范圍廣,但由于對(duì)話控制極大依賴于具體領(lǐng)域任務(wù),所以該方法不易于實(shí)現(xiàn)多路對(duì)話的漢語口語對(duì)話系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服現(xiàn)有技術(shù)的不足之處,提出一種實(shí)現(xiàn)多路對(duì)話的人-機(jī)對(duì)話系統(tǒng)的方法,可廣泛用于快速構(gòu)建信息服務(wù)的漢語口語對(duì)話系統(tǒng)。本發(fā)明將自然語言理解、對(duì)話管理、數(shù)據(jù)庫訪問、自然語言生成有機(jī)結(jié)合在一起,協(xié)調(diào)各模塊的工作;針對(duì)漢語口語特點(diǎn)的自然語言理解模塊,以及基于主題森林的對(duì)話管理模塊,可根據(jù)領(lǐng)域任務(wù)進(jìn)行配置。
本發(fā)明提出一種實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,包括以下步驟1)設(shè)置一個(gè)自然語言理解模塊,用于對(duì)每一用戶語句進(jìn)行句法語義分析,其結(jié)果用語義框架形式來表示;2)設(shè)置一個(gè)對(duì)話管理模塊,在系統(tǒng)運(yùn)行時(shí)生成多個(gè)對(duì)話管理器(對(duì)話管理模塊的應(yīng)用實(shí)例),每個(gè)對(duì)話管理器用于管理一路對(duì)話,接收語義框架,推理得到應(yīng)答焦點(diǎn),調(diào)用自然語言生成模塊得到應(yīng)答文本;3)設(shè)置一個(gè)數(shù)據(jù)庫管理模塊,用于實(shí)現(xiàn)對(duì)話管理模塊給出的數(shù)據(jù)庫操作要求,包括數(shù)據(jù)查詢和數(shù)據(jù)更新;4)設(shè)置一個(gè)自然語言生成模塊,根據(jù)對(duì)話管理模塊給出的對(duì)話知識(shí)、本回合用戶語義、上下文信息和應(yīng)答焦點(diǎn),生成真正的應(yīng)答文本,同時(shí)修改相應(yīng)的上下文信息。
5)上述1)-4)中各模塊預(yù)留有領(lǐng)域任務(wù)相關(guān)的操作接口。
所說的自然語言理解模塊是一個(gè)強(qiáng)大的漢語口語分析器,它使用基于語義類的上下文無關(guān)增強(qiáng)文法來描述漢語口語語言,實(shí)現(xiàn)方法包括以下步驟從配置文件中讀入基于語義類的上下文無關(guān)增強(qiáng)文法;對(duì)輸入的漢語口語句子進(jìn)行分詞,如果輸入為語音識(shí)別結(jié)果的關(guān)鍵詞網(wǎng)格,則直接進(jìn)行步驟1-3)中的處理;對(duì)分詞結(jié)果進(jìn)行句法分析;取最優(yōu)的句法分析結(jié)果進(jìn)行語義分析。
所說的基于語義類的上下文無關(guān)增強(qiáng)文法,具有如下特征a)根據(jù)領(lǐng)域任務(wù)定義文法中所有的終結(jié)符、非終結(jié)符和規(guī)則;b)終結(jié)符為按語義分類的關(guān)鍵詞,關(guān)鍵詞可包含阿拉伯?dāng)?shù)字和英文字母,每個(gè)關(guān)鍵詞都有相應(yīng)的拼音;c)每一條規(guī)則都被賦以一個(gè)優(yōu)先級(jí)級(jí)別;d)一個(gè)優(yōu)先級(jí)的規(guī)則集合可以是詞法分析的或非詞法分析的;e)所說的規(guī)則與語義直接關(guān)聯(lián),每一條規(guī)則都對(duì)應(yīng)一個(gè)語義分析函數(shù)。
所說的語義分析的方法是根據(jù)句法分析結(jié)果的歸結(jié)情況,依次遞歸調(diào)用規(guī)則對(duì)應(yīng)的語義分析函數(shù)。語義分析的結(jié)果采用語義框架的形式來表示,所說的語義包括以下幾類用戶語句包含的領(lǐng)域信息(各信息項(xiàng)的條件,對(duì)已交流信息項(xiàng)的操作),用戶要問的領(lǐng)域信息,用戶的寒暄語義,用戶對(duì)對(duì)話過程的控制語義(取消前一回合、重復(fù)上回合應(yīng)答、對(duì)話重置、要求系統(tǒng)幫助等),用戶對(duì)系統(tǒng)應(yīng)答的確認(rèn)語義,用戶要求系統(tǒng)列舉信息的語義,用戶語句類別(陳述句、各類別的疑問句),以及句法分析錯(cuò)誤的信息。
所說的對(duì)話管理模塊的實(shí)現(xiàn)方法為2-1)從主題森林文件中讀入領(lǐng)域概念的結(jié)構(gòu)和領(lǐng)域任務(wù)的結(jié)構(gòu);2-2)進(jìn)行對(duì)話知識(shí)管理(對(duì)話過程中已交流的信息稱為對(duì)話知識(shí),相應(yīng)的維護(hù)操作稱為對(duì)話知識(shí)管理)和對(duì)話上下文信息的管理。將語義框架放到對(duì)話上下文中進(jìn)行理解,從而決定是否需要對(duì)數(shù)據(jù)庫進(jìn)行操作,并進(jìn)行應(yīng)答推理,決定當(dāng)前應(yīng)答焦點(diǎn)(應(yīng)答的語義),調(diào)用自然語言生成模塊生成具體的應(yīng)答文本。
主題森林由許多棵主題樹組成,每棵主題樹用樹狀的結(jié)構(gòu)表示領(lǐng)域任務(wù)中單個(gè)主題的所有信息。每棵主題樹有一個(gè)主題結(jié)點(diǎn)作為根結(jié)點(diǎn);根結(jié)點(diǎn)連有三個(gè)固定的分枝——主屬性、次屬性和附加屬性,分別表示主題中不同重要程度的信息;每個(gè)分枝有多個(gè)葉子結(jié)點(diǎn)存儲(chǔ)該主題的信息項(xiàng);有中間結(jié)點(diǎn)表示葉子結(jié)點(diǎn)間的關(guān)系,即主題的各項(xiàng)信息間的關(guān)系。所說的主題森林文件,是離線生成的一個(gè)文件,按前序遍歷方式(為已有技術(shù)),將主題森林各結(jié)點(diǎn)內(nèi)容寫在文件中。
步驟2-2)有以下特征a.對(duì)話知識(shí)管理是基于在步驟2-1)中讀入的主題森林結(jié)構(gòu);b.上下文信息包括各回合的主題和語義、各種對(duì)話狀態(tài)(提問、回答、列舉、確認(rèn)、錯(cuò)誤、求助等)、下回合期待的主題和語義等;c.預(yù)留根據(jù)領(lǐng)域任務(wù)設(shè)置相應(yīng)操作的接口;d.預(yù)留根據(jù)領(lǐng)域任務(wù)定義b所列內(nèi)容以外的其它上下文信息的接口;e.數(shù)據(jù)庫操作和應(yīng)答推理是根據(jù)讀入的主題森林結(jié)構(gòu)進(jìn)行的。
本發(fā)明的實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,還可設(shè)置語音識(shí)別模塊用于將用戶輸入語音變成識(shí)別出的關(guān)鍵詞網(wǎng)格。
可設(shè)置語音合成模塊將系統(tǒng)的應(yīng)答文本變成應(yīng)答語音。
還可設(shè)置領(lǐng)域任務(wù)需要但與1)-4)中所說的各模塊無關(guān)的其他模塊。
本發(fā)明具有以下特征1)可用來快速有效地建立用于信息服務(wù)的漢語口語對(duì)話系統(tǒng),且系統(tǒng)支持多路并發(fā)的對(duì)話;2)用主題森林來表示領(lǐng)域概念的結(jié)構(gòu)和領(lǐng)域任務(wù)的結(jié)構(gòu),在此基礎(chǔ)上實(shí)現(xiàn)復(fù)雜的涉及多主題的對(duì)話管理;3)自然語言理解模塊和對(duì)話管理模塊可根據(jù)領(lǐng)域任務(wù)配置;數(shù)據(jù)庫管理模塊與對(duì)話管理模塊間有抽象接口,根據(jù)領(lǐng)域任務(wù)實(shí)現(xiàn);自然語言生成模塊由對(duì)話管理模塊調(diào)用,根據(jù)領(lǐng)域任務(wù)來實(shí)現(xiàn)。
4)可設(shè)置領(lǐng)域任務(wù)相關(guān)的操作、定義領(lǐng)域任務(wù)相關(guān)的上下文信息,用于對(duì)話管理和自然語言生成。
本發(fā)明可用于建立多種信息服務(wù)系統(tǒng),如火車訂票、航班信息查詢、電話號(hào)碼查詢、電影信息查詢、電視節(jié)目查詢、音樂資料查詢等。
圖1為已有的典型對(duì)話系統(tǒng)的模塊組成。
圖2為已有的自底向上的圖表分析算法流程圖。
圖3為本發(fā)明實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法總體框架示意圖。
圖4為本發(fā)明的句法分析方法實(shí)施例流程圖。
圖5為本發(fā)明的每次循環(huán)中的句法分析方法實(shí)施例流程圖。
圖6為本發(fā)明的添加新活動(dòng)弧的方法實(shí)施例流程圖。
圖7為本發(fā)明的遞進(jìn)活動(dòng)弧的方法實(shí)施例流程圖。
圖8為本發(fā)明的歸結(jié)新成分的方法實(shí)施例流程圖。
圖9為本發(fā)明的每次循環(huán)中的結(jié)果優(yōu)化方法實(shí)施例流程圖。
圖10為本發(fā)明的最后的結(jié)果優(yōu)化方法實(shí)施例流程圖。
圖11為本發(fā)明的對(duì)話管理運(yùn)行時(shí)的方法實(shí)施例流程圖。
圖12為利用本發(fā)明方法的航班信息主題樹實(shí)施例結(jié)構(gòu)示意圖。
圖13為利用本發(fā)明方法的航班信息查詢系統(tǒng)主題共享信息索引實(shí)施例示意圖。
圖14利用本發(fā)明方法具體構(gòu)建航班信息查詢系統(tǒng)的方法流程框圖。
圖15利用本發(fā)明方法具體構(gòu)建電話號(hào)碼查詢系統(tǒng)的方法流程框圖。
具體實(shí)施例方式
本發(fā)明提出的一種實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)的方法,結(jié)合附圖詳細(xì)說明如下。
本發(fā)明實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法總體框架如圖3所示,包括以下步驟1) 設(shè)置一個(gè)自然語言理解模塊,用于對(duì)每一用戶語句進(jìn)行句法語義分析,其結(jié)果用語義框架形式來表示;2) 設(shè)置一個(gè)對(duì)話管理模塊,在系統(tǒng)運(yùn)行時(shí)生成多個(gè)對(duì)話管理器(對(duì)話管理模塊的應(yīng)用實(shí)例),每個(gè)對(duì)話管理器用于管理一路對(duì)話,接收語義框架,推理得到應(yīng)答焦點(diǎn),調(diào)用自然語言生成模塊得到應(yīng)答文本;3) 設(shè)置一個(gè)數(shù)據(jù)庫管理模塊,用于實(shí)現(xiàn)對(duì)話管理模塊給出的數(shù)據(jù)庫操作要求,包括數(shù)據(jù)查詢和數(shù)據(jù)更新;4) 設(shè)置一個(gè)自然語言生成模塊,根據(jù)對(duì)話管理模塊給出的對(duì)話知識(shí)、本回合用戶語義、上下文信息和應(yīng)答焦點(diǎn),生成真正的應(yīng)答文本,同時(shí)修改相應(yīng)的上下文信息。
上述1)-4)中各模塊預(yù)留有領(lǐng)域任務(wù)相關(guān)的操作接口。
上述的自然語言理解模塊具體實(shí)現(xiàn)方法如下1-1)從配置文件中讀入基于語義類的上下文無關(guān)增強(qiáng)文法;1-2)對(duì)輸入的漢語口語句子進(jìn)行分詞,如果輸入為語音識(shí)別結(jié)果的關(guān)鍵詞網(wǎng)格,則直接進(jìn)行步驟1-3)中的處理;1-3)對(duì)分詞結(jié)果進(jìn)行句法分析;1-4)取最優(yōu)的句法分析結(jié)果進(jìn)行語義分析。
本發(fā)明的自然語言理解模塊使用基于語義類的上下文無關(guān)增強(qiáng)文法,根據(jù)領(lǐng)域任務(wù)定義文法中所有的終結(jié)符、非終結(jié)符和規(guī)則,具體包含以下五類規(guī)則A.苛刻型規(guī)則,表示為A*→α1α2…αn,(n≥1),意義為右邊相鄰項(xiàng)之間沒有任何別的終結(jié)符;B.跳躍型規(guī)則,表示為A→α1α2…αn,(n≥1),意義為右邊相鄰項(xiàng)之間可以有較少數(shù)量的其它終結(jié)符;C.長(zhǎng)程型規(guī)則,表示為A~→α1α2…αn,(n≥1),意義為右邊相鄰項(xiàng)之間可以有任意數(shù)量的其它終結(jié)符;D.無序型規(guī)則,表示為A@→α1α2…αn,(n≥1,1≤i<j≤n,αi≠αj),意義為右邊各項(xiàng)的先后順序任意;E.無序型規(guī)則,表示為A#→α1α2…αn,(n≥1,1≤i<j≤n,αi≠αj),意義為右邊各項(xiàng)先后順序任意且可以在句型中相互交叉,但句型中的任一終結(jié)符都不會(huì)同時(shí)屬于右邊兩項(xiàng)。
上述增強(qiáng)的文法規(guī)則帶有優(yōu)先級(jí),用0-9表示十個(gè)優(yōu)先級(jí),其中0優(yōu)先級(jí)最高,9優(yōu)先級(jí)最低,且有詞法分析或非詞法分析的屬性。對(duì)于每一優(yōu)先級(jí)的規(guī)則集合,如果某非終結(jié)符出現(xiàn)在某規(guī)則左邊,但沒有出現(xiàn)在其它規(guī)則右邊,則稱這一非終結(jié)符為該優(yōu)先級(jí)的頂級(jí)符號(hào)。這種增強(qiáng)的文法較好地解決了口語中重復(fù)、修正、停頓、語氣詞等多種現(xiàn)象下的自然語言理解問題,較好地處理了漢語語序隨意的問題。
所說的基于語義類的上下文無關(guān)增強(qiáng)文法用兩個(gè)配置文件進(jìn)行定義,一個(gè)文件給出所有的基于語義類的關(guān)鍵詞,一個(gè)文本給出所有的規(guī)則。
步驟1-2)所說的分詞,是指根據(jù)讀入的關(guān)鍵詞將輸入的漢語口語句子劃分為關(guān)鍵詞串,句子中出現(xiàn)的非關(guān)鍵詞被視為垃圾詞,垃圾詞算作一個(gè)特殊的關(guān)鍵詞。分詞采用關(guān)鍵詞的最長(zhǎng)匹配原則,即對(duì)于不同的分詞結(jié)果,取包含最多漢字的結(jié)果;包含漢字同樣多時(shí),取關(guān)鍵詞數(shù)目最少,即相對(duì)匹配最長(zhǎng)的結(jié)果;以上都一樣時(shí)任取一個(gè)結(jié)果。
步驟1-3)的句法分析方法是一個(gè)多次循環(huán)的過程。根據(jù)優(yōu)先級(jí)先后,每一次循環(huán)使用某一優(yōu)先級(jí)的規(guī)則集合,然后對(duì)本次循環(huán)的分析結(jié)果進(jìn)行取舍。具體實(shí)現(xiàn)方法實(shí)施例如圖4所示,其步驟如下01)初始化,將每個(gè)關(guān)鍵詞所屬的語義類都加入議程表;02)從最高優(yōu)先級(jí)到最低優(yōu)先級(jí)03)選擇規(guī)則集為當(dāng)前優(yōu)先級(jí)的所有規(guī)則;04)進(jìn)行句法分析;05)刪除所有活動(dòng)??;06)對(duì)本優(yōu)先級(jí)的分析結(jié)果進(jìn)行優(yōu)化;07)將圖表中所有結(jié)果放入議程表并清空?qǐng)D表;08)最后的結(jié)果優(yōu)化。
其中04)所說的句法分析方法實(shí)施例如圖5所示,其步驟為(1)如果議程表為空,則結(jié)束;(2)從議程表中取出一個(gè)成分,稱為當(dāng)前成分,加入詞圖;(3)添加新的活動(dòng)弧,即在當(dāng)前規(guī)則集中查找可以當(dāng)前成分為第1個(gè)右部符的規(guī)則,生成相應(yīng)的匹配位置為1的一個(gè)活動(dòng)弧,見圖6;(4)遞進(jìn)活動(dòng)弧,即枚舉所有當(dāng)前成分可為下一個(gè)匹配符號(hào)的活動(dòng)弧,生成新的活動(dòng)弧,并遞進(jìn)匹配位置,見圖7;(5)歸結(jié)新成分,即對(duì)于可以當(dāng)前成分為最后一個(gè)匹配符號(hào)的活動(dòng)弧,歸結(jié)生成以該活動(dòng)弧左項(xiàng)符號(hào)為符號(hào)的新成分,放入議程表中,見圖8(算法中的th1和th2是預(yù)設(shè)的閾值,表示語句中各語義成分間可能的垃圾詞長(zhǎng)度);(6)轉(zhuǎn)步驟(1)。
每次循環(huán)都對(duì)分析結(jié)果進(jìn)行優(yōu)化可減少分析的中間結(jié)果,使得算法整體計(jì)算量大大減少,還可及早消除分析過程中的歧義,這些都有利于對(duì)話系統(tǒng)即時(shí)生成應(yīng)答。06)所說的優(yōu)化具體方法實(shí)施例如圖9所示,包括以下步驟(1)計(jì)算分析結(jié)果各成分的位置;(2)如果當(dāng)前優(yōu)先級(jí)是詞法分析(3)刪除本次分析未歸結(jié)為頂級(jí)符號(hào)的成分;(4)比較本次分析得到的頂級(jí)符號(hào)成分;(5)如果占位不沖突,則都保留;(6)否則,判斷是否是同一非終結(jié)符成分且占位真包含;(7)是,則根據(jù)消歧標(biāo)準(zhǔn)只保留某個(gè)頂級(jí)符號(hào)成分;(8)否,都保留;(9)如果當(dāng)前優(yōu)先級(jí)不是詞法分析(10)比較本次分析得到的頂級(jí)符號(hào)成分;
(11)如果占位不沖突,則都保留;(12)否則,根據(jù)消歧標(biāo)準(zhǔn)刪除某個(gè)沖突的頂級(jí)成分,轉(zhuǎn)步驟(10);(13)實(shí)現(xiàn)頂級(jí)成分的保留,即將其所有非終結(jié)符子成分保留,使得它們不參與以后的分析。
其中(7)所說的消歧標(biāo)準(zhǔn)為a.后出現(xiàn)的成分保留(針對(duì)重復(fù)和修正現(xiàn)象);b.結(jié)構(gòu)簡(jiǎn)單的保留;c.如果輸入網(wǎng)格為語音識(shí)別結(jié)果,則語音識(shí)別得分高的保留。
由于歧義可能產(chǎn)生于不同優(yōu)先級(jí)的分析,所以還需進(jìn)行最后的結(jié)果優(yōu)化,消歧標(biāo)準(zhǔn)同上。
上述08)中所說的最后的結(jié)果優(yōu)化具體方法實(shí)施例如圖10所示,包括以下步驟(1)把每次循環(huán)保留的子成分恢復(fù);(2)比較所有的頂級(jí)符號(hào)成分;(3)如果不沖突,則都保留;(4)否則,根據(jù)消歧標(biāo)準(zhǔn)只保留較優(yōu)的;(5)實(shí)現(xiàn)頂級(jí)成分的保留,即保留該成分及其所有子成分作為最終分析結(jié)果。
由于采用了句法語義合一的規(guī)則,所以句法分析的結(jié)果可直接進(jìn)行語義分析。1_4)所說的語義分析具體方法為根據(jù)分析結(jié)果的歸結(jié)情況,依次遞歸調(diào)用所用規(guī)則相應(yīng)的語義分析函數(shù)。語義分析結(jié)果用語義框架的形式來表示。
本發(fā)明的對(duì)話管理模塊的具體實(shí)現(xiàn)方法如下2-1)從主題森林文件中讀入領(lǐng)域概念的結(jié)構(gòu)和領(lǐng)域任務(wù)的結(jié)構(gòu);2-2)在對(duì)話過程的每一回合,進(jìn)行對(duì)話知識(shí)管理和對(duì)話上下文信息的管理。將語義框架放到對(duì)話上下文中進(jìn)行理解,從而決定是否需要對(duì)數(shù)據(jù)庫進(jìn)行操作,并進(jìn)行應(yīng)答推理,決定當(dāng)前應(yīng)答焦點(diǎn),調(diào)用自然語言生成模塊生成具體的應(yīng)答文本。
步驟2-1)的具體實(shí)現(xiàn)方法為01)讀入主題森林的各結(jié)點(diǎn)內(nèi)容。
主題森林中每個(gè)結(jié)點(diǎn)都含有結(jié)點(diǎn)名稱和一個(gè)編號(hào),該編號(hào)唯一標(biāo)識(shí)了結(jié)點(diǎn)相應(yīng)的應(yīng)答焦點(diǎn)。此外,主題結(jié)點(diǎn)內(nèi)容還包括主題名稱、主題類型、相應(yīng)的數(shù)據(jù)庫表名稱、查詢失敗時(shí)應(yīng)答焦點(diǎn)的編號(hào);主屬性、次屬性、附加屬性分枝都是以中間結(jié)點(diǎn)開始的一棵子樹,所有的中間結(jié)點(diǎn)內(nèi)容還包括子結(jié)點(diǎn)的數(shù)目和子結(jié)點(diǎn)間的關(guān)系,關(guān)系可以為“與”或“或”;葉子結(jié)點(diǎn)的內(nèi)容還包括表示該結(jié)點(diǎn)對(duì)應(yīng)的語義(與語義框架中該語義的表示一致),即存儲(chǔ)哪一項(xiàng)領(lǐng)域信息、該信息相應(yīng)的數(shù)據(jù)庫表中字段名稱、該信息數(shù)據(jù)的類型、該項(xiàng)信息的默認(rèn)值。
02)建立各主題共享信息索引。
不同主題會(huì)有類似語義的信息項(xiàng),使得對(duì)話過程中主題轉(zhuǎn)換時(shí)出現(xiàn)省略現(xiàn)象。完成01)后,要建立一個(gè)從語義到葉子結(jié)點(diǎn)的索引,表示各類語義有哪些類似的信息項(xiàng),以及這些信息項(xiàng)在各主題樹中的位置。
在對(duì)話過程的每一回合,對(duì)話管理模塊的輸入是自然理解模塊輸出的語義框架,輸出是應(yīng)答焦點(diǎn)。步驟2-2)的具體實(shí)現(xiàn)方法實(shí)施例如圖11所示,包括以下步驟(1)判斷是否為錯(cuò)誤框架、寒暄語義或系統(tǒng)命令,若是轉(zhuǎn)(18)進(jìn)行應(yīng)答;
(2)若否,則根據(jù)上下文和系統(tǒng)缺省信息確定當(dāng)前主題(3)根據(jù)上下文恢復(fù)省略的語義;(4)領(lǐng)域任務(wù)相關(guān)的系統(tǒng)默認(rèn)語義的處理;(5)進(jìn)行領(lǐng)域任務(wù)需要而語義框架不能表示的語義操作;(6)判斷是否有用戶確認(rèn)信息,若是轉(zhuǎn)(18)進(jìn)行應(yīng)答;(7)若否,則判斷是否有用戶的列舉要求,若是,轉(zhuǎn)(18)進(jìn)行應(yīng)答;(8)若否,則更新對(duì)話知識(shí);(9)判斷是否缺少關(guān)鍵信息,若是轉(zhuǎn)(18)進(jìn)行應(yīng)答;(10)若否,則數(shù)據(jù)庫查詢;(11)判斷是否數(shù)據(jù)庫查詢失敗,若是轉(zhuǎn)(18)進(jìn)行應(yīng)答;(12)若否,則更新對(duì)話知識(shí);(13)如果有用戶提問,轉(zhuǎn)(18)進(jìn)行應(yīng)答;(14)若無,則判斷某信息項(xiàng)條件是否唯一,否則轉(zhuǎn)(18)提問該信息項(xiàng);(15)若是,則判斷數(shù)據(jù)庫查詢結(jié)果是否唯一,是則轉(zhuǎn)(18)回應(yīng)主題信息;(16)若否,但如果某信息項(xiàng)條件唯一且查詢結(jié)果不唯一,則轉(zhuǎn)(18)提問該信息項(xiàng);(17)如果某信息項(xiàng)條件唯一且查詢結(jié)果唯一,轉(zhuǎn)18)提問其它某個(gè)查詢結(jié)果不唯一的信息項(xiàng);(18)調(diào)用自然語言生成模塊,得到真正的應(yīng)答文本;(19)更新上下文信息。
在上述過程中,(4)(5)(19)都留有設(shè)置領(lǐng)域相關(guān)操作的程序接口。
本發(fā)明中對(duì)話管理模塊和數(shù)據(jù)庫管理模塊之間采用抽象的接口。對(duì)話管理模塊給出數(shù)據(jù)庫操作類型和數(shù)據(jù)條件,取得數(shù)據(jù)庫操作結(jié)果。具體的數(shù)據(jù)條件和數(shù)據(jù)操作結(jié)果格式,可采取領(lǐng)域任務(wù)最方便的形式。
上述的數(shù)據(jù)庫管理模塊,具體實(shí)現(xiàn)方法為1)根據(jù)實(shí)際的數(shù)據(jù)庫內(nèi)容,先定義數(shù)據(jù)條件和數(shù)據(jù)操作結(jié)果格式;2)實(shí)現(xiàn)具體的數(shù)據(jù)庫操作,將操作的輸入輸出轉(zhuǎn)化為接口要求的格式。
本發(fā)明中,對(duì)話管理模塊決定應(yīng)答焦點(diǎn)之后,調(diào)用自然語言生成模塊來得到具體的應(yīng)答文本。各主題相關(guān)的應(yīng)答焦點(diǎn)和各信息項(xiàng)相關(guān)的應(yīng)答焦點(diǎn),由主題森林中各結(jié)點(diǎn)內(nèi)容給出的唯一編號(hào)來表示;其它與對(duì)話相關(guān)的應(yīng)答焦點(diǎn),由對(duì)話管理模塊另外編號(hào)來表示。
本發(fā)明的自然語言生成模塊的方法如下1)根據(jù)對(duì)話管理模塊給出的應(yīng)答焦點(diǎn)和對(duì)話狀態(tài)信息,生成具體的應(yīng)答文本;a.如果應(yīng)答焦點(diǎn)為主題信息,則給出主題信息及主題信息的確認(rèn);b.如果應(yīng)答焦點(diǎn)為信息項(xiàng),則給出關(guān)于本信息項(xiàng)的提問、確認(rèn)、列舉條件、列舉數(shù)據(jù)庫查詢結(jié)果等,根據(jù)對(duì)話狀態(tài)信息來確定具體給出哪一種;c.如果應(yīng)答焦點(diǎn)是其它,則給出相應(yīng)的錯(cuò)誤語義、寒暄語義、系統(tǒng)命令和數(shù)據(jù)庫查詢失敗的信息。
2)設(shè)置相應(yīng)的對(duì)話狀態(tài)信息。
本發(fā)明可用于建立多種信息服務(wù)系統(tǒng),如火車訂票、航班信息查詢、電話號(hào)碼查詢、電影信息查詢、電視節(jié)目查詢、音樂資料查詢等。
應(yīng)用例一用本發(fā)明的方法建立一個(gè)文本輸入文本輸出的提供航班信息查詢服務(wù)的對(duì)話系統(tǒng)。
該系統(tǒng)的建立步驟如下1)配置適用該領(lǐng)域任務(wù)的自然語言理解模塊;2)配置適用該領(lǐng)域任務(wù)的對(duì)話管理模塊;3)實(shí)現(xiàn)該領(lǐng)域任務(wù)的數(shù)據(jù)庫管理模塊;4)實(shí)現(xiàn)該領(lǐng)域任務(wù)的自然語言生成模塊;5)構(gòu)建該領(lǐng)域任務(wù)的對(duì)話系統(tǒng)。
配置自然語言理解模塊分三個(gè)步驟1-1)定義關(guān)鍵詞語義類。
分析確定航班信息查詢領(lǐng)域任務(wù)涉及的語義和每類語義的關(guān)鍵詞。例如地點(diǎn)是一類語義,涉及的關(guān)鍵詞包括各城市名稱。有些關(guān)鍵詞可屬于不同的語義類,如數(shù)字1至7,既可用作星期幾,也可以用來表示數(shù)量。飛機(jī)型號(hào)語義類包含“747”、“74F”這樣含有阿拉伯?dāng)?shù)字和英文字母的關(guān)鍵詞。給每一關(guān)鍵詞注拼音,阿拉伯?dāng)?shù)字可按發(fā)音注音,英文字母“A”可注為“e_a”,“B”可注為“e_b”,以此類推。給每一關(guān)鍵詞的語義類定義一個(gè)符號(hào),作為文法中的終結(jié)符。
1-2)定義基于語義類的上下文無關(guān)增強(qiáng)文法。
1-3)與文法中每一規(guī)則相對(duì)應(yīng),實(shí)現(xiàn)對(duì)該規(guī)則進(jìn)行語義分析的函數(shù)。這些函數(shù)將語句包含的語義信息,填入到語義框架中。這些語義既包括航班信息查詢領(lǐng)域內(nèi)的信息項(xiàng),也包括對(duì)話過程中寒暄、求助等一般性語義,以及語句的句式信息。
配置對(duì)話管理模塊分如下步驟2-1)設(shè)置主題森林文件的內(nèi)容。
航班信息主題樹可以構(gòu)造如圖12所示,建立過程是先建立航班信息主題結(jié)點(diǎn),在主題結(jié)點(diǎn)下建立三個(gè)分枝(并標(biāo)明與該主題相關(guān)的數(shù)據(jù)庫)各分枝的葉子結(jié)點(diǎn)與中間結(jié)點(diǎn)的關(guān)系為起點(diǎn)城市、終點(diǎn)城市、航班的日期、航班號(hào)是航班信息查詢的關(guān)鍵信息,屬于主屬性分枝,且“起點(diǎn)城市”結(jié)點(diǎn)和“終點(diǎn)城市”之間是“與”的關(guān)系,它們與“航班號(hào)”結(jié)點(diǎn)是“或”的關(guān)系,這三個(gè)結(jié)點(diǎn)與“日期”結(jié)點(diǎn)是“與”的關(guān)系。起飛時(shí)間和到達(dá)時(shí)間是“或”的關(guān)系,屬于次屬性分枝。其它航班信息相關(guān)的機(jī)型和航空公司,屬于附加屬性分枝,用“或”關(guān)系連接。接著填寫每個(gè)葉子結(jié)點(diǎn)的內(nèi)容,標(biāo)明它們所對(duì)應(yīng)的語義,相應(yīng)的數(shù)據(jù)庫表中字段名稱,數(shù)據(jù)類型等。“起點(diǎn)城市”結(jié)點(diǎn)有一個(gè)默認(rèn)值,存放系統(tǒng)所在的城市。
航班信息查詢對(duì)話系統(tǒng)可能涉及多個(gè)主題,除了以上的主題外,還有票價(jià)信息查詢、航線信息查詢、航空公司信息查詢等多個(gè)主題,都建立相應(yīng)的主題樹。
按前序遍歷方式,將主題森林各結(jié)點(diǎn)內(nèi)容寫在文件中。
當(dāng)對(duì)話管理模塊讀入該主題森林時(shí),會(huì)自動(dòng)建立各主題共享信息索引,如圖13所示。
2-2)實(shí)現(xiàn)領(lǐng)域任務(wù)相關(guān)的系統(tǒng)默認(rèn)語義的處理;2-3)實(shí)現(xiàn)領(lǐng)域任務(wù)需要而語義框架不能表示的語義操作;
2-4)定義領(lǐng)域相關(guān)的上下文信息,實(shí)現(xiàn)更新操作。
實(shí)現(xiàn)數(shù)據(jù)庫管理模塊,方法如下3-1)定義數(shù)據(jù)條件和數(shù)據(jù)操作結(jié)果格式。
對(duì)于航班信息來說,起點(diǎn)城市、終點(diǎn)城市、航班號(hào)等數(shù)據(jù)的條件是等于,日期的條件可以是等于、小于、大于或在…之間,機(jī)型的條件是等于或不等于,……;每個(gè)條件可以是用邏輯關(guān)系“與”和“或”聯(lián)結(jié)的條件組合;采用字符串的格式來表示所有的數(shù)據(jù)條件和操作結(jié)果。
3-2)實(shí)現(xiàn)具體的數(shù)據(jù)庫操作,將操作的輸入輸出轉(zhuǎn)化為接口要求的格式。
用Microsoft SQL Server對(duì)航班數(shù)據(jù)庫進(jìn)行管理時(shí),實(shí)際操作是通過SQL語句實(shí)現(xiàn)的。數(shù)據(jù)庫管理模塊要根據(jù)抽象接口中的內(nèi)容,生成相應(yīng)的SQL語句;要將SQL語句執(zhí)行的結(jié)果再轉(zhuǎn)換成接口要求的格式。
實(shí)現(xiàn)自然語言生成模塊的方法如上所述。
運(yùn)行該領(lǐng)域任務(wù)的對(duì)話系統(tǒng)的方法如圖14所示,其具體方法為根據(jù)步驟1)中的配置內(nèi)容,初始化自然語言理解模塊;5-1)根據(jù)步驟3)中的配置內(nèi)容,初始化數(shù)據(jù)庫管理模塊;5-2)在系統(tǒng)運(yùn)行時(shí),5-3)如果有新的對(duì)話,則初始化一個(gè)新的對(duì)話管理器;5-4)如果對(duì)話結(jié)束,則釋放相應(yīng)的對(duì)話管理器資源;5-5)如果某路對(duì)話有用戶輸入,5-6)將用戶輸入送入自然語言理解模塊;5-7)將語義框架送入相應(yīng)的對(duì)話管理器;5-8)將應(yīng)答文本送回相應(yīng)的用戶。
在上述過程中,初始化一個(gè)對(duì)話管理器的實(shí)質(zhì)是a.對(duì)話管理模塊根據(jù)步驟2)中的配置內(nèi)容生成一個(gè)新的實(shí)例,包含一套新的內(nèi)部數(shù)據(jù)來記錄對(duì)話過程,進(jìn)行應(yīng)答推理;b.設(shè)置該實(shí)例與自然語言理解模塊、數(shù)據(jù)庫管理模塊和自然語言生成模塊的調(diào)用接口。
而釋放對(duì)話管理器資源就是刪除該路對(duì)話相關(guān)的對(duì)話管理模塊實(shí)例。
由于本應(yīng)用例的對(duì)話系統(tǒng)是文本輸入文本輸出的,所以現(xiàn)有模塊已能實(shí)現(xiàn)所求功能。
應(yīng)用例二用本發(fā)明的方法建立一個(gè)語音輸入語音輸出的提供電話查號(hào)服務(wù)的對(duì)話系統(tǒng)。
該系統(tǒng)的建立步驟如下1)配置適用該領(lǐng)域任務(wù)的自然語言理解模塊;2)配置適用該領(lǐng)域任務(wù)的對(duì)話管理模塊;3)實(shí)現(xiàn)該領(lǐng)域任務(wù)的數(shù)據(jù)庫管理模塊;4)實(shí)現(xiàn)該領(lǐng)域任務(wù)的自然語言生成模塊;5)加入語音識(shí)別和語音合成模塊,構(gòu)建該領(lǐng)域任務(wù)的對(duì)話系統(tǒng)。
1)-4)各步驟的具體方法與前一應(yīng)用例相同,但內(nèi)容根據(jù)領(lǐng)域任務(wù)有所不同。
由于該應(yīng)用例要求電話語音輸入和電話語音輸出,所以構(gòu)建該領(lǐng)域任務(wù)的對(duì)話系統(tǒng)時(shí)還要加入語音識(shí)別和語音合成模塊,具體方法如圖15所示
5-1)初始化自然語言理解模塊;5-2)初始化數(shù)據(jù)庫管理模塊;5-3)初始化語音識(shí)別和語音合成模塊;5-4)在系統(tǒng)運(yùn)行時(shí),5-5)如果有新的對(duì)話,則初始化一個(gè)新的對(duì)話管理器;5-6)如果對(duì)話結(jié)束,則釋放相應(yīng)的對(duì)話管理器資源;5-7)如果某路對(duì)話有用戶語音,5-8)將用戶語音送入語音識(shí)別模塊;5-9)將關(guān)鍵詞網(wǎng)格送入自然語言理解模塊;5-10)將語義框架送入相應(yīng)的對(duì)話管理器;5-11)將應(yīng)答文本送入語音合成模塊;5-12)將應(yīng)答語音送回相應(yīng)的用戶。
權(quán)利要求
1.一種實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,其特征在于,包括以下步驟1)設(shè)置一個(gè)自然語言理解模塊,用于對(duì)每一用戶語句進(jìn)行句法語義分析,語義分析結(jié)果用語義框架形式來表示;2)設(shè)置一個(gè)對(duì)話管理模塊,在系統(tǒng)運(yùn)行時(shí)生成多個(gè)對(duì)話管理器,每個(gè)對(duì)話管理器用于管理一路對(duì)話,接收語義框架,推理得到應(yīng)答焦點(diǎn),調(diào)用自然語言生成模塊得到應(yīng)答文本;3)設(shè)置一個(gè)數(shù)據(jù)庫管理模塊,用于實(shí)現(xiàn)對(duì)話管理模塊給出的數(shù)據(jù)庫操作要求,包括數(shù)據(jù)查詢和數(shù)據(jù)更新;4)設(shè)置一個(gè)自然語言生成模塊,根據(jù)對(duì)話管理模塊給出的對(duì)話知識(shí)、本回合用戶語義、上下文信息和應(yīng)答焦點(diǎn),生成真正的應(yīng)答文本,同時(shí)修改相應(yīng)的上下文信息。上述1)-4)中各模塊預(yù)留有領(lǐng)域任務(wù)相關(guān)的操作接口。
2.如權(quán)利要求1所述的實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,其特征在于,所說的自然語言理解模塊實(shí)現(xiàn)方法包括以下步驟1-1)從配置文件中讀入基于語義類的上下文無關(guān)增強(qiáng)文法;1-2)對(duì)輸入的漢語口語句子進(jìn)行分詞,如果輸入為語音識(shí)別結(jié)果的關(guān)鍵詞網(wǎng)格,則直接進(jìn)行步驟1-3)中的處理;1-3)對(duì)分詞結(jié)果進(jìn)行句法分析;1-4)取最優(yōu)的句法分析結(jié)果進(jìn)行語義分析。所說的基于語義類的上下文無關(guān)增強(qiáng)文法,具有如下特征a)根據(jù)領(lǐng)域任務(wù)定義文法中所有的終結(jié)符、非終結(jié)符和規(guī)則;b)終結(jié)符為按語義分類的關(guān)鍵詞,關(guān)鍵詞可包含阿拉伯?dāng)?shù)字和英文字母,每個(gè)關(guān)鍵詞都有相應(yīng)的拼音;c)每一條規(guī)則都被賦以一個(gè)優(yōu)先級(jí)級(jí)別;d)一個(gè)優(yōu)先級(jí)的規(guī)則集合可以是詞法分析的或非詞法分析的;e)所說的規(guī)則與語義直接關(guān)聯(lián),每一條規(guī)則都對(duì)應(yīng)一個(gè)語義分析函數(shù)。
3.如權(quán)利要求1所述的實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,其特征在于,所說的語義分析的方法是根據(jù)句法分析結(jié)果的歸結(jié)情況,依次遞歸調(diào)用規(guī)則對(duì)應(yīng)的語義分析函數(shù);所說的語義分析的結(jié)果采用語義框架的形式來表示,所說的語義包括以下幾類用戶語句包含的領(lǐng)域信息,用戶要問的領(lǐng)域信息,用戶的寒暄語義,用戶對(duì)對(duì)話過程的控制語義,用戶對(duì)系統(tǒng)應(yīng)答的確認(rèn)語義,用戶要求系統(tǒng)列舉信息的語義,用戶語句類別,以及句法分析錯(cuò)誤的信息。
4.如權(quán)利要求1所述的實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,其特征在于,所說的對(duì)話管理模塊的實(shí)現(xiàn)方法為2-1)從主題森林文件中讀入領(lǐng)域概念的結(jié)構(gòu)和領(lǐng)域任務(wù)的結(jié)構(gòu);2-2)進(jìn)行對(duì)話知識(shí)管理和對(duì)話上下文信息的管理。將語義框架放到對(duì)話上下文中進(jìn)行理解,從而決定是否需要對(duì)數(shù)據(jù)庫進(jìn)行操作,并進(jìn)行應(yīng)答推理,決定當(dāng)前應(yīng)答焦點(diǎn),調(diào)用自然語言生成模塊生成具體的應(yīng)答文本。
5.如權(quán)利要求4所述的實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,其特征在于,所說的主題森林由許多棵主題樹組成,每棵主題樹用樹狀的結(jié)構(gòu)表示領(lǐng)域任務(wù)中單個(gè)主題的所有信息。每棵主題樹有一個(gè)主題結(jié)點(diǎn)作為根結(jié)點(diǎn);根結(jié)點(diǎn)連有三個(gè)固定的分枝——主屬性、次屬性和附加屬性,分別表示主題中不同重要程度的信息;每個(gè)分枝有多個(gè)葉子結(jié)點(diǎn)存儲(chǔ)該主題的信息項(xiàng);有中間結(jié)點(diǎn)表示葉子結(jié)點(diǎn)間的關(guān)系,所說的主題森林文件,是離線生成的一個(gè)文件,按前序遍歷方式,將主題森林各結(jié)點(diǎn)內(nèi)容寫在文件中。
6.如權(quán)利要求4所述的實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,其特征在于,所說的步驟2-2)有以下特征a.對(duì)話知識(shí)管理是基于在步驟2-1)中讀入的主題森林結(jié)構(gòu);b.上下文信息包括各回合的主題和語義、各種對(duì)話狀態(tài)、下回合期待的主題和語義;c.預(yù)留根據(jù)領(lǐng)域任務(wù)設(shè)置相應(yīng)操作的接口;d.預(yù)留根據(jù)領(lǐng)域任務(wù)定義b所列內(nèi)容以外的其它上下文信息的接口;e.數(shù)據(jù)庫操作和應(yīng)答推理是根據(jù)讀入的主題森林結(jié)構(gòu)進(jìn)行的。
7.如權(quán)利要求4所述的實(shí)現(xiàn)多路對(duì)話的對(duì)話系統(tǒng)方法,其特征在于,還設(shè)置有語音識(shí)別模塊用于將用戶輸入語音變成識(shí)別出的關(guān)鍵詞網(wǎng)格,設(shè)置語音合成模塊將系統(tǒng)的應(yīng)答文本變成應(yīng)答語音。
全文摘要
本發(fā)明屬于計(jì)算機(jī)及信息服務(wù)技術(shù)領(lǐng)域,涉及一種實(shí)現(xiàn)多路對(duì)話的人-機(jī)漢語口語對(duì)話系統(tǒng)的方法。包括設(shè)置一個(gè)用于進(jìn)行句法語義分析的自然語言理解模塊、一個(gè)在運(yùn)行時(shí)可生成多路對(duì)話管理器的對(duì)話管理模塊、一個(gè)進(jìn)行數(shù)據(jù)庫操作的數(shù)據(jù)庫管理模塊,和一個(gè)用于生成真實(shí)應(yīng)答語言的自然語言生成模塊。各模塊預(yù)留有領(lǐng)域任務(wù)相關(guān)的操作接口。本發(fā)明可根據(jù)不同的領(lǐng)域任務(wù)需求進(jìn)行配置,高速高質(zhì)量地建立相應(yīng)的漢語口語對(duì)話系統(tǒng)。本發(fā)明可為廣泛用于建立多種信息服務(wù)系統(tǒng),如火車訂票、航班信息查詢、電話號(hào)碼查詢、娛樂信息查詢等。
文檔編號(hào)G06F17/27GK1455357SQ03136950
公開日2003年11月12日 申請(qǐng)日期2003年5月23日 優(yōu)先權(quán)日2003年5月23日
發(fā)明者鄭方, 鄔曉鈞 申請(qǐng)人:鄭方