專利名稱:在軟件程序中使用強數(shù)據(jù)類型表示語音識別語法的制作方法
在軟件程序中使用強數(shù)據(jù)類型表示語音識別語法
背景
下面的討論僅僅提供廣義的背景信息,并不是為了被用作確定所要求的主 題的范圍的依據(jù)。
"自然語言軟件應(yīng)用程序"是指用于接收以人說話的方式表達的語音表述
或者文本輸入的應(yīng)用程序。然而,傳統(tǒng)的利用語音識別的此類應(yīng)用程序?qū)崿F(xiàn)如
下定義該應(yīng)用程序可能會收到的詞、定義這些詞可能怎樣被組合、以及定義 這些詞的特定組合的語義含義。
通常,術(shù)語"語法"(grammar)是指定義任何給定語言的結(jié)構(gòu)的規(guī)則和 潛在原則,并且語法可被用作自然語言應(yīng)用程序執(zhí)行這些功能的機制。在實現(xiàn) 中,自然語言編程器對語法進行編碼,該語法之后被語音識別器利用。當(dāng)用于 訪問該自然語法程序并且說了一些屬于己經(jīng)被該語法所定義的一組詞和規(guī)則 中的內(nèi)容時,語法識別器將這些詞映射到在該語法中定義的串或者其他類型。 語法識別器之后告知應(yīng)用程序(用戶)說了什么,以及任何由語法所定義的相 應(yīng)的語義信息,并通常將映射后的對象提供給該應(yīng)用程序進行進一步的處理。
這種形式的傳統(tǒng)應(yīng)用程序要求軟件開發(fā)者編碼大量的文本和串文本操作。 為了使編碼更加有效率,開發(fā)者需要對語法從總體上有很好的理解,且對開發(fā) 者所使用的該具體語法的內(nèi)部工作原理有很好的理解。不幸的是,這種語法知 識(grammatical insight)并不是程序員的知識庫的 一 部分。
為了加快整體的開發(fā)周期,開發(fā)者通常希望使用一些現(xiàn)存語法的變體,比 如對現(xiàn)存的語法進行編譯和/或進行增加。然而,對現(xiàn)存的語法進行編譯需要開 發(fā)者花費時間去學(xué)習(xí)其結(jié)構(gòu),而這些時間原本是可以用來增強軟件實現(xiàn)的。盡 管傳統(tǒng)的技術(shù)允許開發(fā)者在另一個語法中參考一個現(xiàn)存的語法,但是該參考語 法對于調(diào)用程序并不是透明的,因為其是通過返回參考語法的語義的方式而起 作用的。
概要
該概要被提供用于以簡要的方式介紹一些概念,這些概念在下面的詳細說 明部分會被描述。該概要不是為了確定所要求的主題的關(guān)鍵特征或者是基本特 征,該概要也不是為了被用作確定所要求的主題的范圍的依據(jù)。
在一實施例中, 一種用于向自然語言實現(xiàn)應(yīng)用程序解釋自然語言輸入的系 統(tǒng)具有語法、源文件、以及語音識別器。該語法具有一組數(shù)據(jù)類型以及關(guān)于該 組數(shù)據(jù)類型的語義編碼定義規(guī)則。該源文件包括用于通過實例化該組數(shù)據(jù)類型 中所選擇的數(shù)據(jù)類型而訪問該語法的計算機可讀編碼。該語音識別器用于接收 自然語言輸入并將該自然語言輸入映射至所選擇的數(shù)據(jù)類型。
在另一實施例中, 一種用于自然語言輸入識別的系統(tǒng)具有輸入設(shè)備、強類 型語法、識別組件、以及解釋組件。該輸入設(shè)備用于接收自然語言輸入。該強 類型語法定義了一組表示自然語言輸入的元素的類型。該識別組件用于使用該 強類型語法將該自然語言輸入轉(zhuǎn)換成文本并基于該文本產(chǎn)生識別輸出。該解釋 組件用于基于該識別輸出確定自然語言輸入的語義。
在另一實施例中,提供一種用于訪問自然語言應(yīng)用程序的語法的方法。提 供一個或多個語法。每個語法具有一組表示自然語言的類型。在一個或多個源 編碼文件中定義用于在自然語言輸入上操作的進程。在運行時,該組類型中被 選擇的類型從一個或多個語法被實例化。該選擇的類型對應(yīng)于自然語言輸入。
附圖簡述
圖1是可以實現(xiàn)本發(fā)明的實施例的計算系統(tǒng)環(huán)境的示意圖2是根據(jù)本發(fā)明的一實施例用于自然語言語法的編譯進程的簡化框圖3是示出根據(jù)本發(fā)明的一實施例的自然語言系統(tǒng)的輸入組件的簡化框
圖4是根據(jù)本發(fā)明的一實施例用于編程強類型語法的進程的簡化的流程
圖5是根據(jù)本發(fā)明的一實施例使用強類型語法編程自然語言程序的編譯進 程的簡化的流程圖6是根據(jù)本發(fā)明的一實施例用于編譯自然語言狀態(tài)機和中間語言編碼的
編譯系統(tǒng)的簡化的框圖7是示出根據(jù)本發(fā)明的一實施例用于實例化語法的元素的簡化的框圖。
詳細描述
圖1說明了適當(dāng)?shù)挠嬎阆到y(tǒng)環(huán)境100的一例,其中可以實現(xiàn)本發(fā)明。計算
系統(tǒng)環(huán)境ioo僅是適當(dāng)?shù)挠嬎悱h(huán)境的一例并且并非意圖限制本發(fā)明的使用范圍
或功能。計算環(huán)境100不應(yīng)被解釋為具有與示例性操作環(huán)境100中所述的組件 的任一或組合有關(guān)的從屬性或要求。
本發(fā)明可以用多種其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置來操作??梢赃m合 與本發(fā)明一起使用的公知計算系統(tǒng)、環(huán)境和/或配置的示例包括、但不限于個 人計算機、服務(wù)器計算機、手提或便攜式設(shè)備、多處理器系統(tǒng)、基于微處理器 的系統(tǒng)、機頂盒、可編程用戶電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、 包括任一上述系統(tǒng)的分布式計算環(huán)境等等。
本發(fā)明可以用計算機可執(zhí)行指令的一般上下文來描述,譬如由計算機執(zhí)行 的程序模塊。 -般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等, 它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。本發(fā)明還可以實際用于分布式 計算環(huán)境中,其中由通過通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸媒質(zhì)連接的遠程處理設(shè)備來 執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊及其它數(shù)據(jù)可以位于本地和遠程存 儲媒質(zhì)中,包括存儲器存儲設(shè)備。分布式計算通過計算設(shè)備和系統(tǒng)間的直接交 換便于共享計算機資源和服務(wù)。這些資源和服務(wù)包括信息、高速緩存、及文件 磁盤存儲的交換。分布式計算利用網(wǎng)絡(luò)連接性,允許用戶機發(fā)揮它們的集體功 效來有利于整個公司。在這點上,多種設(shè)備可以具有應(yīng)用程序、對象或資源, 它們可以利用本發(fā)明的技術(shù)。
參考圖1,用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括形式為計算機110的通用計 算設(shè)備。計算機110的組件可以包括、但不限于處理單元120、系統(tǒng)存儲器
30、及把包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單元120的系統(tǒng)總 線121。系統(tǒng)總線121可以是多種類型總線結(jié)構(gòu)的任一種,包括存儲器總線或 存儲器控制器、外圍設(shè)備總線、及使用任一多種總線結(jié)構(gòu)的本地總線。通過示 例但非限制,這種結(jié)構(gòu)包括工業(yè)標準結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、
增強型ISA(EISA)總線、視頻電子標準聯(lián)盟(VESA)本地總線、及外圍組件互連 (PCI)總線(也稱為Mezzanine總線)。
計算機110—般包括各種計算機可讀媒質(zhì)。計算機可讀媒質(zhì)可以是能由計 算機110訪問的任何可用媒質(zhì)并包括易失性和非易失性的媒質(zhì)、可移動和不可 移動媒質(zhì)。通過示例但非限制,計算機可讀媒質(zhì)可以包括計算機存儲媒質(zhì)和通 信媒質(zhì)。計算機存儲媒質(zhì)包括易失性和非易失性、可移動和不可移動媒質(zhì),它 們以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信 息的任意方法或技術(shù)來實現(xiàn)。計算機存儲媒質(zhì)包括、但不限于RAM、 ROM、 EEPROM、閃存或其它存儲技術(shù)、CDROM、數(shù)字化通用光盤(DVD)或其它光盤 存儲器、磁帶盒、磁帶、磁盤存儲器或其它磁性存儲設(shè)備、或用于存儲期望信 息并能由計算機110訪問的任意其它媒質(zhì)。通信媒質(zhì)一般在諸如載波或其它傳 輸機制這樣的已調(diào)數(shù)據(jù)信號中包含計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其 它數(shù)據(jù),并且包括任意信息傳遞媒質(zhì)。術(shù)語"已調(diào)數(shù)據(jù)信號"意指其一個或多 個特性以對信號內(nèi)信息進行編碼的方式被設(shè)置或改變的信號。通過示例但非限 制,通信媒質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接這樣的有線媒質(zhì)、以及諸如聲音、 RF、紅外這樣的無線媒質(zhì)及其它無線媒質(zhì)。上述的任意組合應(yīng)該包含在計算機 可讀媒質(zhì)的范圍內(nèi)。
系統(tǒng)存儲器130包括計算機存儲媒質(zhì),其形式為易失性和/或非易失性存儲 器,譬如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132。基本輸入/輸出系 統(tǒng)133(BIOS)—般存儲在ROM 131內(nèi),它包含例如啟動期間幫助在計算機110 內(nèi)的組件間傳輸信息的基本例程。RAM 132 —般包含數(shù)據(jù)和/或程序模塊,它 們可以立即訪問并且/或者當(dāng)前由處理單元120在其上操作。通過示例但非限 制,圖1說明了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù) 137。
計算機110還可以包括其它可移動/不可移動、易失性/非易失性計算機存 儲媒質(zhì)。僅僅通過示例,圖l說明了對不可移動、非易失性磁性媒質(zhì)進行讀寫 的硬盤驅(qū)動器MK對可移動、非易失性磁盤152進行讀寫的磁盤驅(qū)動器151、 以及對可移動、非易失性光盤156進行讀寫的光盤驅(qū)動器155,譬如CD ROM
或其它光學(xué)媒質(zhì)。示例性操作環(huán)境中可用的其它可移動/不可移動、易失性/非
易失性計算存儲媒質(zhì)包括、但不限于磁帶盒、閃存卡、數(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)計算機存儲媒質(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給出不同數(shù)字以 說明它們至少是不同的副本。
用戶可以通過諸如鍵盤162和指示設(shè)備161這樣的輸入設(shè)備把命令和信息 輸入到計算機110中,輸入設(shè)備通常稱為鼠標、軌跡球或觸板。其它輸入設(shè)備 (未示出)可以包括麥克風(fēng)、游戲桿、游戲板、衛(wèi)星式轉(zhuǎn)盤、掃描儀等等。這些 和其它輸入設(shè)備經(jīng)常通過與系統(tǒng)總線121耦合的用戶輸入接口 160與處理單元 120相連,但也可以用其它接口和總線結(jié)構(gòu)連接,譬如并行端口、游戲端口或 通用串行總線(USB)。監(jiān)視器191或其它類型的顯示設(shè)備也通過諸如視頻接口 l卯這樣的接口與系統(tǒng)總線121相連。除了監(jiān)視器191之外,計算機還可以包 括其它外部設(shè)備,如揚聲器197和打印機196,它們可以通過輸出外設(shè)接口 l卯 連接。
計算機IIO可以工作在聯(lián)網(wǎng)環(huán)境中,該環(huán)境使用與諸如遠程計算機180這 樣的一個或多個遠程計算機之間的邏輯連接。遠程計算機180可以是個人計算 機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點,并且一般包括 上述與計算機110有關(guān)的許多或全部元件。圖1所述的邏輯連接包括局域網(wǎng) (LAN)171和廣域網(wǎng)(WAN)173,但可以還包括其它網(wǎng)絡(luò)。這種聯(lián)網(wǎng)環(huán)境在辦公 室、企業(yè)范圍計算機網(wǎng)絡(luò)、企業(yè)內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)中是常見的。
當(dāng)用于LAN聯(lián)網(wǎng)環(huán)境中時,計算機110通過網(wǎng)絡(luò)接口或適配器170與LAN 171相連。當(dāng)用于WAN聯(lián)網(wǎng)環(huán)境中時,計算機110 —般包括用于在諸如互聯(lián) 網(wǎng)這樣的WAN 173上建立通信的調(diào)制解調(diào)器172或其它裝置。調(diào)制解調(diào)器172
可以是內(nèi)部或外部的,它可以通過用戶輸入接口 160或其它適當(dāng)機制與系統(tǒng)總 線121相連。在網(wǎng)絡(luò)化環(huán)境中,關(guān)于計算機IIO所述的程序模塊或其部分可以
存儲在遠程存儲器存儲設(shè)備中。通過示例但非限制,圖l說明了駐留在遠程計
算機180上的遠程應(yīng)用程序185。可以理解,所示網(wǎng)絡(luò)連接是示例性的,也可 以使用在計算機間建立通信連接的其它裝置。
在一實施例中,語音識別語法和結(jié)果被表達為各種數(shù)據(jù)類型(比如在面向 對象技術(shù)中的"類")。傳統(tǒng)的自然語言編程應(yīng)用程序?qū)⒄Z法表示為文本串或 者二進制數(shù)據(jù)結(jié)構(gòu),但是可使用強類型語法來替代,以執(zhí)行自然語言的功能。 通常,短語"強類型"(strongly typed)是指語言或者語法如何來運用數(shù)據(jù)類 型。在此處,強類型語法或者語言是指在編譯時所有的類型都可被檢驗的那種。
通常,應(yīng)用程序開發(fā)者通過下述的方式定義語法制作一系列應(yīng)用程序接
口 (API)調(diào)用以便將詞和規(guī)則加入到語音識別器中,或者創(chuàng)建一個文本文件 (比如可擴展標記語言(XML)或者XML文件格式)。上述格式中的一種是 萬維網(wǎng)聯(lián)盟(W3C)語音識別語法規(guī)范(SRGS)。該文本文件一般包含該語 法,由該潛在的語音識別器將該語法編譯成狀態(tài)機。
圖2是強類型語法的一實施例的元素200在編譯進程的不同階段的簡化框 圖。該元素200包括語法元素、語義編碼202和源編碼文件204。語法元素和 語義編碼202定義了用于將語音識別語法和結(jié)果表達成數(shù)據(jù)類型的一組類型 (或者"類")。源編碼文件204定義了一組按照特定應(yīng)用程序處理自然語言 輸入的進程。例如,該語法元素和語義編碼202可包括SRGS語法。例如,源 編碼文件204可包括一個或多個C弁源編碼文件。
語義信息可根據(jù)特定的實施方式被編碼在源編碼文件204中或者在語法元 素和語義編碼202中。在編譯的過程中,如果語義信息被編碼在語法元素和語 義編碼202中,則語法編譯器(grammar complier)將文件分離成為語法元素 206和語義編碼208。源編碼文件204接著被載入到該編譯器并與語義編碼208 結(jié)合以產(chǎn)生中間語言編碼214。語法元素被編譯到狀態(tài)機212。例如,該中間 語言編碼214和狀態(tài)機212可以是能被語音識別器所利用的二進制文件。
通過從語義編碼208 (有關(guān)詞的含義的規(guī)則)中分離語法元素206 (收到 的詞的序列),二進制文件被簡化從而該狀態(tài)機212包括了所有可能的轉(zhuǎn)換或
改變,而該中間語言編碼214包含了語義處理信息。
總的來說,語法編譯器可產(chǎn)生經(jīng)編譯的形式語法(CFG)文件或者類庫 (class library)。通常,CFG文件包含狀態(tài)機212、中間語言編碼214、以及 任何調(diào)試信息(debugging information)。通常,CFG文件要求從例如一語義值 字典中計算出的結(jié)果。
類庫表示包含中間語言編碼214和狀態(tài)機212的強類型語法。調(diào)試信息可 被存儲在分開的文件中(沒有示出)。類庫使得將用于不同文化的語法所有語 言版本保存在同一個文件中變得可能。這不再需要語音應(yīng)用程序開發(fā)者具備他 所使用的語法的口語知識。例如,語音應(yīng)用程序開發(fā)者能在完全不懂西班牙語 的情況下為英語和西班牙語進行編碼。此外,語法中定義的類型可被語音應(yīng)用 程序、以字段形式返回的結(jié)果以及語法對象的屬性所共享。
在該實例中,強類型語法被封裝在動態(tài)鏈接庫(dll)中,動態(tài)鏈接庫是一 種在反病毒過濾器、email過濾器等領(lǐng)域中廣為人知的文件類型。如果強類型 語法被封裝在DLL中,應(yīng)用程序編碼,比如.NET語義編碼就能夠訪問語音應(yīng) 用程序能夠訪問的所有資源。
在這種情況下,開發(fā)者能夠在總體上對于語法只有一點了解并且對于他們 使用的特定語法的內(nèi)部工作原理完全不了解的情況下對自然語言程序進行編 程。此外,開發(fā)者使用自然數(shù)據(jù)類型而不是通過操作輸入串和解析輸出串來和 語法進行互動。
在一實施例中,使用標簽(tag)來創(chuàng)建屬性。例如,與一年中的月份有關(guān) 的屬性可以被編碼如下
<item〉Febmary<tag〉"month,,=2</tag></item>.
上述的編碼片斷將整數(shù)值2與項目"二月"的標簽相關(guān)。于是,如果用戶 從下拉菜單中選擇項目"二月",諸如屬性"2"被分配給標簽"月份"。
屬性可被結(jié)合以創(chuàng)建強類型復(fù)合對象。例如,日期時間"DataTime"對象 可從中間結(jié)果中返回,例如
return(new DataTime( result["year,,], result["month,,], result["day"]).
對象和屬性可基于父規(guī)則重新組合以創(chuàng)建最終結(jié)果。總的來說,強類型的 復(fù)合對象在語義處理期間被創(chuàng)建并被返回給語音應(yīng)用程序。
上述的討論很大程度針對由自然語言應(yīng)用程序的作者執(zhí)行的語義結(jié)果的 處理(產(chǎn)生)。作為語法編譯進程的一部分,源編碼被編譯并被核對。大多數(shù) 的編碼錯誤能在這個階段被找出,并且錯誤的精確位置能夠被確定。此外,調(diào) 試信息可被保存,中斷點可直接在源文件中被設(shè)置,任何變量的內(nèi)容可被察看,
并且可使用包括VS.net、 Rascal等在內(nèi)的任何調(diào)試器。
圖3是示出在自然語言應(yīng)用的設(shè)計階段自然語言系統(tǒng)300的一個實施例的 簡化框圖。系統(tǒng)300包括自然語言識別組件302和耦合至客戶輸入設(shè)備302的 解釋組件306??蛻舳溯斎朐O(shè)備304可以是麥克風(fēng)、筆式(pen-based)輸入設(shè) 備、鍵盤和鼠標、或者任何其他輸入機構(gòu)。通常,自然語言識別組件302從用 戶處捕獲自然語言輸入,將該輸入翻譯成能夠被后續(xù)的處理所使用的形式。該 自然語言識別組件302使用由語法標記語言(比如XML、 SRGS等等)描述的 強類型語法308。自然語言識別組件302包括語音識別組件312A、手寫識別組 件312B、鍵盤和鼠標組建312C、其他輸入312D、以及系統(tǒng)生成輸入312E。 302 的每個識別組件312A-312D使用該強類型語法308將該自然語言輸入轉(zhuǎn)換成文 本,并基于在該強類型語法中定義的類型對該文本進行標記(或者分類)。
經(jīng)標記或者分類的詞接著被傳送到解釋組件306。更具體地說,每個識別 組件312A-312D分別將其分類的詞送到不同的解釋組件314A-314D。每一個解 釋組件314A-314D基于來自不同的識別組件302 (312A-312D)的經(jīng)標記的用 戶輸入,使用語義編碼310來確定用戶希望的"意思"或者"語義"。此時, 來自客戶端設(shè)備304的輸入數(shù)據(jù)基于在語義編碼310中定義的規(guī)則被映射到在 該強數(shù)據(jù)類型的語法308中定義的類型。解釋組件306提供一組語義結(jié)果316 (文本至類型映射)給集成組建320。集成組件320包括一處理器322,該處 理器322用于按照一方案或者其他系統(tǒng)產(chǎn)生的輸入312處理所述一組語義規(guī) 則,以從所述一組語義規(guī)則316中選擇能夠被客戶端設(shè)備304所使用的類型。 因此,不映射至自然語言特征在客戶端設(shè)備304的客戶端應(yīng)用程序中定義的類 型映射將被丟棄,而合適的映射將被結(jié)合到--集成輸出中。集成輸出接著返回 到客戶端設(shè)備304供一客戶端應(yīng)用程序使用。在一實施例中,集成輸出包括一 個或多個具有相關(guān)的字段和屬性的語法對象,它們表示自然語言輸入。
通過使用強類型語法,基于類型的系統(tǒng)的優(yōu)點將在進行自然語言編程時被
開發(fā)者所利用,比如可在編譯時間找到更多的錯誤、通過繼承(inheritance) 和封裝(encapsulation)來進行重構(gòu)(reuse)、對實施細節(jié)進行抽象(abstraction),
等等。這允許開發(fā)者能夠使用自然數(shù)據(jù)類型與語法進行互動。對于使用一語法 來說,開發(fā)者只需要聲明并實例語法類型,設(shè)置隨便什么該類型所暴露的屬性, 并將實例化的類型傳送到語音識別器即可。開發(fā)者不需要管理語法文件。相反, 任何可以由開發(fā)者調(diào)整的設(shè)置作為該類型的外部接口的一部分是可見的。此 外,強類型的語法允許開發(fā)者在運行時間通過標準編程技術(shù)設(shè)置語法的參數(shù), 比如通過構(gòu)造器重載(constructor overload)、暴露的屬性,等等。使用一組參 數(shù)來實例化一語法可通過單個的簡單句來完成。換句話說,語法可基于一組運 行時間參數(shù)在運行時間同時進行(on the fly)參數(shù)化和重建。此外,使用強類 型語法允許開發(fā)者構(gòu)建多語言的語法,而不需要學(xué)習(xí)定義不同語言的結(jié)構(gòu)的規(guī) 則和潛在原理。因此,語音應(yīng)用程序開發(fā)者可按照一語言(比如英語)進行編 碼,并且,顯然的,該同樣的編碼對于另一種語言(比如西班牙語)的同樣語 法的變形同樣適用。
需要理解的是,在強類型語法308中定義的標簽或者分類可被識別器302 使用以標記或者標示所識別的輸入。這些經(jīng)標記或者標示的輸入接著可由解釋 組件306按照開發(fā)者定義的語義編碼306進行處理以產(chǎn)生一組語義結(jié)果316。 較佳的,該組語義結(jié)果316對應(yīng)于客戶端設(shè)備304的操作者所希望的輸入。該 集成的輸出可被客戶端設(shè)別304使用以執(zhí)行用戶所希望的操作。
圖4是用于編程強數(shù)據(jù)類型語法的進程的一實施例的簡化的流程圖。開發(fā) 者在定義語法對象的標簽元素中創(chuàng)建屬性(步驟400)??蛇x擇的,該屬性可 被結(jié)合用于創(chuàng)建強類型復(fù)合對象(步驟402)??蛇x擇的,強類型復(fù)合對象可 根據(jù)父規(guī)則重新組合而創(chuàng)建一最終結(jié)果(步驟404)。該源編碼使用語法編譯 器進行編譯(步驟406)。作為語法編譯進程的一部分,驗證該語法(步驟408)。 最后,調(diào)試信息與中間語言編碼輸出一起被保存(步驟410)。
圖5是用于使用強類型語法編程自然語言程序的進程的簡化的流程圖。一 語法在一個或多個專用源編碼文件和/或一個語法文件中與語義編碼一起被定 義(步驟500)。編譯器將語法從語義編碼中分離(步驟502)。該語法和相 關(guān)的語義編碼被編譯(步驟504)。語法編譯器自動為每一個公共語法規(guī)則創(chuàng)
建一個類(步驟506)。該語法編譯器基于該語法產(chǎn)生一狀態(tài)機(步驟508)。 最后,語法編譯器基于語法文件和/或一個或多個專用源編碼文件中的編碼產(chǎn)生 經(jīng)編譯的中間語言編碼(步驟510)。
圖6是用于編譯自然語言狀態(tài)機和中間語言編碼的編譯器系統(tǒng)600的一實 施例的簡化的框圖。系統(tǒng)600包括由語法編譯器604和編碼編譯器606組成的 編譯器602。語法編譯器604用于接收源語法文件608,其可包括語法和語義 編碼。語法編譯器604用于將語義編碼從語法編碼中分離出來,并將語法編碼 編譯到狀態(tài)機612中。語法編譯器604提供分離的語義編碼之編碼編譯器606。
編碼編譯器606用于接收一個或多個源編碼文件610和來自于語法編譯器 604的分離的語義編碼。編碼編譯器606用于將分離的語義編碼和一個或多個 源編碼文件610編譯到一中間語言編碼614,該中間語言編碼614可包括調(diào)試 信息616。在一些情況中,調(diào)試信息616可被保存在分離的文件中。
強類型數(shù)據(jù)允許開發(fā)者在另一個語法中參考一現(xiàn)存的語法。通過允許開發(fā) 者實例化一語法作為一類型,開發(fā)者能容易地使用標準的面向?qū)ο缶幊碳夹g(shù)或 方法,比如子類或者聚集重構(gòu)并擴展現(xiàn)存的語法。
傳統(tǒng)的技術(shù)無法提供簡單的方法來識別日期或者基于文本文件將其限制 到曰期范圍內(nèi),而強類型語法可以通過這樣的方式來實現(xiàn),其可在運行時間通 過標準編程技術(shù),比如構(gòu)造器重載或者暴露的屬性來接收參數(shù)。語法接著可通 過單個簡單語句(statement)內(nèi)的一組參數(shù)進行實例化。例如,這允許開發(fā)者 限制日期范圍。
圖7是用于實例化語法的系統(tǒng)700的一實施例的簡化的框圖。該系統(tǒng)700 包括語法702和應(yīng)用程序編碼708。語法702較佳的包括一組強類型的類型704。 語法702還可以包括語義編碼706,語義編碼706包括一個或多個構(gòu)造器714。 應(yīng)用程序編碼708使用參數(shù)718調(diào)用構(gòu)造器714。構(gòu)造器714基于所述一組參 數(shù)718使用語法編譯器716重建其狀態(tài)機。
語法編譯器716用于基于從應(yīng)用程序編碼708調(diào)用的參數(shù)718編譯語法 702。來自所述一組類型704中的類型的具體實例可基于構(gòu)造器714或者應(yīng)用 程序編碼708中的其他編碼結(jié)合參數(shù)718而進行實例化。參數(shù)718可在具體的 實例化上設(shè)置特定的要求。此外,得到的實例化的語法(可選擇地具有參數(shù))
720包括該類型所暴露的屬性。該實例化的語法720被傳送到語音識別器722。 語音識別器722用于接收自然語言輸入724并將自然語言輸入映射到實例化的 語法720中的實例化的類型中以產(chǎn)生映射的對象726。
開發(fā)者不需要管理語法702。相反,可由開發(fā)者調(diào)整的任何一個設(shè)置作為 該類型的外部接口是可見的,例如,可通過構(gòu)造器714訪問。這種強類型的語 法允許開發(fā)者在運行時間通過標準編程技術(shù),比如構(gòu)造器重載、暴露的屬性等 等對應(yīng)用程序進行參數(shù)化。此外,實例化的類型能夠從該一組類型中的基本類 繼承屬性。因此,本發(fā)明的實施例提供類似面向?qū)ο蟮囊唤M類型704或者類, 用于編程自然語言應(yīng)用程序,因而允許開發(fā)者將注意力集中在程序特征,而不 是語法的內(nèi)部工作原理上。
盡管本發(fā)明結(jié)合具體實施例進行描述,本領(lǐng)域的技術(shù)人員會認識到對于形
式和細節(jié)可進行改變,但是不脫離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于向自然語言實現(xiàn)應(yīng)用程序解釋自然語言輸入的系統(tǒng),包括語法,包括一組數(shù)據(jù)類型和關(guān)于該組數(shù)據(jù)類型的語義編碼定義規(guī)則;源文件,包括用于通過實例化所述這組數(shù)據(jù)類型中所選擇的數(shù)據(jù)類型而訪問所述語法的計算機可讀編碼;語音識別器,用于接收自然語言輸入并將自然語言輸入映射到所選擇的數(shù)據(jù)類型。
2. 如權(quán)利要求l所述的系統(tǒng),還包括語法編譯器,用于接收所述語法并從所述語義編碼中分離所述這組數(shù)據(jù)類型, 該語法編譯器用于從該語法產(chǎn)生一輸出。
3. 如權(quán)利要求2所述的系統(tǒng),其特征在于,所述輸出包括一狀態(tài)機。
4. 如權(quán)利要求l所述的系統(tǒng),其特征在于,所選擇的數(shù)據(jù)類型在運行時是用 參數(shù)進行實例化的。
5. 如權(quán)利要求l所述的系統(tǒng),還包括編碼編譯器,用于接收源編碼和源文件并將所述源編碼和所述源文件編譯成 為中間語言編碼。
6. 如權(quán)利要求5所述的系統(tǒng),其特征在于,該中間語言編碼包括計算機可讀 編碼和相關(guān)的調(diào)試信息。
7. —種用于自然語言輸入識別的系統(tǒng),包括 輸入設(shè)備,用于接收自然語言輸入;強類型語法,用于定義表示自然語言輸入的元素的一組類型;識別組件,用于使用該強類型語法將該自然語言輸入轉(zhuǎn)換成文本并基于該文 本產(chǎn)生識別輸出;以及解釋組件,用于基于該識別輸出確定所述自然語言輸入的語義。
8. 如權(quán)利要求7所述的系統(tǒng),還包括 語義編碼,用于定義所述語法中的類型的含義。
9. 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述解釋組件使用該語義編碼基 于所述語法來標識所述自然語言輸入的語義。
10. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述識別組件用于將所述自然 語言輸入轉(zhuǎn)換成在該語法中指定的文本。
11. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述解釋組件包括一個或多個 解釋組件,每一個解釋組件用于產(chǎn)生所述自然語言輸入的一可能的解釋,該系統(tǒng)還包括集成組件,用于集成由所述一個或多個解釋組件產(chǎn)生的所述自然語言輸入的 一個或多個可能的解釋。
12. 如權(quán)利要求7所述的系統(tǒng),其特征在于,該自然語言輸入包括語音。
13. 如權(quán)利要求7所述的系統(tǒng),其特征在于,該自然語言輸入包括手寫輸入。
14. 如權(quán)利要求7所述的系統(tǒng),還包括在包含所述強類型語法的語法文件之內(nèi)且在一個或多個專用源編碼文件之內(nèi) 進行定義的應(yīng)用程序編碼。
15. —種訪問用于自然語言應(yīng)用程序的語法的方法,包括 提供一個或多個語法,每一個語法包括表示自然語言的一組類型; 定義用于在一個或多個源編碼文件中的自然語言輸入上進行操作的進程;以 及在運行時間從所述一個或多個語法實例化所述這組類型中所選擇的類型,該 所選擇的類型對應(yīng)于自然語言輸入。
16. 如權(quán)利要求15所述的方法,其特征在于,所述實例化的步驟進一步包括 在所選擇的類型的至少一個被實例化的類型上設(shè)置參數(shù)。
17. 如權(quán)利要求15所述的方法,其特征在于,所述實例化的步驟進一步包括 使用語法編譯器在所述一個或多個語法中為每一個公共語法創(chuàng)建一個類。
18. 如權(quán)利要求15所述的方法,其特征在于,每個語法進一步包括與所述這組類型相關(guān)的語義編碼。
19. 如權(quán)利要求15所述的方法,其特征在于,所選擇的類型基于類型定義從 所述語法繼承屬性。
20. 如權(quán)利要求15所述的方法,還包括 使用語法編譯器將所述語法編譯成一狀態(tài)機;以及 向語音識別器提供所述狀態(tài)機以及與所選擇的類型相關(guān)的語義編碼。
全文摘要
在一實施例中,一種用于向自然語言實現(xiàn)應(yīng)用程序解釋自然語言輸入的系統(tǒng)具有語法、源文件、以及語音識別器。該語法具有一組數(shù)據(jù)類型以及關(guān)于該組數(shù)據(jù)類型的語義編碼定義規(guī)則。該源文件包括用于通過實例化(instantiating)該組數(shù)據(jù)類型中所選擇的數(shù)據(jù)類型而訪問該語法的計算機可讀編碼。該語音識別器用于接收自然語言輸入并映射該自然語言輸入至所選擇的數(shù)據(jù)類型。
文檔編號G10L15/00GK101185116SQ200680018504
公開日2008年5月21日 申請日期2006年5月8日 優(yōu)先權(quán)日2005年6月23日
發(fā)明者J-F·佩洛克斯 申請人:微軟公司