【文献】
伊藤 直也,第19回 スペル修正プログラムを作る アルゴリズム&データ構造シリーズ2,WEB+DB PRESS,日本,(株)技術評論社,2009年 7月25日,第51巻,p.130−136
(58)【調査した分野】(Int.Cl.,DB名)
前記取得された関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップの前記ビットマップ重みを含む場合、前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除するステップが、前記候補文字列に対応する前記文字列ビットマップのビットマップ重みと前記ターゲット文字列に対応する前記文字列ビットマップのビットマップ重みとの間の相違が前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するステップを備える、請求項1に記載の方法。
前記関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みを含む場合、前記関連ビットマップ情報に基づいて、前記ターゲット文字列との距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除するステップが、前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するステップを備える、請求項1に記載の方法。
【発明を実施するための形態】
【0019】
ここでは、実施例を詳細に説明し、各実施例を添付図面に示す。以下の説明が添付図面に関する場合、異なる添付図面における同じ符号は、別途指示がない限り、同一又は類似の構成要素を指す。以下の実施例において説明する実施方法は、本願と一致する全ての実施方法を表しているわけではなく、これらの実施方法は、本願の特許請求の範囲において詳細に述べる幾つかの態様に一致する装置及び方法の単なる例に過ぎない。
【0020】
文字列距離計算は広く用いられている。例えば、アプリケーションシナリオにおいて、2つの文字列間の類似性は、データ解析中に2つの文字列間の文字列距離を計算することによって特定される。例えば、あるアドレス文字列が与えられると仮定する。与えられたアドレス文字列とあるアドレス文字列集合内の各文字列との間の文字列距離を計算して、与えられたアドレス文字列に類似する文字列がこの集合内に存在するかどうかを特定できる。仮に文字列距離が距離閾値の範囲に入った場合、集合内の文字列は与えられたアドレス文字列に類似する。
【0021】
与えられた文字列と比較した場合、文字列集合の大きさは大きく、例えば、前記アドレス文字列集合は何千万ものアドレス文字列を含み、文字列距離計算中の実行時間コストは高い。本願の実施は、文字列距離計算の結果を迅速に取得し、且つ、高速に実行するためのアプリケーション要件を良好に満足させる文字列距離計算方法を提供する。このような方法は、文字列距離計算を大きい文字列集合で実行する場合であっても計算結果を迅速に取得できることを目的としている。
【0022】
本実施において、上記与えられたアドレス文字列を「ターゲット文字列」と称することができ、上記アドレス文字列集合を「候補文字列集合」と称することができ、候補文字列集合内の各アドレス文字列を「候補文字列」と称することができる。
【0023】
本願における文字列距離計算方法に基づいて、
図1に示す手順を用いて、与えられたターゲット文字列に類似する候補文字列を、候補文字列集合から選択できる。
【0024】
ステップ101:候補文字列とターゲット文字列とに含まれる文字の文字相違情報を取得する。
【0025】
例えば、ターゲット文字列がAAであり、候補文字列集合内の候補文字列がABCDである場合、このステップにおいて記述される文字相違情報は、ターゲット文字列に含まれる相違文字の数と、候補文字列に含まれる相違文字の数との間の差とすることができる。例えば、候補文字列が4つの異なる文字A、B、C、及びDを含み、ターゲット文字列が1種類の文字Aを含む。
【0026】
候補文字列に含まれる相違文字の数を第1の文字量と称し、ターゲット文字列に含まれる相違文字の数を第2の文字量と称する場合、第1の文字量と第2の文字量との間の差は3である、すなわち、文字相違情報は3である。このような場合、文字相違情報は、ターゲット文字列に含まれる相違文字の数と候補文字列に含まれる相違文字の数との間の差を示すことができる。
【0027】
別の実施例として、文字相違情報は、更に、2つの文字列を互いに包括的に比較する場合の相違文字の数を含むことができる。例えば、候補文字列ABCDをターゲット文字列AAと比較する場合、Aは2つの文字列に含まれる同一の文字であり、Bは候補文字列にのみ存在し、相違文字のうちの1つである。同様に、C及びDも、ターゲット文字列ではなく、候補文字列のみに含まれる相違文字である。したがって、候補文字列をターゲット文字列と比較すると、3つの相違文字B、C、及びDが存在する。第3の文字量は、候補文字列とターゲット文字列とのうちの一方だけに含まれる文字の数を示すために用いることができる。第3の文字量は本ステップにおいて取得される文字相違情報である。
【0028】
ステップ102:先に計算された文字相違情報に基づいて、ターゲット文字列とは異なると特定された幾つかの候補文字列を、候補文字列集合から選別・排除(screen out)する。
【0029】
第1の文字量と第2の文字量との間の差がステップ101で計算される。この差が大きいことは、候補文字列がターゲット文字列とは異なることを示す。例えば、第1の文字量と第2の文字量との間の差が、ターゲット文字列AAと候補文字列ABCDとに基づいて3であり、相違の閾値が1であれば、2つの文字列は互いに異なる、と特定できる。
【0030】
別の実施例として、第3の文字量が相違閾値よりも大きい場合、それは、候補文字列が、ターゲット文字列に含まれる文字とは異なる多数の文字を含むことを示し、すなわち、2つの文字列が互いに異なることを示している。したがって、この候補文字列を選別・排除できる。
【0031】
更に別の実施例として、ターゲット文字列とは異なる候補文字列を、第1の文字量、第2の文字量、及び第3の文字量に基づいて、より正確にまた包括的に選別・排除できる。例えば、候補文字列は、第1の文字量と第2の文字量との間の差が相違閾値よりも大きい場合、候補文字列集合から選別・排除される。その後、スクリーニング後の候補文字列集合内の残りの候補文字列上の第3の文字量に基づいて、スクリーニングがなされる。残りの候補文字列は、第3の文字量が相違閾値よりも大きい場合、候補文字列集合から選別・排除される。
【0032】
例えば、ターゲット文字列がAAであり、且つ、候補文字列がBBであると仮定すると、第1の文字量と第2の文字量との間の差は、ターゲット文字列及び候補文字列がそれぞれ1種類の文字を含んでいるため、0である。したがって、上記差に基づいてこの候補文字列を選別・排除することはできない。しかし、第3の文字量が更に計算された場合、相違文字がA及びBを含むため、第3の文字量は2である。距離閾値が1である場合、第3の文字量が距離閾値より大きいため、この候補文字列は選別・排除される。
【0033】
本実施における文字列距離計算方法に基づいて、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、文字列距離計算の前に文字相違情報に基づいて最初に選別・排除される。その後、スクリーニング後に得られた残りの候補文字列とターゲット文字列との間の距離が計算される。したがって、候補文字列は最終的な文字列距離計算においては大幅に削減されており、それによって計算効率は向上する。
【0034】
先の文字相違情報は複数の方法で得ることができる。例えば、相違情報は文字毎に文字列を比較することによって得られる。本願の以下の実施は、文字相違情報取得方法の一例を提供する。この方法において、候補文字列及びターゲット文字列は文字列ビットマップを用いて表すことができ、文字相違情報は文字列ビットマップに基づいて得ることができ、その結果、文字相違情報が迅速に得られ、処理効率は向上する。
【0035】
文字列ビットマップに基づく文字相違情報取得方法は以下の概念に適用する。その方法を詳細に説明する前に、これらの概念を以下説明する。
【0036】
文字列ビットマップ:例えば、複数のフラグビットを含むビットマップを予め特定でき、各フラグビットは1つの文字、例えば、英文字A、B、C、・・・、Y、及びZに対応する。ビットマップ内のフラグビットに対応する文字を本実施において所定の標準文字と称することができる。下記表1はビットマップ構造の一例を示している。
【表1】
【0037】
表1を参照して、26個の英文字に対応する26個のフラグビットがあると仮定する。フラグビットは、右から左へ文字A、B、C、・・・、及びZに順次対応する。各フラグビットの値は第1の値又は第2の値であってもよい。例えば、本実施において、第1の値は1に設定され、第2の値は0に設定される。値を設定するための規則は以下の通りであってもよい。すなわち、フラグビットに対応する文字が、文字列のビットマップが計算される場合に文字列内にあるかどうかを特定する;肯定である場合、フラグビットの値を1に設定する;又は、否定である場合、フラグビットの値を0に設定する。全てのフラグビットの値が設定された後、文字列ビットマップが得られる。値を設定するための規則として、フラグビットに対応する文字が文字列内で少なくとも2回出現した場合、それでもフラグビットの値を1に設定することが更に含まれる。
【0038】
実施例において、文字列「DABA」のビットマップを計算する必要があると仮定する。表1を参照すると、ビットマップ内の各フラグビットに対応する所定の標準文字が文字列内にあるかどうかを特定してフラグビットの値を右から左へ識別できる。
【0039】
標準文字Aに対応するフラグビットの値を予め設定する:文字Aは文字列「DABA」内に存在する。所定の標準文字Aに対応するフラグビットの値は1に設定される。たとえAが2回出現し、文字列が2つのAを含んでいたとしても、値は1に設定される。
【0040】
標準文字Bに対応するフラグビットの値を予め設定する:文字Bは文字列「DABA」内に存在する。所定の標準文字Bに対応するフラグビットの値は1に設定される。
【0041】
標準文字Cに対応するフラグビットの値を予め設定する:文字Cは文字列「DABA」内に存在しない。所定の標準文字Cに対応するフラグビットの値は0に設定される。
【0042】
標準文字Dに対応するフラグビットの値を予め設定する:文字Dは文字列「DABA」内に存在する。所定の標準文字Dに対応するフラグビットの値は1に設定される。
【0043】
他のフラグビットの値は先の規則に従って設定され、詳細はここでは説明しない。最終的に、表1に示す構造内に26個のフラグビットを含むビットマップの値は0000・・・001011、すなわち、表1に示す値であってよい。その値は、先行する0の文字列を省略して「1011」と簡略化でき、文字列「DABA」に対応する文字列ビットマップは「1011」である。
【0044】
先の内容から、文字列ビットマップが複数のフラグビットを含み、各フラグビットの値は、フラグビットに対応する文字が文字列に含まれているかどうかを示すことが認識できる。フラグビットの値が第1の値である場合、フラグビットに対応する文字が文字列に含まれていることを示す。フラグビットの値が第2の値である場合、フラグビットに対応する文字が文字列に含まれていないことを示す。以下の実施における方法の説明に関する文字列ビットマップは、先の方法を用いて計算できる。加えて、以下の実施における方法の説明において、文字列ビットマップは、しばしばビットマップと称される。例えば、ターゲット文字列のビットマップ及び候補文字列のビットマップは、両方とも文字列ビットマップと称される。
【0045】
加えて、フラグビットに対応する所定の標準文字は、必ずしも表1に示す構造における標準文字ではなく、文字列ビットマップ計算のための別の構造における標準文字であってもよい。例えば、文字は表2に示す実施例であってもよく、ここでA、B、及びCからZまでの文字を左から右へ配置してもよく、他の所定の標準文字を用いてもよい。
【表2】
【0046】
先の実施例において、26個の英文字に対応する26ビットマップ構造が一例として用いられることは傾注に値する。実際のアプリケーションにおいて、32ビット未満の別のビットマップを用いることもできる。32ビット未満の係るビットマップ構造設計は、主に、演算速度を向上させる高速ビットマップ計算を目的としている。したがって、ビットマップ構造は大き過ぎないように設計される。しかし、文字集合が大き過ぎない場合、より大きいデータ構造を用いてビットマップを格納することもできる。例えば、日本語の文字列を処理する必要がある場合、128ビットの大きい整数構造を用いてビットマップを表現できる。
【0047】
加えて、先の実施例において、ビットマップ構造内の各フラグビットに対応する文字は英語大文字を用いて記述される。本願における方法の適用範囲を拡大するため、26個の英語大文字以外の文字を含む文字列に対しては、前処理を行うことで、この方法をこの文字列に適用できるようにする。この前処理方法は、処理されるのを待っている文字列内の空白文字等の句読点を無視するステップと、UNICODE NFKD規格を用いて英語ではない幾つかの文字を対応する英文字に変換するステップとを含むが、これらに限定されない。例えば、「cafe(左に示す文字「e」は、英文字の「e」にアキュート・アクセントを付した文字である)」は「cafe」に変換され、全ての英語小文字は対応する英語大文字に変換される。
【0048】
ビットマップ重み:ビットマップ重みは、文字列ビットマップ内の第1の値の数である。例えば、先の実施例において、文字列「DABA」は、文字列ビットマップが表1の構造に基づいて計算される場合に文字列ビットマップ「1011」に対応し、文字列ビットマップ内の第1の値である1の数がビットマップ重みである。文字列ビットマップ「1011」のビットマップ重みは、文字列ビットマップが3つの1を含んでいるため、3である。
【0049】
ビットマップ相違:ビットマップ相違は、バイナリ形式の排他的OR演算が2つの文字列の文字列ビットマップに関して行われた後に得られる。例えば、2つのビットマップ「1011」と「0111」との間のビットマップ相違が計算される。「1011」は第1のビットマップと称することができ、「0111」は第2のビットマップと称することができる。2つのビットマップはそれぞれ4つのフラグビットを含む。第1のビットマップ内の各フラグビットは第1のフラグビットと称することができ、第2のビットマップ内の各フラグビットは第2のフラグビットと称することができる。先の「第1」又は「第2」は、単に区別するためのものである。下記表3を参照する。
【表3】
【0050】
1つの第1のフラグビットは、1つの第2のフラグビットに対応することが表3から見て取れる。排他的OR演算は、第1のフラグビットの値及び対応する第2のフラグビットの値に対して行うことができる。例えば、第1のフラグビット「1」及び第2のフラグビット「0」の排他的OR値は「1」であり、第1のフラグビット「1」及び第2のフラグビット「1」の排他的OR値は「0」である。排他的OR演算の規則は以下の通りである。すなわち、2つの異なる値の排他的OR値は1(排他的OR値は真)であり、2つの同じ値の排他的OR値は0(排他的OR値は偽)である。全てのフラグビットに対応する、最終的に得られる排他的OR値「1100」が、ビットマップ相違である。
【0051】
ビットマップ相違は実際にはビットマップであり、ビットマップ相違は複数のフラグビットも含み、各フラグビットの値は、第1のフラグビットの値が第2のフラグビットの値と同じであるかどうかを示すことが認識できる。
【0052】
ビットマップ相違の重み:ビットマップ相違もビットマップであるため、ビットマップ相違の重みとビットマップの重みとは同じ方法を用いて計算される。例えば、ビットマップ相違「1100」の重みは「2」である、すなわち、ビットマップ相違の重みは、排他的OR値がビットマップ相違において真であるフラグビットの数を示している。
【0053】
文字列距離:文字列距離は、文字列が別の文字列に変更される場合に追加、削除、又は置換される文字の最小数を示している。例えば、「ABCEF」と「ACDEG」との間の距離は3であり、変更点は、Bを削除し、Dを追加し、FをGで置き換えることである。幾つかの従来の距離計算アルゴリズム、例えば、レーベンシュタイン(Levenshtein)距離アルゴリズムを用いて文字列距離を計算でき、その詳細は説明しない。
【0054】
本願の実施に係る文字列距離計算方法を以下説明する。この方法は、先に説明したビットマップ、ビットマップ重み、ビットマップ相違等に関連する。本実施における方法を
図2に示す。
【0055】
ステップ201:候補文字列及びターゲット文字列の関連ビットマップ情報を取得する。関連ビットマップ情報は、候補文字列及びターゲット文字列に対応する2つの文字列ビットマップのビットマップ重み、又は、候補文字列及びターゲット文字列の2つの文字列ビットマップ間のビットマップ相違のビットマップ重み、を含むことができる。
【0056】
ステップ202:ステップ201で得られた関連ビットマップ情報に基づいて候補文字列集合から、ターゲット文字列とは明らかに異なる候補文字列を選別・排除し、次いで、その後に得られた残りの候補文字列とターゲット文字列との間の距離を計算する。ビットマップ重み及びビットマップ相違等の概念に関する先の説明に基づいて、ビットマップ重みは、文字列に含まれる相違文字を示すことができる、又は、2つの文字列に含まれる文字の相違を示すことができる。2つの文字列が互いに明らかに異なる場合、すなわち、一方の文字列に含まれる文字が他方の文字列に含まれる文字とは明らかに異なる場合は、その相違をビットマップ重みを用いて反映することで、異なる文字列を識別することができる。
【0057】
本実施における文字距離計算方法に基づいて、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、ビットマップ重みを用いて選別・排除される。文字列距離計算に関係する文字列の数は、ターゲット文字列及び候補文字列の集合内の各文字列との間の距離を直接計算する方法と比べると、この方法を用いることで大幅に減り、それによって類似文字列を検索する速度が向上する。
【0058】
候補文字列及びターゲット文字列の関連ビットマップ情報に基づいてスクリーニングを実行する幾つかの実施例を以下述べる。
【0059】
実施例において、候補文字列及びターゲット文字列に対応する2つの文字列ビットマップのビットマップ重みに基づいて、文字列に対してスクリーニングを実行できる。候補文字列に対応する文字列ビットマップのビットマップ重みと、ターゲット文字列に対応する文字列ビットマップのビットマップ重みとの間の相違が距離閾値よりも大きい場合、この候補文字列はターゲット文字列とは異なると特定され、この候補文字列は、候補文字列とターゲット文字列との間で行われる文字列距離計算の前に、選別・排除される。このような場合、候補文字列及びターゲット文字列の2つの文字列ビットマップのビットマップ重み間の相違が文字相違情報である。
【0060】
例えば、文字列距離計算における距離閾値が1であると仮定すると、ターゲット文字列は「ABCD」であり、文字列のビットマップは「1111」であり、ビットマップ重みは4である。候補文字列が「AAAA」であると仮定すると、候補文字列のビットマップは「1」であり、ビットマップ重みは1である。2つのビットマップ重み間の相違は4−1=3であり、相違3が距離閾値1よりも大きいので、候補文字列「AAAA」は選別・排除される。
【0061】
2つの文字列の文字列ビットマップのビットマップ重み間の重み差が大きい場合、それは、2つの文字列が互いに大幅に異なることを示し、この候補文字列を選別・排除できることが、先の実施例から認識できる。
【0062】
別の実施例において、スクリーニングは、候補文字列及びターゲット文字列に対応する2つの文字列ビットマップ間のビットマップ相違のビットマップ重みに基づき、文字列に対して実行できる。候補文字列及びターゲット文字列に対応する2つの文字列ビットマップ間のビットマップ相違のビットマップ重みが距離閾値よりも大きい場合、この候補文字列は選別・排除される。このような場合、候補文字列及びターゲット文字列の2つの文字列ビットマップ間のビットマップ相違のビットマップ重みが文字相違情報である。
【0063】
この実施例において、ターゲット文字列とは明らかに異なる文字列は、ビットマップ相違の重みに基づいて選別・排除され得る。例えば、ターゲット文字列は「ABC」である。候補文字列が「CD」である場合、2つの文字列間のビットマップ相違が計算される。「ABC」のビットマップは0111であり、「CD」のビットマップは1100である。排他的OR演算が2つのビットマップに対してなされてビットマップ相違1011を得る。ビットマップ相違の重みは3である。候補文字列「CD」は、ビットマップ相違の重み3が距離閾値1よりも大きいので、選別・排除され得る。
【0064】
2つの文字列間の相違は、たとえ候補文字列内の相違文字の数がターゲット文字列内の相違文字の数に類似しているが、文字は完全に異なる文字であるような場合であっても、ビットマップ相違の重みに基づいて識別できることが先の実施例から認識できる。
【0065】
先の2つの実施例において、ターゲット文字列とは異なる文字列は、スクーリングがビットマップ重みに基づいて文字列に対してなされる場合、文字列ビットマップの重み又はビットマップ相違の重みに基づいて選別・排除され得る。更に別の実施例において、スクリーニングは、より良好なスクリーニング効果を得るために、候補文字列及びターゲット文字列の2つの文字列ビットマップのビットマップ重み、並びに、2つの文字列ビットマップ間のビットマップ相違のビットマップ重みに基づいて、文字列に対して行うことができる。
【0066】
例えば、ターゲット文字列が「ABC」であり、且つ、候補文字列が「CD」である場合、「ABC」のビットマップは0111であり、「CD」のビットマップは1100であり、2つの文字列の文字列ビットマップのビットマップ重み間の相違は3−2=1であり、これは距離閾値1の範囲内にある。しかし、2つの文字列間のビットマップ相違が計算された場合、ビットマップ相違1011の重みは3であり、これは距離閾値1よりも大きい。したがって、候補文字列「CD」はターゲット文字列とは異なると特定でき、選別・排除できる。
【0067】
図3は、本願の実施の例に係る文字列距離計算方法の手順の実施例を示す。この実施例において、スクリーニングは、2つの文字列ビットマップのビットマップ重み及びビットマップ相違のビットマップ重みの両方に基づいて、文字列に対して実行される。
【0068】
第1に、データベース内の候補文字列集合内の各候補文字列に対応するビットマップ及びビットマップ重みが計算され、次いで、データベースに格納される。ビットマップが計算される場合、計算コストはO(N)であり、Nは文字列長さである。ビットマップ重みが計算される場合、計算コストはO(0)であり、重みはMIT HAKMEMアルゴリズムを用いて計算できる。ビットマップ計算及びビットマップ重み計算については、先の概念説明部分を参照されたい。詳細は再度説明しない。候補文字列集合内の全ての候補文字列のビットマップは列(カラム)、すなわち、データベース内のビットマップ列に格納でき、全ての候補文字列のビットマップ重みは別の列、すなわち、データベース内の重み列に格納できる。インデックスは、後の計算プロセスにおいてインデックスに基づく高速計算を可能にするよう、重み列に対して設定される。
【0069】
ステップ301:与えられたターゲット文字列を受け取り、ターゲット文字列に類似する文字列を候補文字列集合から選択する必要がある場合、ターゲット文字列の文字列ビットマップ及び対応するビットマップ重みを計算する。ここでも、計算コストはそれぞれ、O(N)及びO(0)である。
【0070】
ステップ302:候補文字列の文字列ビットマップの予め格納されたビットマップ重みに基づいて、候補文字列集合から候補文字列を選別・排除して第1の候補文字列集合を得る。
【0071】
このため、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、文字列ビットマップのビットマップ重みに基づいて、候補文字列集合から選別・排除され得る。候補文字列のビットマップ重みとターゲット文字列のビットマップ重みとの間の重み差が得られ、重み差は文字列距離計算において距離閾値と比較される。重み差が距離閾値の範囲に入る場合、候補文字列は第1の候補文字列集合に属し、そうでなければ、候補文字列は選別・排除され、第1の候補文字列集合に属さない。
【0072】
例えば、距離閾値が1であると仮定すると、ターゲット文字列は「ABCD」であり、文字列のビットマップは「1111」であり、ビットマップ重みは4である。候補文字列が「AB」であると仮定すると、候補文字列のビットマップは「11」であり、ビットマップ重みは2である。2つのビットマップ重み間の相違は4−2=2である。相違2は距離閾値1よりも大きいため、候補文字列「AB」は選別・排除され、第1の候補文字列集合に属さない。加えて、本ステップにおいて、重み差を計算し、この重み差と距離閾値とを比較する際のランニングコストはO(0)である。
【0073】
本ステップにおいて、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、候補文字列の文字列ビットマップのビットマップ重みに基づいて選別・排除でき、第1の候補文字列集合を得ることができる。しかし、第1の候補文字列集合は、それでもなおターゲット文字列とは異なる幾つかの候補文字列を含み得る。
【0074】
例えば、ターゲット文字列は「ABC」であり、候補文字列が「CD」である場合、2つのビットマップ重みの間の相違は3−2=1であり、重み差1は距離閾値1と等しく、閾値要件を満足する。したがって、この候補文字列は第1の候補文字列集合に分類される。しかし、「ABC」及び「CD」は2つの異なる文字列であることは明らかである。したがって、ステップ303はこの実施例において実行され得る。
【0075】
ステップ303:第1の候補文字列集合内の各候補文字列及びターゲット文字列の2つの文字列ビットマップ間のビットマップ相違を計算し、ビットマップ相違のビットマップ重みを計算し、ビットマップ相違のビットマップ重みに基づいて候補文字列を選別・排除して、第2の候補文字列集合を得る。
【0076】
本ステップにおいて、特定及びスクリーニングが、更に、第1の候補文字列集合内の各候補文字列に対してなされ、第2の候補文字列集合を得る。本ステップにおけるスクリーニングはビットマップ相違の重みに基づく。ビットマップ相違の重みは2つのビットマップ間の詳細な相違を反映できる。第2の候補文字列集合内の各候補文字列は、候補文字列のビットマップとターゲット文字列のビットマップとの間のビットマップ相違の重みが距離閾値の範囲内にあるという条件を満足する。本ステップのランニングコストもO(0)であり、固定ステップを介して演算を完了できる。
【0077】
先の実施例において、ターゲット文字列は「ABC」であり、候補文字列は「CD」である。2つの文字列間のビットマップ重み差は閾値要件を満足し、候補文字列は第1の候補文字列集合に分類される。本ステップにおいて、2つの文字列のビットマップ相違が計算される。「ABC」のビットマップは0111であり、「CD」のビットマップは1100である。排他的OR演算が2つのビットマップに対してなされてビットマップ相違1011を得る。ビットマップ相違の重みは3である。候補文字列「CD」は、ビットマップ相違の重み3が距離閾値1よりも大きいので、選別・排除され得る。第2の候補文字列集合は、本ステップにおいて、スクリーニング操作が第1の候補文字列集合に対してなされた後に得られる。
【0078】
ステップ304:ターゲット文字列と、第2の候補文字列集合内の各候補文字列との間の文字列距離を計算し、ターゲット文字列への文字列距離が距離閾値の範囲内にある候補文字列を選択する。
【0079】
本ステップにおいて、ターゲット文字列と、ステップ303で得られた第2の候補文字列集合内の各候補文字列との間の文字列距離は、従来の距離アルゴリズムを用いて計算でき、ターゲット文字列への文字列距離が距離閾値の範囲に入る候補文字列は、選択され、ターゲット文字列に類似する文字列として特定される。ランニングコストは、ターゲット文字列と候補文字列との間の文字列距離が計算される場合、O(N)×O(M)である。ここで、Nはターゲット文字列の長さであり、Mは候補文字列の長さである。
【0080】
加えて、先の方法が本実施において実行される前に、例えば、ターゲット文字列との文字列長さの相違が長さ相違閾値よりも大きい候補文字列を選別・排除する別のスクリーニング方法で、プレ・スクリーニングを実行できる。
【0081】
本実施における文字列距離計算方法に基づいて、文字列によっては、文字列距離計算に最終的に関係する候補文字列の数が大幅に減るように、文字列距離計算の前に文字列のビットマップ及びビットマップ重み等の要因に基づいて、候補文字列集合から選別・排除される。文字列距離計算は、ランニングコストが高く、実行時間が長い計算プロセスである。ランニングコストはO(N)×O(M)である。文字列距離計算に関係する候補文字列は先の方法を用いて大幅に低減され、その結果、計算性能は大きく向上する。実試験後の計算性能は、アドレス類似性を計算するプロジェクトに本願の方法を適用することによって約1000倍に向上する。
【0082】
本願の実施における文字列距離計算方法は、
図4に示すコンピューティング装置によって実行できる。例えば、コンピューティング装置はサーバであってもよい。コンピューティング装置は、プロセッサ410、通信インターフェース420、メモリ430、及びバス440を含むことができる。プロセッサ410、通信インターフェース420、及びメモリ430は、バス440を介して互いに通信する。アプリケーションシナリオの例は以下の通りであってもよい。すなわち、サービスユーザのアドレス文字列を含むサービス情報を受け取る場合、コンピューティング装置はアドレス文字列をターゲット文字列として用い、予め格納されているブラックリストアドレスライブラリを候補文字列集合として用い、ターゲット文字列が集合内にあるかどうかを特定でき、肯定である場合、ユーザがサービスを継続することを認めない。
【0083】
図4に示すように、コンピューティング装置内のメモリ430は、文字列距離計算のための論理命令を格納できる。メモリは、例えば、不揮発性メモリ(non−volatile memory)であってもよい。プロセッサ410は、メモリ430内の文字列距離計算のための論理命令を呼び出して、本願の実施における文字列距離計算方法を実行できる。
【0084】
文字列距離計算のための論理命令は、論理命令の機能がソフトウェア機能ユニットの形態で実施され、独立した製品として販売又は用いられる場合に、コンピュータ読取り可能な記憶媒体に格納できる。かかる理解に基づいて、本質的に本開示の技術的解決策、又は既存の技術に寄与する部分、若しくは技術的解決策の幾つかは、ソフトウェア製品の形態で実施できる。ソフトウェア製品は記憶媒体に格納され、本開示の実施において説明した方法のステップの全て又は幾つかを実行するようコンピューティング装置(パーソナルコンピュータ、サーバ、ネットワーク装置等であってもよい)に命令するための幾つかの命令を含んでいる。先の記憶媒体としては、プログラムコードを格納できる任意の媒体、例えば、USBフラッシュドライブ、着脱式ハードディスク、読出し専用メモリ(ROM、Read−Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、又は光ディスクが挙げられる。
【0085】
文字列距離計算のための先の論理命令は「文字列距離計算装置」と称することができる。この装置を機能モジュールに分割できる。
図5に示すように、装置は、情報取得モジュール51及びスクリーニングモジュール52を含むことができる。
【0086】
情報取得モジュール51は、候補文字列及びターゲット文字列の関連ビットマップ情報を取得するよう構成される。関連ビットマップ情報は、候補文字列及びターゲット文字列に対応する2つの文字列ビットマップのビットマップ重みと、2つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含む。文字列ビットマップは、複数のフラグビットを含む。フラグビットの値は、第1の値及び第2の値を含む。第1の値は、フラグビットに対応する所定の標準文字が文字列に含まれていることを示し、第2の値は、フラグビットに対応する所定の標準文字が文字列に含まれていないことを示す。文字列ビットマップのビットマップ重みは、文字列ビットマップ内の第1の値の数を示す。ビットマップ相違は、ターゲット文字列ビットマップ内の各フラグビットの値及び候補文字列ビットマップ内の対応するフラグビットの値に対して排他的OR演算を行うことによって得られる。ビットマップ相違のビットマップ重みは、排他的OR値がビットマップ相違において真であるフラグビットの数を示している。
【0087】
スクリーニングモジュール52は、関連ビットマップ情報に基づいて、ターゲット文字列への文字列距離が候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列とターゲット文字列との間の文字列距離を計算するように構成される。
【0088】
実施例において、情報取得モジュール51によって得られた関連ビットマップ情報が候補文字列及びターゲット文字列に対応する2つの文字列ビットマップのビットマップ重みを含む場合には、スクリーニングモジュール52は、候補文字列に対応する文字列ビットマップのビットマップ重みとターゲット文字列に対応する文字列ビットマップのビットマップ重みとの間の相違が距離閾値よりも大きければ、候補文字列を選別・排除するように構成される。
【0089】
実施例において、情報取得モジュール51によって得られた関連ビットマップ情報が候補文字列及びターゲット文字列に対応する2つの文字列ビットマップ間のビットマップ相違のビットマップ重みを含む場合には、スクリーニングモジュール52は、2つの文字列ビットマップ間のビットマップ相違のビットマップ重みが距離閾値よりも大きければ、候補文字列を選別・排除するように構成される。
【0090】
実施例において、
図6に示すように、装置内のスクリーニングモジュール52は、計算ユニット521、第1のスクリーニングユニット522、第2のスクリーニングユニット523及び距離計算ユニット524を含むことができる。
【0091】
計算ユニット521は、ターゲット文字列が与えられる場合、ターゲット文字列の文字列ビットマップと、対応するビットマップ重みとを計算するように構成される。
【0092】
第1のスクリーニングユニット522は、候補文字列に対応するビットマップ重みとターゲット文字列に対応するビットマップ重みとの間の相違が距離閾値よりも大きければ、候補文字列の文字列ビットマップの予め格納されたビットマップ重みに基づいて、候補文字列集合から候補文字列を選別・排除し、ここで残りの候補文字列は第1の候補文字列集合を形成するように、構成される。
【0093】
第2のスクリーニングユニット523は、ターゲット文字列及び第1の候補文字列集合内の各候補文字列の2つの文字列ビットマップ間のビットマップ相違を計算し、ビットマップ相違のビットマップ重みを計算し、候補文字列及びターゲット文字列の2つの文字列ビットマップ間のビットマップ相違のビットマップ重みが距離閾値よりも大きければ、候補文字列を選別・排除して、第2の候補文字列集合を得るように、構成される。
【0094】
距離計算ユニット524は、ターゲット文字列と第2の候補文字列集合内の各候補文字列との間の文字列距離を計算するように構成される。
【0095】
文字列距離計算のための論理命令における先の「文字列距離計算装置」は、
図7に示す構造を有することができる。この装置は、相違取得モジュール71及び距離計算モジュール72を含むことができる。
【0096】
相違取得モジュール71は、候補文字列とターゲット文字列とに含まれる文字の文字相違情報を取得するように構成される。
【0097】
距離計算モジュール72は、文字相違情報が相違閾値よりも大きければ、候補文字列を候補文字列集合から選別・排除し、候補文字列集合内の残りの各候補文字列とターゲット文字列との間の文字列距離を計算するように、構成される。
【0098】
実施例において、相違取得モジュール71は、第1の文字量及び第2の文字量を取得し、ここで第1の文字量は候補文字列に含まれる相違文字の数を示しており、第2の文字量はターゲット文字列に含まれる相違文字の数を示しており、そして、第1の文字量と第2の文字量との間の相違を計算し、この相違を文字相違情報として用いるように、構成される。
【0099】
実施例において、相違取得モジュール71は、第3の文字量を取得し、ここで第3の文字量は候補文字列及びターゲット文字列のうちの一方だけに含まれる文字の数を示しており、第3の文字量を文字相違情報として用いるように、構成される。
【0100】
実施例において、相違取得モジュール71は、第1の文字量と第2の文字量との間の相違を計算し、ここで第1の文字量は候補文字列に含まれる相違文字の数を示しており、第2の文字量はターゲット文字列に含まれる相違文字の数を示しており、そして、候補文字列をターゲット文字列と比較し、第3の文字量を計算するように構成される。ここで、第3の文字量は候補文字列及びターゲット文字列のうちの一方だけに含まれる文字の数を示している。
距離計算モジュール72は、第1の文字量と第2の文字量との間の相違が相違閾値よりも大きければ、候補文字列を、候補文字列集合から選別・排除するように、そして、スクリーニング後の候補文字列集合内の残りの候補文字列に基づいて相違取得モジュールによって計算された第3の文字量が相違閾値よりも大きければ、候補文字列を候補文字列集合から選別・排除するように、構成される。
【0101】
図8に示すように、前記装置内の相違取得モジュール71は、ビットマップ計算ユニット711及び相違計算ユニット712を含むことができる。
【0102】
ビットマップ計算ユニット711は、文字列ビットマップを用いて候補文字列及びターゲット文字列を表すように構成される。文字列ビットマップは、複数のフラグビットを含む。フラグビットの値は、第1の値及び第2の値を含む。第1の値は、フラグビットに対応する所定の標準文字が文字列に含まれていることを示し、第2の値は、フラグビットに対応する所定の標準文字が文字列に含まれていないことを示す。
【0103】
相違計算ユニット712は、文字列ビットマップに基づいて文字相違情報を取得するように構成される。
【0104】
実施例において、相違計算ユニット712は、候補文字列及びターゲット文字列に対応する2つの文字列ビットマップのビットマップ重みを計算し、ここで文字列ビットマップのビットマップ重みは、文字列ビットマップ内の第1の値の数を示しており、そして、候補文字列に対応する文字列ビットマップのビットマップ重みとターゲット文字列に対応する文字列ビットマップのビットマップ重みとの間の相違を計算するように、構成される。
【0105】
実施例において、相違計算ユニット712は、ターゲット文字列ビットマップ内の各フラグビットの値と、候補文字列ビットマップ内の対応するフラグビットの値とに対する排他的OR演算を実行してビットマップ相違を取得するように、そして、ビットマップ相違のビットマップ重みを計算するように、構成される。ここでビットマップ重みは、ビットマップ相違において排他的OR値が真であるフラグビットの数を示している。
【0106】
実施例において、相違閾値は文字列距離のための距離閾値である。
【0107】
先の記載は本願の実施の例に過ぎず、本願を限定する意図はない。本願の主旨及び原理から逸脱することなくなされる任意の変形、均等物との置き換え、及び改良は、本願の保護適用範囲内に含まれる。
以下、本発明の実施の態様の例を列挙する。
[第1の局面]
与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するために用いられる文字列距離計算方法であって:
前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得するステップであって、前記関連ビットマップ情報は、前記候補文字列及び前記ターゲット文字列に対応する2つの文字列ビットマップのビットマップ重みと、2つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含む、前記取得するステップと;
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するステップと;を備え、
前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第1の値及び第2の値を含み、前記第1の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第2の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示し、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の前記第1の値の数を示し、前記ビットマップ相違は、前記ターゲット文字列ビットマップ内の各フラグビットの値及び前記候補文字列ビットマップ内の対応するフラグビットの値に対して排他的OR演算を行うことによって取得され、前記ビットマップ相違の前記ビットマップ重みは、前記ビットマップ相違において排他的OR値が真であるフラグビットの数を示す、
文字列距離計算方法。
[第2の局面]
前記取得された関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップの前記ビットマップ重みを含む場合において、
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除する前記ステップは:
前記候補文字列に対応する前記文字列ビットマップのビットマップ重みと前記ターゲット文字列に対応する前記文字列ビットマップのビットマップ重みとの間の相違が前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するステップを備える、
第1の局面に記載の文字列距離計算方法。
[第3の局面]
前記関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みを含む場合において、
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除する前記ステップは:
前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するステップを備える、
第1の局面に記載の文字列距離計算方法。
[第4の局面]
前記候補文字列集合内の各候補文字列の文字列ビットマップ及び対応するビットマップ重みは、予め計算されて格納され、
前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得する前記ステップと、前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算する前記ステップとは:
前記ターゲット文字列が与えられる場合、前記ターゲット文字列の前記文字列ビットマップ及び前記対応するビットマップ重みを計算するステップと;
前記候補文字列に対応する前記ビットマップ重みと、前記ターゲット文字列に対応する前記ビットマップ重みとの間の相違が前記距離閾値よりも大きい場合、前記候補文字列の前記文字列ビットマップの前記予め格納されたビットマップ重みに基づいて、前記候補文字列集合から前記候補文字列を選別・排除し、残りの候補文字列が第1の候補文字列集合を形成するステップと;
前記ターゲット文字列及び前記第1の候補文字列集合内の各候補文字列の2つの文字列ビットマップ間のビットマップ相違を計算し、前記ビットマップ相違のビットマップ重みを計算し;前記候補文字列及び前記ターゲット文字列の前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除して第2の候補文字列集合を取得するステップと;
前記ターゲット文字列と前記第2の候補文字列集合内の各候補文字列との間の文字列距離を計算するステップと;を備える、
第1の局面に記載の文字列距離計算方法。
[第5の局面]
与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するために用いられる文字列距離計算方法であって:
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得するステップと;
前記文字相違情報が相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し、前記候補文字列集合内の残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するステップと;を備える、
文字列距離計算方法。
[第6の局面]
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得する前記ステップは:
第1の文字量及び第2の文字量を取得するステップであって、前記第1の文字量は前記候補文字列に含まれる相違文字の数を示し、前記第2の文字量は前記ターゲット文字列に含まれる相違文字の数を示す、第1の文字量及び第2の文字量を取得するステップと;
前記第1の文字量と前記第2の文字量との間の相違を計算し、前記相違を前記文字相違情報として用いるステップと;を備える、
第5の局面に記載の文字列距離計算方法。
[第7の局面]
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得する前記ステップは:
第3の文字量を取得するステップであって、前記第3の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示す、第3の文字量を取得するステップと;
前記第3の文字量を前記文字相違情報として用いるステップ;を備える、
第5の局面に記載の文字列距離計算方法。
[第8の局面]
前記候補文字列及び前記ターゲット文字列に備えられる文字の文字相違情報を取得し、前記文字相違情報が相違閾値よりも大きければ、前記候補文字列を前記候補文字列集合から選別・排除する前記ステップは:
第1の文字量と第2の文字量との間の相違を計算するステップであって、前記第1の文字量は前記候補文字列に含まれる相違文字の数を示し、前記第2の文字量は前記ターゲット文字列に含まれる相違文字の数を示す、前記計算するステップと;
前記相違が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除するステップと;
前記候補文字列集合内の残りの候補文字列を前記ターゲット文字列と比較し、第3の文字量を計算するステップであって、前記第3の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示す前記候補文字列集合内の残りの候補文字列を前記ターゲット文字列と比較する、前記計算するステップと;
前記第3の文字量が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除するステップと;を備える、
第5の局面に記載の文字列距離計算方法。
[第9の局面]
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得する前記ステップは:
文字列ビットマップを用いて前記候補文字列及び前記ターゲット文字列を表すステップであって、前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第1の値及び第2の値を含み、前記第1の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第2の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示す、前記表すステップと;
前記文字列ビットマップに基づいて前記文字相違情報を取得するステップと;を備える、
第5の局面に記載の文字列距離計算方法。
[第10の局面]
前記文字列ビットマップに基づいて前記文字相違情報を取得する前記ステップは:
前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップのビットマップ重みを計算するステップであって、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の第1の値の数を示す前記候補文字列及び前記ターゲット文字列に対応する、前記計算するステップと;
前記候補文字列に対応する前記文字列ビットマップの前記ビットマップ重みと前記ターゲット文字列に対応する前記文字列ビットマップの前記ビットマップ重みとの間の相違を計算するステップと;を備える、
第9の局面に記載の文字列距離計算方法。
[第11の局面]
前記文字列ビットマップに基づいて前記文字相違情報を取得する前記ステップは:
前記ターゲット文字列ビットマップ内の各フラグビットの値と、前記候補文字列ビットマップ内の対応するフラグビットの値とに対して排他的OR演算を行って、ビットマップ相違を取得するステップと;
前記ビットマップ相違のビットマップ重みを計算するステップであって、前記ビットマップ重みは、前記ビットマップ相違において排他的OR値が真であるフラグビットの数を示す、前記計算するステップと;を備える、
第9の局面に記載の文字列距離計算方法。
[第12の局面]
前記相違閾値は、文字列距離の距離閾値である、
第5乃至11の局面のいずれかに記載の文字列距離計算方法。
[第13の局面]
与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するように構成された文字列距離計算装置であって:
前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得するように構成される情報取得モジュールであって、前記関連ビットマップ情報は、前記候補文字列及び前記ターゲット文字列に対応する2つの文字列ビットマップのビットマップ重みと、2つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含み、前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第1の値及び第2の値を含み、前記第1の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第2の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示し、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の第1の値の数を示し、前記ビットマップ相違は、前記ターゲット文字列ビットマップ内の各フラグビットの値と、前記候補文字列ビットマップ内の対応するフラグビットの値とに対して排他的OR演算を行うことによって取得され、そして、前記ビットマップ相違の前記ビットマップ重みは、前記ビットマップ相違において排他的OR値が真であるフラグビットの数を示す、前記情報取得モジュールと;
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するよう構成されるスクリーニングモジュールと;を備える、
文字列距離計算装置。
[第14の局面]
前記情報取得モジュールによって取得された前記関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップの前記ビットマップ重みを含む場合、前記スクリーニングモジュールは、前記候補文字列に対応する前記文字列ビットマップのビットマップ重みと、前記ターゲット文字列に対応する前記文字列ビットマップのビットマップ重みとの間の相違が前記距離閾値よりも大きければ、前記候補文字列を選別して排除するように構成される、
第13の局面に記載の文字列距離計算装置。
[第15の局面]
前記情報取得モジュールによって取得された前記関連ビットマップ情報が前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みを含む場合、前記スクリーニングモジュールは、前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するように構成される、
第13の局面に記載の文字列距離計算装置。
[第16の局面]
前記スクリーニングモジュールは:
前記ターゲット文字列が与えられた場合、前記ターゲット文字列の前記文字列ビットマップ及び前記対応するビットマップ重みを計算するように構成される計算ユニットと;
前記候補文字列に対応する前記ビットマップ重みと、前記ターゲット文字列に対応するビットマップ重みとの間の相違が前記距離閾値よりも大きい場合、前記候補文字列の前記文字列ビットマップの前記予め格納されたビットマップ重みに基づいて、前記候補文字列集合から前記候補文字列を選別・排除するよう構成される第1のスクリーニングユニットであって、残りの候補文字列は第1の候補文字列集合を形成する、第1のスクリーニングユニットと;
前記ターゲット文字列及び前記第1の候補文字列集合内の各候補文字列の2つの文字列ビットマップ間のビットマップ相違を計算し、前記ビットマップ相違のビットマップ重みを計算し;前記候補文字列及び前記ターゲット文字列の前記2つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除して、第2の候補文字列集合を取得するように構成される第2のスクリーニングユニットと;
前記ターゲット文字列と前記第2の候補文字列集合内の各候補文字列との間の文字列距離を計算するように構成される距離計算ユニットと;を備える、
第13の局面に記載の文字列距離計算装置。
[第17の局面]
候補文字列集合から与えられたターゲット文字列に類似する候補文字列を選択するように構成された文字列距離計算装置であって:
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得するよう構成される相違取得モジュールと;
前記文字相違情報が相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し、前記候補文字列集合内の残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するように構成される距離計算モジュールと;を備える、
文字列距離計算装置。
[第18の局面]
前記相違取得モジュールは、第1の文字量及び第2の文字量を取得し、前記第1の文字量は前記候補文字列に含まれる相違文字の数を示しており、前記第2の文字量は前記ターゲット文字列に含まれる相違文字の数を示しており、前記第1の文字量と前記第2の文字量との間の相違を計算し、前記相違を前記文字相違情報として用いるよう構成される、
第17の局面に記載の文字列距離計算装置。
[第19の局面]
前記相違取得モジュールは、第3の文字量を取得し、前記第3の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示しており、前記第3の文字量を前記文字相違情報として用いるように構成される、
第17の局面に記載の文字列距離計算装置。
[第20の局面]
前記相違取得モジュールは、第1の文字量と第2の文字量との間の相違を計算し、前記第1の文字量は前記候補文字列に含まれる相違文字の数を示し、前記第2の文字量は前記ターゲット文字列に含まれる相違文字の数を示しており、前記候補文字列を前記ターゲット文字列と比較し、第3の文字量を計算し、前記第3の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示すよう構成され、
前記距離計算モジュールは、前記第1の文字量と前記第2の文字量との間の前記相違が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し;前記スクリーニング後の前記候補文字列集合内の残りの候補文字列に基づいて前記相違取得モジュールによって計算された前記第3の文字量が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除するように構成される、
第17の局面に記載の文字列距離計算装置。
[第21の局面]
前記相違取得モジュールは:
文字列ビットマップを用いて前記候補文字列及び前記ターゲット文字列を表すよう構成されるビットマップ計算ユニットであって、前記文字列ビットマップは複数のフラグビットを含み、前記フラグビットの値は第1の値及び第2の値を含み、前記第1の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれていることを示し、前記第2の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれていないことを示す、文字列ビットマップを用いて前記候補文字列及び前記ターゲット文字列を表す、前記ビットマップ計算ユニットと;
前記文字列ビットマップに基づいて前記文字相違情報を取得するように構成される相違計算ユニットと;を備える、
第17の局面に記載の文字列距離計算装置。
[第22の局面]
前記相違計算ユニットは:
前記候補文字列及び前記ターゲット文字列に対応する前記2つの文字列ビットマップの、前記文字列ビットマップ内の第1の値の数を示すビットマップ重みを計算するように;及び、
前記候補文字列に対応する前記文字列ビットマップの前記ビットマップ重みと前記ターゲット文字列に対応する前記文字列ビットマップの前記ビットマップ重みとの間の相違を計算するように;構成される、
第21の局面に記載の文字列距離計算装置。
[第23の局面]
前記相違計算ユニットは:
前記ターゲット文字列ビットマップ内の各フラグビットの値と、前記候補文字列ビットマップ内の対応するフラグビットの値とに対して排他的OR演算を実行してビットマップ相違を取得するように;及び、
前記ビットマップ相違の、前記ビットマップ相違において排他的OR値が真であるフラグビットの数を示すビットマップ重みを計算するように;構成される、
第21の局面に記載の文字列距離計算装置。
[第24の局面]
前記相違閾値は文字列距離の距離閾値である、
第17乃至23の局面のいずれかに記載の文字列距離計算装置。