(57)【要約】  本願は文字列距離計算方法及び装置を提供する。その方法は、候補文字列集合から与えられるターゲット文字列に類似する候補文字列を選択するために用いられる。その方法は、候補文字列及びターゲット文字列に含まれる文字の文字相違情報を取得するステップと；文字相違情報が相違閾値よりも大きければ、候補文字列を候補文字列集合から選別して排除するステップと；候補文字列集合内の残りの各候補文字列とターゲット文字列との間の文字列距離を計算するステップと；を含む。本願において、候補文字列集合の大きさは、類似文字列が文字列距離計算を介して集合内で検索される場合に大幅に低減され、それによって、計算効率を向上させている。
2019512127.tif 000002
【特許請求の範囲】
【請求項１】
与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するために用いられる文字列距離計算方法であって：
前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得するステップであって、前記関連ビットマップ情報は、前記候補文字列及び前記ターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みと、２つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含む、前記取得するステップと；
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するステップと；を備え、
前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第１の値及び第２の値を含み、前記第１の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第２の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示し、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の前記第１の値の数を示し、前記ビットマップ相違は、前記ターゲット文字列ビットマップ内の各フラグビットの値及び前記候補文字列ビットマップ内の対応するフラグビットの値に対して排他的ＯＲ演算を行うことによって取得され、前記ビットマップ相違の前記ビットマップ重みは、前記ビットマップ相違において排他的ＯＲ値が真であるフラグビットの数を示す、
文字列距離計算方法。
【請求項２】
前記取得された関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記２つの文字列ビットマップの前記ビットマップ重みを含む場合において、
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除する前記ステップは：
前記候補文字列に対応する前記文字列ビットマップのビットマップ重みと前記ターゲット文字列に対応する前記文字列ビットマップのビットマップ重みとの間の相違が前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するステップを備える、
請求項１に記載の文字列距離計算方法。
【請求項３】
前記関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記２つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みを含む場合において、
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除する前記ステップは：
前記２つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するステップを備える、
請求項１に記載の文字列距離計算方法。
【請求項４】
前記候補文字列集合内の各候補文字列の文字列ビットマップ及び対応するビットマップ重みは、予め計算されて格納され、
前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得する前記ステップと、前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算する前記ステップとは：
前記ターゲット文字列が与えられる場合、前記ターゲット文字列の前記文字列ビットマップ及び前記対応するビットマップ重みを計算するステップと；
前記候補文字列に対応する前記ビットマップ重みと、前記ターゲット文字列に対応する前記ビットマップ重みとの間の相違が前記距離閾値よりも大きい場合、前記候補文字列の前記文字列ビットマップの前記予め格納されたビットマップ重みに基づいて、前記候補文字列集合から前記候補文字列を選別・排除し、残りの候補文字列が第１の候補文字列集合を形成するステップと；
前記ターゲット文字列及び前記第１の候補文字列集合内の各候補文字列の２つの文字列ビットマップ間のビットマップ相違を計算し、前記ビットマップ相違のビットマップ重みを計算し；前記候補文字列及び前記ターゲット文字列の前記２つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除して第２の候補文字列集合を取得するステップと；
前記ターゲット文字列と前記第２の候補文字列集合内の各候補文字列との間の文字列距離を計算するステップと；を備える、
請求項１に記載の文字列距離計算方法。
【請求項５】
与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するために用いられる文字列距離計算方法であって：
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得するステップと；
前記文字相違情報が相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し、前記候補文字列集合内の残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するステップと；を備える、
文字列距離計算方法。
【請求項６】
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得する前記ステップは：
第１の文字量及び第２の文字量を取得するステップであって、前記第１の文字量は前記候補文字列に含まれる相違文字の数を示し、前記第２の文字量は前記ターゲット文字列に含まれる相違文字の数を示す、第１の文字量及び第２の文字量を取得するステップと；
前記第１の文字量と前記第２の文字量との間の相違を計算し、前記相違を前記文字相違情報として用いるステップと；を備える、
請求項５に記載の文字列距離計算方法。
【請求項７】
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得する前記ステップは：
第３の文字量を取得するステップであって、前記第３の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示す、第３の文字量を取得するステップと；
前記第３の文字量を前記文字相違情報として用いるステップ；を備える、
請求項５に記載の文字列距離計算方法。
【請求項８】
前記候補文字列及び前記ターゲット文字列に備えられる文字の文字相違情報を取得し、前記文字相違情報が相違閾値よりも大きければ、前記候補文字列を前記候補文字列集合から選別・排除する前記ステップは：
第１の文字量と第２の文字量との間の相違を計算するステップであって、前記第１の文字量は前記候補文字列に含まれる相違文字の数を示し、前記第２の文字量は前記ターゲット文字列に含まれる相違文字の数を示す、前記計算するステップと；
前記相違が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除するステップと；
前記候補文字列集合内の残りの候補文字列を前記ターゲット文字列と比較し、第３の文字量を計算するステップであって、前記第３の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示す前記候補文字列集合内の残りの候補文字列を前記ターゲット文字列と比較する、前記計算するステップと；
前記第３の文字量が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除するステップと；を備える、
請求項５に記載の文字列距離計算方法。
【請求項９】
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得する前記ステップは：
文字列ビットマップを用いて前記候補文字列及び前記ターゲット文字列を表すステップであって、前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第１の値及び第２の値を含み、前記第１の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第２の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示す、前記表すステップと；
前記文字列ビットマップに基づいて前記文字相違情報を取得するステップと；を備える、
請求項５に記載の文字列距離計算方法。
【請求項１０】
前記文字列ビットマップに基づいて前記文字相違情報を取得する前記ステップは：
前記候補文字列及び前記ターゲット文字列に対応する前記２つの文字列ビットマップのビットマップ重みを計算するステップであって、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の第１の値の数を示す前記候補文字列及び前記ターゲット文字列に対応する、前記計算するステップと；
前記候補文字列に対応する前記文字列ビットマップの前記ビットマップ重みと前記ターゲット文字列に対応する前記文字列ビットマップの前記ビットマップ重みとの間の相違を計算するステップと；を備える、
請求項９に記載の文字列距離計算方法。
【請求項１１】
前記文字列ビットマップに基づいて前記文字相違情報を取得する前記ステップは：
前記ターゲット文字列ビットマップ内の各フラグビットの値と、前記候補文字列ビットマップ内の対応するフラグビットの値とに対して排他的ＯＲ演算を行って、ビットマップ相違を取得するステップと；
前記ビットマップ相違のビットマップ重みを計算するステップであって、前記ビットマップ重みは、前記ビットマップ相違において排他的ＯＲ値が真であるフラグビットの数を示す、前記計算するステップと；を備える、
請求項９に記載の文字列距離計算方法。
【請求項１２】
前記相違閾値は、文字列距離の距離閾値である、
請求項５乃至請求項１１のいずれか１項に記載の文字列距離計算方法。
【請求項１３】
与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するように構成された文字列距離計算装置であって：
前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得するように構成される情報取得モジュールであって、前記関連ビットマップ情報は、前記候補文字列及び前記ターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みと、２つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含み、前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第１の値及び第２の値を含み、前記第１の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第２の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示し、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の第１の値の数を示し、前記ビットマップ相違は、前記ターゲット文字列ビットマップ内の各フラグビットの値と、前記候補文字列ビットマップ内の対応するフラグビットの値とに対して排他的ＯＲ演算を行うことによって取得され、そして、前記ビットマップ相違の前記ビットマップ重みは、前記ビットマップ相違において排他的ＯＲ値が真であるフラグビットの数を示す、前記情報取得モジュールと；
前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するよう構成されるスクリーニングモジュールと；を備える、
文字列距離計算装置。
【請求項１４】
前記情報取得モジュールによって取得された前記関連ビットマップ情報が、前記候補文字列及び前記ターゲット文字列に対応する前記２つの文字列ビットマップの前記ビットマップ重みを含む場合、前記スクリーニングモジュールは、前記候補文字列に対応する前記文字列ビットマップのビットマップ重みと、前記ターゲット文字列に対応する前記文字列ビットマップのビットマップ重みとの間の相違が前記距離閾値よりも大きければ、前記候補文字列を選別して排除するように構成される、
請求項１３に記載の文字列距離計算装置。
【請求項１５】
前記情報取得モジュールによって取得された前記関連ビットマップ情報が前記候補文字列及び前記ターゲット文字列に対応する前記２つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みを含む場合、前記スクリーニングモジュールは、前記２つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除するように構成される、
請求項１３に記載の文字列距離計算装置。
【請求項１６】
前記スクリーニングモジュールは：
前記ターゲット文字列が与えられた場合、前記ターゲット文字列の前記文字列ビットマップ及び前記対応するビットマップ重みを計算するように構成される計算ユニットと；
前記候補文字列に対応する前記ビットマップ重みと、前記ターゲット文字列に対応するビットマップ重みとの間の相違が前記距離閾値よりも大きい場合、前記候補文字列の前記文字列ビットマップの前記予め格納されたビットマップ重みに基づいて、前記候補文字列集合から前記候補文字列を選別・排除するよう構成される第１のスクリーニングユニットであって、残りの候補文字列は第１の候補文字列集合を形成する、第１のスクリーニングユニットと；
前記ターゲット文字列及び前記第１の候補文字列集合内の各候補文字列の２つの文字列ビットマップ間のビットマップ相違を計算し、前記ビットマップ相違のビットマップ重みを計算し；前記候補文字列及び前記ターゲット文字列の前記２つの文字列ビットマップ間の前記ビットマップ相違の前記ビットマップ重みが前記距離閾値よりも大きい場合、前記候補文字列を選別・排除して、第２の候補文字列集合を取得するように構成される第２のスクリーニングユニットと；
前記ターゲット文字列と前記第２の候補文字列集合内の各候補文字列との間の文字列距離を計算するように構成される距離計算ユニットと；を備える、
請求項１３に記載の文字列距離計算装置。
【請求項１７】
候補文字列集合から与えられたターゲット文字列に類似する候補文字列を選択するように構成された文字列距離計算装置であって：
前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得するよう構成される相違取得モジュールと；
前記文字相違情報が相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し、前記候補文字列集合内の残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するように構成される距離計算モジュールと；を備える、
文字列距離計算装置。
【請求項１８】
前記相違取得モジュールは、第１の文字量及び第２の文字量を取得し、前記第１の文字量は前記候補文字列に含まれる相違文字の数を示しており、前記第２の文字量は前記ターゲット文字列に含まれる相違文字の数を示しており、前記第１の文字量と前記第２の文字量との間の相違を計算し、前記相違を前記文字相違情報として用いるよう構成される、
請求項１７に記載の文字列距離計算装置。
【請求項１９】
前記相違取得モジュールは、第３の文字量を取得し、前記第３の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示しており、前記第３の文字量を前記文字相違情報として用いるように構成される、
請求項１７に記載の文字列距離計算装置。
【請求項２０】
前記相違取得モジュールは、第１の文字量と第２の文字量との間の相違を計算し、前記第１の文字量は前記候補文字列に含まれる相違文字の数を示し、前記第２の文字量は前記ターゲット文字列に含まれる相違文字の数を示しており、前記候補文字列を前記ターゲット文字列と比較し、第３の文字量を計算し、前記第３の文字量は前記候補文字列及び前記ターゲット文字列のうちの一方だけに含まれる文字の数を示すよう構成され、
前記距離計算モジュールは、前記第１の文字量と前記第２の文字量との間の前記相違が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し；前記スクリーニング後の前記候補文字列集合内の残りの候補文字列に基づいて前記相違取得モジュールによって計算された前記第３の文字量が前記相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除するように構成される、
請求項１７に記載の文字列距離計算装置。
【請求項２１】
前記相違取得モジュールは：
文字列ビットマップを用いて前記候補文字列及び前記ターゲット文字列を表すよう構成されるビットマップ計算ユニットであって、前記文字列ビットマップは複数のフラグビットを含み、前記フラグビットの値は第１の値及び第２の値を含み、前記第１の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれていることを示し、前記第２の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれていないことを示す、文字列ビットマップを用いて前記候補文字列及び前記ターゲット文字列を表す、前記ビットマップ計算ユニットと；
前記文字列ビットマップに基づいて前記文字相違情報を取得するように構成される相違計算ユニットと；を備える、
請求項１７に記載の文字列距離計算装置。
【請求項２２】
前記相違計算ユニットは：
前記候補文字列及び前記ターゲット文字列に対応する前記２つの文字列ビットマップの、前記文字列ビットマップ内の第１の値の数を示すビットマップ重みを計算するように；及び、
前記候補文字列に対応する前記文字列ビットマップの前記ビットマップ重みと前記ターゲット文字列に対応する前記文字列ビットマップの前記ビットマップ重みとの間の相違を計算するように；構成される、
請求項２１に記載の文字列距離計算装置。
【請求項２３】
前記相違計算ユニットは：
前記ターゲット文字列ビットマップ内の各フラグビットの値と、前記候補文字列ビットマップ内の対応するフラグビットの値とに対して排他的ＯＲ演算を実行してビットマップ相違を取得するように；及び、
前記ビットマップ相違の、前記ビットマップ相違において排他的ＯＲ値が真であるフラグビットの数を示すビットマップ重みを計算するように；構成される、
請求項２１に記載の文字列距離計算装置。
【請求項２４】
前記相違閾値は文字列距離の距離閾値である、
請求項１７乃至請求項２３のいずれか１項に記載の文字列距離計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１６年２月２２日に提出され「文字列距離計算方法及び装置」と題された中国特許出願第２０１６１００９６５８９．９号の優先権を主張し、上記中国特許出願は参照によってその全体が本願に組み込まれる。
【０００２】
本願はネットワーク技術に関し、特に、文字列距離計算方法及び装置に関する。
【背景技術】
【０００３】
文字列距離計算は２つの文字列の間の類似性を特定するために用いることができる。例えば、与えられたターゲット文字列に類似する文字列集合内の文字列を識別するために、ターゲット文字列と集合内の各文字列との間の距離を計算することができ、ターゲット文字列への距離が所定の距離閾値未満である文字列は、ターゲット文字列に類似する文字列として特定される。しかし、この方法では、文字列集合内に多数の文字列が存在する場合に実行時間コストがかさむことになる。例えば、与えられたアドレスに類似する記録が何千万ものアドレスを含むデータベース内で検索されている場合、長い実行時間が必要となる。したがって、結果を迅速に得るためのアプリケーション要件を満足することはできない。
【発明の概要】
【０００４】
上記に鑑み、本願は、文字列距離計算を介して候補文字列集合内で類似文字列を検索する場合の、計算効率を向上させる文字列距離計算方法及び装置を提供する。
【０００５】
本願は、以下の技術的解決策を用いて実施される。
【０００６】
第１の態様に係る文字列距離計算方法は、与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するために用いられる文字列距離計算方法であって：前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得するステップであって、前記関連ビットマップ情報は、前記候補文字列及び前記ターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みと、２つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含む、前記取得するステップと；前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するステップと；を含み、前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第１の値及び第２の値を含み、前記第１の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第２の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示し、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の前記第１の値の数を示し、前記ビットマップ相違は、前記ターゲット文字列ビットマップ内の各フラグビットの値及び前記候補文字列ビットマップ内の対応するフラグビットの値に対して排他的ＯＲ演算を行うことによって取得され、前記ビットマップ相違の前記ビットマップ重みは、前記ビットマップ相違において排他的ＯＲ値が真であるフラグビットの数を示す、文字列距離計算方法を提供する。
【０００７】
第２の態様に係る文字列距離計算方法は、与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するために用いられる文字列距離計算方法であって：前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得するステップと；前記文字相違情報が相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し、前記候補文字列集合内の残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するステップと；を含む文字列距離計算方法を提供する。
【０００８】
第３の態様に係る文字列距離計算装置は、与えられたターゲット文字列に類似する候補文字列を候補文字列集合から選択するように構成された文字列距離計算装置であって：前記候補文字列及び前記ターゲット文字列の関連ビットマップ情報を取得するように構成される情報取得モジュールであって、前記関連ビットマップ情報は、前記候補文字列及び前記ターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みと、２つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含み、前記文字列ビットマップは、複数のフラグビットを含み、前記フラグビットの値は、第１の値及び第２の値を含み、前記第１の値は、前記フラグビットに対応する所定の標準文字が文字列内に含まれることを示し、前記第２の値は、前記フラグビットに対応する所定の標準文字が前記文字列内に含まれないことを示し、前記文字列ビットマップの前記ビットマップ重みは、前記文字列ビットマップ内の第１の値の数を示し、前記ビットマップ相違は、前記ターゲット文字列ビットマップ内の各フラグビットの値と、前記候補文字列ビットマップ内の対応するフラグビットの値とに対して排他的ＯＲ演算を行うことによって取得され、そして、前記ビットマップ相違の前記ビットマップ重みは、前記ビットマップ相違において排他的ＯＲ値が真であるフラグビットの数を示す、前記情報取得モジュールと；前記関連ビットマップ情報に基づいて、前記ターゲット文字列との文字列距離が前記候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するよう構成されるスクリーニングモジュールと；を含む文字列距離計算装置を提供する。
【０００９】
第４の態様に係る文字列距離計算装置は、候補文字列集合から与えられたターゲット文字列に類似する候補文字列を選択するように構成された文字列距離計算装置であって：前記候補文字列及び前記ターゲット文字列に含まれる文字の文字相違情報を取得するよう構成される相違取得モジュールと；前記文字相違情報が相違閾値よりも大きい場合、前記候補文字列を前記候補文字列集合から選別・排除し、前記候補文字列集合内の残りの各候補文字列と前記ターゲット文字列との間の文字列距離を計算するように構成される距離計算モジュールと；を含む文字列距離計算装置を提供する。
【００１０】
本願は、文字列距離計算方法及び装置を提供する。候補文字列によっては、候補文字列とターゲット文字列とに含まれる文字の文字距離情報、例えば関連ビットマップ情報に基づいて、候補文字列集合から予め選別・排除される。その後、残りの候補文字列とターゲット文字列との間の文字列距離が計算される。したがって、集合の大きさは、類似文字列が文字列距離計算を介して候補文字列集合内で検索される場合、大幅に縮小され、それによって計算効率は向上する。
【図面の簡単な説明】
【００１１】
【図１】図１は、本願の実施例に係る文字列距離計算方法を示すフローチャートである。
【００１２】
【図２】図２は、本願の実施例に係る文字列距離計算方法を示すフローチャートである。
【００１３】
【図３】図３は、本願の実施例に係る文字列距離計算方法を示すフローチャートである。
【００１４】
【図４】図４は、本願の実施例に係るコンピューティング装置を示す概略構造図である。
【００１５】
【図５】図５は、本願の実施例に係る文字列距離計算装置を示す構造図である。
【００１６】
【図６】図６は、本願の実施例に係る文字列距離計算装置を示す構造図である。
【００１７】
【図７】図７は、本願の実施例に係る文字列距離計算装置を示す構造図である。
【００１８】
【図８】図８は、本願の実施例に係る文字列距離計算装置を示す構造図である。
【発明を実施するための形態】
【００１９】
ここでは、実施例を詳細に説明し、各実施例を添付図面に示す。以下の説明が添付図面に関する場合、異なる添付図面における同じ符号は、別途指示がない限り、同一又は類似の構成要素を指す。以下の実施例において説明する実施方法は、本願と一致する全ての実施方法を表しているわけではなく、これらの実施方法は、本願の特許請求の範囲において詳細に述べる幾つかの態様に一致する装置及び方法の単なる例に過ぎない。
【００２０】
文字列距離計算は広く用いられている。例えば、アプリケーションシナリオにおいて、２つの文字列間の類似性は、データ解析中に２つの文字列間の文字列距離を計算することによって特定される。例えば、あるアドレス文字列が与えられると仮定する。与えられたアドレス文字列とあるアドレス文字列集合内の各文字列との間の文字列距離を計算して、与えられたアドレス文字列に類似する文字列がこの集合内に存在するかどうかを特定できる。仮に文字列距離が距離閾値の範囲に入った場合、集合内の文字列は与えられたアドレス文字列に類似する。
【００２１】
与えられた文字列と比較した場合、文字列集合の大きさは大きく、例えば、前記アドレス文字列集合は何千万ものアドレス文字列を含み、文字列距離計算中の実行時間コストは高い。本願の実施は、文字列距離計算の結果を迅速に取得し、且つ、高速に実行するためのアプリケーション要件を良好に満足させる文字列距離計算方法を提供する。このような方法は、文字列距離計算を大きい文字列集合で実行する場合であっても計算結果を迅速に取得できることを目的としている。
【００２２】
本実施において、上記与えられたアドレス文字列を「ターゲット文字列」と称することができ、上記アドレス文字列集合を「候補文字列集合」と称することができ、候補文字列集合内の各アドレス文字列を「候補文字列」と称することができる。
【００２３】
本願における文字列距離計算方法に基づいて、図１に示す手順を用いて、与えられたターゲット文字列に類似する候補文字列を、候補文字列集合から選択できる。
【００２４】
ステップ１０１：候補文字列とターゲット文字列とに含まれる文字の文字相違情報を取得する。
【００２５】
例えば、ターゲット文字列がＡＡであり、候補文字列集合内の候補文字列がＡＢＣＤである場合、このステップにおいて記述される文字相違情報は、ターゲット文字列に含まれる相違文字の数と、候補文字列に含まれる相違文字の数との間の差とすることができる。例えば、候補文字列が４つの異なる文字Ａ、Ｂ、Ｃ、及びＤを含み、ターゲット文字列が１種類の文字Ａを含む。
【００２６】
候補文字列に含まれる相違文字の数を第１の文字量と称し、ターゲット文字列に含まれる相違文字の数を第２の文字量と称する場合、第１の文字量と第２の文字量との間の差は３である、すなわち、文字相違情報は３である。このような場合、文字相違情報は、ターゲット文字列に含まれる相違文字の数と候補文字列に含まれる相違文字の数との間の差を示すことができる。
【００２７】
別の実施例として、文字相違情報は、更に、２つの文字列を互いに包括的に比較する場合の相違文字の数を含むことができる。例えば、候補文字列ＡＢＣＤをターゲット文字列ＡＡと比較する場合、Ａは２つの文字列に含まれる同一の文字であり、Ｂは候補文字列にのみ存在し、相違文字のうちの１つである。同様に、Ｃ及びＤも、ターゲット文字列ではなく、候補文字列のみに含まれる相違文字である。したがって、候補文字列をターゲット文字列と比較すると、３つの相違文字Ｂ、Ｃ、及びＤが存在する。第３の文字量は、候補文字列とターゲット文字列とのうちの一方だけに含まれる文字の数を示すために用いることができる。第３の文字量は本ステップにおいて取得される文字相違情報である。
【００２８】
ステップ１０２：先に計算された文字相違情報に基づいて、ターゲット文字列とは異なると特定された幾つかの候補文字列を、候補文字列集合から選別・排除（ｓｃｒｅｅｎ  ｏｕｔ）する。
【００２９】
第１の文字量と第２の文字量との間の差がステップ１０１で計算される。この差が大きいことは、候補文字列がターゲット文字列とは異なることを示す。例えば、第１の文字量と第２の文字量との間の差が、ターゲット文字列ＡＡと候補文字列ＡＢＣＤとに基づいて３であり、相違の閾値が１であれば、２つの文字列は互いに異なる、と特定できる。
【００３０】
別の実施例として、第３の文字量が相違閾値よりも大きい場合、それは、候補文字列が、ターゲット文字列に含まれる文字とは異なる多数の文字を含むことを示し、すなわち、２つの文字列が互いに異なることを示している。したがって、この候補文字列を選別・排除できる。
【００３１】
更に別の実施例として、ターゲット文字列とは異なる候補文字列を、第１の文字量、第２の文字量、及び第３の文字量に基づいて、より正確にまた包括的に選別・排除できる。例えば、候補文字列は、第１の文字量と第２の文字量との間の差が相違閾値よりも大きい場合、候補文字列集合から選別・排除される。その後、スクリーニング後の候補文字列集合内の残りの候補文字列上の第３の文字量に基づいて、スクリーニングがなされる。残りの候補文字列は、第３の文字量が相違閾値よりも大きい場合、候補文字列集合から選別・排除される。
【００３２】
例えば、ターゲット文字列がＡＡであり、且つ、候補文字列がＢＢであると仮定すると、第１の文字量と第２の文字量との間の差は、ターゲット文字列及び候補文字列がそれぞれ１種類の文字を含んでいるため、０である。したがって、上記差に基づいてこの候補文字列を選別・排除することはできない。しかし、第３の文字量が更に計算された場合、相違文字がＡ及びＢを含むため、第３の文字量は２である。距離閾値が１である場合、第３の文字量が距離閾値より大きいため、この候補文字列は選別・排除される。
【００３３】
本実施における文字列距離計算方法に基づいて、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、文字列距離計算の前に文字相違情報に基づいて最初に選別・排除される。その後、スクリーニング後に得られた残りの候補文字列とターゲット文字列との間の距離が計算される。したがって、候補文字列は最終的な文字列距離計算においては大幅に削減されており、それによって計算効率は向上する。
【００３４】
先の文字相違情報は複数の方法で得ることができる。例えば、相違情報は文字毎に文字列を比較することによって得られる。本願の以下の実施は、文字相違情報取得方法の一例を提供する。この方法において、候補文字列及びターゲット文字列は文字列ビットマップを用いて表すことができ、文字相違情報は文字列ビットマップに基づいて得ることができ、その結果、文字相違情報が迅速に得られ、処理効率は向上する。
【００３５】
文字列ビットマップに基づく文字相違情報取得方法は以下の概念に適用する。その方法を詳細に説明する前に、これらの概念を以下説明する。
【００３６】
文字列ビットマップ：例えば、複数のフラグビットを含むビットマップを予め特定でき、各フラグビットは１つの文字、例えば、英文字Ａ、Ｂ、Ｃ、・・・、Ｙ、及びＺに対応する。ビットマップ内のフラグビットに対応する文字を本実施において所定の標準文字と称することができる。下記表１はビットマップ構造の一例を示している。
【表１】
2019512127.tif 000003
【００３７】
表１を参照して、２６個の英文字に対応する２６個のフラグビットがあると仮定する。フラグビットは、右から左へ文字Ａ、Ｂ、Ｃ、・・・、及びＺに順次対応する。各フラグビットの値は第１の値又は第２の値であってもよい。例えば、本実施において、第１の値は１に設定され、第２の値は０に設定される。値を設定するための規則は以下の通りであってもよい。すなわち、フラグビットに対応する文字が、文字列のビットマップが計算される場合に文字列内にあるかどうかを特定する；肯定である場合、フラグビットの値を１に設定する；又は、否定である場合、フラグビットの値を０に設定する。全てのフラグビットの値が設定された後、文字列ビットマップが得られる。値を設定するための規則として、フラグビットに対応する文字が文字列内で少なくとも２回出現した場合、それでもフラグビットの値を１に設定することが更に含まれる。
【００３８】
実施例において、文字列「ＤＡＢＡ」のビットマップを計算する必要があると仮定する。表１を参照すると、ビットマップ内の各フラグビットに対応する所定の標準文字が文字列内にあるかどうかを特定してフラグビットの値を右から左へ識別できる。
【００３９】
標準文字Ａに対応するフラグビットの値を予め設定する：文字Ａは文字列「ＤＡＢＡ」内に存在する。所定の標準文字Ａに対応するフラグビットの値は１に設定される。たとえＡが２回出現し、文字列が２つのＡを含んでいたとしても、値は１に設定される。
【００４０】
標準文字Ｂに対応するフラグビットの値を予め設定する：文字Ｂは文字列「ＤＡＢＡ」内に存在する。所定の標準文字Ｂに対応するフラグビットの値は１に設定される。
【００４１】
標準文字Ｃに対応するフラグビットの値を予め設定する：文字Ｃは文字列「ＤＡＢＡ」内に存在しない。所定の標準文字Ｃに対応するフラグビットの値は０に設定される。
【００４２】
標準文字Ｄに対応するフラグビットの値を予め設定する：文字Ｄは文字列「ＤＡＢＡ」内に存在する。所定の標準文字Ｄに対応するフラグビットの値は１に設定される。
【００４３】
他のフラグビットの値は先の規則に従って設定され、詳細はここでは説明しない。最終的に、表１に示す構造内に２６個のフラグビットを含むビットマップの値は００００・・・００１０１１、すなわち、表１に示す値であってよい。その値は、先行する０の文字列を省略して「１０１１」と簡略化でき、文字列「ＤＡＢＡ」に対応する文字列ビットマップは「１０１１」である。
【００４４】
先の内容から、文字列ビットマップが複数のフラグビットを含み、各フラグビットの値は、フラグビットに対応する文字が文字列に含まれているかどうかを示すことが認識できる。フラグビットの値が第１の値である場合、フラグビットに対応する文字が文字列に含まれていることを示す。フラグビットの値が第２の値である場合、フラグビットに対応する文字が文字列に含まれていないことを示す。以下の実施における方法の説明に関する文字列ビットマップは、先の方法を用いて計算できる。加えて、以下の実施における方法の説明において、文字列ビットマップは、しばしばビットマップと称される。例えば、ターゲット文字列のビットマップ及び候補文字列のビットマップは、両方とも文字列ビットマップと称される。
【００４５】
加えて、フラグビットに対応する所定の標準文字は、必ずしも表１に示す構造における標準文字ではなく、文字列ビットマップ計算のための別の構造における標準文字であってもよい。例えば、文字は表２に示す実施例であってもよく、ここでＡ、Ｂ、及びＣからＺまでの文字を左から右へ配置してもよく、他の所定の標準文字を用いてもよい。
【表２】
2019512127.tif 000004
【００４６】
先の実施例において、２６個の英文字に対応する２６ビットマップ構造が一例として用いられることは傾注に値する。実際のアプリケーションにおいて、３２ビット未満の別のビットマップを用いることもできる。３２ビット未満の係るビットマップ構造設計は、主に、演算速度を向上させる高速ビットマップ計算を目的としている。したがって、ビットマップ構造は大き過ぎないように設計される。しかし、文字集合が大き過ぎない場合、より大きいデータ構造を用いてビットマップを格納することもできる。例えば、日本語の文字列を処理する必要がある場合、１２８ビットの大きい整数構造を用いてビットマップを表現できる。
【００４７】
加えて、先の実施例において、ビットマップ構造内の各フラグビットに対応する文字は英語大文字を用いて記述される。本願における方法の適用範囲を拡大するため、２６個の英語大文字以外の文字を含む文字列に対しては、前処理を行うことで、この方法をこの文字列に適用できるようにする。この前処理方法は、処理されるのを待っている文字列内の空白文字等の句読点を無視するステップと、ＵＮＩＣＯＤＥ  ＮＦＫＤ規格を用いて英語ではない幾つかの文字を対応する英文字に変換するステップとを含むが、これらに限定されない。例えば、「ｃａｆｅ（左に示す文字「ｅ」は、英文字の「ｅ」にアキュート・アクセントを付した文字である）」は「ｃａｆｅ」に変換され、全ての英語小文字は対応する英語大文字に変換される。
【００４８】
ビットマップ重み：ビットマップ重みは、文字列ビットマップ内の第１の値の数である。例えば、先の実施例において、文字列「ＤＡＢＡ」は、文字列ビットマップが表１の構造に基づいて計算される場合に文字列ビットマップ「１０１１」に対応し、文字列ビットマップ内の第１の値である１の数がビットマップ重みである。文字列ビットマップ「１０１１」のビットマップ重みは、文字列ビットマップが３つの１を含んでいるため、３である。
【００４９】
ビットマップ相違：ビットマップ相違は、バイナリ形式の排他的ＯＲ演算が２つの文字列の文字列ビットマップに関して行われた後に得られる。例えば、２つのビットマップ「１０１１」と「０１１１」との間のビットマップ相違が計算される。「１０１１」は第１のビットマップと称することができ、「０１１１」は第２のビットマップと称することができる。２つのビットマップはそれぞれ４つのフラグビットを含む。第１のビットマップ内の各フラグビットは第１のフラグビットと称することができ、第２のビットマップ内の各フラグビットは第２のフラグビットと称することができる。先の「第１」又は「第２」は、単に区別するためのものである。下記表３を参照する。
【表３】
2019512127.tif 000005
【００５０】
１つの第１のフラグビットは、１つの第２のフラグビットに対応することが表３から見て取れる。排他的ＯＲ演算は、第１のフラグビットの値及び対応する第２のフラグビットの値に対して行うことができる。例えば、第１のフラグビット「１」及び第２のフラグビット「０」の排他的ＯＲ値は「１」であり、第１のフラグビット「１」及び第２のフラグビット「１」の排他的ＯＲ値は「０」である。排他的ＯＲ演算の規則は以下の通りである。すなわち、２つの異なる値の排他的ＯＲ値は１（排他的ＯＲ値は真）であり、２つの同じ値の排他的ＯＲ値は０（排他的ＯＲ値は偽）である。全てのフラグビットに対応する、最終的に得られる排他的ＯＲ値「１１００」が、ビットマップ相違である。
【００５１】
ビットマップ相違は実際にはビットマップであり、ビットマップ相違は複数のフラグビットも含み、各フラグビットの値は、第１のフラグビットの値が第２のフラグビットの値と同じであるかどうかを示すことが認識できる。
【００５２】
ビットマップ相違の重み：ビットマップ相違もビットマップであるため、ビットマップ相違の重みとビットマップの重みとは同じ方法を用いて計算される。例えば、ビットマップ相違「１１００」の重みは「２」である、すなわち、ビットマップ相違の重みは、排他的ＯＲ値がビットマップ相違において真であるフラグビットの数を示している。
【００５３】
文字列距離：文字列距離は、文字列が別の文字列に変更される場合に追加、削除、又は置換される文字の最小数を示している。例えば、「ＡＢＣＥＦ」と「ＡＣＤＥＧ」との間の距離は３であり、変更点は、Ｂを削除し、Ｄを追加し、ＦをＧで置き換えることである。幾つかの従来の距離計算アルゴリズム、例えば、レーベンシュタイン（Ｌｅｖｅｎｓｈｔｅｉｎ）距離アルゴリズムを用いて文字列距離を計算でき、その詳細は説明しない。
【００５４】
本願の実施に係る文字列距離計算方法を以下説明する。この方法は、先に説明したビットマップ、ビットマップ重み、ビットマップ相違等に関連する。本実施における方法を図２に示す。
【００５５】
ステップ２０１：候補文字列及びターゲット文字列の関連ビットマップ情報を取得する。関連ビットマップ情報は、候補文字列及びターゲット文字列に対応する２つの文字列ビットマップのビットマップ重み、又は、候補文字列及びターゲット文字列の２つの文字列ビットマップ間のビットマップ相違のビットマップ重み、を含むことができる。
【００５６】
ステップ２０２：ステップ２０１で得られた関連ビットマップ情報に基づいて候補文字列集合から、ターゲット文字列とは明らかに異なる候補文字列を選別・排除し、次いで、その後に得られた残りの候補文字列とターゲット文字列との間の距離を計算する。ビットマップ重み及びビットマップ相違等の概念に関する先の説明に基づいて、ビットマップ重みは、文字列に含まれる相違文字を示すことができる、又は、２つの文字列に含まれる文字の相違を示すことができる。２つの文字列が互いに明らかに異なる場合、すなわち、一方の文字列に含まれる文字が他方の文字列に含まれる文字とは明らかに異なる場合は、その相違をビットマップ重みを用いて反映することで、異なる文字列を識別することができる。
【００５７】
本実施における文字距離計算方法に基づいて、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、ビットマップ重みを用いて選別・排除される。文字列距離計算に関係する文字列の数は、ターゲット文字列及び候補文字列の集合内の各文字列との間の距離を直接計算する方法と比べると、この方法を用いることで大幅に減り、それによって類似文字列を検索する速度が向上する。
【００５８】
候補文字列及びターゲット文字列の関連ビットマップ情報に基づいてスクリーニングを実行する幾つかの実施例を以下述べる。
【００５９】
実施例において、候補文字列及びターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みに基づいて、文字列に対してスクリーニングを実行できる。候補文字列に対応する文字列ビットマップのビットマップ重みと、ターゲット文字列に対応する文字列ビットマップのビットマップ重みとの間の相違が距離閾値よりも大きい場合、この候補文字列はターゲット文字列とは異なると特定され、この候補文字列は、候補文字列とターゲット文字列との間で行われる文字列距離計算の前に、選別・排除される。このような場合、候補文字列及びターゲット文字列の２つの文字列ビットマップのビットマップ重み間の相違が文字相違情報である。
【００６０】
例えば、文字列距離計算における距離閾値が１であると仮定すると、ターゲット文字列は「ＡＢＣＤ」であり、文字列のビットマップは「１１１１」であり、ビットマップ重みは４である。候補文字列が「ＡＡＡＡ」であると仮定すると、候補文字列のビットマップは「１」であり、ビットマップ重みは１である。２つのビットマップ重み間の相違は４−１＝３であり、相違３が距離閾値１よりも大きいので、候補文字列「ＡＡＡＡ」は選別・排除される。
【００６１】
２つの文字列の文字列ビットマップのビットマップ重み間の重み差が大きい場合、それは、２つの文字列が互いに大幅に異なることを示し、この候補文字列を選別・排除できることが、先の実施例から認識できる。
【００６２】
別の実施例において、スクリーニングは、候補文字列及びターゲット文字列に対応する２つの文字列ビットマップ間のビットマップ相違のビットマップ重みに基づき、文字列に対して実行できる。候補文字列及びターゲット文字列に対応する２つの文字列ビットマップ間のビットマップ相違のビットマップ重みが距離閾値よりも大きい場合、この候補文字列は選別・排除される。このような場合、候補文字列及びターゲット文字列の２つの文字列ビットマップ間のビットマップ相違のビットマップ重みが文字相違情報である。
【００６３】
この実施例において、ターゲット文字列とは明らかに異なる文字列は、ビットマップ相違の重みに基づいて選別・排除され得る。例えば、ターゲット文字列は「ＡＢＣ」である。候補文字列が「ＣＤ」である場合、２つの文字列間のビットマップ相違が計算される。「ＡＢＣ」のビットマップは０１１１であり、「ＣＤ」のビットマップは１１００である。排他的ＯＲ演算が２つのビットマップに対してなされてビットマップ相違１０１１を得る。ビットマップ相違の重みは３である。候補文字列「ＣＤ」は、ビットマップ相違の重み３が距離閾値１よりも大きいので、選別・排除され得る。
【００６４】
２つの文字列間の相違は、たとえ候補文字列内の相違文字の数がターゲット文字列内の相違文字の数に類似しているが、文字は完全に異なる文字であるような場合であっても、ビットマップ相違の重みに基づいて識別できることが先の実施例から認識できる。
【００６５】
先の２つの実施例において、ターゲット文字列とは異なる文字列は、スクーリングがビットマップ重みに基づいて文字列に対してなされる場合、文字列ビットマップの重み又はビットマップ相違の重みに基づいて選別・排除され得る。更に別の実施例において、スクリーニングは、より良好なスクリーニング効果を得るために、候補文字列及びターゲット文字列の２つの文字列ビットマップのビットマップ重み、並びに、２つの文字列ビットマップ間のビットマップ相違のビットマップ重みに基づいて、文字列に対して行うことができる。
【００６６】
例えば、ターゲット文字列が「ＡＢＣ」であり、且つ、候補文字列が「ＣＤ」である場合、「ＡＢＣ」のビットマップは０１１１であり、「ＣＤ」のビットマップは１１００であり、２つの文字列の文字列ビットマップのビットマップ重み間の相違は３−２＝１であり、これは距離閾値１の範囲内にある。しかし、２つの文字列間のビットマップ相違が計算された場合、ビットマップ相違１０１１の重みは３であり、これは距離閾値１よりも大きい。したがって、候補文字列「ＣＤ」はターゲット文字列とは異なると特定でき、選別・排除できる。
【００６７】
図３は、本願の実施の例に係る文字列距離計算方法の手順の実施例を示す。この実施例において、スクリーニングは、２つの文字列ビットマップのビットマップ重み及びビットマップ相違のビットマップ重みの両方に基づいて、文字列に対して実行される。
【００６８】
第１に、データベース内の候補文字列集合内の各候補文字列に対応するビットマップ及びビットマップ重みが計算され、次いで、データベースに格納される。ビットマップが計算される場合、計算コストはＯ（Ｎ）であり、Ｎは文字列長さである。ビットマップ重みが計算される場合、計算コストはＯ（０）であり、重みはＭＩＴ  ＨＡＫＭＥＭアルゴリズムを用いて計算できる。ビットマップ計算及びビットマップ重み計算については、先の概念説明部分を参照されたい。詳細は再度説明しない。候補文字列集合内の全ての候補文字列のビットマップは列（カラム）、すなわち、データベース内のビットマップ列に格納でき、全ての候補文字列のビットマップ重みは別の列、すなわち、データベース内の重み列に格納できる。インデックスは、後の計算プロセスにおいてインデックスに基づく高速計算を可能にするよう、重み列に対して設定される。
【００６９】
ステップ３０１：与えられたターゲット文字列を受け取り、ターゲット文字列に類似する文字列を候補文字列集合から選択する必要がある場合、ターゲット文字列の文字列ビットマップ及び対応するビットマップ重みを計算する。ここでも、計算コストはそれぞれ、Ｏ（Ｎ）及びＯ（０）である。
【００７０】
ステップ３０２：候補文字列の文字列ビットマップの予め格納されたビットマップ重みに基づいて、候補文字列集合から候補文字列を選別・排除して第１の候補文字列集合を得る。
【００７１】
このため、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、文字列ビットマップのビットマップ重みに基づいて、候補文字列集合から選別・排除され得る。候補文字列のビットマップ重みとターゲット文字列のビットマップ重みとの間の重み差が得られ、重み差は文字列距離計算において距離閾値と比較される。重み差が距離閾値の範囲に入る場合、候補文字列は第１の候補文字列集合に属し、そうでなければ、候補文字列は選別・排除され、第１の候補文字列集合に属さない。
【００７２】
例えば、距離閾値が１であると仮定すると、ターゲット文字列は「ＡＢＣＤ」であり、文字列のビットマップは「１１１１」であり、ビットマップ重みは４である。候補文字列が「ＡＢ」であると仮定すると、候補文字列のビットマップは「１１」であり、ビットマップ重みは２である。２つのビットマップ重み間の相違は４−２＝２である。相違２は距離閾値１よりも大きいため、候補文字列「ＡＢ」は選別・排除され、第１の候補文字列集合に属さない。加えて、本ステップにおいて、重み差を計算し、この重み差と距離閾値とを比較する際のランニングコストはＯ（０）である。
【００７３】
本ステップにおいて、ターゲット文字列とは明らかに異なる幾つかの候補文字列は、候補文字列の文字列ビットマップのビットマップ重みに基づいて選別・排除でき、第１の候補文字列集合を得ることができる。しかし、第１の候補文字列集合は、それでもなおターゲット文字列とは異なる幾つかの候補文字列を含み得る。
【００７４】
例えば、ターゲット文字列は「ＡＢＣ」であり、候補文字列が「ＣＤ」である場合、２つのビットマップ重みの間の相違は３−２＝１であり、重み差１は距離閾値１と等しく、閾値要件を満足する。したがって、この候補文字列は第１の候補文字列集合に分類される。しかし、「ＡＢＣ」及び「ＣＤ」は２つの異なる文字列であることは明らかである。したがって、ステップ３０３はこの実施例において実行され得る。
【００７５】
ステップ３０３：第１の候補文字列集合内の各候補文字列及びターゲット文字列の２つの文字列ビットマップ間のビットマップ相違を計算し、ビットマップ相違のビットマップ重みを計算し、ビットマップ相違のビットマップ重みに基づいて候補文字列を選別・排除して、第２の候補文字列集合を得る。
【００７６】
本ステップにおいて、特定及びスクリーニングが、更に、第１の候補文字列集合内の各候補文字列に対してなされ、第２の候補文字列集合を得る。本ステップにおけるスクリーニングはビットマップ相違の重みに基づく。ビットマップ相違の重みは２つのビットマップ間の詳細な相違を反映できる。第２の候補文字列集合内の各候補文字列は、候補文字列のビットマップとターゲット文字列のビットマップとの間のビットマップ相違の重みが距離閾値の範囲内にあるという条件を満足する。本ステップのランニングコストもＯ（０）であり、固定ステップを介して演算を完了できる。
【００７７】
先の実施例において、ターゲット文字列は「ＡＢＣ」であり、候補文字列は「ＣＤ」である。２つの文字列間のビットマップ重み差は閾値要件を満足し、候補文字列は第１の候補文字列集合に分類される。本ステップにおいて、２つの文字列のビットマップ相違が計算される。「ＡＢＣ」のビットマップは０１１１であり、「ＣＤ」のビットマップは１１００である。排他的ＯＲ演算が２つのビットマップに対してなされてビットマップ相違１０１１を得る。ビットマップ相違の重みは３である。候補文字列「ＣＤ」は、ビットマップ相違の重み３が距離閾値１よりも大きいので、選別・排除され得る。第２の候補文字列集合は、本ステップにおいて、スクリーニング操作が第１の候補文字列集合に対してなされた後に得られる。
【００７８】
ステップ３０４：ターゲット文字列と、第２の候補文字列集合内の各候補文字列との間の文字列距離を計算し、ターゲット文字列への文字列距離が距離閾値の範囲内にある候補文字列を選択する。
【００７９】
本ステップにおいて、ターゲット文字列と、ステップ３０３で得られた第２の候補文字列集合内の各候補文字列との間の文字列距離は、従来の距離アルゴリズムを用いて計算でき、ターゲット文字列への文字列距離が距離閾値の範囲に入る候補文字列は、選択され、ターゲット文字列に類似する文字列として特定される。ランニングコストは、ターゲット文字列と候補文字列との間の文字列距離が計算される場合、Ｏ（Ｎ）×Ｏ（Ｍ）である。ここで、Ｎはターゲット文字列の長さであり、Ｍは候補文字列の長さである。
【００８０】
加えて、先の方法が本実施において実行される前に、例えば、ターゲット文字列との文字列長さの相違が長さ相違閾値よりも大きい候補文字列を選別・排除する別のスクリーニング方法で、プレ・スクリーニングを実行できる。
【００８１】
本実施における文字列距離計算方法に基づいて、文字列によっては、文字列距離計算に最終的に関係する候補文字列の数が大幅に減るように、文字列距離計算の前に文字列のビットマップ及びビットマップ重み等の要因に基づいて、候補文字列集合から選別・排除される。文字列距離計算は、ランニングコストが高く、実行時間が長い計算プロセスである。ランニングコストはＯ（Ｎ）×Ｏ（Ｍ）である。文字列距離計算に関係する候補文字列は先の方法を用いて大幅に低減され、その結果、計算性能は大きく向上する。実試験後の計算性能は、アドレス類似性を計算するプロジェクトに本願の方法を適用することによって約１０００倍に向上する。
【００８２】
本願の実施における文字列距離計算方法は、図４に示すコンピューティング装置によって実行できる。例えば、コンピューティング装置はサーバであってもよい。コンピューティング装置は、プロセッサ４１０、通信インターフェース４２０、メモリ４３０、及びバス４４０を含むことができる。プロセッサ４１０、通信インターフェース４２０、及びメモリ４３０は、バス４４０を介して互いに通信する。アプリケーションシナリオの例は以下の通りであってもよい。すなわち、サービスユーザのアドレス文字列を含むサービス情報を受け取る場合、コンピューティング装置はアドレス文字列をターゲット文字列として用い、予め格納されているブラックリストアドレスライブラリを候補文字列集合として用い、ターゲット文字列が集合内にあるかどうかを特定でき、肯定である場合、ユーザがサービスを継続することを認めない。
【００８３】
図４に示すように、コンピューティング装置内のメモリ４３０は、文字列距離計算のための論理命令を格納できる。メモリは、例えば、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）であってもよい。プロセッサ４１０は、メモリ４３０内の文字列距離計算のための論理命令を呼び出して、本願の実施における文字列距離計算方法を実行できる。
【００８４】
文字列距離計算のための論理命令は、論理命令の機能がソフトウェア機能ユニットの形態で実施され、独立した製品として販売又は用いられる場合に、コンピュータ読取り可能な記憶媒体に格納できる。かかる理解に基づいて、本質的に本開示の技術的解決策、又は既存の技術に寄与する部分、若しくは技術的解決策の幾つかは、ソフトウェア製品の形態で実施できる。ソフトウェア製品は記憶媒体に格納され、本開示の実施において説明した方法のステップの全て又は幾つかを実行するようコンピューティング装置（パーソナルコンピュータ、サーバ、ネットワーク装置等であってもよい）に命令するための幾つかの命令を含んでいる。先の記憶媒体としては、プログラムコードを格納できる任意の媒体、例えば、ＵＳＢフラッシュドライブ、着脱式ハードディスク、読出し専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク、又は光ディスクが挙げられる。
【００８５】
文字列距離計算のための先の論理命令は「文字列距離計算装置」と称することができる。この装置を機能モジュールに分割できる。図５に示すように、装置は、情報取得モジュール５１及びスクリーニングモジュール５２を含むことができる。
【００８６】
情報取得モジュール５１は、候補文字列及びターゲット文字列の関連ビットマップ情報を取得するよう構成される。関連ビットマップ情報は、候補文字列及びターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みと、２つの文字列ビットマップ間のビットマップ相違のビットマップ重みとのうちの少なくとも一方を含む。文字列ビットマップは、複数のフラグビットを含む。フラグビットの値は、第１の値及び第２の値を含む。第１の値は、フラグビットに対応する所定の標準文字が文字列に含まれていることを示し、第２の値は、フラグビットに対応する所定の標準文字が文字列に含まれていないことを示す。文字列ビットマップのビットマップ重みは、文字列ビットマップ内の第１の値の数を示す。ビットマップ相違は、ターゲット文字列ビットマップ内の各フラグビットの値及び候補文字列ビットマップ内の対応するフラグビットの値に対して排他的ＯＲ演算を行うことによって得られる。ビットマップ相違のビットマップ重みは、排他的ＯＲ値がビットマップ相違において真であるフラグビットの数を示している。
【００８７】
スクリーニングモジュール５２は、関連ビットマップ情報に基づいて、ターゲット文字列への文字列距離が候補文字列集合における距離閾値よりも大きい候補文字列を選別・排除し、残りの各候補文字列とターゲット文字列との間の文字列距離を計算するように構成される。
【００８８】
実施例において、情報取得モジュール５１によって得られた関連ビットマップ情報が候補文字列及びターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みを含む場合には、スクリーニングモジュール５２は、候補文字列に対応する文字列ビットマップのビットマップ重みとターゲット文字列に対応する文字列ビットマップのビットマップ重みとの間の相違が距離閾値よりも大きければ、候補文字列を選別・排除するように構成される。
【００８９】
実施例において、情報取得モジュール５１によって得られた関連ビットマップ情報が候補文字列及びターゲット文字列に対応する２つの文字列ビットマップ間のビットマップ相違のビットマップ重みを含む場合には、スクリーニングモジュール５２は、２つの文字列ビットマップ間のビットマップ相違のビットマップ重みが距離閾値よりも大きければ、候補文字列を選別・排除するように構成される。
【００９０】
実施例において、図６に示すように、装置内のスクリーニングモジュール５２は、計算ユニット５２１、第１のスクリーニングユニット５２２、第２のスクリーニングユニット５２３及び距離計算ユニット５２４を含むことができる。
【００９１】
計算ユニット５２１は、ターゲット文字列が与えられる場合、ターゲット文字列の文字列ビットマップと、対応するビットマップ重みとを計算するように構成される。
【００９２】
第１のスクリーニングユニット５２２は、候補文字列に対応するビットマップ重みとターゲット文字列に対応するビットマップ重みとの間の相違が距離閾値よりも大きければ、候補文字列の文字列ビットマップの予め格納されたビットマップ重みに基づいて、候補文字列集合から候補文字列を選別・排除し、ここで残りの候補文字列は第１の候補文字列集合を形成するように、構成される。
【００９３】
第２のスクリーニングユニット５２３は、ターゲット文字列及び第１の候補文字列集合内の各候補文字列の２つの文字列ビットマップ間のビットマップ相違を計算し、ビットマップ相違のビットマップ重みを計算し、候補文字列及びターゲット文字列の２つの文字列ビットマップ間のビットマップ相違のビットマップ重みが距離閾値よりも大きければ、候補文字列を選別・排除して、第２の候補文字列集合を得るように、構成される。
【００９４】
距離計算ユニット５２４は、ターゲット文字列と第２の候補文字列集合内の各候補文字列との間の文字列距離を計算するように構成される。
【００９５】
文字列距離計算のための論理命令における先の「文字列距離計算装置」は、図７に示す構造を有することができる。この装置は、相違取得モジュール７１及び距離計算モジュール７２を含むことができる。
【００９６】
相違取得モジュール７１は、候補文字列とターゲット文字列とに含まれる文字の文字相違情報を取得するように構成される。
【００９７】
距離計算モジュール７２は、文字相違情報が相違閾値よりも大きければ、候補文字列を候補文字列集合から選別・排除し、候補文字列集合内の残りの各候補文字列とターゲット文字列との間の文字列距離を計算するように、構成される。
【００９８】
実施例において、相違取得モジュール７１は、第１の文字量及び第２の文字量を取得し、ここで第１の文字量は候補文字列に含まれる相違文字の数を示しており、第２の文字量はターゲット文字列に含まれる相違文字の数を示しており、そして、第１の文字量と第２の文字量との間の相違を計算し、この相違を文字相違情報として用いるように、構成される。
【００９９】
実施例において、相違取得モジュール７１は、第３の文字量を取得し、ここで第３の文字量は候補文字列及びターゲット文字列のうちの一方だけに含まれる文字の数を示しており、第３の文字量を文字相違情報として用いるように、構成される。
【０１００】
実施例において、相違取得モジュール７１は、第１の文字量と第２の文字量との間の相違を計算し、ここで第１の文字量は候補文字列に含まれる相違文字の数を示しており、第２の文字量はターゲット文字列に含まれる相違文字の数を示しており、そして、候補文字列をターゲット文字列と比較し、第３の文字量を計算するように構成される。ここで、第３の文字量は候補文字列及びターゲット文字列のうちの一方だけに含まれる文字の数を示している。
距離計算モジュール７２は、第１の文字量と第２の文字量との間の相違が相違閾値よりも大きければ、候補文字列を、候補文字列集合から選別・排除するように、そして、スクリーニング後の候補文字列集合内の残りの候補文字列に基づいて相違取得モジュールによって計算された第３の文字量が相違閾値よりも大きければ、候補文字列を候補文字列集合から選別・排除するように、構成される。
【０１０１】
図８に示すように、前記装置内の相違取得モジュール７１は、ビットマップ計算ユニット７１１及び相違計算ユニット７１２を含むことができる。
【０１０２】
ビットマップ計算ユニット７１１は、文字列ビットマップを用いて候補文字列及びターゲット文字列を表すように構成される。文字列ビットマップは、複数のフラグビットを含む。フラグビットの値は、第１の値及び第２の値を含む。第１の値は、フラグビットに対応する所定の標準文字が文字列に含まれていることを示し、第２の値は、フラグビットに対応する所定の標準文字が文字列に含まれていないことを示す。
【０１０３】
相違計算ユニット７１２は、文字列ビットマップに基づいて文字相違情報を取得するように構成される。
【０１０４】
実施例において、相違計算ユニット７１２は、候補文字列及びターゲット文字列に対応する２つの文字列ビットマップのビットマップ重みを計算し、ここで文字列ビットマップのビットマップ重みは、文字列ビットマップ内の第１の値の数を示しており、そして、候補文字列に対応する文字列ビットマップのビットマップ重みとターゲット文字列に対応する文字列ビットマップのビットマップ重みとの間の相違を計算するように、構成される。
【０１０５】
実施例において、相違計算ユニット７１２は、ターゲット文字列ビットマップ内の各フラグビットの値と、候補文字列ビットマップ内の対応するフラグビットの値とに対する排他的ＯＲ演算を実行してビットマップ相違を取得するように、そして、ビットマップ相違のビットマップ重みを計算するように、構成される。ここでビットマップ重みは、ビットマップ相違において排他的ＯＲ値が真であるフラグビットの数を示している。
【０１０６】
実施例において、相違閾値は文字列距離のための距離閾値である。
【０１０７】
先の記載は本願の実施の例に過ぎず、本願を限定する意図はない。本願の主旨及び原理から逸脱することなくなされる任意の変形、均等物との置き換え、及び改良は、本願の保護適用範囲内に含まれる。
【符号の説明】
【０１０８】
４１０  プロセッサ
４２０  通信インターフェース
４３０  メモリ
４４０  バス
５１  情報取得モジュール
５２  スクリーニングモジュール
５２１  計算ユニット
５２２  第１のスクリーニングユニット
５２３  第２のスクリーニングユニット
５２４  距離計算ユニット
７１  相違取得モジュール
７２  距離計算モジュール
７１１  ビットマップ計算ユニット
７１２  相違計算ユニット
【図１】
2019512127.tif 000006
【図２】
2019512127.tif 000007
【図３】
2019512127.tif 000008
【図４】
2019512127.tif 000009
【図５】
2019512127.tif 000010
【図６】
2019512127.tif 000011
【図７】
2019512127.tif 000012
【図８】
2019512127.tif 000013
【国際調査報告】
2019512127.tif 000014
2019512127.tif 000015
2019512127.tif 000016
2019512127.tif 000017