JP2024071095A - 情報処理装置、情報処理方法、及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法、及び情報処理プログラム Download PDF

Info

Publication number
JP2024071095A
JP2024071095A JP2022181840A JP2022181840A JP2024071095A JP 2024071095 A JP2024071095 A JP 2024071095A JP 2022181840 A JP2022181840 A JP 2022181840A JP 2022181840 A JP2022181840 A JP 2022181840A JP 2024071095 A JP2024071095 A JP 2024071095A
Authority
JP
Japan
Prior art keywords
graph
node
information processing
nodes
processing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022181840A
Other languages
English (en)
Inventor
雅二郎 岩崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to JP2022181840A priority Critical patent/JP2024071095A/ja
Publication of JP2024071095A publication Critical patent/JP2024071095A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】条件を満たすノードにエッジが連結されたグラフを生成する。【解決手段】本願に係る情報処理装置は、取得部と、選択部と、生成部とを有する。取得部は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する。選択部は、複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する。生成部は、複数のノードのうち対象ノード以外の他のノードからのエッジが対象ノードに連結された第2グラフを生成する。【選択図】図3

Description

本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
従来、種々の情報を探索(検索)する技術が提供されている。例えば、所定の対象に関する検索を行うために、検索対象に対応するノードがエッジにより連結されたグラフデータを生成する技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
特許第7080803号公報 特許第7130019号公報
岩崎雅二郎 "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索", 情報処理学会論文誌, 2011/2, Vol. 52, No. 2. pp.817-828.
しかしながら、上記の従来技術では、条件を満たすノードにエッジが連結されたグラフを生成することが難しい場合がある。例えば、上記の従来技術では、エッジの削減によりグラフを適切に生成する点については考慮されているものの、エッジの追加(連結)の点については改善の余地がある。
本願は、上記に鑑みてなされたものであって、条件を満たすノードにエッジが連結されたグラフを生成する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
本願に係る情報処理装置は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する取得部と、前記複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する選択部と、前記複数のノードのうち前記対象ノード以外の他のノードからのエッジが前記対象ノードに連結された第2グラフを生成する生成部と、を備えたことを特徴とする。
実施形態の一態様によれば、条件を満たすノードにエッジが連結されたグラフを生成することができるという効果を奏する。
図1は、実施形態に係る情報処理の一例を示す図である。 図2は、実施形態に係る情報処理システムの構成例を示す図である。 図3は、実施形態に係る情報処理装置の構成例を示す図である。 図4は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。 図5は、実施形態に係る条件情報記憶部の一例を示す図である。 図6は、実施形態に係るグラフデータ記憶部の一例を示す図である。 図7は、実施形態に係る情報処理の一例を示すフローチャートである。 図8は、実施形態に係る情報処理の他の一例を示す図である。 図9は、実施形態に係る情報処理に用いる起点用情報の一例を示す図である。 図10は、グラフデータを用いた検索処理の一例を示すフローチャートである。 図11は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。図1は、実施形態に係る情報処理の一例を示す図である。図1では、情報処理装置100(図3参照)があるグラフ(「第1グラフ」ともいう)の複数のノードのうち、検索されにくさに関する条件を満たすノード(「対象ノード」ともいう)を対象として、対象ノード以外の他のノードからのエッジが対象ノードに連結されたグラフ(「第2グラフ」ともいう)を生成する場合を示す。以下では、検索の対象とする情報(オブジェクト)がベクトル化され、ベクトル化されたオブジェクトを対象としてグラフインデックス(単に「グラフ」ともいう)が構成される。すなわち、図1では、情報処理装置100がベクトルをオブジェクトに対応するオブジェクト値として処理を行う場合を示す。
なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いてもよい。例えば、情報処理装置100は、ベクトルに限らず、データ間の距離(類似度)が定義されていれば任意の形態のデータを用いてもよい。また、以下では、画像情報をオブジェクトとした場合を一例として説明するが、オブジェクトは、動画情報や音声情報等の種々の対象であってもよい。
また、図1では、情報処理装置100は、ノード及び有向エッジを含むグラフを対象として情報処理を行う。なお、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。
以下では、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、以下では、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。
また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
情報処理装置100は、例えば情報処理装置100が処理可能な範囲で(例えば数百万~数億等)の膨大な画像情報に対応するノードを対象にグラフの生成処理を行うが、図面においてはその一部のみを図示する。図1では、説明を簡単にするために、7個のノードを図示して処理の概要を説明する。具体的には、図1では、ノードN1~N7のノードのみを図示し、エッジもエッジE1等の一部のエッジのみを図示する。
このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
また、このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE1」と記載した場合、そのエッジはエッジID「E1」により識別されるエッジである。例えば、ノードN1を参照元とし、ノードN2を参照先として連結されるエッジE1により、ノードN1からノードN2に辿ることが可能となる。この場合、有向エッジであるエッジE1は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN2を中心として識別される場合、入力エッジとなる。言い換えると、有向エッジであるエッジE1は、ノードN1側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードN2側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。
また、図1に示す空間情報VS1-1~VS1-7は、各グラフを模式的に示す図であり、空間情報VS1-1~VS1-7に示す空間は、同一の空間であってもよい。また、以下では、空間情報VS1-1~VS1-7について、特に区別なく説明する場合には、空間情報VS1と記載する。
また、図1中の空間情報VS1は、ユークリッド空間であってもよい。また、図1に示す空間情報VS1は、各ベクトル間の距離等の説明のための概念的な図であり、空間情報VS1は、多次元空間である。例えば、図1に示す空間情報VS1は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。
本実施形態においては、空間情報VS1における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象(画像情報)の類似性が、空間情報VS1内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1に示す例においては、空間情報VS1における各ノード間の距離が短いオブジェクト同士の類似度が高く、空間情報VS1における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図1中の空間情報VS1において、ノードID「N1」により識別されるノード(ノードN1)と、ノードID「N2」により識別されるノード(ノードN2)とは近接している、すなわち距離が短い。そのため、ノードID「N1」により識別されるノードに対応するオブジェクトと、ノードID「N2」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。
また、例えば、図1中の空間情報VS1において、ノードID「N2」により識別されるノードと、ノードID「N5」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードID「N2」により識別されるノードに対応するオブジェクトと、ノードID「N5」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。
〔1-1.生成手法例〕
ここから、図1を用いてグラフの生成手法の例である第1手法、第2手法及び第3手法の各々について説明する。以下ではノードへの入力エッジの数(「入次数」ともいう)が閾値である下限値未満であることを、検索されにくさに関する条件の一例として説明する。なお、検索されにくさに関する条件は、入次数に関するものに限らず、任意の条件が設定可能である。なお、図1に示す各ステップは、グラフの生成を説明するための便宜的なステップであり、実際の処理はより詳細な処理ステップにより行われてもよい。
〔1-1-0.事前準備(検索されにくいノードの収集)〕
まず、以下に示す第1手法、第2手法、及び第3手法の全てに共通の点について説明する。情報処理装置100は、第1グラフGR1を取得する(ステップS1)。以下では情報処理装置100が第1グラフGR1を生成する場合を一例として説明するが、情報処理装置100は、外部装置や記憶部120(図3参照)から第1グラフGR1を取得してもよい。また、第1グラフGR1には任意のグラフが採用可能であるが、図1では、近似k近傍グラフを第1グラフGR1の一例として説明する。また、近似k近傍グラフは第1グラフGR1の一例に過ぎず、第1グラフGR1は、例えばk近傍グラフであってもよい。
例えばk近傍グラフは、各ノードについてそのノードから距離が近い方から順にk個のノードへのエッジが連結されたグラフである。例えば、近似k近傍グラフとは、グラフインデックス(グラフ)生成時に生成中のグラフを用いてk近傍検索を行うこと等により生成されるk近傍グラフに近似するグラフ(「ANNG」ともいう)に基づくグラフ等を含む概念である。なお、上記のような処理により生成された近似k近傍グラフがk近傍グラフとなってもよい。すなわち、近似k近傍グラフとはk近傍グラフを含む概念である。また、近似k近傍グラフの生成については特許文献1、非特許文献1等に開示されるような任意の処理が採用可能であり詳細な説明は省略する。
図1では、情報処理装置100は、以下に示す手順#0-1~#0-3により、第1グラフGR1の生成を含む事前準備に関する処理を実行する。例えば、情報処理装置100は、事前準備により検索されにくいノードに関する情報を収集する。なお、上述したように情報処理装置100がグラフGR1の生成を行わない場合、手順#0-1は、外部装置や記憶部120からの第1グラフGR1の取得であってもよい。
(事前準備)
手順#0-1:ANNGを生成し、各ノードからの出力エッジの数(「出次数」ともいう)をkとなるようにエッジを削除し、近似k近傍グラフを生成
手順#0-2:各ノードの入次数を算出
手順#0-3:入次数の少ない順にノードをソート
詳細な説明は省略するが、手順#0-1では、情報処理装置100は、1つずつノードをグラフに追加し、ノードを無向エッジで、または、有向エッジで双方向に連結することによりANNGを生成する。なお、上述した処理は一例に過ぎず、情報処理装置100は、手順#0-1において、ANNGの各ノードをクエリとしてk個の近傍ノードを検索することにより、近似k近傍グラフを生成してもよい。情報処理装置100は、手順#0-1により、空間情報VS1-1に示すような第1グラフGR11を取得する。
また、情報処理装置100は、各ノードへの入力エッジの数をカウントすることにより、各ノードの入次数を算出する。情報処理装置100は、算出した各ノードの入次数を記憶部120に記憶してもよい。また、情報処理装置100は、各ノードを入次数が小さい方から順に並べることにより、入次数の少ない順にノードをソートする。情報処理装置100は、入次数の少ない順にノードをソートしたソート情報を記憶部120に記憶してもよい。
以下、上述した事前準備を前提として、第1手法~第3手法について説明する。下限値Mを2とした場合を一例として説明する。また、図1では別途のグラフを第2グラフとして生成する場合を一例として説明するが、情報処理装置100は、第1グラフにエッジを追加することにより、第2グラフを生成してもよい。この場合、第2グラフは、第1グラフに新たなエッジが追加されたグラフとなる。なお、図1では、第1グラフのノードのみを反映したグラフを第2グラフの初期状態として用いる場合を説明する。
〔1-1-1.第1手法〕
まず、第1手法について説明する。情報処理装置100は、以下に示す手順#1-1~#1-5により、第1手法による第2グラフの生成処理を実行する。例えば、情報処理装置100は、事前準備により検索されにくいノードに関する情報を収集する。なお、上述したように情報処理装置100がグラフGR1の生成を行わない場合、手順#0-1は、外部装置や記憶部120からの第1グラフGR1の取得であってもよい。
(第1手法)
手順#1-1:入次数の下限値Mを設定
手順#1-2:入次数の少ない順にノードAを1つ取得
手順#1-3:ノードAの入次数が下限値Mと同じならば終了
手順#1-4:グラフからランダムにノードBを選択し、ノードBからノードAへのエッジを付与
手順#1-5:手順#1-4を繰り返し、入次数が下限値Mと同じとなったら手順#1-2へ戻る
例えば、情報処理装置100は、手順#1-1では、条件情報記憶部122(図5参照)に記憶された条件LCD1の下限値の値ITH1である「2」を取得し、下限値Mを「2」に設定する。例えば、情報処理装置100は、手順#1-2では、事前準備で生成したソート情報から入次数の少ない順にノードAを1つ取得する。例えば、情報処理装置100は、手順#1-3では、ノードAの入次数と下限値Mとを比較し、ノードAの入次数と下限値Mとが同じではない場合、手順#1-2~#1-5の処理を繰り返す。一方、情報処理装置100は、ノードAの入次数と下限値Mとが同じである場合、処理を終了する。
例えば、情報処理装置100は、手順#1-4では、第1グラフGR1からランダムにノードBを選択し、ノードBからノードAへのエッジを追加した第2グラフを生成する。手順#1-5のように、情報処理装置100は、手順#1-4で第2グラフのノードAへのエッジを追加する処理を繰り返し、ノードAの入次数が下限値Mと同じとなった場合、手順#1-2へ戻る。
ここで、図1を用いて、上述した第1手法の処理の一例を説明する。情報処理装置100は、ノードN7を対象ノードとして選択する(ステップS2)。このように、図1では、情報処理装置100は、入次数が0であるノードN7を対象ノードとして選択する。情報処理装置100は、下限値から対象ノードの入次数」を減算した値を対象ノードに追加する入力エッジの数(「追加数」ともいう)に決定する。例えば、情報処理装置100は、下限値MからノードN7の入次数「0」を減算した2を追加数に決定する。
そして、情報処理装置100は、他のノードからのエッジがノードN7に連結された第2グラフGR11を生成する(ステップS11)。情報処理装置100は、第1グラフGR1中のノード群からランダムにノードN7への出力エッジを追加するノード(「入力元ノード」ともいう)を選択し、選択した入力元ノードからノードN7への入力エッジを追加することにより、第2グラフGR11を生成する。
図1では、情報処理装置100は、ランダムな選択によりノードN3を入力元ノードとして選択し、選択したノードN3からノードN7への入力エッジであるエッジE15を追加することにより、第2グラフGR11を生成する。また、情報処理装置100は、ランダムな選択によりノードN2を入力元ノードとして選択し、選択したノードN2からノードN7への入力エッジであるエッジE16を追加することにより、第2グラフGR11を生成する。これにより、情報処理装置100は、空間情報VS1-2に示すように、ランダムな選択によりノードN7への2本の入力エッジであるエッジE15、E16が追加された第2グラフGR11を生成する。
このように、情報処理装置100は、第1手法により検索されにくいノードへの入力エッジを追加することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。なお、図1では説明のため、1つのノードN7を対象ノードとする場合のみを図示し説明したが、情報処理装置100は、入次数が下限値Mよりも小さいノードだけ上述した処理を繰り返すことにより、第1手法により第2グラフGR11を生成する。また、図1での各エッジの線の種別は、第1グラフGR1に既存のエッジと第1手法~第3手法等により追加されたエッジとを区別するためのものである。すなわち、第1手法~第3手法等により追加されたエッジを点線で示すが、第1グラフGR1に既存のエッジと同様のエッジであるものとする。
そして、情報処理装置100は、第1グラフGR1に第2グラフGR11に含まれるエッジを追加することにより、合成グラフを生成する(ステップS12)。図1では、情報処理装置100は、空間情報VS1-3に示すように、第2グラフGR11に含まれるエッジE15、E16を第1グラフGR1に追加することにより、合成グラフGR12を生成する。これにより、情報処理装置100は、第1グラフにおいて検索されにくいノードへの入力エッジを追加された合成グラフを生成することができ、合成グラフを用いることで検索されにくいノードの存在が抑制されたグラフを用いて検索することが可能となる。
〔1-1-2.第2手法〕
次に、第2手法について説明する。なお、第1手法と同様の点については適宜説明を省略する。情報処理装置100は、以下に示す手順#2-1~#2-6により、第2手法による第2グラフの生成処理を実行する。例えば、情報処理装置100は、事前準備により検索されにくいノードに関する情報を収集する。なお、上述したように情報処理装置100がグラフGR1の生成を行わない場合、手順#0-1は、外部装置や記憶部120からの第1グラフGR1の取得であってもよい。
(第2手法)
手順#2-1:入次数の下限値M、検索数Lを設定
手順#2-2:入次数の少ない順にノードAを1つ取得
手順#2-3:ノードAの入次数が下限値Mと同じならば終了
手順#2-4:ノードAについてL個の近傍ノードを検索しノード集合Uとする
手順#2-5:ノード集合Uから最も遠いノードBを取得し、ノードBからノードAへのエッジを付与し、ノードBをノード集合Uから削除
手順#2-6:手順#2-5を繰り返し、入次数が下限値Mと同じとなったら手順#2-2へ戻る
例えば、情報処理装置100は、手順#2-1では、条件情報記憶部122(図5参照)に記憶された条件LCD1の下限値の値ITH1である「2」を取得し、下限値Mを「2」に設定する。また、例えば、情報処理装置100は、手順#2-1では、生成用情報記憶部123(図3参照)に記憶された検索数Lとして設定される値(設定値)を取得し、検索数Lを取得した設定値に設定する。なお、検索数Lには任意の値が設定可能であり、検索数Lは下限値Mより十分大きな値が設定される。
例えば、情報処理装置100は、手順#2-2では、事前準備で生成したソート情報から入次数の少ない順にノードAを1つ取得する。例えば、情報処理装置100は、手順#2-3では、ノードAの入次数と下限値Mとを比較し、ノードAの入次数と下限値Mとが同じではない場合、手順#2-2~#2-6の処理を繰り返す。一方、情報処理装置100は、ノードAの入次数と下限値Mとが同じである場合、処理を終了する。
例えば、情報処理装置100は、手順#2-4では、ノードAについてL個の近傍ノードを検索しノード集合Uとする。例えば、情報処理装置100は、第1グラフGR1を用いてノードAについてL個の近傍ノードを検索する検索処理を実行し、抽出したノード群をノード集合Uとする。情報処理装置100は、図10に示すような処理手順により、ノードAの近傍に位置するノード(近傍ノード)の探索(検索)を行う。例えば、情報処理装置100は、図10に示すような処理手順によりグラフを探索することにより、検索数(「候補数」ともいう)であるL個の近傍ノードを抽出する。なお、ノード集合Uを抽出するための検索処理については図10以外に任意の手法が採用可能であるが、詳細な説明は省略する。また、情報処理装置100は、処理の高速化のために、第1グラフGR1の各ノードN1、N2をリーフとする木構造の起点用情報(起点用インデックス)を用いて、検索の開始点となるノード(起点ノード)を決定してもよいが、詳細は後述する。
例えば、情報処理装置100は、手順#2-5では、ノード集合Uのうち最も遠いノードBを取得し、ノードBからノードAへのエッジを追加した第2グラフを生成し、ノードBをノード集合Uから削除する。手順#2-6のように、情報処理装置100は、手順#2-5で第2グラフのノードAへのエッジを追加する処理を繰り返し、ノードAの入次数が下限値Mと同じとなった場合、手順#2-2へ戻る。
ここで、図1を用いて、上述した第2手法の処理の一例を説明する。情報処理装置100は、ノードN7を対象ノードとして選択する(ステップS2)。
そして、情報処理装置100は、他のノードからのエッジがノードN7に連結された第2グラフGR21を生成する(ステップS21)。情報処理装置100は、第1グラフGR1中のノード群からL個の近傍ノードを検索する検索処理を実行し、抽出したノード群をノード集合Uのうち最も遠いノードを入力元ノードとして選択し、選択した入力元ノードからノードN7への入力エッジを追加することにより、第2グラフGR21を生成する。
図1では、情報処理装置100は、第1グラフGR1中のノード群からL個の近傍ノードを検索する検索処理を実行し、ノードN1、N2、N5、N6等を含むノード集合Uを抽出する。情報処理装置100は、ノードN1、N2、N5、N6等を含むノード集合Uのうち、最も遠いノードN6を入力元ノードとして選択し、選択したノードN6からノードN7への入力エッジであるエッジE25を追加することにより、第2グラフGR21を生成する。なお、情報処理装置100は、ノードN6からノードN7への入力エッジが第1グラフGR1に既にある場合、ノードN6からノードN7への入力エッジを追加しない。そして、情報処理装置100は、ノード集合UからノードN6を削除する。
また、情報処理装置100は、ノードN6の削除後のノードN1、N2、N5等を含むノード集合Uのうち、最も遠いノードN2を入力元ノードとして選択し、選択したノードN2からノードN7への入力エッジであるエッジE26を追加することにより、第2グラフGR21を生成する。なお、情報処理装置100は、ノードN2からノードN7への入力エッジが第1グラフGR1に既にある場合、ノードN2からノードN7への入力エッジを追加しない。そして、情報処理装置100は、ノード集合UからノードN2を削除する。これにより、情報処理装置100は、空間情報VS1-4に示すように、検索処理により抽出したノード群のうち遠い方のエッジを選択することで、ノードN7への2本の入力エッジであるエッジE25、E26が追加された第2グラフGR21を生成する。
このように、情報処理装置100は、第2手法により検索されにくいノードへの入力エッジを追加することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。なお、図1では説明のため、1つのノードN7を対象ノードとする場合のみを図示し説明したが、情報処理装置100は、入次数が下限値Mよりも小さいノードだけ上述した処理を繰り返すことにより、第2手法により第2グラフGR21を生成する。
そして、情報処理装置100は、第1グラフGR1に第2グラフGR21に含まれるエッジを追加することにより、合成グラフを生成する(ステップS22)。図1では、情報処理装置100は、空間情報VS1-5に示すように、第2グラフGR21に含まれるエッジE25、E26を第1グラフGR1に追加することにより、合成グラフGR22を生成する。これにより、情報処理装置100は、第1グラフにおいて検索されにくいノードへの入力エッジを追加された合成グラフを生成することができ、合成グラフを用いることで検索されにくいノードの存在が抑制されたグラフを用いて検索することが可能となる。
なお、第2手法については、別途グラフを生成し最後にマージする点を明確にした場合、以下に示すような処理であってもよい。この場合、事前準備は、以下のような事前準備#2に示すような手順#5-1~#5-3であってもよい。事前準備#2において、事前準備と同様の点については適宜説明を省略する。
(事前準備#2)
手順#5-1:ANNGを生成し、各ノードの出次数をkとなるようにエッジを削除し、近似k近傍グラフを生成し、生成したグラフをグラフ#1とする
手順#5-2:各ノードの入次数を算出
手順#5-3:入次数の少ない順にノードをソートし、各ノードにはこの時点での入次数を付与
なお、上述した処理は一例に過ぎず、情報処理装置100は、手順#5-1において、ANNGの各ノードをクエリとしてk個の近傍ノードを検索することにより、近似k近傍グラフを生成してもよい。また、情報処理装置100は、手順#5-3では、入次数の少ない順にノードをソートし、各ノードにその時点での入次数を対応付けたソート情報を記憶部120に記憶する。
また、別途グラフを生成し最後にマージする点を明確にした場合、第2手法は、以下のような第2手法#2に示すような手順#6-1~#6-9であってもよい。なお、第2手法#2において、第2手法と同様の点については適宜説明を省略する。情報処理装置100は、以下に示す手順#2-1~#2-6により、第2手法による第2グラフの生成処理を実行する。例えば、情報処理装置100は、事前準備により検索されにくいノードに関する情報を収集する。なお、上述したように情報処理装置100がグラフGR1の生成を行わない場合、手順#5-1は、外部装置や記憶部120からの第1グラフGR1の取得であってもよい。
(第2手法#2)
手順#6-1:入力グラフであるグラフ#1からノードのみのグラフ#2を生成
手順#6-2:入次数の下限値M、検索数Lを設定
手順#6-3:入次数の少ない順にノードAを1つ取得
手順#6-4:手順#5-3においてノードAに付与されている入次数X(事前準備時の入次数)が下限値Mと同じならば手順#6-9へ
手順#6-5:ノードAについてL個の近傍ノードを検索しノード集合Uとする
手順#6-6:ノード集合Uから最も遠いノードBを取得し、グラフ#2におけるノードBからノードAへのエッジを付与し、ノードBをノード集合Uから削除
手順#6-7:ノードAの入次数Xに1加える
手順#6-8:手順#6-6及び手順#6-7を繰り返し、入次数Xが下限値Mと同じとなったら手順#6-3へ戻る
手順#6-9:グラフ#1にグラフ#2をマージする(グラフ#2のエッジをグラフ#1へ追加する)
例えば、情報処理装置100は、手順#6-1では、第1グラフからそのノードのみを反映した第2グラフを生成する。例えば、情報処理装置100は、手順#6-2では、条件情報記憶部122(図5参照)に記憶された条件LCD1の下限値の値ITH1である「2」を取得し、下限値Mを「2」に設定する。例えば、情報処理装置100は、手順#6-3では、事前準備で生成したソート情報から入次数の少ない順にノードAを1つ取得する。例えば、情報処理装置100は、手順#6-4では、ノードAの入次数と下限値Mとを比較し、ノードAの入次数と下限値Mとが同じではない場合、手順#6-3~#6-8の処理を繰り返す。一方、情報処理装置100は、ノードAの入次数と下限値Mとが同じである場合、手順#6-9の処理を実行する。
例えば、情報処理装置100は、手順#6-5では、ノードAについてL個の近傍ノードを検索しノード集合Uとする。例えば、情報処理装置100は、手順#6-6では、ノード集合Uのうち最も遠いノードBを取得し、第2グラフにおけるノードBからノードAへのエッジを追加した第2グラフを生成し、ノードBをノード集合Uから削除する。手順#6-8のように、情報処理装置100は、手順#6-6で第2グラフのノードAへのエッジを追加する処理を繰り返し、ノードAの入次数が下限値Mと同じとなった場合、手順#6-3へ戻る。
〔1-1-3.第3手法〕
次に、第3手法について説明する。なお、第1手法や第2手法と同様の点については適宜説明を省略する。情報処理装置100は、以下に示す手順#3-1~#3-6により、第3手法による第2グラフの生成処理を実行する。例えば、情報処理装置100は、事前準備により検索されにくいノードに関する情報を収集する。なお、上述したように情報処理装置100がグラフGR1の生成を行わない場合、手順#0-1は、外部装置や記憶部120からの第1グラフGR1の取得であってもよい。
(第3手法)
手順#3-1:入次数の下限値M、検索数Lを設定
手順#3-2:入次数の少ない順にノードAを1つ取得
手順#3-3:ノードAの入次数が下限値Mと同じならば終了
手順#3-4:ノードAについてL個の近傍ノードを検索しノード集合Uとする
手順#3-5:ノード集合Uから最も近いノードBを取得しノードBからノードAへのエッジがなければエッジを付与し、ノードBをノード集合Uから削除
手順#3-6:手順#3-5を繰り返し、入次数が下限値Mと同じとなったら手順#3-2へ戻る
例えば、情報処理装置100は、手順#3-1では、条件情報記憶部122(図5参照)に記憶された条件LCD1の下限値の値ITH1である「2」を取得し、下限値Mを「2」に設定する。また、例えば、情報処理装置100は、手順#3-1では、生成用情報記憶部123(図3参照)に記憶された検索数Lとして設定される値(設定値)を取得し、検索数Lを取得した設定値に設定する。
例えば、情報処理装置100は、手順#3-2では、事前準備で生成したソート情報から入次数の少ない順にノードAを1つ取得する。例えば、情報処理装置100は、手順#3-3では、ノードAの入次数と下限値Mとを比較し、ノードAの入次数と下限値Mとが同じではない場合、手順#3-2~#3-6の処理を繰り返す。一方、情報処理装置100は、ノードAの入次数と下限値Mとが同じである場合、処理を終了する。
例えば、情報処理装置100は、手順#3-4では、ノードAについてL個の近傍ノードを検索しノード集合Uとする。例えば、情報処理装置100は、第1グラフGR1を用いてノードAについてL個の近傍ノードを検索する検索処理を実行し、抽出したノード群をノード集合Uとする。情報処理装置100は、図10に示すような処理手順により、ノードAの近傍に位置するノード(近傍ノード)の探索(検索)を行う。例えば、情報処理装置100は、図10に示すような処理手順によりグラフを探索することにより、検索数(候補数)であるL個の近傍ノードを抽出する。
例えば、情報処理装置100は、手順#3-5では、ノード集合Uのうち最も近いノードBを取得し、ノードBからノードAへのエッジがなければ、ノードBからノードAへのエッジを追加した第2グラフを生成し、ノードBをノード集合Uから削除する。なお、情報処理装置100は、手順#3-5では、ノード集合UからランダムにノードBを取得し、ノードBからノードAへのエッジがなければ、ノードBからノードAへのエッジを追加した第2グラフを生成し、ノードBをノード集合Uから削除してもよい。手順#3-6のように、情報処理装置100は、手順#3-5で第2グラフのノードAへのエッジを追加する処理を繰り返し、ノードAの入次数が下限値Mと同じとなった場合、手順#3-2へ戻る。
ここで、図1を用いて、上述した第3手法の処理の一例を説明する。情報処理装置100は、ノードN7を対象ノードとして選択する(ステップS2)。
そして、情報処理装置100は、他のノードからのエッジがノードN7に連結された第2グラフGR31を生成する(ステップS31)。情報処理装置100は、第1グラフGR1中のノード群からL個の近傍ノードを検索する検索処理を実行し、抽出したノード群をノード集合Uのうち最も近いノードを入力元ノードとして選択し、選択した入力元ノードからノードN7への入力エッジを追加することにより、第2グラフGR31を生成する。
図1では、情報処理装置100は、第1グラフGR1中のノード群からL個の近傍ノードを検索する検索処理を実行し、ノードN1、N2、N5、N6等を含むノード集合Uを抽出する。情報処理装置100は、ノードN1、N2、N5、N6等を含むノード集合Uのうち、最も近いノードN1を入力元ノードとして選択し、選択したノードN1からノードN7への入力エッジであるエッジE35を追加することにより、第2グラフGR31を生成する。なお、情報処理装置100は、ノードN1からノードN7への入力エッジが第1グラフGR1に既にある場合、ノードN1からノードN7への入力エッジを追加しない。そして、情報処理装置100は、ノード集合UからノードN1を削除する。
また、情報処理装置100は、ノードN1の削除後のノードN2、N5、N6等を含むノード集合Uのうち、最も近いノードN5を入力元ノードとして選択し、選択したノードN5からノードN7への入力エッジであるエッジE36を追加することにより、第2グラフGR31を生成する。なお、情報処理装置100は、ノードN5からノードN7への入力エッジが第1グラフGR1に既にある場合、ノードN5からノードN7への入力エッジを追加しない。そして、情報処理装置100は、ノード集合UからノードN5を削除する。これにより、情報処理装置100は、空間情報VS1-6に示すように、検索処理により抽出したノード群のうち近い方のエッジを選択することで、ノードN7への2本の入力エッジであるエッジE35、E36が追加された第2グラフGR31を生成する。
このように、情報処理装置100は、第3手法により検索されにくいノードへの入力エッジを追加することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。なお、図1では説明のため、1つのノードN7を対象ノードとする場合のみを図示し説明したが、情報処理装置100は、入次数が下限値Mよりも小さいノードだけ上述した処理を繰り返すことにより、第3手法により第2グラフGR31を生成する。
そして、情報処理装置100は、第1グラフGR1に第2グラフGR31に含まれるエッジを追加することにより、合成グラフを生成する(ステップS32)。図1では、情報処理装置100は、空間情報VS1-7に示すように、第2グラフGR31に含まれるエッジE35、E36を第1グラフGR1に追加することにより、合成グラフGR32を生成する。これにより、情報処理装置100は、第1グラフにおいて検索されにくいノードへの入力エッジを追加された合成グラフを生成することができ、合成グラフを用いることで検索されにくいノードの存在が抑制されたグラフを用いて検索することが可能となる。
〔1-1-4.効果、限定解除等〕
空間内での偏りが大きいデータセットが存在し、このような場合グラフ型のインデックスでは一部のオブジェクトが検索されにくくなる傾向がある。例えば、検索(探索)されにくいオブジェクトはk近傍グラフ等のグラフを生成した場合に入次数が小さいノード等である。このような場合であっても、情報処理装置100は、条件を満たすノードにエッジが連結されたグラフを生成することで、検索(探索)されにくいオブジェクトのエッジを増やして検索され易くすることができる。
なお、上述した内容は一例に過ぎず、情報処理装置100は、任意の情報を適宜用いて第2グラフを生成してもよい。例えば、情報処理装置100は、近似k近傍グラフに限らず、k近傍グラフ等の任意のグラフを第1グラフとして第2グラフを生成してもよい。また、第2グラフを合成する対象は、第1グラフに限らず、任意のグラフであってもよい。例えば、第2グラフを合成する対象は、第1グラフに含まれるエッジを反転させる処理に基づいて生成されたグラフ(「第3グラフ」ともいう)であってもよいが、この点については図8で詳述する。
また、検索されにくさに関する条件は、入次数に限らず、任意の情報に基づく条件であってもよい。また、上述した例では、第1処理及び第2処理での検索処理においては、検索数Lを条件として行う場合を一例として説明したが、検索における条件は検索範囲であってもよい。
また、情報処理装置100は、検索処理においては、図9に示すようなツリー構造(木構造)に関する起点用情報IND11を起点用情報(起点用インデックス)として用いてもよい。図9は、実施形態に係る情報処理に用いる起点用情報の一例を示す図である。例えば、起点用情報IND11は、第1グラフGR1中のノードに到達可能なツリー構造を有するインデックスである。なお、起点用情報IND11のような起点用情報は、情報処理装置100が生成してもよいし、情報処理装置100は、起点用情報を情報提供装置50等の他の外部装置から取得してもよい。
情報処理装置100は、他の外部装置から起点用情報を取得する場合は、他の外部装置へグラフを提供する。そして、情報処理装置100は、グラフを受信した他の外部装置が生成した起点用情報を、他の外部装置から取得する。例えば、情報処理装置100は、情報提供装置50から起点用情報IND11を取得する場合は、情報提供装置50へ第1グラフGR1を送信する。そして、情報処理装置100は、第1グラフGR1を受信した情報提供装置50が生成した起点用情報IND11を、情報提供装置50から取得する。
また、情報処理装置100は、図9中のインデックス情報群GINF11に示すような起点用情報IND11を用いて起点ノードを決定してもよい。図9の例では、情報処理装置100は、起点用情報IND11に基づいて、クエリQE1に対応する起点ノードを決定する。クエリQE1は、新たに追加するオブジェクトに対応するノードや第1グラフGR1を用いた検索を行う対象等であってもよい。すなわち、情報処理装置100は、グラフ生成時や検索時において、起点用情報IND11を用いて、起点ノードを決定する。
具体的には、情報処理装置100は、記憶部120(図3参照)に記憶された起点用情報IND11を用いて、起点ノードを決定する。例えば、情報処理装置100は、クエリQE1に基づいて、起点用情報IND11を上(ルートRT)から下へ辿ることにより、起点用情報IND11の近傍候補となる起点ノードを決定(特定)する。これにより、情報処理装置100は、効率的に検索クエリ(クエリQE1)に対応する起点ノードを決定することができる。例えば、情報処理装置100は、対象ノードであるクエリQE1に対応する適切な起点ノードを高速に決定することができる。
なお、情報処理装置100は、上記に限らず、種々の起点用インデックスを用いてもよい。すなわち、図9の例に示す起点用情報(起点用インデックス)は一例であり、情報処理装置100は、種々の起点用情報を用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いる起点用インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索インデックス(起点用情報)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。なお、上述したような起点用インデックスは一例であり、情報処理装置100は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造の起点用インデックスを生成してもよい。
〔2.情報処理システムの構成〕
図2に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図2は、実施形態に係る情報処理システムの構成例を示す図である。なお、図2に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
情報処理装置100は、データ検索の対象となる一のオブジェクトと、一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第1グラフを用いて、第2グラフを生成する情報処理装置である。すなわち、情報処理装置100は、第1グラフを用いて、第2グラフを生成する生成装置である。例えば、情報処理装置100は、第1グラフ中の複数のノードのうち、一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する。そして、情報処理装置100は、一のノードを第1グラフに追加し、有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
例えば、情報処理装置100は、端末装置からクエリ情報(以下、単に「クエリ」ともいう)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
〔3.情報処理装置の構成〕
次に、図3を用いて、実施形態に係る情報処理装置100の構成について説明する。図3は、実施形態に係る情報処理装置100の構成例を示す図である。図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図2中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図3に示すように、オブジェクト情報記憶部121と、条件情報記憶部122と、生成用情報記憶部123と、第1グラフデータ記憶部124と、第2グラフデータ記憶部125と、第3グラフデータ記憶部126と、合成グラフデータ記憶部127とを有する。
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図4は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図4に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図4の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
例えば、図4の例では、ID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2...」の多次元のベクトル情報が対応付けられることを示す。
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(条件情報記憶部122)
実施形態に係る条件情報記憶部122は、検索されにくさに関する条件に関する各種情報を記憶する。図5は、実施形態に係る条件情報記憶部の一例を示す図である。図5に示す条件情報記憶部122は、「条件ID」、「対象」、「閾値名」、「値」といった項目が含まれる。
「条件ID」は、検索されにくさに関する条件を識別する情報を示す。「対象」は、条件IDにより識別される条件の対象を示す。「閾値名」は、閾値を識別するための情報(名称)を示す。また、「値」は、対応する閾値の具体的な値を示す。
図5の例では、条件ID「LCD1」により識別される条件(条件LCD1)は、ノードへの入力エッジの数(入次数)を対象とする条件であることを示す。条件LCD1は、入次数の下限値として用いられ、その値は「ITH1」であることを示す。すなわち、条件LCD1は、ノードの入次数が下限値未満である場合、そのノードが検索されにくいノードに該当すると判定する条件である。なお、図5に示す例では、「下限値」の値は、「ITH1」といった抽象的な符号を図示するが、「2」や「10」等の具体的な数値であるものとする。
なお、条件情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(生成用情報記憶部123)
実施形態に係る生成用情報記憶部123は、グラフの生成に用いられる各種情報を記憶する。生成用情報記憶部123は、第2グラフの生成に用いられる各種情報を記憶する。例えば、生成用情報記憶部123は、第2グラフの生成において対象ノードへの入力エッジを追加する本数を決定するための情報を記憶する。例えば、生成用情報記憶部123は、対象ノードへの入力エッジとして追加されるエッジの本数を決定するための関数を記憶する。例えば、生成用情報記憶部123は、第2グラフの生成に第1手法、第2手法、第3手法のいずれを用いるかの指定を示す情報を記憶する。
なお、生成用情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、生成用情報記憶部123は、第2手法、第3手法での検索数Lの決定に用いる情報を記憶してもよい。例えば、生成用情報記憶部123は、検索数Lとして設定された値(例えば下限値Mより十分大きい値等)を記憶してもよい。
(第1グラフデータ記憶部124)
実施形態に係る第1グラフデータ記憶部124は、第1グラフデータに関する各種情報を記憶する。例えば、第1グラフデータ記憶部124は、処理対象グラフとして取得したグラフデータを記憶する。例えば、第1グラフデータ記憶部124は、k近傍グラフのグラフデータを記憶する。例えば、第1グラフデータ記憶部124は、近似k近傍グラフのグラフデータを記憶する。例えば、第1グラフデータ記憶部124は、図1中の第1グラフGR1のデータを記憶する。
図6は、実施形態に係るグラフデータ記憶部の一例を示す図である。図6に示す第1グラフデータ記憶部124は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図6の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図6の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
図6の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、図6の例では、グラフデータにおけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。また、ノードN1からは、エッジID「E4」により識別されるエッジ(エッジE4)が、ノードID「N5」により識別されるノード(ノードN5)に連結されることを示す。すなわち、図6の例では、グラフデータにおけるノードN1からはエッジE4によりノードN5へ辿ることができることを示す。
なお、第1グラフデータ記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、第1グラフデータ記憶部124は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、第1グラフデータ記憶部124は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。また、例えば、第1グラフデータ記憶部124は、各ノードへの入力エッジの数を示す情報が記憶されてもよい。
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータは、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータは、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータは、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
(第2グラフデータ記憶部125)
実施形態に係る第2グラフデータ記憶部125は、第2グラフデータに関する各種情報を記憶する。例えば、第2グラフデータ記憶部125は、生成した第2グラフデータを記憶する。第2グラフデータ記憶部125は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
例えば、第2グラフデータ記憶部125は、図1中の第2グラフGR11のデータを記憶する。この場合、第2グラフデータ記憶部125は、ノードN3からノードN7への入力エッジE15等を示す情報を記憶する。例えば、第2グラフデータ記憶部125は、図1中の第2グラフGR21のデータを記憶する。この場合、第2グラフデータ記憶部125は、ノードN2からノードN7への入力エッジE25等を示す情報を記憶する。例えば、第2グラフデータ記憶部125は、図1中の第2グラフGR31のデータを記憶する。この場合、第2グラフデータ記憶部125は、ノードN1からノードN7への入力エッジE35等を示す情報を記憶する。また、第2グラフデータ記憶部125は、図8中の第2グラフGR52のデータを記憶してもよい。
なお、第2グラフデータ記憶部125に記憶される第2グラフのデータ構造については、第1グラフデータ記憶部124に記憶される第1グラフと同様であるため、図示及び詳細な説明は省略する。また、第2グラフデータ記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(第3グラフデータ記憶部126)
実施形態に係る第3グラフデータ記憶部126は、第3グラフデータに関する各種情報を記憶する。例えば、第3グラフデータ記憶部126は、第1グラフに含まれるエッジを反転させる処理に基づいて生成された第3グラフデータを記憶する。第3グラフデータ記憶部126は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
例えば、第3グラフデータ記憶部126は、図8中の第3グラフGR51のデータを記憶する。第3グラフデータ記憶部126は、第1グラフGR1のエッジが反転されたエッジ等を含むグラフの情報を記憶する。
なお、第3グラフデータ記憶部126に記憶される第3グラフのデータ構造については、第1グラフデータ記憶部124に記憶される第1グラフと同様であるため、図示及び詳細な説明は省略する。また、第3グラフデータ記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(合成グラフデータ記憶部127)
実施形態に係る合成グラフデータ記憶部127は、合成グラフデータに関する各種情報を記憶する。例えば、合成グラフデータ記憶部127は、生成した合成グラフデータを記憶する。合成グラフデータ記憶部127は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
合成グラフデータ記憶部127は、第1グラフに第2グラフのエッジが追加された合成グラフを記憶する。例えば、合成グラフデータ記憶部127は、図1中の合成グラフGR12のデータを記憶する。この場合、合成グラフデータ記憶部127は、第1グラフGR1に第2グラフGR11のエッジが追加された情報を記憶する。例えば、合成グラフデータ記憶部127は、図1中の合成グラフGR22のデータを記憶する。この場合、合成グラフデータ記憶部127は、第1グラフGR1に第2グラフGR21のエッジが追加された情報を記憶する。例えば、合成グラフデータ記憶部127は、図1中の合成グラフGR32のデータを記憶する。この場合、合成グラフデータ記憶部127は、第1グラフGR1に第2グラフGR31のエッジが追加された情報を記憶する。
また、合成グラフデータ記憶部127は、第3グラフに第2グラフのエッジが追加された合成グラフを記憶してもよい。例えば、合成グラフデータ記憶部127は、図1中の合成グラフGR53のデータを記憶する。この場合、合成グラフデータ記憶部127は、第3グラフGR51に第2グラフGR52のエッジが追加された情報を記憶する。
なお、合成グラフデータ記憶部127に記憶される合成グラフのデータ構造については、第1グラフデータ記憶部124に記憶される第1グラフと同様であるため、図示及び詳細な説明は省略する。また、合成グラフデータ記憶部127は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(制御部130)
図3の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)やGPU(Graphics Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図3に示すように、制御部130は、取得部131と、選択部132と、決定部133と、生成部134と、検索部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、条件情報記憶部122や、生成用情報記憶部123や、第1グラフデータ記憶部124や、第2グラフデータ記憶部125や、第3グラフデータ記憶部126や、合成グラフデータ記憶部127等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。
取得部131は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する。取得部131は、条件を示す条件情報を取得する。取得部131は、k近傍グラフである第1グラフを取得する。取得部131は、近似k近傍グラフである第1グラフを取得する。
取得部131は、第1グラフデータを第1グラフデータ記憶部124から取得する。例えば、情報処理装置100は、図1中の第1グラフGR1を取得する。例えば、情報処理装置100は、情報提供装置50等の外部装置から第1グラフGR1等の第1グラフデータを取得してもよい。
例えば、取得部131は、検索クエリに関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。
(選択部132)
選択部132は、各種情報を選択する。選択部132は、各種情報を抽出する。選択部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を選択する。選択部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。
選択部132は、複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する。選択部132は、複数のノードのうち、条件情報が示す条件を満たす対象ノードを選択する。選択部132は、複数のノードのうち、連結されたエッジの数に関する条件を満たすノードを対象ノードとして選択する。
選択部132は、複数のノードのうち、他のエッジから入力される入力エッジの数である入次数に関する条件を満たすノードを対象ノードとして選択する。選択部132は、複数のノードのうち、入次数が下限値未満である条件を満たすノードを対象ノードとして選択する。
(決定部133)
決定部133は、各種情報を決定する。決定部133は、各種情報を判定する。決定部133は、各種情報を変更する。決定部133は、各種情報を更新する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を判定する。
決定部133は、対象ノードの入次数と下限値とに基づいて追加数を決定する。決定部133は、下限値から対象ノードの入次数を減算した値を追加数に決定する。
(生成部134)
生成部134は、各種情報を生成する。生成部134は、各種情報を変更する。生成部134は、各種情報を更新する。例えば、生成部134は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部134は、オブジェクト情報記憶部121や、条件情報記憶部122や、生成用情報記憶部123や、第1グラフデータ記憶部124や、第2グラフデータ記憶部125や、第3グラフデータ記憶部126や、合成グラフデータ記憶部127等から各種情報を生成する。
例えば、生成部134は、第1グラフデータ記憶部124に記憶された第1グラフと、第2グラフデータ記憶部125に記憶された第2グラフとを合成することにより、合成グラフを生成し、生成した合成グラフを合成グラフデータ記憶部127に登録する。例えば、生成部134は、第1グラフに、第2グラフのエッジと追加することにより合成グラフを生成し、生成した合成グラフを合成グラフデータ記憶部127に登録する。
例えば、生成部134は、第3グラフデータ記憶部126に記憶された第3グラフと、第2グラフデータ記憶部125に記憶された第2グラフとを合成することにより、合成グラフを生成し、生成した合成グラフを合成グラフデータ記憶部127に登録する。例えば、生成部134は、第3グラフに、第2グラフのエッジと追加することにより合成グラフを生成し、生成した合成グラフを合成グラフデータ記憶部127に登録する。
生成部134は、複数のノードのうち対象ノード以外の他のノードからのエッジが対象ノードに連結された第2グラフを生成する。生成部134は、対象ノードの入次数に基づいて決定される追加数の入力エッジを対象ノードへ連結した第2グラフを生成する。生成部134は、決定部133により決定された追加数の入力エッジを対象ノードへ連結した第2グラフを生成する。
生成部134は、所定の基準に基づいて追加数のノードを入力元ノードとして選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。生成部134は、ランダムに追加数の入力元ノードを選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
生成部134は、検索処理により抽出したノード群のうち、追加数の入力元ノードを選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。生成部134は、下限値より多い数のノードを含むノード群のうち、追加数の入力元ノードを選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
生成部134は、ノード群のうち、対象ノードから遠い方から追加数のノードを入力元ノードとして選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。生成部134は、ノード群のうち、対象ノードから近い方から追加数のノードを入力元ノードとして選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
生成部134は、第1グラフに第2グラフに含まれるエッジを追加することにより、合成グラフを生成する。生成部134は、第1グラフに含まれるエッジを反転させる処理に基づいて生成された第3グラフに、第2グラフに含まれるエッジを追加することにより、合成グラフを生成する。
生成部134は、図10に示すような検索処理により、第1グラフを探索することにより、近傍ノードを抽出する。生成部134は、第1グラフを探索することにより、第1グラフに含まれる各ノードに対応する近傍ノードを抽出する。生成部134は、第1グラフを探索することにより、候補数(検索数L等)の近傍ノードを抽出する。生成部134は、図10に示すような検索処理により、第1グラフを探索することにより、近傍ノードを抽出する。
なお、生成部134は、検索部135に要求することにより、検索部135に情報を探索させ、検索部135が探索した探索結果を用いてもよい。生成部134は、生成部134は、検索部135が探索した探索結果から情報を抽出してもよい。生成部134は、第2グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、第2グラフに含まれる各ノードに対応する近傍ノードを抽出する。
例えば、生成部134は、図10に示すような処理手順によりグラフを探索することにより、候補数の近傍ノードを抽出する。生成部134は、図10に示すような処理手順により第1グラフGR1を探索し、対象ノードの近傍ノードとして、候補数のノードを含むノード群を抽出する。
(検索部135)
検索部135は、オブジェクトに関する検索サービスを提供する。検索部135は、各種情報を探索する。検索部135は、各種情報を検索する。例えば、検索部135は、グラフデータを探索することにより、オブジェクトを検索する。例えば、検索部135は、取得部131により取得されたクエリが取得された場合、グラフデータを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索部135は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、検索部135は、図10に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。なお、検索部135は、検索サービスを提供しない場合、検索部135を有しなくてもよい。
(提供部136)
提供部136は、各種情報を提供する。例えば、提供部136は、端末装置10や情報提供装置50に各種情報を提供する。例えば、提供部136は、クエリに対応するオブジェクトIDを検索結果として提供する。例えば、提供部136は、検索部135により検索されたオブジェクトIDを情報提供装置50へ提供する。例えば、提供部136は、検索部135が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部136は、検索部135により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。
また、提供部136は、生成部134により生成された第2グラフデータを情報提供装置50等の外部の情報処理装置へ提供してもよい。提供部136は、生成部134により生成された合成グラフデータを情報提供装置50等の外部の情報処理装置へ提供してもよい。
〔4.情報処理のフロー〕
次に、図7を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図7は、実施形態に係る情報処理の一例を示すフローチャートである。
図7に示すように、情報処理装置100は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する(ステップS101)。例えば、情報処理装置100は、情報提供装置50か第1グラフを取得する。
そして、情報処理装置100は、複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する(ステップS102)。例えば、情報処理装置100は、第1グラフの複数のノードのうち、入次数が下限値未満のノードを対象ノードとして選択する。
そして、情報処理装置100は、複数のノードのうち対象ノード以外の他のノードからのエッジが対象ノードに連結された第2グラフを生成する(ステップS103)。例えば、情報処理装置100は、所定の基準に基づいて決定した入力元ノードからの入力エッジを対象エッジに連結された第2グラフを生成する。
〔5.他の処理例〕
上述したように、第2グラフを合成する対象は、第1グラフに限らず、任意のグラフであってもよい。例えば、第2グラフを合成する対象は、第1グラフに含まれるエッジを反転させる処理に基づいて生成された第3グラフ(「ONNG」ともいう)であってもよい。この点について、図8等を参照して以下説明する。図8は、実施形態に係る情報処理の他の一例を示す図である。例えば、情報処理装置100は、上述した事前準備後にONNGを第3グラフとして生成し、その第3グラフに対し、第1手法~第3手法で生成した第2グラフを合成してもよい。ONNGの場合には入次数が一定になるので、ONNG前のANNGまたはk近傍グラフ等の入次数に基づいて付与エッジ数(追加数)を決定する。なお、図8で示す処理に関する手法(第4手法)について、上述した内容と同様の点については適宜説明を省略する。また、図8は、ONNGにおけるエッジの反転を説明するための簡易な例であり、第3グラフは図8に示す例に限られない。
例えば、情報処理装置100は、ONNG等の第3グラフを対象とする場合、上述した事前準備#2及び第2手法#2により合成グラフを生成してもよい。図8では、情報処理装置100は、空間情報VS1-11に示すように、第1グラフGR1に含まれるエッジE1~E14等を反転させる処理により第3グラフGR51を生成する(ステップS51)。図8では、第1グラフGR1中のエッジと第3グラフGR51のエッジとの対応関係を明示するために「E」を「R」に変換した符号を付す。例えば、第3グラフGR51中のエッジR1は、第1グラフGR1中のエッジE1の向きが反転されたエッジである。なお、図8では、説明のために、第1グラフGR1に含まれるエッジE1~E14等を反転させる処理(反転処理)のみを行ったグラフを第3グラフGR51として用いる場合を示すが、情報処理装置100は、反転処理以外にもエッジを調整する処理を行ってもよい。
情報処理装置100は、他のノードからのエッジがノードN7に連結された第2グラフGR52を生成する(ステップS52)。図8では情報処理装置100は、空間情報VS1-12に示すように、検索処理により抽出したノード群のうち遠い方のエッジを選択することで、ノードN7への2本の入力エッジであるエッジE55、E56が追加された第2グラフGR52を生成する。
そして、情報処理装置100は、第3グラフGR51に第2グラフGR52に含まれるエッジを追加することにより、合成グラフを生成する(ステップS53)。図8では、情報処理装置100は、空間情報VS1-13に示すように、第2グラフGR52に含まれるエッジE55、E56を第3グラフGR51に追加することにより、合成グラフGR53を生成する。これにより、情報処理装置100は、第1グラフにおいて検索されにくいノードへの入力エッジを追加された合成グラフを生成することができ、合成グラフを用いることで検索されにくいノードの存在が抑制されたグラフを用いて検索することが可能となる。
〔6.検索例〕
ここで、上述したグラフデータを用いた検索の一例を示す。なお、生成したグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図10を一例として説明する。図10は、グラフデータを用いた検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100の検索部135によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。例えば、情報処理装置100(例えば検索部135)が検索処理を行う。以下で説明する処理の検索クエリは、対象ノードやユーザが指定したオブジェクト等であってもよい。
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、第1グラフGR1等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。
次に、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)のみがSの要素の場合には、結果的にルートノードがオブジェクトsとして抽出される。次に、情報処理装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS305)、処理を終了する。
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
次に、情報処理装置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の判定(処理)を行う。
次に、情報処理装置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の判定(処理)を行う。
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、候補数であってもよい。例えば、ks=2等の任意の値であってもよい。オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。
次に、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
そして、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えた場合(ステップS315:Yes)、情報処理装置100は、オブジェクト集合Sが空集合であるか否かを判定する(ステップS316)。オブジェクト集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、オブジェクト集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、オブジェクト集合Rを出力し、処理を終了する(ステップS317)。例えば、情報処理装置100は、オブジェクト集合Rに含まれる候補数のオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応する近傍ノードとして抽出する。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応するノード群として抽出する。また、例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
〔7.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、選択部132と、生成部134とを有する。取得部131は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する。選択部132は、複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する。生成部134は、複数のノードのうち対象ノード以外の他のノードからのエッジが対象ノードに連結された第2グラフを生成する。
このように、実施形態に係る情報処理装置100は、検索されにくさに関する条件を満たす対象ノード以外の他のノードからのエッジが対象ノードに連結された第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、取得部131は、条件を示す条件情報を取得する。選択部132は、複数のノードのうち、条件情報が示す条件を満たす対象ノードを選択する。
これにより、実施形態に係る情報処理装置100は、複数のノードのうち、条件情報が示す条件を満たす対象ノードを選択して第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、選択部132は、複数のノードのうち、連結されたエッジの数に関する条件を満たすノードを対象ノードとして選択する。
これにより、実施形態に係る情報処理装置100は、複数のノードのうち、連結されたエッジの数に関する条件を満たすノードを対象ノードとして選択して第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、選択部132は、複数のノードのうち、他のエッジから入力される入力エッジの数である入次数に関する条件を満たすノードを対象ノードとして選択する。
これにより、実施形態に係る情報処理装置100は、複数のノードのうち、他のエッジから入力される入力エッジの数である入次数に関する条件を満たすノードを対象ノードとして選択して第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、選択部132は、複数のノードのうち、入次数が下限値未満である条件を満たすノードを対象ノードとして選択する。
これにより、実施形態に係る情報処理装置100は、複数のノードのうち、入次数が下限値未満である条件を満たすノードを対象ノードとして選択して第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、対象ノードの入次数に基づいて決定される追加数の入力エッジを対象ノードへ連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、対象ノードの入次数に基づいて決定される追加数の入力エッジを対象ノードへ連結した第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100は、決定部133を有する。決定部133は、対象ノードの入次数と下限値とに基づいて追加数を決定する。生成部134は、決定部133により決定された追加数の入力エッジを対象ノードへ連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、対象ノードの入次数と下限値とに基づいて追加数を決定することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、下限値から対象ノードの入次数を減算した値を追加数に決定する。
これにより、実施形態に係る情報処理装置100は、下限値から対象ノードの入次数を減算した値を追加数に決定することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、所定の基準に基づいて追加数のノードを入力元ノードとして選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、選択した入力元ノードの各々から対象ノードへ入力エッジを連結することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、ランダムに追加数の入力元ノードを選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、ランダムに選択した入力元ノードの各々から対象ノードへ入力エッジを連結することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、検索処理により抽出したノード群のうち、追加数の入力元ノードを選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、検索処理により抽出したノード群から選択した入力元ノードの各々から対象ノードへ入力エッジを連結することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、下限値より多い数のノードを含むノード群のうち、追加数の入力元ノードを選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、下限値より多い数のノードを含むノード群から選択した入力元ノードの各々から対象ノードへ入力エッジを連結することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、ノード群のうち、対象ノードから遠い方から追加数のノードを入力元ノードとして選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、対象ノードから遠い方から追加数の入力元ノードの各々から対象ノードへ入力エッジを連結することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、ノード群のうち、対象ノードから近い方から追加数のノードを入力元ノードとして選択し、入力元ノードの各々から対象ノードへ入力エッジを連結することにより、第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、対象ノードから近い方から追加数の入力元ノードの各々から対象ノードへ入力エッジを連結することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、第1グラフに第2グラフに含まれるエッジを追加することにより、合成グラフを生成する。
これにより、実施形態に係る情報処理装置100は、第1グラフに第2グラフに含まれるエッジを追加することにより、合成グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、第1グラフに含まれるエッジを反転させる処理に基づいて生成された第3グラフに、第2グラフに含まれるエッジを追加することにより、合成グラフを生成する。
これにより、実施形態に係る情報処理装置100は、第3グラフに第2グラフに含まれるエッジを追加することにより、合成グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、取得部131は、k近傍グラフである第1グラフを取得する。
これにより、実施形態に係る情報処理装置100は、複数のノードのうち、k近傍グラフを対象として対象ノードを選択して第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
また、実施形態に係る情報処理装置100において、取得部131は、近似k近傍グラフである第1グラフを取得する。
これにより、実施形態に係る情報処理装置100は、複数のノードのうち、近似k近傍グラフを対象として対象ノードを選択して第2グラフを生成することにより、条件を満たすノードにエッジが連結されたグラフを生成することができる。
〔8.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば図11に示すような構成のコンピュータ1000によって実現される。図11は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔9.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
1 情報処理システム
100 情報処理装置
121 オブジェクト情報記憶部
122 条件情報記憶部
123 生成用情報記憶部
124 第1グラフデータ記憶部
125 第2グラフデータ記憶部
126 第3グラフデータ記憶部
127 合成グラフデータ記憶部
130 制御部
131 取得部
132 選択部
133 決定部
134 生成部
135 検索部
136 提供部
10 端末装置
50 情報提供装置
N ネットワーク

Claims (20)

  1. データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する取得部と、
    前記複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する選択部と、
    前記複数のノードのうち前記対象ノード以外の他のノードからのエッジが前記対象ノードに連結された第2グラフを生成する生成部と、
    を備えることを特徴とする情報処理装置。
  2. 前記取得部は、
    前記条件を示す条件情報を取得し、
    前記選択部は、
    前記複数のノードのうち、前記条件情報が示す前記条件を満たす前記対象ノードを選択する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記選択部は、
    前記複数のノードのうち、連結されたエッジの数に関する前記条件を満たすノードを前記対象ノードとして選択する
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記選択部は、
    前記複数のノードのうち、他のエッジから入力される入力エッジの数である入次数に関する前記条件を満たすノードを前記対象ノードとして選択する
    ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記選択部は、
    前記複数のノードのうち、前記入次数が下限値未満である前記条件を満たすノードを前記対象ノードとして選択する
    ことを特徴とする請求項4に記載の情報処理装置。
  6. 前記生成部は、
    前記対象ノードの前記入次数に基づいて決定される追加数の入力エッジを前記対象ノードへ連結した前記第2グラフを生成する
    ことを特徴とする請求項5に記載の情報処理装置。
  7. 前記対象ノードの前記入次数と前記下限値とに基づいて前記追加数を決定する決定部、
    をさらに備え、
    前記生成部は、
    前記決定部により決定された前記追加数の入力エッジを前記対象ノードへ連結した前記第2グラフを生成する
    ことを特徴とする請求項6に記載の情報処理装置。
  8. 前記決定部は、
    前記下限値から前記対象ノードの前記入次数を減算した値を前記追加数に決定する
    ことを特徴とする請求項7に記載の情報処理装置。
  9. 前記生成部は、
    所定の基準に基づいて前記追加数のノードを入力元ノードとして選択し、前記入力元ノードの各々から前記対象ノードへ入力エッジを連結することにより、前記第2グラフを生成する
    ことを特徴とする請求項6に記載の情報処理装置。
  10. 前記生成部は、
    ランダムに前記追加数の前記入力元ノードを選択し、前記入力元ノードの各々から前記対象ノードへ入力エッジを連結することにより、前記第2グラフを生成する
    ことを特徴とする請求項9に記載の情報処理装置。
  11. 前記生成部は、
    検索処理により抽出したノード群のうち、前記追加数の前記入力元ノードを選択し、前記入力元ノードの各々から前記対象ノードへ入力エッジを連結することにより、前記第2グラフを生成する
    ことを特徴とする請求項9に記載の情報処理装置。
  12. 前記生成部は、
    前記下限値より多い数のノードを含む前記ノード群のうち、前記追加数の前記入力元ノードを選択し、前記入力元ノードの各々から前記対象ノードへ入力エッジを連結することにより、前記第2グラフを生成する
    ことを特徴とする請求項11に記載の情報処理装置。
  13. 前記生成部は、
    前記ノード群のうち、前記対象ノードから遠い方から前記追加数のノードを前記入力元ノードとして選択し、前記入力元ノードの各々から前記対象ノードへ入力エッジを連結することにより、前記第2グラフを生成する
    ことを特徴とする請求項11に記載の情報処理装置。
  14. 前記生成部は、
    前記ノード群のうち、前記対象ノードから近い方から前記追加数のノードを前記入力元ノードとして選択し、前記入力元ノードの各々から前記対象ノードへ入力エッジを連結することにより、前記第2グラフを生成する
    ことを特徴とする請求項11に記載の情報処理装置。
  15. 前記生成部は、
    前記第1グラフに前記第2グラフに含まれるエッジを追加することにより、合成グラフを生成する
    ことを特徴とする請求項1に記載の情報処理装置。
  16. 前記生成部は、
    前記第1グラフに含まれるエッジを反転させる処理に基づいて生成された第3グラフに、前記第2グラフに含まれるエッジを追加することにより、合成グラフを生成する
    ことを特徴とする請求項1に記載の情報処理装置。
  17. 前記取得部は、
    k近傍グラフである前記第1グラフを取得する
    ことを特徴とする請求項1に記載の情報処理装置。
  18. 前記取得部は、
    近似k近傍グラフである前記第1グラフを取得する
    ことを特徴とする請求項1に記載の情報処理装置。
  19. コンピュータが実行する情報処理方法であって、
    データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する取得工程と、
    前記複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する選択工程と、
    前記複数のノードのうち前記対象ノード以外の他のノードからのエッジが前記対象ノードに連結された第2グラフを生成する生成工程と、
    を含むことを特徴とする情報処理方法。
  20. データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジで連結された第1グラフを取得する取得手順と、
    前記複数のノードのうち、検索されにくさに関する条件を満たすノードを対象ノードとして選択する選択手順と、
    前記複数のノードのうち前記対象ノード以外の他のノードからのエッジが前記対象ノードに連結された第2グラフを生成する生成手順と、
    をコンピュータに実行させることを特徴とする情報処理プログラム。
JP2022181840A 2022-11-14 2022-11-14 情報処理装置、情報処理方法、及び情報処理プログラム Pending JP2024071095A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022181840A JP2024071095A (ja) 2022-11-14 2022-11-14 情報処理装置、情報処理方法、及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022181840A JP2024071095A (ja) 2022-11-14 2022-11-14 情報処理装置、情報処理方法、及び情報処理プログラム

Publications (1)

Publication Number Publication Date
JP2024071095A true JP2024071095A (ja) 2024-05-24

Family

ID=91129164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022181840A Pending JP2024071095A (ja) 2022-11-14 2022-11-14 情報処理装置、情報処理方法、及び情報処理プログラム

Country Status (1)

Country Link
JP (1) JP2024071095A (ja)

Similar Documents

Publication Publication Date Title
CN111460311A (zh) 基于字典树的搜索处理方法、装置、设备和存储介质
US11809494B2 (en) Information processing apparatus and information processing method
JP7080803B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
Zhao et al. Approximate k-NN graph construction: a generic online approach
JP6311000B1 (ja) 生成装置、生成方法、及び生成プログラム
Guyet et al. Incremental mining of frequent serial episodes considering multiple occurrences
CN113918807A (zh) 数据推荐方法、装置、计算设备及计算机可读存储介质
JP6959164B2 (ja) 生成装置、生成方法、及び生成プログラム
JP5224537B2 (ja) 局所性検知可能ハッシュの構築装置、類似近傍検索処理装置及びプログラム
JP2018156458A (ja) 生成装置、生成方法、及び生成プログラム
JP7353737B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2024071095A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2020184235A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP7121706B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2018195156A (ja) 生成装置、生成方法、及び生成プログラム
JP7130019B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2020187644A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP7388661B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
KR102062139B1 (ko) 지능형 자료구조 기반의 데이터 처리 방법 및 그를 위한 장치
JP2019194815A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP6933636B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP7414906B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2019128796A (ja) 表示プログラム、表示方法、及び表示装置
JP7109522B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP7354188B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20231026