專利名稱:基于字符分類檢索字符串的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及字符串檢索裝置和方法,用于在事先關(guān)于字符串檢索的數(shù)組中記錄諸如中文字符等多個(gè)字符串,并判斷給定的字符串是否被記錄。
本發(fā)明還涉及關(guān)于關(guān)鍵字檢索技術(shù)的字符代碼記錄檢索裝置和方法,特別地,用于在作為數(shù)據(jù)結(jié)構(gòu)一維數(shù)組的雙數(shù)組結(jié)構(gòu)中記錄作為使用關(guān)鍵字被檢索的目標(biāo)的諸如漢字代碼的字符串。
近來(lái)計(jì)算機(jī)網(wǎng)絡(luò)、電子郵件等已廣為流行,由個(gè)人處理的電子文檔(數(shù)字文檔)的數(shù)量已迅速增加。例如,許多人一天要接收幾百上千個(gè)電子郵件。一天常常要存儲(chǔ)1兆字節(jié)(MB)的文檔數(shù)據(jù),而一年要存儲(chǔ)幾百兆字節(jié)到一吉字節(jié)(GB)。
為了處理這樣大量的數(shù)據(jù),必須通過(guò)消除數(shù)據(jù)中的冗余并對(duì)數(shù)據(jù)量進(jìn)行壓縮,來(lái)降低必要的存儲(chǔ)容量并加速數(shù)據(jù)的傳輸。鑒于上述近來(lái)的趨勢(shì),數(shù)據(jù)壓縮技術(shù)已成為必不可少的了,并為了以一種方法壓縮各種數(shù)據(jù),已經(jīng)提出一種通用編碼。
然而,當(dāng)以單詞為單位壓縮諸如電子化的日文、中文等文檔數(shù)據(jù)時(shí),首先必須以高速判斷從文檔輸入的字符串是否是在詞典中事先記錄的一個(gè)詞。而且,由于這些語(yǔ)言中有大量的詞要記錄在詞典中,于是詞典必須進(jìn)行編輯,使得盡可能不產(chǎn)生無(wú)用的存儲(chǔ)區(qū)。在已知的線索(trie)方法中,作為關(guān)鍵字的多個(gè)詞存儲(chǔ)在樹(shù)結(jié)構(gòu)的線索詞典中,并通過(guò)逐字符對(duì)比字符串與樹(shù)結(jié)構(gòu)的每一結(jié)點(diǎn)而檢索包含在輸入字符串中的詞。
在以下的說(shuō)明中,使用信息理論中所使用的它們?cè)瓉?lái)的名稱,即一個(gè)詞單元的數(shù)據(jù)被稱為符號(hào)或字符,任意數(shù)目的連接數(shù)據(jù)被稱為串或字符串。此外,代碼串或字符串中由幾個(gè)前導(dǎo)符號(hào)和字符組成的序列稱為前綴,而由幾個(gè)結(jié)尾的符號(hào)和字符組成的序列稱為后綴。例如,字符串a(chǎn)bc的前綴為∈(空),a,ab及abc,而后綴為∈(空),c,bc及abc。
在語(yǔ)言代碼壓縮中重要的是以具有盡可能小的存儲(chǔ)容量的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)諸如詞等的串,并發(fā)展以高速檢索串的算法。特別地,在詞典存儲(chǔ)詞的情形下,要被記錄的關(guān)鍵字集合體是事先已知的,且常常通過(guò)后來(lái)適當(dāng)添加關(guān)鍵字來(lái)擴(kuò)充詞典。因而,同樣重要的是能夠易于添加關(guān)鍵字。這種數(shù)據(jù)結(jié)構(gòu)稱為準(zhǔn)靜態(tài)數(shù)據(jù)結(jié)構(gòu)。
Aoe已提出作為以高速對(duì)多個(gè)關(guān)鍵字進(jìn)行模式匹配的數(shù)據(jù)結(jié)構(gòu)的雙數(shù)組(Junichi Aoe”A High-speed Digital Retrieval Algorithm byDouble-array”,in Proceedings of Papers D of The ElectronicsInformation and Communications Institute,Vol.J71-D,No.9,pp.1,592-1600.1988)。
圖1A示出雙數(shù)組的一例。這一雙數(shù)組包括兩個(gè)一維數(shù)組BASE和CHECK,且由這些數(shù)組存儲(chǔ)的數(shù)據(jù)對(duì)應(yīng)于圖1B所示的線索結(jié)構(gòu)。圖1b的線索表示五個(gè)英文詞baby#,bachelor#,badger#,badge#,和jar#,每一結(jié)點(diǎn)的索引對(duì)應(yīng)于圖1B中所示的BASE和CHECK數(shù)組的下標(biāo)。BASE和CHECK的記錄值為0的位置對(duì)應(yīng)于結(jié)點(diǎn)還沒(méi)有被記錄的空白位置。
這一線索包括圖1C所示的結(jié)點(diǎn)父子關(guān)系的重復(fù),且父結(jié)點(diǎn)的索引n和子結(jié)點(diǎn)的索引m分別對(duì)應(yīng)于BASE和CHECK的下標(biāo)。換言之,這一父子關(guān)系指示狀態(tài)轉(zhuǎn)換的類型,并當(dāng)字符a在父結(jié)點(diǎn)n狀態(tài)輸入時(shí),進(jìn)行從父結(jié)點(diǎn)n狀態(tài)向子結(jié)點(diǎn)m狀態(tài)的轉(zhuǎn)換。
當(dāng)使用雙數(shù)組檢索對(duì)應(yīng)于跟隨父結(jié)點(diǎn)n的字符a的子結(jié)點(diǎn)的索引時(shí),如圖1D所示,首先參照對(duì)應(yīng)于BASE上的下標(biāo)n的位置,并獲得內(nèi)容d。這一值d指示對(duì)于CHECK的下標(biāo)的一種原點(diǎn)位移量(位移量)。
然后假設(shè)以CHECK上的下標(biāo)d為起始點(diǎn),通過(guò)字符a的內(nèi)部表示值所移動(dòng)的位置的下標(biāo)為m(=d+字符a的內(nèi)部表示值)。如果對(duì)應(yīng)于CHECK上的下標(biāo)m的位置內(nèi)容與父結(jié)點(diǎn)的索引n重合,則字符a存儲(chǔ)在結(jié)點(diǎn)n的下面,并發(fā)現(xiàn)對(duì)應(yīng)的子結(jié)點(diǎn)的下標(biāo)為m。這時(shí),使用對(duì)樹(shù)上的關(guān)鍵字規(guī)定狀態(tài)轉(zhuǎn)換的goto功能g,子結(jié)點(diǎn)的索引m被表示為m=g(n,a)。
一般來(lái)說(shuō),一個(gè)或更多的子結(jié)點(diǎn)跟隨一個(gè)父結(jié)點(diǎn),并在正規(guī)線索結(jié)構(gòu)中,子結(jié)點(diǎn)的檢索速度按跟隨同一父結(jié)點(diǎn)的親緣結(jié)點(diǎn)的數(shù)目而降低。另一方面,在雙數(shù)組樹(shù)結(jié)構(gòu)中,不論親緣結(jié)點(diǎn)目如何,能夠獲得高速的檢索。
然而,上述傳統(tǒng)的字符串檢索有以下問(wèn)題。
當(dāng)雙數(shù)組用于日文、中文等的漢字(kanji)詞典時(shí),跟隨一個(gè)父結(jié)點(diǎn)的子結(jié)點(diǎn)的數(shù)目與英文等的字母排列詞典相比,由于漢字成語(yǔ)的多樣性而趨于增加。
圖1示出以漢字“電”(電)開(kāi)始的五個(gè)漢字成語(yǔ)的情形,即“電壓”(電壓)、“電氣”(電氣)、“電車”(電車)、“電腦”(計(jì)算機(jī))、和“電話”(電話)記錄在雙數(shù)組中。這種情形下,對(duì)應(yīng)于“電”之后的每一字符的漢字代碼值,即“壓”(壓)、“氣”(氣)、“車”(車)、“腦”(腦)和“話”(話),及相對(duì)的位置關(guān)系在CHECK上根據(jù)內(nèi)部表示值保持不變。另一方面,在CHECK上標(biāo)有0的位置已經(jīng)由其它漢字字符占據(jù),并且“電”之后的各漢字不一定可以同時(shí)匹配空位置。
因而,為了以所保持的相對(duì)位置關(guān)系在CHECK上記錄這些漢字字符,如圖1F所示,必須擴(kuò)展BASE和CHECK兩者的數(shù)組。這種情形下,計(jì)算能夠適應(yīng)所有這些漢字字符的最小位移量(平行位移量)d,并且這一d值寫(xiě)入BASE上的“電”的代碼值n的位置中。這里,對(duì)數(shù)組的新下標(biāo)p,q,r,s,和t指定通過(guò)向這一位移量d添加“電”之后的每一漢字字符的內(nèi)部表示值所獲得的值。然后,“電”的父結(jié)點(diǎn)的索引n寫(xiě)入CHECK上p,q,r,s,和t的位置中。
圖1G表示這一線索樹(shù)結(jié)構(gòu)。圖1G中,“電”記錄在根結(jié)點(diǎn)下,并且“壓”、“氣”、“車”、“腦”和“話”分別對(duì)應(yīng)于結(jié)點(diǎn)p,q,r,s,和t記錄在結(jié)點(diǎn)n之下。這里,n=g(root,電),p=g(n,壓),q=g(n,氣),r=g(n,車),s=g(n,腦),及t=g(n,話)。
這里,問(wèn)題在于,與字母表的字母情形不同,在漢字字符的情形下,大量的字符跟隨一個(gè)字符,并且如果這些字符以所保持的相對(duì)位置關(guān)系記錄在CHECK中,數(shù)組常常必須被擴(kuò)展。如果數(shù)組被擴(kuò)展,則已經(jīng)記錄的字符之間的空間不被占據(jù)而為空的。如果重復(fù)數(shù)組的這種擴(kuò)展,這種空間的數(shù)目明顯增加。因而,在小存儲(chǔ)容量中很難存儲(chǔ)大量的漢字成語(yǔ)。
本發(fā)明的目的是要提供一種用于降低詞典的閑置空間數(shù)而又不失去檢索的高速度、并使用壓縮詞典檢索串的串檢索裝置和方法。
本發(fā)明的另一目的是提供一種字符代碼記錄檢索裝置和方法,通過(guò)進(jìn)一步發(fā)展通常的高速低容量詞典數(shù)據(jù)結(jié)構(gòu)而獲得的雙數(shù)組結(jié)構(gòu)提出一種新的數(shù)據(jù)結(jié)構(gòu),并對(duì)于頻繁出現(xiàn)的字符代碼引入一種不同于傳統(tǒng)的雙數(shù)組的新的數(shù)據(jù)結(jié)構(gòu),以盡可能地被抑制的數(shù)組擴(kuò)展記錄大量字符代碼。
在本發(fā)明的第一方面,串檢索裝置包括第一數(shù)組單元、第二數(shù)組單元、第三數(shù)組單元和檢索單元,并檢索記錄串之外給定的串。
第一數(shù)組單元在等同于后跟多個(gè)字符的前綴的索引的下標(biāo)位置記錄對(duì)應(yīng)于前綴的序號(hào)信息。第二數(shù)組單元在基于等同于對(duì)應(yīng)于前綴的序號(hào)信息的下標(biāo)和對(duì)應(yīng)于字符代碼的另一下標(biāo)的位置,記錄對(duì)應(yīng)于對(duì)跟隨前綴的多個(gè)字符分類而獲得的多組的每一個(gè)的位移量。第三數(shù)組單元在等同于位移量與跟隨前綴的字符的內(nèi)部表示值的和的下標(biāo)位置,記錄前綴的索引。檢索單元使用第一、第二、和第三數(shù)組單元檢索給定的串。
通過(guò)采用這種串檢索裝置,跟隨前綴的字符被分類為多個(gè)組,并向每一組指定位移量。由于包含在每一組中的字符數(shù)小于跟隨前綴的字符總數(shù),故與所有字符一次被記錄的情形比較,數(shù)組單元中的空位置能夠易于被使用。這樣,能夠以較小的位移量記錄字符,并能夠保持高速檢索而抑制第一和第三數(shù)組單元兩者的擴(kuò)展。
在本發(fā)明的第二方面,串檢索裝置包括記錄單元和檢索單元,并從記錄串中檢索給定的串。記錄單元對(duì)跟隨前綴的多個(gè)字符分類并記錄,且檢索單元使用記錄單元檢索給定的串。
通過(guò)采用這種串檢索裝置,如同第一方面那樣,記錄單元中的空區(qū)域可被有效地使用,且在保持檢索的高速度的同時(shí)所記錄的串的數(shù)據(jù)結(jié)構(gòu)能夠被壓縮。
本發(fā)明第三方面的裝置是一種字符代碼記錄檢索裝置,用于在作為數(shù)據(jù)結(jié)構(gòu)一維數(shù)組的雙數(shù)組結(jié)構(gòu)中記錄使用關(guān)鍵字被檢索的字符代碼串,并用于檢索串,并包括平行位移量計(jì)算器單元,用于計(jì)算記錄使用關(guān)鍵字被檢索的每一串字符所需的平行位移量;第一數(shù)組單元,以使用關(guān)鍵字被檢索的每一字符串的前綴索引作為下標(biāo);用于判定第一數(shù)組單元中記錄值的識(shí)別單元;第二數(shù)組單元,記錄關(guān)于跟隨第一數(shù)組單元中所指示的串的前綴的特定字符的信息;關(guān)鍵字候選點(diǎn)計(jì)算器單元,用于計(jì)算記錄在第一和第二數(shù)組單元的平行位移量與作為對(duì)應(yīng)于跟隨串的前綴的字符的內(nèi)部表示值之和;以及第三數(shù)組單元,以通過(guò)關(guān)鍵字候選點(diǎn)計(jì)算器單元獲得的和作為下標(biāo),記錄串的前綴的索引。
通過(guò)引入進(jìn)一步發(fā)展作為傳統(tǒng)的高速低容量詞典數(shù)據(jù)結(jié)構(gòu)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)所獲得的新的數(shù)據(jù)結(jié)構(gòu),一種新的數(shù)據(jù)結(jié)構(gòu)具有以使用關(guān)鍵字被檢索的每一串的前綴的索引作為下標(biāo)的第一數(shù)組、跟隨第一數(shù)組中所示的串的前綴的特定字符上記錄信息的第二數(shù)組、以及記錄串的前綴的索引的第三數(shù)組,由平行位移量計(jì)算器單元計(jì)算的在第一和第二數(shù)組中記錄使用關(guān)鍵字被檢索的每一串字符所需的平行位移量與作為對(duì)應(yīng)于跟隨串的前綴的字符的內(nèi)部表示值的和用作為下標(biāo),這種字符代碼記錄檢索裝置能夠向每一字符代碼提供一種記錄位置,使得字符代碼在對(duì)應(yīng)于第三數(shù)組的CHECK數(shù)組上可以彼此重疊。其結(jié)果是,所有作為關(guān)鍵字的字符代碼能夠一次被記錄在CHECK數(shù)組上的各空間中,CHECK數(shù)組的擴(kuò)展盡可能地受到抑制,所有作為關(guān)鍵字的字符代碼能夠記錄在CHECK數(shù)組上,跟隨一定的字符代碼的字符代碼之間的相對(duì)位置關(guān)系被保持且CHECK數(shù)組的擴(kuò)展盡可能地受到抑制,并進(jìn)而能夠把閑置空間(稀疏區(qū)域)的出現(xiàn)降低到可能的最低水平。這樣,能夠產(chǎn)生存儲(chǔ)準(zhǔn)靜態(tài)關(guān)鍵字集合,即預(yù)定關(guān)鍵字集合,作為檢索目標(biāo)的詞典,并從而能夠把具有可通過(guò)后來(lái)適當(dāng)添加并記錄關(guān)鍵字而被擴(kuò)展的線索數(shù)組結(jié)構(gòu)的存儲(chǔ)器容量降低到最小。
本發(fā)明的第四方面的裝置是第三方面的一字符代碼記錄檢索裝置,并包括列表單元,用于產(chǎn)生頻繁用于成語(yǔ)的字符代碼列表并輸出從字符代碼列表選擇的字符代碼;頻繁出現(xiàn)字符代碼選擇器單元,用于輸出關(guān)于字符代碼頻率級(jí)別數(shù)應(yīng)當(dāng)選擇到何種程度的頻率閾值;頻繁出現(xiàn)字符代碼存儲(chǔ)單元,用于存儲(chǔ)從列表單元選擇的頻繁出現(xiàn)的字符代碼并輸出選擇的頻繁出現(xiàn)字符代碼和頻繁出現(xiàn)字符代碼的索引;作為記錄由字符代碼組成的成語(yǔ)的字符代碼詞典的詞典單元,用于基于頻繁出現(xiàn)的字符代碼根據(jù)關(guān)注的字符是否為成語(yǔ)的前綴對(duì)作業(yè)進(jìn)行分類,并輸出通過(guò)對(duì)跟隨頻繁出現(xiàn)的前綴字符的字符進(jìn)行分類所獲得的每一組;組存儲(chǔ)單元,用于存儲(chǔ)通過(guò)對(duì)跟隨由詞典單元輸入的頻繁出現(xiàn)的前綴字符的字符進(jìn)行分類所獲得的每一組;作為第一數(shù)組單元的第一BASE數(shù)組單元,用于計(jì)算頻繁出現(xiàn)的字符的序號(hào)信息并在第一BASE數(shù)組上內(nèi)部表示值的索引位置存儲(chǔ)該序號(hào)信息;對(duì)跟隨頻繁出現(xiàn)的前綴字符的字符進(jìn)行分類的代碼分類單元,用于使用第二字符代碼的幾位對(duì)成語(yǔ)的第二字符進(jìn)行分類;平行位移量計(jì)算器單元,用于計(jì)算最小平行位移量,諸如通過(guò)向每一組中的每一字符的內(nèi)部表示值添加一任意平行位移量所獲得的任何值可能指示CHECK數(shù)組上一空位;平行位移量存儲(chǔ)單元,用于存儲(chǔ)從平行位移量計(jì)算單元輸入的平行位移量并把該平行位移量輸出到第二BASE數(shù)組單元;關(guān)鍵字候選點(diǎn)計(jì)算器單元,用于記錄作為CHECK數(shù)組中下標(biāo)位置處字符父輩的等同于組的每一字符的內(nèi)部表示值和平行位移量之和的前綴索引,并對(duì)由(前綴+當(dāng)前字符)組成的下一個(gè)前綴的索引指定該和的值;作為第二數(shù)組單元的第二BASE數(shù)組單元,用于對(duì)由平行位移存儲(chǔ)單元基于由代碼分類單元輸入的代碼值和由列表單元輸入的序號(hào)信息所輸出的每一組存儲(chǔ)平行位移量;以及作為第三數(shù)組單元的CHECK數(shù)組單元,用于在對(duì)應(yīng)于和的值的位置記錄前綴的索引。
在這種字符代碼記錄檢索裝置中,通過(guò)引入一種新的數(shù)據(jù)結(jié)構(gòu),能夠?qū)γ恳蛔址a提供一個(gè)使得字符代碼在CHECK數(shù)組上可以彼此重疊的記錄位置,這種數(shù)據(jù)結(jié)構(gòu)是作為由進(jìn)一步發(fā)展傳統(tǒng)的跟隨低容量詞典數(shù)據(jù)結(jié)構(gòu)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)所獲得新的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)具有作為第一數(shù)組單元的CHECK數(shù)組單元,用于在對(duì)應(yīng)于平行位移量和字符代碼內(nèi)部表示值之和的下標(biāo)位置記錄前綴的索引;第一BASE數(shù)組單元,用于計(jì)算選擇的字符的序號(hào)信息并同時(shí)在第一BASE數(shù)組單元上的字符的索引位置存儲(chǔ)序號(hào)信息;及第二BASE數(shù)組,用于存儲(chǔ)由平行位移量存儲(chǔ)單元基于從代碼分類單元輸出的代碼值和由列表單元輸出的序號(hào)信息輸入的每一組的平行位移量,通過(guò)產(chǎn)生將要記錄在第一BASE數(shù)組的兩類值并分別向非頻繁使用的字符和頻繁出現(xiàn)的字符施加作為傳統(tǒng)的平行位移量(低使用頻率)和第二BASE數(shù)組的下標(biāo)之一的這兩類值,并根據(jù)跟隨頻繁出現(xiàn)的字符代碼的字符代碼值把第二BASE數(shù)組的下標(biāo)分類為三組,并對(duì)每一組提供唯一的平行位移量。其結(jié)果是,作為關(guān)鍵字的所有字符代碼能夠同時(shí)記錄在CHECK數(shù)組上的空間中,使CHECK數(shù)組的擴(kuò)展盡可能被抑制,每一字符代碼能夠記錄在CHECK數(shù)組中,使跟隨一定的字符的字符之間的相對(duì)位置關(guān)系被保存,并使CHECK數(shù)組的擴(kuò)展盡可能地被抑制,并進(jìn)而能夠把閑置空間的出現(xiàn)降低到盡可能低的水平。這樣,能夠產(chǎn)生存儲(chǔ)準(zhǔn)靜態(tài)關(guān)鍵字集合,即作為檢索目標(biāo)的預(yù)定關(guān)鍵字集合,并從而通過(guò)后來(lái)適當(dāng)添加并記錄關(guān)鍵字而能夠被擴(kuò)展的帶有線索數(shù)組結(jié)構(gòu)的存儲(chǔ)器容量能夠被極小化。
本發(fā)明第五方面的裝置是一第三方面的字符代碼記錄檢索裝置,并包括文檔輸入單元,用于首先指定線索結(jié)構(gòu)的根作為前綴,并同時(shí)在前綴中設(shè)置結(jié)束記號(hào),然后指示輸入被檢索的字符的字符代碼并檢測(cè)輸入的字符代碼的前綴;第一BASE數(shù)組單元,用于從對(duì)應(yīng)于前綴或字符代碼索引的位置輸出一數(shù)值;記錄值判定單元,用于判定從第一BASE數(shù)組單元輸入的數(shù)值是為前綴字符的序號(hào)信息還是一平行位移量,當(dāng)數(shù)值是在組成線索的索引范圍之外時(shí)則輸出作為前綴字符代碼的序號(hào)信息的數(shù)值,并當(dāng)數(shù)值在索引范圍之內(nèi)時(shí)則輸出作為平行位移量的數(shù)值;代碼分類單元,用于當(dāng)從第一BASE數(shù)組單元輸入的數(shù)值是頻繁出現(xiàn)的前綴字符代碼的序號(hào)信息時(shí)使用幾位的字符代碼對(duì)輸入的字符代碼進(jìn)行分類;第二BASE數(shù)組單元,用于從對(duì)應(yīng)于從記錄值判定單元輸出的前綴的序號(hào)信息和字符代碼的分類的位置輸出平行位移量;平行位移量存儲(chǔ)單元,當(dāng)從第一BASE數(shù)組單元輸入的數(shù)值是平行位移量時(shí),用于存儲(chǔ)平行位移量;關(guān)鍵字候選點(diǎn)計(jì)算器單元,用于計(jì)算平行位移量和輸入字符的內(nèi)部表示值之和;CHECK數(shù)組單元,用于從對(duì)應(yīng)于由關(guān)鍵字候選點(diǎn)計(jì)算器單元計(jì)算的位置輸出關(guān)鍵字;以及關(guān)鍵字/前綴校對(duì)單元,用于判定由CHECK數(shù)組單元輸入的關(guān)鍵字是否與前綴字符代碼索引或前綴的索引一致,并當(dāng)關(guān)鍵字與前綴字符代碼索引或前綴的索引一致時(shí),判定成語(yǔ)記錄在詞典中。
在這種字符代碼記錄檢索裝置中,能夠產(chǎn)生存儲(chǔ)準(zhǔn)靜態(tài)關(guān)鍵字集合,即預(yù)定關(guān)鍵字集合作為檢索目標(biāo)的詞典,并從而通過(guò)引入一種新的數(shù)據(jù)結(jié)構(gòu),能夠把后來(lái)通過(guò)適當(dāng)添加和記錄關(guān)鍵字而能夠被擴(kuò)展的帶有線索數(shù)組結(jié)構(gòu)的存儲(chǔ)器容量極小化,這種數(shù)據(jù)結(jié)構(gòu)是通過(guò)進(jìn)一步發(fā)展作為傳統(tǒng)的高速低容量詞典數(shù)據(jù)結(jié)構(gòu)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)而獲得的,這種新的數(shù)據(jù)結(jié)構(gòu)具有CHECK數(shù)組單元,用于從對(duì)應(yīng)于從關(guān)鍵字候選點(diǎn)計(jì)算器單元輸入的和的位置輸出關(guān)鍵字;第一BASE數(shù)組,用于從對(duì)應(yīng)于前綴或字符代碼索引的位置輸出一數(shù)值;以及第二BASE數(shù)組,用于從對(duì)應(yīng)于從記錄值判定單元輸出的前綴字符代碼的序號(hào)信息和字符代碼的分類這兩者的位置輸出平行位移量。其結(jié)果是,通過(guò)以作為一維數(shù)組的雙數(shù)組結(jié)構(gòu)(即線索數(shù)組結(jié)構(gòu))存儲(chǔ)數(shù)據(jù),使存儲(chǔ)器容量降低到盡可能的最低水平,并使用這種樹(shù)數(shù)組結(jié)構(gòu)作為檢索關(guān)鍵字,而能夠?qū)崿F(xiàn)高速模式匹配。
圖1A表示一雙數(shù)組。
圖1B表示對(duì)應(yīng)于雙數(shù)組的線索結(jié)構(gòu)。
圖1C表示線索中的父子關(guān)系。
圖1D表示使用雙數(shù)組的檢索。
圖1E表示漢字的添加記錄。
圖1F表示擴(kuò)展的雙數(shù)組。
圖1G表示擴(kuò)展的線索。
圖2表示本發(fā)明的字符串檢索裝置的原理。
圖3A表示7位代碼的一區(qū)域。
圖3B表示8位代碼的一區(qū)域。
圖4表示分類方法A。
圖5表示分類方法B。
圖6表示分類方法C。
圖7表示分類方法D。
圖8表示分類方法E。
圖9表示分類方法F。
圖10表示分類方法G。
圖11表示分類方法H。
圖12表示字符間隔寬的情形。
圖13表示在記錄時(shí)字符串檢索裝置的配置。
圖14表示前綴寄存器單元的記錄內(nèi)容的一例。
圖15表示BASE的一例。
圖16表示組αγ。
圖17表示組β。
圖18表示組γ。
圖19表示每一組位移量的計(jì)算過(guò)程。
圖20表示BASE’的一例。
圖21是表示記錄過(guò)程的流程圖。
圖22是表示分類過(guò)程的流程圖。
圖23表示在檢索時(shí)字符串檢索裝置的配置。
圖24是表示檢索過(guò)程的流程圖。
圖25表示7位代碼情形下的第二BASE數(shù)組。
圖26表示8位代碼情形下的第二BASE數(shù)組。
圖27表示到CHECK數(shù)組的記錄。
圖28表示第一字符代碼記錄檢索裝置的配置。
圖29是說(shuō)明第一字符代碼記錄方法的流程圖。
圖30表示第二字符代碼記錄檢索裝置的配置。
圖31是說(shuō)明第二字符代碼記錄方法的流程圖。
圖32表示信息處理裝置的配置。
圖33表示存儲(chǔ)介質(zhì)。
以下參照附圖詳細(xì)說(shuō)明本發(fā)明的實(shí)施例。
圖2表示本發(fā)明的字符串檢索裝置的原理。圖2中所示字符串檢索裝置包括第一數(shù)組單元1、第二數(shù)組單元2、第三數(shù)組單元3和檢索單元4,并檢索記錄字符串之外給定的字符串。
數(shù)組單元1在等同于由多個(gè)字符跟隨的前綴索引下標(biāo)位置處記錄對(duì)應(yīng)于前綴的序號(hào)信息(一序列號(hào)碼)。
在等同于對(duì)應(yīng)于前綴的序號(hào)信息的下標(biāo)位置處,數(shù)組單元2記錄對(duì)應(yīng)于通過(guò)對(duì)跟隨前綴的多個(gè)字符分類獲得的多個(gè)組的每一個(gè)的位移量。
在等同于位移量與跟隨前綴的字符的內(nèi)部表示值之和的下標(biāo)位置處,數(shù)組單元3記錄前綴的索引。
檢索單元4使用數(shù)組單元1、2和3檢索給定的字符串。
前綴意即字符串的前導(dǎo)部分,并通常由一個(gè)或多個(gè)字符組成。例如,圖1E中,漢字“電”是前綴,并后跟多個(gè)漢字字符,“壓”、“氣”、“車”、“腦”和“話”。例如,前綴的索引對(duì)應(yīng)于線索中結(jié)點(diǎn)的索引。例如,數(shù)組單元1對(duì)應(yīng)于上述的BASE,并對(duì)數(shù)組單元2存儲(chǔ)序號(hào)信息作為對(duì)應(yīng)于前綴索引的記錄值。
跟隨前綴的多個(gè)字符按預(yù)定方法被分類,且數(shù)組單元2在等于記錄在數(shù)組單元1中的序號(hào)信息的下標(biāo)位置對(duì)每一組存儲(chǔ)位移量。數(shù)組單元3例如對(duì)應(yīng)于上述的CHECK,并在等于每一位移量與每一字符內(nèi)部表示值之和的下標(biāo)位置處存儲(chǔ)前綴的索引。字符的內(nèi)部表示值對(duì)應(yīng)于字符代碼值或者基于字符代碼計(jì)算出的適當(dāng)?shù)闹怠?br>
當(dāng)給定的字符串包含上述的前綴并相繼輸入下一個(gè)字符時(shí),檢索單元4使用記錄在數(shù)組單元1中的序號(hào)信息從數(shù)組單元2抽取對(duì)應(yīng)于下一個(gè)字符所屬的組的位移量。然后,它校驗(yàn)前綴的索引是否記錄在數(shù)組單元3中等于抽取的位移量和下一個(gè)字符值之和的下標(biāo)位置。
如果對(duì)應(yīng)的前綴索引被記錄,則下一個(gè)字符作為跟隨前綴的字符被識(shí)別,而如果沒(méi)有被記錄,則判定下一個(gè)字符沒(méi)有與前綴鏈接。這樣,能夠檢驗(yàn)出給定的字符串是否記錄在數(shù)組1、2或3中。
通過(guò)采用這種字符串檢索裝置,跟隨前綴的字符能夠分類為多個(gè)組,且向每一組指定一位移量。由于每一組中的字符數(shù)目小于跟隨前綴的字符總數(shù),故與所有字符一次被記錄的情形比較,能夠易于使用數(shù)組單元3中的空位。這樣,字符能夠以較低數(shù)目的位移量被記錄,且能夠抑制數(shù)組單元3的擴(kuò)展。
如果跟隨前綴的字符沒(méi)有分類而被記錄,則數(shù)組單元1在等于前綴索引的下標(biāo)位置處記錄所有字符公用的位移量,且數(shù)組單元3在等于位移量與每一字符值之和的下標(biāo)位置記錄前綴的索引。檢索單元4判定記錄在數(shù)組單元1中的值是序號(hào)信息還是位移量。如果該值是序號(hào)信息,則從數(shù)組單元2獲得位移量并從而訪問(wèn)數(shù)組單元3,而如果該值是位移量則數(shù)組單元3直接被訪問(wèn)。
這樣,當(dāng)檢索沒(méi)有分類而被記錄的字符時(shí),處理步驟數(shù)目與使用雙數(shù)組檢索中相同,而當(dāng)檢索分類記錄的字符時(shí),只需增加到數(shù)組單元2的訪問(wèn)步驟。從而檢索速度幾乎沒(méi)有損失。
在采用本發(fā)明的另一原理時(shí),字符串檢索裝置包括記錄單元和檢索單元,并從記錄字符串檢索給定的字符串。記錄單元把多個(gè)跟隨前綴的字符分類為多個(gè)組并記錄字符。檢索單元使用記錄單元檢索給定的字符串。
通過(guò)采用這樣的字符串檢索裝置,例如圖2所示的字符串檢索裝置,能夠有效地利用記錄單元中的空間區(qū)域,并能夠以保持的檢索速度壓縮記錄字符串的數(shù)據(jù)結(jié)構(gòu)。
例如,圖2中所示的數(shù)組單元1、數(shù)組單元2和數(shù)組單元3分別對(duì)應(yīng)于稍后所述圖13中所示的BASE 52、BASE’55和CHECK62,且檢索單元4對(duì)應(yīng)于稍后所述的圖23所示的文檔輸入單元71、判定單元72及校對(duì)單元73。
不論是漢語(yǔ)還是日語(yǔ),作為漢字代碼記錄的JIS1級(jí)和2級(jí)漢字字符數(shù)目稍小于7,000。這些漢字中,用于產(chǎn)生成語(yǔ)的漢字?jǐn)?shù)目是有限的。例如,即使是在漢語(yǔ)中,產(chǎn)生十個(gè)或更多種成語(yǔ)的頻繁出現(xiàn)的漢字字符最多不超過(guò)500個(gè)。
然而,當(dāng)這些頻繁出現(xiàn)的漢字字符記錄在詞典中時(shí),跟隨線索結(jié)構(gòu)上漢字的漢字字符越多,則一次在CHECK上現(xiàn)有的空位中記錄索引漢字字符變得越困難,故CHECK的擴(kuò)展是不可避免的。
這種情形下,本發(fā)明中進(jìn)一步發(fā)展了傳統(tǒng)的高速低容量詞典雙數(shù)組,并通過(guò)不同于雙數(shù)組的方法記錄/檢索頻繁出現(xiàn)的漢字字符。更具體來(lái)說(shuō),如果線索結(jié)構(gòu)上跟隨一定的漢字的漢字字符的數(shù)目很大,則漢字字符不以那些被保存的漢字字符之間相對(duì)位置關(guān)系記錄在詞典中,而是被分類為兩個(gè)或多個(gè)組并對(duì)每一組進(jìn)行記錄,并還考慮到保持速度。
這種情形下,雖然保持了屬于同一組的漢字字符之間的相對(duì)位置關(guān)系,但是不同組之間的位置關(guān)系不是總被保持,并為了判定輸入的要被檢索的漢字屬于哪一組,需要一些另外的信息。然而,與大量漢字如同它們?cè)瓉?lái)那樣作為一組記錄的情形相比,使用CHECK上現(xiàn)有的空位的可能性增加了。這樣,能夠抑制數(shù)組的擴(kuò)展,并能夠壓縮詞典的數(shù)據(jù)結(jié)構(gòu)。而檢索過(guò)程的步驟數(shù)幾乎沒(méi)有增加,從而保持了速度。
以下,說(shuō)明本實(shí)施例中漢字字符的分類方法。圖3A和3B表示諸如日文、中文等2字節(jié)字符代碼空間中的字符代碼的區(qū)域。這一代碼空間對(duì)應(yīng)于一個(gè)二維空間,數(shù)0到255以2字節(jié)字符的第一字節(jié)表示,且數(shù)0到255以2字節(jié)字符的第二字節(jié)表示,分別作為第一坐標(biāo)和第二坐標(biāo)。
圖3A表示其中使用7位表示1字節(jié)的代碼區(qū)域11,如日文的日文工業(yè)標(biāo)準(zhǔn)(JIS),中文的GB代碼(7位代碼)等等,且圖3B表示其中使用8位表示1字節(jié)的代碼區(qū)域12,如日文的擴(kuò)展UNIX代碼(EUC),中文的GB代碼(8位代碼)等等。在用作為這些代碼基礎(chǔ)的日文圖形字符代碼中漢字代碼限制為94區(qū)(ku)×94點(diǎn)(ten),并能夠表示出最多8,838個(gè)字符。
圖4到圖7表示通過(guò)把圖3A所示的7位代碼的區(qū)域11分開(kāi)對(duì)2字節(jié)字符進(jìn)行分類的方法。在圖4、5、6和7中,口符號(hào)表示跟隨一定的漢字的多個(gè)漢字字符的位置,且字符的第一和第二字節(jié)的第一位都為“0”。
根據(jù)圖4中所示的分類方法A,區(qū)域11按第一字節(jié)的第二和第三位的值被分為三個(gè)區(qū)域21、22和23,且由口構(gòu)成的漢字字符被分類為對(duì)應(yīng)的三組。這里,對(duì)于第二和第三位都帶有“01”的字符屬于區(qū)域21,對(duì)于這兩位都帶有“10”的字符屬于區(qū)域22,對(duì)于這兩位都帶有“11”的字符屬于區(qū)域23。
根據(jù)圖5中所示的分類方法B,區(qū)域11按第二字節(jié)的第二和第三位的值被分為三個(gè)區(qū)域24、25和26,且由口構(gòu)成的漢字字符被分類為對(duì)應(yīng)的三組。這里,對(duì)于第二和第三位都帶有“01”的字符屬于區(qū)域24,對(duì)于這兩位都帶有“10”的字符屬于區(qū)域25,對(duì)于這兩位都帶有“11”的字符屬于區(qū)域26。
根據(jù)圖6中所示的分類方法C,區(qū)域11按第一和第二字節(jié)的第二位的值被分為四個(gè)區(qū)域27、28、29和30,且由口構(gòu)成的漢字字符被分類為對(duì)應(yīng)的四組。這里,對(duì)于第一字節(jié)的第二位和第二字節(jié)的第二位都帶有“0”的字符屬于區(qū)域27,對(duì)于第一字節(jié)的第二位帶有“0”且對(duì)于第二字節(jié)的第二位帶有“1”的字符屬于區(qū)域28,對(duì)于第一字節(jié)的第二位帶有“1”且對(duì)于第二字節(jié)的第二位帶有“0”的字符屬于區(qū)域29,對(duì)于這兩位都帶有“1”的字符屬于區(qū)域30。
根據(jù)圖7所示的分類方法D,區(qū)域11按第一和第二字節(jié)的第二和第三位的值被分為四個(gè)區(qū)域31、32、33、和34,且由口構(gòu)成的漢字字符被分為對(duì)應(yīng)的四組。
這里,在對(duì)于第一字節(jié)的第二和第三位帶有“01”或“10”的字符中,對(duì)于第二字節(jié)的第二和第三位帶有“01”或“10”的字符屬于區(qū)域31,且對(duì)于第二字節(jié)的第二和第三位帶有“11”的字符屬于區(qū)域32。在對(duì)于第一字節(jié)的第二和第三位帶有“11”的字符中,對(duì)于第二字節(jié)的第二和第三位帶有“01”或“10”的字符屬于區(qū)域33,且對(duì)于第二字節(jié)的第二和第三位帶有“11”的字符屬于區(qū)域34。
圖8到11表示通過(guò)把圖3B中所示8字節(jié)代碼的區(qū)域12分為幾個(gè)區(qū)域而對(duì)2字節(jié)字符分類的一個(gè)方法。在這些圖8、9、10和11中,口符號(hào)指示跟隨一定的漢字的多個(gè)漢字字符的位置,且字符的第一和第二字節(jié)的第一位都是“1”。
根據(jù)圖8所示的分類方法E,如同圖4所示的分類方法A那樣,根據(jù)第一字節(jié)的第二和第三位的值區(qū)域12被分為三個(gè)區(qū)域35、36和37,且以口標(biāo)記的漢字字符被分類為三個(gè)對(duì)應(yīng)的組。
根據(jù)圖9所示的分類方法F,如同圖5所示的分類方法B那樣,根據(jù)第二字節(jié)的第二和第三位的值區(qū)域12被分為三個(gè)區(qū)域38、39和40,且以口標(biāo)記的漢字字符被分類為三個(gè)對(duì)應(yīng)的組。
根據(jù)圖10所示的分類方法G,如同圖6所示的分類方法C那樣,根據(jù)第一和第二字節(jié)的第二位的值,區(qū)域12被分為三個(gè)區(qū)域41、42、43和44,且以口標(biāo)記的漢字字符被分類為四個(gè)對(duì)應(yīng)的組。
根據(jù)圖11所示的分類方法H,如同圖7所示的分類方法D那樣,根據(jù)第一和第二字節(jié)的第二和第三位的值,區(qū)域12被分為三個(gè)區(qū)域45、46、47和48,且以口標(biāo)記的漢字字符被分類為四個(gè)對(duì)應(yīng)的組。
這樣,使用字符代碼適當(dāng)?shù)奈恢担?字節(jié)字符能夠被分類為幾個(gè)組。雖然上述的任何方法可任意采用,但是希望使用能夠把帶有口的漢字字符盡可能均勻劃分的分類方法。在以下的實(shí)施例中,使用上述的分類方法之一按字符代碼的第二和第三位的值對(duì)跟隨前綴的字符分類,并對(duì)每一獲得的組計(jì)算位移量。這里,前綴意即一個(gè)詞的前導(dǎo)部分,并通常由一個(gè)或多個(gè)字符組成。
這時(shí),如果屬于每一組的字符數(shù)狹窄地偏移,則字符幾乎均勻地被分類。如果對(duì)每一組計(jì)算位移量時(shí)沒(méi)有帶有非常大字符數(shù)的組,則能夠易于找到適當(dāng)?shù)哪繕?biāo)。例如,當(dāng)通過(guò)記錄帶有分類漢字字符,添加圖1E中所示的五個(gè)漢字字符時(shí),能夠提高使用CHECK上空位置的可能性,從而能夠抑制數(shù)組的擴(kuò)展。
此外,即使當(dāng)跟隨字符的數(shù)目不大時(shí),如果字符被分類并記錄,則其內(nèi)部表示值范圍在預(yù)定閾值之外的字符的適當(dāng)目標(biāo)也能易于找到。這里,字符的內(nèi)部表示值對(duì)應(yīng)于字符代碼的值或基于該值計(jì)算出的適當(dāng)?shù)闹?,并指示代碼空間中字符之間的相對(duì)位置關(guān)系。例如,通過(guò)在圖3A的區(qū)域11或圖3B的區(qū)域12中提供基準(zhǔn)點(diǎn),基準(zhǔn)點(diǎn)和對(duì)應(yīng)于字符的位置之間的距離能夠用作為內(nèi)部表示值。
圖12表示這種成語(yǔ)的例子。這里假設(shè),當(dāng)記錄“爛漫”(盛開(kāi))和“爛熟”(過(guò)熟)這兩個(gè)成語(yǔ)時(shí),跟隨“爛”(壯觀)的“漫”(擴(kuò)展)和“熟”(成熟)之間的內(nèi)部表示值的差(寬度)相當(dāng)大,且在CHECK上的空位置中不能容納這些字符。這種情形下,傳統(tǒng)的記錄方法中,通過(guò)擴(kuò)展CHECK記錄這些字符,而在本發(fā)明的記錄方法中,通過(guò)在不同的組中記錄“漫”和“爛”能夠使用CHECK上的空位置。
然而,如果跟隨字符的數(shù)目小且跟隨字符之間內(nèi)部表示值的最大差小于閾值,則字符也能夠象通常那樣無(wú)需分類記錄。
以下將說(shuō)明在線索詞典中記錄字符所需的結(jié)構(gòu)和過(guò)程。圖13表示在記錄時(shí)字符串檢索裝置的結(jié)構(gòu)。圖13所示的字符串檢索裝置包括頻繁出現(xiàn)的漢字列表51、BASE數(shù)組52、前綴寄存器單元53、前綴選擇器單元54、BASE’數(shù)組55、成語(yǔ)詞典56、分類單元57、分類結(jié)果存儲(chǔ)單元58、位移量計(jì)算器59、位移量存儲(chǔ)單元60、記錄位置計(jì)算器單元61、及CHECK數(shù)組62。
這些之中,頻繁出現(xiàn)的漢字列表51、BASE數(shù)組52、前綴寄存器單元53、BASE’數(shù)組55、成語(yǔ)詞典56、分類結(jié)果存儲(chǔ)單元58、位移量存儲(chǔ)單元60、及CHECK數(shù)組62對(duì)應(yīng)于計(jì)算機(jī)的存儲(chǔ)單元的特定區(qū)域或存儲(chǔ)在那里的數(shù)字?jǐn)?shù)據(jù)。前綴選擇器單元54、分類單元57、位移量計(jì)算器59及記錄位置計(jì)算器61對(duì)應(yīng)于由程序描述的軟件成分以處理這些數(shù)據(jù),并存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)單元的特定程序代碼部分。
頻繁出現(xiàn)的漢字列表51是頻繁在成語(yǔ)中使用的漢字字符的列表,而前綴選擇器54選擇帶有包含在頻繁出現(xiàn)的漢字列表51中的一個(gè)或多個(gè)漢字字符的前綴一定上限內(nèi)的數(shù)字。如圖12所示,除了頻繁出現(xiàn)的漢字字符之外,前綴選擇器54還選擇帶有跟隨的字符之間寬間隔的前綴作為處理目標(biāo)。
在參照記錄被處理的成語(yǔ)的成語(yǔ)詞典56的同時(shí),分類單元57確定跟隨選擇的前綴的每一漢字字符的分類方法。然后,分類單元57根據(jù)分類方法對(duì)漢字字符進(jìn)行分類,并在分類結(jié)果存儲(chǔ)單元58存儲(chǔ)分類結(jié)果。
當(dāng)在前綴寄存器單元53記錄由前綴選擇器單元54選擇的前綴的索引時(shí),字符串檢索裝置形成有意義的記錄位置序列號(hào)的值的范圍,并指出用于對(duì)跟隨每一前綴的漢字字符進(jìn)行分類的分類方法。這就是說(shuō),根據(jù)分類方法使用不同的序列號(hào)值范圍。
圖14表示前綴寄存器單元53的記錄內(nèi)容的一例。這里,序列號(hào)1和2的位置對(duì)應(yīng)于圖4所示的分類方法A,并分別存儲(chǔ)前綴W1和W2的索引。因而,發(fā)現(xiàn)跟隨每一前綴的漢字字符已經(jīng)按分類方法A分類。
序列號(hào)3和4的位置對(duì)應(yīng)于圖5所示的分類方法B,并分別存儲(chǔ)前綴“大”和W3的索引。因而,發(fā)現(xiàn)跟隨每一前綴的漢字字符已經(jīng)按分類方法B分類。序列號(hào)5的位置對(duì)應(yīng)于圖6所示的分類方法C,并存儲(chǔ)前綴W4的索引。因而,發(fā)現(xiàn)跟隨該前綴的漢字字符已經(jīng)按分類方法C分類。
這里,如果假設(shè)JIS代碼的第一和第二字節(jié)分別為x和y,則使用區(qū)/點(diǎn)代碼表示x和y如下。
x=(區(qū)代碼)+32 (1)
y=(點(diǎn)代碼)+32 (2)例如,由于“大”的區(qū)/點(diǎn)代碼為(34,71),故JIS代碼(x,y)=(66,103)。對(duì)應(yīng)于JIS代碼的內(nèi)部表示值z(mì)定義如下。
z=((區(qū)代碼)-1)*94+((點(diǎn)代碼)-1)(3)這種情形下,“大”的內(nèi)部表示值成為3,172。這里,線索的前綴對(duì)應(yīng)于緊靠根結(jié)點(diǎn)的零階上下文,并由于零階上下文的索引與內(nèi)部表示值一致,故記錄在前綴寄存器單元53中的“大”的索引成為3,172。
在前綴寄存器單元53記錄前綴之后,字符串檢索裝置在前綴寄存器單元53存儲(chǔ)序列號(hào),或在BASE52上具有前綴索引的位置存儲(chǔ)對(duì)應(yīng)的值作為下標(biāo)。這樣,在前綴寄存器單元53中每一前綴和序列號(hào)之間的對(duì)應(yīng)關(guān)系,換言之每一前綴和分類方法之間的對(duì)應(yīng)關(guān)系,記錄在BASE52之中。
圖15表示BASE的一例。BASE52根據(jù)前綴存儲(chǔ)兩類數(shù)值。如果跟隨前綴的字符數(shù)小,且跟隨前綴的字符之間的內(nèi)部表示值的最大差小于一閾值,則不進(jìn)行分類記錄并存儲(chǔ)傳統(tǒng)的位移量。
另一方面,在前綴不是以上的情形下,存儲(chǔ)對(duì)應(yīng)于前綴寄存器單元53中的序列號(hào)的BASE’55中的序列號(hào)。這一例子中,BASE’55中的序列號(hào)I1和I2分別存儲(chǔ)在對(duì)應(yīng)于前綴“大”的索引3,172及另一前綴“不”的索引3,811的位置。
例如,對(duì)于BASE’55中的序列號(hào),使用通過(guò)向BASE52的大小添加前綴寄存器單元53的序列號(hào)而獲得的值,并在前綴“大”的情形下,I1=BASE52的大小+3。因而,如果BASE52是在1到64,000詞的范圍內(nèi)建立的,則I1=64,003。
假設(shè)以“大”為前綴的九個(gè)兩字符成語(yǔ),“大王”(偉大的國(guó)王)、“大概”(大概)、“大圓”(大圓)、“大家”(地主)、“大河”(大河)、“大火”(大火)、“大學(xué)”(大學(xué))、“大會(huì)”(大會(huì))、及“大器”(實(shí)際才干的人)記錄在成語(yǔ)詞典56中。這種情形下,跟隨“大”(大)的漢字字符,“王”(國(guó)王)、“概”(大概)、“圓”(圓)、“家”(家)、“河”(河)、“火”(火)、“學(xué)”(學(xué),學(xué)校)、“會(huì)”(會(huì)議)、及“器”(才干)由圖5所示的分類方法B被分類為如圖16、17和18所示的三組。
在分類方法B中,漢字字符基于第二字節(jié)的第二和第三位的值被分類。圖16的漢字字符“王”和“概”的第二和第三位都是“01”,故這些漢字字符被分類為組α。圖17的漢字字符“圓”、“家”、“河”、“火”和“學(xué)”的第二和第三位都是“10”,故這些漢字字符被分類為組β。圖18的漢字字符“會(huì)”和“器”的第二和第三位都是“11”,故這些漢字字符被分類為組γ。
這些組α、β、γ分別對(duì)應(yīng)于圖5的區(qū)域24、25和26,并作為分類結(jié)果存儲(chǔ)在分類結(jié)果存儲(chǔ)單元58中。圖16、17和18中,每一漢字字符下面的所示的數(shù)字指示表達(dá)式(1)和(2)的JIS代碼(x,y),和表達(dá)式(3)的內(nèi)部表示值z(mì)。例如,圖16所示漢字“王”的JIS代碼是(50,38),而內(nèi)部表示值為1,603。
位移量計(jì)算器單元59對(duì)每一組參照分類結(jié)果計(jì)算CHECK62上的最適當(dāng)?shù)奈灰屏?,并在位移量存?chǔ)單元60存儲(chǔ)該量。記錄位置計(jì)算器單元61使用位移量計(jì)算屬于每一組的漢字字符的記錄位置,且字符串檢索裝置在CHECK62上獲得的記錄位置記錄前綴的索引。
圖19示出對(duì)圖16、17和18中所示的每一組的位移量計(jì)算過(guò)程。這里,位移量是按組α、β和γ的順序計(jì)算的。首先,位移量計(jì)算單元59在CHECK62上平行移動(dòng)屬于組α的兩個(gè)漢字字符,“王”和“概”,搜索用于記錄它們的位置,并計(jì)算對(duì)應(yīng)的位移量d1。記錄位置計(jì)算器61把每一漢字的內(nèi)部表示值加到d1,并計(jì)算記錄位置的下標(biāo)。
然后,位移量計(jì)算單元59在CHECK62上平行移動(dòng)屬于組β的五個(gè)漢字字符,“圓”、“家”、“河”、“火”和“學(xué)”,搜索用于記錄它們的位置,并計(jì)算對(duì)應(yīng)的位移量d2。記錄位置計(jì)算器61把每一漢字的內(nèi)部表示值加到d2,并計(jì)算記錄位置的下標(biāo)。
然后,位移量計(jì)算單元59在CHECK62上平行移動(dòng)屬于組γ的五個(gè)漢字字符,“會(huì)”和“器”,搜索用于記錄它們的位置,并計(jì)算對(duì)應(yīng)的位移量d3。記錄位置計(jì)算器61把每一漢字的內(nèi)部表示值加到d3,并計(jì)算記錄位置的下標(biāo)。
然后,字符串檢索裝置在屬于組α、β和γ的所有漢字字符的記錄位置記錄前綴索引“大”,3,172。對(duì)于其分類記錄沒(méi)有進(jìn)行的前綴,位移量計(jì)算單元59計(jì)算對(duì)所有跟隨的漢字字符公共的位移量,且記錄位置計(jì)算器61把每一漢字的內(nèi)部表示值加到位移量,并計(jì)算記錄位置。通過(guò)對(duì)所有的前綴重復(fù)這樣的過(guò)程,必須的漢字字符能夠記錄在CHECK62上。
然后,字符串檢索裝置在具有作為BASE’上的下標(biāo)存儲(chǔ)在BASE52中的序號(hào)的位置存儲(chǔ)對(duì)應(yīng)的前綴的每一組的位移量。對(duì)于其分類記錄沒(méi)有進(jìn)行的前綴,字符串檢索單元在對(duì)應(yīng)于BASE52上前綴的索引的位置存儲(chǔ)位移量。
圖20示出BASE’55的一例。圖20中所示的BASE’55指示基于類似于圖14中所示的前綴寄存器單元53的下標(biāo)值范圍的分類方法,并對(duì)每一被分類的組存儲(chǔ)唯一的位移量。例如,以上組α、β和γ的位移量d1、d2、d3分別存儲(chǔ)在對(duì)應(yīng)于圖15中所示的漢字“大”的序號(hào)I1的位置,這表示這些組是通過(guò)分類方法B獲得的。
這樣,通過(guò)采用圖13所示的配置,跟隨前綴的漢字字符能夠被分類為多個(gè)組,且對(duì)應(yīng)于前綴的分類方法能夠由數(shù)組下標(biāo)的值的范圍標(biāo)識(shí)。然后,通過(guò)對(duì)每一組提供唯一的位移量并把這些組彼此重疊,則對(duì)每一漢字能夠提供一個(gè)空記錄位置。因而,與一定位移量提供給所有跟隨前綴的漢字字符的情形比較,能夠抑制CHECK62的擴(kuò)展。
圖21是表示圖13中所示的字符串檢索裝置的記錄過(guò)程的流程圖。首先,前綴選擇單元54根據(jù)來(lái)自用戶的指令選擇一個(gè)或多個(gè)前綴W。(步驟S1)。
例如,在10個(gè)或更多類成語(yǔ)中使用的大約500類漢字記錄在頻繁出現(xiàn)的漢字列表51中,且前綴選擇器單元54在這些漢字字符之外選擇被處理的漢字字符。前綴選擇器單元54還選擇在帶有三個(gè)或更多字符的許多成語(yǔ)中使用的帶有兩個(gè)或更多字符的前綴。例如,在諸如“自由競(jìng)爭(zhēng)”(自由競(jìng)爭(zhēng))、“自由主義”(自由主義)、“自由時(shí)間”(自由時(shí)間)等成語(yǔ)中,“自由”(自由)作為前綴被選擇。此外,如果必要,還選擇如圖12中所示的跟隨字符之間具有寬字符間距的前綴。然后,在前綴寄存器單元53中存儲(chǔ)這些前綴的索引(內(nèi)部表示值)。
然后,字符串檢索裝置輸入來(lái)自包含被記錄在線索詞典的漢字字符的成語(yǔ)詞典56的字符串(步驟S2),并參照前綴寄存器單元53判定在輸入的字符串中關(guān)注的前綴是否為被選擇的前綴W(步驟S3)。
如果前綴不是所選擇的前綴W,則位移量計(jì)算器單元59對(duì)所有跟隨前綴的漢字字符計(jì)算公共位移量(步驟S4),且字符串檢索裝置在對(duì)應(yīng)于BASE52上的前綴的所有位置存儲(chǔ)位移量(步驟S5)。然后,記錄位置計(jì)算器61把每一漢字的內(nèi)部表示值加到位移量并計(jì)算CHECK62上的記錄位置。字符串檢索裝置在記錄位置記錄前綴的索引(步驟S6)并終止處理。
當(dāng)在步驟S3中,從輸入的字符串檢索到前綴W時(shí),字符串檢索裝置判斷輸入的字符串是否已經(jīng)同所有的前綴比較過(guò)(步驟S7)。如果對(duì)所有的前綴W該處理沒(méi)有完成,則分類單元57參照成語(yǔ)詞典56基于代碼值對(duì)跟隨檢測(cè)到的前綴的漢字字符分類(步驟S8)。這時(shí),字符串檢索裝置確定對(duì)應(yīng)于所采用的分類方法的序號(hào),并基于該序號(hào)在前綴寄存器單元53重新存儲(chǔ)前綴W的索引。
然后。字符串檢索裝置在分配給前綴的BASE’55中,在對(duì)應(yīng)于BASE52上的前綴W的索引的位置存儲(chǔ)一序號(hào)(步驟S9)。然后,通過(guò)把任意添加值加到屬于一組的每一漢字字符的內(nèi)部表示值、校驗(yàn)對(duì)應(yīng)于每一所獲得的添加結(jié)果的CHECK62上的位置、并計(jì)算添加值之外的最小值,其中所有的添加結(jié)果對(duì)應(yīng)于CHECK62上的空位置且該組的所有漢字字符記錄在空區(qū)域中,位移量計(jì)算器單元59對(duì)每一獲得的組計(jì)算最適當(dāng)?shù)奈灰屏?步驟S10)。且字符串檢索裝置在對(duì)應(yīng)于存儲(chǔ)在BASE52中的序號(hào)的位置,在BASE’55中存儲(chǔ)獲得的位移量(步驟S11)。
然后,當(dāng)字符串檢索裝置重復(fù)步驟7與之后的處理,并完成輸入字符串與所有前綴W的比較時(shí),記錄位置計(jì)算單元61把每一組的位移量加到每一漢字的內(nèi)部表示值,并計(jì)算CHECK 62上的記錄位置(步驟S6)。然后,字符串檢索裝置在記錄位置記錄前綴的索引,并終止處理。
通過(guò)對(duì)記錄在成語(yǔ)詞典56中的所有成語(yǔ)重復(fù)這樣的過(guò)程,這些成語(yǔ)被記錄在包含BASE52、BASE’55及CHECK62的線索詞典中。這時(shí),在步驟S6獲得的記錄位置用作為步驟S5和S9中的下一個(gè)前綴的索引。
圖22是表示在圖21中所示的步驟S8中執(zhí)行的分類過(guò)程的流程圖。這一例子中,圖4、5、6、和7中,或圖8、9、10和11中所示的四種分類方法用于給定的字符聚集體,計(jì)算屬于獲得的每一組的字符數(shù),并選擇這些數(shù)中偏差最小的分類方法。
首先,分類單元57比較跟隨前綴W的字符數(shù)與預(yù)定的閾值(步驟S21),并如果數(shù)目等于或超過(guò)閾值,則分類單元57對(duì)這些字符分類。這一例子中,首先判斷是否所有四個(gè)分類方法都被完成,(步驟S22),并如果它們沒(méi)有完成,則分類單元57校驗(yàn)每一字符的第一和第二字節(jié)的第二和第三位的值,并根據(jù)特定的分類方法對(duì)字符進(jìn)行分類(步驟S23)。
然后,分類單元57計(jì)算屬于獲得的每一組的字符數(shù)(步驟S24),并評(píng)估數(shù)目之中的偏差(步驟S25)。對(duì)于偏差的評(píng)估,可以使用基于字符數(shù)離差的統(tǒng)計(jì)處理。
如果對(duì)每一分類方法重復(fù)這樣的過(guò)程并完成這四個(gè)方法,這時(shí)分類單元57選擇其中數(shù)的偏差最小的分類方法(步驟S26)。然后,分類單元57根據(jù)選擇的分類方法確定前綴寄存器單元53中的序號(hào)(步驟S27),輸出通過(guò)該分類方法獲得的每一組(步驟S28),輸出前綴寄存器單元53中的序號(hào)(步驟S29),并終止處理。
如果步驟21中,跟隨前綴W的字符數(shù)小于閥值,則分類單元57將這些字符之間的內(nèi)部表示值的最大差值與預(yù)定閾值進(jìn)行比較(步驟S30)。如果最大差值等于或超過(guò)閾值,則分類單元57對(duì)這些字符分類執(zhí)行步驟S22及之后的處理。如果最大差值小于閾值,則分類單元57不進(jìn)行分類并終止處理。
在步驟S29輸出的前綴寄存器單元53中的序號(hào)指示了所采用的分類方法,該序號(hào)在圖21所示的步驟S29中被轉(zhuǎn)換為BASE’55中的序號(hào),并存儲(chǔ)在BASE52中。這樣,所采用的分類方法的信息存儲(chǔ)在BASE52中,并當(dāng)在線索詞典中檢索未知的輸入字符串時(shí)使用。
雖然在這里使用圖4到11所示的分類方法,一般來(lái)說(shuō),除了這些方法之外的任何其它分類方法也可使用,且目的用于評(píng)估偏差的分類方法不限于這四個(gè)方法。分類方法還可由用戶為每一前綴來(lái)指定。
以下對(duì)通過(guò)使用上述所產(chǎn)生的線索詞典來(lái)進(jìn)行檢索的配置和檢索字符串的處理進(jìn)行描述。
圖23表示在檢索時(shí)字符串檢索裝置的配置。圖23所示的字符串檢索裝置包括BASE數(shù)組52、BASE'數(shù)組55、分類單元57、位移量存儲(chǔ)單元60記錄位置計(jì)算器單元61和圖13所示的CHECK數(shù)組62、文檔輸入單元71、判斷單元72、及校對(duì)單元73。
文檔輸入單元71、判斷單元72和校對(duì)單元73對(duì)應(yīng)于由程序描述的軟件成分,并存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)單元的特定程序代碼部分。
文檔輸入單元71從給定的文檔逐一輸入字符。判斷單元72抽取對(duì)應(yīng)于要被處理的前綴索引的記錄值,并判斷記錄值指示的是序號(hào)還是位移量。如果跟隨前綴的字符被分類并記錄,則記錄值對(duì)應(yīng)于序號(hào),如果不是這樣,則記錄值對(duì)應(yīng)于位移量。
如果記錄值是序號(hào),則分類單元57根據(jù)對(duì)應(yīng)的分類方法對(duì)輸入的字符進(jìn)行分類。字符串檢索單元從BASE’55基于序號(hào)抽取對(duì)應(yīng)于輸入字符組的位移量,并在位移量存儲(chǔ)單元60存儲(chǔ)該位移量。如果記錄值是位移量,則字符串檢索裝置在位移量存儲(chǔ)單元60存儲(chǔ)該位移量。
然后,記錄位置計(jì)算器61從位移量存儲(chǔ)單元60抽取位移量,把輸入字符的內(nèi)部表示值添加到該位移量,并計(jì)算CHECK62上的記錄位置。然后,校對(duì)單元73以前綴的索引校對(duì)記錄在該位置的數(shù)值,并根據(jù)校對(duì)的結(jié)果建立新的前綴。
通過(guò)重復(fù)這樣的過(guò)程,使用線索詞典的字符逐一校對(duì)文檔中的字符,并按順序抽取記錄在詞典中的詞。這時(shí),參照BASE52中的記錄值識(shí)別分類和分類方法的存在/不存在,并參照BASE’55能夠獲得每一組的位移量。
圖24是表示圖23中所示的字符串檢索裝置的檢索過(guò)程的流程圖。首先,字符串檢索裝置建立對(duì)應(yīng)于線索的根結(jié)點(diǎn)的“#”作為前綴(步驟S31),且文檔輸入單元71輸入要被處理的來(lái)自由用戶輸入的文檔的字符(步驟S32)。
然后,判斷單元72從對(duì)應(yīng)于BASE52上前綴W的索引位置抽取數(shù)值(步驟S33),并判斷該數(shù)值指示的是序號(hào)還是位移量(步驟S34)。如果從BASE52抽取的數(shù)值等于或小于BASE52的大小,則該數(shù)值被當(dāng)作位移量,而如果該數(shù)值超過(guò)BASE52的大小,則該數(shù)值被看當(dāng)作序號(hào)。
如果該數(shù)值是序號(hào),則分類單元57從該數(shù)值識(shí)別分類方法,根據(jù)對(duì)應(yīng)的分類方法對(duì)輸入字符的代碼值進(jìn)行分類,并計(jì)算輸入字符所屬的組(步驟S35)。然后,字符串檢索裝置從對(duì)應(yīng)于前綴W的序號(hào)和BASE’55上輸入字符的組的位置抽取位移量,并在位移量存儲(chǔ)單元60中存儲(chǔ)該位移量(步驟S36)。
然后,記錄位置計(jì)算器單元61把輸入字符的內(nèi)部表示值加到獲得的位移量上,并計(jì)算CHECK62上的記錄位置。字符串檢索裝置從該位置抽取數(shù)值(步驟S37)。如果在步驟S34中,該數(shù)值是位移量,則字符串檢索裝置在位移量存儲(chǔ)單元60按原來(lái)狀態(tài)存儲(chǔ)該位移量(步驟S38),并執(zhí)行步驟S37的處理。
然后,校對(duì)單元73以前綴W的索引校對(duì)從CHECK62抽取數(shù)值,以該數(shù)值作為關(guān)鍵字(步驟S39)。如果該數(shù)值與前綴索引一致,則認(rèn)為通過(guò)組合前綴W和輸入的字符而獲得的字符串記錄在線索詞典中,并為新的前綴W建立字符串以校驗(yàn)進(jìn)一步的字符串是否已被記錄(步驟S40)。
如果CHECK62上的數(shù)值與前綴W的索引不一致,則認(rèn)為通過(guò)組合前綴W和輸入的字符而獲得的字符串沒(méi)有記錄在線索詞典中,并只把輸入字符設(shè)置為前綴W(步驟S41)。這樣,輸入字符成為下一個(gè)詞的前導(dǎo)字符。
然后,文檔輸入單元71判斷字符的輸入是否完成(步驟S42),并當(dāng)留下了下一個(gè)字符時(shí),文檔輸入單元71重復(fù)步驟S32及以后的過(guò)程。如果沒(méi)有字符留下,則文檔輸入單元71終止處理。
當(dāng)在步驟S32,輸入第一個(gè)字符時(shí),前綴W為“#”,在步驟S40中,為前綴W自動(dòng)建立輸入字符,并輸入下一個(gè)字符。如果前綴W是帶有一個(gè)字符的漢字,且輸入的字符也是漢字,則有可能前綴和輸入的字符形成兩字符的成語(yǔ)。
例如,如果當(dāng)前綴W是“大”時(shí),輸入漢字“王”,則判斷單元72從對(duì)應(yīng)于“大”的索引的位置抽取記錄值I1,即在圖15所示的BASE52上的3,172(步驟S33)。在這例子中發(fā)現(xiàn),I1大于BASE52的大小,并指示了圖20所示的BASE’55的序號(hào)。
此外,發(fā)現(xiàn)I1對(duì)應(yīng)于分類方法B,并于是分類方法57檢驗(yàn)輸入漢字“王”的第二字節(jié)的第二和第三位,并根據(jù)分類方法B對(duì)輸入漢字進(jìn)行分類(步驟S35)。結(jié)果發(fā)現(xiàn),這一漢字屬于圖16中所示的組α。
然后,字符串檢索裝置從對(duì)應(yīng)于圖20所示BASE’55上序號(hào)I1和組α的兩者位置抽取位移量d1(步驟S36)。記錄位置計(jì)算器單元61把輸入字符“王”的內(nèi)部表示值1,603加到位移量d1,并計(jì)算圖19所示的CHECK62上的記錄位置(步驟S37)。然后,校對(duì)單元73比較記錄在該位置的數(shù)據(jù)與“大”的索引3,172(步驟S39)。
在這個(gè)例子中,由于“大”的索引3,172記錄在對(duì)應(yīng)于輸入的漢字“王”的記錄位置,發(fā)現(xiàn)成語(yǔ)“大王”記錄在線索詞典中。然后,為新的前綴W建立“大王”(步驟S40),并檢驗(yàn)是否記錄了較長(zhǎng)的字符串。
當(dāng)輸入跟隨前綴“大”的另一漢字“概”、“圓”、“家”、“河”、“火”、“學(xué)”、“會(huì)”或“器”時(shí),按相同的方式識(shí)別兩字符成語(yǔ),并為新的前綴W建立成語(yǔ)。當(dāng)前綴W是帶有多于兩個(gè)字符的漢字時(shí),進(jìn)行相同的字符串檢索。
這里,考慮BASE和CHECK數(shù)的大小為64,000、BASE’的序號(hào)數(shù)為500及組的最大數(shù)為4的情形。這時(shí),如果存儲(chǔ)在BASE’中的每一位移量為一個(gè)詞,則BASE’必需的存儲(chǔ)容量為2,000詞,這只是BASE和CHECK整個(gè)存儲(chǔ)量的1/64。另一方面,當(dāng)在傳統(tǒng)的記錄方法中BASE和CHECK都被擴(kuò)展時(shí),估計(jì)必需存儲(chǔ)量的增加將大得多。
然而,通過(guò)采用本發(fā)明的分類記錄,不能由傳統(tǒng)方法占用的空間區(qū)域能夠被有效地占用,并能夠適當(dāng)抑制雙數(shù)組存儲(chǔ)量的增加。此外,在檢索時(shí),只有當(dāng)字符被分類并記錄、只有添加參照BASE’這一步驟、且整個(gè)過(guò)程的步驟數(shù)保持相同時(shí),使用雙數(shù)組檢索的高速度才幾乎不會(huì)降低。
以下,說(shuō)明本發(fā)明的字符代碼記錄檢索裝置。
如圖15的BASE數(shù)組配置中所示,字符代碼記錄檢索裝置中,在BASE數(shù)組中輸入兩類值。一類值是傳統(tǒng)的平行位移量d,且這適用于不頻繁使用的漢字代碼(帶有低使用頻率的)。另一方面,對(duì)于頻繁出現(xiàn)的漢字,記錄不同于那些值的代碼I1和I2。這些值I1和I2對(duì)應(yīng)于第二BASE數(shù)組的水平方向的下標(biāo)(序號(hào))。
以下,圖25和26表示第二BASE數(shù)組的例子。圖25中,基于代碼值把圖3A中所示的區(qū)域11分為三個(gè)塊,且漢字代碼分類為三組α1、β1和γ1。圖26中,基于代碼值圖3B中所示的區(qū)域12也分為三塊,且漢字代碼分類為三組α2、β2和γ2。
這樣,當(dāng)確定了第二BASE數(shù)組的下標(biāo)時(shí),根據(jù)代碼值跟隨頻繁出現(xiàn)的漢字代碼的字符分類為三組,對(duì)每一組提供唯一的平行位移量。
即,如圖27的CHECK數(shù)組設(shè)置中所示,通過(guò)基于跟隨相同字符(即父結(jié)點(diǎn))的字符代碼(即子結(jié)點(diǎn))的代碼值(范圍,諸如7位代碼或8位代碼)提供唯一平行位移量d1、d2、d3并使各組在CHECK上彼此重疊,為每一漢字代碼能夠提供空記錄位置。
換言之,對(duì)跟隨相同字符“大”(父結(jié)點(diǎn))的漢字代碼“圓”、“王”、“家”、“火”、“會(huì)”、“河”、“概”、“學(xué)”、和“器”(子結(jié)點(diǎn))基于代碼值提供CHECK數(shù)組上唯一的平行位移量d1或d2。
更具體來(lái)說(shuō),對(duì)跟隨父結(jié)點(diǎn)“大”的每一漢字代碼“圓”、“王”、“家”、“火”、“河”的子結(jié)點(diǎn)提供CHECK數(shù)組上的平行位移量d1,因?yàn)檫@些代碼包含在8k到16K中。同樣地,為跟隨父結(jié)點(diǎn)“大”的漢字代碼“會(huì)”、“概”、“學(xué)”、和“器”的每一子結(jié)點(diǎn)提供CHECK數(shù)組上的平行位移量d2,因?yàn)檫@些代碼包含在16k到24K中。這樣,通過(guò)使跟隨相同字符“大”(父結(jié)點(diǎn))的漢字代碼“圓”、“王”、“家”、“火”、“會(huì)”、“河”、“概”、“學(xué)”、和“器”(子結(jié)點(diǎn))在CHECK數(shù)組上彼此重疊,能夠?qū)γ恳粷h字代碼提供空記錄位置。
這樣,與為CHECK數(shù)組上每一漢字代碼一致地提供平行位移量的傳統(tǒng)的情形比較,能夠抑制CHECK數(shù)組的增加,從而能夠改進(jìn)雙數(shù)組的空間效率。
圖28示出本發(fā)明字符代碼記錄檢索裝置的第一實(shí)施例的配置。
圖28所示的字符代碼記錄檢索裝置,使用在作為數(shù)據(jù)結(jié)構(gòu)一維數(shù)組的雙數(shù)組配置中的關(guān)鍵字,記錄諸如要被檢索的漢字代碼的字符串,并從而檢索這些字符串。該字符代碼記錄檢索裝置包括列表單元101、頻繁出現(xiàn)字符代碼存儲(chǔ)單元103、頻繁出現(xiàn)字符代碼選擇器單元104、詞典單元106、組存儲(chǔ)單元108、第一BASE數(shù)組單元102(第一數(shù)組)、代碼分類單元107、平行位移量計(jì)算器單元109、平行位移量存儲(chǔ)單元110、關(guān)鍵字候選點(diǎn)計(jì)算器單元111、第二BASE數(shù)組單元105(第二數(shù)組)、及CHECK數(shù)組單元112(第三數(shù)組)。這些組件的每一個(gè)是通過(guò)使用微處理器編程實(shí)現(xiàn)的。
列表單元101產(chǎn)生在成語(yǔ)中頻繁使用的漢字代碼的列表,并輸出從漢字代碼列表中選擇的選擇字符代碼101a。
頻繁出現(xiàn)的字符代碼選擇器單元104輸出頻率閾值,該閩值是關(guān)于應(yīng)當(dāng)選擇到何種漢字代碼的頻率等級(jí)數(shù)。
頻繁出現(xiàn)字符代碼存儲(chǔ)單元103存儲(chǔ)由列表單元101選擇的頻繁出現(xiàn)的字符代碼,并輸出所選擇的頻繁出現(xiàn)的字符代碼103a及選擇的頻繁出現(xiàn)字符代碼的索引103c。
詞典單元106是記錄由漢字代碼組成的成語(yǔ)的字符代碼詞典,并基于關(guān)注的字符是否為根據(jù)所選擇的漢字代碼成語(yǔ)的前綴對(duì)作業(yè)進(jìn)行分類,并輸出通過(guò)對(duì)跟隨前綴中頻繁出現(xiàn)的字符代碼的漢字代碼進(jìn)行分類所獲得的每一組106a。如果關(guān)注的字符不是這種前綴,則詞典單元106輸出跟隨所關(guān)注的字符的一組漢字106b。
組存儲(chǔ)單元108存儲(chǔ)通過(guò)對(duì)詞典單元106輸入的前綴中跟隨頻繁出現(xiàn)的漢字代碼的漢字代碼分類而獲得的組106a。
第一BASE數(shù)組單元102計(jì)算所選擇的字符代碼101a的序號(hào)103b,并同時(shí)在對(duì)應(yīng)于在第一BASE數(shù)組上的漢字代碼的索引103c的位置存儲(chǔ)組合103b。
代碼分類單元107使用漢字代碼的幾位對(duì)成語(yǔ)的第二漢字代碼進(jìn)行分類,以便對(duì)跟隨前綴中頻繁出現(xiàn)的漢字代碼的字符進(jìn)行分類。
平行位移量計(jì)算器單元109計(jì)算最小平行位移量109a,使得對(duì)通過(guò)組存儲(chǔ)單元108輸出的每一組108a,通過(guò)向同一組108a的每一漢字代碼的代碼值添加任意平行位移量109a獲得的所有值可以指示CHECK數(shù)組上的空位置。對(duì)于漢字代碼組106a,平行位移量計(jì)算器單元109計(jì)算對(duì)應(yīng)的平行位移量109a。
平行位移量存儲(chǔ)單元110在對(duì)應(yīng)于作為平行位移量110a的第一BASE數(shù)組單元102的前綴索引的下標(biāo)位置,存儲(chǔ)從平行位移量計(jì)算器單元109輸入的平行位移量109a。
關(guān)鍵字候選點(diǎn)計(jì)算器單元111,在CHECK數(shù)組上對(duì)應(yīng)于從平行位移量存儲(chǔ)單元110輸入的平行位移量110a與組的每一漢字代碼的內(nèi)部表示值之和111a的一個(gè)下標(biāo)位置,對(duì)每一組記錄作為同一組的漢字代碼父輩的前綴索引,并指定這個(gè)和的值為由((前綴)+(關(guān)注的字符))組成的下一個(gè)前綴的索引。
第二BASE數(shù)組105,基于從代碼分類單元107輸入的代碼值107a和從列表單元101輸入的序號(hào)103b這兩者,存儲(chǔ)通過(guò)平行位移量存儲(chǔ)單元110輸出的每一組的平行位移量110a。
CHECK數(shù)組單元112在CHECK數(shù)組上對(duì)應(yīng)于由關(guān)鍵字候選點(diǎn)計(jì)算器單元111計(jì)算的和111a的一個(gè)位置記錄從詞典單元106輸入的前綴106c的索引。
如上所述,在圖28中所示的字符代碼記錄檢索裝置中,作為通過(guò)進(jìn)一步發(fā)展作為傳統(tǒng)的高速和低容量詞典數(shù)據(jù)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)而獲得的一種新的數(shù)據(jù)結(jié)構(gòu),引入一種新的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)具有用于在CHECK數(shù)組上對(duì)應(yīng)于平行位移量110a和每一漢字代碼內(nèi)部表示值之和的一個(gè)位置記錄前綴的索引106c的CHECK數(shù)組單元112,用于計(jì)算所選擇的漢字代碼101a的序號(hào)103b并同時(shí)在第一BASE數(shù)組上的漢字代碼的索引103c中存儲(chǔ)序號(hào)103b的第一BASE數(shù)組單元102,以及用于基于從代碼分類單元107輸入的代碼值107a和從列表單元101輸入的序號(hào)103b這兩者,存儲(chǔ)由平行位移量存儲(chǔ)單元110輸出的每一組的平行位移量110a的第二BASE數(shù)組105,通過(guò)產(chǎn)生兩類記錄在第一BASE數(shù)組中的值,并把一個(gè)值作為傳統(tǒng)的平行位移量的用于不頻繁使用的漢字代碼(具有低使用頻率),而另一值作為第二BASE數(shù)組的下標(biāo)之一用于頻繁出現(xiàn)的漢字代碼,并通過(guò)根據(jù)跟隨頻繁出現(xiàn)的漢字代碼的字符的代碼值把跟隨第二BASE數(shù)組下標(biāo)中的前綴字符分類為三類,并對(duì)每一類提供唯一的平行位移量,能夠?qū)γ恳粷h字代碼提供空記錄位置,使得作為漢字代碼在CHECK數(shù)組上彼此重疊。結(jié)果是,所有作為關(guān)鍵字的漢字代碼能夠以被抑制到最低可能水平的CHECK數(shù)組的擴(kuò)展一次記錄到CHECK數(shù)組上的空間中,所有的漢字代碼還能夠以跟隨所保持的一定的漢字代碼的漢字代碼之間的相對(duì)位置關(guān)系并以抑制到最低可能水平的CHECK數(shù)組的擴(kuò)展被記錄,并進(jìn)而,能夠盡可能避免空間區(qū)域的出現(xiàn)。這樣,能夠產(chǎn)生由已知作為檢索目標(biāo)的關(guān)鍵字組成的存儲(chǔ)準(zhǔn)靜態(tài)關(guān)鍵字集合體的詞典,并能夠把后來(lái)可通過(guò)適當(dāng)添加和記錄關(guān)鍵字而被擴(kuò)展的線索數(shù)組結(jié)構(gòu)的存儲(chǔ)器容量極小化。
圖29是表示漢字代碼記錄的一個(gè)優(yōu)選實(shí)施例的流程圖,該實(shí)施例使用了在圖28中所示的字符代碼記錄檢索裝置中實(shí)現(xiàn)的字符代碼記錄檢索方法。
圖29所示的字符代碼記錄檢索方法的優(yōu)選實(shí)施例是以圖28中所示的字符代碼記錄檢索裝置實(shí)現(xiàn)的,并在邏輯上包括包含列表步驟的步驟ST2、頻繁出現(xiàn)的字符代碼選擇步驟和頻繁出現(xiàn)的字符代碼存儲(chǔ)步驟、詞典步驟(步驟ST3)、分類結(jié)果存儲(chǔ)步驟(步驟ST9)、第一BASE數(shù)組步驟(第一數(shù)組步驟)(步驟ST6和ST11)/代碼分類步驟(步驟ST7)、平行位移量計(jì)算步驟(步驟ST8和ST10)、平行位移量存儲(chǔ)步驟(步驟ST8、ST10和ST11)、關(guān)鍵字候選點(diǎn)計(jì)算步驟(步驟ST9和ST12)、第二BASE數(shù)組步驟(第二數(shù)組步驟)(步驟ST9)及CHECK數(shù)組步驟(第三數(shù)組步驟)(步驟ST12),這些步驟使用適用于字符代碼記錄檢索裝置的程序代碼描述。
列表步驟(步驟ST2)產(chǎn)生頻繁在成語(yǔ)中使用的漢字代碼的列表并輸出從漢字代碼列表中選擇的漢字代碼101a,這是由列表單元101主要執(zhí)行的步驟。
頻繁出現(xiàn)的字符代碼選擇步驟(步驟ST2)輸出關(guān)于應(yīng)當(dāng)選擇什么級(jí)別數(shù)的漢字代碼的頻繁度閾值,這是由頻繁出現(xiàn)的字符代碼選擇器單元104主要執(zhí)行的步驟。
頻繁出現(xiàn)的字符代碼存儲(chǔ)步驟(步驟ST2)存儲(chǔ)在列表步驟(步驟ST2)選擇的頻繁出現(xiàn)的漢字代碼,并輸出所選擇的頻繁出現(xiàn)的字符代碼103a及選擇的頻繁出現(xiàn)的字符代碼的索引103c,這是由頻繁出現(xiàn)的字符代碼存儲(chǔ)單元103主要執(zhí)行的步驟。
詞典步驟(步驟ST3)是記錄漢字代碼組成的成語(yǔ)的字符代碼詞典,它基于選擇的漢字代碼根據(jù)關(guān)注的字符是否為成語(yǔ)的前綴對(duì)作業(yè)進(jìn)行分類,并輸出通過(guò)對(duì)跟隨前綴中頻繁出現(xiàn)的漢字代碼的漢字代碼的分類獲得的組106a,這是由詞典單元106主要執(zhí)行的步驟。
分類結(jié)果存儲(chǔ)步驟(步驟ST9)存儲(chǔ)由詞典步驟(步驟ST3)產(chǎn)生的跟隨前綴中頻繁出現(xiàn)的漢字代碼的漢字代碼的分類獲得的組106a,這是由組存儲(chǔ)單元108主要執(zhí)行的步驟。
第一BASE數(shù)組步驟(步驟ST6和ST11)計(jì)算選擇的字符代碼101a的序號(hào)103b,并同時(shí)在第一BASE數(shù)組上的漢字代碼的索引103c中存儲(chǔ)該序號(hào),這是由第一BASE數(shù)組單元102主要執(zhí)行的步驟。
代碼分步驟(步驟ST7)使用漢字代碼的幾個(gè)位對(duì)成語(yǔ)的第二漢字代碼進(jìn)行分類,以便對(duì)跟隨前綴中頻繁出現(xiàn)的漢字代碼的字符進(jìn)行分類,這是由代碼分類單元107主要執(zhí)行的步驟。
平行位移量計(jì)算步驟(步驟ST8和ST10)計(jì)算最小平行位移量109a,于是通過(guò)把任意平行位移量109a添加到每一漢字代碼的內(nèi)部表示值而獲得的每一值可以指示CHECK數(shù)組上的空位,這是由平行位移量計(jì)算器單元109主要執(zhí)行的步驟。
平行位移量存儲(chǔ)步驟(步驟ST8、ST10和ST11),在對(duì)應(yīng)于第一BASE數(shù)組單元102的前綴索引的下標(biāo)位置作為平行位移量110a,存儲(chǔ)在平行位移量計(jì)算步驟(步驟ST8和ST10)產(chǎn)生的平行位移量109a,這是由平行位移量存儲(chǔ)單元110主要執(zhí)行的步驟。
關(guān)鍵字候選點(diǎn)計(jì)算步驟(步驟ST9和ST12),在CHECK數(shù)組上對(duì)應(yīng)于在平行位移量存儲(chǔ)步驟(步驟ST8、ST10和ST11)輸入的平行位移量與組的每一漢字代碼的內(nèi)部表示值之和的一個(gè)下標(biāo)位置,記錄作為組的漢字代碼的父輩的前綴索引,并指定這個(gè)和的值作為由((前綴)+(關(guān)注的字符))組成的下一個(gè)前綴的索引,這是由關(guān)鍵字候選點(diǎn)計(jì)算單元111主要執(zhí)行的步驟。
第二BASE數(shù)組步驟(步驟ST9),基于在分類步驟(步驟ST7)產(chǎn)生的代碼值107a和在列表步驟(步驟ST2)產(chǎn)生的序號(hào)103b兩者,存儲(chǔ)在平行位移量存儲(chǔ)步驟(步驟ST8、ST10和ST11)輸出的每一組的平行位移量110a,這是由第二BASE數(shù)組單元105主要執(zhí)行的步驟。
CHECK數(shù)組步驟(步驟ST12)在CHECK數(shù)組上對(duì)應(yīng)于關(guān)鍵字候選點(diǎn)計(jì)算步驟中計(jì)算的和111a的一位置記錄前綴106c的索引,這是由CHECK數(shù)組單元112主要執(zhí)行的步驟。
如上所述,在圖29所示的字符代碼記錄檢索方法的優(yōu)選實(shí)施例中,作為通過(guò)進(jìn)一步發(fā)展作為傳統(tǒng)的高速和低容量詞典數(shù)據(jù)結(jié)構(gòu)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)而獲得的一種新的數(shù)據(jù)結(jié)構(gòu),引入一種新的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是通過(guò)執(zhí)行以下步驟產(chǎn)生的在CHECK數(shù)組上對(duì)應(yīng)于平行位移量110a和每一漢字代碼內(nèi)部表示值之和的一個(gè)位置記錄前綴的索引106c的CHECK數(shù)組步驟(步驟ST12),計(jì)算所選擇的漢字代碼101a的序號(hào)103b并同時(shí)在第一BASE數(shù)組上的漢字代碼的索引103c中存儲(chǔ)序號(hào)的第一BASE數(shù)組步驟(步驟ST6和ST11),以及存儲(chǔ)在平行位移量存儲(chǔ)步驟(步驟ST8、ST10和ST11)輸出的每一組的平行位移量110a的第二BASE數(shù)組步驟(步驟ST9),并通過(guò)指定兩類記錄在BASE數(shù)組中的值,并把一個(gè)值作為傳統(tǒng)的平行位移量的用于不頻繁使用的漢字代碼值(具有低使用頻率),而另一值作為第二BASE數(shù)組的下標(biāo)之一用于頻繁出現(xiàn)的漢字代碼,并通過(guò)基于跟隨頻繁出現(xiàn)的漢字代碼的字符的代碼值把第二BASE數(shù)組下標(biāo)中的字符分類為三類,并對(duì)每一類提供唯一的平行位移量,能夠?qū)γ恳粷h字代碼提供在CHECK數(shù)組上的空記錄位置。結(jié)果是,所有作為關(guān)鍵字的漢字代碼能夠以被抑制到最低可能水平的CHECK數(shù)組的擴(kuò)展一次記錄到CHECK數(shù)組上的空間中,所有的漢字代碼還能夠以跟隨所保持的一定的漢字代碼的漢字代碼之間的相對(duì)位置關(guān)系并以抑制到最低可能水平的CHECK數(shù)組的擴(kuò)展被記錄,并進(jìn)而,能夠盡可能避免空間區(qū)域的出現(xiàn)。這樣,能夠產(chǎn)生由已知作為檢索目標(biāo)的關(guān)鍵字組成的存儲(chǔ)準(zhǔn)靜態(tài)關(guān)鍵字集合體的詞典,并從而能夠把后來(lái)可通過(guò)適當(dāng)添加和記錄關(guān)鍵字而被擴(kuò)展的線索數(shù)組結(jié)構(gòu)的存儲(chǔ)器容量極小化。
圖30示出本發(fā)明字符代碼記錄檢索裝置的第二實(shí)施例的配置。
圖30所示的字符代碼記錄檢索裝置,在作為一維數(shù)據(jù)結(jié)構(gòu)數(shù)組的雙數(shù)組結(jié)構(gòu)中,記錄諸如使用關(guān)鍵字被檢索的漢字代碼字符串,并從而檢索字符串。該字符代碼記錄檢索裝置主要包括文檔輸入單元201、第一BASE數(shù)組單元102、記錄值判斷單元202、代碼分類單元107、第二BASE數(shù)組單元105、平行位移量存儲(chǔ)單元110、關(guān)鍵字候選點(diǎn)計(jì)算器單元111、CHECK數(shù)組單元112及關(guān)鍵字/前綴校對(duì)單元203。每一執(zhí)行部分是使用微型計(jì)算機(jī)通過(guò)編程實(shí)現(xiàn)的。
文檔輸入單元201對(duì)前綴指定線索結(jié)構(gòu)的根,同時(shí)在前綴W作為終結(jié)符號(hào)建立終結(jié)標(biāo)記#,然后指令輸入作為被檢索的字符的漢字代碼b,并檢測(cè)輸入的漢字代碼b的前綴W。
文檔輸入單元201輸出前綴W或漢字代碼的索引201a,從第一BASE數(shù)組上對(duì)應(yīng)的位置抽取數(shù)值102a,并在記錄判斷單元202輸入數(shù)值102a。
記錄值判斷單元202判斷從第一BASE指令單元102輸入的數(shù)值102a是頻繁出現(xiàn)的前綴字符代碼的序號(hào)還是平行位移量。如果數(shù)值102a在組成線索的索引范圍之外,則記錄值判斷單元202作為頻繁出現(xiàn)的字符代碼的序號(hào)202a輸出這一數(shù)值102a,并如果從第一BASE指令第一102輸入的數(shù)值102a在索引范圍之內(nèi),則它作為平行位移量202b輸出數(shù)值102a。
如果輸出頻繁出現(xiàn)的前綴字符代碼的序號(hào)202a,則代碼分類單元107使用漢字代碼的幾位對(duì)跟隨這一前導(dǎo)漢字的漢字代碼b進(jìn)行分類。
第二BASE指令單元105在第二BASE指令上,從對(duì)應(yīng)于由記錄值判斷單元202輸出的頻繁出現(xiàn)的字符代碼序號(hào)202a的位置和漢字代碼b的代碼值的組,輸出平行位移量105a。
平行位移量存儲(chǔ)單元110存儲(chǔ)從記錄值判斷單元202輸出的平行位移量202b或從第二BASE指令單元105輸出的平行位移量105a,并作為平行位移量110a輸出平行位移量202b或105a。
關(guān)鍵字候選點(diǎn)計(jì)算器單元111計(jì)算并輸出平行位移量110a與跟隨字符b的內(nèi)部表示值之和111a。
CHECK數(shù)組單元112在對(duì)應(yīng)于從關(guān)鍵字候選點(diǎn)計(jì)算器單元111輸出的和111a的位置抽取一數(shù)值作為CHECK數(shù)組上的一個(gè)關(guān)鍵字,并向關(guān)鍵字/前綴校對(duì)單元203輸入該數(shù)值。
關(guān)鍵字/前綴校對(duì)單元203判斷由CHECK數(shù)組單元112輸入的關(guān)鍵字是否與前綴字符內(nèi)部表示值的索引201a或前綴W一致,如果輸入的關(guān)鍵字與前綴字符內(nèi)部表示值的索引201a或前綴W一致,則判斷成語(yǔ)記錄在詞典中。
如上所述,在圖30中所示的字符代碼記錄檢索裝置中,作為通過(guò)進(jìn)一步發(fā)展傳統(tǒng)的高速和低容量詞典數(shù)據(jù)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)而獲得的一種新的數(shù)據(jù)結(jié)構(gòu),引入一種新的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)具有用于從對(duì)應(yīng)于關(guān)鍵字候選點(diǎn)計(jì)算器單元111輸出的和的位置抽取關(guān)鍵字的CHECK數(shù)組單元112,用于從對(duì)應(yīng)于前綴W的索引201a的一位置輸出一數(shù)值102的第一BASE數(shù)組單元102,以及用于從對(duì)應(yīng)于由記錄值判斷單元202輸出的頻繁出現(xiàn)的字符代碼的序號(hào)202a與漢字代碼b的代碼值的分類這兩者的一位置輸出平行位移量105a的第二BASE數(shù)組105,能夠產(chǎn)生存儲(chǔ)作為檢索目標(biāo)的預(yù)定的準(zhǔn)靜態(tài)關(guān)鍵字集合體的詞典,并能夠把后來(lái)可通過(guò)適當(dāng)添加和記錄關(guān)鍵字而被擴(kuò)展的線索數(shù)組結(jié)構(gòu)的存儲(chǔ)器容量一致到最低可能的水平。結(jié)果是,能夠以最小存儲(chǔ)容量在作為數(shù)據(jù)結(jié)構(gòu)一維數(shù)組的雙數(shù)組結(jié)構(gòu)中(即線索數(shù)組結(jié)構(gòu))存儲(chǔ)關(guān)鍵字,且通過(guò)使用作為檢索關(guān)鍵字這一線索結(jié)構(gòu)能夠以高速進(jìn)行模式匹配。
圖31是說(shuō)明使用由圖30所示的字符代碼記錄檢索裝置實(shí)現(xiàn)的字符代碼記錄檢索方法的一優(yōu)選實(shí)施例的流程圖。
圖31的字符代碼記錄檢索方法是由圖30所示的字符代碼記錄檢索裝置實(shí)現(xiàn)的。該字符代碼記錄檢索方法主要包括文檔輸入步驟(步驟P2和P3)、第一BASE數(shù)組步驟(步驟P4)、記錄值判斷步驟(步驟P5)、代碼分類步驟(步驟P6)、第二BASE數(shù)組步驟(步驟P7)、平行位移量存儲(chǔ)步驟(步驟P7和P8)、關(guān)鍵字候選點(diǎn)計(jì)算步驟(步驟P9)、CHECK數(shù)組步驟(步驟P9)及關(guān)鍵字/前綴校對(duì)步驟(步驟P10、P11和P12)。這些步驟的每一個(gè)是使用微處理器通過(guò)編程實(shí)現(xiàn)的。
文檔輸入步驟(步驟P2和P3)首先對(duì)前綴指定線索結(jié)構(gòu)的根,同時(shí)在前綴W作為終結(jié)符號(hào)建立終結(jié)標(biāo)記#,并然后指令輸入作為要被計(jì)算的字符的漢字代碼b,并檢測(cè)輸入的漢字代碼b的前綴W,這是由文檔輸入單元210主要執(zhí)行的步驟。
第一BASE數(shù)組步驟(步驟P4)在BASE數(shù)組上從對(duì)應(yīng)于前綴W的索引201a或漢字內(nèi)部表示值的位置抽取數(shù)字102a,這是由第一BASE數(shù)組單元102主要執(zhí)行的步驟。
記錄值判斷步驟(步驟P5)判斷在第一BASE數(shù)組步驟(步驟P4)中產(chǎn)生的數(shù)值102a是頻繁出現(xiàn)的前綴字符代碼還是平行位移量。如果給定的數(shù)值102a在組成線索的索引范圍之外,則它輸出這一數(shù)值102a作為頻繁出現(xiàn)的字符代碼的序號(hào)202a,并如果在第一BASE數(shù)組步驟(步驟P4)中產(chǎn)生的數(shù)值102a在索引范圍之內(nèi),則它輸出數(shù)值102a作為平行位移量202b,這是由記錄值判斷單元202主要執(zhí)行的步驟。
如果在第一BASE數(shù)組步驟(步驟P4)抽取的數(shù)值102a是頻繁出現(xiàn)的字符代碼的序號(hào)202a,則代碼分類步驟(步驟P6)使用漢字代碼的幾個(gè)位對(duì)跟隨這一前導(dǎo)漢字的漢字代碼進(jìn)行分類,這是由代碼分類單元107主要執(zhí)行的步驟,以便對(duì)跟隨前綴中頻繁出現(xiàn)的漢字代碼的字符進(jìn)行分類。
第二BASE數(shù)組步驟(步驟P7)從第二BASE數(shù)組上對(duì)應(yīng)于在記錄值判斷步驟(步驟P5)中產(chǎn)生的頻繁出現(xiàn)的字符代碼的序號(hào)202a和漢字代碼b的代碼值的分類這兩者的一個(gè)位置,抽取一平行位移量105a,并在平行位移量存儲(chǔ)單元110存儲(chǔ)該平行位移量105a,這是由第二BASE數(shù)組單元105主要執(zhí)行的步驟。
平行位移量存儲(chǔ)步驟(步驟P8和P8)存儲(chǔ)在記錄值判斷步驟獲得的平行位移量202b或者在第二BASE數(shù)組步驟獲得的平行位移量105a,并作為平行位移量110a輸出平行位移量202b或平行位移量105a,這是由平行位移量存儲(chǔ)單元110主要執(zhí)行的步驟。
關(guān)鍵字候選點(diǎn)計(jì)算步驟(步驟P9),計(jì)算并輸出在CHECK數(shù)組上的平行位移量110a和跟隨字符b的內(nèi)部表示值之和,這是由關(guān)鍵字候選點(diǎn)計(jì)算單元111主要執(zhí)行的步驟。
CHECK數(shù)組步驟(步驟P9)在CHECK數(shù)組上對(duì)應(yīng)于在關(guān)鍵字候選點(diǎn)計(jì)算步驟中輸出的和111a的一位置抽取一數(shù)值作為關(guān)鍵字,并向關(guān)鍵字/前綴校對(duì)步驟輸入該數(shù)值,這是由CHECK數(shù)組單元112主要執(zhí)行的步驟。
關(guān)鍵字/校對(duì)步驟(步驟P10、P11和P12)判斷在CHECK數(shù)組步驟(步驟P9)產(chǎn)生的關(guān)鍵字是否與前綴字符內(nèi)部表示值的索引201a或者前綴W一致,并如果該關(guān)鍵字與前綴字符內(nèi)部表示值的索引201a或者前綴W一致,則判斷該成語(yǔ)記錄在詞典中,這是由關(guān)鍵字/前綴校對(duì)單元203主要執(zhí)行的步驟。
如上所述,在圖31所示的字符代碼記錄檢索方法的優(yōu)選實(shí)施例中,作為通過(guò)進(jìn)一步發(fā)展傳統(tǒng)的高速和低容量詞典數(shù)據(jù)結(jié)構(gòu)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)而獲得的一種新的數(shù)據(jù)結(jié)構(gòu),引入一種新的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)具有以下步驟從對(duì)應(yīng)于關(guān)鍵字候選點(diǎn)計(jì)算步驟(步驟P9)中輸出的和111a的一個(gè)位置抽取一關(guān)鍵字的CHECK數(shù)組步驟(步驟P9),從對(duì)應(yīng)于前綴W或漢字代碼的索引201a的一個(gè)位置輸出數(shù)值102a的第一BASE數(shù)組步驟(步驟P4),以及從對(duì)應(yīng)于在記錄值判斷步驟(步驟P5)中輸出的頻繁出現(xiàn)的字符代碼的序號(hào)202a及漢字代碼b代碼值的分類兩者的一個(gè)位置輸出平行位移量105a的第二BASE數(shù)組步驟(步驟P7),能夠產(chǎn)生存儲(chǔ)作為檢索目標(biāo)的預(yù)定準(zhǔn)靜態(tài)關(guān)鍵字集合體的詞典,并從而能夠把后來(lái)通過(guò)適當(dāng)添加和記錄關(guān)鍵字而被擴(kuò)展的線索數(shù)組結(jié)構(gòu)的存儲(chǔ)器容量抑制到可能的最低水平。結(jié)果是,能夠把關(guān)鍵字存儲(chǔ)在一種帶有最小存儲(chǔ)容量的數(shù)據(jù)結(jié)構(gòu)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)(即線索數(shù)組結(jié)構(gòu))中,且使用這一線索數(shù)組結(jié)構(gòu)作為檢索關(guān)鍵字能夠以高速進(jìn)行模式匹配。
除了圖29和31所示的字符代碼記錄檢索方法之外,當(dāng)跟隨字符串的前綴的特定字符是成語(yǔ)的一部分時(shí),如圖12所示,還能夠添加選擇其中跟隨漢字代碼的代碼值的寬度超過(guò)預(yù)定的閾值的字符的步驟。
這樣,不能由傳統(tǒng)方法占用的空位能夠被更多地占用,并能夠適當(dāng)?shù)匾种圃诘谝籅ASE數(shù)組步驟(步驟ST6和ST11)中產(chǎn)生的第一BASE數(shù)組以及在CHECK數(shù)組步驟(步驟ST12)中產(chǎn)生的CHECK數(shù)組的增加。此外,由于檢索時(shí)的過(guò)程數(shù)目只增加對(duì)應(yīng)于第二BASE數(shù)組步驟(步驟P7)的這一個(gè)過(guò)程,故過(guò)程數(shù)幾乎與傳統(tǒng)方法相同。
如上所述,本發(fā)明中,如果假設(shè)原始的BASE和CHECK數(shù)組的大小都是64KW,選擇的漢字代碼的大小為0.5KW,且分類數(shù)為三,第二BASE數(shù)組的大小成為1.5(=0.5×3)KW。這只是原始的BASE和CHECK數(shù)組大小的1/64。另一方面,由傳統(tǒng)方法使BASE和CHECK數(shù)組大小的增加是未知的。然而,很清楚的是不能由傳統(tǒng)方法占用的空位是能夠由本發(fā)明占用的,且BASE和CHECK數(shù)組的增加被適當(dāng)?shù)匾种?。此外,由于本發(fā)明中參照第二BASE數(shù)組,本發(fā)明的過(guò)程頻率只增加一并幾乎與傳統(tǒng)方法相同。
雖然以上所述的本實(shí)施例中,帶有兩個(gè)或更多字符的漢字成語(yǔ)是分類記錄的目標(biāo),同樣地,任意的字符串,包括平假名、片假名、字母數(shù)字字符等等都能夠被分類和記錄。此外,字符串的語(yǔ)言不限于日語(yǔ)和漢語(yǔ),而是任意語(yǔ)言,包括其它亞洲語(yǔ)言如朝鮮語(yǔ)等及西方語(yǔ)言,諸如英語(yǔ)、德語(yǔ)、法語(yǔ)等也能夠使用。能夠?qū)θ我庾址a和任意代碼使用。
順便來(lái)說(shuō),圖13和23所示的字符串檢索裝置,和圖28及30所示的字符代碼記錄檢索裝置也可以使用圖32所示的信息處理裝置(計(jì)算機(jī))配置。圖32所示的信息處理裝置包括中央處理器(CPU)301、存儲(chǔ)器302、輸入裝置303、輸出裝置304、外部存儲(chǔ)裝置305、介質(zhì)驅(qū)動(dòng)裝置306和網(wǎng)絡(luò)連接裝置307,它們通過(guò)總線308彼此連接。
例如存儲(chǔ)器302包括只讀存儲(chǔ)器(ROM)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)等,并存儲(chǔ)供處理使用的程序和數(shù)據(jù)。CPU301使用存儲(chǔ)器302運(yùn)行程序而執(zhí)行必要的過(guò)程。
例如輸入裝置303包括鍵盤(pán)、指點(diǎn)裝置、觸摸板等,并用來(lái)從用戶輸入指令和數(shù)據(jù)。例如輸出裝置304包括顯示器、打印機(jī)等。并用來(lái)向用戶輸出詢問(wèn)、過(guò)程結(jié)果等。
例如外部存儲(chǔ)裝置305包括磁盤(pán)、光盤(pán)、磁光盤(pán)等。該外部存儲(chǔ)裝置305存儲(chǔ)以上的程序和數(shù)據(jù),介質(zhì)驅(qū)動(dòng)裝置306驅(qū)動(dòng)便攜式存儲(chǔ)介質(zhì)309,并訪問(wèn)記錄的內(nèi)容。便攜式存儲(chǔ)介質(zhì)309包括任何計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì),諸如存儲(chǔ)卡、軟盤(pán)、小型盤(pán)只讀存儲(chǔ)器(CD-ROM)、光盤(pán)、磁光盤(pán)等。這種便攜式存儲(chǔ)介質(zhì)309存儲(chǔ)以上程序和數(shù)據(jù),必要時(shí)它們也可加載到存儲(chǔ)器302并使用。
網(wǎng)絡(luò)連接裝置307通過(guò)任意的網(wǎng)絡(luò)(線路)與外部設(shè)備通信,諸如局域網(wǎng)(LAN)等,并伴隨通信交換數(shù)據(jù)。這一網(wǎng)絡(luò)還能夠從外部設(shè)備接收以上的程序和數(shù)據(jù),必要時(shí)它們也可加載到存儲(chǔ)器302并使用。
圖33示出能夠向圖32所示的信息處理裝置提供程序和數(shù)據(jù)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。存儲(chǔ)在便攜式存儲(chǔ)介質(zhì)309和外部數(shù)據(jù)庫(kù)310中的程序和數(shù)據(jù)可加載到存儲(chǔ)器302中。然后,CPU301使用該數(shù)據(jù)通過(guò)運(yùn)行程序執(zhí)行必要的過(guò)程。
如果采用本發(fā)明,能夠使用線索詞典的空間區(qū)域有效地記錄諸如漢字成語(yǔ)等字符串,并能夠壓縮詞典的數(shù)據(jù)結(jié)構(gòu)?;趲в须p數(shù)組線索詞典也能夠在不損失檢索速度之下降低詞典的存儲(chǔ)量。
權(quán)利要求
1.一種用于從記錄串中檢索給定串的串檢索裝置,包括第一數(shù)組裝置,用于用以后跟多個(gè)字符的前綴的索引作為下標(biāo)記錄對(duì)應(yīng)于前綴的序號(hào)信息;第二數(shù)組裝置,用于以對(duì)應(yīng)于前綴的序號(hào)信息作為下標(biāo)記錄對(duì)應(yīng)于通過(guò)對(duì)跟隨前綴的多個(gè)字符分類而獲得的多個(gè)組的每一個(gè)的位移量;第三數(shù)組裝置,用于以位移量與跟隨前綴的字符的內(nèi)部表示值之和作為下標(biāo)記錄前綴的索引;檢索裝置,用于使用第一、第二和第三數(shù)組裝置檢索給定的串。
2.根據(jù)權(quán)利要求1的串檢索裝置,其中當(dāng)跟隨一個(gè)前綴的一個(gè)或多個(gè)字符不分類而被記錄時(shí),所述第一數(shù)組裝置,在等同于由一個(gè)或多個(gè)字符跟隨的前綴的索引的下標(biāo)位置,記錄一個(gè)或多個(gè)字符共同的位移量,所述第三數(shù)組裝置,在等同于一個(gè)或多個(gè)字符共同的位移量與一個(gè)字符的內(nèi)部表示值之和的下標(biāo)位置,記錄由一個(gè)或多個(gè)字符跟隨的前綴的索引,以及所述檢索裝置包括用于判定序號(hào)信息或位移量的哪一個(gè)是記錄在第一數(shù)組裝置中的值的識(shí)別裝置。
3.根據(jù)權(quán)利要求1的串檢索裝置,其中當(dāng)多個(gè)跟隨前綴的字符數(shù)目超過(guò)預(yù)定值時(shí),所述第一數(shù)組裝置記錄對(duì)應(yīng)于前綴的序號(hào)信息。
4.根據(jù)權(quán)利要求1的串檢索裝置,其中當(dāng)多個(gè)跟隨前綴的字符的值的范圍超過(guò)預(yù)定值時(shí),所述第一數(shù)組裝置記錄對(duì)應(yīng)于前綴的序號(hào)信息。
5.根據(jù)權(quán)利要求1的串檢索裝置,還包括前綴記錄裝置,用于以對(duì)應(yīng)于所述第二數(shù)組裝置的下標(biāo)的序號(hào)信息作為下標(biāo)記錄前綴。
6.根據(jù)權(quán)利要求1的串檢索裝置,還包括用于使位移量與跟隨前綴的字符內(nèi)部表示值相加的計(jì)算裝置,其中所述第三數(shù)組裝置使用位移量與跟隨前綴的字符內(nèi)部表示值之和作為下一個(gè)前綴的索引。
7.根據(jù)權(quán)利要求1的串檢索裝置,進(jìn)一步包括用于對(duì)跟隨前綴的多個(gè)字符進(jìn)行分類并計(jì)算多個(gè)組的分類裝置。
8.根據(jù)權(quán)利要求7的串檢索裝置,其中當(dāng)給定串包含前綴且下一個(gè)字符跟隨前綴輸入時(shí),所述分類裝置計(jì)算對(duì)應(yīng)于下一個(gè)字符的組,且所述檢索裝置使用記錄在所述第一數(shù)組裝置中的序號(hào)信息從所述第二數(shù)組抽取對(duì)應(yīng)于下一個(gè)字符的組的位移量,并校驗(yàn)前綴的索引是否記錄在所述第三數(shù)組裝置的位置中,在該位置中所抽取的位移量和下一個(gè)字符的內(nèi)部表示值之和被指定為下標(biāo)。
9.根據(jù)權(quán)利要求7的串檢索裝置,其中所述分類裝置使用包含在跟隨前綴多個(gè)字符的代碼中的一個(gè)或多個(gè)位對(duì)跟隨前綴的多個(gè)字符進(jìn)行分類。
10.根據(jù)權(quán)利要求7的串檢索裝置,其中所述分類裝置采用兩個(gè)或多個(gè)分類方法中的一個(gè)分類方法,該方法可使包含在獲得的每一組的字符中數(shù)碼的偏差為最小。
11.根據(jù)權(quán)利要求10的串檢索裝置,其中所述第一數(shù)組裝置記錄對(duì)應(yīng)于由所述分類裝置采用的分類方法的序號(hào)信息作為對(duì)應(yīng)于前綴的序號(hào)信息。
12.根據(jù)權(quán)利要求1的串檢索裝置,還包括用于計(jì)算位移量的計(jì)算裝置,以便對(duì)應(yīng)于多個(gè)組中的每一個(gè)記錄包含在所述第一和第三數(shù)組裝置中的多個(gè)組的每一組中的一個(gè)或多個(gè)字符。
13.根據(jù)權(quán)利要求12的串檢索裝置,其中所述計(jì)算裝置把任意加法值加到包含在每一組的一個(gè)或多個(gè)字符的值上,計(jì)算所有一個(gè)或多個(gè)獲得的和可能對(duì)應(yīng)于所述第三數(shù)組裝置中的空位的加法值,并從所獲得的加法值中計(jì)算出最小加法值作為位移量。
14.一種用于從記錄串中檢索給定的串的串檢索裝置,包括用于把跟隨前綴的多個(gè)字符分類并記錄為多個(gè)組的記錄裝置;以及用于使用所述檢索裝置檢索給定的串的檢索裝置。
15.一種記錄程序的計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì),該程序使所述計(jì)算機(jī)能夠從記錄串中檢索給定的串,所述程序包括以下步驟當(dāng)給定的串包含由多個(gè)字符跟隨的前綴且下一個(gè)字符是繼前綴之后輸入的時(shí),通過(guò)從對(duì)跟隨該前綴的多個(gè)字符分類所獲得的多個(gè)組計(jì)算出對(duì)應(yīng)于下一個(gè)字符的組;以所述前綴的索引作為下標(biāo),參照記錄對(duì)應(yīng)于前綴的序號(hào)信息的第一數(shù)組;以對(duì)應(yīng)于該前綴的序號(hào)信息作為下標(biāo),參照記錄對(duì)應(yīng)于所述多個(gè)組的每一個(gè)的位移量的第二數(shù)組,并獲得對(duì)應(yīng)于下一個(gè)字符的組的位移量;以及參照第三數(shù)組并校驗(yàn)前綴的索引是否記錄在所獲得的位移量與所述下一個(gè)字符的內(nèi)部表示值的和被指定為下標(biāo)的位置上。
16.一種記錄程序的計(jì)算機(jī)可讀介質(zhì),該程序使所述計(jì)算機(jī)能夠從記錄串中檢索給定串,所述程序包括參照一數(shù)組的過(guò)程,在數(shù)組中跟隨前綴的多個(gè)字符被分類為多個(gè)組并被記錄。
17.一種記錄記錄串的數(shù)據(jù)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述數(shù)據(jù)包括在等同于前綴的索引的下標(biāo)中,記錄對(duì)應(yīng)于由多個(gè)字符跟隨的前綴的序號(hào)信息的第一數(shù)組數(shù)據(jù);在等同于對(duì)應(yīng)于前綴的序號(hào)信息的下標(biāo)位置,記錄對(duì)應(yīng)于通過(guò)對(duì)跟隨前綴的多個(gè)字符分類獲得的多個(gè)組的每一個(gè)的位移量的第二數(shù)組數(shù)據(jù);以及在等同于位移量與跟隨前綴的字符的內(nèi)部表示值之和的下標(biāo)位置,記錄前綴索引的第三數(shù)組數(shù)據(jù)。
18.一種從記錄串中檢索給定串的串檢索方法,包括以下步驟在第一數(shù)組中等同于前綴的索引的下標(biāo)位置,記錄對(duì)應(yīng)于由多個(gè)的字符跟隨的前綴的序號(hào)信息;在第二數(shù)組中等同于對(duì)應(yīng)于前綴的序號(hào)信息的下標(biāo)位置,記錄對(duì)應(yīng)于通過(guò)對(duì)跟隨前綴的多個(gè)字符分類獲得的多個(gè)組的每一個(gè)的位移量;在第三數(shù)組中,以位移量和跟隨前綴的字符的內(nèi)部表示值之和作為下標(biāo),記錄前綴的索引;當(dāng)給定的串包含前綴且下一個(gè)字符繼前綴而被輸入時(shí),從多個(gè)組計(jì)算出對(duì)應(yīng)于下一個(gè)字符的組;以前綴的索引作為下標(biāo)參照所述第一數(shù)組,并獲得對(duì)應(yīng)于前綴的序號(hào)信息;以對(duì)應(yīng)于前綴的序號(hào)信息作為下標(biāo)參照所述第二數(shù)組,并獲得對(duì)應(yīng)于下一個(gè)字符的組的位移量;以及參照第三數(shù)組并校驗(yàn)前綴的索引是否被記錄在獲得的位移量與下一個(gè)字符的內(nèi)部表示值之和被指定為下標(biāo)的位置上。
19.一種從記錄串中檢索給定串的串檢索方法,包括以下步驟把跟隨前綴的多個(gè)字符分為多個(gè)組并在一個(gè)數(shù)組中記錄多個(gè)字符;以及參照所述數(shù)組并檢索給定的字符串。
20.一種字符代碼記錄檢索裝置,用于在作為數(shù)據(jù)結(jié)構(gòu)的一維數(shù)組的雙數(shù)組結(jié)構(gòu)中記錄使用關(guān)鍵字檢索的字符代碼字符串,包括平行位移量計(jì)算裝置,用于計(jì)算記錄使用關(guān)鍵字檢索的每一串字符所需的平行位移量;第一數(shù)組,以作為使用關(guān)鍵字被檢索的每一字符串的前綴的前綴的索引作為下標(biāo);用于在所述第一數(shù)組標(biāo)識(shí)記錄值的標(biāo)識(shí)裝置;記錄跟隨字符串前綴的特定字符信息的第二數(shù)組;關(guān)鍵字候選點(diǎn)計(jì)算裝置,用于計(jì)算記錄在所述第一和第二數(shù)組中的平行位移量與對(duì)應(yīng)于跟隨字符串的前綴的字符的內(nèi)部表示值之和;以及第三數(shù)組單元,以通過(guò)關(guān)鍵字候選點(diǎn)計(jì)算裝置獲得的和作為下標(biāo),記錄字符串的前綴的索引。
21.根據(jù)權(quán)利要求20的字符代碼記錄檢索裝置,包括列表裝置,用于產(chǎn)生頻繁用于成語(yǔ)的字符代碼列表并輸出從字符代碼列表選擇的選擇字符代碼;頻繁出現(xiàn)字符代碼選擇裝置,用于輸出關(guān)于字符代碼的頻率等級(jí)數(shù)應(yīng)當(dāng)選擇到何種等級(jí)數(shù)的頻率閾值;頻繁出現(xiàn)字符代碼存儲(chǔ)裝置,用于存儲(chǔ)從列表選擇的選擇字符代碼并輸出選擇字符代碼和選擇字符代碼的索引;作為記錄由字符代碼組成的成語(yǔ)的字符代碼詞典的詞典裝置,用于根據(jù)關(guān)注的字符是否為選擇字符代碼組成的成語(yǔ)的前綴對(duì)作業(yè)進(jìn)行分類,并輸出通過(guò)對(duì)跟隨頻繁出現(xiàn)的前綴的選擇字符代碼的字符代碼進(jìn)行分類所獲得的每一組;組存儲(chǔ)裝置,用于存儲(chǔ)通過(guò)對(duì)跟隨從所述詞典裝置輸入的前綴的選擇字符代碼的字符代碼進(jìn)行分類所獲得的各組;作為所述第一數(shù)組的第一BASE數(shù)組裝置,用于存儲(chǔ)選擇字符代碼的序號(hào)信息;代碼分類裝置,用于對(duì)使用第二字符代碼至少一位的成語(yǔ)的第二字符代碼進(jìn)行分類,以便對(duì)跟隨前綴的選擇字符代碼的字符進(jìn)行分類;平行位移量計(jì)算裝置,用于對(duì)每一組計(jì)算最小平行位移量,使通過(guò)向組的每一字符的內(nèi)部表示值添加一任意平行位移量所獲得的所有值可指示所述第三數(shù)組上一空位;平行位移量存儲(chǔ)裝置,用于存儲(chǔ)從所述平行位移量計(jì)算裝置輸入的平行位移量并把平行位移量輸出到所述第二數(shù)組裝置;關(guān)鍵字候選點(diǎn)計(jì)算裝置,用于在一下標(biāo)位置對(duì)所述每一組記錄作為組的字符代碼的字符父代的前綴索引,以平行位移量和組的每一字符的內(nèi)部表示值之和作為所述第三數(shù)組上的下標(biāo)位置值,并對(duì)由(前綴+關(guān)注的字符)組成的下一個(gè)前綴的索引指定該和的值;作為所述第二數(shù)組的第二BASE數(shù)組裝置,用于對(duì)由所述平行位移存儲(chǔ)裝置基于從所述代碼分類裝置輸出的代碼值和從所述列表裝置輸出的序號(hào)信息所輸出的每一組存儲(chǔ)平行位移量;以及作為第三數(shù)組裝置的CHECK數(shù)組裝置,用于在對(duì)應(yīng)于和的值的位置記錄前綴的索引。
22.根據(jù)權(quán)利要求20的字符代碼記錄檢索裝置,包括文檔輸入裝置,用于首先指定線索結(jié)構(gòu)的根作為前綴,在前綴中設(shè)置結(jié)束記號(hào)作為結(jié)束符號(hào),然后指示輸入字符代碼作為被檢索的字符,并檢測(cè)輸入的字符代碼的前綴;作為所述第一數(shù)組的第一BASE數(shù)組裝置,用于從對(duì)應(yīng)于前綴的索引的位置輸出一數(shù)值;記錄值判定裝置,用于判定頻繁出現(xiàn)的前綴字符代碼的序號(hào)信息或平行位移量的哪一個(gè)是從所述第一BASE數(shù)組裝置輸入的數(shù)值,并當(dāng)數(shù)值是在組成一個(gè)線索的索引范圍之外時(shí)輸出作為前綴字符代碼的序號(hào)信息的數(shù)值,當(dāng)數(shù)值在索引范圍之內(nèi)時(shí)輸出作為平行位移量的數(shù)值;代碼分類裝置,用于當(dāng)從所述第一BASE數(shù)組裝置輸入的數(shù)值是前綴字符代碼的序號(hào)信息時(shí),使用字符代碼的至少一位對(duì)輸入的字符代碼進(jìn)行分類;作為所述第二數(shù)組的第二BASE數(shù)組裝置,用于從對(duì)應(yīng)于從記錄值判定裝置輸入的前綴字符代碼的序號(hào)信息和字符代碼的分類兩者位置輸出平行位移量;平行位移量存儲(chǔ)裝置,當(dāng)從所述第一BASE數(shù)組裝置輸入的數(shù)值是平行位移量時(shí),用于存儲(chǔ)平行位移量;關(guān)鍵字候選點(diǎn)計(jì)算裝置,用于計(jì)算平行位移量和輸入字符的內(nèi)部表示值之和;作為所述第三數(shù)組的CHECK數(shù)組裝置,用于從對(duì)應(yīng)于從所述關(guān)鍵字候選點(diǎn)計(jì)算器裝置輸入的和的位置輸出關(guān)鍵字;以及關(guān)鍵字/前綴校對(duì)裝置,用于判定所述CHECK數(shù)組裝置輸入的關(guān)鍵字是否與前綴的索引一致,并當(dāng)判定關(guān)鍵字與前綴的索引一致時(shí),判定成語(yǔ)記錄在詞典中。
23.在作為一維數(shù)據(jù)結(jié)構(gòu)數(shù)組的雙數(shù)組結(jié)構(gòu)中記錄使用關(guān)鍵字被檢索的字符代碼字符串的字符代碼記錄檢索方法,該方法包括平行位移量計(jì)算步驟,計(jì)算記錄使用關(guān)鍵字被檢索的每一字符串的字符所需的平行位移量;第一數(shù)組步驟,指定使用關(guān)鍵字被檢索的每一字符串的前綴的索引作為下標(biāo);識(shí)別第一數(shù)組步驟中的記錄值的識(shí)別步驟;記錄有關(guān)跟隨第一數(shù)組步驟中指示的字符串前綴特定字符信息的第二數(shù)組步驟;關(guān)鍵字候選點(diǎn)檢索步驟,計(jì)算第一和第二數(shù)組步驟中所記錄的平行位移量與對(duì)應(yīng)于跟隨字符串前綴的字符的內(nèi)部表示值之和;以及第三數(shù)組步驟,以關(guān)鍵字候選點(diǎn)計(jì)算步驟中獲得的和為下標(biāo)記錄字符串前綴的索引。
24.根據(jù)權(quán)利要求23的字符代碼記錄檢索方法,其中所述識(shí)別步驟包括以下步驟判定位于成語(yǔ)開(kāi)頭的前導(dǎo)特定字符代碼的序號(hào)信息、或者另一前導(dǎo)字符代碼的平行位移量或者字符串的前綴哪一個(gè)在所述第一數(shù)組步驟記錄;以及當(dāng)判定出在所述第一數(shù)組步驟記錄的記錄內(nèi)容為前導(dǎo)特定字符代碼的序號(hào)信息時(shí),參照由所述第二數(shù)組步驟中的序號(hào)信息指定的數(shù)組位置計(jì)算平行位移量。
25.根據(jù)權(quán)利要求24的字符代碼記錄檢索方法,還包括步基于字符串的前導(dǎo)特定字符代碼的序號(hào)信息和跟隨前導(dǎo)特定字符代碼的字符代碼的分類參照所述第二數(shù)組的步驟。
26.根據(jù)權(quán)利要求25的字符代碼記錄檢索方法,還包括使用跟隨字符代碼的代碼值對(duì)跟隨前導(dǎo)特定字符代碼的字符代碼進(jìn)行分類的步驟。
27.根據(jù)權(quán)利要求23的字符代碼記錄檢索方法,其中所述第二數(shù)組步驟包括選擇頻繁用來(lái)形成成語(yǔ)的字符作為跟隨字符串前綴的特定字符的步驟。
28.根據(jù)權(quán)利要求23的字符代碼記錄檢索方法,其中所述第二數(shù)組步驟包括這樣的步驟,即當(dāng)跟隨字符串前綴的字符是成語(yǔ)的一部分時(shí),選擇其中代碼值的寬度超過(guò)預(yù)定閾值的字符作為跟隨字符串前綴的特定字符。
29.根據(jù)權(quán)利要求23的字符代碼記錄檢索方法,包括列表步驟,產(chǎn)生頻繁在成語(yǔ)中使用的字符代碼的列表并輸出從字符代碼列表中選擇的選擇字符代碼;頻繁出現(xiàn)的字符代碼選擇步驟,輸出關(guān)于應(yīng)當(dāng)選擇什么等級(jí)數(shù)的字符代碼的頻繁度閾值;頻繁出現(xiàn)的字符代碼存儲(chǔ)步驟,存儲(chǔ)在所述列表步驟選擇的頻繁出現(xiàn)的字符代碼,并輸出所選擇的字符代碼及選擇的字符代碼的索引;詞典步驟,使用記錄由字符代碼組成的成語(yǔ)的字符代碼詞典,根據(jù)關(guān)注的字符是否為由選擇的字符代碼組成的成語(yǔ)的前綴對(duì)作業(yè)進(jìn)行分類,并輸出通過(guò)對(duì)跟隨前綴的選擇的字符代碼的字符代碼的分類獲得的每一組;組存儲(chǔ)步驟,存儲(chǔ)對(duì)跟隨由所述詞典步驟產(chǎn)生的前綴的字符代碼的字符代碼的分類獲得的組;第一BASE數(shù)組步驟,作為第一數(shù)組步驟計(jì)算選擇的字符代碼的數(shù)目信息,并在第一BASE數(shù)組上選擇的字符代碼的索引的位置存儲(chǔ)該數(shù)目信息;代碼分類步驟,使用第二字符代碼的至少一個(gè)位對(duì)成語(yǔ)的第二字符代碼進(jìn)行分類,以便對(duì)跟隨前綴的選擇的字符代碼的字符進(jìn)行分類;平行位移量計(jì)算步驟,對(duì)每一組計(jì)算最小平行位移量,于是通過(guò)把任意平行位移量添加到組的每一字符的內(nèi)部表示值而獲得的所有值可以指示CHECK數(shù)組上的空位置;平行位移量存儲(chǔ)步驟,存儲(chǔ)在所述平行位移量計(jì)算步驟產(chǎn)生的平行位移量,并向第二BASE數(shù)組輸出該平行位移量;關(guān)鍵字候選點(diǎn)計(jì)算步驟,對(duì)每一所述組計(jì)算平行位移量與組的每一字符內(nèi)部表示值之和作為CHECK數(shù)組的下標(biāo),并指定這個(gè)和的值作為由((前綴)+(關(guān)注的字符))組成的下一個(gè)前綴的索引;作為所述第二數(shù)組步驟的第二BASE數(shù)組步驟,基于在所述代碼分類步驟產(chǎn)生的代碼值和在所述列表步驟產(chǎn)生的數(shù)目信息兩者,存儲(chǔ)在所述平行位移量存儲(chǔ)步驟輸出的每一組的平行位移量;以及作為所述第三數(shù)組步驟的CHECK數(shù)組步驟,在CHECK數(shù)組中對(duì)應(yīng)于所述和的一位置記錄作為組的每一字符代碼父輩的前綴的索引。
30.根據(jù)權(quán)利要求29的字符代碼記錄計(jì)算方法,包括當(dāng)跟隨字符串前綴的字符是成語(yǔ)的一部分時(shí),選擇其代碼值的寬度超過(guò)預(yù)定的閾值的字符作為跟隨字符串前綴特定的字符。
31.根據(jù)權(quán)利要求23的字符代碼記錄計(jì)算方法,包括文檔輸入步驟,首先對(duì)前綴指定線索結(jié)構(gòu)的根,同時(shí)在前綴作為終結(jié)符號(hào)建立終結(jié)標(biāo)記,然后指示輸入要被檢索的字符的字符代碼,并檢測(cè)輸入的字代碼的前綴;作為所述第一數(shù)組步驟的第一BASE數(shù)組步驟,從對(duì)應(yīng)于BASE數(shù)組的前綴的索引的一位置抽取數(shù)值;記錄值判斷步驟,判斷頻繁出現(xiàn)的前綴字符代碼的數(shù)目信息還是平行位移量是在所述第一BASE數(shù)組步驟中產(chǎn)生的數(shù)值,并當(dāng)該數(shù)值在組成線索的索引范圍之外時(shí),輸出前綴字符代碼的數(shù)目信息,并當(dāng)該數(shù)值在索引范圍之內(nèi),輸出該數(shù)值作為平行位移量;代碼分類步驟,當(dāng)從所述第一BASE數(shù)組步驟產(chǎn)生的數(shù)值是前綴代字符代碼的數(shù)目信息時(shí),使用該字符代碼的至少一位對(duì)輸入的字符代碼進(jìn)行分類;作為所述第二數(shù)組步驟的第二BASE數(shù)組步驟,從第二BASE數(shù)組對(duì)應(yīng)于在記錄值判斷步驟中產(chǎn)生的前綴字符代碼的數(shù)目信息和字符代碼的代碼的分類這兩者的一個(gè)位置,抽取一平行位移量;平行位移量存儲(chǔ)步驟,當(dāng)在所述第一BASE數(shù)組步產(chǎn)生的數(shù)值是平行位移量時(shí),存儲(chǔ)該平行位移量;關(guān)鍵字候選點(diǎn)計(jì)算步驟,計(jì)算平行位移量和輸入字符的內(nèi)部表示值之和;作為所述第三數(shù)組步驟的CHECK數(shù)組步驟,從CHECK數(shù)組對(duì)應(yīng)于在所述關(guān)鍵字候選點(diǎn)計(jì)算步驟中計(jì)算的和的一位置抽取一關(guān)鍵字;以及關(guān)鍵字/校對(duì)步驟,判斷在所述CHECK數(shù)組步驟產(chǎn)生的關(guān)鍵字是否與前綴索引一致,并當(dāng)輸入的關(guān)鍵字與前綴索引一致時(shí),判斷一成語(yǔ)記錄在詞典中。
32.根據(jù)權(quán)利要求31的字符代碼記錄計(jì)算方法,包括步驟當(dāng)跟隨字符串前綴的字符是成語(yǔ)的一部分時(shí),選擇其代碼值的寬度超過(guò)預(yù)定的閾值的字符作為跟隨字符串前綴特定的字符。
全文摘要
字符串檢索裝置把跟隨記錄字符串的前綴的多個(gè)字符分類為多個(gè)組,并對(duì)每一組使用不同的位移量在數(shù)組結(jié)構(gòu)中記錄跟隨字符的那些字符。該字符串檢索裝置基于對(duì)應(yīng)于輸入字符的組的位移量檢索給定的字符串。
文檔編號(hào)G06F17/30GK1239793SQ9910529
公開(kāi)日1999年12月29日 申請(qǐng)日期1999年4月30日 優(yōu)先權(quán)日1998年6月19日
發(fā)明者矢作裕紀(jì) 申請(qǐng)人:富士通株式會(huì)社