(57)【特許請求の範囲】
【請求項１】
１文字以上の文字からなる第１の文字列と第２の文字列の類似度が定義された複数の類似文字列重みルールの中から、入力された検索文字列に前記第１の文字列が含まれる前記類似文字列重みルールを抽出する重みルール抽出部と、
前記重みルール抽出部において抽出された前記類似文字列重みルールを用いて、前記検索文字列と前記検索文字列を検索する辞書から取得された見出し文字列との重み付き編集距離を計算する編集距離計算部と、
を備えたことを特徴とする文字列検索装置。
【請求項２】
前記重みルール抽出部において抽出された前記類似文字列重みルールを記憶する適用ルール記憶部を備えたことを特徴とする請求項１に記載の文字列検索装置。
【請求項３】
前記適用ルール記憶部は、
前記検索文字列の各文字位置について、当該文字位置を末尾とする前記検索文字列の一部分の文字列と前記第１の文字列が一致する前記抽出された類似文字列重みルールを、当該文字位置に対応する前記抽出された類似文字列重みルールとして記憶することを特徴とする請求項２に記載の文字列検索装置。
【請求項４】
前記編集距離計算部において前記重み付き編集距離の計算が行われた前記見出し文字列を計算された前記重み付き編集距離が近い順に整列する距離順整列部を備えたことを特徴とする請求項１から請求項３のいずれか一項に記載の文字列検索装置。
【請求項５】
前記編集距離計算部は、
前記重み付き編集距離の計算において、算出される前記重み付き編集距離が予め定められた距離上限値以上になることを判断すると、前記重み付き編集距離の計算を中断し、前記判断をした時点の前記重み付き編集距離の計算値を計算結果とすることを特徴とする請求項１に記載の文字列検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力された検索文字列に類似の文字列を検索結果として得ることが可能な文字列検索装置に関するものである。
【背景技術】
【０００２】
例えば使用者が通称や略称あるいは誤って記憶した名称で住所や施設名を検索する場合や、使用者の操作ミスで入力された検索文字列に誤りが含まれる場合、またカーナビやスマートフォンなどでの音声入力による検索で入力された音声信号の認識誤りにより検索文字列に誤りが含まれる場合などでは、入力された検索文字列とは一致しないものの、検索文字列に類似する文字列を検索結果として得る類似文字列検索が必要になる。【０００３】
類似文字列検索では、検索文字列と検索結果として得る文字列との類似度を評価する必要がある。文字列間の類似を評価する尺度として重み付き編集距離が用いられている。例えば特許文献１には、候補例文をランク付けして絞り込みをするために重み付き編集距離を用いる方法が開示されている。
また、非特許文献１にはある文字列を別の文字列に変換する置換ルールに重み付けをする技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−６２８９３号公報（図３）
【非特許文献】
【０００５】
【非特許文献１】岡崎  直観，辻井  潤一，”名詞句における用語バリエーションの自動認識”，第22回人工知能学会全国大会予稿集，1H1-2，2008
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載されているように重み付き編集距離を類似度の評価尺度として、誤りを含む検索文字列と類似する正しい文字列を辞書から検索するとき、誤りを含む検索文字列と正しい文字列との重み付き編集距離を計算することが必要である。
非特許文献１に記載されているような２つの文字列間の類似度を類似文字列重みルール（置換ルール）に定義して、この類似度に基づいて重み付き編集距離を計算する場合、誤り等のパターンは大量に存在するため大量の類似文字列重みルールが必要になる。重み付き編集距離の計算処理では、計算処理中の文字列に対して適用するか否かを、これらの大量の類似文字列重みルールについて判定しなければならない。このため、重み付き編集距離の計算処理における類似文字列重みルールの適用可否判定の処理量が非常に大きいという課題があった。【０００７】
この発明は上記のような問題点を解決するためになされたものであり、文字列検索装置が行う類似文字列検索の際の、重み付き編集距離の計算処理量を削減することを目的とする。
【課題を解決するための手段】
【０００８】
この発明の文字列検索装置は、１文字以上の文字からなる第１の文字列と第２の文字列の類似度が定義された複数の類似文字列重みルールの中から、入力された検索文字列に第１の文字列が含まれる類似文字列重みルールを抽出する重みルール抽出部と、重みルール抽出部において抽出された類似文字列重みルールを用いて、検索文字列と検索文字列を検索する辞書から取得された見出し文字列との重み付き編集距離を計算する編集距離計算部と、を備えたるようにしたものである。
【発明の効果】
【０００９】
この発明によれば、上述のように入力された検索文字列ついて、その検索文字列に適用される可能性のある類似文字列重みルールを抽出し、類似文字列検索の際の重み付き編集距離の計算においては、この抽出した類似文字列重みルールを参照して適用可否を判断するようにしたので、適用可否判断をする回数を削減することができ、重み付き編集距離の計算処理量を削減することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１の文字列検索装置の構成図である。
【図２】実施の形態１の文字列検索装置のルール記憶部に記憶された類似文字列重みルールの例を示すテーブルである。
【図３】辞書に記憶された辞書データの例を示すテーブルである。
【図４】実施の形態１の文字列検索装置の処理フローである。
【図５】適用ルール記憶部に記憶された抽出された類似文字列重みルールの例を示すテーブルである。
【図６】実施の形態１の文字列検索装置の重み付き編集距離計算処理の処理フローである。
【図７】実施の形態１の文字列検索装置の類似文字列重みルール適用時の編集距離計算の処理フローである。
【図８】実施の形態１の文字列検索装置における重み付き編集距離計算の例を説明する説明図である。
【図９】実施の形態２の文字列検索装置の構成図である。
【図１０】実施の形態２の文字列検索装置の重み付き編集距離計算処理の処理フローである。
【図１１】実施の形態２の打ち切り判定処理の処理フローである。
【発明を実施するための形態】
【００１１】
以下この発明の実施の形態を、図を参照して説明する。なお、参照する図において同一もしくは相当する部分には同一の符号を付している。
【００１２】
実施の形態１．
図１はこの発明の実施の形態１に係る文字列検索装置の構成図である。この発明の実施の形態１の文字列検索装置は、重みルール抽出部１０１、ルール記憶部１０２、適用ルール記憶部１０３、編集距離計算部１０４、辞書１０５、距離順整列部１０６とから構成される。重みルール抽出部１０１は、使用者により入力された入力文字列１１０をもとに、ルール記憶部１０２から入力文字列１１０に関係する類似文字列重みルールを抽出して適用ルール記憶部１０３に記憶する。
【００１３】
ここで、入力文字列１１０は検索文字列であり、キーボードやタッチパネル等の入力デバイスを用いて入力されたり、音声入力デバイスで入力された音声信号から音声認識機構（図示せず）によって認識されたりした文字列である。なお、この発明は検索文字列の入力方法を限定するものではなく、その他の種々の方法で入力された文字列であって良い。
また、類似文字列重みルールは、２つの文字列（第１の文字列と第２の文字列）の類似度を定義した規則であり、検索文字列と他の文字列の重み付き編集距離を計算する際に用いられる。
【００１４】
編集距離計算部１０４は、辞書１０５を参照し、入力文字列１１０と辞書１０５に記憶された各見出し文字列との重み付き編集距離を、適用ルール記憶部１０３に記憶された類似文字列重みルールを用いて計算する。距離順整列部１０６は、編集距離計算部１０４が計算した重み付き編集距離の小さい順に辞書１０５の各見出し文字列を類似文字列リスト１１１として出力する。なお、類似文字列リスト１１１は使用者に対してディスプレイ（図示せず）等に提示されるなどの処理で使用される。
【００１５】
重みルール抽出部１０１、編集距離計算部１０４および距離順整列部１０６は、ASIC（Application Specific Integrated Circuit）等のハードウェアで構成したり、プロセッサを用いた専用ハードウェアとそのプロセッサにおいて実行されるソフトウェアで実現したり、汎用のコンピュータ上で動作するソフトウェアで実現したり、あるいはこれらの実現方法を組み合わせて実現したりすることが可能である。
また、ルール記憶部１０２、適用ルール記憶部１０３、辞書１０５は、RAM（Random Access Memory）などの揮発性の記憶媒体や、HDD（Hard Disc Drive）などの不揮発性の記憶媒体を用いて構成すればよい。あるいは、通信回線を経由して遠隔で読み書きされるように構成しても良いし、着脱可能なデバイスを用いるようにしても良い。
【００１６】
図２はルール記憶部１０２に記憶された類似文字列重みルールの例を示すテーブルである。ルール番号２０１は各類似文字列重みルールを識別するために一意に付与された番号である。第１の文字列である左辺文字列２０２と第２の文字列である右辺文字列２０３は、各類似文字列重みルールで類似度を定義する文字列の組み合わせであり、類似度スコア２０４は左辺文字列２０２と右辺文字列２０３との類似度を示している。ここでは、類似度スコア２０４が小さいほど類似度が大きいことを示すこととする。
【００１７】
図２の例には、発音が類似しており綴り誤りが多く発生する“ＰＨ”と“Ｆ”（ルール番号２０１＝２）や、“Ｃ”と“Ｋ”（ルール番号２０１＝２０）などの組み合わせが含まれている。また、キーボード等での同一文字の連続入力の入力漏れなどの誤りに対応するための“Ａ”と“ＡＡ”（ルール番号２０１＝５２）のような組み合わせも含まれている。
これらの類似文字列重みルールは事前に手作業で定義するようにしても良いし、誤入力の例などを多数収集し、機械学習などの統計的な手法を用いて構成されるようにしても良い。
【００１８】
また、図３は辞書１０５に記憶された辞書データの例を示すテーブルである。辞書１０５には見出し文字列とその見出し文字列の属性情報が記録されている。ここで属性情報とは見出し文字列の種別（品詞）や内容などの情報である。
【００１９】
次にこの発明の実施の形態１の文字列検索装置の動作を説明する。図４は実施の形態１の文字列検索装置の処理フローである。文字列検索装置に入力文字列１１０が入力されると、まず重みルール抽出部１０１がルール抽出処理を行う（ST201）。ST201の処理では、重みルール抽出部１０１が、入力された入力文字列１１０に基づいて、ルール記憶部１０２に記憶された複数の類似文字列重みルールの中から、この入力文字列１１０に対して適用される可能性のある類似文字列重みルールを抽出する。
【００２０】
ここで適用される可能性のある類似文字列重みルールとは、左辺文字列２０２が入力文字列１１０に含まれる類似文字列重みルールである。ここでは、入力文字列１１０の先頭から末尾までの各文字位置について、先頭の文字から当該文字位置までの部分文字列を参照し、これら部分文字列の末尾の文字（例えば３文字目までの部分文字列であれば３文字目）を含む一部と類似文字列重みルールの左辺文字列２０２が一致するものを選択するようにする。このようにして抽出することで、抽出した類似文字列重みルールを対応する文字位置毎に分類をすることができる。抽出した類似文字列重みルールは適用ルール記憶部１０３に記憶される。
【００２１】
図５は適用ルール記憶部１０３に記憶された類似文字列重みルールの例を示すテーブルである。適用ルール記憶部１０３では、類似文字列重みルールは入力文字列１１０の対応する文字位置ごとに分類して記憶される。
図５の適用ルール記憶部１０３に記憶された類似文字列重みルールの例は、入力文字列１１０が”ＣＨＡ”の３文字であった場合で、図２に例示したルール記憶部１０２に記憶された類似文字列重みルールから抽出された類似文字列重みルールを示している。
【００２２】
図５において、入力文字位置２０５は、入力文字列１１０（”ＣＨＡ”）の何番目の文字に対応するルールであるかを示し、各文字位置の文字に対応するルールが分類されている。
上述の通り、重みルール抽出部１０１は入力文字列１１０の先頭から末尾までの各文字位置について、先頭の文字から当該文字位置までの部分文字列を参照し、これら部分文字列の末尾の文字を含む一部と類似文字列重みルールの左辺文字列２０２が一致するものを抽出する。
【００２３】
つまり入力文字列１１０が”ＣＨＡ”である場合、文字位置が１の文字（すなわち”Ｃ”）について、左辺文字列２０２が”Ｃ”の１文字のみで定義されたルールが抽出される。同様に、文字位置が２の文字（すなわち”Ｈ”）について、左辺文字列２０２が”Ｈ”の１文字もしくは”ＣＨ”の２文字で定義されたルールが抽出される。文字位置が３の文字（すなわち”Ａ”）について、左辺文字列２０２が”Ａ”の１文字もしくは”ＨＡ”の２文字もしくは”ＣＨＡ”の３文字で定義されたルールが抽出される。
この結果として、図５では各文字位置対応に抽出された類似文字列重みルールが分類されている。
【００２４】
また、ルール数２０６は、それぞれの入力文字位置２０５に対応するルールの数を示す。図５の例は、１文字目（”Ｃ”）に対応するルールが１０個、２文字目（”Ｈ”）に対応するルールが６個、３文字目（”Ａ”）に対応するルールが９個、ルール記憶部１０２から抽出された場合を示している。
なお、入力文字列１１０の文字数が５文字であれば図５の表において入力文字位置が４と５の行が追加されることになる。
【００２５】
以降の処理フローの説明を分かり易くするために、適用ルール記憶部１０３に記憶された類似文字列重みルールは、配列Rule[i][k]（1≦i≦入力文字列１１０の文字数、1≦k≦i番目の文字のルール数２０６）にルール番号２０１の順に格納され、編集距離計算部１０４がこの配列Ruleを参照できるようになっているものとする。またi番目の文字のルール数２０６が配列ＮＲ[i]に格納され、同様に編集距離計算部１０４がこれを参照できるようになっているものとする。
例えば図５に示した例の場合で２文字目の”Ｈ”に関しては、ルール番号２０１＝４１のルールがRule[2][1]に、ルール番号２０１＝４２のルールがRule[2][2]にというように配列に格納され、また、ルール数２０６＝６がＮＲ[2]に記憶される。
【００２６】
次に、編集距離計算部１０４が重み付き編集距離計算を行う（ST202）。ST202の処理では、編集距離計算部１０４が辞書１０５から見出し文字列を順次読み込み、各見出し文字列と入力文字列１１０との重み付き編集距離を計算する。重み付き編集距離計算の処理内容については後述する。
【００２７】
次に、距離順整列部１０６がST202で辞書１０５から読み出されて重み付き編集距離を計算された各見出し文字列について、重み付き編集距離の小さい順（近い）に整列し、類似文字列リスト１１１として出力する。出力された類似文字列リスト１１１は、使用者に対してディスプレイ（図示せず）等に提示されるなどの処理に使用される。
【００２８】
次に、編集距離計算部１０４が辞書１０５から読み出した各見出し文字列に対して行うST202の重み付き編集距離計算の処理内容について説明する。ここでは編集距離計算にDP（Dynamic Programming）手法を用いることとする。なお、この発明は編集距離計算手法をDP手法に限るものではなく、他の手法を用いても良い。図６はST202の重み付き編集距離計算処理の処理フローである。
【００２９】
入力文字列１１０である元の文字列（Str1とする）から各見出し文字列である目標の文字列（Str2とする）への編集距離を求める。まず、DP手法による編集距離計算に用いるテーブルの初期化を行う（ST301）。この編集距離計算用テーブルは、Str1の文字列長（以降|Str1|と表記する）とStr2の文字列長（以降|Str2|と表記する）に基づいて、M[i,j]（0≦i≦|Str1|, 0≦j≦|Str2|）で表される2次元配列である。ST301では、M[0,0]に0を、M[i,0]（1≦i≦|Str1|）にiを、M[0,j]（1≦j≦|Str2|）にjを代入して初期化する。
なお、ST301を実施する前にStr1とStr2が一致しているか否かを判定して、一致している場合にはST302以降の処理を実施しないようにしても良い。
【００３０】
次に、変数iの初期値を1とし、変数iの値を1ずつカウントアップしながら、ステップST302からステップST310までの処理を|Str1|回繰り返す。
同様に、上記の変数iに基づくループ処理内で変数jの初期値を1とし、変数jの値を1ずつカウントアップしながら、ステップST303からステップST309までの処理を|Str2|回繰り返す。
【００３１】
変数iおよび変数jに基づくループ処理の詳細を説明する。なお、Str1のi番目の文字をStr1[i]のように表すこととする。まず、文字Str1[i]と文字Str2[j]の比較を行い（ST304）、等しい場合は変数scoreに0を代入し（ST305）、等しくない場合は変数scoreに1を代入する（ST306）。なお、このST306において1を代入するということは、Str1とStr2を同一の文字列とするためには1回の文字置換が必要であることを示すものである。
【００３２】
次に、編集距離計算用テーブルのM[i,j]の値を更新する（ST307）。この処理では、M[i-1, j-1]+score、M[i-1,j]+1、M[i,j-1]+1の３つの値を比較して、最も小さい値でM[i,j]を更新する。
【００３３】
次に、重み付き類似文字列重みルールを用いた編集距離計算を行う（ST308）。図７はST308の類似文字列重みルールを用いた編集距離計算処理の処理フローである。ST401からST405までの処理をNR[i]回（すなわち、入力文字１１０のi番目の文字のルール数２０６分）繰り返す。
【００３４】
このループ処理ではまず、Rule[i][k]の適用可否の判定（類似文字列重みルールの適用可否判定）を行う（ST402）。具体的には、Rule[i][k]に格納された類似文字列重みルールの右辺文字列２０３が、ここで対象としている見出し文字列であるStr2のj文字目で終わる部分文字列と合致するかどうか確認して、合致する場合に適用可と判定する。
【００３５】
ST402で適用可と判定した場合には、ルールの内容を取得する（ST403）。ST403では、Rule[i][k]に定義された類似度スコア２０４を変数rule_scoreに代入し、また、左辺文字列の文字数を変数len1に、右辺文字列の文字数を変数len2に代入する。
次に、編集距離計算用テーブルのM[i,j]の更新を行う（ST404）。この処理では、M[i,j]、M[i-len1,j-len2]+rule_scoreの２つの値を比較して、小さい方の値でM[i,j]を更新する。
また、ST402で適用可と判定されなかった場合はST405に遷移する。
このようにして図６、図７に示した処理フローを終了し、最終的にM[|Str1|,|Str2|]に格納された値が、入力文字列１１０と見出し文字列との重み付き編集距離となる。
【００３６】
上記で例に示した入力文字列１１０が”ＣＨＡ”である場合で、辞書１０５から読み出した見出し文字列が”ＣＱＡ”である場合（すなわち、Str1＝”ＣＨＡ”、Str2＝”ＣＱＡ”である場合）について具体的な動作例を説明する。
【００３７】
図８（ａ）はこの動作例の場合のST301で初期化された編集距離計算用テーブルである。この状態から図６および図７に示したフローに従って処理を実施して、i=2、j=2のループ処理中のST307を終了した時点の編集距離計算用テーブルは図８（ｂ）に示したようになる。
ST308（すなわち図７のST401）を開始し、k=1のとき、Rule[2][1]に格納された右辺文字列２０３（”ＣＱ”）とStr2のj=2文字目で終わる部分文字列（”ＣＱ”）が一致するので、ST402の判定結果は真（Y）となる。
【００３８】
類似度スコア２０４（つまり0.4）が変数rule_scoreに、左辺文字列２０２の文字列長が変数len1に、右辺文字列２０３の文字列長が変数len2に代入されて、rule_score=0.4、len1=2、len2=2となる。ST404では、M[i-len1,j-len2]+rule_scoreと更新前のM[i,j]の値を比較し、いずれか小さいほうの値でM[i,j]の値を更新する。この例では、M[2,2]が1であるのに対し、M[i-len1,j-len2]+rule_scoreはM[0,0]+0.4=0.4となるので、編集距離計算用テーブルは図8（ｃ）に示すようになる。
【００３９】
この後、処理を継続して図６、図７のフローを終了したとき、編集距離計算用テーブルは図8（ｄ）に示すようになり、重み付き編集距離がM[3,3]=0.4と計算される。
【００４０】
なお、この実施の形態では入力文字列１１０と見出し文字列を一致させる編集距離を求める場合を説明したが、入力文字列１１０が見出し文字列より短い場合には、|Str1|≦J≦|Str2|の範囲で重み付き編集距離M[|Str1|,J]を計算して、そのなかで最小の重み付き編集距離を出力するようにしてもよい。このような計算により余剰文字（重み付き編集距離が最小となったJ文字目以降の見出し文字列の文字）を無視した重み付き編集距離をその見出し文字列の重み付き編集距離として求めることで、使用者が目的の名称の先頭の一部のみを入力した場合に、これを補完して正式な名称を取得することが可能となる。
【００４１】
上述のように、ルール記憶部１０２に記憶された類似文字列重みルールから、検索文字列である入力文字列に基づいてその入力文字列に適用される可能性のある類似文字列重みルールを抽出するルール抽出部と、抽出した類似文字列重みルールを記憶する適用ルール記憶部とを備えて、重み付き編集距離を計算する処理において抽出した類似文字列重みルールを適用可否判定の対象とすることにより、適用可否判定処理の回数を削減することができる。これにより文字列検索装置の類似文字列検索処理を高速化できるという効果を得ることができる。
【００４２】
特に、類似文字列重みルールの数が非常に多い場合に大きな効果を得ることができる。例えばフランス語のように似た音を持つ綴りが非常に多い言語では、使用者の勘違いや打鍵誤りや音声認識の誤りに対応するために必要な類似文字列重みルールの数が数百種類に及ぶが、ルール抽出部により重み付き編集距離の計算時に適用可否を判定する類似文字列重みルール数を数十種類程度あるいはそれ以下に削減でき、類似文字列検索処理を大きく高速化できる。
【００４３】
なお、辞書が非常に多くのデータを含み、重み付き編集距離を計算する見出し文字列が大量である場合には、重み付き編集距離の計算の前に例えば特許文献１に示されているtf-idf（term frequency - inverse document frequency）重みを用いた絞り込みのような何らかの事前絞り込みの手段を設けることとしても良い。
【００４４】
また、この実施の形態ではルール記憶部１０２が記憶する類似文字列重みルールから抽出したルールを適用ルール記憶部１０３に記憶する構成としたが、例えばルール番号のみを適用ルール記憶部に記憶して、重み付き編集距離の計算時にルール番号を元に必要な類似文字列重みルールをルール記憶部から取得するようにしても良い。
【００４５】
上述の実施の形態では文字列を検索する例を説明したが、この文字列は単語列であっても良い。
また、この実施の形態ではアルファベットの入力文字列を用いて説明したが、この発明は入力文字列をアルファベットに限定されるものではなく、他の言語の文字列（例えば、ひらがなや漢字）であっても良い。
【００４６】
実施の形態２．
図９はこの発明の実施の形態２に係る文字列検索装置の構成図である。実施の形態１の文字列検索装置の違いは、編集距離計算部１０４ａが外部より設定された距離上限値１１２に基づいて、編集距離計算を途中で打ち切る機能を有する点である。これ以外の重みルール抽出部１０１、ルール記憶部１０２、適用ルール記憶部１０３、辞書１０５、距離準整列部１０６、入力文字列１１０、類似文字列リスト１１１については実施の形態１と同様である。
【００４７】
次に実施の形態２の文字列検索装置の動作を実施の形態１の文字列検索装置との差分を中心に説明する。図１０は実施の形態２の文字列検索装置の重み付き編集距離計算処理の処理フローである。ST301からST310までの各処理については、実施の形態１と同様である。この実施の形態では、ST309とST310の間で重み付き編集距離計算の打ち切り判定を行う（ST311）。
【００４８】
図１１はST311の打ち切り判定の処理フローである。以下、図１１を参照してST311の処理について詳細に説明する。いま、変数iの値がZであるとする。まず、変数iの値をZから|Str1|まで変化させた場合の重み付き編集距離計算で参照する可能性のある編集距離計算用テーブルの配列の、入力文字列１１０に対応する文字位置の最小値MinLを計算する（ST501）。
具体的には、MinLは以下のように求めることができる。Rule[p][r]（Z≦p≦|Str1|、1≦r≦p番目の文字のルール数２０６）に格納された左辺文字列の文字数の最大値をMaxLenpとしたとき、ST307ではM[p-MaxLenp,q]（0≦q≦|Str2|）が参照される可能性がある。よって、Z≦p≦|Str1|の範囲でp-MaxLenpの最小値がMinLとなる。
【００４９】
例えばStr1＝”ＣＨＡ”、Str2＝”ＣＱＡ”である場合に、配列Ruleが図５に示すものであったとする。図５より、入力文字位置=2のときの左辺文字列の最大値MaxLen2は2、入力文字位置=3のときの左辺文字列の最大値MaxLen3は2となる。ここでZを2とすると、p-MaxLenp(2≦p≦3)の値は、2-MaxLen2=0、3-MaxLen3=1であり、MinL=0となる。
【００５０】
次に、距離上限値１１２とM[x,y]（MinL≦x≦Z,0≦y≦|Str2|）の比較を行う（ST502）。M[x,y]に距離上限値１１２より小さいものが一つでもあれば、ST310へ遷移し、編集距離計算処理を継続する。一方、全てのM[x,y]が距離上限値１１２より大きければ、これ以上計算を続行しても距離上限値１１２より重み付き編集距離が小さくなることはないため、編集距離計算を打ち切る。そして、その時点での最小値を見出し文字列Str2に対する重み付き編集距離として出力する。
【００５１】
上記のように、事前に設定された距離上限値による打ち切り判定を行うことにより、距離上限値を超えた重み付き編集距離を計算する処理を省くことができ、類似文字列検索の高速化という効果が得られる。
【００５２】
特に、距離上限値を設けて類似性の高いものだけを検索する場合、たとえば施設名称や住所といった辞書に記憶された見出し文字列の数が数十万から数百万を越えるような場合に大きな効果が得られる。
【産業上の利用可能性】
【００５３】
以上のように、この発明の文字列検索装置は、文字列検索における重み付編集距離計算の処理量を削減することで装置の処理速度の高速化や装置に必要な処理能力の低減を実現することができるので、カーナビゲーションシステムなど文字列検索を行う装置において有用である。
【符号の説明】
【００５４】
１０１  重みルール抽出部、１０２  ルール記憶部、１０３  適用ルール記憶部、１０４，１０４ａ  編集距離計算部、１０５  辞書、１０６  距離順整列部、１１０  入力文字列、１１１  類似文字列リスト、１１２  距離上限値、２０１  ルール番号、２０２  左辺文字列、２０３  右辺文字列、２０４  類似度スコア、２０５  入力文字位置、２０６  ルール数。
【図１】
0005846340.tif 000002
【図２】
0005846340.tif 000003
【図３】
0005846340.tif 000004
【図４】
0005846340.tif 000005
【図５】
0005846340.tif 000006
【図６】
0005846340.tif 000007
【図７】
0005846340.tif 000008
【図８】
0005846340.tif 000009
【図９】
0005846340.tif 000010
【図１０】
0005846340.tif 000011
【図１１】
0005846340.tif 000012