特開2019-194815(P2019-194815A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤフー株式会社の特許一覧
特開2019-194815情報処理装置、情報処理方法、及び情報処理プログラム
<>
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000006
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000007
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000008
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000009
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000010
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000011
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000012
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000013
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000014
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000015
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000016
  • 特開2019194815-情報処理装置、情報処理方法、及び情報処理プログラム 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-194815(P2019-194815A)
(43)【公開日】2019年11月7日
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
   G06F 16/00 20190101AFI20191011BHJP
【FI】
   G06F17/30 419B
   G06F17/30 350C
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【全頁数】40
(21)【出願番号】特願2018-88893(P2018-88893)
(22)【出願日】2018年5月2日
(71)【出願人】
【識別番号】500257300
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】岩崎 雅二郎
(57)【要約】
【課題】所定の対象に関する所望の検索を可能にする。
【解決手段】本願に係る情報処理装置は、取得部と、選択部とを有する。取得部はデータ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する。選択部は、連結ノードを判定対象とする判定処理において、連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択する。
【選択図】図4
【特許請求の範囲】
【請求項1】
データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する取得部と、
前記連結ノードを判定対象とする判定処理において、前記連結ノードのうち、前記判定処理の処理対象数に関する基準に基づいて、前記判定処理の対象とするノードである判定対象ノードを選択する選択部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記選択部は、
前記検索クエリとの類似性に基づく前記判定処理の前記判定対象ノードを選択する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記選択部は、
前記連結ノードのうち、前記処理対象数の閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項1または請求項2に記載の情報処理装置。
【請求項4】
前記選択部は、
前記検索に用いられるパラメータに応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記選択部は、
前記検索における検索範囲に関するパラメータに応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項3または請求項4に記載の情報処理装置。
【請求項6】
前記選択部は、
前記検索の処理時間に関する条件に応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項3〜5のいずれか1項に記載の情報処理装置。
【請求項7】
前記選択部は、
前記検索の検索精度に関する条件に応じて決定される前記閾値に基づいて、前記判定対象ノードを選択する
ことを特徴とする請求項3〜6のいずれか1項に記載の情報処理装置。
【請求項8】
前記選択部は、
前記連結ノードのうち、前記所定のノードとの類似性が高い方から順に前記閾値に達するまで、前記判定対象ノードを選択する
ことを特徴とする請求項3〜7のいずれか1項に記載の情報処理装置。
【請求項9】
前記選択部は、
前記連結ノードのうち、前記所定のノードとの類似性が低い方から順に前記閾値に達するまで、前記判定対象ノードを選択する
ことを特徴とする請求項3〜7のいずれか1項に記載の情報処理装置。
【請求項10】
前記選択部は、
前記連結ノードのうち、前記閾値に達するまで、ランダムに前記判定対象ノードを選択する
ことを特徴とする請求項3〜7のいずれか1項に記載の情報処理装置。
【請求項11】
前記取得部は、
前記検索中の所定の繰返し処理において処理対象となっている前記所定のノードの前記連結ノードを取得する
ことを特徴とする請求項1〜10のいずれか1項に記載の情報処理装置。
【請求項12】
前記取得部は、
前記所定の繰返し処理の対象となるノード群から選択された一のノードである前記所定のノードの前記連結ノードを取得する
ことを特徴とする請求項11に記載の情報処理装置。
【請求項13】
前記取得部は、
前記所定のノードを始点とする有向エッジである前記エッジにより、前記所定のノードと連結される前記連結ノードを取得する
ことを特徴とする請求項1〜12のいずれか1項に記載の情報処理装置。
【請求項14】
前記取得部は、
前記複数のノードが類似性に基づいて連結された前記グラフ情報の前記検索において、前記所定のノードの連結ノードを取得する
ことを特徴とする請求項1〜13のいずれか1項に記載の情報処理装置。
【請求項15】
前記取得部は、
前記複数のノードの各々が前記処理対象数以上の本数の前記エッジにより他のノードと連結された前記グラフ情報の前記検索において、前記所定のノードの連結ノードを取得する
ことを特徴とする請求項1〜14のいずれか1項に記載の情報処理装置。
【請求項16】
前記選択部により選択された前記判定対象ノードに対する前記判定処理結果に基づいて、前記検索クエリに類似するノードである類似ノードを決定する決定部、
をさらに備えることを特徴とする請求項1〜15のいずれか1項に記載の情報処理装置。
【請求項17】
前記決定部により決定された前記類似ノードに関する情報を提供する提供部、
をさらに備えたことを特徴とする請求項16に記載の情報処理装置。
【請求項18】
前記取得部は、
所定のユーザから前記検索クエリを取得し、
前記提供部は、
前記類似ノードに関する情報を前記所定のユーザが利用する端末装置に提供する
ことを特徴とする請求項17に記載の情報処理装置。
【請求項19】
コンピュータが実行する情報処理方法であって、
データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する取得工程と、
前記連結ノードを判定対象とする判定処理において、前記連結ノードのうち、前記判定処理の処理対象数に関する基準に基づいて、前記判定処理の対象とするノードである判定対象ノードを選択する選択工程と、
を含むことを特徴とする情報処理方法。
【請求項20】
データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する取得手順と、
前記連結ノードを判定対象とする判定処理において、前記連結ノードのうち、前記判定処理の処理対象数に関する基準に基づいて、前記判定処理の対象とするノードである判定対象ノードを選択する選択手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、種々の情報を検索する技術が提供されている。例えば、無向エッジによって生成されたグラフ情報(グラフデータ)を用いて検索を行う技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2011−090351号公報
【特許文献2】特許第5208001号公報
【発明の概要】
【発明が解決しようとする課題】
【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は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0010】
(実施形態)
〔1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。図1は、実施形態に係る情報処理の一例を示す図である。図1では、情報処理装置100が所定の対象群をグラフ構造化したグラフ情報(グラフデータ)を検索することにより、クエリ等の一の対象に類似するノード(オブジェクト)を抽出する場合を示す。なお、対象とする情報(オブジェクト)は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。以下では、グラフ情報(グラフデータ)を単に「グラフ」と記載する場合がある。図1では、所定の処理の対象となるノードを選択する選択処理や所定のノードを抽出する抽出処理等の種々の処理が含まれる情報処理(以下「検索処理」ともいう)を示す。
【0011】
なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。
【0012】
〔1−1.グラフ情報について〕
情報処理装置100は、図1中のグラフ情報GR11−1〜GR11−6に示すように、各ベクトル(ノード)が有向エッジにより連結されたグラフを用いて情報処理を行う。図1に示すグラフ情報GR11−1〜GR11−6は、検索(検索処理)の過程を模式的に示す図であり、グラフ情報GR11−1〜GR11−6は、同一のグラフである。以下、グラフ情報GR11−1〜GR11−6について、特に区別なく説明する場合には、グラフ情報GR11と記載する。なお、図1中のグラフ情報GR11に示すようなグラフ情報は、情報処理装置100が生成してもよいし、情報処理装置100は、図1中のグラフ情報GR11に示すようなグラフ情報を情報提供装置50(図3参照)等の他の外部装置から取得してもよい。
【0013】
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て双方向エッジであってもよい。
【0014】
例えば、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【0015】
例えば、情報処理装置100は、数百万〜数億等の単位の膨大な画像情報に対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。例えば、情報処理装置100は、図1中のグラフ情報GR11に示すように、ノードN3〜N9等に示すような複数のノード(ベクトル)を含むグラフ情報を取得する。図1の例では、説明を簡単にするために、10個のノード及び1個のクエリを図示して処理の概要を説明するが、グラフ情報GR11にはノードN1、N2等の多数のノードが含まれる。また、図1の例では、グラフ情報GR11における各ノードは、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結される。例えば、所定数は、目的や用途等に応じて、2や5や10や100等の種々の値であってもよい。例えば、所定数が2である場合、ノードN1からは、ノードN1からの距離が最も近いノード及び2番目に距離が近い2個のノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離等の種々の距離が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
【0016】
また、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
【0017】
また、図1中のグラフ情報GR11では、ノードN5は、ノードN99へ向かう有向エッジであるエッジE53が連結される。すなわち、ノードN5は、ノードN99とエッジE53により連結される。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE41」と記載した場合、そのエッジはエッジID「E41」により識別されるエッジである。例えば、ノードN5を参照元とし、ノードN99を参照先として連結されるエッジE53により、ノードN5からノードN99に辿ることが可能となる。この場合、有向エッジであるエッジE53は、ノードN5を中心として識別される場合、出力エッジとなり、ノードN99を中心として識別される場合、入力エッジとなる。
【0018】
言い換えると、有向エッジであるエッジE53は、ノードN5側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードN99側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。また、図1では図示を省略するが、ノードN99は、ノードN5へ向かう有向エッジ(エッジN991とする)が連結されてもよい。このように、ノードN99からの出力エッジであるエッジN991がノードN5に連結されてもよい。この場合、ノードN5とノードN99との間には、ノードN5からノードN99へ向かう有向エッジであるエッジE53と、ノードN99からノードN5へ向かう有向エッジであるエッジN991との2個のエッジが連結される。
【0019】
また、図1中のグラフ情報GR11は、ユークリッド空間であってもよい。また、図1に示すグラフ情報GR11は、各ベクトル間の距離等の説明のための概念的な図であり、グラフ情報GR11は、多次元空間である。例えば、図1に示すグラフ情報GR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。なお、各ノードに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。
【0020】
また、図1の例では、グラフ情報GR11においては、適宜「ノードN*(*は任意の数値)」の図示を省略し、各ノードに対応する「○」内に「ノードN*」の「*」の値を付すことにより表現する。すなわち、「ノードN*」の部分の「*」が一致するノードに対応する。例えば、グラフ情報GR11中の左上の「○」であって、内部に「8」が付された「○」は、ノードID「N8」により識別されるノード(ノードN8)に対応する。また、図1の例では、グラフ情報GR11−1以外のグラフ情報GR11−2〜GR11−6では、各エッジの符号の図示を省略する。
【0021】
ここで、各ノード間の距離は、ノード(画像情報)の類似性を示し、距離が近いほど類似している。本実施形態においては、グラフ情報GR11における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する画像情報の類似性が、グラフ情報GR11内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1の例では、グラフ情報GR11における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフ情報GR11における各ノード間の距離が長いオブジェクト同士の類似度が低い。
【0022】
例えば、図1中のグラフ情報GR11において、ノードN4とノードN6とは近接している、すなわち距離が短い(近い)。そのため、ノードN4に対応するオブジェクトと、ノードN6に対応するオブジェクトとは類似度が高いことを示す。また、図1中のグラフ情報GR11において、ノードN8とノードN99とは遠隔にある、すなわち距離が長い(遠い)。そのため、ノードN8に対応するオブジェクトと、ノードN99に対応するオブジェクトとは類似度が低いことを示す。
【0023】
〔1−2.処理例〕
ここから、図1を用いて情報処理の詳細を説明する。なお、図1に示す各ステップは、検索処理の概要を説明するための便宜的なステップであり、実際の処理はより詳細な処理ステップにより行われてもよい。なお、情報処理装置100が行う検索処理は、図1中のクエリQE11に対応する類似ノードが抽出されれば、どのような処理フローであってもよい。また、図1の例では、クエリQE11に対応する類似ノードの抽出数を「3」である場合を示す。すなわち、図1の例では、クエリQE11に対応する類似ノードは、グラフ情報GR11からクエリQE11の3個の類似ノードを抽出する。
【0024】
図1に示す検索用情報SINF11−1〜SINF11−6は、検索処理の過程における情報の管理を模式的に示す。検索用情報SINF11−1〜SINF11−6は、グラフ情報GR11−1〜GR11−6の各々に対応する。例えば、検索用情報SINF11−1は、グラフ情報GR11−1における検索処理時に対応する情報を示す。以下、検索用情報SINF11−1〜SINF11−6について、特に区別なく説明する場合には、検索用情報SINF11と記載する。例えば、情報処理装置100は、検索用情報SINF11に対応する情報を記憶部120(図4参照)に格納し、記憶部120に記憶された検索用情報SINF11に基づいて検索処理を行う。
【0025】
図1の例では、情報処理装置100が検索クエリ(以下「クエリQE11」とする)に類似するオブジェクトに対応するノード(「類似ノード」ともいう)を抽出する場合を示す。例えば、情報処理装置100は、クエリQE11をユーザが利用する端末装置10(図3参照)から取得する。以下では、クエリQE11を取得した後の検索処理の詳細を説明する。クエリQE11は、画像情報(画像データ)であってもよいし、画像情報がベクトル化された情報であってもよい。なお、以下では、クエリQE11がノード(オブジェクト)のベクトル情報に対応する情報であるものとする。例えばクエリQE11は、N次元ベクトルであるものとする。
【0026】
まず、情報処理装置100は、グラフ情報を取得する(ステップS11)。例えば、情報処理装置100は、グラフ情報記憶部123(図7参照)からグラフ情報GR11を取得する。例えば、グラフ情報GR11は、所定の基準に基づいて生成された近傍グラフであってもよい。例えば、グラフ情報GR11は、k近傍(k-nearest neighbor)グラフである。図1の例では説明を簡単にするために、グラフ情報GR11は、kが「4」であり、各ノードから近傍の4個のノードに出力エッジが連結されたグラフである場合を例に説明する。なお、kは「50」や「200」等の種々の値であってもよい。
【0027】
なお、グラフは、k近傍グラフに限らず、近似k近傍グラフ等、複数のノードが有向エッジに連結されたグラフであればどのようなグラフであってもよい。また、図1では、処理の説明に必要なノード及びエッジのみを図示し、他のノードやエッジについては図示を省略する。例えば、図1中のグラフ情報GR11では、ノードN3〜N9、N56、N78、N99とクエリQR11のみを図示し、N1、N2等の他のノードについては図示を省略する。また、図1中のグラフ情報GR11では、ノードN4、N5からの出力エッジのみを図示し、N3、N6〜N9、N56、N78、N99等からの出力エッジについては図示を省略する。
【0028】
そして、情報処理装置100は、検索の起点となるノード(以下「起点ノード」ともいう)決定する(ステップS12)。図1の例では、情報処理装置100は、所定のインデックス情報(インデックスデータ)を用いて、起点ノードを決定する。以下では、インデックス情報(インデックスデータ)を単に「インデックス」と記載する場合がある。
【0029】
例えば、情報処理装置100は、図2中の情報群GINF11に示すようなインデックス情報IND11を用いて起点ノードを決定する。図2は、実施形態に係る情報処理に用いるインデックスの一例を示す図である。なお、インデックス情報IND11は、情報処理装置100が生成してもよいし、情報処理装置100は、インデックス情報IND11を情報提供装置50等の他の外部装置から取得してもよい。
【0030】
図1の例では、情報処理装置100は、インデックス情報IND11に基づいて、クエリQE11に対応する起点ノードを決定する。情報処理装置100は、インデックス情報記憶部122(図6参照)に記憶されたインデックス情報IND11を用いて、起点ノードを決定する。例えば、インデックス情報IND11は、グラフ情報GR11中のいくつかのノードに到達可能なツリー構造を有するインデックスである。図2の例では説明を簡単にするために、インデックス情報IND11は、ノードN1〜N5の5個のノードに到達するルートのみを図示するが、多数(例えば500や1000等)の他のノードへ到達するルートが含まれてもよい。
【0031】
図2中のインデックス情報IND11は、図6中のインデックス情報記憶部122に示す階層構造を有する。例えば、インデックス情報IND11は、ルートRTの直下に位置する第1階層のノード(ベクトル)が、節点VT1、VT2、VT3等であることを示す。また、例えば、インデックス情報IND11は、節点VT2の直下の第2階層のノードが、節点VT2−1〜VT2−4(図示せず)であることを示す。例えば、インデックス情報IND11は、節点VT2−1の直下の第3階層のノードが、ノードN1、N2、すなわちグラフ情報GR11中のノード(ベクトル)であることを示す。また、インデックス情報IND11は、節点VT2−2の直下の第3階層のノードが、ノードN3、N4、N5、すなわちグラフ情報GR11中のノード(ベクトル)であることを示す。
【0032】
例えば、情報処理装置100は、図1中のインデックス情報IND11に示すような木構造型のインデックス情報を用いて、グラフ情報GR11における起点ノードを決定する。図1の例では、情報処理装置100は、クエリQE11に基づいて、インデックス情報IND11を上(ルートRT)から下へ辿ることにより、インデックス情報IND11の近傍候補となる起点ノードを決定(特定)する。これにより、情報処理装置100は、効率的に検索クエリ(クエリQE11)に対応する起点ノードを決定することができる。なお、図1の例では、情報処理装置100は、2個のノードを起点ノードに決定する。
【0033】
例えば、情報処理装置100は、インデックス情報IND11をルートRTからリーフノード(グラフ情報GR11中のノード)まで辿ることにより、クエリQE11に対応する起点ノードを決定してもよい。図1の例では、情報処理装置100は、インデックス情報IND11をルートRTからノードN4やノードN5まで辿ることにより、ノードN4やノードN5を起点ノードとして決定する。
【0034】
例えば、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、インデックス情報IND11をルートRTからリーフノードまで辿ることにより、辿りついたリーフノードを起点ノードとして決定してもよい。例えば、情報処理装置100は、クエリQE11との類似度に基づいて、インデックス情報IND11を下へ辿ることにより、起点ノードを決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のいずれの節点に辿るかを、クエリQE11と節点VT1、VT2との類似度に基づいて決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のうち、クエリQE11との類似度が最も高い節点VT2へ辿ると決定してもよい。また、例えば、情報処理装置100は、節点VT2から節点VT2−1〜VT2−4等のうち、クエリQE11との類似度が最も高い節点VT2−2へ辿ると決定してもよい。
【0035】
例えば、情報処理装置100は、節点VT2−2からノードN3、N4、N5等のうち、クエリQE11との類似度が高い節点ノードN4へ辿ると決定してもよい。そして、情報処理装置100は、ノードN4がグラフ情報GR11中のノードであるため、ノードN4を起点ノードに決定する。また、情報処理装置100は、ノードN4から上位の節点VT2−2に戻り、節点VT2−2からノードN3、N5等のうち、クエリQE11との類似度がノードN4の次に高い節点ノードN5へ辿ると決定してもよい。そして、情報処理装置100は、ノードN5がグラフ情報GR11中のノードであるため、ノードN5を起点ノードに決定する。これにより、図1中のグラフ情報GR11−1に示すように、情報処理装置100は、2個のノードN4、N5を起点ノードに決定する。
【0036】
そして、情報処理装置100は、検索用情報SINF11−1に示すように、起点ノードの決定に基づいて、検索用情報SINF11を更新する。検索用情報SINF11中の集合Sは、繰り返し処理の対象となる所定のノード(対象ノード)が含まれる集合(情報群)を示す。検索用情報SINF11中の集合Rは、検索処理による抽出候補となるノード(候補ノード)が含まれる集合(情報群)を示す。また、検索用情報SINF11中の集合Cは、重複検索を回避するために後述する判定処理の対象から除外されるノードが含まれる集合(情報群)を示す。例えば、検索用情報SINF11中の集合Cは、候補ノードとして集合Rに追加されたノードや判定処理の対象に既になったノード(以下、併せて「処理済みノード」ともいう)が含まれる集合(情報群)を示す。
【0037】
なお、検索用情報SINF11−1に更新される前の検索用情報SINF11(検索用情報SINF11−0)においては、集合S、集合R、集合Cの各々は空集合であるものとする。すなわち、集合S、集合R、集合Cの初期設定は、空集合であってもよい。
【0038】
図1の例では、情報処理装置100は、検索用情報SINF11−1に示すように、起点ノードに決定されたノードN4、N5を集合Sに追加する。また、情報処理装置100は、検索用情報SINF11−1に示すように、集合RにノードN4、N5を追加する。このように、情報処理装置100は、起点ノードに決定されたノードN4、N5を、抽出候補として、集合Rに追加する。そして、図1の例では、情報処理装置100は、検索用情報SINF11−1に示すように、集合CにノードN4、N5を追加する。
【0039】
なお、上記の処理は一例であり、情報処理装置100は、所望の検索処理が実現可能であれば、どのような処理を行ってもよい。例えば、情報処理装置100は、起点ノードに決定されたノードN4、N5を集合Rや集合Cに追加しなくてもよい。また、起点ノードの数は2個に限らず、情報処理装置100は、1個の起点ノードや3個以上の起点ノードを決定してもよい。例えば、情報処理装置100は、ノードN3〜N5の3個のノードを起点ノードとして決定してもよい。なお、情報処理装置100は、インデックス情報IND11を用いずに、起点ノードを決定してもよい。例えば、情報処理装置100は、ランダムに起点ノードを決定してもよい。情報処理装置100は、検索開始時にグラフ情報GR11からランダムに1個以上のノードを選択し、それを起点ノードとしてもよいし、または、予め指定された1個以上のノードを起点ノードとしても良い。
【0040】
次に、情報処理装置100は、対象ノードを決定する(ステップS13)。情報処理装置100は、集合Sに含まれるノードから、対象ノードを決定する。情報処理装置100は、検索用情報SINF11−1中の集合Sに含まれるノードN4、N5から、対象ノードを決定する。情報処理装置100は、集合Sに含まれるノードのうち、最もクエリQE11に類似するノードを対象ノードに決定する。図1の例では、情報処理装置100は、ノードN4、N5のうち、最もクエリQE11に類似するノードN4を対象ノードに決定する。そして、情報処理装置100は、集合SからノードN4を対象ノードとして抽出する。情報処理装置100は、検索用情報SINF11−2に示すように、検索用情報SINF11を更新する。具体的には、情報処理装置100は、検索用情報SINF11−2に示すように、対象ノードとして抽出されたノードN4を集合Sから除外する。
【0041】
そして、情報処理装置100は、対象ノードにエッジにより連結されたノード(連結ノード)のうち、判定処理の対象となるノード(判定対象ノード)を選択する(ステップS14)。ここでいう判定処理は、処理対象となるノードを抽出候補に含めるか否かを判定する処理であるものとする。すなわち、ここでいう判定処理は、そのノードを集合Rに追加するか否かを判定する処理である。
【0042】
情報処理装置100は、対象ノードからの出力エッジが連結された連結ノードのうち、判定対象ノードを選択する。図1の例では、情報処理装置100は、対象ノードであるノードN4からのエッジE41〜E44が連結されたノードN6〜N9の4個のノードのうち、判定対象ノードを選択する。
【0043】
情報処理装置100は、処理対象数の閾値に基づいて判定対象ノードを選択する。情報処理装置100は、図1中の閾値情報TL11に示すように、閾値TH11の値「3」に基づいて判定対象ノードを選択する。すなわち、図1の例では、情報処理装置100は、ノードN4の4個の連結ノードであるノードN6〜N9のうち、閾値TH11の値「3」に基づいて、3個のノードを判定対象ノードとして選択する。このように、情報処理装置100は、連結ノードのうち、判定処理の対象となるノードの数を制限することにより、高速な検索を行うことを可能にする。閾値TH11には、「3」に限らず、「5」や「20」等の種々の値が用いられてもよい。なお、閾値については種々の情報に基づいて決定されてもよいが詳細は後述する。
【0044】
また、情報処理装置100は、対象ノードの連結ノードのうち、所定の基準に基づいて、判定対象ノードを選択する。例えば、情報処理装置100は、対象ノードの連結ノードのうち、対象ノードとの類似度に基づいて、判定対象ノードを選択する。具体的には、情報処理装置100は、対象ノードの連結ノードのうち、対象ノードとの間の距離に基づいて、判定対象ノードを選択する。なお、情報処理装置100は、対象ノードの連結ノードのうち、処理済みノードとして集合Cに含まれるノード以外のノードを、判定対象ノードを選択してもよい。例えば、情報処理装置100は、ノードN4の連結ノードであるノードN6〜N9のうち、ノードN9が処理済みノードとして集合Cに含まれる場合、ノードN9以外のノードN6〜N8から、判定対象ノードを選択してもよい。なお、情報処理装置100は、対象ノードの連結ノードの数が処理対象数の閾値以下である場合、その対象ノードの連結ノードの全てを、判定対象ノードとして選択してもよい。
【0045】
図1の例では、情報処理装置100は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。情報処理装置100は、図1中の連結ノード情報NL11に示すような、対象ノードであるノードN4とその連結ノードであるノードN6〜N9の各々との間の距離に基づいて、判定対象ノードを選択する。図1中の連結ノード情報NL11は、距離が短い方から順に並べられているものとする。すなわち、図1の例では、ノードN6のノードN4との距離D46が最も短く、ノードN9のノードN4との距離D49が2番目に短く、ノードN7のノードN4との距離D47が3番目に短く、ノードN8のノードN4との距離D48が最も長い。
【0046】
図1の例では、情報処理装置100は、対象ノードであるノードN4とその連結ノードであるノードN6〜N9の各々との間の距離が近い方から順に閾値に達するまで、判定対象ノードを選択する。情報処理装置100は、図1中のグラフ情報GR11−2に示すように、4個のノードN6〜N9のうち、ノードN6、N9、N7の3個のノードを判定対象ノードに選択する。なお、図1の例では、説明を簡単にするため、3個のノードが1度に判定対象ノードとして選択される場合を示したが、情報処理装置100は、各判定処理時において1個ずつ判定対象ノードを選択してもよい。例えば、情報処理装置100は、図11中のステップS306に示すように、連結ノードから1個ずつノードを判定対象ノードとして選択し、判定対象を行う処理を繰り返してもよい。
【0047】
なお、上記は一例であり、情報処理装置100は、種々の基準に基づいて、連結ノードから判定対象ノードを選択してもよい。情報処理装置100は、連結ノードのうち、対象ノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択してもよい。また、情報処理装置100は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択してもよい。また、以下に説明する判定処理において検索範囲を規定する範囲(以下「半径r」とする場合がある)は、判定処理を行う前の初期値が「∞(無限大)」であるものとする。なお、半径rは、クエリQE11を中心とした超球の半径であってもよい。
【0048】
そして、情報処理装置100は、判定処理を行う(ステップS15)。図1の例では、情報処理装置100は、ノードN6、N9、N7のうち、クエリQE11と最も近いノードN6を判定対象ノードとして判定処理を行う。
【0049】
情報処理装置100は、判定対象ノードであるノードN6を抽出候補とするかを判定する。例えば、情報処理装置100は、ノードN6とクエリQE11間の距離(「距離DQ6」とする)が半径r以下である場合、ノードN6を抽出候補と判定する。例えば、距離DQ6は、所定の距離関数d(x、y)を用いて、d(N6,QE11)により導出される。以下、所定の距離関数d(x、y)中の「x」、「y」は所定の距離関数dの変数(引数)である。所定の距離関数d(x、y)は、変数x、yへの値の割当てに基づいて、変数x、yに割り当てられた値に対応する距離を示す値を出力する。以下では、所定の距離関数d(x、y)を「距離関数d」と記載する場合がある。また、例えば、所定の距離関数d(x、y)の出力値を示す場合、距離d(x、y)と記載する場合がある。例えば、距離関数dは、ユークリッド距離やマハラノビス距離やコサイン類似度等を算出する関数であってもよい。
【0050】
距離関数dは、2個の変数の各々にベクトルが割り当てられた(入力された)場合、そのベクトル間の距離(類似度)を示す値を出力する。例えば、距離関数dは、2個のベクトルを変数として、そのベクトル間の距離(類似度)を示す値を出力する関数である。例えば、距離関数dは、入力された1個のノードのベクトルと検索クエリのベクトルとに基づいて、そのノードと検索クエリとの間の距離(類似度)を示す値を出力する。図1の例では、情報処理装置100は、半径rが「∞」であり、距離DQ6は半径r以下であるため、ノードN6を抽出候補と判定する。このような判定結果に基づいて、情報処理装置100は、判定対象ノードであるノードN6を抽出候補として抽出する(ステップS16)。
【0051】
また、情報処理装置100は、ノードN6を対象ノードとするかを判定する。例えば、情報処理装置100は、距離DQ6が半径r(1+ε)以下である場合、ノードN6を対象ノードとすると判定する。図1の例では、情報処理装置100は、半径rが「∞」であり、距離DQ6は半径r(1+ε)以下であるため、ノードN6を対象ノードとすると判定する。これにより、情報処理装置100は、ノードN6を対象ノードとして抽出する。なお、上記の「ε」は、探索範囲を決定するための係数(以下「検索範囲係数ε」ともいう)であり、所定の実数が割り当てられる。例えば、図1の例では、検索範囲係数εは、「0.1」等の値が割り当てられる。なお、検索範囲係数εには、「−0.05」等のマイナス値や0が割り当てられてもよい。
【0052】
そして、情報処理装置100は、検索用情報SINF11−3に示すように、ノードN6の判定処理に基づいて、検索用情報SINF11を更新する。図1の例では、情報処理装置100は、検索用情報SINF11−3に示すように、抽出候補と判定されたノードN6を集合Rに追加する。検索用情報SINF11−3中の集合Rには、3個のノードN6、N4、N5が含まれる。これにより、情報処理装置100は、集合Rに含まれるノード数が3個となり、抽出数に達する。なお、検索用情報SINF11−3中の集合Rに示すノードN6、N4、N5の順に、クエリQE11との間の距離が短いことを示す。すなわち、ノードN6、N4、N5は、ノードN6がクエリQE11との間の距離が最も短く、ノードN6、N4、N5の順でクエリQE11との間の距離が短いことを示す。
【0053】
また、情報処理装置100は、検索用情報SINF11−3に示すように、対象ノードとすると判定されたノードN6を集合Sに追加する。また、情報処理装置100は、検索用情報SINF11−3に示すように、集合CにノードN6を追加する。
【0054】
そして、情報処理装置100は、抽出候補となるノード数が抽出数「3」に等しくなったため、検索範囲を更新する(ステップS17)。情報処理装置100は、候補ノード数が抽出数「3」に等しくなったため、半径rの値を更新する。具体的には、情報処理装置100は、半径rの値を、候補ノードのうちクエリQE11から最も遠いノードと、クエリQE11との間の距離に更新する。
【0055】
図1の例では、検索用情報SINF11−3中の集合Rに示すようにノードN5が候補ノードのうち最も遠いノードであるため、情報処理装置100は、半径rの値を「∞」から「d(N5,QE11)」に更新する。これにより、情報処理装置100は、図1中のグラフ情報GR11−3に示すように、半径rに対応する範囲を範囲AR11に更新する。また、情報処理装置100は、図1中のグラフ情報GR11−3に示すように、半径r(1+ε)に対応する範囲を範囲AR21に更新する。
【0056】
そして、情報処理装置100は、判定処理を行う(ステップS18)。図1の例では、情報処理装置100は、ノードN6、N9、N7のうち、ノードN6の次にクエリQE11と近いノードN9を判定対象ノードとして判定処理を行う。
【0057】
情報処理装置100は、判定対象ノードであるノードN9を抽出候補とするかを判定する。例えば、情報処理装置100は、ノードN9とクエリQE11間の距離(「距離DQ9」とする)が半径r以下である場合、ノードN9を抽出候補と判定する。例えば、距離DQ9は、距離関数dを用いて、d(N9,QE11)により導出される。図1の例では、情報処理装置100は、半径rが「d(N5,QE11)」であり、距離DQ9は半径rより大きいため、ノードN9を抽出候補としないと判定する。情報処理装置100は、図1中のグラフ情報GR11−4に示すように、ノードN9が範囲AR11外に位置するためノードN9を抽出候補としないと判定する。このような判定結果に基づいて、情報処理装置100は、判定対象ノードであるノードN9を抽出候補として抽出しない(ステップS19)。
【0058】
また、情報処理装置100は、ノードN9を対象ノードとするかを判定する。例えば、情報処理装置100は、距離DQ9が半径r(1+ε)以下である場合、ノードN9を対象ノードとすると判定する。図1の例では、情報処理装置100は、半径rが「d(N5,QE11)」であり、距離DQ9は半径r(1+ε)以下であるため、ノードN9を対象ノードとすると判定する。情報処理装置100は、図1中のグラフ情報GR11−4に示すように、ノードN9が範囲AR21内に位置するためノードN9を対象ノードにすると判定する。これにより、情報処理装置100は、ノードN9を対象ノードとして抽出する。
【0059】
そして、情報処理装置100は、検索用情報SINF11−4に示すように、ノードN6の判定処理に基づいて、検索用情報SINF11を更新する。図1の例では、情報処理装置100は、検索用情報SINF11−4に示すように、ノードN9が抽出候補と判定されなかったため、集合Rを更新しない。また、情報処理装置100は、検索用情報SINF11−4に示すように、対象ノードとすると判定されたノードN9を集合Sに追加する。また、情報処理装置100は、検索用情報SINF11−4に示すように、集合CにノードN9を追加する。例えば、抽出候補となるノード数が抽出数「3」に等しいが、ノードN5が候補ノードのうち最も遠いノードであることに変更が無いため、情報処理装置100は、検索範囲を更新しない。
【0060】
そして、情報処理装置100は、判定処理を行う(ステップS20)。図1の例では、情報処理装置100は、ノードN6、N9、N7のうち、ノードN9の次にクエリQE11と近いノードN7を判定対象ノードとして判定処理を行う。
【0061】
情報処理装置100は、判定対象ノードであるノードN7を抽出候補とするかを判定する。例えば、情報処理装置100は、ノードN7とクエリQE11間の距離(「距離DQ7」とする)が半径r以下である場合、ノードN7を抽出候補と判定する。例えば、距離DQ7は、距離関数dを用いて、d(N7,QE11)により導出される。図1の例では、情報処理装置100は、半径rが「d(N5,QE11)」でり、距離DQ7は半径r以下であるため、ノードN7を抽出候補と判定する。情報処理装置100は、図1中のグラフ情報GR11−4に示すように、ノードN7が範囲AR11内に位置するためノードN7を抽出候補にすると判定する。このような判定結果に基づいて、情報処理装置100は、判定対象ノードであるノードN7を抽出候補として抽出する(ステップS21)。
【0062】
また、情報処理装置100は、ノードN7を対象ノードとするかを判定する。例えば、情報処理装置100は、距離DQ7が半径r(1+ε)以下である場合、ノードN7を対象ノードとすると判定する。図1の例では、情報処理装置100は、半径rが「d(N5,QE11)」であり、距離DQ7は半径r(1+ε)以下であるため、ノードN7を対象ノードとすると判定する。情報処理装置100は、図1中のグラフ情報GR11−4に示すように、ノードN7が範囲AR21内に位置するためノードN7を対象ノードにすると判定する。これにより、情報処理装置100は、ノードN7を対象ノードとして抽出する。
【0063】
そして、情報処理装置100は、検索用情報SINF11−5に示すように、ノードN7の判定処理に基づいて、検索用情報SINF11を更新する。図1の例では、情報処理装置100は、検索用情報SINF11−5に示すように、抽出候補と判定されたノードN7を集合Rに追加する。ここで、情報処理装置100は、集合Rに含まれるノードがN4〜N7の4個となるため、集合Rから1個のノードを除外する。情報処理装置100は、集合Rから最もクエリQE11との間の距離が遠いノードN5を除外する。これにより、検索用情報SINF11−5中の集合Rには、3個のノードN6、N7、N4が含まれる。なお、検索用情報SINF11−5中の集合Rに示すノードN6、N7、N4の順に、クエリQE11との間の距離が短いことを示す。すなわち、ノードN6、N7、N4は、ノードN6がクエリQE11との間の距離が最も短く、ノードN6、N7、N4の順でクエリQE11との間の距離が短いことを示す。
【0064】
また、情報処理装置100は、検索用情報SINF11−5に示すように、対象ノードとすると判定されたノードN7を集合Sに追加する。また、情報処理装置100は、検索用情報SINF11−5に示すように、集合CにノードN7を追加する。
【0065】
そして、情報処理装置100は、抽出候補となるノード数が抽出数「3」に等しく、候補ノードのうち最も遠いノードが変更されたため、検索範囲を更新する(ステップS22)。情報処理装置100は、候補ノードのうちノードN4が最も遠いノードとなったため、半径rの値を更新する。具体的には、情報処理装置100は、半径rの値を、候補ノードのうちクエリQE11から最も遠いノードと、クエリQE11との間の距離に更新する。
【0066】
図1の例では、検索用情報SINF11−5中の集合Rに示すようにノードN4が候補ノードのうち最も遠いノードであるため、情報処理装置100は、半径rの値を「d(N5,QE11)」から「d(N4,QE11)」に更新する。これにより、情報処理装置100は、図1中のグラフ情報GR11−5に示すように、半径rに対応する範囲を範囲AR12に更新する。また、情報処理装置100は、図1中のグラフ情報GR11−5に示すように、半径r(1+ε)に対応する範囲を範囲AR22に更新する。
【0067】
そして、情報処理装置100は、上述した処理を対象ノードが無くなるまで繰り返し処理する(ステップS22)。情報処理装置100は、集合Sが空(空集合)になるまで上述した処理を繰り返す。例えば、情報処理装置100は、検索用情報SINF11−5中の集合Sに含まれるノードN5、N6等を対象ノードとして上述した処理を繰り返す(ステップS23)。
【0068】
これにより、情報処理装置100は、クエリQE11について、抽出数「3」に対応する3個の類似ノードを決定する(ステップS24)。図1の例では、情報処理装置100は、検索用情報SINF11−6中の集合Rに示すように、ノードN6、N7、N56をクエリQE11の類似ノードに決定する。すなわち、情報処理装置100は、集合Rに含まれるノードN6、N7、N56を類似ノードに決定する。例えば、情報処理装置100は、ノードN6、N7、N56を示す情報をクエリQE11の類似ノードとして、検索の要求元へ提供する。例えば、情報処理装置100は、クエリQE11に基づく検索結果として、ノードN6、N7、N56を示す情報を、検索の要求元へ提供する。
【0069】
上述したように、情報処理装置100は、対象ノードの連結ノードのうち、閾値の数のノードを判定対象ノードとして選択する。例えば、情報処理装置100は、対象ノードの連結ノードの数よりも小さい閾値を用いることにより、対象ノードの連結ノードの全てを判定対象ノードとせずに、所定の基準で連結ノードの一部を判定対象ノードとして選択する。言い換えると、情報処理装置100は、グラフ情報におけるノード間の連結関係を動的に変更して判定対象ノードを選択する。これにより、情報処理装置100は、辿るノードの数を動的に調整して、対象ノードの連結ノードの全てを判定対象ノードとする場合に比べて検索速度(処理速度)を向上させることができる。
【0070】
このように、情報処理装置100は、対象ノードの連結ノードのうち辿るノードの数を動的に調整することで、生成済みの一のグラフ情報を用いる場合であっても、異なる処理速度や検索精度を実現することができる。すなわち、情報処理装置100は、生成済みの静的なグラフ情報(以下「静的グラフ」ともいう)を用いる場合あっても、判定対象ノードとして選択するノード数を動的に変更することにより、種々の処理速度や検索精度を満たす検索処理を行うことができる。これにより、情報処理装置100は、所定の対象に関する所望の検索を可能にすることができる。
【0071】
例えば、図1に示すような有向エッジを含むグラフデータの生成においては、出力エッジ(外向きエッジ)、入力エッジ(内向きエッジ)を調整しようとする場合、上述のように出力エッジと入力エッジとは表裏一体の関係なので独立に調整するができない。また、出力エッジや入力エッジを調整したグラフが生成できたとしても、ユーザの検索速度(処理速度)等の性能要求は個別の検索要求ごとに違う可能性があり、静的に生成された静的グラフでは異なる性能要求に対応できないといった課題もある。また、特定の条件(時間優先や精度優先)に最適化されたグラフ対して、各検索時において個別に時間優先であったり、精度優先であったりする場合があり、このような検索時の個別の要求条件に対して対応ができないといった課題もある。そこで、情報処理装置100は、静的グラフを用いた検索において、ユーザの性能要求や個別の検索要求ごとに動的に判定対象ノードの数を変更して検索処理を行う。
【0072】
このように、情報処理装置100は、対象ノードの連結ノードを判定対象とする判定処理において、判定処理の処理対象数に関する基準に基づいて、連結ノードから判定対象ノードを選択する。これにより、情報処理装置100は、検索処理ごとに要求される条件ごとに動的に判定対象ノードの数が調整された、所望の検索を行うことができる。したがって、情報処理装置100は、ユーザの性能要求や個別の検索要求ごとに動的に対応した、所望の検索を行うことができる。そのため、情報処理装置100は、所定の対象に関する所望の検索を可能にすることができる。
【0073】
〔1−3.グラフ情報〕
なお、情報処理装置100は、検索処理に種々のグラフ情報を用いてもよい。例えば、対象ノードへの入力エッジを検索時に動的に変更することは困難であるが、情報処理装置100は、対象ノードからの出力エッジ(連結エッジ)を変更することができる。そのため、情報処理装置100は、各ノードを対象ノードとした探索時に、利用する対象ノードの出力エッジ(連結エッジ)を変更する。例えば、情報処理装置100は、各ノードに付与されているエッジの長さに基づいて、判定対象ノードを選択する。例えば、情報処理装置100は、探索時に到達したノードにおいて実際に付与されたエッジよりも少ないエッジを用いて判定対象ノードを選択する。これにより、情報処理装置100は、所望の検索時間を満たす検索を行うことができる。
【0074】
このように、情報処理装置100は、検索時に利用するエッジ数を調整する(削減する)ため、グラフの各ノードには調整範囲を包含するように多くのエッジ付与しておくことが望ましい。例えば、情報処理装置100は、各ノードが処理対象数(閾値)以上の本数のエッジにより他のノードと連結されたグラフを生成する。例えば、情報処理装置100は、要求される検索精度を満たすようにグラフの各ノードに多くのエッジ付与しておくことが望ましい。このように、情報処理装置100は、所望の検索精度を満たすように生成されたグラフ情報(「グラフ情報GR51」とする)を用いてもよい。例えば、情報処理装置100は、所望の検索精度を満たすように多くのエッジがノードに付与されたグラフ情報GR51を生成する。
【0075】
この場合、情報処理装置100は、グラフ情報GR51を用いた検索において、対象ノードの全連結ノードを判定対象ノードとして選択することにより、所望の検索精度を満たす検索を行うことができる。また、情報処理装置100は、グラフ情報GR51を用いた検索において、処理速度を向上させたい場合、対象ノードの連結ノードうち一部を判定対象ノードとして選択することにより、処理速度を向上させた検索を行うことができる。
【0076】
また、情報処理装置100は、各ノード間が全て連結された完全グラフを用いてもよい。この場合、情報処理装置100は、完全グラフのうち処理速度の要求に基づいて判定対象ノードとして選択するノード数を動的に変更することで、所望の処理速度を満たす検索処理を行うことができる。
【0077】
〔1−4.インデックス情報〕
図2の例に示すインデックス情報(インデックスデータ)は一例であり、情報処理装置100は、種々のインデックス情報を用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いるインデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索インデックス(インデックス情報)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【0078】
例えば、情報処理装置100は、図2に示すようなツリー構造(木構造)に関するインデックス情報IND11をインデックスとして生成してもよい。例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索インデックスをインデックスとして生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索インデックスをインデックスとして生成してもよい。
【0079】
また、例えば、情報処理装置100は、その他の木構造を有するインデックスとして生成してもよい。例えば、情報処理装置100は、木構造のインデックスのリーフがグラフに接続する種々のインデックスを生成してもよい。例えば、情報処理装置100は、木構造のインデックスのリーフがグラフ中のノードに対応する種々のインデックスを生成してもよい。また、情報処理装置100は、このようなインデックスを用いて検索を行う場合、インデックスを辿って到達したリーフ(ノード)からグラフを探索してもよい。
【0080】
なお、上述したようなインデックスは一例であり、情報処理装置100は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のインデックスを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のインデックスを生成してもよい。情報処理装置100は、上述のようなインデックスとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置100は、上述のようなインデックスとグラフとを用いることにより、所定の対象に関してより高速な検索を可能にすることができる。
【0081】
〔1−5.閾値について〕
図1の例では、閾値として「3」を用いる場合を示したが、情報処理装置100は、種々の情報を適宜用いて閾値を決定してもよい。この点について以下説明する。なお、情報処理装置100は、下記の閾値の決定に限らず、ユーザが所望の検索精度や処理時間を満たすことが可能であれば、どのように閾値を決定してもよい。
【0082】
例えば、情報処理装置100は、探索範囲を決定する係数である検索範囲係数「ε」に基づいて、利用するエッジ数、すなわち閾値を決定してもよい。情報処理装置100は、上記のように探索範囲を決定する係数「ε」に基づいて検索精度(検索時間)を調整するため、設定された係数「ε」を用いて閾値を決定する。例えば、情報処理装置100は、下記の式(1)のように係数「ε」を用いて閾値を決定(導出)してもよい。
【0083】
【数1】
【0084】
ここで、上記式(1)の左辺中の「e」は、閾値の値「e」を示す。また、上記式(1)の右辺中の「ε」は、検索範囲係数「ε」を示す。また、上記式(1)の右辺中の「w」は、検索範囲係数「ε」に掛ける所定係数を示す。また、上記式(1)の右辺中の「e」は、初期値(所定定数)を示す。例えば、「w」には「20」といった種々の数値が割り当てられ、「e」には数値「30」といった種々の数値が割り当てられる。例えば、「ε」が「0.1」であり、「w」が「10」であり、「e」が「5」である場合、上記の式(1)は、「e=1010×0.1+5」となる。すなわち、「e」が「15(=10+5)」となり、閾値が「15」に決定される。なお、情報処理装置100は、閾値を決定可能であれば、上記式(1)に限らず、種々の情報(関数等)に基づいて、閾値を決定してもよい。
【0085】
なお、上記式(1)中の右辺の各変数の値は情報処理装置100が生成(導出)してもよいし、情報処理装置100は、上記式(1)中の右辺の各変数の値を情報提供装置50(図3参照)等の他の外部装置から取得してもよい。検索範囲係数「ε」や所定係数「w」や初期値「e」の値は、情報処理装置100が生成(導出)してもよいし、情報提供装置50(図3参照)等の他の外部装置から情報処理装置100が取得してもよい。検索範囲係数「ε」は、ユーザにより指定されてもよい。
【0086】
ここで、実際の検索処理においては、ユーザは検索範囲係数「ε」ではなく検索精度または処理時間を指定することが想定される。そのため、情報処理装置100は、検索精度または処理時間から検索範囲係数「ε」を決定し、その検索範囲係数「ε」に基づいて閾値を決定してもよい。例えば、情報処理装置100は、検索範囲係数「ε」を要求される検索時間や検索精度に基づいて決定(導出)してもよい。この場合、情報処理装置100は、下記の式(2)を用いて、検索時間や検索精度から検索範囲係数「ε」を決定(導出)してもよい。
【0087】
【数2】
【0088】
ここで、上記式(2)の左辺中の「ε」は、検索範囲係数「ε」を示す。また、上記式(2)の右辺中の「f()」は、変数xに基づいて検索範囲係数「ε」を導出する関数を示す。また、上記式(2)の右辺中の「x」は、関数fに入力される変数を示す。例えば、「x」には、検索時間や検索精度に関する値が割り当てられる。
【0089】
例えば、上記関数fが、指定された検索時間に対応する検索範囲係数「ε」を出力する関数である場合、情報処理装置100は、変数xに検索時間を割り当てることにより、対応する検索範囲係数「ε」の値「e」を算出する。この場合、情報処理装置100は、ユーザが要求する検索時間を示す値を取得し、関数fの変数xにその値を割り当てることにより、ユーザが要求する検索時間を満たすための検索範囲係数「ε」を算出する。
【0090】
また、例えば、上記関数fが、指定された検索精度に対応する検索範囲係数「ε」を出力する関数である場合、情報処理装置100は、変数xに検索精度を割り当てることにより、対応する検索範囲係数「ε」の値「e」を算出する。この場合、情報処理装置100は、ユーザが要求する検索精度を示す値を取得し、関数fの変数xにその値を割り当てることにより、ユーザが要求する検索精度を満たすための検索範囲係数「ε」を算出する。
【0091】
なお、上記式(2)に示すような検索範囲係数「ε」を算出する関数fは情報処理装置100が生成してもよいし、情報処理装置100は、関数fを情報提供装置50(図3参照)等の他の外部装置から取得してもよい。
【0092】
例えば、情報処理装置100は、要求された検索精度に基づいて、検索処理による測定を行い、上記式(2)を生成してもよい。例えば、情報処理装置100は、要求された検索精度に基づいて検索処理による測定を行い、上記式(1)及び上記式(2)を生成してもよい。
【0093】
例えば、情報処理装置100は、要求された検索精度に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式(2)を生成してもよい。例えば、情報処理装置100は、要求された検索精度に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式(1)及び上記式(2)を生成してもよい。
【0094】
例えば、情報処理装置100は、要求された処理時間に基づいて、検索処理による測定を行い、上記式(2)を生成してもよい。例えば、情報処理装置100は、要求された処理時間に基づいて検索処理による測定を行い、上記式(1)及び上記式(2)を生成してもよい。
【0095】
例えば、情報処理装置100は、要求された処理時間に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式(2)を生成してもよい。例えば、情報処理装置100は、要求された処理時間に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式(1)及び上記式(2)を生成してもよい。
【0096】
また、情報処理装置100は、下記の式(3)を用いて、検索時間や検索精度から直接閾値を算出してもよい。例えば、情報処理装置100は、検索処理において上記の「ε」が用いられない場合、下記の式(3)を用いて、検索時間や検索精度から直接閾値を決定(導出)してもよい。例えば、情報処理装置100は、検索処理において上記の「ε」が固定値である場合、下記の式(3)を用いて、検索時間や検索精度から直接閾値を決定(導出)してもよい。例えば、情報処理装置100は、検索処理において上記の「ε」が固定値であり、「ε」の決定時から要求する検索精度や処理時間が変更された場合、下記の式(3)を用いて、検索時間や検索精度から直接閾値を決定(導出)してもよい。
【0097】
【数3】
【0098】
ここで、上記式(3)の左辺中の「e」は、閾値の値「e」を示す。また、上記式(3)の右辺中の「g()」は、変数xに基づいて閾値を導出する関数を示す。また、上記式(3)の右辺中の「x」は、関数gに入力される変数を示す。例えば、「x」には、検索時間や検索精度に関する値が割り当てられる。
【0099】
例えば、上記関数gが、指定された検索時間に対応する閾値を出力する関数である場合、情報処理装置100は、変数xに検索時間を割り当てることにより、対応する閾値の値「e」を算出する。この場合、情報処理装置100は、ユーザが要求する検索時間を示す値を取得し、関数gの変数xにその値を割り当てることにより、ユーザが要求する検索時間を満たすための閾値を算出する。
【0100】
また、例えば、上記関数gが、指定された検索精度に対応する閾値を出力する関数である場合、情報処理装置100は、変数xに検索精度を割り当てることにより、対応する閾値の値「e」を算出する。この場合、情報処理装置100は、ユーザが要求する検索精度を示す値を取得し、関数gの変数xにその値を割り当てることにより、ユーザが要求する検索精度を満たすための閾値を算出する。
【0101】
なお、上記式(3)に示すような閾値を算出する関数gは情報処理装置100が生成してもよいし、情報処理装置100は、関数gを情報提供装置50(図3参照)等の他の外部装置から取得してもよい。
【0102】
例えば、情報処理装置100は、要求された検索精度に基づいて、検索処理による測定を行い、上記式(3)を生成してもよい。例えば、情報処理装置100は、要求された検索精度に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式(3)を生成してもよい。また、例えば、情報処理装置100は、要求された検索精度に基づいて、一のグラフ及び所定値の検索範囲係数「ε」を用いた検索処理による測定を行い、その一のグラフ及び所定値の検索範囲係数「ε」に対応する上記式(3)を生成してもよい。
【0103】
例えば、情報処理装置100は、要求された処理時間に基づいて、検索処理による測定を行い、上記式(3)を生成してもよい。例えば、情報処理装置100は、要求された処理時間に基づいて、一のグラフを用いた検索処理による測定を行い、その一のグラフに対応する上記式(3)を生成してもよい。また、例えば、情報処理装置100は、要求された処理時間に基づいて、一のグラフ及び所定値の検索範囲係数「ε」を用いた検索処理による測定を行い、その一のグラフ及び所定値の検索範囲係数「ε」に対応する上記式(3)を生成してもよい。
【0104】
〔1−6.検索過程に応じた変更〕
情報処理装置100は、検索処理(探索)中に判定対象ノードの選択基準や閾値等の検索条件を動的に変更して、検索処理を行ってもよい。例えば、情報処理装置100は、検索処理中にもエッジ数を変更しても良い。例えば、情報処理装置100は、探索開始時はより遠いクエリに効率良く到達するために、長いエッジ、すなわち多くのエッジを利用してもよい。また、例えば、情報処理装置100は、探索開始終盤は不必要な長いエッジを利用しないように利用するエッジ数を少なくしてもよい。例えば、情報処理装置100は、探索開始時か否かは、探索したノード数や、単位探索ノード数当たりでの新たに発見された検索結果としてのノード数の増減傾向等に基づいて判定してもよい。
【0105】
情報処理装置100は、検索処理中に動的に基準を変更し、連結ノードから判定対象ノードを選択してもよい。例えば、情報処理装置100は、検索開始時は連結ノードのうち、対象ノードとの類似性が低い方から判定対象ノードを選択し、検索開始から所定の処理経過後は連結ノードのうち、対象ノードとの類似性が高い方から判定対象ノードを選択してもよい。これにより、情報処理装置100は、より適切に検索処理を実行することができる。
【0106】
情報処理装置100は、検索処理中に動的に閾値を変更し、連結ノードから判定対象ノードを選択してもよい。例えば、情報処理装置100は、検索処理中に要求される検索時間を超過しそうな場合、閾値の数を小さくすることで処理速度を向上させ、要求される検索時間を満たすように検索処理を行ってもよい。また、情報処理装置100は、検索処理中に要求される検索精度を達成できなそうな場合、閾値の数を大きくすることで判定対象ノードの数を増大させ、要求される検索精度を満たすように検索処理を行ってもよい。これにより、情報処理装置100は、より適切に検索処理を実行することができる。
【0107】
〔2.情報処理システムの構成〕
図3に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図3は、実施形態に係る情報処理システムの構成例を示す図である。なお、図3に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
【0108】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
【0109】
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
【0110】
情報処理装置100は、検索処理において、所定のノードとエッジにより連結されたノードである連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択するコンピュータである。例えば、情報処理装置100は、選択した判定対象ノードに基づいてノードを抽出する抽出装置である。
【0111】
情報処理装置100は、クエリに類似するオブジェクトを抽出する検索装置である。例えば、情報処理装置100は、端末装置からクエリ情報(クエリ)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
【0112】
〔3.情報処理装置の構成〕
次に、図4を用いて、実施形態に係る情報処理装置100の構成について説明する。図4は、実施形態に係る情報処理装置100の構成例を示す図である。図4に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0113】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図3中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
【0114】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図4に示すように、オブジェクト情報記憶部121と、インデックス情報記憶部122と、グラフ情報記憶部123と、閾値用情報記憶部124と、検索処理情報記憶部125とを有する。
【0115】
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図5は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図5に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
【0116】
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図5の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
【0117】
例えば、図5の例では、ID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2...」の多次元のベクトル情報が対応付けられることを示す。
【0118】
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0119】
(インデックス情報記憶部122)
実施形態に係るインデックス情報記憶部122は、インデックスに関する各種情報を記憶する。図6は、実施形態に係るインデックス情報記憶部の一例を示す図である。具体的には、図6の例では、インデックス情報記憶部122は、ツリー構造のインデックス情報を示す。図6の例では、インデックス情報記憶部122は、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目が含まれる。なお、「第1階層」〜「第3階層」に限らず、インデックスの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
【0120】
「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、インデックスの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、インデックスの根(ルート)に直接結ばれる階層に対応するノードとなる。
【0121】
「第2階層」は、インデックスの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、インデックスの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
【0122】
図6に示す例においては、インデックス情報記憶部122には、図1中のインデックス情報IND11に対応する情報が記憶される。例えば、インデックス情報記憶部122は、第1階層のノードが、節点VT1〜VT3等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
【0123】
また、インデックス情報記憶部122は、節点VT2の直下の第2階層のノードが、節点VT2−1〜VT2−4であることを示す。また、インデックス情報記憶部122は、節点VT2−1の直下の第3階層のノードが、ノードN1、ノードN2のグラフ情報GR11中のノード(ベクトル)であることを示す。インデックス情報記憶部122は、節点VT2−2の直下の第3階層のノードが、ノードN3、ノードN4、ノードN5のグラフ情報GR11中のノード(ベクトル)であることを示す。
【0124】
なお、インデックス情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0125】
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部123は、検索処理等の情報処理に用いられるグラフ情報を記憶する。図7の例は、グラフ情報記憶部123は、近傍グラフデータを記憶する。図7は、実施形態に係るグラフ情報記憶部の一例を示す図である。図7に示すグラフ情報記憶部123は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
【0126】
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
【0127】
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図7の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図7の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
【0128】
図7の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E11」により識別されるエッジ(エッジE11)が、ノードID「N78」により識別されるノード(ノードN78)に連結されることを示す。すなわち、図7の例では、グラフ情報におけるノードN1からはエッジE11によりノードN78へ辿ることができることを示す。
【0129】
また、図7の例では、ノードID「N4」により識別されるノード(ノードN4)は、オブジェクトID「OB4」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN4からは、エッジID「E41」により識別されるエッジ(エッジE41)が、ノードID「N6」により識別されるノード(ノードN6)に連結されることを示す。すなわち、図7の例では、グラフ情報におけるノードN4からはエッジE41によりノードN6へ辿ることができることを示す。
【0130】
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。グラフ情報記憶部123には、有向エッジにより連結されたグラフ情報に限らず、種々のグラフ情報が記憶されてもよい。グラフ情報記憶部123には、無向エッジにより連結されたグラフ情報が記憶されてもよい。
【0131】
(閾値用情報記憶部124)
実施形態に係る閾値用情報記憶部124は、閾値に関する各種情報を記憶する。例えば、閾値用情報記憶部124は、処理対象数の閾値やその閾値を決定するために用いる情報等を記憶する。図8は、実施形態に係る閾値記憶部の一例を示す図である。図8に示す閾値用情報記憶部124は、「閾値ID」、「値(e)」、「検索範囲係数(ε)」、「所定係数(w)」、「所定定数(e)」、「検索処理条件」といった項目が含まれる。
【0132】
「閾値ID」は、閾値を識別するための情報を示す。また、「値(e)」は、対応する閾値の具体的な値を示す。「検索範囲係数(ε)」は、検索処理時に用いられる検索範囲係数を示す。「所定係数(w)」は、閾値の決定に用いる所定の係数を示す。「所定係数(w)」は、上記式(1)において用いる所定の係数の値を示す。「所定定数(e)」は、閾値の決定に用いる所定の定数を示す。「所定定数(e)」は、上記式(1)において用いる所定の定数を示す。なお、図8の例では、「値(e)」、「検索範囲係数(ε)」、「所定係数(w)」、「所定定数(e)」に記憶される情報を「VE11」等の抽象的な符号で図示するが、各項目には、具体的な数値が記憶されるものとする。
【0133】
「検索処理条件」には、「検索時間」、「検索精度」といった項目が含まれる。「検索時間」は、検索における処理時間を示す。例えば、「検索時間」は、対応する閾値が決定された場合に要求された処理時間を示す。例えば、「検索時間」は、対応する閾値を用いた場合にその処理時間内で検索を完了することを示す。例えば、グラフ情報GR11を用いて検索時間TM12を満たす場合、「値(e)」は、値VL12(例えば5等)にする必要があることを示す。
【0134】
「検索精度」は、検索における処理精度を示す。例えば、「検索精度」は、対応する閾値が決定された場合に要求された処理精度を示す。例えば、「検索精度」は、対応する閾値を用いた場合にその処理精度での検索結果が得られることを示す。例えば、グラフ情報GR11を用いて検索精度AC13を満たす場合、「値(e)」は、値VL13(例えば20等)にする必要があることを示す。
【0135】
図8の例では、閾値ID「TH11」により識別される閾値(閾値TH11)の「値(e)」は、「3」であることを示す。また、閾値TH11については、「検索範囲係数(ε)」が「VE11」であり、「所定係数(w)」が「VW11」であり、「所定定数(e)」が「V011」であることを示す。また、閾値TH11については、「検索処理条件」の「検索時間」や「検索精度」が未設定であることを示す。
【0136】
なお、閾値用情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。閾値用情報記憶部124は、複数のグラフ情報を使い分ける場合、閾値に、その閾値が用いられるグラフ情報を対応付けて記憶してもよい。例えば、閾値用情報記憶部124は、グラフ情報GR11以外のグラフ情報が用いられる場合、各閾値が用いられるグラフ情報と、対応する閾値とを対応付けて記憶してもよい。
【0137】
(検索処理情報記憶部125)
実施形態に係る検索処理情報記憶部125は、検索処理に関する各種情報を記憶する。図9は、実施形態に係る検索処理情報記憶部の一例を示す図である。図9の例では、検索処理情報記憶部125は、「検索処理ID」、「クエリ情報」、「抽出情報」、「提供先」といった項目を有する。また、「抽出情報」には、「#1」や「#2」や「#3」といった項目が含まれる。なお、「抽出情報」には、抽出するノード数(オブジェクト数)に応じて、「#4」や「#5」等の項目が含まれてもよい。
【0138】
「検索処理ID」は、検索処理を識別するための識別情報を示す。また、「クエリ情報
」は、対応する検索処理において用いられたクエリを示す。「抽出情報」は、対応する検索処理により抽出されたノード(オブジェクト)を示す。「提供先」は、検索処理の結果を提供する提供先を示す。例えば、「提供先」は、クエリによる検索を要求した要求元を示す。
【0139】
例えば、図9の例では、検索処理ID「SR1」により識別される検索処理(検索処理SR1)は、クエリQE11に対応する検索処理であることを示す。検索処理SR1は、クエリQE11の類似ノードとしてノードN6、N7、N56が抽出されたことを示す。検索処理SR1は、提供先がユーザU1であることを示す。
【0140】
なお、検索処理情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0141】
(制御部130)
図4の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0142】
図4に示すように、制御部130は、取得部131と、決定部132と、選択部133と、抽出部134と、提供部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図4に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0143】
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、インデックス情報記憶部122や、グラフ情報記憶部123や、閾値用情報記憶部124や、検索処理情報記憶部125等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10等の外部装置から各種情報を取得する。取得部131は、グラフ情報記憶部123からグラフ情報を取得する。取得部131は、インデックス情報記憶部122からインデックス情報を取得する。
【0144】
取得部131は、データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する。取得部131は、検索中の所定の繰返し処理において処理対象となっている所定のノードの連結ノードを取得する。取得部131は、所定の繰返し処理の対象となるノード群から選択された一のノードである所定のノードの連結ノードを取得する。取得部131は、所定のノードを始点とする有向エッジであるエッジにより、所定のノードと連結される連結ノードを取得する。取得部131は、複数のノードが類似性に基づいて連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。取得部131は、複数のノードの各々が処理対象数以上の本数のエッジにより他のノードと連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。取得部131は、所定のユーザから検索クエリを取得する。
【0145】
取得部131は、検索クエリに関する情報を取得する。取得部131は、画像検索に関する検索クエリを取得する。取得部131は、ユーザが利用する端末装置10からクエリを取得する。取得部131は、端末装置10からクエリを受け付けた情報提供装置50からクエリを取得してもよい。図1の例では、取得部131は、クエリQE11をユーザが利用する端末装置10から取得する。
【0146】
図1の例では、取得部131は、グラフ情報記憶部123からグラフ情報GR11を取得する。取得部131は、インデックス情報記憶部122からインデックス情報IND11を取得する。
【0147】
(決定部132)
決定部132は、各種情報を決定する。決定部132は、各種情報を判定する。決定部132は、各種情報を生成する。例えば、決定部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。例えば、決定部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を判定する。例えば、決定部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を生成する。例えば、決定部132は、オブジェクト情報記憶部121や、インデックス情報記憶部122や、グラフ情報記憶部123や、閾値用情報記憶部124や、検索処理情報記憶部125等に基づいて、各種情報を決定する。
【0148】
決定部132は、取得部131により取得された各種情報に基づいて、種々の情報を決定する。決定部132は、取得部131により取得された各種情報に基づいて、種々の情報を判定する。決定部132は、選択部133により選択された各種情報に基づいて、種々の情報を決定する。決定部132は、選択部133により選択された各種情報に基づいて、種々の情報を判定する。決定部132は、選択部133により選択された各種情報に基づいて、種々の情報を生成する。決定部132は、抽出部134により抽出された各種情報に基づいて、種々の情報を決定する。決定部132は、抽出部134により抽出された各種情報に基づいて、種々の情報を判定する。決定部132は、抽出部134により抽出された各種情報に基づいて、種々の情報を選択する。決定部132は、取得部131により取得された各種情報に基づいて、種々の情報を生成する。例えば、決定部132は、検索処理における判定処理や決定処理を行う。例えば、決定部132は、グラフ情報を生成してもよい。
【0149】
図1の例では、決定部132は、検索の起点となる起点ノード決定する。図1の例では、決定部132は、所定のインデックス情報を用いて、起点ノードを決定する。決定部132は、図2中の情報群GINF11に示すようなインデックス情報IND11を用いて起点ノードを決定する。決定部132は、インデックス情報IND11に基づいて、クエリQE11に対応する起点ノードを決定する。決定部132は、インデックス情報記憶部122(図6参照)に記憶されたインデックス情報IND11を用いて、起点ノードを決定する。決定部132は、図1中の検索用情報SINF11を更新する。例えば、決定部132は、記憶部120への情報の追加や記憶部120からの情報の削除等を行うことにより検索用情報SINF11を更新する。
【0150】
例えば、決定部132は、図1中のインデックス情報IND11に示すような木構造型のインデックス情報を用いて、グラフ情報GR11における起点ノードを決定する。図1の例では、決定部132は、クエリQE11に基づいて、インデックス情報IND11を上(ルートRT)から下へ辿ることにより、インデックス情報IND11の近傍候補となる起点ノードを特定する。決定部132は、2個のノードを起点ノードに決定する。
【0151】
例えば、決定部132は、インデックス情報IND11をルートRTからリーフノード(グラフ情報GR11中のノード)まで辿ることにより、クエリQE11に対応する起点ノードを決定してもよい。図1の例では、決定部132は、インデックス情報IND11をルートRTからノードN4やノードN5まで辿ることにより、ノードN4やノードN5を起点ノードとして決定する
【0152】
例えば、決定部132は、節点VT2−2からノードN3、N4、N5等のうち、クエリQE11との類似度が高い節点ノードN4へ辿ると決定してもよい。そして、決定部132は、ノードN4がグラフ情報GR11中のノードであるため、ノードN4を起点ノードに決定する。また、決定部132は、ノードN4から上位の節点VT2−2に戻り、節点VT2−2からノードN3、N5等のうち、クエリQE11との類似度がノードN4の次に高い節点ノードN5へ辿ると決定してもよい。そして、決定部132は、ノードN5がグラフ情報GR11中のノードであるため、ノードN5を起点ノードに決定する。これにより、図1中のグラフ情報GR11−1に示すように、決定部132は、2個のノードN4、N5を起点ノードに決定する。
【0153】
決定部132は、対象ノードを決定する。決定部132は、集合Sに含まれるノードから、対象ノードを決定する。決定部132は、検索用情報SINF11−1中の集合Sに含まれるノードN4、N5から、対象ノードを決定する。決定部132は、集合Sに含まれるノードのうち、最もクエリQE11に類似するノードを対象ノードに決定する。図1の例では、決定部132は、ノードN4、N5のうち、最もクエリQE11に類似するノードN4を対象ノードに決定する。
【0154】
決定部132は、判定対象ノードであるノードN6を抽出候補とするかを判定する。例えば、決定部132は、ノードN6とクエリQE11間の距離DQ6が半径r以下である場合、ノードN6を抽出候補と判定する。図1の例では、決定部132は、半径rが「∞」であり、距離DQ6は半径r以下であるため、ノードN6を抽出候補と判定する。
【0155】
また、決定部132は、ノードN6を対象ノードとするかを判定する。例えば、決定部132は、距離DQ6が半径r(1+ε)以下である場合、ノードN6を対象ノードとすると判定する。図1の例では、決定部132は、半径rが「∞」であり、距離DQ6は半径r(1+ε)以下であるため、ノードN6を対象ノードとすると判定する。
【0156】
決定部132は、判定対象ノードであるノードN9を抽出候補とするかを判定する。例えば、決定部132は、ノードN9とクエリQE11間の距離DQ9が半径r以下である場合、ノードN9を抽出候補と判定する。図1の例では、決定部132は、半径rが「d(N5,QE11)」であり、距離DQ9は半径rより大きいため、ノードN9を抽出候補としないと判定する。決定部132は、図1中のグラフ情報GR11−4に示すように、ノードN9が範囲AR11外に位置するためノードN9を抽出候補としないと判定する。
【0157】
決定部132は、ノードN9を対象ノードとするかを判定する。例えば、決定部132は、距離DQ9が半径r(1+ε)以下である場合、ノードN9を対象ノードとすると判定する。図1の例では、決定部132は、半径rが「d(N5,QE11)」であり、距離DQ9は半径r(1+ε)以下であるため、ノードN9を対象ノードとすると判定する。決定部132は、図1中のグラフ情報GR11−4に示すように、ノードN9が範囲AR21内に位置するためノードN9を対象ノードにすると判定する。
【0158】
決定部132は、判定対象ノードであるノードN7を抽出候補とするかを判定する(ステップS21)。例えば、決定部132は、ノードN7とクエリQE11間の距離DQ7が半径r以下である場合、ノードN7を抽出候補と判定する。例えば、距離DQ7は、距離関数dを用いて、d(N7,QE11)により導出される。図1の例では、決定部132は、半径rが「d(N5,QE11)」でり、距離DQ7は半径r以下であるため、ノードN7を抽出候補と判定する。決定部132は、図1中のグラフ情報GR11−4に示すように、ノードN7が範囲AR11内に位置するためノードN7を抽出候補にすると判定する。
【0159】
決定部132は、ノードN7を対象ノードとするかを判定する。例えば、決定部132は、距離DQ7が半径r(1+ε)以下である場合、ノードN7を対象ノードとすると判定する。図1の例では、決定部132は、半径rが「d(N5,QE11)」であり、距離DQ7は半径r(1+ε)以下であるため、ノードN7を対象ノードとすると判定する。決定部132は、図1中のグラフ情報GR11−4に示すように、ノードN7が範囲AR21内に位置するためノードN7を対象ノードにすると判定する。決定部132は、選択部133により選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを決定する。決定部132は、クエリQE11について、抽出数「3」に対応する3個の類似ノードを決定する。決定部132は、図1中の検索用情報SINF11−6中の集合Rに示すように、ノードN6、N7、N56をクエリQE11の類似ノードに決定する。決定部132は、集合Rに含まれるノードN6、N7、N56を類似ノードに決定する。
【0160】
(選択部133)
選択部133は、各種情報を選択する。例えば、選択部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を選択する。例えば、選択部133は、オブジェクト情報記憶部121や、インデックス情報記憶部122や、グラフ情報記憶部123や、閾値用情報記憶部124や、検索処理情報記憶部125等に基づいて、各種情報を選択する。選択部133は、取得部131により取得された各種情報に基づいて、種々の情報を選択する。選択部133は、決定部132により決定された各種情報に基づいて、種々の情報を選択する。選択部133は、抽出部134により抽出された各種情報に基づいて、種々の情報を選択する。例えば、選択部133は、検索処理における選択処理を行う。
【0161】
選択部133は、連結ノードを判定対象とする判定処理において、連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択する。選択部133は、検索クエリとの類似性に基づく判定処理の判定対象ノードを選択する。選択部133は、連結ノードのうち、処理対象数の閾値に基づいて、判定対象ノードを選択する。
【0162】
選択部133は、検索に用いられるパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。選択部133は、検索における検索範囲に関するパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。選択部133は、検索の処理時間に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。選択部133は、検索の検索精度に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。
【0163】
選択部133は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。選択部133は、連結ノードのうち、所定のノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択する。選択部133は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択する。選択部133は、一のノードを所定のノードとして選択する。選択部133は、連結ノードのうち、検索クエリとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。選択部133は、連結ノードのうち、検索クエリとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択する。
【0164】
図1の例では、選択部133は、対象ノードにエッジにより連結された連結ノードのうち、判定処理の対象となる判定対象ノードを選択する。選択部133は、対象ノードからの出力エッジが連結された連結ノードのうち、判定対象ノードを選択する。図1の例では、選択部133は、対象ノードであるノードN4からのエッジE41〜E44が連結されたノードN6〜N9の4個のノードのうち、判定対象ノードを選択する。
【0165】
選択部133は、処理対象数の閾値に基づいて判定対象ノードを選択する。選択部133は、図1中の閾値情報TL11に示すように、閾値TH11の値「3」に基づいて判定対象ノードを選択する。選択部133は、ノードN4の4個の連結ノードであるノードN6〜N9のうち、閾値TH11の値「3」に基づいて、3個のノードを判定対象ノードとして選択する。
【0166】
選択部133は、対象ノードの連結ノードのうち、所定の基準に基づいて、判定対象ノードを選択する。例えば、選択部133は、対象ノードの連結ノードのうち、対象ノードとの類似度に基づいて、判定対象ノードを選択する。具体的には、選択部133は、対象ノードの連結ノードのうち、対象ノードとの間の距離に基づいて、判定対象ノードを選択する。
【0167】
図1の例では、選択部133は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。選択部133は、図1中の連結ノード情報NL11に示すような、対象ノードであるノードN4とその連結ノードであるノードN6〜N9の各々との間の距離に基づいて、判定対象ノードを選択する。
【0168】
図1の例では、選択部133は、対象ノードであるノードN4とその連結ノードであるノードN6〜N9の各々との間の距離が近い方から順に閾値に達するまで、判定対象ノードを選択する。選択部133は、図1中のグラフ情報GR11−2に示すように、4個のノードN6〜N9のうち、ノードN6、N9、N7の3個のノードを判定対象ノードに選択する。
【0169】
(抽出部134)
抽出部134は、各種情報を抽出する。例えば、抽出部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。例えば、抽出部134は、オブジェクト情報記憶部121や、インデックス情報記憶部122や、グラフ情報記憶部123や、閾値用情報記憶部124や、検索処理情報記憶部125等に基づいて、各種情報を抽出する。抽出部134は、取得部131により取得された各種情報に基づいて、種々の情報を抽出する。抽出部134は、決定部132により決定された各種情報に基づいて、種々の情報を抽出する。抽出部134は、選択部133により選択された各種情報に基づいて、種々の情報を抽出する。例えば、抽出部134は、検索処理における抽出処理を行う。
【0170】
抽出部134は、選択部133により選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを抽出する。抽出部134は、各種情報を検索する検索部であってもよい。例えば、抽出部134は、グラフ情報を探索することにより、オブジェクトを検索する。例えば、抽出部134は、取得部131により取得されたクエリが取得された場合、グラフ情報を探索することにより、クエリに類似するオブジェクトを検索する。例えば、抽出部134は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、抽出部134は、図11に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。
【0171】
図1の例では、抽出部134は、集合SからノードN4を対象ノードとして抽出する。抽出部134は、抽出数「3」に対応する3個の類似ノードを抽出する。抽出部134は、ノードN6を対象ノードとして抽出する。抽出部134は、ノードN9を対象ノードとして抽出する。抽出部134は、ノードN7を対象ノードとして抽出する。抽出部134は、判定対象ノードであるノードN6を抽出候補として抽出する。抽出部134は、判定対象ノードであるノードN9を抽出候補として抽出しない。抽出部134は判定対象ノードであるノードN7を抽出候補として抽出する。抽出部134は、検索用情報SINF11−6中の集合Rに示すように、ノードN6、N7、N56を類似ノードとして抽出してもよい。
【0172】
(提供部135)
提供部135は、各種情報を提供する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を提供する。提供部135は、端末装置10に各種情報を送信する。提供部135は、端末装置10に各種情報を配信する。提供部135は、取得部131により取得された各種情報に基づいて、種々の情報を提供する。提供部135は、決定部132により決定された各種情報に基づいて、種々の情報を提供する。提供部135は、選択部133により選択された各種情報に基づいて、種々の情報を提供する。提供部135は、抽出部134により抽出された各種情報に基づいて、種々の情報を提供する。例えば、提供部135は、検索処理における提供処理を行う。
【0173】
例えば、提供部135は、クエリに対応するオブジェクトIDを検索結果として提供する。提供部135は、決定部132により決定された類似ノードに関する情報を提供する。提供部135は、決定部132により決定された類似ノードを示すオブジェクトIDを端末装置10や情報提供装置50へ提供する。提供部135は、決定部132により決定されたオブジェクトIDをクエリに対応するベクトルを示す情報として、端末装置10や情報提供装置50に提供する。例えば、提供部135は、抽出部134により抽出(検索)されたオブジェクトIDを端末装置10や情報提供装置50へ提供する。例えば、提供部135は、抽出部134が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部135は、抽出部134により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として、端末装置10や情報提供装置50に提供する。
【0174】
提供部135は、抽出部134により抽出された類似ノードに関する情報を提供する。提供部135は、類似ノードに関する情報を所定のユーザが利用する端末装置10(図3参照)に提供する。提供部135は、クエリの送信元へ検索結果を提供する。図1の例では、提供部135は、ノードN6、N7、N56を示す情報をクエリQE11の類似ノードとして、検索の要求元へ提供する。例えば、情報処理装置100は、クエリQE11に基づく検索結果として、ノードN6、N7、N56を示す情報を、検索の要求元へ提供する。提供部135は、クエリQE11の送信元であるユーザU1が利用する端末装置10に検索結果を提供する。提供部135は、クエリQE11に類似するノードN6、N7、N56を示す情報を検索結果として提供する。
【0175】
また、提供部135は、選択部133により選択されたノードを示す情報を外部の情報処理装置へ提供してもよい。例えば、提供部135は選択部133により選択されたノードを情報提供装置50に送信してもよい。
【0176】
〔4.情報処理(選択処理)のフロー〕
次に、図10を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図10は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図10は、実施形態に係る情報処理に含まれる選択処理の一例を示すフローチャートである。
【0177】
図10に示すように、情報処理装置100は、グラフ情報の検索クエリに基づく検索処理において、所定のノードと連結された連結ノードを取得する(ステップS101)。例えば、情報処理装置100は、グラフ情報記憶部123(図7参照)から、ノードN6〜N9を示す情報を取得する。図1の例では、情報処理装置100は、ノードN4を対象ノードとする場合、ノードN4と連結された連結ノードであるノードN6〜N9を取得する。
【0178】
そして、情報処理装置100は、連結ノードを判定対象とする判定処理において、判定処理の処理対象数に関する基準に基づいて、判定処理の判定対象ノードを選択する(ステップS102)。例えば、情報処理装置100は、ノード間の類似度に基づいて、処理対象数を示す閾値に達するまで、判定対象ノードを選択する。図1の例では、情報処理装置100は、ノードN4の連結ノードであるノードN6〜N9のうち、ノードN4との距離が短い方から3つのノードN6、N9、NM7の順に判定対象ノードとして選択する。
【0179】
〔5.情報処理(検索処理)のフロー〕
次に、情報処理装置100による検索処理のフローについて、図11を一例として説明する。図11は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図11は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、図11に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置100によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、情報処理装置100によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
【0180】
ここでは、近傍集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合N(G,y)は、ノードyからの出力エッジが連結されたオブジェクト(ノード)の集合である。「G」は、所定のグラフデータ(例えば、グラフ情報GR11等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。例えば、図11中の集合S、集合C、集合Rは、図1中の集合S、集合C、集合Rに対応する。
【0181】
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、起点ノードとして決定(選択)されたオブジェクト(ノード)を集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、検索結果(抽出候補)の集合Rの初期集合にも含められる。また、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
【0182】
次に、情報処理装置100は、集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。図1の例では、情報処理装置100は、オブジェクトyであるクエリQE11に対応する起点ノードであるノードN4、N5が含まれる集合Sから、一のノードをオブジェクトs(対象ノード)として抽出する。次に、情報処理装置100は、オブジェクトsを集合Sから除外する(ステップS303)。
【0183】
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、集合Rをオブジェクトyの近傍集合として出力し(ステップS305)、処理を終了する。
【0184】
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトの中から集合Cに含まれないオブジェクトを、所定の基準に基づいて一つ選択し、選択したオブジェクトuを、集合Cに格納する(ステップS306)。例えば、図1の例では、情報処理装置100は、ノードN4の連結ノードであるノードN6〜N9のうち、クエリQE11と最も近いノードN6をオブジェクトu(判定対象ノード)として選択する。
【0185】
次に、情報処理装置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の判定(処理)を行う。
【0186】
次に、情報処理装置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の判定(処理)を行う。
【0187】
オブジェクト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の判定(処理)を行う。
【0188】
集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、集合Rから除外する(ステップS312)。
【0189】
次に、情報処理装置100は、集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
【0190】
そして、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択したか否かを判定する(ステップS315)。例えば、図1の例では、情報処理装置100は、ノードN4の対象ノードとした繰り返し処理において、閾値「3」に対応する3個の判定対象ノードを選択し、個の判定対象ノードに対する判定処理を行ったかを判定する。オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択していない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
【0191】
オブジェクト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等へ提供してもよい。図1の例では、情報処理装置100は、集合Rに含まれるノードN6、N7、N56をクエリQE11(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置10等へ提供してもよい。
【0192】
〔6.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、選択部133とを有する。取得部131は、データ検索の対象となる複数のノードがエッジにより連結されたグラフ情報の検索クエリに基づく検索において、所定のノードとエッジにより連結されたノードである連結ノードを取得する。選択部133は、連結ノードを判定対象とする判定処理において、連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択する。
【0193】
このように、実施形態に係る情報処理装置100は、検索クエリに基づく検索中の判定処理において、所定のノードの連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択することにより、辿るノード数を動的に変更することができるため、所定の対象に関する所望の検索を可能にすることができる。
【0194】
また、実施形態に係る情報処理装置100において、選択部133は、検索クエリとの類似性に基づく判定処理の判定対象ノードを選択する。
【0195】
このように、実施形態に係る情報処理装置100は、検索クエリとの類似性に基づく判定処理の判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0196】
また、実施形態に係る情報処理装置100において、選択部133は、連結ノードのうち、処理対象数の閾値に基づいて、判定対象ノードを選択する。
【0197】
このように、実施形態に係る情報処理装置100は、連結ノードのうち、処理対象数の閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0198】
また、実施形態に係る情報処理装置100において、選択部133は、検索に用いられるパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。
【0199】
このように、実施形態に係る情報処理装置100は、検索に用いられるパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0200】
また、実施形態に係る情報処理装置100において、選択部133は、検索における検索範囲に関するパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択する。
【0201】
このように、実施形態に係る情報処理装置100は、検索における検索範囲に関するパラメータに応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0202】
また、実施形態に係る情報処理装置100において、選択部133は、検索の処理時間に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。
【0203】
このように、実施形態に係る情報処理装置100は、検索の処理時間に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0204】
また、実施形態に係る情報処理装置100において、選択部133は、検索の検索精度に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択する。
【0205】
このように、実施形態に係る情報処理装置100は、検索の検索精度に関する条件に応じて決定される閾値に基づいて、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0206】
また、実施形態に係る情報処理装置100において、選択部133は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択する。
【0207】
このように、実施形態に係る情報処理装置100は、連結ノードのうち、所定のノードとの類似性が高い方から順に閾値に達するまで、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0208】
また、実施形態に係る情報処理装置100において、選択部133は、連結ノードのうち、所定のノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択する。
【0209】
このように、実施形態に係る情報処理装置100は、連結ノードのうち、所定のノードとの類似性が低い方から順に閾値に達するまで、判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0210】
また、実施形態に係る情報処理装置100において、選択部133は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択する。
【0211】
このように、実施形態に係る情報処理装置100は、連結ノードのうち、閾値に達するまで、ランダムに判定対象ノードを選択することにより、所定の対象に関する所望の検索を可能にすることができる。
【0212】
また、実施形態に係る情報処理装置100において、取得部131は、検索中の所定の繰返し処理において処理対象となっている所定のノードの連結ノードを取得する。
【0213】
このように、実施形態に係る情報処理装置100は、検索中の所定の繰返し処理において処理対象となっている所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【0214】
また、実施形態に係る情報処理装置100において、取得部131は、所定の繰返し処理の対象となるノード群から選択された一のノードである所定のノードの連結ノードを取得する。
【0215】
このように、実施形態に係る情報処理装置100は、所定の繰返し処理の対象となるノード群から選択された一のノードである所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【0216】
また、実施形態に係る情報処理装置100において、取得部131は、所定のノードを始点とする有向エッジであるエッジにより、所定のノードと連結される連結ノードを取得する。
【0217】
このように、実施形態に係る情報処理装置100は、所定のノードを始点とする有向エッジであるエッジにより、所定のノードと連結される連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【0218】
また、実施形態に係る情報処理装置100において、取得部131は、複数のノードが類似性に基づいて連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。
【0219】
このように、実施形態に係る情報処理装置100は、複数のノードが類似性に基づいて連結されたグラフ情報の検索において、所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【0220】
また、実施形態に係る情報処理装置100において、取得部131は、複数のノードの各々が処理対象数以上の本数のエッジにより他のノードと連結されたグラフ情報の検索において、所定のノードの連結ノードを取得する。
【0221】
このように、実施形態に係る情報処理装置100は、複数のノードの各々が処理対象数以上の本数のエッジにより他のノードと連結されたグラフ情報の検索において、所定のノードの連結ノードを取得することにより、所定の対象に関する所望の検索を可能にすることができる。
【0222】
また、実施形態に係る情報処理装置100は、決定部132を有する。決定部132は、選択部133により選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを決定する。
【0223】
このように、実施形態に係る情報処理装置100は、選択された判定対象ノードに対する判定処理結果に基づいて、検索クエリに類似するノードである類似ノードを決定することにより、所定の対象に関する所望の検索を行うことができる。
【0224】
また、実施形態に係る情報処理装置100は、提供部135を有する。提供部135は、決定部132により決定された類似ノードに関する情報を提供する。
【0225】
このように、実施形態に係る情報処理装置100は、決定された類似ノードに関する情報を提供することにより、所定の対象に関する所望の検索サービスを提供することができる。
【0226】
また、実施形態に係る情報処理装置100において、取得部131は、所定のユーザから検索クエリを取得する。提供部135は、類似ノードに関する情報を所定のユーザが利用する端末装置に提供する。
【0227】
このように、実施形態に係る情報処理装置100は、所定のユーザから検索クエリを取得し、類似ノードに関する情報を所定のユーザが利用する端末装置に提供することにより、所定の対象に関する所望の検索サービスをユーザに提供することができる。
【0228】
〔7.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば図12に示すような構成のコンピュータ1000によって実現される。図12は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
【0229】
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0230】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
【0231】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
【0232】
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0233】
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
【0234】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0235】
〔8.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0236】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0237】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0238】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0239】
1 情報処理システム
100 情報処理装置
121 オブジェクト情報記憶部
122 インデックス情報記憶部
123 グラフ情報記憶部
124 閾値用情報記憶部
125 検索処理情報記憶部
130 制御部
131 取得部
132 決定部
133 選択部
134 抽出部
135 提供部
10 端末装置
50 情報提供装置
N ネットワーク
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12