(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024025938
(43)【公開日】2024-02-28
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
G06F 16/906 20190101AFI20240220BHJP
【FI】
G06F16/906
【審査請求】未請求
【請求項の数】21
【出願形態】OL
(21)【出願番号】P 2022129324
(22)【出願日】2022-08-15
(71)【出願人】
【識別番号】500257300
【氏名又は名称】LINEヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】岩崎 雅二郎
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175FA03
(57)【要約】
【課題】適切なクラスタリングを可能にする。
【解決手段】本願に係る情報処理装置は、取得部と、処理部とを有する。取得部は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する。処理部は、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、一のクラスタリング処理において、一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得部と、
前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、一のクラスタリング処理において、前記一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、前記他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する処理部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記処理部は、
所定のクラスタリング手法により、前記クラスタリング処理を複数回実行することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記処理部は、
k-meansに関する手法により、前記クラスタリング処理を複数回実行することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記処理部は、
前記クラスタリング処理後に、前記複数のオブジェクトのうち前記オブジェクト群に含まれないオブジェクトを前記オブジェクト群に追加することにより、前記オブジェクト群を増加させ前記クラスタリング処理を繰り返すことにより、前記クラスタリング情報を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記処理部は、
前記オブジェクト群を増加させた前記クラスタリング処理を前記オブジェクト群に前記複数のオブジェクトが追加されるまで繰り返すことにより、前記クラスタリング情報を生成する
ことを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記処理部は、
前記クラスタリング処理を3回実行することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記処理部は、
前記オブジェクト群を対象として、複数の第1クラスタにクラスタリングする第1クラスタリング処理を実行し、前記複数の第1クラスタの各々をさらに分割した複数の第2クラスタにクラスタリングする第2クラスタリング処理を実行し、前記複数の第2クラスタの各々をさらに分割した複数の第3クラスタにクラスタリングする第3クラスタリング処理を実行することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記処理部は、
前記複数のオブジェクトのうち一部のオブジェクトを含む第1オブジェクト群を対象として、前記第1クラスタリング処理を実行し、前記第1クラスタリング処理後に、前記複数のオブジェクトのうち前記第1オブジェクト群に含まれないオブジェクトを前記第1オブジェクト群に追加した第2オブジェクト群を対象として、前記第2クラスタリング処理を実行し、前記第2クラスタリング処理後に、前記複数のオブジェクトのうち前記第2オブジェクト群に含まれないオブジェクトを前記第2オブジェクト群に追加した第3オブジェクト群を対象として、前記第3クラスタリング処理を実行することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記処理部は、
前記第1クラスタリング処理、前記第2クラスタリング処理及び前記第3クラスタリング処理による前記階層クラスタリングに基づく前記クラスタリング情報を生成する
ことを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記処理部は、
前記第1オブジェクト群を対象として、第1階層のクラスタリングを行う前記第1クラスタリング処理を実行し、前記第2オブジェクト群を対象として、前記第1階層の下位の第2階層のクラスタリングを行う前記第2クラスタリング処理を実行し、前記第3オブジェクト群を対象として、前記第2階層の下位の第3階層のクラスタリングを行う前記第3クラスタリング処理を実行することにより、前記クラスタリング情報を生成する
ことを特徴とする請求項9に記載の情報処理装置。
【請求項11】
前記処理部は、
前記第2クラスタリング処理において、前記第2オブジェクト群に追加されたオブジェクトの各々を、前記複数の第1クラスタのうち対応する第1クラスタに割り当てる第1割当処理を実行する
ことを特徴とする請求項8に記載の情報処理装置。
【請求項12】
前記処理部は、
前記第1割当処理後における各第1クラスタに属するオブジェクトの数に応じて、前記各第1クラスタの各々に属する前記第2クラスタの数を決定する第2クラスタ数決定処理を実行する
ことを特徴とする請求項11に記載の情報処理装置。
【請求項13】
前記処理部は、
前記各第1クラスタに属するオブジェクトの数が多い程、前記各第1クラスタの各々に属する前記第2クラスタの数を多くする前記第2クラスタ数決定処理を実行する
ことを特徴とする請求項12に記載の情報処理装置。
【請求項14】
前記処理部は、
前記第2クラスタ数決定処理により決定された前記各第1クラスタの各々に属する前記第2クラスタの数に基づいて、前記第2クラスタリング処理を実行する
ことを特徴とする請求項12に記載の情報処理装置。
【請求項15】
前記処理部は、
前記第3クラスタリング処理において、前記第3オブジェクト群に追加されたオブジェクトの各々を、前記複数の第2クラスタのうち対応する第2クラスタに割り当てる第2割当処理を実行する
ことを特徴とする請求項8に記載の情報処理装置。
【請求項16】
前記処理部は、
前記第2割当処理後における各第2クラスタに属するオブジェクトの数に応じて、前記各第2クラスタの各々に属する前記第3クラスタの数を決定する第3クラスタ数決定処理を実行する
ことを特徴とする請求項15に記載の情報処理装置。
【請求項17】
前記処理部は、
前記各第2クラスタに属するオブジェクトの数が多い程、前記各第2クラスタの各々に属する前記第3クラスタの数を多くする前記第3クラスタ数決定処理を実行する
ことを特徴とする請求項16に記載の情報処理装置。
【請求項18】
前記処理部は、
前記第3クラスタ数決定処理により決定された前記各第2クラスタの各々に属する前記第3クラスタの数に基づいて、前記第3クラスタリング処理を実行する
ことを特徴とする請求項16に記載の情報処理装置。
【請求項19】
前記取得部は、
データ検索の対象となる前記複数のオブジェクトを示すオブジェクト情報を取得し、
前記処理部は、
前記データ検索で用いるクラスタリングを示す前記クラスタリング情報を生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項20】
コンピュータが実行する情報処理方法であって、
クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得工程と、
前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、一のクラスタリング処理において、前記一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、前記他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する処理工程と、
を含むことを特徴とする情報処理方法。
【請求項21】
クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得手順と、
前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、一のクラスタリング処理において、前記一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、前記他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する処理手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、種々の情報をクラスタリング(分類)する技術が提供されている。例えば、種々の情報を効率的に探索(検索)するために、対象となる情報をクラスタリングし、クラスタリングした結果が用いられている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記の従来技術では、クラスタリングに関する処理の点では改善の余地がある。上記の従来技術では、k-means等により検索対象となるオブジェクト等をクラスタリングしているものの、例えば階層的なクラスタリングについては考慮されていない。そのため、クラスタリングに関する処理をより適切に行うことが望まれている。
【0005】
本願は、上記に鑑みてなされたものであって、適切なクラスタリングを可能にする情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本願に係る情報処理装置は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得部と、前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、一のクラスタリング処理において、前記一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、前記他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する処理部と、を備えたことを特徴とする。
【発明の効果】
【0007】
実施形態の一態様によれば、適切なクラスタリングを可能にすることができるという効果を奏する。
【図面の簡単な説明】
【0008】
【
図1】
図1は、実施形態に係る情報処理の一例を示す図である。
【
図2】
図2は、実施形態に係る情報処理システムの構成例を示す図である。
【
図3】
図3は、実施形態に係る情報処理装置の構成例を示す図である。
【
図4】
図4は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【
図5】
図5は、実施形態に係る情報処理の一例を示すフローチャートである。
【
図6】
図6は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0010】
(実施形態)
〔1.実施形態〕
〔1-1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。
図1は、実施形態に係る情報処理の一例を示す図である。以下では、画像情報をクラスタリング(分類)の対象となるオブジェクトとした場合を一例として説明するが、クラスタリング(分類)の対象となるオブジェクトは、クラスタリング処理が実行可能な対象であればどのようなものであってもよく、例えば動画情報や音声情報等の任意の種別の情報が採用可能である。
【0011】
情報処理装置100(
図3参照)は、例えば数十億等の単位の膨大なオブジェクトを対象にクラスタリング処理を行うが、図面においてはその一部(
図1ではオブジェクトN1等の数十個)のみを図示する。例えば、情報処理装置100は、
図1中の空間情報SP11~SP13に示すように、オブジェクトN1、N7、N9等に示すような複数のオブジェクト(ベクトル)に関する情報を取得する。なお、以下では、情報処理装置100によるクラスタリング処理の経過を、空間情報SP11~SP13で示すが、空間情報SP11~SP13を区別せず説明する場合、空間情報SPと記載する。
【0012】
以下、「オブジェクトN*(*は任意の数値)」と記載した場合、そのオブジェクトはオブジェクトID「N*」により識別されるオブジェクトであることを示す。例えば、「オブジェクトN1」と記載した場合、そのオブジェクトはオブジェクトID「N1」により識別されるオブジェクトである。空間情報SP中の黒丸(●)以外の丸(白丸やハッチングが付された丸)の各々が各オブジェクトを示す。なお、黒丸は後述する第1クラスタFCのセントロイドを示し、オブジェクトに対応する丸ではないものとする。すなわち、空間情報SP中の全丸のうち、黒丸を除く丸、すなわち各々がオブジェクトに対応する白丸やハッチングが付された丸を「オブジェクト点」と記載する場合がある。
【0013】
図1中の空間情報SPでは、主に説明に関係するオブジェクト点に符号を付すが、符号が付されていないオブジェクト点の各々も対応するオブジェクトがあり、オブジェクト点を図示するオブジェクト以外にも多数のオブジェクトがクラスタリング対象となる全体集団(「オブジェクトセット」ともいう)に含まれる。
【0014】
例えば
図1中の空間情報SPは、ユークリッド空間であってもよい。例えば、空間情報SPは、オブジェクトのベクトルの次元数に対応し、100次元や1000次元等の多次元空間であるものとする。なお、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【0015】
〔1-1-1.処理例〕
ここから、
図1を用いて処理の詳細を説明する。まず、以下に示す処理の説明に先だって前提を簡単に説明する。例えば、十億個のオブジェクト(ベクトル)をk-means法(「k-means」や「kmeans」と記載する場合がある)やk-means++法(「k-means++」や「kmeans++」と記載する場合がある)等を、単純に実行するだけでは実用的な時間で処理を完了することが現状では難しい場合がある。そこで、情報処理装置100は、以下に示すような階層的なクラスタリングを実行する、具体的には、以下では、情報処理装置100は、3階層でのクラスタリングを実行する。例えば、以下で説明する例では、クラスタリング対象となるオブジェクトセット(「オブジェクトセットOS1」とする)に十億個のオブジェクト(ベクトル)が含まれる。
【0016】
まず、情報処理装置100は、空間情報SP11に示すように、オブジェクトセットOS1のうち一部のオブジェクト群(「第1オブジェクト群」ともいう)を対象としてクラスタリングする第1クラスタリング処理を実行する(ステップS1)。情報処理装置100は、オブジェクトセットOS1からC1個のオブジェクトをランダムに選択することにより、第1オブジェクト群を取得する。例えば第1オブジェクト群の数の決定に用いられるC1は、オプションにより設定可能であり、数十万、数百万などの任意の数が設定されてもよい。例えば、情報処理装置100は、C1個のオブジェクト(ベクトル)を第1オブジェクト群として取得し、取得した第1オブジェクト群を対象として第1クラスタリング処理を実行する。
図1では、オブジェクトN1、N4等、空間情報SP11の白丸で示されたオブジェクトが第1オブジェクト群として選択されたオブジェクト(「第1オブジェクト」ともいう)を示す。
【0017】
例えば、情報処理装置100は、第1オブジェクト群を対象として、k-meansに関する手法により、複数のクラスタ(「第1クラスタ」ともいう)にクラスタリング(分類)する。情報処理装置100は、クラスタ数をO1個に指定して、第1オブジェクト群の各オブジェクトを、O1個の第1クラスタのいずれかに分類する。例えば第1クラスタの数の決定に用いられるO1は、オプションにより設定可能であり、数十、数百などの任意の数が設定されてもよい。なお、k-meansに関する手法は、k-meansに関するものであれば、k-means法やk-means++法等の任意の手法であってもよい。このように、情報処理装置100は、オブジェクトセットOS1全体よりもオブジェクトの数が少ない第1オブジェクト群を対象としてクラスタリングすることにより、全体集合を対象とする場合に比べて短い処理時間でクラスタリング処理を完了することができる。
【0018】
図1では、情報処理装置100は、オブジェクトN1、N4等を含むC1個のオブジェクト(ベクトル)を第1オブジェクト群として、第1クラスタリング処理を実行することにより、第1クラスタFC1~FC10等に第1オブジェクト群をクラスタリングする。例えば、情報処理装置100は、第1クラスタリング処理により、オブジェクトN7、N9、N85、N126等を第1クラスタFC1に割り当てる。また、情報処理装置100は、第1クラスタリング処理により、オブジェクトN1、N4、N5等を第1クラスタFC9に割り当てる。なお、第1クラスタFC1~FC10等を区別せずに説明する場合「第1クラスタFC」と記載する。
【0019】
次に、情報処理装置100は、空間情報SP12に示すように、オブジェクトセットOS1のうち、第1オブジェクト群に含まれないオブジェクトを第1オブジェクト群に追加した第2オブジェクト群を対象としてクラスタリングする第2クラスタリング処理を実行する(ステップS2)。情報処理装置100は、オブジェクトセットOS1のうち第1オブジェクト群を除外した集合(母集団)からC2-C1個のオブジェクトをランダムに選択し、選択したオブジェクトを第1オブジェクト群に追加することにより、第2オブジェクト群を生成する。例えば第2オブジェクト群の数の決定に用いられるC2は、オプションにより設定可能であり、例えばC1よりも大きれば、数百万、数千万などの任意の数が設定されてもよい。例えば、情報処理装置100は、C2個のオブジェクト(ベクトル)を第2オブジェクト群として取得し、取得した第2オブジェクト群を対象として第2クラスタリング処理を実行する。
図1では、オブジェクトN3、N6等、灰色の丸で示されたオブジェクトが第1オブジェクト群に追加したオブジェクト(「第2オブジェクト」ともいう)を示す。
【0020】
例えば、情報処理装置100は、第2オブジェクト群に追加されたオブジェクト(第2オブジェクト)の各々を、複数の第1クラスタFCのうち対応する第1クラスタFCに割り当てる第1割当処理を実行する。例えば、情報処理装置100は、空間情報SP12に示すように、第2オブジェクト群に追加されたオブジェクトの各々を、該当する第1クラスタFCに割り当てる。例えば、情報処理装置100は、第2オブジェクトの各々を、第1クラスタFCの各々のセントロイドのうち最も距離が近いセントロイドに対応する第1クラスタFCに割り当てる。例えば、情報処理装置100は、第2オブジェクト群に追加されたオブジェクトN3、N6、N28等を第1クラスタFC1に割り当てる。
【0021】
情報処理装置100は、第2オブジェクト群を対象として、O2個のクラスタ(「第2クラスタ」ともいう)を生成するように、各第1クラスタについて、その第1クラスタに属するオブジェクトの数に比例させて、第2クラスタの数を決定する。例えば第2クラスタの全体数の決定に用いられるO2は、オプションにより設定可能であり、例えば第1クラスタの数よりも多ければ、数百、数千などの任意の数が設定されてもよい。
【0022】
このように、情報処理装置100は、第1割当処理後における各第1クラスタFCに属するオブジェクトの数に応じて、各第1クラスタFCの各々に属する第2クラスタの数を決定する第2クラスタ数決定処理を実行する。例えば、情報処理装置100は、各第1クラスタFCに属するオブジェクトの数が多い程、各第1クラスタFCの各々に属する第2クラスタの数を多くする。そして、情報処理装置100は、各第1クラスタFCをk-meansに関する手法により、第2クラスタ数決定処理で決定した数に分割するようにクラスタリングする。
【0023】
図1では、情報処理装置100は、第1割当処理後における第1クラスタFC1に属するオブジェクトの数に応じて、第1クラスタFC1に属する第2クラスタの数を「3」に決定する。例えば、情報処理装置100は、第1クラスタFC1に属するオブジェクトを対象として、k-meansに関する手法により、3個の第2クラスタにクラスタリング(分類)する。
【0024】
図1では、情報処理装置100は、第1クラスタFC1に属するオブジェクトN3、N6、N7、N9、N28、N85、N126等を、3個の第2クラスタSC11、SC112、SC13にクラスタリング(分類)する。例えば、情報処理装置100は、オブジェクトN6、N85、N126等を第2クラスタSC11に割り当てる。また、情報処理装置100は、オブジェクトN3、N9等を第2クラスタSC12に割り当てる。また、情報処理装置100は、オブジェクトN7、N28等を第2クラスタSC13に割り当てる。なお、第2クラスタSC11~SC13等を区別せずに説明する場合「第2クラスタSC」と記載する。情報処理装置100は、第1クラスタFC1以外の他の第1クラスタFCについても同様に第2クラスタ数決定処理により決定された数の第2クラスタSCに分割する。
図1では、空間情報SP中の点線での分割態様が第2クラスタSCに対応するクラスタリングを示す。
【0025】
次に、情報処理装置100は、空間情報SP13に示すように、オブジェクトセットOS1のうち、第2オブジェクト群に含まれないオブジェクトを第2オブジェクト群に追加した第3オブジェクト群を対象としてクラスタリングする第3クラスタリング処理を実行する(ステップS3)。情報処理装置100は、オブジェクトセットOS1のうち第2オブジェクト群を除外した集合(母集団)からC3-C2個のオブジェクトをランダムに選択し、選択したオブジェクトを第2オブジェクト群に追加することにより、第3オブジェクト群を生成する。例えば第3オブジェクト群の数の決定に用いられるC3は、オプションにより設定可能であり、例えばC2よりも大きれば、数千万、数億などの任意の数が設定されてもよい。例えば、情報処理装置100は、C3個のオブジェクト(ベクトル)を第3ブジェクト群として取得し、取得した第3オブジェクト群を対象として第3クラスタリング処理を実行する。
図1では、外周が黒線で内部にハッチングが付された丸で示されたオブジェクトが第2オブジェクト群に追加したオブジェクト(「第3オブジェクト」ともいう)を示す。
【0026】
例えば、情報処理装置100は、第3オブジェクト群に追加されたオブジェクト(第3オブジェクト)の各々を、複数の第2クラスタSCのうち対応する第2クラスタSCに割り当てる第2割当処理を実行する。例えば、情報処理装置100は、空間情報SP13に示すように、第3オブジェクト群に追加されたオブジェクトの各々を、該当する第2クラスタSCに割り当てる。例えば、情報処理装置100は、第3オブジェクトの各々を、第2クラスタSCの各々のセントロイドのうち最も距離が近いセントロイドに対応する第2クラスタSCに割り当てる。例えば、情報処理装置100は、第3オブジェクト群に追加されたオブジェクトN2、N8等を第2クラスタSC11に割り当てる。
【0027】
情報処理装置100は、第3オブジェクト群を対象として、O3個のクラスタ(「第3クラスタ」ともいう)を生成するように、各第2クラスタについて、その第2クラスタに属するオブジェクトの数に比例させて、第3クラスタの数を決定する。例えば第3クラスタの全体数の決定に用いられるO3は、オプションにより設定可能であり、例えば第2クラスタの数よりも多ければ、数百、数千などの任意の数が設定されてもよい。
【0028】
このように、情報処理装置100は、第2割当処理後における各第2クラスタSCに属するオブジェクトの数に応じて、各第2クラスタSCの各々に属する第3クラスタの数を決定する第3クラスタ数決定処理を実行する。例えば、情報処理装置100は、各第2クラスタSCに属するオブジェクトの数が多い程、各第2クラスタSCの各々に属する第3クラスタの数を多くする。そして、情報処理装置100は、各第2クラスタSCをk-meansに関する手法により、第3クラスタ数決定処理で決定した数に分割するようにクラスタリングする。
【0029】
図1では、情報処理装置100は、第2割当処理後における第2クラスタSC11に属するオブジェクトの数に応じて、第2クラスタSC11に属する第3クラスタの数を「2」に決定する。例えば、情報処理装置100は、第2クラスタSC11に属するオブジェクトを対象として、k-meansに関する手法により、2個の第3クラスタにクラスタリング(分類)する。
【0030】
図1では、情報処理装置100は、第2クラスタSC11に属するオブジェクトN2、N6、N8、N85、N126等を、2個の第3クラスタTC111、TC112にクラスタリング(分類)する。例えば、情報処理装置100は、オブジェクトN8、N126等を第3クラスタTC111に割り当てる。また、情報処理装置100は、オブジェクトN2、N6、N85等を第3クラスタTC112に割り当てる。なお、第3クラスタTC111、TC112等を区別せずに説明する場合「第3クラスタTC」と記載する。情報処理装置100は、第2クラスタSC11以外の他の第2クラスタSCについても同様に第3クラスタ数決定処理により決定された数の第3クラスタTCに分割する。
図1では、空間情報SP中の一点鎖線での分割態様が第3クラスタTCに対応するクラスタリングを示す。
【0031】
上述したように、情報処理装置100は、第1クラスタリング処理、第2クラスタリング処理及び第3クラスタリング処理のような階層的なクラスタリングにより、適切なクラスタリングを可能にすることができる。例えば、情報処理装置100は、階層的なクラスタリングにより、数十億等の大規模なオブジェクト集合全体を、従来のように一度でクラスタリングする場合に比べて、効率的にクラスタリングを行うことができる。
【0032】
なお、
図1では、空間情報SP13に示す白丸のうち、空間情報SP11に示す白丸(すなわち第1オブジェクトに対応する白丸)以外の白丸に対応するオブジェクトは、第3クラスタリング処理で追加された第3オブジェクトであってもよい。情報処理装置100は、第3クラスタリング処理の結果を用いて、残りのオブジェクトを第3クラスタTCのいずれかに割り当ててもよい。例えば、情報処理装置100は、第3クラスタリング処理後のクラスタ数を維持して、残りのオブジェクトを第3クラスタTCのいずれかに割り当ててもよい。
【0033】
〔1-1-2.適用範囲について〕
クラスタリング対象となるオブジェクトは種々の処理の対象であってもよい。例えば、オブジェクトは、データ検索の対象であってもよい。すなわち、情報処理装置100が実行するクラスタリング処理により生成された情報は、データ検索に用いられてもよい。例えば、第2クラスタSCが特許文献1に開示されるグループ(ブロブ)として用いられてもよい。この場合、第3クラスタTCが量子化の単位となるクラスタ(量子化クラスタ)として用いられてもよい。また、第2クラスタSCが量子化の単位となるクラスタ(量子化クラスタ)として用いられてもよい。この場合、第3クラスタTCがグループ(ブロブ)として用いられてもよい。
【0034】
なお、クラスタリング処理により生成された情報の用途は、データ検索に限らず、クラスタリング結果を利用可能な処理であれば、どのような処理に利用されてもよい。すなわち、情報処理装置100が実行するクラスタリング処理は、そのクラスタリング処理の結果が利用可能な任意の処理に適用可能である。また、クラスタリング処理による情報の生成自体が目的であってもよい。例えば、情報処理装置100は、クラスタリングに関する情報を用いてサービスを提供するサービス提供装置へクラスタリング処理の結果を提供してもよい。
【0035】
〔1-2.情報処理システムの構成〕
図4に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。
図4は、第1の実施形態に係る情報処理システムの構成例を示す図である。なお、
図4に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
【0036】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
【0037】
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
【0038】
情報処理装置100は、クラスタリングに関する処理を実行するコンピュータである。情報処理装置100は、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する。情報処理装置100は、一のクラスタリング処理において、一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する。
【0039】
情報処理装置100は、検索サービスを提供してもよい。例えば、情報処理装置100は、端末装置10からクエリ(検索クエリ)を受信すると、検索クエリに類似する対象(オブジェクト)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、検索クエリや検索対象(オブジェクト)は、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。
【0040】
〔1-3.情報処理装置の構成〕
次に、
図3を用いて、実施形態に係る情報処理装置100の構成について説明する。
図3は、実施形態に係る情報処理装置100の構成例を示す図である。
図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0041】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば
図2中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
【0042】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、
図3に示すように、オブジェクト情報記憶部121と、クラスタリング情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、グラフ情報記憶部125とを有する。
【0043】
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。
図4は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
図4に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
【0044】
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、
図4の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
【0045】
例えば、
図4の例では、オブジェクトID「N1」により識別されるオブジェクト(対象)は、「10,24,51,2・・・」の多次元のベクトル情報が対応付けられることを示す。
【0046】
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0047】
(クラスタリング情報記憶部122)
実施形態に係るクラスタリング情報記憶部122は、クラスタリングに関する各種情報を記憶する。例えば、クラスタリング情報記憶部122は、生成したクラスタを記憶する。
【0048】
クラスタリング情報記憶部122は、階層的なクラスタリングの結果を記憶する。クラスタリング情報記憶部122は、第1クラスタリング処理、第2クラスタリング処理及び第3クラスタリング処理等による階層クラスタリングにより生成されたクラスタを記憶する。例えば、クラスタリングを識別するための識別情報(クラスタリングID等)にそのクラスタリングにより生成されたクラスタリングの結果の情報を対応付けて記憶する。を示す。
【0049】
例えば、クラスタリング情報記憶部122は、
図1の空間情報SP11に示すような第1クラスタリングによるクラスタリング(分類)結果を示す情報を記憶する。クラスタリング情報記憶部122は、第1クラスタリングによるオブジェクトを第1クラスタへの割り当てを示す情報を記憶する。例えば、クラスタリング情報記憶部122は、第1クラスタリングにより、オブジェクトN1、N4等の第1オブジェクト群が分類された第1クラスタFC1~FC10等を示す情報を記憶する。例えば、クラスタリング情報記憶部122は、第1クラスタFC1を識別するための識別情報(クラスタID等)にオブジェクトN7、N9、N85、N126等を識別するための識別情報(オブジェクトID等)を対応付けて記憶する。
【0050】
例えば、クラスタリング情報記憶部122は、
図1の空間情報SP12に示すような第2クラスタリングによるクラスタリング(分類)結果を示す情報を記憶する。クラスタリング情報記憶部122は、第2クラスタリングによるオブジェクトを第2クラスタへの割り当てを示す情報を記憶する。例えば、クラスタリング情報記憶部122は、第2クラスタリングにより、オブジェクトN1、N3、N4等の第2オブジェクト群が分類された第2クラスタSC11~SC13等を示す情報を記憶する。例えば、クラスタリング情報記憶部122は、第2クラスタSC11を識別するための識別情報(クラスタID等)にオブジェクトN6、N85、N126等を識別するための識別情報(オブジェクトID等)を対応付けて記憶する。
【0051】
例えば、クラスタリング情報記憶部122は、
図1の空間情報SP13に示すような第3クラスタリングによるクラスタリング(分類)結果を示す情報を記憶する。クラスタリング情報記憶部122は、第3クラスタリングによるオブジェクトを第3クラスタへの割り当てを示す情報を記憶する。例えば、クラスタリング情報記憶部122は、第3クラスタリングにより、オブジェクトN1、N2、N3、N4等の第3オブジェクト群が分類された第3クラスタTC111、TC112等を示す情報を記憶する。例えば、クラスタリング情報記憶部122は、第3クラスタTC111を識別するための識別情報(クラスタID等)にオブジェクトN8、N126等を識別するための識別情報(オブジェクトID等)を対応付けて記憶する。
【0052】
なお、クラスタリング情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0053】
(量子化情報記憶部123)
実施形態に係る量子化情報記憶部123は、量子化に関する各種情報を記憶する。量子化情報記憶部123には、「オブジェクトID」、「量子化情報」といった項目を有する。例えば、量子化情報記憶部123には、量子化の単位に応じた情報を記憶する。例えば、量子化情報記憶部123には、第2クラスタSCごとに量子化した情報を記憶する。なお、量子化情報記憶部123には、第1クラスタFCまたは第3クラスタTCごとに量子化した情報を記憶してもよい。
【0054】
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。「量子化情報」は、各オブジェクトの量子化されたベクトルの情報を示す。例えば、「量子化情報」には、「要素」、「コードブックID」といった情報が含まれる。「要素」は、対応するオブジェクトのベクトルにおける配置を示す。例えば、各オブジェクトのベクトルは4分割され、各分割された部分ベクトルがコードブックにより量子化されることを示す。なお、分割数は4に限られない。「コードブックID」は、各要素(部分ベクトル)に対応するコードブックを識別するための情報を示す。
【0055】
なお、コードブックを用いた量子化については、特許文献1等の従来技術により適宜実行されればよく、詳細な説明は省略する。また、量子化情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0056】
(コードブック情報記憶部124)
実施形態に係るコードブック情報記憶部124は、コードブックに関する各種情報を記憶する。例えば、コードブック情報記憶部124は、コードブックIDや各コードブックのベクトル情報を記憶する。例えば、コードブック情報記憶部124は、各コードブックとベクトルとの対応付けを示すルックアップテーブルを記憶する。
【0057】
コードブック情報記憶部124は、4分割された部分ベクトルの各々を量子化するために用いるコードブック等を記憶する。なお、コードブックは、特許文献1等の従来技術で開示されるような情報であり、詳細な説明は省略する。また、コードブック情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、コードブック情報記憶部124は、各コードブックと検索クエリとの差分(距離)を示す情報を記憶してもよい。
【0058】
(グラフ情報記憶部125)
実施形態に係るグラフ情報記憶部125は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部125は、検索処理に用いられるグラフを記憶する。グラフ情報記憶部125は、エッジ及びそのエッジで接続(連結)される接続対象を特定するための情報(ID等の識別情報)等を記憶する。なお、接続対象は、グループ(ブロブ等)、オブジェクト等の任意の対象が採用可能である。情報処理装置100は、データ検索の対象となる複数のオブジェクトに関する接続対象をグラフ構造化したグラフインデックス(グラフ)を用いた検索処理を実行する。
【0059】
例えば、グラフ情報記憶部125は、オブジェクト間をエッジで連結したグラフ(「オブジェクトグラフ」ともいう)が検索に用いられる場合、オブジェクトグラフを記憶する。この場合、グラフ情報記憶部125は、各オブジェクトに所定数の近傍のオブジェクトが連結されたオブジェクトグラフが記憶される。なお、情報処理装置100は、オブジェクトグラフを生成してもよいし、外部装置からオブジェクトグラフを取得してもよい。例えば、オブジェクトグラフは、k近傍グラフ(k-nearest neighbor graph)である。例えば、オブジェクトグラフは、検索処理に利用可能なグラフであれば、グラフ生成に関する種々の技術を適宜用いて生成されればよく、詳細な説明は省略する。
【0060】
また、例えば、グラフ情報記憶部125は、グループ(ブロブ)間を連結したグラフ(「グループ連結グラフ」ともいう)が検索に用いられる場合、グループ連結グラフを記憶する。この場合、グラフ情報記憶部125は、各グループに所定数の近傍のグループが連結されたグループ連結グラフが記憶される。なお、情報処理装置100は、グループ連結グラフを生成してもよいし、外部装置からグループ連結グラフを取得してもよい。例えば、グループ連結グラフは、k近傍グラフ(k-nearest neighbor graph)である。例えば、グループ連結グラフは、検索処理に利用可能なグラフであれば、グラフ生成に関する種々の技術を適宜用いて生成されればよく、詳細な説明は省略する。
【0061】
例えば、グラフ情報記憶部125は、第3クラスタTC間を連結したグループ連結グラフが検索に用いられる場合、第3クラスタTC間を連結したグループ連結グラフを記憶する。この場合、グラフ情報記憶部125は、各第3クラスタTCに所定数の近傍の第3クラスタTCが連結されたグループ連結グラフが記憶される。例えば、グラフ情報記憶部125は、各第3クラスタTCのセントロイドに所定数の近傍の第3クラスタTCのセントロイドが連結されたグループ連結グラフが記憶される。
【0062】
例えば、第3クラスタTCのセントロイド間を連結したグループ連結グラフは、例えば各セントロイド間の距離に応じて所定数の近傍のセントロイドが連結されることにより生成される。なお、第3クラスタTCのセントロイド間を連結したグループ連結グラフは、検索処理に利用可能なグラフであれば、グラフ生成に関する種々の技術を適宜用いて生成されればよく、詳細な説明は省略する。
【0063】
例えば、グラフ情報記憶部125は、第2クラスタSC間を連結したグループ連結グラフが検索に用いられる場合、第2クラスタSC間を連結したグループ連結グラフを記憶する。この場合、グラフ情報記憶部125は、各第2クラスタSCに所定数の近傍の第2クラスタSCが連結されたグループ連結グラフが記憶される。例えば、グラフ情報記憶部125は、各第2クラスタSCのセントロイドに所定数の近傍の第2クラスタSCのセントロイドが連結されたグループ連結グラフが記憶される。
【0064】
例えば、第2クラスタSCのセントロイド間を連結したグループ連結グラフは、例えば各セントロイド間の距離に応じて所定数の近傍のセントロイドが連結されることにより生成される。なお、第2クラスタSCのセントロイド間を連結したグループ連結グラフは、検索処理に利用可能なグラフであれば、グラフ生成に関する種々の技術を適宜用いて生成されればよく、詳細な説明は省略する。
【0065】
なお、グラフ情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部125は、各接続対象間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部125は、接続対象間の距離を示す情報が記憶されてもよい。上記データ構造は一例に過ぎず、グラフ情報記憶部125は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。
【0066】
また、グラフは、クエリを入力とし、グラフ中のエッジを辿ることにより接続対象を探索し、クエリに類似する接続対象を抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフは、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応する接続対象をグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフは、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフは、入力されたクエリに基づいて、グラフにおいてそのクエリに類似する接続対象を抽出し、出力するよう、コンピュータを機能させる。
【0067】
(制御部130)
図3の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)やGPU(Graphics Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0068】
図3に示すように、制御部130は、取得部131と、生成部132と、検索処理部133と、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、
図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0069】
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、クラスタリング情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124や、グラフ情報記憶部125等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
【0070】
取得部131は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。
【0071】
取得部131は、データ検索の対象となる複数のオブジェクトに対する検索クエリを取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。取得部131は、グラフを取得する。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフを取得してもよい。
【0072】
(生成部132)
生成部132は、オブジェクト等のクラスタリング対象のクラスタリングに関する各種処理を実行する処理部である。生成部132は、各種情報を生成する。例えば、生成部132は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部132は、オブジェクト情報記憶部121や、クラスタリング情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124や、グラフ情報記憶部125等に記憶された情報(データ)から各種情報を生成する。生成部132は、グラフ情報記憶部125に示すようなグラフを生成してもよい。
【0073】
生成部132は、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する。生成部132は、一のクラスタリング処理において、一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する。
【0074】
生成部132は、所定のクラスタリング手法により、クラスタリング処理を複数回実行することにより、クラスタリング情報を生成する。生成部132は、k-meansに関する手法により、クラスタリング処理を複数回実行することにより、クラスタリング情報を生成する。
【0075】
生成部132は、クラスタリング処理後に、複数のオブジェクトのうちオブジェクト群に含まれないオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させクラスタリング処理を繰り返すことにより、クラスタリング情報を生成する。生成部132は、オブジェクト群を増加させたクラスタリング処理をオブジェクト群に複数のオブジェクトが追加されるまで繰り返すことにより、クラスタリング情報を生成する。
【0076】
生成部132は、クラスタリング処理を3回実行することにより、クラスタリング情報を生成する。生成部132は、オブジェクト群を対象として、複数の第1クラスタにクラスタリングする第1クラスタリング処理を実行する。生成部132は、複数の第1クラスタの各々をさらに分割した複数の第2クラスタにクラスタリングする第2クラスタリング処理を実行する。生成部132は、複数の第2クラスタの各々をさらに分割した複数の第3クラスタにクラスタリングする第3クラスタリング処理を実行する。
【0077】
生成部132は、複数のオブジェクトのうち一部のオブジェクトを含む第1オブジェクト群を対象として、第1クラスタリング処理を実行する。生成部132は、第1クラスタリング処理後に、複数のオブジェクトのうち第1オブジェクト群に含まれないオブジェクトを第1オブジェクト群に追加した第2オブジェクト群を対象として、第2クラスタリング処理を実行する。生成部132は、第2クラスタリング処理後に、複数のオブジェクトのうち第2オブジェクト群に含まれないオブジェクトを第2オブジェクト群に追加した第3オブジェクト群を対象として、第3クラスタリング処理を実行する。
【0078】
生成部132は、第1クラスタリング処理、第2クラスタリング処理、及び第3クラスタリング処理を実行することにより、クラスタリング情報を生成する。生成部132は、第1クラスタリング処理、第2クラスタリング処理及び第3クラスタリング処理による階層クラスタリングに基づくクラスタリング情報を生成する。
【0079】
生成部132は、第1オブジェクト群を対象として、第1階層のクラスタリングを行う第1クラスタリング処理を実行する。生成部132は、第2オブジェクト群を対象として、第1階層の下位の第2階層のクラスタリングを行う第2クラスタリング処理を実行する。生成部132は、第3オブジェクト群を対象として、第2階層の下位の第3階層のクラスタリングを行う第3クラスタリング処理を実行することにより、クラスタリング情報を生成する。
【0080】
生成部132は、第2クラスタリング処理において、第2オブジェクト群に追加されたオブジェクトの各々を、複数の第1クラスタのうち対応する第1クラスタに割り当てる第1割当処理を実行する。生成部132は、第1割当処理後における各第1クラスタに属するオブジェクトの数に応じて、各第1クラスタの各々に属する第2クラスタの数を決定する第2クラスタ数決定処理を実行する。
【0081】
生成部132は、各第1クラスタに属するオブジェクトの数が多い程、各第1クラスタの各々に属する第2クラスタの数を多くする第2クラスタ数決定処理を実行する。生成部132は、第2クラスタ数決定処理により決定された各第1クラスタの各々に属する第2クラスタの数に基づいて、第2クラスタリング処理を実行する。
【0082】
生成部132は、第3クラスタリング処理において、第3オブジェクト群に追加されたオブジェクトの各々を、複数の第2クラスタのうち対応する第2クラスタに割り当てる第2割当処理を実行する。生成部132は、第2割当処理後における各第2クラスタに属するオブジェクトの数に応じて、各第2クラスタの各々に属する第3クラスタの数を決定する第3クラスタ数決定処理を実行する。
【0083】
生成部132は、各第2クラスタに属するオブジェクトの数が多い程、各第2クラスタの各々に属する第3クラスタの数を多くする第3クラスタ数決定処理を実行する。生成部132は、第3クラスタ数決定処理により決定された各第2クラスタの各々に属する第3クラスタの数に基づいて、第3クラスタリング処理を実行する。
【0084】
生成部132は、データ検索で用いるクラスタリングを示すクラスタリング情報を生成する。生成部132は、グラフを利用したデータ検索で用いるクラスタリングを示すクラスタリング情報を生成する。
【0085】
生成部132は、グラフ情報記憶部125、量子化情報記憶部123、コードブック情報記憶部124に記憶される情報を生成してもよい。なお、情報処理装置100が量子化情報記憶部123、コードブック情報記憶部124、グラフ情報記憶部125等に記憶される情報を、情報提供装置50等の外部装置から取得する場合、生成部132は、量子化情報記憶部123、コードブック情報記憶部124、グラフ情報記憶部125等に記憶される情報を生成しなくてもよい。
【0086】
(検索処理部133)
検索処理部133は、オブジェクトに関する検索サービスを提供する。検索処理部133は、各種情報を探索する。検索処理部133は、各種情報を検索する。例えば、検索処理部133は、グラフを探索することにより、オブジェクトを検索する。例えば、検索処理部133は、取得部131により取得されたクエリが取得された場合、グラフを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索処理部133は、グラフを探索することにより、クエリに類似するオブジェクトを抽出する。なお、情報処理装置100は、検索サービスを提供しない場合、検索処理部133を有しなくてもよい。
【0087】
検索処理部133は、検索処理において各種情報を選択する。検索処理部133は、検索処理において各種情報を抽出する。検索処理部133は、検索処理において各種情報を判定する。検索処理部133は、検索処理において各種情報を決定する。検索処理部133は、検索処理において各種情報を変更する。検索処理部133は、検索処理において各種情報を更新する。
【0088】
検索処理部133は、上述したようなクラスタリングにより生成された情報を用いて、オブジェクトの検索処理を実行可能であれば、どのような手法により検索処理を行ってもよい。例えば、検索処理部133は、特許文献1に開示されるような検索フローに基づいて、検索処理を実行する。検索処理部133は、データ検索の対象となる複数のオブジェクトに関する接続対象をグラフ構造化したグラフインデックス(グラフ)を用いた検索処理を実行する。
【0089】
例えば、検索処理部133は、データ検索の対象となる複数のオブジェクトをグラフ構造化したオブジェクトグラフを用いた検索処理を実行する。検索処理部133は、データ検索の対象であるオブジェクトがベクトル化され、ノードとして連結されたオブジェクトグラフを用いて近傍検索を行う。検索処理部133は、オブジェクトを検索対象として、オブジェクトグラフを辿って与えられた検索クエリ(ベクトル)の近傍のオブジェクトを探索する。検索処理部133は、検索処理により、抽出する近傍のオブジェクトの数として指定された所定数(検索数)のオブジェクトを、検索クエリの近傍のオブジェクトとして抽出する。
【0090】
例えば、検索処理部133は、データ検索の対象となる複数のオブジェクトをクラスタリング(グルーピング)したクラスタ(グループ)をグラフ構造化したグループ連結グラフを用いた検索処理を実行する。検索処理部133は、データ検索の対象であるオブジェクトが分類されたグループ(ブロブ)がエッジで連結されたグループ連結グラフを用いて近傍検索を行う。検索処理部133は、グループ連結グラフの各グループ(ブロブ)に属するオブジェクトを検索対象のオブジェクトとして、グループ連結グラフを辿って与えられた検索クエリ(ベクトル)の近傍のオブジェクトを探索する。検索処理部133は、検索処理により、抽出する近傍のオブジェクトの数として指定された所定数(検索数)のオブジェクトを、検索クエリの近傍のオブジェクトとして抽出する。
【0091】
(提供部134)
提供部134は、各種情報を提供する。例えば、提供部134は、端末装置10や情報提供装置50に各種情報を送信する。例えば、提供部134は、検索クエリに対応するオブジェクトIDを検索結果として提供する。提供部134は、検索結果を端末装置10へ送信する。提供部134は、検索処理部133により検索されたオブジェクトIDを、検索クエリに対応する検索結果として端末装置10へ提供する。
【0092】
また、提供部134は、検索処理部133により検索されたオブジェクトIDを情報提供装置50へ提供してもよい。例えば、提供部134は、検索処理部133が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部134は、検索処理部133により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。
【0093】
〔1-4.情報処理のフロー〕
次に、
図5を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。
図5は、実施形態に係る情報処理の一例を示すフローチャートである。
【0094】
図5に示すように、情報処理装置100は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する(ステップS101)。そして、情報処理装置100は、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行する(ステップS102)。
【0095】
情報処理装置100は、一のクラスタリング処理において、一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する(ステップS103)。
【0096】
〔2.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、処理部(実施形態では生成部132)とを有する。取得部131は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する。処理部は、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象として複数のクラスタを生成するクラスタリング処理を複数回実行し、一のクラスタリング処理において、一のクラスタリング処理の前に実行された他のクラスタリング処理がある場合、他のクラスタリング処理により生成された複数のクラスタの各々をさらに分割する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成する。
【0097】
このように、実施形態に係る情報処理装置100は、クラスタリングの対象となる複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象として複数のクラスタを生成する階層クラスタリングにより、所定の処理で用いるクラスタリングを示すクラスタリング情報を生成することができる。したがって、情報処理装置100は、適切なクラスタリングを可能にすることができる。
【0098】
また、実施形態に係る情報処理装置100において、処理部は、所定のクラスタリング手法により、クラスタリング処理を複数回実行することにより、クラスタリング情報を生成する。
【0099】
このように、実施形態に係る情報処理装置100は、所定のクラスタリング手法により、クラスタリング処理を複数回実行して、クラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0100】
また、実施形態に係る情報処理装置100において、処理部は、k-meansに関する手法により、クラスタリング処理を複数回実行することにより、クラスタリング情報を生成する。
【0101】
このように、実施形態に係る情報処理装置100は、k-meansに関する手法により、クラスタリング処理を複数回実行して、クラスタリング情報を生成することにより、クラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0102】
また、実施形態に係る情報処理装置100において、処理部は、クラスタリング処理後に、複数のオブジェクトのうちオブジェクト群に含まれないオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させクラスタリング処理を繰り返すことにより、クラスタリング情報を生成する。
【0103】
このように、実施形態に係る情報処理装置100は、クラスタリング処理後に、複数のオブジェクトのうちオブジェクト群に含まれないオブジェクトをオブジェクト群に追加し、オブジェクト群を増加させクラスタリング処理を繰り返すことにより、クラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0104】
また、実施形態に係る情報処理装置100において、処理部は、オブジェクト群を増加させたクラスタリング処理をオブジェクト群に複数のオブジェクトが追加されるまで繰り返すことにより、クラスタリング情報を生成する。
【0105】
このように、実施形態に係る情報処理装置100は、オブジェクト群を増加させたクラスタリング処理をオブジェクト群に複数のオブジェクトが追加されるまで繰り返し、クラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0106】
また、実施形態に係る情報処理装置100において、処理部は、クラスタリング処理を3回実行することにより、クラスタリング情報を生成する。
【0107】
このように、実施形態に係る情報処理装置100は、クラスタリング処理を3回実行し、クラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0108】
また、実施形態に係る情報処理装置100において、処理部は、オブジェクト群を対象として、複数の第1クラスタにクラスタリングする第1クラスタリング処理を実行し、複数の第1クラスタの各々をさらに分割した複数の第2クラスタにクラスタリングする第2クラスタリング処理を実行し、複数の第2クラスタの各々をさらに分割した複数の第3クラスタにクラスタリングする第3クラスタリング処理を実行することにより、クラスタリング情報を生成する。
【0109】
このように、実施形態に係る情報処理装置100は、第1クラスタリング処理、第2クラスタリング処理、及び第3クラスタリング処理を実行し、クラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0110】
また、実施形態に係る情報処理装置100において、処理部は、複数のオブジェクトのうち一部のオブジェクトを含む第1オブジェクト群を対象として、第1クラスタリング処理を実行し、第1クラスタリング処理後に、複数のオブジェクトのうち第1オブジェクト群に含まれないオブジェクトを第1オブジェクト群に追加した第2オブジェクト群を対象として、第2クラスタリング処理を実行し、第2クラスタリング処理後に、複数のオブジェクトのうち第2オブジェクト群に含まれないオブジェクトを第2オブジェクト群に追加した第3オブジェクト群を対象として、第3クラスタリング処理を実行することにより、クラスタリング情報を生成する。
【0111】
このように、実施形態に係る情報処理装置100は、第1クラスタリング処理、第2クラスタリング処理、及び第3クラスタリング処理の度にオブジェクトを追加してクラスタリングを実行し、クラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0112】
また、実施形態に係る情報処理装置100において、処理部は、第1クラスタリング処理、第2クラスタリング処理及び第3クラスタリング処理による階層クラスタリングに基づくクラスタリング情報を生成する。
【0113】
このように、実施形態に係る情報処理装置100は、第1クラスタリング処理、第2クラスタリング処理及び第3クラスタリング処理による階層クラスタリングに基づくクラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0114】
また、実施形態に係る情報処理装置100において、処理部は、第1オブジェクト群を対象として、第1階層のクラスタリングを行う第1クラスタリング処理を実行し、第2オブジェクト群を対象として、第1階層の下位の第2階層のクラスタリングを行う第2クラスタリング処理を実行し、第3オブジェクト群を対象として、第2階層の下位の第3階層のクラスタリングを行う第3クラスタリング処理を実行することにより、クラスタリング情報を生成する。
【0115】
このように、実施形態に係る情報処理装置100は、第1クラスタリング処理、第2クラスタリング処理及び第3クラスタリング処理に基づく階層的なクラスタリングでクラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0116】
また、実施形態に係る情報処理装置100において、処理部は、第2クラスタリング処理において、第2オブジェクト群に追加されたオブジェクトの各々を、複数の第1クラスタのうち対応する第1クラスタに割り当てる第1割当処理を実行する。
【0117】
このように、実施形態に係る情報処理装置100は、第2クラスタリング処理において、第2オブジェクト群に追加されたオブジェクトの各々を、複数の第1クラスタのうち対応する第1クラスタに割り当てる第1割当処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0118】
また、実施形態に係る情報処理装置100において、処理部は、第1割当処理後における各第1クラスタに属するオブジェクトの数に応じて、各第1クラスタの各々に属する第2クラスタの数を決定する第2クラスタ数決定処理を実行する。
【0119】
このように、実施形態に係る情報処理装置100は、第1割当処理後における各第1クラスタに属するオブジェクトの数に応じて、各第1クラスタの各々に属する第2クラスタの数を決定する第2クラスタ数決定処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0120】
また、実施形態に係る情報処理装置100において、処理部は、各第1クラスタに属するオブジェクトの数が多い程、各第1クラスタの各々に属する第2クラスタの数を多くする第2クラスタ数決定処理を実行する。
【0121】
このように、実施形態に係る情報処理装置100は、各第1クラスタに属するオブジェクトの数が多い程、各第1クラスタの各々に属する第2クラスタの数を多くする第2クラスタ数決定処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0122】
また、実施形態に係る情報処理装置100において、処理部は、第2クラスタ数決定処理により決定された各第1クラスタの各々に属する第2クラスタの数に基づいて、第2クラスタリング処理を実行する。
【0123】
このように、実施形態に係る情報処理装置100は、第2クラスタ数決定処理により決定された各第1クラスタの各々に属する第2クラスタの数に基づいて、第2クラスタリング処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0124】
また、実施形態に係る情報処理装置100において、処理部は、第3クラスタリング処理において、第3オブジェクト群に追加されたオブジェクトの各々を、複数の第2クラスタのうち対応する第2クラスタに割り当てる第2割当処理を実行する。
【0125】
このように、実施形態に係る情報処理装置100は、第3クラスタリング処理において、第3オブジェクト群に追加されたオブジェクトの各々を、複数の第2クラスタのうち対応する第2クラスタに割り当てる第2割当処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0126】
また、実施形態に係る情報処理装置100において、処理部は、第2割当処理後における各第2クラスタに属するオブジェクトの数に応じて、各第2クラスタの各々に属する第3クラスタの数を決定する第3クラスタ数決定処理を実行する。
【0127】
このように、実施形態に係る情報処理装置100は、第2割当処理後における各第2クラスタに属するオブジェクトの数に応じて、各第2クラスタの各々に属する第3クラスタの数を決定する第3クラスタ数決定処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0128】
また、実施形態に係る情報処理装置100において、処理部は、各第2クラスタに属するオブジェクトの数が多い程、各第2クラスタの各々に属する第3クラスタの数を多くする第3クラスタ数決定処理を実行する。
【0129】
このように、実施形態に係る情報処理装置100は、各第2クラスタに属するオブジェクトの数が多い程、各第2クラスタの各々に属する第3クラスタの数を多くする第3クラスタ数決定処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0130】
また、実施形態に係る情報処理装置100において、処理部は、第3クラスタ数決定処理により決定された各第2クラスタの各々に属する第3クラスタの数に基づいて、第3クラスタリング処理を実行する。
【0131】
このように、実施形態に係る情報処理装置100は、第3クラスタ数決定処理により決定された各第2クラスタの各々に属する第3クラスタの数に基づいて、第3クラスタリング処理を実行することにより、適切なクラスタリングを可能にすることができる。
【0132】
また、実施形態に係る情報処理装置100において、取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。処理部は、データ検索で用いるクラスタリングを示すクラスタリング情報を生成する。
【0133】
このように、実施形態に係る情報処理装置100は、データ検索で用いるクラスタリングを示すクラスタリング情報を生成することにより、適切なクラスタリングを可能にすることができる。
【0134】
〔3.ハードウェア構成〕
上述してきた各実施形態に係る情報処理装置100は、例えば
図6に示すような構成のコンピュータ1000によって実現される。
図6は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
【0135】
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0136】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
【0137】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
【0138】
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0139】
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
【0140】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0141】
〔4.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0142】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0143】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0144】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0145】
1 情報処理システム
10 端末装置
50 情報提供装置
100 情報処理装置
120 記憶部
121 オブジェクト情報記憶部
122 クラスタリング情報記憶部
123 量子化情報記憶部
124 コードブック情報記憶部
125 グラフ情報記憶部
130 制御部
131 取得部
132 生成部(処理部)
133 検索処理部
134 提供部