(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-11
(45)【発行日】2023-01-19
(54)【発明の名称】情報処理装置、情報処理方法、情報処理プログラム、情報検索装置、情報検索方法、及び情報検索プログラム
(51)【国際特許分類】
G06F 16/245 20190101AFI20230112BHJP
G06F 16/28 20190101ALI20230112BHJP
【FI】
G06F16/245
G06F16/28
(21)【出願番号】P 2020133955
(22)【出願日】2020-08-06
【審査請求日】2021-08-19
【新規性喪失の例外の表示】特許法第30条第2項適用 公開日 令和2年3月25日 令和2年8月7日時点における本願に関連するソフトウェアを公開するページ https://github.com/yahoojapan/NGT/releases/tag/v1.10.0
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】岩崎 雅二郎
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特開2019-194815(JP,A)
【文献】特開2017-134582(JP,A)
【文献】岩崎 雅二郎,外1名,「木構造型インデックスを用いた近似k最近傍グラフによる近傍検索」,情報処理学会論文誌 論文誌ジャーナル,日本,一般社団法人情報処理学会,2011年02月15日,第52巻 Vol.52 No.2 ,p.817-828
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値
であって、前記近似検索を要求するユーザが指定した指定値を、前記ユーザが利用する端末装置から取得し、前記評価指標の値に対応する前記近似検索で用いるパラメータの値を示す変換用情報
を記憶部から取得する取得部と、
前記取得部により取得された前記変換用情報に基づいて、前記
ユーザが指定した前記指定値を
、前記ユーザに結果を提供するための前記近似検索で用いる前記パラメータの値に変換する変換部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記取得部は、
前記複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフを前記インデックスとして用いた前記近似検索の前記指定値を取得し、
前記変換部は、
前記評価指標の前記指定値を、前記グラフを用いた前記近似検索で用いる前記パラメータの値に変換する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記パラメータは、
前記グラフを用いた検索処理における探索範囲を決定するための係数である検索範囲係数である
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記取得部は、
前記評価指標の各値と前記パラメータの各値との対応関係を示すルックアップテーブルを前記変換用情報として取得し、
前記変換部は、
前記ルックアップテーブルを参照して、前記評価指標の前記指定値を前記近似検索で用いる前記パラメータの値に変換する
ことを特徴とする請求項1~3のいずれか1項に記載の情報処理装置。
【請求項5】
前記インデックスを用いた検索処理を含む生成処理により、前記ルックアップテーブルを生成する生成部、
をさらに備えることを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記生成部は、
前記複数のオブジェクトから選択された評価用オブジェクトに基づく評価用クエリを用いた前記検索処理を含む前記生成処理により、前記ルックアップテーブルを生成する
ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記生成部は、
前記複数のオブジェクトから選択された複数の評価用オブジェクトを用いて生成される評価用クエリを用いた前記検索処理を含む前記生成処理により、前記ルックアップテーブルを生成する
ことを特徴とする請求項5または請求項6に記載の情報処理装置。
【請求項8】
前記生成部は、
前記複数の評価用オブジェクトの平均を前記評価用クエリとする前記検索処理を含む前記生成処理により、前記ルックアップテーブルを生成する
ことを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記生成部は、
前記評価用クエリを用いた前記近似検索の結果である近似正解検索結果を生成し、生成した前記近似正解検索結果を用いた前記評価指標を測定する測定処理を含む前記生成処理により、前記ルックアップテーブルを生成する
ことを特徴とする請求項6~8のいずれか1項に記載の情報処理装置。
【請求項10】
前記生成部は、
前記インデックスがグラフである場合、当該グラフを用いた検索処理における探索範囲を決定するための係数である検索範囲係数を調整することにより、前記近似正解検索結果を生成する
ことを特徴とする請求項9に記載の情報処理装置。
【請求項11】
前記生成部は、
前記検索範囲係数の値を第1値から増加させ、前記近似検索の結果に新たなオブジェクトが出現しなくなった時点の第2値を、前記近似正解検索結果を生成する際の前記検索範囲係数の値として用いる
ことを特徴とする請求項10に記載の情報処理装置。
【請求項12】
前記生成部は、
前記複数のオブジェクトから前記評価用オブジェクトを除いたオブジェクト群を検索対象とする前記インデックスを用いた前記検索処理を含む前記生成処理により、前記ルックアップテーブルを生成する
ことを特徴とする請求項6~11のいずれか1項に記載の情報処理装置。
【請求項13】
前記生成部は、
前記パラメータの複数の値の各々を用いた前記検索処理により得られた前記評価指標の複数の値の各々を、対応する前記パラメータの複数の値の各々に対応付ける前記生成処理により、前記ルックアップテーブルを生成する
ことを特徴とする請求項5~12のいずれか1項に記載の情報処理装置。
【請求項14】
前記生成部は、
前記ルックアップテーブルを用いて、前記評価指標の値を入力として、入力された前記評価指標の値に対応する前記パラメータに値を出力する関数を生成する
ことを特徴とする請求項5~13のいずれか1項に記載の情報処理装置。
【請求項15】
前記取得部は、
前記評価指標の値を入力として、入力された前記評価指標の値に対応する前記パラメータに値を出力する関数を前記変換用情報として取得し、
前記変換部は、
前記評価指標の前記指定値を前記関数に入力することにより、前記評価指標の前記指定値を前記近似検索で用いる前記パラメータの値に変換する
ことを特徴とする請求項1~3のいずれか1項に記載の情報処理装置。
【請求項16】
前記近似検索を、前記変換用情報に基づいて前記評価指標の前記指定値が変換された前記パラメータの値を用いて実行する検索部、
ことを特徴とする請求項1~15のいずれか1項に記載の情報処理装置。
【請求項17】
前記評価指標は、
前記インデックスを用いた検索処理の検索精度である
ことを特徴とする請求項1~16のいずれか1項に記載の情報処理装置。
【請求項18】
前記評価指標は、
前記インデックスを用いた検索処理の処理時間である
ことを特徴とする請求項1~16のいずれか1項に記載の情報処理装置。
【請求項19】
前記複数のオブジェクトの各々は、
電子商取引サービスにおいて取引される取引対象に対応する
ことを特徴とする請求項1~18のいずれか1項に記載の情報処理装置。
【請求項20】
コンピュータが実行する情報処理方法であって、
複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値
であって、前記近似検索を要求するユーザが指定した指定値を、前記ユーザが利用する端末装置から取得し、前記評価指標の値に対応する前記近似検索で用いるパラメータの値を示す変換用情報
を記憶部から取得する取得工程と、
前記取得工程により取得された前記変換用情報に基づいて、前記
ユーザが指定した前記指定値を
、前記ユーザに結果を提供するための前記近似検索で用いる前記パラメータの値に変換する変換工程と、
を含むことを特徴とする情報処理方法。
【請求項21】
複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値
であって、前記近似検索を要求するユーザが指定した指定値を、前記ユーザが利用する端末装置から取得し、前記評価指標の値に対応する前記近似検索で用いるパラメータの値を示す変換用情報
を記憶部から取得する取得手順と、
前記取得手順により取得された前記変換用情報に基づいて、前記
ユーザが指定した前記指定値を
、前記ユーザに結果を提供するための前記近似検索で用いる前記パラメータの値に変換する変換手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項22】
複数のオブジェクトを検索対象とするインデックスと、前記インデックスを用いた近似検索の評価指標の値を指定する指定値
であって、前記近似検索を要求するユーザが指定した指定値とを、前記ユーザが利用する端末装置から取得し、前記評価指標の値に対応する前記近似検索で用いるパラメータの値を示す変換用情報
を記憶部から取得する取得部と、
前記ユーザに結果を提供するための前記近似検索を、前記変換用情報に基づいて前記
ユーザが指定した前記指定値が変換された前記パラメータの値を用いて実行する検索部と、
を備えることを特徴とする情報検索装置。
【請求項23】
コンピュータが実行する情報検索方法であって、
複数のオブジェクトを検索対象とするインデックスと、前記インデックスを用いた近似検索の評価指標の値を指定する指定値
であって、前記近似検索を要求するユーザが指定した指定値とを、前記ユーザが利用する端末装置から取得し、前記評価指標の値に対応する前記近似検索で用いるパラメータの値を示す変換用情報
を記憶部から取得する取得工程と、
前記ユーザに結果を提供するための前記近似検索を、前記変換用情報に基づいて前記
ユーザが指定した前記指定値が変換された前記パラメータの値を用いて実行する検索工程と、
を含むことを特徴とする情報検索方法。
【請求項24】
複数のオブジェクトを検索対象とするインデックスと、前記インデックスを用いた近似検索の評価指標の値を指定する指定値
であって、前記近似検索を要求するユーザが指定した指定値とを、前記ユーザが利用する端末装置から取得し、前記評価指標の値に対応する前記近似検索で用いるパラメータの値を示す変換用情報
を記憶部から取得する取得手順と、
前記ユーザに結果を提供するための前記近似検索を、前記変換用情報に基づいて前記評価指標の前記指定値が変換された前記パラメータの値を用いて実行する検索手順と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、情報処理プログラム、情報検索装置、情報検索方法、及び情報検索プログラムに関する。
【背景技術】
【0002】
従来、様々なインデックスを用いて近似検索を行う技術が提供されている。例えば、有向エッジや無向エッジによってノード間が接続されたグラフインデックスを用いて近似検索を行う技術が提供されている。このような近似検索の技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2011-090351号公報
【文献】特許第5208001号公報
【文献】特許第6293335号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記の従来技術では、適切なパラメータの値を用いた近似検索を行うことが難しい場合がある。例えば、近似検索を行うユーザには通常、所望の検索精度や検索時間等について要求する基準(評価指標)がある。そのため、ユーザが所望する評価指標を満たす近似検索を行うために、パラメータを調整して評価指標を測定する等の試行錯誤を繰り返して、所望の検索精度や検索時間となるパラメータを求めなければならない。このように、ユーザが所望する評価指標を満たすためのパラメータをユーザ自身が求めるにはコストが大きく、また試行錯誤のやり方によっては適切なパラメータが求まらない可能性がある。
【0005】
本願は、上記に鑑みてなされたものであって、適切なパラメータの値を用いた近似検索を可能にする情報処理装置、情報処理方法、情報処理プログラム、情報検索装置、情報検索方法、及び情報検索プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本願に係る情報処理装置は、複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値と、前記評価指標の値に対応する前記近似検索で用いるパラメータの値を示す変換用情報とを取得する取得部と、前記取得部により取得された前記変換用情報に基づいて、前記評価指標の前記指定値を前記近似検索で用いる前記パラメータの値に変換する変換部と、を備えたことを特徴とする。
【発明の効果】
【0007】
実施形態の一態様によれば、適切なパラメータの値を用いた近似検索を可能にすることができるという効果を奏する。
【図面の簡単な説明】
【0008】
【
図1】
図1は、実施形態に係る情報処理の一例を示す図である。
【
図2】
図2は、実施形態に係る情報処理の一例を示す図である。
【
図3】
図3は、ツリーインデックスの一例を示す図である。
【
図4】
図4は、実施形態に係る情報処理システムの構成例を示す図である。
【
図5】
図5は、実施形態に係る情報処理装置の構成例を示す図である。
【
図6】
図6は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【
図7】
図7は、実施形態に係るツリー情報記憶部の一例を示す図である。
【
図8】
図8は、実施形態に係るグラフ情報記憶部の一例を示す図である。
【
図9】
図9は、実施形態に係る近似正解検索結果情報記憶部の一例を示す図である。
【
図10】
図10は、実施形態に係る変換用情報記憶部の一例を示す図である。
【
図11】
図11は、実施形態に係る情報処理の一例を示すフローチャートである。
【
図12】
図12は、実施形態に係る情報処理の一例を示すフローチャートである。
【
図13】
図13は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理装置、情報処理方法、情報処理プログラム、情報検索装置、情報検索方法、及び情報検索プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、情報処理プログラム、情報検索装置、情報検索方法、及び情報検索プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0010】
(実施形態)
〔1.情報処理〕
以下では、
図1及び
図2を用いて、情報処理装置100が実行する情報処理について説明する。なお、以下では、グラフインデックス(単に「グラフ」ともいう)を用いた近似検索を、インデックスを用いた近似検索の一例として説明するが、インデックスを用いた近似検索は、インデックスを用いた近似検索であれば、どのような近似検索であってもよい。例えば、インデックスを用いた近似検索(単に「近似検索」ともいう)は、直積量子化を利用した近似検索、ハッシュを利用した近似検索、木構造のインデックス(「ツリーインデックス」ともいう)を用いた近似検索等であってもよい。すなわち、近似検索に用いるインデックスは、グラフに限らず、ツリーインデックス、コードブック等の直積量子化を利用した近似検索で用いるインデックス、ハッシュテーブル等のハッシュを利用した近似検索で用いるインデックス等であってもよい。
【0011】
例えば、近似検索とは、検索漏れが生じ得る検索であり、正しい検索結果を近似する検索である。近似検索は、検索クエリ(単に「クエリ」ともいう)に対して、検索対象となる複数のオブジェクトから、そのクエリに近いオブジェクトを検索し、検索漏れが生じ得る近似近傍検索を含む概念である。以下では、クエリとして用いる検索対象オブジェクトに対して、検索対象となる複数のオブジェクトから、その検索対象オブジェクトのベクトルに類似するベクトルのオブジェクトを検索する近似近傍検索を近似検索の一例として示す。
【0012】
また、詳細は後述するが再現率を、インデックスを用いた近似検索の検索精度の一例として説明するが、検索精度は再現率に限らず、検索処理の精度が示すものであればどのような指標であってもよい。なお、評価指標は、検索精度に限らず、検索時間や距離計算回数やノードのアクセス数等、種々の指標が用いられてもよい。また、以下では、検索範囲係数を、近似検索で用いるパラメータの一例として説明するが、パラメータは検索範囲係数に限らず、近似検索で用いるパラメータであれば、グラフの検索時に参照するエッジ数(参照エッジ数)等の様々なパラメータであってもよい。なお、検索範囲係数の詳細については後述する。
【0013】
また、以下では、検索精度と検索範囲係数との対応関係を示すルックアップテーブルを、評価指標の値に対応する近似検索で用いるパラメータの値を示す情報(「変換用情報」ともいう)の一例として示す。なお、変換用情報は、評価指標の値をパラメータの値に変換することができれば、ルックアップテーブルに限らず、評価指標の値を入力として、パラメータの値を出力する関数(近似関数)等の様々な情報であってもよい。
【0014】
〔2-1.生成処理〕
ここから、
図1を用いて、変換用情報の一例であるルックアップテーブルを生成する処理(「生成処理」ともいう)について説明する。
図1は、実施形態に係る情報処理の一例を示す図である。
【0015】
図1の例では、情報処理装置100は、オブジェクトOB1、OB2、OB3、OB101等の複数のオブジェクトを含むデータセットDS1を用いて、検索精度の値を検索範囲係数の値に変換するルックアップテーブルTB1(
図2参照)を生成する。データセットDS1中の各オブジェクトは、ベクトル化され、ベクトル化されたオブジェクト(ベクトル情報)を対象として、後述する検索処理などの各種処理を行う。なお、データセットDS1に含まれ検索対象となる情報(オブジェクト)は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報(単に「画像」ともいう)を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。
【0016】
また、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。例えば、情報処理装置100は、オブジェクト情報記憶部121(
図6参照)からデータセットDS1を取得する。
【0017】
まず、情報処理装置100は、評価用クエリを決定する(ステップS1)。情報処理装置100は、与えられたデータセットからクエリオブジェクトセットを生成する。情報処理装置100は、データセットからランダムに選択したオブジェクト、または、ランダムに選択した二つ以上のオブジェクトの平均値を、クエリオブジェクト(評価用クエリ)に決定する。これにより、情報処理装置100は、データセットに含まれないオブジェクトを評価用クエリとすることができる。
【0018】
図1の例では、情報処理装置100は、データセットDS1から評価用クエリの生成に用いるオブジェクトを選択する。例えば、情報処理装置100は、データセットDS1からランダムに二つ以上の所定数のオブジェクトを評価用オブジェクトとして選択する。情報処理装置100は、データセットDS1からオブジェクトOB500とオブジェクトOB1000との2つのオブジェクトを評価用オブジェクトとして選択する。そして、情報処理装置100は、オブジェクトOB500とオブジェクトOB1000との平均である「7,35,13,93...」の多次元のベクトル情報を生成する。このように、
図1の例では、情報処理装置100は、評価用クエリRQ1に示すように、オブジェクトOB500とオブジェクトOB1000とに基づいて、クエリQE1を生成する。これにより、情報処理装置100は、「7,35,13,93...」の多次元のベクトル情報であるクエリQE1を評価用クエリに決定する。
【0019】
なお、上記は一例であり、情報処理装置100は、種々の情報を適宜用いて、評価用クエリを決定してもよい。情報処理装置100は、近傍の複数点の平均を評価用クエリとしてもよい。情報処理装置100は、二つより多い、例えば三つのオブジェクトの平均値を、クエリオブジェクト(評価用クエリ)に決定してもよい。平均値を求める複数のオブジェクトは、ランダムに選択した一つのオブジェクトと、そのオブジェクトに対して距離が近いオブジェクトを一つ以上選択したオブジェクトとしてもよい。
【0020】
また、情報処理装置100は、データセットDS1から選択した1つのオブジェクト(選択オブジェクト)と、その選択オブジェクト以外のオブジェクトとを用いて、クエリオブジェクト(評価用クエリ)を生成してもよい。生成済みのグラフがある場合、情報処理装置100は、選択オブジェクトに対応するノード(選択ノード)と、その選択ノードからのエッジが接続されたノードに対応するオブジェクトとを用いて、評価用クエリを生成してもよい。例えば、情報処理装置100は、選択オブジェクトに対応するノード(選択ノード)と、その選択ノードからのエッジが接続されたノードに対応するオブジェクト(接続オブジェクト)とを用いて、評価用クエリを生成してもよい。例えば、情報処理装置100は、選択オブジェクトと、接続オブジェクトのうち最も近いオブジェクトとの平均値を、評価用クエリに決定してもよい。例えば、情報処理装置100は、選択オブジェクトと、接続オブジェクトのうち最も遠いオブジェクトとの平均値を、評価用クエリに決定してもよい。例えば、情報処理装置100は、選択オブジェクトと、全接続オブジェクトとの平均値を、評価用クエリに決定してもよい。なお、情報処理装置100は、選択オブジェクトをランダムに選択してもよいし、所定の基準を基に選択してもよい。
【0021】
また、例えば、情報処理装置100は、後述するグラフ生成にデータセットのうち一部のオブジェクトが用いられる場合、データセットのうちグラフに含まれないオブジェクトを評価用クエリとして用いてもよい。情報処理装置100は、グラフ(インデックス)に登録しないオブジェクトを用意して評価用クエリとして用いてもよい。情報処理装置100は、生成したグラフから、一部のオブジェクトに対応するノードを削除して、削除したノードに対応するオブジェクトを評価用クエリとして用いてもよい。また、各次元ごとに、そのデータ分布に従ったランダムデータを生成した上で、ベクトルを生成しても良い。
【0022】
そして、情報処理装置100は、グラフを生成する(ステップS2)。情報処理装置100は、与えられたデータセットのすべて、または、一部のデータに対してグラフを作成する。例えば、情報処理装置100は、データセットDS1中の全オブジェクトを用いて、グラフを生成してもよいし、データセットDS1のうち一部のオブジェクトを用いて、グラフを生成してもよい。上述したように、情報処理装置100は、データセットDS1のうち、評価用オブジェクトとして用いるオブジェクトを除く、オブジェクト群を用いて、グラフを生成してもよい。情報処理装置100は、評価用オブジェクトとして用いるデータセットDS1のうち、オブジェクトOB500とオブジェクトOB1000を除いたオブジェクト群を用いて、グラフを生成してもよい。
【0023】
図1の例では、情報処理装置100は、データセットDS1中の全オブジェクトを用いて、グラフGR11を生成する。情報処理装置100は、グラフ生成に関する種々の技術を適宜用いて、グラフGR11を生成する。ここで、グラフGR11について説明する。
図1に示すグラフGR11は、データセットDS1に含まれる各オブジェクトに対応するノードが有向エッジで連結されたグラフ情報を示す。なお、
図1中のグラフGR11に示すようなグラフ情報は、情報処理装置100が生成する場合に限らず、情報処理装置100は、
図1中のグラフGR11に示すようなグラフ情報を情報提供装置50(
図4参照)等の他の外部装置から取得してもよい。
【0024】
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て無向エッジ(双方向エッジ)であってもよい。
【0025】
例えば、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【0026】
また、
図1中のグラフGR11には、データセットDS1中の多数のオブジェクト(ノード)が含まれるが、図面においてはその一部のみを図示する。例えば、情報処理装置100は、
図1中のグラフGR11に示すように、ノードN1~N3、N43、N53等の複数のノード(ベクトル)を含むグラフ情報を生成する。
図1の例では、説明を簡単にするために、5個のノードを図示して処理の概要を説明するが、グラフGR11にはデータセットDS1中のオブジェクト数に対応する数のノードが含まれる。
【0027】
図1の例では、例えば、情報処理装置100は、各オブジェクトに対応する各ノードから所定数以上の出力エッジが他のエッジに連結されるように、グラフGR11を生成する。情報処理装置100は、グラフGR11における各ノードが、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結されるようにグラフGR11を生成する。例えば、所定数は、オブジェクトの数またはグラフの目的や用途等に応じて、2や5や10や100等の種々の値であってもよい。例えば、所定数が2である場合、ノードN1からは、ノードN1からの距離が最も近いノード及び2番目に距離が近い2個のノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離等の種々の距離が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
【0028】
このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
【0029】
また、
図1中のグラフGR11では、ノードN1は、ノードN53へ向かう有向エッジであるエッジE2が連結される。すなわち、ノードN1は、ノードN53とエッジE2により連結される。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE31」と記載した場合、そのエッジはエッジID「E31」により識別されるエッジである。例えば、ノードN1を参照元とし、ノードN53を参照先として連結されるエッジE2により、ノードN1からノードN53に辿ることが可能となる。この場合、有向エッジであるエッジE2は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN53を中心として識別される場合、入力エッジとなる。
【0030】
言い換えると、有向エッジであるエッジE2は、ノードN1側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードN53側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。また、
図1では図示を省略するが、ノードN53は、ノードN1へ向かう有向エッジ(エッジE531とする)が連結されてもよい。このように、ノードN53からの出力エッジであるエッジE531がノードN1に連結されてもよい。この場合、ノードN1とノードN53との間には、ノードN1からノードN53へ向かう有向エッジであるエッジE2と、ノードN53からノードN1へ向かう有向エッジであるエッジE531との2個のエッジが連結される。
【0031】
また、
図1中のグラフGR11は、ユークリッド空間であってもよい。また、
図1に示すグラフGR11は、各ベクトル間の距離等の説明のための概念的な図であり、グラフGR11は、多次元空間である。例えば、
図1に示すグラフGR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。なお、各ノードに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。
【0032】
また、
図1の例では、グラフGR11においては、適宜「ノードN*(*は任意の数値)」の図示を省略し、各ノードに対応する「○」内に「ノードN*」の「*」の値を付すことにより表現する。すなわち、「ノードN*」の部分の「*」が一致するノードに対応する。例えば、グラフGR11中の左上の「○」であって、内部に「43」が付された「○」は、ノードID「N43」により識別されるノード(ノードN43)に対応する。
【0033】
ここで、各ノード間の距離は、ノード(画像)の類似性を示し、距離が近いほど類似している。本実施形態においては、グラフGR11における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する画像の類似性が、グラフGR11内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、
図1の例では、グラフGR11における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフGR11における各ノード間の距離が長いオブジェクト同士の類似度が低い。
【0034】
例えば、
図1中のグラフGR11において、ノードN43とノードN2とは近接している、すなわち距離が短い(近い)。そのため、ノードN43に対応するオブジェクトと、ノードN2に対応するオブジェクトとは類似度が高いことを示す。また、
図1中のグラフGR11において、ノードN43とノードN53とは遠隔にある、すなわち距離が長い(遠い)。そのため、ノードN43に対応するオブジェクトと、ノードN53に対応するオブジェクトとは類似度が低いことを示す。なお、上記は一例であり、情報処理装置100は、種々の条件を用いて、グラフを生成してもよい。例えば、情報処理装置100は、各オブジェクトに対応する各ノードから所定の数以上の入力エッジが他のエッジから連結されるように、グラフGR11を生成してもよい。
【0035】
そして、情報処理装置100は、近似正解検索結果を取得する(ステップS3)。情報処理装置100は、クエリQE1を対象とする近似正解検索結果を取得する。情報処理装置100は、クエリQE1を用いて、k個(kは任意の数)のノードを近似ノードとして抽出した結果を示す近似正解検索結果を取得する。情報処理装置100は、近似正解検索結果情報記憶部124(
図9参照)からクエリQE1に対応する近似正解検索結果を取得する。
【0036】
ここで、精確な正解検索結果を生成するには、すべてのオブジェクトとの距離を計算する必要があり、大規模なデータセットの場合には現実的な時間でできない。そのため、情報処理装置100が近似正解検索結果を生成する場合、評価用クエリに対して正解検索結果を得る代わりに、何らかの評価対象のインデックスを用いて近似検索結果を事前に取得する。例えば、情報処理装置100は、近似検索(近傍検索)に関する種々の技術を適宜用いて、クエリQE1に対応する近似正解検索結果を生成する。
【0037】
例えば、情報処理装置100は、
図12に示すような処理により、クエリQE1に対応する近似正解検索結果を生成する。この場合、情報処理装置100は、後述する検索範囲係数「ε」の値を所定値以上大きくした値(「正解生成用値」とする)に設定して、
図12に示すような(検索)処理をグラフGR11を用いて行うことにより、クエリQE1に対応する近似正解検索結果を生成する。これにより、情報処理装置100は、すべてのオブジェクトとの距離を計算して正解情報を生成する場合に比べて、処理時間を短くすることができる。なお、上記は一例であり、すべてのオブジェクトとの距離を計算して正解情報を生成するよりも短い処理時間で、近似正解検索結果を生成することができれば、情報処理装置100は、どのような処理により、近似正解検索結果を生成してもよい。
【0038】
ここで、検索範囲係数「ε」の概念について簡単に説明する。
図1中のグラフGR11-1は、グラフGR11であり、「○」内に「Q」を記載したクエリQE1に対応する範囲AR1及び範囲AR2を図示するために、ノードのみを図示し、エッジの図示を省略したものである。情報処理装置100は、クエリQE1を中心とする半径r内の範囲AR1と、クエリQE1を中心とする半径r(1+ε)内の範囲AR2とを用いて、グラフGR11を検索し、近似ノードを抽出する。このように、情報処理装置100は、検索範囲係数「ε」を適用した処理により、近似ノードを抽出する処理を行うが、検索範囲係数「ε」を用いた処理の詳細は
図12において説明する。
【0039】
上述した係数「ε」の正解生成用値の導出の点について記載する。まず、近似正解検索結果と正解データとして利用する場合、検索範囲係数「ε」を所定値以上に大きくした正解生成用値に設定することが望ましいが、検索範囲係数「ε」を大きくすると処理時間が増大する。そのため、十分な精度を得られ、かつ値ができる限り小さい検索範囲係数「ε」を求める必要がある。そこで、情報処理装置100は、検索範囲係数「ε」を徐々に大きくして、検索結果に新たなオブジェクトを出現しなくなった時点の検索範囲係数「ε」の値を、近似正解検索結果(正解データ)を得る際に用いる検索範囲係数「ε」の値とする。例えば、情報処理装置100は、検索範囲係数の値を第1値(例えば0や0.05等)から所定の間隔(例えば0.05や0.1等)で増加させ、近似検索の結果に新たなオブジェクトが出現しなくなった時点の第2値を、近似正解検索結果を生成する際の検索範囲係数の値として用いる。なお、検索範囲係数「ε」の正解生成用値の導出は、近似正解検索結果(正解データ)の生成前であればいずれの時点で行われてもよく、情報処理装置100以外の装置が行ってもよい。
【0040】
図1の例では、情報処理装置100は、クエリQE1に対応する近似正解検索結果RR1を生成する。近似正解検索結果RR1に示すように、クエリQE1に対応する近似正解情報は、Noが「1」である、すなわち最も近傍のノードがオブジェクトOB101に対応するノードであることを示す。また、クエリQE1に対応する近似正解情報は、Noが「k」である、すなわち最も遠いノード(最遠オブジェクト)がオブジェクトOB55に対応するノードであることを示す。情報処理装置100は、近似正解検索結果RR1を用いて、後述する測定処理等の処理を行う。
【0041】
そして、情報処理装置100は、パラメータの値を設定する(ステップS4)。情報処理装置100は、パラメータである検索範囲係数「ε」の値を初期値(例えば0や0.01等)に設定する。以下、設定されたパラメータの値を測定対象値とする場合がある。
図1では、情報処理装置100は、検索範囲係数「ε」の測定対象値を「VL21」に設定する。
【0042】
そして、情報処理装置100は、設定したパラメータの値(測定対象値)を用いてグラフGR11の評価指標を測定する測定処理を行う(ステップS5)。これにより、情報処理装置100は、パラメータを測定対象値に設定した場合のグラフGR11の評価指標の値を得ることができる。
図1の例では、情報処理装置100は、設定した検索範囲係数「ε」の値を用いてグラフGR11の再現率である検索精度を測定する測定処理を行う。
【0043】
ここでいう再現率は、「(正解検索結果の中で実際に検索された結果)/(正解検索結果)」で得られる。すなわち、再現率は、精度測定対象となる検索処理における「正解検索結果の中で実際に検索された結果」を、「正解検索結果」で除算することにより算出される。なお、検索範囲係数「ε」以外のパラメータについては、グラフGR11が用いられる際の設定値(デフォルト値)が用いられてもよい。例えば、参照エッジ数は、全エッジを対象とする値に設定されてもよいし、所定値に設定されてもよい。
【0044】
情報処理装置100は、設定したパラメータの測定対象値を用いて、評価用クエリを対象として検索処理を行い、抽出した検索結果を用いて、再現率を検索精度として算出する。情報処理装置100は、その検索処理の時間を計測してもよい。具体的には、情報処理装置100は、
図12に示す検索処理を行い、評価用クエリの近似ノードを取得する。そして、情報処理装置100は、検索処理により取得した近似ノードと、近似正解検索結果とを比較することで、設定した検索範囲係数「ε」の測定対象値での検索精度(再現率)の値を測定する。
図1では、情報処理装置100は、検索範囲係数「ε」の値が「VL21」である場合、検索精度(再現率)の値が「VL11」である測定する。
【0045】
そして、情報処理装置100は、パラメータの値と評価指標の値とを対応付けて記憶する(ステップS6)。情報処理装置100は、ルックアップテーブルTB1-1に示すように、検索範囲係数「ε」の値「VL21」に、再現率である検索精度の値「VL11」を対応付けて記憶する。
【0046】
また、情報処理装置100は、変換用情報の生成が完了したか否かを判定する(ステップS7)。例えば、情報処理装置100は、閾値(例えば10回や50回等)を用いて、測定処理を繰り返した回数がその閾値以上になった場合、変換情報を生成したと判定する。
【0047】
情報処理装置100は、変換用情報の生成が完了していないと判定した場合(ステップS7:No)、パラメータの値を変更する(ステップS8)。例えば、情報処理装置100は、パラメータの測定対象値を変更する。
図1では、情報処理装置100は、検索範囲係数「ε」の測定対象値を所定値だけ増加させることにより、検索範囲係数「ε」の測定対象値を変更する。例えば、情報処理装置100は、検索範囲係数「ε」の測定対象値を「VL21」から「VL22」に変更する。そして、情報処理装置100は、ステップS5に戻り、変更した測定対象値を用いて処理を繰り返す。情報処理装置100は、変換用情報の生成が完了した場合(ステップS7:Yes)、処理を終了する。これにより、情報処理装置100は、検索精度と検索範囲係数との対応関係を示すルックアップテーブルTB1(
図2参照)を生成する。このように、情報処理装置100は、検索時のパラメータとなる検索範囲係数「ε」の値を変化させて検索精度を求めてルックアップテーブルを作成する。
【0048】
上述のように、情報処理装置100は、パラメータの値を変更して、評価指標を測定する処理を繰り返すことにより、評価指標の値に対応するパラメータの値を導出するための変更要情報を適切に生成することができる。なお、情報処理装置100が生成するルックアップテーブルは、
図1に示すような1つの評価指標と1つのパラメータとのルックアップテーブル、すなわち2次元のルックアップテーブルに限らず、3次元等、2次元よりも大きい多次元のルックアップテーブルであってもよい。例えば、情報処理装置100は、評価指標「検索精度」の値を、第1パラメータ「検索範囲係数」の値及び第2パラメータ「参照エッジ数」や「検索数」の値の組合せに変換するために用いる3次元のルックアップテーブルを生成してもよい。このように、パラメータが二つの場合、情報処理装置100は、二つのパラメータを変化させて、検索精度を測定し3次元のルックアップテーブルを生成してもよい。なお、上記は一例であり、情報処理装置100は、種々の処理を行って、様々なルックアップテーブルを生成してもよい。
【0049】
〔2-2.検索処理〕
次に、
図2を用いて、
図1に示した生成処理により生成されたルックアップテーブルTB1を用いた検索処理について説明する。
図2は、実施形態に係る情報処理の一例を示す図である。
図2の例では、情報処理装置100が端末装置10から取得したクエリに応じて、端末装置10に検索結果を提供する場合を示す。例えば、情報処理装置100は、クエリに近似するk個(例えば5個等)のベクトルを検索(抽出)する画像検索サービスを提供する場合を一例として説明する。
【0050】
図2の例では、情報処理装置100は、グラフデータGD1に示すデータセットDS1を対象として生成されたグラフを用いて近似検索を行う。グラフデータGD1のグラフはグラフGR11であってもよい。
【0051】
まず、情報処理装置100は、ユーザU1が利用する端末装置10からグラフを用いた近似検索の評価指標の指定値を示す情報を取得する(ステップS21)。
図2の例では、情報処理装置100は、端末装置10から検索精度(再現率)の指定値「VL11-2」を取得する。例えば、情報処理装置100は、端末装置10から画像をクエリQE21として取得する。
【0052】
そして、情報処理装置100は、ルックアップテーブルTB1に基づいて、検索精度の指定値「VL11-2」を検索範囲係数「ε」の値に変換する(ステップS22)。例えば、情報処理装置100は、ルックアップテーブルTB1に検索精度の指定値が含まれる場合、その指定値に対応付けられた検索範囲係数「ε」の値を用いる。
【0053】
また、情報処理装置100は、ルックアップテーブルTB1に検索精度の指定値が含まれない場合、ルックアップテーブルTB1に基づいて、その指定値に対応する検索範囲係数「ε」の値を生成する。情報処理装置100は、検索時に指定された検索精度の指定値「VL11-2」によりルックアップテーブルTB1を参照し、ルックアップテーブルTB1の離散値を補間する補間処理により、検索範囲係数「ε」の値を求める。なお、補間処理は線形補間でもよい。また、情報処理装置100は、ルックアップテーブルTB1から近似関数を事前に計算しておき、近似関数を用いて検索範囲係数「ε」の値を求めてもよい。この場合、情報処理装置100は、記憶部120(
図5参照)に記憶された近似関数を変換用情報として取得し、取得した近似関数を用いて、検索精度の指定値を検索範囲係数「ε」の値に変換する。これにより、情報処理装置100は、近似関数を用いて検索精度の指定値から検索範囲係数「ε」の値を求めてもよい。
【0054】
図2では、情報処理装置100は、ルックアップテーブルTB1に検索精度の指定値が含まれないため、補間処理により、検索精度の指定値「VL11-2」から検索範囲係数「ε」の値「VL21-2」を求める。これにより、情報処理装置100は、変換後情報CVに示すように、検索精度の指定値「VL11-2」を検索範囲係数「ε」の値「VL21-2」に変換する。
【0055】
そして、情報処理装置100は、ユーザU1が利用する端末装置10からクエリを取得する(ステップS23)。
図2の例では、情報処理装置100は、端末装置10からクエリQE21を取得する。例えば、情報処理装置100は、端末装置10から画像をクエリQE21として取得する。なお、情報処理装置100は、検索精度の指定値とクエリとを一括して端末装置10から取得(受信)してもよい。
【0056】
そして、情報処理装置100は、検索範囲係数「ε」の値を「VL21-2」に設定し、クエリQE21を対象としてグラフデータGD1のグラフを用いた近似検索の処理を実行する(ステップS24)。情報処理装置100は、検索範囲係数「ε」の値を「VL21-2」に設定し、クエリQE21を対象としてグラフデータGD1のグラフを用いて
図12に示す検索処理を行い、クエリQE21の近似ノードを取得する。例えば、情報処理装置100は、グラフデータGD1のグラフを探索することにより、クエリQE21について、所定数(例えば5個等)の近似ノード(近似オブジェクト)を抽出する。
【0057】
そして、情報処理装置100は、抽出した近似オブジェクトを示す情報を検索結果として端末装置10に提供する(ステップS25)。例えば、情報処理装置100は、抽出した所定数(例えば5個等)の近似オブジェクトである画像を、ユーザU1が指定したクエリQE21に類似する画像として端末装置10に提供する。
【0058】
このように、ユーザが検索時のパラメータを指定する代わりに、所望の検索精度または検索時間等の評価指標の値を指定することにより、情報処理装置100は、ユーザが指定した評価指標の値をパラメータの値に変換する。これにより、情報処理装置100は、適切なパラメータの値を用いた近似検索を可能にすることができる。例えば、ユーザ自身が所望の評価指標の基準を満たすためのパラメータの値を設定することができない場合であっても、情報処理装置100は、ユーザの要求に応じて、適切なパラメータの値を用いた近似検索を可能にすることができる。
【0059】
そして、情報処理装置100は、変換したパラメータの値を用いて検索する。すなわち、情報処理装置100は、ユーザにより指定された検索精度や検索時間の指定値をパラメータの値に変換した後に検索を行う。これにより、情報処理装置100は、適切なパラメータの値を用いた近似検索を実行することができる。なお、上記は一例であり、情報処理装置100は、ルックアップテーブルに限らず、変換関数等の様々な変換用情報を用いてもよい。
【0060】
〔2-3.ツリーインデックス〕
上述した例では、グラフのみを用いる場合を示したが、情報処理装置100は、ツリーインデックスなど、各種のインデックスを用いて、処理を高速化してもよい。例えば、情報処理装置100は、
図3中の情報群GINF11に示すようなツリーインデックスIND11を用いて、検索の起点となるノード(以下「起点ノード」ともいう)を決定してもよい。
図3は、ツリーインデックスの一例を示す図である。なお、ツリーインデックスIND11は、情報処理装置100が生成してもよいし、情報処理装置100は、ツリーインデックスIND11を情報提供装置50等の他の外部装置から取得してもよい。
【0061】
例えば、情報処理装置100は、ツリーインデックスIND11に基づいて、クエリQE1に対応する起点ノードを決定してもよい。情報処理装置100は、ツリー情報記憶部122(
図7参照)に記憶されたツリーインデックスIND11を用いて、起点ノードを決定する。例えば、ツリーインデックスIND11は、グラフGR11中のいくつかのノードに到達可能なツリー構造を有するツリーである。
図3の例では説明を簡単にするために、ツリーインデックスIND11は、ノードN1~N5の5個のノードに到達するルートのみを図示するが、多数(例えば500や1000等)の他のノードへ到達するルートが含まれてもよい。
【0062】
例えば、情報処理装置100は、
図3中のツリーインデックスIND11に示すような木構造型のツリーインデックスを用いて、グラフGR11における起点ノードを決定する。
図1の例では、情報処理装置100は、クエリQE1に基づいて、ツリーインデックスIND11を上(ルートRT)から下へ辿ることにより、ツリーインデックスIND11の近傍候補となる起点ノードを決定(特定)する。これにより、情報処理装置100は、効率的に検索クエリ(クエリQE1)に対応する起点ノードを決定することができる。
【0063】
例えば、情報処理装置100は、ツリーインデックスIND11をルートRTからリーフノード(グラフGR11中のノード)まで辿ることにより、クエリQE1に対応する起点ノードを決定してもよい。例えば、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、ツリーインデックスIND11をルートRTからリーフノードまで辿ることにより、辿りついたリーフノードを起点ノードとして決定してもよい。例えば、情報処理装置100は、クエリQE1との類似度に基づいて、ツリーインデックスIND11を下へ辿ることにより、起点ノードを決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のいずれの節点に辿るかを、クエリQE1と節点VT1、VT2との類似度に基づいて決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のうち、クエリQE1との類似度が最も高い節点VT2へ辿ると決定してもよい。また、例えば、情報処理装置100は、節点VT2から節点VT2-1~VT2-4等のうち、クエリQE1との類似度が最も高い節点VT2-2へ辿ると決定してもよい。
【0064】
図3の例に示すツリーインデックス(ツリーデータ)は一例であり、情報処理装置100は、種々のツリーインデックスを用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いるツリーを生成してもよい。なお、ツリーを用いることは一例であり、情報処理装置100は、検索時の起点ノードの決定の高速化が可能であれば、ツリーに限らず種々の情報を用いてもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索ツリー(ツリーインデックス)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【0065】
例えば、情報処理装置100は、
図3に示すようなツリー構造(木構造)に関するツリーインデックスIND11を生成してもよい。例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索ツリーを生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索ツリーを生成してもよい。
【0066】
また、例えば、情報処理装置100は、その他の木構造を有するツリーとして生成してもよい。例えば、情報処理装置100は、木構造のツリーのリーフがグラフに接続する種々のツリーを生成してもよい。例えば、情報処理装置100は、木構造のツリーのリーフがグラフ中のノードに対応する種々のツリーを生成してもよい。また、情報処理装置100は、このようなツリーを用いて検索を行う場合、ツリーを辿って到達したリーフ(ノード)からグラフを探索してもよい。
【0067】
なお、上述したようなツリーは一例であり、情報処理装置100は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のツリーを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、ツリーを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能なツリーであれば、どのようなデータ構造のツリーを生成してもよい。情報処理装置100は、上述のようなツリーとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置100は、上述のようなツリーとグラフとを用いることにより、所定の対象に関してより高速な検索を可能にすることができる。
【0068】
また、情報処理装置100は、ツリーインデックスIND11のような木構造のインデックスのみを用いて近似検索を行ってもよい。例えば、情報処理装置100は、検索対象となる複数の各々がツリーのリーフとなるツリーインデックス(ツリーインデックスTX)を用いた近似検索を行う。この場合、クエリQE1について、ツリーインデックスTXを辿ってたどり着いたリーフであるノードが近似ノードとして抽出される。すなわち、情報処理装置100は、クエリQE1が与えられた場合、ツリーインデックスTXをルートからリーフまで辿ることにより、クエリQE1に近似するノードを検索する近似検索を行う。この場合、パラメータは、分岐において辿る本数(枝(ブランチ)の数)等であってもよい。
【0069】
〔3.情報処理システムの構成〕
図4に示すように、情報処理システム1には、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。
図4は、実施形態に係る情報処理システムの構成例を示す図である。なお、
図4に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
【0070】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
【0071】
情報処理装置100は、複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値を、近似検索で用いるパラメータの値に変換するコンピュータである。また、情報処理装置100は、インデックスを用いた近似検索を、評価指標の指定値が変換されたパラメータの値を用いて実行する情報検索装置である。
【0072】
情報処理装置100は、ユーザ等に種々の情報提供を行うための情報が格納する。例えば、情報処理装置100は、ユーザ等に画像検索サービスを提供する。この場合、情報処理装置100は、画像検索サービスを提供するための各情報が格納される。例えば、情報処理装置100は、情報提供装置50が提供する電子商取引サービスにおいて取引される取引対象に関する画像を検索する画像検索サービスを提供する。すなわち、データセットDS1は、情報提供装置50が提供する電子商取引サービスにおいて取引される取引対象に関するオブジェクトであってもよい。
【0073】
情報処理装置100は、近似検索により、クエリに類似するオブジェクトを抽出する。例えば、情報処理装置100は、端末装置10からクエリ情報(クエリ)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置に提供する。情報処理装置100は、端末装置10から受信したクエリを用いて近似検索を行い、その結果を端末装置10に送信する。
【0074】
なお、情報処理装置100が端末装置に提供するデータは、画像等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
【0075】
情報提供装置50は、ユーザに電子商取引サービスを提供する情報処理装置である。情報提供装置50は、情報処理装置100に種々の情報提供を行う。情報提供装置50は、電子商取引サービスにおいて取引される取引対象に関する情報を情報処理装置100に提供する。情報提供装置50は、電子商取引サービスにおいて取引される取引対象の画像やその画像のベクトルデータを情報処理装置100に提供する。
【0076】
なお、情報提供装置50は、情報処理装置100と一体であってもよい。また、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した画像等に基づくオブジェクトIDを格納してもよい。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供してもよい。
【0077】
〔4.情報処理装置の構成〕
次に、
図5を用いて、実施形態に係る情報処理装置100の構成について説明する。
図5は、実施形態に係る情報処理装置100の構成例を示す図である。
図5に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0078】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば
図4中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
【0079】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、
図5に示すように、オブジェクト情報記憶部121と、ツリー情報記憶部122と、グラフ情報記憶部123と、近似正解検索結果情報記憶部124と、変換用情報記憶部125とを有する。
【0080】
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、データセットごとにオブジェクトIDやベクトルデータを記憶する。
図6は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
図6に示すオブジェクト情報記憶部121は、「データセットID」、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
【0081】
「データセットID」は、データセットを識別するための識別情報を示す。「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、
図6の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
【0082】
図6の例では、データセットID「DS1」により識別されるデータセット(データセットDS1)には、オブジェクトID「OB1」、「OB2」、「OB3」等により識別される複数のオブジェクト(対象)が含まれることを示す。オブジェクトID「OB1」により識別されるオブジェクト(オブジェクトOB1)は、「10,24,54,2...」の多次元のベクトル情報が対応付けられることを示す。また、オブジェクトID「OB2」により識別されるオブジェクト(オブジェクトOB2)は、「32,1,120,31...」の多次元のベクトル情報が対応付けられることを示す。
【0083】
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0084】
(ツリー情報記憶部122)
実施形態に係るツリー情報記憶部122は、ツリーに関する各種情報を記憶する。
図7は、実施形態に係るツリー情報記憶部の一例を示す図である。具体的には、
図7の例では、ツリー情報記憶部122は、木構造のツリーインデックスを示す。
図7の例では、ツリー情報記憶部122は、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目が含まれる。なお、「第1階層」~「第3階層」に限らず、ツリーの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
【0085】
「ルート階層」は、ツリーを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、ツリーの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、ツリーの根(ルート)に直接結ばれる階層に対応するノードとなる。
【0086】
「第2階層」は、ツリーの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、ツリーの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
【0087】
図7に示す例においては、ツリー情報記憶部122には、
図1中のツリー情報IND11に対応する情報が記憶される。例えば、ツリー情報記憶部122は、第1階層のノードが、節点VT1~VT3等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
【0088】
また、ツリー情報記憶部122は、節点VT2の直下の第2階層のノードが、節点VT2-1~VT2-4であることを示す。また、ツリー情報記憶部122は、節点VT2-1の直下の第3階層のノードが、ノードN1、ノードN2のグラフGR11中のノード(ベクトル)であることを示す。ツリー情報記憶部122は、節点VT2-2の直下の第3階層のノードが、ノードN3、ノードN4、ノードN5のグラフGR11中のノード(ベクトル)であることを示す。
【0089】
なお、ツリー情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0090】
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部123は、検索処理等の情報処理に用いられるグラフ情報を記憶する。
図8の例は、グラフ情報記憶部123は、近傍グラフデータを記憶する。
図8は、実施形態に係るグラフ情報記憶部の一例を示す図である。
図8に示すグラフ情報記憶部123は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
【0091】
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
【0092】
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。
図8の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、
図8の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
【0093】
図8の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、
図8の例では、グラフ情報におけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。
【0094】
また、
図8の例では、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、エッジID「E21」により識別されるエッジ(エッジE21)が、ノードID「N1」により識別されるノード(ノードN1)に連結されることを示す。すなわち、
図8の例では、グラフ情報におけるノードN2からはエッジE21によりノードN1へ辿ることができることを示す。
【0095】
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。グラフ情報記憶部123には、有向エッジにより連結されたグラフ情報に限らず、種々のグラフ情報が記憶されてもよい。グラフ情報記憶部123には、無向エッジにより連結されたグラフ情報が記憶されてもよい。
【0096】
(近似正解検索結果情報記憶部124)
実施形態に係る近似正解検索結果情報記憶部124は、近似正解検索に関する各種情報を記憶する。近似正解検索結果情報記憶部124は、各クエリを用いた場合の検索処理の精度を測定するために用いる近似正解情報を記憶する。例えば、近似正解検索結果情報記憶部124は、各クエリに対応付けてそのクエリのk個の近似ノードを近似正解検索結果として記憶する。
図9は、実施形態に係る近似正解検索結果情報記憶部の一例を示す図である。
図9に示す近似正解検索結果情報記憶部124は、「クエリID」、「ベクトル情報」、「近似正解検索結果」といった項目を有する。また、「近似正解検索結果」には、「No」や「オブジェクト」といった項目が含まれる。
【0097】
「クエリID」は、クエリを識別するための識別情報を示す。例えば、「クエリID」は、評価用クエリを識別するための識別情報を示す。また、「ベクトル情報」は、対応するクエリのベクトル情報を示す。「近似正解検索結果」は、対応するクエリの近似正解情報として用いる近似正解検索結果が記憶される。「No」は、対応するクエリの各近似ノードの順位を示す。「オブジェクト」は、対応する順位の近似ノード(オブジェクト)を示す。
【0098】
図9の例では、クエリID「QE1」により識別されるクエリ(クエリQE1)は、「7,35,13,93...」の多次元のベクトル情報であることを示す。クエリQE1に対応する近似正解情報は、Noが「1」である、すなわち最も近傍のノードがオブジェクトOB101に対応するノードであることを示す。また、クエリQE1に対応する近似正解情報は、Noが「k」である、すなわち最も遠いノード(最遠オブジェクト)がオブジェクトOB55に対応するノードであることを示す。
【0099】
なお、近似正解検索結果情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。近似正解検索結果情報記憶部124は、複数のグラフ情報を使い分ける場合、閾値に、その閾値が用いられるグラフ情報を対応付けて記憶してもよい。例えば、近似正解検索結果情報記憶部124は、グラフGR11以外のグラフ情報が用いられる場合、各閾値が用いられるグラフ情報と、対応する閾値とを対応付けて記憶してもよい。
【0100】
(変換用情報記憶部125)
実施形態に係る変換用情報記憶部125は、評価指標の値をパラメータの値に変換するために用いる各種情報を記憶する。
図10は、実施形態に係る変換用情報記憶部の一例を示す図である。
図10の例では、変換用情報記憶部125は、評価指標の値とパラメータの値との対応付けを示すルックアップテーブルを記憶する場合を一例として示す。
【0101】
変換用情報記憶部125は、評価指標「検索精度」の値をパラメータ「検索範囲係数」の値に変換するために用いるルックアップテーブルTB1、評価指標「処理時間」の値をパラメータ「検索範囲係数」の値に変換するために用いるルックアップテーブルTB2等を記憶する。なお、ルックアップテーブルは、1つの評価指標と1つのパラメータとのルックアップテーブル、すなわち2次元のルックアップテーブルに限らず、3次元等、2次元よりも大きい多次元のルックアップテーブルであってもよい。
【0102】
図6に示すように、ルックアップテーブルは、評価指標「検索精度」の値を、第1パラメータ「検索範囲係数」の値及び第2パラメータ「参照エッジ数」の値の組合せに変換するために用いるルックアップテーブルTB3のような3次元のルックアップテーブルであってもよい。また、ルックアップテーブルは、第1評価指標「検索精度」の値及び第2評価指標「処理時間」の値の組合せを、パラメータ「検索範囲係数」の値に変換するために用いる3次元のルックアップテーブルであってもよい。なお、上記は一例であり、変換用情報記憶部125は、様々なルックアップテーブルを記憶する。
【0103】
図10のルックアップテーブルTB1は、評価指標「検索精度」の値と、パラメータ「検索範囲係数」の値との対応関係を示すルックアップテーブルを示す。
【0104】
ルックアップテーブルTB1の評価指標「検索精度」の欄には、例えば再現率である検索精度の値である「VL11」、「VL12」、「VL13」、「VL14」等が格納される。なお、
図10の例では、「VL11」といった抽象的な符号で示すが、検索精度の値は具体的な数値(例えば0.65や0.9等)である。
【0105】
また、ルックアップテーブルTB1のパラメータ「検索範囲係数」の欄には、例えば「ε」である検索範囲係数の値である「VL21」、「VL22」、「VL23」、「VL24」等が格納される。なお、
図10の例では、「VL21」といった抽象的な符号で示すが、検索範囲係数の値は具体的な数値(例えば0.05や0.2等)である。
【0106】
このように、ルックアップテーブルTB1は、検索精度の値「VL11」が、検索範囲係数の値「VL21」に対応付けられ、検索精度の値「VL12」が、検索範囲係数の値「VL22」に対応付けられていることを示す。
【0107】
また、ルックアップテーブルTB2の評価指標「処理時間」の欄には、検索処理に要する時間である処理時間の値である「PT11」等が格納される。なお、
図10の例では、「PT11」といった抽象的な符号で示すが、処理時間の値は具体的な数値(例えば0.5秒や30秒等)である。
【0108】
また、ルックアップテーブルTB2のパラメータ「検索範囲係数」の欄には、例えば「ε」である検索範囲係数の値である「VL31」等が格納される。
【0109】
このように、ルックアップテーブルTB2は、処理時間の値「PT11」が、検索範囲係数の値「VL31」に対応付けられていることを示す。
【0110】
なお、変換用情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。変換用情報記憶部125は、各テーブルTB1~TB3等の各々から生成した関数の情報を記憶してもよい。例えば、変換用情報記憶部125は、各テーブルTB1における、評価指標「検索精度」の値と、パラメータ「検索範囲係数」の値との対応関係を基に生成された関数を、テーブルTB1に対応付けて記憶してもよい。
【0111】
(制御部130)
図5の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0112】
図5に示すように、制御部130は、取得部131と、生成部132と、変換部133と、決定部134と、検索部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、
図5に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0113】
(取得部131)
取得部131は、各種情報を取得する。取得部131は、記憶部120から各種情報を取得する。取得部131は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、変換用情報記憶部125等から各種情報を取得する。
【0114】
また、取得部131は、各種情報を外部の情報処理装置から受信する。取得部131は、端末装置10等の外部装置から各種情報を取得する。取得部131は、グラフ情報記憶部123からグラフ情報を取得する。取得部131は、ツリー情報記憶部122からツリー情報を取得する。
【0115】
取得部131は、複数のオブジェクトを検索対象とするインデックスを取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値を取得する。取得部131は、評価指標の値に対応する近似検索で用いるパラメータの値を示す変換用情報を取得する。
【0116】
取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフをインデックスとして用いた近似検索の指定値を取得する。取得部131は、評価指標の各値とパラメータの各値との対応関係を示すルックアップテーブルを変換用情報として取得する。取得部131は、評価指標の値を入力として、入力された評価指標の値に対応するパラメータに値を出力する関数を変換用情報として取得する。
【0117】
取得部131は、グラフ情報記憶部123からグラフGR11を取得する。取得部131は、オブジェクト情報記憶部121(
図6参照)からデータセットDS1を取得する。取得部131は、ツリー情報記憶部122からツリー情報IND11を取得する。
【0118】
取得部131は、近似正解検索結果を取得する。取得部131は、クエリQE1を対象とする近似正解検索結果を取得する。取得部131は、クエリQE1を用いて、k個(kは任意の数)のノードを近似ノードとして抽出した結果を示す近似正解検索結果を取得する。取得部131は、近似正解検索結果情報記憶部124(
図9参照)からクエリQE1に対応する近似正解検索結果を取得する。
【0119】
取得部131は、端末装置10から検索精度(再現率)の指定値「VL11-2」を取得する。取得部131は、クエリQE21をユーザU1が利用する端末装置10から取得する。
【0120】
(生成部132)
生成部132は、各種情報を生成する。生成部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を生成する。生成部132は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、変換用情報記憶部125等に基づいて、各種情報を生成する。
【0121】
生成部132は、取得部131により取得された各種情報に基づいて、種々の情報を生成する。生成部132は、変換部133により変換された各種情報に基づいて、種々の情報を生成する。生成部132は、決定部134により決定された各種情報に基づいて、種々の情報を生成する。生成部132は、検索部135により抽出された各種情報に基づいて、種々の情報を生成する。生成部132は、グラフ情報を生成してもよい。
【0122】
生成部132は、インデックスを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。生成部132は、複数のオブジェクトから選択された評価用オブジェクトに基づく評価用クエリを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。生成部132は、複数のオブジェクトから選択された複数の評価用オブジェクトを用いて生成される評価用クエリを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。生成部132は、複数の評価用オブジェクトの平均を評価用クエリとする検索処理を含む生成処理により、ルックアップテーブルを生成する。
【0123】
生成部132は、評価用クエリを用いた近似検索の結果である近似正解検索結果を生成し、生成した近似正解検索結果を用いた評価指標を測定する測定処理を含む生成処理により、ルックアップテーブルを生成する。生成部132は、インデックスがグラフである場合、当該グラフを用いた検索処理における探索範囲を決定するための係数である検索範囲係数を調整することにより、近似正解検索結果を生成する。生成部132は、検索範囲係数の値を第1値から増加させ、近似検索の結果に新たなオブジェクトが出現しなくなった時点の第2値を、近似正解検索結果を生成する際の検索範囲係数の値として用いる。
【0124】
生成部132は、複数のオブジェクトから評価用オブジェクトを除いたオブジェクト群を検索対象とするインデックスを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。生成部132は、パラメータの複数の値の各々を用いた検索処理により得られた評価指標の複数の値の各々を、対応するパラメータの複数の値の各々に対応付ける生成処理により、ルックアップテーブルを生成する。
【0125】
生成部132は、ルックアップテーブルを用いて、評価指標の値を入力として、入力された評価指標の値に対応するパラメータに値を出力する関数を生成する。例えば、生成部132は、各テーブルTB1における評価指標「検索精度」の値と、パラメータ「検索範囲係数」の値との対応関係を基に、評価指標「検索精度」の値を入力として、その値に対応するパラメータ「検索範囲係数」の値を出力する関数(近似関数)を生成する。例えば、情報処理装置100は、関数のフィッティングに関する種々の技術を適宜用いて、評価指標「検索精度」の値を入力として、その値に対応するパラメータ「検索範囲係数」の値を出力する近似関数を生成してもよい。なお、上記は一例に過ぎず、情報処理装置100は、評価指標の値をパラメータの値に変換可能であれば、どのような処理により関数を生成してもよい。また、情報処理装置100が生成する近似関数は、線形関数であってもよいし、非線形関数であってもよい。
【0126】
生成部132は、グラフを生成する。生成部132は、データセットDS1中の全オブジェクトを用いて、グラフを生成してもよいし、データセットDS1のうち一部のオブジェクトを用いて、グラフを生成してもよい。例えば。生成部132は、データセットDS1のうち、オブジェクトOB3等を除く、オブジェクトOB1、OB2、OB101等の一部のオブジェクトを用いて、グラフを生成してもよい。生成部132は、データセットDS1中の全オブジェクトを用いて、グラフGR11を生成する。生成部132は、グラフ生成に関する種々の技術を適宜用いて、グラフGR11を生成する。生成部132は、
図1中のグラフGR11に示すように、ノードN1~N3、N43、N53等の複数のノード(ベクトル)を含むグラフ情報を生成する。
【0127】
生成部132は、各オブジェクトに対応する各ノードから所定数以上の出力エッジが他のエッジに連結されるように、グラフGR11を生成する。生成部132は、グラフGR11における各ノードが、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結されるようにグラフGR11を生成する。
【0128】
生成部132は、近似検索または近傍検索に関する種々の技術を適宜用いて、クエリQE1に対応する近似正解検索結果を生成する。例えば、生成部132は、
図12に示すような処理により、クエリQE1に対応する近似正解検索結果を生成する。この場合、生成部132は、後述する検索範囲係数「ε」の値を所定値以上大きくして、
図12に示すような処理をグラフGR11を用いて行うことにより、クエリQE1に対応する近似正解検索結果を生成する。生成部132は、クエリQE1に対応する近似正解検索結果RR1を生成する。
【0129】
(変換部133)
変換部133は、各種情報を変換する。変換部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を変換する。変換部133は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、変換用情報記憶部125等に基づいて、各種情報を変換する。変換部133は、取得部131により取得された各種情報に基づいて、種々の情報を変換する。変換部133は、生成部132により生成された各種情報に基づいて、種々の情報を変換する。変換部133は、検索部135により抽出された各種情報に基づいて、種々の情報を変換する。変換部133は、決定部134により決定された各種情報に基づいて、種々の情報を変換する。
【0130】
変換部133は、取得部131により取得された変換用情報に基づいて、評価指標の指定値を近似検索で用いるパラメータの値に変換する。変換部133は、評価指標の指定値を、グラフを用いた近似検索で用いるパラメータの値に変換する。変換部133は、ルックアップテーブルを参照して、評価指標の指定値を近似検索で用いるパラメータの値に変換する。変換部133は、評価指標の指定値を関数に入力することにより、評価指標の指定値を近似検索で用いるパラメータの値に変換する。
【0131】
変換部133は、ルックアップテーブルに評価指標の指定値が含まれない場合、補間処理により、評価指標の指定値からパラメータの値を求める。変換部133は、補間処理により、検索精度の指定値「VL11-2」を検索範囲係数「ε」の値「VL21-2」に変換する。
【0132】
(決定部134)
決定部134は、各種情報を決定する。決定部134は、各種情報を生成する。決定部134は、各種情報を選択する。決定部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。決定部134は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、変換用情報記憶部125等に基づいて、各種情報を決定する。
【0133】
決定部134は、取得部131により取得された各種情報に基づいて、種々の情報を決定する。決定部134は、取得部131により取得された各種情報に基づいて、種々の情報を判定する。決定部134は、変換部133により変換された各種情報に基づいて、種々の情報を決定する。決定部134は、検索部135により検索された各種情報に基づいて、種々の情報を決定する。
【0134】
決定部134は、評価用クエリを決定する。決定部134は、データセットDS1から評価用クエリの生成に用いるオブジェクトを選択する。決定部134は、データセットDS1からランダムに二つ以上の所定数のオブジェクトを評価用オブジェクトとして選択する。決定部134は、データセットDS1からオブジェクトOB500とオブジェクトOB1000との2つのオブジェクトを評価用オブジェクトとして選択する。
【0135】
決定部134は、与えられたデータセットからクエリオブジェクトを生成する。決定部134は、データセットからランダムに選択したオブジェクト、または、ランダムに選択した二つ以上のオブジェクトの平均値であるクエリオブジェクト(評価用クエリ)を生成する。決定部134は、オブジェクトOB500とオブジェクトOB1000との平均である「7,35,13,93...」の多次元のベクトル情報を生成する。決定部134は、評価用クエリRQ1に示すように、オブジェクトOB500とオブジェクトOB1000とに基づいて、クエリQE1を生成する。
【0136】
(検索部135)
検索部135は、インデックスを用いた近似検索の処理を行う。検索部135は、記憶部120に記憶された各種情報に基づいて、種々の情報を検索する。検索部135は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、変換用情報記憶部125等に基づいて、各種情報を検索する。検索部135は、取得部131により取得された各種情報に基づいて、種々の情報を検索する。検索部135は、生成部132により生成された各種情報に基づいて、種々の情報を検索する。検索部135は、変換部133により変換された各種情報に基づいて、種々の情報を検索する。検索部135は、決定部134により決定された各種情報に基づいて、種々の情報を検索する。検索部135は、検索により各種情報を抽出する。
【0137】
検索部135は、近似検索を、変換用情報に基づいて評価指標の指定値が変換されたパラメータの値を用いて実行する。検索部135は、クエリに近似(類似)するノードである近似ノードを抽出する。検索部135は、グラフ情報を探索することにより、オブジェクトを検索する。検索部135は、取得部131により取得されたクエリが取得された場合、グラフ情報を探索することにより、クエリに類似するオブジェクトを検索する。検索部135は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。検索部135は、
図12に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。
【0138】
検索部135は、クエリQE1を中心とする半径r内の範囲AR1と、クエリQE1を中心とする半径r(1+ε)内の範囲AR2とを用いて、グラフGR11を検索し、近似ノードを抽出する。検索部135は、検索範囲係数「ε」の値を「VL21-2」に設定し、クエリQE21を対象としてグラフデータGD1のグラフを用いた近似検索の処理を実行する。
【0139】
(提供部136)
提供部136は、各種情報を提供する。提供部136は、端末装置10や情報提供装置50に各種情報を提供する。提供部136は、端末装置10に各種情報を送信する。提供部136は、検索部135により抽出された各種情報に基づいて、種々の情報を提供する。
【0140】
提供部136は、検索部135により抽出された近似ノードに関する情報を提供する。提供部136は、近似ノードに関する情報を所定のユーザが利用する端末装置10(
図4参照)に提供する。提供部136は、クエリの送信元へ検索結果を提供する。提供部136は、ユーザU1が利用する端末装置10に検索結果を送信する。
【0141】
〔5.情報処理のフロー〕
次に、
図11を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。
図11は、実施形態に係る情報処理の一例を示すフローチャートである。
【0142】
図11に示すように、情報処理装置100は、複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値を取得する(ステップS101)。例えば、情報処理装置100は、オブジェクト情報記憶部121(
図6参照)から、データセットDS1を取得する。
【0143】
そして、情報処理装置100は、評価指標の値に対応する近似検索で用いるパラメータの値を示す変換用情報を取得する(ステップS102)。例えば、情報処理装置100は、変換用情報記憶部(
図10参照)から、ルックアップテーブルTB1を取得する。
【0144】
そして、情報処理装置100は、変換用情報に基づいて、評価指標の指定値を近似検索で用いるパラメータの値に変換する(ステップS103)。情報処理装置100は、変換したパラメータの値を用いて近似検索を実行する(ステップS104)。
【0145】
〔6.検索処理のフロー〕
次に、情報処理装置100による検索処理のフローについて、
図12を一例として説明する。
図12は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、
図12は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、
図12に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置100によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、情報処理装置100によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
【0146】
ここでは、近傍集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合N(G,y)は、ノードyからの出力エッジが連結されたオブジェクト(ノード)の集合である。「G」は、所定のグラフデータ(例えば、グラフGR11等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
【0147】
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、起点ノードとして決定(選択)されたオブジェクト(ノード)を集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、検索結果(抽出候補)の集合Rの初期集合にも含められる。また、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
【0148】
次に、情報処理装置100は、集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。次に、情報処理装置100は、オブジェクトsを集合Sから除外する(ステップS303)。
【0149】
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、集合Rをオブジェクトyの近傍集合として出力し(ステップS305)、処理を終了する。
【0150】
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトの中から集合Cに含まれないオブジェクトを、所定の基準に基づいて一つ選択し、選択したオブジェクトuを、集合Cに格納する(ステップS306)。
【0151】
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、情報処理装置100は、オブジェクトuを集合Sに追加する(ステップS308)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、情報処理装置100は、ステップS309の判定(処理)を行う。
【0152】
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。
【0153】
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuを集合Rに追加する(ステップS310)。そして、情報処理装置100は、集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索における抽出数を示し、「3」や「20」や「100」等の任意の値であってもよい。集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
【0154】
集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、集合Rから除外する(ステップS312)。
【0155】
次に、情報処理装置100は、集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
【0156】
そして、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択したか否かを判定する(ステップS315)。なお、情報処理装置100は、閾値を用いない場合、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択したか否かを判定してもよい。オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択していない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
【0157】
オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択した場合(ステップS315:Yes)、情報処理装置100は、集合Sが空集合であるか否かを判定する(ステップS316)。なお、情報処理装置100は、オブジェクトsの近傍集合N(G,s)から閾値に対応する個数までオブジェクトを選択する前であっても、オブジェクトsの近傍集合N(G,s)中の全オブジェクトが選択済みである場合、ステップS316の処理を行ってもよい。すなわち、情報処理装置100は、オブジェクトsの近傍集合N(G,s)中のオブジェクト数が閾値以下であり、近傍集合N(G,s)中の全オブジェクトを選択した場合、ステップS315がYesである場合と同様に、ステップS316の処理を行ってもよい。集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、集合Rを出力し、処理を終了する(ステップS317)。例えば、情報処理装置100は、集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置10等へ提供してもよい。
【0158】
〔7.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、変換部133とを有する。取得部131は、複数のオブジェクトを検索対象とするインデックスを用いた近似検索の評価指標の値を指定する指定値と、評価指標の値に対応する近似検索で用いるパラメータの値を示す変換用情報とを取得する。変換部133は、取得部131により取得された変換用情報に基づいて、評価指標の指定値を近似検索で用いるパラメータの値に変換する。
【0159】
このように、実施形態に係る情報処理装置100は、指定された評価指標の値を、近似検索で用いるパラメータの値に変換することにより、指定された評価指標の値に対応するパラメータの値を適切に導出することができる。したがって、情報処理装置100は、適切なパラメータの値を用いた近似検索を可能にすることができる。
【0160】
また、実施形態に係る情報処理装置100において、取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフをインデックスとして用いた近似検索の指定値を取得する。変換部133は、評価指標の指定値を、グラフを用いた近似検索で用いるパラメータの値に変換する。
【0161】
このように、実施形態に係る情報処理装置100は、指定された評価指標の値を、グラフを用いた近似検索で用いるパラメータの値に変換することにより、指定された評価指標の値に対応するパラメータの値を適切に導出することができる。
【0162】
また、実施形態に係る情報処理装置100において、パラメータは、グラフを用いた検索処理における探索範囲を決定するための係数である検索範囲係数である。
【0163】
このように、実施形態に係る情報処理装置100は、グラフを用いた検索処理における探索範囲を決定するための係数である検索範囲係数の値を、指定された評価指標の値から適切に導出することができる。したがって、情報処理装置100は、適切な検索範囲係数の値を用いた近似検索を可能にすることができる。
【0164】
また、実施形態に係る情報処理装置100において、取得部131は、評価指標の各値とパラメータの各値との対応関係を示すルックアップテーブルを変換用情報として取得する。変換部133は、ルックアップテーブルを参照して、評価指標の指定値を近似検索で用いるパラメータの値に変換する。
【0165】
このように、実施形態に係る情報処理装置100は、ルックアップテーブルを参照して、評価指標の指定値を近似検索で用いるパラメータの値に変換することにより、指定された評価指標の値に対応するパラメータの値を適切に導出することができる。
【0166】
また、実施形態に係る情報処理装置100は、生成部132を有する。生成部132は、インデックスを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。
【0167】
このように、実施形態に係る情報処理装置100は、ルックアップテーブルを生成することにより、ルックアップテーブルを参照して、指定された評価指標の値に対応するパラメータの値を適切に導出することができる。
【0168】
また、実施形態に係る情報処理装置100において、生成部132は、複数のオブジェクトから選択された評価用オブジェクトに基づく評価用クエリを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。
【0169】
このように、実施形態に係る情報処理装置100は、複数のオブジェクトから選択された評価用オブジェクトに基づく評価用クエリを用いた検索処理により、ルックアップテーブルを適切に生成することができる。
【0170】
また、実施形態に係る情報処理装置100において、生成部132は、複数のオブジェクトから選択された複数の評価用オブジェクトを用いて生成される評価用クエリを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。
【0171】
このように、実施形態に係る情報処理装置100は、複数のオブジェクトから選択された複数の評価用オブジェクトから生成される評価用クエリを用いた検索処理により、ルックアップテーブルを適切に生成することができる。
【0172】
また、実施形態に係る情報処理装置100において、生成部132は、複数の評価用オブジェクトの平均を評価用クエリとする検索処理を含む生成処理により、ルックアップテーブルを生成する。
【0173】
このように、実施形態に係る情報処理装置100は、複数の評価用オブジェクトの平均を評価用クエリとして用いた検索処理により、ルックアップテーブルを適切に生成することができる。
【0174】
また、実施形態に係る情報処理装置100において、生成部132は、評価用クエリを用いた近似検索の結果である近似正解検索結果を生成し、生成した近似正解検索結果を用いた評価指標を測定する測定処理を含む生成処理により、ルックアップテーブルを生成する。
【0175】
このように、実施形態に係る情報処理装置100は、近似正解検索結果を用いて評価指標を測定することにより、ルックアップテーブルを適切に生成することができる。
【0176】
また、実施形態に係る情報処理装置100において、生成部132は、インデックスがグラフである場合、当該グラフを用いた検索処理における探索範囲を決定するための係数である検索範囲係数を調整することにより、近似正解検索結果を生成する。
【0177】
このように、実施形態に係る情報処理装置100は、インデックスがグラフである場合、検索範囲係数を調整して生成した近似正解検索結果を用いて評価指標を測定することにより、ルックアップテーブルを適切に生成することができる。
【0178】
また、実施形態に係る情報処理装置100において、生成部132は、検索範囲係数の値を第1値から増加させ、近似検索の結果に新たなオブジェクトが出現しなくなった時点の第2値を、近似正解検索結果を生成する際の検索範囲係数の値として用いる。
【0179】
このように、実施形態に係る情報処理装置100は、検索範囲係数の値を変動させて、近似正解検索結果の生成に適切な検索範囲係数を導出することで、ルックアップテーブルを適切に生成することができる。
【0180】
また、実施形態に係る情報処理装置100において、生成部132は、複数のオブジェクトから評価用オブジェクトを除いたオブジェクト群を検索対象とするインデックスを用いた検索処理を含む生成処理により、ルックアップテーブルを生成する。
【0181】
このように、実施形態に係る情報処理装置100は、複数のオブジェクトから評価用オブジェクトを除いたオブジェクト群を検索対象とする検索処理により、ルックアップテーブルを適切に生成することができる。
【0182】
また、実施形態に係る情報処理装置100において、生成部132は、パラメータの複数の値の各々を用いた検索処理により得られた評価指標の複数の値の各々を、対応するパラメータの複数の値の各々に対応付ける生成処理により、ルックアップテーブルを生成する。
【0183】
このように、実施形態に係る情報処理装置100は、パラメータの各値と評価指標の各値とを対応付けることにより、ルックアップテーブルを適切に生成することができる。
【0184】
また、実施形態に係る情報処理装置100において、生成部132は、ルックアップテーブルを用いて、評価指標の値を入力として、入力された評価指標の値に対応するパラメータに値を出力する関数を生成する。
【0185】
このように、実施形態に係る情報処理装置100は、ルックアップテーブルを用いることで、評価指標の値を入力として、入力された評価指標の値に対応するパラメータに値を出力する関数を生成することができる。
【0186】
また、実施形態に係る情報処理装置100において、取得部131は、評価指標の値を入力として、入力された評価指標の値に対応するパラメータに値を出力する関数を変換用情報として取得する。変換部133は、評価指標の指定値を関数に入力することにより、評価指標の指定値を近似検索で用いるパラメータの値に変換する。
【0187】
このように、実施形態に係る情報処理装置100は、評価指標の指定値を関数に入力し、評価指標の指定値を近似検索で用いるパラメータの値に変換することにより、指定された評価指標の値に対応するパラメータの値を適切に導出することができる。
【0188】
また、実施形態に係る情報処理装置100は、検索部135を有する。検索部135は、近似検索を、変換用情報に基づいて評価指標の指定値が変換されたパラメータの値を用いて実行する。
【0189】
このように、実施形態に係る情報処理装置100は、近似検索を、変換用情報に基づいて評価指標の指定値が変換されたパラメータの値を用いて実行することで、適切なパラメータの値を用いた近似検索を行うことができる。
【0190】
また、実施形態に係る情報処理装置100において、評価指標は、インデックスを用いた検索処理の検索精度である。
【0191】
このように、実施形態に係る情報処理装置100は、インデックスを用いた検索処理の検索精度の値を、近似検索で用いるパラメータの値に変換することにより、指定された検索精度の値に対応するパラメータの値を適切に導出することができる。したがって、情報処理装置100は、適切なパラメータの値を用いた近似検索を可能にすることができる。
【0192】
また、実施形態に係る情報処理装置100において、評価指標は、インデックスを用いた検索処理の処理時間である。
【0193】
このように、実施形態に係る情報処理装置100は、インデックスを用いた検索処理の処理時間の値を、近似検索で用いるパラメータの値に変換することにより、指定された処理時間の値に対応するパラメータの値を適切に導出することができる。したがって、情報処理装置100は、適切なパラメータの値を用いた近似検索を可能にすることができる。
【0194】
また、実施形態に係る情報処理装置100において、複数のオブジェクトの各々は、電子商取引サービスにおいて取引される取引対象に対応する。
【0195】
このように、実施形態に係る情報処理装置100は、電子商取引サービスにおいて取引される取引対象に対応する複数のオブジェクトを対象とする近似検索を、適切なパラメータの値を用いて実行することを可能にすることができる。
【0196】
実施形態に係る情報検索装置(実施形態では情報処理装置100)は、取得部131と、検索部135とを有する。取得部131は、複数のオブジェクトを検索対象とするインデックスと、インデックスを用いた近似検索の評価指標の値を指定する指定値と、評価指標の値に対応する近似検索で用いるパラメータの値を示す変換用情報とを取得する。検索部135は、近似検索を、変換用情報に基づいて評価指標の指定値が変換されたパラメータの値を用いて実行する。
【0197】
このように、実施形態に係る情報処理装置100は、インデックスを用いた近似検索を、変換用情報に基づいて評価指標の指定値が変換されたパラメータの値を用いて実行することにより、適切なパラメータの値を用いた近似検索を可能にすることができる。
【0198】
〔8.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば
図13に示すような構成のコンピュータ1000によって実現される。
図13は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
【0199】
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0200】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
【0201】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
【0202】
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0203】
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
【0204】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0205】
〔9.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0206】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0207】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0208】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0209】
1 情報処理システム
100 情報処理装置
120 記憶部
121 オブジェクト情報記憶部
122 ツリー情報記憶部
123 グラフ情報記憶部
124 近似正解検索結果情報記憶部
125 変換用情報記憶部
130 制御部
131 取得部
132 生成部
133 変換部
134 決定部
135 検索部
136 提供部
10 端末装置
50 情報提供装置
N ネットワーク