專(zhuān)利名稱(chēng):用Golomb碼壓縮語(yǔ)言模型的制作方法
專(zhuān)利說(shuō)明用Golomb碼壓縮語(yǔ)言模型 背景 以下所述僅僅用于提供一般的背景信息,并不旨在用于確定所要求主題的范圍。
語(yǔ)言模型被用于各種應(yīng)用中,包括諸如自然語(yǔ)言處理和拼寫(xiě)檢查等的噪聲信道應(yīng)用。在自然語(yǔ)言應(yīng)用中,語(yǔ)音識(shí)別器一般的工作方式是把聲學(xué)證據(jù)(信道模型)與對(duì)用戶想說(shuō)的內(nèi)容的預(yù)期(語(yǔ)言模型)結(jié)合在一起。語(yǔ)言模型的一種常用形式被稱(chēng)為三元語(yǔ)法(tri-gram)。
總的來(lái)說(shuō),一n元語(yǔ)法(n-gram)模型是n個(gè)標(biāo)記(詞)的子序列。一三元語(yǔ)法是3個(gè)標(biāo)記(token)的子序列。例如,從短語(yǔ)“to be or not to be”可產(chǎn)生8個(gè)三元語(yǔ)法“$ $ to”、“$ to be”、“to be or”、“be or not”、“or not to”、“not to be”、“to be $”和“be $ $”,其中輸入字符串用兩個(gè)特殊標(biāo)記指示的“$”來(lái)進(jìn)行填充。對(duì)這種n元語(yǔ)法進(jìn)行統(tǒng)計(jì)以估計(jì)用戶想要一特定輸入的可能性。
雖然數(shù)十億的詞匯的文本通常被認(rèn)為大規(guī)模的,但是用于語(yǔ)音識(shí)別的訓(xùn)練組通常都是在數(shù)百億詞匯的文本上進(jìn)行訓(xùn)練。通常,大型語(yǔ)言模型運(yùn)行良好(表明它們的熵很低);然而,存儲(chǔ)器容量常常受到限制,尤其是在類(lèi)似蜂窩電話、個(gè)人數(shù)字助理(PDA)、電子規(guī)劃器等等的移動(dòng)設(shè)備中。一種用于解決該存儲(chǔ)器狀況的技術(shù)通過(guò)去除不頻繁使用的單詞和非常規(guī)變形來(lái)精簡(jiǎn)語(yǔ)言模型。然而,刪除這些術(shù)語(yǔ)降低了語(yǔ)言模型整體的有效性,導(dǎo)致更多由于不能將輸入與精簡(jiǎn)后模型中的單詞相匹配而導(dǎo)致的語(yǔ)義錯(cuò)誤。
概述 本概述用于引入一些概念的簡(jiǎn)化形式,這些概念在下面的詳細(xì)描述中被描述。本概述并不旨在標(biāo)識(shí)所要求主題的關(guān)鍵特征或基本特征,也不旨在用于確定所要求的主題的范圍。
在一實(shí)施例中,使用Golomb編碼技術(shù)壓縮一語(yǔ)言模型。一數(shù)值列表從語(yǔ)言模型的元素中產(chǎn)生。整數(shù)值的列表被排序,且對(duì)每個(gè)元素,列表中相鄰整數(shù)值之間的差值被計(jì)算。使用Golomb碼對(duì)每個(gè)被計(jì)算的差值進(jìn)行編碼。
在另一實(shí)施例中,一種用于處理用戶輸入的系統(tǒng)具有用戶接口、存儲(chǔ)器、Golomb編碼器/解碼器以及處理器。所述用戶接口適于接收用戶輸入。存儲(chǔ)器適于存儲(chǔ)信息并存儲(chǔ)經(jīng)Golomb壓縮的語(yǔ)言模型。Golomb編碼器/解碼器適于對(duì)用戶輸入進(jìn)行編碼并對(duì)經(jīng)Golomb壓縮的語(yǔ)言模型的各元素進(jìn)行解碼。處理器適于將經(jīng)編碼的用戶輸入與經(jīng)Golomb壓縮的語(yǔ)言模型的元素相比較以標(biāo)識(shí)可能的匹配。
在另一實(shí)施例中,提供了一種使用經(jīng)Golomb編碼的語(yǔ)言模型來(lái)解碼用戶輸入的方法。一用戶輸入被劃分成數(shù)個(gè)元素,使用散列(hash)技術(shù)對(duì)它們中的每一個(gè)進(jìn)行編碼。每個(gè)被編碼的元素與經(jīng)Golomb編碼語(yǔ)言模型中的元素進(jìn)行比較來(lái)標(biāo)識(shí)可能的匹配??赡艿钠ヅ浔唤y(tǒng)計(jì)地分析以估計(jì)一可能的匹配正確地將用戶輸入映射到所述經(jīng)Golomb編碼的語(yǔ)言模型中的可能性。
附圖簡(jiǎn)述
圖1是在其中可實(shí)踐各實(shí)施例的一計(jì)算環(huán)境的框圖。
圖2是在其中可實(shí)踐各實(shí)施例的一可選計(jì)算環(huán)境的框圖。
圖3是用于在計(jì)算設(shè)備內(nèi)壓縮一語(yǔ)言模型的進(jìn)程的一實(shí)施例的簡(jiǎn)化流程圖。
圖4是對(duì)根據(jù)圖3的進(jìn)程計(jì)算出的散列值之間的差值進(jìn)行Golomb編碼的進(jìn)程的簡(jiǎn)化流程圖。
圖5是示出一元編碼的Huffman樹(shù)的簡(jiǎn)化框圖。
圖6是解碼經(jīng)Golomb編碼的第一差值的進(jìn)程的一實(shí)施例的簡(jiǎn)化流程圖。
圖7是適于使用經(jīng)Golomb編碼技術(shù)壓縮的語(yǔ)言模型的系統(tǒng)的一實(shí)施例的簡(jiǎn)化框圖。
圖8是根據(jù)經(jīng)Golomb編碼的語(yǔ)言模型解碼用戶輸入的進(jìn)程的一實(shí)施例的簡(jiǎn)化流程圖。
詳細(xì)描述 語(yǔ)言模型被用于語(yǔ)言識(shí)別系統(tǒng)、上下文敏感的拼寫(xiě)檢查系統(tǒng)、用于輸入亞洲字符至計(jì)算機(jī)的接口等的系統(tǒng)中。Golomb壓縮技術(shù)能被應(yīng)用于用戶輸入,例如用于導(dǎo)航諸如互聯(lián)網(wǎng)的全球計(jì)算機(jī)網(wǎng)絡(luò)的統(tǒng)一資源定位符(URL)數(shù)據(jù)。由于在實(shí)踐中存儲(chǔ)器常常受到限制,尤其在諸如蜂窩電話、個(gè)人數(shù)字助理(PDA)等等的移動(dòng)平臺(tái)中,因此語(yǔ)言模型的壓縮就十分有用,而Golomb編碼技術(shù)既能用于壓縮語(yǔ)言模型,又能用于解碼結(jié)果。
圖1示出了在其上可以實(shí)現(xiàn)各實(shí)施例語(yǔ)言模型的適當(dāng)計(jì)算系統(tǒng)環(huán)境100的一個(gè)示例。計(jì)算系統(tǒng)環(huán)境100僅是適當(dāng)?shù)挠?jì)算環(huán)境的一個(gè)示例,并不旨在限制本發(fā)明的使用范圍或功能。計(jì)算環(huán)境100不應(yīng)被解釋為具有與示例性操作環(huán)境100中所述的組件的任一或組合有關(guān)的依賴(lài)或要求。
本發(fā)明可以用多種其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來(lái)操作??梢赃m合與本發(fā)明一起使用的公知計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括但不限于個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手提或便攜式設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程用戶電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括任一上述系統(tǒng)的分布式計(jì)算環(huán)境等等。
本發(fā)明可以用計(jì)算機(jī)可執(zhí)行指令的一般上下文來(lái)描述,譬如由計(jì)算機(jī)執(zhí)行的程序模塊。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類(lèi)型。本發(fā)明還可以實(shí)際用于分布式計(jì)算環(huán)境中,其中由通過(guò)通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸媒質(zhì)連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊及其它數(shù)據(jù)可以位于本地和遠(yuǎn)程存儲(chǔ)媒質(zhì)中,包括內(nèi)存存儲(chǔ)設(shè)備。
參考圖1,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括形式為計(jì)算機(jī)110的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件可以包括但不限于處理單元120、系統(tǒng)內(nèi)存130、及把包括系統(tǒng)內(nèi)存在內(nèi)的各種系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是多種類(lèi)型總線結(jié)構(gòu)的任一種,包括內(nèi)存總線或內(nèi)存控制器、外圍設(shè)備總線、及使用任一多種總線結(jié)構(gòu)的本地總線。作為示例但非限制,這種結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)聯(lián)盟(VESA)本地總線、及外圍組件互連(PCI)總線(也稱(chēng)為Mezzanine總線)。
計(jì)算機(jī)110一般包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能由計(jì)算機(jī)110訪問(wèn)的任何可用介質(zhì)并包括易失性和非易失性的介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例但非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì),它們以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來(lái)實(shí)現(xiàn)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、ROM、EEPROM、閃存或其它存儲(chǔ)技術(shù)、CDROM、數(shù)字化通用光盤(pán)(DVD)或其它光盤(pán)存儲(chǔ)器、磁帶盒、磁帶、磁盤(pán)存儲(chǔ)器或其它磁性存儲(chǔ)設(shè)備、或用于存儲(chǔ)期望信息并能由計(jì)算機(jī)110訪問(wèn)的任意其它介質(zhì)。通信介質(zhì)一般在諸如載波或其它傳輸機(jī)制這樣的已調(diào)數(shù)據(jù)信號(hào)中包含計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任意信息傳遞介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”意指其一個(gè)或多個(gè)特性以對(duì)信號(hào)內(nèi)信息進(jìn)行編碼的方式被設(shè)置或改變的信號(hào)。作為示例但非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接這樣的有線介質(zhì)、以及諸如聲音、RF、紅外這樣的無(wú)線介質(zhì)及其它無(wú)線介質(zhì)。上述的任意組合應(yīng)該包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
系統(tǒng)內(nèi)存130包括計(jì)算機(jī)存儲(chǔ)介質(zhì),其形式為易失性和/或非易失性內(nèi)存,譬如只讀內(nèi)存(ROM)131和隨機(jī)存取內(nèi)存(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)一般存儲(chǔ)在ROM 131內(nèi),它包含例如啟動(dòng)期間幫助在計(jì)算機(jī)110內(nèi)的組件間傳輸信息的基本例程。RAM 132一般包含數(shù)據(jù)和/或程序模塊,它們可以立即訪問(wèn)并且/或者當(dāng)前由處理單元120在其上操作。通過(guò)示例但非限制,圖1說(shuō)明了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110還可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅僅通過(guò)示例,圖1說(shuō)明了對(duì)不可移動(dòng)、非易失性磁性介質(zhì)進(jìn)行讀寫(xiě)的硬盤(pán)驅(qū)動(dòng)器141、對(duì)可移動(dòng)、非易失性磁盤(pán)152進(jìn)行讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器151、以及對(duì)可移動(dòng)、非易失性光盤(pán)156進(jìn)行讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器155,譬如CD ROM或其它光學(xué)介質(zhì)。示例性操作環(huán)境中可用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算存儲(chǔ)介質(zhì)包括、但不限于磁帶盒、閃存卡、數(shù)字通用盤(pán)、數(shù)字視頻磁帶、固態(tài)RAM、固態(tài)ROM等等。硬盤(pán)驅(qū)動(dòng)器141一般通過(guò)如接口140這樣的不可移動(dòng)存儲(chǔ)器接口與系統(tǒng)總線121相連,且磁盤(pán)驅(qū)動(dòng)器151和光盤(pán)驅(qū)動(dòng)器155一般用如接口150這樣的可移動(dòng)存儲(chǔ)器接口與系統(tǒng)總線121相連。
上面討論并在圖1中說(shuō)明的驅(qū)動(dòng)器和它們的相關(guān)計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)110提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。在圖1中,例如,所述硬盤(pán)驅(qū)動(dòng)器141存儲(chǔ)操作系統(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ù)字以說(shuō)明它們至少是不同的副本。
用戶可以通過(guò)諸如鍵盤(pán)162、麥克風(fēng)163的輸入設(shè)備以及諸如鼠標(biāo)、軌跡球或接觸墊的指示設(shè)備161把命令和信息輸入到計(jì)算機(jī)110中。其它輸入設(shè)備(未示出)可以包括游戲桿、游戲板、衛(wèi)星式轉(zhuǎn)盤(pán)、掃描儀等等。這些和其它輸入設(shè)備經(jīng)常通過(guò)與系統(tǒng)總線121耦合的用戶輸入接口160與處理單元120相連,但也可以用其它接口和總線結(jié)構(gòu)連接,譬如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191或其它類(lèi)型的顯示設(shè)備也通過(guò)諸如視頻接口190這樣的接口與系統(tǒng)總線121相連。除了監(jiān)視器之外,計(jì)算機(jī)還可以包括諸如揚(yáng)聲器197和打印機(jī)196的其它外部設(shè)備,它們可以通過(guò)輸出外圍接口195連接。
計(jì)算機(jī)110可以工作在聯(lián)網(wǎng)環(huán)境中,該環(huán)境使用與諸如遠(yuǎn)程計(jì)算機(jī)180這樣的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)之間的邏輯連接。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),并且一般包括上述與計(jì)算機(jī)110有關(guān)的許多或全部元件。圖1所述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但可以還包括其它網(wǎng)絡(luò)。這種聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)中是常見(jiàn)的。
當(dāng)用于LAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通過(guò)網(wǎng)絡(luò)接口或適配器170與LAN 171相連。當(dāng)用于WAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110一般包括用于在諸如互聯(lián)網(wǎng)這樣的WAN 173上建立通信的調(diào)制解調(diào)器172或其它裝置。調(diào)制解調(diào)器172可以是內(nèi)部或外部的,它可以通過(guò)用戶輸入接口160或其它適當(dāng)機(jī)制與系統(tǒng)總線121相連。在網(wǎng)絡(luò)化環(huán)境中,關(guān)于計(jì)算機(jī)110所述的程序模塊或其部分可以存儲(chǔ)在遠(yuǎn)程內(nèi)存存儲(chǔ)設(shè)備中。作為示例但非限制,圖1說(shuō)明了駐留在遠(yuǎn)程計(jì)算機(jī)180上的遠(yuǎn)程應(yīng)用程序185。可以理解,所示網(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)間建立通信連接的其它裝置。
圖2是作為一示例性計(jì)算環(huán)境的一移動(dòng)設(shè)備200的框圖。移動(dòng)設(shè)備200包括微處理器202、存儲(chǔ)器204、輸入/輸出(I/O)組件206以及用于與遠(yuǎn)程計(jì)算機(jī)或其它移動(dòng)設(shè)備的通信的通信接口208。在一實(shí)施例中,前述組件經(jīng)適當(dāng)總線210耦合以互相通信。
存儲(chǔ)器被實(shí)現(xiàn)為非易失性電子存儲(chǔ)器,例如具有電池備份模塊(未示出)的隨機(jī)存取存儲(chǔ)器(RAM),以使得當(dāng)移動(dòng)設(shè)備200的總電源被切斷的時(shí)候,存儲(chǔ)在存儲(chǔ)器204中的信息不會(huì)丟失。存儲(chǔ)器204的一部分較佳地被分配作為用于程序執(zhí)行的可尋址內(nèi)存,而存儲(chǔ)器204的另一部分則被用于存儲(chǔ),例如磁盤(pán)驅(qū)動(dòng)器上的模擬存儲(chǔ)。
存儲(chǔ)器204包括操作系統(tǒng)212、應(yīng)用程序214和對(duì)象存儲(chǔ)216。在操作過(guò)程中,操作系統(tǒng)212較佳地被處理器202從存儲(chǔ)器204中執(zhí)行。在一較佳實(shí)施例中,操作系統(tǒng)212是可從微軟公司購(gòu)得的WINDOWS
CE品牌操作系統(tǒng)。操作系統(tǒng)212較佳地被設(shè)計(jì)用于移動(dòng)設(shè)備,并可通過(guò)一組開(kāi)放的(exposed)應(yīng)用編程接口和方法被應(yīng)用程序214所使用來(lái)實(shí)現(xiàn)各數(shù)據(jù)庫(kù)特征。在對(duì)象存儲(chǔ)216中的對(duì)象至少部分響應(yīng)于對(duì)于開(kāi)放的應(yīng)用編程接口和方法的調(diào)用而由應(yīng)用程序214和操作系統(tǒng)212維持。
通信接口208表示允許移動(dòng)設(shè)備200發(fā)送和接收信息各種設(shè)備和技術(shù)。這些設(shè)備包括諸如有線和無(wú)線調(diào)制解調(diào)器、衛(wèi)星接收器和廣播調(diào)諧器等。移動(dòng)設(shè)備200還能直接連接到計(jì)算機(jī)從而與之交換數(shù)據(jù)。在這種情況下,通信接口208可以是紅外收發(fā)器或者串行或并行通信連接,它們都能發(fā)送流信息。
輸入/輸出組件206包括各種輸入設(shè)備,例如接觸敏感屏幕、按鈕、滾軸和麥克風(fēng),以及各種輸出設(shè)備,包括音頻發(fā)生器、振動(dòng)設(shè)備和顯示器。上述設(shè)備都是作為例子,并不需要都在移動(dòng)設(shè)備200中體現(xiàn)出來(lái)。另外,其它輸入/輸出設(shè)備可在本發(fā)明的范圍內(nèi)被添加到移動(dòng)設(shè)備200中或者與移動(dòng)設(shè)備200一起使用。
雖然修剪語(yǔ)言模型是一種用于解決存儲(chǔ)器限制的可行技術(shù),但壓縮是更有吸引力的選擇,因?yàn)樗茉诖鎯?chǔ)器中存儲(chǔ)更多的原始語(yǔ)言模型。
圖3是用于在計(jì)算設(shè)備中壓縮語(yǔ)言模型的進(jìn)程的一實(shí)施例的簡(jiǎn)化流程圖。一處理器根據(jù)以下等式把各元素(例如詞、URL,n元語(yǔ)法等)散列成從1到P的數(shù)值 HG=HASH(元素)%P 其中P是一適當(dāng)?shù)馁|(zhì)數(shù)。例如,在一實(shí)施例中,數(shù)值可以是整數(shù)。此處所使用的術(shù)語(yǔ)“整數(shù)”是指所有的數(shù)字,包含所有的自然數(shù)、這些數(shù)字的負(fù)數(shù)和零。對(duì)于語(yǔ)言模型中的所有元素而言,處理器把一輸入的每個(gè)元素散列至一整數(shù)中(步驟300)。散列值(HG)被排序(步驟302)。第一差值在列表中的相鄰散列(HG)之間的被計(jì)算(步驟304)。使用Golomb碼存儲(chǔ)到達(dá)間隔(interarrival)(步驟306)。這里,術(shù)語(yǔ)“到達(dá)間隔”是指在Golomb編碼數(shù)據(jù)中的間隙(gap)或零。例如,泊松(Poisson)處理的到達(dá)間隔為指數(shù)分布。
使用這種處理,用于存儲(chǔ)N個(gè)元素所需的存儲(chǔ)器的位的數(shù)量通過(guò)下述等式計(jì)算
其中N代表元素的數(shù)量。質(zhì)數(shù)P表示在存儲(chǔ)器使用和損失之間的折衷,例如,最小質(zhì)數(shù)大于N乘以連續(xù)值之間的所希望的平均差值的積。該方法獨(dú)立于元素大小,使得長(zhǎng)的詞、URL或n元語(yǔ)法并不比短的需要更多花費(fèi)(在存儲(chǔ)器使用方面)。
圖4是對(duì)根據(jù)圖3的流程計(jì)算出的散列值之間的差值進(jìn)行Golomb編碼的進(jìn)程的簡(jiǎn)化流程圖。應(yīng)該理解的是該流程圖表示高效Golomb編碼方案的一個(gè)例子。本領(lǐng)域普通技術(shù)人員能夠定義計(jì)算商和余數(shù)的其它方法,它們對(duì)編碼所需的存儲(chǔ)器要求會(huì)有些許不同的特征。值K根據(jù)下述等式被選擇 其中N表示在一輸入序列中的項(xiàng)目(例如元素或n元語(yǔ)法)的數(shù)量,P表示大于N的一合適的質(zhì)數(shù),例如,最小質(zhì)數(shù)大于N乘以連續(xù)值之間的所希望的平均差值的積,且ceil函數(shù)指示不小于其自變量(argument)的最小整數(shù)(步驟400)。值M根據(jù)下述等式被選擇 M=2K (步驟402)。商值Xq根據(jù)下述等式被計(jì)算用于每個(gè)第一差值(XG) 其中floor函數(shù)指示不大于其自變量的最大整數(shù)(步驟404)。根據(jù)下述等式被計(jì)算每個(gè)第一分差值XG的余數(shù)值Xr Xr=XGmodM (步驟406)。商值Xq以一元格式編碼(Xq各位0后跟著一位1)(步驟408)。余數(shù)Xr能夠以二元格式在K位中編碼(步驟410)。在圖4中示出的Golomb編碼技術(shù)減少了存儲(chǔ)一語(yǔ)言模型所需的存儲(chǔ)器要求,使得商值需要Xq+1位,而余數(shù)值需要log2M位。
經(jīng)排序的散列值可被認(rèn)為是由泊松處理所創(chuàng)建的一個(gè)良好近似。在泊松處理中,達(dá)到間隔具有指數(shù)分布。一般的,概率可如下表示 Pr(x)=λe-λx,其中并且變量λ表示到達(dá)間隔。存儲(chǔ)器使用隨后能根 據(jù)下述等式計(jì)算 且存儲(chǔ)器使用根據(jù)下述等式定義
因此,存儲(chǔ)器使用獨(dú)立于元素大小。這表明散列和Golomb編碼能夠共同減少諸如語(yǔ)言模型的整體存儲(chǔ)器使用。
圖5是示出一元編碼的Huffman樹(shù)的簡(jiǎn)化框圖。在此實(shí)例中,符號(hào)A具有0.5的概率,而符號(hào)B具有0.25的概率,等等。假設(shè)x的概率是 Pr(x)=(1-B)Bx 其中B=1/2。圖500包括數(shù)個(gè)節(jié)點(diǎn),大致相等的概率被分配給一節(jié)點(diǎn)的每一個(gè)子節(jié)點(diǎn)(child)。根節(jié)點(diǎn)502表示根詞或符號(hào)。符號(hào)是“A”或其它符號(hào)。如果符號(hào)是A,那么值“1”被分配,對(duì)應(yīng)于從根502到節(jié)點(diǎn)506A的路徑。系統(tǒng)然后在下一位或位序列中搜索。如果符號(hào)不是A,那么系統(tǒng)分配0并且核對(duì)是否符號(hào)是B。如果符號(hào)是B,那么系統(tǒng)對(duì)應(yīng)于從504B到506B的路徑分配1。則對(duì)于符號(hào)B的結(jié)果值是“01”,而對(duì)于符號(hào)A的結(jié)果值是“1”。一般而言,圖500示出z-1個(gè)0后面跟著一個(gè)1的一元序列。
下面的表1示出根據(jù)一符號(hào)在圖內(nèi)相對(duì)于根詞的位置而得到的該符號(hào)的概率。
表1. 符號(hào)代碼 長(zhǎng)度概率 A 11 2-1 B 01 2 2-2 C 001 3 2-2 N N(個(gè)0)+1 N 2-N 圖6是用于解碼經(jīng)Golomb編碼的第一差值的進(jìn)程的一實(shí)施例簡(jiǎn)化流程圖。每次讀取商值Xq的符號(hào)的一位直到值“1”被檢測(cè)到(步驟600)。余數(shù)值Xr的符號(hào)以二元形式讀取(讀取log2M個(gè)字節(jié))(步驟602)。最終,第一差值X用Xq和Xr根據(jù)下述等式來(lái)計(jì)算 XG=M*Xq+Xr 其中解碼輸出XG(步驟604)。在此實(shí)例中,變量M表示2的冪,該冪約等于第一差值除以2的期望值并且在正無(wú)窮的方向舍入至最接近的整數(shù)。
圖7是適于利用經(jīng)Golomb編碼技術(shù)壓縮的語(yǔ)言模型的系統(tǒng)的一實(shí)施例的簡(jiǎn)化框圖。系統(tǒng)700包括帶有用戶接口704、經(jīng)Golomb壓縮的語(yǔ)言模型和存儲(chǔ)器708、處理器710、Golomb編碼器/解碼器712和一組統(tǒng)計(jì)算法714的軟件應(yīng)用程序702。用戶經(jīng)由用戶接口704輸入數(shù)據(jù)到系統(tǒng)700中。Golomb編碼器/解碼器712對(duì)用戶輸入進(jìn)行編碼并把編碼后的輸入傳送給處理器710,該處理器根據(jù)經(jīng)Glomb壓縮的語(yǔ)言模型706分析被編碼的輸入以產(chǎn)生一組可能的匹配。處理器710根據(jù)在壓縮語(yǔ)言模型706內(nèi)的詞使用統(tǒng)計(jì)算法714來(lái)選擇一或多個(gè)可能匹配并把一或多個(gè)可能匹配傳送給用戶接口704作為向用戶顯示的輸出。
表2列出了根據(jù)本發(fā)明一實(shí)施例的一些參數(shù)設(shè)置。
表2 點(diǎn)進(jìn)N(URL) 平均Δ(P/N)1/log(2)+log2(P/N)M(存儲(chǔ)器) 10 680,4181,273 141,159,768 100 80,263 11,650 17168,853 10005,888 55,701,699 2921,383 表2示出有關(guān)URL的經(jīng)Golomb編碼的散列值的一個(gè)實(shí)施例的存儲(chǔ)器使用。存儲(chǔ)器取決于URL的數(shù)量(N)和平均Δ(P/N)兩者。該表示出了3組平均Δ,對(duì)應(yīng)于每個(gè)URL 14-29個(gè)位。該類(lèi)壓縮使得把大語(yǔ)言模型并入可攜帶設(shè)備成為可能。
一般來(lái)說(shuō),語(yǔ)言模型能被用于輔助一用戶訪問(wèn)信息。例如,在一個(gè)搜索引擎中,Golomb編碼技術(shù)能被用于測(cè)試多種由用戶所提供的搜索詞的拼寫(xiě)。在便攜式設(shè)備的網(wǎng)頁(yè)瀏覽器中的環(huán)境中,Golomb壓縮(編碼/解碼)技術(shù)可用于測(cè)試多種URL的值從而糾正錯(cuò)誤拼寫(xiě)的URL。
圖8是相對(duì)于經(jīng)Golomb編碼的語(yǔ)言模型來(lái)解碼用戶輸入的進(jìn)程的一實(shí)施例的簡(jiǎn)化的流程圖。。用戶輸入被接收或讀取,例如,從數(shù)據(jù)流、文件或輸入設(shè)備中一個(gè)符號(hào)接著一個(gè)符號(hào)地接收或讀取(步驟800)。用戶輸入被劃分成多個(gè)n元語(yǔ)法(步驟802)。多個(gè)n元語(yǔ)法中的每一個(gè)使用散列技術(shù)進(jìn)行編碼(步驟804)。每個(gè)經(jīng)編碼的n元語(yǔ)法與經(jīng)Golomb編碼語(yǔ)言模型進(jìn)行比較以標(biāo)識(shí)可能的匹配(步驟806)。為每個(gè)可能的匹配統(tǒng)計(jì)地評(píng)估上述可能匹配是把收到的用戶輸入的正確地映射到經(jīng)Golomb編碼的語(yǔ)言模型中元件的可能性。任何數(shù)量的統(tǒng)計(jì)算法都可能用來(lái)評(píng)估一給定的匹配是正確的可能性。一般來(lái)說(shuō),每個(gè)n元語(yǔ)法能使用Golomb編碼技術(shù)進(jìn)行編碼,例如圖4中所描述的。
盡管本發(fā)明是參考具體的實(shí)施例進(jìn)行描述的,本領(lǐng)域的技術(shù)人員能夠認(rèn)識(shí)到可對(duì)本發(fā)明的形式和細(xì)節(jié)進(jìn)行修改而不脫離本發(fā)明的原理和范圍。
權(quán)利要求
1.一種壓縮語(yǔ)言模型的方法,包括
從用戶輸入的n元語(yǔ)法生成數(shù)值的列表;
對(duì)所述數(shù)值的列表進(jìn)行排序;
計(jì)算所述列表中相鄰數(shù)值之間的差值;以及
使用Golomb碼對(duì)每個(gè)算出的差值進(jìn)行編碼。
2.如權(quán)利要求1所述的方法,其特征在于,所述編碼步驟包括
選擇約等于所述列表中相鄰數(shù)值之間算出的差值的預(yù)期值一半的值M;
從所述算出的差值與用于每個(gè)算出的差值的所述值M之比來(lái)計(jì)算商值和余數(shù)值;以及
把所述商值和所述余數(shù)值存儲(chǔ)在存儲(chǔ)器中。
3.如權(quán)利要求2所述的方法,其特征在于,所述存儲(chǔ)步驟包括
以一元格式存儲(chǔ)所述商值;以及
以二元模式存儲(chǔ)所述余數(shù)值。
4.如權(quán)利要求2所述的方法,其特征在于,所述商值包括向下舍入至一最接近整數(shù)的第一差值與所述值M之比。
5.如權(quán)利要求2所述的方法,其特征在于,所述余數(shù)值包括向下舍入至一最接近整數(shù)的第一差值與所述值M之比的余數(shù)。
6.如權(quán)利要求1所述的方法,其特征在于,還包括
在存儲(chǔ)器中存儲(chǔ)所述經(jīng)編碼的差值。
7.如權(quán)利要求6所述的方法,其特征在于,所述經(jīng)編碼的差值在存儲(chǔ)器占用的位數(shù)(H)根據(jù)下述等式確定
8.如權(quán)利要求1所述的方法,其特征在于,還包括
在存儲(chǔ)介質(zhì)上存儲(chǔ)計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令定義所述生成、排序、計(jì)算和編碼步驟。
9.一種用于處理用戶輸入的系統(tǒng),包括
用戶接口,適于接收用戶輸入;
存儲(chǔ)器,適于存儲(chǔ)信息并存儲(chǔ)經(jīng)Golomb壓縮的語(yǔ)言模型;
Golomb編碼器/解碼器,適于編碼用戶輸入并解碼所述經(jīng)Golomb壓縮的語(yǔ)言模型的元素;以及
處理器,適于將用戶輸入與所述經(jīng)Golomb壓縮的語(yǔ)言模型的元素相比較以標(biāo)識(shí)可能的匹配。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,還包括
一組統(tǒng)計(jì)算法,適于由所述處理器用來(lái)標(biāo)識(shí)所述可能的匹配。
11.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述處理器適于向用戶接口提供被標(biāo)識(shí)的可能匹配來(lái)作為對(duì)用戶的輸出以供顯示。
12.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述處理器適于計(jì)算與用戶輸入相關(guān)的數(shù)值,并且其中Golomb編碼器/解碼器適于對(duì)所述算出的數(shù)值進(jìn)行編碼。
13.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述Golomb編碼器/解碼器適于基于散列值列表中散列值之間的差值的期望值計(jì)算值M,所述Golomb編碼器/解碼器適于基于所述差值與所述期望值之比來(lái)計(jì)算商值和余數(shù)值。
14.一種解碼用戶輸入的方法,包括
將收到的用戶輸入分成多個(gè)n元語(yǔ)法;
使用散列技術(shù)對(duì)每個(gè)n元語(yǔ)法進(jìn)行編碼;
將每個(gè)編碼的n元語(yǔ)法與經(jīng)Golomb編碼的語(yǔ)言模型相比較以標(biāo)識(shí)可能的匹配;以及
統(tǒng)計(jì)地估計(jì)每個(gè)可能匹配是從所述收到的用戶輸入正確地映射到在所述經(jīng)Golomb編碼的語(yǔ)言模型中的元素的可能性。
15.如權(quán)利要求14的方法,其特征在于,所述比較步驟包括
累加語(yǔ)言模型中經(jīng)編碼的n元語(yǔ)法之間的差值直到累加值等于或大于所述經(jīng)編碼的n元語(yǔ)法的值;以及
將所述收到的用戶輸入與在所述語(yǔ)言模型中用于所述合適n元語(yǔ)法的值相關(guān)聯(lián)。
16.如權(quán)利要求15的方法,其特征在于,所述相關(guān)聯(lián)的收到的用戶輸入包括所述可能匹配。
17.如權(quán)利要求14所述的方法,其特征在于,所述多個(gè)n元語(yǔ)法包括n元語(yǔ)法的列表并且其中所述編碼步驟包括
計(jì)算在所述列表中相鄰n元語(yǔ)法之間的差值;
對(duì)每個(gè)算出的差值選擇一值M,所述值M約等于所述列表中相鄰值之間所述算出的差值的預(yù)期值的一半;
從所述差值與用于每個(gè)算出的差值的所述值M之比來(lái)計(jì)算商值和余數(shù)值;以及
將一元格式的所述商值和二元格式的所述余數(shù)值相結(jié)合從而為每個(gè)n元語(yǔ)法形成所述經(jīng)編碼的n元語(yǔ)法。
18.如權(quán)利要求17所述的方法,其特征在于,所述值的列表包括數(shù)值。
19.如權(quán)利要求14所述的方法,其特征在于,還包括
在存儲(chǔ)介質(zhì)上存儲(chǔ)計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令定義所述劃分、編碼、比較和估計(jì)步驟。
20.一種便攜式計(jì)算設(shè)備,適于根據(jù)權(quán)利要求14所述的方法通過(guò)將所述用戶輸入與經(jīng)Golomb壓縮的語(yǔ)言模型相比較來(lái)解碼所述用戶輸入。
全文摘要
提供了一種用于壓縮語(yǔ)言模型的方法(300,708)。一數(shù)值列表從一用戶輸入的元素中生成(300)。排序該數(shù)值列表(302)。計(jì)算該列表中相鄰整數(shù)值之間的差值。使用Golomb碼對(duì)每個(gè)算出的差值進(jìn)行編碼(306,712)。
文檔編號(hào)G06F17/22GK101283349SQ200680021796
公開(kāi)日2008年10月8日 申請(qǐng)日期2006年6月6日 優(yōu)先權(quán)日2005年6月23日
發(fā)明者K·W·丘奇, B·提爾森, E·C·小哈特 申請(qǐng)人:微軟公司