(57)【特許請求の範囲】
【請求項１】
集合としての検索条件データに類似する集合としての検索対象データを集合間の類似度に基づき検索する際に用いられ、集合間が類似していると判断する類似度の閾値の範囲に対してそれぞれ有効となり、少なくとも１つの転置インデックスが有効となる前記閾値の範囲の一部または全部が他の少なくとも１つの転置インデックスが有効となる前記閾値の範囲に含まれない複数の転置インデックスを記憶する転置インデックス記憶手段と、
検索時に指定される類似度の閾値、および、各前記転置インデックスが有効となる前記閾値の範囲に基づいて、前記複数の転置インデックスのうち検索用の転置インデックスを選択する転置インデックス選択手段と、
前記検索用の転置インデックスを用いて、前記検索条件データに類似する前記検索対象データを検索するデータ検索手段と、
を備えた類似データ検索装置。
【請求項２】
前記検索対象データから前記複数の転置インデックスを生成するための分割条件を表す情報を取得する分割条件取得手段と、
前記分割条件に基づいて、前記検索対象データから前記複数の転置インデックスを生成する転置インデックス生成手段と、
をさらに備えることを特徴とする請求項１に記載の類似データ検索装置。
【請求項３】
前記転置インデックス選択手段は、前記閾値よりも高い値である優先閾値、および、各前記転置インデックスが有効となる前記閾値の範囲に基づいて、優先的に行われる優先検索用の転置インデックスをさらに選択し、
前記データ検索手段は、前記検索用の転置インデックスを用いた検索処理に加えて、前記優先検索用の転置インデックスを用いて前記検索条件データに類似する前記検索対象データをさらに検索し、前記優先検索用の転置インデックスによる検索結果を前記検索用の転置インデックスによる検索結果に先行して出力することを特徴とする請求項１または請求項２に記載の類似データ検索装置。
【請求項４】
コンピュータ装置が、
集合としての検索条件データに類似する集合としての検索対象データを集合間の類似度に基づき検索する際に用いられ、集合間が類似していると判断する類似度の閾値の範囲に対してそれぞれ有効となり、少なくとも１つの転置インデックスが有効となる前記閾値の範囲の一部または全部が他の少なくとも１つの転置インデックスが有効となる前記閾値の範囲に含まれない複数の転置インデックスを用いて、
検索時に指定される類似度の閾値、および、各前記転置インデックスが有効となる前記閾値の範囲に基づいて、前記複数の転置インデックスのうち検索用の転置インデックスを選択し、
前記検索用の転置インデックスを用いて、前記検索条件データに類似する前記検索対象データを検索する方法。
【請求項５】
集合としての検索条件データに類似する集合としての検索対象データを集合間の類似度に基づき検索する際に用いられ、集合間が類似していると判断する類似度の閾値の範囲に対してそれぞれ有効となり、少なくとも１つの転置インデックスが有効となる前記閾値の範囲の一部または全部が他の少なくとも１つの転置インデックスが有効となる前記閾値の範囲に含まれない複数の転置インデックスを用いて、
検索時に指定される類似度の閾値、および、各前記転置インデックスが有効となる前記閾値の範囲に基づいて、前記複数の転置インデックスのうち検索用の転置インデックスを選択する転置インデックス選択処理と、
前記検索用の転置インデックスを用いて、前記検索条件データに類似する前記検索対象データを検索するデータ検索処理と、
をコンピュータ装置に実行させるプログラム。
【請求項６】
各前記転置インデックスには、前記転置インデックスが有効となる前記閾値の範囲として、それぞれ異なる前記閾値の範囲が関連付けられ、
前記転置インデックス選択手段は、各前記転置インデックスについて、検索時に指定される類似度の閾値が、その転置インデックスに関連付けされた前記類似度の閾値の範囲に含まれるか否かを判定し、検索時に指定される類似度の閾値を含む前記類似度の閾値の範囲が関連付けされた前記転置インデックスを、検索用の前記転置インデックスとして選択する、
請求項１に記載の類似データ検索装置。
【請求項７】
前記転置インデックスには、
前記集合としての検索条件データに含まれる要素と、その要素を含む前記集合としての検索条件データと、前記集合間の類似度と、を特定可能なデータの組が１以上格納され、
その転置インデックスに格納された１以上の前記データの組に関する前記集合間の類似度の最大値以下の範囲が、その転置インデックスが有効となる前記閾値の範囲として関連付けされ、
前記転置インデックス選択手段は、検索時に指定される類似度の閾値が、ある前記転置インデックスに格納された１以上の前記データの組に関する前記集合間の類似度の最大値以下ある場合、その前記転置インデックスを、検索用の前記転置インデックスとして選択する、
請求項６に記載の類似データ検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集合間の類似度に基づき情報を検索する技術に関する。
【背景技術】
【０００２】
集合間の類似度に基づき情報を検索する技術が知られている。【０００３】
例えば、非特許文献１に記載された関連技術は、集合間の類似度に基づいて、類似する文字列を検索する。この関連技術は、検索対象である文字列を、その文字列の特徴を表す情報（例えばtri-gram）を要素として含む集合として扱う。また、この関連技術は、検索対象の文字列から、転置インデックスを作成する。転置インデックスは、集合の要素をキーとして、その要素を含む集合を値として、それらを関連付けた情報である。すなわち、この関連技術における転置インデックスは、文字列の特徴を表す要素をキーとして、その文字列を値として、それらを関連付けた情報となる。そして、この関連技術は、転置インデックスを作成する際に、１つの転置インデックスに含まれる各文字列について、文字列の集合としてのサイズが同一となるように、転置インデックスを分割する。文字列の集合としてのサイズは、要素数を表し、ここでは、文字列から抽出される特徴を表す情報の数である。つまり、分割された１つの転置インデックスを用いて検索可能な各文字列については、その特徴を表す情報の数が同一である。そして、この関連技術は、検索の際に、入力される文字列の集合としてのサイズから、検索対象となる文字列の集合としてのサイズに対する制約を求め、求めた制約を用いて、検索に用いる転置インデックスをあらかじめ絞り込む。これにより、この関連技術は、検索およびその後の精密判定を高速に行う。【０００４】
また、特許文献１に記載された関連技術も、集合間の類似度に基づいて、類似する文字列を検索する技術である。この関連技術は、非特許文献１と同様に、転置インデックスを、集合のサイズに基づいて分割する。ただし、この関連技術は、１つの転置インデックスに含まれる各文字列について、文字列の集合としてのサイズが同一であることを要求しない。この関連技術は、１つの転置インデックスに含める文字列の数の最小値を指定することによって、転置インデックスを分割する。これにより、この関連技術は、転置インデックスの数が増えすぎる、又は、転置インデックスに含まれる検索対象データの数が偏って検索処理が非効率になる、という非特許文献１の課題を解決している。【０００５】
また、非特許文献２に記載された関連技術は、編集距離が所定の閾値以下となる文字列を検索するという問題を、検索条件となる文字列と、検索対象となる文字列と、のそれぞれから作成したシグネチャ集合のオーバーラップ問題として定式化することで、その問題を解く技術である。シグネチャとは、解候補を生成するための要素である。この関連技術は、検索対象となる文字列から得たシグネチャ集合をもとに、転置インデックスを作成する。ここで、検索条件である編集距離の閾値は、問題の性質上、非負の整数である。閾値が変わると、シグネチャ集合が変わることから、転置インデックスを作成し直す必要がある。この問題に対して、この関連技術は、シグネチャ集合の要素および編集距離がとり得る非負の整数の組をキーとして検索可能な転置インデックスを作成する。具体的には、この関連技術は、検索対象となる集合の要素について、その要素がシグネチャ集合に含まれるようになる最小の編集距離（非負の整数）と、その要素との組をキーとして、その要素が検索可能となるように、転置インデックスに格納する。そして、この関連技術は、検索条件となる文字列から得たシグネチャ集合の各要素と、検索条件として指定された編集距離の閾値以下の各非負の整数との組をキーとして用いて、転置インデックスを検索することにより、解候補の文字列を得る。これにより、この関連技術は、検索条件である閾値が変化する度に転置インデックスを作り直す必要がない。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】岡崎直観、辻井潤一, 「集合間類似度に対する簡潔かつ高速な類似文字列検索アルゴリズム」、自然言語処理 Vol.18 No.2、2011年6月、pp.89-117
【非特許文献２】JIANBIN QIN, WEI WANG, CHUAN XIAO, YIFEI LU, XUEMIN LIN, HAIXUN WANG、"Asymmetric Signature Schemes for Efficient Exact Edit Similarity Query Processing"、ACM Transactions on Database Systems Vol. 38 No. 3、2013年8月、Article 16 8.1
【特許文献】
【０００７】
【特許文献１】国際公開第２０１４／１３６８１０号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１及び非特許文献１に記載された関連技術のように、検索対象となる集合のサイズに基づいて検索対象を絞り込むアプローチでは、集合間の類似度の定義によっては、サイズによる絞り込みの効果が十分に得られないことがある。これに対して、非特許文献２に記載された関連技術は、集合のシグネチャに基づいて検索対象を絞り込むアプローチをとり、サイズによる絞り込みが有効でない場合にもある程度、検索を高速化している。しかし、非特許文献２で論じられている類似度である文字列の編集距離は、非負の整数値に限定されている。そのため、非特許文献２に記載された関連技術は、類似度が所定範囲に含まれる任意の実数値をとり得るようなケースについて、そのまま適用することはできない。そのようなケースの一例として、類似度が、集合の要素のウェイトに基づいて計算される非負の実数値である場合が挙げられる。【０００９】
このような場合、非特許文献２に記載された関連技術は、類似度がとり得る任意の実数値の全てをそれぞれキーとして検索可能な転置インデックスを、あらかじめ生成することになる。また、この関連技術は、検索条件として指定される閾値以下の、類似度がとり得る任意の実数値の全てについて、その実数値をキーとして、そのような転置インデックスを検索することになる。このような転置インデックスの生成は難しく、また、そのような転置インデックスを用いた検索は非効率的である。言い換えれば、非特許文献２に記載された関連技術を用いた場合、類似度が所定範囲の任意の実数値を取り得るケースでは、妥当な転置インデックス群を用いて検索を行うことが難しい。【００１０】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、集合間の類似度に基づく検索において、類似度が任意の実数値をとり得る場合でも、類似度の閾値の変化に応じて作り直す必要がない転置インデックス群を用いて、より高速に検索を行う技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様に係る類似データ検索装置は、集合としての検索条件データに類似する集合としての検索対象データを集合間の類似度に基づき検索する際に用いられ、集合間が類似していると判断する類似度の閾値の範囲に対してそれぞれ有効となり、少なくとも１つの転置インデックスが有効となる上記閾値の範囲の一部または全部が他の少なくとも１つの転置インデックスが有効となる上記閾値の範囲に含まれない複数の転置インデックスを記憶する転置インデックス記憶部と、検索時に指定される類似度の閾値、および、各上記転置インデックスが有効となる上記閾値の範囲に基づいて、上記複数の転置インデックスのうち検索用の転置インデックスを選択する転置インデックス選択部と、上記検索用の転置インデックスを用いて、上記検索条件データに類似する上記検索対象データを検索するデータ検索部と、を備える。【００１２】
また、本発明の一態様に係る類似データの検索方法は、コンピュータ装置が、集合としての検索条件データに類似する集合としての検索対象データを集合間の類似度に基づき検索する際に用いられ、集合間が類似していると判断する類似度の閾値の範囲に対してそれぞれ有効となり、少なくとも１つの転置インデックスが有効となる上記閾値の範囲の一部または全部が他の少なくとも１つの転置インデックスが有効となる上記閾値の範囲に含まれない複数の転置インデックスを用いて、検索時に指定される類似度の閾値、および、各上記転置インデックスが有効となる上記閾値の範囲に基づいて、上記複数の転置インデックスのうち検索用の転置インデックスを選択し、上記検索用の転置インデックスを用いて、上記検索条件データに類似する上記検索対象データを検索する。【００１３】
また、本発明の一態様に係る類似データの検索プログラムは、集合としての検索条件データに類似する集合としての検索対象データを集合間の類似度に基づき検索する際に用いられ、集合間が類似していると判断する類似度の閾値の範囲に対してそれぞれ有効となり、少なくとも１つの転置インデックスが有効となる上記閾値の範囲の一部または全部が他の少なくとも１つの転置インデックスが有効となる上記閾値の範囲に含まれない複数の転置インデックスを用いて、検索時に指定される類似度の閾値、および、各上記転置インデックスが有効となる上記閾値の範囲に基づいて、上記複数の転置インデックスのうち検索用の転置インデックスを選択する転置インデックス選択処理と、上記検索用の転置インデックスを用いて、上記検索条件データに類似する上記検索対象データを検索するデータ検索処理と、をコンピュータ装置に実行させる。【００１４】
また、上記目的は、本発明の一態様に係る類似データの検索プログラムが記録された記録媒体によっても達成され得る。
【発明の効果】
【００１５】
本発明は集合間の類似度に基づく検索において、類似度が実数値をとり得る場合でも、類似度の閾値の変化に応じて作り直す必要ない転置インデックス群を用いて、より高速に検索を行う技術を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態としての類似データ検索装置の機能ブロックの構成を示す図である。
【図２】本発明の第１の実施の形態としての類似データ検索装置のハードウェア構成の一例を示す図である。
【図３】本発明の第１の実施の形態としての類似データ検索装置が行う検索に関する動作を説明するフローチャートである。
【図４】本発明の第２の実施の形態としての類似データ検索装置の機能ブロックの構成を示す図である。
【図５】本発明の第２の実施の形態としての類似データ検索装置が転置インデックスを生成する動作を説明するフローチャートである。
【図６】本発明の第２の実施の形態としての類似データ検索装置が行う検索に関する動作を説明するフローチャートである。
【図７】本発明の第２の実施の形態の具体例における検索対象データおよび要素ウェイトデータの一例を示す図である。
【図８】本発明の第２の実施の形態の具体例において検索対象データの１つから生成される三つ組の一例を示す図である。
【図９】本発明の第２の実施の形態の具体例において検索対象データの他の１つから生成される三つ組の一例を示す図である。
【図１０】本発明の第２の実施の形態の具体例において検索対象データのさらに他の１つから生成される三つ組の一例を示す図である。
【図１１】本発明の第２の実施の形態の具体例において検索対象データのさらに他の１つから生成される三つ組の一例を示す図である。
【図１２】本発明の第２の実施の形態の具体例において生成される三つ組の一覧を示す図である。
【図１３】本発明の第２の実施の形態の具体例において生成される転置インデックスの例を示す図である。
【図１４】本発明の第２の実施の形態の具体例において生成される転置インデックスの他の例を示す図である。
【図１５】本発明の第２の実施の形態の具体例において検索対象データと検索条件データとの類似度を示す図である。
【図１６】本発明の第２の実施の形態の具体例において実行される検索について説明する図である。
【図１７】本発明の第３の実施の形態としての類似データ検索装置の機能ブロックの構成を示す図である。
【図１８】本発明の第３の実施の形態としての類似データ検索装置が行う検索に関する動作を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の各実施の形態について説明する。
【００１８】
（第１の実施の形態）
本発明の第１の実施の形態について図面を参照して詳細に説明する。本発明の第１の実施の形態としての類似データ検索装置１は、検索条件データおよび検索対象データをそれぞれ集合として扱う。類似データ検索装置１は、集合としての検索条件データ（ある検索条件データを表す集合）に類似する、集合としての検索対象データ（ある検索対象データを表す集合）を、集合間の類似度に基づき検索する装置である。例えば、検索条件データおよび検索対象データは、単語列であってもよい。この場合、単語列は、単語を要素とみなした場合の、単語の集合である。この場合、集合としての検索条件データは、例えば、検索条件データを表す単語列に含まれる単語の集合であってもよい。また、この場合、集合としての検索対象データは、例えば、検索対象データを表す単語列に含まれる単語の集合であってもよい。ただし、検索条件データおよび検索対象データは、単語列に限定されず、集合として扱うことが可能なデータであればよい。
【００１９】
［構成の説明］
類似データ検索装置１の機能ブロックの構成を図１に示す。図１において、類似データ検索装置１は、転置インデックス記憶部１１と、転置インデックス選択部１２と、データ検索部１３とを備える。また、類似データ検索装置１は、検索対象データ記憶装置９１と通信可能に接続される。検索対象データ記憶装置９１は、１つ以上の検索対象データを記憶している。各検索対象データは、１つ以上の要素を含む集合とみなすことができるデータである。
【００２０】
ここで、類似データ検索装置１は、図２に示すようなハードウェア要素によって構成可能である。図２において、類似データ検索装置１は、ＣＰＵ（Central Processing Unit）１００１、メモリ１００２、出力装置１００３、入力装置１００４、および、通信インタフェース１００５を含むコンピュータ装置によって構成される。メモリ１００２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、補助記憶装置（ハードディスク等）等によって構成される。メモリ１００２には、コンピュータ装置を類似データ検索装置１として動作させるためのコンピュータ・プログラムおよび各種データが格納される。出力装置１００３は、ディスプレイ装置やプリンタ等のように、情報を出力する装置によって構成される。入力装置１００４は、キーボードやマウス等のように、ユーザ操作の入力を受け付ける装置によって構成される。通信インタフェース１００５は、検索対象データ記憶装置９１との通信を可能とするインタフェースである。この場合、転置インデックス記憶部１１は、メモリ１００２によって構成される。また、転置インデックス選択部１２は、入力装置１００４と、メモリ１００２に格納されるコンピュータ・プログラムを読み込んで実行するＣＰＵ１００１とによって構成される。また、データ検索部１３は、出力装置１００３と、入力装置１００４と、通信インタフェース１００５と、メモリ１００２に格納されるコンピュータ・プログラムを読み込んで実行するＣＰＵ１００１とによって構成される。なお、類似データ検索装置１およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００２１】
次に、類似データ検索装置１の各機能ブロックの詳細について説明する。
【００２２】
転置インデックス記憶部１１は、複数の転置インデックスを記憶する。複数の転置インデックスは、集合としての検索条件データに類似する、集合としての検索対象データを、集合間の類似度に基づき検索する際に用いられるように構成されたインデックスである。なお、類似度は、２つの集合が類似する程度を表す情報である。各転置インデックスは、類似度の閾値の範囲に対して有効となるよう構成されている。具体的には、各転置インデックスには、その転置インデックスが有効となる類似度の閾値の範囲が関連付けされていてもよい。類似度の閾値は、ある集合の間の類似度がその値以上であれば、それらの集合が類似していると判断される値を表す。つまり、各転置インデックスは、その転置インデックスに関する類似度の閾値の範囲に含まれる類似度の閾値が検索において指定された際に、有効となるよう構成されている。換言すると、類似度の閾値の範囲は、ある転置インデックスが有効となる検索において、その転置インデックスに関する類似度の閾値として指定され得る範囲を表す。以降、類似度の閾値の範囲を、単に閾値の範囲とも記載する。
【００２３】
また、複数の転置インデックスのうちの少なくとも１つの転置インデックスが有効となる閾値の範囲の一部または全部が、他の少なくとも１つの転置インデックスが有効となる閾値の範囲に含まれないように、係る複数の転置インデックスが構成されている。また、検索の際に指定され得る類似度の閾値が、複数の転置インデックスのうちの少なくとも１つの転置インデックスが有効となる範囲に含まれるように、係る複数の転置インデックスが構成されることが望ましい。
【００２４】
また、転置インデックス記憶部１１は、各転置インデックスと、その転置インデックスが有効となる閾値の範囲を表す情報と、を関連付けて記憶している。
【００２５】
転置インデックス選択部１２は、検索時に指定される類似度の閾値、および、各転置インデックスが有効となる閾値の範囲に基づいて、検索用の転置インデックスを選択する。具体的には、転置インデックス選択部１２は、指定された類似度の閾値を含む閾値の範囲に対して有効となる転置インデックスを、検索用の転置インデックスとして選択すればよい。選択される検索用の転置インデックスは、１つであってもよいし複数であってもよい。なお、類似度の閾値は、入力装置１００４を介して取得されてもよい。類似度の閾値は、メモリ１００２、可搬型記憶媒体、または、ネットワークを介して接続された他の装置から取得されてもよい。
【００２６】
データ検索部１３は、検索用の転置インデックスを用いて、検索条件データに類似する検索対象データを検索する。なお、検索条件データは、入力装置１００４を介して取得されてもよい。検索条件データは、メモリ１００２、可搬型記憶媒体、または、ネットワークを介して接続された他の装置から取得されてもよい。
【００２７】
［動作の説明］
以上のように構成された類似データ検索装置１が行う検索に関する動作を図３に示す。
【００２８】
図３において、まず、類似データ検索装置１は、類似度の閾値および検索条件データを取得する（ステップＡ１）。
【００２９】
次に、転置インデックス選択部１２は、取得した類似度の閾値、および、各転置インデックスが有効となる閾値の範囲に基づいて、複数の転置インデックスのうち、検索用の転置インデックスを選択する（ステップＡ２）。前述のように、転置インデックス選択部１２は、取得した類似度の閾値を含む範囲に対して有効な転置インデックスを、検索用の転置インデックスとして選択すればよい。
【００３０】
次に、データ検索部１３は、検索用の転置インデックスを用いて、検索条件データに類似する検索対象データを検索する（ステップＡ３）。
【００３１】
以上で、類似データ検索装置１が検索を行う動作の説明を終了する。
【００３２】
［効果の説明］
次に、本発明の第１の実施の形態の効果について述べる。
【００３３】
本実施の形態の類似データ検索装置１は、集合間の類似度に基づく検索において、類似度が任意の実数値をとり得る場合でも、類似度の閾値の変化に応じて作り直す必要がない転置インデックス群を用いて、より高速な検索を行うことができる。
【００３４】
その理由は、本実施の形態では、類似データ検索装置１が以下のように構成されているからである。即ち、転置インデックス記憶部１１が、複数の転置インデックスを記憶するよう構成されている。複数の転置インデックスは、集合としての検索条件データに類似する、集合としての検索対象データを、集合間の類似度に基づき検索する際に用いられるよう構成されている。また、各転置インデックスには、例えば、集合間が類似していると判断される類似度の閾値の範囲が関連付けされ、各転置インデックスは、関連付けされた類似度の閾値の範囲に対して有効となるよう構成されている。また、少なくとも１つの転置インデックスが有効となる閾値の範囲の一部または全部が、他の少なくとも１つの転置インデックスが有効となる閾値の範囲に含まれないように、各転置インデックスが構成されている。そして、転置インデックス選択部１２が、検索の際に指定される類似度の閾値、および、各転置インデックスが有効となる閾値の範囲に基づいて、複数の転置インデックスのうち検索用の転置インデックスを選択するよう構成されている。そして、データ検索部１３が、検索用の転置インデックスを用いて、検索条件データに類似する検索対象データを検索するよう構成されている。
【００３５】
このように、本実施の形態において、類似データ検索装置１は、類似度の閾値を含む範囲に対して有効となる検索用の転置インデックスを選択することで、検索を実行する。したがって、本実施の形態における類似データ検索装置１は、類似度の閾値として指定される任意の実数値に対して有効な転置インデックスを選択することができ、類似度の閾値が変化しても転置インデックスを作り直す必要がない。また、本実施の形態においては、少なくとも１つの転置インデックスが有効となる閾値の範囲の一部または全部が、他の少なくとも１つの転置インデックスが有効となる閾値の範囲に含まれないように構成されている。このため、選択される検索用の転置インデックスは、全ての転置インデックスの数よりも少ない数に絞り込まれる可能性が高い。その結果、本実施の形態における類似データ検索装置１は、検索時に指定される類似度の閾値に適した有効な検索を、より高速に行うことができる。
【００３６】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明の第１の実施の形態に対して、転置インデックス群を生成する構成を追加した具体例について説明する。また、類似度として、集合の各要素に与えられた非負のウェイトにもとづき計算される実数値が定義されている具体例について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して、本実施の形態における詳細な説明を省略する。
【００３７】
［構成の説明］
まず、本発明の第２の実施の形態としての類似データ検索装置２の機能ブロック構成を、図４に示す。図４において、類似データ検索装置２は、本発明の第１の実施の形態としての類似データ検索装置１に対して、データ検索部１３に替えてデータ検索部２３を備える。さらに、類似データ検索装置２は、分割条件取得部２４と、転置インデックス生成部２５とを備える点が、類似データ検索装置１と異なる。また、類似データ検索装置２は、検索対象データ記憶装置９１に替えて、検索対象データ記憶装置９２に接続される点が、類似データ検索装置１と異なる。検索対象データ記憶装置９２は、検索対象データに加えて、検索対象データの各要素に適用されるウェイトを表す要素ウェイトデータを記憶する。ここで、ウェイトは、非負の実数値である。
【００３８】
なお、類似データ検索装置２およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態と同様のハードウェア要素によって構成可能である。その場合、分割条件取得部２４は、入力装置１００４と、メモリ１００２に記憶されたコンピュータ・プログラムを読み込んで実行するＣＰＵ１００１とによって構成される。また、転置インデックス生成部２５は、通信インタフェース１００５と、メモリ１００２に記憶されたコンピュータ・プログラムを読み込んで実行するＣＰＵ１００１とによって構成される。ただし、類似データ検索装置２およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００３９】
分割条件取得部２４は、転置インデックスの分割条件を表す情報を取得する。分割条件は、例えば、閾値の区間に基づいて分割する条件や、各転置インデックスに含まれるエントリ数に基づいて分割する条件等であってもよい。ただし、分割条件の内容は、これらに限定されない。分割条件の詳細については後述する。
【００４０】
転置インデックス生成部２５は、分割条件に基づいて、検索対象データから複数の転置インデックスを生成する。転置インデックス生成部２５は、転置インデックスを生成する際、検索対象データ記憶装置９２に格納された検索対象データおよび要素ウェイトデータを参照する。複数の転置インデックスは、本発明の第１の実施の形態で説明したように、それぞれが、ある類似度の閾値の範囲に対して有効となるよう生成される。また、少なくとも１つの転置インデックスが有効となる閾値の範囲の一部または全部が、他の少なくとも１つの転置インデックスが有効となる閾値の範囲に含まれないように、各転置インデックスが生成される。また、検索の際に指定され得る類似度の閾値が、少なくとも１つの転置インデックスが有効となる範囲に含まれるように、各転置インデックスが構成されることが望ましい。
【００４１】
また、転置インデックス生成部２５は、生成した各転置インデックスを表す情報を、その転置インデックスが有効となる閾値の範囲を表す情報と関連付けて、転置インデックス記憶部１１に記憶する。
【００４２】
データ検索部２３は、検索用の転置インデックスを用いて、検索条件データに類似する可能性があるデータを検索する。例えば、データ検索部２３は、集合としての検索条件データの各要素をキーとして用いて、検索用の転置インデックスを検索すればよい。そして、データ検索部２３は、検索により得られた検索対象データと、検索条件データとの集合間の類似度を算出し、算出した類似度が、類似度の閾値以上であるものを、検索結果として出力する。
【００４３】
［動作の説明］
以上のように構成された類似データ検索装置２の動作について、図面を参照して説明する。ここでは、動作の説明のために、いくつかの記号を定義する。
【００４４】
まず、検索対象データである集合の族をΣで表す。係る集合の族Σは、検索データの全体を表してもよい。また、ある検索対象データをＳ（∈Σ）で表す。Ｓ自身が集合である。Ｓの要素をｓであらわす。以降、検索対象データである集合Ｓを、単にＳ、または、検索対象データＳとも記載する。Sの要素である各ｓを、添字ｉを用いて表すと、集合Sは、例えば、”Ｓ＝｛ｓｉ｝（０≦ｉ≦ｃａｒｄ（Ｓ）−１）”と表現される。”ｃａｒｄ（Ｓ）”は、Ｓの要素数をあらわす。ただし、この後の説明では、添字範囲の記載は、特に説明が必要な場合を除き省略する。また、ｓｉのウェイトをｗｉであらわす。
【００４５】
また、検索条件データをＴであらわす。Ｔも集合である。以降、検索条件データである集合Ｔを、単にＴ、または、検索条件データＴとも記載する。また、ＳおよびＴの集合間の類似度を、ｓｉｍ（Ｓ，Ｔ）と表現する。また、検索において類似性を判断する閾値（類似度の閾値）をλと表現する。類似度がλ未満の検索対象データは、検索条件データと類似すると判定されず、類似検索結果に含まれない。一方、類似度がλ以上の検索対象データは、検索条件データと類似すると判定され、類似検索結果に含まれる。
【００４６】
＜転置インデックスの生成動作＞
類似データ検索装置２が転置インデックスを生成する動作を図５に示す。
【００４７】
図５において、まず、分割条件取得部２４は、転置インデックスの分割条件を表す情報を取得する（ステップＢ２１）。
【００４８】
次に、転置インデックス生成部２５は、検索対象データ記憶装置９２に格納された検索対象データおよび要素ウェイトデータを参照し、ステップＢ２１で得られた分割条件に基づいて、転置インデックス１〜ｎを生成する。ｎは２以上の整数である（ステップＢ２２）。
【００４９】
前述のように、ステップＢ２２で生成される転置インデックス１〜ｎは、それぞれが、ある類似度の閾値の範囲に対して有効となるよう生成される。転置インデックス１〜ｎは、例えば、それぞれ異なる類似度の閾値の範囲に対して有効となるよう、生成されてもよい。また、少なくとも１つの転置インデックスが有効となる閾値の範囲の一部または全部が、他の少なくとも１つの転置インデックスが有効となる閾値の範囲に含まれないように生成される。また、検索の際に指定され得る類似度の閾値が、複数の転置インデックスのうちの少なくとも１つの転置インデックスが有効となる範囲に含まれるように、複数の転置インデックスが構成されることが望ましい。この場合、例えば、検索の際に指定され得る類似度の閾値が、少なくとも１つの転置インデックスが有効となる範囲と等しい範囲となるように、転置インデックスが構成されてもよい。ステップＢ２２の具体例については後述する。
【００５０】
次に、転置インデックス生成部２５は、各転置インデックスを表す情報と、各転置インデックスが有効となる閾値の範囲を表す情報とを関連付けて、転置インデックス記憶部１１に格納する（ステップＢ２３）。
【００５１】
例えば、集合間の類似度ｓｉｍの値が［０．０，１．０］であるとする。なお、［ｘ１，ｘ２］とは、ｘ１以上ｘ２以下の実数値を表す。一例として、転置インデックス１〜３を生成することを想定する。この場合、例えば、転置インデックス１は、［０．０，１．０］という閾値の範囲に対して有効となるよう生成されてもよい。また、例えば、転置インデックス２は［０．０，０．８］という閾値の範囲に対して有効となるよう生成されてもよい。また、例えば、転置インデックス３は、［０．０，０．５］という閾値の範囲に対して有効となるよう生成されてもよい。この場合、転置インデックス１が有効となる範囲の一部である、０．８を超えて１．０以下の範囲は、転置インデックス２および転置インデックス３が有効となる範囲に含まれないよう構成されている。また、検索の際に指定され得る類似度の閾値［０．０，１．０］は、少なくとも転置インデックス１が有効となる範囲に含まれるよう構成されている。
【００５２】
以上で、類似データ検索装置２が転置インデックスを生成する動作の説明を終了する。
【００５３】
＜転置インデックスを用いた検索動作＞
次に、類似データ検索装置２が検索を行う動作を図６に示す。この動作は、類似データ検索装置２が、入力される検索条件データＴに対して、ｓｉｍ（Ｓ，Ｔ）≧λとなる全てのＳ∈Σを求めて、これを出力する動作である。
【００５４】
図６では、まず、転置インデックス選択部１２は、本発明の第１の実施の形態と同様にステップＡ１を実行し、類似度の閾値λおよび検索条件データを取得する。
【００５５】
次に、転置インデックス選択部１２は、本発明の第１の実施の形態と同様にステップＡ２を実行し、類似度の閾値λに基づいて、検索用の転置インデックスを選択する。
【００５６】
具体的には、転置インデックス選択部１２は、有効となる閾値の範囲に閾値λを含む転置インデックスを、検索用の転置インデックスとして選択する。例えば、上記の例で、λ＝０．９であるとする。このとき、有効となる閾値の範囲が０．９を含むのは、転置インデックス１のみである。そこで、この場合、転置インデックス選択部１２は、転置インデックス１を、検索用の転置インデックスとして選択する。また、λ＝０．７であるとする。この場合、有効となる閾値の範囲が０．７を含むのは、転置インデックス１、および、転置インデックス２である。そこで、この場合、転置インデックス選択部１２は、これら２つの転置インデックス１および２を、検索用の転置インデックスとして選択する。
【００５７】
次に、データ検索部２３は、検索用の転置インデックスを用いて、検索条件データＴの各要素ｖをキーとして検索を行う（ステップＡ２３）。
【００５８】
次に、データ検索部２３は、ステップＡ２３で得られた各々のＳ∈Σに対して、以下のステップＡ２４〜Ａ２６を繰り返す。
【００５９】
ここでは、まず、データ検索部２３は、ＳおよびＴの類似度ｓｉｍ（Ｓ，Ｔ）を計算する（ステップＡ２４）。
【００６０】
次に、データ検索部２３は、計算した類似度がλ以上であるか（ｓｉｍ（Ｓ，Ｔ）≧λであるか）否かを判定する（ステップＡ２５）。
【００６１】
ここで、類似度がλ以上であれば（ステップＡ２５でＹｅｓ）、データ検索部２３は、ＳおよびＴが類似していると判断して、そのＳを検索結果として出力する（ステップＡ２６）。
【００６２】
一方、類似度がλより小さければ（ステップＡ２５でＮｏ）、データ検索部２３は、ＳおよびＴが類似していないと判断して、そのようなＳを検索結果に含めない。
【００６３】
以上で、類似データ検索装置２が検索を行う動作の説明を終了する。
【００６４】
このように、類似データ検索装置２は、ステップＡ２において検索で用いる転置インデックスを絞り込んだうえで、検索（ステップＡ２３）および類似度の計算（ステップＡ２４）を行うことで、検索条件データに類似する検索対象データを決定する。換言すると、類似データ検索装置２は、全ての転置インデックスの中から、検索に用いられる転置インデックスを選択し、選択した転置インデックスを用いて、検索（ステップＡ２３）および類似度の計算（ステップＡ２４）を行う。これにより、類似データ検索装置２は、検索対象データの全てを対象として類似度の計算を行うことで類似性を判断する単純な方法に比べて、高速に類似データを検索可能である。
【００６５】
＜転置インデックスの生成動作の詳細＞
次に、ステップＢ２２において、複数の転置インデックスを生成する動作の詳細について説明する。上述したような複数の転置インデックスを生成するためには、以下のシグネチャの概念を用いる。
【００６６】
任意の検索対象データＳ＝｛ｓｉ｝∈Σに対して、類似度λに紐づいたシグネチャｓｉｇ（Ｓ，λ）とは、Ｓの部分集合であって、次の性質を持つもののことを言う。
ｓｉｍ（Ｓ，Ｔ）≧λ⇒ｓｉｇ（Ｓ，λ）とＴとが共通の要素を少なくとも一つ持つ・・・（定義１）
まず、与えられたＴに対し、ｓｉｍ（Ｓ，Ｔ）≧λとなる全てのＳを求める問題を解くには、ｓｉｇ（Ｓ，λ）の各要素を検索キーとし、Ｓを検索結果とする転置インデックスをあらかじめ作成しておく。検索条件データＴの要素の各々でこの転置インデックスを検索し、得られた全てのＳ∈Σを対象にｓｉｍ（Ｓ，Ｔ）を計算し、ｓｉｍ（Ｓ，Ｔ）≧λとなるＳを出力すれば、ｓｉｍ（Ｓ，Ｔ）≧λであるような全てのＳが求められる。ｓｉｍ（Ｓ，Ｔ）≧λであるようなＳは、上記の定義１から、シグネチャｓｉｇ（Ｓ，λ）から生成された転置インデックスの検索で必ずヒットするからである。特に、ｓｉｇ（Ｓ，λ）がＳの真部分集合であれば、Ｓの全要素から検索用の転置インデックスを作成する場合に比べ、転置インデックスに含まれるキーの数が削減される。このため、転置インデックスの検索によるヒット件数が減少し、その後の類似度計算の処理を含めて処理の高速化が期待できる。有効なシグネチャが構成できるかどうかは類似度の具体形によるが、以下では、そのような一例について説明する。
【００６７】
集合Ｘに対するウェイトＷｅｉｇｈｔ（Ｘ）を、集合に属する要素のウェイトの和として定義しておく。すなわち、Ｘ＝｛ｘｉ｝を集合とし、集合Xに含まれる各要素ｘｉのウェイトをｗｉとした場合、Ｗｅｉｇｈｔ（Ｘ）＝Σｗｉである。ここで、右辺の有限和は、Ｘの全要素に対するウェイトの和である。
【００６８】
検索条件データＴおよび検索対象データＳに対して、ＳとＴの類似度ｓｉｍ（Ｓ，Ｔ）を、次のように定義する。
ｓｉｍ（Ｓ，Ｔ）＝Ｗｅｉｇｈｔ（Ｓ∩Ｔ）／Ｗｅｉｇｈｔ（Ｓ）・・・（定義２）
このとき、定義２の類似度に関して、以下の性質（性質１）が成り立つ。なお、以降の説明において、“Φ”は空集合を表す。
【００６９】
Ｓの部分集合Ｓ０⊆Ｓに対して、Ｗｅｉｇｈｔ（Ｓ＼Ｓ０）／Ｗｅｉｇｈｔ（Ｓ）＜λ（”Ｓ＼Ｓ０”は、Ｓを全体集合とするＳ０の補集合を表す）、かつ、Ｔ∩Ｓ０＝Φであれば、ｓｉｍ（Ｓ，Ｔ）＜λ・・・（性質１）
なぜならば、Ｔ∩Ｓ０＝Φなので、Ｓ∩Ｔ＝（Ｓ＼Ｓ０）∩Ｔ であり、下式の関係が成立するからである。
ｓｉｍ（Ｓ，Ｔ）＝Ｗｅｉｇｈｔ（Ｓ∩Ｔ）／Ｗｅｉｇｈｔ（Ｓ）
＝Ｗｅｉｇｈｔ（（Ｓ＼Ｓ０）∩Ｔ）／Ｗｅｉｇｈｔ（Ｓ）
≦Ｗｅｉｇｈｔ（Ｓ＼Ｓ０）／Ｗｅｉｇｈｔ（Ｓ）
＜λ
【００７０】
上記の対偶をとると、Ｗｅｉｇｈｔ（Ｓ＼Ｓ０）／Ｗｅｉｇｈｔ（Ｓ）＜λであるようなＳの部分集合Ｓ０は、λに対するＳのシグネチャとなっていることがわかる。言い換えれば、ｓｉｍ（Ｓ，Ｔ）≧λであるためには、Ｔ∩Ｓ０≠Φでなければならない。したがって、各検索対象データＳに対して、Ｗｅｉｇｈｔ（Ｓ＼Ｓ０）／Ｗｅｉｇｈｔ（Ｓ）＜λとなるようなＳの任意の部分集合Ｓ０を選択して、Ｓ０の要素をキーとしてＳを検索するように転置インデックスが生成されれば良い。こうして生成された転置インデックスは、Ｗｅｉｇｈｔ（Ｓ＼Ｓ０）／Ｗｅｉｇｈｔ（Ｓ）＜λであるような任意のλを閾値とする類似検索に有効である。
【００７１】
ただし、上述の転置インデックスは、閾値λがλ≦Ｗｅｉｇｈｔ（Ｓ＼Ｓ０）／Ｗｅｉｇｈｔ（Ｓ）の場合には有効でない。なぜならば、この転置インデックスに全くヒットしなくても、入力集合との類似度が閾値以上となって検索結果に含まれるデータが存在する可能性があるためである。
【００７２】
従って、上述の構成をとった場合、閾値が変わるたびに、新しい閾値に応じて転置インデックスを毎回作り直す必要がある。
【００７３】
非特許文献２では、類似度が上限を持つ非負の整数であり、類似度としてとり得る値が限定されている。このため、非特許文献２では、これらの可能な値（類似度としてとり得る値）に対してあらかじめシグネチャを計算しておき、異なる類似度をキーとして同一の検索対象データが検索されないように、転置インデックスを調整しておくことが可能である。これにより、非特許文献２では、新しい閾値に応じて転置インデックスを作り直す必要がないとしている（非特許文献２における8.1 Generic Index Constructionの節を参照）。しかし、本実施の形態のように、類似度が各要素のウェイトに依存する実数値をとる場合、類似度としてとり得る値はきわめて多数にのぼる。このため、非特許文献２のようなアプローチは現実的でない。
【００７４】
そこで、以下に、類似度が各要素のウェイトに依存する実数値をとる場合に、閾値が変わっても再生成の必要がないように転置インデックスを作成する方法（本実施の形態のステップＢ２２の詳細）について説明する。
【００７５】
各々のＳ∈Σに対して、Ｓの部分集合の有限族｛Ｓｉ｝（ｉ＝０，・・・ｎ）を、以下を満たすように選択する。
ａ）Ｓ０＝Φ ⊆Ｓ1⊆・・・⊆Ｓｎ＝Ｓ・・・（条件ａ）
ｂ）ｃａｒｄ（Ｓｉ＋１＼Ｓｉ ）＝１・・・（条件ｂ）
言い換えれば、お互いに包含関係にあり（条件ａ）、要素がひとつずつ増加していく（条件ｂ）、Ｓの部分集合の族を任意に選択しておく。
【００７６】
さらに、類似度の有限集合｛λｉ｝を以下のように定義する。
ｃ）λｉ＝Ｗｅｉｇｈｔ（Ｓ＼Ｓｉ）／Ｗｅｉｇｈｔ（Ｓ）・・・（定義３）
すると、以下が成り立つことは明らかである。
ｄ）λ０＝１．０＞λ1＞・・・＞λｎ＝０
また、上記ｃ）より、Ｓｉは、検索時に指定される類似度の閾値λがλ>λｉ である場合に有効なＳのシグネチャとなっていることがわかる。
【００７７】
Ｓの任意の要素ｓ∈Ｓに対して、
0006773115.tif 000002
【００７８】
であるようなｉ＝ｉ（ｓ）を選択して、要素ｓ、検索対象データＳ、対応する類似度λｉ（ｓ）からなる三つ組（ｓ， Ｓ， λｉ（ｓ））を構成しておく・・・（定義４）。
【００７９】
このようなｉ（ｓ）は、条件ａより必ず一つ存在する。このような三つ組みの集合
0006773115.tif 000003
【００８０】
に対して、以下の性質が成り立つ。
任意のＳ∈Σと、上記のように構成された三つ組の集合｛（ｓ， Ｓ， λｉ（ｓ）） | ｓ∈Ｓ｝に対して、Ｓの部分集合Ｓ（μ）＝｛ｓ | ｓ∈Ｓ aｎd μ≦λｉ（ｓ）｝は閾値μに対するシグネチャである。すなわち、検索条件の集合Ｔが、ｓｉｍ（Ｓ，Ｔ）≧μを満たすならば、Ｔ∩Ｓ（μ） ≠Φである。・・・（性質２）
なぜならば、Ｓ（μ）の定義より、μに依存して、あるｊが存在して、Ｓ（μ）＝Ｓｊが成り立つ。ｊ＝ｉ（ｔ）となるｔはｔ∈Ｓ＼Ｓｊを満たすため、λｊ＝λｉ（ｔ）<μが成り立ち、ｓｉｍ（Ｓ，Ｔ）≧μならばｓｉｍ（Ｓ，Ｔ） >λｊでなければならない。その場合、上述の定義３から、Ｓ（μ）＝ＳｊとＴは必ず共通の要素を持つのである。
【００８１】
以上のように構成された三つ組（ｓ， Ｓ， τ）は、検索キーがｓ、検索結果がＳであり、類似度τが紐づいており、τ以下の閾値が指定された場合に有効となる転置インデックスとみなすことができる。類似度の閾値μが与えられた場合に、μ≦τである全ての三つ組（ｓ， Ｓ， τ）を対象として検索を行えば、類似度が閾値μ以上となるデータが漏れなく検索できるのである。
【００８２】
そこで、ステップＢ２２において、転置インデックス生成部２５は、分割条件取得部２４により取得された分割条件に基づいて、上記のように生成された三つ組全てを複数の転置インデックスに振り分けることにより、各転置インデックスを生成する。各転置インデックスは、含まれる三つ組に紐づく類似度の最大値以下の閾値の範囲に対して有効となる。そこで、転置インデックス生成部２５は、各転置インデックスに、その転置インデックスが有効となる範囲を表す情報として、含まれる三つ組に紐づく類似度の最大値を関連付けてもよい。この場合、例えば、ある転置インデックスについて、閾値がこの値（三つ組に紐づく類似度の最大値）以下であれば、その転置インデックスが有効となる。換言すると、ある転置インデックスに関連付けされた類似度が、閾値以上の場合に、その転置インデックスが有効となる。これにより、ステップＡ２において、転置インデックス選択部１２は、関連付けられた類似度が閾値以上の転置インデックスを、検索用の転置インデックスとして選択すればよい。
【００８３】
一例として、転置インデックスの分割条件が、「三つ組に紐付く類似度がとり得る実数値の範囲を、指定数の区間に分割して、それぞれ対応する転置インデックスを生成する」という条件であることを想定する。ここで、説明のための具体例として使用する類似度が、［０．０，１．０］の値をとることを想定する。このとき、例えば、分割条件が、この範囲を５区間に分割する条件であるとする。この場合、転置インデックス生成部２５は、（０．０，０．２］、（０．２，０．４］、（０．４，０．６］、（０．６，０．８］、（０．８，１．０］の区間に対応して、５つの転置インデックスを生成する。なお、［ｘ，ｙ］は閉区間（ｘ以上、ｙ以下の範囲）を表し、（ｘ，ｙ］は半開区間（ｘより真に大きく、ｙ以下の範囲）を表している。例えば、転置インデックス生成部２５は、（０．０，０．２］の区間に対応して、紐づく類似度μが０．０＜μ≦０．２である全ての三つ組（ｓ，Ｓ，μ）を含む転置インデックスを生成すればよい。同様にして、転置インデックス生成部２５は、５つの転置インデックス群を生成することができる。各転置インデックスには、例えば、その転置インデックスに含まれる三つ組に紐付けられた類似度の最大値を関連付けられる。検索時に指定される類似度の閾値が、ある転置インデックスに関連付けされた係る類似度の最大値以下である場合、その転置インデックスが有効となる。なお、検索時に指定される類似度の閾値が０．０であるケースは、任意の検索条件入力に対して必ず全データがヒットすることを意味し、検索処理自体が不要であるため、閾値の値として０．０は必ずしも考慮する必要はない。
【００８４】
他の例として、分割条件が、各転置インデックスに含まれるデータ数の最小値Ｍ（Ｍは１以上の整数）を定めた条件であることを想定する。この場合、転置インデックス生成部２５は、一つ目の転置インデックスとして、紐づく類似度が［λ，１．０］に含まれる三つ組の総数がＭ以上となるような、最大のλ＝λ０を求める。そして、転置インデックス生成部２５は、紐づく類似度が［λ０，１．０］に含まれる三つ組全てを含めて、１つ目の転置インデックスを生成する。また、転置インデックス生成部２５は、紐づく類似度が［λ，λ０）に含まれる三つ組の総数がＭ以上となるような、最大のλ＝λ1を求める。そして、転置インデックス生成部２５は、紐付く類似度が［λ１，λ０）に含まれる三つ組全てを含めて、２つ目の転置インデックスを生成する。以後、転置インデックス生成部２５は、この動作を繰り返すことにより、含まれるデータ数がＭ以上であるような転置インデックス群を生成することができる。そして、各転置インデックスには、その転置インデックスに含まれる三つ組に紐付く類似度の最大値が関連付けられる。検索時に指定される類似度の閾値が、ある転置インデックスに関連付けされた類似度の最大値以下である場合、その転置インデックスが有効となる。
【００８５】
また、さらなる他の例として、分割条件は、三つ組に紐付く類似度がとり得る実数値の範囲が任意に分割された各区間を指定するような条件であってもよい。また、分割条件は、複数の条件の組み合わせであってもよい。
【００８６】
［動作の具体例の説明］
次に、類似データ検索装置２の動作を、具体的なデータを用いて例示する。
【００８７】
図７は、この具体例において、検索対象データ記憶装置９２に記憶される検索対象データと要素ウェイトデータとを示している。
【００８８】
検索対象データとしては、Ｓ１からＳ４までの４個の集合が記憶されている。Ｓ１は、５つの要素ａ，ｂ，ｃ，ｄ，ｅを含む集合である。Ｓ２は、３つの要素ｄ，ｅ，ｆを含む集合である。Ｓ３は、３つの要素ｃ，ｅ，ｆを含む集合である。Ｓ４は、２つの要素ｄ，ｆを含む集合である。また、要素ウェイトデータとしては、Ｓ１からＳ４までの４個の集合の各要素について付与されたウェイトが記憶されている。ウェイトは、非負の実数値である。
【００８９】
＜転置インデックスの生成動作（具体例）＞
次に、図７の検索対象データおよび要素ウェイトデータから、転置インデックス生成部２５が転置インデックスを生成する動作を具体的に説明する。
【００９０】
まず、転置インデックス生成部２５は、検索対象データＳ１〜Ｓ４のそれぞれに対して、前述の条件ａおよび条件ｂを満たすように、部分集合の族を選択する。例えば、図８は、Ｓ１に対して選択される部分集合の族の例、および、対応する三つ組みを示している。Ｓ１の部分集合ＳＳ０（1）〜ＳＳ５（1）は、図示のように、あきらかに条件ａおよび条件ｂを満たしている。第３列の値は、定義３に基づいて計算した類似度λｉの値である。
【００９１】
この場合、転置インデックス生成部２５は、定義４に従って、検索対象データＳ１の各要素に対して三つ組を構成する。構成される三つ組は、図８に示した通りである。例えば、要素ｄは、ＳＳ０（1）には含まれていないが、ＳＳ１（1）には含まれている。そのため、定義４の中で言うところの
0006773115.tif 000004
【００９２】
は０であり、三つ組の第３要素の値は、ＳＳ０（1）に対する定義３の値である１．０である。すなわち、三つ組として、（ｄ，Ｓ１，１．０）が構成される。同様に、要素ｂは、ＳＳ１（1）には含まれていないが、ＳＳ２（1）には含まれている。そのため、定義４の中で言うところの
0006773115.tif 000005
【００９３】
は１であり、三つ組の第３要素の値は、ＳＳ１（1）に対する定義３の値である０．５５９である。すなわち、三つ組として、（ｂ，Ｓ１，０．５５９）が構成される。その他の要素についても、同様に、Ｓ１の部分集合ＳＳ０（1）〜ＳＳ５（1）の情報に基づいて三つ組が構成される。その結果、Ｓ１に基づく５つの三つ組は、図８に示すように、（ｄ，Ｓ１，１．０）、（ｂ，Ｓ１，０．５５９）、（ａ，Ｓ１，０．３３８）、（ｃ，Ｓ１，０．１９１）、（ｅ，Ｓ１，０．０７４）となる。
【００９４】
また、図９は、検索対象データＳ２に対する部分集合の族の例およびこの部分集合の族から求めた三つ組である。図１０は、検索対象データＳ３に対する部分集合の族の例およびこの部分集合の族から求めた三つ組である。図１１は、検索対象データＳ４に対する部分集合の族の例およびこの部分集合族から求めた三つ組である。
【００９５】
図１２に、こうして求めた三つ組の一覧を示す。説明の都合上、類似度の昇順にソートして、各三つ組にＩＤを付与している。
【００９６】
次に、転置インデックス生成部２５は、分割条件取得部２４にて取得された分割条件に従って、それぞれが閾値の範囲に対して有効となる複数の転置インデックスを生成する。
【００９７】
ここで、分割条件が、「類似度がとり得る実数値の範囲（［０．０，１．０］）を均等に５分割することを指定する分割条件Ｘ」であることを想定する。図１３は、分割条件Ｘに基づいて生成される転置インデックスを示す図である。この場合、転置インデックス生成部２５は、（０．０，０．２］、（０．２，０．４］、（０．４，０．６］、（０．６，０．８］、（０．８，１．０］の区間に対応して、５つの転置インデックスを生成する。
【００９８】
まず、転置インデックス生成部２５は、区間（０．０，０．２］に対しては、紐づく類似度がこの範囲に含まれる、ＩＤ＝１、２、３、４の三つ組を格納した転置インデックスＸ１を生成する。なお、図１３に示した「１：ｅ→Ｓ１」等は、三つ組をあらわす記法として用いられている。例えば、「１：ｅ→Ｓ１」は、ＩＤが１、要素がｅ、集合がＳ１である三つ組をあらわしている。なお、この記法において、三つ組の第３要素の表記は省略されている。
【００９９】
また、転置インデックス生成部２５は、区間（０．２，０．４］に対して、紐付く類似度がこの範囲に含まれるＩＤ＝５、６の三つ組を格納した転置インデックスＸ２を生成する。
【０１００】
また、転置インデックス生成部２５は、区間（０．４，０．６］に対して、紐付く類似度がこの範囲に含まれるＩＤ＝７、８、９の三つ組を格納した転置インデックスＸ３を生成する。
【０１０１】
また、区間（０．６，０．８］に対しては、紐付く類似度がこの範囲に含まれる三つ組が存在しない。そこで、転置インデックス生成部２５は、この範囲に対応する転置インデックスＸ４を生成しないか、もしくは格納データがない状態で転置インデックスＸ４を生成する。
【０１０２】
また、転置インデックス生成部２５は、区間（０．８，１．０］に対して、紐付く類似度がこの範囲に含まれるＩＤ＝１０、１１、１２、１３の三つ組を格納した転置インデックスＸ５を生成する。
【０１０３】
なお、三つ組を転置インデックスに格納することは、三つ組の第一要素である集合要素をインデックスのキーとして扱い、第二要素である検索対象データがこのキーを用いて検索されるように、転置インデックスを構成することを意味する。上記の例では、例えば、転置インデックスＸ１には、検索キーとしてｅとｃが格納されている。係る転置インデックスＸ１は、キーｅを用いて検索するとＳ１、Ｓ２、Ｓ３が得られ、キーｃを用いて検索するとＳ１が得られるように構成されている。また、例えば、転置インデックスＸ３には、検索キーとしてｆとｂが格納されている。係る転置インデックスＸ３は、キーｆを用いて検索するとＳ２とＳ４が得られ、キーｂを用いて検索するとＳ１が得られるように構成されている。
【０１０４】
また、転置インデックス生成部２５は、各転置インデックスに、その転置インデックスが有効となる閾値の範囲を表す情報として、格納されている三つ組に紐づく類似度の最大値を関連付ける。例えば、転置インデックスＸ１には、ＩＤ＝１、２、３、４の三つ組が格納されている。これらのうち、紐づく類似度の最大値は、ＩＤ＝４の三つ組に紐付く類似度０．１９１である。そこで、転置インデックス生成部２５は、転置インデックスＸ１に、この０．１９１を関連付ける。つまり、転置インデックスＸ１は、０．１９１以下の閾値が指定された検索において有効である。
【０１０５】
また、転置インデックスＸ２に格納されている三つ組について、紐づく類似度の最大値は、ＩＤ＝６の三つ組に紐付く類似度０.３９４である。そこで、転置インデックス生成部２５は、転置インデックスＸ２にこの０．３９４を関連付ける。つまり、転置インデックスＸ２は、０．３９４以下の閾値が指定された検索において有効である。
【０１０６】
同様にして、転置インデックス生成部２５は、転置インデックスＸ３に類似度０．５５９を関連付け、転置インデックスＸ５に類似度１．０を関連付ける。なお、転置インデックスＸ４が生成されていない場合、類似度との紐づけは存在しない。もしくは、転置インデックスＸ４が格納データの無い状態で生成された場合、検索には影響しないので、任意の類似度との関連付けが可能である。例えば、どのような条件で検索しても検索用の転置インデックスとして選択されることがないように、転置インデックスＸ４は、類似度０．０と関連付けられても良い。
【０１０７】
また、例えば、分割条件が、各転置インデックスに格納されるデータ数を２以上とする分割条件Ｙであることを想定する。図１４は、分割条件Ｙに基づいて生成される転置インデックスを示す図である。
【０１０８】
まず、転置インデックス生成部２５は、図１２に示した三つ組のうち、類似度が高いものから順に２つ以上ずつ含むように、各転置インデックスを生成する。ただし、類似度が同じ値のものは、同じ転置インデックスに含まれるようにする。図１２の例では、類似度が最高値１．０のものが４つ（ＩＤ＝１０、１１、１２、１３）ある。そこで、転置インデックス生成部２５は、これら４つの三つ組を含む転置インデックスを生成する。また、転置インデックス生成部２５は、残りの三つ組のうち、類似度が高いものから順に、２つ以上の三つ組（この場合、ＩＤ＝８，９の三つ組）を含むように、次の転置インデックスを生成する。以後も同様に、転置インデックス生成部２５は、残りの三つ組のうち類似度の高いものから順に２つ以上ずつの三つ組を含むように、転置インデックスを生成していく。結果として図１４に示すように、５つの転置インデックスＹ１〜Ｙ５が得られる。また、転置インデックス生成部２５は、各転置インデックスに対して、有効な閾値の範囲を表す情報として、格納されている三つ組に紐づく類似度の最大値を関連付ける。
【０１０９】
＜転置インデックスを用いた検索動作（具体例）＞
次に、図１３または図１４に示した転置インデックスを用いて、検索処理を行う動作について説明する。ここでは、検索条件データとして、集合Ｔ＝｛ａ，ｂ，ｅ，ｆ｝を用いるものとする。図１５は、定義２の式で計算された、Ｔと各検索対象データＳ１〜Ｓ４との類似度である。例えば、類似度の閾値０．７を指定して検索を実行した場合、類似度が０．７以上となるＳ３が、検索結果として得られるのが正しい。また、類似度の閾値０．４５を指定して検索を実行した場合、類似度が０．４５以上となるＳ３とＳ２が検索結果として得られるのが正しい。
【０１１０】
図１６は、検索結果の絞り込みの様子を説明する図である。
【０１１１】
まず、類似度の閾値が０．７で、分割条件Ｘで生成された転置インデックス群を対象とする場合について説明する。この場合、転置インデックス選択部１２は、分割条件Ｘで生成された転置インデックスＸ１〜Ｘ５から、関連付けられた類似度が０．７以上である転置インデックスＸ５を、検索用の転置インデックスとして選択する。そして、データ検索部２３は、転置インデックスＸ５を用いて、検索条件データＴに類似するデータを検索する。具体的には、データ検索部２３は、Ｔの各要素ａ、ｂ、ｅ、ｆのそれぞれをキーとして、転置インデックスＸ５を検索する。すると、検索結果として、Ｓ３が得られる。そこで、データ検索部２３は、Ｔと、Ｓ３との間の類似度を改めて計算し、類似度が閾値０．７以上であることを確認する。その結果、データ検索部２３は、最終的に、類似検索結果としてＳ３を出力する。このように、類似データ検索装置２は、類似度の閾値を用いて検索に用いる転置インデックスを絞り込むことにより、Ｔとの間の類似度を計算する対象を大きく絞り込む。その結果、類似データ検索装置２は、全体の計算量を削減し、高速に検索結果を得ることができる。
【０１１２】
なお、閾値の範囲に対して有効となる転置インデックスを使わずに、Ｓ１〜Ｓ４を一つの転置インデックスに格納する一般的な方式では、Ｓ１〜Ｓ４は、いずれもＴと共通する要素を持つ。このため、一般的な方式では、Ｔによる転置インデックスの検索結果として、Ｓ１〜Ｓ４の全てが得られてしまう。そのため、一般的な方式では、その後、Ｓ１〜Ｓ４全てに対してＴとの類似度の計算を行うことになってしまい、転置インデックスで絞り込みを行う効果は実質的に得られない。
【０１１３】
次に、類似度の閾値が０．７で、分割条件Ｙで生成された転置インデックス群を対象とする場合について説明する。この場合、転置インデックス選択部１２は、分割条件Ｙで生成された転置インデックスＹ１〜Ｙ５から、関連付けられた類似度が０．７以上である転置インデックスＹ５を、検索用の転置インデックスとして選択する。そして、データ検索部２３は、転置インデックスＹ５を用いて、検索条件データＴに類似するデータを検索する。具体的には、データ検索部２３は、Ｔの各要素ａ、ｂ、ｅ、ｆのそれぞれをキーとして、転置インデックスＹ５を検索する。すると、検索結果として、Ｓ３が得られる。そこで、データ検索部２３は、ＴおよびＳ３の類似度計算を行って類似度が閾値０．７以上であることを確認する。このようにして、類似データ検索装置２は、最終的な類似検索結果としてＳ３を出力する。これは上述のケースと同様である。
【０１１４】
次に、類似度の閾値が０．４５で、分割条件Ｘで生成された転置インデックス群を対象とする場合について説明する。この場合、転置インデックス選択部１２は、分割条件Ｘで生成された転置インデックスＸ１〜Ｘ５から、関連付けられた類似度が０．４５以上である転置インデックスＸ３およびＸ５を、検索用の転置インデックスとして選択する。そして、データ検索部２３は、これらの転置インデックスを用いて、Ｔの各要素をキーとして検索を実行する。すると、検索結果としては、Ｓ１、Ｓ２、Ｓ３およびＳ４が得られる。その後、データ検索部２３は、これらＳ１、Ｓ２、Ｓ３およびＳ４と、Ｔとの間の類似度をそれぞれ計算し、計算した類似度が閾値０．４５以上となるＳ２およびＳ３を、検索結果として得る。このケースでは、検索用の転置インデックスの検索の結果、検索対象データ全てが得られており、転置インデックスによる絞り込みの効果は特に得られていない。
【０１１５】
また、類似度の閾値が０．４５で、分割条件Ｙで生成された転置インデックス群を対象とする場合について説明する。この場合、転置インデックス選択部１２は、分割条件Ｙで生成された転置インデックスＹ１〜Ｙ５から、関連付けられた類似度が０．４５以上である転置インデックスＹ４およびＹ５を、検索用の転置インデックスとして選択する。そして、データ検索部２３は、これらの転置インデックスを用いて、Ｔの各要素をキーとして検索を実行する。すると、検索結果としては、Ｓ１、Ｓ２およびＳ３が得られる。その後、データ検索部２３は、これらＳ１、Ｓ２およびＳ３と、Ｔとの間の類似度をそれぞれ計算し、計算した類似度が閾値０．４５以上となるＳ２およびＳ３を、検索結果として得る。このケースでは、転置インデックスの検索により、Ｓ４を検索結果の候補から外すことに成功しており、転置インデックスによる絞り込みの効果が得られている。
【０１１６】
一般に、転置インデックスの分割は、細かければ細かいほど、絞り込みの効果が表れやすい。ただし、あまりに細かく分割すると、転置インデックスの検索回数が増加するため、パフォーマンスへの影響が予想される。分割条件は、絞り込みの効果と検索パフォーマンスのバランスに配慮して、タスクごとに決定されることが望ましい。
【０１１７】
以上で、具体例の説明を終了する。
【０１１８】
［効果の説明］
次に、本発明の第２の実施の形態の効果について述べる。
【０１１９】
本実施の形態の類似データ検索装置は、集合間の類似度に基づく検索において、類似度が任意の実数値をとり得る場合でも、類似度の閾値の変化に応じて転置インデックスを作り直す必要なく有効な転置インデックス群を生成して、より高速に検索を行うことができる。
【０１２０】
その理由について説明する。本実施の形態では、分割条件取得部２４が、検索対象データから複数の転置インデックスを生成するための分割条件を表す情報を取得する。そして、転置インデックス生成部２５が、取得された分割条件に基づいて、検索対象データから複数の転置インデックスを生成する。生成される転置インデックスは、それぞれが、類似度の閾値の範囲に対して有効となるよう生成される。また、少なくとも１つの転置インデックスが有効となる閾値の範囲の一部または全部が、他の少なくとも１つの転置インデックスが有効となる閾値の範囲に含まれないように生成される。そして、転置インデックス選択部１２が、検索の際に指定される類似度の閾値、および、各転置インデックスが有効となる閾値の範囲に基づいて、複数の転置インデックスのうち検索用の転置インデックスを選択する。そして、データ検索部２３が、検索用の転置インデックスを用いて、検索条件データに類似する検索対象データを検索するからである。
【０１２１】
このように、本実施の形態において、類似データ検索装置２は、類似度が任意の実数値を取り得る場合にも、検索時に指定される類似度の閾値の変化に応じて作り直す必要がない、より妥当な転置インデックス群を、分割条件に基づいて、検索対象データから生成することができる。その結果、本実施の形態における類似データ検索装置２は、検索時に指定される類似度の閾値の変化に関わらず、より妥当な転置インデックス群を用いて、より高速な検索を行うことができる。
【０１２２】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。本実施の形態では、類似度の閾値に加えて、類似度の閾値よりも高い値である優先閾値を用いて類似データを検索する例について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０１２３】
［構成の説明］
まず、本発明の第３の実施の形態としての類似データ検索装置３の機能ブロックの構成を、図１７に示す。図１７において、類似データ検索装置３は、本発明の第２の実施の形態としての類似データ検索装置２に対して、転置インデックス選択部１２に替えて転置インデックス選択部３２と、データ検索部２３に替えてデータ検索部３３とを備える点が異なる。
【０１２４】
なお、類似データ検索装置３およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態と同様のハードウェア要素によって構成可能である。ただし、類似データ検索装置３およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０１２５】
転置インデックス選択部３２は、本発明の第２の実施の形態と同様に検索用の転置インデックスを選択することに加えて、次のようにして優先検索用の転置インデックスを選択する。すなわち、転置インデックス選択部３２は、類似度の閾値よりも高い値である優先閾値に基づいて、優先検索用の転置インデックスを選択する。優先検索とは、データ検索部３３によって、本発明の第２の実施の形態で説明した検索用の転置インデックスによる検索より優先的に行われる検索をいう。以降、本発明の第２の実施の形態で説明した検索用の転置インデックスによる検索を、通常検索とも記載する。例えば、転置インデックス選択部３２は、優先閾値が、有効となる閾値の範囲に含まれる転置インデックスを、優先検索用の転置インデックスとして選択してもよい。なお、選択される優先検索用の転置インデックスは、１つであってもよいし複数であってもよい。
【０１２６】
データ検索部３３は、本発明の第２の実施の形態と同様に検索用の転置インデックスを用いて通常検索を行うことに加えて、優先検索用の転置インデックスを用いて優先検索を行う。そして、データ検索部３３は、優先検索の結果を、通常検索の結果に先行して出力する。
【０１２７】
例えば、データ検索部３３は、優先検索を通常検索に先行して実行し、その検索結果を出力後、本発明の第２の実施の形態と同様に通常検索を実行し、その検索結果を出力してもよい。ただし、データ検索部３３は、必ずしも優先検索の結果の出力を全て完了してから、通常検索を開始する必要はない。データ検索部３３は、優先検索の結果の出力を、第２の実施の形態における検索結果の出力より早く行えるよう、通常検索および優先検索を行えばよい。
【０１２８】
［動作の説明］
以上のように構成された類似データ検索装置３の動作について、図１８を参照して説明する。なお、類似データ検索装置３の転置インデックスの生成動作については、図６に示した本発明の第２の実施の形態と同様であるため、本実施の形態における説明を省略する。
【０１２９】
＜転置インデックスを用いた検索動作＞
ここでは、類似データ検索装置３が検索を行う動作について、図１８を用いて説明する。この動作は、入力される検索条件データＴに対して、ｓｉｍ（Ｓ，Ｔ）≧λとなる全てのＳ∈Σを求めて、これを出力する動作である。
【０１３０】
図１８では、まず、転置インデックス選択部３２は、類似度の閾値λ、優先閾値λｐおよび検索条件データＴを取得する（ステップＡ３１）。
【０１３１】
次に、転置インデックス選択部３２は、優先閾値λｐに基づいて、優先検索用の転置インデックスを選択する（ステップＡ３２）。
【０１３２】
具体的には、転置インデックス選択部３２は、有効となる閾値の範囲に優先閾値λｐを含む転置インデックスを、優先検索用の転置インデックスとして選択する。
【０１３３】
例えば、転置インデックス１〜５があり、それぞれが類似度０．２、０．４、０．６、０．８、１．０に関連付けられているとする。つまり、転置インデックス１〜５は、それぞれ、０．２、０．４、０．６、０．８、１．０以下の閾値が指定された検索において有効となるよう構成されているとする。そして、類似度の閾値λが０．７であり、優先閾値λｐが０．９であるとする。
【０１３４】
この場合、転置インデックス選択部３２は、優先閾値λｐ以上である１．０が関連付けられた転置インデックス５を、優先検索用の転置インデックスとして選択する。
【０１３５】
次に、データ検索部３３は、優先検索用の転置インデックスを用いて、検索条件データＴの各要素ｖをキーに検索を行う（ステップＡ３３）。
【０１３６】
次に、データ検索部３３は、ステップＡ３３で得られた各々のＳｐ∈Σに対して、以下のステップＡ３４〜Ａ３６を繰り返す。
【０１３７】
ここでは、まず、データ検索部３３は、ＳｐおよびＴの類似度ｓｉｍ（Ｓｐ，Ｔ）を計算する（ステップＡ３４）。
【０１３８】
次に、データ検索部３３は、計算した類似度がλｐ以上であるか（ｓｉｍ（Ｓｐ，Ｔ）≧λであるか）を判定する（ステップＡ３５）。
【０１３９】
ここで、類似度がλｐ以上であれば（ステップＡ３５でＹｅｓ）、データ検索部３３は、ＳｐおよびＴが類似していると判断して、そのＳｐを優先検索結果として出力する（ステップＡ３６）。
【０１４０】
一方、類似度がλｐより小さければ（ステップＡ３５でＮｏ）、データ検索部３３は、ＳｐおよびＴが類似していないと判断して、そのようなＳｐを優先検索結果に含めない。
【０１４１】
ステップＡ３２で得られた各々のＳｐ∈Σに対してステップＡ３４〜Ａ３６を終了すると、類似データ検索装置３は、以降、本発明の第２の実施の形態と同様に、図６のステップＡ１〜Ａ２、Ａ２３〜Ａ２６の通常検索を実行し、検索結果を出力する。
【０１４２】
以上で、類似データ検索装置３が検索を行う動作の説明を終了する。
【０１４３】
このような動作により、本実施の形態は、類似度の閾値（例えば０．７）を指定した検索であっても、類似度がより高い優先閾値（例えば０．９）以上となる優先検索の結果を先行して出力することができる。このため、利用者にとってのレスポンスを向上することができる。
【０１４４】
なお、図１８および図１８に続く図６のフローチャートにおいて、ステップＡ２３の通常検索で参照される検索用の転置インデックスは、ステップＡ３３の優先検索で参照される優先検索用の転置インデックスを含む。このため、検索結果に重複が生じる。この重複を防ぐために、例えば、データ検索部３３は、ステップＡ２３では、検索用の転置インデックスのうち、優先検索用の転置インデックスでもある転置インデックスを用いた検索を省略してもよい。また、データ検索部３３は、優先検索のステップＡ３３で得られた各々のＳｐ∈ΣのうちステップＡ３５でＮｏと判断されたものを一時的に保存しておいてもよい。この場合、データ検索部３３は、その後の通常検索のステップＡ２４〜Ａ２６において、ステップＡ３５でＮｏと判断されたＳｐを、類似度の精密判定の対象に加えてもよい。
【０１４５】
［効果の説明］
次に、本発明の第３の実施の形態の効果について述べる。
【０１４６】
本実施の形態の類似データ検索装置３は、類似度が任意の実数値をとり得る場合でも、類似度の閾値の変化に応じて作り直す必要がない転置インデックス群を用いて検索を行う際に、類似度のより高い検索結果をより迅速に提示することができる。
【０１４７】
その理由について説明する。本実施の形態において、類似データ検索装置３は、本発明の第２の実施の形態と同様の構成に加えて、転置インデックス選択部３２が、次のようにして優先検索用の転置インデックスを選択する。すなわち、転置インデックス選択部３２は、類似度の閾値よりも高い値である優先閾値に基づいて、優先検索用の転置インデックスを選択する。そして、データ検索部３３が、検索用の転置インデックスを用いた通常検索を行うことに加えて、優先検索用の転置インデックスを用いた優先検索を行い、優先検索の結果を、通常検索の結果に先行して出力するからである。
【０１４８】
このように、本実施の形態は、類似度が特に高い検索結果を、他の結果より早く得たいというニーズに応えることができる。これは、実用的には、特に類似度が高い検索結果を高速に得られればそれで十分であり、他の結果をすべて得るまで時間がかかってもかまわないことが多いからである。
【０１４９】
なお、上述した本発明の第２および第３の実施の形態において、類似度の定義をさらに一般化することが可能である。
【０１５０】
上述した各実施の形態では、検索条件データＴおよび検索対象データＳに対して、ＳとＴの類似度ｓｉｍ（Ｓ，Ｔ）として、定義２を適用する例を想定して説明していた。
ｓｉｍ（Ｓ，Ｔ）＝Ｗｅｉｇｈｔ（Ｓ∩Ｔ）／Ｗｅｉｇｈｔ（Ｓ）・・・（定義２）
これをさらに一般化して、類似度ｓｉｍ（Ｓ，Ｔ）は、次の定義２’に拡張することができる。
ｓｉｍ（Ｓ，Ｔ）＝Ｗｅｉｇｈｔ（Ｓ∩Ｔ）／（ｆ（Ｓ）・g（Ｔ））・・・（定義２’）
ここで、ｆ（Ｓ）は、Ｓから正の実数への関数であり、g（Ｔ）も、Ｔから正の実数への関数であればよく、その具体的内容は特に問わない。なお、上記説明で採用していた定義２は、ｆ（Ｓ）＝Ｗｅｉｇｈｔ（Ｓ）、g（Ｔ）＝１とした場合の、定義２’の特殊ケースである。
【０１５１】
定義２’のもとでは、定義３の代わりに、以下の定義３’を採用する。
λｉ＝Ｗｅｉｇｈｔ（Ｓ＼Ｓｉ）／ｆ（Ｓ）・・・（定義３’）
もし、Ｓｉ∩Ｔ＝Φかつ、λｉ＜μ・g（Ｔ）ならば、
Ｗｅｉｇｈｔ（Ｓ∩Ｔ）／f（Ｓ）＝Ｗｅｉｇｈｔ（（Ｓ＼Ｓｉ）∩Ｔ）／ｆ（Ｓ）≦Ｗｅｉｇｈｔ（Ｓ＼Ｓｉ）／f（Ｓ）＝λｉ＜μ・g（Ｔ）
なので、
ｓｉｍ（Ｓ，Ｔ）＝Ｗｅｉｇｈｔ（Ｓ∩Ｔ）／（ｆ（Ｓ）・g（Ｔ））＜μ
となる。言い換えれば、性質２において、Ｓ（μ）の定義式を、「Ｓ（μ）＝｛ｓ|ｓ∈Ｓ aｎｄ λｉ（ｓ）＜μ・g（Ｔ）｝」と読み替えることにより、同じ内容「検索条件の集合Ｔが、ｓｉｍ（Ｓ，Ｔ）≧μを満たすならば、Ｔ∩Ｓ（μ）≠Φ」が成立する。
【０１５２】
この場合、各実施形態における転置インデックス生成部は、定義３’により計算される値を第３要素とする三つ組を生成し、転置インデックスにまとめあげればよい。そして、各実施形態における転置インデックス選択部は、類似度の閾値μで類似データを検索する際に、関連付けられた類似度（定義３’により計算された値の最大値）がμ・g（Ｔ）以上となるような検索用の転置インデックスを選択する。そして、各実施形態におけるデータ検索部は、このように選択された検索用の転置インデックスに対して、Ｔの各要素による検索を実行するように構成する。これにより、閾値μ以上で類似する全ての検索対象データを効率よく検索することができる。
【０１５３】
また、第３の実施の形態では、転置インデックス選択部３２は、優先閾値μｐで類似データを検索する際に、関連付けられた類似度（定義３’により計算された値の最大値）がμｐ・g（Ｔ）以上となるような優先検索用の転置インデックスを選択する。そして、データ検索部３３は、このように選択された優先検索用の転置インデックスに対して、Ｔの各要素による検索を実行するように構成する。これにより、優先閾値μｐ以上で類似する全ての検索対象データを効率よく検索することができる。
【０１５４】
以上のように、類似度が（定義２’）で定義されている場合にも、本発明の第２および第３の実施の形態は、同様に効果を奏する。例えば、各実施の形態は、ｆ（Ｓ）＝１、g（Ｔ）＝Ｗｅｉｇｈｔ（Ｔ）とすることにより、ｓｉｍ（Ｓ，Ｔ）＝Ｗｅｉｇｈｔ（Ｓ∩Ｔ）／Ｗｅｉｇｈｔ（Ｔ）となるケースにも対応できる。
【０１５５】
また、上述した本発明の第２および第３実施の形態において、さらに言えば、類似度は、集合の各要素に与えられた非負のウェイトにもとづき計算される実数値に限定されない。
【０１５６】
また、上述した本発明の各実施の形態において、類似データ検索装置の各機能ブロックが、メモリに記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
【０１５７】
また、上述した本発明の各実施の形態において、類似データ検索装置の機能ブロックは、複数の装置に分散されて実現されてもよい。
【０１５８】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した類似データ検索装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置（記憶媒体）に格納しておく。そして、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコード及び記憶媒体によって構成される。
【０１５９】
なお、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１６０】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０１６１】
上記説明した各実施形態は、例えば、類似文検索装置として適用可能である。文は、単語の集合とみなすことができる。そこで、各実施形態における類似データ検索装置は、入力される文章を検索条件データとして適用し、検索対象となる類似文を検索対象データとして扱うことにより、入力される文章に類似する文を検索する類似文検索装置として好適である。
【０１６２】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０１６３】
この出願は、２０１６年７月１２日に出願された日本出願特願２０１６−１３７８２４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１６４】
１、２、３    類似データ検索装置
１１    転置インデックス記憶部
１２、３２    転置インデックス選択部
１３、２３、３３    データ検索部
２４    分割条件取得部
２５    転置インデックス生成部
９１、９２    検索対象データ記憶装置
１００１  ＣＰＵ
１００２  メモリ
１００３  出力装置
１００４  入力装置
１００５  通信インタフェース
【図１】
0006773115.tif 000006
【図２】
0006773115.tif 000007
【図３】
0006773115.tif 000008
【図４】
0006773115.tif 000009
【図５】
0006773115.tif 000010
【図６】
0006773115.tif 000011
【図７】
0006773115.tif 000012
【図８】
0006773115.tif 000013
【図９】
0006773115.tif 000014
【図１０】
0006773115.tif 000015
【図１１】
0006773115.tif 000016
【図１２】
0006773115.tif 000017
【図１３】
0006773115.tif 000018
【図１４】
0006773115.tif 000019
【図１５】
0006773115.tif 000020
【図１６】
0006773115.tif 000021
【図１７】
0006773115.tif 000022
【図１８】
0006773115.tif 000023