(57)【要約】      （修正有）【課題】クラスタの一部分のデータを、ビットベクトル化により軽減された距離演算に基づき切り出し、検索対象に含める。【解決手段】ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、入力クエリに最も近い第１のクラスタを特定し、入力クエリの位置から第１のクラスタの中心までの距離を示す第１の距離を用いて、入力クエリとの距離が第１の距離以内となる対象データを含む第１のクラスタとは異なる他のクラスタを特定する。次に、他のクラスタに属し、かつ、入力クエリからの距離が第１の距離以内となる対象データ、または、他のクラスタに属し、かつ、他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出し、第１のクラスタに属する対象データ、および、他のクラスタから抽出した対象データから、入力クエリに類似する対象データを検索する。【選択図】図２
2018018330.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第１のクラスタを特定し、
前記入力クエリの位置から前記第１のクラスタの中心までの距離を示す第１の距離を用いて、前記入力クエリとの距離が前記第１の距離以内となる対象データを含む前記第１のクラスタとは異なる他のクラスタを特定し、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第１の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出し、
前記第１のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
処理を実行させることを特徴とするデータ検索プログラム。
【請求項２】
特定された前記他のクラスタの中心と前記入力クエリとの距離から前記第１の距離を減算することで、前記第２の距離を算出する処理を更にコンピュータに実行させることを特徴とする請求項１に記載のデータ検索プログラム。
【請求項３】
前記他のクラスタを特定する処理は、クラスタの半径が前記第２の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする請求項２に記載のデータ検索プログラム。
【請求項４】
前記抽出する処理は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第２の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第２の距離との比較を行うことなく、ソート順に基づいて、前記第２の距離よりも大きい対象データを抽出することを特徴とする請求項３に記載のデータ検索プログラム。
【請求項５】
コンピュータが実行するデータ検索方法であって、
ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第１のクラスタを特定し、
前記入力クエリの位置から前記第１のクラスタの中心までの距離を示す第１の距離を用いて、前記入力クエリとの距離が前記第１の距離以内となる対象データを含む前記第１のクラスタとは異なる他のクラスタを特定し、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第１の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出し、
前記第１のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
処理を実行することを特徴とするデータ検索方法。
【請求項６】
ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第１のクラスタを特定する第１特定部と、
前記入力クエリの位置から前記第１のクラスタの中心までの距離を示す第１の距離を用いて、前記入力クエリとの距離が前記第１の距離以内となる対象データを含む前記第１のクラスタとは異なる他のクラスタを特定する第２特定部と、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第１の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出する抽出部と、
前記第１のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する検索部と
を有することを特徴とするデータ検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ検索プログラム等に関する。
【背景技術】
【０００２】
近年、画像検索や音声検索など、データベース内の膨大な非構造データからクエリと似ているデータを検索して出力する類似検索処理がある。類似検索処理では、１）被検索対象データが膨大であること、２）データが日々増加すること、３）個々のデータの容量が大きいこと等があり処理時間が大きくなる。このため、類似検索処理を高速化することが求められている。
【０００３】
類似検索処理を高速化する従来技術の一例について説明する。図１３は、従来技術１を説明するための図である。例えば、従来技術１では、クラスタリングを実行することで複数のデータを複数のクラスタ１〜８に分類する。従来技術１は、クエリの位置１０と、クラスタ１〜８の範囲とを比較し、クエリを含むクラスタを判定する。従来技術１は、判定したクラスタに含まれるデータに対して、クエリを用いた類似検索処理を実行する。図１３に示す例では、クエリを含むクラスタがクラスタ５となるため、従来技術１は、クラスタ５に含まれるデータを対象として、類似検索処理を実行する。
【０００４】
しかし、従来技術１で説明したように、検索対象を一つのクラスタに限定すると、本来類似しているデータが除外され、類似検索の精度が劣化する場合がある。これに対して、従来技術２が存在する。
【０００５】
図１４は、従来技術２を説明するための図である。従来技術２では、クエリの位置１０を中心とした範囲１０ａと重複するクラスタを判定する。従来技術２は、判定したクラスタに含まれるデータに対して、クエリを用いた類似検索処理を実行する。図１４に示す例では、範囲１０ａと重複するクラスタは、クラスタ５，６，８となるため、従来技術２は、クラスタ５，６，８に含まれるデータを対象として、類似検索処理を実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２９４８５５号公報
【特許文献２】米国特許出願公開第２０１６／０００１９９８号明細書
【特許文献３】特開２０１４−１４６２０７号公報
【特許文献４】特表２００７−５２１５６５号公報
【特許文献５】特開２００４−８６５３８号公報
【特許文献６】米国特許出願公開第２００５／０１７１９７２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、計算コストを抑えて、クエリの検索対象を適切に設定することができないという問題がある。
【０００８】
例えば、上述した従来技術２では、従来技術１と比較して類似検索の精度を向上させることができるが、クラスタ単位で類似検索の対象となるデータが増加するため、計算コストが増加する。
【０００９】
１つの側面では、本発明は、クラスタの一部分のデータを、ビットベクトル化により軽減された距離演算に基づき切り出し、検索対象に含めることができるデータ検索プログラム、データ検索方法およびデータ検索装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の案では、コンピュータに下記の処理を実行させる。コンピュータは、ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、入力クエリに最も近い第１のクラスタを特定する。コンピュータは、入力クエリの位置から第１のクラスタの中心までの距離を示す第１の距離を用いて、入力クエリとの距離が第１の距離以内となる対象データを含む第１のクラスタとは異なる他のクラスタを特定する。コンピュータは、他のクラスタに属し、かつ、入力クエリからの距離が第１の距離以内となる対象データ、または、他のクラスタに属し、かつ、他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出する。コンピュータは、第１のクラスタに属する対象データ、および、他のクラスタから抽出した対象データを対象に、入力クエリに対し類似する対象データを検索する。
【発明の効果】
【００１１】
クラスタの一部分のデータを、ビットベクトル化により軽減された距離演算に基づき切り出し、検索対象に含めることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施例に係るデータ検索装置の処理の一例を説明するための図である。
【図２】図２は、本実施例に係るデータ検索装置の一例を示す図である。
【図３】図３は、被検索データ管理テーブルのデータ構造の一例を示す図である。
【図４】図４は、圧縮関数管理テーブルのデータ構造の一例を示す図である。
【図５】図５は、クラスタ管理テーブルのデータ構造の一例を示す図である。
【図６】図６は、データ分布管理テーブルのデータ構造の一例を示す図である。
【図７】図７は、ソートテーブルのデータ構造の一例を示す図である。
【図８】図８は、各種変数の一例を示す図である。
【図９】図９は、データ検索装置の処理手順を示すフローチャート（１）である。
【図１０】図１０は、データ検索装置の処理手順を示すフローチャート（２）である。
【図１１】図１１は、本実施例に係るデータ検索装置の期待値の一例を示す図である。
【図１２】図１２は、コンピュータのハードウェア構成の一例を示す図である。
【図１３】図１３は、従来技術１を説明するための図である。
【図１４】図１４は、従来技術２を説明するための図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するデータ検索プログラム、データ検索方法およびデータ検索装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１４】
本実施例に係るデータ検索装置は、被検索データを予めクラスタリングしておき、クエリデータに属するクラスタだけでなく、クエリデータの近傍にあるクラスタを求める。以下の説明では、クエリデータに属するクラスタを第１クラスタと表記する。またクエリデータの近傍にある第１クラスタ以外のクラスタを近傍クラスタと表記する。
【００１５】
データ検索装置は、第１クラスタに属する被検索データだけでなく、近傍クラスタに属する被検索データに対してもクエリデータに類似する類似検索処理を実行する。ここで、データ検索装置は、近傍クラスタに属する被検索データについては、クエリデータの近傍に属する可能性が高いかどうかを判定し、可能性の高い被検索データのみに対して、類似検索処理を実行する。
【００１６】
例えば、データ検索装置は、近傍クラスタ内の被検索データと、この近傍クラスタの中心との距離を利用する。データ検索装置は、かかる距離が、クエリデータおよび第１クラスタから求めた閾値より大きい場合に、該当する被検索データが、クエリデータの近傍に存在する可能性が高いと判定する。
【００１７】
図１は、本実施例に係るデータ検索装置の処理の一例を説明するための図である。図１に示す例では、複数の被検索データが、クラスタＣ１〜Ｃ８に分類されているものとする。また、クエリデータの位置を位置１０とする。第１クラスタをクラスタＣ５とする。近傍クラスタを、クラスタＣ６，Ｃ８とする。また、近傍クラスタとなるクラスタＣ６，Ｃ８のうち、領域６ａ，８ａに含まれる被検索データを、クエリデータの近傍に存在する可能性が高いと判定したものとする。この場合には、データ検索装置は、クラスタＣ５に属する被検索データと、領域６ａ，８ａに属する被検索データに対して、類似検索処理を実行する。上記のように、第１クラスタに加えて、近傍クラスタに属する被検索データに対して、類似検索処理を実行する場合に、クエリデータの近傍に存在する可能性が高い近傍クラスタの一部の被検索データに対してのみ、類似検索を実行する。従って、クエリの検索対象を適切に設定することができる。
【００１８】
なお、近傍クラスタ内の全ての被検索データに対して、クラスタ中心との距離を計算し、クエリデータの近傍に存在する可能性が高いか否かを判定すると、計算コストが大きくなってしまう場合がある。
【００１９】
このため、本実施例に係るデータ検索装置は、被検索データの特徴量を０と１とで表現するビットベクトルに圧縮して、計算コストを削減する。データ検索装置は、全ての被検索データを、ビットベクトルに圧縮した状態で保持しておき、各距離計算はビットベクトルを用いて行う。ビットベクトルに圧縮することにより、被検索データとクラスタ中心との距離が離散値に丸められ、複数の被検索データとクラスタ中心との距離が同一の値を取ることになる。このため、例えば、一部の被検索データのみに対して、クエリデータの近傍に存在する可能性が高いか否かを判定するだけで良いことになり、より少ない計算コストで、上記の類似検索を実行することができる。
【００２０】
図２は、本実施例に係るデータ検索装置の一例を示す図である。図２に示すように、このデータ検索装置１００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。
【００２１】
通信部１１０は、ネットワークを介して図示しない他の外部装置とデータ通信を実行する処理部である。通信部１１０は、ＮＩＣ（Network  Interface  Card）等の通信装置に対応する。
【００２２】
入力部１２０は、各種の情報をデータ検索装置１００に入力するための入力装置である。入力部１２０は、キーボードやマウス、タッチパネル等に対応する。
【００２３】
表示部１３０は、制御部１５０から出力される情報を表示する表示装置である。表示部１３０は、液晶ディスプレイやタッチパネル等に対応する。
【００２４】
記憶部１４０は、被検索データ管理テーブル１４０ａ、圧縮関数管理テーブル１４０ｂ、クラスタ管理テーブル１４０ｃ、データ分布管理テーブル１４０ｄを有する。記憶部１４０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
【００２５】
被検索データ管理テーブル１４０ａは、被検索データに関する各種の情報を保持するテーブルである。図３は、被検索データ管理テーブルのデータ構造の一例を示す図である。図３に示すように、この被検索データ管理テーブル１４０ａは、データＩＤ（identification）、ビットベクトル、クラスタＩＤ、被検索データを対応付ける。データＩＤは、被検索データを一意に識別する情報である。ビットベクトルは、被検索データから抽出した特徴量をビットベクトル化したものである。クラスタＩＤは、被検索データの属するクラスタを一意に識別する情報である。
【００２６】
圧縮関数管理テーブル１４０ｂは、被検索データの特徴量をビットベクトルに圧縮する場合に用いる圧縮関数の各パラメータを格納するテーブルである。図４は、圧縮関数管理テーブルのデータ構造の一例を示す図である。図４に示すように、圧縮関数管理テーブル１４０ｂは、圧縮関数の第１パラメータ、第２パラメータを有する。図４では一例として、第１，２パラメータを示すが、その他のパラメータが、圧縮関数管理テーブル１４０ｂに格納されていても良い。
【００２７】
クラスタ管理テーブル１４０ｃは、被検索データが分類されるクラスタに関する各種の情報を保持するテーブルである。図５は、クラスタ管理テーブルのデータ構造の一例を示す図である。図５に示すように、クラスタ管理テーブル１４０ｃは、クラスタＩＤ、クラスタ中心、クラスタ半径を対応付ける。クラスタＩＤは、クラスタを一意に識別する情報である。クラスタ中心は、クラスタの中心位置をビットベクトルに圧縮した情報である。クラスタ半径は、クラスタの半径を示すものである。
【００２８】
データ分布管理テーブル１４０ｄは、クラスタとクラスタに属する被検索データとの関係に関する情報を保持するテーブルである。図６は、データ分布管理テーブルのデータ構造の一例を示す図である。図６に示すように、このデータ分布管理テーブル１４０ｄは、クラスタＩＤ、データＩＤ、中心距離を対応付ける。クラスタＩＤは、クラスタを一意に識別する情報である。データＩＤは、データを一意に識別する情報である。中心距離は、クラスタの中心と被検索データとの距離を示す情報である。
【００２９】
図２の説明に戻る。制御部１５０は、登録部１５０ａ、圧縮部１５０ｂ、クラスタリング部１５０ｃ、第１特定部１５０ｄ、第２特定部１５０ｅ、抽出部１５０ｆ、検索部１５０ｇを有する。制御部１５０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１５０は、例えば、ＣＰＵやＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【００３０】
登録部１５０ａは、登録対象となる被検索データを受け付けた場合に、受け付けた被検索データを、被検索データ管理テーブル１４０ａに登録する処理部である。例えば、登録部１５０は、登録対象となる被検索データを、ネットワーク上の外部装置から通信部１１０を介して受け付けても良いし、入力部１２０から受け付けても良い。
【００３１】
登録部１５０ａは、被検索データにユニークなデータＩＤを割り当て、データＩＤと被検索データとを対応付けて、被検索データ管理テーブル１４０ａに登録する。
【００３２】
圧縮部１５０ｂは、被検索データ管理テーブル１４０ａに登録された各被検索データの特徴量を圧縮したビットベクトルを算出する処理部である。例えば、圧縮部１５０ｂは、各被検索データから特徴量を抽出し、特徴量を圧縮関数に代入することで、特徴量をビットベクトルに圧縮する。圧縮部１５０ｂは、圧縮関数のパラメータとして、圧縮関数管理テーブル１４０ｂに登録されている第１パラメータ、第２パラメータ等を利用する。圧縮部１５０ｂは、特徴量のビットベクトルを、被検索データ管理テーブル１４０ａに登録する。
【００３３】
被検索データの特徴量はどのような特徴量であっても良い。例えば、被検索データが画像情報である場合には、特徴量は、画像の色、輝度、輪郭、固有値、固有ベクトル、写っている物体の形状、物体の数等である。被検索データが音情報である場合には、特徴量は、周波数スペクトル、音量等である。
【００３４】
なお、圧縮部１５０ｂは、各被検索データから特徴量を抽出し、抽出した特徴量を用いて、圧縮関数の第１パラメータおよび第２パラメータを特定する。圧縮部１５０ｂは、特定した第１パラメータおよび第２パラメータの情報を、圧縮関数管理テーブル１４０ｂに登録する。
【００３５】
上述した圧縮部１５０ｂがビットベクトルを算出する処理は一例であり、他の周知技術により、ビットベクトルを算出しても良い。例えば、特開２０１５−１７０２１７号公報に記載された技術を用いて、ビットベクトルを算出しても良い。
【００３６】
クラスタリング部１５０ｃは、被検索データ管理テーブル１４０ａに登録された各被検索データをクラスタリングする処理部である。クラスタリング部１５０ｃは、最短距離法等の階層的手法またはk-means法等の非階層的手法により、各被検索データを、各クラスタに分類する。クラスタリング部１５０ｃは、クラスタとこのクラスタに属する被検索データとの関係に基づき、被検索データ管理テーブル１４０ａにおいて、データＩＤに対応するクラスタＩＤを登録する。
【００３７】
クラスタリング部１５０ｃは、クラスタ毎に、クラスタ中心と、クラスタ半径とを求める。クラスタリング部１５０ｃは、クラスタＩＤ、クラスタ中心、クラスタ半径を対応付けて、クラスタ管理テーブル１４０ｃに登録する。
【００３８】
クラスタリング部１５０ｃは、被検索データ管理テーブル１４０ａに登録された全ての被検索データについて、被検索データと、この被検索データの属するクラスタのクラスタ中心との中心距離を算出する。クラスタリング部１５０ｃは、算出結果を基にして、クラスタＩＤ、データＩＤ、中心距離を、データ分布管理テーブル１４０ｄに登録する。
【００３９】
ところで、クラスタリング部１５０ｃや、後述する第１特定部１５０ｄ、第２特定部１５０ｅ、抽出部１５０ｆ、検索部１５０ｇが、ビットベクトルを用いて距離を計算する場合には、ハミング距離を用いる。
【００４０】
ビットベクトルは、図３、図５等で示したように、０または１で構成されたベクトルである。二つのビットベクトル間の距離は、ハミング距離により計算することができる。ハミング距離とは、二つの２進数の排他的論理和をとり、立っているビットの数を足し合わせた値である。ハミング距離が小さいほど、二つのビットベクトルは距離が近く、類似したデータであると言える。例えば、ビットベクトル［０００１１０１１０］と［１１０１１０１１０］とのハミング距離は、２となる。
【００４１】
本実施例では、データｘとデータｙのハミング距離ｄをハミング距離出力関数hamming_distance(x,y)を用いて、式（１）のように表記する。
【００４２】
【数１】
2018018330.tif 000003
【００４３】
第１特定部１５０ｄは、クラスタリング部１５０ｃによりクラスタリングされた複数のクラスタのうち、クエリデータに最も近い第１クラスタを特定する処理部である。第１特定部１５０ｄは、通信部１１０または入力部１２０を介して、クエリデータを取得する。
【００４４】
ここで、クエリデータをｘ、ｉ番目のクラスタをＣｉ、ｉ番目のクラスタの中心をｃｉとすると、クエリデータとｉ番目のクラスタの中心との距離ｄｉ（ｘ）を式（２）によって算出することができる。
【００４５】
【数２】
2018018330.tif 000004
【００４６】
第１特定部１５０ｄは、クラスタ管理テーブル１４０ｃを参照し、式（２）に基づいて、クラスタ毎に距離ｄｉ（ｘ）を算出し、距離ｄｉ（ｘ）が最小となるクラスタを、第１クラスタとして特定する。第１クラスタＣ１ＳＴと、クエリデータ間の距離ｄｍｉｎは、式（３）、式（４）により定義される。第１特定部１５０ｄは、第１クラスタのクラスタＩＤを、抽出部１５０ｆに出力する。また、第１特定部１５０ｄは、距離ｄｍｉｎと、各クラスタの距離ｄｉ（ｘ）の情報を、第２特定部１５０ｅに出力する。
【００４７】
【数３】
2018018330.tif 000005
【数４】
2018018330.tif 000006
【００４８】
第２特定部１５０ｅは、距離ｄｍｉｎを用いて、第１クラスタ以外のクラスタから、近傍クラスタを特定する処理部である。以下において、第２特定部１５０ｅの処理の一例について説明する。第２特定部１５０ｅは、近傍閾値θｉと各クラスタのクラスタ半径Ｒｉに基づいて、近傍クラスタを求める。第２特定部１５０ｅは、クラスタ半径Ｒｉの情報を、クラスタ管理テーブル１４０ｃから取得する。
【００４９】
ここで、近傍閾値は、各クラスタが第１クラスタの近傍に存在しているかを表すものであり、各クラスタによって値が異なる。クラスタの近傍閾値の値が小さいほど、そのクラスタは第１クラスタの近傍に存在していると言える。反対に、クラスタの近傍閾値の値が大きいほど、そのクラスタは第１クラスタの遠くに存在していると言える。
【００５０】
第２特定部１５０ｅは、クラスタＣｉの近傍閾値θｉを式（５）に基づき算出する。
【００５１】
【数５】
2018018330.tif 000007
【００５２】
第２特定部１５０ｅは、近傍閾値θｉの値が、クラスタ半径Ｒｉよりも小さい場合には、クラスタＣｉを近傍クラスタとして特定する。すなわち、第２特定部１５０ｅは、下記の条件を満たすｉ番目のクラスタＣｉを近傍クラスタとして特定する。第２特定部１５０ｅは、近傍クラスタのクラスタＩＤを、抽出部１５０ｆに出力する。
【００５３】
Ｒｉ＞θｉ・・・（条件）
【００５４】
抽出部１５０ｆは、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データを、被検索データ管理テーブル１４０ａから抽出する処理部である。
【００５５】
また、抽出部１５０ｆは、第１特定部１５０ｄから取得した、第１クラスタのクラスタＩＤを基にして、第１クラスタに属する被検索データを被検索データ管理テーブル１４０ａから抽出する。抽出部１５０ｆは、第１クラスタに属する被検索データを、検索部１５０ｇに出力する。
【００５６】
続いて、抽出部１５０ｆが、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データを、被検索データ管理テーブル１４０ａから抽出する処理の一例について説明する。以下の説明では適宜、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データを、近傍データと表記する。抽出部１５０ｆは、近傍データを検索部１５０ｇに出力する。
【００５７】
抽出部１５０ｆは、近傍クラスタＣｉに属するｊ番目の被検索データｙｉｊと近傍クラスタの中心ｃｉとの距離が、近傍閾値θｉ以上となる場合に、被検索データｙｉｊを近傍データとして抽出する。すなわち、抽出部１５０ｆは、式（６）を満たす被検索データｙｉｊを近傍データとして抽出することを意味する。
【００５８】
【数６】
2018018330.tif 000008
【００５９】
ここで、抽出部１５０ｆは、近傍クラスタ内の全ての被検索データに対して、近傍データであるか否かを判定する処理を行うと、計算コストが増加する場合がある。このため、抽出部１５０ｆは、次に説明する方法を用いて、近傍データを抽出することで、計算コストを減少させることができる。
【００６０】
本実施例に係るデータ検索装置１００は、被検索データの特徴量をビットベクトルに圧縮しているため、被検索データとクラスタ中心との距離hamming_distance(yij,ci)が離散値に丸められている。従って、抽出部１５０ｆは、ある被検索データが近傍データであるか否かを判定した後に、同一の距離をもつ被検索データに対しては、既に行った判定結果を流用することで、判定回数を削減することができる。
【００６１】
例えば、抽出部１５０ｆは、近傍クラスタについて、被検索データとクラスタ中心との距離hamming_distance(yij,ci)の値で降順にソートしたソートテーブルを生成する。図７は、ソートテーブルのデータ構造の一例を示す図である。図７に示すように、ソートテーブルは、クラスタＩＤと、データＩＤと、中心距離とを対応付ける。ここでは一例として、近傍クラスタのクラスタＩＤを、Ｃ６とする。
【００６２】
例えば、近傍閾値θ６を「９」とすると、抽出部１５０ｆは、中心距離が小さいものから順に、大小比較を行うことなく、一致判定を行うことで、近傍閾値θ６「９」と一致する中心距離のレコードを特定する。図７に示す例では、抽出部は、データＩＤ「ｄ１３１」のレコードを特定する。抽出部１５０ｆは、特定したレコードおよび特定したレコードよりも上方に位置するレコードのデータＩＤを、近傍データとして抽出する。抽出部１５０ｆは、他の近傍クラスタについても、同様の処理を実行することで、計算量を削減して、近傍データを抽出することができる。
【００６３】
検索部１５０ｇは、クエリデータに類似する被検索データを検索する処理部である。検索部１５０ｇは、抽出部１５０ｆから、第１クラスタに属する被検索データと、近傍データとを取得する。上記のように、近傍データは、抽出部１５０ｆにより判定された、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データである。
【００６４】
検索部１５０ｇは、通信部１１０または入力部１２０を介してクエリデータを受け付ける。検索部１５０ｇは、圧縮部１５０ｂと同様にして、クエリデータの特徴量を圧縮関数により圧縮することで、クエリデータのビットベクトルを求める。
【００６５】
検索部１５０ｇは、クエリデータと、各被検索データとを比較し、クエリデータと被検索データとの距離を計算する。検索部１５０ｇは、クエリデータとの距離が小さいものから順に、被検索データを出力する。なお、検索部１５０ｇは、クエリデータとの距離が小さいものから順に、被検索データをソートし、上位の一部の被検索データを、検索結果として出力しても良い。
【００６６】
続いて、上述した各種変数の図に組み込み示す。図８は、各種変数の一例を示す図である。図８に示す例では、クラスタＣ１〜Ｃ３の中心と、クエリデータｘとの距離ｄ１（ｘ）〜ｄ３（ｘ）のうち、距離ｄ３（ｘ）を最小とすると、クラスタＣ３が、第１クラスタとなり、距離ｄ３（ｘ）がｄｍｉｎとなる。
【００６７】
クラスタＣ２は、近傍閾値θ２の値が、クラスタ半径Ｒ２よりも小さいため、近傍クラスタとなる。クラスタＣ１は、近傍閾値θ１の値が、クラスタ半径Ｒ１よりも大きいため、近傍クラスタとならない。
【００６８】
検索部１５０ｇは、クラスタＣ３に属する被検索データと、クラスタＣ２に属する近傍データとを対象として、クエリデータｘとの比較を行う。クラスタＣ２に属する近傍データは、クラスタＣ２に属する被検索データのうち、クラスタＣ２の中心距離が、近傍閾値θ２以上となる被検索データである。
【００６９】
次に、本実施例に係るデータ検索装置１００の処理手順について説明する。図９は、データ検索装置の処理手順を示すフローチャート（１）である。図９に示すように、データ検索装置１００の登録部１５０ａは、被検索データ管理テーブル１４０ａに初期の被検索データを登録する（ステップＳ１０１）。
【００７０】
データ検索装置１００の圧縮部１５０ｂは、圧縮関数を生成する（ステップＳ１０２）。圧縮部１５０ｂは、圧縮関数を基にして、被検索データの特徴量をビットベクトルに圧縮し、被検索データ管理テーブル１４０ａに登録する（ステップＳ１０３）。
【００７１】
データ検索装置１００のクラスタリング部１５０ｃは、クラスタリングを実行する（ステップＳ１０４）。クラスタリング部１５０ｃは、各クラスタの中心と半径をクラスタ管理テーブル１４０ｃに登録する（ステップＳ１０５）。
【００７２】
クラスタリング部１５０ｃは、全ての被検索データに対し、被検索データの属するクラスタ中心と被検索データとの中心距離を求める（ステップＳ１０６）。クラスタリング部１５０ｃは、データ分布管理テーブル１４０ｄに、クラスタＩＤとデータＩＤと、中心距離とを格納する（ステップＳ１０７）。
【００７３】
図１０は、データ検索装置の処理手順を示すフローチャート（２）である。図１０に示すように、データ検索装置１００の検索部１５０ｇは、クエリデータｘを受け付け（ステップＳ２０１）、クエリデータｘの特徴量を圧縮する（ステップＳ２０２）。
【００７４】
データ検索装置１００は、ステップＳ２００ＡからＳ２００Ｂまでの処理を、ｉの値を１からＩまで変化させつつ繰り返し実行する。Ｉは所定の値である。データ検索装置１００の第１特定部１５０ｄは、クエリデータｘと各クラスタ中心ｃｉとの距離ｄｉを計算する（ステップＳ２０３）。
【００７５】
第１特定部１５０ｄは、距離ｄｉが最小となる第１クラスタＣｍｉｎを特定する（ステップＳ２０４）。データ検索装置１００の抽出部１５０ｆは、第１クラスタＣｍｉｎに属する全ての被検索データを抽出する（ステップＳ２０５）。
【００７６】
データ検索装置１００は、ステップＳ２００ＣからＳ２００Ｄまでの処理を、ｉの値を１からＩ（ｍｉｎを除く）まで変化させつつ繰り返し実行する。データ検索装置１００の第２特定部１５０ｅは、クラスタＣｉの近傍閾値θｉを算出する（ステップＳ２０６）。
【００７７】
第２特定部１５０ｅは、Ｒｉ＞θｉとなるか否かを判定する（ステップＳ２０７）。第２特定部１５０ｅは、Ｒｉ＞θｉとならない場合には（ステップＳ２０７，Ｎｏ）、ステップＳ２００Ｃに移行する。一方、第２特定部１５０ｅは、Ｒｉ＞θｉとなる場合には（ステップＳ２０７，Ｙｅｓ）、ステップＳ２０８に移行する。
【００７８】
抽出部１５０ｆは、被検索データｙｉとクラスタ中心ｃｉとの距離がθｉ以上となる被検索データを抽出する（ステップＳ２０８）。検索部１５０ｇは、クエリデータｘと、抽出した各被検索データとの距離を計算する（ステップＳ２０９）。検索部１５０ｇは、距離の小さい被検索データから順に出力する（ステップＳ２１０）。
【００７９】
次に、本実施例に係るデータ検索装置１００の効果について説明する。データ検索装置１００は、クエリデータに最も近い第１クラスタに加えて、近傍クラスタに属する被検索データに対して、類似検索処理を実行する。データ検索装置１００は、近傍クラスタの被検索データに対して類似検索処理を実行する場合に、クエリデータの近傍に存在する可能性が高い近傍クラスタの一部の被検索データに対してのみ、類似検索を実行する。従って、クエリの検索対象を適切に設定することができる。また、クエリデータの近傍に存在する可能性が低い近傍クラスタの被検索データに対する類似検索処理を実行しないため、計算コストを削減することもできる。
【００８０】
また、データ検索装置１００によれば、ある被検索データが近傍データであるか否かを判定した後に、同一の距離をもつ被検索データに対しては、既に行った判定結果を流用するため、判定回数を削減し、計算コストを更に削減することができる。
【００８１】
続いて、従来技術によりクエリデータと比較される被検索データの数と、本実施例にかかるデータ検索装置１００によりクエリデータと比較される被検索データの数との比較を行う。図１１は、本実施例に係るデータ検索装置の期待値の一例を示す図である。
【００８２】
例えば、クラスタを２次元の円と仮定すると、面積（πｒ２）内にそのクラスタの全ての被検索データが属している。近傍閾値は、クラスタの状態やクエリデータによって異なるが、平均としてクラスタ半径の半分（ｒ／２）であると考えることができる。従って、取り除くことのできる面積は１／４πｒ２となるため、クラスタ１つあたり、約四分の一の数の被検索データを削減することができる。削減できる量は、次元数によって異なるため、図１１において、３次元の場合と、ｄ次元の場合について示す。
【００８３】
２次元の場合には、従来技術では、取得する被検索データ数は「πｒ２」となり、削減量は「π（ｒ／２）２」となる。本特許により取得する被検索データ数は「πｒ２−π（ｒ／２）２」となる。従来技術による被検索データ数と、本特許の被検索データ数との比は「１：３／４」となる。
【００８４】
３次元の場合には、従来技術では、取得する被検索データ数は「４／３πｒ３」となり、削減量は「４／３π（ｒ／２）３」となる。本特許により取得する被検索データ数は「４／３πｒ３−４／３π（ｒ／２）３」となる。従来技術による被検索データ数と、本特許の被検索データ数との比は「１：７／８」となる。
【００８５】
ｄ次元の場合には、従来技術では、取得する被検索データ数は「ｍπｒｄ」となり、削減量は「ｍπ（ｒ／２）ｄ」となる。本特許により取得する被検索データ数は「ｍπｒｄ−ｍπ（ｒ／２）ｄ」となる。従来技術による被検索データ数と、本特許の被検索データ数との比は「１：（ｒ−１）ｄ／ｒｄ」となる。ｍを定数とする。
【００８６】
次に、上記実施例に示したデータ検索装置１００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図１２は、コンピュータのハードウェア構成の一例を示す図である。
【００８７】
図１２に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【００８８】
ハードディスク装置２０７は、前処理プログラム２０７ａ、第１特定プログラム２０７ｂ、第２特定プログラム２０７ｃ、抽出プログラム２０７ｄ、検索プログラム２０７ｅを有する。ＣＰＵ２０１は、前処理プログラム２０７ａ、第１特定プログラム２０７ｂ、第２特定プログラム２０７ｃ、抽出プログラム２０７ｄ、検索プログラム２０７ｅを読み出してＲＡＭ２０６に展開する。
【００８９】
前処理プログラム２０７ａは、前処理プロセス２０６ａとして機能する。第１特定プログラム２０７ｂは、第１特定プロセス２０６ｂとして機能する。第２特定プログラム２０７ｃは、第２特定プロセス２０６ｃとして機能する。抽出プログラム２０７ｄは、抽出プロセス２０６ｄとして機能する。検索プログラム２０７ｅは、検索プロセス２０６ｅとして機能する。
【００９０】
例えば、前処理プロセス２０６ａの処理は、登録部１５０ａ、圧縮部１５０ｂ、クラスタリング部１５０ｃの処理に対応する。第１特定プロセス２０６ｂの処理は、第１特定部１５０ｄの処理に対応する。第２特定プロセス２０６ｃの処理は、第２特定部１５０ｅの処理に対応する。抽出プロセス２０６ｄの処理は、抽出部１５０ｆの処理に対応する。検索プロセス２０６ｅの処理は、検索部１５０ｇの処理に対応する。
【００９１】
なお、前処理プログラム２０７ａ、第１特定プログラム２０７ｂ、第２特定プログラム２０７ｃ、抽出プログラム２０７ｄ、検索プログラム２０７ｅについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム２０７ａ〜２０７ｅを読み出して実行するようにしてもよい。
【００９２】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９３】
（付記１）コンピュータに、
ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第１のクラスタを特定し、
前記入力クエリの位置から前記第１のクラスタの中心までの距離を示す第１の距離を用いて、前記入力クエリとの距離が前記第１の距離以内となる対象データを含む前記第１のクラスタとは異なる他のクラスタを特定し、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第１の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出し、
前記第１のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
処理を実行させることを特徴とするデータ検索プログラム。
【００９４】
（付記２）特定された前記他のクラスタの中心と前記入力クエリとの距離から前記第１の距離を減算することで、前記第２の距離を算出する処理を更にコンピュータに実行させることを特徴とする付記１に記載のデータ検索プログラム。
【００９５】
（付記３）前記他のクラスタを特定する処理は、クラスタの半径が前記第２の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする付記２に記載のデータ検索プログラム。
【００９６】
（付記４）前記抽出する処理は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第２の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第２の距離との比較を行うことなく、ソート順に基づいて、前記第２の距離よりも大きい対象データを抽出することを特徴とする付記３に記載のデータ検索プログラム。
【００９７】
（付記５）コンピュータが実行するデータ検索方法であって、
ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第１のクラスタを特定し、
前記入力クエリの位置から前記第１のクラスタの中心までの距離を示す第１の距離を用いて、前記入力クエリとの距離が前記第１の距離以内となる対象データを含む前記第１のクラスタとは異なる他のクラスタを特定し、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第１の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出し、
前記第１のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
処理を実行することを特徴とするデータ検索方法。
【００９８】
（付記６）特定された前記他のクラスタの中心と前記入力クエリとの距離から前記第１の距離を減算することで、前記第２の距離を算出する処理を更にコンピュータに実行させることを特徴とする付記５に記載のデータ検索方法。
【００９９】
（付記７）前記他のクラスタを特定する処理は、クラスタの半径が前記第２の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする付記６に記載のデータ検索方法。
【０１００】
（付記８）前記抽出する処理は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第２の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第２の距離との比較を行うことなく、ソート順に基づいて、前記第２の距離よりも大きい対象データを抽出することを特徴とする付記７に記載のデータ検索方法。
【０１０１】
（付記９）ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第１のクラスタを特定する第１特定部と、
前記入力クエリの位置から前記第１のクラスタの中心までの距離を示す第１の距離を用いて、前記入力クエリとの距離が前記第１の距離以内となる対象データを含む前記第１のクラスタとは異なる他のクラスタを特定する第２特定部と、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第１の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第２の距離よりも大きい対象データを抽出する抽出部と、
前記第１のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する検索部と
を有することを特徴とするデータ検索装置。
【０１０２】
（付記１０）前記第２特定部は、前記他のクラスタの中心と前記入力クエリとの距離から前記第１の距離を減算することで、前記第２の距離を算出することを特徴とする付記９に記載のデータ検索装置。
【０１０３】
（付記１１）前記第２特定部は、クラスタの半径が前記第２の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする付記１０に記載のデータ検索装置。
【０１０４】
（付記１２）前記抽出部は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第２の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第２の距離との比較を行うことなく、ソート順に基づいて、前記第２の距離よりも大きい対象データを抽出することを特徴とする付記１１に記載のデータ検索装置。
【符号の説明】
【０１０５】
１００  データ検索装置
１１０  通信部
１２０  入力部
１３０  表示部
１４０  記憶部
１５０  制御部
【図１】
2018018330.tif 000009
【図２】
2018018330.tif 000010
【図３】
2018018330.tif 000011
【図４】
2018018330.tif 000012
【図５】
2018018330.tif 000013
【図６】
2018018330.tif 000014
【図７】
2018018330.tif 000015
【図８】
2018018330.tif 000016
【図９】
2018018330.tif 000017
【図１０】
2018018330.tif 000018
【図１１】
2018018330.tif 000019
【図１２】
2018018330.tif 000020
【図１３】
2018018330.tif 000021
【図１４】
2018018330.tif 000022