(57)【要約】【課題】効率的な検索を可能にするセントロイド情報を生成する。【解決手段】本願に係る生成装置は、取得部と、生成部とを有する。取得部は、所定の対象に関するベクトルが距離に応じて対応付けられる第１セントロイドと、第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する。生成部は、取得部により取得された対応情報に基づいて、第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する。【選択図】図３
2019049909.tif 000002
【特許請求の範囲】
【請求項１】
所定の対象に関するベクトルが距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得部と、
前記取得部により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する生成部と、
を備えることを特徴とする生成装置。
【請求項２】
前記生成部は、
前記対象ベクトルの数が所定の閾値以上である場合、前記複数の第２セントロイドを生成する
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記生成部は、
前記対象ベクトルの数に応じた数の前記複数の第２セントロイドを生成する
ことを特徴とする請求項１または請求項２に記載の生成装置。
【請求項４】
前記生成部は、
前記対象ベクトルの数と所定の設定値とに基づく数の前記複数の第２セントロイドを生成する
ことを特徴とする請求項１〜３のいずれか１項に記載の生成装置。
【請求項５】
前記生成部は、
前記対象ベクトルの数を所定の設定値により除算した数の前記複数の第２セントロイドを生成する
ことを特徴とする請求項１〜４のいずれか１項に記載の生成装置。
【請求項６】
前記取得部は、
所定のクラスタリング手法によりベクトルが対応付けられた前記第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる前記第１セントロイドの前記対応情報を取得する
ことを特徴とする請求項１〜５のいずれか１項に記載の生成装置。
【請求項７】
前記取得部は、
対応付けられるベクトルの数の差が所定値以内になるように所定のクラスタリング手法によりベクトルが対応付けられた前記第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる前記第１セントロイドの前記対応情報を取得する
ことを特徴とする請求項１〜６のいずれか１項に記載の生成装置。
【請求項８】
前記生成部は、
前記複数の第２セントロイドを生成した場合、前記複数の第２セントロイドを前記第１セントロイドに対応付け、前記第１ベクトル群に含まれる各ベクトルと前記第１セントロイドとの対応付けを解除する
ことを特徴とする請求項１〜７のいずれか１項に記載の生成装置。
【請求項９】
前記生成部は、
前記複数の第２セントロイドの各々に対応付けられるベクトルが所定の条件を満たす場合、前記複数の第２セントロイドの各々に対応付けられたベクトルを、前記第１セントロイドに対応付け、前記第１セントロイドと前記複数の第２セントロイドとの対応付けを解除する
ことを特徴とする請求項１〜８のいずれか１項に記載の生成装置。
【請求項１０】
前記生成部は、
前記複数の第２セントロイドの各々に対応付けられるベクトルの数が所定の閾値以下である場合、前記複数の第２セントロイドの各々に対応付けられたベクトルを、前記第１セントロイドに対応付け、前記第１セントロイドと前記複数の第２セントロイドとの対応付けを解除する
ことを特徴とする請求項１〜９のいずれか１項に記載の生成装置。
【請求項１１】
前記生成部は、
前記複数の第２セントロイドを削除する
ことを特徴とする請求項８〜１０のいずれか１項に記載の生成装置。
【請求項１２】
前記生成部は、
前記複数の第２セントロイドのうち、一の第２セントロイドに対応付けられた第２ベクトル群に関する情報が所定の条件を満たす場合、前記第２ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第３セントロイドを生成する
ことを特徴とする請求項１〜１１のいずれか１項に記載の生成装置。
【請求項１３】
コンピュータが実行する生成方法であって、
所定の対象に関するベクトルが距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得工程と、
前記取得工程により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する生成工程と、
を含むことを特徴とする生成方法。
【請求項１４】
所定の対象に関するベクトルが距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得手順と、
前記取得手順により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成方法、及び生成プログラムに関する。
【背景技術】
【０００２】
従来、ベクトル量子化によるベクトルデータの検索に関する技術が提供されている。例えば、ベクトルをコードブックにより量子化する技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２５７９７０号公報
【非特許文献】
【０００４】
【非特許文献１】Equal  frequency  binning、IBM、[online]、[平成29年9月4日検索]、インターネット<URL：http://www.ibm.com/support/knowledgecenter/SSWLVY_1.0.0/com.ibm.spss.analyticcatalyst.help/analytic_catalyst/equal_frequency_binning.html>
【非特許文献２】岩崎雅二郎  "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索",  情報処理学会論文誌,  2011/2,  Vol.  52,  No.  2.  pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、効率的な検索を可能にするセントロイド情報を生成することが難しい場合がある。例えば、ベクトルをコードブックにより量子化するだけでは、ベクトルの個数が増大した場合等にベクトルの検索に要する処理時間も増大し、検索の処理時間を抑制することが難しい。また、例えば、一のセントロイドに多数のベクトルが対応付けられている場合、どのベクトルを検索結果とすべきかを決定する処理に時間を要する場合がある。このような場合、クエリに対する検索を効率的に行うことが難しい場合がある。
【０００６】
本願は、上記に鑑みてなされたものであって、効率的な検索を可能にするセントロイド情報を生成する生成装置、生成方法、及び生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る生成装置は、所定の対象に関するベクトルが距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得部と、前記取得部により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、効率的な検索を可能にするセントロイド情報を生成することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る生成処理の一例を示す図である。
【図２】図２は、実施形態に係る生成システムの構成例を示す図である。
【図３】図３は、実施形態に係る生成装置の構成例を示す図である。
【図４】図４は、実施形態に係る第１インデックス情報記憶部の一例を示す図である。
【図５】図５は、実施形態に係るセントロイド情報記憶部の一例を示す図である。
【図６】図６は、実施形態に係る第２インデックス情報記憶部の一例を示す図である。
【図７】図７は、実施形態に係る生成処理の一例を示すフローチャートである。
【図８】図８は、実施形態に係るクエリに対応する情報の提供の一例を示す図である。
【図９】図９は、実施形態に係る第１インデックス情報の概念図を示す図である。
【図１０】図１０は、実施形態に係る第２インデックス情報の生成処理の一例を示す図である。
【図１１】図１１は、実施形態に係る第２インデックス情報の利用の一例を示す図である。
【図１２】図１２は、実施形態に係るベクトルの分割の一例を示す図である。
【図１３】図１３は、生成装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る生成装置、生成方法、及び生成プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法、及び生成プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
（実施形態）
〔１．生成処理〕
図１を用いて、実施形態に係る生成処理の一例について説明する。図１は、実施形態に係る生成処理の一例を示す図である。図１では、生成装置１００（図３参照）が第１セントロイドに対応付けられたベクトルの数に応じて、複数の第２セントロイドを生成する場合を示す。すなわち、図１では、生成装置１００が第１セントロイドに対応付けられたベクトル群を分割して対応付けるための複数の第２セントロイドを生成する場合を示す。なお、対象とする情報は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。
【００１２】
なお、セントロイドについての詳細は後述するが、第１セントロイドや第２セントロイドは、相対的な概念であって、第１セントロイドは対応付けられたベクトル群が分割される対象となるセントロイドを示し、第２セントロイドは第１セントロイドに対応付けられたベクトル群を分割して対応付けられるセントロイドを示す。すなわち、一のセントロイドに対しては第２セントロイドであるセントロイドが、他のセントロイドに対しては第１セントロイドとなる場合がある。また、以下では、第１セントロイドから生成された第２セントロイドに対応付けられたベクトル群をさらに分割する場合、分割したベクトル（対象ベクトル）が対応付けられるセントロイドを第３セントロイドと称する場合がある。なお、この場合、第２セントロイドを第１セントロイドとして、捉えた場合、第３セントロイドは、第２セントロイドとなる。なお、以下では、第１〜第３セントロイドを単に「セントロイド」と記載する場合がある。
【００１３】
図１の例では、数百万〜数億単位の画像情報に対応するベクトル情報を対象にするが、図面においてはその一部のみを図示する。また、以下では、例えば、画像情報に対応するベクトルデータ自体を示す場合、「ベクトルデータ」と記載し、画像情報に対応する各ベクトルデータを識別する情報を示す場合、「ベクトル識別情報」や「ベクトルＩＤ」と記載する。すなわち、ここでいう、ベクトルデータは、Ｎ次元の高次元ベクトルを意味し、ベクトル識別情報は、ベクトルＩＤ等の各ベクトルを識別する情報を意味する。例えば、図１に示す例において、ベクトル識別情報Ｖ１１２と記載した場合、ベクトルＩＤ「Ｖ１１２」を意味する。また、例えば、ベクトルＶ１１２と記載した場合、ベクトルＩＤ「Ｖ１１２」により識別されるベクトルを意味する。また、ベクトルデータであるかベクトル識別情報であるかを特に区別せずに説明する場合は「ベクトル」や「ベクトル情報」と記載する。
【００１４】
また、以下では、「ベクトルＶ＊（＊は任意の数値）」と記載した場合、そのベクトルはベクトルＩＤ「Ｖ＊」により識別されるベクトルであることを示す。例えば、「ベクトルＶ１」と記載した場合、そのベクトルはベクトルＩＤ「Ｖ１」により識別されるベクトルである。また、「セントロイドＣ＊（＊は任意の数値）」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ＊」により識別されるセントロイドであることを示す。例えば、「セントロイドＣ４」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ４」により識別されるセントロイド（ベクトル）である。
【００１５】
まず、生成装置１００は、セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する（ステップＳ１１）。図１の例では、生成装置１００が画像情報に各々対応するベクトル情報を用いて、対応付けを示す対応情報を生成する場合を示す。例えば、生成装置１００は、情報提供装置５０等の外部の情報処理装置から画像情報に各々対応するベクトル情報を取得する。図１の例では、生成装置１００は、空間情報ＧＲ１１等に示すようにベクトル識別情報Ｖ３〜Ｖ１１００等により各々識別される複数のベクトル情報を取得する。例えば、生成装置１００は、ベクトル識別情報Ｖ３〜Ｖ１１００等を含む多数のベクトル情報を取得する。
【００１６】
図１に示す例においては、取得した各ベクトル情報を「○」にベクトル識別情報を付すことにより表現する。例えば、ベクトルＩＤ「Ｖ５５」により識別されるベクトルは、空間情報ＧＲ１１中の右下の「○」点として表現する。例えば、図１に示す例において、各ベクトルデータは、Ｎ次元の実数値ベクトルである。また、図１や図９等に示す空間情報ＧＲ１１−１〜ＧＲ１１−４は、空間情報の一部を模式的に示す図であり、空間情報ＧＲ１１−１〜ＧＲ１１−４は、生成処理により生成される情報に対応する空間情報である。また、以下では、空間情報ＧＲ１１−１〜ＧＲ１１−４について、特に区別なく説明する場合には、空間情報ＧＲ１１と記載する。
【００１７】
なお、図１中の空間情報ＧＲ１１は、ユークリッド空間であってもよい。また、図１に示す空間情報ＧＲ１１は、各ベクトル間の距離等の説明のための概念的な図である。多次元空間となる。なお、例えば、図１に示す空間情報ＧＲ１１は、平面上に図示するため２次元の態様にて図示されるが、例えば１００次元や１０００次元等の多次元空間であるものとする。
【００１８】
本実施形態においては、空間情報ＧＲ１１における各ベクトルの距離を対応する各画像間の類似度とする。ここで、図１に示す例においては、空間情報ＧＲ１１における各ベクトル間の距離が小さい画像同士の類似度が高く、空間情報ＧＲ１１における各ベクトル間の距離が大きい画像同士の類似度が低い。例えば、図１中の空間情報ＧＲ１１において、ベクトルＩＤ「Ｖ９」により識別されるベクトル情報と、ベクトルＩＤ「Ｖ３４」により識別されるベクトル情報とは近接している、すなわち距離が小さい。そのため、ベクトルＩＤ「Ｖ９」により識別されるベクトル情報に対応する画像と、ベクトルＩＤ「Ｖ３４」により識別されるベクトル情報に対応する画像とは類似度が高いことを示す。また、例えば、図１中の空間情報ＧＲ１１において、ベクトルＩＤ「Ｖ９」により識別されるベクトル情報と、ベクトルＩＤ「Ｖ５５」により識別されるベクトル情報とは遠隔にある、すなわち距離が大きい。そのため、ベクトルＩＤ「Ｖ９」により識別されるベクトル情報に対応する画像と、ベクトルＩＤ「Ｖ５５」により識別されるベクトル情報に対応する画像とは類似度が低いことを示す。なお、類似度を示す指標は、本願の生成処理に適用可能であれば、どのような指標であってもよく、距離や向き等を対象とする指標であってもよい。例えば、類似度を示す指標は、本願の生成処理に適用可能であれば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の指標が用いられてもよい。
【００１９】
図１の例では、生成装置１００は、所定のクラスタリング手法により、複数のベクトルをクラスタリングする。例えば、生成装置１００は、所定のクラスタリング手法により、セントロイドに対応付けられるベクトルの数の差が均一になるように複数のベクトルをクラスタリングする。例えば、生成装置１００は、所定のクラスタリング手法により、セントロイドに対応付けられるベクトルの数の差が所定値以内になるように複数のベクトルをクラスタリングする。ｋ−ｍｅａｎｓ法等の種々の従来技術を適宜用いて、複数のベクトルをクラスタリングしてもよい。例えば、生成装置１００は、所定のクラスタ数を設定し、各クラスタの分類されるベクトルの数を制限した制約付きクラスタリングにより、セントロイドに対応付けられるベクトルの数の差が所定値以内になるように複数のベクトルをクラスタリングしてもよい。
【００２０】
このように、生成装置１００は、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるような複数のセントロイド情報を生成する。例えば、生成装置１００は、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成する。以下では、この点を説明するために、クラスタ数は１００個、すなわち生成されるセントロイドはセントロイドＣ１〜Ｃ１１等を含む１００個のセントロイドであり、セントロイドＣ１〜Ｃ１１等の各々に対応する領域ＡＲ１〜ＡＲ１１等に含まれるベクトルの数は２５（個）であるものとする。なお、図１の空間情報ＧＲ１１においては、セントロイドやベクトルの一部のみを図示するものとする。また、セントロイドの個数は、ベクトルの数に基づいて選択（決定）されてもよいし、所定の設定値に基づいて選択（決定）されてもよい。
【００２１】
また、上記の生成方法は一例であり、生成装置１００は、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるように複数のセントロイド情報を生成可能であれば、どのような情報や技術を用いてセントロイド情報を生成してもよい。例えば、生成装置１００は、種々の従来技術等を適宜用いたり組み合わせたりして、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。
【００２２】
例えば、生成装置１００は、ランダムサンプリングを行うことによりベクトル識別情報の数の差が所定値以内になるような複数のセントロイド情報を生成してもよい。例えば、生成装置１００は、ランダムサンプリングを行ってセントロイドを選択し、選択されたセントロイドに基づいて各ベクトルを対応付けることにより、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるような複数のセントロイド情報を生成してもよい。なお、生成装置１００は、第２セントロイドの生成を行う前のクラスタリングの処理については、各セントロイドに対応付けられるベクトルの数の差が均一になれば、どのような手法により複数のセントロイド情報を生成してもよい。例えば、生成装置１００は、ＬＳＨ(Locality  Sensitive  Hashing)等のハッシュに関する従来技術を用いて、各セントロイドに対応付けられるベクトルの数の差が均一になるように複数のセントロイド情報を生成してもよい。この場合、例えば、生成装置１００は、ＬＳＨ等により算出される各ベクトルのハッシュ値に基づいて、各ベクトルをクラスタ（グループ）に分割し、ハッシュ値に基づいてベクトルが分割されたクラスタごとにセントロイド情報を生成してもよい。また、例えば、生成装置１００は、非特許文献１に開示されるようなEqual  frequency  binningの技術等の種々の従来技術を適宜用いて、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。
【００２３】
図１の例では、生成装置１００は、図１中の空間情報ＧＲ１１に示すように、ベクトル識別情報Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、Ｃ７、Ｃ８、Ｃ９、Ｃ１０、Ｃ１１をセントロイドとするセントロイド情報を生成する。図１中では、各セントロイドに対応する領域ＡＲ１〜ＡＲ１１等の各々に５個のベクトルを図示するが、領域ＡＲ１〜ＡＲ１１等の各々には９９個のベクトルが位置するものとする。このように、生成装置１００は、セントロイドとなるベクトル識別情報Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、Ｃ７、Ｃ８、Ｃ９、Ｃ１０、Ｃ１１の各々に対応付けられるベクトルが均等になるように複数のセントロイド情報を生成してもよい。
【００２４】
なお、図１中の空間情報ＧＲ１１に示す境界ＬＮは、どのベクトルがどのセントロイドに対応付けられるかを示すための仮想的な線である。例えば、領域ＡＲ２を囲む境界ＬＮ内に位置するベクトル（ベクトルＶ３３、Ｖ６６等）は、セントロイドＣ２に対応付けられることを示す。図１中の例では、生成装置１００は、境界ＬＮにより空間情報ＧＲ１１を領域ＡＲ１〜ＡＲ１１等のように分割する。例えば、図１中の空間情報ＧＲ１１における領域ＡＲ１には、ベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７等の各々により識別されるベクトル等が含まれる。図１の例では、ベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７等の各々により識別されるベクトルは、セントロイドＣ１に対応付けられることを示す。すなわち、生成装置１００は、セントロイドＣ１にベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７等を対応付ける。例えば、セントロイドＣ１に対応する画像がある場合、ベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７等の各々により識別されるベクトルに対応する画像は、各セントロイドのうち、セントロイドＣ１により識別されるセントロイドに対応する画像に類似していることを示す。
【００２５】
図１の例では、生成装置１００は、セントロイド情報記憶部１２２−１に示すような複数のセントロイド情報を生成する。例えば、生成装置１００は、空間情報ＧＲ１１中の領域ＡＲ１に対応するセントロイドＣ１とそのベクトル情報を含むセントロイド情報をセントロイド情報記憶部１２２−１に格納する。具体的には、生成装置１００は、セントロイドＩＤ「Ｃ１」と、空間情報ＧＲ１１中の領域ＡＲ１のセントロイドの位置に対応するベクトル情報とを組み合わせたセントロイド情報を生成し、セントロイド情報記憶部１２２−１に格納する。なお、領域に対応するセントロイドの位置は、領域の中心であってもよい。例えば、領域に対応するセントロイドの位置は、領域の重心や質量中心であってもよい。図１の例では、生成装置１００は、セントロイドＣ１のベクトルデータ「１０，２４，５４，２・・・」をセントロイド情報記憶部１２２−１に格納する。
【００２６】
例えば、生成装置１００は、空間情報ＧＲ１１中の領域ＡＲ２に対応するセントロイドを識別するセントロイドＩＤやセントロイドに対応するベクトル情報を含むセントロイド情報としてセントロイド情報記憶部１２２−１に格納する。具体的には、生成装置１００は、セントロイドＩＤ「Ｃ２」と、セントロイドＣ２に対応するベクトルデータであって、「２２，４８，５，６３・・・」となるＮ次元のベクトル情報とを組み合わせたセントロイド情報を生成し、セントロイド情報記憶部１２２−１に格納する。
【００２７】
このように、図１では、セントロイド情報の更新に応じて、セントロイド情報記憶部１２２をセントロイド情報記憶部１２２−１、１２２−２として説明する。すなわち、図１では、セントロイド情報記憶部１２２−１から、セントロイド情報記憶部１２２−２に更新されることを示す。また、セントロイド情報記憶部１２２−１、１２２−２は同一のセントロイド情報記憶部１２２である。また、以下では、セントロイド情報記憶部１２２−１、１２２−２について、特に区別することなく説明する場合には、セントロイド情報記憶部１２２と記載する。
【００２８】
そして、生成装置１００は、各セントロイドに対応付けられたベクトルに基づいて第２インデックス情報を生成する。例えば、生成装置１００は、各セントロイドに対応する領域ＡＲ１〜ＡＲ１１等の各々に含まれるベクトルを識別する情報をセントロイドＩＤに対応付けた第２インデックス情報を生成する。
【００２９】
例えば、生成装置１００は、セントロイドＣ１に対応付けてベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７等を第２インデックス情報記憶部１２３−１に格納する。例えば、生成装置１００は、セントロイドＣ２に対応付けてベクトル識別情報ベクトルＶ３３、Ｖ６６、Ｖ８１、Ｖ１１２、Ｖ９７１等を第２インデックス情報記憶部１２３−１に格納する。
【００３０】
以下では、第２インデックスの更新に応じて、第２インデックス情報記憶部１２３を第２インデックス情報記憶部１２３−１、１２３−２として説明する。すなわち、図１では、第２インデックス情報記憶部１２３−１から、第２インデックス情報記憶部１２３−２に更新されることを示す。また、第２インデックス情報記憶部１２３−１、１２３−２は同一の第２インデックス情報記憶部１２３である。また、以下では、第２インデックス情報記憶部１２３−１、１２３−２について、特に区別することなく説明する場合には、第２インデックス情報記憶部１２３と記載する。
【００３１】
このように、生成装置１００は、セントロイドにベクトルを識別する情報が対応付けられた、いわゆる転置インデックス情報を生成することにより、セントロイドが特定された場合に類似するベクトルの検索を高速化することができる。なお、類似するベクトルの検索時には近傍の複数のセントロイドを特定しても良い。
【００３２】
また、生成装置１００は、図１の空間情報ＧＲ１１−１に示すようにクラスタリングされたベクトル情報を、外部の情報処理装置から取得してもよい。例えば、生成装置１００は、図１中のセントロイド情報記憶部１２２−１や第２インデックス情報記憶部１２３−１に示すような情報を、外部の情報処理装置から取得してもよい。
【００３３】
ここから、ベクトルが増加した場合について説明する。例えば、生成装置１００は、１つの第１セントロイドに対応付けられたベクトルの数が所定の閾値に達した場合、所定の数の第２セントロイドを新たに生成し、その第２セントロイドに第１セントロイドに対応付けられたベクトル群を分割して対応付ける。図１の例では、生成装置１００は、１つの第１セントロイドに対応付けられたベクトル（対象ベクトル）の数が１００に達した場合、４つの第２セントロイドを生成し、対象ベクトルが対応付けられるセントロイドを４つの第２セントロイドに分割する場合を示す。すなわち、図１の例では、生成装置１００は、１つの第１セントロイドに対応付けられたベクトル（対象ベクトル）の数が１００に達した場合、各セントロイドに対応付けられるベクトルの設定数「２５」になるように、１００個の対象ベクトルが４つの第２セントロイドに平均的に約２５個ずつ対応付けられるように分割する場合を示す。すなわち、生成装置１００は、対象ベクトル数「１００」を設定数「２５」で除算した数「４」に基づいて、４つの第２セントロイドを生成する。なお、４つに限らず、生成装置１００は、対象ベクトル数や設定数等に基づいて、適宜の数（２以上）の第２セントロイドを生成してもよい。
【００３４】
図１の例では、生成装置１００は、ベクトルの増加を示す情報を取得する（ステップＳ１２）。例えば、生成装置１００は、情報提供装置５０に追加された画像に対応するベクトル情報を取得する。図１の例では、情報提供装置５０に７５個の画像が新たに追加されたものとする。例えば、生成装置１００は、７５個の画像の各々に対応するベクトル識別情報Ｖ５００１〜Ｖ５０７５を取得する。
【００３５】
なお、図１の例では、説明を簡単にするために、追加されたベクトルＶ５００１〜Ｖ５０７５の全てが、領域ＡＲ２内に位置する、すなわちセントロイドＣ２に近接して位置するベクトルであるものとする。そのため、図１の例では、生成装置１００は、追加されたベクトルＶ５００１〜Ｖ５０７５の全てをセントロイドＣ２に対応付ける。
【００３６】
これにより、セントロイドＣ２には、ベクトル識別情報Ｖ３３、Ｖ６６、Ｖ８１、Ｖ１１２、Ｖ９７１、Ｖ５００１〜Ｖ５０７５等の１００個のベクトルが対応付けられる。したがって、図１の例では、空間情報ＧＲ１１−２に示すように、領域ＡＲ２内にベクトル識別情報Ｖ３３、Ｖ６６、Ｖ８１、Ｖ１１２、Ｖ９７１、Ｖ５００１〜Ｖ５０７５等の１００個のベクトルが位置することとなる。なお、図１中の空間情報ＧＲ１１−２には、１００個のベクトルのうち、一部のみを図示する。
【００３７】
図１の例では、セントロイドＣ２に１００個のベクトルが対応付けられたため、生成装置１００は、閾値に達したと判定し、セントロイドを生成する（ステップＳ１３）。例えば、生成装置１００は、第１セントロイドであるセントロイドＣ２に対応する４つの第２セントロイドを生成する。例えば、生成装置１００は、セントロイドＣ２に対応付けられた１００個のベクトルを４分割するように、クラスタリングを行うことにより、４つの第２セントロイドであるセントロイドＣ２−１〜Ｃ２−４を生成する。例えば、生成装置１００は、領域ＡＲ２を４つの領域に分割するようにクラスタリングを行うことにより、４つの第２セントロイドであるセントロイドＣ２−１〜Ｃ２−４を生成する。
【００３８】
図１の例では、生成装置１００は、所定のクラスタリング手法により、領域ＡＲ２内の１００個のベクトルをクラスタリングする。例えば、生成装置１００は、所定のクラスタリング手法により、４つの第２セントロイドに対応付けられるベクトルの数の差が均一になるように複数のベクトルをクラスタリングする。例えば、生成装置１００は、４つの第２セントロイドに対応付けられるベクトルの数の差が均一になるように複数のベクトルをクラスタリングする。なお、セントロイドＣ２−１〜Ｃ２−４に対応付けられるベクトルの数は、完全に均一（２５個）である場合に限らず、２５個から所定の範囲内（２０〜３０個）等であってもよい。
【００３９】
このように、生成装置１００は、各セントロイドに対応付けられるベクトルの数の差ができるだけ小さくなるようなセントロイドＣ２−１〜Ｃ２−４を生成する。例えば、図１の空間情報ＧＲ１１−３中の領域ＡＲ２−１には、ベクトル識別情報Ｖ６６、Ｖ５００１等が含まれる。すなわち、生成装置１００は、セントロイドＣ２−１にベクトルＶ６６、Ｖ５００１等を対応付ける。
【００４０】
そして、生成装置１００は、第２セントロイドの生成に応じて、情報を更新する（ステップＳ１４）。図１の例では、生成装置１００は、第２セントロイドの生成に応じて、情報を更新する。例えば、生成装置１００は、複数の第２セントロイドを生成した場合、複数の第２セントロイドを第１セントロイドに対応付け、第１ベクトル群に含まれる各ベクトルと第１セントロイドとの対応付けを解除するように記憶部１２０（図３参照）の情報を更新する。
【００４１】
図１の例では、生成装置１００は、生成した複数の第２セントロイドに対応する情報により、セントロイド情報記憶部１２２を更新する。例えば、生成装置１００は、空間情報ＧＲ１１中の領域ＡＲ２−１に対応するセントロイドＣ２−１とそのベクトル情報を含むセントロイド情報をセントロイド情報記憶部１２２−２に格納する。具体的には、生成装置１００は、セントロイドＩＤ「Ｃ２−１」と、空間情報ＧＲ１１中の領域ＡＲ２−１のセントロイドの位置に対応するベクトル情報とを組み合わせたセントロイド情報を生成し、セントロイド情報記憶部１２２−２に格納する。図１の例では、生成装置１００は、セントロイドＣ２−１のベクトルデータ「２１，４０，１１，５２・・・」をセントロイド情報記憶部１２２−２に格納する。
【００４２】
例えば、生成装置１００は、空間情報ＧＲ１１中の領域ＡＲ２−２に対応するセントロイドを識別するセントロイドＩＤやセントロイドに対応するベクトル情報を含むセントロイド情報としてセントロイド情報記憶部１２２−２に格納する。具体的には、生成装置１００は、セントロイドＩＤ「Ｃ２−２」と、セントロイドＣ２−２に対応するベクトルデータであって、「１９，５１，９，６５・・・」となるＮ次元のベクトル情報とを組み合わせたセントロイド情報を生成し、セントロイド情報記憶部１２２−２に格納する。また、残りの２つの第２セントロイドであるセントロイドＣ２−３、Ｃ２−４についても同様に、セントロイド情報をセントロイド情報記憶部１２２−２に格納する。なお、生成装置１００は、セントロイド情報記憶部１２２−２に記憶されたセントロイドＣ２の情報を削除してもよいし、所定のフラグを用いてベクトルとの直接の対応付けが解除されたことを判別可能にしてもよい。
【００４３】
また、図１の例では、生成装置１００は、生成した複数の第２セントロイドに対応する情報により、第２インデックス情報記憶部１２３を更新する。例えば、生成装置１００は、各セントロイドＣ２−１〜Ｃ２−４に対応付けられたベクトルに基づいて、第２インデックス情報記憶部１２３を更新する。例えば、生成装置１００は、各セントロイドＣ２−１〜Ｃ２−４に対応する領域ＡＲ２−１〜ＡＲ２−４の各々に含まれるベクトルを識別する情報をセントロイドＣ２−１〜Ｃ２−４に対応付けた第２インデックス情報を生成する。
【００４４】
例えば、生成装置１００は、セントロイドＣ２−１に対応付けて２５個のベクトルのベクトル識別情報を第２インデックス情報記憶部１２３−２に格納する。例えば、生成装置１００は、セントロイドＣ２−１に対応付けてベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を第２インデックス情報記憶部１２３−２に格納する。例えば、生成装置１００は、セントロイドＣ２−２に対応付けて２５個のベクトルのベクトル識別情報を第２インデックス情報記憶部１２３−２に格納する。例えば、生成装置１００は、セントロイドＣ２−２に対応付けてベクトル識別情報ベクトルＶ９７１、Ｖ５００３等を第２インデックス情報記憶部１２３−２に格納する。
【００４５】
また、生成装置１００は、第２インデックス情報記憶部１２３−２に示すように、セントロイドＣ２に対応する第２インデックス情報を削除することにより、セントロイドＣ２とベクトルとの対応付けを解除する。なお、生成装置１００は、第２インデックス情報記憶部１２３中のセントロイドＣ２に対応する情報に、所定のフラグを立てることにより、セントロイドＣ２とベクトルとの直接の対応付けが解除されたことを判別可能にしてもよい。また、ベクトルとの直接の対応付けが解除されたセントロイドＣ２は、検索時の第１インデックス情報として利用されるが、詳細は図９において詳述する。
【００４６】
上述したように、生成装置１００は、１つの第１セントロイド（セントロイドＣ２）に対応付けられるベクトルの数が多くなった場合、その対応付けを分割するように、複数の第２セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。例えば、セントロイドに対応付けられたベクトル数が多い場合には近傍ではないベクトルが結果となる場合等がある。したがって、生成装置１００は、各セントロイドに対応付けられるベクトルの数ができる限り均等となるように、画像の登録の変動に応じてセントロイドを調整することにより、セントロイド情報を用いた検索時における性能を向上させることができる。特に、生成装置１００は、k最近傍検索の場合、検索結果数が一定であるため、セントロイドに対応付けられたベクトル数を均等にすることにより、より効率的な検索を可能にするという効果を奏することができる。
【００４７】
より具体的には、生成装置１００は、上記のように１つの第１セントロイドに対応付けられるベクトルが所定の条件を満たす場合、その対応付けを分割するように、複数の第２セントロイドを生成することにより、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるように調整可能となる。このように、生成装置１００は、各セントロイドに対応付けられるベクトルの数が均等になるように、所定の条件を満たす第１セントロイドについて複数の第２セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。例えば、生成装置１００が生成したセントロイド情報により、クエリに対応するセントロイドを特定することができるため、そのセントロイドに対応付けられたベクトルを検索結果とすることにより、近傍検索における効率的な検索を可能にすることができる。また、生成装置１００は、上述した処理以外にも他の情報の生成処理を行ったり、生成した情報を用いてクエリに対する情報提供を行なったりするが、それらの点についての詳細は後述する。
【００４８】
また、上述したように、生成装置１００は、全ベクトルデータのうち、セントロイドとなるもののベクトルデータのみをセントロイド情報記憶部１２２等の記憶部１２０（図３参照）に格納し、他のベクトルデータについては記憶部１２０に格納しない。言い換えると、生成装置１００は、セントロイド以外のベクトルについてはベクトル識別情報のみを第２インデックス情報記憶部１２３に格納する。これにより、生成装置１００は、格納するベクトル情報のデータ量を抑制しつつ、効率的な検索を可能にするセントロイド情報を生成することができる。
【００４９】
〔１−１．再併合〕
なお、上述した例では、第２セントロイドを生成する場合を示したが、生成装置１００は、生成した第２セントロイドを削除してもよい。すなわち、生成装置１００は、第２セントロイドを生成することにより、分割した領域を再併合してもよい。例えば、生成装置１００は、画像が削除されること等により画像が検索対象から除外された場合、各セントロイドに対応付けられるベクトルの数が減少した場合、下記のような再併合の処理を行ってもよい。
【００５０】
生成装置１００は、複数の第２セントロイドの各々に対応付けられるベクトルの数が所定の閾値以下である場合、複数の第２セントロイドの各々に対応付けられたベクトルを、第１セントロイドに対応付け、第１セントロイドと複数の第２セントロイドとの対応付けを解除してもよい。
【００５１】
例えば、生成装置１００は、生成した第２セントロイドであるセントロイドＣ２−１〜Ｃ２−４の各々に対応付けられるベクトルの数が所定の閾値（例えば６個等）以下である場合、セントロイドＣ２−１〜Ｃ２−４の各々に対応付けられたベクトルを、セントロイドＣ２に対応付けてもよい。例えば、生成装置１００は、セントロイドＣ２−１〜Ｃ２−４の各々に対応付けられるベクトルを合算した数が所定の閾値（例えば２５個）以下である場合、セントロイドＣ２−１〜Ｃ２−４の各々に対応付けられたベクトルを、セントロイドＣ２に対応付けてもよい。
【００５２】
また、生成装置１００は、生成した複数の第２セントロイドを削除してもよい。例えば、生成装置１００は、上述のような領域の再併合を行った場合、生成した複数の第２セントロイドを削除してもよい。図１の例では、生成装置１００は、上記のセントロイドＣ２とベクトルとの直接の対応付けを行い再併合処理に応じて、セントロイドＣ２−１〜Ｃ２−４を第２インデックス情報記憶部１２３から削除してもよい。
【００５３】
例えば、画像が削除されること等により画像が検索対象から除外された場合、各セントロイドに対応付けられるベクトルの数が変動する。具体的には、画像が検索対象から除外された場合、各セントロイドに対応付けられるベクトルの数が減少する。この場合、あるセントロイドに対応付けられるベクトルが少ない場合、そのセントロイドが抽出された場合、対応する検索画像が所望の数に満たない場合がある。また、あるセントロイドに対応付けられるベクトルが無くなる、すなわち０個になった場合、そのセントロイドが抽出された場合、対応する検索画像がないこととなる。しかしながら、上記のように一度分割した領域（セントロイド）を再度併合することにより、各セントロイドに対応付けられるベクトル数をできる限り均等に保つことにより、検索の性能の低下を抑制することができる。
【００５４】
〔１−２．再帰処理〕
また、生成装置１００は、セントロイドＣ２−１〜Ｃ２−４をさらに分割するように複数の第２セントロイドを生成してもよい。すなわち、生成装置１００は、第２セントロイドであるセントロイドＣ２−１〜Ｃ２−４をさらに分割するように複数の第３セントロイドを生成してもよい。例えば、生成装置１００は、第２セントロイドであるセントロイドＣ２−１に対応付けられるベクトル数が７５個になった場合を一例として説明する。
【００５５】
この場合、例えば、生成装置１００は、図９中の第１インデックス情報記憶部１２１に示すように、セントロイドＣ２−２から３つの第２セントロイドであるセントロイドＣ２−２−１〜Ｃ２−２−３を生成してもよい。以下では、セントロイドＣ２−２がセントロイドＣ２に基づいて生成されたセントロイドであることを明示するために、セントロイドＣ２−２を第２セントロイドＣ２−２とする。また、セントロイドＣ２−２−１〜Ｃ２−２−３が第２セントロイドＣ２に基づいて生成されたセントロイドであることを明示するために、セントロイドＣ２−２−１〜Ｃ２−２−３を第３セントロイドＣ２−２−１〜Ｃ２−２−３とする。
【００５６】
例えば、生成装置１００は、第２セントロイドＣ２−２に対応付けられたベクトルの数が閾値「７５」に達した場合、３つの第３セントロイドＣ２−２−１〜Ｃ２−２−３を新たに生成する。また、生成装置１００は、その第３セントロイドＣ２−２−１〜Ｃ２−２−３に第２セントロイドＣ２−２に対応付けられた第２ベクトル群を分割して対応付ける。すなわち、生成装置１００は、１つの第２セントロイドＣ２−２に対応付けられたベクトル（対象ベクトル）の数が７５に達した場合、各第３セントロイドに対応付けられるベクトルの設定数「２５」になるように、７５個の対象ベクトルが３つの第３セントロイドに平均的に約２５個ずつ対応付けられるように分割する。
【００５７】
例えば、図９の示す例では、生成装置１００は、各第３セントロイドに対応付けられるベクトルの数の差ができるだけ小さくなるような第３セントロイドＣ２−２−１〜Ｃ２−２−３を生成する。例えば、図９の空間情報ＧＲ１１−４中の領域ＡＲ２−２−１には、ベクトル識別情報Ｖ９７１等が含まれる。すなわち、生成装置１００は、セントロイドＣ２−２−１にベクトルＶ９７１等の約２５個のベクトルを対応付ける。また、例えば、図９の空間情報ＧＲ１１−４中の領域ＡＲ２−２−２には、ベクトル識別情報Ｖ５００３等が含まれる。すなわち、生成装置１００は、セントロイドＣ２−２−２にベクトルＶ５００３等の約２５個のベクトルを対応付ける。また、生成装置１００は、セントロイドＣ２−２−３についても同様に、約２５個のベクトルを対応付ける。
【００５８】
このように、生成装置１００は、上述のような７５や１００等の種々の閾値を適宜用いて生成処理を行ってもよい。また、生成装置１００は、上述のように、分割数を３や４等の適宜の数として生成処理を行ってもよい。すなわち、生成装置１００は、２個以上の第２セントロイドや第３セントロイド等を生成してもよい。
【００５９】
なお、生成装置１００は、再帰的に複数のセントロイドを生成する回数を制限してもよい。例えば、生成装置１００は、再帰的に複数のセントロイドを生成する回数を２回に制限してもよい。この場合、生成装置１００は、図９中の第１インデックス情報記憶部１２１に示すように、第３階層までのセントロイド（「第３階層のセントロイド」とする）を生成してもよい。そして、この場合、生成装置１００は、第３階層までの領域の分割（セントロイドの生成）を行った後、第３階層のセントロイドに対応する領域のベクトルの数が所定の閾値に達した場合、第３階層のセントロイドに対応する領域について、図１０に示すような部分領域の生成を行ってもよい。
【００６０】
〔２．生成システムの構成〕
図２に示すように、生成システム１は、端末装置１０と、情報提供装置５０と、生成装置１００とが含まれる。端末装置１０と、情報提供装置５０と、生成装置１００とは所定のネットワークＮを介して、有線または無線により通信可能に接続される。図２は、実施形態に係る生成システムの構成例を示す図である。なお、図２に示した生成システム１には、複数台の端末装置１０や、複数台の情報提供装置５０や、複数台の生成装置１００が含まれてもよい。
【００６１】
端末装置１０は、ユーザによって利用される情報処理装置である。端末装置１０は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置１０をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置１０と読み替えることもできる。なお、上述した端末装置１０は、例えば、スマートフォンや、タブレット型端末や、ノート型ＰＣ（Personal  Computer）や、デスクトップＰＣや、携帯電話機や、ＰＤＡ（Personal  Digital  Assistant）等により実現される。図８に示す例においては、端末装置１０がノート型ＰＣである場合を示す。
【００６２】
情報提供装置５０は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置５０は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくベクトル識別情報が格納される。例えば、情報提供装置５０は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置５０は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置５０は、画像検索サービスの対象となる画像に対応するベクトル情報を生成装置１００に提供する。また、情報提供装置５０は、クエリを生成装置１００に送信することにより、生成装置１００からクエリに対応する画像を示すベクトル識別情報等を受信する。
【００６３】
生成装置１００は、第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する。例えば、生成装置１００は、第１セントロイドの対象ベクトルの数が所定の閾値以上である場合、複数の第２セントロイドを生成する。また、本実施形態において生成装置１００は、クエリを取得した場合、生成した情報に基づいて、クエリに対応するベクトル識別情報を提供する。なお、生成装置１００は、情報提供装置５０等の種々の外部装置から収集したベクトル情報に基づいてセントロイド情報を生成してもよい。また、生成装置１００は、情報提供装置５０と一体であってもよい。
【００６４】
〔３．生成装置の構成〕
次に、図３を用いて、実施形態に係る生成装置１００の構成について説明する。図３は、実施形態に係る生成装置１００の構成例を示す図である。図３に示すように、生成装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、生成装置１００は、生成装置１００の管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【００６５】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図２中のネットワークＮ）と有線または無線で接続され、端末装置１０との間で情報の送受信を行う。
【００６６】
（記憶部１２０）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部１２０は、図３に示すように、第１インデックス情報記憶部１２１と、セントロイド情報記憶部１２２と、第２インデックス情報記憶部１２３とを有する。なお、図示を省略するが、第１インデックス情報記憶部１２１には、上述した第１インデックスに関する各種情報が記憶される。
【００６７】
（第１インデックス情報記憶部１２１）
実施形態に係る第１インデックス情報記憶部１２１は、第１インデックスに関する各種情報を記憶する。図４は、実施形態に係る第１インデックス情報記憶部の一例を示す図である。具体的には、図４の例では、第１インデックス情報記憶部１２１は、セントロイド情報に基づいて、ツリー構造のインデックス情報を示す。図４の例では、第１インデックス情報記憶部１２１は、「第１階層」、「第２階層」、「第３階層」等といった項目が含まれる。なお、「第１階層」〜「第３階層」に限らず、インデックスの階層数に応じて、「第４階層」、「第５階層」、「第６階層」等が含まれてもよい。
【００６８】
「第１階層」は、第１インデックスの第１階層に属するセントロイドを識別（特定）する情報が格納される。「第１階層」に格納されるセントロイドは、第１インデックスの根（ルート）に直接結ばれる階層に対応するノードとなる。例えば、「第１階層」には、第２セントロイドの生成前におけるクラスタリングにより生成されたセントロイドを識別（特定）する情報が格納される。
【００６９】
「第２階層」は、第１インデックスの第２階層に属するセントロイドを識別（特定）する情報が格納される。「第２階層」に格納されるセントロイドは、第１階層のセントロイドに結ばれる直下の階層に対応するノードとなる。例えば、「第２階層」には、第１階層のセントロイドに対して生成されたセントロイドを識別（特定）する情報が格納される。例えば、「第２階層」には、第１階層のセントロイドを第１セントロイドとして生成処理を行った場合の第２セントロイドを識別（特定）する情報が格納される。
【００７０】
「第３階層」は、第１インデックスの第３階層に属するセントロイドを識別（特定）する情報が格納される。「第３階層」に格納されるセントロイドは、第２階層のセントロイドに結ばれる直下の階層に対応するノードとなる。例えば、「第３階層」には、第２階層のセントロイドに対して生成されたセントロイドを識別（特定）する情報が格納される。例えば、「第３階層」には、第２階層のセントロイドを第１セントロイドとして生成処理を行った場合の第２セントロイドを識別（特定）する情報が格納される。例えば、「第３階層」には、第１階層のセントロイドを第１セントロイドとし、第２階層のセントロイドを第２セントロイドとした場合の第３セントロイドを識別（特定）する情報が格納される。
【００７１】
例えば、図４に示す例においては、第１インデックス情報記憶部１２１には、図１中の空間情報ＧＲ１１−３に対応する情報が記憶される。例えば、第１インデックス情報記憶部１２１は、第１階層のセントロイドが、セントロイドＣ１〜Ｃ１１であることを示す。具体的には、第１インデックス情報記憶部１２１は、所定のクラスタリングにより生成されたセントロイドが、セントロイドＣ１〜Ｃ１１であることを示す。
【００７２】
また、例えば、第１インデックス情報記憶部１２１は、第２階層のセントロイドが、セントロイドＣ２−１〜Ｃ２−４であることを示す。具体的には、第１インデックス情報記憶部１２１は、セントロイドＣ２に対応する第２階層のセントロイドが、セントロイドＣ２−１〜Ｃ２−４であることを示す。
【００７３】
なお、第１インデックス情報記憶部１２１は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００７４】
（セントロイド情報記憶部１２２）
実施形態に係るセントロイド情報記憶部１２２は、セントロイドに関する各種情報を記憶する。例えば、セントロイド情報記憶部１２２は、セントロイドＩＤやベクトルデータを記憶する。図５は、実施形態に係るセントロイド情報記憶部の一例を示す図である。図５に示すセントロイド情報記憶部１２２は、「セントロイドＩＤ」、「ベクトルデータ」といった項目が含まれる。
【００７５】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「ベクトルデータ」は、セントロイドＩＤにより識別されるセントロイド（ベクトル）に対応するベクトルデータを示す。
【００７６】
例えば、図５に示す例においては、セントロイド情報記憶部１２２には、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（ベクトル）に対応するベクトルデータは、「１０，２４，５４，２・・・」のＮ次元ベクトルであることを示す。
【００７７】
また、例えば、図５に示す例においては、セントロイド情報記憶部１２２には、セントロイドＩＤ「Ｃ４」により識別されるセントロイド（ベクトル）に対応するベクトルデータは、「３２，１，１２０，３１・・・」のＮ次元ベクトルであることを示す。
【００７８】
なお、セントロイド情報記憶部１２２は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００７９】
（第２インデックス情報記憶部１２３）
実施形態に係る第２インデックス情報記憶部１２３は、セントロイド情報記憶部１２２に記憶された各セントロイドに対応付けられたベクトルを識別する各種情報を記憶する。図６は、実施形態に係る第２インデックス情報記憶部の一例を示す図である。図６の例では、第２インデックス情報記憶部１２３は、「セントロイドＩＤ」、「ベクトルＩＤ」といった項目が含まれる。
【００８０】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「ベクトルＩＤ」は、セントロイドＩＤにより識別されるセントロイド（ベクトル）に対応付けられたベクトルを示す。
【００８１】
例えば、図６に示す例においては、第２インデックス情報記憶部１２３には、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（ベクトル）に対応付けられたベクトルは、ベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７等により各々識別されるベクトルであることを示す。
【００８２】
また、例えば、図６に示す例においては、第２インデックス情報記憶部１２３には、セントロイドＩＤ「Ｃ４」により識別されるセントロイド（ベクトル）に対応付けられたベクトルは、ベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５等により各々識別されるベクトルであることを示す。
【００８３】
なお、第２インデックス情報記憶部１２３は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００８４】
（制御部１３０）
図３の説明に戻って、制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、生成装置１００内部の記憶装置に記憶されている各種プログラム（生成プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【００８５】
図３に示すように、制御部１３０は、取得部１３１と、生成部１３２と、抽出部１３３と、提供部１３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図３に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００８６】
（取得部１３１）
取得部１３１は、各種情報を取得する。例えば、取得部１３１は、第１インデックス情報記憶部１２１や、セントロイド情報記憶部１２２や、第２インデックス情報記憶部１２３等から各種情報を取得する。また、取得部１３１は、各種情報を外部の情報処理装置から取得する。
【００８７】
取得部１３１は、所定の対象に関するベクトルが距離に応じて対応付けられる第１セントロイドと、第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する。取得部１３１は、データ検索の対象となるベクトルが距離に応じて対応付けられる第１セントロイドと、第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する。また、取得部１３１は、所定のクラスタリング手法によりベクトルが対応付けられた第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる第１セントロイドの対応情報を取得する。また、取得部１３１は、対応付けられるベクトルの数の差が所定値以内になるように所定のクラスタリング手法によりベクトルが対応付けられた第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる第１セントロイドの対応情報を取得する。
【００８８】
例えば、取得部１３１は、検索対象の各々に対応する複数のベクトル識別情報を取得する。例えば、取得部１３１は、情報提供装置５０から各ベクトル識別情報に関する情報を取得してもよい。例えば、取得部１３１は、複数のベクトル識別情報を異なるタイミングで取得してもよい。例えば、取得部１３１は、画像情報が検索対象として追加されたタイミングで、その画像情報に対応するベクトル識別情報を取得してもよい。
【００８９】
例えば、取得部１３１は、検索クエリに関する情報を取得する。例えば、取得部１３１は、画像検索に関する検索クエリを取得する。図８の例では、取得部１３１は、ユーザＵ１が利用する端末装置１０からクエリを受け付けた情報提供装置５０からクエリを取得する。
【００９０】
図１の例では、取得部１３１は、画像情報に各々対応するベクトル情報を取得する。図１の例では、取得部１３１は、空間情報ＧＲ１１等に示すようにベクトル識別情報Ｖ３〜Ｖ１１００等により各々識別される複数のベクトル情報を取得する。例えば、取得部１３１は、ベクトル識別情報Ｖ３〜Ｖ１１００等を含む多数のベクトル情報を取得する。
【００９１】
図１の例では、取得部１３１は、セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する。例えば、取得部１３１は、情報提供装置５０等の外部の情報処理装置から画像情報に各々対応するベクトル情報を取得する。
【００９２】
図１の例では、取得部１３１は、ベクトルの増加を示す情報を取得する。例えば、取得部１３１は、情報提供装置５０に追加された画像に対応するベクトル情報を取得する。例えば、取得部１３１は、７５個の画像の各々に対応するベクトル識別情報Ｖ５００１〜Ｖ５０７５を情報提供装置５０から取得する。
【００９３】
（生成部１３２）
生成部１３２は、各種情報を生成する。例えば、生成部１３２は、記憶部１２０に記憶される各種情報を生成する。例えば、生成部１３２は、第１インデックス情報記憶部１２１や、セントロイド情報記憶部１２２や、第２インデックス情報記憶部１２３等に記憶される各種情報を生成する。
【００９４】
生成部１３２は、取得部１３１により取得された対応情報に基づいて、第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する。また、生成部１３２は、対象ベクトルの数が所定の閾値以上である場合、複数の第２セントロイドを生成する。また、生成部１３２は、対象ベクトルの数に応じた数の複数の第２セントロイドを生成する。
【００９５】
また、生成部１３２は、対象ベクトルの数と所定の設定値とに基づく数の複数の第２セントロイドを生成する。また、生成部１３２は、対象ベクトルの数を所定の設定値により除算した数の複数の第２セントロイドを生成する。また、生成部１３２は、複数の第２セントロイドを生成した場合、複数の第２セントロイドを第１セントロイドに対応付け、第１ベクトル群に含まれる各ベクトルと第１セントロイドとの対応付けを解除する。
【００９６】
また、生成部１３２は、複数の第２セントロイドの各々に対応付けられるベクトルの数が所定の閾値以下である場合、複数の第２セントロイドの各々に対応付けられたベクトルを、第１セントロイドに対応付け、第１セントロイドと複数の第２セントロイドとの対応付けを解除する。また、生成部１３２は、複数の第２セントロイドを削除する。
【００９７】
また、生成部１３２は、複数の第２セントロイドのうち、一の第２セントロイドに対応付けられた第２ベクトル群に関する情報が所定の条件を満たす場合、第２ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第３セントロイドを生成する。
【００９８】
例えば、生成部１３２は、複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成する。例えば、生成部１３２は、複数のベクトル情報から所定の条件に基づいてベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。例えば、生成部１３２は、複数のベクトル情報から、ランダムサンプリングにより選択されたベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。
【００９９】
例えば、生成部１３２は、所定の検索要求に対して、セントロイド情報の特定に用いる第１インデックス情報を生成する。例えば、生成部１３２は、高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成する。例えば、生成部１３２は、複数のセントロイド情報に関する木構造型のインデックス、または、グラフ構造型のインデックスを第１インデックス情報として生成する。
【０１００】
例えば、生成部１３２は、各セントロイド情報と、当該各セントロイド情報に対応付けられたベクトル情報とを示す第２インデックス情報を生成する。例えば、生成部１３２は、各セントロイド情報に対応付けられたベクトル情報を特定する転置インデックスを第２インデックス情報として生成する。
【０１０１】
例えば、生成部１３２は、各ベクトル情報を分割した各部分ベクトルを量子化するベクトル量子化に基づいて、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成する。例えば、生成部１３２は、各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。例えば、生成部１３２は、各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。例えば、生成部１３２は、各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。例えば、生成部１３２は、各部分領域の部分セントロイド情報と、当該各部分領域内に含まれるベクトル情報とを対応付けた対応付情報を生成する。例えば、生成部１３２は、各セントロイド情報と、当該各セントロイド情報の各部分領域内に対応する各部分セントロイド情報とにより生成される残差ベクトル情報に基づいて、対応付情報を生成する。
【０１０２】
また、生成部１３２は、ベクトルをセントロイドとして選択することにより、複数の第１セントロイド情報等のセントロイド情報を生成してもよい。例えば、生成部１３２は、所定の回数ランダムサンプリングを行い、最も均等にベクトルがクラスタリングされるベクトル（セントロイド）の組合せに基づいて、複数のセントロイド情報を生成してもよい。また、例えば、生成部１３２は、最も均等にベクトルがクラスタリングされるセントロイドの組合せのうち、平均値からの乖離が大きいセントロイドを近接する他のベクトルに変更することにより、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。
【０１０３】
例えば、生成部１３２は、所定の回数ランダムサンプリングを行い、各クラスタに含まれるベクトルの数の差が最も小さくベクトルがクラスタリングされるセントロイドの組合せに基づいて、複数のセントロイド情報を生成する。例えば、生成部１３２は、所定の回数ランダムサンプリングを行い、最も均等にベクトルがクラスタリングされるセントロイドの組合せに基づいて、複数のセントロイド情報を生成する。また、例えば、生成部１３２は、最も均等にベクトルがクラスタリングされるセントロイドの組合せのうち、平均値からの乖離が大きいセントロイドを近接する他のベクトルに変更することにより、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。また、例えば、生成部１３２は、各クラスタに含まれるベクトルの数の差が所定値（例えば、５や１０等）以下になった場合、ランダムサンプリングを終了し、そのセントロイドの組合せに基づいて、複数のセントロイド情報を生成してもよい。例えば、生成部１３２は、最多のベクトルが含まれるクラスタと最少のベクトルが含まれるクラスタとの差が所定値（例えば、１や５０等）以下になった場合、ランダムサンプリングを終了し、そのセントロイドの組合せに基づいて、複数のセントロイド情報を生成してもよい。また、例えば、生成部１３２は、各クラスタに含まれるベクトルの数の差が「０」、すなわち各クラスタに含まれるベクトルの数が同一になった場合、ランダムサンプリングを終了し、そのセントロイドの組合せに基づいて、複数のセントロイド情報を生成してもよい。
【０１０４】
例えば、生成部１３２は、各セントロイドに対応付けられたベクトルに基づいて第２インデックス情報を生成してもよい。例えば、生成部１３２は、各セントロイドに対応する領域ＡＲ１〜ＡＲ１１等の各々に含まれるベクトルを識別する情報をセントロイドＩＤに対応付けた第２インデックス情報を生成する。また、生成部１３２は、クエリを取得した際に対応するセントロイドを特定するために用いる第１インデックス情報を生成する。
【０１０５】
図１の例では、生成部１３２は、所定のクラスタリング手法により、複数のベクトルをクラスタリングする。例えば、生成部１３２は、所定のクラスタリング手法により、セントロイドに対応付けられるベクトルの数の差が均一になるように複数のベクトルをクラスタリングする。例えば、生成部１３２は、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるような複数のセントロイド情報を生成する。例えば、生成部１３２は、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成する。
【０１０６】
図１の例では、生成部１３２は、図１中の空間情報ＧＲ１１に示すように、ベクトル識別情報Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、Ｃ７、Ｃ８、Ｃ９、Ｃ１０、Ｃ１１をセントロイドとするセントロイド情報を生成する。生成部１３２は、セントロイド情報記憶部１２２−１に示すような複数のセントロイド情報を生成する。
【０１０７】
また、生成部１３２は、各セントロイドに対応付けられたベクトルに基づいて第２インデックス情報を生成する。例えば、生成部１３２は、各セントロイドに対応する領域ＡＲ１〜ＡＲ１１等の各々に含まれるベクトルを識別する情報をセントロイドＩＤに対応付けた第２インデックス情報を生成する。
【０１０８】
図１の例では、セントロイドＣ２に１００個のベクトルが対応付けられたため、生成部１３２は、閾値に達したと判定し、セントロイドを生成する。例えば、生成部１３２は、第１セントロイドであるセントロイドＣ２に対応する４つの第２セントロイドを生成する。例えば、生成部１３２は、セントロイドＣ２に対応付けられた１００個のベクトルを４分割するように、クラスタリングを行うことにより、４つの第２セントロイドであるセントロイドＣ２−１〜Ｃ２−４を生成する。例えば、生成部１３２は、領域ＡＲ２を４つの領域に分割するようにクラスタリングを行うことにより、４つの第２セントロイドであるセントロイドＣ２−１〜Ｃ２−４を生成する。
【０１０９】
また、図１の例では、生成部１３２は、各セントロイドＣ２−１〜Ｃ２−４に対応する領域ＡＲ２−１〜ＡＲ２−４の各々に含まれるベクトルを識別する情報をセントロイドＣ２−１〜Ｃ２−４に対応付けた第２インデックス情報を生成する。
【０１１０】
（抽出部１３３）
抽出部１３３は、各種情報を選択する。例えば、抽出部１３３は、ベクトル識別情報を選択する。例えば、抽出部１３３は、取得部１３１により取得されたクエリに基づいてセントロイド情報を選択する。
【０１１１】
図８の例では、抽出部１３３は、クエリ情報ＱＥ１１を用いてセントロイドを抽出する。例えば、抽出部１３３は、第１インデックス情報記憶部１２１に記憶された第１インデックス情報に基づいて、クエリ情報ＱＥ１１に対応するセントロイドを特定し、抽出する。例えば、抽出部１３３は、種々の従来技術を適宜用いて、クエリ情報ＱＥ１１における特徴領域を特定し、特徴領域における特徴量を局所特徴量として算出する。例えば、抽出部１３３は、種々の従来技術を適宜用いて、クエリ情報ＱＥ１１における局所特徴量を抽出する。
【０１１２】
図８の例では、抽出部１３３は、セントロイド情報記憶部１２２からセントロイドＩＤ「Ｃ２−１」により識別されるセントロイド情報を抽出する。例えば、抽出部１３３は、空間情報ＧＲ１１において、クエリ情報ＱＥ１１がセントロイドのうち、セントロイドＩＤ「Ｃ２−１」により識別されるセントロイドと最も近いため、セントロイドＩＤ「Ｃ２−１」により識別されるセントロイド情報を抽出する。例えば、抽出部１３３は、セントロイド情報に基づいて、ベクトルを抽出する。例えば、抽出部１３３は、セントロイド情報に基づいて、クエリ情報ＱＥ１１に類似するベクトルを抽出する。例えば、抽出部１３３は、セントロイド情報に基づいて第２インデックス情報記憶部１２３からベクトルを抽出する。
【０１１３】
図８の例では、抽出部１３３は、第２インデックス情報記憶部１２３にセントロイドＩＤ「Ｃ２−１」により識別されるセントロイド（ベクトル）に対応付けられて記憶されたベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を抽出する。
【０１１４】
（提供部１３４）
提供部１３４は、各種情報を提供する。例えば、提供部１３４は、端末装置１０や情報提供装置５０に各種情報を提供する。例えば、提供部１３４は、外部の情報処理装置に記憶部１２０に記憶された各種情報を提供する。例えば、提供部１３４は、空間情報ＧＲ１１等の各種情報を提供する。
【０１１５】
例えば、提供部１３４は、クエリに対応するベクトル識別情報を検索結果として提供する。例えば、提供部１３４は、抽出部１３３により選択されたベクトル識別情報を情報提供装置５０へ提供する。図８の例では、提供部１３４は、抽出部１３３により選択されたベクトル識別情報をクエリに対応するベクトルを示す情報として情報提供装置５０に提供する。図８の例では、提供部１３４は、ベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等をクエリに対応するベクトルを示す情報として情報提供装置５０に提供する。また、提供部１３４は、セントロイドＣ２−１に対応する実データ（画像データ）がある場合、セントロイドＣ２−１のベクトル情報も情報提供装置５０に提供してもよい。
【０１１６】
図８の例では、提供部１３４は、抽出部１３３により抽出されたベクトルを識別する情報を情報提供装置５０に提供する。例えば、提供部１３４は、セントロイドとして抽出されたセントロイドＣ２−１に対応する領域ＡＲ２−１内に位置するベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を情報提供装置５０に提供する。例えば、提供部１３４は、セントロイドとして抽出されたベセントロイドＣ２−１に対応するベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を含む２５のベクトル識別情報を情報提供装置５０に提供する。
【０１１７】
〔４．生成処理のフロー〕
次に、図７を用いて、実施形態に係る生成システム１による生成処理の手順について説明する。図７は、実施形態に係る生成処理の一例を示すフローチャートである。
【０１１８】
図７に示すように、生成装置１００は、第１セントロイドと、第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する（ステップＳ１０１）。図１の例では、生成装置１００は、第２インデックス情報記憶部１２３に記憶されたセントロイドＣ２に関する対応情報を取得する。具体的には、生成装置１００は、セントロイドＣ２にベクトルＶ３３、Ｖ６６、Ｖ８１、Ｖ１１２、Ｖ９７１等が対応付けられた対応情報を第２インデックス情報記憶部１２３から取得する。
【０１１９】
その後、生成装置１００は、第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、複数の第２セントロイドを生成する（ステップＳ１０２）。例えば、生成装置１００は、セントロイドに対応付けられたベクトルの数が所定の閾値以上である場合、複数の第２セントロイドを生成する。図１の例では、生成装置１００は、第１セントロイドとしてのセントロイドＣ２に対応付けられたベクトルの数が「１００」であるため、ベクトル数「１００」を設定値「２５」で除算した数「４」に基づいて、４つの第２セントロイドを生成する。具体的には、生成装置１００は、４つの第２セントロイドＣ２−１、Ｃ２−２、Ｃ２−３、Ｃ２−４を生成する。
【０１２０】
〔５．情報の提供について〕
次に、図８を用いて、実施形態に係る生成システム１による情報提供について説明する。図８は、実施形態に係るクエリに対応する情報の提供の一例を示す図である。図８の例では、情報提供装置５０が端末装置１０から取得したクエリに応じて、端末装置１０に検索結果を提供する場合を示す。具体的には、情報提供装置５０が生成装置１００から取得したベクトル識別情報に基づいてユーザに検索結果として画像情報を提供する場合を示す。図８の例では、情報提供装置５０がｋ最近傍検索による画像検索サービスを提供する場合を一例として説明する。例えば、ｋ最近傍検索では、検索クエリからの距離が近い方からｋ個のベクトルを検索（抽出）する。なお、以下では説明を簡単にするために、「ｋ」が「６」である場合を示す。
【０１２１】
まず、情報提供装置５０は、ユーザＵ１が利用する端末装置１０からクエリを取得する（ステップＳ２１）。図８の例では、情報提供装置５０は、端末装置１０からクエリ情報ＱＥ１１を取得する。例えば、情報提供装置５０は、端末装置１０から画像情報をクエリ情報ＱＥ１１として取得する。
【０１２２】
そして、情報提供装置５０は、生成装置１００にクエリを送信する（ステップＳ２２）。図８の例では、情報提供装置５０は、端末装置１０から取得したクエリ情報ＱＥ１１を生成装置１００に送信する。そして、生成装置１００は、画像情報をクエリ情報ＱＥ１１として取得する。
【０１２３】
その後、生成装置１００は、クエリ情報ＱＥ１１を用いてセントロイドを抽出する（ステップＳ２３）。例えば、生成装置１００は、第１インデックス情報記憶部１２１に記憶された第１インデックス情報に基づいて、クエリ情報ＱＥ１１に対応するセントロイドを特定し、抽出する。
【０１２４】
例えば、生成装置１００は、種々の従来技術を適宜用いて、クエリ情報ＱＥ１１における特徴領域を特定し、特徴領域における特徴量を局所特徴量として算出する。例えば、生成装置１００は、種々の従来技術を適宜用いて、クエリ情報ＱＥ１１における局所特徴量を抽出する。
【０１２５】
また、例えば、生成装置１００は、クエリ情報ＱＥ１１からＢｏＦに関する情報を生成する。そして、生成装置１００は、第１インデックス情報記憶部１２１に記憶された第１インデックス情報に基づいて、クエリ情報ＱＥ１１のＢｏＦに関する情報と類似するＢｏＦを検索することにより、セントロイドを特定する。
【０１２６】
例えば、生成装置１００は、クエリ情報ＱＥ１１のＢｏＦに関する情報に最も近いＢｏＦ表現を、第１インデックス情報記憶部１２１に記憶された第１インデックス情報を用いて検索する。なお、生成装置１００は、クエリ情報ＱＥ１１のＢｏＦに関する情報と、検索で抽出されたセントロイドのＢｏＦに関する情報との距離が所定の閾値以上であった場合、クエリ情報ＱＥ１１に対応するベクトル情報はないと判定してもよい。なお、生成装置１００は、セントロイドの抽出を、特許文献２に記載されるような種々の従来技術を適宜用いて行ってもよい。例えば、生成装置１００は、特許文献２に記載される処理により、特徴点座標の照合を行うことにより、クエリ情報ＱＥ１１と、抽出したセントロイドに対応する画像との類似性の確信度を検証してもよい。
【０１２７】
図８の例では、生成装置１００は、セントロイド情報記憶部１２２からセントロイドＩＤ「Ｃ２−１」により識別されるセントロイド情報を抽出する。例えば、生成装置１００は、空間情報ＧＲ１１において、クエリ情報ＱＥ１１がセントロイドのうち、セントロイドＩＤ「Ｃ２−１」により識別されるセントロイドと最も近いため、セントロイドＩＤ「Ｃ２−１」により識別されるセントロイド情報を抽出する。
【０１２８】
そして、生成装置１００は、セントロイド情報に基づいて、ベクトルを抽出する（ステップＳ２４）。例えば、生成装置１００は、セントロイド情報に基づいて、クエリ情報ＱＥ１１に類似するベクトルを抽出する。例えば、生成装置１００は、セントロイド情報に基づいて第２インデックス情報記憶部１２３からベクトルを抽出する。
【０１２９】
図８の例では、生成装置１００は、第２インデックス情報記憶部１２３にセントロイドＩＤ「Ｃ２−１」により識別されるセントロイド（ベクトル）に対応付けられて記憶されたベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を抽出する。例えば、図８では、セントロイドＣ２−１に対応する領域ＡＲ２−１内に位置するベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を含む２５のベクトル識別情報（ベクトル）が抽出されるものとする。
【０１３０】
その後、生成装置１００は、抽出したベクトルを識別する情報を情報提供装置５０に提供する（ステップＳ２５）。図８の例では、生成装置１００は、セントロイドとして抽出されたベセントロイドＣ２−１に対応するベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を含む２５のベクトル識別情報を情報提供装置５０に提供する。
【０１３１】
生成装置１００からベクトルを識別する情報を受信した情報提供装置５０は、受信したベクトルを識別する情報に対応付けられた画像情報を端末装置１０に提供する（ステップＳ２６）。例えば、情報提供装置５０は、生成装置１００から受信したベクトルを識別する情報に対応付けられた画像情報をクエリ情報ＱＥ１１に対応する検索結果として端末装置１０に提供する。図８の例では、生成装置１００からベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等を受信した情報提供装置５０は、ベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等の各々に対応する画像情報を端末装置１０に提供する。例えば、情報提供装置５０は、ベクトル識別情報Ｖ６６、Ｖ５００１、Ｖ５００４等の各々に対応する画像情報とクエリ情報ＱＥ１１との類似度を算出し、類似度に応じた順序で並んだ画像情報を端末装置１０に提供してもよい。
【０１３２】
〔６．第１インデックス〕
また、生成装置１００は、クエリを取得した際に対応するセントロイドを特定するために、第１インデックス情報を用いてもよい。この点について、図９を用いて説明する。図９は、実施形態に係る第１インデックス情報の概念図を示す図である。
【０１３３】
図１の例では、生成装置１００は、クエリを取得した際に対応するセントロイドを特定するために、図４の第１インデックス情報記憶部１２１に示すような第１インデックス情報を生成する。また、生成装置１００は、生成処理によるセントロイドの生成に応じて、第１インデックス情報記憶部１２１の情報を更新する。
【０１３４】
図９の第１インデックス情報記憶部１２１は、生成装置１００がセントロイドＣ２−２に対してさらに第２セントロイドを生成した場合を示す。例えば、図９の示す例では、生成装置１００は、第３セントロイドＣ２−２−１〜Ｃ２−２−３を生成する。
【０１３５】
図９中の第１インデックス情報記憶部１２１に示す「第３階層」には、セントロイドＣ２−２の第２セントロイドが格納される。例えば、図９の第１インデックス情報記憶部１２１は、第３階層のセントロイドが、セントロイドＣ２−２−１〜Ｃ２−２−３であることを示す。具体的には、図９の第１インデックス情報記憶部１２１は、第２階層のセントロイドＣ２−２に対応する第３階層のセントロイドが、セントロイドＣ２−２−１〜Ｃ２−２−３であることを示す。
【０１３６】
また、この場合のセントロイドＣ２に対応する領域ＡＲ２内は、図９の空間情報ＧＲ１１−４に示すようになる。例えば、図９の空間情報ＧＲ１１−４中の領域ＡＲ２−２−１には、ベクトル識別情報Ｖ９７１等が含まれる。また、例えば、図９の空間情報ＧＲ１１−４中の領域ＡＲ２−２−２には、ベクトル識別情報Ｖ５００３等が含まれる。
【０１３７】
例えば、生成装置１００は、図９中の第１インデックス情報記憶部１２１に示す第１インデックス情報に対応するツリー情報ＴＲ１１を生成する（ステップＳ３１）。なお、図９では、インデックスを図として示すために、ツリー情報ＴＲ１１を生成するものとして説明するが、図９中の第１インデックス情報記憶部１２１に示す情報は、ツリー情報ＴＲ１１の情報を含む。図９の例では、生成装置１００は、ツリー情報ＴＲ１１と空間情報ＧＲ１１とを含むグラフ情報ＧＲ１を生成する。なお、ツリー情報ＴＲ１１は空間情報ＧＲ１１に含まれてもよい。また、図９の例では、説明を簡単にするために、セントロイドＣ１〜Ｃ６、Ｃ８、Ｃ９、Ｃ１１等の図示を省略し、ツリー情報ＴＲ１１の一部を図示する。
【０１３８】
図９中のツリー情報ＴＲ１１は、ルートＲＴやセントロイドＣ１〜Ｃ１１、Ｃ２−１〜Ｃ２−４、Ｃ２−２−１〜Ｃ２−２−３等を含む。図１の例では、例えばセントロイドＣ１〜Ｃ１１、Ｃ２−１〜Ｃ２−４、Ｃ２−２−１〜Ｃ２−２−３等は、実データに対応するベクトルであってもよい。
【０１３９】
図９中のツリー情報ＴＲ１１に示すように、第１階層に属するセントロイドＣ１〜Ｃ１１は、ルートＲＴに直接接続される。例えば、第１階層に属するセントロイドＣ１０は、ルートＲＴに直接接続される。また、セントロイドＣ１０は、対応する第２階層のセントロイドがないため、ベクトルが対応付けられる。すなわち、セントロイドＣ１０は、ツリー情報ＴＲ１１の葉（リーフノード）となる。また、セントロイドＣ２以外の他の第１階層のセントロイドＣ１、Ｃ３〜Ｃ９、Ｃ１１も、ツリー情報ＴＲ１１の葉（リーフノード）となる。
【０１４０】
また、例えば、第１階層に属するセントロイドＣ２は、ルートＲＴに直接接続される。また、セントロイドＣ２は、対応する第２階層のセントロイドＣ２−１〜Ｃ２−４があるため、セントロイドＣ２−１〜Ｃ２−４に接続される。
【０１４１】
また、セントロイドＣ２に対応する第２階層のセントロイドＣ２−１、Ｃ２−３、Ｃ２−４には、対応する第３階層のセントロイドがないため、ベクトルが対応付けられる。例えば、セントロイドＣ２−１には、ベクトルＶ６６、Ｖ５００１等が対応付けられる。また、例えば、セントロイドＣ２−３には、ベクトルＶ８１、Ｖ１１２等が対応付けられる。また、例えば、セントロイドＣ２−４には、ベクトルＶ３３、Ｖ５００２等が対応付けられる。このように、セントロイドＣ２−２以外の他の第２階層のセントロイドＣ２−１、Ｃ２−３、Ｃ２−４は、ツリー情報ＴＲ１１の葉（リーフノード）となる。
【０１４２】
また、セントロイドＣ２−２に対応する第３階層のセントロイドＣ２−２−１〜Ｃ２−２−３には、対応する第４階層のセントロイドがないため、ベクトルが対応付けられる。例えば、セントロイドＣ２−２−１には、ベクトルＶ９７１等が対応付けられる。また、例えば、セントロイドＣ２−２−２には、ベクトルＶ５００３等が対応付けられる。このように、第３階層のセントロイドＣ２−２−１〜Ｃ２−２−３は、ツリー情報ＴＲ１１の葉（リーフノード）となる。
【０１４３】
このように、図９に示す例では、階層の上下に関わらず、リーフノードとなるセントロイドにベクトルが対応付けられる。そのため、生成装置１００は、検索クエリを取得した場合、その検索クエリに近似するリーフノードを特定することにより、検索クエリに対応するベクトルを特定することが可能となる。
【０１４４】
例えば、生成装置１００は、検索クエリＱＥ１１（図８参照）を取得した場合、ツリー情報ＴＲ１１を上から下へ辿ることにより、検索クエリＱＥ１１の近傍候補となるセントロイドを特定することにより、効率的に検索クエリに対応するセントロイドを特定することができる。例えば、生成装置１００は、ツリー情報ＴＲ１１をルートＲＴからリーフノードまで辿ることにより、検索クエリの近傍候補となるセントロイドを特定してもよい。図８の例では、例えば、生成装置１００は、ツリー情報ＴＲ１１をルートＲＴからセントロイドＣ２−１まで辿ることにより、検索クエリＱＥ１１の近傍候補となるセントロイドＣ２−１を特定してもよい。
【０１４５】
なお、上述したような複数のセントロイド情報に関する木構造やグラフ型の検索インデックスは一例であり、生成装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、どのようなデータ構造の第１インデックス情報を生成してもよい。例えば、生成装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、第１インデックス情報を生成してもよい。例えば、生成装置１００は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造の第１インデックス情報を生成してもよい。
【０１４６】
また、生成装置１００は、上記の第１インデックス情報に限らず、クエリを取得した際に対応するセントロイドを特定するために利用可能であれば、どのような第１インデックス情報を用いてもよい。例えば、生成装置１００は、高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【０１４７】
また、例えば、生成装置１００は、非特許文献２に記載されるようなグラフ型の検索インデックスに関する情報を第１インデックス情報として生成してもよい。また、例えば、生成装置１００は、ツリー構造（木構造）に関する検索インデックスを第１インデックス情報として生成してもよい。例えば、生成装置１００は、ｋｄ木（k-dimensional  tree）に関する検索インデックスを第１インデックス情報として生成してもよい。例えば、生成装置１００は、ＶＰ木（vantage-point  tree）に関する検索インデックスを第１インデックス情報として生成してもよい。このように、生成装置１００は、複数のセントロイド情報に関する木構造型のインデックス、グラフ構造型のインデックスを第１インデックス情報として生成してもよい。また、例えば、生成装置１００は、転置インデックスを第１インデックス情報として生成してもよい。
【０１４８】
また、例えば、生成装置１００は、高次元データを検索できるハッシュ型などその他のインデックスを第１インデックス情報として用いてもよい。例えば、生成装置１００は、高次元データを検索できるハッシュ型などその他のインデックスを第１インデックス情報として第１インデックス情報記憶部１２１に記憶してもよい。
【０１４９】
また、例えば、生成装置１００は、ツリー情報ＴＲ１１のリーフノードとなるセントロイド間を所定のエッジで接続することにより、リーフノードにおけるグラフ構造（グラフ情報）を生成してもよい。図９の例では、生成装置１００がリーフノードであるセントロイドＣ７、Ｃ１０、Ｃ２−１、Ｃ２−３等をエッジＥＤで接続した場合を示す。なお、生成装置１００は、ツリー情報ＴＲ１１の各リーフノードを接続したグラフ情報を生成してもよい。この場合、例えば、生成装置１００は、ツリー情報ＴＲ１１のリーフノードまで辿った後、リーフノード間のグラフ構造と辿ることにより、セントロイドを特定してもよい。
【０１５０】
〔７．第２インデックスの生成について〕
上記例においては、各セントロイドに対応する領域に基づく処理を説明したが、生成装置１００は、各セントロイドに対応する領域を部分領域に分割してもよい。この点について図１０を用いて以下説明する。図１０は、実施形態に係る第２インデックス情報の生成処理の一例を示す図である。
【０１５１】
例えば、図１０中の空間情報ＧＲ１１は、図８中の空間情報ＧＲ１１に対応し、クエリ情報ＱＥ２１と領域ＡＲ４に含まれるセントロイドＣ４やベクトルＶ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応する各ベクトルとの関係を示す。このように、図１０中の空間情報ＧＲ１１に示すように、クエリ情報ＱＥ２１とセントロイドＣ４やベクトルＶ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応する各ベクトルとの距離は異なるが、生成装置１００には、ベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応するベクトルデータを格納しない。この場合、例えば、クエリ情報ＱＥ２１と各ベクトルとの距離は、クエリ情報ＱＥ２１と領域ＡＲ４のセントロイドＣ４に対応するベクトルとの距離とみなされることとなる。言い換えると、ベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応するベクトルデータは、セントロイドＣ４に対応するベクトルデータに量子化される。このような場合、例えば、各領域ＡＲ１〜ＡＲ１１等に含まれるベクトルは同一距離とみなされるのでベクトルの数が多くなった場合、検索結果として該当するデータが多くなる。
【０１５２】
そこで、生成装置１００は、生成処理において、各領域ＡＲ１〜ＡＲ１１等をさらに部分領域に分割してもよい。以下では、領域ＡＲ４をさらに部分領域に分割する場合を示す。例えば、生成装置１００は、各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成してもよい。以下では、生成装置１００は、各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する場合を示す。
【０１５３】
例えば、生成装置１００は、領域ＡＲ４に含まれるベクトルの数に基づいて部分空間の数を決定してもよいし、所定の設定値に基づいて部分空間の数を決定してもよい。図１０の例では、生成装置１００は、領域ＡＲ４を９個の部分領域ＡＲ４１〜ＡＲ４９に分割する場合を示す。例えば、生成装置１００は、各領域ＡＲ４１〜ＡＲ４９に含まれるベクトルの数が均等になるように各部分領域ＡＲ４１〜ＡＲ４９の範囲を決定してもよい。また、例えば、生成装置１００は、クラスタリングに関する種々の従来技術を適宜用いて、各部分領域ＡＲ４１〜ＡＲ４９の範囲を決定してもよい。
【０１５４】
図１０の例では、生成装置１００は、各部分領域ＡＲ４１〜ＡＲ４９に含まれるベクトルとセントロイドから残差ベクトルを算出し、その残差ベクトルから部分領域のセントロイドを生成する。この場合、複数の領域があっても個別のセントロイド集合があるわけではなく、共通でかつ単一のセントロイド集合を構成する。ただし、生成装置１００は、複数の領域の各々について個別にセントロイド集合を生成してもよい。例えば、生成装置１００は、セントロイドの総数が所定の閾値以下である場合、複数の領域の各々について個別のセントロイド集合を生成してもよい。なお、部分領域のセントロイドは残差ベクトルではなく、元のベクトルでも良い。例えば、生成装置１００は、元のベクトルの分散が所定の閾値以下である場合、元のベクトルを部分領域のセントロイドとしてもよい。例えば、生成装置１００は、ベクトル識別情報Ｖ３４により識別されるベクトルを含む部分領域ＡＲ４１に含まれるベクトルに基づいて、セントロイドＣＮ４１を生成する。また、例えば、生成装置１００は、ベクトル識別情報Ｖ９により識別されるベクトルを含む部分領域ＡＲ４２に含まれるベクトルに基づいて、セントロイドＣＮ４２を生成する。なお、生成装置１００は、各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成してもよい。
【０１５５】
例えば、生成装置１００は、一の領域のセントロイドと、各部分領域のセントロイドとの残差ベクトルに関する情報を記憶する。図１０の例では、生成装置１００は、部分セントロイド情報ＬＴ１に示すように、領域ＡＲ４のセントロイドＣ４と、その部分領域ＡＲ４１のセントロイドＣＮ４１との残差ベクトルに関する情報や領域ＡＲ４のセントロイドＣ４と、その部分領域ＡＲ４８のセントロイドＣＮ４８との残差ベクトルに関する情報等が記憶される。なお、生成装置１００は、部分セントロイド情報ＬＴ１を記憶部１２０に記憶してもよい。
【０１５６】
また、生成装置１００は、各ベクトルに対応付けてそのベクトルが属する部分領域のセントロイド情報を記憶してもよい。図１０の例では、生成装置１００は、第２インデックス情報記憶部１２３Ａに示すように、セントロイドＣ４に対応付けて記憶されたベクトルＶ９にセントロイドＣＮ４２を対応付けて記憶してもよい。なお、生成装置１００は、第２インデックス情報記憶部１２３Ａを記憶部１２０に含んでもよい。具体的には、生成装置１００は、セントロイドＩＤ「Ｃ４」に対応付けられたベクトル識別情報「Ｖ９」にセントロイドＩＤ「ＣＮ４２」を対応付けて記憶してもよい。このように、生成装置１００は、各ベクトルにそのベクトルが属する部分領域のセントロイドに関する情報を対応付けて第２インデックス情報記憶部１２３Ａに記憶する。これにより、生成装置１００は、第２インデックス情報記憶部１２３Ａを参照することで、ベクトルがどの部分領域に属するかを特定可能となり、さらに処理を高速化することができる。
【０１５７】
上述したように、部分領域ＡＲ４１〜ＡＲ４９による分割が無い場合、クエリ情報ＱＥ２１と各ベクトルとの距離は、クエリ情報ＱＥ２１と領域ＡＲ４のセントロイドＣ４に対応するベクトルとの距離とみなされることとなる。一方、生成装置１００は、部分領域ＡＲ４１〜ＡＲ４９による分割を行うことにより、クエリ情報ＱＥ２１と各ベクトルとの距離をさらに細分化することができる。この点について、図１１を用いて説明する。図１１は、実施形態に係る第２インデックス情報の利用の一例を示す図である。
【０１５８】
例えば、生成装置１００は、部分セントロイド情報ＬＴ１を用いることにより、各ベクトルの位置をそのベクトルが属する部分領域のセントロイドの位置に量子化することができる。これにより、生成装置１００は、クエリ情報ＱＥ２１と各ベクトルとの距離を、クエリ情報ＱＥ２１と各ベクトルが属する部分領域ＡＲ４１〜ＡＲ４９のセントロイドに対応するベクトルとの距離まで細部化することができる。
【０１５９】
図１１の例では、生成装置１００は、セントロイド情報記憶部１２２に示すようにセントロイドＩＤ「Ｃ４」により識別されるベクトルのベクトルデータを有し、部分セントロイド情報ＬＴ１に示すようにセントロイドＣＮ４１に関する残差ベクトル情報を有する。そのため、生成装置１００は、例えばクエリ情報ＱＥ２１に対して、セントロイドＣＮ４１までの距離を算出することができる。したがって、生成装置１００は、例えばクエリ情報ＱＥ２１とベクトルＶ３４との距離を、セントロイドＣ４よりもさらに近似したセントロイドＣＮ４１までの距離とすることができる。
【０１６０】
このように、生成装置１００は、各領域ＡＲ１〜ＡＲ１１等をさらに細分化した部分領域に関する情報を用いることにより、格納するベクトルデータの数は領域に対応するセントロイドの数に抑制しつつ、さらに各ベクトルを細分化して量子化することが可能となる。例えば、生成装置１００は、各領域ＡＲ１〜ＡＲ１１等に含まれるベクトルの数が膨大（例えば１万や１０万等）になった場合であっても、領域をさらに細分化することにより、各ベクトルを適切に量子化することができる。したがって、生成装置１００は、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１６１】
〔７−１．分割時の第２インデックスの生成について〕
なお、図１０及び図１１の例では、第１階層のセントロイドＣ４に対応する領域の分領域への分割の場合を一例として示したが、生成装置１００は、第２階層以降の階層のセントロイドに対応する領域を部分領域へ分割してもよい。
【０１６２】
例えば、図１の例では、生成装置１００は、第２セントロイドとして生成されたセントロイドＣ２−１〜Ｃ２−４ごとにさらに部分領域に分割してもよい。例えば、生成装置１００は、セントロイドＣ２−１に対応する領域ＡＲ２−１に含まれるベクトル情報に基づいて、当該領域ＡＲ２−１が分割された複数の部分領域に対応する部分セントロイド情報を生成してもよい。
【０１６３】
また、生成装置１００は、所定の階層以下のセントロイドに対応する領域を部分領域に分割してもよい。例えば、生成装置１００は、図９に示すように、第３階層までは、第２セントロイドの生成を行い、第３階層のセントロイドに対応するベクトルが所定の数以上になった場合に、そのセントロイドに対応する領域を部分領域に分割してもよい。
【０１６４】
〔８．ベクトルの分割の一例〕
なお、上記の例では、生成装置１００が各ベクトルを一のベクトルとして処理する場合を示したが、生成装置１００は、各ベクトルを複数の部分ベクトルに分割して処理してもよい。例えば、生成装置１００は、いわゆる直積量子化に関する技術を用いて、処理を行ってもよい。この点について図１２を用いて説明する。図１２は、実施形態に係るベクトルの分割の一例を示す図である。なお、図１２の例では、説明を簡単にするために、クエリに対応するベクトルデータＱＥ３１の次元数が１２である場合を示すが、生成装置１００は、より高次元のベクトルを対象としてもよい。
【０１６５】
図１２の例では、生成装置１００は、ベクトルデータＱＥ３１を４分割する。例えば、生成装置１００は、ベクトルデータＱＥ３１のうち、１次元〜３次元のデータを部分ベクトルデータＱＥ３１−１とし、４次元〜６次元のデータを部分ベクトルデータＱＥ３１−２とし、７次元〜９次元のデータを部分ベクトルデータＱＥ３１−３とし、１０次元〜１２次元のデータを部分ベクトルデータＱＥ３１−４とする。具体的には、生成装置１００は、「４５，２３，２」を部分ベクトルデータＱＥ３１−１とし、「１２７，３４，５」を部分ベクトルデータＱＥ３１−２とし、「２０，９８，１１０」を部分ベクトルデータＱＥ３１−３とし、「１２，４５，４」を部分ベクトルデータＱＥ３１−４とする。
【０１６６】
なお、上記のように、クエリを部分ベクトルに分割する場合を示したが、セントロイド情報の生成処理においては、各画像情報に対応するベクトルが部分ベクトルに分割されるものとする。また、図１２では、説明を簡単にするために図１に示す空間情報ＧＲ１１中の領域ＡＲ４を複数の部分領域（以下「部分空間」ともいう）に分割する場合を図示する。図１２に示す例では、空間情報ＧＲ１１中の領域ＡＲ４が複数の部分空間ＡＲ４−１〜ＡＲ４−４に分割された場合を示す。
【０１６７】
部分ベクトルデータＱＥ３１−１は、部分空間ＡＲ４−１に対応するベクトルデータであり、部分ベクトルデータＱＥ３１−２は、部分空間ＡＲ４−２に対応するベクトルデータであり、部分ベクトルデータＱＥ３１−３は、部分空間ＡＲ４−３に対応するベクトルデータであり、部分ベクトルデータＱＥ３１−４は、部分空間ＡＲ４−４に対応するベクトルデータであるものとする。例えば、図１２の例では、部分ベクトルデータＱＥ３１−１は、部分空間ＡＲ４−１中のセントロイドＣＮ４３の領域に位置する。
【０１６８】
図１２の例では、部分空間ＡＲ４−１〜ＡＲ４−４を類似の形状で示すが、各部分空間ＡＲ４−１〜ＡＲ４−４の形状は異なってもよいし、また各部分空間ＡＲ４−１〜ＡＲ４−４における領域の分割態様も異なってもよい。
【０１６９】
そして、生成装置１００は、全部分空間ＡＲ４−１〜ＡＲ４−４における距離を合計等することにより、各クエリとセントロイドとの距離を算出する。例えば、生成装置１００は、下記の式（１）により、各クエリとベクトルとの距離を算出してもよい。なお、上述した例では、部分領域のセントロイドは基本共通であったが、部分ベクトルの場合には、生成装置１００は、ベクトル単位にセントロイド集合を生成してもよい。例えば、生成装置１００は、部分空間ＡＲ４−１〜ＡＲ４−４ごとにセントロイド集合を生成してもよい。これにより、部分ベクトルごとのベクトルデータの分布の傾向が違う場合であっても、生成装置１００は、効率的な検索を可能にするセントロイド情報を生成することができる。また、生成装置１００は、部分ベクトルを共通としてセントロイド集合を生成してもよい。例えば、生成装置１００は、部分空間ＡＲ４−１〜ＡＲ４−４に共通するセントロイド集合を生成してもよい。これにより、生成装置１００は、ベクトルを部分ベクトルに分割した場合であっても、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１７０】
【数１】
2019049909.tif 000003
【０１７１】
ここで、上記式（１）中の左辺の値は、例えば、クエリとベクトルとの間の二乗距離を示す。また、例えば、上記式（１）中の「ｘ」は、クエリに対応する。また、例えば、上記式（１）中の「ｙ」は、ベクトルに対応する。また、例えば、上記式（１）の右辺中の「ｑｃ（ｙ）」は、「ｙ」のセントロイドを示す。例えば、生成装置１００は、上記式（１）中の「ｙ」について、ベクトルのベクトルデータを有しない場合は、図１０のように各ベクトルが属する部分領域のセントロイドのベクトルデータの数値を用いてもよい。また、例えば、「ｙ−ｑｃ（ｙ）」は、残差ベクトルを示す。また、例えば、上記式（１）の右辺中の「ｑｐ」は、所定の量子化器（関数）を示す。
【０１７２】
また、例えば、上記式（１）の右辺中の「ｊ」は、分割された空間の数であってもよい。例えば、図１２の例では、上記式（１）の右辺中の「ｊ」は、分割された空間の数「４」であってもよい。また、例えば、上記式（１）の右辺中の「ｕｊ（）」は、括弧中のベクトル間の部分残差ベクトルを示す。例えば、生成装置１００は、上記式（１）を用いて、各部分空間におけるクエリとベクトルとの間の二乗距離を算出し、合算することにより、各クエリとベクトルとの距離を算出してもよい。例えば、図１２の例では、生成装置１００は、各部分空間ＡＲ４−１〜ＡＲ４−４における部分ベクトルデータＱＥ３１−１〜ＱＥ３１−４と、各部分空間ＡＲ４−１〜ＡＲ４−４におけるベクトルとの間の二乗距離を算出し、合算することにより、ベクトルデータＱＥ３１に対応するクエリとベクトルとの距離を算出してもよい。
【０１７３】
これにより、生成装置１００は、各ベクトルをより細分化して量子化することが可能となり、クエリに対応するベクトルをより適切に抽出することができる。また、生成装置１００は、上述した処理を適宜組み合わせることにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成してもよい。例えば、生成装置１００は、直積量子化時の各部分ベクトルをそのまま用いてもよいし、残差ベクトルを算出して用いてもよい。例えば、生成装置１００は、各部分ベクトルとセントロイドから残差ベクトルを算出し、その残差ベクトルを用いてもよい。また、生成装置１００は、部分ベクトル間で共通にセントロイドを生成してもよいし、個別にセントロイドを生成してもよい。例えば、生成装置１００は、一のベクトルが分割された部分ベクトル間で共通にセントロイドを生成してもよいし、個別にセントロイドを生成してもよい。なお、上記は一例であり、生成装置１００は、種々の情報を適宜組み合わせたり、個別に用いたりすることにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成してもよい。例えば、生成装置１００は、ある情報を共通化して用いたり、ある情報を個別化して用いたりすることにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成してもよい。
【０１７４】
〔９．効果〕
上述してきたように、実施形態に係る生成装置１００は、取得部１３１と、生成部１３２とを有する。取得部１３１は、所定の対象に関するベクトルが距離に応じて対応付けられる第１セントロイドと、第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する。生成部１３２は、取得部１３１により取得された対応情報に基づいて、第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成する。
【０１７５】
このように、実施形態に係る生成装置１００は、対応情報に基づいて、第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、第１ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第２セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１７６】
また、実施形態に係る生成装置１００において、生成部１３２は、対象ベクトルの数が所定の閾値以上である場合、複数の第２セントロイドを生成する。
【０１７７】
このように、実施形態に係る生成装置１００は、対象ベクトルの数が所定の閾値以上である場合、複数の第２セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１７８】
また、実施形態に係る生成装置１００において、生成部１３２は、対象ベクトルの数に応じた数の複数の第２セントロイドを生成する。
【０１７９】
このように、実施形態に係る生成装置１００は、対象ベクトルの数に応じた数の複数の第２セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１８０】
また、実施形態に係る生成装置１００において、生成部１３２は、対象ベクトルの数と所定の設定値とに基づく数の複数の第２セントロイドを生成する。
【０１８１】
このように、実施形態に係る生成装置１００は、対象ベクトルの数と所定の設定値とに基づく数の複数の第２セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１８２】
また、実施形態に係る生成装置１００において、生成部１３２は、対象ベクトルの数を所定の設定値により除算した数の複数の第２セントロイドを生成する。
【０１８３】
このように、実施形態に係る生成装置１００は、対象ベクトルの数を所定の設定値により除算した数の複数の第２セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１８４】
また、実施形態に係る生成装置１００において、取得部１３１は、所定のクラスタリング手法によりベクトルが対応付けられた第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる第１セントロイドの対応情報を取得する。
【０１８５】
このように、実施形態に係る生成装置１００は、所定のクラスタリング手法によりベクトルが対応付けられた第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる第１セントロイドの対応情報を取得することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１８６】
また、実施形態に係る生成装置１００において、取得部１３１は、対応付けられるベクトルの数の差が所定値以内になるように所定のクラスタリング手法によりベクトルが対応付けられた第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる第１セントロイドの対応情報を取得する。
【０１８７】
このように、実施形態に係る生成装置１００は、対応付けられるベクトルの数の差が所定値以内になるように所定のクラスタリング手法によりベクトルが対応付けられた第１セントロイドであって、新たに追加されるベクトルが距離に応じて対応付けられる第１セントロイドの対応情報を取得することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１８８】
また、実施形態に係る生成装置１００において、生成部１３２は、複数の第２セントロイドを生成した場合、複数の第２セントロイドを第１セントロイドに対応付け、第１ベクトル群に含まれる各ベクトルと第１セントロイドとの対応付けを解除する。
【０１８９】
このように、実施形態に係る生成装置１００は、複数の第２セントロイドを生成した場合、複数の第２セントロイドを第１セントロイドに対応付け、第１ベクトル群に含まれる各ベクトルと第１セントロイドとの対応付けを解除することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１９０】
また、実施形態に係る生成装置１００において、生成部１３２は、複数の第２セントロイドの各々に対応付けられるベクトルの数が所定の閾値以下である場合、複数の第２セントロイドの各々に対応付けられたベクトルを、第１セントロイドに対応付け、第１セントロイドと複数の第２セントロイドとの対応付けを解除する。
【０１９１】
このように、実施形態に係る生成装置１００は、複数の第２セントロイドの各々に対応付けられるベクトルの数が所定の閾値以下である場合、複数の第２セントロイドの各々に対応付けられたベクトルを、第１セントロイドに対応付け、第１セントロイドと複数の第２セントロイドとの対応付けを解除することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１９２】
また、実施形態に係る生成装置１００において、生成部１３２は、複数の第２セントロイドを削除する。
【０１９３】
このように、実施形態に係る生成装置１００は、複数の第２セントロイドを削除することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１９４】
また、実施形態に係る生成装置１００において、生成部１３２は、複数の第２セントロイドのうち、一の第２セントロイドに対応付けられた第２ベクトル群に関する情報が所定の条件を満たす場合、第２ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第３セントロイドを生成する。
【０１９５】
このように、実施形態に係る生成装置１００は、複数の第２セントロイドのうち、一の第２セントロイドに対応付けられた第２ベクトル群に関する情報が所定の条件を満たす場合、第２ベクトル群に含まれるベクトルである対象ベクトルの各々が距離に応じて対応付けられる複数の第３セントロイドを生成することにより、効率的な検索を可能にするセントロイド情報を生成することができる。
【０１９６】
〔１０．ハードウェア構成〕
上述してきた実施形態に係る生成装置１００は、例えば図１３に示すような構成のコンピュータ１０００によって実現される。図１３は、生成装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０１９７】
ＣＰＵ１１００は、ＲＯＭ１３００またはＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０１９８】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス１５００は、ネットワークＮを介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータをネットワークＮを介して他の機器へ送信する。
【０１９９】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、生成したデータを入出力インターフェイス１６００を介して出力装置へ出力する。
【０２００】
メディアインターフェイス１７００は、記録媒体１８００に格納されたプログラムまたはデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０２０１】
例えば、コンピュータ１０００が実施形態に係る生成装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムを実行することにより、制御部１３０の機能を実現する。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムを記録媒体１８００から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【０２０２】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０２０３】
〔１１．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０２０４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０２０５】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０２０６】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０２０７】
１  生成システム
１００  生成装置
１２１  第１インデックス情報記憶部
１２２  セントロイド情報記憶部
１２３  第２インデックス情報記憶部
１３０  制御部
１３１  取得部
１３２  生成部
１３３  抽出部
１３４  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2019049909.tif 000004
【図２】
2019049909.tif 000005
【図３】
2019049909.tif 000006
【図４】
2019049909.tif 000007
【図５】
2019049909.tif 000008
【図６】
2019049909.tif 000009
【図７】
2019049909.tif 000010
【図８】
2019049909.tif 000011
【図９】
2019049909.tif 000012
【図１０】
2019049909.tif 000013
【図１１】
2019049909.tif 000014
【図１２】
2019049909.tif 000015
【図１３】
2019049909.tif 000016
【手続補正書】
【提出日】平成31年1月15日(2019.1.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１セントロイドであって、所定の対象に関するベクトルが当該第１セントロイドとの間の距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得部と、
前記取得部により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、前記第１ベクトル群中のベクトルの数から所定の算出方法により算出した数の複数の第２セントロイドであって、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が当該複数の第２セントロイドの各々との間の距離に応じて対応付けられる複数の第２セントロイドを生成することにより、前記第１セントロイドに対応する第１クラスタを前記複数の第２セントロイドの各々に対応する複数の第２クラスタに分割する生成部と、
を備えることを特徴とする生成装置。
【請求項２】
第１セントロイドであって、所定の対象に関するベクトルが当該第１セントロイドとの間の距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得部と、
前記取得部により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、複数の第２セントロイドであって、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が当該複数の第２セントロイドの各々との間の距離に応じて対応付けられる複数の第２セントロイドを生成し、前記複数の第２セントロイドを生成した場合、前記複数の第２セントロイドを前記第１セントロイドに対応付け、前記第１ベクトル群に含まれる各ベクトルと前記第１セントロイドとの対応付けを解除することにより、前記第１セントロイドに対応する第１クラスタを前記複数の第２セントロイドの各々に対応する複数の第２クラスタに分割し、前記複数の第２セントロイドの各々に対応付けられるベクトルが所定の条件を満たす場合、前記複数の第２セントロイドの各々に対応付けられたベクトルを、前記第１セントロイドに対応付け、前記第１セントロイドと前記複数の第２セントロイドとの対応付けを解除することにより、前記複数の第２クラスタを前記第１クラスタに再併合する生成部と、
を備えることを特徴とする生成装置。
【請求項３】
前記生成部は、
前記複数の第２セントロイドを生成した場合、前記複数の第２セントロイドを前記第１セントロイドに対応付け、前記第１ベクトル群に含まれる各ベクトルと前記第１セントロイドとの対応付けを解除する
ことを特徴とする請求項１に記載の生成装置。
【請求項４】
前記生成部は、
前記複数の第２セントロイドの各々に対応付けられるベクトルが所定の条件を満たす場合、前記複数の第２セントロイドの各々に対応付けられたベクトルを、前記第１セントロイドに対応付け、前記第１セントロイドと前記複数の第２セントロイドとの対応付けを解除する
ことを特徴とする請求項３に記載の生成装置。
【請求項５】
前記生成部は、
全ての前記複数の第２セントロイドの各々に対応付けられるベクトルの数が所定の閾値以下である場合または全ての前記複数の第２セントロイドの各々に対応付けられるベクトルを合算した合計が他の閾値以下である場合、前記複数の第２セントロイドの各々に対応付けられたベクトルを、前記第１セントロイドに対応付け、前記第１セントロイドと前記複数の第２セントロイドとの対応付けを解除する
ことを特徴とする請求項２〜４のいずれか１項に記載の生成装置。
【請求項６】
前記生成部は、
前記複数の第２セントロイドを削除する
ことを特徴とする請求項２〜５のいずれか１項に記載の生成装置。
【請求項７】
前記生成部は、
前記対象ベクトルの数が所定の閾値以上である場合、前記複数の第２セントロイドを生成する
ことを特徴とする請求項１〜６のいずれか１項に記載の生成装置。
【請求項８】
前記生成部は、
前記対象ベクトルの数に応じた数の前記複数の第２セントロイドを生成する
ことを特徴とする請求項１〜７のいずれか１項に記載の生成装置。
【請求項９】
前記生成部は、
前記対象ベクトルの数と所定の設定値とに基づく数の前記複数の第２セントロイドを生成する
ことを特徴とする請求項１〜８のいずれか１項に記載の生成装置。
【請求項１０】
前記生成部は、
前記対象ベクトルの数を所定の設定値により除算した数の前記複数の第２セントロイドを生成する
ことを特徴とする請求項１〜９のいずれか１項に記載の生成装置。
【請求項１１】
前記取得部は、
所定のクラスタリング手法によりベクトルが対応付けられた前記第１セントロイドであって、前記第１セントロイドに対応付けられるベクトル群に、新たに追加されるベクトルが前記第１セントロイドとの間の距離に応じて対応付けられる前記第１セントロイドの前記対応情報を取得する
ことを特徴とする請求項１〜１０のいずれか１項に記載の生成装置。
【請求項１２】
前記取得部は、
対応付けられるベクトルの数の差が所定値以内になるように所定のクラスタリング手法によりベクトルが対応付けられた前記第１セントロイドであって、前記第１セントロイドに対応付けられるベクトル群に、新たに追加されるベクトルが前記第１セントロイドとの間の距離に応じて対応付けられる前記第１セントロイドの前記対応情報を取得する
ことを特徴とする請求項１〜１１のいずれか１項に記載の生成装置。
【請求項１３】
前記生成部は、
前記複数の第２セントロイドのうち、一の第２セントロイドに対応付けられた第２ベクトル群に関する情報が所定の条件を満たす場合、複数の第３セントロイドであって、前記第２ベクトル群に含まれるベクトルである対象ベクトルの各々が当該複数の第３セントロイドの各々との間の距離に応じて対応付けられる複数の第３セントロイドを生成する
ことを特徴とする請求項１〜１２のいずれか１項に記載の生成装置。
【請求項１４】
コンピュータが実行する生成方法であって、
第１セントロイドであって、所定の対象に関するベクトルが当該第１セントロイドとの間の距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得工程と、
前記取得工程により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、前記第１ベクトル群中のベクトルの数から所定の算出方法により算出した数の複数の第２セントロイドであって、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が当該複数の第２セントロイドの各々との間の距離に応じて対応付けられる複数の第２セントロイドを生成することにより、前記第１セントロイドに対応する第１クラスタを前記複数の第２セントロイドの各々に対応する複数の第２クラスタに分割する生成工程と、
を含むことを特徴とする生成方法。
【請求項１５】
第１セントロイドであって、所定の対象に関するベクトルが当該第１セントロイドとの間の距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得手順と、
前記取得手順により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、前記第１ベクトル群中のベクトルの数から所定の算出方法により算出した数の複数の第２セントロイドであって、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が当該複数の第２セントロイドの各々との間の距離に応じて対応付けられる複数の第２セントロイドを生成することにより、前記第１セントロイドに対応する第１クラスタを前記複数の第２セントロイドの各々に対応する複数の第２クラスタに分割する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。
【請求項１６】
コンピュータが実行する生成方法であって、
第１セントロイドであって、所定の対象に関するベクトルが当該第１セントロイドとの間の距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得工程と、
前記取得工程により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、複数の第２セントロイドであって、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が当該複数の第２セントロイドの各々との間の距離に応じて対応付けられる複数の第２セントロイドを生成し、前記複数の第２セントロイドを生成した場合、前記複数の第２セントロイドを前記第１セントロイドに対応付け、前記第１ベクトル群に含まれる各ベクトルと前記第１セントロイドとの対応付けを解除することにより、前記第１セントロイドに対応する第１クラスタを前記複数の第２セントロイドの各々に対応する複数の第２クラスタに分割し、前記複数の第２セントロイドの各々に対応付けられるベクトルが所定の条件を満たす場合、前記複数の第２セントロイドの各々に対応付けられたベクトルを、前記第１セントロイドに対応付け、前記第１セントロイドと前記複数の第２セントロイドとの対応付けを解除することにより、前記複数の第２クラスタを前記第１クラスタに再併合する生成工程と、
を含むことを特徴とする生成方法。
【請求項１７】
第１セントロイドであって、所定の対象に関するベクトルが当該第１セントロイドとの間の距離に応じて対応付けられる第１セントロイドと、前記第１セントロイドに対応付けられるベクトルとの対応付けを示す対応情報を取得する取得手順と、
前記取得手順により取得された前記対応情報に基づいて、前記第１セントロイドに対応付けられた第１ベクトル群に関する情報が所定の条件を満たす場合、複数の第２セントロイドであって、前記第１ベクトル群に含まれるベクトルである対象ベクトルの各々が当該複数の第２セントロイドの各々との間の距離に応じて対応付けられる複数の第２セントロイドを生成し、前記複数の第２セントロイドを生成した場合、前記複数の第２セントロイドを前記第１セントロイドに対応付け、前記第１ベクトル群に含まれる各ベクトルと前記第１セントロイドとの対応付けを解除することにより、前記第１セントロイドに対応する第１クラスタを前記複数の第２セントロイドの各々に対応する複数の第２クラスタに分割し、前記複数の第２セントロイドの各々に対応付けられるベクトルが所定の条件を満たす場合、前記複数の第２セントロイドの各々に対応付けられたベクトルを、前記第１セントロイドに対応付け、前記第１セントロイドと前記複数の第２セントロイドとの対応付けを解除することにより、前記複数の第２クラスタを前記第１クラスタに再併合する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。