JP2683870B2 - 文字列検索システム及び方法 - Google Patents

文字列検索システム及び方法

Info

Publication number
JP2683870B2
JP2683870B2 JP6108186A JP10818694A JP2683870B2 JP 2683870 B2 JP2683870 B2 JP 2683870B2 JP 6108186 A JP6108186 A JP 6108186A JP 10818694 A JP10818694 A JP 10818694A JP 2683870 B2 JP2683870 B2 JP 2683870B2
Authority
JP
Japan
Prior art keywords
character
dictionary
trie
character string
search
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP6108186A
Other languages
English (en)
Other versions
JPH07319900A (ja
Inventor
伸泰 伊東
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM Japan Ltd
Original Assignee
IBM Japan Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IBM Japan Ltd filed Critical IBM Japan Ltd
Priority to JP6108186A priority Critical patent/JP2683870B2/ja
Priority to US08/395,731 priority patent/US5655129A/en
Publication of JPH07319900A publication Critical patent/JPH07319900A/ja
Application granted granted Critical
Publication of JP2683870B2 publication Critical patent/JP2683870B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、トライ(TRIE)と
呼ばれる木構造の辞書を検索する手法に関わり、特にあ
いまいさを含む文字列を入力とした同構造の辞書検索に
関する。
【0002】
【従来の技術】従来より、ある文字列に対して、それに
関する情報を辞書から検索するという作業はデータ処
理、特にテキスト処理、言い換えれば綴り訂正、かな漢
字変換、キーワード検索などで非常に多く行われる。そ
れだけに辞書のデータ構造および検索の手法はそれらの
処理における速度を決定するもっとも大きな要因とな
る。従って、高速な検索が実現でき、かつ空間的なコス
トが受け入れ可能な程度に低い構造・手法が望まれる。
【0003】このために提案された手法の中できわめて
よく用いられるデータ構造にトライと呼ばれるものがあ
る。これは木構造の1種で辞書引きに要する時間がほと
んど入力文字列長のみにしか依存せず、かつデータ圧縮
率も比較的よいことが知られている。この構造に関して
はKnuth D.E.著、" The Art ofC
omputer Programming,Vol.
3,SortingandSearching, Ch
apter 6,Addison−Wesley,19
73" に開示されている。
【0004】図1にカナ姓名を例としたトライ構造辞書
の概略を示す。先頭が'マ'である姓名(仮にマツシタ、
マツキ、マツダ、マスダ、およびマツシマという5個の
姓名からなるとしている)に相当する部分を示した例が
図1(A)である。
【0005】先頭からみた左部分列が一致する単語は1
つにまとめられ、1文字が1ノードに対応する木構造で
表現される。1つの部分列に後続し得る文字集合は親ノ
ード(当該左部分列の末尾文字に対応するノード)から
子リンクにより結ばれ、文字集合の各要素は兄弟リンク
により結ばれる。この図の例ではまずルートノード10
の子リンクを介して単語の先頭となり得る文字集合が兄
弟リンクで結ばれ、リストを構成している。次に先頭文
字「マ」に後続し得る文字集合(ここでは「ス」および
「ツ」)に対応して「マ」の子リンク10の先にノード
13、14が兄弟リンク12を介して存在する。これは
言い換えれば左部分列「マ」をもつ単語の先頭2文字が
ノード11を親、13、14を子とする木構造にまとめ
られていることになる。ノード14の子リンク15の先
には左部分列「マツ」に後続し得る文字集合である
「キ」「シ」「ダ」の3文字に対応するノードが存在し
兄弟リンク16および17により結ばれている。このよ
うにトライとは単語集合を文字に対応したノードとその
間を結合する子・兄弟リンクにより表現したものであ
る。
【0006】検索は最初に入力文字列の先頭文字を取り
出し、辞書のルートノードから子リンクで結ばれている
文字集合に一致するものを探索する作業から始まる。つ
まり兄弟リンクを順にたどりながら入力文字と辞書のノ
ード(に対応する文字)との比較を行い、一致すればそ
のノードの子リンクをたどって次の入力文字と後続文字
文字集合との比較に移る。一致しない場合はさらに兄弟
リンクをたどって一致する文字を探索するということに
なる。非常に大きなトライでは兄弟リンクが長くなり、
その探索に時間を要することがあるが、その場合は先頭
何文字かによるハッシュと併用することが多い。また1
つの先頭文字またはハッシュ値に対応する単語集合(部
分木)を連続した領域に格納すればトライが外部記憶に
存在してもランダムアクセスの回数は比較的少なく高速
性を大きく損なうことはない。したがって兄弟リンクが
極端に長くならない限り、単語長が明らかでない場合で
も、すべての長さの単語を高速に検索できる。
【0007】尚、以下では、検索文字列を、場合によっ
て文字候補ラティスと称することにする。その意味は、
例えば、[マアラカク]ツ[シミ][ア-コ]というような正
規表現を例にとることによって説明される。すなわち、
[マアラカク]ツ[シミ][ア-コ]というような正規表現に
おいて、個別且つ順次的に一致する文字をあらわす[マ
アラカク]、ツ、[シミ]、[ア-コ]の各々はカラムと呼ば
れるが、明らかに個々のカラムは、単一の文字のみなら
ず、複数の文字を指定し得る。そこで、カラムにおいて
一致し得る文字を縦方向に延ばし、カラムの並びを横方
向に延ばすと、2次元的な広がりが得られる。これが、
ラティス(格子)と呼ばれる理由である。
【0008】ところで、上記の説明は確定した文字列の
検索についてであったが、上記で定義した文字候補ラテ
ィスを用いて、1つのカラムに複数文字の可能性がある
か不明、言い換えれば任意の文字にマッチするワイルド
カード文字であるなど、入力文字列にあいまい性がある
場合を考えてみる。文字認識の結果やユーザーが綴りを
正確に覚えておらずあいまい検索をしたい場合など実際
のアプリケーションではこのような入力に対する検索要
求は非常に多い。これらは一般に正規表現で表す事がで
きる。例えば1文字目が「マ」か「ヤ」で二文字目が不
明、その後に「シタ」が続く正規表現は「[マヤ]?シ
タ」となる。トライで表現された辞書検索でこのような
入力を受付けるには ・複数の可能性がある場合にはそのそれぞれについて、
兄弟リンクをたどり、存在した場合子リンクをたどって
次カラムの文字比較を並列して行う。 ・すべての文字にマッチするワイルドカードの場合は当
該文字集合のすべてについて子リンクをたどり次カラム
の文字比較を行う。 という作業を行うことになる。
【0009】いま仮にあるカラム iで入力文字にn[i]個
の可能性があり、辞書でカラム iに対応するネストにお
いて1ノードあたりN[i]個の文字が存在するとすると、
カラムiでの作業量T[i]は
【数1】T[i] = F[i-1] × n[i] × E(N[i]) (入力文字が'?'ではない場合) = F[i-1] × E(N[i]).........(1) (入力文字が'?'の場合) に比例した値となる。
【0010】ただしF[i-1]はi-1カラムからiカラムに移
動するときの分岐数つまりたどった子リンクの数、E(x)
はxの期待値である。さらにiカラムにおける分岐数F[i]
は文字比較を行った中でどの程度一致してその先に進む
かという数なので厳密には各文字のカラム別頻度に依存
する。仮にその頻度がほぼ一定であるとすると直前の分
岐数(F[i-1])と入力文字列において当該カラムに相当す
る文字数(n[i])、それに辞書中現ノードに接続する文字
数の期待値を全文字カテゴリー数(Nc)で割ったもの
(一致率)の積に比例すると考えられるので次のように
表現できる。
【数2】 F[i] = n[i]/Nc × E(N[i]) × F[i-1].........(2)
ただし F[0] = 1
【0011】これらの式から明らかなように作業量T[i]
は分岐数の順次的な積、F[0]×F[1]×・・・×F[i-1]に
比例し、従って、トータルな作業量はこの分岐数F[i]を
いかに削減できるかに依存する。尚、式(2)において、n
[i]は、検索文字列ラティスのみに依存する値であり、
一方、E(N[i])は、トライ構造のみに依存し、検索文字
列ラティスとは独立な値であることに留意されたい。
【0012】
【発明が解決しようとする課題】上記考察から明らかな
ように、トライ構造の辞書を検索しようとすると、入力
文字列の接頭部でワイルドカードであったり、多くの可
能性がある場合分岐数(F[i])が大きく、そのすべてを探
索しなければならないため結果として極めて大きな作業
量となる。つまり「マツシ?」から「マツシタ」、「マ
ツシマ」を検索することは比較的高速に行えるが、逆に
「?[ツマ]シタ」から「マツシタ」、「ヤマシタ」とい
った単語を検索するには極めてコストがかかってしま
う。これはハッシュ方式を併用しても(その計算式がそ
の接頭部に依存している限り)まったく同じであり、や
はりすべての可能性(ハッシュ値)に対応する部分木の
すべてを探索しなければならない。
【0013】従って、この発明の目的は、入力文字列の
接頭部にワイルドカードまたは多くの候補文字を有する
ような検索文字列に対しても高速の検索を可能ならしめ
るトライ構造の辞書、及びその検索方法を提供すること
にある。
【0014】
【課題を解決するための手段】上記問題点を解決する単
純な手段は、ワイルドカード(「?」)も1つのシンボ
ルとして、元の表記を「?」に置き換えた文字列を単語
としてあらかじめ登録しておくことである。たとえば
「マツシタ」という単語に対して「?ツシタ」や「マ?
シタ」という文字列も登録し、その単語に対応するトラ
イの先に単語属性と同時にワイルドカードが代表してい
る文字集合をリストで保持しておけば、当該入力の検索
を十分高速に行うことが可能となる。ところがこの方式
では1つの単語についてあらゆる入力の可能性を考えた
派生パターンをあらかじめ登録しておかねばならず、空
間的コストが無視できない。実際、長さ L文字の単語か
ら任意個の文字をワイルドカードに置き換えた派生パタ
ーンは、
【数3】 (C[L,r]はL個からr個とる組み合わせの数)個となり、 L
が十分小さい単語のみからなる辞書でない限り許容でき
ない。またこの手法では接頭部がワイルドカードではな
く、きわめて多くの可能性がある入力(例「[マアイウ
エ...]ツシタ」)に対してなんら改善にならない。
【0015】式(2)からわかるように、分岐数F[i]は
辞書における各ノードの分岐、つまり兄弟リンクで結ば
れた後続文字の期待値E(i)に依存するがこの値は<通常
の辞書の場合最初大きく、階層数すなわちiが大きくな
るにつれ極めて早い速度で減少する。たとえば片仮名表
記した約29000語からなる日本人の姓辞書をトライ
構造で作成したところ、表1のような結果が得られた。
【表1】
【0016】従って、トライ構造の辞書では入力の分岐
数n[i]と辞書側の分岐数 E(N[i])がともに大きくならな
いような構造と検索手法を考える必要がある。
【0017】本発明は、上記の点に鑑みなされたもので
あり、単語文字列(長さL)の先頭から、M個の文字を
取り出した部分列を用いてその末尾をルートノードとす
る逆方向トライを作成しておき、入力文字が少数に確定
している部分列から接頭部を確定し、あらためて本来の
トライを探索することにより、必要な空間的コスト(辞
書サイズ)と探索コスト(検索時間)のバランスをとる
ことを意図するものである。
【0018】
【実施例】本発明の実施例を、図1乃至図4を用いて説
明する。図3は本発明の候補文字ラティス辞書検索装置
の全体的な機能構成とデータの流れを示したものであ
る。
【0019】さて、まず入力である候補文字ラティス
は、例えばPS/55(IBMの商標)であるパーソナ
ル・コンピュータに接続されたキーボード(図示しな
い)、磁気ディスク装置などの入力装置307から入力
された後、コンピュータの主記憶上に在駐する制御プロ
グラムである入力手段301の制御によって、例えばコ
ンピュータの主記憶上にある制御ルーチンである候補文
字ラティス記憶手段302により、コンピュータの主記
憶上の所定の領域に、候補文字ラティス308として記
憶される。候補文字ラティス記憶手段302はこの後、
必要に応じて候補文字ラティス308を参照に供する
か、または転送する。図3に示されているように、入力
手段301は、必要に応じて、磁気ディスクなどの持久
的記憶手段(図示しない)に接続された入力装置307
を介して、磁気ディスク中に記憶されているファイルの
特定の内容を、候補文字ラティス記憶308に格納す
る、という制御も行う。やはりコンピュータの主記憶上
にある制御ルーチンである検索作業量推定手段303
は、候補文字ラティスとトライ辞書作成時に得られ、磁
気ディスクなどの持久的記憶手段(図示しない)などに
保持されている平均分岐数のデータ309から辞書検索
の作業量が小さくなることが期待できる検索開始位置を
算出する。
【0020】この検索作業量推定手段303と平均分岐
数の概念が本発明の骨子をなすものであり、後に詳しく
説明する。コンピュータの主記憶上にある制御ルーチン
であるトライ辞書選択手段304が、算出された開始位
置に対応したトライ辞書を選択すると、コンピュータの
主記憶上にある制御ルーチンであるトライ辞書検索手段
305により当該トライ辞書310乃至311が検索さ
れ、その検索結果312が、主記憶の所定の領域または
磁気ディスクなどの持久的記憶手段(図示しない)に書
き込まれる。やはりコンピュータの主記憶上にある制御
ルーチンである検索結果出力手段306は、その検索結
果312を、コンピュータに接続されたCRT装置など
の出力装置313に送り、ユーザーに対し表示すること
になる。
【0021】ここで「?ツシタ」という入力を考えてみ
る。前記表1によれば、この入力では1文字目で44の
分岐がありそのすべてについて2文字目の探索、つまり
子リンクをたどって文字比較を行う必要がある。しかし
逆方向に「タシツ?」と検索を行えば分岐は大きく減少
することが期待できる。これはもっとも極端な例ではあ
るが、トライ構造の辞書を高速に検索するためには入力
側の文字数と辞書側における分岐数期待値の積(E(N
[i])× n[i])が小さくなるような順序を選べばよいこ
とは明らかである。任意の順序とはいってもそのすべて
に対応したトライ構造辞書を作成すると辞書サイズが大
きくなり過ぎるので図1(B)に示すように単語の先頭
M文字を取り出した部分列の末尾から逆方向のトライを
作成することにする。
【0022】[順方向トライ辞書の作成]図2を参照し
て、トライ構造作成の過程を説明する。いま図1(A)
に示すトライ構造が作成されていたとして、そこに辞書
に存在しない「マスモト」という単語を追加登録するこ
とを考える。まずルートノードの子リンク20につなが
る先頭文字集合21の兄弟リンクを順にたどって追加す
べき単語の先頭文字である「マ」を探索する。「マ」は
ノード22で見つかるのでその子リンク23をたどっ
て、次の文字である「ス」を探索する。つまり単語を追
加する過程は追加すべき単語の先頭部分列に一致する各
ノードが存在する限りは辞書を検索する過程と同一であ
る。この場合2文字目の「ス」もノード24に存在し、
その子リンクをたどって次の文字集合と3文字目の
「モ」を比較することになる。ところが「ス」の子リン
ク25につながる文字集合には「ダ」しか存在せず探索
が失敗する。辞書検索ならば該当する単語が存在しない
ことがわかった時点で終了することになるが単語追加の
場合は検索が失敗した文字集合に兄弟リンク26を追加
し、その先に存在しなかった文字「モ」に対応するノー
ド27を作成する。そして同ノードから子リンク28を
延ばし後続文字「ト」に対応するノード29を作成する
ことになる。もし単語の文字がさらに続いているなら
ば、それが終了するまで1文字づつ取り出し、子リンク
の延長とノード作成を繰り返せばよい。
【0023】同構造辞書は与えられた単語集合のそれぞ
れについてこのような追加登録を繰り返すことによって
得られる。つまり最初の段階ではルートノードのみが存
在する辞書に単語を登録し、得られたトライ構造辞書に
次の単語を追加するという作業を単語の数だけ繰り返す
のである。トライ構造は登録されるたびにノードを増や
すことによって、すべての登録単語に対応できることに
なる。このようにして作成され、また必要に応じて単語
の追加が行われる順方向トライ辞書310は、コンピュ
ータに接続された、磁気ディスク記憶装置(DASD)
(図示しない)または光磁気ディスク装置(図示しな
い)などの読み書き可能な記憶媒体に、持久的且つ書き
換え可能に記憶され、図3に示すように、実際の検索時
に、トライ辞書選択手段304によってアクセスされ
る。
【0024】[逆方向トライ辞書の作成]逆方向トライ
辞書の作成過程は、順方向トライ辞書の作成過程と原理
的には同一であるが、逆方向トライ辞書の作成ではまず
各単語について、すべての左部分列の逆順文字列を得る
必要がある。「マツシタ」という単語ならば左部分列、
およびその逆順の文字列として、以下の表2が得られ
る。
【表2】 --------------------------------- 長さ 左部分列 逆順文字列 --------------------------------- 2 マツ ツマ 3 マツシ シツマ 4 マツシタ タシツマ ---------------------------------
【0025】すべての単語についてこのような逆順部分
文字列を作成し、同一長のものから逆方向トライ辞書を
作成する。図1(B)では(A)で示した部分木(単語
集合)に対応する3文字逆方向トライ辞書のみを示して
いるが、実際には「タケシタ」から取り出した3文字逆
順部分列「シケタ」などすべての姓単語から取り出した
当該長さの逆順部分文字列から構成されている。このよ
うに本来のトライ辞書に加え上述の逆方向トライ辞書を
1,...,M文字左部分列それぞれについて作成し、各トラ
イ辞書の平均分岐数−順方向(E(N[i]): iは先頭文字か
ら数えたカラム数)と逆方向(E(Nb[j]): jは逆順文字
列の先頭、つまり左部分列の末尾から数えたカラム数)
−を、磁気ディスク、光磁気ディスクなどの持久記録媒
体に、平均分岐数データ309(図3)として記録す
る。検索実行時にはこの値が全体としての作業量を推定
するデータとなる。正確にはE(Nb[j])はもとになった先
頭部分列により異なると考えられるが、簡単のためには
それらの平均をとればよい。
【0026】平均分岐数について説明を補足すると、ル
ート・ノードから例えば100本の枝が延びていたとす
ると、階層1での平均分岐数は、100/1=100で
ある。階層2での平均分岐数を求めるためには、100
本の枝の各々において、何本の分岐が生じているかを調
べ、それらの分岐数を全て総和し、その総和値を100
で割る、という処理が行われる。このようにして、トラ
イ構造が許す任意の階層まで、平均分岐数を計算するこ
とが可能である。尚、このとき、平均分岐数は、構成し
たトライ構造のみによって確定される値であることに留
意されたい。
【0027】このようにして作成され、また必要に応じ
て単語の追加が行われる逆方向トライ辞書311は、コ
ンピュータに接続された、磁気ディスク記憶装置(DA
SD)(図示しない)または光磁気ディスク装置(図示
しない)などの読み書き可能な記憶媒体に、持久的且つ
書き換え可能に記憶され、図3に示すように、実際の検
索時に、トライ辞書選択手段304によって選択的にア
クセスされる。このとき、逆方向トライ辞書311は、
順方向トライ辞書310とは異なり複数存在し、その各
々は、検索される文字のM文字目(M=1,2・・・)
の部分列毎に個別に作成され、追加されることに留意さ
れたい。
【0028】[検索]本節では前節のように作成された
辞書の検索について述べる。検索の第一段階は予想され
る分岐F[i]が小さい部分を探すことである。単語長がま
ったく不定の場合は後に説明するが、最初 M文字以上と
仮定すると、 (a)式(2)により i=1,...,Mのそれぞれについて分
岐の推定値F[i]を求め、順方向トライを通常の方式で検
索した場合の作業量w[1]を次の式で推定する。
【数4】
【0029】(b)k=2,...,Mについて、まずkカラム目
から逆方向トライ辞書を探索して接頭部を絞りこみ、接
頭部をそれらで置き換えた後、順方向トライの検索を行
う場合の作業量(w[k])を次の式で推定する。
【数5】
【0030】ただし、Fb[i]は式(2)のN[i]をNb[i]で
置き換えた式により計算する。またF[k]を計算する場合
のF[k-1]は Fb[1]を用いる。さらに置き換えた接頭部に
関する分岐は、逆方向トライ辞書をたどった結果絞りこ
まれたものなので少なくともFb[1]よりは小さい。そこ
で上限として当該分岐を Fb[1]で評価している。さら
に、式(3)が引用する式(2)において、E(N[i])及
びE(Nb[i])として、それぞれ、順方向トライ構造及び逆
方向トライ構造が構成された時点で計算されディスクに
記録されている平均分岐数のデータ309(図3)が使
用されることに留意されたい。さらに述べるなら、E(N
[i])及びE(Nb[i])は、それぞれ、i番目の階層の平均分
岐数である。
【0031】(c)w[i] (i=1,...,M)の中で最小のもの
を求め、そのときの iをimとする。
【0032】(d)カラムimより逆方向トライを探索
し、その後必要ならば順方向トライを探索して辞書検索
を行う。
【0033】つまり、最初に第iカラム目から始めた場
合の作業量を、各時点に於ける分岐数の和により評価
し、それが最小となるカラムから探索を始めるのが本発
明の技法のキーポイントである。例をあげると [マアラ
カク]ツ[シミ][ア-コ]という文字ラティスの場合、候補
数は前から5,1,2,10であり、式(3)にしたが
ってw[i](i=1,...,4)を計算すると順に8.5,7.
8,5.0,22.2となりw[i]はi=3で最小値をと
る。したがって3文字目から逆方向トライを検索し、そ
の結果確定した部分列のそれぞれについて順方向(つま
り通常の)トライ検索を実施することになる。マ?[シ
ミ][タラ]の場合は2文字目がワイルドカード「?」の
ため候補数は、清音のみの片仮名と仮定すると50とな
り、同様に計算すると38.8, 110.0, 76.
8, 22.8で末尾文字から逆方向トライを検索すれば
最大の効率が期待できる。逆方向トライが検索される
と、入力の左im個をとった部分ラティスのうち、検索成
功の可能性がある候補のみからなるものが得られる。言
い換えれば接頭部を検査するだけで、もはや辞書に存在
しないと判明したものが排除されることになる。そして
残った部分ラティスについて、改めて順方向トライを検
索しその結果を得る。もちろんim=1の場合は最初から順
方向トライが検索されるので、重複して順方向トライ辞
書を検索する必要がないことは言うまでもない。以上の
過程をフロー・チャートで示したのが図4である。
【0034】すなわち、図4のステップ401で、本発
明に係る文字検索処理に入り、ステップ402では、ユ
ーザーのキーボード操作などによって、ワイルドカー
ド、正規表現を含み得る検索文字列が入力される。
【0035】ステップ403では、制御用の変数imに1
が格納され、別の変数minwには、kを1以上の任意、整
数として、通常、w[k]がとり得ると考えられる値よりも
十分に大きい任意の値(図4では、Largeとして示され
ている)が格納される。
【0036】ステップ410は、本発明における最も重
要な処理を担うものであり、ステップ410において、
入来検索文字列の個別のカラム(例えば、[マアラカク]
ツ[シミ][ア-コ]のような検索文字列の場合、[マアラカ
ク]、ツ、[シミ]、及び[ア-コ]が個別のカラムである)
について、処理ステップ411、412及び413が実
行される。
【0037】すなわち、最初にk=1について、ステッ
プ411で、第1カラムにおける順方向トライ辞書の平
均分岐数、及び第1カラムにおける候補文字ラティスの
候補数に基づき、上記式(3)に基づき、作業量w[1]が
計算される。
【0038】次に、ステップ412では、このようにし
て計算されたw[1]と、ステップ403で定義されたminw
が比較され、定義により、minwは十分大きく選ばれてい
るので、k=1に対しては、ステップ412での判断は
必ず肯定的になり、従って、ステップ413で、minwに
はw[1]が格納されるとともに、imに1が格納される。
【0039】次に、k=2についても同様の処理が行わ
れるが、minwには既にw[1]が格納されているので、w[2]
< w[1] であるときのみ、ステップ413が実行され
る。このようにして、k=1...Mについて処理が完
了したとき、imには、最小のw[k]をもつkの値が格納さ
れていることになる。
【0040】そこで、ステップ420では、ステップ4
10で求められたimに対応する順方向トライ辞書310
または逆方向トライ辞書311が、トライ辞書選択手段
304(図3)により選択され、ステップ421ではim
の値に応じて選択された逆トライ辞書が検索されて、そ
の結果、検索が成功した長さimの文字列(集合)がSに
格納される。
【0041】ステップ422では、imが1かどうかが判
断される。imが1である、ということは、順方向トライ
辞書310が選択されて通常のトライ辞書検索が行われ
たことを意味するので、ステップ424で直ちに検索結
果を表示し、ステップ425で終了する。
【0042】ステップ422での判断が否定的であっ
て、すなわち、imが2以上なら、そのimの長さに対応す
る逆方向トライ辞書311が選択されているので、まだ
文字列は部分的にしか検索されておらず、従って、検索
ステップ423でSとしてリストされた長さimの各文字
列毎に、第1カラム目から順方向トライ辞書310の検
索が行われる。
【0043】こうしてステップ423で順方向トライ辞
書310が検索されて、検索が完了すると、ステップ4
24で検索結果が表示され、ステップ425で処理が完
了される。
【0044】尚、ここでわれわれは(単語長≦ M)と仮定
しており、カラムimから検索した場合、単語長がimより
小さい単語は明らかに検索から漏れてしまう。したがっ
て長さが Mよりも短い単語は Mを順次小さい値にして、
同様の操作を繰り返すかまたは通常の方式で検索する必
要があることに留意されたい。
【0045】
【発明の効果】最初に検索時間について、評価してみよ
う。通常の方式で1カラム目から検索した場合の作業量
Torgは式(1)、(2)より
【数6】 となる(f[0]=1でLは平均単語長)。
【0046】たとえば入力「?XXX」(Xはワイルド
カードではない文字を表す)に対するこの式の値を、表
1の分岐数と文字カテゴリー数(ここでは清音カナで5
0)から計算すると表3のようになる。
【表3】 入力「?XXX」(例:「?ツシタ」)に対する 作業量 ------------------------------------------------ 分岐f[i-1] 作業量T[i] 分岐f[i] ------------------------------------------------ i=1 1 1 × 44 44 i=2 44 44 × 31.5 0.63 × 44 i=3 27.72 27.72 × 7.9 27.72 × 0.158 i=4 4.38 4.38 × 1.6 ------------------------------------------------ 計 約1577
【0047】一方本手法でカラム kから検索を開始した
場合の作業量TimprovedはL以上の長さをもつ単語の検索
時間(逆方向トライと必要な場合は順方向トライをたど
る作業量)と Lより短い単語を先頭、または末尾から順
次検索する作業量の和であり、簡単のためE(N[i]) = E
(Nb[i])とすれば
【数7】
【0048】となる。ただし F'[i]は逆方向トライによ
り絞りこまれた後の分岐数、min(x,y)は x,yのより小さ
い方の値を示す。入力「?XXX」について表2と同様
の条件でについて計算すると、この場合は明らかにすべ
て最後尾から検索することがもっとも有利であり、 26
9.4が得られる。この場合は1577/269.4 = 5.85となり約
6倍の高速化となることがわかる。一般にE(N[i])の値が
iの増加に対してより急激に減少するほど本手法の効果
が大きくなるので、漢字辞書等においてはより大きい効
果が期待できる。
【0049】次に本手法で必要とする空間的空間的コス
トを評価する。本手法では本来の辞書である順方向トラ
イに加え、n=2,...,Mのそれぞれに対して逆方向トライ
をもつ必要がある。トライに必要な空間的コストは平均
分岐数E(N[i])を用いて、
【数8】 で推定できるので、逆方向トライ辞書に必要な容量は
【数9】 となる。M=4としたときこの値は約29900となり、本来の
トライに必要な17520と比較して((29900+17520)/17520=
)約2.7倍であり、十分受け入れ可能なコストである。
【0050】尚、実施例では逆方向トライ辞書をもっと
も標準的なデータ構造である2分木、言い換えれば子リ
ンクと兄弟リンクにより構成したが、ダブル配列など等
価な情報をもつ別のデータ構造を用いて実現してもよ
い。ダブル配列については青江: ダブル配列による高速
ディジタル検索アルゴリズム,電子通信学会論文誌,J
71−D, 9,pp.1592−1600(198
7)に記載がある。
【0051】また、上記数式(3)は、定数項に関して任
意性があり、例えば数式(3)においてFb[1]の項を省い
ても構わない。
【図面の簡単な説明】
【図1】 順方向と逆方向のトライ構造辞書を説明する
図である。
【図2】 トライ構造辞書を作成する過程を説明する図
である。
【図3】 本発明の候補ラティス文字列辞書検索システ
ムの機能構成を示す図である。
【図4】 候補ラティス文字列に対するトライ辞書検索
のアルゴリズムを示すフロー・チャートの図である。

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】コンピュータの処理に基づきトライ構造辞
    書を検索する方法であって、(a) 複数の文字列から順方
    向トライ構造辞書を構成し、コンピュータによってアク
    セス可能に格納する段階と、(b) 上記トライ構造辞書を
    構成する複数の文字列の部分文字列につき、該部分文字
    列の最後の文字から始まり該部分文字列の最初の文字で
    終わる逆方向トライ構造辞書を、部分文字列の長さ毎に
    個別に構成する段階と、(c) 候補文字ラティスを入力す
    る段階と、(d) 上記候補文字ラティスがM個のカラムか
    らなるとしたとき、k=1・・Mについて、第kカラム
    から逆方向トライ構造の検索を行った場合の作業量を計
    算することによって、最小の作業量を示すカラム数kを
    決定する段階と、(e) 上記段階(d)でカラム数kが決定
    されたことに応答して、上記候補文字ラティスのカラム
    kまでの部分列を以て、上記段階(b)で作成された長さ
    kの逆方向トライ辞書を検索し、その検索結果を保存す
    る段階と、(f) 上記段階(e)の検索結果に基づき、上記
    順方向トライ構造辞書を検索し、検索結果を表示または
    格納する段階を有する、 文字列検索方法。
  2. 【請求項2】上記段階(a)で構成された順方向トライ辞
    書に基づき各々の階層における平均分岐数を予め計算
    し、その結果を、コンピュータによってアクセス可能に
    格納する段階を有し、上記段階(d)では、各カラムにお
    ける分岐数及び該平均分岐数の積の和の値に基づき作業
    量を計算することを特徴とする請求項1に記載の文字列
    検索方法。
  3. 【請求項3】上記候補文字ラティスは、固定文字長の正
    規表現によってあらわされている、請求項1に記載の文
    字列検索方法。
  4. 【請求項4】コンピュータの処理に基づき検索されるト
    ライ構造辞書を構成する方法であって、(a) 複数の文字
    列から順方向トライ構造辞書を構成し、コンピュータに
    よってアクセス可能に格納する段階と、(b) 上記構成さ
    れた順方向トライ構造辞書の各階層毎に平均分岐数を計
    算してその値を、コンピュータによってアクセス可能に
    格納する段階と、(d) 上記トライ構造辞書を構成する複
    数の文字列の部分文字列につき、該部分文字列の最後の
    文字から始まり該部分文字列の最初の文字で終わる逆方
    向トライ構造辞書を、部分文字列の長さ毎に構成する段
    階と、(e) 上記構成された逆方向トライ構造辞書の各階
    層毎に平均分岐数を計算してその値を、コンピュータに
    よってアクセス可能に格納する段階を有する、 トライ辞書の構成方法。
  5. 【請求項5】コンピュータの処理に基づきトライ構造辞
    書を検索するシステムであって、(a) 複数の文字列から
    構成され、コンピュータによってアクセス可能に格納さ
    れた順方向トライ構造辞書と、(b) 上記トライ構造辞書
    を構成する複数の文字列の部分文字列につき、該部分文
    字列の最後の文字から始まり該部分文字列の最初の文字
    で終わるように、該部分文字列の長さ毎に個別に構成さ
    れた逆方向トライ構造辞書と、(c) 候補文字ラティスを
    入力する手段と、(d) 上記候補文字ラティスがM個のカ
    ラムからなるとしたとき、k=1・・Mについて、第k
    カラムから逆方向トライ構造の検索を行った場合の作業
    量を計算することによって、最小の作業量を示すカラム
    数kを決定する手段と、(e) 上記最小の作業量を示すカ
    ラム数kが決定されたことに応答して、上記候補文字ラ
    ティスのカラムkまでの部分列を以て、長さkの上記逆
    方向トライ辞書を検索し、その検索結果を保存する手段
    と、(f) 上記保存された検索結果に基づき、上記順方向
    トライ構造辞書を検索し、検索結果を表示または記憶手
    段に格納する手段を有する、 文字列検索システム。
  6. 【請求項6】上記順方向トライ辞書の構成に応じて、上
    記順方向トライ辞書の各々の階層における平均分岐数を
    計算し、その結果を、コンピュータによってアクセス可
    能に格納する手段をさらに有し、上記最小の作業量を示
    すカラム数kを決定する手段は、各カラムにおける分岐
    数及び各カラムに対応して予め計算された該平均分岐数
    の積の和の値に基づき作業量を計算することを特徴とす
    る請求項5に記載の文字列検索システム。
  7. 【請求項7】上記候補文字ラティスは、固定文字長の正
    規表現によってあらわされている、請求項5に記載の文
    字列検索システム。
JP6108186A 1994-05-23 1994-05-23 文字列検索システム及び方法 Expired - Lifetime JP2683870B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP6108186A JP2683870B2 (ja) 1994-05-23 1994-05-23 文字列検索システム及び方法
US08/395,731 US5655129A (en) 1994-05-23 1995-02-28 Character-string retrieval system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6108186A JP2683870B2 (ja) 1994-05-23 1994-05-23 文字列検索システム及び方法

Publications (2)

Publication Number Publication Date
JPH07319900A JPH07319900A (ja) 1995-12-08
JP2683870B2 true JP2683870B2 (ja) 1997-12-03

Family

ID=14478189

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6108186A Expired - Lifetime JP2683870B2 (ja) 1994-05-23 1994-05-23 文字列検索システム及び方法

Country Status (2)

Country Link
US (1) US5655129A (ja)
JP (1) JP2683870B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989228A (zh) * 2021-04-25 2021-06-18 湖南视觉伟业智能科技有限公司 分布式时空查询方法及系统

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0804769B1 (en) * 1994-06-30 2000-02-02 International Business Machines Corporation Variable length data sequence matching method and apparatus
JP3152871B2 (ja) * 1995-11-10 2001-04-03 富士通株式会社 ラティスをキーとした検索を行う辞書検索装置および方法
KR980004154A (ko) * 1996-06-29 1998-03-30 김광호 접두어를 이용한 전자 사전 및 그에 접합한 압축 및 검색 방법
US6035326A (en) * 1997-05-07 2000-03-07 International Business Machines Corporation Mapping table lookup optimization system
JP3143079B2 (ja) * 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
US6061679A (en) * 1997-11-25 2000-05-09 International Business Machines Corporation Creating and searching a data structure ordered by ranges of key masks associated with the data structure
US6507678B2 (en) * 1998-06-19 2003-01-14 Fujitsu Limited Apparatus and method for retrieving character string based on classification of character
US6671856B1 (en) * 1999-09-01 2003-12-30 International Business Machines Corporation Method, system, and program for determining boundaries in a string using a dictionary
GB2367917A (en) * 2000-10-12 2002-04-17 Qas Systems Ltd Retrieving data representing a postal address from a database of postal addresses using a trie structure
GB2406681B (en) * 2000-11-30 2005-05-18 Coppereye Ltd Database
FR2836573A1 (fr) * 2002-02-27 2003-08-29 France Telecom Representation informatique d'une structure de donnees arborescente et methodes de codage/decodage associees
US20030187843A1 (en) * 2002-04-02 2003-10-02 Seward Robert Y. Method and system for searching for a list of values matching a user defined search expression
US20030236793A1 (en) * 2002-06-19 2003-12-25 Ericsson Inc. Compressed prefix tree structure and method for traversing a compressed prefix tree
US8175889B1 (en) 2005-04-06 2012-05-08 Experian Information Solutions, Inc. Systems and methods for tracking changes of address based on service disconnect/connect data
US7908242B1 (en) 2005-04-11 2011-03-15 Experian Information Solutions, Inc. Systems and methods for optimizing database queries
US7860844B2 (en) 2005-07-15 2010-12-28 Indxit Systems Inc. System and methods for data indexing and processing
US7769804B2 (en) * 2006-01-17 2010-08-03 Microsoft Corporation Server side search with multi-word word wheeling and wildcard expansion
US20070164782A1 (en) * 2006-01-17 2007-07-19 Microsoft Corporation Multi-word word wheeling
US7702688B2 (en) * 2006-06-22 2010-04-20 Sony Ericsson Mobile Communications Ab Predictive data search
GB2443005A (en) * 2006-07-19 2008-04-23 Chronicle Solutions Analysing network traffic by decoding a wide variety of protocols (or object types) of each packet
US8005759B2 (en) 2006-08-17 2011-08-23 Experian Information Solutions, Inc. System and method for providing a score for a used vehicle
US9552349B2 (en) * 2006-08-31 2017-01-24 International Business Machines Corporation Methods and apparatus for performing spelling corrections using one or more variant hash tables
US7912865B2 (en) 2006-09-26 2011-03-22 Experian Marketing Solutions, Inc. System and method for linking multiple entities in a business database
US8036979B1 (en) 2006-10-05 2011-10-11 Experian Information Solutions, Inc. System and method for generating a finance attribute from tradeline data
US20080140519A1 (en) * 2006-12-08 2008-06-12 Microsoft Corporation Advertising based on simplified input expansion
US8606666B1 (en) 2007-01-31 2013-12-10 Experian Information Solutions, Inc. System and method for providing an aggregation tool
US8285656B1 (en) 2007-03-30 2012-10-09 Consumerinfo.Com, Inc. Systems and methods for data verification
US7742982B2 (en) 2007-04-12 2010-06-22 Experian Marketing Solutions, Inc. Systems and methods for determining thin-file records and determining thin-file risk levels
WO2008147918A2 (en) 2007-05-25 2008-12-04 Experian Information Solutions, Inc. System and method for automated detection of never-pay data sets
JP2009070226A (ja) * 2007-09-14 2009-04-02 Ricoh Co Ltd マッチング装置
US8301574B2 (en) 2007-09-17 2012-10-30 Experian Marketing Solutions, Inc. Multimedia engagement study
US9690820B1 (en) 2007-09-27 2017-06-27 Experian Information Solutions, Inc. Database system for triggering event notifications based on updates to database records
US8131758B2 (en) * 2007-12-26 2012-03-06 Novell, Inc. Techniques for recognizing multiple patterns within a string
US8015129B2 (en) * 2008-04-14 2011-09-06 Microsoft Corporation Parsimonious multi-resolution value-item lists
US8312033B1 (en) 2008-06-26 2012-11-13 Experian Marketing Solutions, Inc. Systems and methods for providing an integrated identifier
DE102008040169A1 (de) * 2008-07-04 2010-01-07 Robert Bosch Gmbh Verfahren und Vorrichtung zum Überprüfen, ob eine Datenbasis eine Zeichenkette enthält, die eine vorgegebene Teilzeichenkette enthält
US7991689B1 (en) 2008-07-23 2011-08-02 Experian Information Solutions, Inc. Systems and methods for detecting bust out fraud using credit data
WO2010026804A1 (ja) * 2008-09-05 2010-03-11 日本電信電話株式会社 近似照合装置、近似照合方法、プログラム及び記録媒体
US8280723B1 (en) * 2009-01-29 2012-10-02 Intuit Inc. Technique for comparing a string to large sets of strings
US20100332292A1 (en) 2009-06-30 2010-12-30 Experian Information Solutions, Inc. System and method for evaluating vehicle purchase loyalty
US8364518B1 (en) 2009-07-08 2013-01-29 Experian Ltd. Systems and methods for forecasting household economics
US8725613B1 (en) 2010-04-27 2014-05-13 Experian Information Solutions, Inc. Systems and methods for early account score and notification
JP5416659B2 (ja) * 2010-06-11 2014-02-12 日本電信電話株式会社 情報格納検索装置、情報格納方法、および情報格納プログラム
US9152727B1 (en) 2010-08-23 2015-10-06 Experian Marketing Solutions, Inc. Systems and methods for processing consumer information for targeted marketing applications
US8639616B1 (en) 2010-10-01 2014-01-28 Experian Information Solutions, Inc. Business to contact linkage system
US9147042B1 (en) 2010-11-22 2015-09-29 Experian Information Solutions, Inc. Systems and methods for data verification
US8712989B2 (en) 2010-12-03 2014-04-29 Microsoft Corporation Wild card auto completion
JP5522017B2 (ja) * 2010-12-14 2014-06-18 キヤノンマーケティングジャパン株式会社 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム
US9002859B1 (en) * 2010-12-17 2015-04-07 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
WO2012097009A2 (en) 2011-01-10 2012-07-19 Ward Roy W Systems and methods for high-speed searching and filtering of large datasets
US9483606B1 (en) 2011-07-08 2016-11-01 Consumerinfo.Com, Inc. Lifescore
EP2732422A4 (en) 2011-07-12 2014-12-24 Experian Inf Solutions Inc SYSTEMS AND METHOD FOR A LARGE-RANGE CREDIT DATA PROCESSING ARCHITECTURE
US9171054B1 (en) 2012-01-04 2015-10-27 Moonshadow Mobile, Inc. Systems and methods for high-speed searching and filtering of large datasets
US9853959B1 (en) 2012-05-07 2017-12-26 Consumerinfo.Com, Inc. Storage and maintenance of personal data
EP2864856A4 (en) 2012-06-25 2015-10-14 Microsoft Technology Licensing Llc SEIZURE METHOD EDITOR APPLICATION PLATFORM
US9697263B1 (en) 2013-03-04 2017-07-04 Experian Information Solutions, Inc. Consumer data request fulfillment system
EP2871816B1 (en) 2013-11-11 2016-03-09 51 Degrees Mobile Experts Limited Identifying properties of a communication device
US10102536B1 (en) 2013-11-15 2018-10-16 Experian Information Solutions, Inc. Micro-geographic aggregation system
US9529851B1 (en) 2013-12-02 2016-12-27 Experian Information Solutions, Inc. Server architecture for electronic data quality processing
US10262362B1 (en) 2014-02-14 2019-04-16 Experian Information Solutions, Inc. Automatic generation of code for attributes
US9576030B1 (en) 2014-05-07 2017-02-21 Consumerinfo.Com, Inc. Keeping up with the joneses
US10242019B1 (en) 2014-12-19 2019-03-26 Experian Information Solutions, Inc. User behavior segmentation using latent topic detection
JP6509719B2 (ja) * 2015-12-21 2019-05-08 Kddi株式会社 構造データ生成装置、検索装置、構造データ生成方法及び構造データ生成プログラム
US10521411B2 (en) 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
WO2018039377A1 (en) 2016-08-24 2018-03-01 Experian Information Solutions, Inc. Disambiguation and authentication of device users
CA3050139A1 (en) 2017-01-31 2018-08-09 Experian Information Solutions, Inc. Massive scale heterogeneous data ingestion and user resolution
EP3438848B1 (en) 2017-07-31 2019-05-15 51 Degrees Mobile Experts Limited Identifying properties of a communication device
US10572586B2 (en) * 2018-02-27 2020-02-25 International Business Machines Corporation Technique for automatically splitting words
US10963434B1 (en) 2018-09-07 2021-03-30 Experian Information Solutions, Inc. Data architecture for supporting multiple search models
US11941065B1 (en) 2019-09-13 2024-03-26 Experian Information Solutions, Inc. Single identifier platform for storing entity data
CN112732796B (zh) * 2021-01-23 2023-01-24 河北省科学院应用数学研究所 一种模糊查询匹配方法
US11880377B1 (en) 2021-03-26 2024-01-23 Experian Information Solutions, Inc. Systems and methods for entity resolution
CN113609352B (zh) * 2021-08-03 2023-08-04 北京恒安嘉新安全技术有限公司 字符串检索方法、装置、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03185561A (ja) * 1989-12-15 1991-08-13 Ricoh Co Ltd 欧文単語入力方法
FR2660085A1 (fr) * 1990-03-20 1991-09-27 Philips Electronique Lab Dispositif de traitement de donnees et procede pour selectionner des mots de donnees contenus dans un dictionnaire.
US5349645A (en) * 1991-12-31 1994-09-20 Matsushita Electric Industrial Co., Ltd. Word hypothesizer for continuous speech decoding using stressed-vowel centered bidirectional tree searches
US5357431A (en) * 1992-01-27 1994-10-18 Fujitsu Limited Character string retrieval system using index and unit for making the index

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989228A (zh) * 2021-04-25 2021-06-18 湖南视觉伟业智能科技有限公司 分布式时空查询方法及系统

Also Published As

Publication number Publication date
US5655129A (en) 1997-08-05
JPH07319900A (ja) 1995-12-08

Similar Documents

Publication Publication Date Title
JP2683870B2 (ja) 文字列検索システム及び方法
US6470347B1 (en) Method, system, program, and data structure for a dense array storing character strings
JP3849279B2 (ja) インデクス作成方法および検索方法
US8095526B2 (en) Efficient retrieval of variable-length character string data
JP3672242B2 (ja) パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体
US5768423A (en) Trie structure based method and apparatus for indexing and searching handwritten databases with dynamic search sequencing
US5649023A (en) Method and apparatus for indexing a plurality of handwritten objects
JP2790466B2 (ja) 文字列検索方法及び装置
US20120268297A1 (en) Computer product, information processing apparatus, and information search apparatus
WO2008032780A1 (fr) Procédé de recherche, procédé de calcul de similarité, calcul de similarité, système d'appariement de mêmes documents et programme de ceux-ci
JP3258063B2 (ja) データベース検索システム及び方法
JP3852757B2 (ja) 文字列照合方法、これを用いた文書処理装置及びプログラム
JP2519129B2 (ja) マルチキ―ワ―ド情報検索処理方式および検索ファイル作成装置
JP3166629B2 (ja) 辞書作成装置と語切り出し装置
JP2682448B2 (ja) 索引検索方式
CN115801020B (zh) 确定有限状态自动机压缩方法、匹配方法、设备及介质
JP3259781B2 (ja) データベース検索システムおよびデータベース検索方法
JP2005234800A (ja) 用例機械翻訳装置及び用例翻訳コンピュータプログラム、並びに用例検索装置及び用例検索コンピュータプログラム
JP2001134594A (ja) 類似特徴量の検索方法,その検索装置およびその検索プログラム記録媒体
JPH10177582A (ja) 最長一致検索方法及び装置
JP2000259638A (ja) 記号列処理装置
KR101080898B1 (ko) 문자열 색인 방법 및 장치
Zaidov Binary search algorithm of e-education based on modern technologies
JP2578777B2 (ja) 多階層型デ−タベ−スのセットオカランス格納順序決定装置
JP3241854B2 (ja) 単語スペル自動補正装置