專利名稱:分布式語義模式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及定義和處理用戶/計算機交互的方法和系統(tǒng)。本發(fā)明尤其涉及將用戶輸入分解為命令或?qū)嶓w的系統(tǒng)。
(3)背景技術(shù)在典型計算機系統(tǒng)中,用戶輸入被限制于一套嚴格的有固定格式的用戶響應(yīng)。例如,在有命令行接口時,用戶輸入必須采取一種專用形式,這種專用形式唯一地標別出單個命令和從合理的自變量的有限專用域中選處的自變量。類似地,當有圖形用戶接口時,呈現(xiàn)給用戶的只是有限的選項集,并且對開發(fā)者而言,比較直截了當?shù)氖菫橛邢薜挠脩糨斎爰械拿總€具體用戶輸入定義出一個由有限的命令或?qū)嶓w集組成的用戶輸入域。
通過將用戶限制于一個嚴格的允許輸入或響應(yīng)集,計算機系統(tǒng)要求用戶或操作者要具有很高的技術(shù)水平。在心里把期望要執(zhí)行的任務(wù)轉(zhuǎn)換為能由運行于計算機系統(tǒng)上的應(yīng)用所識別的特定輸入,歷來是用戶的責任。為擴展計算機系統(tǒng)的可用性,一直都在努力為應(yīng)用提供自然語言(NL)接口。自然語言接口將應(yīng)用的功能性延伸到了其有限輸入集之外,并使計算機系統(tǒng)向自然語言格式的輸入開放。自然語言接口負責執(zhí)行一種轉(zhuǎn)換,即從相對含糊和非常依賴于上下文的自然語言王國轉(zhuǎn)換成計算機應(yīng)用所要求的精確和嚴格的輸入集。
自然語言接口利用語義對象和各種動作把自然語言輸入轉(zhuǎn)換成由應(yīng)用使用的信息。當創(chuàng)作與自然語言接口交互的應(yīng)用時,應(yīng)用開發(fā)者使用過程化、說明性編程語言來實現(xiàn)語義對象和動作。諸如C、C++、C#和Fortran等過程化編程語言可定義在應(yīng)用運行過程中對數(shù)據(jù)對象執(zhí)行的各種動作。諸如XML、LISP和Prolog等說明性編程語言可定義應(yīng)用的語義對象。
然而,說明性語言編碼和過程化語言編碼之間的集成對創(chuàng)作者而言是難以開發(fā)的。在一途徑中,語義對象由說明性語言表示,但是創(chuàng)作者需要為使用該語義對象的每個動作復制語義對象聲明。在另一途徑中,語義對象的含糊聲明在過程化語言中使用,這就需要創(chuàng)作者跟蹤和維護語義對象間的關(guān)系。其結(jié)果是,一種將過程化邏輯模塊和說明性邏輯模塊集成起來的創(chuàng)作工具將是有用的。
(4)發(fā)明內(nèi)容本發(fā)明涉及一種帶有指令的計算機可讀介質(zhì),當指令在計算機上實現(xiàn)時促使計算機進行信息處理。該指令包括一說明性邏輯模塊和一過程化邏輯模塊,說明性邏輯模塊適于定義至少有一個語義槽的語義對象,而過程化邏輯模塊適于定義在具有對說明性邏輯模塊的參照的語義對象上執(zhí)行的動作。
本發(fā)明的另一方面涉及編譯應(yīng)用的一種方法。該方法包括標識一在對應(yīng)于說明性邏輯模塊的過程化邏輯模塊中的標定。說明性邏輯模塊中的語義對象被訪問,以執(zhí)行過程化邏輯模塊中的動作。
本方面的又一方面涉及處理自然語言輸入的過程化邏輯模塊。該模塊包括與定義至少有一個槽的語義對象的說明性邏輯模塊相對應(yīng)的標定,及適于使用語義對象在說明性邏輯模塊上執(zhí)行動作的過程化編碼。
用于處理來自用戶的自然語言輸入的計算機可讀介質(zhì)構(gòu)成了本發(fā)明的另一方面。該計算機可讀介質(zhì)包括多個過程化邏輯模塊。每個過程化邏輯模塊包括與定義以等級結(jié)構(gòu)排列的多個語義對象的說明性邏輯模塊相對應(yīng)之標定。另外,每個語義對象包括多個可用自然語言輸入填充的槽。
(5)
圖1是計算系統(tǒng)環(huán)境的塊圖。
圖2是使用自然理解接口的環(huán)境塊圖。
圖3是示出編譯器、過程化邏輯模塊和說明性邏輯模塊之間交互的簡化塊圖。
圖4是使用過程化邏輯模塊和說明性邏輯模塊的示例性實現(xiàn)的塊圖。
(6)具體實施方式
圖1闡述了本發(fā)明可在其中實現(xiàn)的適當計算系統(tǒng)環(huán)境100的示例。該計算系統(tǒng)環(huán)境100僅是適當計算環(huán)境的一個示例,并非旨在提出對本發(fā)明使用范圍或功能性的任何限制。計算環(huán)境100也不應(yīng)被解釋為對示例性操作環(huán)境100中所示的任一組件或其組合有任何依賴性或任何需求。
本發(fā)明也可在很多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置中運作。適于本發(fā)明使用的眾所周知的計算系統(tǒng)、環(huán)境、和/或配置的示例包括,但不限于,個人計算機、服務(wù)器計算機、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程電器消費品、網(wǎng)絡(luò)PC、迷你計算機、大型機、電話系統(tǒng)、包括任一種以上系統(tǒng)或設(shè)備的分布式計算環(huán)境、等等。
本發(fā)明可以計算機可執(zhí)行指令的一般上下文進行說明,諸如由計算機執(zhí)行的程序模塊。通常,程序模塊包括執(zhí)行具體任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)結(jié)構(gòu)的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。本發(fā)明還可在任務(wù)由經(jīng)通信網(wǎng)絡(luò)連接的遠程處理設(shè)備執(zhí)行的分布式計算環(huán)境中實踐。在分布式計算環(huán)境中,程序模塊可置于包括存儲器存儲設(shè)備的本地和遠程計算機存儲介質(zhì)。由程序和模塊執(zhí)行的任務(wù)參照附圖在后面說明。本領(lǐng)域技術(shù)人員可以把該說明和附圖實現(xiàn)為處理器可執(zhí)行指令,這些指令可寫在任何形式的計算機可讀介質(zhì)上。
參照圖1,實現(xiàn)本發(fā)明的示例性系統(tǒng)包括計算機110形式的通用計算設(shè)備。計算機110的組件可包括,但不限于,處理單元120、系統(tǒng)存儲器130以及把包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可能是若干總線結(jié)構(gòu)類型中的任何一種,包括存儲器總線或存儲器控制器、外圍總線、以及使用多種總線架構(gòu)的任一種的本地總線。這些總線架構(gòu)包括,但不限于,工業(yè)標準架構(gòu)(ISA)、微信道架構(gòu)(MSA)、擴展ISA(EISA)、視頻電子標準協(xié)會(VESA)局部總線(VLB)和也稱為Mezzanine總線的外圍部件互連(PCI)。
計算機110通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是能被計算機110訪問的任何可用介質(zhì),并包括易失和非易失介質(zhì)、可移動和不可移動介質(zhì)。作為示例,而非限制,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以任何方法或技術(shù)實現(xiàn)、用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失和非易失介質(zhì)、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括但不限于RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字化視頻光盤(DVD)或其它光學存儲技術(shù)、磁卡、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或任何其它可用于存儲所需信息并可由計算機110訪問的介質(zhì)。通信介質(zhì)通常包括諸如載波或其它傳輸機制的調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)架構(gòu)、程序模塊、或其它數(shù)據(jù),且包括任何信息輸送介質(zhì)。術(shù)語“調(diào)制數(shù)據(jù)信號”意指用將信息編碼成信號的方式設(shè)置或改變其一個或多個特征的信號。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直線連接的有線介質(zhì),和諸如聲學、射頻、紅外線和其它無線介質(zhì)的無線介質(zhì)。以上任何介質(zhì)的組合也應(yīng)包括在計算機可讀介質(zhì)的范圍中。
系統(tǒng)存儲器130包括諸如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132的易失和/或非易失存儲器形式的計算機可讀介質(zhì)。包含有助于計算機110如起動時在元件間傳送信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)133通常存儲在ROM131中。RAM132通常包含可被處理單元120立即訪問和/或現(xiàn)時操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136、和程序數(shù)據(jù)137。
計算機110還可包括其它可移動/不可移動、易失/非易失計算機存儲介質(zhì)。作為示例,圖1圖示了讀取和寫入不可移動、非易失磁性介質(zhì)的硬盤驅(qū)動器141,讀取和寫入可移動、非易失磁盤152的磁盤驅(qū)動器151,讀取和寫入可移動、非易失光盤156,諸如CD-ROM或其它光學介質(zhì)的光盤驅(qū)動器155。其它也用在示例性計算環(huán)境中的可移動/不可移動、易失/非易失計算機存儲介質(zhì)包括,但不限于,如磁帶、閃存卡、CD-ROM、數(shù)字化視頻光盤、數(shù)字化錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器141通常通過諸如接口140的不可移動存儲器接口與系統(tǒng)總線121連接,而磁盤驅(qū)動器151和光盤驅(qū)動器155通常通過諸如接口150的可移動存儲器接口與系統(tǒng)總線121連接。
如上所述并如圖1所示的盤驅(qū)動器及其相關(guān)聯(lián)的計算機存儲介質(zhì)為計算機110提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、和其它數(shù)據(jù)的存儲。在圖1中,例如,硬盤驅(qū)動器141被示為存儲操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146、和程序數(shù)據(jù)147。注意這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136、和程序數(shù)據(jù)137相同或不同。在此給予操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146、和程序數(shù)據(jù)147的不同的標記至少說明它們是不同的副本。
用戶可通過輸入裝置如鍵盤162、話筒163和諸如鼠標、跟蹤球或觸摸板等定位裝置161向計算機110輸入命令和信息。其它輸入裝置(未示出)可包括游戲桿、游戲墊、衛(wèi)星接收器、掃描儀等等。對于自然用戶接口應(yīng)用,用戶還可使用語音、手寫、注視(眼睛的移動)、和其它姿勢與計算機進行通信。為了使自然用戶接口便于使用,計算機可包括捕捉用戶姿勢(gesture)的話筒、書寫板、照相機、移動感應(yīng)器、和其它設(shè)備。這些和其它輸入設(shè)備常常通過與系統(tǒng)總線耦合的用戶輸入接口160與處理單元120相連,但也可通過諸如并行端口、游戲端口或通用串行總線(USB)的其它接口來與總線結(jié)構(gòu)連接。監(jiān)視器191或其它類型的顯示設(shè)備也可通過諸如視頻接口190的接口與系統(tǒng)總線121相連。除了監(jiān)視器,計算機還可包括諸如揚聲器197和打印機196的其它輸出設(shè)備,它們通過輸出外圍接口190相連。
計算機110可以在使用與一臺或多臺遠程計算機,諸如遠程計算機180的邏輯連接的網(wǎng)絡(luò)化環(huán)境中運行。遠程計算機180可以是個人計算機、手持式設(shè)備、服務(wù)器、路由器、網(wǎng)絡(luò)PC、同等裝置或其它普通網(wǎng)絡(luò)節(jié)點,而且通常包括上述與個人計算機110相關(guān)的許多或全部組件。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可包括其它網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)化環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)上是常見的。
當用于LAN網(wǎng)絡(luò)化環(huán)境中時,計算機110通過網(wǎng)絡(luò)接口或適配器170與局域網(wǎng)171連接。當用于WAN網(wǎng)絡(luò)化環(huán)境中時,計算機110通常包括調(diào)制解調(diào)器172或其它用于在廣域網(wǎng)173,諸如因特網(wǎng)中建立通信的裝置??梢允莾?nèi)置式或外置式的調(diào)制解調(diào)器172與系統(tǒng)總線121通過用戶輸入接口160或其它適當機制連接。在網(wǎng)絡(luò)化環(huán)境中,與計算機110相關(guān)的程序模塊或其一部分可存儲在遠程存儲器存儲裝置中。作為示例,而非限制,圖1示出了駐留于遠程計算機180中的遠程應(yīng)用程序185。應(yīng)當理解,所示網(wǎng)絡(luò)連接是示例性的,且其它用于在計算機間建立通信連接的技術(shù)也可以使用。
通常,應(yīng)用程序135使用命令行或圖形用戶接口(GUI)通過用戶輸入接口160與用戶交互。然而,為了簡化和擴展計算機系統(tǒng)的使用,已開發(fā)了能夠接收用戶自然語言輸入的輸入。與自然語言或語音相比,圖形用戶接口是精確的。一個設(shè)計良好的圖形用戶接口通常不會產(chǎn)生模糊引用或需要下層應(yīng)用來確認對通過接口160所接收的輸入的具體判讀。例如,由于接口是精確的,通常不需要為了輸入而向用戶做進一步查詢,例如“你點擊了‘ok’按鈕嗎?”。通常,為圖形用戶接口設(shè)計的對象模型在其實現(xiàn)上是非常機械和嚴格的。
與圖形用戶接口形成對照的是,自然語言查詢或命令常常不是僅轉(zhuǎn)換成一個,而是一系列的對輸入對象模型的功能調(diào)用。與常規(guī)行輸入或圖形用戶接口的嚴格、機械限制形成對比的是,自然語言是一種常常無意識地依靠對話人雙方的智力來解決歧義的通信方法。實際上,自然語言被稱之為“自然”完全是因為它不是機械的。雙方對話人基于有關(guān)圍繞對話任意領(lǐng)域的上下文信息和暗示來解決歧義。在對話人看來,句子“將會議記錄發(fā)送給星期五參加回顧會的人”是無需更多解釋就可完全理解的句子。然而,從機器的機械觀點看,必須指定諸如確切的是什么文檔、所指的是哪一次會議以及確切的文檔發(fā)送對象是誰等具體細節(jié)。
圖2是顯示使用邏輯模塊202的各種應(yīng)用的自然理解接口200簡化塊圖。自然理解接口200通過例如鍵盤、手勢或姿勢識別設(shè)備、光學掃描儀、話筒或其它輸入設(shè)備接收用戶輸入。識別引擎可用來識別用戶輸入中的特征。語音的識別特征常常是口語的用字,而手寫字體的識別特征常常對應(yīng)于用戶手寫字體的筆劃。在一具體示例中,語法可用來識別語音表達中的字。已經(jīng)知道也可為視覺輸入提供識別。識別特征由利用一個或多個邏輯模塊202的接口200處理。
邏輯模塊202包括過程化和說明性編程碼,以驅(qū)動接口200中的應(yīng)用。例如,編碼用XML、LISP、Prolog、C、C++、C#、Java和/或Fortran寫成。各應(yīng)用使用邏輯模塊202中的語義對象訪問知識庫204中的信息。當在此使用時,“語義的”指的是自然語言表達的含義。語義對象可定義對應(yīng)于自然語言表達的特性、方法和事件處理器。在本發(fā)明的一實施例中,語言對象提供了指向可被一個或多個邏輯模塊202利用的實體的一種方法。涉及一特定域應(yīng)用的具體域?qū)嶓w可用任意個不同語義對象來識別,其中每個語義對象都代表以不同方式表達的相同域?qū)嶓w。術(shù)語“語義多形”可用來表示具體實體可用多個語義對象來標識。語義對象的豐度,即語義對象的數(shù)量、其相互關(guān)系及其復雜度,與應(yīng)用將在其自然語言接口中提供的用戶表達水平相對應(yīng)。作為多形的示例,“John Doe”、“NISD的VP”、和“Jim的經(jīng)理”都指向同一個人,卻分別被不同的語義對象PersonByName(以名定人)、PersonByJob(以職定人)、和PersonByRelationship(以關(guān)系定人)所捕捉。
語義對象也可形成嵌套和互相關(guān)聯(lián),包括遞歸性相互關(guān)聯(lián)關(guān)系。換言之,語義對象可以有其自身也是語義對象的成分。例如,“Jim的經(jīng)理”對應(yīng)于有兩個成分的語義對象“Jim”是“Person(人物)”語義對象而“Jim的經(jīng)理”是PersonByRelationship語義對象。這些關(guān)系由說明語義對象間關(guān)系的語義模式來定義。在一實施例中,模式表示為父子分級樹結(jié)構(gòu)。例如,“SendMail”語義對象是有指向存儲在知識庫204中特定人的“收件人”特性的父對象。兩個示例子對象可表示為“PersonByName”對象和“PersonByRelationship”對象,它們可用來標識來自知識庫204的郵件消息收件人。
使用邏輯模塊202,可基于執(zhí)行的動作和/或邏輯模塊202的語義對象訪問知識庫204。本領(lǐng)域技術(shù)人員可以理解,知識庫204可包括將自己以眾多形式表現(xiàn)的各種類型和結(jié)構(gòu)的數(shù)據(jù),諸如,但不限于,關(guān)系數(shù)據(jù)庫或模型對象數(shù)據(jù)庫、web服務(wù)、本地或分布式編程模塊或?qū)ο?、XML文檔或其它帶注解或不帶注解的數(shù)據(jù)表示機制等等。具體示例包括聯(lián)系人、約會、音頻文件、視頻文件、文本文件、數(shù)據(jù)庫等等。然后,自然理解接口200可基于知識庫204中的數(shù)據(jù)及根據(jù)一個或多個邏輯模塊202執(zhí)行的動作,向用戶提供輸出。
本發(fā)明的一方面允許使用包括過程化和說明性語言的各種語言來撰寫邏輯模塊202。這樣,應(yīng)用開發(fā)者就可撰寫源文件,利用不同語言來最佳地表示要執(zhí)行的特定任務(wù)并因此利用每種語言所提供的特征。例如,XML源文件可包括語義對象的聲明,而C#源文件則可包括在XML源文件中聲明的語義對象上執(zhí)行的動作。這樣,類定義可跨若干個以不同語言創(chuàng)作的源文件“分布”(即可訪問)。在一實施例中,源文件可在諸如公共語言運行時(CLR)之類的共享運行時環(huán)境中實現(xiàn)。
圖3示出了編輯用過程化和說明性語言寫成的邏輯模塊的框架。編譯器222翻譯來自至少一個過程化邏輯模塊224和至少一個說明性邏輯模塊226的編碼。在一實施例中,編譯器222將模塊224和226的每個模塊中的編碼轉(zhuǎn)換成處理器可讀的機器語言。在另一實施例中,多個過程化和說明性模塊也可被編譯器222使用和編譯。例如,過程化邏輯模塊224包括定義在說明性邏輯模塊226中的語義對象上執(zhí)行的動作的編碼。例如,動作可用諸如C#的過程化語義編碼,而語義對象可用諸如XML的說明性語言定義。
在本方面的一實施例中,過程化邏輯模塊224包括“部分類”標定。部分類標定或參考向編譯器222通報該具體類跨越了多個源文件。作為結(jié)果,在說明性邏輯模塊226中聲明的特性、方法和/或事件處理器不必在過程化邏輯模塊224中重復,那么編譯器222將不會因為特性、方法和/或事件處理器未出現(xiàn)在過程化邏輯模塊224中而中斷編譯。
下面用XML寫成的編程碼聲明了包括至少一個“foo2”類型的槽“Slot1”的一個“foo1”類型的類“Class1”。取決于使用“Class1”的特定應(yīng)用,其它槽和聲明也可應(yīng)用在此編碼中。
<Class1 type=“foo1”>
<Slot1 type=“foo2”max=“10”/>
…</Class1>
假設(shè)“Class1”聲明如上,則包括諸如提供如下的編碼的過程化編程模塊可寫入“Class1”的訪問槽。例如,下面的編碼例示了一部分類“Class1”,它向編譯器通報另一源文件包含了“Class1”的聲明。下面的編碼包括一占位變量“noDoubt”,以保持“Class1”過程使用的數(shù)據(jù)。作為示例,“Class1”中的“Slot1”被過程“Slot1.Count()”訪問,如下所示。
public partial class Class1SemObj{public SemObj noDoubt;∥clearly a place holder,not a slotpublic void Evaluate (){int size=Slot1.Count();∥access Slot1 defined in XML…∥focus on implementing domain logic herenoDoubt=Slot1
;}}圖4圖示了一示例性應(yīng)用,其中過程化邏輯模塊在語義對象上執(zhí)行動作,而該語義對象未在過程化邏輯模塊中聲明。在此例中,過程化邏輯模塊包括機票預訂模塊250、旅館預訂模塊252和租車預訂模塊254。過程化邏輯模塊250、252和254的每一個都包括指向語義對象256的部分類標定,該對象可在例如單獨的“聲明”XML源文件中聲明。語義對象256包括模塊250、252和254使用的旅行數(shù)據(jù),包括旅行工具、出發(fā)城市、抵達城市、開始日期和/或結(jié)束日期。
語義對象256可通過使用部分類標定由每個過程化邏輯模塊250、252和254訪問。如此,應(yīng)用開發(fā)者只需開發(fā)旅行語義對象256的一個實例。寫在機票預訂模塊250、旅館預訂模塊252和租車預訂模塊254中的編碼可被執(zhí)行,以執(zhí)行在旅行語義對象256中的任意或所有數(shù)據(jù)元素上的動作。作為結(jié)果,應(yīng)用以時間上高效的方式創(chuàng)作,其中該方式可減少重復聲明,并因此防止集成過程化和說明性邏輯而引起的錯誤。
仍參照圖2所示系統(tǒng),在一示例性實施例中,用戶將“Schedule a flight fromSeattle to Minneapolis next Tuesday(安排下星期二從西雅圖飛往明尼阿波利斯)”的自然語言輸入提供給接口200。在此例中,諸如華盛頓州Redmond微軟公司提供的SAPI5.2語音應(yīng)用程序接口可用來標識自然用戶輸入中的語義對象。該輸入可與語義標記相關(guān)聯(lián)(即串行化(serialized))形成對應(yīng)于諸如語義標記語言的語言格式,以填充圖4的旅行語義對象256。例如,語音應(yīng)用程序接口可提供如下輸出;<sml text==“Schedule a flight from Seattle to Minneapolis next Tuesday”confidence=“90”>
<TravelSemanticObject text=“flight”>
<TravelMeans type=“airline”>
<DepartureCity type=“airport code”>SEA</DepartureCity>
<ArrivalCity type=“airport code”>MSP</ArrivalCity>
<StartDAte type=“date”>April 27</StartDate>
<TravelMeans>
<TravelSemanticObject>
</sml>
然后,旅行語義對象256的槽可至少部分地被自然語言輸入的信息填充。如果需要,接著可利用與旅行語義對象256相關(guān)聯(lián)的規(guī)則和/或語義模式來向用戶提示剩下的未知信息,諸如這里的旅行結(jié)束日期。使用旅行語義對象256槽中的信息,機票預訂模塊250可被實例化(instantiated),以訪問知識庫204提供機票價格、空座率等等。另外,旅館預訂模塊252和租車預訂模塊254可被實例化,在無需相應(yīng)過程化編程模塊中進一步聲明旅行語義對象256的情況下,基于旅行語義對象256提供可能的旅館和租車預訂。如此,用單個聲明,旅行語義對象256就可被多個過程化編程模塊訪問。
以上提供的諸示例性實施例實際上被大大簡化了,并且是被用來說明本發(fā)明的操作的。它們說明了可擴展到更加復雜對象分級的本發(fā)明操作。當自然語言表達不是瑣碎的,語義對象樹可用以適當形式將其傳送到邏輯模塊202的方式來充分捕捉某一表達的含義。
本發(fā)明因此提供了一種功能強大的操作工具,它允許語義對象使用諸如XML的說明性編程語言或諸如C#或C++的過程化編程語言的眾多編程語法來聲明。這種框架因此很適合多種過程化編程模塊無需語義對象的多次聲明就可利用說明性模塊,且反之亦然。過程化模塊利用對象的屬性、特性、方法和事件處理器,使單個區(qū)域中的過程化模塊得以更簡便地制作。
盡管參照具體實施例對本發(fā)明進行了說明,本領(lǐng)域技術(shù)人員將理解形式和細節(jié)可作改變,不背離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種帶有指令的計算機可讀介質(zhì),當指令在計算機上實現(xiàn)時致使計算機處理信息,所述指令包括一說明性邏輯模塊,適于定義至少有一個語義槽的語義對象;以及一過程化邏輯模塊,適于定義在參照所述說明性邏輯模塊的所述語義對象上執(zhí)行的動作。
2.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,所述說明性邏輯模塊使用XML、LISP和Prolog中至少之一來實現(xiàn)。
3.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,所述過程化邏輯模塊使用C、C++、Java和C#中至少之一來實現(xiàn)。
4.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,所述指令還包括一第二過程化邏輯模塊,適于定義在參照所述說明性邏輯模塊的所述語義對象上執(zhí)行的動作。
5.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,所述說明性邏輯模塊適于定義分級結(jié)構(gòu)中的關(guān)系語義對象模式。
6.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,所述語義對象包括多個槽。
7.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,它還包括一編譯器,適于將所述說明性邏輯模塊和所述過程化邏輯模塊轉(zhuǎn)換成處理器可讀的機器語言。
8.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,它還包括一接口,用于接收用戶的自然語言輸入。
9.如權(quán)利要求8所述的計算機可讀介質(zhì),其特征在于,所述說明性邏輯模塊的至少一個槽適于被所述自然語言輸入的至少一部分所填充。
10.如權(quán)利要求9所述的計算機可讀介質(zhì),其特征在于,所述過程化邏輯模塊在已被填充的所述至少一個槽上執(zhí)行一動作。
11.如權(quán)利要求9所述的計算機可讀介質(zhì),其特征在于,所述接口適于基于已被填充的所述至少一個槽來訪問知識庫。
12.一種編譯應(yīng)用的方法,其特征在于,它包括標識在一過程化邏輯模塊中的、對應(yīng)于一說明性邏輯模塊的一標定;以及訪問所述說明性邏輯模塊中的一語義對象,以在所述過程化邏輯模塊中執(zhí)行動作。
13.如權(quán)利要求12所述的方法,其特征在于,它還包括將所述說明性邏輯模塊和所述過程化邏輯模塊轉(zhuǎn)換成處理器可讀的機器語言。
14.如權(quán)利要求12所述的方法,其特征在于,多個過程化邏輯模塊包括所述對應(yīng)于所述說明性邏輯模塊的標定。
15.如權(quán)利要求12所述的方法,其特征在于,它還包括聲明多個在分級結(jié)構(gòu)中的關(guān)系語義對象。
16.如權(quán)利要求12所述的方法,其特征在于,所述標定是部分類標定。
17.一種處理自然語言輸入的過程化邏輯模塊,其特征在于,它包括一標定,對應(yīng)于定義有至少一個槽的一語義對象的一說明性邏輯模塊;以及一過程化編碼,適于使用所述語義對象在所述說明性邏輯模塊上執(zhí)行動作。
18.如權(quán)利要求17所述的過程模塊,其特征在于,所述模塊還適于使用所述語義對象和所述至少一個槽訪問知識庫。
19.如權(quán)利要求17所述的過程模塊,其特征在于,所述標定是指向所述語義對象的部分類標定。
20.如權(quán)利要求17所述的過程模塊,其特征在于,所述語義對象定義多個槽。
21.如權(quán)利要求17所述的過程模塊,其特征在于,所述標定對應(yīng)于排列在一分級結(jié)構(gòu)中的多個語義對象。
22.一種處理自然語言輸入的計算機可讀介質(zhì),其特征在于,它包括多個過程化邏輯模塊,其中每個過程化邏輯模塊分別包括對應(yīng)于定義排列在一分級結(jié)構(gòu)中的多個語義對象的一說明性邏輯模塊的標定,每個語義對象包括可被所述自然語言輸入所填充的多個槽。
23.如權(quán)利要求22所述的計算機可讀介質(zhì),其特征在于,每個標定都是部分類標定。
全文摘要
本發(fā)明涉及一種帶有指令的計算機可讀介質(zhì),當指令在計算機上實現(xiàn)時促使計算機進行信息處理。該指令包括適于定義至少有一個語義槽的語義對象的說明性邏輯模塊,以及適于定義在參照說明性邏輯模塊的語義對象上所執(zhí)行動作的過程化邏輯模塊。
文檔編號G06F9/45GK1645318SQ20041006039
公開日2005年7月27日 申請日期2004年12月22日 優(yōu)先權(quán)日2004年1月22日
發(fā)明者洪小文, 王冠三 申請人:微軟公司