(57)【要約】複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する結合処理装置が、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する結合処理手段を備える。
2012104943.tif 000002
【特許請求の範囲】
【請求項１】
複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する結合処理装置において、
前記各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する結合処理手段、
を備えることを特徴とする結合処理装置。
【請求項２】
複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する複数の結合処理装置と通信可能に接続されるデータ管理装置において、
複数のタプルを格納するデータ格納手段と、
前記複数の結合処理装置の中から、前記データ格納手段に格納される各タプルを処理させる結合処理装置を各タプルの分配先として決定する際に、当該各タプルの分配先を、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に含まれる少なくとも１つの文字を、結合キー文字列の中の当該端部分に含む他のタプルと同じ分配先にそれぞれ決定し、かつ、各タプルの結合キー文字列の中の当該端部分に共通する文字を持たない他のタプルとは同じ分配先にならないようにそれぞれ決定するデータ分配手段と、
を備えることを特徴とするデータ管理装置。
【請求項３】
少なくとも１つのデータ管理装置、及び、この少なくとも１つのデータ管理装置で保持される複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する複数の結合処理装置を含む文字列類似結合システムにおいて、
前記少なくとも１つのデータ管理装置は、
前記各タプルの結合キー文字列に関し、先頭文字からｉ（ｉは（τ＋１）以下の正の整数の各々）番目の文字から末尾文字までの末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプル特定データとの組み合わせ、又は、末尾文字からｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプル特定データとの組み合わせを含むキー情報タプルを（τ＋１）個それぞれ生成するキー情報生成手段と、
前記キー情報生成手段により生成された各キー情報タプルに含まれる末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字に基づいて、当該各キー情報タプルの分配先を決定し、当該各キー情報タプルを、分配先として決定された各結合処理装置に各タプルのデータとしてそれぞれ分配するデータ分配手段と、
を備え、
前記複数の結合処理装置はそれぞれ、
前記少なくとも１つのデータ管理装置から分配された複数のキー情報タプルを受信する受信手段と、
前記受信手段により受信された複数のキー情報タプルのうち、前記末尾部分文字列の先頭文字又は前記先頭部分文字列の末尾文字が共通するキー情報タプル集合毎に、前記類似結合処理を実行する結合処理手段と、
を備えることを特徴とする文字列類似結合システム。
【請求項４】
前記複数の結合処理装置はそれぞれ、
前記受信手段により受信された複数のキー情報タプルの各ペアに関し、末尾部分文字列間又は先頭部分文字列間の編集距離を部分文字列編集距離としてそれぞれ算出し、算出された部分文字列編集距離が前記編集距離閾値τの条件を満たすキー情報タプルの各ペアに関し、当該部分文字列編集距離と、大きい方の先頭部分文字列の文字列長又は大きい方の末尾部分文字列の文字列長とを加算することにより、編集距離推定値をそれぞれ算出する推定値算出手段、
を更に備え、
前記結合処理手段は、前記推定値算出手段により算出された各編集距離推定値と前記編集距離閾値τとの比較結果に基づいて、編集距離が前記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する、
ことを特徴とする請求項３に記載の文字列類似結合システム。
【請求項５】
前記複数の結合処理装置はそれぞれ、
前記受信手段により受信された複数のキー情報タプルに基づいて、前記先頭部分文字列又は前記末尾部分文字列の文字列長を重み値として管理するトライ木であって、前記末尾部分文字列又は前記先頭部分文字列がルートノードからエッジノードまでの枝にマッピングされたトライ木を構築するトライ木構築手段、
を更に備え、
前記結合処理手段は、前記トライ木構築手段により構築されたトライ木に含まれる各対象ノードに関し、対象ノードにより特定される文字列と他ノードで特定される文字列との間の編集距離と、対象ノード及び他ノードの重み値のうち大きい方の重み値とを加算することにより、他ノードのための編集距離推定値をそれぞれ算出し、当該編集距離推定値が前記編集距離閾値τの条件を満たす他ノードの情報及び当該編集距離推定値を含むリストを各対象ノードに関しそれぞれ設定し、エッジノードに設定されたリストに基づいて、編集距離が前記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する、
ことを特徴とする請求項３に記載の文字列類似結合システム。
【請求項６】
前記結合処理手段は、親ノードに設定されたリストに含まれる他ノードの情報に基づいて、各対象ノードの編集距離推定値の計算対象となる他ノードを選択する、
ことを特徴とする請求項５に記載の文字列類似結合システム。
【請求項７】
前記トライ木構築手段は、同一のタプル特定データを持つ複数のキー情報タプルの前記末尾部分文字列又は前記先頭部分文字列を前記トライ木の１つの枝及び当該１つの枝の少なくとも１部分にマッピングし、前記トライ木のルートノードに、当該１つの枝の少なくとも１部分を特定するためのノードポインタを前記重み値と共に設定する、
ことを特徴とする請求項５又は６に記載の文字列類似結合システム。
【請求項８】
前記少なくとも１つのデータ管理装置及び前記複数の結合処理装置と通信可能なシステム制御装置を更に含み、
前記各結合処理装置の前記結合処理手段は、前記特定された各ペアに関し、タプル特定データのペア及び編集距離推定値を含む結果タプルをそれぞれ生成し、生成された各結果タプルをそれぞれ前記システム制御装置に送信し、
前記システム制御装置は、
前記複数の結合処理装置から送られた複数の結果タプルの中から同じタプル特定データのペアを含む重複結果タプルを検出し、検出された重複結果タプルの中から最小の編集距離推定値を持つ結果タプル以外の結果タプルを削除することにより、編集距離が前記編集距離閾値τの条件を満たすタプルのペアを決定する結果生成手段、
を備えることを特徴とする請求項４から７のいずれか１項に記載の文字列類似結合システム。
【請求項９】
複数のタプルを対象に編集距離閾値τ（正の整数）を用いて実行される文字列類似結合方法において、
少なくとも１つのコンピュータが、
前記各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する、
ことを含む文字列類似結合方法。
【請求項１０】
複数のタプルを対象に編集距離閾値τ（正の整数）を用いて文字列類似結合を少なくとも１つのコンピュータに実行させるプログラムにおいて、
前記少なくとも１つのコンピュータに、
前記各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する結合処理手段、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字列類似結合技術に関する。
【背景技術】
【０００２】
文字列類似結合（String Similarity Join）は、要素集合Ｓ及びＲの中から、各要素にそれぞれ含まれる文字列間の距離が閾値条件を満足する、要素集合Ｓの任意の要素ｓと要素集合Ｒの任意の要素ｒとのペアを全て検出する技術である。文字列間の距離の尺度には、ジャッカード尺度、コサイン尺度、編集距離など、性質の異なる複数の種類が存在する。【０００３】
編集距離とは、一つの文字列を別の文字列に変換させるのに必要な手順（文字の挿入、削除又は置換）の最小回数を示す。例えば、２つの文字列「ｋｉｔｔｅｎ」と「ｓｉｔｔｉｎｇ」との間の編集距離を算出するためには、「ｋｉｔｔｅｎ」（又は「ｓｉｔｔｉｎｇ」）に対して、文字の挿入、削除又は置換の手順を何回実行すれば、「ｓｉｔｔｉｎｇ」（又は「ｋｉｔｔｅｎ」）に変換できるのかを考えればよい。この場合、「ｋ」を「ｓ」に置換し、かつ、「ｅ」を「ｉ」に置換し、かつ、「ｇ」を挿入すれば、文字列「ｋｉｔｔｅｎ」は文字列「ｓｉｔｔｉｎｇ」に変換される。よって、文字列「ｋｉｔｔｅｎ」と文字列「ｓｉｔｔｉｎｇ」との間の編集距離は、３（２回の置換及び１回の挿入）となる。【０００４】
以降、文字列類似結合は、省略して単に文字列結合又は結合と表記される場合もある。また、文字列類似結合の入力となるタプル集合は、データ又は入力データと表記される場合もある。各タプル集合は、少なくとも１つのタプルをそれぞれ含む。タプルは、複数の属性値から形成される。入力データに含まれる各タプルは、少なくとも１つの文字列を属性値としてそれぞれ含む。以降、属性値が文字列である属性は文字列属性と表記される場合もある。文字列類似結合のキーとして使用される文字列属性は結合キー属性と表記され、結合キー属性の値は結合キー又は結合キー文字列と表記される。【０００５】
図２０は、編集距離を用いた文字列類似結合の例を概念的に示す図である。図２０の例では、タプル集合Ｓ及びＲが入力データである。入力データＳ及びＲは、「品番」という文字列属性をそれぞれ持ち、この「品番」は結合キー属性として利用される。文字列類似結合では、入力データＳに含まれるタプルｓの結合キーと入力データＲに含まれるタプルｒの結合キーとの間の編集距離が所定閾値（例えば、２）以下となるタプルｓとタプルｒとの全てのペアが検出される。【０００６】
以降、タプルｓの結合キーとタプルｒの結合キーとの間の編集距離は、タプルｓ及びｒの編集距離、タプルペア（ｓ、ｒ）の編集距離、又は、タプルｓとタプルｒとの間の編集距離と表記する場合がある。また、或るタプルペアの編集距離が所定閾値τ以下であるとき、そのペアのタプルｓ及びｒは類似すると表記される。【０００７】
図２０の左下の表は、上述のような文字列類似結合処理の出力結果を示す。図２０の例では、編集距離が２以下となる４つのペアが出力されている。図２０の例によれば、出力されたペアの各タプルは、タプルを特定するためのタプル識別子とそのタプルを含むタプル集合（データ）を特定するためのデータ識別子とから形成されるタプルポインタを用いてそれぞれ示される。タプル識別子は、属性ＴＩＤの値である。そして、例えば、図２０の左下の表の１行目は、タプルポインタ（Ｓ：１０１）で示されるタプルｓとタプルポインタ（Ｒ：２０１）で示されるタプルｒとのペアを示す。図２０の例によれば、タプルｓは、入力データＳの属性ＴＩＤの値が１０１であるタプルであり、タプルｒは、入力データＲの属性ＴＩＤの値が２０１であるタプルである。【０００８】
図２０の右下の表は、左下の表で示される文字列類似結合処理結果に含まれる各ペアのタプルｓ及びタプルｒを一つのタプルとしてそれぞれ結合した結果を示す。【０００９】
このような編集距離を用いた文字列類似結合の手法が、例えば、下記非特許文献１乃至４で提案されている。これら手法では、ターゲットとする入力データの平均文字列長の長短により異なるアプローチが採られている。ここで、入力データの平均文字列長とは、入力タプルの結合キーである文字列の長さ（文字の数）の平均を示す。よって、入力データに含まれる各タプルの結合キーの文字列の長さが平均して短いとき、その入力データは平均文字列長が短いと表記される。【００１０】
非特許文献１乃至３で提案される手法は、文章（テキスト）等のように平均文字列長が比較的長い入力データをターゲットとする。一般的には、長い文字列間の編集距離の計算には時間が掛かるため、平均文字列長が長いデータをターゲットとする場合には、文字列結合処理の時間は大きくなる。そこで、非特許文献１乃至３で提案される手法は、結合キーをシグネチャ化することにより短いビット列に変換し、シグネチャ同士の距離（又は類似度）を計算することにより、類似する可能性のあるタプルのペアを候補として残す（フィルタリングする）。結果、入力タプルの全てのペアの中からフィルタリングされたペアに関してのみ編集距離を算出する（リファインする）ことにより、文字列類似結合処理の高速化が行われる。【００１１】
非特許文献４は、平均文字列長が比較的短いデータをターゲットとし、ｆｉｌｔｅｒ−ａｎｄ−ｒｅｆｉｎｅアプローチと異なるアプローチを提案している。非特許文献４で提案される手法は、まず、入力データＳ及びＲの全ての結合キーを１つのトライ木（Ｔｒｉｅ）に格納する。トライ木とは、複数の文字列を圧縮して表現することができ、文字列に対するインデックスとしてしばしば使用されるデータ構造である。一般に、短い文字列の集合を格納したトライ木は、比較的短い時間でその木を探索することが出来る。非特許文献４で提案される手法は、全ての結合キーを格納したトライ木を探索して結合キー同士の編集距離を算出することで、平均文字列長が短いデータに対する結合を比較的高速に行う。【００１２】
上述のとおり、文字列類似結合では、入力データＳ及びＲの各タプルの全ペアに関し、編集距離が計算されるため、入力データＳ及びＲのデータ量が大きくなるほど多大な処理時間を要する。そこで、非特許文献５及び６は、全体的な処理時間を短縮させるために、文字列類似結合を並列処理する手法を提案する。非特許文献５で提案される手法は、ｆｉｌｔｅｒ−ａｎｄ−ｒｅｆｉｎｅアプローチを並列化しており、平均文字列長が長いデータに適している。非特許文献６で提案される手法は、編集距離とは異なる距離尺度を採用し、当該距離尺度の性質を利用し、文字列類似結合の並列処理を実現する。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】A. Arasu， V. Ganti， R. Kaushik, "Efficient Exact Set-Similarity Joins", In VLDB, pages 918-929, 2006．
【非特許文献２】R. J. Bayardo, Y. Ma, R. Srikant, "Scaling up all pairs similarity search", In WWW, pages 131-140, 2007.
【非特許文献３】C. Xiao, W. W. 0011, X. Lin, "Ed-Join: An Efficient Algorithm for Similarity Joins With Edit Distance Constraints", PVLDB, 1(1):933-944, 2008.
【非特許文献４】J. Wang, J. Feng, G. Li, "Trie-Join: Efficient Trie-based String Similarity Joins with Edit-Distance Constraint", VLDB, 2010.
【非特許文献５】Hanmei E, K. Baba, Yunqing Yu, K. Murakami, "Bit-parallel Computation for Wavefront Algorithm", Research reports on information science and electrical engineering of Kyushu University, 12(1), p1-6, 2007-03.
【非特許文献６】R. Vernica, M. J. Carey, C. Li, "Efficient Parallel Set-Similarity Joins Using MapReduce", SIGMOD 2010.
【発明の概要】
【００１４】
しかしながら、上述のような文字列類似結合手法及びその並列処理手法では、適切なパフォーマンスを得るためには、入力データの結合キーや文字列に対する距離尺度等に何らかの制約が必要となる。例えば、ｆｉｌｔｅｒ−ａｎｄ−ｒｅｆｉｎｅアプローチは、平均文字列長が短いデータには適さない。フィルタリング後もなお膨大な数の候補が残り易いため、リファイン処理に多大な時間を要するからである。また、非特許文献５及び６で提案される手法は、文字列に対する距離尺度として編集距離を利用する文字列類似結合を対象としていない。
【００１５】
ここで、編集距離を利用した文字列類似結合の並列処理の単純な手法として、以下のような手法が考えられる。例えば、ｍ個のタプルを含むデータＳとｎ（ｍ≧ｎ）個のタプルを含むデータＲとをターゲットとして、Ｎ個の処理ホストを用いて結合処理を並列に行うと仮定する。
【００１６】
このとき、データＲを保持するデータホストは、データＲの複製をＮ個生成し、各データＲを各処理ホストへそれぞれ分配する。一方、データＳを保持するデータホストは、データＳをＮ個の部分集合に分割し、各部分集合を各処理ホストにそれぞれ分配する。各処理ホストは、各データホストからそれぞれ分配されたデータに基づいて、ｎ個のタプルと（ｍ／Ｎ）個のタプルとに関し結合を行う。この手法によれば、データＳに含まれるタプルｓとデータＲに含まれるタプルｒとの全てのペアの編集距離を計算することができ、かつ、閾値を満足するペアを過不足なく検出することができる。
【００１７】
上記データホストは、データ管理装置とも表記される。また、上記処理ホストは、結合処理装置とも表記される。
【００１８】
この手法では、全体として、（Ｎ×ｎ＋ｍ）個のタプルが処理されることになる。よって、ｍ、ｎ及びＮの各値が大きくなると、データＲをＮ個複製するのに多大な時間を要する上に、データホストから処理ホストへの通信コストが増大する。並列処理では、通常、全体の処理コストの中での通信コストの占める割合は大きいため、通信コストの増大は無視できない問題である。即ち、このような手法では、入力データの量が大きく、かつ、分配先の処理ホストが多い場合、全体の処理時間は増大する。
【００１９】
このように、編集距離を用いた文字列類似結合においては、入力データが大きいほど処理時間が増大するため、結合処理の並列化により処理時間の短縮が図られる。しかしながら、並列に結合処理を行う場合、データＳ及びＲにおける全てのペアが結合対象として複数の処理ホストに分配される必要がある。言い換えれば、検出されるべき類似のペアの取りこぼしがないように、データＳ及びＲが分配されなければならない。
【００２０】
本発明の目的は、編集距離を用いた文字列類似結合を適切かつ高速に実行する技術を提供することにある。
【００２１】
本発明の各態様では、上述した課題を解決するために、それぞれ以下の構成を採用する。
【００２２】
第１の態様は、複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する結合処理装置に関する。第１態様に係る結合処理装置は、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する結合処理手段を備える。
【００２３】
第２の態様は、複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する複数の結合処理装置と通信可能に接続されるデータ管理装置に関する。第２の態様に係るデータ管理装置は、複数のタプルを格納するデータ格納手段と、上記複数の結合処理装置の中から、上記データ格納手段に格納される各タプルを処理させる結合処理装置を各タプルの分配先として決定する際に、当該各タプルの分配先を、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に含まれる少なくとも１つの文字を、結合キー文字列の中の当該端部分に含む他のタプルと同じ分配先にそれぞれ決定し、かつ、各タプルの結合キー文字列の中の当該端部分に共通する文字を持たない他のタプルとは同じ分配先にならないようにそれぞれ決定するデータ分配手段と、を備える。
【００２４】
第３の態様は、少なくとも１つのデータ管理装置、及び、この少なくとも１つのデータ管理装置で保持される複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する複数の結合処理装置を含む文字列類似結合システムに関する。第３の態様に係る文字列類似結合システムでは、上記少なくとも１つのデータ管理装置が、各タプルの結合キー文字列に関し、先頭文字からｉ（ｉは（τ＋１）以下の正の整数の各々）番目の文字から末尾文字までの末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプル特定データとの組み合わせ、又は、末尾文字からｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプル特定データとの組み合わせを含むキー情報タプルを（τ＋１）個それぞれ生成するキー情報生成手段と、このキー情報生成手段により生成された各キー情報タプルに含まれる末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字に基づいて、当該各キー情報タプルの分配先を決定し、当該各キー情報タプルを、分配先として決定された各結合処理装置に各タプルのデータとしてそれぞれ分配するデータ分配手段と、を備える。更に、上記複数の結合処理装置はそれぞれ、上記少なくとも１つのデータ管理装置から分配された複数のキー情報タプルを受信する受信手段と、この受信手段により受信された複数のキー情報タプルのうち、末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通するキー情報タプル集合毎に、上記類似結合処理を実行する結合処理手段と、を備える。
【００２５】
なお、本発明の別態様としては、上記第１から第３の各態様に含まれる各処理を少なくとも１つのコンピュータが実行する文字列類似結合方法であってもよいし、上記第１から第３の各態様に含まれる各構成を少なくとも１つのコンピュータに実現させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【００２６】
上記各態様によれば、編集距離を用いた文字列類似結合を適切かつ高速に実行する技術を提供することができる。
【図面の簡単な説明】
【００２７】
【図１】図１は、第３実施形態における文字列類似結合システムの構成例を概念的に示す図である。
【図２】図２は、システム制御装置の構成例を概念的に示すブロック図である。
【図３】図３は、データ管理装置の構成例を概念的に示すブロック図である。
【図４】図４は、結合処理装置の構成例を概念的に示すブロック図である。
【図５】図５は、第３実施形態における文字列類似結合システムの全体的な動作の概要を示す図である。
【図６】図６は、第３実施形態におけるデータ管理装置の動作例を示すフローチャート。
【図７】図７は、ＳＩＰタプルの生成例を概念的に示す図である。
【図８】図８は、分配先の決定のために利用されるハッシュ関数の入出力の例を示す図である。
【図９Ａ】図９Ａは、図２０の入力タプル集合Ｓ及びＲに関するＳＩＰタプルの分配例を示す図である。
【図９Ｂ】図９Ｂは、図２０の入力タプル集合Ｓ及びＲに関するＳＩＰタプルの分配例を示す図である。
【図９Ｃ】図９Ｃは、図２０の入力タプル集合Ｓ及びＲに関するＳＩＰタプルの分配例を示す図である。
【図９Ｄ】図９Ｄは、図２０の入力タプル集合Ｓ及びＲに関するＳＩＰタプルの分配例を示す図である。
【図１０】図１０は、第３実施形態における結合処理装置の動作例を示すフローチャートである。
【図１１Ａ】図１１Ａは、図９ＡのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。
【図１１Ｂ】図１１Ｂは、図９ＢのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。
【図１１Ｃ】図１１Ｃは、図９ＣのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。
【図１１Ｄ】図１１Ｄは、図９ＤのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。
【図１２】図１２は、第３実施形態におけるシステム制御装置の動作例を示すフローチャートである。
【図１３】図１３は、システム制御装置により得られる最終的な結合処理結果の例を示す図である。
【図１４】図１４は、第４実施形態における結合処理装置の構成例を概念的に示すブロック図である。
【図１５】図１５は、トライ木の構築例を概念的に示す図である。
【図１６】図１６は、結合処理装置のトライ木の構築処理の例を示すフローチャートである。
【図１７Ａ】図１７Ａは、文字「ｂ」に関するトライ木の構築例を概念的に示す図である。
【図１７Ｂ】図１７Ｂは、文字「ｃ」に関するトライ木の構築例を概念的に示す図である。
【図１８】図１８は、トライ木の探索処理の例を示すフローチャートである。
【図１９】図１９は、アクティブリストの例を示す図である。
【図２０】図２０は、編集距離を用いた文字列類似結合の例を概念的に示す図である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
【００２９】
［第１実施形態］
第１実施形態における結合処理装置は、複数のタプルを対象に編集距離閾値τ（正の整数、以降、単に閾値τとも表記する）を用いて類似結合処理を実行する。この結合処理装置は、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する結合処理部を備える。
【００３０】
従って、第１実施形態によれば、従来、類似結合処理の対象となるデータの全てのタプルペアを対象に編集距離の計算が行われていたところ、当該端部分に共通する文字を持たないタプルのペアを除外するため、従来に比べ、処理コストを削減し、システム全体での類似結合処理の時間を削減することができる。また、第１実施形態によれば、検出されるべきタプルのペアの取りこぼしは生じないため、適切な類似結合処理結果を出力することができる。
【００３１】
以下、第１実施形態においてこのような作用効果を奏する理由について説明する。上述したように、類似結合処理では、処理対象となるデータにおける全てのタプルペアに関して、結合キーの編集距離の算出処理、編集距離と編集距離閾値τとの比較処理等が必要になる。例えば、入力データＳと入力データＲとの間の文字列類似結合は、全タプルペアの数は、入力データＳのタプル数と入力データＲのタプル数との乗算値となるため、膨大な処理時間を要する。
【００３２】
そこで、第１実施形態は、編集距離を実際に計算する前に、編集距離が編集距離閾値τより大きくなるタプルペアを特定し、この特定されたタプルペアを類似結合処理の対象から除外する。これにより、編集距離計算等の対象とするタプルペアの数を削減することができるため、全体的な類似結合処理時間を軽減することができる。
【００３３】
タプルｓ及びタプルｒの各結合キー文字列の上記端部分に、共通する文字が１つも存在しない場合、当該端部分の文字数は（τ＋１）であるため、タプルｓ及びタプルｒの編集距離は明らかに閾値τよりも大きくなる。例えば、タプルｓの結合キー文字列が「ａｂｃｄｅｆ」であり、タプルｒの結合キー文字列が「ｇｈｉｄｅｆ」であり、閾値τが２である場合、タプルｓの端部分の文字列は「ａｂｃ」であり、タプルｒの端部分の文字列は「ｇｈｉ」であり、結果、両者間には共通する文字が存在しない。この時点で、タプルｓ及びタプルｒの編集距離が閾値τを超えることは明らかであるため、タプルｓ及びタプルｒのペアに関し編集距離を計算する必要がないことは容易に把握できる。なお、実際の編集距離も３である。
【００３４】
従って、第１実施形態のように、当該端部分に共通する文字を持たないタプルのペアを編集距離計算対象から除外したとしても、検出されるべきタプルのペアの取りこぼしは生じず、適切な類似結合処理結果を出力することができる。
【００３５】
一方、両者の当該端部分に共通する文字が１つでも存在すれば、編集距離が閾値τ以下となる可能性がある。そこで、第１実施形態における結合処理装置は、当該端部分に少なくとも１つの共通する文字を持つタプルのペアを編集距離計算の対象にすればよい。
【００３６】
［第２実施形態］
第２実施形態におけるデータ管理装置は、複数のタプルを対象に上記閾値τを用いて類似結合処理を実行する複数の結合処理装置と通信可能に接続される。このデータ管理装置は、複数のタプルを格納するデータ格納部と、前記データ格納部に格納される各タプルを処理させる結合処理装置を各タプルの分配先として決定する際に、各タプルの分配先を、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に含まれる少なくとも１つの文字を、結合キー文字列の中の当該端部分に含む他のタプルと同じ分配先にそれぞれ決定し、かつ、各タプルの結合キー文字列の中の当該端部分に共通する文字を持たない他のタプルと同じ分配先とならないようにそれぞれ決定するデータ分配部と、を備える。
【００３７】
第２実施形態におけるデータ管理装置では、データ格納部に格納され類似結合処理の対象となる各タプルが複数の結合処理装置の少なくとも１つにそれぞれ分配され、複数の結合処理装置で類似結合処理が並列に実行されることにより、文字列類似結合処理が高速化される。ここで、類似結合処理の対象となる複数のタプルは、１つのデータ管理装置のデータ格納部に格納される１つのタプル集合から抽出されてもよいし、１つのデータ管理装置のデータ格納部に格納される複数のタプル集合から抽出されてもよいし、複数のデータ管理装置のデータ格納部に格納される複数のタプル集合から抽出されてもよい。
【００３８】
複数の結合処理装置で実行される類似結合処理には、上述のような周知の手法が利用されてもよい。ここで、各結合処理装置とは、類似結合処理を実行し得る単位を示しており、１つのコンピュータであってもよいし、１つのＣＰＵ（Central Processing Unit）であってもよい。よって、ＣＰＵを搭載する基板を複数備えるコンピュータの場合には、複数の結合処理装置は１台のコンピュータとして実現されてもよい。
【００３９】
上記データ管理装置では、データ格納部に格納される各タプルの分配先は、各タプルの結合キー文字列の中の、先頭文字又は末尾文字から（τ＋１）番目までの端部分に含まれる少なくとも１つの文字を、結合キー文字列の中の当該端部分に含む他のタプルと同じ分配先にそれぞれ決定される。ここで、他のタプルとは、データ管理装置自身のデータ格納部に格納されるタプルであってもよいし、他のデータ管理装置により保持されるタプルであってもよい。
【００４０】
結果として、１つの結合処理装置では、結合キー文字列の中の先頭文字から（τ＋１）番目までの端部分に共通する少なくとも１つの文字を持つタプルのペア、又は、結合キー文字列の中の末尾文字から（τ＋１）番目までの端部分に共通する少なくとも１つの文字を持つタプルのペアを対象に類似結合処理が行われる。一方、結合キー文字列の中の当該端部分に共通する文字を１つも持たないタプルの組み合わせは、同じ結合処理装置には分配されないため、編集距離計算の対象から除外されることになる。
【００４１】
つまり、第２実施形態では、タプルの組み合わせが同じ結合処理装置に分配されるか否かにより、そのタプルの組み合わせが編集距離計算の対象とされるか否かが決まる。結果、第２実施形態によれば、第１実施形態と同様の効果を得ることができる。
【００４２】
［第３実施形態］
〔システム構成〕
図１は、第３実施形態におけるシステムの構成例を概念的に示す図である。第３実施形態におけるシステム１は、システム制御装置１０、データ管理装置２０（＃１）及び２０（＃２）、結合処理装置３０（＃１）、３０（＃２）、３０（＃３）及び３０（＃４）等を有する。以降、データ管理装置及び結合処理装置については、区別する必要のある場合を除き、データ管理装置２０及び結合処理装置３０と表記する。
【００４３】
システム制御装置１０は、類似結合処理の要求を受け、この要求に応じた類似結合処理を実行するために、データ管理装置２０及び結合処理装置３０を制御する。システム制御装置１０は、各結合処理装置３０からそれぞれ送られる結合結果を受け、最終的な文字列類似結合処理の結果を出力する。
【００４４】
データ管理装置２０は、結合処理対象となる少なくとも１つのデータ（タプル集合）を管理する。第３実施形態では、データ管理装置２０（＃１）及び２０（＃２）はそれぞれデータを管理する。データ管理装置２０は、第１実施形態と同様の考え方により自身で管理するデータを形成する各タプルの分配先をそれぞれ決め、決められた各分配先となる結合処理装置３０に各タプルに関するデータを分配する。なお、具体的には、第３実施形態では、各タプルに関するデータとして、後述するＳＩＰタプルが分配される。
【００４５】
結合処理装置３０は、データ管理装置２０から分配されたデータに基づいて、編集距離が編集距離閾値τの条件を満たすタプルペアを特定し、その特定されたタプルペアに関するデータを結合結果としてシステム制御装置１０に送る。
【００４６】
システム制御装置１０、データ管理装置２０及び結合処理装置３０は、ネットワーク７を介してそれぞれ通信可能に接続される。ネットワーク７は、インターネット等のような公衆網、ＷＡＮ（Wide Area Network）、ＬＡＮ（Local Area Network）、無線通信ネットワーク等である。なお、本実施形態は、各装置間が通信可能に接続されていれば、各装置間の通信プロトコル、ネットワーク形態等を限定しない。
【００４７】
システム制御装置１０、データ管理装置２０及び結合処理装置３０は、図１に示されるように、ハードウェア構成として、ＣＰＵ２、ＲＡＭ（Random Access Memory）２、ＲＯＭ（Read Only Memory、図示せず）、ハードディスク（ＨＤＤ）等のようなメモリ３、入出力インタフェース（Ｉ／Ｆ）４等をそれぞれ有する。これら各ハードウェア要素は例えばバス５により接続される。入出力Ｉ／Ｆ４は、ネットワーク７を介して他の装置と通信を実現し得るネットワークインタフェースを含む。本実施形態は、各装置のハードウェア構成を限定しない。
【００４８】
また、本実施形態は、データ管理装置２０及び結合処理装置３０の台数を限定しない。結合処理対象のデータが１つのデータ管理装置２０に保持される場合には、１つのデータ管理装置２０が存在すればよい。結合処理装置３０は、２台以上、かつ、入力データに出現する文字の種類数と等しい台数以下分、存在すればよい。この台数の根拠については後述する。
【００４９】
〔装置構成〕
以下、第３実施形態におけるシステム１を構成する各装置の詳細構成についてそれぞれ説明する。
【００５０】
〈システム制御装置〉
図２は、システム制御装置１０の構成例を概念的に示すブロック図である。システム制御装置１０は、図２に示されるように、要求制御部１１、結果生成部１２、結合結果格納部１５等を有する。要求制御部１１及び結果生成部１２は、例えば、ＣＰＵ２によりメモリ３に格納されるプログラムが実行されることで実現される。また、結合結果格納部１５は、例えば、メモリ３上に実現される。
【００５１】
要求制御部１１は、文字列類似結合の処理要求を取得し、この処理要求の内容に基づき実行命令を生成し、入出力Ｉ／Ｆ４の通信インタフェースを介して当該実行命令をデータ管理装置２０及び結合処理装置３０へ送信する。ここで、当該処理要求は、結合処理対象となるデータを特定するためのデータ識別子と、その対象データの結合キー属性の情報と、閾値τとを含む。当該処理要求は、通信を介して外部の装置から取得されてもよいし、システム制御装置１０のユーザインタフェース（図示せず）を介して入力されてもよい。
【００５２】
データ管理装置２０へ送られる上記実行命令は、上記処理要求に含まれていた各データ及び閾値τと共に、結合処理装置３０のネットワークアドレス情報（例えば、ＩＰ（Internet Protocol）アドレス及びポート）を含む通信メッセージである。一方、結合処理装置３０へ送られる上記実行命令は、データ識別子、閾値τ、結合処理装置３０のネットワークアドレス情報（例えば、ＩＰアドレス）、システム制御装置１０のネットワークアドレス情報（例えば、ＩＰアドレス）等を含む通信メッセージである。本実施形態は、この通信メッセージのフォーマットを限定しない。
【００５３】
結合結果格納部１５は、各結合処理装置３０から送られる文字列類似結合の局所結合結果を格納する。結合処理装置３０において編集距離が閾値τの条件を満たすと推定されたタプルのペアが存在する場合には、その局所結合結果には、局所結果タプルがそのペアの数分含まれる。局所結果タプルには、タプルのペアを特定するためのタプルポインタのペア及び編集距離推定値が含まれる。
【００５４】
編集距離推定値は、結合処理装置３０により算出される値であり、以降、局所編集距離とも表記される。この局所編集距離の詳細については後述する。タプルポインタは、システム１内で扱われる全タプルの中から１つのタプルを特定するための識別情報であり、タプル特定データと呼ぶこともできる。本実施形態では、タプルポインタは、或るタプル集合（データ）の中で或るタプルを特定するためのタプル識別子と、そのタプル集合（データ）を特定するためのデータ識別子とから形成される。なお、タプル識別子がシステム１内で扱われる全タプルに関しユニークに付される場合には、タプルポインタは、タプル識別子のみで形成されてもよい。
【００５５】
結果生成部１２は、入出力Ｉ／Ｆ４の通信インタフェースを介して各結合処理装置３０から局所結合結果をそれぞれ取得する。結果生成部１２は、取得された局所結合結果を結合結果格納部１５に格納する際に、同じタプルポインタのペアを含む局所結果タプルを検出し、検出された局所結果タプルの中の最小の局所編集距離を持つ局所結果タプルのみを編集距離が前記編集距離閾値τの条件を満たすタプルのペアの情報として結合結果格納部１５に格納する。
【００５６】
〈データ管理装置〉
図３は、データ管理装置２０の構成例を概念的に示すブロック図である。データ管理装置２０は、図３に示されるように、ＳＩＰタプル生成部２１、データ分配部２２、データ格納部２５等を有する。ＳＩＰタプル生成部２１及びデータ分配部２２は、例えば、ＣＰＵによりメモリに格納されるプログラムが実行されることで実現される。また、データ格納部２５は、例えば、メモリ上に実現される。
【００５７】
データ格納部２５は、データ（タプル集合）とそのデータを特定するためのデータ識別子とを格納する。図２０の例では、データ格納部２５は、入力タプル集合Ｓ及び入力タプル集合Ｒの少なくとも１つと、その識別子Ｓ及びＲの少なくとも１つを格納する。このように、データ格納部２５は、データ識別子の異なる複数のデータを格納してもよい。
【００５８】
ＳＩＰタプル生成部２１は、入出力Ｉ／Ｆ４の通信インタフェースを介して、システム制御装置１０から実行命令を受信し、当該実行命令に含まれるデータ識別子に対応するデータをデータ格納部２５から抽出する。図２０の例において、実行命令にデータ識別子Ｒが含まれている場合には、ＳＩＰタプル生成部２１は、入力タプル集合Ｒの全タプルを抽出する。
【００５９】
ＳＩＰタプル生成部２１は、抽出されたデータに含まれる各タプルに関し、（τ＋１）個のＳＩＰタプルをそれぞれ生成する。ＳＩＰタプルは、タプルの結合キー文字列に関し、先頭文字からｉ（ｉは（τ＋１）以下の正の整数の各々）番目の文字から末尾文字までの末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプルポインタとの組み合わせ、又は、末尾文字から上記ｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプルポインタとの組み合わせである。各タプルの結合キーは、システム制御装置１０から送られる実行命令に含まれる結合キー属性の情報により特定される。
【００６０】
ここで、タプルｓの結合キー文字列における、先頭文字から上記ｉ番目の文字から末尾文字までの末尾部分文字列をｓｔ＿ｉと表記し、残りの先頭部分文字列の文字列長を｜ｓｈ＿ｉ｜と表記し、タプルｓのタプルポインタをｓ＿ｐｔｒと表記すると、タプルｓのＳＩＰタプルは、＜ｓｔ＿ｉ、｜ｓｈ＿ｉ｜、ｓ＿ｐｔｒ＞と表記することができる。また、｜ｓｈ＿ｉ｜は、（ｉ−１）と等しい。
【００６１】
ここで、データ格納部２５が図２０に示される入力タプル集合Ｓを格納し、閾値τが「２」であり、データ識別子が「Ｓ」であり、結合キー属性が「品番」である場合に、タプル識別子が「１０１」のタプルｓのＳＩＰタプルは、以下のように生成される。この場合、タプルｓの結合キー文字列は「ＸＷＹ−ＲＳ２００」である。
ＳＩＰタプル（ｉ＝１）：＜「ＸＷＹ−ＲＳ２００」、０、「Ｓ：１０１」＞
ＳＩＰタプル（ｉ＝２）：＜「ＷＹ−ＲＳ２００」、１、「Ｓ：１０１」＞
ＳＩＰタプル（ｉ＝３）：＜「Ｙ−ＲＳ２００」、２、「Ｓ：１０１」＞
【００６２】
ＳＩＰタプルの他の態様、即ち、末尾文字から上記ｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプルポインタとの組み合わせである場合には、上記例のＳＩＰタプルは、以下のように生成される。
ＳＩＰタプル（ｉ＝１）：＜「ＸＷＹ−ＲＳ２００」、０、「Ｓ：１０１」＞
ＳＩＰタプル（ｉ＝２）：＜「ＸＷＹ−ＲＳ２０」、１、「Ｓ：１０１」＞
ＳＩＰタプル（ｉ＝３）：＜「ＸＷＹ−ＲＳ２」、２、「Ｓ：１０１」＞
【００６３】
なお、ＳＩＰタプルの態様は上記２つのうちのいずれの方法が利用されてもよい。このようにＳＩＰタプルは、結合キーに関する情報を含むタプルであるため、キー情報タプルと呼ぶこともできる。これにより、ＳＩＰタプル生成部２１は、キー情報生成部と呼ぶこともできる。
【００６４】
データ分配部２２は、ＳＩＰタプル生成部２１により生成されたＳＩＰタプル集合を受け、各ＳＩＰタプルの分配先を決定し、当該各ＳＩＰタプルを、分配先として決定された各結合処理装置３０に、各タプルのデータとして、それぞれ分配（送信）する。データ分配部２２は、各ＳＩＰタプルに含まれる末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字に基づいて、各ＳＩＰタプルの分配先を決定する。結果、当該先頭文字又は当該末尾文字が同じＳＩＰタプルは、同じ結合処理装置３０に分配される。
【００６５】
例えば、データ分配部２２は、１つの文字を入力して、結合処理装置３０（＃１）、３０（＃２）、３０（＃３）及び３０（＃４）のいずれか１つを特定し得る１つの数値を出力する関数（ハッシュ関数等）を用いて、各ＳＩＰタプルの分配先を決定する。データ分配部２２は、決定された分配先の結合処理装置３０のネットワークアドレスをシステム制御装置１０から送られる実行命令に含まれるネットワークアドレス情報から特定し、対応するＳＩＰタプルをその結合処理装置３０に送信する。なお、或る文字から分配先を決定するための手法は、ハッシュ関数等のような関数を利用する形態に限定されない。
【００６６】
ここで、末尾部分文字列の先頭文字は、結合キー文字列の中の先頭文字から（τ＋１）番目までの端部分に含まれるいずれか１つの文字となり、先頭部分文字列の末尾文字は、結合キー文字列の中の末尾文字から（τ＋１）番目までの端部分に含まれるいずれか１つの文字となる。よって、結合キー文字列における先頭文字又は末尾文字から（τ＋１）番目までの端部分に含まれる少なくとも１つの文字が共通するタプルｓ及びタプルｒについては、タプルｓに関する（τ＋１）個のＳＩＰタプルと、タプルｒに関する（τ＋１）個のＳＩＰタプルとの全組み合わせ（ペア）のうち、１つ以上のペアが、同じ結合処理装置３０に分配され、類似結合処理の対象とされる。なお、本実施形態では、当該端部分に共通する文字が１つも存在しないタプルｓ及びタプルｒについては、同じ結合処理装置３０に分配されてもよいし、異なる結合処理装置３０に分配されてもよい。いずれの場合であっても、当該端部分に共通する文字が１つも存在しないタプルｓ及びタプルｒについては、結合処理装置３０において類似結合処理対象から除外される。
【００６７】
〈結合処理装置〉
図４は、結合処理装置３０の構成例を概念的に示すブロック図である。結合処理装置３０は、図４に示されるように、ＳＩＰタプル受信部３１、結合処理部３２、推定値算出部３３、ＳＩＰタプル格納部３５等を有する。ＳＩＰタプル受信部３１、結合処理部３２及び推定値算出部３３は、例えば、ＣＰＵによりメモリに格納されるプログラムが実行されることで実現される。また、ＳＩＰタプル格納部３５は、例えば、メモリ上に実現される。
【００６８】
ＳＩＰタプル受信部３１は、データ管理装置２０から送られるＳＩＰタプルを受信し、ＳＩＰタプル格納部３５に格納する。ＳＩＰタプル格納部３５は、ＳＩＰタプル受信部３１により受信されたＳＩＰタプルの集合を格納する。ＳＩＰタプル格納部３５は、各ＳＩＰタプルに含まれる末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通するＳＩＰタプルを一つの集合として格納する。
【００６９】
結合処理部３２は、システム制御装置１０から送られる実行命令を受信し、この実行命令に含まれる各種データを保持する。上述のように、この各種データには、データ識別子、閾値τ、データ管理装置２０のネットワークアドレス情報（例えば、ＩＰアドレス）、システム制御装置１０のネットワークアドレス情報（例えば、ＩＰアドレス）等が含まれる。
【００７０】
結合処理部３２は、上述のように保持されるデータを用いて、ＳＩＰタプル格納部３５に格納されるＳＩＰタプルを対象に類似結合処理を実行する。具体的には、結合処理部３２は、末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通する任意のＳＩＰタプルの集合をＳＩＰタプル格納部３５から抽出し、抽出された末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通する複数のＳＩＰタプルの中の２つの全組み合わせ（全ペア）に関し、推定値算出部３３に所定の処理を実行させる。ここで、類似結合処理が異なるタプル集合（データ）間の結合を対象とする場合には、結合処理部３２は、抽出された末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通する複数のＳＩＰタプルの中のデータ識別子が異なる２つの全組み合わせ（全ペア）に関し、推定値算出部３３に所定の処理を実行させる。当該データ識別子は、ＳＩＰタプルに含まれるタプルポインタから抽出される。これにより、結合キー文字列における先頭文字又は末尾文字から（τ＋１）番目までの端部分に共通する文字が存在しないタプルｓ及びタプルｒについては、同じ結合処理装置３０に分配されたとしても、類似結合処理対象から除外される。
【００７１】
結合処理部３２は、推定値算出部３３から処理結果を取得し、取得された処理結果に基づいて、編集距離が閾値τの条件を満たすと推定されるＳＩＰタプルのペアを特定する。推定値算出部３３の処理結果としては、ＳＩＰタプルの各ペアに関する局所編集距離と、その編集距離が閾値τの条件を満たすか否かを示す情報が取得される。結合処理部３２は、特定された各ペアに関し、タプルポインタのペア及び局所編集距離を含む局所結果タプルをそれぞれ生成し、生成された局所結果タプルを含む局所結合結果をそれぞれシステム制御装置１０に送信する。
【００７２】
推定値算出部３３は、結合処理部３２からＳＩＰタプルのペア（２つのＳＩＰタプル）を受けると、各ＳＩＰタプルに含まれる各末尾部分文字列又は各接頭部分文字列間の編集距離を算出する。算出された編集距離は、部分文字列編集距離と表記される。推定値算出部３３は、算出された部分文字列編集距離が閾値τの条件を満たさない場合には、そのＳＩＰタプルのペアの編集距離が閾値τの条件を満たさないことを示す処理結果を結合処理部３２に返す。
【００７３】
一方、推定値算出部３３は、算出された部分文字列編集距離が閾値τの条件を満たす場合には、そのペアに関し、更に、当該部分文字列編集距離と、大きい方の先頭部分文字列の文字列長又は大きい方の末尾部分文字列の文字列長とを加算することにより、局所編集距離を算出する。推定値算出部３３は、算出された局所編集距離と閾値τとを比較し、この比較結果を処理結果として結合処理部３２に返す。具体的には、推定値算出部３３は、局所編集距離が閾値τの条件を満たす場合には、局所編集距離と、そのＳＩＰタプルのペアの編集距離が閾値τの条件を満たすことを示す情報とを処理結果として返す。一方、推定値算出部３３は、局所編集距離が閾値τの条件を満たさない場合には、そのＳＩＰタプルのペアの編集距離が閾値τの条件を満たさないことを示す処理結果を返す。
【００７４】
ここで、上述のように部分文字列編集距離を用いて算出される局所編集距離と、結合キー文字列全体を用いて算出される通常の編集距離（以降、真の編集距離と表記する）との関係について説明する。タプルｘの結合キー文字列における、先頭文字からｉ−１番目の文字までの先頭部分文字列をｘｈ＿ｉ、及びタプルｙの先頭文字からｊ−１番目の文字までの先頭部分文字列をｙｈ＿ｊとそれぞれ表記し、残りの末尾部分文字列をｘｔ＿ｉ及びｙｔ＿ｊと表記する。
【００７５】
タプルｘとタプルｙの編集距離ＥＤ（ｘ、ｙ）、先頭部分文字列間の編集距離（部分文字列編集距離）ＥＤ（ｘｈ＿ｉ、ｙｈ＿ｊ）、及び、末尾部分文字列間の編集距離（部分文字列編集距離）ＥＤ（ｘｔ＿ｉ、ｙｔ＿ｊ）の間には、次のような関係が成立する。
ＥＤ（ｘ、ｙ）≦ＥＤ（ｘｈ＿ｉ、ｙｈ＿ｊ）＋ＥＤ（ｘｔ＿ｉ、ｙｔ＿ｊ）  （式１）
【００７６】
また、ＥＤ（ｘ、ｙ）と結合キーの文字列長｜ｘ｜及び｜ｙ｜との間には、次の関係が成立する。なお、ｍａｘ（）は、大きい方の値を返す関数である。
ＥＤ（ｘ、ｙ）≦ｍａｘ（｜ｘ｜、｜ｙ｜）    （式２）
【００７７】
上記（式１）及び（式２）から、以下の（式３）及び（式４）が導かれる。
ＥＤ（ｘ、ｙ）≦ｍａｘ（｜ｘｈ＿ｉ｜、｜ｙｈ＿ｊ｜）＋ＥＤ（ｘｔ＿ｉ、ｙｔ＿ｊ）    （式３）
ＥＤ（ｘ、ｙ）≦ｍａｘ（｜ｘｔ＿ｉ｜、｜ｙｔ＿ｊ｜）＋ＥＤ（ｘｈ＿ｉ、ｙｈ＿ｊ）    （式４）
【００７８】
上記（式３）及び（式４）のそれぞれの右辺は、推定値算出部３３において、部分文字列編集距離を用いて算出される局所編集距離に対応する。タプルｘ及びタプルｙに関するＳＩＰタプルは、｛２×（τ＋１）｝個生成されるため、タプルｘ及びタプルｙに関する局所編集距離は、複数生成される可能性がある。このように複数生成される局所編集距離の全てが、必ずしも真の編集距離と等しくなるわけではない。上記（式３）及び（式４）で示すように、局所編集距離は、真の編集距離の上限値を示すに過ぎないからである。そこで、局所編集距離は、編集距離推定値と呼ぶことができる。上記（式３）及び（式４）から、次の法則が成立する。
ｍａｘ（｜ｘｈ＿ｉ｜、｜ｙｈ＿ｊ｜）＋ＥＤ（ｘｔ＿ｉ、ｙｔ＿ｊ）≦τ  （ただし、ｉは１以上τ＋１以下）が成り立つ場合、  ＥＤ（ｘ、ｙ）≦τである。（式５）
ｍａｘ（｜ｘｔ＿ｉ｜、｜ｙｔ＿ｊ｜）＋ＥＤ（ｘｈ＿ｉ、ｙｈ＿ｊ）≦τ  （ただし、ｊは１以上τ＋１以下）が成り立つ場合、  ＥＤ（ｘ、ｙ）≦τである。（式６）
【００７９】
上記法則（式５）および（式６）から、タプルｘ及びタプルｙに関する局所編集距離が閾値τ以下であるとき、必ず真の編集距離もτ以下となることが分かる。これに加え、編集距離の一般的な性質から、真の編集距離が閾値τ以下であるならば、タプルｘ及びタプルｙに関する複数の局所編集距離のうち最も小さい局所編集距離が、必ず真の編集距離と等しくなることが導ける。
【００８０】
このような内容は、以下の定理として示すことができる。即ち、与えられた文字列ｘ及びｙ間の編集距離ＥＤ（ｘ、ｙ）が編集距離閾値τ以下であるならば、次の条件を満たす正の整数のペア＜ｉ、ｊ＞が少なくとも１つ必ず存在する。
（１≦ｉ≦τ＋１）ＡＮＤ（１≦ｊ≦τ＋１）ＡＮＤ（ｘ［ｉ］＝ｙ［ｊ］）ＡＮＤ｛ｍａｘ（｜ｘｈ＿ｉ、ｙｈ＿ｊ｜）＋ＥＤ（ｘｔ＿ｉ、ｙｔ＿ｊ）＝ＥＤ（ｘ、ｙ）｝
、又は、
（０≦｜ｘｓ｜−ｉ＋１≦τ＋１）ＡＮＤ（０≦｜ｙｓ｜−ｊ＋１≦τ＋１）ＡＮＤ（ｘ［ｉ−１］＝ｙ［ｊ−１］）ＡＮＤ｛ｍａｘ（｜ｘｔ＿ｉ、ｙｔ＿ｊ｜）＋ＥＤ（ｘｈ＿ｉ、ｙｈ＿ｊ）＝ＥＤ（ｘ、ｙ）｝
【００８１】
ここで、ｘｔ＿ｉは、文字列ｘの先頭文字からｉ番目の文字から末尾文字までの末尾部分文字列を示し、｜ｘｈ＿ｉ｜は、残りの先頭部分文字列の文字列長を示し、ｙｔ＿ｊは、文字列ｙの先頭文字からｊ番目の文字から末尾文字までの末尾部分文字列を示し、｜ｙｈ＿ｊ｜は、残りの先頭部分文字列の文字列長を示す。また、ｘ［ｉ］は、文字列ｘの先頭文字からｉ番目の文字を示し、ｙ［ｊ］は、文字列ｙの先頭文字からｊ番目の文字を示し、｜ｘｓ｜は、文字列ｘの文字列長を示し、｜ｙｓ｜は、文字列ｙの文字列長を示す。
【００８２】
上記の定理から、真の編集距離が閾値τ以下であるとき、ＳＩＰタプルから生成されるタプルｘ及びタプルｙに関する複数の局所編集距離のうち最も小さい局所編集距離が、必ず真の編集距離と等しくなることが保証される。タプルｘ及びタプルｙに関する局所編集距離は複数生成される可能性があるため、閾値τ以下となる局所編集距離も複数存在する可能性があるが、上述のように、システム制御装置１０の結果生成部１２において、局所編集距離を用いた局所結果タプルのフィルタリングが行われることで、真の編集距離を局所編集距離から容易に知ることが出来る。よって、本実施形態のように、真の編集距離の代わりに局所編集距離を用いて類似結合結果を得たとしても、正確な類似結合結果を得ることができる。
【００８３】
〔動作例〕
次に、第３実施形態におけるシステム１の動作例について説明する。
【００８４】
図５は、第３実施形態におけるシステム１の全体的な動作の概要を示す図である。
まず、システム制御装置１０において、要求制御部１１が文字列類似結合の処理要求を取得する（Ｓ５０１）。この処理要求には、結合処理対象となるデータを特定するためのデータ識別子（例えば、Ｓ及びＲ）と、その対象データの結合キー属性の情報（例えば、「品番」）と、編集距離閾値τが含まれる。
【００８５】
要求制御部１１は、取得された処理要求の内容に基づいて実行命令を生成し、生成された各実行命令を全てのデータ管理装置２０及び全ての結合処理装置３０に送る（Ｓ５０２）。
【００８６】
当該実行命令を受信した各データ管理装置２０は次のように動作する。ＳＩＰタプル生成部２１が、当該実行命令に含まれるデータ識別子に対応するデータをデータ格納部２５から抽出し、抽出されたデータに含まれる各タプルに関し、（τ＋１）個のＳＩＰタプルをそれぞれ生成する（Ｓ５０３）。
【００８７】
続いて、データ分配部２２は、ＳＩＰタプル生成部２１により生成されたＳＩＰタプル集合を受け、各ＳＩＰタプルの分配先となる結合処理装置３０を特定し、特定された各結合処理装置３０に各ＳＩＰタプルをそれぞれ分配する（Ｓ５０４）。
【００８８】
各ＳＩＰタプルを受信した各結合処理装置３０は次のように動作する。ＳＩＰタプル受信部３１が、データ管理装置２０から送られるＳＩＰタプルを受信し、受信されたＳＩＰタプルを逐次、ＳＩＰタプル格納部３５に格納する。対象となる全てのデータ管理装置２０において分配が完了すると、各結合処理装置３０は、結合処理対象となる全てのＳＩＰタプルを完全に取得している。
【００８９】
結合処理部３２は、ＳＩＰタプル格納部３５に格納されるＳＩＰタプルを対象に類似結合処理を実行する（Ｓ５０５）。この類似結合処理では、各ＳＩＰタプルのペアに関し、部分文字列編集距離が算出され、この部分文字列編集距離に基づいて局所編集距離がそれぞれ算出される。結果、編集距離が閾値τの条件を満たすと推定されるＳＩＰタプルのペアが特定される。
【００９０】
結合処理部３２は、特定された各ペアに関し、タプルポインタのペア及び局所編集距離を含む局所結果タプルをそれぞれ生成し、生成された局所結果タプルを含む局所結合結果をそれぞれシステム制御装置１０に送信する（Ｓ５０６）。
【００９１】
各結合処理装置３０から局所結合結果を受信したシステム制御装置１０では、結果生成部１２が、同じタプルポインタのペアを含む局所結果タプルのうち最小の局所編集距離を持つもの以外を排除した後、当該局所結果タプルを結合結果格納部１５に格納する（Ｓ５０７）。結果、システム制御装置１０の結合結果格納部１５に格納される局所結果タプルにより、編集距離閾値τの条件を満たすタプルのペアの情報を得ることができる。
【００９２】
以下、図５に示されたステップのうち、（Ｓ５０３）、（Ｓ５０５）及び（Ｓ５０７）の動作について詳細に説明する。以下の説明では、図２０の入力タプル集合（データ）Ｓを保持するデータ管理装置２０（＃１）が、結合処理対象としてデータ識別子（Ｓ及びＲ）が指定され、結合キー属性として「品番」が指定され、閾値τとして「２」が指定された実行命令をシステム制御装置１０から受信する場合のデータ管理装置２０（＃１）の動作例について説明する。
【００９３】
図６は、第３実施形態におけるデータ管理装置２０の動作例を示すフローチャートである。図６には、上記（Ｓ５０３）における動作の詳細が示される。
【００９４】
まず、ＳＩＰタプル生成部２１は、システム制御装置１０からの実行命令に含まれるデータ識別子Ｓに対応するデータＳをデータ格納部２５から抽出する（Ｓ６０１）。図２０によれば、データ管理装置２０（＃１）のＳＩＰタプル生成部２１により、タプル識別子（ＴＩＤ）が１０１から１０４である４つのタプルを含むデータＳが抽出される。
【００９５】
ＳＩＰタプル生成部２１は、データＳに未処理のタプルｓが存在するか否かを判定する（Ｓ６０２）。未処理のタプルｓが存在する場合（Ｓ６０２；ＹＥＳ）、ＳＩＰタプル生成部２１は、タプルｓに関し、タプルポインタｓ＿ｐｔｒ及び結合キー（文字列長：｜ｓ｜）を取得する（Ｓ６０３）。図２０の例において、タプル識別子（ＴＩＤ）が１０１であるタプルが未処理である場合、取得されるタプルポインタｓ＿ｐｔｒは、「Ｓ：１０１」であり、取得される結合キーは、「ＸＷＹ−ＲＳ２００」である。
【００９６】
ＳＩＰタプル生成部２１は、変数ｉに初期値１を設定する（Ｓ６０４）。
【００９７】
ＳＩＰタプル生成部２１は、結合キーの先頭文字からｉ番目の文字から末尾文字までの末尾部分文字列ｓｔ＿ｉ、残りの先頭部分文字列の文字列長｜ｓｈ＿ｉ｜を取得する（Ｓ６０５）。ここで、末尾部分文字列ｓｔ＿ｉの文字列長は、（｜ｓ｜−ｉ＋１）であり、｜ｓｈ＿ｉ｜は、（ｉ−１）で示される。ＳＩＰタプル生成部２１は、これら取得されたデータを用いて、変数ｉに対するＳＩＰタプル＜ｓｔ＿ｉ、｜ｓｈ＿ｉ｜、ｓ＿ｐｔｒ＞を生成する（Ｓ６０５）。
【００９８】
続いて、ＳＩＰタプル生成部２１は、生成されたＳＩＰタプルを、文字ｓ［ｉ］に関するＳＩＰタプル集合ｓｉｐ［ｓ［ｉ］］へ追加する（Ｓ６０６）。文字ｓ［ｉ］は、結合キーｓ［］（例えば、「ＸＷＹ−ＲＳ２００」）の先頭文字からｉ番目の文字、即ち、末尾部分文字列ｓｔ＿ｉの先頭文字に相当する。よって、ＳＩＰタプル集合ｓｉｐ［ｓ［ｉ］］は、末尾部分文字列ｓｔ＿ｉの先頭文字が共通するＳＩＰタプルの集合となる。
【００９９】
次に、ＳＩＰタプル生成部２１は、ｓｉｐ［ｓ［ｉ］］に十分なＳＩＰタプル（例えば１０個のＳＩＰタプル）が蓄積されているか否かを判定する（Ｓ６０７）。十分なＳＩＰタプルが蓄積されていない場合（Ｓ６０７；ＮＯ）、ＳＩＰタプル生成部２１は、変数ｉに１加算された値（＋＋ｉ）が（τ＋１）以下であるか否かを判定する（Ｓ６１０）。（＋＋ｉ）が（τ＋１）以下である場合（Ｓ６１０；ＹＥＳ）、ＳＩＰタプル生成部２１は、１加算された変数ｉに関し、上述した処理（Ｓ６０５）及び（Ｓ６０６）を実行する。以降、ＳＩＰタプル生成部２１は、（＋＋ｉ）が（τ＋１）を超えるまで、上述した処理（Ｓ６０５）及び（Ｓ６０６）の実行を繰り返す。
【０１００】
図７は、ＳＩＰタプルの生成例を概念的に示す図である。図７は、図２０の例におけるデータＳに含まれるタプル（１０１）に関し、上述のような処理により生成されたＳＩＰタプルを示す。タプル（１０１）は、タプル識別子（ＴＩＤ）が１０１であるタプルを示す。図７によれば、上記変数ｉが１の場合に生成されるＳＩＰタプルが１行目に示され、上記変数ｉが２の場合に生成されるＳＩＰタプルが２行目に示され、上記変数ｉが３の場合に生成されるＳＩＰタプルが３行目に示される。そして、各ＳＩＰタプルは、ＳＩＰタプル集合ｓｉｐ［"Ｘ"］、ｓｉｐ［"Ｗ"］又はｓｉｐ［"Ｙ"］へそれぞれ追加される。
【０１０１】
ＳＩＰタプル生成部２１は、十分なＳＩＰタプルが蓄積されている場合（Ｓ６０７；ＹＥＳ）、その旨をデータ分配部２２へ通知する。これにより、データ分配部２２は、その通知の対象となるＳＩＰタプル集合ｓｉｐ［ｓ［ｉ］］の分配先を決定する（Ｓ６０８）。例えば、データ分配部２２は、文字ｓ［ｉ］を所定のハッシュ関数に与えることで得られるハッシュ値に対応する結合処理装置３０を分配先に決定する。
【０１０２】
図８は、分配先の決定のために利用されるハッシュ関数の入出力の例を示す図である。図８の例では、出力される各ハッシュ値（００、０１、１０、１１）に対応する結合処理装置３０（＃１）、３０（＃２）、３０（＃３）及び３０（＃４）がそれぞれ予め決められる。この例によれば、ＳＩＰタプル集合ｓｉｐ［"Ｘ"］については、ハッシュ値（００）に対応する結合処理装置３０（＃１）が分配先に決定され、ＳＩＰタプル集合ｓｉｐ［"Ｙ"］については、ハッシュ値（０１）に対応する結合処理装置３０（＃２）が分配先に決定され、ＳＩＰタプル集合ｓｉｐ［"Ｚ"］については、ハッシュ値（１０）に対応する結合処理装置３０（＃３）が分配先に決定され、ＳＩＰタプル集合ｓｉｐ［"Ｗ"］については、ハッシュ値（１１）に対応する結合処理装置３０（＃４）が分配先に決定される。なお、文字に基づき或る１つの分配先を決める方法は、他の周知の方法が利用されてもよい。
【０１０３】
データ分配部２２は、上述のように、末尾部分文字列ｓｔ＿ｉの先頭文字（ｓ［ｉ］）により決定された分配先となる結合処理装置３０に、ＳＩＰタプル集合ｓｉｐ［ｓ［ｉ］］を送信する（Ｓ６０８）。正常に送信された場合には、データ分配部２２は、ＳＩＰタプル集合ｓｉｐ［ｓ［ｉ］］を初期化（空に）する（Ｓ６０９）。
【０１０４】
ＳＩＰタプル生成部２１は、（＋＋ｉ）が（τ＋１）を超えた場合（Ｓ６１０；ＮＯ）、データＳに未処理のタプルｓが存在するか否かを再度判定する（Ｓ６０２）。未処理のタプルｓが存在する場合には（Ｓ６０２；ＹＥＳ）、その未処理のタプルｓに関し、上述と同様に処理（Ｓ６０３）以降が実行される。図２０の例によれば、入力タプル集合Ｓのタプル（１０１）、タプル（１０２）、タプル（１０３）及びタプル（１０４）に関しそれぞれ、ＳＩＰタプルが生成される。
【０１０５】
未処理のタプルｓが存在しなくなると（Ｓ６０２；ＮＯ）、ＳＩＰタプル生成部２１は、実行命令に含まれる未処理の他のデータ識別子（Ｓ'）が存在するか否かを判定する（Ｓ６１１）。未処理の他のデータ識別子（Ｓ'）が存在する場合には（Ｓ６１１；ＹＥＳ）、そのデータ識別子Ｓ'がデータ識別子Ｓに設定された後（Ｓ６１２）、上述と同様に処理（Ｓ６０１）以降が実行される。
【０１０６】
ＳＩＰタプル生成部２１は、実行命令に含まれる未処理の他のデータ識別子が存在しないと判断すると（Ｓ６１１；ＮＯ）、未だ初期化されていない（空になっていない）ＳＩＰタプル集合ｓｉｐ［ｃ］の送信をデータ分配部２２へ依頼する。これにより、データ分配部２２は、未だ空になっていないＳＩＰタプル集合ｓｉｐ［ｃ］の分配先を決定し（Ｓ６１３）、その決定された分配先の結合処理装置３０へＳＩＰタプル集合ｓｉｐ［ｃ］を送信する（Ｓ６１３）。
【０１０７】
上述のような各データ管理装置２０の処理が完了すると、図２０の入力タプル集合（データ）Ｓ及びＲに関する各ＳＩＰタプルはそれぞれ図９Ａ、図９Ｂ、図９Ｃ及び図９Ｄの例のように各結合処理装置３０へ分配される。図９Ａ、図９Ｂ、図９Ｃ及び図９Ｄは、図２０の入力タプル集合Ｓ及びＲに関するＳＩＰタプルの分配例を示す図である。図９Ａは、ＳＩＰタプル集合ｓｉｐ［"Ｘ"］を示し、図９Ｂは、ＳＩＰタプル集合ｓｉｐ［"Ｙ"］を示し、図９Ｃは、ＳＩＰタプル集合ｓｉｐ［"Ｚ"］を示し、図９Ｄは、ＳＩＰタプル集合ｓｉｐ［"Ｗ"］を示す。図８の例によれば、図９ＡのＳＩＰタプル集合は、結合処理装置３０（＃１）へ分配され、図９ＢのＳＩＰタプル集合は、結合処理装置３０（＃２）へ分配され、図９ＣのＳＩＰタプル集合は、結合処理装置３０（＃３）へ分配され、図９ＤのＳＩＰタプル集合は、結合処理装置３０（＃４）へ分配される。
【０１０８】
図１０は、第３実施形態における結合処理装置３０の動作例を示すフローチャートである。図１０には、上記（Ｓ５０５）における動作の詳細が示される。各データ管理装置２０において、実行命令に含まれる処理対象のデータ識別子の全てのＳＩＰタプルの分配が完了すると、各結合処理装置３０は、図１０に示される処理を実行する。
【０１０９】
以下、図９ＡのＳＩＰタプル集合が分配された結合処理装置３０（＃１）を例に挙げ、結合処理装置３０（＃１）の動作例を説明する。この場合、結合処理装置３０（＃１）では、ＳＩＰタプル格納部３５に、図９ＡのＳＩＰタプル集合が格納される。
【０１１０】
結合処理部３２は、ＳＩＰタプル格納部３５から、末尾部分文字列の先頭文字が共通するＳＩＰタプルの集合を抽出する（Ｓ１００１）。
【０１１１】
結合処理部３２は、抽出されたＳＩＰタプル集合の中の、タプルポインタから判別されるデータ識別子が異なる２つのＳＩＰタプルの全ペア（ｘ、ｙ）を示す情報と共に、処理指示を推定値算出部３３へ送る。推定値算出部３３は、結合処理部３２から送られた情報に基づいて、ＳＩＰタプルの全ペア（ｘ、ｙ）に関し、末尾部分文字列の編集距離ＥＤ（ｘ、ｙ）をそれぞれ計算する（Ｓ１００２）。編集距離ＥＤ（ｘ、ｙ）は、一般的な周知の編集距離算出手法により算出されればよい。
【０１１２】
推定値算出部３３は、算出された各部分文字列編集距離が閾値τ以下となるか否かをそれぞれ判定し（Ｓ１００３）、部分文字列編集距離が閾値τ以下となる各ペア（ｘ、ｙ）に関し、局所編集距離をそれぞれ算出する（Ｓ１００３；ＹＥＳ、Ｓ１００４）。
【０１１３】
ここで、各ペア（ｘ、ｙ）に関する局所編集距離をＬＥＤ（ｘ、ｙ）として示すと、局所編集距離の算出式は以下の（式７）のように示すことができる。
ＬＥＤ（ｘ、ｙ）＝ＥＤ（ｘｔ＿ｉ、ｙｔ＿ｉ）＋ｍａｘ（｜ｘｈ＿ｉ｜、｜ｙｈ＿ｉ｜）    （式７）
【０１１４】
更に、推定値算出部３３は、部分文字列編集距離が閾値τ以下となる各ペア（ｘ、ｙ）に関し、算出された各局所編集距離を用いて結合処理判定をそれぞれ行う（Ｓ１００５）。結合処理判定とは、局所編集距離が閾値τ以下となるか否かの判定である。即ち、以下の（式８）が判定される。
ＬＥＤ（ｘ、ｙ）≦τ    （式８）
【０１１５】
図９Ａの例において、タプル識別子が「Ｓ：１０３」であるＳＩＰタプル（Ｓ：１０３）と、タプル識別子が「Ｒ：２０３」であるＳＩＰタプル（Ｒ：２０３）とのペアに関する推定値算出部３３の動作例は以下のとおりである。タプル（Ｓ：１０３）の末尾部分文字列（ｘｔ＿ｉ）は「Ｘ−ＢＢ−ＫＣ」であり、タプル（Ｒ：２０３）の末尾部分文字列（ｙｔ＿ｉ）は「Ｘ−ＢＢ−ＫＣ」である。また、タプル（Ｓ：１０３）の先頭部分文字列の文字列長（｜ｘｈ＿ｉ｜）は「２」であり、タプル（Ｒ：２０３）の先頭部分文字列の文字列長（｜ｙｈ＿ｉ｜）は「２」である。
【０１１６】
この場合、推定値算出部３３は、タプル（Ｓ：１０３）及びタプル（Ｒ：２０３）のペアに関する部分文字列編集距離として、「０」（ゼロ）を算出する。推定値算出部３３は、部分文字列編集距離（０）が閾値τ（２）以下であるため、その部分文字列編集距離（０）と、大きい方の先頭部分文字列の文字列長（２）とを加算することにより、局所編集距離（２）を算出する。このときの算出式は以下の（式９）で示される。
ＬＥＤ（Ｓ：１０３、Ｒ：２０３）＝ＥＤ（「Ｘ−ＢＢ−ＫＣ」、「Ｘ−ＢＢ−ＫＣ」）＋ｍａｘ（２、２）＝０＋２＝２    （式９）
【０１１７】
推定値算出部３３は、算出された局所編集距離（２）が閾値τ（２）以下であるため、結合処理判定の結果を「真」とする。このような推定値算出部３３は、例えば、１つの関数（ｖａｌｉｄａｔｉｏｎ関数）として実現されてもよい。このとき、ｖａｌｉｄａｔｉｏｎ関数は、ＳＩＰタプルのペアにアクセスするためのアドレスを取得し、そのペアの局所編集距離と結合処理判定結果を示す情報とを返すように形成されればよい。
【０１１８】
結合処理部３２は、ＳＩＰタプルの各ペアに関し、推定値算出部３３から処理結果として局所編集距離及び結合処理判定結果をそれぞれ取得する。結合処理部３２は、結合処理判定結果が真となるペアを特定し、特定された各ペアに関し、タプルポインタのペア及び局所編集距離を含む局所結果タプルをそれぞれ生成する（Ｓ１００６）。
【０１１９】
結合処理部３２は、生成された局所結果タプルを含む局所結合結果をシステム制御装置１０に送信する（Ｓ１００６）。
【０１２０】
結合処理部３２は、局所結合結果をシステム制御装置１０へ送信した（Ｓ１００６）後、又は、部分文字列編集距離が閾値τ以下となるペアが存在しないと判断した場合（Ｓ１００３；ＮＯ）、未処理の他のＳＩＰタプル集合がＳＩＰタプル格納部３５内に存在するか否かを判定する（Ｓ１００７）。結合処理部３２は、未処理のＳＩＰタプル集合が存在しない場合には（Ｓ１００７；ＮＯ）、処理を終了する。一方、結合処理部３２は、未処理のＳＩＰタプル集合が存在する場合には（Ｓ１００７；ＹＥＳ）、未処理のＳＩＰタプルの先頭文字ｃ'を変数ｃに設定した（Ｓ１００８）後、上述と同様に処理（Ｓ１００１）以降を実行する。
【０１２１】
図１１Ａは、図９ＡのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。図１１Ｂは、図９ＢのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。図１１Ｃは、図９ＣのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。図１１Ｄは、図９ＤのＳＩＰタプル集合から算出される、部分文字列編集距離、局所編集距離及び局所結果タプルの例を示す図である。なお、図１１Ａ、図１１Ｂ、図１１Ｃ及び図１１Ｄの各表における空欄は、部分文字列編集距離が閾値τを超えている、又は、局所編集距離が閾値τを超えているため処理が実行されなかった箇所を示す。図１１Ａの例によれば、ＳＩＰタプルの９つのペアに対して、３つの局所結果タプルが生成されている。
【０１２２】
図１２は、第３実施形態におけるシステム制御装置１０の動作例を示すフローチャートである。図１２には、上記（Ｓ５０７）における動作の詳細が示される。
【０１２３】
結果生成部１２は、各結合処理装置３０から送られてくる各局所結合結果をそれぞれ受信する（Ｓ１２０１）。各居所結合結果にはそれぞれ局所結果タプルｓがそれぞれ含まれている。
【０１２４】
結果生成部１２は、受信された局所結果タプルｓに含まれるタプルポインタのペアと同一のペアを含む局所結果タプルｒを結合結果格納部１５から抽出する（Ｓ１２０１）。続いて、結果生成部１２は、受信された局所結果タプルｓに含まれる局所編集距離ｌｅｄ＿ｓと、結合結果格納部１５から抽出された局所結果タプルｒに含まれる局所編集距離ｌｅｄ＿ｒとを取得する（Ｓ１２０３）。
【０１２５】
結果生成部１２は、取得された局所編集距離ｌｅｄ＿ｓが同様に取得された局所編集距離ｌｅｄ＿ｒより小さいか否かを判定する（Ｓ１２０４）。結果生成部１２は、局所編集距離ｌｅｄ＿ｓが局所編集距離ｌｅｄ＿ｒよりも小さい場合（Ｓ１２０４；ＹＥＳ）、結合結果格納部１５から局所結果タプルｒを削除し、代わりに局所結果タプルｓを挿入する（Ｓ１２０５）。結果生成部１２は、局所編集距離ｌｅｄ＿ｓが局所編集距離ｌｅｄ＿ｒ以上である場合（Ｓ１２０４；ＮＯ）、何もしないで処理を終了する。
【０１２６】
ここで、図１１Ａ、図１１Ｂ、図１１Ｃ及び図１１Ｄを参照すると、共通のタプルポインタのペアを含む複数の局所結果タプルが存在する。具体的には、タプルポインタペア＜Ｓ：１０１、Ｒ：２０１＞は、図１１Ａの１行目に示される局所結果タプル＜＜Ｓ：１０１、Ｒ：２０１＞、１＞、及び、図１１Ｄの１行目に示される局所結果タプル＜＜Ｓ：１０１、Ｒ：２０１＞、２＞にそれぞれ含まれている。上述の図１２に示されるシステム制御装置１０の処理により、このような重複する局所結果タプルが除去される。
【０１２７】
図１３は、システム制御装置１０により得られる最終的な結合処理結果の例を示す図である。図１３に示すように、重複する局所結果タプルについては、最小の局所編集距離を持つ局所結果タプルのみが残される。これにより、最終的に残された局所結果タプルに含まれる局所編集距離は、上述における真の編集距離と等しくなる。このことは、図１３と図２０の左下の表とを比較することにより証明することができる。図１３と図２０の左下の表を比較すると、本実施形態における文字列類似結合処理の結果が、図２０の入力タプル集合Ｓ及びＲを入力データとして「品番」属性を結合キー属性とした場合の既存の文字列類似結合処理結果と一致することが分かる。即ち、本実施形態によれば、編集距離を用いた文字列類似結合を適切に実行することができる。
【０１２８】
なお、上述の動作例では、ＳＩＰタプルが、末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプルポインタとから形成される態様を例に挙げたが、当該ＳＩＰタプルは、〔装置構成〕の項で説明したように、先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプルポインタとから形成される態様が利用されてもよい。この態様では、各ＳＩＰタプルは、先頭部分文字列の末尾文字からその分配先がそれぞれ決定され、局所編集距離は、先頭部分文字列間の編集距離と、大きい方の末尾部分文字列の文字列長とを加算することにより算出されればよい。
【０１２９】
〔第３実施形態における作用及び効果〕
上述したように、第３実施形態では、データ管理装置２０により、自身の保持するデータの各タプルの結合キー文字列に関し、先頭文字からｉ（ｉは（τ＋１）以下の正の整数の各々）番目の文字から末尾文字までの末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプルポインタとの組み合わせ、又は、末尾文字からｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプルポインタとから形成されるＳＩＰタプルが（τ＋１）個それぞれ生成される。そして、各ＳＩＰタプルの分配先となる結合処理装置３０が、各ＳＩＰタプルの末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字に応じて決定され、決定された結合処理装置３０に各ＳＩＰタプルがそれぞれ分配される。
【０１３０】
これにより、第３実施形態では、各タプルに関し、最大で、（τ＋１）個の結合処理装置３０が分配先として選出される。従って、第３実施形態によれば、ネットワーク７を流れる総通信量を小さく抑えることができる。具体的には、入力データＳ及びＲに含まれる各タプル数をｍ及びｎとすると、第３実施形態では、システム１全体の処理コストは、結合処理装置３０の台数Ｎに依存されず、｛τ×（ｍ＋ｎ）｝となる。一方、従来の手法の処理コストは、（Ｎ×ｍ＋ｎ）となる。従って、結合処理装置３０の台数Ｎが大きく、かつ、閾値τが小さい程、第３実施形態は、従来手法よりも一層処理コストを抑えることができる。
【０１３１】
また、ｉの値が大きい程、ＳＩＰタプルのデータサイズは、完全な結合キー文字列のデータサイズよりも小さくなる。従って、第３実施形態は、完全な結合キー文字列を各結合処理装置３０に送る必要のある従来手法に比べて、総通信量を抑えることができる。
【０１３２】
また、第３実施形態では、結合処理装置３０により、複数のＳＩＰタプルの各ペアに関し、末尾部分文字列間又は先頭部分文字列間の編集距離が部分文字列編集距離としてそれぞれ算出され、算出された部分文字列編集距離が閾値τ以下となるＳＩＰタプルのペアがまず特定される。そして、この特定されたＳＩＰタプルの各ペアに関し、当該部分文字列編集距離と、大きい方の先頭部分文字列の文字列長又は大きい方の末尾部分文字列の文字列長とを加算することにより、編集距離推定値がそれぞれ算出され、算出された各編集距離推定値が閾値τ以下となるＳＩＰタプルのペアが特定される。
【０１３３】
更に、第３実施形態では、結合処理装置３０により、特定されたＳＩＰタプルの各ペアに関し、タプルポインタのペア及び局所編集距離を含む局所結果タプルが生成され、生成された各局所結果タプルがそれぞれシステム制御装置１０へ送られる。システム制御装置１０では、複数の結合処理装置３０から送られた複数の局所結果タプルの中から同じタプルポインタのペアを含む重複結果タプルを検出し、検出された重複結果タプルの中から最小の編集距離推定値を持つ局所結果タプル以外が削除されることにより、編集距離が閾値τ以下となるタプルのペアが決定される。
【０１３４】
従って、第３実施形態によれば、部分文字列編集距離を算出するため、完全な結合キー文字列の編集距離を算出する従来手法に比べて、処理時間を短縮することができる。
【０１３５】
更に、第３実施形態のような分配手法を用いたとしても、上述の定理に示すように、タプルのペア＜ｓ、ｒ＞に対して、必ず１つ以上の結合処理装置３０で真の編集距離ＥＤ（ｓ、ｒ）と値が等しくなる局所編集距離ＬＥＤ（ｓ、ｒ）が算出されるため、取りこぼしなく結合処理が行われるように、処理対象データが分配される。更に、システム制御装置１０による重複局所結果タプルの排除処理により、適切な文字列類似結合の結合結果を得ることができる。
【０１３６】
［第４実施形態］
第４実施形態は、結合処理装置３０における結合処理手法が第３実施形態と異なる。以下、第４実施形態におけるシステム１について第３実施形態と異なる内容を中心に説明し、第３実施形態と同じ内容については適宜省略する。
【０１３７】
図１４は、第４実施形態における結合処理装置３０の構成例を概念的に示すブロック図である。第４実施形態における結合処理装置３０は、第３実施形態における推定値算出部３３の代わりに、トライ木構築部３７を更に有する。また、結合処理部３２の処理が第３実施形態と異なる。
【０１３８】
第４実施形態における結合処理部３２は、ＳＩＰタプル格納部３５に格納されるＳＩＰタプルを対象にトライ木を構築する処理をトライ木構築部３７に実行させ、構築されたトライ木を辿ることにより局所結果タプルを生成する。結合処理部３２は、第３実施形態と同様に、このように生成された局所結果タプルを含む局所結合結果をそれぞれシステム制御装置１０に送信する。
【０１３９】
上記トライ木は、パトリシアトライに似た構造を有し、結合処理装置３０のメモリ上に構築される。トライ木構築部３７は、末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通する各ＳＩＰタプル集合をＳＩＰタプル格納部３５から抽出し、抽出された各ＳＩＰタプル集合がマッピングされるトライ木をそれぞれ構築する。結合処理部３２により構築されるトライ木は、ＳＩＰタプルを構成する末尾部分文字列（又は先頭部分文字列）、先頭部分文字列の文字列長（又は末尾部分文字列の文字列長）、及びタプルポインタの各情報をそれぞれ保持可能な構造を持つ。
【０１４０】
具体的には、当該トライ木では、ＳＩＰタプルの末尾部分文字列（又は先頭部分文字列）がルートノードからエッジノード（葉ノード）までの枝（パス）にマッピングされ、各枝のエッジノードにはその枝にマッピングされたＳＩＰタプルのタプルポインタが重みと共に付される。また、ルートノードには、末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字がラベルとして付され、子ノードのポインタのリストが重みと共に付される。このトライ木で利用される重みには、ＳＩＰタプルの先頭部分文字列の文字列長又は末尾部分文字列の文字列長が利用される。
【０１４１】
図１５は、トライ木の構築例を概念的に示す図である。図１５は、文字ａを先頭文字（又は末尾文字）に持つ末尾部分文字列（又は先頭部分文字列）を含むＳＩＰタプルの集合に関し構築されたトライ木（ｔｒｅｅ＿ａ）の例を示す。このＳＩＰタプル集合には、３種類の先頭部分文字列の文字列長（０、１、２）が含まれるため、ルートノード（０：ａ）には、３種類の重みが設定される。各子ノードポインタに重みがそれぞれ関連付けられている。なお、図１５では、各ノードは、ノード番号とそのノードに付されたラベルとによりそれぞれ示されている。例えば、ノード（２：ａ）は、ノード番号が２であり、ラベルが文字ａであるノードを示す。なお、図１５では、ルートノードのノード番号は０に設定されている。以下、各ノードはノード番号のみを用いて示される。
【０１４２】
図１５の例において、各枝とＳＩＰタプルとの関係は以下のとおりである。
文字列「ａｂａａ」は、ルートノード（０）、ノード（１）、ノード（２）及びノード（３）にマッピングされる。文字列「ａｃａａ」は、ルートノード（０）、ノード（４）、ノード（５）及びノード（６）にマッピングされる。文字列「ａｂｃａａ」は、ルートノード（０）、ノード（１）、ノード（７）、ノード（８）及びノード（９）にマッピングされる。文字列「ａｃａ」は、ルートノード（０）、ノード（１０）及びノード（１１）にマッピングされる。
【０１４３】
文字列「ａｂｃａａ」がマッピングされた枝のエッジノード（９）には、そのＳＩＰタプルのタプルポインタ「ｓ３」が先頭部分文字列の文字列長「０」と共に付される。同様に、エッジノード（６）には、タプルポインタ「ｓ２」が先頭部分文字列の文字列長「１」と共に付され、エッジノード（１１）には、タプルポインタ「ｓ４」が先頭部分文字列の文字列長「２」と共に付される。
【０１４４】
トライ木構築部３７は、メモリ使用量を抑えるために、同一のタプルポインタを持つＳＩＰタプルの末尾部分文字列（又は先頭部分文字列）を１つの枝にマッピングする。例えば、図１５の文字列「ａｂａａ」と文字列「ａａ」とは同じタプルポインタ「ｓ１」を持つため、文字列「ａｂａａ」がマッピングされた枝の一部に文字列「ａａ」がマッピングされる。これは、一方の文字列は他方の文字列の部分文字列となるからである。従って、文字列「ａａ」は、ルートノード（０）及びノード（３）にマッピングされる。このとき、ルートノード（０）における重み「２」の子ノードポインタとしてノード（３）へのポインタ「３：ａ」が設定され、エッジノード（３）には、タプルポインタ「ｓ１」が重み「０」及び「２」と共に付される。なお、メモリ使用量を抑える必要がない場合には、同一のタプルポインタを持つＳＩＰタプルの末尾部分文字列（又は先頭部分文字列）を異なる枝にマッピングするようにしてもよい。
【０１４５】
結合処理部３２は、トライ木構築部３７によりトライ木の構築処理が完了すると、構築されたトライ木を探索することにより、局所編集距離が閾値τ以下となる局所結果タプルの集合を取得する。結合処理部３２は、トライ木の各ノードを順次訪問し、各ノードと類似している他のノードのリスト（アクティブリスト）を生成することで、当該局所結果タプルの集合を取得する。本実施形態では、アクティブリストには、類似する他のノードに関する、ノード番号、重み及び局所編集距離を含むノードタプルが格納される。結合処理部３２によるトライ木の探索処理及び局所結果タプルの取得処理については後述する。
【０１４６】
〔動作例〕
以下、第４実施形態におけるシステム１の動作例として、第３実施形態と異なる結合処理装置３０における結合処理手法について説明する。
【０１４７】
図１６は、結合処理装置３０のトライ木の構築処理の例を示すフローチャートである。
トライ木構築部３７は、ＳＩＰタプル格納部３５から、末尾部分文字列の先頭文字が共通するＳＩＰタプルの集合を抽出する（Ｓ１６０１）。図１６の例では、当該先頭文字が「ａ」のＳＩＰタプル集合ｓｉｐ［ａ］が抽出される。図１５の例によれば、例えば、ＳＩＰタプル＜「ａｂａａ」、０、ｓ１＞が抽出される。
【０１４８】
トライ木構築部３７は、ＳＩＰタプル集合ｓｉｐ［ａ］が抽出されると、トライ木を初期化する（Ｓ１６０２）。
【０１４９】
続いて、トライ木構築部３７は、抽出されたＳＩＰタプル集合ｓｉｐ［ａ］の中から、未処理のＳＩＰタプルを取得する（Ｓ１６０３）。ここでは、ＳＩＰタプルに含まれる末尾部分文字列を文字列ｓと表記し、残りの先頭部分文字列の文字列長を長さｐｌｅｎと表記し、タプルポインタをｐと表記する。
【０１５０】
トライ木構築部３７は、当該先頭文字「ａ」のトライ木のルートノードが、重みｐｌｅｎが付された子ノードとしてラベルｓ［２］のノードｎｄを持つか否かを判定する（Ｓ１６０４）。言い換えれば、トライ木構築部３７は、当該ルートノードが、文字ｓ［２］をラベルとして持つ子ノードのポインタが重みｐｌｅｎの子ノードポインタとして設定されているか否かを判定する（Ｓ１６０４）。文字ｓ［２］とは、文字列ｓの先頭から２文字目の文字を意味する。図１５の例によれば、ルートノード（０）に、文字「ｂ」（「ａｂａａ」の２文字目）をラベルとして持つ子ノード（ノード（１））のポインタ（「１：ｂ」）が重み（０）の子ノードポインタとして設定されているか否かが判定される。
【０１５１】
トライ木構築部３７は、既に子ノードを持つと判定すると（Ｓ１６０４；ＹＥＳ）、処理（Ｓ１６０６）を実行する。一方、トライ木構築部３７は、該当する子ノードを持たないと判定すると（Ｓ１６０４；ＮＯ）、ラベルｓ［２］のノードｎｄを新たに生成し、この生成された新たなノードｎｄをルートノードの重みｐｌｅｎの子ノードに設定する（Ｓ１６０５）。図１５の例によれば、ラベル「ｂ」を持つノード（１）が生成され、ルートノードに、重み（０）及び子ノードポインタ「１：ｂ」が設定される。
【０１５２】
トライ木構築部３７は、変数ｉを３に設定し、変数ｐａｒｅｎｔをラベルｓ［２］のノードｎｄに設定する（Ｓ１６０６）。
【０１５３】
続いて、トライ木構築部３７は、変数ｉが文字列ｓの長さより大きくなるまで（Ｓ１６０７）、以下に説明する処理（Ｓ１６０８）から（Ｓ１６１３）を繰り返し実行する。
【０１５４】
処理（Ｓ１６０８）では、トライ木構築部３７は、文字ｓ［ｉ］をラベルに持つノードｎｄが変数ｐａｒｅｎｔに設定されているノードの子ノードに存在するか否かを判定する。この判定は、例えば、各ノードが持つ子ノードのポインタを用いて実行される。
【０１５５】
既に、ラベルｓ［ｉ］のノードｎｄが存在する場合には（Ｓ１６０８；ＹＥＳ）、トライ木構築部３７は、変数ｐａｒｅｎｔにラベルｓ［ｉ］のノードｎｄを設定し（Ｓ１６１２）、かつ、変数ｉに１加算した（Ｓ１６１３）後、（Ｓ１６０７）の判定を再度行う。
【０１５６】
一方、未だ、ラベルｓ［ｉ］のノードｎｄが存在しない場合には（Ｓ１６０８；ＮＯ）、トライ木構築部３７は、ラベルｓ［ｉ］のノードｎｄを新たに生成し、新たなノードｎｄを変数ｐａｒｅｎｔに設定されているノードの子ノードに設定する（Ｓ１６０９）。図１５の例によれば、ラベル「ａ」を持つノード（２）が生成され、ノード（１）に、子ノードポインタ「２：ａ」が設定される。
【０１５７】
続いて、トライ木構築部３７は、文字ｓ［ｉ］の１つ前の文字ｓ［ｉ−１］から始まる末尾部分文字列を含むＳＩＰタプルが存在し、かつ、当該文字ｓ［ｉ−１］がルートノードのラベルと等しいか否かを判定する（Ｓ１６１０）。具体的には、この判定は、図１６に示すように、｛ｐｌｅｎ＋（ｉ−２）≦τ｝かつ（ｓ［ｉ−１］＝「ａ」）が真か否かの判定である。この判定により、１つの枝にマッピングできる他のＳＩＰタプルが存在するか否かが判定される。
【０１５８】
トライ木構築部３７は、文字ｓ［ｉ］の１つ前の文字ｓ［ｉ−１］から始まる末尾部分文字列を含むＳＩＰタプルが存在し、かつ、当該文字ｓ［ｉ−１］がルートノードのラベルと等しい場合には（Ｓ１６１０；ＹＥＳ）、ルートノードの重み（ｐｌｅｎ＋（ｉ−２））の子ノードとしてノードｎｄを追加する（Ｓ１６１１）。言い換えれば、トライ木構築部３７は、当該ルートノードに、ラベルｓ［ｉ］のノードｎｄのポインタを重み（ｐｌｅｎ＋（ｉ−２））と共に設定する。
【０１５９】
図１５の例によれば、文字列ｓが「ａｂａａ」である場合の処理（Ｓ１６０９）においてノード（３）が生成され、処理（Ｓ１６１１）において、ルートノードに、子ノードポインタ「３：ａ」が重み（２）と共に設定される。よって、この場合、文字列ｓが「ａａ」であるＳＩＰタプルが処理対象とされた時には、既に、ルートノード（０）からノード（３）へのリンクは設定された状態となっている。以降、上述した処理（Ｓ１６１２）及び（Ｓ１６１３）が実行される。
【０１６０】
トライ木構築部３７は、変数ｉが文字列ｓの長さより大きくなる（Ｓ１６０７；ＹＥＳ）、即ち、文字列ｓのトライ木へのマッピングが完了すると、ノードｎｄにタプルポインタｐを重みｐｌｅｎと共に設定する（Ｓ１６１４）。図１５の例によれば、例えば、ノード（３）に、タプルポインタ「ｓ１」が重み（０）と共に設定される。なお、文字列ｓが「ａａ」であるＳＩＰタプルが処理対象とされる場合には、ノード（３）に設定されたタプルポインタ「ｓ１」の重みとして重み（２）が追加される。
【０１６１】
続いて、トライ木構築部３７は、ＳＩＰタプル集合ｓｉｐ［ａ］に未処理のＳＩＰタプルｔ'が存在するか否かを判定する（Ｓ１６１５）。未処理のＳＩＰタプルｔ'が存在する場合には（Ｓ１６１５；ＹＥＳ）、トライ木構築部３７は、処理対象のＳＩＰタプルを示す変数ｔをｔ'に設定した（Ｓ１６１６）後、再度、処理（Ｓ１６０３）以降を実行する。なお、未処理のＳＩＰタプルｔ'が存在しない場合には（Ｓ１６１５；ＮＯ）、トライ木構築部３７は処理を終了する。
【０１６２】
以上のような処理が実行されることにより、図１５に示すようなトライ木が構築される。ＳＩＰタプル格納部３５から、他の文字「ｂ」が共通するＳＩＰタプルの集合及び他の文字「ｃ」が共通するＳＩＰタプルの集合が抽出された場合には（Ｓ１６０１）、文字「ｂ」及び文字「ｃ」に関する各トライ木がそれぞれ構築される。図１７Ａ及び図１７Ｂは、文字「ｂ」及び文字「ｃ」に関する各トライ木の例を示す図である。
【０１６３】
結合処理部３２は、トライ木構築部３７における上述のようなトライ木の構築処理が完了すると、構築されたトライ木を探索することにより、局所編集距離が閾値τ以下となる局所結果タプルの集合を取得する。図１８は、トライ木の探索処理の例を示すフローチャートである。結合処理部３２は、各トライ木についてそれぞれ図１８に示す処理を実行する。
【０１６４】
結合処理部３２は、ルートノードに設定されている重みの中から、未処理の重みｗを取得する（Ｓ１８０１）。
【０１６５】
更に、結合処理部３２は、ルートノードに設定されている重みの中から、任意の重みｗ２を取得する（Ｓ１８０２）。結合処理部３２は、重みｗのルートノード（以降、ｒｏｏｔ（ｗ）と表記する）と重みｗ２のルートノード（以降、ｒｏｏｔ（ｗ２）と表記する）との間の局所編集距離を算出する（Ｓ１８０２）。局所編集距離の算出手法は、第３実施形態と同様である。ｒｏｏｔ（ｗ）及びｒｏｏｔ（ｗ２）は共に同じラベルを持つため、編集距離ＥＤ（ｒｏｏｔ（ｗ）、ｒｏｏｔ（ｗ２））は０（ゼロ）である。よって、ｒｏｏｔ（ｗ）とｒｏｏｔ（ｗ２）との間の局所編集距離ｌｅｄは、大きい方の重み値、即ち、先頭部分文字列（又は末尾部分文字列）の文字列長となる。
【０１６６】
結合処理部３２は、ｒｏｏｔ（ｗ２）をｒｏｏｔ（ｗ）のアクティブリストに追加する（Ｓ１８０２）。これにより、ｒｏｏｔ（ｗ）のアクティブリストには、ｒｏｏｔ（ｗ２）に関するノードタプルが設定される。このノードタプルは、ノード番号（０）、重み（ｗ２）、及び、ｒｏｏｔ（ｗ）とｒｏｏｔ（ｗ２）との間の局所編集距離を含む。ところで、ルートノード間の局所編集距離は、上述したとおり、大きい方の重み値となるため、必ず閾値τ以下となる。よって、処理（Ｓ１８０２）では、閾値τと局所編集距離とを比較することなく、ｒｏｏｔ（ｗ２）に関するノードタプルがアクティブリストに追加される。
【０１６７】
次に、結合処理部３２は、ｒｏｏｔ（ｗ２）の子ノードｎｄ２（ｗ２）と、ｒｏｏｔ（ｗ）との間の局所編集距離ｌｅｄを算出する（Ｓ１８０３）。ここで、ノード間の局所編集距離は、各ノードまでのパスにより形成される文字列間の編集距離に、大きい方の重み値が加算されることにより算出される。つまり、ｒｏｏｔ（ｗ）とノードｎｄ２（ｗ２）との間の局所編集距離は、ｒｏｏｔ（ｗ）のラベルに付された文字と、ｒｏｏｔ（ｗ）のラベルとノードｎｄ２（ｗ２）のラベルとから形成される文字列との間の編集距離に、重みｗと重みｗ２とのうち大きい方の重み値を加えた値となる。
【０１６８】
結合処理部３２は、算出された局所編集距離ｌｅｄが閾値τ以下であれば、ｒｏｏｔ（ｗ）のアクティブリストにノードｎｄ２（ｗ２）を追加する（Ｓ１８０３）。これにより、ｒｏｏｔ（ｗ）のアクティブリストには、ノードｎｄ２（ｗ２）に関するノードタプルが追加される。このノードタプルは、ノードｎｄ２（ｗ２）に関するノード番号、重み（ｗ２）及び算出された局所編集距離ｌｅｄを含む。
【０１６９】
なお、結合処理部３２は、ｒｏｏｔ（ｗ２）の子ノードｎｄ２（ｗ２）が複数存在する場合には、各子ノードについて処理（Ｓ１８０３）をそれぞれ実行する。また、結合処理部３２は、ルートノードに複数の重みが設定されている場合には、各重み（ｗ２）に関し、上述の処理（Ｓ１８０２）及び（Ｓ１８０３）を実行する。以上により、ｒｏｏｔ（ｗ）のアクティブリストの生成が完了する。
【０１７０】
結合処理部３２は、ｒｏｏｔ（ｗ）の子孫ノードｎｄ（ｗ）のアクティブリストも再帰的に順次生成する。まず、結合処理部３２は、ｒｏｏｔ（ｗ）の各子ノードｎｄ（ｗ）をそれぞれ取得する（Ｓ１８０４）。
【０１７１】
結合処理部３２は、取得された子ノードｎｄ（ｗ）の親ノードのアクティブリストを取得し（Ｓ１８０５）、そのアクティブリストに設定されるノードａｎ（ｗ３）を取得する（Ｓ１８０６）。
【０１７２】
結合処理部３２は、ノードｎｄ（ｗ）とノードａｎ（ｗ３）との間の局所編集距離ｌｅｄを算出し、算出された局所編集距離ｌｅｄが閾値τ以下である場合には、ノードｎｄ（ｗ）のアクティブリストにノードａｎ（ｗ３）を追加する（Ｓ１８０７）。
【０１７３】
更に、結合処理部３２は、ノードａｎ（ｗ３）の各子ノードａｎ＿ｃｈｉｌｄ（ｗ３）とノードｎｄ（ｗ）との間の局所編集距離ｌｅｄ２を算出し、算出された局所編集距離ｌｅｄ２が閾値τ以下である場合には、ノードｎｄ（ｗ）のアクティブリストにノードａｎ＿ｃｈｉｌｄ（ｗ３）を追加する（Ｓ１８０８）。
【０１７４】
結合処理部３２は、ノードｎｄ（ｗ）の親ノードのアクティブリストに、未処理のノードａｎ（ｗ３）が存在するか否かを判定する（Ｓ１８０９）。結合処理部３２は、未処理のノードａｎ（ｗ３）が存在する場合には（Ｓ１８０９；ＹＥＳ）、その未処理のノードａｎ（ｗ３）に関し、上述の処理（Ｓ１８０６）以降を実行する。
【０１７５】
結合処理部３２は、未処理のノードａｎ（ｗ３）が存在しない場合には（Ｓ１８０９；ＮＯ）、ノードｎｄ（ｗ）における未処理の子ノードｎｄ＿ｃｈｉｌｄ（ｗ）が存在するか否かを判定する（Ｓ１８１０）。結合処理部３２は、未処理の子ノードｎｄ＿ｃｈｉｌｄ（ｗ）が存在する場合には（Ｓ１８１０；ＹＥＳ）、その未処理の子ノードｎｄ＿ｃｈｉｌｄ（ｗ）を処理対象のノードｎｄ（ｗ）に設定して（Ｓ１８１１）、上述の処理（Ｓ１８０５）以降を実行する。
【０１７６】
結合処理部３２は、未処理の子ノードｎｄ＿ｃｈｉｌｄ（ｗ）が存在しない場合には（Ｓ１８１０；ＮＯ）、ルートノードに未処理の重みｗ'が存在するか否かを判定する（Ｓ１８１２）。未処理の重みｗ'が存在する場合には（Ｓ１８１２；ＹＥＳ）、結合処理部３２は、その未処理の重みに関し、上述の処理（Ｓ１８０１）以降を実行する。一方、未処理の重みｗ'が存在しなければ（Ｓ１８１２；ＮＯ）、結合処理部３２は、処理を終了する。
【０１７７】
結合処理部３２は、以上のような処理を実行することにより、トライ木の各ノードについてアクティブリストをそれぞれ生成する。図１９は、アクティブリストの例を示す図である。図１９は、図１５の例に示す、文字「ａ」に関するトライ木ｔｒｅｅ＿ａにおける、重み（０）のルートノード、ノード（１）、ノード（２）及びノード（３）のアクティブリストを示す。図１９における下線は、対応するノードがタプルポインタを所持することを示す。
【０１７８】
これにより、結合処理部３２は、タプルポインタを所持するノード（３）のアクティブリストから、ノード（３）を含む、局所編集距離が閾値τ以下となるノードのペアを特定する。図１９の例によれば、結合処理部３２は、ノード（３）とノード（３）とのペア、ノード（３）とノード（９）とのペア、ノード（３）とノード（６）とのペアを得ることができる。結合処理部３２は、このように特定されたノードのペアに関し、アクティブリスト内のノードタプルに基づいて、タプルポインタのペア及び局所編集距離を含む局所結果タプルを生成する。このようにして、結合処理部３２は、全てのエッジノードのアクティブリストを利用することにより、局所結合結果を得ることができる。
【０１７９】
〔第４実施形態における作用及び効果〕
第４実施形態では、結合処理装置３０において、データ管理装置２０から分配されるＳＩＰタプルがトライ木にマッピングされる。当該トライ木では、ＳＩＰタプルに含まれる先頭部分文字列又は接尾部分文字列の文字列長が重みとして用いられ、重み毎に少なくとも１つの子ノードを持つルートノードが生成され、エッジノード（葉ノード）にはタプルポインタが重みと共に付される。
【０１８０】
そして、構築されたトライ木の各ノードに関しそれぞれ、親ノードのアクティブリストに基づいて選択された他のノードと当該ノードとの間の局所編集距離が算出され、算出された局所編集距離と閾値τとが比較される。結果、局所編集距離が閾値τ以下となる他のノードに関する情報が各ノードのアクティブリストに設定される。
【０１８１】
このように、第４実施形態によれば、トライ木の性質を利用して、親ノードのアクティブリストに基づいて各ノードの結合処理対象を選択することにより、局所編集距離を計算すべき対象を制限することができ、結果、結合処理の計算量を削減することができる。更に、第４実施形態によれば、末尾部分文字列又は先頭部分文字列を用いた局所編集距離の算出を採用するため、結合キー文字列全体を対象とした編集距離の算出を必要とする従来手法に比べて、処理コストを削減することができる。
【０１８２】
また、第４実施形態では、各ノードのアクティブリストには、当該ノードとの間の局所編集距離が閾値以下となる他ノードの情報、及び、その局所編集距離が設定される。よって、第４実施形態によれば、各エッジノードのアクティブリストを参照することにより、局所編集距離が閾値τ以下となる局所結果タプルを即座に取得することができる。
【０１８３】
［変形例］
上述の各実施形態では、１つのタプルに対して、（τ＋１個）のＳＩＰタプルが生成された。そして、１つのタプルから生成された複数のＳＩＰタプルが、末尾部分文字列の先頭文字（又は先頭部分文字列の末尾文字）が等しいために、同じ結合処理装置３０へ分配される可能性がある。例えば、図９Ｃの例によれば、タプルポインタが「Ｒ：２０３」である２つのＳＩＰタプルが同じ結合処理装置３０に分配されている。この場合、結合処理装置３０は、末尾部分文字列が「ＺＺＸ−ＢＢ−ＫＣ」であり、先頭部分文字列の文字列長が０（ゼロ）であるＳＩＰタプルのみを得れば、そのＳＩＰタプルから、末尾部分文字列が「ＺＸ−ＢＢ−ＫＣ」であり、先頭部分文字列の文字列長が１であるＳＩＰタプルを自身で生成することができる。
【０１８４】
従って、データ管理装置２０のＳＩＰタプル生成部２１は、末尾部分文字列の先頭文字が同じであるＳＩＰタプルに関しては、残りの先頭部分文字列の文字列長が最も小さいＳＩＰタプルのみを生成するようにしてもよい。この場合、結合処理装置３０は、受信されたＳＩＰタプルに基づいて、必要となる他のＳＩＰタプルを生成するようにすればよい。
【０１８５】
図９Ｃの例によれば、データ管理装置２０は、末尾部分文字列が「ＺＺＸ−ＢＢ−ＫＣ」であり先頭部分文字列の文字列長が０（ゼロ）であるＳＩＰタプルを生成し、末尾部分文字列の先頭文字が同じになるＳＩＰタプル（末尾部分文字列が「ＺＸ−ＢＢ−ＫＣ」であり、先頭部分文字列の文字列長が１であるＳＩＰタプル）を生成しない。結合処理装置３０は、このＳＩＰタプルを受信した場合、文字列「ＺＺＸ−ＢＢ−ＫＣ」と、文字列長（０）と、閾値τとの関係から、データ管理装置２０で生成されなかったＳＩＰタプルが必要であると判断する。そこで、結合処理装置３０は、末尾部分文字列が「ＺＸ−ＢＢ−ＫＣ」であり、先頭部分文字列の文字列長が１であるＳＩＰタプルを生成した後、結合処理を開始する。
【０１８６】
このようにすれば、システム１内の通信コストを一層削減することができる。
【０１８７】
また、上述の各実施形態では、システム制御装置１０の要求制御部１１が処理要求を取得した後、要求制御部１１により送られる実行命令に応じて、データ管理装置２０がＳＩＰタプルを分配し、結合処理装置３０が処理を開始していた。他の態様として、処理要求が受け付けられる前に、データ管理装置２０が所定条件を満たすＳＩＰタプルを予め結合処理装置３０へ分配しておくようにしてもよい。
【０１８８】
具体的には、編集距離閾値τに上限値ｍａｘ＿τを設け、データ管理装置２０は、当該閾値τが上限値である場合のＳＩＰタプル（１≦ｉ≦ｍａｘ＿τ＋１）を生成し、予め分配する。システム制御装置１０は、閾値τを含んだ処理要求を受け付けると、結合処理装置３０のみに対して実行命令を出す。結合処理装置３０は、予め分配されているＳＩＰタプルのうち、先頭部分文字列（又は末尾部分文字列）の文字列長が閾値τ以下のＳＩＰタプルのみを用いて、結合処理を実行する。
【０１８９】
このようにすれば、処理要求を受け付けてから結合処理結果を生成するまでの時間には、データ管理装置２０から結合処理装置３０への分配データ送信処理にかかる時間は含まれない。よって、処理要求を受け付けてから結合処理結果を生成するまでの時間を短縮することができる。このような態様は、多くの処理要求が短時間のうちに大量に舞い込むオンライン処理に好適である。
【０１９０】
［補足］
上述の各実施形態及び変形例において実行される類似結合処理は、少なくとも１つのデータ管理装置２０に格納されている少なくとも１つのデータ（ＳＩＰタプル集合）であって処理要求で指定されたデータの中から、当該処理要求で指定された結合キー属性の文字列間の編集距離が閾値τの条件を満たすタプルのペアを検出していた。しかしながら、本発明に係る類似結合処理は、このような態様に限定されず、文字列類似検索処理の意をも包含する概念である。
【０１９１】
つまり、本発明に係る類似結合処理は、処理要求等で得られるクエリ文字列を１つのタプルとし、このクエリ文字列との間の編集距離が閾値τの条件を満たすタプルを、少なくとも１つのデータ管理装置２０に格納されている少なくとも１つのデータの中から検索する処理であってもよい。
【０１９２】
この態様では、処理要求で指定されたデータを保持するデータ管理装置２０は、上述の各実施形態及び変形例と同様に、ＳＩＰタプルを生成しかつ分配する。一方、クエリ文字列をシステム制御装置１０から取得したデータ管理装置２０は、このクエリ文字列に関するＳＩＰタプルを生成しかつ分配する。クエリ文字列に関するＳＩＰタプルを受信した結合処理装置３０は、クエリ文字列に関するＳＩＰタプルと、他のＳＩＰタプルとのペアを対象に、上述の各実施形態及び変形例と同様の結合処理を実行すればよい。
【０１９３】
また、本発明に係る類似結合処理は、同じ意味を示すが表記が微妙に異なる文字列を検出するといった名寄せ技術をも含む概念である。
【０１９４】
また、上述の各実施形態及び変形例で示した文字列類似結合システム１は、複数の店舗をまたがる在庫検索システム等に適用することができる。このような態様によれば、商品名が店舗によって若干異なる場合にも、探したい商品を検出することができる。また、同じモデルの商品であっても色やサイズなどが違うことにより各商品に異なる品番が付く場合がある。このような場合でも、当該態様によれば、色やサイズが違う同じモデルの商品を検出することができる。
【０１９５】
なお、上述の説明で用いた複数のフローチャートでは、複数のステップ（処理）が順番に記載されているが、本実施形態で実行される処理ステップの実行順序は、その記載の順番に制限されない。本実施形態では、図示される処理ステップの順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。
【０１９６】
上記の各実施形態及び各変形例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各変形例が以下の記載に限定されるものではない。
【０１９７】
（付記１）複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する結合処理装置において、上記各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する結合処理手段を備えることを特徴とする結合処理装置。
【０１９８】
（付記２）複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する複数の結合処理装置と通信可能に接続されるデータ管理装置において、複数のタプルを格納するデータ格納手段と、上記複数の結合処理装置の中から、上記データ格納手段に格納される各タプルを処理させる結合処理装置を各タプルの分配先として決定する際に、各タプルの分配先を、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に含まれる少なくとも１つの文字を、結合キー文字列の中の当該端部分に含む他のタプルと同じ分配先にそれぞれ決定し、かつ、各タプルの結合キー文字列の中の当該端部分に共通する文字を持たない他のタプルとは同じ分配先にならないようにそれぞれ決定するデータ分配手段と、を備えることを特徴とするデータ管理装置。
【０１９９】
（付記３）少なくとも１つのデータ管理装置、及び、この少なくとも１つのデータ管理装置で保持される複数のタプルを対象に編集距離閾値τ（正の整数）を用いて類似結合処理を実行する複数の結合処理装置を含む文字列類似結合システムにおいて、上記少なくとも１つのデータ管理装置は、上記各タプルの結合キー文字列に関し、先頭文字からｉ（ｉは（τ＋１）以下の正の整数の各々）番目の文字から末尾文字までの末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプル特定データとの組み合わせ、又は、末尾文字からｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプル特定データとの組み合わせを含むキー情報タプルを（τ＋１）個それぞれ生成するキー情報生成手段と、このキー情報生成手段により生成された各キー情報タプルに含まれる末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字に基づいて、当該各キー情報タプルの分配先を決定し、当該各キー情報タプルを、分配先として決定された各結合処理装置に各タプルのデータとしてそれぞれ分配するデータ分配手段と、を備え、上記複数の結合処理装置はそれぞれ、上記少なくとも１つのデータ管理装置から分配された複数のキー情報タプルを受信する受信手段と、この受信手段により受信された複数のキー情報タプルのうち、末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通するキー情報タプル集合毎に、上記類似結合処理を実行する結合処理手段と、を備えることを特徴とする文字列類似結合システム。
【０２００】
（付記４）上記複数の結合処理装置はそれぞれ、上記受信手段により受信された複数のキー情報タプルの各ペアに関し、末尾部分文字列間又は先頭部分文字列間の編集距離を部分文字列編集距離としてそれぞれ算出し、算出された部分文字列編集距離が上記編集距離閾値τの条件を満たすキー情報タプルの各ペアに関し、当該部分文字列編集距離と、大きい方の先頭部分文字列の文字列長又は大きい方の末尾部分文字列の文字列長とを加算することにより、編集距離推定値をそれぞれ算出する推定値算出手段を更に備え、上記結合処理手段は、上記推定値算出手段により算出された各編集距離推定値と上記編集距離閾値τとの比較結果に基づいて、編集距離が上記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する、ことを特徴とする付記３に記載の文字列類似結合システム。
【０２０１】
（付記５）上記複数の結合処理装置はそれぞれ、上記受信手段により受信された複数のキー情報タプルに基づいて、先頭部分文字列又は末尾部分文字列の文字列長を重み値として管理するトライ木であって、末尾部分文字列又は先頭部分文字列がルートノードからエッジノードまでの枝にマッピングされたトライ木を構築するトライ木構築手段、を更に備え、上記結合処理手段は、上記トライ木構築手段により構築されたトライ木に含まれる各対象ノードに関し、対象ノードにより特定される文字列と他ノードで特定される文字列との間の編集距離と、対象ノード及び他ノードの重み値のうち大きい方の重み値とを加算することにより、他ノードのための編集距離推定値をそれぞれ算出し、当該編集距離推定値が上記編集距離閾値τの条件を満たす他ノードの情報及び当該編集距離推定値を含むリストを各対象ノードに関しそれぞれ設定し、エッジノードに設定されたリストに基づいて、編集距離が上記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する、ことを特徴とする付記３に記載の文字列類似結合システム。
【０２０２】
（付記６）上記結合処理手段は、親ノードに設定されたリストに含まれる他ノードの情報に基づいて、各対象ノードの編集距離推定値の計算対象となる他ノードを選択する、
ことを特徴とする付記５に記載の文字列類似結合システム。
【０２０３】
（付記７）上記トライ木構築手段は、同一のタプル特定データを持つ複数のキー情報タプルの末尾部分文字列又は先頭部分文字列を上記トライ木の１つの枝及び当該１つの枝の少なくとも１部分にマッピングし、上記トライ木のルートノードに、当該１つの枝の少なくとも１部分を特定するためのノードポインタを上記重み値と共に設定する、
ことを特徴とする付記５又は６に記載の文字列類似結合システム。
【０２０４】
（付記８）上記少なくとも１つのデータ管理装置及び上記複数の結合処理装置と通信可能なシステム制御装置を更に含み、上記各結合処理装置の上記結合処理手段は、上記特定された各ペアに関し、タプル特定データのペア及び編集距離推定値を含む結果タプルをそれぞれ生成し、生成された各結果タプルをそれぞれ上記システム制御装置に送信し、上記システム制御装置は、上記複数の結合処理装置から送られた複数の結果タプルの中から同じタプル特定データのペアを含む重複結果タプルを検出し、検出された重複結果タプルの中から最小の編集距離推定値を持つ結果タプル以外の結果タプルを削除することにより、編集距離が上記編集距離閾値τの条件を満たすタプルのペアを決定する結果生成手段、を備えることを特徴とする付記４から７のいずれか１つに記載の文字列類似結合システム。
【０２０５】
（付記９）上記システム制御装置は、上記編集距離閾値τを含む処理要求を取得した後、上記複数の結合処理装置に処理の実行命令を送信する要求制御手段、を更に備え、上記少なくとも１つのデータ管理装置の上記キー情報生成手段は、予め決められた上記編集距離閾値τの上限値を上記編集距離閾値τと仮定して、上記各タプルの結合キー文字列に関する仮のキー情報タプルをそれぞれ生成し、上記少なくとも１つのデータ管理装置の上記データ分配手段は、上記処理要求が上記システム制御装置により取得される前に、上記各仮のキー情報タプルを各分配先の結合処理装置にそれぞれ分配する、ことを特徴とする付記３から８のいずれか１つに記載の文字列類似結合システム。
【０２０６】
（付記１０）複数のタプルを対象に編集距離閾値τ（正の整数）を用いて実行される文字列類似結合方法において、少なくとも１つのコンピュータが、各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する、ことを含む文字列類似結合方法。
【０２０７】
（付記１１）複数のタプルを対象に編集距離閾値τ（正の整数）を用いて実行される文字列類似結合方法において、少なくとも１つのコンピュータが、上記各タプルの結合キー文字列に関し、先頭文字からｉ（ｉは（τ＋１）以下の正の整数の各々）番目の文字から末尾文字までの末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプル特定データとの組み合わせ、又は、末尾文字からｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプル特定データとの組み合わせを含むキー情報タプルを（τ＋１）個それぞれ生成し、上記生成された各キー情報タプルに含まれる末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字に基づいて、当該各キー情報タプルの分配先を決定し、当該各キー情報タプルを、分配先として決定された各対象コンピュータに各タプルのデータとしてそれぞれ分配し、上記各キー情報タプルの分配先として決定された対象コンピュータが、上記分配された複数のキー情報タプルを受信し、上記受信された複数のキー情報タプルのうち、末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通するキー情報タプル集合毎に、類似結合処理を実行する、ことを含む文字列類似結合方法。
【０２０８】
（付記１２）上記各キー情報タプルの分配先として決定された対象コンピュータが、上記受信された複数のキー情報タプルの各ペアに関し、末尾部分文字列間又は先頭部分文字列間の編集距離を部分文字列編集距離としてそれぞれ算出し、算出された部分文字列編集距離が上記編集距離閾値τの条件を満たすキー情報タプルの各ペアに関し、当該部分文字列編集距離と、大きい方の先頭部分文字列の文字列長又は大きい方の末尾部分文字列の文字列長とを加算することにより、編集距離推定値をそれぞれ算出し、上記算出された各編集距離推定値と上記編集距離閾値τとの比較結果に基づいて、編集距離が上記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する、ことを更に含む付記１１に記載の文字列類似結合方法。
【０２０９】
（付記１３）上記各キー情報タプルの分配先として決定された対象コンピュータが、上記受信された複数のキー情報タプルに基づいて、先頭部分文字列又は末尾部分文字列の文字列長を重み値として管理するトライ木であって、末尾部分文字列又は先頭部分文字列がルートノードからエッジノードまでの枝にマッピングされたトライ木を構築し、上記構築されたトライ木に含まれる各対象ノードに関し、対象ノードにより特定される文字列と他ノードで特定される文字列との間の編集距離と、対象ノード及び他ノードの重み値のうち大きい方の重み値とを加算することにより、他ノードのための編集距離推定値をそれぞれ算出し、当該編集距離推定値が上記編集距離閾値τの条件を満たす他ノードの情報及び当該編集距離推定値を含むリストを各対象ノードに関しそれぞれ設定し、エッジノードに設定されたリストに基づいて、編集距離が上記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する、ことを更に含む付記１１に記載の文字列類似結合方法。
【０２１０】
（付記１４）上記編集距離推定値を算出する際には、親ノードに設定されたリストに含まれる他ノードの情報に基づいて、各対象ノードの編集距離推定値の計算対象となる他ノードを選択する、ことを特徴とする付記１３に記載の文字列類似結合方法。
【０２１１】
（付記１５）上記トライ木を構築する際には、同一のタプル特定データを持つ複数のキー情報タプルの末尾部分文字列又は先頭部分文字列を上記トライ木の１つの枝及び当該１つの枝の少なくとも１部分にマッピングし、上記トライ木のルートノードに、当該１つの枝の少なくとも１部分を特定するためのノードポインタを上記重み値と共に設定する、ことを特徴とする付記１３又は１４に記載の文字列類似結合方法。
【０２１２】
（付記１６）上記各キー情報タプルの分配先として決定された対象コンピュータが、上記特定された各ペアに関し、タプル特定データのペア及び編集距離推定値を含む結果タプルをそれぞれ生成し、上記生成された各結果タプルをそれぞれ他のコンピュータに送信し、上記他のコンピュータが、上記対象コンピュータから送られた複数の結果タプルの中から同じタプル特定データのペアを含む重複結果タプルを検出し、検出された重複結果タプルの中から最小の編集距離推定値を持つ結果タプル以外の結果タプルを削除することにより、編集距離が上記編集距離閾値τの条件を満たすタプルのペアを決定する、ことを更に含む付記１２から１５のいずれか１つに記載の文字列類似結合方法。
【０２１３】
（付記１７）複数のタプルを対象に編集距離閾値τ（正の整数）を用いて文字列類似結合を少なくとも１つのコンピュータに実行させるプログラムにおいて、上記少なくとも１つのコンピュータに、上記各タプルの結合キー文字列の中の先頭文字又は末尾文字から（τ＋１）番目までの端部分に、共通する文字を持たないタプルのペアを編集距離計算対象から除外する結合処理手段、を実現させることを特徴とするプログラム。
【０２１４】
（付記１８）複数のタプルを対象に編集距離閾値τ（正の整数）を用いて文字列類似結合を少なくとも１つのコンピュータに実行させるプログラムにおいて、少なくとも１つのコンピュータに、上記各タプルの結合キー文字列に関し、先頭文字からｉ（ｉは（τ＋１）以下の正の整数の各々）番目の文字から末尾文字までの末尾部分文字列と、残りの先頭部分文字列の文字列長と、タプル特定データとの組み合わせ、又は、末尾文字からｉ番目の文字から先頭文字までの先頭部分文字列と、残りの末尾部分文字列の文字列長と、タプル特定データとの組み合わせを含むキー情報タプルを（τ＋１）個それぞれ生成するキー情報生成手段と、このキー情報生成手段により生成された各キー情報タプルに含まれる末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字に基づいて、当該各キー情報タプルの分配先を決定し、当該各キー情報タプルを、分配先として決定された各対象コンピュータに各タプルのデータとしてそれぞれ分配するデータ分配手段と、を実現させ、上記各キー情報タプルの分配先として決定された対象コンピュータに、上記少なくとも１つのコンピュータから分配された複数のキー情報タプルを受信する受信手段と、この受信手段により受信された複数のキー情報タプルのうち、末尾部分文字列の先頭文字又は先頭部分文字列の末尾文字が共通するキー情報タプル集合毎に、前記類似結合処理を実行する結合処理手段と、を実現させることを特徴とするプログラム。
【０２１５】
（付記１９）上記各キー情報タプルの分配先として決定された対象コンピュータに、上記受信手段により受信された複数のキー情報タプルの各ペアに関し、末尾部分文字列間又は先頭部分文字列間の編集距離を部分文字列編集距離としてそれぞれ算出し、算出された部分文字列編集距離が上記編集距離閾値τの条件を満たすキー情報タプルの各ペアに関し、当該部分文字列編集距離と、大きい方の先頭部分文字列の文字列長又は大きい方の末尾部分文字列の文字列長とを加算することにより、編集距離推定値をそれぞれ算出する推定値算出手段と、上記推定値算出手段により算出された各編集距離推定値と上記編集距離閾値τとの比較結果に基づいて、編集距離が上記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する結合処理手段と、を実現させることを特徴とする付記１８に記載のプログラム。
【０２１６】
（付記２０）上記各キー情報タプルの分配先として決定された対象コンピュータに、上記受信手段により受信された複数のキー情報タプルに基づいて、先頭部分文字列又は末尾部分文字列の文字列長を重み値として管理するトライ木であって、末尾部分文字列又は先頭部分文字列がルートノードからエッジノードまでの枝にマッピングされたトライ木を構築するトライ木構築手段と、上記トライ木構築手段により構築されたトライ木に含まれる各対象ノードに関し、対象ノードにより特定される文字列と他ノードで特定される文字列との間の編集距離と、対象ノード及び他ノードの重み値のうち大きい方の重み値とを加算することにより、他ノードのための編集距離推定値をそれぞれ算出し、当該編集距離推定値が上記編集距離閾値τの条件を満たす他ノードの情報及び当該編集距離推定値を含むリストを各対象ノードに関しそれぞれ設定し、エッジノードに設定されたリストに基づいて、編集距離が上記編集距離閾値τの条件を満たすと推定されるタプルのペアを特定する結合処理手段と、を実現させることを特徴とする付記１８に記載のプログラム。
【０２１７】
（付記２１）付記１７から２０のいずれか１つに記載のプログラムを記録したコンピュータが読み取り可能な記録媒体。
【０２１８】
この出願は、２０１１年２月２日に出願された日本出願特願２０１１−０２０３７４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2012104943.tif 000003
【図２】
2012104943.tif 000004
【図３】
2012104943.tif 000005
【図４】
2012104943.tif 000006
【図５】
2012104943.tif 000007
【図６】
2012104943.tif 000008
【図７】
2012104943.tif 000009
【図８】
2012104943.tif 000010
【図９Ａ】
2012104943.tif 000011
【図９Ｂ】
2012104943.tif 000012
【図９Ｃ】
2012104943.tif 000013
【図９Ｄ】
2012104943.tif 000014
【図１０】
2012104943.tif 000015
【図１１Ａ】
2012104943.tif 000016
【図１１Ｂ】
2012104943.tif 000017
【図１１Ｃ】
2012104943.tif 000018
【図１１Ｄ】
2012104943.tif 000019
【図１２】
2012104943.tif 000020
【図１３】
2012104943.tif 000021
【図１４】
2012104943.tif 000022
【図１５】
2012104943.tif 000023
【図１６】
2012104943.tif 000024
【図１７Ａ】
2012104943.tif 000025
【図１７Ｂ】
2012104943.tif 000026
【図１８】
2012104943.tif 000027
【図１９】
2012104943.tif 000028
【図２０】
2012104943.tif 000029
【国際調査報告】
2012104943.tif 000030
2012104943.tif 000031