專利名稱:用于編譯兩級詞法規(guī)則的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及語言處理。特別地,本發(fā)明涉及將表面文本轉(zhuǎn)化成詞匯表示。
背景技術(shù):
在語言處理中,通常將詞的表面形式轉(zhuǎn)換成詞匯形式,以便消除由于與語言的不同部分相關(guān)聯(lián)的詞法所引起的單詞拼寫中的變化。例如,表面形式“happiness”將被轉(zhuǎn)換成詞匯形式“happy+ness”,“found”通過將過去式的標(biāo)志器添加到詞匯形式而轉(zhuǎn)換成“find”。由于需要支持的單詞的變化較少,因此這種轉(zhuǎn)換以后將簡化詞的處理。
執(zhí)行這種轉(zhuǎn)換的一般方法包含對有限狀態(tài)轉(zhuǎn)換器(Finite State Transducer)的使用。在有限狀態(tài)轉(zhuǎn)換器中,兩個狀態(tài)通過轉(zhuǎn)換相連接,該轉(zhuǎn)換將單詞表面形式的字符映射到詞匯形式的字符或標(biāo)記。在許多系統(tǒng)中,有限狀態(tài)轉(zhuǎn)換器基于一組描述從表面形式的字符到詞匯形式的字符映射規(guī)則而生成。這些規(guī)則中的一些包括左上下文、右上下文或二者均包括,它們需要有限狀態(tài)轉(zhuǎn)換器中的狀態(tài)多于兩個狀態(tài)。例如,如果一個從i到y(tǒng)轉(zhuǎn)換的規(guī)則包括左上下文“p:p”,該左上下文“p:p”需要在字母i之前具有一個表面形式的“p”,并包括一個右上下文“n:n”,該右上下文需要在字母i之后具有一個“n”,完整的有限狀態(tài)轉(zhuǎn)換器需包括開始狀態(tài)、字母p向第二狀態(tài)的轉(zhuǎn)換、從第二狀態(tài)到第三狀態(tài)的轉(zhuǎn)換i:y的轉(zhuǎn)換、和字母“n”從第三狀態(tài)的轉(zhuǎn)換。
二級詞法有限狀態(tài)轉(zhuǎn)換器用于通過將作為輸入的表面形式應(yīng)用到有限狀態(tài)轉(zhuǎn)換器來建立單詞的詞匯形式。在每個狀態(tài)中,有限狀態(tài)轉(zhuǎn)換器確定是否輸入中的當(dāng)前字符可以從當(dāng)前狀態(tài)轉(zhuǎn)換到下一狀態(tài)。如果可以轉(zhuǎn)換,那么該有限狀態(tài)轉(zhuǎn)換器沿著該轉(zhuǎn)換的方向移動到下一狀態(tài),并選擇輸入中的下一字符。如果當(dāng)前字符與狀態(tài)外的任何轉(zhuǎn)換不匹配,則有限狀態(tài)轉(zhuǎn)換器終止并返回到有限狀態(tài)轉(zhuǎn)換器的開始狀態(tài)。
在現(xiàn)有技術(shù)中,規(guī)則的每個部分左上下文、核心、右上下文,被定義為獨立的有限狀態(tài)轉(zhuǎn)換器。這些有限狀態(tài)轉(zhuǎn)換器中的每一個分別被轉(zhuǎn)換成二進制表示,該二進制表示可在詞法處理期間(也稱為運行時)使用。
在運行時,各種有限狀態(tài)轉(zhuǎn)換器基于使用者的輸入進行動態(tài)結(jié)合,從而產(chǎn)生適合該輸入的單個虛擬FST。
雖然在運行時結(jié)合有限狀態(tài)轉(zhuǎn)換器提供了工作詞法系統(tǒng),但是它極大地減慢了詞法處理過程。
發(fā)明內(nèi)容
一種編譯正投影規(guī)則的方法包括為規(guī)則的核心建立核心有限狀態(tài)轉(zhuǎn)換器,并且為規(guī)則的上下文建立上下文有限狀態(tài)轉(zhuǎn)換器。核心有限狀態(tài)轉(zhuǎn)換器與上下文有限狀態(tài)轉(zhuǎn)換器相結(jié)合以便基于與規(guī)則操作符相聯(lián)系的模板建立一個規(guī)則有限狀態(tài)轉(zhuǎn)換器。該規(guī)則有限狀態(tài)轉(zhuǎn)換器然后用于創(chuàng)建可執(zhí)行的有限狀態(tài)轉(zhuǎn)換器。在一個實施例中,規(guī)則有限狀態(tài)轉(zhuǎn)換器基于一個有限狀態(tài)轉(zhuǎn)換器中的公共核心更進一步地結(jié)合,以便形成核心有限狀態(tài)轉(zhuǎn)換器。核心有限狀態(tài)轉(zhuǎn)換器然后結(jié)合,以便形成適合于一組正投影規(guī)則的一組有限狀態(tài)轉(zhuǎn)換器。該組有限狀態(tài)轉(zhuǎn)換器然后轉(zhuǎn)換成為可執(zhí)行有限狀態(tài)轉(zhuǎn)換器。
圖1是本發(fā)明實施例將在其中實現(xiàn)的通用計算環(huán)境的框圖。
圖2是根據(jù)本發(fā)明用于建立和使用有限狀態(tài)轉(zhuǎn)換器的系統(tǒng)框圖。
圖3是根據(jù)本發(fā)明建立有限狀態(tài)轉(zhuǎn)換器的方法的流程圖。
圖4是針對“可能出現(xiàn)”的有限狀態(tài)轉(zhuǎn)換器的狀態(tài)圖。
圖5是針對“必將出現(xiàn)”的有限狀態(tài)轉(zhuǎn)換器的狀態(tài)圖。
圖6是針對“如果核心表面字符出現(xiàn)則必將出現(xiàn)”的有限狀態(tài)轉(zhuǎn)換器的狀態(tài)圖。
圖7是針對“必將不出現(xiàn)”的有限狀態(tài)轉(zhuǎn)換器的狀態(tài)圖。
圖8提供了針對具有核心的規(guī)則的有限狀態(tài)轉(zhuǎn)換器。
圖9提供了針對具有與圖8相同核心的第二規(guī)則的有限狀態(tài)轉(zhuǎn)換器。
圖10提供了通過將圖8和9中有限狀態(tài)轉(zhuǎn)換器相結(jié)合所建立的有限狀態(tài)轉(zhuǎn)換器。
圖11提供了針對具有核心的規(guī)則的有限狀態(tài)轉(zhuǎn)換器。
圖12提供了針對具有與圖11相同核心的第二規(guī)則的有限狀態(tài)轉(zhuǎn)換器。
圖13提供了通過將圖11和12中有限狀態(tài)轉(zhuǎn)換器相結(jié)合所建立的有限狀態(tài)轉(zhuǎn)換器。
圖14提供了最小化有限狀態(tài)轉(zhuǎn)換器的一種方法的流程圖。
圖15提供了通過將圖10和13中有限狀態(tài)轉(zhuǎn)換器相結(jié)合所建立的有限狀態(tài)轉(zhuǎn)換器。
具體實施例方式
圖1示出了一個本發(fā)明適合在其上執(zhí)行的計算系統(tǒng)環(huán)境100的實例。該計算系統(tǒng)環(huán)境100僅是適合的計算環(huán)境的一個實例,并不意味著對本發(fā)明的使用或功能范圍作出任何限定。計算環(huán)境100也不應(yīng)被解釋成其具有與示范性的操作環(huán)境100中所示出組件中任何一個或它們的組合相關(guān)的依賴性或需求。
本發(fā)明在許多其他的通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或結(jié)構(gòu)中進行操作。適合于使用本發(fā)明的公知的計算系統(tǒng)、環(huán)境和/或結(jié)構(gòu)的實例包括(但并不局限于)個人計算機、服務(wù)器計算機、手提或膝上裝置、多處理器系統(tǒng)、以微處理機為基礎(chǔ)的系統(tǒng)、機頂盒、可編程消費電子設(shè)備、網(wǎng)絡(luò)PC、小型機、大型機、電話系統(tǒng)、含有任何以上系統(tǒng)或裝置的分布式計算環(huán)境,等等。
本發(fā)明以在計算機可執(zhí)行指令的通用范圍內(nèi)進行描述,例如計算機執(zhí)行的程序模塊。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明設(shè)計成在分布式計算環(huán)境中實現(xiàn),在該分布式計算環(huán)境中,任務(wù)通過通信網(wǎng)絡(luò)所連接的遠(yuǎn)程處理裝置執(zhí)行。在分布式計算環(huán)境中,程序模塊位于包括存儲器存儲裝置的本地和遠(yuǎn)程計算機存儲介質(zhì)中。
參考圖1,用于執(zhí)行本發(fā)明的示范系統(tǒng)包括計算機110形式的通用計算裝置。計算機110的組件可能包括(但不限定為)處理單元120、系統(tǒng)存儲器130和將具有系統(tǒng)存儲器的不同系統(tǒng)組件包括系統(tǒng)存儲器與處理單元120相耦合的系統(tǒng)總線121。該系統(tǒng)總線121可以是包括存儲器總線和存儲器控制器、外設(shè)總線、使用各種總線結(jié)構(gòu)中任一種的本地總線在內(nèi)的幾種總線結(jié)構(gòu)類型中的任意一個。作為舉例,但并不是限定,這樣的結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、擴展ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)本地總線和也被通稱為夾層總線(Mezzanine bus)的外設(shè)部件互連(PCI)總線。
計算機110一般包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是任何可用的介質(zhì),其可以通過計算機110存取,并包括易失和非易失介質(zhì)、可拆裝和不可拆裝介質(zhì)。作為舉例,但并不限定,計算機可讀介質(zhì)可以包含計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以任何方法或技術(shù)實現(xiàn)的用于信息存儲的易失和非易失、可拆裝和不可拆裝介質(zhì),這些信息例如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。計算機存儲介質(zhì)包括,但不限定于,RAM、ROM、EEPROM、閃存或其它存儲技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其它光盤存儲器、盒式磁帶、磁帶、磁盤存儲器或其它磁存儲裝置、或任何其它可以用于存儲期望信息并可通過計算機110存取的介質(zhì)。通信介質(zhì)一般包含計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或在已調(diào)數(shù)據(jù)信號例如載波或其它傳輸機構(gòu)中的其它數(shù)據(jù),還包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)數(shù)據(jù)信號”的意思是一個信號,該信號具有一個或更多它的特征集合或者以像在信號中編碼信息的方式一樣進行改變。作為舉例,但并不是限定,通信介質(zhì)包括有線介質(zhì),例如有線網(wǎng)絡(luò)或直接有線連接,和無線介質(zhì),例如音傳、RF、紅外線和其他無線介質(zhì)。以上任何的組合也應(yīng)當(dāng)包括在計算機可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)內(nèi)存130包括以易失和/或非易失存儲器形式存在的計算機存儲介質(zhì),例如只讀存儲器(RAM)131和隨機存儲器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包括幫助在計算機110各元件之間傳輸信息的基本例程,例如在啟動過程中,一般存儲在ROM131中。RAM132一般包括由處理單元120立即存取和/或即刻操作的數(shù)據(jù)和/或程序模塊。作為舉例,但不是限定,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136和程序數(shù)據(jù)137。
計算機110可能還包括其他可拆裝/不可拆裝、易失/非易失計算機存儲介質(zhì)。僅僅作為舉例,圖1示出了一個硬盤驅(qū)動器141,其從不可拆裝、非易失磁介質(zhì)中讀取或?qū)懭霐?shù)據(jù)、磁盤驅(qū)動器151,其從可拆裝、非易失磁盤152中讀取或?qū)懭霐?shù)據(jù),和一個光盤驅(qū)動器155,其從可拆裝、非易失光盤如CD ROM或其他光介質(zhì)中讀取或?qū)懭霐?shù)據(jù)??梢栽诜独僮鳝h(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)聯(lián)的計算機存儲介質(zhì)為計算機110提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲。在圖1中,例如,示出了硬盤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、麥克風(fēng)163和點擊裝置如鼠標(biāo)、跟蹤球或觸摸板向計算機110輸入命令和信息。其他輸入裝置(未示出)可包括操縱桿、游戲墊、疊形衛(wèi)星天線、掃描儀等。這些和其他輸入裝置通常通過與系統(tǒng)總線相耦合的用戶輸入接口160與處理單元120相連接,但也可通過其他接口和總線結(jié)構(gòu)相連接,例如并行端口、博弈端口或通用串行總線(USB)。監(jiān)視器191或其他類型的顯示裝置也通過接口,例如視頻接口190,與系統(tǒng)總線121相連接。除監(jiān)視器之外,計算機也可包括其他外圍輸出設(shè)備,例如揚聲器197和打印機196,它們可通過輸出外設(shè)接口195相連接。
計算機110可以利用到一個或多個遠(yuǎn)程計算機,例如遠(yuǎn)程計算機180,邏輯連接在網(wǎng)絡(luò)環(huán)境中進行操作。該遠(yuǎn)程計算機180可以是個人計算機、手提設(shè)備、服務(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ò)。這樣的網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)廣域計算機網(wǎng)絡(luò)、企業(yè)內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機110通過網(wǎng)絡(luò)接口或適配器170與LAN171相連接。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機110一般包括調(diào)制解調(diào)器172或其他用于在WAN173上建立通信的工具,例如互聯(lián)網(wǎng)??赡苁莾?nèi)置的或外置的調(diào)制解調(diào)器172可通過用戶輸入接口160或其他適當(dāng)?shù)臋C構(gòu)與系統(tǒng)總線121相連接。在網(wǎng)絡(luò)環(huán)境中,描述為與計算機110或其中的部分相關(guān)聯(lián)的程序模塊可以存儲于遠(yuǎn)程存儲裝置中。作為舉例,但并不是限定,圖1示出了駐留于遠(yuǎn)程計算機180中的遠(yuǎn)程應(yīng)用程序185??梢岳斫鉃椋镜木W(wǎng)絡(luò)連接是示范性的,并且其他在計算機間建立通信鏈接的工具也可以使用。
本發(fā)明提供了一種用于創(chuàng)建有限狀態(tài)變換器的方法,該有限狀態(tài)轉(zhuǎn)換器在運行時有效地運行,將表面語言形態(tài)轉(zhuǎn)換為詞匯形式。
圖2和3分別提供了一個簡單框圖和流程圖,示出了本發(fā)明實施例的基本操作。在圖3的步驟300中,一組正投影規(guī)則200通過語言學(xué)家寫入,其用來描述從表面形式到詞匯形式的可能的轉(zhuǎn)換。作為默認(rèn),假定表面形式中的每一個字符將被映射到詞匯形式中的相同字符。每一個規(guī)則描述了這種默認(rèn)映射的例外。
在一個實施例中,每一個規(guī)則包括定義非默認(rèn)映射的核心、左上下文和右上下文。這些元素的每一個以一對通過冒號隔開的字符形式被寫入,并且左邊的字符表示表面形式的字符,右邊的字符表示詞匯形式的字符。因此,核心“i:y”表示從表面形式字符“i”到詞匯形式字符“y”的映射。同樣地,“a:b”的左上下文表示有左表面形式核心字符“a”和左詞匯形式核心字符“b”。一般左上下文的表面形式和詞匯形式的字符相互匹配,例如“a:a”。右上下文的表面形式和詞匯形式的字符同樣會相互匹配。
在一個實施例中,基于該規(guī)則可能出現(xiàn)、必將出現(xiàn)、如果核心的表面形式被找到則必將出現(xiàn)或必將不出現(xiàn)的情況,存在四種規(guī)則。這些規(guī)則中的每一個規(guī)則通過各自的操作符->,<->,<-,和><表示。一般規(guī)則以如下的格式寫入核心操作符左上下文---右上下文例如,規(guī)則a:b->c:c---d:d表示從“a”到“b”的核心映射,其可能出現(xiàn)于當(dāng)存在左上下文c:c和右上下文d:d時。
正投影規(guī)則200提供給編譯器202。在步驟302,通過編譯器202中的規(guī)則FST構(gòu)造(formation)204為每一個規(guī)則產(chǎn)生有限狀態(tài)變換器。規(guī)則RST構(gòu)造204在步驟301首先分析每個規(guī)則,以識別每個規(guī)則的核心、操作符、左上下文和右上下文。在步驟302,規(guī)則FST構(gòu)造204為每個核心、左上下文和右上下文形成獨立的FST。每個規(guī)則的左上下文FST然后使用與規(guī)則操作符相聯(lián)系的模板與規(guī)則各自的核心FST相組合。這個組合的FST然后與各自的用于規(guī)則的右上下文FST相組合而形成基于相同模板的規(guī)則FST。
由于存在四種不同的可能操作符,因此存在四個獨立的模板,每個模板適合一個類型的操作符。
圖4示出了可能出現(xiàn)操作符的模板有限狀態(tài)變換器。該模板包括三個狀態(tài)400、406和414。狀態(tài)400和406表示接收狀態(tài),當(dāng)有限狀態(tài)轉(zhuǎn)換器在那些狀態(tài)中結(jié)束變換時,該接收狀態(tài)產(chǎn)生一個成功值。狀態(tài)414是拒絕狀態(tài),當(dāng)有限狀態(tài)轉(zhuǎn)換器在那個狀態(tài)中結(jié)束轉(zhuǎn)換時,該拒絕狀態(tài)產(chǎn)生一個失敗值。通常,本申請所示的圖中,接收狀態(tài)表示為兩個同心圓,拒絕狀態(tài)表示為單個圓。
在圖4所示的模板中,規(guī)則的左上下文沿著狀態(tài)400和狀態(tài)406之間的轉(zhuǎn)換402插入,通過Ls:L1表示。左上下文也沿著自循環(huán)408的方向放置,其從狀態(tài)406延伸并返回狀態(tài)406。從而,在有限狀態(tài)轉(zhuǎn)換器中,如果在表面形式和詞匯形式中遇到左上下文而狀態(tài)轉(zhuǎn)換器處于狀態(tài)400或狀態(tài)406時,則有限狀態(tài)轉(zhuǎn)換器將移動到狀態(tài)406。狀態(tài)400也包括默認(rèn)轉(zhuǎn)換404,其引起有限狀態(tài)轉(zhuǎn)換器在狀態(tài)400循環(huán),直至遇到左上下文。
核心Cs:C1然后沿著狀態(tài)406和狀態(tài)414之間的轉(zhuǎn)換412插入。核心的表面形式Cs用于形成一個“*”字符對,其表示詞匯形式的任何可能的字符。該對然后沿著從狀態(tài)406到狀態(tài)412的轉(zhuǎn)換410插入。因此,如果有限狀態(tài)轉(zhuǎn)換器處在狀態(tài)406,如果遇到核心它將轉(zhuǎn)換到狀態(tài)414,如果再次遇到左上下文它將返回狀態(tài)406,如果遇到任何其他值它將返回狀態(tài)400。
右上下文Rs:R1插入到狀態(tài)414和400之間的轉(zhuǎn)換416。如果遇到右上下文而有限狀態(tài)轉(zhuǎn)換器處在狀態(tài)414時,則有限狀態(tài)轉(zhuǎn)換器將返回狀態(tài)400。然而,如果在狀態(tài)414遇到任何其他值,則有限狀態(tài)轉(zhuǎn)換器將失敗并在拒絕狀態(tài)中414結(jié)束。
圖5提供了必將不出現(xiàn)操作符的模板有限狀態(tài)轉(zhuǎn)換器。該模板包括三個接收狀態(tài)500、502、504和一個拒絕狀態(tài)506。左上下文Ls:L1插入到狀態(tài)500和502之間的轉(zhuǎn)換508,并處在狀態(tài)502的自循環(huán)轉(zhuǎn)換510。核心Cs:C1插入到狀態(tài)502和504之間的轉(zhuǎn)換512,并且右上下文Rs:R1在狀態(tài)504和506之間插入。
在操作中,當(dāng)在狀態(tài)500或狀態(tài)502中遇到左上下文時,圖5的有限狀態(tài)轉(zhuǎn)換器將轉(zhuǎn)換到狀態(tài)502。如果在狀態(tài)502中遇到核心,則有限狀態(tài)轉(zhuǎn)換器將轉(zhuǎn)換到狀態(tài)504。如果在狀態(tài)502既未遇到核心也未遇到左上下文,則有限狀態(tài)轉(zhuǎn)換器將沿著轉(zhuǎn)換512返回狀態(tài)500。如果在狀態(tài)504遇到右上下文,則有限狀態(tài)轉(zhuǎn)換器跟隨轉(zhuǎn)換514到拒絕狀態(tài)506,并且由于其遇到了左上下文、核心和右上下文的序列,有限狀態(tài)轉(zhuǎn)換器失敗。如果在狀態(tài)504未遇到右上下文,則轉(zhuǎn)換516跟隨到狀態(tài)500。
圖6提供了核心的語義形式是遇到的操作符時必將出現(xiàn)的模板。圖6的模板包括接收狀態(tài)600、602和拒絕狀態(tài)604,它們和圖4可能出現(xiàn)模板中的狀態(tài)400、406和414相似。該模板還包括接收狀態(tài)606和拒絕狀態(tài)608。左上下文Ls:L1插入到轉(zhuǎn)換610、612、614,并在狀態(tài)602結(jié)束。核心Cs:C1在轉(zhuǎn)換616插入,并且該核心的表面形式字符Cs與適合于詞匯形式的字符“*”相組合,并插入到轉(zhuǎn)換618。右上下文Rs:R1在轉(zhuǎn)換620和622插入。
當(dāng)執(zhí)行時,若遇到左上下文,圖6的有限狀態(tài)轉(zhuǎn)換器將從狀態(tài)600移動到狀態(tài)602。如果未遇到左上下文,它將沿著轉(zhuǎn)換624在狀態(tài)600循環(huán)。在狀態(tài)602中,如果遇到核心,有限狀態(tài)轉(zhuǎn)換器將移動到604;如果再次遇到左上下文,它將在狀態(tài)602循環(huán);如果它遇到核心表面形式字符具有不同于核心詞匯形式字符的任何值,其將轉(zhuǎn)換到狀態(tài)606;并且對于所有其他情況,其將返回到狀態(tài)600。在狀態(tài)604,如果遇到右上下文,有限狀態(tài)轉(zhuǎn)換器將返回到接收狀態(tài)600。如果未遇到右上下文,該有限狀態(tài)轉(zhuǎn)換器將在狀態(tài)604失敗。
在狀態(tài)606中,如果遇到右上下文,有限狀態(tài)轉(zhuǎn)換器將轉(zhuǎn)換到失敗狀態(tài)608。從而,如果遇到一個包括左上下文、與不同于核心詞匯形式配對的核心表面形式、和右上下文的序列,該模板將在狀態(tài)608失敗。如果在狀態(tài)606遇到左上下文,該有限狀態(tài)轉(zhuǎn)換器將返回到狀態(tài)602。對于在狀態(tài)606的其他值,有限狀態(tài)轉(zhuǎn)換器將沿著默認(rèn)轉(zhuǎn)換626返回到狀態(tài)600。
圖7提供了一個必將出現(xiàn)操作符的模板。該模板與圖6的模板相似,包括三個接收狀態(tài)700、702和706以及兩個拒絕狀態(tài)704和708。左上下文在進入到狀態(tài)702的轉(zhuǎn)換710、712和714上插入,核心在進入到狀態(tài)704的轉(zhuǎn)換716上插入,并且右上下文插入進入到狀態(tài)700的轉(zhuǎn)換718和進入到狀態(tài)708的轉(zhuǎn)換720上。默認(rèn)轉(zhuǎn)換722和724在狀態(tài)702和706之間以及狀態(tài)706和700之間提供。
在圖3的步驟302,通過將規(guī)則插入到適當(dāng)?shù)哪0?,建立了單獨的有限狀態(tài)轉(zhuǎn)換器,適合于每個核心的單獨有限狀態(tài)轉(zhuǎn)換器以核心對核心為基礎(chǔ)由圖2的編譯器202的規(guī)則組合器206加以組合。這樣的有限狀態(tài)轉(zhuǎn)換器的組合的一個實例可參見圖8、9和10。圖8提供了適合于核心“a:b”的第一有限狀態(tài)轉(zhuǎn)換器,圖9提供了適合于核心“a:b”的第二有限狀態(tài)轉(zhuǎn)換器。適合于核心“a:b”的有限狀態(tài)轉(zhuǎn)換器的組合在圖10中示出。
圖8中示出的有限狀態(tài)轉(zhuǎn)換器表示了規(guī)則a:b->c:c---d:d圖9中示出的有限狀態(tài)轉(zhuǎn)換器表示了規(guī)則a:b<-d:d---e:e關(guān)于這些規(guī)則要注意兩件事情。第一,它們包括不同的操作符。根據(jù)本發(fā)明,適合于任何操作符的有限狀態(tài)轉(zhuǎn)換器可在步驟304組合。第二,適合于圖8有限狀態(tài)轉(zhuǎn)換器的規(guī)則的右上下文形成了圖9有限狀態(tài)轉(zhuǎn)換器的左上下文。從而,規(guī)則可順序地執(zhí)行。
在組合圖8和9的有限狀態(tài)轉(zhuǎn)換器中,第一步是將初始狀態(tài)800和900組合成圖10有限狀態(tài)轉(zhuǎn)換器中的單獨初始狀態(tài)1000。圖8的狀態(tài)802和804然后插入到圖10的有限狀態(tài)轉(zhuǎn)換器中,作為狀態(tài)1002和1004;圖9的狀態(tài)902、904、906和908作為狀態(tài)1006、1008、1010和1012分別插入。在初始有限狀態(tài)轉(zhuǎn)換器中找到的狀態(tài)間的轉(zhuǎn)換保留在已組合的有限狀態(tài)轉(zhuǎn)換器中,除了一些例外。第一,由于各自獨立的初始狀態(tài)被替換為一個初始狀態(tài)1000,到達或者從初始狀態(tài)800和900發(fā)出的轉(zhuǎn)換均改為到達或者從初始狀態(tài)1000發(fā)出。第二,由于圖8中有限狀態(tài)轉(zhuǎn)換器的右上下文是圖9有限狀態(tài)轉(zhuǎn)換器的左上下文,因此適合于圖8中有限狀態(tài)轉(zhuǎn)換器右上下文的從狀態(tài)804到狀態(tài)800的轉(zhuǎn)換806在已組合的有限狀態(tài)轉(zhuǎn)換器中改變,從而替代初始狀態(tài)1000在狀態(tài)1006終止。通過運行狀態(tài)1000、1002、1004、1006、1008這允許表面序列“cadae”來描述兩個狀態(tài)“cad”和“dae”并返回到狀態(tài)1000。
最后,每個先于核心轉(zhuǎn)換的狀態(tài)必將是從每一個接收狀態(tài)通過左上下文轉(zhuǎn)換可獲得的。為了如此做,加入了附加轉(zhuǎn)換。特別地,進入到狀態(tài)1002的轉(zhuǎn)換1014和1016被加入以支持左上下文“c:c”,進入到狀態(tài)1006的轉(zhuǎn)換1018被加入以支持左上下文“d:d”。
注意,為同一核心附加的有限狀態(tài)轉(zhuǎn)換器可通過分享相同的初始狀態(tài)與圖10的有限狀態(tài)轉(zhuǎn)換器相組合,確保存在從每個接收狀態(tài)到核心轉(zhuǎn)換前的狀態(tài)的左上下文轉(zhuǎn)換,并適當(dāng)?shù)嘏c右上下文轉(zhuǎn)換相連接以便于規(guī)則的級聯(lián)。
圖11、12和13示出了適合于第二核心“h:i”的有限狀態(tài)轉(zhuǎn)換器的組合的另一個實例。圖11中的有限狀態(tài)轉(zhuǎn)換器適合于規(guī)則
h:i->g:g---j:j并且圖12中的有限狀態(tài)轉(zhuǎn)換器適合于規(guī)則h:i->k:k---n:n像先前實例一樣,圖11和12中有限狀態(tài)轉(zhuǎn)換器的各自獨立的初始狀態(tài)1100和1200組合成圖13中有限狀態(tài)轉(zhuǎn)換器的一個單獨的初始狀態(tài)1300。到達或從各自初始狀態(tài)發(fā)出的轉(zhuǎn)換改變成到達或者從單獨初始狀態(tài)1300發(fā)出的轉(zhuǎn)換。注意,由于這些規(guī)則不是級聯(lián)的,因此每個規(guī)則的右上下文返回到初始狀態(tài)1300。
另外,為了使得左上下文從任一接收狀態(tài)發(fā)生,增加了到狀態(tài)1306和1308的轉(zhuǎn)換1302和1304。轉(zhuǎn)換1302支持從接收狀態(tài)1306到狀態(tài)1308的左上下文“g:g”。轉(zhuǎn)換1304支持從接收狀態(tài)1308到狀態(tài)1306的左上下文“k:k”。
在適合特殊核心的有限狀態(tài)轉(zhuǎn)換器被組合到一個單獨的有限狀態(tài)轉(zhuǎn)換器上之后,最小化已組合核心有限狀態(tài)轉(zhuǎn)換器的可選步驟通過圖2中的最小化器(minimizer)208在步驟306執(zhí)行。這樣的最小化技術(shù)在本領(lǐng)域是公知的,并包含刪除不可達狀態(tài)和組合等價狀態(tài),此處等價狀態(tài)根據(jù)相同的輸入值轉(zhuǎn)換到同一組狀態(tài)。
圖14提供了一個用于最小化有限狀態(tài)轉(zhuǎn)換器的現(xiàn)有技術(shù)的流程圖。該過程在步驟1400開始,基于這些狀態(tài)是接收狀態(tài)還是拒絕狀態(tài),狀態(tài)被分到兩個組中的一個。在步驟1402,基于該組針對給定的表面形式/詞匯形式對轉(zhuǎn)換到何處,每個組中的狀態(tài)被分為子組。從而,轉(zhuǎn)換到接收組中狀態(tài)的狀態(tài)被放入一個子組,轉(zhuǎn)換到拒絕組中狀態(tài)的狀態(tài)被放入另一個子組。
在步驟1404,該方法檢查對于任意可能的表面形式/詞匯形式對是否可以形成至少兩個子組。如果可以形成這些子組,則該組在步驟1406被劃分,從而每個子組成為一個獨立的組。該過程然后返回步驟1402來看是否當(dāng)前的組能否被進一步劃分。當(dāng)該組在步驟1404不能再劃分,每個組中的狀態(tài)組合成一個單獨的狀態(tài),并且在步驟1408,到達或者從那些各自獨立狀態(tài)發(fā)出的轉(zhuǎn)換被生成到達或者從一個單獨的已組合的狀態(tài)發(fā)出。
在步驟306完成最小化核心有限狀態(tài)轉(zhuǎn)換器之后,核心有限狀態(tài)轉(zhuǎn)換器通過圖2的核心組合器210被組合成一個單獨的有限狀態(tài)轉(zhuǎn)換器。圖15示出了一個通過將圖10和13的核心有限狀態(tài)轉(zhuǎn)換器組合形成的單獨的有限狀態(tài)轉(zhuǎn)換器。
像組合有限狀態(tài)轉(zhuǎn)換器以形成核心有限狀態(tài)轉(zhuǎn)換器時一樣,組合核心狀態(tài)轉(zhuǎn)換器的步驟包括將每一核心有限狀態(tài)轉(zhuǎn)換器的初始狀態(tài)組合成一個單獨的狀態(tài)。從而狀態(tài)1000和1300成為圖15中狀態(tài)1500,并且到達或者從狀態(tài)1000和1300發(fā)出的轉(zhuǎn)換成為到達或者從狀態(tài)1500發(fā)出的轉(zhuǎn)換。
為了支持左上下文,針對每個左上下文的轉(zhuǎn)換必須在核心轉(zhuǎn)換前從每一接收狀態(tài)擴展到適當(dāng)?shù)臓顟B(tài)。從而,必須增加一些的轉(zhuǎn)換以支持每一可能的左上下文。例如,增加轉(zhuǎn)換1502和1504以支持到狀態(tài)1506的左上下文“g:g”。另外,適合于右上下文的轉(zhuǎn)換應(yīng)當(dāng)改進以允許規(guī)則的級聯(lián),就像建立核心有限狀態(tài)轉(zhuǎn)換器時所做的一樣。
注意,圖15的有限狀態(tài)轉(zhuǎn)換器是針對一組規(guī)則的單個有限狀態(tài)轉(zhuǎn)換器的一個小實例。在實際中,單個有限狀態(tài)轉(zhuǎn)換器將大得多。
在步驟308建立單個有限狀態(tài)轉(zhuǎn)換器之后,在步驟310使用最小化器212將其最小化。這導(dǎo)致了一組有限狀態(tài)轉(zhuǎn)換器,它是表示所有正投影規(guī)則200的單個有限狀態(tài)轉(zhuǎn)換器。在步驟312,這組有限狀態(tài)轉(zhuǎn)換器然后轉(zhuǎn)換成可執(zhí)行的有限狀態(tài)轉(zhuǎn)換器。在運行時可執(zhí)行有限狀態(tài)轉(zhuǎn)換器可以直接執(zhí)行。在運行時期間,將表面形式216中的字符序列216應(yīng)用于可執(zhí)行有限狀態(tài)轉(zhuǎn)換器214。基于表面形式,有限狀態(tài)轉(zhuǎn)換器在狀態(tài)之間移動并由此產(chǎn)生詞匯形式218。由于存在針對所有規(guī)則的單個有限狀態(tài)轉(zhuǎn)換器,所以運行時執(zhí)行比在現(xiàn)有技術(shù)的系統(tǒng)中快得多。
雖然參考特定實施方式對本發(fā)明進行了描述,但是本領(lǐng)域的熟練技術(shù)人員將會認(rèn)識到在不脫離本發(fā)明精神和范圍的情況下可以在形式和細(xì)節(jié)上進行一些變化。
權(quán)利要求
1.一種編譯正投影規(guī)則以形成可執(zhí)行有限狀態(tài)轉(zhuǎn)換器的方法,其特征在于,所述方法包括為正投影規(guī)則的核心形成核心有限狀態(tài)轉(zhuǎn)換器;為正投影規(guī)則的上下文形成上下文有限狀態(tài)轉(zhuǎn)換器;將核心有限狀態(tài)轉(zhuǎn)換器與上下文有限狀態(tài)轉(zhuǎn)換器相結(jié)合,以形成基于與正投影規(guī)則操作符相聯(lián)系模板的規(guī)則有限狀態(tài)轉(zhuǎn)換器;以及使用該規(guī)則有限狀態(tài)轉(zhuǎn)換器建立可執(zhí)行的有限狀態(tài)轉(zhuǎn)換器。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法進一步包括,為正投影規(guī)則的第二上下文形成第二上下文有限狀態(tài)轉(zhuǎn)換器,其中形成規(guī)則有限狀態(tài)轉(zhuǎn)換器包括,將核心有限狀態(tài)轉(zhuǎn)換器、上下文有限狀態(tài)轉(zhuǎn)換器和基于模板的第二上下文有限狀態(tài)轉(zhuǎn)換器相結(jié)合。
3.如權(quán)利要求2所述的方法,其特征在于,所述正投影規(guī)則是第一正投影規(guī)則,規(guī)則有限狀態(tài)轉(zhuǎn)換器是第一規(guī)則有限狀態(tài)轉(zhuǎn)換器,并且該方法進一步包括為第二正投影規(guī)則形成核心有限狀態(tài)轉(zhuǎn)換器和上下文有限狀態(tài)轉(zhuǎn)換器,以及基于與第二規(guī)則操作符相聯(lián)系的模板,將核心有限狀態(tài)轉(zhuǎn)換器與上下文有限狀態(tài)轉(zhuǎn)換器結(jié)合為第二規(guī)則有限狀態(tài)轉(zhuǎn)換器。
4.如權(quán)利要求3所述的方法,其特征在于,所述第二正投影規(guī)則的模板與第一正投影規(guī)則的模板不同。
5.如權(quán)利要求4所述的方法,其特征在于,所述第一正投影規(guī)則的操作符與第二正投影規(guī)則的操作符不同。
6.如權(quán)利要求1所述的方法,其特征在于,所述方法進一步包括,建立多個規(guī)則狀態(tài)轉(zhuǎn)換器,每個規(guī)則狀態(tài)轉(zhuǎn)換器與不同的規(guī)則相聯(lián)系。
7.如權(quán)利要求6所述的方法,其特征在于,所述使用規(guī)則有限狀態(tài)轉(zhuǎn)換器包括結(jié)合規(guī)則有限狀態(tài)轉(zhuǎn)換器,該有限狀態(tài)轉(zhuǎn)換器具有相同的核心以便為每個核心形成一個單獨的已結(jié)合核心有限狀態(tài)轉(zhuǎn)換器。
8.如權(quán)利要求7所述的方法,其特征在于,所述使用規(guī)則有限狀態(tài)轉(zhuǎn)換器更進一步包括為核心結(jié)合已結(jié)合的核心有限狀態(tài)轉(zhuǎn)換器以便形成一組有限狀態(tài)轉(zhuǎn)換器。
9.如權(quán)利要求8所述的方法,其特征在于,所述方法進一步包括在形成組有限狀態(tài)轉(zhuǎn)換器之前,最小化每個已結(jié)合的核心有限狀態(tài)轉(zhuǎn)換器。
10.一種具有計算機可執(zhí)行指令的計算機可讀介質(zhì),用于執(zhí)行的各步驟包括確定正投影規(guī)則中的操作符;基于該操作符選擇模板;以及在模板中插入正投影規(guī)則的元素以形成有限狀態(tài)轉(zhuǎn)換器。
11.如權(quán)利要求10所述的計算機可讀介質(zhì),其特征在于,所述正投影規(guī)則包括指示從表面形式到詞匯形式映射的核心。
12.如權(quán)利要求11所述的計算機可讀介質(zhì),其特征在于,所述正投影規(guī)則更進一步包括左上下文和右上下文。
13.如權(quán)利要求12所述的計算機可讀介質(zhì),其特征在于,所述插入正投影規(guī)則的元素包括將核心、左上下文和右上下文插入模板中。
14.如權(quán)利要求10所述的計算機可讀介質(zhì),其特征在于,進一步包括為多個規(guī)則中的每一個執(zhí)行確定操作符、選擇模板和插入元素的步驟,以形成多個有限狀態(tài)轉(zhuǎn)換器。
15.如權(quán)利要求14所述的計算機可讀介質(zhì),其特征在于,進一步包括結(jié)合有限狀態(tài)轉(zhuǎn)換器中的至少兩個,以形成已結(jié)合有限狀態(tài)轉(zhuǎn)換器。
16.如權(quán)利要求15所述的計算機可讀介質(zhì),其特征在于,所述結(jié)合至少兩個有限狀態(tài)轉(zhuǎn)換器中包括結(jié)合所有具有相同核心的有限狀態(tài)轉(zhuǎn)換器。
17.如權(quán)利要求16所述的計算機可讀介質(zhì),其特征在于,所述結(jié)合至少兩個有限狀態(tài)轉(zhuǎn)換器中包括通過結(jié)合所有具有第一核心的有限狀態(tài)轉(zhuǎn)換器形成第一已結(jié)合有限狀態(tài)轉(zhuǎn)換器,以及通過結(jié)合所有具有第二核心的有限狀態(tài)轉(zhuǎn)換器形成第二已結(jié)合有限狀態(tài)轉(zhuǎn)換器。
18.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,進一步包括結(jié)合第一有限狀態(tài)轉(zhuǎn)換器和第二有限狀態(tài)轉(zhuǎn)換器,以形成一組有限狀態(tài)轉(zhuǎn)換器。
19.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,進一步包括最小化第一已結(jié)合有限狀態(tài)轉(zhuǎn)換器和最小化第二已結(jié)合有限狀態(tài)轉(zhuǎn)換器。
20.如權(quán)利要求9或19所述的方法或介質(zhì),其特征在于,進一步包括最小化所述有限狀態(tài)轉(zhuǎn)換器組。
21.如權(quán)利要求20所述的方法或介質(zhì),其特征在于,進一步包括由有限狀態(tài)轉(zhuǎn)換器組形成可執(zhí)行有限狀態(tài)轉(zhuǎn)換器。
全文摘要
一種編譯正投影規(guī)則的方法包括通過在有限狀態(tài)轉(zhuǎn)換器模板中插入規(guī)則元素,將第一和第二正投影規(guī)則編譯到各自獨立的有限狀態(tài)轉(zhuǎn)換器中。該各自獨立的有限狀態(tài)轉(zhuǎn)換器組合以形成一個單獨的已組合的有限狀態(tài)轉(zhuǎn)換器。在一個實施例中,有限狀態(tài)轉(zhuǎn)換器基于有限狀態(tài)轉(zhuǎn)換器中的共同核心首先被組合。然后,該適合于核心的已組合有限狀態(tài)轉(zhuǎn)換器被組合以便為該組正投影規(guī)則形成一個單獨的有限狀態(tài)轉(zhuǎn)換器。
文檔編號G06F9/45GK1609849SQ20041003522
公開日2005年4月27日 申請日期2004年3月31日 優(yōu)先權(quán)日2003年4月3日
發(fā)明者C·E·胡騰豪爾 申請人:微軟公司