(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-28
(45)【発行日】2023-01-12
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
G06F 16/28 20190101AFI20230104BHJP
G06F 16/2458 20190101ALI20230104BHJP
【FI】
G06F16/28
G06F16/2458
(21)【出願番号】P 2021044898
(22)【出願日】2021-03-18
【審査請求日】2021-08-19
【新規性喪失の例外の表示】特許法第30条第2項適用 公開日 令和2年6月12日 令和3年4月14日時点における本願に関連する検索エンジンValdを公開するページ https://vald.vdaas.org/ 公開日 令和3年1月12日 令和3年4月14日時点における本願に関連する検索エンジンValdの説明書を公開するページ https://github.com/vdaas/vald
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】加藤 優介
【審査官】原 秀人
(56)【参考文献】
【文献】特開2019-200724(JP,A)
【文献】特開2012-093829(JP,A)
【文献】特開2021-026576(JP,A)
【文献】特開2011-090352(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
検索クエリを取得する取得部と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求部と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成部と、
前記統合検索結果を提供する提供部と、
を備え
、
前記要求部は、
前記複数のエージェントのうち少なくとも一部のエージェントの各々が有するグラフ間には検索対象に重複がある前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とする情報処理装置。
【請求項2】
検索クエリを取得する取得部と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求部と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成部と、
前記統合検索結果を提供する提供部と、
を備え、
前記要求部は、
第1検索対象群からなる第1グラフを有する第1エージェントと、前記第1検索対象群のうち少なくとも1つの検索対象を含む第2検索対象群からなる第2グラフを有する第2エージェントとを含む前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とす
る情報処理装置。
【請求項3】
検索クエリを取得する取得部と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求部と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成部と、
前記統合検索結果を提供する提供部と、
を備え、
前記生成部は、
前記複数のエージェントの各々の前記検索結果のうち、前記検索クエリとの距離が近い方から所定数の検索結果を選択することにより、前記統合検索結果を生成する
ことを特徴とす
る情報処理装置。
【請求項4】
前記生成部は、
前記複数のエージェントの各々から取得した順序に応じて前記検索結果を処理対象として前記マージ処理を行うことにより、前記統合検索結果を生成する
ことを特徴とする請求項
3に記載の情報処理装置。
【請求項5】
前記生成部は、
前記マージ処理の処理対象となった検索対象のうち、前記検索クエリに近い方から所定数の検索対象を含む結果候補リストであって、前記統合検索結果として用いられる結果候補リストのうち、前記検索クエリからの距離が最も遠い検索対象である最遠検索対象の前記検索クエリからの第1距離と、前記マージ処理の対象とする一の検索対象の前記検索クエリからの第2距離との比較に基づいて、前記結果候補リストから前記最遠検索対象を除外し、前記結果候補リストに前記一の検索対象を追加するか否かを判定する
ことを特徴とする請求項
3または請求項
4に記載の情報処理装置。
【請求項6】
前記生成部は、
前記一の検索対象の前記第2距離が前記最遠検索対象の前記第1距離よりも短い場合、前記結果候補リストから前記最遠検索対象を除外し、前記結果候補リストに前記一の検索対象を追加する
ことを特徴とする請求項
5に記載の情報処理装置。
【請求項7】
前記生成部は、
前記マージ処理において処理対象となった検索対象を処理済み検索対象として管理し、前記一の検索対象が前記処理済み検索対象に含まれる場合、前記マージ処理の対象としない
ことを特徴とする請求項
5または請求項
6に記載の情報処理装置。
【請求項8】
前記要求部は、
各々が有するグラフに含まれる検索対象の和集合が前記複数の検索対象となる前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とする請求項1
~7のいずれか1項に記載の情報処理装置。
【請求項9】
前記取得部は、
ユーザが利用する端末装置から前記検索クエリを取得し、
前記提供部は、
前記統合検索結果を前記端末装置に送信する
ことを特徴とする請求項1~
8のいずれか1項に記載の情報処理装置。
【請求項10】
前記要求部は、
前記複数のエージェントの各々に対応する外部装置に前記検索クエリを送信することにより、前記検索クエリを用いた近傍検索を要求し、
前記生成部は、
前記外部装置から取得した前記検索結果に基づいて、前記検索クエリに対応する統合検索結果を生成する
ことを特徴とする請求項1~
9のいずれか1項に記載の情報処理装置。
【請求項11】
前記取得部は、
新たに追加される検索対象である新規追加検索対象の情報を取得し、
前記要求部は、
前記複数のエージェントのうち一部のエージェントに、前記新規追加検索対象のグラフへの追加を要求する
ことを特徴とする請求項1~
10のいずれか1項に記載の情報処理装置。
【請求項12】
前記要求部は、
前記複数のエージェントのうち記憶領域の使用状況に応じて決定される前記一部のエージェントに、前記新規追加検索対象のグラフへの追加を要求する
ことを特徴とする請求項
11に記載の情報処理装置。
【請求項13】
前記要求部は、
前記複数のエージェントのうち記憶領域の使用状況に応じて決定される前記複数のエージェントのランキングに基づいて、前記新規追加検索対象のグラフへの追加を要求する
ことを特徴とする請求項
11または請求項
12に記載の情報処理装置。
【請求項14】
前記要求部は、
前記複数のエージェントの各々に対応するノードの記憶領域の使用状況に応じて決定される前記一部のエージェントに、前記新規追加検索対象のグラフへの追加を要求する
ことを特徴とする請求項
11~
13のいずれか1項に記載の情報処理装置。
【請求項15】
前記要求部は、
前記複数のエージェントの各々に対応するノードの記憶領域の使用状況に応じて決定される前記ノードのランキングに基づいて、前記新規追加検索対象のグラフへの追加を要求する
ことを特徴とする請求項
11~
14のいずれか1項に記載の情報処理装置。
【請求項16】
前記要求部は、
記憶領域の使用率が低いノードに対応するエージェントから順に付されたランキングに基づいて、前記新規追加検索対象のグラフへの追加を要求する
ことを特徴とする請求項
11~
15のいずれか1項に記載の情報処理装置。
【請求項17】
前記要求部は、
検索対象が類似性に応じてエッジで連結されたグラフを各々が有する前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とする請求項1~
16のいずれか1項に記載の情報処理装置。
【請求項18】
コンピュータが実行する情報処理方法であって、
検索クエリを取得する取得工程と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求工程と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成工程と、
前記統合検索結果を提供する提供工程と、
を含み
、
前記要求工程は、
前記複数のエージェントのうち少なくとも一部のエージェントの各々が有するグラフ間には検索対象に重複がある前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とする情報処理方法。
【請求項19】
検索クエリを取得する取得手順と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求手順と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成手順と、
前記統合検索結果を提供する提供手順と、
をコンピュータに実行させ
、
前記要求手順は、
前記複数のエージェントのうち少なくとも一部のエージェントの各々が有するグラフ間には検索対象に重複がある前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とする情報処理プログラム。
【請求項20】
コンピュータが実行する情報処理方法であって、
検索クエリを取得する取得工程と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求工程と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成工程と、
前記統合検索結果を提供する提供工程と、
を含み、
前記要求工程は、
第1検索対象群からなる第1グラフを有する第1エージェントと、前記第1検索対象群のうち少なくとも1つの検索対象を含む第2検索対象群からなる第2グラフを有する第2エージェントとを含む前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とする情報処理方法。
【請求項21】
検索クエリを取得する取得手順と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求手順と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成手順と、
前記統合検索結果を提供する提供手順と、
をコンピュータに実行させ、
前記要求手順は、
第1検索対象群からなる第1グラフを有する第1エージェントと、前記第1検索対象群のうち少なくとも1つの検索対象を含む第2検索対象群からなる第2グラフを有する第2エージェントとを含む前記複数のエージェントに、前記検索クエリを用いた近傍検索を要求する
ことを特徴とする情報処理プログラム。
【請求項22】
コンピュータが実行する情報処理方法であって、
検索クエリを取得する取得工程と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求工程と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成工程と、
前記統合検索結果を提供する提供工程と、
を含み、
前記生成工程は、
前記複数のエージェントの各々の前記検索結果のうち、前記検索クエリとの距離が近い方から所定数の検索結果を選択することにより、前記統合検索結果を生成する
ことを特徴とする情報処理方法。
【請求項23】
検索クエリを取得する取得手順と、
複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求手順と、
前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、前記検索クエリに対応する統合検索結果を生成する生成手順と、
前記統合検索結果を提供する提供手順と、
をコンピュータに実行させ、
前記生成手順は、
前記複数のエージェントの各々の前記検索結果のうち、前記検索クエリとの距離が近い方から所定数の検索結果を選択することにより、前記統合検索結果を生成する
ことを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、種々の情報を探索(検索)する技術が提供されている。例えば、所定の検索対象の検索を行うために、検索対象に対応するノードがエッジにより連結されたグラフを用いて近傍検索を行う技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第6293335号公報
【文献】特許第6300982号公報
【文献】特開2010-79871号公報
【非特許文献】
【0004】
【文献】岩崎雅二郎 "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索", 情報処理学会論文誌, 2011/2, Vol. 52, No. 2. pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、上記の従来技術では、検索サービスを提供するという観点においては改善の余地がある。例えば、上記従来技術では、検索サービスを提供する際の装置構成等については考慮されておらず、多数の検索対象を一つのグラフとして構成して検索を行う場合、処理時間が長くなる等、適切に検索サービスを提供することが難しい場合がある。そのため、適切な検索サービスを提供することが望まれている。
【0006】
本願は、上記に鑑みてなされたものであって、適切な検索サービスを提供する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本願に係る情報処理装置は、検索クエリを取得する取得部と、複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、前記検索クエリを用いた近傍検索を要求する要求部と、前記複数のエージェントの各々による前記検索クエリを用いた近傍検索の検索結果をマージすることにより、前記検索クエリに対応する統合検索結果を生成する生成部と、前記統合検索結果を提供する提供部と、を備えたことを特徴とする。
【発明の効果】
【0008】
実施形態の一態様によれば、適切な検索サービスを提供することができるという効果を奏する。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態に係る情報処理システムによる処理の一例を示す図である。
【
図2】
図2は、実施形態に係る情報処理システムの構成例を示す図である。
【
図3】
図3は、実施形態に係る情報処理装置の構成例を示す図である。
【
図4】
図4は、実施形態に係る検索処理情報記憶部の一例を示す図である。
【
図5】
図5は、実施形態に係る情報処理装置による処理の一例を示すフローチャートである。
【
図6】
図6は、実施形態に係るソート処理の一例を示すフローチャートである。
【
図7】
図7は、情報処理システムによる新規検索対象の追加処理の一例を示す図である。
【
図8】
図8は、新規検索対象の追加処理の一例を示す図である。
【
図9】
図9は、新規検索対象の追加処理の一例を示す図である。
【
図10】
図10は、新規検索対象の追加処理の一例を示す図である。
【
図11】
図11は、情報処理装置による新規検索対象の追加に関する処理の一例を示すフローチャートである。
【
図12】
図12は、エージェントにおける検索処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0011】
(実施形態)
〔1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。
図1は、実施形態に係る情報処理システムによる処理の一例を示す図である。
図1では、ユーザが利用する端末装置10からの要求に応じて、情報処理装置100が端末装置10に所定数(例えば10や100等の任意の数。以下「提供数」ともいう)の検索結果を提供する場合を一例として示す。具体的には、
図1では、検索クエリを用いた複数のエージェント50の検索結果をマージした検索結果(「統合検索結果」ともいう)を情報処理装置100が生成し、生成した統合検索結果を端末装置10へ提供する場合を示す。
【0012】
以下では、画像情報(単に「画像」ともいう)を検索対象とする場合を一例として説明するが、検索対象は、動画情報、音声情報、文字情報等の他の対象であってもよい。すなわち、検索対象は、ベクトルとして表現可能であれば、どのような情報であってもよい。
【0013】
まず、情報処理システム1の機能構成について説明する。
図1に示すように、情報処理システム1は、端末装置10と、第1ノード20a、第2ノード20b、第3ノード20c等の複数のノード20と、情報処理装置100とが含まれる。以下では、第1ノード20a、第2ノード20b、第3ノード20c等について、特に区別なく説明する場合には、ノード20と記載する。またノード20の装置構成等については後述する。
【0014】
図1の例では、第1ノード20aには、エージェント50a、50b等の複数のエージェント50が含まれる。また、第2ノード20bには、エージェント50c、50d等の複数のエージェント50が含まれる。また、第3ノード20cには、エージェント50e等の複数のエージェント50が含まれる。以下では、エージェント50a、50b、50c、50d、50e等について、特に区別なく説明する場合には、エージェント50と記載する。例えば、エージェント50は、検索クエリを対象としてグラフを用いた近傍検索を行うソフトウェアエージェントを示す。なお、情報処理システム1の装置構成については後述する。
【0015】
ここで、各エージェント50が有するグラフについて説明する。エージェント50は、検索対象が類似性に応じてエッジで連結されたグラフを各々が有する。
図1では、エージェント50aは、グラフGR1を有する。
【0016】
グラフGR1中の点(黒丸)は、グラフGR1に含まれる検索対象(「オブジェクト」ともいう)を示す。
図1では、グラフGR1に含まれる検索対象のうち一部を図示するが図示した検索対象以外にも多数の検索対象が含まれる。例えば、グラフGR1中の各点の距離が各点に対応する検索対象(オブジェクト)の類似度を示す。この場合、グラフGR1中の各点に対応する検索対象(オブジェクト)は、その距離が近い程類似していることを示す。
【0017】
また、グラフGR1中の点(黒丸)間を接続する直線がオブジェクト間を連結するエッジを示す。
図1の例では、説明を簡単にするために、オブジェクト間が無向(双方向)エッジ(以下単に「エッジ」ともいう)により連結される場合を示す。なお、ここでいう無向エッジとは、連結されたオブジェクト間を双方向にデータを辿ることができるエッジを意味する。例えば、左上の点と中央の点との間は点線で接続されており、左上の点に対応するオブジェクトと中央の点に対応するオブジェクトとの間はエッジで連結されており、双方向に辿ることができることを示す。なお、
図1の例では、一部のエッジのみを図示するが、図示したエッジ以外にも多数のエッジが含まれる。例えばグラフGR1は、k近傍グラフ(k-nearest neighbor graph)であるものとする。なお、グラフGR1は、種々のグラフであってもよい。
【0018】
また、グラフのエッジは、無向エッジに限らず、有向エッジであってもよい。有向エッジの場合、有向エッジの参照元となっているオブジェクトから参照先のオブジェクトへのみ辿ることができる。例えば、2つのオブジェクト間が、一方を参照元とし他方を参照先とする第1エッジ、及び一方を参照先とし他方を参照元とする第2エッジの2つの有向エッジで連結されている場合、その2つのオブジェクト間が無向(双方向)エッジで連結された状態と同じ状態である。
【0019】
なお、グラフGR1等のグラフについての詳細な説明は省略する。また、上述したグラフの説明は後述するグラフGR2~GR5についても同様であるため、以下では説明を省略する。
【0020】
また、エージェント50bは、グラフGR2を有し、エージェント50cは、グラフGR3を有し、エージェント50dは、グラフGR4を有し、エージェント50eは、グラフGR5を有する。以下では、グラフGR1~GR5等について、特に区別なく説明する場合には、グラフGRと記載する。各グラフGRは、検索対象全体(
図1では検索対象となる全画像)のうち一部の検索対象を含む。各グラフGRに含まれる検索対象の和集合が検索対象全体(
図1では検索対象となる全画像)となる。例えば、グラフGR1~GR5の各々に含まれる検索対象の和集合が検索対象全体(
図1では検索対象となる全画像)となる。
【0021】
一部のグラフGR間には検索対象に重複がある。例えば、グラフGR1~GR5の各々には検索対象に重複がある。例えば、グラフGR2と、グラフGR4とには同じ検索対象が含まれる。
図1の例では、グラフGR2と、グラフGR4とには同じオブジェクトが冗長して含まれる。なお、検索対象(オブジェクト)を冗長させる点を含めグラフGRの生成例については後述する。以下では、
図1を用いて情報処理システム1の処理の全体概要を説明する。
【0022】
まず、情報処理装置100は、端末装置10から検索クエリQE1を取得する(ステップS10)。
図1では、端末装置10が検索クエリQE1を情報処理装置100に送信することにより、情報処理装置100は、端末装置10から検索クエリQE1を受信する。
図1では説明を簡単にするために、画像がベクトルに変換されたベクトルデータである検索クエリQE1を端末装置10から情報処理装置100が取得する場合を示すが、情報処理装置100は、端末装置10から画像を取得し、取得した画像をベクトルに変換し検索クエリQE1を取得してもよいが、この点については後述する。
【0023】
検索クエリQE1を取得した情報処理装置100は、複数のエージェント50に、検索クエリQE1を用いた近傍検索を要求する。そして、情報処理装置100は、複数のエージェントの各々による検索クエリQE1を用いた近傍検索の検索結果を取得する。この点について以下
図1の例を基に説明する。
【0024】
図1の例では、情報処理装置100は、エージェント50aに検索クエリQE1を用いた近傍検索を要求する(ステップS11-1)。情報処理装置100から検索クエリQE1を用いた近傍検索の要求を受け付けたエージェント50aは、グラフGR1を用いた検索処理を実行する。
【0025】
ここで、エージェント50a等の各エージェント50は、
図12に示すような処理により、検索クエリQE1に対応する検索結果を生成する。例えば、エージェント50aは、グラフGR1を用いて
図12に示すような(検索)処理を行うことにより、検索クエリQE1に対応する検索結果を所定数だけグラフGR1から抽出する。なお、上記は一例に過ぎず、各エージェント50は、検索処理を実行可能であれば、どのような手法により検索処理を実行してもよい。例えば、各エージェント50は、非特許文献1に開示される手法により検索処理を実行してもよい。
【0026】
図1の例では、エージェント50aは、グラフGR1を用いて検索クエリQE1に対応する検索結果RS1を生成する。エージェント50aは、提供数の検索対象をグラフGR1から抽出することにより、提供数の検索対象を含む検索結果RS1を生成する。そして、エージェント50aは、検索結果RS1を情報処理装置100へ送信する(ステップS12-1)。エージェント50aは、提供数の検索対象からなる検索結果RS1を情報処理装置100へ送信する。
【0027】
また、情報処理装置100は、エージェント50bに検索クエリQE1を用いた近傍検索を要求する(ステップS11-2)。情報処理装置100から検索クエリQE1を用いた近傍検索の要求を受け付けたエージェント50bは、グラフGR2を用いた検索処理を実行する。
図1の例では、エージェント50bは、グラフGR2を用いて検索クエリQE1に対応する検索結果RS2を生成する。例えば、エージェント50bは、
図12に示すような処理により、提供数の検索対象をグラフGR2から抽出することにより、提供数の検索対象を含む検索結果RS2を生成する。そして、エージェント50bは、検索結果RS2を情報処理装置100へ送信する(ステップS12-2)。エージェント50bは、提供数の検索対象からなる検索結果RS2を情報処理装置100へ送信する。
【0028】
また、情報処理装置100は、エージェント50cに検索クエリQE1を用いた近傍検索を要求する(ステップS11-3)。情報処理装置100から検索クエリQE1を用いた近傍検索の要求を受け付けたエージェント50cは、グラフGR3を用いた検索処理を実行する。
図1の例では、エージェント50cは、グラフGR3を用いて検索クエリQE1に対応する検索結果RS3を生成する。例えば、エージェント50cは、
図12に示すような処理により、提供数の検索対象をグラフGR3から抽出することにより、提供数の検索対象を含む検索結果RS3を生成する。そして、エージェント50cは、検索結果RS3を情報処理装置100へ送信する(ステップS12-3)。エージェント50cは、提供数の検索対象からなる検索結果RS3を情報処理装置100へ送信する。
【0029】
また、情報処理装置100は、エージェント50dに検索クエリQE1を用いた近傍検索を要求する(ステップS11-4)。情報処理装置100から検索クエリQE1を用いた近傍検索の要求を受け付けたエージェント50dは、グラフGR4を用いた検索処理を実行する。
図1の例では、エージェント50dは、グラフGR4を用いて検索クエリQE1に対応する検索結果RS4を生成する。例えば、エージェント50dは、
図12に示すような処理により、提供数の検索対象をグラフGR4から抽出することにより、提供数の検索対象を含む検索結果RS4を生成する。そして、エージェント50dは、検索結果RS4を情報処理装置100へ送信する(ステップS12-4)。エージェント50dは、提供数の検索対象からなる検索結果RS4を情報処理装置100へ送信する。
【0030】
また、情報処理装置100は、エージェント50eに検索クエリQE1を用いた近傍検索を要求する(ステップS11-5)。情報処理装置100から検索クエリQE1を用いた近傍検索の要求を受け付けたエージェント50eは、グラフGR5を用いた検索処理を実行する。
図1の例では、エージェント50eは、グラフGR5を用いて検索クエリQE1に対応する検索結果RS5を生成する。例えば、エージェント50eは、
図12に示すような処理により、提供数の検索対象をグラフGR5から抽出することにより、提供数の検索対象を含む検索結果RS5を生成する。そして、エージェント50eは、検索結果RS5を情報処理装置100へ送信する(ステップS12-5)。エージェント50eは、提供数の検索対象からなる検索結果RS5を情報処理装置100へ送信する。
【0031】
なお、ステップS11-1~S11-5は、処理を説明するためのものであり、ステップS11-1~S11-5のいずれが先に行われてもよい。以下、ステップS11-1~S11-5を区別せずに説明する場合、ステップS11と総称する。また、ステップS12-1~S12-5は、処理を説明するためのものであり、各々が対応するステップS11よりも後であれば、ステップS12-1~S12-5のいずれが先に行われてもよい。以下、ステップS12-1~S12-5を区別せずに説明する場合、ステップS12と総称する。また、ステップS12において検索結果を受領した順に後述するステップS13の処理対象とするがこの点についての詳細は後述する。
【0032】
ステップS11での要求に応じた各エージェント50の検索結果をステップS12で受信した情報処理装置100は、各エージェント50の検索結果をマージするマージ処理により、検索クエリRS1に対応する統合検索結果MR1を生成する(ステップS13)。
図1では、各エージェント50から検索結果RS1~RS5を取得した情報処理装置100は、検索結果RS1~RS5をマージするマージ処理により、検索クエリRS1に対応する統合検索結果MR1を生成する。情報処理装置100は、検索結果RS1~RS5を対象として、検索結果RS1~RS5に含まれる検索対象のうち、検索クエリQE1に近い(近似する)方から提供数の検索結果を統合検索結果MR1として用いる。情報処理装置100は、検索結果RS1~RS5のうち、検索クエリQE1との距離が近い方から提供数の検索結果を選択することにより、統合検索結果MR1を生成する。なお、情報処理装置100が行うマージ処理の具体例については後述する。
【0033】
そして、情報処理装置100は、生成した統合検索結果MR1を端末装置10へ提供する(ステップS14)。例えば、情報処理装置100は、生成した統合検索結果MR1に対応する画像群を端末装置10へ送信する。情報処理装置100は、統合検索結果MR1に含まれる各ベクトルデータに対応する画像を記憶部120(
図3参照)に記憶された画像群から選択して、その画像群を統合検索結果として端末装置10へ送信してもよい。
【0034】
上述したように、情報処理装置100は、複数の検索対象のうち一部の検索対象からなるグラフを各々が有する各エージェント50の検索結果をマージした統合検索結果を生成す、提供することにより、適切な検索サービスを提供することができる。情報処理システム1は、各エージェント50に検索対象全体ではなく、分散して検索対象を配置することにより、一つのグラフが多数の検索対象を含むことを抑制することができる。これにより、情報処理システム1は、検索対象が膨大(例えば数億や数百億等)になった場合であっても、処理負荷の分散、処理時間の短縮などを実現することができる。
【0035】
〔1-1.検索結果〕
また、情報処理装置100は、統合検索結果を所望の条件に基づいて、フィルタリングしてもよい。例えば、情報処理装置100は、統合検索結果のうち、所望のスコア(CVR(Conversion Rate)等)が高い方から順に、統合検索結果の順序を並び替えてもよい。また、情報処理装置100は、統合検索結果のうち一部の検索結果を削除してもよいし、統合検索結果に新たな検索結果を追加してもよい。
【0036】
また、情報処理装置100は、統合検索結果のうち、所望のスコア(CVR等)が所定の閾値以上である検索結果を検索クエリとして、検索処理を行ってもよい。この場合、情報処理装置100は、全検索処理のうち、所望のスコア(CVR等)が高い方から順に所定数の検索結果をユーザに提供してもよい。
【0037】
〔1-2.検索クエリ〕
なお、情報処理装置100が端末装置10から取得する検索クエリは画像自体であってもよいし、画像をベクトル化したデータ(ベクトルデータ)であってもよい。例えば、情報処理装置100は、画像をベクトルに変換するモデル(変換モデル)を有し、変換モデルにより端末装置10から受信した画像をベクトル化したベクトルデータを検索クエリとして取得する。この場合、例えば、情報処理装置100は、変換モデルを切り替えることにより、所望の対象物(例えば顔や文字等の任意の対象物)に特化した検索を行うことができる。
【0038】
また、例えば、端末装置10は、画像をベクトルに変換するモデル(変換モデル)を有し、類似画像を所望する画像をベクトル化したベクトルデータを情報処理装置100に送信してもよい。この場合、情報処理装置100は、画像をベクトル化したベクトルデータを検索クエリとして端末装置10から取得する。
【0039】
〔1-3.システム構成〕
図1で示した情報処理システム1は一例に過ぎず、上述した検索処理を実現可能であれば、どのような構成であってもよく、情報処理システム1の装置の構成の一例を、
図2を用いて以下に説明する。
【0040】
〔2.情報処理システムの構成〕
上述した検索処理を行う情報処理システム1の装置構成の一例について、
図2を用いて説明する。
図2は、実施形態に係る情報処理システムの構成例を示す図である。
図2に示すように、情報処理システム1は、情報処理装置100と、複数のノード20と、端末装置10とが含まれる。なお、
図2に示した情報処理システム1には、複数台の情報処理装置100や、複数台の端末装置10等が含まれてもよい。
【0041】
また、情報処理装置100は、複数のノード20及び端末装置10とは所定のネットワークNを介して、有線または無線により通信可能に接続される。例えば、ノード20に含まれるサーバ装置200の少なくとも1つが情報処理装置100と通信可能であり、そのノード20に含まれるサーバ装置200のいずれかが情報処理装置100とが通信してもよいし、ノード20に含まれる各サーバ装置200と通信可能であってもよい。
【0042】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
図1に示す例では、端末装置10がノートパソコンである場合を示す。
【0043】
図2の例では、各ノード20は、サーバ装置200により構成される。サーバ装置200は、検索処理を実行するコンピュータである。なお、
図1で示したエージェント50の機能を実現可能であれば、各ノード20におけるサーバ装置200の数や構成は任意の態様が採用可能である。
図2の例では各ノード20について1台のサーバ装置200のみを図示するが、各ノード20には複数台のサーバ装置200が含まれてもよい。すなわち、各ノード20は、複数のサーバ装置200による構成であっても、1つのサーバ装置200による構成であってもよい。すなわち、各ノード20は、任意の装置構成であってもよい。サーバ装置200は、タワー型のサーバ(タワーサーバ)、ラック型のサーバ(ラックマウント型サーバ)、ブレード型のサーバ(ブレードサーバ)等の任意の態様が採用可能である。また、ノード20に含まれるサーバ装置200を特に区別することなく説明する場合、ノード20と記載する場合がある。
【0044】
なお、上記は一例に過ぎず、ノード20は、種々の装置構成であってもよい。例えば、ノード20は、共通するメモリマップ(対応表)を使ってメモリにアクセスしている処理単位であってもよい。例えば、ノード20は、同じメモリアクセス空間を使用している、すなわち1つのアドレス空間を共有している構成の単位であってもよい。例えば、ノード20は、分散コンピューティングの技術を用いて実現されてもよい。例えば、ノード20は、概念的に一つの処理単位とみなされる装置(群)を示す。
【0045】
情報処理装置100は、検索クエリを用いた近傍検索を複数のエージェントに要求するし、複数のエージェントの各々による検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、検索クエリに対応する統合検索結果を生成するコンピュータである。情報処理装置100は、複数のエージェントの各々に対応するサーバ装置200から検索クエリを用いた近傍検索の検索結果を受信する。情報処理装置100は、複数のエージェントの各々に対応するサーバ装置200から受信した検索結果を用いて統合検索結果を生成する。そして、情報処理装置100は、検索クエリの送信元となる端末装置10に、生成した統合検索結果を送信する。情報処理装置100は、ユーザが利用する端末装置10からの要求に応じた検索結果を端末装置10へ提供する。
【0046】
〔3.情報処理装置の構成〕
次に、
図3を用いて、実施形態に係る情報処理装置100の構成について説明する。
図3は、実施形態に係る情報処理装置100の構成例を示す図である。
図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0047】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、所定の通信網(ネットワーク)と有線または無線で接続され、端末装置10との間で情報の送受信を行う。
【0048】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、
図3に示すように、検索処理情報記憶部121を有する。なお、記憶部120は、検索処理情報記憶部121の情報に限らず、様々な情報を記憶してもよい。記憶部120は、サーバ装置200等の外部装置に関する各種情報を記憶してもよい。例えば、記憶部120は、エージェントやノード等の処理状況を示す情報を記憶してもよい。例えば、記憶部120は、エージェントやノード等の記憶領域の使用状況を示す情報を記憶する。例えば、記憶部120は、ノードの記憶領域の使用率を示す情報、そのノードに含まれる各エージェントによる記憶領域の使用率を示す情報を記憶する。
【0049】
また、記憶部120は、検索対象としてのオブジェクト(例えば画像)とそのオブジェクトが変換されたベクトルデータとを対応付けて記憶する。例えば、記憶部120は、検索対象全体(
図1では検索対象となる全画像)の各々と各検索対象が変換されたベクトルデータとを対応付けて記憶する。
【0050】
(検索処理情報記憶部121)
実施形態に係る検索処理情報記憶部121は、情報処理システム1における検索処理に関する各種情報を記憶する。
図4は、実施形態に係る検索処理情報記憶部の一例を示す図である。
図4に、実施形態に係る検索処理情報記憶部121の一例を示す。
図4の例では、検索処理情報記憶部121は、「検索クエリ」、「統合検索結果」、「エージェント」、「検索結果」、「類似度」といった項目が含まれる。
【0051】
「検索クエリ」は、検索処理に用いられたクエリを示す。「検索クエリ」は、類似する検索対象を検索する対象となる画像やテキスト等の様々なオブジェクトを示す。
図4の例では「検索クエリ」を「QE1」といった抽象的な符号で図示するが、例えば検索処理により類似する検索対象を検索する対象となるオブジェクト(例えばベクトルデータ)等の具体的なデータ(情報)であるものとする。また、各検索クエリを識別するための識別情報(検索クエリID)が各検索クエリに対応付けられて記憶されてもよい。
【0052】
「統合検索結果」は、統合検索結果を示す。
図4の例では「統合検索結果」を「MR1」といった抽象的な符号で図示するが、検索結果として提供される検索対象群であるものとする。また、「統合検索結果」には、統合検索結果として提供される各検索対象を識別するための識別情報(検索対象ID)が記憶されてもよい。
【0053】
「エージェント」は、エージェントを示す。「エージェント」は、対応する統合検索結果を生成するために用いられた検索結果の提供元となるエージェントを示す。
図4の例では「エージェント」を「50a」等の抽象的な符号で図示するが、各エージェントと特定可能であれば、どのような情報であってもよい。
【0054】
「検索結果」は、対応する検索クエリを用いて検索結果を示す。「検索結果」は、対応する検索クエリを用いて、対応するエージェントが行った検索処理の結果を示す。
図4の例では「検索結果」を「RS1」といった抽象的な符号で図示するが、検索結果として提供される検索対象群であるものとする。また、「検索結果」には、検索結果として提供される各検索対象を識別するための識別情報(検索対象ID)が記憶されてもよい。
【0055】
図4の例では、検索クエリQE1を用いてエージェント50a、50b、50c、50d、50eなどの各エージェントが行った検索処理の結果を用いて、統合検索結果MR1が生成されたことを示す。例えば、検索クエリQE1を用いたエージェント50aの検索結果は検索結果RS1であり、検索クエリQE1を用いたエージェント50bの検索結果は検索結果RS2である。また、検索クエリQE1を用いたエージェント50c、50d、50eの各々の検索結果は検索結果RS3、RS4、RS5であることを示す。そして、検索クエリQE1を用いた統合検索結果MR1は、検索結果RS1~RS5を用いて生成されたことを示す。
【0056】
なお、検索処理情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、検索処理情報記憶部121は、各エージェントが検索に用いたグラフに関する情報を記憶してもよい。
【0057】
(制御部130)
図3の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0058】
図3に示すように、制御部130は、取得部131と、要求部132と、生成部133と、決定部134と、提供部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、
図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部130が有する各処理部の接続関係は、
図3に示した接続関係に限られず、他の接続関係であってもよい。
【0059】
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、検索処理情報記憶部121等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10やサーバ装置200から各種情報を取得する。取得部131は、通信部110を介して、端末装置10やサーバ装置200から情報を受信する。
【0060】
取得部131は、検索クエリを取得する。取得部131は、ユーザが利用する端末装置10から検索クエリを取得する。取得部131は、新たに追加される検索対象である新規追加検索対象の情報を取得する。
【0061】
(要求部132)
要求部132は、各種要求を行う。要求部132は、外部の情報処理装置からの情報や記憶部120に記憶された情報に基づいて、各種情報を要求する。要求部132は、検索処理情報記憶部121に記憶された情報に基づいて、各種情報を要求する。要求部132は、端末装置10やサーバ装置200へ各種要求を行う。要求部132は、通信部110を介して端末装置10やサーバ装置200へ情報を送信することにより、端末装置10やサーバ装置200へ各種要求を行う。
【0062】
例えば、要求部132は、サーバ装置200に検索クエリを送信することにより、送信した検索クエリを用いた検索結果を要求する。また、例えば、要求部132は、サーバ装置200に新たに追加する検索対象を送信することにより、送信した検索対象をグラフに追加することを要求する。
【0063】
要求部132は、複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェント(
図1ではエージェント50)に、検索クエリを用いた近傍検索を要求する。要求部132は、各々が有するグラフに含まれる検索対象の和集合が複数の検索対象となる複数のエージェントに、検索クエリを用いた近傍検索を要求する。
【0064】
要求部132は、複数のエージェントのうち少なくとも一部のエージェントの各々が有するグラフ間には検索対象に重複がある複数のエージェントに、検索クエリを用いた近傍検索を要求する。要求部132は、第1検索対象群からなる第1グラフを有する第1エージェントと、第1検索対象群のうち少なくとも1つの検索対象を含む第2検索対象群からなる第2グラフを有する第2エージェントとを含む複数のエージェントに、検索クエリを用いた近傍検索を要求する。
【0065】
要求部132は、複数のエージェントのうち一部のエージェントに、新規追加検索対象のグラフへの追加を要求する。要求部132は、複数のエージェントのうち記憶領域の使用状況に応じて決定される一部のエージェントに、新規追加検索対象のグラフへの追加を要求する。要求部132は、複数のエージェントのうち記憶領域の使用状況に応じて決定される複数のエージェントのランキングに基づいて、新規追加検索対象のグラフへの追加を要求する。
【0066】
要求部132は、複数のエージェントの各々に対応するノード(
図1ではノード20)の記憶領域の使用状況に応じて決定される一部のエージェントに、新規追加検索対象のグラフへの追加を要求する。要求部132は、複数のエージェントの各々に対応するノードの記憶領域の使用状況に応じて決定されるノードのランキングに基づいて、新規追加検索対象のグラフへの追加を要求する。要求部132は、記憶領域の使用率が低いノードに対応するエージェントから順に付されたランキングに基づいて、新規追加検索対象のグラフへの追加を要求する。要求部132は、検索対象が類似性に応じてエッジで連結されたグラフを各々が有する複数のエージェントに、検索クエリを用いた近傍検索を要求する。
【0067】
(生成部133)
生成部133は、各種情報を生成する。生成部133は、記憶部120に記憶された情報を用いて各種情報を生成する。生成部133は、取得部131により取得された各種情報を用いて各種情報を生成する。例えば、生成部133は、取得部131により取得された各エージェントの検索結果を統合して、ユーザに提供する検索生成(統合検索結果)する。
【0068】
生成部133は、複数のエージェントの各々による検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、検索クエリに対応する統合検索結果を生成する。生成部133は、複数のエージェントの各々の検索結果のうち、検索クエリとの距離が近い方から所定数の検索結果を選択することにより、統合検索結果を生成する。
【0069】
生成部133は、複数のエージェントの各々から取得した順序に応じて検索結果を処理対象としてマージ処理を行うことにより、統合検索結果を生成する。生成部133は、マージ処理の処理対象となった検索対象のうち、検索クエリに近い方から所定数の検索対象を含む結果候補リストであって、統合検索結果として用いられる結果候補リストのうち、検索クエリからの距離が最も遠い検索対象である最遠検索対象の検索クエリからの第1距離と、マージ処理の対象とする一の検索対象の検索クエリからの第2距離との比較に基づいて、結果候補リストから最遠検索対象を除外し、結果候補リストに一の検索対象を追加するか否かを判定する。
【0070】
生成部133は、一の検索対象の第2距離が最遠検索対象の第1距離よりも短い場合、結果候補リストから最遠検索対象を除外し、結果候補リストに一の検索対象を追加する。生成部133は、マージ処理において処理対象となった検索対象を処理済み検索対象として管理し、一の検索対象が処理済み検索対象に含まれる場合、マージ処理の対象としない。
【0071】
(決定部134)
決定部134は、決定処理を実行する。決定部134は、記憶部120に記憶された情報を用いて各種情報を決定する。決定部134は、取得部131により取得された各種情報を用いて各種情報を決定する。例えば、決定部134は、新規追加検索対象のグラフへの追加を要求するエージェントを決定する。
【0072】
決定部134は、複数のエージェントのうち記憶領域の使用状況に基づいて、新規追加検索対象のグラフへの追加を要求するエージェントを決定する。決定部134は、記憶領域の使用状況に基づいて、複数のエージェントのうち新規追加検索対象のグラフへの追加を要求するエージェントを決定する。
【0073】
決定部134は、記憶領域の使用状況に基づいて、複数のエージェントのランキングを決定する。決定部134は、複数のエージェントのランキングに基づいて、複数のエージェントのうち新規追加検索対象のグラフへの追加を要求するエージェントを決定する。
【0074】
決定部134は、複数のエージェントの各々に対応するノード(
図1ではノード20)の記憶領域の使用状況に基づいて、複数のエージェントのうち新規追加検索対象のグラフへの追加を要求するエージェントを決定する。決定部134は、複数のエージェントの各々に対応するノードの記憶領域の使用状況に応じて決定されるノードのランキングに基づいて、複数のエージェントのうち新規追加検索対象のグラフへの追加を要求するエージェントを決定する。
【0075】
決定部134は、複数のエージェントの各々に対応するノードの記憶領域の使用状況に基づいて、ノードのランキングを決定する。決定部134は、ノードのランキングに基づいて、新規追加検索対象のグラフへの追加を要求するエージェントを決定する。決定部134は、記憶領域の使用率が低いノードに対応するエージェントから順にランキングを付すと決定する。決定部134は、記憶領域の使用率が低いノードに対応するエージェントから順にランキングを付す。
【0076】
(提供部135)
提供部135は、各種情報を提供する。提供部135は、通信部110を介して、端末装置10へ情報を送信する。提供部135は、ユーザが利用する端末装置10へ情報提供サービスを提供する。
【0077】
提供部135は、統合検索結果を提供する。提供部135は、統合検索結果を端末装置10に送信する。例えば、提供部135は、生成部133により生成された統合検索結果を端末装置10へ送信する。
【0078】
〔4.処理フロー〕
次に、
図5を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。
図5は、実施形態に係る情報処理装置による処理の一例を示すフローチャートである。
【0079】
図5に示すように、情報処理装置100は、検索クエリを取得する(ステップS101)。情報処理装置100は、複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェントに、検索クエリを用いた近傍検索を要求する(ステップS102)。
【0080】
情報処理装置100は、複数のエージェントの各々による検索クエリを用いた近傍検索の検索結果をマージすることにより、検索クエリに対応する統合検索結果を生成する(ステップS103)。情報処理装置100は、統合検索結果を提供する(ステップS104)。例えば、情報処理装置100は、統合検索結果をユーザが利用する端末装置10へ送信する。
【0081】
〔5.ソート処理例〕
ここで、
図6を用いて、各エージェントからの検索結果を統合して統合検索結果を生成する際のソート処理について説明する。
図6は、実施形態に係るソート処理の一例を示すフローチャートである。
図1と同様の点は適宜説明を省略する。なお、
図6の例では、検索クエリQE11に対応する統合検索結果を情報処理装置100が生成する場合を一例として説明する。
【0082】
図6に示すエージェント#1~#4等のエージェント50の各々は、
図1のエージェント50a~50eのいずれかであってもよい。
図6の例では、情報処理装置100は、検索結果RS11~RS14のうち、検索クエリQE11との距離が近い方から提供数の検索結果を選択することにより、統合検索結果の基となる結果候補リストLTを生成するが、その処理の具体例を以下説明する。
図6では、結果候補リストLTには、検索クエリQE11からの距離が短い方から順に4つの検索対象が登録される場合を示す。
【0083】
図6の例では、情報処理装置100は、エージェント#1~#4等の各エージェント50に検索クエリQE11を用いた近傍検索を要求する。エージェント#1~#4等の各エージェント50は、
図12に示すような処理により、検索クエリQE11に対応する検索結果を生成する。なお、この点は
図1の場合と同様のため詳細な説明は省略する。
【0084】
図6の例では、エージェント#1は、保有するグラフGRを用いて検索クエリQE11に対応する検索結果RS11を生成する。エージェント#1は、提供数(
図7の例では4)の検索対象を含む検索結果RS11を生成する。
図6では、検索結果RS11は、検索クエリQE11からの距離が短い方から順に検索対象が左から右へ並べられている。すなわち、
図6では、検索結果RS11のうち検索対象N11が検索クエリQE11からの距離が最も短く、検索対象N5、N256、N81の順に検索クエリQE11からの距離が短いことを示す。エージェント#1は、提供数の検索対象からなる検索結果RS11を情報処理装置100へ送信する。
【0085】
また、エージェント#2は、保有するグラフGRを用いて検索クエリQE11に対応する検索結果RS12を生成する。エージェント#2は、提供数(
図7の例では4)の検索対象を含む検索結果RS12を生成する。
図6では、検索結果RS12は、検索クエリQE11からの距離が短い方から順に検索対象が左から右へ並べられている。すなわち、
図6では、検索結果RS12のうち検索対象N54が検索クエリQE11からの距離が最も短く、検索対象N5、N44、N361の順に検索クエリQE11からの距離が短いことを示す。エージェント#2は、提供数の検索対象からなる検索結果RS12を情報処理装置100へ送信する。
【0086】
また、エージェント#3は、保有するグラフGRを用いて検索クエリQE11に対応する検索結果RS13を生成する。エージェント#3は、提供数(
図7の例では4)の検索対象を含む検索結果RS13を生成する。
図6では、検索結果RS13は、検索クエリQE11からの距離が短い方から順に検索対象が左から右へ並べられている。すなわち、
図6では、検索結果RS13のうち検索対象N3が検索クエリQE11からの距離が最も短く、検索対象N7、N81、N458の順に検索クエリQE11からの距離が短いことを示す。エージェント#3は、提供数の検索対象からなる検索結果RS13を情報処理装置100へ送信する。
【0087】
また、エージェント#4は、保有するグラフGRを用いて検索クエリQE11に対応する検索結果RS14を生成する。エージェント#4は、提供数(
図7の例では4)の検索対象を含む検索結果RS14を生成する。
図6では、検索結果RS14は、検索クエリQE11からの距離が短い方から順に検索対象が左から右へ並べられている。すなわち、
図6では、検索結果RS14のうち検索対象N11が検索クエリQE11からの距離が最も短く、検索対象N54、N99、N268の順に検索クエリQE11からの距離が短いことを示す。エージェント#4は、提供数の検索対象からなる検索結果RS14を情報処理装置100へ送信する。
【0088】
図6では、エージェント#1、#2、#3、#4の順に検索結果を情報処理装置100へ送信したものとして以下説明する。なお、エージェント#1~#4等の各エージェント50は、検索処理が完了した後、検索結果を情報処理装置100へ送信すればよく、例えばエージェント#4、#2、#1、#3等の任意の順序であってもよい。情報処理装置100は、エージェント#1~#4等の各々から取得した順序に応じて検索結果を処理対象としてマージ処理を行うことにより、結果候補リストLTを生成する。情報処理装置100は、検索結果が届いたものから内部キューBFに追加する。
【0089】
図6は、結果候補リストLTの生成途中の状態を示す。例えば、
図6では、検索結果RS11や検索結果RS12に含まれる検索対象が既に処理対象TGとして処理されており、結果候補リストLTに検索対象N54、N11、N5、N44が追加されている状態を示す。
図6では、結果候補リストLTは、検索クエリQE11からの距離が短い方から順に検索対象が上から下へ並べられている。すなわち、
図6では、結果候補リストLTのうち検索対象N44が検索クエリQE11からの距離が最も遠い検索対象(「最遠検索対象」ともいう)である状態を示す。
【0090】
情報処理装置100は、処理対象TGは、結果候補リストLTへの追加を判断される対象となる検索対象NXを示す。情報処理装置100は、検索対象NXの距離DXと、結果候補リストLTのうち検索クエリQE11からの距離が最も遠い検索対象(最遠検索対象)の距離(距離Dmaxとする)とを比較し、距離DXが距離Dmaxよりも小さい場合、検索対象NXと最遠検索対象とを入れ替える。この場合、情報処理装置100は、結果候補リストLTから最遠検索対象を除外し、結果候補リストLTに検索対象NXを追加する。
【0091】
また、情報処理装置100は、結果候補リストLT中の検索対象のうち最遠検索対象の距離を基準距離PDに設定する。
図6の例では、基準距離PDには、最遠検索対象である検索対象N44の距離D44が設定されている。情報処理装置100は、基準距離PDを用いることで、既に結果候補リストLTで最遠検索対象となっている検索対象よりも検索クエリQE11からの距離が遠い検索対象が内部キューBFに追加されることを抑制し、無駄な処理を抑制して、処理を高速化することができる。例えば、情報処理装置100は、内部キューBFも検索対象を追加する際に、その検索対象の距離が基準距離PDの距離よりも遠い場合、その検索対象を内部キューBFに追加しない。
【0092】
また、情報処理装置100は、処理対象TGとして処理済みとなった検索対象を処理済みリストPLに追加する。
図6の例では、処理済みリストPLには、既に処理対象TGとして処理された検索対象N11、N5、N256、N54、N44といった検索対象が格納されている。処理済みリストPLを用いることにより、情報処理装置100は、検索対象が処理対象TGとなることを抑制し、冗長な処理を抑制して、処理を高速化することができる。例えば、情報処理装置100は、内部キューBFも検索対象を追加する際に、その検索対象が処理済みリストPLに含まれる場合、その検索対象を内部キューBFに追加しない。
【0093】
図6の例では、情報処理装置100は、例えば、内部キューBFの先頭である検索対象N3を処理対象TGとし、検索対象N3を内部キューBFから除外する。情報処理装置100は、処理対象TGとなった検索対象N3の距離D3と最遠検索対象である検索対象N44の距離D44とを比較することにより、検索対象N3を結果候補リストLTに追加するかを判定する。情報処理装置100は、距離D3が距離D44よりも小さい場合、検索対象N3と検索対象N44とを入れ替える。この場合、情報処理装置100は、結果候補リストLTから検索対象N44を除外し、結果候補リストLTに検索対象N3を追加する。そして、情報処理装置100は、更新後の結果候補リストLTを基に最遠検索対象を特定し、その最遠検索対象の距離で基準距離PDを更新する。また、情報処理装置100は、検索対象N3を処理済みリストPLに追加する。情報処理装置100は、上述した処理を繰り返すことにより、検索結果RS11~RS14のうち、検索クエリQE11との距離が近い方から提供数の検索結果からなる結果候補リストLTを生成する。
【0094】
〔6.追加処理〕
次に、
図7を用いて、グラフへの検索対象の新規追加の処理について説明する。
図7は、情報処理システムによる新規検索対象の追加処理の一例を示す図である。なお、
図1と同様の点については適宜説明を省略する。
図7の例では、説明のために端末装置10から取得した新規検索対象である検索対象NE1を追加する場合を一例として説明するが、新規検索対象は他の装置から取得してもよい。
【0095】
まず、情報処理装置100は、端末装置10から新たに追加する画像(「新規追加画像」ともいう)に対応する検索対象NE1を取得する(ステップS20)。
図7では、端末装置10が新規追加画像及び検索対象NE1を情報処理装置100に送信することにより、情報処理装置100は、端末装置10から新規追加画像及び検索対象NE1を受信する。
図7では説明を簡単にするために、新規追加画像がベクトルに変換されたベクトルデータである検索対象NE1を端末装置10から情報処理装置100が取得する場合を示すが、情報処理装置100は、端末装置10から新規追加画像のみを取得し、取得した画像をベクトルに変換し検索対象NE1を取得してもよい。情報処理装置100は、端末装置10から取得した新規追加画像と検索対象NE1とを対応付けて記憶部120(
図4参照)に記憶する。
【0096】
検索対象NE1を取得した情報処理装置100は、複数のエージェント50のうち、検索対象NE1をグラフGRに追加させるエージェント50を決定する(ステップS21)。情報処理装置100は、各エージェント50が含まれるノード20の記憶領域の使用状況や、各エージェント50による記憶領域の使用状況に基づいて、検索対象NE1をグラフGRに追加させるエージェント50を決定する。例えば、情報処理装置100は、各エージェント50が含まれるノード20の記憶領域の使用率や、各エージェント50による記憶領域の使用率に基づいて、検索対象NE1をグラフGRに追加させるエージェント50を決定する。
図7では、情報処理装置100は、第3ノード20cに含まれるエージェント50e、第2ノード20bに含まれるエージェント50c、及び第1ノード20aに含まれるエージェント50aの3つに検索対象NE1の追加を要求すると決定する。なお、
図7は一例に過ぎず、検索対象NE1の追加を要求するエージェント50の数は、3つに限らず、2つであってもよいし、4つ以上であってもよい。また、情報処理装置100による新規検索対象を追加するエージェントの決定についての詳細は後述する。
【0097】
図7の例では、情報処理装置100は、エージェント50aに検索対象NE1のグラフGR1への追加を要求する(ステップS22-1)。情報処理装置100は、エージェント50aに検索対象NE1を送信することにより、検索対象NE1のグラフGR1への追加を要求する。情報処理装置100から検索対象NE1の追加の要求を受け付けたエージェント50aは、検索対象NE1を追加することによりグラフGR1を生成(更新)する処理を実行する。
【0098】
例えば、エージェント50aは、グラフGR1中の検索対象のうち、検索対象NE1に近似する検索対象と検索対象NE1との間をエッジで連結することによりグラフGR1を生成(更新)する。例えば、エージェント50aは、グラフGR1中の検索対象のうち、検索対象NE1に近似する検索対象と検索対象NE1との間をエッジで連結することにより、グラフGR1を生成(更新)する。エージェント50aは、グラフGR1中の検索対象及び検索対象NE1を含む検索対象群を距離(類似度)に基づいてエッジで連結することにより、グラフGR1を生成(更新)する。例えば、エージェント50aは、グラフ生成に関する種々の従来技術を適宜用いて、グラフGR1を生成(更新)することにより、効率的にグラフGR1を生成(更新)してもよい。例えば、エージェント50aは、k近傍グラフ(k-nearest neighbor graph)に関する技術を用いて、グラフGR1中の検索対象及び検索対象NE1を含む検索対象群をエッジで連結することにより、グラフGR1を生成(更新)してもよい。
【0099】
例えば、エージェント50aは、グラフ型のインデックスの生成方法を適宜用いて、グラフGR1を生成(更新)することにより、効率的にグラフGR1を生成(更新)してもよい。例えば、エージェント50aは、検索対象NE1をグラフGR1に追加する場合、そのグラフGR1を用いて検索対象NE1の近似する検索対象を検索し、検索された検索対象と検索対象NE1とを無向エッジで接続してもよい。なお、上記は一例に過ぎず、エージェント50aは、種々の手法により検索対象NE1が追加されたグラフGR1を生成してもよい。例えば、エージェント50aは、特許文献3に記載されるような処理に基づいて、検索対象NE1が追加されたグラフGR1を生成してもよい。
【0100】
また、情報処理装置100は、エージェント50cに検索対象NE1のグラフGR3への追加を要求する(ステップS22-2)。情報処理装置100は、エージェント50cに検索対象NE1を送信することにより、検索対象NE1のグラフGR3への追加を要求する。情報処理装置100から検索対象NE1の追加の要求を受け付けたエージェント50aは、検索対象NE1を追加することによりグラフGR3を生成(更新)する処理を実行する。なお、検索対象NE1をグラフGR3へ追加することによるグラフGR3の生成(更新)は、上述した検索対象NE1をグラフGR1へ追加することによるグラフGR1の生成(更新)と同様であるため説明を省略する。
【0101】
また、情報処理装置100は、エージェント50eに検索対象NE1のグラフGR5への追加を要求する(ステップS22-3)。情報処理装置100は、エージェント50eに検索対象NE1を送信することにより、検索対象NE1のグラフGR5への追加を要求する。情報処理装置100から検索対象NE1の追加の要求を受け付けたエージェント50aは、検索対象NE1を追加することによりグラフGR5を生成(更新)する処理を実行する。なお、検索対象NE1をグラフGR5へ追加することによるグラフGR5の生成(更新)は、上述した検索対象NE1をグラフGR1へ追加することによるグラフGR1の生成(更新)と同様であるため説明を省略する。
【0102】
なお、ステップS22-1~S22-3は、処理を説明するためのものであり、ステップS22-1~S22-3のいずれが先に行われてもよい。以下、ステップS22-1~S22-3を区別せずに説明する場合、ステップS22と総称する。このように、ステップS22において新規検索対象である検索対象NE1がグラフに追加されることにより、情報処理システム1は、新たな検索対象を適切に行うことができる。
【0103】
ここで、
図8~
図10を用いて、
図7の検索対象NE1を追加する処理の具体例を説明する。
図8~
図10は、新規検索対象の追加処理を示す図である。なお、
図7と同様の点については同じ符号を付すなどにより適宜説明を省略する。
図8~
図10は、
図7に示す検索対象NE1を追加する際の各ノード20や各エージェント50の状態を示す。また、
図8~
図10において「Other Pod」を記載された他のプログラム60a~60dは、例えばエージェント50以外のソフトウェア(プログラム)であり、情報処理システム1において実行されるプログラムコンテナを示す。以下では、他のプログラム60a~60d等について、特に区別なく説明する場合には、他のプログラム60と記載する。
【0104】
具体的には、
図8~
図10の例では、第1ノードであるノード20aの記憶領域の使用率が70%であり、第2ノードであるノード20bの記憶領域の使用率が50%であり、第3ノードであるノード20cの記憶領域の使用率が40%である状態を示す。また、ノード20aの記憶領域の使用率70%のうち、エージェント50aによる使用率が24%であり、エージェント50bによる使用率が26%であり、他のソフトウェア(プログラム60a)による使用率が20%であることを示す。
【0105】
また、ノード20bの記憶領域の使用率50%のうち、エージェント50cによる使用率が19%であり、エージェント50dによる使用率が20%であり、他のソフトウェア(プログラム60b)による使用率が10%であることを示す。また、ノード20cの記憶領域の使用率40%のうち、エージェント50cによる使用率が20%であり、他のソフトウェア(プログラム60c)による使用率が10%であり、他のソフトウェア(プログラム60d)による使用率が10%であることを示す。
【0106】
例えば、情報処理装置100は、
図9に示すように、各ノード20や各エージェント50のランキング(順位)を決定する。情報処理装置100は、各ノード20の記憶領域の使用率を基に、各ノード20のランキングを決定する。
図9では、情報処理装置100は、各ノード20の記憶領域の使用率が低い方から順に高いランキングを付けると決定する。例えば、情報処理装置100は、ノード20a~20cのうち、最も記憶領域の使用率が低いノード20cのランキングを1位に決定する。また、情報処理装置100は、ノード20a~20cのうち、ノード20cの次に記憶領域の使用率が低いノード20bのランキングを2位に決定する。また、情報処理装置100は、ノード20a~20cのうち、ノード20bの次に記憶領域の使用率が低いノード20aのランキングを3位に決定する。
【0107】
そして、情報処理装置100は、決定したノード20のランキングを基に、各エージェント50のランキングを決定する。情報処理装置100は、ランキングが高いノード20に含まれるエージェント50から順に高いランキングを付けると決定する。
図9の例では、情報処理装置100は、各ノード20のうちランキングが1位であるノード20cに含まれるエージェント50のうち、最も記憶領域の使用率が低いエージェント50eのランキングを1位に決定する。そして、情報処理装置100は、各ノード20のうちランキングが2位であるノード20bに含まれるエージェント50のうち、最も記憶領域の使用率が低いエージェント50cのランキングを2位に決定する。そして、情報処理装置100は、各ノード20のうちランキングが3位であるノード20aに含まれるエージェント50のうち、最も記憶領域の使用率が低いエージェント50aのランキングを3位に決定する。
【0108】
ここで、各ノード20のうちランキングが1位であるノード20cに含まれるエージェント50でランキングが未決定のエージェント50がないため、情報処理装置100は、ノード20のうちランキングが2位であるノード20bに含まれるエージェント50のうち、2番目に記憶領域の使用率が低いエージェント50dのランキングを4位に決定する。そして、情報処理装置100は、ノード20のうちランキングが3位であるノード20aに含まれるエージェント50のうち、2番目に記憶領域の使用率が低いエージェント50bのランキングを5位に決定する。
【0109】
これにより、情報処理装置100は、
図10のランキング一覧LT1に示すように、各エージェント50のランキングを決定する。情報処理装置100は、検索対象NE1の追加を要求するエージェント50を、ランキング一覧LT1を基に決定する。情報処理装置100は、ランキングが高い方から所定数(
図7では3つ)のエージェント50に検索対象NE1の追加を要求すると決定する。例えば、情報処理装置100は、ランキング一覧LT1の上位3つであるエージェント50e、50c、50aに検索対象NE1の追加を要求すると決定する。そして、情報処理装置100は、エージェント50e、50c、50aの3つに検索対象NE1を送信することにより、検索対象NE1の追加を要求する。
【0110】
このように、情報処理システム1は、できる限り多くのノード20に分散して検索対象を冗長して追加するように、新規検索対象の追加処理を行う。これにより、情報処理システム1は、各ノード20のメモリに使用状況をできる限り均一化することができる。このように、情報処理システム1は、ハードウェア(装置)としてのメモリに使用状況を平均かすることができる。
【0111】
例えば、情報処理システム1のようなシステムにおいて障害(故障)が発生する場合、エージェント50単位の場合もあるが、ノード20単位であることが多い。例えば、
図10の例で、新規検索対象である検索対象(例えば検索対象NE1)をエージェント50c及びエージェント50dに追加した場合、第2ノードであるノード20bに障害が発生した場合、追加した検索対象(例えば検索対象NE1)が検索されなくなる。そのため、情報処理システム1では、同じ検索対象を異なるノードに含まれるエージェント50のグラフに追加することで、追加した検索対象が検索されなくなる可能性を低減することができる。
図10の例では、情報処理システム1は、新規検索対象である検索対象(例えば検索対象NE1)を、第3ノードであるノード20cのエージェント50e、第2ノードであるノード20bのエージェント50c、第1ノードであるノード20aのエージェント50aの3つのエージェント50に追加する。これにより、情報処理システム1は、1つのノード20に障害が発生しても追加した検索対象が検索されなくなる可能性を低減することができる。
【0112】
〔6-1.追加処理フロー〕
次に、
図11を用いて情報処理装置100における新規検索対象の追加に関する処理の流れを示す。
図11は、情報処理装置による新規検索対象の追加に関する処理の一例を示すフローチャートである。
【0113】
図11に示すように、情報処理装置100は、新規追加検索対象の情報を取得する(ステップS201)。情報処理装置100は、複数のエージェントのうち一部のエージェントに、新規追加検索対象のグラフへの追加を要求する(ステップS202)。そして、新規追加検索対象のグラフへの追加の要求を受けたエージェント50は、グラフに新規追加検索対象を追加し、グラフを更新する更新処理を実行する。
【0114】
〔7.検索処理のフロー〕
ここから、エージェント50による検索処理のフローについて、
図12を一例として説明する。
図12は、エージェントにおける検索処理の一例を示すフローチャートである。具体的には、
図12は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、
図12に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、エージェント50によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、グラフ構造におけるノードは、上述した処理単位のノード20とは異なるもの(概念)である。
【0115】
ここでは、近傍集合N(G,y)は、オブジェクトyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合N(G,y)は、オブジェクトyからのエッジが連結されたオブジェクトの集合である。「G」は、所定のグラフデータであってもよい。例えば、エージェント50は、k近傍検索処理を実行する。
【0116】
例えば、エージェント50は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から集合Sを抽出する(ステップS301)。例えば、エージェント50は、ランダム等の任意の手法により決定(選択)されたオブジェクトを集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出された集合Sに含まれるオブジェクトは、検索結果(抽出候補)の集合Rの初期集合にも含められる。また、ステップS301において抽出された集合Sに含まれるオブジェクトは、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
【0117】
次に、エージェント50は、集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。次に、エージェント50は、オブジェクトsを集合Sから除外する(ステップS303)。
【0118】
次に、エージェント50は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のオブジェクトのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、エージェント50は、集合Rをオブジェクトyの近傍集合として出力し(ステップS305)、処理を終了する。
【0119】
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、エージェント50は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトの中から集合Cに含まれないオブジェクトを、所定の基準に基づいて一つ選択し、選択したオブジェクトuを、集合Cに格納する(ステップS306)。
【0120】
次に、エージェント50は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、エージェント50は、オブジェクトuを集合Sに追加する(ステップS308)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、エージェント50は、ステップS309の判定(処理)を行う。
【0121】
次に、エージェント50は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合、エージェント50は、ステップS315の判定(処理)を行う。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS309:No)、エージェント50は、ステップS315の判定(処理)を行う。
【0122】
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、エージェント50は、オブジェクトuを集合Rに追加する(ステップS310)。そして、エージェント50は、集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索における抽出数を示し、「3」や「20」や「100」等の任意の値であってもよい。集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、エージェント50は、ステップS313の判定(処理)を行う。
【0123】
集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、エージェント50は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、集合Rから除外する(ステップS312)。
【0124】
次に、エージェント50は、集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、エージェント50は、ステップS315の判定(処理)を行う。また、集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、エージェント50は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
【0125】
そして、エージェント50は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択したか否かを判定する(ステップS315)。なお、エージェント50は、閾値を用いない場合、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択したか否かを判定してもよい。オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択していない場合(ステップS315:No)、エージェント50は、ステップS306に戻って処理を繰り返す。
【0126】
オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択した場合(ステップS315:Yes)、エージェント50は、集合Sが空集合であるか否かを判定する(ステップS316)。なお、エージェント50は、オブジェクトsの近傍集合N(G,s)から閾値に対応する個数までオブジェクトを選択する前であっても、オブジェクトsの近傍集合N(G,s)中の全オブジェクトが選択済みである場合、ステップS316の処理を行ってもよい。すなわち、エージェント50は、オブジェクトsの近傍集合N(G,s)中のオブジェクト数が閾値以下であり、近傍集合N(G,s)中の全オブジェクトを選択した場合、ステップS315がYesである場合と同様に、ステップS316の処理を行ってもよい。集合Sが空集合でない場合(ステップS316:No)、エージェント50は、ステップS302に戻って処理を繰り返す。また、集合Sが空集合である場合(ステップS316:Yes)、エージェント50は、集合Rを出力し、処理を終了する(ステップS317)。例えば、エージェント50は、集合Rに含まれるオブジェクトを検索クエリ(入力オブジェクトy)に対応する検索結果として、情報処理装置100へ送信する。
【0127】
〔8.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、要求部132と、生成部133と、提供部135とを有する。取得部131は、検索クエリを取得する。要求部132は、複数の検索対象のうち一部の検索対象からなるグラフを各々が有する複数のエージェント(実施形態では「エージェント50」以下同じ)に、検索クエリを用いた近傍検索を要求する。生成部133は、複数のエージェントの各々による検索クエリを用いた近傍検索の検索結果をマージするマージ処理により、検索クエリに対応する統合検索結果を生成する。提供部135は、統合検索結果を提供する。
【0128】
これにより、実施形態に係る情報処理装置100は、検索クエリに対する複数のエージェントでのグラフを用いた検索結果をマージして、検索クエリを用いた近傍検索の検索結果を提供することにより、検索処理を分散することで処理を高速化することができ、適切な検索サービスを提供することができる。
【0129】
また、実施形態に係る情報処理装置100において、要求部132は、各々が有するグラフに含まれる検索対象の和集合が複数の検索対象となる複数のエージェントに、検索クエリを用いた近傍検索を要求する。
【0130】
これにより、実施形態に係る情報処理装置100は、複数のエージェント全体として複数の検索対象の全てを対象とする検索ができるため、検索漏れを抑制することができ、適切な検索サービスを提供することができる。
【0131】
また、実施形態に係る情報処理装置100において、要求部132は、複数のエージェントのうち少なくとも一部のエージェントの各々が有するグラフ間には検索対象に重複がある複数のエージェントに、検索クエリを用いた近傍検索を要求する。
【0132】
これにより、実施形態に係る情報処理装置100は、冗長して検索結果を含むグラフを用いることにより検索漏れを抑制することができ、適切な検索サービスを提供することができる。
【0133】
また、実施形態に係る情報処理装置100において、要求部132は、第1検索対象群からなる第1グラフを有する第1エージェントと、第1検索対象群のうち少なくとも1つの検索対象を含む第2検索対象群からなる第2グラフを有する第2エージェントとを含む複数のエージェントに、検索クエリを用いた近傍検索を要求する。
【0134】
これにより、実施形態に係る情報処理装置100は、冗長して検索結果を含むグラフを用いることにより検索漏れを抑制することができ、適切な検索サービスを提供することができる。
【0135】
また、実施形態に係る情報処理装置100において、取得部131は、ユーザが利用する端末装置(実施形態では「端末装置10」以下同じ)から検索クエリを取得する。提供部135は、統合検索結果を端末装置に送信する。
【0136】
これにより、実施形態に係る情報処理装置100は、ユーザに対して適切な検索サービスを提供することができる。
【0137】
また、実施形態に係る情報処理装置100において、生成部133は、複数のエージェントの各々の検索結果のうち、検索クエリとの距離が近い方から所定数の検索結果を選択することにより、統合検索結果を生成する。
【0138】
これにより、実施形態に係る情報処理装置100は、複数のエージェントからの検索結果を適切にマージして統合検索結果を生成することができ、適切な検索サービスを提供することができる。
【0139】
また、実施形態に係る情報処理装置100において、生成部133は、複数のエージェントの各々から取得した順序に応じて検索結果を処理対象としてマージ処理を行うことにより、統合検索結果を生成する。
【0140】
これにより、実施形態に係る情報処理装置100は、全てのエージェントからの検索結果を待つことなく、順次検索結果をマージして統合検索結果を生成することで処理を高速化することができ、適切な検索サービスを提供することができる。
【0141】
また、実施形態に係る情報処理装置100において、生成部133は、マージ処理の処理対象となった検索対象のうち、検索クエリに近い方から所定数の検索対象を含む結果候補リストであって、統合検索結果として用いられる結果候補リストのうち、検索クエリからの距離が最も遠い検索対象である最遠検索対象の検索クエリからの第1距離と、マージ処理の対象とする一の検索対象の検索クエリからの第2距離との比較に基づいて、結果候補リストから最遠検索対象を除外し、結果候補リストに一の検索対象を追加するか否かを判定する。
【0142】
これにより、実施形態に係る情報処理装置100は、統合検索結果として用いられる結果候補リストを用いて、その中で検索クエリから最遠の検索結果である最遠検索対象との比較で結果候補リストの更新可否を判定することで処理を高速化することができ、適切な検索サービスを提供することができる。
【0143】
また、実施形態に係る情報処理装置100において、生成部133は、一の検索対象の第2距離が最遠検索対象の第1距離よりも短い場合、結果候補リストから最遠検索対象を除外し、結果候補リストに一の検索対象を追加する。
【0144】
これにより、実施形態に係る情報処理装置100は、統合検索結果として用いられる結果候補リストの中で検索クエリから最遠の検索結果である最遠検索対象の距離と、一の検索対象の距離との比較で、統合検索結果の更新可否を判定することで処理を高速化することができ、適切な検索サービスを提供することができる。
【0145】
また、実施形態に係る情報処理装置100において、生成部133は、マージ処理において処理対象となった検索対象を処理済み検索対象として管理し、一の検索対象が処理済み検索対象に含まれる場合、マージ処理の対象としない。
【0146】
これにより、実施形態に係る情報処理装置100は、検索対象が冗長して処理対象となることを抑制することで処理を高速化することができ、適切な検索サービスを提供することができる。
【0147】
また、実施形態に係る情報処理装置100において、取得部131は、新たに追加される検索対象である新規追加検索対象の情報を取得する。要求部132は、複数のエージェントのうち一部のエージェントに、新規追加検索対象のグラフへの追加を要求する。
【0148】
これにより、実施形態に係る情報処理装置100は、検索対象を新たに追加する場合、一部のエージェントのグラフへ追加求することにより、新たな検索対象を適切に追加しグラフを更新することができるため、適切な検索サービスを提供することができる。
【0149】
また、実施形態に係る情報処理装置100において、要求部132は、複数のエージェントのうち記憶領域の使用状況に応じて決定される一部のエージェントに、新規追加検索対象のグラフへの追加を要求する。
【0150】
これにより、実施形態に係る情報処理装置100は、検索対象を新たに追加する場合、記憶領域の使用状況に応じて一部のエージェントのグラフへ追加求することにより、新たな検索対象を適切に追加しグラフを更新することができるため、適切な検索サービスを提供することができる。
【0151】
また、実施形態に係る情報処理装置100において、要求部132は、複数のエージェントのうち記憶領域の使用状況に応じて決定される複数のエージェントのランキングに基づいて、新規追加検索対象のグラフへの追加を要求する。
【0152】
これにより、実施形態に係る情報処理装置100は、検索対象を新たに追加する場合、記憶領域の使用状況に応じたランキングに基づいて、一部のエージェントのグラフへ追加求することにより、新たな検索対象を適切に追加しグラフを更新することができるため、適切な検索サービスを提供することができる。
【0153】
また、実施形態に係る情報処理装置100において、要求部132は、複数のエージェントの各々に対応するノード(実施形態では「ノード20」以下同じ)の記憶領域の使用状況に応じて決定される一部のエージェントに、新規追加検索対象のグラフへの追加を要求する。
【0154】
これにより、実施形態に係る情報処理装置100は、検索対象を新たに追加する場合、エージェントの各々に対応するノードの記憶領域の使用状況に応じて一部のエージェントのグラフへ追加求することにより、新たな検索対象を適切に追加しグラフを更新することができるため、適切な検索サービスを提供することができる。
【0155】
また、実施形態に係る情報処理装置100において、要求部132は、複数のエージェントの各々に対応するノードの記憶領域の使用状況に応じて決定されるノードのランキングに基づいて、新規追加検索対象のグラフへの追加を要求する。
【0156】
これにより、実施形態に係る情報処理装置100は、検索対象を新たに追加する場合、エージェントの各々に対応するノードの記憶領域の使用状況に応じたランキングに基づいて、一部のエージェントのグラフへ追加求することにより、新たな検索対象を適切に追加しグラフを更新することができるため、適切な検索サービスを提供することができる。
【0157】
また、実施形態に係る情報処理装置100において、要求部132は、記憶領域の使用率が低いノードに対応するエージェントから順に付されたランキングに基づいて、新規追加検索対象のグラフへの追加を要求する。
【0158】
これにより、実施形態に係る情報処理装置100は、検索対象を新たに追加する場合、記憶領域の使用率が低いノードに対応するエージェントから順に付されたランキングに基づいて、一部のエージェントのグラフへ追加求することにより、新たな検索対象を適切に追加しグラフを更新することができるため、適切な検索サービスを提供することができる。
【0159】
また、実施形態に係る情報処理装置100において、要求部132は、検索対象が類似性に応じてエッジで連結されたグラフを各々が有する複数のエージェントに、検索クエリを用いた近傍検索を要求する。
【0160】
これにより、実施形態に係る情報処理装置100は、検索対象が類似性に応じてエッジで連結されたグラフを用いる複数のエージェントからの検索結果をマージして、検索クエリを用いた近傍検索の検索結果を提供することにより、検索処理を分散することで処理を高速化することができ、適切な検索サービスを提供することができる。
【0161】
〔9.ハードウェア構成〕
また、上述した実施形態に係る端末装置10や情報処理装置100は、例えば
図13に示すような構成のコンピュータ1000によって実現される。以下、情報処理装置100を例に挙げて説明する。
図13は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力I/F(Interface)1060、入力I/F1070、ネットワークI/F1080がバス1090により接続された形態を有する。
【0162】
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。演算装置1030は、例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等により実現される。
【0163】
一次記憶装置1040は、RAM(Random Access Memory)等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等により実現される。二次記憶装置1050は、内蔵ストレージであってもよいし、外付けストレージであってもよい。また、二次記憶装置1050は、USBメモリやSD(Secure Digital)メモリカード等の取り外し可能な記憶媒体であってもよい。また、二次記憶装置1050は、クラウドストレージ(オンラインストレージ)やNAS(Network Attached Storage)、ファイルサーバ等であってもよい。
【0164】
出力I/F1060は、ディスプレイ、プロジェクタ、及びプリンタ等といった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインターフェイスであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力I/F1070は、マウス、キーボード、キーパッド、ボタン、及びスキャナ等といった各種の入力装置1020から情報を受信するためのインターフェイスであり、例えば、USB等により実現される。
【0165】
また、出力I/F1060及び入力I/F1070はそれぞれ出力装置1010及び入力装置1020と無線で接続してもよい。すなわち、出力装置1010及び入力装置1020は、ワイヤレス機器であってもよい。
【0166】
また、出力装置1010及び入力装置1020は、タッチパネルのように一体化していてもよい。この場合、出力I/F1060及び入力I/F1070も、入出力I/Fとして一体化していてもよい。
【0167】
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、又は半導体メモリ等から情報を読み出す装置であってもよい。
【0168】
ネットワークI/F1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
【0169】
演算装置1030は、出力I/F1060や入力I/F1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
【0170】
例えば、コンピュータ1000が情報処理装置100として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器から取得したプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行してもよい。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器と連携し、プログラムの機能やデータ等を他の機器の他のプログラムから呼び出して利用してもよい。
【0171】
〔10.その他〕
以上、本願の実施形態を説明したが、これら実施形態の内容により本発明が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
【0172】
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0173】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【0174】
例えば、上述した情報処理装置100は、複数のサーバコンピュータで実現してもよく、また、機能によっては外部のプラットホーム等をAPI(Application Programming Interface)やネットワークコンピューティング等で呼び出して実現するなど、構成は柔軟に変更できる。
【0175】
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0176】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0177】
1 情報処理システム
10 端末装置
20 ノード
50 エージェント
100 情報処理装置
120 記憶部
121 検索処理情報記憶部
130 制御部
131 取得部
132 要求部
133 生成部
134 決定部
135 提供部
200 サーバ装置