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