JP2023013868A - Information processing device, information processing method, and information processing program - Google Patents

Information processing device, information processing method, and information processing program Download PDF

Info

Publication number
JP2023013868A
JP2023013868A JP2021118331A JP2021118331A JP2023013868A JP 2023013868 A JP2023013868 A JP 2023013868A JP 2021118331 A JP2021118331 A JP 2021118331A JP 2021118331 A JP2021118331 A JP 2021118331A JP 2023013868 A JP2023013868 A JP 2023013868A
Authority
JP
Japan
Prior art keywords
information
information processing
blob
objects
groups
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.)
Granted
Application number
JP2021118331A
Other languages
Japanese (ja)
Other versions
JP7471264B2 (en
Inventor
雅二郎 岩崎
Masajiro Iwasaki
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.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan Corp
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 Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2021118331A priority Critical patent/JP7471264B2/en
Publication of JP2023013868A publication Critical patent/JP2023013868A/en
Application granted granted Critical
Publication of JP7471264B2 publication Critical patent/JP7471264B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

To generate a group in which objects are classified.SOLUTION: An information processing device according to the present application comprises an acquisition unit and a generation unit. The acquisition unit acquires object information indicating a plurality of objects serving as a data search target. The generation unit generates first group information indicating a plurality of first groups in which the plurality of objects are classified, and second group information indicating a plurality of second groups, which are groups in the classification different from the plurality of first groups and in which objects belonging to the same first group in the plurality of first groups among the plurality of objects are classified into the same group, on the basis of the object information acquired by the acquisition unit.SELECTED DRAWING: Figure 24

Description

本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。 The present invention relates to an information processing device, an information processing method, and an information processing program.

従来、種々の情報を探索(検索)する技術が提供されている。例えば、検索対象に対応するノードがエッジにより連結されたグラフを生成し、生成したグラフを用いて検索を行う技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。 Conventionally, techniques for searching (retrieving) various types of information have been provided. For example, there is provided a technique of generating a graph in which nodes corresponding to search targets are connected by edges and performing a search using the generated graph. Also, such a technique is used, for example, for image retrieval.

特許第6293335号公報Japanese Patent No. 6293335 特許第6300982号公報Japanese Patent No. 6300982 特許第6311000号公報Japanese Patent No. 6311000

岩崎雅二郎 "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索", 情報処理学会論文誌, 2011/2, Vol. 52, No. 2. pp.817-828.Masajiro Iwasaki, "Neighborhood Retrieval Using Approximate k-Nearest Neighbor Graph Using Tree Structured Index", Transactions of Information Processing Society of Japan, 2011/2, Vol. 52, No. 2. pp.817-828.

しかしながら、上記の従来技術では、検索処理の効率化の点では改善の余地がある。例えば、上記の従来技術では、グラフのエッジ数等を調整したりして、効率的な検索ができるグラフに変更することにより、検索処理の時間削減等の効率化を行っているが、グラフの変更により検索処理の効率化を図るには限界がある。そのため、例えば検索処理の高速化等、効率的な検索処理に利用可能な情報を生成するために、検索対象となるオブジェクトを分類するグループの概念を導入し、オブジェクトを分類するグループを生成することが望まれている。 However, the conventional technology described above has room for improvement in terms of efficiency of search processing. For example, in the conventional technology described above, the number of edges in the graph is adjusted to change the graph to a graph that enables efficient searches, thereby improving efficiency such as reducing the search processing time. There is a limit to improving the efficiency of search processing by modification. Therefore, in order to generate information that can be used for efficient search processing, such as speeding up search processing, it is necessary to introduce the concept of groups that classify objects to be searched, and generate groups that classify objects. is desired.

本願は、上記に鑑みてなされたものであって、オブジェクトを分類するグループを生成する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。 The present application has been made in view of the above, and aims to provide an information processing apparatus, an information processing method, and an information processing program for generating groups for classifying objects.

本願に係る情報処理装置は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得部と、前記取得部により取得された前記オブジェクト情報に基づいて、前記複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報と、前記複数の第1グループとは異なる分類となるグループであって、前記複数のオブジェクトのうち、前記複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループを示す第2グループ情報とを生成する生成部と、を備えたことを特徴とする。 An information processing apparatus according to the present application includes an acquisition unit that acquires object information indicating a plurality of objects to be searched for data; and first group information indicating a first group of the plurality of first groups, and an object belonging to the same first group in the plurality of first groups among the plurality of objects, which is a group classified differently from the plurality of first groups. and a generation unit that generates second group information indicating a plurality of second groups that are groups classified into the same group.

実施形態の一態様によれば、オブジェクトを分類するグループを生成することができるという効果を奏する。 According to one aspect of the embodiment, it is possible to generate groups for classifying objects.

図1は、第1の実施形態に係る情報処理の一例を示す図である。FIG. 1 is a diagram illustrating an example of information processing according to the first embodiment. 図2は、第1の実施形態に係るデータの一例を示す図である。FIG. 2 is a diagram illustrating an example of data according to the first embodiment; 図3は、第1の実施形態に係るデータの一例を示す図である。FIG. 3 is a diagram illustrating an example of data according to the first embodiment; 図4は、第1の実施形態に係る情報処理システムの構成例を示す図である。FIG. 4 is a diagram illustrating a configuration example of an information processing system according to the first embodiment. 図5は、第1の実施形態に係る情報処理装置の構成例を示す図である。FIG. 5 is a diagram illustrating a configuration example of an information processing apparatus according to the first embodiment; 図6は、第1の実施形態に係るオブジェクト情報記憶部の一例を示す図である。6 is a diagram illustrating an example of an object information storage unit according to the first embodiment; FIG. 図7は、第1の実施形態に係るグラフ情報記憶部の一例を示す図である。7 is a diagram illustrating an example of a graph information storage unit according to the first embodiment; FIG. 図8は、第1の実施形態に係る量子化情報記憶部の一例を示す図である。8 is a diagram illustrating an example of a quantization information storage unit according to the first embodiment; FIG. 図9は、第1の実施形態に係るコードブック情報記憶部の一例を示す図である。9 is a diagram illustrating an example of a codebook information storage unit according to the first embodiment; FIG. 図10は、第1の実施形態に係る情報処理の一例を示すフローチャートである。FIG. 10 is a flowchart illustrating an example of information processing according to the first embodiment. 図11は、第1の実施形態に係る検索処理の一例を示すフローチャートである。FIG. 11 is a flowchart illustrating an example of search processing according to the first embodiment. 図12は、第2の実施形態に係る情報処理の一例を示す図である。FIG. 12 is a diagram illustrating an example of information processing according to the second embodiment. 図13は、第2の実施形態に係る情報処理装置の構成例を示す図である。FIG. 13 is a diagram illustrating a configuration example of an information processing apparatus according to the second embodiment. 図14は、第2の実施形態に係る量子化情報記憶部の一例を示す図である。14 is a diagram illustrating an example of a quantization information storage unit according to the second embodiment; FIG. 図15は、第2の実施形態に係るブロブ情報記憶部の一例を示す図である。FIG. 15 is a diagram illustrating an example of a blob information storage unit according to the second embodiment; 図16は、第2の実施形態に係る検索処理の一例を示すフローチャートである。FIG. 16 is a flowchart illustrating an example of search processing according to the second embodiment. 図17は、変形例に係る情報処理の一例を示す図である。FIG. 17 is a diagram illustrating an example of information processing according to a modification; 図18は、変形例に係るグラフ情報記憶部の一例を示す図である。18 is a diagram illustrating an example of a graph information storage unit according to a modification; FIG. 図19は、変形例に係る検索処理の一例を示すフローチャートである。FIG. 19 is a flowchart illustrating an example of search processing according to the modification. 図20は、変形例に係る情報処理の他の一例を示す図である。FIG. 20 is a diagram illustrating another example of information processing according to the modification. 図21は、ブロブ情報の生成処理の一例を示す図である。FIG. 21 is a diagram illustrating an example of blob information generation processing. 図22は、変形例に係る情報処理の一例を示すフローチャートである。FIG. 22 is a flowchart illustrating an example of information processing according to the modification. 図23は、第3の実施形態に係る情報処理の一例を示す図である。FIG. 23 is a diagram illustrating an example of information processing according to the third embodiment; 図24は、第3の実施形態に係る情報処理装置の構成例を示す図である。FIG. 24 is a diagram illustrating a configuration example of an information processing apparatus according to the third embodiment; 図25は、第3の実施形態に係るブロブ連結グラフ情報記憶部の一例を示す図である。25 is a diagram illustrating an example of a blob connection graph information storage unit according to the third embodiment; FIG. 図26は、第3の実施形態に係る情報処理の一例を示すフローチャートである。FIG. 26 is a flowchart illustrating an example of information processing according to the third embodiment. 図27は、第3の実施形態に係る検索処理の一例を示すフローチャートである。FIG. 27 is a flowchart illustrating an example of search processing according to the third embodiment. 図28は、第3の実施形態に係る検索処理の一例を示すフローチャートである。FIG. 28 is a flowchart illustrating an example of search processing according to the third embodiment. 図29は、変形例に係るブロブ連結グラフ情報の一例を示す図である。FIG. 29 is a diagram illustrating an example of blob connection graph information according to a modification. 図30は、変形例に係るブロブ情報記憶部の一例を示す図である。30 is a diagram illustrating an example of a blob information storage unit according to a modification; FIG. 図31は、変形例に係るブロブ連結グラフ情報記憶部の一例を示す図である。31 is a diagram illustrating an example of a blob connection graph information storage unit according to a modification; FIG. 図32は、第4の実施形態に係る情報処理の一例を示す図である。FIG. 32 is a diagram illustrating an example of information processing according to the fourth embodiment; 図33は、第4の実施形態に係る情報処理装置の構成例を示す図である。FIG. 33 is a diagram illustrating a configuration example of an information processing apparatus according to the fourth embodiment; 図34は、第4の実施形態に係る量子化に関する概念図である。FIG. 34 is a conceptual diagram regarding quantization according to the fourth embodiment. 図35は、第4の実施形態に係る転置インデックスの一例を示す図である。FIG. 35 is a diagram illustrating an example of a transposed index according to the fourth embodiment; 図36は、第4の実施形態に係る転置インデックスの具体例を示す図である。FIG. 36 is a diagram showing a specific example of transposed indexes according to the fourth embodiment. 図37は、第4の実施形態に係る情報処理の一例を示すフローチャートである。FIG. 37 is a flow chart showing an example of information processing according to the fourth embodiment. 図38は、第4の実施形態に係る情報処理の一例を示すフローチャートである。FIG. 38 is a flow chart showing an example of information processing according to the fourth embodiment. 図39は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。FIG. 39 is a hardware configuration diagram showing an example of a computer that implements the functions of the information processing device.

以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。 Hereinafter, modes for implementing an information processing apparatus, an information processing method, and an information processing program (hereinafter referred to as "embodiments") according to the present application will be described in detail with reference to the drawings. The information processing apparatus, information processing method, and information processing program according to the present application are not limited to this embodiment. Also, in each of the following embodiments, the same parts are denoted by the same reference numerals, and overlapping descriptions are omitted.

(実施形態)
〔1.第1の実施形態〕
〔1-1.情報処理〕
図1を用いて、第1の実施形態に係る情報処理の一例について説明する。図1は、第1の実施形態に係る情報処理の一例を示す図である。情報処理装置100は、データ検索の対象となる複数のオブジェクトをグラフ構造化したグラフインデックス(単に「グラフ」ともいう)を用いた検索処理を実行する。図1では、情報処理装置100がデータ検索の対象であるオブジェクトがベクトル化された各ベクトルに対応するノードがエッジで連結されたグラフを用いて近傍検索を行う場合の検索処理の一部を示す。情報処理装置100は、グラフの各ノードを検索対象のオブジェクトとして、グラフを辿って与えられた検索クエリ(ベクトル)の近傍のノードを探索する。情報処理装置100は、検索処理により、抽出する近傍のノードの数として指定された所定数(以下「検索数」ともいう)のノードを、検索クエリの近傍のノードとして抽出する。以下では、画像情報をデータ検索の対象とした場合を一例として説明するが、データ検索の対象は、動画情報や音声情報等の種々の対象であってもよい。
(embodiment)
[1. First Embodiment]
[1-1. information processing]
An example of information processing according to the first embodiment will be described with reference to FIG. FIG. 1 is a diagram illustrating an example of information processing according to the first embodiment. The information processing apparatus 100 executes search processing using a graph index (simply referred to as a “graph”) in which a plurality of objects to be searched for data are structured in a graph. FIG. 1 shows a part of search processing when the information processing apparatus 100 performs neighborhood search using a graph in which nodes corresponding to vectors obtained by vectorizing an object to be searched for data are connected by edges. . The information processing apparatus 100 searches for nodes in the vicinity of a given search query (vector) by tracing the graph, with each node of the graph as an object to be searched. The information processing apparatus 100 extracts a predetermined number of nodes specified as the number of neighboring nodes to be extracted (hereinafter also referred to as “the number of searches”) as neighboring nodes of the search query. In the following, a case where image information is targeted for data retrieval will be described as an example, but data retrieval targets may be various objects such as moving image information and audio information.

情報処理装置100は、数百万~数億等の単位の膨大な画像情報に対応するノードを対象に検索処理を行うが、図面においてはその一部(図1ではノードN1等の数十個)のみを図示する。例えば、情報処理装置100は、図1中の空間情報SP1に示すように、ノードN1、N7、N9等に示すような複数のノード(ベクトル)に関する情報を取得する。このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。空間情報SP1中の白丸(〇)の各々が各ノードを示す。 The information processing apparatus 100 performs search processing on nodes corresponding to a huge amount of image information in units of millions to hundreds of millions. ) only. For example, the information processing apparatus 100 acquires information about a plurality of nodes (vectors) indicated by nodes N1, N7, N9, etc., as indicated by spatial information SP1 in FIG. When "node N* (* is an arbitrary number)" is described in this way, it indicates that the node is identified by the node ID "N*". For example, when "node N1" is described, the node is identified by the node ID "N1". Each white circle (o) in the spatial information SP1 indicates each node.

図1中の空間情報SP1では、主に説明に関係するノードに符号を付すが、符号が付されていない白丸(〇)の各々もノードであり、図示するノード以外にも多数のノードが含まれる。また、各ノードは、各オブジェクト(検索対象)に対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。 In the spatial information SP1 in FIG. 1, nodes that are mainly related to the explanation are denoted by reference numerals, but each of the unsigned white circles (○) is also a node, and many nodes are included in addition to the nodes shown in the figure. be Each node corresponds to each object (search target). For example, each of the multiple local features extracted from the image may be an object. Also, for example, various data in which distances between objects are defined may be objects.

例えば図1中の空間情報SP1は、ユークリッド空間であってもよい。例えば、空間情報SP1は、オブジェクトのベクトルの次元数に対応し、100次元や1000次元等の多次元空間であるものとする。なお、図1では、空間情報SP1に示すように直積量子化によりベクトル(空間)が複数の部分領域(部分空間)に4分割された状態を概念的に図示するが、直積量子化の点については後述する。 For example, the spatial information SP1 in FIG. 1 may be Euclidean space. For example, the space information SP1 corresponds to the number of dimensions of the vector of the object, and is assumed to be a multidimensional space such as 100 or 1000 dimensions. FIG. 1 conceptually illustrates a state in which a vector (space) is divided into a plurality of partial regions (subspaces) by Cartesian product quantization as shown in spatial information SP1. will be described later.

空間情報SP1中のノードである白丸(〇)間を接続する点線がノード間を連結するエッジを示す。図1の例では、説明を簡単にするために、ノード間が無向(双方向)エッジ(以下単に「エッジ」ともいう)により連結される場合を示す。なお、ここでいう無向エッジとは、連結されたノード間を双方向にデータを辿ることができるエッジを意味する。例えば、ノードN1を示す白丸(〇)とノードN4を示す白丸(〇)との間は点線で接続されており、ノードN1とノードN4との間はエッジで連結されていることを示す。すなわち、空間情報SP1に示すグラフではノードN1とノードN4との間を双方向に辿ることが可能となる。具体的には、空間情報SP1ではノードN1からノードN4へ辿ることができ、かつノードN4からノードN1へ辿ることができる。 Dotted lines connecting white circles (o), which are nodes in the spatial information SP1, indicate edges connecting the nodes. In the example of FIG. 1, in order to simplify the explanation, nodes are connected by undirected (bidirectional) edges (hereinafter also simply referred to as "edges"). The undirected edge here means an edge that allows data to be traced bi-directionally between connected nodes. For example, the white circle (◯) indicating the node N1 and the white circle (◯) indicating the node N4 are connected by a dotted line, and the node N1 and the node N4 are connected by an edge. That is, in the graph shown in the spatial information SP1, it is possible to trace between the node N1 and the node N4 in both directions. Specifically, in the spatial information SP1, the node N1 can be traced to the node N4, and the node N4 can be traced to the node N1.

なお、図1の例では、図示の関係上、図示したノード間を連結するエッジのみを図示するが、図示したエッジ以外にも多数のエッジが含まれる。このように、図1中の空間情報SP1では、エッジの一部のみを図示するが、例えばk近傍グラフ(k-nearest neighbor graph)であるものとする。なお、空間情報SP1は、種々のグラフであってもよい。 In the example of FIG. 1, only the edges connecting the illustrated nodes are illustrated for the sake of illustration, but a large number of edges are included in addition to the illustrated edges. Thus, in the spatial information SP1 in FIG. 1, only a part of the edge is illustrated, but it is assumed to be a k-nearest neighbor graph, for example. Note that the spatial information SP1 may be various graphs.

また、グラフのエッジは、無向エッジに限らず、有向エッジであってもよい。有向エッジの場合、有向エッジの参照元となっているノードから参照先のノードへのみ辿ることができる。例えば、2つのノード間が、一方を参照元とし他方を参照先とする第1エッジ、及び一方を参照先とし他方を参照元とする第2エッジの2つの有向エッジで連結されている場合、その2つのノード間が無向(双方向)エッジで連結されて状態と同じ状態である。 Also, the edges of the graph are not limited to undirected edges, and may be directed edges. A directed edge can only be traced from the node that is the reference source of the directed edge to the node that is the reference destination. For example, when two nodes are connected by two directed edges: a first edge with one as a reference source and the other as a reference destination, and a second edge with one as a reference destination and the other as a reference source , the two nodes are connected by an undirected (bidirectional) edge.

ここから、図1を用いて検索処理について説明する。図1の例では、情報処理装置100は、空間情報SP1に示すようなグラフGR1を取得済みであるものとする。なお、情報処理装置100は、種々の従来技術を適宜用いてグラフGR1を生成してもよい。まず、検索処理の説明に先立ってベクトル(空間)の直積量子化について説明する。 From here, the search processing will be described with reference to FIG. In the example of FIG. 1, it is assumed that the information processing apparatus 100 has acquired a graph GR1 as shown in the spatial information SP1. Note that the information processing apparatus 100 may generate the graph GR1 using various conventional techniques as appropriate. First, before describing the retrieval process, direct product quantization of vectors (spaces) will be described.

図1では、空間情報SP1に示すように直積量子化によりベクトル(空間)が4つの部分空間AR11~AR14に分割された状態を概念的に図示する。図1に示す部分空間AR11~AR14は、各ノード(オブジェクト)のベクトル間の距離等の説明のための概念的な図で示すが、各部分空間AR11~AR14は多次元空間となる。例えば、図1に示す部分空間AR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。 FIG. 1 conceptually illustrates a state in which a vector (space) is divided into four subspaces AR11 to AR14 by direct product quantization as shown in spatial information SP1. The subspaces AR11 to AR14 shown in FIG. 1 are conceptual diagrams for explaining distances between vectors of nodes (objects), etc. Each of the subspaces AR11 to AR14 is a multidimensional space. For example, the partial space AR11 shown in FIG. 1 is shown in a two-dimensional manner because it is shown on a plane, but it is assumed to be a multi-dimensional space such as 100 or 1000 dimensions.

各部分空間AR11~AR14の各々は、4分割されるベクトルの各分割(部分ベクトル)に対応する空間を示す。なお、例えば100次元のベクトルを100分割しても良い。例えば、部分空間AR11は、ベクトルが4分割された4つの部分ベクトル(「サブベクトル」ともいう)のうち、先頭の部分ベクトル(「第1サブベクトル」ともいう)に対応する次元の空間(「第1サブ空間」ともいう)を示す。部分空間AR11は、ベクトルの先頭の分割位置に対応する部分空間(第1サブ空間)を示す。検索クエリQE1の場合、部分空間AR11は、先頭の部分ベクトル(第1サブベクトル)である第1部分クエリQE1-1に対応する空間である。 Each of the subspaces AR11 to AR14 represents a space corresponding to each division (partial vector) of the four-divided vector. Note that, for example, a 100-dimensional vector may be divided into 100 parts. For example, the subspace AR11 is a space (" Also referred to as "first subspace"). A subspace AR11 indicates a subspace (first subspace) corresponding to the division position at the beginning of the vector. In the case of the search query QE1, the partial space AR11 is a space corresponding to the first partial query QE1-1, which is the leading partial vector (first subvector).

また、部分空間AR12は、ベクトルが4分割された4つの部分ベクトルのうち、先頭から2番目の部分ベクトル(「第2サブベクトル」ともいう)に対応する次元の空間(「第2サブ空間」ともいう)を示す。部分空間AR12は、ベクトルの先頭から2番目の分割位置に対応する部分空間(第2サブ空間)を示す。検索クエリQE1の場合、部分空間AR12は、先頭から2番目の部分ベクトル(第2サブベクトル)である第2部分クエリQE1-2に対応する空間である。 Further, the subspace AR12 is a space (“second subspace”) having a dimension corresponding to the second subvector (also referred to as “second subvector”) from the top of the four partial vectors obtained by dividing the vector into four. also called). Subspace AR12 indicates a subspace (second subspace) corresponding to the second division position from the beginning of the vector. In the case of search query QE1, partial space AR12 is a space corresponding to second partial query QE1-2, which is the second partial vector (second sub-vector) from the beginning.

また、部分空間AR13は、ベクトルが4分割された4つの部分ベクトルのうち、先頭から3番目の部分ベクトル(「第3サブベクトル」ともいう)に対応する次元の空間(「第3サブ空間」ともいう)を示す。部分空間AR13は、ベクトルの先頭から3番目の分割位置に対応する部分空間(第3サブ空間)を示す。検索クエリQE1の場合、部分空間AR13は、先頭から3番目の部分ベクトル(第3サブベクトル)である第3部分クエリQE1-3に対応する空間である。 Further, the subspace AR13 is a space (“third subspace”) having a dimension corresponding to the third subvector (also referred to as “third subvector”) from the top of the four partial vectors obtained by dividing the vector into four. also called). Subspace AR13 indicates a subspace (third subspace) corresponding to the third division position from the beginning of the vector. In the case of the search query QE1, the partial space AR13 is a space corresponding to the third partial query QE1-3, which is the third partial vector (third subvector) from the top.

また、部分空間AR14は、ベクトルが4分割された4つの部分ベクトルのうち、先頭から4番目(すなわち最後尾)の部分ベクトル(「第4サブベクトル」ともいう)に対応する次元の空間(「第4サブ空間」ともいう)を示す。部分空間AR14は、ベクトルの先頭から4番目の分割位置に対応する部分空間(第4サブ空間)を示す。検索クエリQE1の場合、部分空間AR14は、先頭から4番目の部分ベクトル(第4サブベクトル)である第4部分クエリQE1-4に対応する空間である。 Further, the subspace AR14 is a space (" (also referred to as "fourth subspace"). Subspace AR14 indicates a subspace (fourth subspace) corresponding to the fourth division position from the beginning of the vector. In the case of search query QE1, partial space AR14 is a space corresponding to fourth partial query QE1-4, which is the fourth partial vector (fourth sub-vector) from the top.

なお、図1の例では、部分空間AR11~AR14を類似の形状で示すが、各部分空間AR11~AR14の形状は異なってもよいし、また各部分空間AR11~AR14における領域の分割態様も異なってもよい。また、ノード間のエッジによる接続関係は部分空間AR11~AR14で共通であるものとする。すなわち、グラフGR1は、空間情報SP1に対応するグラフであり、部分空間AR11~AR14で共通である。 In the example of FIG. 1, the partial spaces AR11 to AR14 are shown with similar shapes, but the shapes of the partial spaces AR11 to AR14 may be different, and the division of the regions in the partial spaces AR11 to AR14 may also be different. may Also, it is assumed that the connection relationship by edges between nodes is common in the subspaces AR11 to AR14. That is, the graph GR1 is a graph corresponding to the spatial information SP1 and is common to the subspaces AR11 to AR14.

また、図1の例では、分割された部分ベクトル(サブベクトル)ごとにルックアップテーブルが生成される。例えば、第1サブベクトル、第2サブベクトル、第3サブベクトル、及び第4サブベクトルの4つのサブベクトルごとにクラスタリングされ、個別にルックアップテーブル(コードブック情報)が生成される。 Also, in the example of FIG. 1, a lookup table is generated for each divided partial vector (sub-vector). For example, clustering is performed for each of four sub-vectors, ie, a first sub-vector, a second sub-vector, a third sub-vector, and a fourth sub-vector, and a lookup table (codebook information) is generated individually.

図1では、第1サブベクトルについては、部分空間AR11に示すように、コードブックCD11~CD19に対応する9個のグループにクラスタリングされ、コードブックCD11~CD19の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。例えば、ノードN7、N9等の第1サブベクトルはコードブックCD11に対応するグループにクラスタリングされることを示す。この場合、ノードN7、N9等の第1サブベクトルは距離の計算(算出)において、第1サブベクトルに対応するコードブック情報(「第1コードブック情報」ともいう)を用いて、コードブックCD11のベクトルにベクトル量子化される。 In FIG. 1, the first subvectors are clustered into nine groups corresponding to the codebooks CD11 to CD19 as shown in the subspace AR11, and the vectors corresponding to each of the codebooks CD11 to CD19 are representative vectors ( centroid). For example, the first subvectors of nodes N7, N9, etc. are shown clustered into the group corresponding to codebook CD11. In this case, the first sub-vectors such as nodes N7 and N9 use the codebook information corresponding to the first sub-vectors (also referred to as "first codebook information") in the distance calculation (calculation), and the codebook CD11 vector quantized to a vector of

また、第2サブベクトルについては、コードブックCD21~CD24等(図2、図9参照)に対応する複数のグループにクラスタリングされ、コードブックCD21~CD24等の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。この場合、各ノードの第2サブベクトルは距離の計算(算出)において、第2サブベクトルに対応するコードブック情報(「第2コードブック情報」ともいう)を用いて、対応するコードブックのベクトルにベクトル量子化される。 The second sub-vectors are clustered into a plurality of groups corresponding to codebooks CD21 to CD24, etc. (see FIGS. 2 and 9). Lloyd). In this case, the second sub-vector of each node is calculated using the codebook information corresponding to the second sub-vector (also referred to as "second codebook information") in the distance calculation (calculation), and the corresponding codebook vector is vector quantized to .

第3サブベクトルについては、コードブックCD31~CD34等(図2、図9参照)に対応する複数のグループにクラスタリングされ、コードブックCD31~CD34等の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。この場合、各ノードの第3サブベクトルは距離の計算(算出)において、第3サブベクトルに対応するコードブック情報(「第3コードブック情報」ともいう)を用いて、対応するコードブックのベクトルにベクトル量子化される。 The third sub-vectors are clustered into a plurality of groups corresponding to the codebooks CD31 to CD34 (see FIGS. 2 and 9), and the vector corresponding to each of the codebooks CD31 to CD34 is the representative vector (centroid). calculated as In this case, the third sub-vector of each node is calculated using the codebook information corresponding to the third sub-vector (also referred to as "third codebook information") in the distance calculation (calculation). is vector quantized to .

第4サブベクトルについては、コードブックCD41~CD44等(図2、図9参照)に対応する複数のグループにクラスタリングされ、コードブックCD24~CD44等の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。この場合、各ノードの第4サブベクトルは距離の計算(算出)において、第4サブベクトルに対応するコードブック情報(「第4コードブック情報」ともいう)を用いて、対応するコードブックのベクトルにベクトル量子化される。 The fourth subvectors are clustered into a plurality of groups corresponding to codebooks CD41 to CD44, etc. (see FIGS. 2 and 9), and vectors corresponding to each of codebooks CD24 to CD44, etc. are representative vectors (centroids). calculated as In this case, the fourth sub-vector of each node uses the codebook information corresponding to the fourth sub-vector (also referred to as "fourth codebook information") in the distance calculation (calculation) to obtain the corresponding codebook vector is vector quantized to .

なお、代表ベクトルを求める処理等、コードブック情報の生成は、種々の技術を適宜用いて生成される。コードブック情報の生成については従来技術であるため詳細な説明を省略する。また、ルックアップテーブルについては上記に限らず、例えば、分割された部分ベクトル(サブベクトル)全体で1つのルックアップテーブル(コードブック情報)を用いてもよいが、この点については後述する。 It should be noted that the generation of codebook information, such as processing for obtaining representative vectors, is generated using various techniques as appropriate. Since the generation of codebook information is conventional technology, detailed description thereof will be omitted. Also, the lookup table is not limited to the above. For example, one lookup table (codebook information) may be used for the entire divided partial vectors (subvectors), but this point will be described later.

ここから、検索クエリQE1を対象とする検索処理を説明する。まず、情報処理装置100は、検索クエリQE1を取得する(ステップS11)。例えば、情報処理装置100は、ユーザが利用する端末装置10(図4参照)から検索クエリQE1を取得する。 From here, the search processing for the search query QE1 will be described. First, the information processing device 100 acquires the search query QE1 (step S11). For example, the information processing device 100 acquires the search query QE1 from the terminal device 10 (see FIG. 4) used by the user.

そして、情報処理装置100は、検索クエリQE1であるベクトルを4分割する。すなわち、情報処理装置100は、検索クエリQE1を4つの部分クエリに分割する。図1では、情報処理装置100は、検索クエリQE1を、第1サブベクトルである第1部分クエリQE1-1、第2サブベクトルである第2部分クエリQE1-2、第3サブベクトルである第3部分クエリQE1-3、及び第4サブベクトルである第4部分クエリQE1-4との4つのサブベクトルに分割する。具体的には、情報処理装置100は、「45,23,2…」を第1部分クエリQE1-1とし、「127,34,5…」を第2部分クエリQE1-2とし、「20,98,110…」を第3部分クエリQE1-3とし、「12,45,4…」を第4部分クエリQE1-4とする。 Then, the information processing apparatus 100 divides the vector that is the search query QE1 into four. That is, the information processing device 100 divides the search query QE1 into four partial queries. In FIG. 1, the information processing apparatus 100 divides the search query QE1 into a first partial query QE1-1 that is a first sub-vector, a second partial query QE1-2 that is a second sub-vector, a second partial query QE1-2 that is a third sub-vector, a It is divided into four sub-vectors, the three-part query QE1-3 and the fourth sub-vector, the fourth partial query QE1-4. Specifically, the information processing apparatus 100 sets “45, 23, 2 . "98, 110..." is the third partial query QE1-3, and "12, 45, 4..." is the fourth partial query QE1-4.

そして、情報処理装置100は、検索クエリQE1の各サブベクトルと、そのサブベクトルに対応するコードブックのベクトルとの間の距離を算出する。情報処理装置100は、図2のコードブック情報TB1~TB4に示すように、検索クエリQE1の各サブベクトルと各コードブックのベクトルとの間の距離(差分)を算出する。図2は、第1の実施形態に係るデータの一例を示す図である。 The information processing apparatus 100 then calculates the distance between each sub-vector of the search query QE1 and the codebook vector corresponding to that sub-vector. The information processing apparatus 100 calculates the distance (difference) between each sub-vector of the search query QE1 and each codebook vector, as shown in the codebook information TB1 to TB4 in FIG. FIG. 2 is a diagram illustrating an example of data according to the first embodiment;

コードブック情報TB1は、第1サブベクトルに対応する第1コードブック情報を示し、情報処理装置100は、第1サブベクトルに対応するコードブックCD11~CD19の各々のベクトルと、第1部分クエリQE1-1との間の距離を算出する。図2では、情報処理装置100は、コードブック情報TB1に示すように、コードブックCD11と第1部分クエリQE1-1との間の距離を距離DS11と算出する。同様に、情報処理装置100は、コードブックCD12~CD14等の各々と第1部分クエリQE1-1との間の距離を距離DS12~DS14等と算出する。 Codebook information TB1 indicates the first codebook information corresponding to the first sub-vector, and the information processing apparatus 100 stores each vector of the codebooks CD11 to CD19 corresponding to the first sub-vector and the first partial query QE1. Calculate the distance between -1. In FIG. 2, the information processing apparatus 100 calculates the distance DS11 as the distance between the codebook CD11 and the first partial query QE1-1, as shown in the codebook information TB1. Similarly, the information processing apparatus 100 calculates the distances between each of the codebooks CD12 to CD14 and the like and the first partial query QE1-1 as distances DS12 to DS14 and the like.

同様に、コードブック情報TB2~TB4の各々は、第2~第4サブベクトルの各々に対応する第2~第4コードブック情報を示す。情報処理装置100は、コードブック情報TB2に示すように、コードブックCD21~CD24等の各々と第2部分クエリQE1-2との間の距離を距離DS21~DS24等と算出する。情報処理装置100は、コードブック情報TB3に示すように、コードブックCD31~CD34等の各々と第3部分クエリQE1-3との間の距離を距離DS31~DS34等と算出する。情報処理装置100は、コードブック情報TB4に示すように、コードブックCD41~CD44等の各々と第4部分クエリQE1-4との間の距離を距離DS41~DS44等と算出する。 Similarly, each of codebook information TB2-TB4 indicates the second through fourth codebook information corresponding to each of the second through fourth sub-vectors. The information processing apparatus 100 calculates the distances DS21 to DS24 and the like between each of the codebooks CD21 to CD24 and the second partial query QE1-2, as shown in the codebook information TB2. The information processing apparatus 100 calculates the distances DS31 to DS34 and the like between each of the codebooks CD31 to CD34 and the third partial query QE1-3, as shown in the codebook information TB3. The information processing apparatus 100 calculates the distances DS41 to DS44 and the like between each of the codebooks CD41 to CD44 and the fourth partial query QE1-4 as shown in the codebook information TB4.

なお、図2では説明のため抽象的に示すが、距離DS11~DS44等は具体的な値であるものとする。距離は浮動小数点で表される値であるが、後述のSIMD(Single Instruction, Multiple Data)による高速化のためにscale-offset-compression(「https://www.unidata.ucar.edu/blogs/developer/entry/compression_by_scaling_and_offfset」等参照)により1バイト整数型に圧縮してもよい。情報処理装置100は、各コードブックとクエリとの間の距離算出を、検索クエリQE1を取得したタイミングで行ってもよいし、その情報が必要になったタイミングで行ってもよい。情報処理装置100は、検索処理において、コードブック情報TB1~TB4をルックアップテーブルとして用いて、各ノードと検索クエリQE1との間の距離、すなわち近似距離(「第1距離」ともいう)を算出する。このように、情報処理装置100は、検索処理において、グラフを探索する際には、各ノードと検索クエリとの間の真の距離(「第2距離」ともいう)ではなく、近似距離(第1距離)を計算し処理を行うことにより、効率的な検索処理を可能にすることができる。 Although shown abstractly in FIG. 2 for the sake of explanation, the distances DS11 to DS44 and the like are assumed to be specific values. The distance is a value expressed in floating point, but scale-offset-compression ("https://www.unidata.ucar.edu/blogs/ developer/entry/compression_by_scaling_and_offset" etc.) may be compressed to a 1-byte integer type. The information processing apparatus 100 may calculate the distance between each codebook and the query at the timing when the search query QE1 is obtained, or at the timing when the information is required. In the search process, the information processing apparatus 100 uses the codebook information TB1 to TB4 as a lookup table to calculate the distance between each node and the search query QE1, that is, the approximate distance (also referred to as "first distance"). do. In this way, the information processing apparatus 100, when searching a graph in search processing, uses an approximate distance (second 1 distance) to perform processing, efficient search processing can be enabled.

情報処理装置100は、検索クエリQE1を対象とする検索処理を実行する(ステップS12)。情報処理装置100は、検索クエリQE1を対象として、グラフGR1を用いた図11に示すような検索処理を行うことにより、検索クエリQE1の検索結果を得る。図11に示す検索処理についての詳細は後述する。情報処理装置100は、検索クエリQE1を対象として検索処理を行うことにより、検索数のノードを検索クエリQE1の近傍のノードとして抽出する。 The information processing apparatus 100 executes search processing targeting the search query QE1 (step S12). The information processing apparatus 100 obtains the search result of the search query QE1 by performing the search process as shown in FIG. 11 using the graph GR1 for the search query QE1. Details of the search processing shown in FIG. 11 will be described later. The information processing apparatus 100 performs search processing on the search query QE1, thereby extracting the number of nodes to be searched as nodes in the vicinity of the search query QE1.

情報処理装置100は、検索クエリQE1を対象とする検索処理において、各ノードのうち、所定のノードをグラフGR1の検索の開始点(起点)となるノード(以下「起点ノード」ともいう)として選択する。例えば、情報処理装置100は、起点ノードを、木構造のインデックス等の所定のインデックスを用いて選択する。図1の例では、情報処理装置100は、起点ノードとして、ノードN7を選択するものとする。なお、図1では説明を簡単にするために、所定のインデックスを用いてノードN7のみを起点ノードとして選択する場合を示すが、情報処理装置100は、複数のノードを起点ノードとして選択してもよいし、ランダム等の様々な方法により起点ノードを選択してもよい。 In the search processing for the search query QE1, the information processing apparatus 100 selects a predetermined node from among the nodes as a node (hereinafter also referred to as a “starting node”) that serves as a starting point (starting point) for searching the graph GR1. do. For example, the information processing apparatus 100 selects the starting node using a predetermined index such as a tree structure index. In the example of FIG. 1, the information processing apparatus 100 selects the node N7 as the starting node. In order to simplify the explanation, FIG. 1 shows a case where only the node N7 is selected as the starting node using a predetermined index. Alternatively, the starting node may be selected by various methods such as random.

ここで、情報処理装置100は、検索クエリQE1を対象とする検索処理において、一のノードからのエッジが連結されたノード(以下「接続ノード」ともいう)と検索クエリとの距離を並列化して算出する(ステップS13)。図1では、情報処理装置100は、一括処理情報LT1に示すように、ノードN7からのエッジが連結されたノード(接続ノード)であるノードN9、N12、N54、N85等については、検索クエリQE1との距離を並列化して算出する。 Here, in the search processing for the search query QE1, the information processing apparatus 100 parallelizes the distance between a node (hereinafter also referred to as a “connection node”) to which edges from one node are connected and the search query. Calculate (step S13). In FIG. 1, the information processing apparatus 100, as shown in batch processing information LT1, performs search query QE1 for nodes N9, N12, N54, N85, etc., which are nodes (connection nodes) to which edges from node N7 are connected. is calculated by parallelizing the distances from .

例えば、ノードN9は、ノード情報INF1に示すように、第1サブベクトルがコードブックCD12、第2サブベクトルがコードブックCD23、第3サブベクトルがコードブックCD35、及び第4サブベクトルがコードブックCD47に対応付けられていることを示す。なお、変数CDのサイズはコードブックのサイズにより決定されるので、例えばコードブックサイズが16であれば、変数CDは4ビットで良いことになり、大幅なデータの圧縮が可能である。そのため、情報処理装置100は、コードブックCD12の距離DS12、コードブックCD23の距離DS23、コードブックCD35の距離DS35、及びコードブックCD47の距離DS47を用いて、ノードN9と、検索クエリQE1との距離を算出する。例えば、情報処理装置100は、コードブックCD12の距離DS12、コードブックCD23の距離DS23、コードブックCD35の距離DS35、及びコードブックCD47の距離DS47の合計を、ノードN9と検索クエリQE1との距離として算出する。 For example, as shown in node information INF1, the node N9 has a codebook CD12 for the first subvector, a codebook CD23 for the second subvector, a codebook CD35 for the third subvector, and a codebook CD47 for the fourth subvector. indicates that it is associated with Note that the size of the variable CD is determined by the size of the codebook, so if the codebook size is 16, for example, the variable CD can be 4 bits, and significant data compression is possible. Therefore, the information processing apparatus 100 calculates the distance between the node N9 and the search query QE1 using the distance DS12 of the codebook CD12, the distance DS23 of the codebook CD23, the distance DS35 of the codebook CD35, and the distance DS47 of the codebook CD47. Calculate For example, the information processing apparatus 100 calculates the sum of the distance DS12 of the codebook CD12, the distance DS23 of the codebook CD23, the distance DS35 of the codebook CD35, and the distance DS47 of the codebook CD47 as the distance between the node N9 and the search query QE1. calculate.

例えば、ノードN12は、ノード情報INF2に示すように、第1サブベクトルがコードブックCD14、第2サブベクトルがコードブックCD29、第3サブベクトルがコードブックCD31、及び第4サブベクトルがコードブックCD45に対応付けられていることを示す。例えば、情報処理装置100は、コードブックCD14の距離DS14、コードブックCD29の距離DS29、コードブックCD31の距離DS31、及びコードブックCD45の距離DS45の合計を、ノードN12と検索クエリQE1との距離として算出する。同様に、情報処理装置100は、ノードN54のノード情報INF3を用いて、ノードN54と検索クエリQE1との距離を算出し、ノードN85のノード情報INF4を用いて、ノードN85と検索クエリQE1との距離を算出する。 For example, as shown in node information INF2, the node N12 has a codebook CD14 for the first subvector, a codebook CD29 for the second subvector, a codebook CD31 for the third subvector, and a codebook CD45 for the fourth subvector. indicates that it is associated with For example, the information processing apparatus 100 calculates the sum of the distance DS14 of the codebook CD14, the distance DS29 of the codebook CD29, the distance DS31 of the codebook CD31, and the distance DS45 of the codebook CD45 as the distance between the node N12 and the search query QE1. calculate. Similarly, the information processing apparatus 100 uses the node information INF3 of the node N54 to calculate the distance between the node N54 and the search query QE1, and uses the node information INF4 of the node N85 to calculate the distance between the node N85 and the search query QE1. Calculate the distance.

例えば、情報処理装置100は、SIMDの演算に関する並列化により、ノードN9、N12、N54、N85の各々と検索クエリQE1との距離を一括して算出する。これにより、情報処理装置100は、距離計算を並列化することにより、距離計算を高速化することでき、効率的な検索処理を可能にすることができる。 For example, the information processing apparatus 100 collectively calculates the distances between each of the nodes N9, N12, N54, and N85 and the search query QE1 by parallelizing SIMD operations. Thereby, the information processing apparatus 100 can speed up the distance calculation by parallelizing the distance calculation, and can enable efficient search processing.

なお、図1では説明を簡単にするために、4つのノードを対象として距離を並列化して算出する場合を示すが、並列化される数は、情報処理装置100の仕様に基づいて決定される。例えば、情報処理装置100がSIMDにより一括して処理できる数(「一括処理可能単位」ともいう)が「4」である場合、図1と同様の処理となるが、SIMDにより一括して処理できる数(一括処理可能単位)が「16」である場合、情報処理装置100は、16個のノードを対象として距離を並列化して算出する。また、一括処理可能単位が「32」である場合、情報処理装置100は、32個のノードを対象として距離を並列化して算出する。このように、情報処理装置100は、SIMDにより一括して処理できる数(一括処理可能単位)に対応する数のノードの距離計算を一括して行うことにより、効率的な検索処理を可能にすることができる。 In order to simplify the explanation, FIG. 1 shows a case in which distances are calculated in parallel for four nodes, but the number of parallelized distances is determined based on the specifications of the information processing apparatus 100. . For example, when the number that the information processing apparatus 100 can collectively process by SIMD (also referred to as “batch-processable unit”) is “4”, the processing is the same as in FIG. When the number (batch processable unit) is “16”, the information processing apparatus 100 parallelizes and calculates distances for 16 nodes. Further, when the collectively processable unit is "32", the information processing apparatus 100 parallelizes and calculates the distances for 32 nodes. In this way, the information processing apparatus 100 enables efficient search processing by collectively performing distance calculations for a number of nodes corresponding to the number of nodes that can be processed collectively by SIMD (batch-processable unit). be able to.

情報処理装置100は、上記のように複数のノードの距離計算を並列化して行いながら、検索クエリQE1を対象として、グラフGR1を用いた図11に示すような検索処理を行うことにより、検索数のノードを検索クエリQE1の近傍のノードとして抽出する。 The information processing apparatus 100 parallelizes the distance calculation of a plurality of nodes as described above, and performs the search processing as shown in FIG. are extracted as nodes near the search query QE1.

上述のように、情報処理装置100は、ベクトル量子化された各ノードのベクトルと検索クエリとの間の近似距離(第1距離)を算出して、第1距離を用いて検索処理を行う事により、効率的な検索処理を可能にすることができる。また、情報処理装置100は、並列化可能な数のノードの距離計算を一括して行うことにより、効率的な検索処理を可能にすることができる。上記のように、情報処理装置100は、グラフのノードの複数の接続ノードとの近似距離を一括して計算することにより、限定されたメモリ領域(ルックアップテーブル)を繰り返し利用する(メモリキャッシュにのる)ので高速化が可能である。 As described above, the information processing apparatus 100 calculates the approximate distance (first distance) between the vector-quantized vector of each node and the search query, and performs search processing using the first distance. can enable efficient search processing. In addition, the information processing apparatus 100 can perform efficient search processing by collectively performing distance calculations for a parallelizable number of nodes. As described above, the information processing apparatus 100 repeatedly uses a limited memory area (lookup table) by collectively calculating approximate distances between a node of a graph and a plurality of connection nodes. ), so high speed is possible.

また、図1の例では、情報処理装置100は、直積量子化により分割したベクトルを用いて検索処理を行うことにより、ベクトルを分割せずに検索処理を行う場合に比べて、より効率的な検索処理を可能にすることができる。例えば、情報処理装置100は、直積量子化により短いベクトル間の距離を算出することとなり、距離計算の対象となるベクトルのサイズを小さくできる。また、情報処理装置100は、距離計算時に利用するルックアップテーブルによりアクセスするメモリ空間を、分割されたサブベクトルのルックアップテーブルに限定することができる。情報処理装置100は、直積量子化により検索精度の低下を抑制しつつ、ベクトルサイズを削減することができる。なお、図1では、直積量子化が行われた場合の処理を説明したが、直積量子化が行われた場合は一例に過ぎず、情報処理装置100は、直積量子化を行われてないベクトルを用いて検索処理を行ってもよい。 In addition, in the example of FIG. 1, the information processing apparatus 100 performs search processing using vectors divided by direct product quantization. Search processing can be enabled. For example, the information processing apparatus 100 calculates the distance between short vectors by direct product quantization, and can reduce the size of the vector that is the target of distance calculation. Further, the information processing apparatus 100 can limit the memory space accessed by the lookup table used for distance calculation to the lookup table of divided sub-vectors. The information processing apparatus 100 can reduce the vector size while suppressing deterioration in search accuracy by direct product quantization. Note that FIG. 1 illustrates the processing in the case where the Cartesian product quantization is performed, but the case where the Cartesian product quantization is performed is only an example, and the information processing apparatus 100 can perform vector processing without performing the Cartesian product quantization. may be used to perform the search process.

〔1-1-1.その他〕
上述した処理は一例に過ぎず、情報処理装置100は、効率的な検索処理の為に様々な情報や手法を用いて、検索処理を行ってもよい。この点について、各事項について詳述する。
[1-1-1. others〕
The processing described above is merely an example, and the information processing apparatus 100 may perform search processing using various information and methods for efficient search processing. Regarding this point, each item will be described in detail.

(エッジ(接続ノード)の格納態様)
各ノードに連結されるエッジ(接続ノード)の情報について、ノードでのエッジ(接続ノード)の格納態様(格納方法)には、例えば以下の第1格納態様及び第2格納態様の2種類が考えられるため、格納態様については、利用形態によって選択されてもよい。
(Mode of storage of edges (connection nodes))
Regarding the information of edges (connection nodes) connected to each node, the following two storage modes (first storage mode and second storage mode) can be considered for the edge (connection node) storage mode (storage method) at the node. Therefore, the storage mode may be selected according to the usage mode.

例えば、第1格納態様としては、各ノードには接続ノード(オブジェクト)のIDを対応付けて格納し、別のテーブルに直積量子化されたオブジェクトの情報を格納してもよい。例えば、図7及び図8に示すデータの格納態様が第1格納態様に対応する。第1格納態様の場合、メモリ使用量を削減できる。 For example, as a first storage mode, each node may be associated with an ID of a connection node (object) and stored, and the information of the quantized object may be stored in another table. For example, the data storage modes shown in FIGS. 7 and 8 correspond to the first storage mode. In the case of the first storage mode, memory usage can be reduced.

また、例えば、第2格納態様としては、各ノードに直に量子化されたオブジェクトを持つ。第2格納態様の場合、あるノードの接続ノード(オブジェクト)が量子化された情報を各ノードに対応付けて記憶する。例えば、ノードN7の接続ノードであるノードN9、N12、N54、N85の各々の量子化された情報(図2中のノード情報INF1~INF4)がノードN7に対応付けて記憶されるデータの格納態様が第2格納態様に対応する。第2格納態様の場合、検索時にシーケンシャルにオブジェクトをアクセスするため速度低下が発生を抑制することができる。 Also, for example, as a second storage mode, each node has a directly quantized object. In the case of the second storage mode, information obtained by quantizing a connection node (object) of a certain node is stored in association with each node. For example, a data storage mode in which quantized information (node information INF1 to INF4 in FIG. 2) of nodes N9, N12, N54, and N85, which are connection nodes of node N7, are stored in association with node N7. corresponds to the second storage mode. In the case of the second storage mode, since objects are accessed sequentially during retrieval, it is possible to suppress the occurrence of speed reduction.

(ルックアップテーブル)
上述した例では、分割したサブベクトルごとに個別にクラスタリングし、個々にルックアップテーブル(コードブック情報)を生成する場合を示したが、この場合に限らず、ルックアップテーブルについては任意の態様であってもよい。
(lookup table)
In the above example, each divided sub-vector is clustered separately and a lookup table (codebook information) is generated individually. There may be.

例えば、全てのサブベクトルに対してクラスタリングし、一つのルックアップテーブルが生成されてもよい。上述した例では、例えば、第1サブベクトル、第2サブベクトル、第3サブベクトル、及び第4サブベクトルの4つのサブベクトル全体を対象にクラスタリングし、一つのルックアップテーブルが生成されてもよい。 For example, all sub-vectors may be clustered to generate one lookup table. In the above example, for example, all four sub-vectors of the first sub-vector, the second sub-vector, the third sub-vector, and the fourth sub-vector may be clustered to generate one lookup table. .

また、個々のサブベクトルを部分的にマージして複数のクラスごとに、ルックアップテーブルが生成されてもよい。例えば、分散が類似しているサブベクトルをマージして複数のクラスを形成し、複数のクラスごとに、ルックアップテーブルが生成されてもよい。上述した例では、例えば、第1サブベクトル及び第3サブベクトルの2つのサブベクトの分散が類似し、第2サブベクトル及び第4サブベクトルの2つのサブベクトの分散が類似している場合、第1サブベクトル及び第3サブベクトルをマージして第1クラスとし、第2サブベクトル及び第4サブベクトルをマージして第2クラスとしてもよい。この場合、第1クラスのルックアップテーブル(コードブック情報)と、第2クラスのルックアップテーブル(コードブック情報)との2つのルックアップテーブルが生成されてもよい。 Also, lookup tables may be generated for multiple classes by partially merging the individual subvectors. For example, subvectors with similar variances may be merged to form multiple classes, and lookup tables generated for each of the multiple classes. In the above example, for example, if two sub-vectors of the first sub-vector and the third sub-vector have similar variances, and two sub-vectors of the second sub-vector and the fourth sub-vector have similar variances, then the first The sub-vector and the third sub-vector may be merged into a first class, and the second and fourth sub-vectors may be merged into a second class. In this case, two lookup tables, a first class lookup table (codebook information) and a second class lookup table (codebook information), may be generated.

(転置)
上述したデータの保持は一例に過ぎず、情報処理装置100は、効率的なデータ参照等が可能となるように、種々の態様によりデータを保持してもよい。例えば、情報処理装置100は、転置したデータを保持してもよい。この点について、図3を用いて説明する。図3は、第1の実施形態に係るデータの一例を示す図である。
(transpose)
The holding of the data described above is merely an example, and the information processing apparatus 100 may hold data in various forms so as to enable efficient data reference and the like. For example, the information processing apparatus 100 may hold transposed data. This point will be described with reference to FIG. FIG. 3 is a diagram illustrating an example of data according to the first embodiment;

例えば、ノード情報INF1~INF4に示すようにデータを保持し、ノード情報INF1~INF4を順次処理した場合、図2のステップS14に示すように、ルックアップテーブルであるコードブック情報TB1~TB4を繰り返し参照することとなる。 For example, when data are held as shown in node information INF1 to INF4 and node information INF1 to INF4 are sequentially processed, codebook information TB1 to TB4, which are lookup tables, are repeated as shown in step S14 in FIG. It will be referred to.

そこで、ステップS15に示すように、ノード情報INF1~INF4を転置した転置データTR1~TR4が生成される。例えば、情報処理装置100は、ノード情報INF1~INF4を転置した転置データTR1~TR4を生成する。 Therefore, as shown in step S15, transposed data TR1 to TR4 are generated by transposing the node information INF1 to INF4. For example, the information processing apparatus 100 generates transposed data TR1 to TR4 obtained by transposing the node information INF1 to INF4.

図3では、ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第1サブベクトルに対応するコードブックの一覧である第1データTR1が生成される。具体的には、ノードN9の第1サブベクトルに対応するコードブックCD12、ノードN12の第1サブベクトルに対応するコードブックCD14、ノードN54の第1サブベクトルに対応するコードブックCD13、及びノードN85の第1サブベクトルに対応するコードブックCD18の一覧である第1データTR1が生成される。 In FIG. 3, first data TR1, which is a list of codebooks corresponding to the first sub-vectors of nodes N9, N12, N54, and N85 among the node information INF1 to INF4, is generated. Specifically, codebook CD12 corresponding to the first subvector of node N9, codebook CD14 corresponding to the first subvector of node N12, codebook CD13 corresponding to the first subvector of node N54, and node N85. First data TR1 is generated which is a list of codebook CD18 corresponding to the first subvector of .

同様に、ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第2サブベクトルに対応するコードブックの一覧である第2データTR2が生成される。また、ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第3サブベクトルに対応するコードブックの一覧である第3データTR3が生成される。ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第4サブベクトルに対応するコードブックの一覧である第4データTR4が生成される。 Similarly, second data TR2, which is a list of codebooks corresponding to the second sub-vectors of nodes N9, N12, N54, and N85 among the node information INF1 to INF4, is generated. Further, third data TR3, which is a list of codebooks corresponding to the third sub-vectors of nodes N9, N12, N54, and N85 among the node information INF1 to INF4, is generated. Fourth data TR4, which is a list of codebooks corresponding to the fourth sub-vectors of nodes N9, N12, N54, and N85 among the node information INF1 to INF4, is generated.

なお、各転置データTR1~TR4の一覧のうち、何番目のデータがどのノードに対応するかの対応付けを示す対応付情報が生成される。図3の例では、各転置データTR1~TR4の一覧のうち、1番目(最初)のデータがノードN9に対応し、2番目のデータがノードN12に対応し、3番目のデータがノードN54に対応し、4番目(最後)のデータがノードN85に対応することを示す対応付情報が生成される。情報処理装置100は、対応付情報を参照することにより、各転置データTR1~TR4の一覧の各データが、どのノードに対応するかを特定することができる。例えば、情報処理装置100は、対応付情報を生成する。 Correspondence information is generated that indicates the correspondence between which data in the list of each of the transposed data TR1 to TR4 corresponds to which node. In the example of FIG. 3, in the list of transposed data TR1 to TR4, the first data corresponds to node N9, the second data corresponds to node N12, and the third data corresponds to node N54. Correspondingly, correspondence information is generated indicating that the fourth (last) data corresponds to node N85. The information processing apparatus 100 can specify which node each data in the list of the transposed data TR1 to TR4 corresponds to by referring to the correspondence information. For example, the information processing apparatus 100 generates correspondence information.

情報処理装置100は、ノード情報INF1~INF4を転置した転置データTR1~TR4を用いて処理を行う。例えば、情報処理装置100は、転置データTR1を用いてルックアップテーブルを参照する場合、コードブック情報TB1のみを参照することとなり、1つのコードブック情報TB1のみを参照することとなる。同様に、情報処理装置100は、転置データTR2を用いてルックアップテーブルを参照する場合、コードブック情報TB2のみを参照することとなり、1つのコードブック情報TB2のみを参照することとなる。転置データTR3、TR4についても同様に1つのコードブック情報のみを参照することとなる。これにより、情報処理装置100は、効率的にデータを参照することができるため、効率的な検索処理を可能にすることができる。 The information processing apparatus 100 performs processing using transposed data TR1 to TR4 obtained by transposing the node information INF1 to INF4. For example, when the information processing apparatus 100 refers to the lookup table using the transposed data TR1, it refers only to the codebook information TB1, and refers to only one codebook information TB1. Similarly, when the information processing apparatus 100 refers to the lookup table using the transposed data TR2, it refers only to the codebook information TB2, and refers to only one codebook information TB2. Only one piece of codebook information is similarly referred to for the transposed data TR3 and TR4. As a result, the information processing apparatus 100 can efficiently refer to the data, thereby enabling efficient search processing.

このように、一括距離計算時にサブクラス(サブベクトル等)ごとのルックアップテーブルの参照するように、ノードの近傍オブジェクト(接続ノード)のデータを転置し、サブクラスごとにまとめ上げた順番でデータをノードにもつことで、参照の局所性がさらに高まり、高速化が可能となる。 In this way, in order to refer to the lookup table for each subclass (subvector, etc.) during the batch distance calculation, the data of the neighboring objects (connection nodes) of the node are transposed, and the data is put into the node in the order in which it was compiled for each subclass. By having it, the locality of reference is further enhanced, and speedup becomes possible.

なお、図3では説明を簡単にするために、4つのノードを対象として転置データを生成する場合を示すが、転置データを生成する単位(ノードの数)は、情報処理装置100の仕様に基づいて決定される。例えば、情報処理装置100の一括処理可能単位が「4」である場合、図3と同様の処理となるが、一括処理可能単位が「16」である場合、16個のノードを一つの単位として転置データが生成される。また、一括処理可能単位が「32」である場合、32個のノードを一つの単位として転置データが生成される。このように、情報処理装置100がSIMDにより一括して処理できる数(一括処理可能単位)に応じて生成される転置データを用いることで、情報処理装置100は、効率的にデータを参照することができるため、効率的な検索処理を可能にすることができる。 In order to simplify the explanation, FIG. 3 shows a case in which transposed data is generated for four nodes. determined by For example, when the batch processable unit of the information processing apparatus 100 is "4", the same processing as in FIG. 3 is performed. Transposed data is generated. Also, when the batch processable unit is "32", the transposed data is generated with 32 nodes as one unit. In this way, the information processing apparatus 100 can efficiently refer to data by using the transposed data generated according to the number of data that can be processed collectively by the information processing apparatus 100 by SIMD (batch processable unit). Therefore, efficient search processing can be enabled.

例えば、上述のような検索処理時の時間の多くは距離計算であるが、距離計算は上記のようなSIMDによる並列計算により高速化を図ることができる。このように距離計算を並列化した場合、オブジェクトデータをフェッチする時間が検索処理を占めることになる。このフェッチ時間を削減することができれば、さらなる高速化が実現される。なお、データをフェッチする時間を削減するにはプリフェッチを行う方法があるが、限界がある。 For example, most of the time during the search processing as described above is for distance calculation, and distance calculation can be speeded up by SIMD-based parallel calculation as described above. When the distance calculation is parallelized in this way, the time to fetch the object data occupies the search processing. If this fetch time can be reduced, further speedup will be realized. There is a method of prefetching to reduce the time to fetch data, but there is a limit.

一方、情報処理装置100は、上述のように参照の局所性を高め、効率的にデータを参照することを可能にすることにより、データのフェッチを抑制し、さらなる高速化を実現することができる。 On the other hand, the information processing apparatus 100 improves the locality of reference as described above and enables efficient data referencing, thereby suppressing data fetching and realizing further speedup. .

(検索結果)
なお、上述した第2距離(真の距離)による検索結果を返す場合には、以下の第1の方法及び第2の方法の2つの方法が考えられる。
(search results)
When returning search results based on the above-described second distance (true distance), the following two methods, a first method and a second method, are conceivable.

例えば、第1の方法としては、検索数を指定された検索数より多く探索し、探索終了時に、真の距離計算を行って距離でソートし、指定された検索数のオブジェクトを検索結果としてもよい。この場合、情報処理装置100は、指定された検索数(「第1数」ともいう)よりも多い数(「拡張検索数」ともいう)のノードを抽出するように、拡張検索数(「第2数」ともいう)を検索数として設定し、図11に示すような検索処理を行うことにより、拡張検索数のノード、すなわち指定された検索数よりも多い数のノードを近傍候補ノードとして抽出する。そして、情報処理装置100は、近傍候補ノードを対象として、第2距離(真の距離)を算出し、近傍候補ノードのうち、第2距離が短い方から第1数のノードを検索クエリの近傍のノードとして抽出する。 For example, as a first method, the number of searches is more than the specified number of searches, and at the end of the search, the true distance calculation is performed, sorted by distance, and the specified number of objects are used as the search results. good. In this case, the information processing apparatus 100 extracts a larger number of nodes (also referred to as an "extended search number") than the designated search number (also referred to as a "first number"). 2”) is set as the number of searches, and by performing the search process as shown in FIG. do. Then, the information processing apparatus 100 calculates the second distance (true distance) for the neighborhood candidate nodes, and selects the first number of nodes from among the neighborhood candidate nodes with the shortest second distance as the neighborhood of the search query. node.

また、例えば、第2の方法としては、探索中に、第1距離(近似距離)に基づいて、ノード(オブジェクト)が探索範囲内または検索範囲内に入った場合のみに、第2距離(真の距離)を計算し、近似距離を真の距離で置き換えることで、真の距離による検索結果を返してもよい。 Further, for example, as a second method, based on the first distance (approximate distance) during the search, only when the node (object) enters the search range or the search range, the second distance (true ) and replace the approximate distance with the true distance to return search results based on the true distance.

ここでいう、検索範囲は、図11中の「r」により規定される範囲であり、探索範囲は、図11中の検索範囲係数「ε」を用いた「r(1+ε)」により規定される範囲である。例えば、検索範囲に入った場合に第2距離(真の距離)を計算する場合、情報処理装置100は、ノードの第1距離(近似距離)が「r」以下となった場合に、そのノードの第2距離(真の距離)を算出する。また、探索範囲に入った場合に第2距離(真の距離)を計算する場合、情報処理装置100は、ノードの第1距離(近似距離)が「r(1+ε)」以下となった場合に、そのノードの第2距離(真の距離)を算出する。 Here, the search range is defined by "r" in FIG. 11, and the search range is defined by "r(1+ε)" using the search range coefficient "ε" in FIG. Range. For example, when calculating the second distance (true distance) when entering the search range, the information processing apparatus 100 calculates the node A second distance (true distance) of is calculated. Further, when calculating the second distance (true distance) when entering the search range, the information processing apparatus 100 calculates , compute the second distance (true distance) for that node.

例えば、精度を高める場合、探索範囲に入った場合を条件としてもよい。また、処理の高速化を求める場合、検索範囲に入った場合を条件としてもよい。なお、上記は一例に過ぎず、いずれを条件とするかは、検索範囲係数「ε」の値や処理の目的などに応じて適宜設定されてもよい。 For example, when increasing the accuracy, the condition may be the case where the search range is entered. Also, when speeding up the processing is desired, the condition may be that the object is within the search range. Note that the above is only an example, and which condition to use may be appropriately set according to the value of the search range coefficient "ε", the purpose of processing, and the like.

(ベクトル量子化)
なお、情報処理装置100は、特許文献3に示すように、2段階のベクトル量子化を行ってもよい。そして、情報処理装置100は、下記の式(1)により、検索クエリと各ノードとの距離を算出してもよい。
(Vector quantization)
Note that the information processing apparatus 100 may perform vector quantization in two stages, as disclosed in Patent Document 3. FIG. Then, the information processing apparatus 100 may calculate the distance between the search query and each node using the following formula (1).

Figure 2023013868000002
Figure 2023013868000002

ここで、上記式(1)中の左辺の値は、例えば、検索クエリとノードとの間の二乗距離を示す。また、例えば、上記式(1)中の「x」は、クエリに対応する。また、例えば、上記式(1)中の「y」は、ノードに対応する。また、例えば、上記式(1)の右辺中の「q(y)」は、「y」の代表ベクトル(セントロイド)を示す。例えば、情報処理装置100は、上記式(1)中の「y」について、ノードのベクトルデータを有しない場合は、各ノードが属する部分領域のセントロイドの数値を用いてもよい。また、例えば、「y-q(y)」は、残差ベクトルを示す。また、例えば、上記式(1)の右辺中の「q」は、所定の量子化器(関数)を示す。 Here, the value of the left side in the above formula (1) indicates, for example, the squared distance between the search query and the node. Also, for example, "x" in the above formula (1) corresponds to a query. Also, for example, "y" in the above formula (1) corresponds to a node. Also, for example, “q c (y)” in the right side of the above equation (1) indicates a representative vector (centroid) of “y”. For example, when the information processing apparatus 100 does not have vector data of nodes, the information processing apparatus 100 may use the numerical value of the centroid of the partial area to which each node belongs for "y" in the above equation (1). Also, for example, “y−q c (y)” indicates a residual vector. Also, for example, “q p ” in the right side of the above equation (1) indicates a predetermined quantizer (function).

また、例えば、上記式(1)の右辺中の「j」は、分割された空間の数であってもよい。例えば、図1の例では、上記式(1)の右辺中の「j」は、分割された空間の数「4」であってもよい。また、例えば、上記式(1)の右辺中の「u()」は、括弧中のベクトル間の部分残差ベクトルを示す。例えば、情報処理装置100は、上記式(1)を用いて、各部分空間におけるクエリとノードとの間の二乗距離を算出し、合算することにより、クエリとノードとの距離を算出してもよい。 Also, for example, "j" in the right side of the above equation (1) may be the number of divided spaces. For example, in the example of FIG. 1, "j" in the right side of equation (1) above may be the number of divided spaces "4". Also, for example, “u j ( )” on the right side of the above equation (1) indicates a partial residual vector between vectors in parentheses. For example, the information processing apparatus 100 may calculate the squared distance between the query and the node in each subspace using the above equation (1), and sum the squared distances between the query and the node to calculate the distance between the query and the node. good.

〔1-2.情報処理システムの構成〕
図4に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図4は、第1の実施形態に係る情報処理システムの構成例を示す図である。なお、図4に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
[1-2. Configuration of information processing system]
As shown in FIG. 4 , the information processing system 1 includes a terminal device 10 , an information providing device 50 and an information processing device 100 . The terminal device 10, the information providing device 50, and the information processing device 100 are connected via a predetermined network N so as to be communicable by wire or wirelessly. FIG. 4 is a diagram illustrating a configuration example of an information processing system according to the first embodiment. The information processing system 1 shown in FIG. 4 may include multiple terminal devices 10 , multiple information providing devices 50 , and multiple information processing devices 100 .

端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。 The terminal device 10 is an information processing device used by a user. The terminal device 10 accepts various operations by the user. In addition, below, the terminal device 10 may be described as a user. That is, hereinafter, the user can also be read as the terminal device 10 . The terminal device 10 described above is implemented by, for example, a smart phone, a tablet terminal, a notebook PC (Personal Computer), a desktop PC, a mobile phone, a PDA (Personal Digital Assistant), or the like.

情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。 The information providing device 50 is an information processing device that stores information for providing various information to users and the like. For example, the information providing device 50 stores object IDs based on character information and the like collected from various external devices such as web servers. For example, the information providing device 50 is an information processing device that provides an image search service to a user or the like. For example, the information providing device 50 stores each information for providing an image search service. For example, the information providing device 50 provides the information processing device 100 with vector information corresponding to images for which an image search service is to be performed. Further, by transmitting a query to the information processing device 100 , the information providing device 50 receives an object ID or the like indicating an image corresponding to the query from the information processing device 100 .

情報処理装置100は、検索サービスを提供するコンピュータである。情報処理装置100は、検索クエリに対応する指定された検索数のオブジェクトを検索結果として提供する。情報処理装置100は、検索対象となるノード(オブジェクト)がエッジで連結されたグラフを用いて、検索クエリの近傍のノード(オブジェクト)を検索結果として提供する。情報処理装置100は、複数のオブジェクトの各々に対応するノード群がエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、所定の基準により選択された複数のノードと検索クエリとの距離を、ベクトル量子化がされた複数のノードのベクトル情報を用いて算出する。 The information processing device 100 is a computer that provides a search service. The information processing apparatus 100 provides a designated search number of objects corresponding to the search query as search results. The information processing apparatus 100 uses a graph in which search target nodes (objects) are connected by edges to provide nodes (objects) near the search query as search results. The information processing apparatus 100 uses a graph in which a group of nodes corresponding to each of a plurality of objects are connected by edges to search for nodes in the vicinity of a search query. and the search query using vector quantized vector information of a plurality of nodes.

例えば、情報処理装置100は、端末装置10からクエリ(検索クエリ)を受信すると、検索クエリに類似する対象(オブジェクト)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、検索クエリや検索対象(オブジェクト)は、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。 For example, upon receiving a query (search query) from the terminal device 10, the information processing device 100 searches for targets (objects) similar to the search query, and provides search results to the terminal device. Further, for example, the data provided by the information processing device 100 to the terminal device may be data itself such as image information, or information for referring to corresponding data such as a URL (Uniform Resource Locator). good too. Also, the search query and search target (object) may be any type of data such as image, voice, and text data.

〔1-3.情報処理装置の構成〕
次に、図5を用いて、第1の実施形態に係る情報処理装置100の構成について説明する。図5は、第1の実施形態に係る情報処理装置100の構成例を示す図である。図5に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
[1-3. Configuration of Information Processing Device]
Next, the configuration of the information processing apparatus 100 according to the first embodiment will be described using FIG. FIG. 5 is a diagram showing a configuration example of the information processing apparatus 100 according to the first embodiment. As shown in FIG. 5, the information processing apparatus 100 has a communication section 110, a storage section 120, and a control section . The information processing apparatus 100 includes an input unit (for example, a keyboard, a mouse, etc.) that receives various operations from an administrator of the information processing apparatus 100, and a display unit (for example, a liquid crystal display, etc.) for displaying various information. may have.

(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図4中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(Communication unit 110)
The communication unit 110 is realized by, for example, a NIC (Network Interface Card) or the like. The communication unit 110 is connected to a network (for example, network N in FIG. 4) by wire or wirelessly, and transmits and receives information to and from the terminal device 10 and the information providing device 50 .

(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第1の実施形態に係る記憶部120は、図5に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124とを有する。
(storage unit 120)
The storage unit 120 is realized by, for example, a semiconductor memory device such as a RAM (Random Access Memory) or a flash memory, or a storage device such as a hard disk or an optical disk. The storage unit 120 according to the first embodiment includes an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, and a codebook information storage unit 124, as shown in FIG. .

(オブジェクト情報記憶部121)
第1の実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図6は、第1の実施形態に係るオブジェクト情報記憶部の一例を示す図である。図6に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
(Object information storage unit 121)
The object information storage unit 121 according to the first embodiment stores various information about objects. For example, the object information storage unit 121 stores object IDs and vector data. 6 is a diagram illustrating an example of an object information storage unit according to the first embodiment; FIG. The object information storage unit 121 shown in FIG. 6 includes items such as "object ID" and "vector information".

「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図6の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。 "Object ID" indicates identification information for identifying an object. "Vector information" indicates vector information corresponding to the object identified by the object ID. That is, in the example of FIG. 6, vector data (vector information) corresponding to an object is registered in association with an object ID that identifies the object.

例えば、図6の例では、オブジェクトID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2・・・」の多次元のベクトル情報が対応付けられることを示す。 For example, in the example of FIG. 6, the object (target) identified by the object ID "OB1" is associated with multidimensional vector information "10, 24, 51, 2...".

なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。 It should be noted that the object information storage unit 121 may store various types of information, not limited to the above, depending on the purpose.

(グラフ情報記憶部122)
第1の実施形態に係るグラフ情報記憶部122は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部122は、生成したグラフを記憶する。図7は、第1の実施形態に係るグラフ情報記憶部の一例を示す図である。図7に示すグラフ情報記憶部122は、「ノードID」、「オブジェクトID」、および「接続ノード情報」といった項目を有する。
(Graph information storage unit 122)
The graph information storage unit 122 according to the first embodiment stores various kinds of information about graphs. For example, the graph information storage unit 122 stores generated graphs. 7 is a diagram illustrating an example of a graph information storage unit according to the first embodiment; FIG. The graph information storage unit 122 shown in FIG. 7 has items such as "node ID", "object ID", and "connection node information".

「ノードID」は、グラフにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。なお、ノードIDとオブジェクトIDが共通である場合、「ノードID」にオブジェクトIDが記憶され、グラフ情報記憶部122に「オブジェクトID」の項目は含まれてなくてもよい。例えば、オブジェクトIDとノードIDとして用いる場合、「ノードID」にオブジェクトIDが記憶され、グラフ情報記憶部122に「オブジェクトID」の項目は含まれてなくてもよい。 "Node ID" indicates identification information for identifying each node (target) in the graph. "Object ID" indicates identification information for identifying an object. When the node ID and the object ID are common, the object ID may be stored in the “node ID” and the item “object ID” may not be included in the graph information storage unit 122 . For example, when used as an object ID and a node ID, the object ID may be stored in the "node ID" and the item "object ID" may not be included in the graph information storage unit 122. FIG.

また、「接続ノード情報」は、対応するノードから辿ることができるノード(参照先のノード)に関する情報を示す。例えば、「接続ノード情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのノードから辿ることができる参照先(ノード)を識別するための情報を示す。すなわち、図7の例では、ノードを識別するノードID(オブジェクトID)に対して、そのノードからエッジにより辿ることができる参照先(ノード)が対応付けられて登録されている。なお、「接続ノード情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 "Connection node information" indicates information about a node (reference destination node) that can be traced from the corresponding node. For example, "connection node information" includes information such as "reference destination". "Reference destination" indicates information for identifying a reference destination (node) that is connected by an edge and that can be traced from the node. That is, in the example of FIG. 7, a node ID (object ID) that identifies a node is registered in association with a reference destination (node) that can be traced from that node by an edge. The “connection node information” may include information (edge ID) for identifying the edge connected to the reference destination.

図7の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、ノードID「N4」により識別されるノード(ノードN4)にエッジが連結されており、ノードN1からノードN4へ辿ることができることを示す。 The example of FIG. 7 indicates that the node (node N1) identified by the node ID "N1" corresponds to the object (target) identified by the object ID "OB1". Also, from the node N1, an edge is connected to a node (node N4) identified by the node ID "N4", indicating that the node N1 can be traced to the node N4.

また、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、ノードID「N6」により識別されるノード(ノードN6)にエッジが連結されており、ノードN2からノードN6へ辿ることができることを示す。 It also indicates that the node (node N2) identified by the node ID "N2" corresponds to the object (target) identified by the object ID "OB2". Also, from the node N2, an edge is connected to the node (node N6) identified by the node ID "N6", indicating that the node N2 can be traced to the node N6.

また、ノードID「N7」により識別されるノード(ノードN7)は、オブジェクトID「OB7」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN7からは、ノードN9、N12、N54、N85にエッジが連結されており、ノードN2からノードN9、N12、N54、N85の各々へ辿ることができることを示す。 Also, the node (node N7) identified by the node ID "N7" corresponds to the object (target) identified by the object ID "OB7". Further, edges are connected from the node N7 to the nodes N9, N12, N54 and N85, indicating that the nodes N9, N12, N54 and N85 can be traced from the node N2.

なお、グラフ情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部122は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部122は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。なお、グラフ情報記憶部122は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。 It should be noted that the graph information storage unit 122 may store various types of information, not limited to the above, depending on the purpose. For example, the graph information storage unit 122 may store lengths of edges connecting nodes (vectors). That is, the graph information storage unit 122 may store information indicating distances between nodes (vectors). Note that the graph information storage unit 122 may store graph information in various data structures without being limited to the above.

また、グラフは、クエリを入力とし、グラフ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフGR1は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフGR1は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR1は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。 The graph may also include a program module that takes a query as input, searches for nodes by tracing edges in the graph, extracts and outputs nodes that are similar to the query. That is, the graph may be assumed to be used as a program module that performs search processing using the graph. For example, the graph GR1 may be a program that, when vector data is input as a query, extracts nodes corresponding to vector data similar to the vector data from the graph and outputs them. For example, the graph GR1 may be data used as a program module for retrieving similar images corresponding to the query image. For example, graph GR1 causes a computer to extract and output nodes similar to the query in the graph based on an input query.

(量子化情報記憶部123)
第1の実施形態に係る量子化情報記憶部123は、割当処理に関する各種情報を記憶する。図8は、第1の実施形態に係る量子化情報記憶部の一例を示す図である。図8の例では、量子化情報記憶部123には、「ノードID」、「オブジェクトID」、および「量子化情報」といった項目を有する。
(Quantization information storage unit 123)
The quantization information storage unit 123 according to the first embodiment stores various information regarding allocation processing. 8 is a diagram illustrating an example of a quantization information storage unit according to the first embodiment; FIG. In the example of FIG. 8, the quantization information storage unit 123 has items such as "node ID", "object ID", and "quantization information".

「ノードID」は、グラフにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。なお、ノードIDとオブジェクトIDが共通である場合、「ノードID」にオブジェクトIDが記憶され、量子化情報記憶部123に「オブジェクトID」の項目は含まれてなくてもよい。 "Node ID" indicates identification information for identifying each node (target) in the graph. "Object ID" indicates identification information for identifying an object. When the node ID and the object ID are common, the object ID may be stored in the “node ID” and the quantization information storage unit 123 may not include the item “object ID”.

また、「量子化情報」は、各ノード(オブジェクト)の量子化されたベクトルの情報を示す。例えば、「量子化情報」には、「要素」、「コードブックID」といった情報が含まれる。「要素」は、対応するオブジェクトのベクトルにおける配置を示す。図8の例では、「要素」には、「#1」、「#2」、「#3」、「#4」が含まれる場合を示す。この場合、各ノード(オブジェクト)のベクトルは4分割され、各分割された部分ベクトルがコードブックにより量子化されることを示す。なお、分割数は4に限らず、例えば分割数が6の場合、「要素」には、「#1」、「#2」、「#3」、「#4」、「#5」、「#6」が含まれる。「コードブックID」は、各要素(部分ベクトル)に対応するコードブックを識別するための情報を示す。 Also, "quantization information" indicates information on the quantized vector of each node (object). For example, "quantization information" includes information such as "element" and "codebook ID". "Element" indicates the placement of the corresponding object in the vector. In the example of FIG. 8, the "elements" include "#1", "#2", "#3", and "#4". In this case, the vector of each node (object) is divided into four, indicating that each divided partial vector is quantized by the codebook. Note that the number of divisions is not limited to 4. For example, when the number of divisions is 6, the "elements" include "#1", "#2", "#3", "#4", "#5", " #6” is included. "Codebook ID" indicates information for identifying the codebook corresponding to each element (partial vector).

図8の例では、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭の部分ベクトルがコードブックID「CD12」により識別されるコードブック(コードブックCD12)により量子化されることを示す。また、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭から2番目の部分ベクトルがコードブックID「CD23」により識別されるコードブック(コードブックCD23)により量子化されることを示す。 In the example of FIG. 8, the vector of node N9 (object OB9) is quantized by a codebook (codebook CD12) in which the leading partial vector among the four partial vectors is identified by codebook ID "CD12". indicates that Further, the vector of node N9 (object OB9) is quantized by a codebook (codebook CD23) in which the second partial vector from the beginning of the four partial vectors is identified by codebook ID "CD23". indicates that

また、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭から3番目の部分ベクトルがコードブックID「CD35」により識別されるコードブック(コードブックCD35)により量子化されることを示す。また、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭から4番目(すなわち最後尾)の部分ベクトルがコードブックID「CD47」により識別されるコードブック(コードブックCD47)により量子化されることを示す。 Further, the vector of node N9 (object OB9) is quantized by a codebook (codebook CD35) in which the third partial vector from the beginning of the four partial vectors is identified by codebook ID "CD35". indicates that The vector of node N9 (object OB9) is a codebook (codebook CD47 ) to be quantized.

なお、量子化情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。 It should be noted that the quantization information storage unit 123 may store various types of information, not limited to the above, depending on the purpose.

(コードブック情報記憶部124)
第1の実施形態に係るコードブック情報記憶部124は、コードブックに関する各種情報を記憶する。例えば、コードブック情報記憶部124は、コードブックIDや各コードブックのベクトル情報を記憶する。図9は、第1の実施形態に係るコードブック情報記憶部の一例を示す図である。図9の例では、コードブック情報記憶部124は、各コードブックとベクトルとの対応付けを示すルックアップテーブルを記憶する場合を一例として示す。
(Codebook information storage unit 124)
The codebook information storage unit 124 according to the first embodiment stores various information about codebooks. For example, the codebook information storage unit 124 stores codebook IDs and vector information of each codebook. 9 is a diagram illustrating an example of a codebook information storage unit according to the first embodiment; FIG. In the example of FIG. 9, the codebook information storage unit 124 stores a lookup table showing the correspondence between each codebook and vector.

コードブック情報記憶部124は、4分割された部分ベクトルのうち、先頭の部分ベクトルを量子化するために用いるコードブック情報TB1、4分割された部分ベクトルのうち、先頭から2番目の部分ベクトルを量子化するために用いるコードブック情報TB2を記憶する。また、コードブック情報記憶部124は、4分割された部分ベクトルのうち、先頭から3番目の部分ベクトルを量子化するために用いるコードブック情報TB3、4分割された部分ベクトルのうち、先頭から4番目(すなわち最後尾)の部分ベクトルを量子化するために用いるコードブック情報TB4等を記憶する。 The codebook information storage unit 124 stores codebook information TB1 used for quantizing the first partial vector among the partial vectors divided into four, and the second partial vector from the beginning among the partial vectors divided into four. Codebook information TB2 used for quantization is stored. Further, the codebook information storage unit 124 stores codebook information TB3 used for quantizing the third partial vector from the top of the partial vectors divided into four, the fourth partial vector from the top of the four partial vectors, and Stores codebook information TB4 and the like used for quantizing the th (that is, the last) partial vector.

図9の例では、コードブック情報TB1には、コードブックID「CD11」により識別されるコードブック(コードブックCD11)やコードブックID「CD12」により識別されるコードブック(コードブックCD12)等のコードブック情報を記憶する。例えば、コードブックCD11は、「5,13・・・」の多次元のベクトル情報が対応付けられることを示す。また、コードブックCD12は、「27,51・・・」の多次元のベクトル情報が対応付けられることを示す。 In the example of FIG. 9, the codebook information TB1 includes a codebook (codebook CD11) identified by the codebook ID "CD11", a codebook (codebook CD12) identified by the codebook ID "CD12", and the like. Store codebook information. For example, codebook CD11 indicates that multidimensional vector information of "5, 13..." is associated. Also, the codebook CD12 indicates that multidimensional vector information of "27, 51..." is associated.

なお、コードブック情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、コードブック情報記憶部124は、各コードブックと検索クエリとの差分(距離)を示す情報を記憶してもよい。 Note that the codebook information storage unit 124 may store various types of information, not limited to the above, depending on the purpose. For example, the codebook information storage unit 124 may store information indicating the difference (distance) between each codebook and the search query.

(制御部130)
図5の説明に戻って、制御部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)等の集積回路により実現される。
(control unit 130)
Returning to the explanation of FIG. 5 , the control unit 130 is a controller, and for example, a CPU (Central Processing Unit), MPU (Micro Processing Unit), GPU (Graphics Processing Unit), etc. control the inside of the information processing apparatus 100 Various programs (corresponding to an example of an information processing program) stored in the storage device are executed by using the RAM as a work area. Also, the control unit 130 is a controller, and is implemented by an integrated circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).

図5に示すように、制御部130は、取得部131と、生成部132と、検索処理部133と、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図5に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。 As shown in FIG. 5, the control unit 130 includes an acquisition unit 131, a generation unit 132, a search processing unit 133, and a provision unit 134, and realizes or executes information processing functions and actions described below. do. Note that the internal configuration of the control unit 130 is not limited to the configuration shown in FIG. 5, and may be another configuration as long as it performs information processing described later.

(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、グラフ情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
(Acquisition unit 131)
Acquisition unit 131 acquires various types of information. For example, the acquisition unit 131 acquires various information from the storage unit 120 . For example, the acquisition unit 131 acquires various information from the object information storage unit 121, the graph information storage unit 122, the quantization information storage unit 123, the codebook information storage unit 124, and the like. The acquisition unit 131 also acquires various types of information from an external information processing device. The acquisition unit 131 acquires various types of information from the terminal device 10 and the information providing device 50 .

取得部131は、グラフを取得する。例えば、情報処理装置100は、図1中の空間情報SP1を取得してもよい。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフを取得してもよい。 Acquisition unit 131 acquires a graph. For example, the information processing apparatus 100 may acquire spatial information SP1 in FIG. For example, the information processing device 100 may acquire a graph from an external device such as the information providing device 50 .

取得部131は、データ検索の対象となる複数のオブジェクトに対する検索クエリを取得する。例えば、取得部131は、検索クエリQE1に関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。 The acquisition unit 131 acquires search queries for a plurality of objects to be searched for data. For example, the acquisition unit 131 acquires information regarding the search query QE1. For example, the acquisition unit 131 acquires a search query related to image search. For example, the acquisition unit 131 acquires a query from the terminal device 10 to be used. For example, the acquisition unit 131 acquires a query from the information providing device 50 that has received the query from the terminal device 10 to be used.

(生成部132)
生成部132は、各種情報を生成する。例えば、生成部132は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部132は、オブジェクト情報記憶部121や、グラフ情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124等に記憶された情報(データ)から各種情報を生成する。
(Generating unit 132)
The generator 132 generates various types of information. For example, the generation unit 132 generates various types of information (data) from information (data) stored in the storage unit 120 . For example, the generation unit 132 generates various information from information (data) stored in the object information storage unit 121, the graph information storage unit 122, the quantization information storage unit 123, the codebook information storage unit 124, and the like. .

生成部132は、グラフ情報記憶部122に示すようなグラフを生成してもよい。例えば、生成部132は、空間情報SP1を生成する。また、生成部132は、量子化情報記憶部123に示すようなベクトル量子化に関する情報を生成してもよい。例えば、生成部132は、ノードN1(オブジェクトOB1)等の各オブジェクトがベクトル量子化された情報を生成する。また、生成部132は、コードブック情報記憶部124に示すようなコードブックに関する情報を生成してもよい。生成部132は、コードブックのルックアップテーブルを生成してもよい。例えば、生成部132は、コードブック情報TB1~TB4のような、コードブックに関する情報を生成する。なお、情報処理装置100がグラフ情報記憶部122、量子化情報記憶部123、コードブック情報記憶部124に示す情報を、情報提供装置50等の外部装置から取得する場合、情報処理装置100は、生成部132を有しなくてもよい。 The generation unit 132 may generate a graph as shown in the graph information storage unit 122. FIG. For example, the generator 132 generates spatial information SP1. The generation unit 132 may also generate information on vector quantization as shown in the quantization information storage unit 123 . For example, the generation unit 132 generates information obtained by vector-quantizing each object such as the node N1 (object OB1). In addition, the generation unit 132 may generate information about codebooks as shown in the codebook information storage unit 124 . The generator 132 may generate a codebook lookup table. For example, the generator 132 generates information about codebooks, such as codebook information TB1 to TB4. When the information processing device 100 acquires the information shown in the graph information storage unit 122, the quantization information storage unit 123, and the codebook information storage unit 124 from an external device such as the information providing device 50, the information processing device 100 The generator 132 may not be provided.

(検索処理部133)
検索処理部133は、オブジェクトに関する検索サービスを提供する。検索処理部133は、各種情報を探索する。検索処理部133は、各種情報を検索する。例えば、検索処理部133は、グラフを探索することにより、オブジェクトを検索する。例えば、検索処理部133は、取得部131により取得されたクエリが取得された場合、グラフを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索処理部133は、グラフを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、検索処理部133は、図11に示すような処理手順に基づいて、グラフを探索することにより、クエリに類似するオブジェクトを抽出する。なお、情報処理装置100は、検索サービスを提供しない場合、検索処理部133を有しなくてもよい。
(Search processing unit 133)
The search processing unit 133 provides a search service for objects. The search processing unit 133 searches for various types of information. The search processing unit 133 searches for various types of information. For example, the search processing unit 133 searches for objects by searching the graph. For example, when the query acquired by the acquisition unit 131 is acquired, the search processing unit 133 searches the graph for objects similar to the query. For example, the search processing unit 133 extracts objects similar to the query by searching the graph. For example, the search processing unit 133 extracts objects similar to the query by searching the graph based on the processing procedure shown in FIG. Note that the information processing apparatus 100 may not have the search processing unit 133 when not providing a search service.

検索処理部133は、検索処理において各種情報を選択する。検索処理部133は、検索処理において各種情報を抽出する。検索処理部133は、検索処理において各種情報を判定する。検索処理部133は、検索処理において各種情報を決定する。検索処理部133は、検索処理において各種情報を変更する。検索処理部133は、検索処理において各種情報を更新する。 The search processing unit 133 selects various types of information in search processing. The search processing unit 133 extracts various types of information in search processing. The search processing unit 133 determines various types of information in search processing. The search processing unit 133 determines various types of information in search processing. The search processing unit 133 changes various information in the search process. The search processing unit 133 updates various information in the search process.

検索処理部133は、複数のオブジェクトの各々に対応するノード群がエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、所定の基準により選択された複数のノードと検索クエリとの距離を、ベクトル量子化がされた複数のノードのベクトル情報を用いて算出する。検索処理部133は、複数のノードと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133は、情報処理装置100の仕様に基づいて決定される一括処理数の複数のノードと検索クエリとの距離の算出を並列処理する。 The search processing unit 133 selects a plurality of nodes according to a predetermined criterion in a search process for searching for nodes near the search query using a graph in which a group of nodes corresponding to each of a plurality of objects are connected by edges. and the search query using vector quantized vector information of a plurality of nodes. The search processing unit 133 parallelizes and collectively calculates the distances between a plurality of nodes and the search query. The search processing unit 133 parallel-processes the calculation of the distance between a search query and a plurality of nodes whose batch processing number is determined based on the specifications of the information processing apparatus 100 .

検索処理部133は、複数のノードの各々が対応する代表ベクトルに対応付けられたコードブックを用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、一のノードからのエッジが連結された複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードと複数のノードの各々が対応付けられた代表ベクトルを示す参照用情報が一のノードに対応付けて記憶されたノード情報を用いて、複数のノードと検索クエリとの距離を算出する。 The search processing unit 133 calculates the distance between the plurality of nodes and the search query using a codebook in which each of the plurality of nodes is associated with the corresponding representative vector. The search processing unit 133 calculates the distance between a search query and a plurality of nodes to which edges from one node are connected. The search processing unit 133 searches a plurality of nodes and a search query using node information in which reference information indicating a representative vector associated with each of a plurality of nodes and each of the plurality of nodes is associated with one node and stored. Calculate the distance from

検索処理部133は、直積量子化により、各々が複数の部分ベクトルに分割された複数のノードのベクトル情報を用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードの各々が分割された複数の部分ベクトルの分割位置ごとのベクトルに対応する代表ベクトルに対応付けられた複数のコードブックを用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードと複数のノードの各々の複数の部分ベクトルの各々が対応付けられた代表ベクトルを示す参照用情報が一のノードに対応付けて記憶されたノード情報を用いて、複数のノードと検索クエリとの距離を算出する。 The search processing unit 133 calculates the distance between the plurality of nodes and the search query using the vector information of the plurality of nodes each divided into a plurality of partial vectors by direct product quantization. The search processing unit 133 uses a plurality of codebooks associated with a representative vector corresponding to a vector at each division position of a plurality of partial vectors obtained by dividing each of the plurality of nodes, and a search query and a plurality of nodes. Calculate the distance of The search processing unit 133 uses node information in which reference information indicating a representative vector associated with each of a plurality of nodes and a plurality of partial vectors of each of the plurality of nodes is stored in association with one node. , to calculate the distance between multiple nodes and the search query.

検索処理部133は、複数のノードの各々に、各ノードの複数の部分ベクトルの各々が対応付けられた代表ベクトルの一覧が対応付けられた参照用情報を用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードの各々の複数の部分ベクトルの各々が対応する代表ベクトルが、分割位置ごとに一覧で並ぶ転置情報と、複数のノードの各々が一覧で対応する位置を示す対応付情報とを含む参照用情報を用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードの各々の複数の部分ベクトルの各々が対応する代表ベクトルに対応付けられた一のコードブックを用いて、複数のノードと検索クエリとの距離を算出する。 The search processing unit 133 uses reference information in which a list of representative vectors in which each of a plurality of partial vectors of each node is associated with each of a plurality of nodes is used to determine a plurality of nodes and a search query. Calculate the distance of The search processing unit 133 generates transposition information in which representative vectors corresponding to each of the partial vectors of each of the plurality of nodes are arranged in a list for each division position, and correspondence indicating the position to which each of the plurality of nodes corresponds in the list. The distance between the plurality of nodes and the search query is calculated using the reference information including the attached information. The search processing unit 133 calculates the distance between the plurality of nodes and the search query using one codebook in which each of the plurality of partial vectors of each of the plurality of nodes is associated with the corresponding representative vector.

検索処理部133は、検索処理において処理対象となったノードのうち、所定のノードを対象として、ベクトル量子化がされた距離である第1距離とは異なり、ベクトル量子化がされていない第2距離を算出する。検索処理部133は、検索処理において検索クエリの近傍のノードとして抽出するノードの第1数よりも多い数である第2数のノードを近傍候補ノードとして抽出し、近傍候補ノードを対象として第2距離を算出する。検索処理部133は、近傍候補ノードのうち、第2距離が短い方から第1数のノードを検索クエリの近傍のノードとして抽出する。 The search processing unit 133 targets predetermined nodes among the nodes to be processed in the search processing. Calculate the distance. The search processing unit 133 extracts, as neighborhood candidate nodes, a second number of nodes that is larger than the first number of nodes extracted as neighborhood nodes of the search query in the search processing, and selects the neighborhood candidate nodes as targets for the second number of nodes. Calculate the distance. The search processing unit 133 extracts, from the neighborhood candidate nodes, the first number of nodes in descending order of the second distance as the neighborhood nodes of the search query.

検索処理部133は、第1距離が所定の閾値以内であるノードを対象として第2距離を算出する。検索処理部133は、近傍のノードとして抽出する対象範囲を示す検索範囲内のノードを対象として第2距離を算出する。検索処理部133は、検索処理の対象範囲を示す探索範囲内のノードを対象として第2距離を算出する。 The search processing unit 133 calculates the second distance for nodes whose first distance is within a predetermined threshold. The search processing unit 133 calculates a second distance for nodes within a search range indicating a target range to be extracted as neighboring nodes. The search processing unit 133 calculates the second distance for the nodes within the search range indicating the target range of the search process.

(提供部134)
提供部134は、各種情報を提供する。例えば、提供部134は、端末装置10や情報提供装置50に各種情報を送信する。例えば、提供部134は、検索クエリに対応するオブジェクトIDを検索結果として提供する。提供部134は、検索結果を端末装置10へ送信する。提供部134は、検索処理部133により検索されたオブジェクトIDを、検索クエリに対応する検索結果として端末装置10へ提供する。
(Providing unit 134)
The providing unit 134 provides various information. For example, the providing unit 134 transmits various information to the terminal device 10 and the information providing device 50 . For example, the providing unit 134 provides object IDs corresponding to search queries as search results. The providing unit 134 transmits the search result to the terminal device 10 . The providing unit 134 provides the terminal device 10 with the object ID searched by the search processing unit 133 as a search result corresponding to the search query.

また、提供部134は、検索処理部133により検索されたオブジェクトIDを情報提供装置50へ提供してもよい。例えば、提供部134は、検索処理部133が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部134は、検索処理部133により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。 Further, the providing unit 134 may provide the information providing device 50 with the object ID searched by the search processing unit 133 . For example, the providing unit 134 provides the information providing device 50 with the object ID extracted by the search processing unit 133 . The providing unit 134 provides the information providing device 50 with the object ID extracted by the search processing unit 133 as information indicating the vector corresponding to the query.

〔1-4.情報処理のフロー〕
次に、図10を用いて、第1の実施形態に係る情報処理システム1による情報処理の手順について説明する。図10は、第1の実施形態に係る情報処理の一例を示すフローチャートである。
[1-4. Information processing flow]
Next, the procedure of information processing by the information processing system 1 according to the first embodiment will be described with reference to FIG. 10 . FIG. 10 is a flowchart illustrating an example of information processing according to the first embodiment.

図10に示すように、情報処理装置100は、データ検索の対象となる複数のオブジェクトに対する検索クエリを取得する(ステップS101)。図1の例では、情報処理装置100は、検索クエリQE1を取得する。 As shown in FIG. 10, the information processing apparatus 100 acquires search queries for a plurality of objects to be searched for data (step S101). In the example of FIG. 1, the information processing device 100 acquires the search query QE1.

そして、情報処理装置100は、複数のオブジェクトの各々に対応するノード群がエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、所定の基準により選択された複数のノードと検索クエリとの距離を、ベクトル量子化がされた複数のノードのベクトル情報を用いて算出する(ステップS102)。図1の例では、情報処理装置100は、複数のノードN9、N12、N54、N85と前記検索クエリQE1との距離を、ベクトル量子化がされた複数のノードN9、N12、N54、N85のベクトル情報を用いて算出する。 Then, the information processing apparatus 100 uses a graph in which a group of nodes corresponding to each of a plurality of objects are connected by edges to search for nodes in the vicinity of the search query. is calculated using vector information of a plurality of nodes subjected to vector quantization (step S102). In the example of FIG. 1, the information processing apparatus 100 calculates the distances between the plurality of nodes N9, N12, N54, and N85 and the search query QE1 as vectors of the plurality of nodes N9, N12, N54, and N85 that have undergone vector quantization. Calculate using information.

〔1-5.検索処理例〕
ここで、第1の実施形態に係る検索処理の一例について、図11を一例として説明する。図11は、第1の実施形態に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100の検索処理部133によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、以下では、情報処理装置100(検索処理部133)が検索処理を行う。なお、検索サービスを提供しない場合、情報処理装置100は検索処理部133を有しなくてもよい。以下で説明する処理の検索クエリは、追加ノードや対象ノードやユーザが指定したオブジェクト等であってもよい。
[1-5. Search processing example]
Here, an example of search processing according to the first embodiment will be described with reference to FIG. 11 as an example. FIG. 11 is a flowchart illustrating an example of search processing according to the first embodiment. The search processing described below is performed by the search processing unit 133 of the information processing apparatus 100 . Also, the object referred to below may be read as a node. In addition, below, the information processing apparatus 100 (search processing unit 133) performs search processing. Note that the information processing apparatus 100 does not need to have the search processing unit 133 when the search service is not provided. The search query for the processing described below may be an additional node, a target node, an object specified by the user, or the like.

ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、空間情報SP1に示すグラフGR1等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。 Here, the neighborhood object set N(G, y) is the set of neighborhood objects associated by the edge attached to node y. "G" may be predetermined graph data (for example, graph GR1 shown in spatial information SP1, etc.). For example, the information processing apparatus 100 executes k-nearest neighbor search processing.

例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。 For example, the information processing apparatus 100 sets the radius r of the hypersphere to ∞ (infinity) (step S300), and extracts the subset S from the existing object set (step S301). For example, the information processing apparatus 100 may extract the object (node) selected as the root node as the subset S. FIG. Also, for example, a hypersphere is a virtual sphere that indicates a search range. The objects included in the object set S extracted in step S301 are also included in the initial set of the object set R of the search results.

次に、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)のみがSの要素の場合には、結果的にルートノードがオブジェクトsとして抽出される。次に、情報処理装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。 Next, the information processing apparatus 100 extracts an object having the shortest distance from the object y, where y is the search query object, among the objects included in the object set S, and sets it as an object s (step S302). For example, when only the object (node) selected as the root node is an element of S, the information processing apparatus 100 extracts the root node as the object s. Next, the information processing apparatus 100 excludes the object s from the object set S (step 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)、処理を終了する。 Next, the information processing apparatus 100 determines whether or not the distance d(s, y) between the object s and the object y exceeds r(1+ε) (step S304). Here, ε is an expansion factor, and r(1+ε) is a value that indicates the radius of the search range (only nodes within this range are searched; making it larger than the search range increases the accuracy). be. When the distance d(s, y) between the object s and the object y exceeds r(1+ε) (step S304: Yes), the information processing device 100 outputs the object set R as a neighborhood object set of the object y (step S305), the process ends.

オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。 If the distance d(s, y) between the object s and the search query object y does not exceed r(1+ε) (step S304: No), the information processing apparatus 100 calculates the neighborhood object set N(G, s) of the object s. One object not included in the object set C is selected from the objects that are elements of , and the selected object u is stored in the object set C (step S306). The object set C is provided for convenience in order to avoid duplicate searches, and is set to an empty set at the start of processing.

次に、情報処理装置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の判定(処理)を行う。 Next, the information processing apparatus 100 determines whether or not the distance d(u, y) between the object u and the object y is r(1+ε) or less (step S307). If the distance d(u, y) between the object u and the object y is less than or equal to r(1+ε) (step S307: Yes), the information processing apparatus 100 adds the object u to the object set S (step S308). If the distance d(u, y) between the object u and the object y is not less than r(1+ε) (step S307: No), the information processing apparatus 100 performs determination (processing) in step S309.

次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。すなわち、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合、情報処理装置100は、ステップS315の判定(処理)を行う。 Next, the information processing apparatus 100 determines whether or not the distance d(u, y) between the object u and the object y is less than or equal to r (step S309). When the distance d(u, y) between the object u and the object y exceeds r (step S309: No), the information processing apparatus 100 performs determination (processing) of step S315. That is, when the distance d(u, y) between the object u and the object y is not equal to or less than r, the information processing apparatus 100 performs determination (processing) in step S315.

オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索数や抽出対象数であってもよい。また、例えば、範囲検索等において抽出するオブジェクト数の上限を設けない場合、ksは、無限大に設定されてもよい。例えば、ks=4等であってもよい。オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。 If the distance d(u, y) between the object u and the object y is less than or equal to r (step S309: Yes), the information processing apparatus 100 adds the object u to the object set R (step S310). Then, the information processing apparatus 100 determines whether or not the number of objects included in the object set R exceeds ks (step S311). The predetermined number ks is an arbitrarily determined natural number. For example, ks may be the number of searches or the number of extraction targets. Also, for example, if there is no upper limit on the number of objects to be extracted in a range search or the like, ks may be set to infinity. For example, ks=4 or the like may be used. When the number of objects included in the object set R does not exceed ks (step S311: No), the information processing apparatus 100 performs determination (processing) in step S313.

オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。 If the number of objects included in the object set R exceeds ks (step S311: Yes), the information processing apparatus 100 selects the object that is the longest (farthest) from the object y among the objects included in the object set R, It is excluded from the object set R (step S312).

次に、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。 Next, the information processing apparatus 100 determines whether or not the number of objects included in the object set R matches ks (step S313). If the number of objects included in the object set R does not match ks (step S313: No), the information processing apparatus 100 performs determination (processing) in step S315. If the number of objects included in the object set R matches ks (step S313: Yes), the information processing apparatus 100 determines that the object y has the longest (farthest) distance among the objects included in the object set R. The distance between the object and object y is set to a new r (step S314).

そして、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。 Then, the information processing apparatus 100 determines whether or not all objects have been selected from objects that are elements of the neighborhood object set N(G, s) of the object s and stored in the object set C (step S315). . If all the objects that are elements of the neighborhood object set N(G, s) of the object s have not been selected and stored in the object set C (step S315: No), the information processing apparatus 100 proceeds to step S306. and repeat the process.

オブジェクト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)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。 When all objects are selected from the objects that are elements of the neighborhood object set N(G, s) of the object s and stored in the object set C (step S315: Yes), the information processing apparatus 100 returns the object set S is an empty set (step S316). If the object set S is not an empty set (step S316: No), the information processing apparatus 100 returns to step S302 and repeats the process. If the object set S is an empty set (step S316: Yes), the information processing apparatus 100 outputs the object set R and ends the process (step S317). For example, the information processing apparatus 100 may select an object (node) included in the object set R as a neighboring node corresponding to the additional node (input object y). For example, the information processing apparatus 100 may extract (select) objects (nodes) included in the object set R as neighboring nodes corresponding to the target node (input object y). Further, for example, the information processing apparatus 100 may provide objects (nodes) included in the object set R as a search result corresponding to the search query (input object y) to the terminal device or the like that performed the search.

〔2.第2の実施形態〕
ここから、第2の実施形態について説明する。第2の実施形態は、クラスタリングなどにより近傍オブジェクトをグルーピングし、各グループ(以下「ブロブ」ともいう)を一括して距離計算を行う対象とする。すなわち、第2の実施形態では、ブロブ単位で一括距離計算を行う。なお、第1の実施形態と同様の点については、適宜説明を省略する。第2の実施形態においては、情報処理システム1は、情報処理装置100に代えて、情報処理装置100Aを有する。
[2. Second Embodiment]
A second embodiment will now be described. In the second embodiment, neighboring objects are grouped by clustering or the like, and each group (hereinafter also referred to as "blob") is collectively targeted for distance calculation. That is, in the second embodiment, batch distance calculation is performed for each blob. Note that descriptions of the same points as in the first embodiment will be omitted as appropriate. In the second embodiment, the information processing system 1 has an information processing device 100A instead of the information processing device 100. FIG.

〔2-1.情報処理〕
まず、図12を用いて、第2の実施形態に係る情報処理の概要を説明する。図12は、第2の実施形態に係る情報処理の一例を示す図である。
[2-1. information processing]
First, an overview of information processing according to the second embodiment will be described with reference to FIG. FIG. 12 is a diagram illustrating an example of information processing according to the second embodiment.

図12の例では、情報処理装置100Aは、空間情報SP21に示すようなグラフGR21を取得済みであるものとする。例えば図1中の空間情報SP21は、ユークリッド空間であってもよい。例えば、空間情報SP21は、オブジェクトのベクトルの次元数に対応し、100次元や1000次元等の多次元空間であるものとする。なお、図12の例では、説明を簡単にするために直積量子化が行われていない図を基に説明するが、図1と同様にベクトル(空間)の直積量子化が行われてもよい。 In the example of FIG. 12, it is assumed that the information processing apparatus 100A has acquired a graph GR21 as shown in spatial information SP21. For example, the spatial information SP21 in FIG. 1 may be Euclidean space. For example, the space information SP21 corresponds to the number of dimensions of the vector of the object, and is assumed to be a multi-dimensional space such as 100 or 1000 dimensions. In the example of FIG. 12, for the sake of simplicity, description will be made based on a diagram in which direct product quantization is not performed, but vector (space) direct product quantization may be performed in the same manner as in FIG. .

まず、図12で示す各情報について説明する。図12の空間情報SP21中のノードである白丸(〇)間を接続する点線がノード間を連結するエッジを示す。図12では、図1と同様に無向エッジを例として示すが、グラフGR21のエッジは、無向エッジに限らず、有向エッジであってもよい。なお、ノートやエッジについては図1と同様であるため詳細な説明は省略する。 First, each information shown in FIG. 12 will be described. Dotted lines connecting white circles (o) that are nodes in the spatial information SP21 of FIG. 12 indicate edges connecting the nodes. FIG. 12 shows an example of undirected edges as in FIG. 1, but the edges of the graph GR21 are not limited to undirected edges and may be directed edges. Since notes and edges are the same as in FIG. 1, detailed descriptions thereof are omitted.

図12の空間情報SP21において、直線で囲まれた領域はクラスタリングなどで近傍のオブジェクトがまとめ上げられた(グループ化された)ものであり、領域をブロブと称する。以下で示す例ではブロブが一括距離計算の処理単位となる。図12は、ブロブBL1~BL10の10個の領域(ブロブ)にクラスタリングされた場合を示す。例えば、ブロブBL1は、ノードN7、N9、N85、N126等の複数のノードが属するブロブであることを示す。なお、ブロブBL1~BL10中の黒い点は、各ブロブのセントロイド(代表ベクトル)を示す。 In the spatial information SP21 of FIG. 12, the area surrounded by straight lines is a collection (grouping) of nearby objects by clustering or the like, and the area is called a blob. In the example shown below, a blob is the processing unit for batch distance calculation. FIG. 12 shows the case of clustering into 10 regions (blobs) of blobs BL1 to BL10. For example, blob BL1 indicates that it is a blob to which multiple nodes such as nodes N7, N9, N85, and N126 belong. The black dots in the blobs BL1 to BL10 indicate the centroids (representative vectors) of each blob.

なお、ブロブBL1~BL10は、クラスタリング等に関する種々の手法を適宜用いて生成される。例えば、ブロブに分類するためのクラスタリングは、k-meansクラスタリングでもよい。また、例えば、ブロブに分類するためのクラスタリングは、k-meansでの一回のイテレーション(アサイン)で各クラスタの中心座標(平均)で得られたセントロイドを次のイテレーションに使うのではなく、その代わりに、各セントロイドに最も近いオブジェクトにセントロイドを置き換えてから、次のイテレーションを行ってもよい。この場合、k-meansで得られる最終的なクラスタのセントロイドは既存のオブジェクト、つまり、ノードとなる。これにより、クラスタ(ブロブ)と各ノードのエッジ(近傍ノード)が一致する傾向が高まり、検索性能をさらに向上させることができる。 Note that the blobs BL1 to BL10 are generated by appropriately using various methods related to clustering and the like. For example, the clustering for classifying into blobs may be k-means clustering. Also, for example, in clustering for classifying into blobs, instead of using the centroid obtained at the center coordinates (average) of each cluster in one iteration (assignment) with k-means in the next iteration, Alternatively, we can replace the centroids with the objects closest to each centroid before the next iteration. In this case, the centroid of the final cluster obtained by k-means is the existing object, ie, the node. As a result, clusters (blobs) are more likely to match edges (nearby nodes) of each node, and search performance can be further improved.

図12の例では、情報処理装置100Aは、空間情報SP21に示すように、複数のノード(オブジェクト)をクラスタリングすることにより、分類した複数のブロブBL1~BL10の情報を用いて、検索処理を行う。 In the example of FIG. 12, the information processing device 100A performs search processing using information of a plurality of blobs BL1 to BL10 classified by clustering a plurality of nodes (objects) as shown in the spatial information SP21. .

ここから、検索クエリQE2を対象とする検索処理を説明する。まず、情報処理装置100Aは、検索クエリQE2を取得する(ステップS21)。例えば、情報処理装置100Aは、ユーザが利用する端末装置10(図4参照)から検索クエリQE2を取得する。 From here, the search processing for the search query QE2 will be described. First, the information processing device 100A acquires the search query QE2 (step S21). For example, the information processing device 100A acquires the search query QE2 from the terminal device 10 (see FIG. 4) used by the user.

そして、情報処理装置100Aは、検索クエリQE2のベクトルと、コードブックのベクトルとの間の距離を算出する。図示は省略するが直積量子化を行っていない場合、情報処理装置100Aは、検索クエリQE2のベクトルと、ベクトル全体を量子化するためのコードブックのベクトルとの間の距離(差分)を算出する。そして、情報処理装置100Aは、検索クエリQE2のベクトルと各コードブックのベクトルとの間の距離(差分)を、各コードブックを識別するための情報に対応付けてコードブック情報TB21として保持する。なお、直積量子化を行っている場合、情報処理装置100Aは、図1と同様に、図2のコードブック情報TB1~TB4に示すように、検索クエリQE2の各サブベクトルと各コードブックのベクトルとの間の距離(差分)を算出する。なお、検索クエリのベクトルとコードブックのベクトルとの距離算出は、図1、図2等と同様であるため詳細な説明は省略する。 The information processing device 100A then calculates the distance between the vector of the search query QE2 and the vector of the codebook. Although illustration is omitted, when direct product quantization is not performed, the information processing device 100A calculates the distance (difference) between the vector of the search query QE2 and the vector of the codebook for quantizing the entire vector. . The information processing device 100A stores the distance (difference) between the vector of the search query QE2 and the vector of each codebook as codebook information TB21 in association with information for identifying each codebook. Note that when direct product quantization is performed, the information processing device 100A, similarly to FIG. Calculate the distance (difference) between Calculation of the distance between the search query vector and the codebook vector is the same as in FIGS. 1 and 2, and detailed description thereof will be omitted.

情報処理装置100Aは、検索クエリQE2を対象とする検索処理を実行する(ステップS22)。情報処理装置100Aは、検索クエリQE2を対象として、グラフGR21を用いた図16に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。図16に示す検索処理についての詳細は後述する。情報処理装置100Aは、検索クエリQE2を対象として検索処理を行うことにより、検索数のノードを検索クエリQE2の近傍のノードとして抽出する。 The information processing device 100A executes search processing for the search query QE2 (step S22). The information processing device 100A obtains the search result of the search query QE2 by performing the search process as shown in FIG. 16 using the graph GR21 for the search query QE2. Details of the search processing shown in FIG. 16 will be described later. The information processing apparatus 100A extracts the number of nodes to be searched as nodes in the vicinity of the search query QE2 by performing the search process on the search query QE2.

情報処理装置100Aは、検索クエリQE2を対象とする検索処理において、各ノードのうち、所定のノードをグラフGR21の検索の起点となるノード(起点ノード)として選択する。図12の例では、情報処理装置100Aは、起点ノードとして、ノードN9を選択するものとする。図12の例では、情報処理装置100Aは、例えば、ノードN9を処理対象として検索処理を開始する。 The information processing apparatus 100A selects a predetermined node from among the nodes as a node (originating node) that serves as a starting point for searching the graph GR21 in the retrieval process for the retrieval query QE2. In the example of FIG. 12, the information processing device 100A selects the node N9 as the starting node. In the example of FIG. 12, the information processing apparatus 100A starts search processing with the node N9 as the processing target, for example.

ここで、情報処理装置100Aは、検索クエリQE2を対象とする検索処理において、処理対象となるノードが属するブロブに属する複数のノードと検索クエリとの距離を並列化して算出する(ステップS23)。図12では、情報処理装置100Aは、一括処理情報LT2に示すように、処理対象となるノードN9が属するブロブBL1に属するノードであるノードN7、N9、N85、N126等については、検索クエリQE2との距離を並列化して算出する。 Here, the information processing apparatus 100A parallelizes and calculates the distances between the search query and a plurality of nodes belonging to the blob to which the node to be processed belongs in the search processing for the search query QE2 (step S23). In FIG. 12, the information processing apparatus 100A, as shown in batch processing information LT2, performs search query QE2 and are parallelized and calculated.

情報処理装置100Aは、コードブック情報TB21が示す各コードブックと検索クエリQE2との間の距離を用いて、ノードN7、N9、N85、N126の各々と検索クエリQE2との距離を算出する。例えば、情報処理装置100Aは、コードブック情報TB21を参照して、ノードN7のベクトルに対応するコードブックの距離を、ノードN7と検索クエリQE2との距離として算出する。なお、直積量子化が行われている場合の距離算出は、図1、図2等と同様であるため詳細な説明は省略する。 The information processing device 100A calculates the distance between each of the nodes N7, N9, N85, and N126 and the search query QE2 using the distance between each codebook indicated by the codebook information TB21 and the search query QE2. For example, the information processing device 100A refers to the codebook information TB21 and calculates the distance of the codebook corresponding to the vector of the node N7 as the distance between the node N7 and the search query QE2. Note that distance calculation when direct product quantization is performed is the same as in FIGS.

なお、一括処理可能単位については、情報処理装置100の場合と同様に、情報処理装置100Aの仕様に基づいて決定される。例えば、情報処理装置100AがSIMDにより一括して処理できる数(一括処理可能単位)が「4」である場合、図1と同様に、4個のノードを対象として距離を並列化して算出する。例えば、情報処理装置100Aは、SIMDの演算に関する並列化により、ノードN7、N9、N85、N126の各々と検索クエリQE2との距離を一括して算出する。これにより、情報処理装置100Aは、距離計算を並列化することにより、距離計算を高速化することでき、効率的な検索処理を可能にすることができる。また、情報処理装置100Aは、グラフGR21を用いて、ノードN7からのエッジが接続されたノード(例えばノードN12、N64)を辿り、それらのノードが属するブロブ(例えばブロブBL2、BL3)を対象とした一括距離計算を行って、検索処理を行う。なお、情報処理装置100Aは、検索処理において、同じブロブが繰り返し一括距離計算の対象となることを抑制するが詳細は後述する。 As with the information processing apparatus 100, the batch processable unit is determined based on the specifications of the information processing apparatus 100A. For example, when the number that can be processed collectively by the information processing apparatus 100A by SIMD (batch processable unit) is "4", the distances are parallelized and calculated for four nodes in the same manner as in FIG. For example, the information processing device 100A collectively calculates the distances between each of the nodes N7, N9, N85, and N126 and the search query QE2 by parallelizing SIMD operations. Thereby, the information processing apparatus 100A can speed up the distance calculation by parallelizing the distance calculation, and can enable efficient search processing. Further, the information processing apparatus 100A uses the graph GR21 to trace the nodes (for example, nodes N12 and N64) to which the edges from the node N7 are connected, and target the blobs (for example, blobs BL2 and BL3) to which those nodes belong. Then, batch distance calculation is performed and search processing is performed. Note that the information processing apparatus 100A prevents the same blob from being repeatedly subjected to batch distance calculation in the search process, but the details will be described later.

なお、図12では説明を簡単にするために、4つのノードを対象として距離を並列化して算出する場合を示すが、並列化される数は、情報処理装置100Aの仕様に基づいて決定される。この点についても図1、図2等と同様であるため、詳細な説明は省略する。また、情報処理装置100Aは、図3に示す例と同様に、転置データを用いてもよい。 In order to simplify the explanation, FIG. 12 shows a case where distances are calculated in parallel for four nodes, but the number of parallelized distances is determined based on the specifications of the information processing apparatus 100A. . Since this point is the same as in FIGS. 1, 2, etc., detailed description is omitted. Further, the information processing apparatus 100A may use transposed data as in the example shown in FIG.

上述のように、情報処理装置100Aは、ベクトル量子化された各ノードのベクトルと検索クエリとの間の近似距離(第2距離)を算出して、第2距離を用いて検索処理を行う事により、効率的な検索処理を可能にすることができる。また、情報処理装置100Aは、並列化可能な数のノードの距離計算を一括して行うことにより、効率的な検索処理を可能にすることができる。上記のように、情報処理装置100Aは、ブロブを一括処理の単位として一括して計算することにより、効率的な検索処理を可能にすることができる。 As described above, the information processing device 100A calculates the approximate distance (second distance) between the vector-quantized vector of each node and the search query, and performs search processing using the second distance. can enable efficient search processing. In addition, the information processing apparatus 100A can perform efficient search processing by collectively performing distance calculations for a parallelizable number of nodes. As described above, the information processing apparatus 100A can perform efficient search processing by collectively calculating blobs as a unit of collective processing.

情報処理装置100Aは、検索処理において、グラフGR21を辿り処理対象となるノードを対象に上述した処理を行うことにより、検索数のノードを検索クエリQE2の近傍のノードとして抽出する。例えば、情報処理装置100Aは、情報処理装置100と同様に、上述した第1の方法及び第2の方法のいずれかにより検索結果を得る。 In the search process, the information processing apparatus 100A traces the graph GR21 and performs the above-described process on the nodes to be processed, thereby extracting the number of nodes to be searched as nodes in the vicinity of the search query QE2. For example, the information processing device 100A obtains search results by either the first method or the second method described above, similarly to the information processing device 100 .

上述した処理は一例に過ぎず、情報処理装置100Aは、効率的な検索処理の為に様々な情報や手法を用いて、検索処理を行ってもよい。この点について、各事項について詳述する。例えば、情報処理装置100Aは、各ブロブに属するノードの数が、情報処理装置100がSIMDにより一括して処理できる数(一括処理可能単位)になるように、クラスタリングを行い、ブロブを生成してもよい。 The processing described above is merely an example, and the information processing apparatus 100A may perform search processing using various information and methods for efficient search processing. Regarding this point, each item will be described in detail. For example, the information processing apparatus 100A performs clustering and generates blobs so that the number of nodes belonging to each blob is the number that the information processing apparatus 100 can collectively process by SIMD (batch processing unit). good too.

また、情報処理装置100Aは、ブロブに関する情報を用いて、重複した処理が行われることを抑制してもよい。情報処理装置100Aは、ブロブ単位にそのブロブの距離計算を行ったかを示すブロブ距離計算フラグ(以下単に「フラグ」ともいう)、および各オブジェクトがどのブロブに属するかを示すテーブルを有してもよい。この場合、情報処理装置100Aは、フラグにより各ブロブが処理済であるか否かを管理してもよい。例えば、情報処理装置100Aは、近傍ノードを逐一処理する直前にノードが属するブロブをテーブルにより特定し、そのブロブが一括距離計算済みかをフラグで判断し、未計算の場合には、一括計算を行い、個々のノードの処理を行ってもよい。この点については、図15や図16においても説明する。これにより、情報処理装置100Aは、重複した処理が行われることを抑制することができる。 Further, the information processing device 100A may use the information about the blob to prevent redundant processing from being performed. The information processing apparatus 100A may have a blob distance calculation flag (hereinafter simply referred to as a "flag") indicating whether the distance calculation for each blob has been performed, and a table indicating to which blob each object belongs. good. In this case, the information processing apparatus 100A may use a flag to manage whether or not each blob has been processed. For example, the information processing apparatus 100A identifies the blob to which the node belongs from the table immediately before processing the neighboring nodes one by one, determines whether the blob has undergone batch distance calculation, and if not, performs batch calculation. and may process individual nodes. This point will also be described in FIGS. 15 and 16. FIG. As a result, the information processing device 100A can prevent redundant processing from being performed.

〔2-2.情報処理装置の構成〕
次に、図13を用いて、第2の実施形態に係る情報処理装置100Aの構成について説明する。図13は、第2の実施形態に係る情報処理装置の構成例を示す図である。図13に示すように、情報処理装置100Aは、通信部110と、記憶部120Aと、制御部130Aとを有する。なお、情報処理装置100Aにおいて、情報処理装置100と同様の点は適宜説明を省略する。
[2-2. Configuration of Information Processing Device]
Next, the configuration of the information processing apparatus 100A according to the second embodiment will be described using FIG. FIG. 13 is a diagram illustrating a configuration example of an information processing apparatus according to the second embodiment. As shown in FIG. 13, the information processing device 100A has a communication section 110, a storage section 120A, and a control section 130A. In addition, in the information processing apparatus 100A, the description of the points similar to those of the information processing apparatus 100 will be omitted as appropriate.

(記憶部120A)
記憶部120Aは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第2の実施形態に係る記憶部120Aは、図13に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123Aと、コードブック情報記憶部124と、ブロブ情報記憶部125とを有する。
(Storage unit 120A)
The storage unit 120A is realized by, for example, a semiconductor memory device such as a RAM or flash memory, or a storage device such as a hard disk or an optical disk. 13, the storage unit 120A according to the second embodiment includes an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123A, a codebook information storage unit 124, a blob and an information storage unit 125 .

(量子化情報記憶部123A)
第2の実施形態に係る量子化情報記憶部123Aは、割当処理に関する各種情報を記憶する。図14は、第2の実施形態に係る量子化情報記憶部の一例を示す図である。図14の例では、量子化情報記憶部123Aには、「ノードID」、「オブジェクトID」、「ブロブID」、および「量子化情報」といった項目を有する。
(Quantization information storage unit 123A)
A quantization information storage unit 123A according to the second embodiment stores various kinds of information regarding allocation processing. 14 is a diagram illustrating an example of a quantization information storage unit according to the second embodiment; FIG. In the example of FIG. 14, the quantization information storage unit 123A has items such as "node ID", "object ID", "blob ID", and "quantization information".

「ノードID」は、グラフにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。なお、ノードIDとオブジェクトIDが共通である場合、「ノードID」にオブジェクトIDが記憶され、量子化情報記憶部123Aに「オブジェクトID」の項目は含まれてなくてもよい。 "Node ID" indicates identification information for identifying each node (target) in the graph. "Object ID" indicates identification information for identifying an object. When the node ID and the object ID are common, the object ID may be stored in the "node ID" and the item "object ID" may not be included in the quantization information storage unit 123A.

「ブロブID」は、ノード(オブジェクト)が属するブロブを識別するための情報を示す。 "Blob ID" indicates information for identifying a blob to which a node (object) belongs.

また、「量子化情報」は、各ノード(オブジェクト)の量子化されたベクトルの情報を示す。例えば、「量子化情報」には、「要素」、「コードブックID」といった情報が含まれる。「要素」は、対応するオブジェクトのベクトルにおける配置を示す。図14の例では、「要素」には、「#1」、「#2」、「#3」、「#4」が含まれる場合を示す。この場合、各ノード(オブジェクト)のベクトルは4分割され、各分割された部分ベクトルがコードブックにより量子化されることを示す。 Also, "quantization information" indicates information on the quantized vector of each node (object). For example, "quantization information" includes information such as "element" and "codebook ID". "Element" indicates the placement of the corresponding object in the vector. In the example of FIG. 14, the "elements" include "#1", "#2", "#3", and "#4". In this case, the vector of each node (object) is divided into four, indicating that each divided partial vector is quantized by the codebook.

図14の例では、ノードN1(オブジェクトOB1)は、ブロブID「BL9」により識別されるブロブ(ブロブBL9)に属することを示す。例えば、直積量子化によりベクトルが4分割される場合、ノードN1の量子化情報には、図8に示すノードN1の量子化情報示す4つのコードブックと同様の情報が格納される。また、例えば、直積量子化が行われない場合、ノードN1の量子化情報には、ノードN1のベクトルを量子化するための、1つのコードブックを示す情報が記憶される。 The example of FIG. 14 indicates that the node N1 (object OB1) belongs to the blob (blob BL9) identified by the blob ID "BL9". For example, when a vector is divided into four by direct product quantization, the quantization information of node N1 stores information similar to the four codebooks indicating the quantization information of node N1 shown in FIG. Further, for example, when direct product quantization is not performed, information indicating one codebook for quantizing the vector of node N1 is stored in the quantization information of node N1.

なお、量子化情報記憶部123Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。 Note that the quantization information storage unit 123A may store various types of information, not limited to the above, depending on the purpose.

(ブロブ情報記憶部125)
第2の実施形態に係るブロブ情報記憶部125は、ブロブに関する情報を記憶する。例えば、ブロブ情報記憶部125は、各ブロブに対応付けられたオブジェクトを識別する各種情報を記憶する。図15は、第2の実施形態に係るブロブ情報記憶部の一例を示す図である。図15の例では、ブロブ情報記憶部125は、「ブロブID」、「ノードID」、「ベクトル情報」といった項目が含まれる。
(Blob information storage unit 125)
A blob information storage unit 125 according to the second embodiment stores information about blobs. For example, the blob information storage unit 125 stores various information for identifying objects associated with each blob. FIG. 15 is a diagram illustrating an example of a blob information storage unit according to the second embodiment; In the example of FIG. 15, the blob information storage unit 125 includes items such as "blob ID", "node ID", and "vector information".

「ブロブID」は、ブロブを識別するための識別情報を示す。また、「ノードID」は、ブロブIDにより識別されるブロブに対応付けられたノード(オブジェクト)を示す。「ベクトル情報」は、ブロブのベクトル情報を示す。例えば、「ベクトル情報」は、ブロブのセントロイドに対応するベクトルを示す。 “Blob ID” indicates identification information for identifying a blob. "Node ID" indicates a node (object) associated with the blob identified by the blob ID. "Vector information" indicates the vector information of the blob. For example, "vector information" indicates the vector corresponding to the blob's centroid.

図15に示す例では、ブロブID「BL1」により識別されるブロブ(ブロブBL1)に対応付けられたノード(オブジェクト)は、ノードN7、N9、N85、N126等であることを示す。ブロブBL1は、「51,4,102,33・・・」の多次元のベクトル情報が対応付けられることを示す。 The example shown in FIG. 15 indicates that the nodes (objects) associated with the blob (blob BL1) identified by the blob ID "BL1" are nodes N7, N9, N85, N126, and the like. Blob BL1 indicates that multidimensional vector information of "51, 4, 102, 33..." is associated.

また、ブロブID「BL9」により識別されるブロブ(ブロブBL9)に対応付けられたノード(オブジェクト)は、ノードN1、N4、N5等であることを示す。ブロブBL9は、「12,55,12,6・・・」の多次元のベクトル情報が対応付けられることを示す。 It also indicates that the nodes (objects) associated with the blob (blob BL9) identified by the blob ID "BL9" are nodes N1, N4, N5, and the like. Blob BL9 indicates that multidimensional vector information of "12, 55, 12, 6..." is associated.

なお、ブロブ情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。ブロブ情報記憶部125は、各ブロブが距離計算の処理対象となったか否かを示すフラグを記憶してもよい。例えば、ブロブ情報記憶部125は、距離計算の対象として処理されていないことを示す値(「未処理フラグ値」ともいう)と、距離計算の対象として処理されたことを示す値(「処理済フラグ値」ともいう)とのいずれかを各ブロブのフラグの値に設定する。例えば、ブロブ情報記憶部125は、検索処理開始時に各ブロブのフラグの値を、そのブロブを対象としての距離計算が未処理であることを示す値(例えば0)に設定し、距離計算の対象となったブロブのフラグの値を、距離計算が処理済みであることを示す値(例えば1)に変更する。 Note that the blob information storage unit 125 may store various types of information, not limited to the above, depending on the purpose. The blob information storage unit 125 may store a flag indicating whether or not each blob has been processed for distance calculation. For example, the blob information storage unit 125 stores a value indicating that the blob has not been processed for distance calculation (also referred to as “unprocessed flag value”) and a value indicating that it has been processed for distance calculation (“processed flag value”). flag value”) to the flag value of each blob. For example, the blob information storage unit 125 sets the value of the flag of each blob to a value (for example, 0) indicating that the distance calculation for that blob has not been processed at the start of the search process, and The value of the flag of the blob that has become is changed to a value (for example, 1) indicating that the distance calculation has been completed.

例えば、情報処理装置100Aは、処理対象となったブロブのフラグの値を参照して、そのブロブについて一括距離計算の処理を実行するか否かを判定する。情報処理装置100Aは、各ブロブのフラグの値を参照し、そのブロブのフラグの値が未処理フラグ値である場合は、そのブロブが一括距離計算の処理前であると判定して、そのブロブに属するノードの一括距離計算を実行する。一方、情報処理装置100Aは、そのブロブのフラグの値が処理済フラグ値である場合は、そのブロブが一括距離計算の処理済みであると判定して、そのブロブに属するノードの一括距離計算を行わない。 For example, the information processing apparatus 100A refers to the value of the flag of the blob to be processed, and determines whether or not to execute batch distance calculation processing for that blob. The information processing apparatus 100A refers to the value of the flag of each blob, and if the value of the flag of that blob is the unprocessed flag value, determines that the blob has not yet undergone batch distance calculation processing. Perform a batch distance calculation of the nodes belonging to . On the other hand, when the value of the flag of the blob is the processed flag value, the information processing device 100A determines that the batch distance calculation has been completed for the blob, and performs the batch distance calculation of the nodes belonging to the blob. Not performed.

(制御部130A)
図13の説明に戻って、制御部130Aは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100A内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Aは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(Control section 130A)
Returning to the description of FIG. 13, the control unit 130A is a controller, and for example, various programs (information processing programs) stored in a storage device inside the information processing apparatus 100A are controlled by a CPU, MPU, GPU, or the like. (equivalent to one example) is implemented by executing the RAM as a work area. Also, the control unit 130A is a controller, and is realized by an integrated circuit such as ASIC or FPGA, for example.

図13に示すように、制御部130Aは、取得部131と、生成部132Aと、検索処理部133Aと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Aの内部構成は、図13に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。 As shown in FIG. 13, the control unit 130A has an acquisition unit 131, a generation unit 132A, a search processing unit 133A, and a provision unit 134, and implements or executes the information processing functions and actions described below. do. Note that the internal configuration of the control unit 130A is not limited to the configuration shown in FIG. 13, and may be another configuration as long as it performs information processing to be described later.

(生成部132A)
生成部132Aは、生成部132と同様に各種情報を生成する。
(Generation unit 132A)
The generation unit 132A generates various types of information in the same manner as the generation unit 132 does.

生成部132Aは、量子化情報記憶部123に示すようなベクトル量子化に関する情報を生成してもよい。例えば、生成部132は、ノードN1(オブジェクトOB1)がブロブBL9に属することを示す情報を生成する。また、生成部132は、ブロブ情報記憶部125に示すようなブロブに関する情報を生成してもよい。例えば、生成部132は、ブロブBL1には、ノードN7、N9、N85、N126等が属することを示す情報を生成する。なお、情報処理装置100がグラフ情報記憶部122、量子化情報記憶部123A、コードブック情報記憶部124、ブロブ情報記憶部125に示す情報を、情報提供装置50等の外部装置から取得する場合、情報処理装置100は、生成部132Aを有しなくてもよい。 The generation unit 132A may generate information regarding vector quantization as shown in the quantization information storage unit 123 . For example, the generation unit 132 generates information indicating that the node N1 (object OB1) belongs to the blob BL9. In addition, the generation unit 132 may generate information about blobs as shown in the blob information storage unit 125 . For example, the generation unit 132 generates information indicating that nodes N7, N9, N85, N126, etc. belong to the blob BL1. When the information processing apparatus 100 acquires the information shown in the graph information storage unit 122, the quantization information storage unit 123A, the codebook information storage unit 124, and the blob information storage unit 125 from an external device such as the information providing device 50, The information processing apparatus 100 may not have the generation unit 132A.

(検索処理部133A)
検索処理部133Aは、検索処理部133と同様に検索処理に関する各種処理を行う。
(Search processing unit 133A)
133 A of search process parts perform the various processes regarding a search process like the search process part 133. FIG.

検索処理部133Aは、複数のオブジェクトの各々に対応するノード群を対象として、検索クエリの近傍のノードを検索する検索処理において、複数のオブジェクトを分類した複数のブロブの情報を用いて、一のブロブに属する複数のノードと検索クエリとの距離を、ベクトル量子化された複数のノードのベクトル情報を用いて算出する。検索処理部133Aは、複数のノードと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133Aは、情報処理装置100Aの仕様に基づいて決定される一括処理数の複数のノードと検索クエリとの距離の算出を並列処理する。 The search processing unit 133A uses information of a plurality of blobs into which a plurality of objects are classified in the search processing of searching for nodes in the vicinity of the search query for a node group corresponding to each of a plurality of objects. Distances between multiple nodes belonging to the blob and the search query are calculated using vector quantized vector information of the multiple nodes. The search processing unit 133A parallelizes and collectively calculates distances between a plurality of nodes and a search query. The search processing unit 133A parallel-processes the calculation of the distance between a search query and a plurality of nodes whose batch processing number is determined based on the specifications of the information processing device 100A.

検索処理部133Aは、検索クエリが該当するブロブと隣接する一のブロブに属する複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、複数のノードがエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、検索処理において処理対象となる対象ノードからのエッジが連結された接続ノードが属する一のブロブに属する複数のノードと検索クエリとの距離を算出する。 The search processing unit 133A calculates the distance between the search query and a plurality of nodes belonging to one blob adjacent to the blob to which the search query applies. The search processing unit 133A calculates the distance between the plurality of nodes and the search query in the search processing for searching for nodes in the vicinity of the search query using a graph in which a plurality of nodes are connected by edges. The search processing unit 133A calculates the distance between a search query and a plurality of nodes belonging to one blob to which a connection node connecting edges from a target node to be processed in the search process belongs.

検索処理部133Aは、対象ノードが属するブロブ以外の一のブロブに属する複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、複数のノードの各々から、複数のノードの各々が属するブロブ以外の他のブロブへ連結されたブロブ用グラフを用いて、検索クエリの近傍のノードを検索する検索処理において、複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、複数のノードがエッジにより連結された変換前のグラフにおいて、複数のノードのうち一のノードからエッジが連結されたノードが属するブロブであって、一のノードが属するブロブ以外のブロブへ、一のノードからエッジを連結することにより生成された変換後のグラフであるブロブ用グラフを用いて、検索クエリの近傍のノードを検索する検索処理において、複数のノードと検索クエリとの距離を算出する。 The search processing unit 133A calculates the distance between a plurality of nodes belonging to one blob other than the blob to which the target node belongs and the search query. The search processing unit 133A uses a blob graph in which each of a plurality of nodes is connected to other blobs other than the blob to which each of the plurality of nodes belongs. Calculate distances between multiple nodes and a search query. In the graph before conversion in which a plurality of nodes are connected by edges, the search processing unit 133A finds a blob to which the node to which the edge is connected from one of the plurality of nodes belongs, other than the blob to which the one node belongs. In a search process for searching for nodes in the vicinity of a search query using a blob graph, which is a transformed graph generated by connecting edges from one node to blobs of Calculate the distance of

検索処理部133Aは、検索処理において処理対象となる対象ノードからのエッジが連結されたブロブである一のブロブに属する複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、既に処理対象となったブロブである処理済みブロブを示す情報を用いて、一のブロブを処理対象とするかを判定する。検索処理部133Aは、一のブロブが処理済みブロブである場合、一のブロブを処理対象としないと判定する。 The search processing unit 133A calculates the distance between a plurality of nodes belonging to one blob, which is a blob in which edges from a target node to be processed in the search process are connected, and the search query. The search processing unit 133A determines whether one blob is to be processed using information indicating processed blobs that have already been processed. When the one blob is a processed blob, the search processing unit 133A determines that the one blob is not to be processed.

検索処理部133Aは、検索処理において処理対象となったノードのうち、所定のノードを対象として、ベクトル量子化がされた距離である第1距離とは異なり、ベクトル量子化がされていない第2距離を算出する。検索処理部133Aは、検索処理において検索クエリの近傍のノードとして抽出するノードの第1数よりも多い数である第2数のノードを近傍候補ノードとして抽出し、近傍候補ノードを対象として第2距離を算出する。検索処理部133Aは、近傍候補ノードのうち、第2距離が短い方から第1数のノードを検索クエリの近傍のノードとして抽出する。 The search processing unit 133A targets a predetermined node among the nodes to be processed in the search processing, and, unlike the first distance, which is a vector-quantized distance, a second distance that is not vector-quantized. Calculate the distance. The search processing unit 133A extracts, as neighborhood candidate nodes, a second number of nodes that is larger than the first number of nodes to be extracted as neighborhood nodes of the search query in the search processing, and selects the neighborhood candidate nodes as targets for the second number of nodes. Calculate the distance. The search processing unit 133A extracts the first number of nodes from the neighborhood candidate nodes with the shortest second distance as nodes in the neighborhood of the search query.

検索処理部133Aは、第1距離が所定の閾値以内であるノードを対象として第2距離を算出する。検索処理部133Aは、近傍のノードとして抽出する対象範囲を示す検索範囲内のノードを対象として第2距離を算出する。検索処理部133Aは、検索処理の対象範囲を示す探索範囲内のノードを対象として第2距離を算出する。 The search processing unit 133A calculates the second distance for nodes whose first distance is within a predetermined threshold. The search processing unit 133A calculates a second distance for nodes within a search range indicating a target range to be extracted as neighboring nodes. The search processing unit 133A calculates a second distance for nodes within a search range indicating the target range of search processing.

〔2-3.検索処理例〕
ここで、第2の実施形態に係る検索処理の一例について、図16を一例として説明する。図16は、第2の実施形態に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100Aの検索処理部133Aによって行われる。なお、図11等、第1の実施形態と同様の点については適宜説明を省略する。例えば、図16において、図11と同様の点は同じステップ番号を付すことにより、適宜説明を省略する。
[2-3. Search processing example]
Here, an example of search processing according to the second embodiment will be described with reference to FIG. 16 as an example. FIG. 16 is a flowchart illustrating an example of search processing according to the second embodiment. The search processing described below is performed by the search processing unit 133A of the information processing device 100A. Note that the description of the same points as those of the first embodiment, such as FIG. 11, will be omitted as appropriate. For example, in FIG. 16, the same steps as those in FIG. 11 are denoted by the same step numbers, and the description thereof is appropriately omitted.

ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、空間情報SP21に示すグラフGR21等)であってもよい。例えば、情報処理装置100Aは、k近傍検索処理を実行する。 Here, the neighborhood object set N(G, y) is the set of neighborhood objects associated by the edge attached to node y. "G" may be predetermined graph data (for example, graph GR21 shown in spatial information SP21, etc.). For example, the information processing device 100A executes k-nearest neighbor search processing.

例えば、図16に示す検索処理は、ステップS304の後にステップS304aに示す処理を行う点で、図11に示す検索処理と相違する。このように、図16に示す検索処理は、通常のグラフの探索で、まだ、アクセスしていないブロブに到達した場合にそのブロブ内のオブジェクト(ノード)とクエリとの距離を一括して計算し、各ノードの処理を行う。 For example, the search process shown in FIG. 16 differs from the search process shown in FIG. 11 in that the process shown in step S304a is performed after step S304. In this way, in the search processing shown in FIG. 16, when a blob that has not yet been accessed is reached in a normal graph search, the distance between the object (node) in that blob and the query is calculated collectively. , to process each node.

具体的には、図16の検索処理においては、情報処理装置100Aは、オブジェクトsが属するブロブがまだ距離計算していない場合には、以下のすべて(図16中のステップS304a中の「-」に続けて示す4つの処理。以下「第1の処理」~「第4の処理」とする)を実行する(ステップS304a)。ステップS304aにおいて、情報処理装置100Aは、そのブロブ内のオブジェクトを一括距離計算する処理(第1の処理)を実行する。また、ステップS304aにおいて、情報処理装置100Aは、ブロブの距離計算フラグをセットする処理(第2の処理)を実行する。また、ステップS304aにおいて、情報処理装置100Aは、一括距離計算を行ったブロブ内のすべてのオブジェクトをCに格納する処理(第3の処理)を実行する。また、ステップS304aにおいて、情報処理装置100Aは、ブロブのすべてのオブジェクトをuとして逐一ステップS307からステップS314までの処理を行う処理(第4の処理)を実行する。その後、情報処理装置100Aは、ステップS306以降の処理を行う。 Specifically, in the search process of FIG. 16, the information processing apparatus 100A performs all of the following ("-" in step S304a in FIG. (hereinafter referred to as “first processing” to “fourth processing”) are executed (step S304a). In step S304a, the information processing apparatus 100A executes processing (first processing) for collectively calculating the distances of the objects in the blob. Further, in step S304a, the information processing apparatus 100A executes a process (second process) of setting a blob distance calculation flag. Further, in step S304a, the information processing apparatus 100A executes a process (third process) of storing in C all the objects in the blob for which the batch distance calculation has been performed. Further, in step S304a, the information processing apparatus 100A performs the process (fourth process) of step S307 to step S314 one by one with all objects of the blob as u. After that, the information processing apparatus 100A performs the processes after step S306.

〔2-4.変形例〕
ここから、変形例について説明する。第2の実施形態に係る変形例においては、ブロブの概念を含むグラフを用いてもよい。例えば、第2の実施形態に係る変形例においては、ノードからのエッジによる参照先がブロブであるグラフを用いてもよい。なお、第1の実施形態や第2の実施形態と同様の点については、適宜説明を省略する。変形例に係る情報処理装置100Aは、グラフ情報記憶部122に代えて、グラフ情報記憶部122Aを有する。
[2-4. Modification]
Modifications will now be described. In a modification of the second embodiment, graphs including the concept of blobs may be used. For example, in the modification of the second embodiment, a graph in which blobs are referenced by edges from nodes may be used. Note that descriptions of the same points as those of the first embodiment and the second embodiment will be omitted as appropriate. The information processing apparatus 100A according to the modification has a graph information storage unit 122A instead of the graph information storage unit 122. FIG.

〔2-4-1.情報処理〕
まず、図17を用いて、変形例に係る情報処理の概要を説明する。図17は、変形例に係る情報処理の一例を示す図である。
[2-4-1. information processing]
First, with reference to FIG. 17, an outline of information processing according to the modification will be described. FIG. 17 is a diagram illustrating an example of information processing according to a modification;

情報処理装置100Aは、ノード間をエッジで連結したグラフGR21を、ノードからのエッジによる参照先がブロブであるグラフGR31に変換する(ステップS31)。すなわち、情報処理装置100Aは、図17に示すように、通常のグラフであるグラフGR21から、ブロブの概念が導入されたグラフ(ブロブ用グラフ)であるグラフGR31を生成する。 The information processing device 100A converts the graph GR21 in which the nodes are connected by edges into a graph GR31 in which the edge referenced from the node is a blob (step S31). That is, as shown in FIG. 17, the information processing apparatus 100A generates a graph GR31 that is a graph (blob graph) into which the concept of blobs is introduced from a graph GR21 that is a normal graph.

図17の例では、情報処理装置100Aは、空間情報SP31に示すように、ノードからブロブへの有向エッジを含むグラフGR31を生成する。なお、グラフGR31においては、各ノード間のエッジについては削除され、グラフGR31には、ノードからブロブへの有向エッジが含まれ、ノード間のエッジは含まれない。図17に示す矢印線は、矢元のノードから矢先のブロブへの有向エッジを示す。すなわち、図17に示す矢印線は、矢元のノードを参照元とし、矢先のブロブを参照先とする有向エッジを示す。例えば、図17では、ノードN1からは、ブロブBL8及びブロブBL10の2つのブロブへのエッジが連結されることを示す。 In the example of FIG. 17, the information processing device 100A generates a graph GR31 including directed edges from nodes to blobs, as indicated by spatial information SP31. In the graph GR31, edges between nodes are deleted, and the graph GR31 includes directed edges from nodes to blobs and does not include edges between nodes. The arrowed lines shown in FIG. 17 indicate directed edges from the node at the base of the arrow to the blob at the tip of the arrow. That is, the arrow line shown in FIG. 17 indicates a directed edge having the node at the arrowhead as the reference source and the blob at the arrowhead as the reference destination. For example, FIG. 17 shows that from node N1, edges are connected to two blobs, blob BL8 and blob BL10.

例えば、情報処理装置100Aは、各ノードのエッジを接続ノード(近傍ノード)へのエッジから接続ノードが属するブロブへのエッジに変換する。なお、情報処理装置100Aは、各ノード自身が属するブロブへのエッジは生成しない。図17の例では、情報処理装置100Aは、ノードN9とノードN126は同じブロブBL1に属するため、ノードN9からブロブBL1へのエッジ、及びノードN126からブロブBL1へのエッジは生成しない。一方、図17の例では、情報処理装置100Aは、ノードN9とノードN18は異なるブロブBL1、BL4に属するため、ノードN9からブロブBL4へのエッジ、及びノードN18からブロブBL1へのエッジを生成する。 For example, the information processing device 100A converts the edge of each node from the edge to the connection node (neighboring node) to the edge to the blob to which the connection node belongs. Note that the information processing apparatus 100A does not generate an edge to the blob to which each node belongs. In the example of FIG. 17, the information processing apparatus 100A does not generate an edge from the node N9 to the blob BL1 and an edge from the node N126 to the blob BL1 because the nodes N9 and N126 belong to the same blob BL1. On the other hand, in the example of FIG. 17, the information processing device 100A generates an edge from the node N9 to the blob BL4 and an edge from the node N18 to the blob BL1 because the node N9 and the node N18 belong to different blobs BL1 and BL4. .

図17の例では、情報処理装置100Aは、空間情報SP31に示すように、ノード(オブジェクト)からブロブへの有向エッジを含むグラフGR31を用いて、検索処理を行う。例えば、情報処理装置100Aは、検索クエリQE2を対象として、グラフGR21を用いた図19に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。図19に示す検索処理についての詳細は後述する。なお、図17での検索処理は、ブロブの概念を用いて検索処理を行う点で図12と共通し、エッジに関連する処理の点以外は、図12に示す検索処理と同様である。 In the example of FIG. 17, the information processing device 100A performs search processing using a graph GR31 including directed edges from nodes (objects) to blobs, as indicated by spatial information SP31. For example, the information processing device 100A obtains the search result of the search query QE2 by performing the search process as shown in FIG. 19 using the graph GR21 for the search query QE2. The details of the search processing shown in FIG. 19 will be described later. Note that the search processing in FIG. 17 is common to FIG. 12 in that the search processing is performed using the concept of blobs, and is the same as the search processing shown in FIG. 12 except for processing related to edges.

〔2-4-2.グラフ〕
次に、図18を用いて、変形例に係るグラフの概要を説明する。図18は、変形例に係るグラフ情報記憶部の一例を示す図である。例えば、図18に示すグラフ情報記憶部122Aは、ブロブの概念が導入されたグラフ(ブロブ用グラフ)を記憶する。図18に示すグラフ情報記憶部122Aは、「ノードID」、「オブジェクトID」、および「ブロブ情報」といった項目を有する。このように、変形例に係るグラフ情報記憶部122Aは、「接続ノード情報」に代えて、「ブロブ情報」を有する点で図7のグラフ情報記憶部122と相違する。なお、図7のグラフ情報記憶部122と同様の点については適宜説明を省略する。
[2-4-2. graph〕
Next, with reference to FIG. 18, the outline of the graph according to the modification will be described. 18 is a diagram illustrating an example of a graph information storage unit according to a modification; FIG. For example, the graph information storage unit 122A shown in FIG. 18 stores graphs (blob graphs) in which the concept of blobs is introduced. The graph information storage unit 122A shown in FIG. 18 has items such as "node ID", "object ID", and "blob information". Thus, the graph information storage unit 122A according to the modification differs from the graph information storage unit 122 of FIG. 7 in that it has "blob information" instead of "connection node information". Note that the description of the same points as those of the graph information storage unit 122 in FIG. 7 will be omitted as appropriate.

また、「ブロブ情報」は、対応するノードから辿ることができるブロブ(参照先のブロブ)に関する情報を示す。例えば、「ブロブ情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのノードから辿ることができる参照先(ブロブ)を識別するための情報を示す。すなわち、図18の例では、ノードを識別するノードID(オブジェクトID)に対して、そのノードからエッジにより辿ることができる参照先(ブロブ)が対応付けられて登録されている。なお、「ブロブ情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 Also, "blob information" indicates information about a blob (referred to blob) that can be traced from the corresponding node. For example, "blob information" includes information such as "reference destination". "Reference destination" indicates information for identifying a reference destination (blob) that is connected by an edge and can be traced from the node. That is, in the example of FIG. 18, a node ID (object ID) that identifies a node is registered in association with a reference destination (blob) that can be traced from that node by an edge. The "blob information" may include information (edge ID) for identifying the edge connected to the reference destination.

図18の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、ブロブID「BL8」により識別されるブロブ(ブロブBL8)にエッジが連結されており、ノードN1からブロブBL8へ辿ることができることを示す。また、ノードN1からは、ブロブID「BL10」により識別されるブロブ(ブロブBL10)にエッジが連結されており、ノードN1からブロブBL10へ辿ることができることを示す。 The example of FIG. 18 indicates that the node (node N1) identified by the node ID "N1" corresponds to the object (target) identified by the object ID "OB1". Also, an edge is connected from the node N1 to the blob (blob BL8) identified by the blob ID "BL8", indicating that the node N1 can be traced to the blob BL8. Also, an edge is connected from the node N1 to the blob (blob BL10) identified by the blob ID "BL10", indicating that the node N1 can be traced to the blob BL10.

また、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、ブロブID「BL5」により識別されるブロブ(ブロブBL5)にエッジが連結されており、ノードN1からブロブBL5へ辿ることができることを示す。 It also indicates that the node (node N2) identified by the node ID "N2" corresponds to the object (target) identified by the object ID "OB2". Also, an edge is connected from the node N2 to the blob (blob BL5) identified by the blob ID "BL5", indicating that the node N1 can be traced to the blob BL5.

なお、グラフ情報記憶部122Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。 It should be noted that the graph information storage unit 122A may store various types of information, not limited to the above, depending on the purpose.

また、グラフは、クエリを入力とし、グラフ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフGR31は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフGR31は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR31は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。 The graph may also include a program module that takes a query as input, searches for nodes by tracing edges in the graph, extracts and outputs nodes similar to the query. That is, the graph may be assumed to be used as a program module that performs search processing using the graph. For example, the graph GR31 may be a program that, when vector data is input as a query, extracts nodes corresponding to vector data similar to the vector data from the graph and outputs them. For example, the graph GR31 may be data used as a program module for retrieving similar images corresponding to the query image. For example, the graph GR31 causes a computer to extract and output nodes similar to the query in the graph based on the input query.

〔2-4-3.検索処理例〕
ここから、変形例に係る検索処理の一例について、図19を一例として説明する。図19は、変形例に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100Aの検索処理部133Aによって行われる。なお、図11、図16等、第1の実施形態または第2の実施形態と同様の点については適宜説明を省略する。例えば、図19において、図11と同様の点は同じステップ番号を付すことにより、適宜説明を省略する。
[2-4-3. Search processing example]
From here, an example of search processing according to the modified example will be described using FIG. 19 as an example. FIG. 19 is a flowchart illustrating an example of search processing according to the modification. The search processing described below is performed by the search processing unit 133A of the information processing device 100A. 11, 16, etc., description of the same points as those of the first embodiment or the second embodiment will be omitted as appropriate. For example, in FIG. 19, the same steps as those in FIG. 11 are denoted by the same step numbers, and the description thereof is appropriately omitted.

図19では、集合N(G,y)は、ノードyに付与されているエッジにより関連付けられているブロブの集合である点で、図11及び図16の検索処理と相違する。図19では、N(G、s)およびCはブロブ集合となる。すなわち、図11での「近傍オブジェクト集合N」は、図19では、「ブロブ集合N」と読み替えられ、図11での「オブジェクト集合C」は、図19では、「ブロブ集合C」と読み替えられる。また、上記のブロブへの変更に関連する処理における「オブジェクト」の文言は、適宜「ブロブ」と読み替えられる。「G」は、ブロブの概念が導入されたグラフ(ブロブ用グラフ)データ(例えば、空間情報SP31に示すグラフGR31等)であってもよい。例えば、情報処理装置100Aは、k近傍検索処理を実行する。 In FIG. 19, the set N(G, y) differs from the search processing in FIGS. 11 and 16 in that it is a set of blobs associated by edges attached to node y. In FIG. 19, N(G, s) and C are blob sets. 11 is read as "blob set N" in FIG. 19, and "object set C" in FIG. 11 is read as "blob set C" in FIG. . Also, the wording of "object" in the processing related to the change to the blob can be appropriately read as "blob". “G” may be graph (blob graph) data (for example, graph GR31 shown in spatial information SP31, etc.) into which the concept of blob is introduced. For example, the information processing device 100A executes k-nearest neighbor search processing.

例えば、図19に示す検索処理は、図11からステップS306の処理が以下のように変更される。図19の検索処理においては、情報処理装置100Aは、N(G、s)の中からブロブ集合Cに含まれない、ブロブを一つ選択し、選択したブロブをブロブ集合Cに格納し、ブロブ内のオブジェクトを一括計算し、その集合をB(「対象ブロブ内オブジェクト集合B」ともいう)とする(ステップS306)。 For example, in the search processing shown in FIG. 19, the processing in step S306 from FIG. 11 is changed as follows. In the search process of FIG. 19, the information processing device 100A selects one blob that is not included in the blob set C from among N(G, s), stores the selected blob in the blob set C, The objects in the blob are collectively calculated, and the set is defined as B (also referred to as "target blob object set B") (step S306).

また、図19に示す検索処理は、ステップS306の後にステップS306aに示す処理を行う点で、図11に示す検索処理と相違する。具体的には、図19の検索処理においては、情報処理装置100Aは、対象ブロブ内オブジェクト集合Bからオブジェクトuを一つ選択する(ステップS306a)。その後、情報処理装置100Aは、ステップS307以降の処理を行う。 19 differs from the search process shown in FIG. 11 in that the process shown in step S306a is performed after step S306. Specifically, in the search process of FIG. 19, the information processing apparatus 100A selects one object u from the target blob object set B (step S306a). After that, the information processing apparatus 100A performs the processes after step S307.

また、図19に示す検索処理は、ステップS315の前にステップS314aに示す処理を行う点で、図11に示す検索処理と相違する。具体的には、図19の検索処理においては、情報処理装置100Aは、対象ブロブ内オブジェクト集合Bから全て選択したか否かを判定する(ステップS314a)。 19 differs from the search process shown in FIG. 11 in that the process shown in step S314a is performed before step S315. Specifically, in the search process of FIG. 19, the information processing apparatus 100A determines whether or not all objects have been selected from the target blob object set B (step S314a).

対象ブロブ内オブジェクト集合Bから全て選択し終えた場合(ステップS314a:Yes)、情報処理装置100Aは、ステップS315の処理を行う。一方、対象ブロブ内オブジェクト集合Bから全て選択し終えていない場合(ステップS314a:No)、情報処理装置100Aは、ステップS306aに戻って処理を繰り返す。 When all the objects in the target blob object set B have been selected (step S314a: Yes), the information processing apparatus 100A performs the process of step S315. On the other hand, if all the objects have not been selected from the target blob object set B (step S314a: No), the information processing apparatus 100A returns to step S306a and repeats the process.

〔2-4-4.生成処理の他の例〕
上述した例では、各ノードのエッジを接続ノードへのエッジから接続ノードが属するブロブへのエッジに変換してブロブ用グラフを生成する場合を示したが、情報処理装置100Aは、様々な情報を適宜用いて、ブロブ用グラフを生成してもよい。例えば、情報処理装置100Aは、複数のオブジェクトを検索対象とする近傍検索インデックス(単に「インデックス」ともいう)を用いて、ブロブ用グラフを生成してもよい。なお、上述した内容と同様の点については適宜説明を省略する。
[2-4-4. Other example of generation processing]
In the above example, the case where the edge of each node is converted from the edge to the connection node to the edge to the blob to which the connection node belongs to generate the blob graph, but the information processing apparatus 100A can convert various information. It may be used as appropriate to generate a blob graph. For example, the information processing device 100A may generate a blob graph using a neighborhood search index (also simply referred to as an “index”) that searches for a plurality of objects. It should be noted that descriptions of the same points as those described above will be omitted as appropriate.

ブロブ用グラフの生成の一例について図20を用いて説明する。図20は、変形例に係る情報処理の他の一例を示す図である。なお、以下では、インデックスの一例としてグラフを用いる場合を一例として説明するが、インデックスは、複数のオブジェクトを検索対象とするものであればどのようなものであってもよい。例えば、インデックスは、ハッシュテーブル等のハッシュに関する記述を利用したインデックス(ハッシュインデックス)、木構造を有するインデックス(ツリーインデックス)等であってもよい。 An example of generating a blob graph will be described with reference to FIG. FIG. 20 is a diagram illustrating another example of information processing according to the modification. In the following description, a case where a graph is used as an example of an index will be described, but the index may be of any type as long as it searches a plurality of objects. For example, the index may be an index (hash index) using a hash-related description such as a hash table, an index having a tree structure (tree index), or the like.

また、オブジェクトまたはそのオブジェクトに対応するノード(「オブジェクトノード」ともいう)を示す情報を第1情報と記載し、複数のオブジェクトを分類するために用いる情報を第2情報と記載する場合がある。また、ブロブを示す情報を第3情報と記載し、オブジェクトノードをエッジで連結したグラフを第4情報と記載する場合がある。例えば、図20中のグラフGR21は、オブジェクトノードであるノードN1等がエッジで連結されており、第4情報に対応する。また、図17中のグラフGR31及び図20中のグラフGR32は、第4情報とは異なり、オブジェクトノードとブロブとがエッジが連結されたブロブ用グラフ(「グループグラフ」ともいう)である。すなわち、グループグラフは、オブジェクトノードからブロブへエッジが連結され、オブジェクトノードを参照元とし、ブロブ(グループ)を参照先とするグラフである。 Information indicating an object or a node corresponding to the object (also referred to as "object node") may be referred to as first information, and information used to classify a plurality of objects may be referred to as second information. Information indicating a blob may be referred to as third information, and a graph in which object nodes are connected by edges may be referred to as fourth information. For example, a graph GR21 in FIG. 20, in which object nodes such as the node N1 are connected by edges, corresponds to the fourth information. Also, unlike the fourth information, the graph GR31 in FIG. 17 and the graph GR32 in FIG. 20 are blob graphs (also referred to as “group graphs”) in which object nodes and blobs are connected by edges. That is, the group graph is a graph in which edges are connected from object nodes to blobs, the object nodes are the reference sources, and the blobs (groups) are the reference destinations.

情報処理装置100Aは、オブジェクトノード間がエッジで連結したグラフGR21をインデックス(第4情報)として用いて、オブジェクトノードからのエッジによる参照先がブロブとなるグループグラフであるグラフGR32を生成する(ステップS41)。図20では、情報処理装置100Aは、空間情報SP32に示すように、ノードからブロブへの有向エッジを含むグラフGR32を生成する。 The information processing device 100A uses, as an index (fourth information), the graph GR21 in which the object nodes are connected by edges to generate a graph GR32, which is a group graph in which blobs are referenced by the edges from the object nodes (step S41). In FIG. 20, the information processing device 100A generates a graph GR32 including directed edges from nodes to blobs, as indicated by spatial information SP32.

例えば、情報処理装置100Aは、複数のオブジェクトから一のオブジェクトを選択し、グラフGR21を用いて一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトに対応する一のオブジェクトノードから、近傍オブジェクトが属する他のグループへエッジを連結する連結処理により、グラフGR32を生成する。例えば、情報処理装置100Aは、複数のオブジェクトからランダムに一のオブジェクトを選択し、選択した一のオブジェクトを対象に連結処理を行い、グラフGR32を生成する。 For example, the information processing device 100A selects one object from a plurality of objects, searches for nearby objects of the one object using the graph GR21, and selects one object node corresponding to the one object to which the nearby object belongs. Graph GR32 is generated by a connection process that connects edges to other groups. For example, the information processing device 100A randomly selects one object from a plurality of objects, performs connection processing on the selected one object, and generates the graph GR32.

例えば、情報処理装置100Aは、以下のような処理(1-1)~(1-4)を行い、グラフGR32を生成する。なお、オブジェクトは、オブジェクトに対応するノードと読み替えてもよい。 For example, the information processing device 100A performs the following processes (1-1) to (1-4) to generate the graph GR32. Note that the object may be read as a node corresponding to the object.

(1-1):ランダムでオブジェクトNXを取得(選択)
(1-2):オブジェクトNXの近傍オブジェクトを定数k件検索
(1-3):各近傍オブジェクトの属するブロブを取得
(1-4):オブジェクトNXから取得したブロブへのエッジを生成
(1-1): Obtain object NX at random (selection)
(1-2): Constant search for k neighboring objects of object NX (1-3): Obtain blobs to which each neighboring object belongs (1-4): Generate edges to blobs obtained from object NX

例えば処理(1-1)では、情報処理装置100Aは、オブジェクト情報記憶部121に記憶された複数のオブジェクトからランダムに一のオブジェクトNXを取得する。 For example, in process (1-1), the information processing device 100A randomly acquires one object NX from a plurality of objects stored in the object information storage unit 121. FIG.

例えば処理(1-2)では、情報処理装置100Aは、図11に示すような検索処理を、オブジェクトNXを対象(クエリ)とし、グラフGR21を用いて行うことにより、k件(個)のオブジェクトをオブジェクトNXの近傍オブジェクトとして抽出する。 For example, in the process (1-2), the information processing apparatus 100A performs the search process as shown in FIG. are extracted as neighboring objects of the object NX.

例えば処理(1-3)では、情報処理装置100Aは、ブロブ情報記憶部125に記憶されたブロブの情報を参照し、オブジェクトNXの近傍オブジェクト(ノード)が対応付けられたブロブを取得する。 For example, in the process (1-3), the information processing device 100A refers to the blob information stored in the blob information storage unit 125 and acquires the blob associated with the neighboring object (node) of the object NX.

例えば処理(1-4)では、情報処理装置100Aは、オブジェクトNXから取得したブロブへのエッジを生成する。例えば、情報処理装置100Aは、量子化情報記憶部123A中のオブジェクトNXに取得したブロブを示す情報を対応付けることにより、グラフGR32を生成する。 For example, in processing (1-4), the information processing device 100A generates an edge to the blob acquired from the object NX. For example, the information processing device 100A generates the graph GR32 by associating information indicating the acquired blob with the object NX in the quantization information storage unit 123A.

例えば、情報処理装置100Aは、上記の処理(1-1)~(1-4)を、処理対象となるオブジェクトが無くなるまで繰り返し行い、グラフGR32を生成する。なお、空間情報SP21に示すブロブを検索により生成している場合、ブロブの生成の際の検索結果を流用して、グラフGR32を生成してもよい。なお、ブロブを検索により生成する例については後述する。 For example, the information processing device 100A repeats the above processes (1-1) to (1-4) until there are no more objects to be processed, thereby generating the graph GR32. If the blob shown in the spatial information SP21 is generated by searching, the graph GR32 may be generated using the search result when generating the blob. An example of generating blobs by searching will be described later.

例えば、情報処理装置100Aは、空間情報SP32に示すように、ノード(オブジェクト)からブロブへの有向エッジを含むグラフGR32を用いて、検索処理を行う。例えば、情報処理装置100Aは、検索クエリQE2を対象として、グラフGR32を用いた図19に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。 For example, the information processing device 100A performs search processing using a graph GR32 including directed edges from nodes (objects) to blobs, as indicated by spatial information SP32. For example, the information processing apparatus 100A obtains the search result of the search query QE2 by performing the search process as shown in FIG. 19 using the graph GR32 for the search query QE2.

また、上述した例では、クラスタリングによりブロブを生成する場合を示したが、ブロブは、クラスタリングに限らず、様々な方法により生成されてもよい。例えば、情報処理装置100Aは、インデックス等の第2情報を用いて、ブロブを示す情報(第3情報)を生成してもよい。 Also, in the above example, a case where blobs are generated by clustering has been shown, but blobs may be generated by various methods other than clustering. For example, the information processing device 100A may generate information (third information) indicating a blob using second information such as an index.

情報処理装置100Aは、図21に示すような、グラフGR21をインデックスとして用いて、ブロブを示す第3情報を生成する。図21は、ブロブ情報の生成処理の一例を示す図である。図21の空間情報SP20は、空間情報SP21中のブロブの情報が生成される前の状態を示し、図21のグラフGR21は、図20のグラフGR21と同様のグラフである。なお、図21に示す処理は、後述する第1方法の一部を示すものであるが、詳細は後述する。 The information processing device 100A generates the third information indicating the blob using the graph GR21 as an index as shown in FIG. FIG. 21 is a diagram illustrating an example of blob information generation processing. Spatial information SP20 in FIG. 21 shows a state before blob information in spatial information SP21 is generated, and graph GR21 in FIG. 21 is similar to graph GR21 in FIG. Note that the processing shown in FIG. 21 shows a part of the first method described later, and the details will be described later.

例えば、情報処理装置100Aは、グラフGR21を用いた検索により、複数のオブジェクトを複数のブロブに分類する第3情報を生成する。例えば、情報処理装置100Aは、グラフGR21中の複数のノードから一のノード(「処理対象ノード」ともいう)を選択し、処理対象ノードにエッジで連結されたノードである近傍ノードのうち少なくとも一部のノードである分類対象ノード、及び処理対象ノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。例えば、情報処理装置100Aは、複数のノードから所定の処理により処理対象ノードを選択し、選択した処理対象ノードを対象に分類処理を行い、第3情報を生成する。 For example, the information processing device 100A generates third information that classifies a plurality of objects into a plurality of blobs by searching using the graph GR21. For example, the information processing device 100A selects one node (also referred to as a “processing target node”) from a plurality of nodes in the graph GR21, and selects at least one of neighboring nodes that are nodes connected to the processing target node by edges. Third information is generated by a classification process of classifying objects corresponding to each of the classification target node, which is a node of the part, and the processing target node into one group. For example, the information processing apparatus 100A selects a node to be processed from a plurality of nodes by a predetermined process, performs classification processing on the selected node to be processed, and generates the third information.

例えば、情報処理装置100Aは、ノードにエッジで連結された近傍ノード(接続ノード)の数に基づいて処理対象ノードを選択してもよい。例えば、情報処理装置100Aは、近傍ノードの数が大きい方から順に処理対象ノードを選択してもよい。近傍ノードの数が大きい方から順に処理対象ノードを選択し、ブロブを示す第3情報を生成する方法を「第1方法」ともいう。また、例えば、情報処理装置100Aは、近傍ノード(接続ノード)の数が小さい方から順に処理対象ノードを選択してもよい。近傍ノードの数が小さい方から順に処理対象ノードを選択し、ブロブを生成する方法を「第2方法」ともいう。また、例えば、情報処理装置100Aは、ランダムに処理対象ノードを選択してもよい。ランダムに処理対象ノードを選択し、ブロブを示す第3情報を生成する方法を「第3方法」ともいう。以下では、第1方法、第2方法、及び第3方法の各々の処理手順の概要を説明する。 For example, the information processing device 100A may select a node to be processed based on the number of neighboring nodes (connection nodes) connected to the node by edges. For example, the information processing device 100A may select processing target nodes in order from the node with the largest number of neighboring nodes. A method of selecting nodes to be processed in descending order of the number of neighboring nodes and generating third information indicating blobs is also referred to as a “first method”. Further, for example, the information processing apparatus 100A may select the processing target nodes in order from the node with the smallest number of neighboring nodes (connection nodes). A method of selecting nodes to be processed in ascending order of the number of neighboring nodes and generating blobs is also referred to as a “second method”. Further, for example, the information processing device 100A may randomly select a node to be processed. A method of randomly selecting a node to be processed and generating third information indicating a blob is also called a “third method”. Below, an outline of each processing procedure of the first method, the second method, and the third method will be described.

〔2-4-4-1.第1方法〕
まず、第1方法について説明する。例えば、第1方法の場合、情報処理装置100Aは、以下のような処理(2-1)~(2-3)を行い、ブロブを示す第3情報を生成する。
[2-4-4-1. First method]
First, the first method will be explained. For example, in the case of the first method, the information processing device 100A performs the following processes (2-1) to (2-3) to generate third information indicating blobs.

(2-1):各ノードの近傍ノード数(エッジ数)が大きいものからノードNDを取得
(2-2):ノードNDの近傍ノード及びノードNDを一のブロブとする
(2-3):ブロブとしたノード及びそのノードのエッジを削除
(2-1): Acquire a node ND from a node having a large number of neighboring nodes (number of edges) (2-2): Consider the neighboring node of the node ND and the node ND as one blob (2-3): Delete blob nodes and their edges

例えば、情報処理装置100Aは、処理(2-1)~(2-3)を、すべてのノードにおいて実施する。 For example, the information processing device 100A performs processes (2-1) to (2-3) in all nodes.

例えば、処理(2-1)では、情報処理装置100Aは、グラフGR21を参照し、一のノードNDを順次取得する。情報処理装置100Aは、近傍ノードの数が大きい方から順に並べられたノードの一覧情報を用いて、一のノードNDを取得してもよい。 For example, in processing (2-1), the information processing device 100A sequentially acquires one node ND by referring to the graph GR21. The information processing device 100A may acquire one node ND using list information of nodes arranged in descending order of the number of neighboring nodes.

例えば処理(2-2)では、情報処理装置100Aは、処理対象となっているグラフ(グラフGR21等)を参照し、ノードNDの近傍ノード及びノードNDを一のブロブとする情報を生成する。なお、情報処理装置100Aは、すべての近傍ノードをブロブとするのではなく定数K以下の近傍ノードをブロブとしても良い。例えば、情報処理装置100Aは、ノードNDの全近傍ノードをノードNDとともにブロブとするのではなく、近傍ノードのうちK個の近傍ノード及びノードNDを一のブロブとしてもよい。 For example, in the process (2-2), the information processing device 100A refers to the graph to be processed (graph GR21, etc.) and generates information regarding the neighboring nodes of the node ND and the node ND as one blob. Note that the information processing apparatus 100A may not set all neighboring nodes as blobs, but may set neighboring nodes equal to or smaller than a constant K as blobs. For example, the information processing apparatus 100A may treat K neighboring nodes and the node ND as one blob instead of treating all neighboring nodes of the node ND as a blob together with the node ND.

例えば処理(2-3)では、情報処理装置100Aは、ノードが重複して選択されないように、処理(2-2)においてブロブとしたノード及びそのノードのエッジを削除する。例えば、情報処理装置100Aは、ブロブとしたノードが他のノードの近傍ノードであれば、その(エッジおよび)ノードを削除する。なお、上記の方法は一例に過ぎず、処理(2-3)は、エッジ等を削除する方法に限らず、ブロブを生成可能であればどのような方法であってもよい。例えば、情報処理装置100Aは、既にブロブに属しているノードのリストを保持して、除外するノードを管理する方法により、ブロブの生成を行ってもよい。例えば、情報処理装置100Aは、ブロブとしたノードに所定のフラグ(削除フラグ等)を立てることにより、既にブロブに属しているノードを管理してもよい。このように、フラグを用いる場合、情報処理装置100Aは、処理の際に各ノードのフラグを参照して、そのノードを処理対象とするかを判定する。 For example, in the process (2-3), the information processing apparatus 100A deletes the node determined as the blob in the process (2-2) and the edges of the node so that redundant nodes are not selected. For example, the information processing apparatus 100A deletes the node (and the edge) if the blob node is a neighboring node of another node. Note that the above method is only an example, and the process (2-3) is not limited to the method of deleting edges and the like, and any method that can generate a blob may be used. For example, the information processing apparatus 100A may generate a blob by a method of holding a list of nodes that already belong to the blob and managing nodes to be excluded. For example, the information processing apparatus 100A may manage nodes that already belong to the blob by setting a predetermined flag (deletion flag or the like) on the node that is set as the blob. In this way, when using a flag, the information processing apparatus 100A refers to the flag of each node during processing to determine whether the node is to be processed.

上述した第1方法の具体例について図21を用いて説明する。図21では、情報処理装置100Aは、グラフGR21のうち、近傍ノードの数が最大の4個であるノードN7を取得する(ステップS51)。図21では、グラフGR21のうちノードN1も近傍ノードの数が4個であるが、情報処理装置100Aは、ノードN7を取得するものとする。なお、近傍ノードの数が同数のノードが複数ある場合、情報処理装置100Aは、その複数のノードからランダムにノードを取得してもよい。 A specific example of the first method described above will be described with reference to FIG. In FIG. 21, the information processing device 100A acquires the node N7 having the largest number of neighboring nodes, 4, from the graph GR21 (step S51). In FIG. 21, the node N1 in the graph GR21 also has four neighboring nodes, but the information processing device 100A acquires the node N7. Note that when there are a plurality of nodes having the same number of neighboring nodes, the information processing apparatus 100A may randomly acquire a node from the plurality of nodes.

そして、情報処理装置100Aは、ノードN7の近傍ノードであるノードN9、N12、N54、N126の4個のノード及びノードN7の5個のノードを一のブロブBL11とする(ステップS52)。情報処理装置100Aは、ノードN7、N9、N12、N54、N126の5個のノードが一のブロブBL11に属することを示す第3情報BLT1を生成する。そして、情報処理装置100Aは、ノードN7、N9、N12、N54、N126の5個のノード及び各ノードのエッジをグラフGR21から削除する。これにより、空間情報SP20-1に示すように、グラフGR21はグラフGR21-1に更新される。 Then, the information processing apparatus 100A sets the four nodes N9, N12, N54, and N126, which are neighboring nodes of the node N7, and the five nodes N7 as one blob BL11 (step S52). The information processing device 100A generates third information BLT1 indicating that five nodes N7, N9, N12, N54, and N126 belong to one blob BL11. Then, the information processing device 100A deletes the five nodes N7, N9, N12, N54, and N126 and the edges of each node from the graph GR21. As a result, the graph GR21 is updated to the graph GR21-1 as shown in the spatial information SP20-1.

そして、情報処理装置100Aは、グラフGR21のうち、近傍ノードの数が4個であるノードN1を取得する(ステップS53)。そして、情報処理装置100Aは、ノードN1の近傍ノードであるノードN4、N5、N88、N99の4個のノード及びノードN1の5個のノードを一のブロブBL12とする(ステップS54)。情報処理装置100Aは、ノードN1、N4、N5、N88、N99の5個のノードが一のブロブBL12に属することを示す第3情報BLT2を生成する。そして、情報処理装置100Aは、ノードN1、N4、N5、N88、N99の5個のノード及び各ノードのエッジをグラフGR21-1から削除する。 Then, the information processing device 100A acquires the node N1 having four neighboring nodes from the graph GR21 (step S53). Then, the information processing apparatus 100A sets the four nodes N4, N5, N88, and N99, which are neighboring nodes of the node N1, and the five nodes of the node N1 as one blob BL12 (step S54). The information processing device 100A generates third information BLT2 indicating that five nodes N1, N4, N5, N88, and N99 belong to one blob BL12. Then, the information processing device 100A deletes the five nodes N1, N4, N5, N88, and N99 and the edges of each node from the graph GR21-1.

情報処理装置100Aは、上述した処理を処理対象となるノードが無くなるまで繰り返し、複数のブロブを示す第3情報を生成する。 The information processing apparatus 100A repeats the above-described processing until there are no more nodes to be processed, and generates third information indicating a plurality of blobs.

〔2-4-4-2.第2方法〕
次に、第2方法について説明する。例えば、第2方法の場合、情報処理装置100Aは、以下のような処理(3-1)~(3-3)を行い、ブロブを示す第3情報を生成する。
[2-4-4-2. Second method]
Next, the second method will be explained. For example, in the case of the second method, the information processing device 100A performs the following processes (3-1) to (3-3) to generate third information indicating blobs.

(3-1):各ノードの近傍ノード数(エッジ数)が小さいものからノードNDを取得
(3-2):ノードNDの近傍ノード及びノードNDを一のブロブとする
(3-3):ブロブとしたノード及びそのノードのエッジを削除
(3-1): Acquire a node ND from a node having a smaller number of neighboring nodes (number of edges) (3-2): Consider the neighboring node of the node ND and the node ND as one blob (3-3): Delete blob nodes and their edges

例えば、情報処理装置100Aは、処理(3-1)~(3-3)を、すべてのノードにおいて実施する。 For example, the information processing device 100A performs processes (3-1) to (3-3) in all nodes.

例えば、処理(3-1)では、情報処理装置100Aは、グラフGR21を参照し、一のノードNDを順次取得する。情報処理装置100Aは、近傍ノードの数が小さい方から順に並べられたノードの一覧情報を用いて、一のノードNDを取得してもよい。 For example, in the process (3-1), the information processing device 100A sequentially acquires one node ND by referring to the graph GR21. The information processing apparatus 100A may acquire one node ND using list information of nodes arranged in ascending order of the number of neighboring nodes.

例えば処理(3-2)では、情報処理装置100Aは、処理対象となっているグラフ(グラフGR21等)を参照し、ノードNDの近傍ノード及びノードNDを一のブロブとする情報を生成する。なお、情報処理装置100Aは、すべての近傍ノードをブロブとするのではなく定数K以下の近傍ノードをブロブとしても良い。例えば、情報処理装置100Aは、ノードNDの全近傍ノードをノードNDとともにブロブとするのではなく、近傍ノードのうちK個の近傍ノード及びノードNDを一のブロブとしてもよい。 For example, in the process (3-2), the information processing device 100A refers to the graph to be processed (graph GR21, etc.), and generates information regarding the neighbor node of the node ND and the node ND as one blob. Note that the information processing apparatus 100A may not set all neighboring nodes as blobs, but may set neighboring nodes equal to or smaller than a constant K as blobs. For example, the information processing apparatus 100A may treat K neighboring nodes and the node ND as one blob instead of treating all neighboring nodes of the node ND as a blob together with the node ND.

例えば処理(3-3)では、情報処理装置100Aは、ノードが重複して選択されないように、処理(3-2)においてブロブとしたノード及びそのノードのエッジを削除する。例えば、情報処理装置100Aは、ブロブとしたノードが他のノードの近傍ノードであれば、その(エッジおよび)ノードを削除する。なお、第2方法は、ノードの取得順が近傍ノード数(エッジ数)が小さい方から順である点以外は、第1方法と同様であるため、具体例等についての説明は省略する。例えば、処理(3-3)は、第1方法と同様に、エッジ等を削除する方法に限らず、ブロブを生成可能であればどのような方法であってもよい。例えば、情報処理装置100Aは、第1方法と同様に、既にブロブに属しているノードのリストを保持して、除外するノードを管理する方法により、ブロブの生成を行ってもよい。 For example, in the process (3-3), the information processing apparatus 100A deletes the node determined as a blob in the process (3-2) and the edges of the node so that redundant nodes are not selected. For example, the information processing apparatus 100A deletes the node (and the edge) if the blob node is a neighboring node of another node. Note that the second method is the same as the first method, except that the nodes are acquired in order from the one with the smallest number of neighboring nodes (number of edges), and thus a description of specific examples will be omitted. For example, the process (3-3) is not limited to the method of deleting edges or the like, as in the first method, and may be any method as long as it can generate blobs. For example, the information processing apparatus 100A may generate a blob by a method of holding a list of nodes that already belong to the blob and managing nodes to be excluded, as in the first method.

〔2-4-4-3.第3方法〕
次に、第3方法について説明する。例えば、第3方法の場合、情報処理装置100Aは、以下のような処理(4-1)~(4-3)を行い、ブロブを示す第3情報を生成する。
[2-4-4-3. Third method]
Next, the third method will be explained. For example, in the case of the third method, the information processing device 100A performs the following processes (4-1) to (4-3) to generate third information indicating blobs.

(4-1):ランダムにノードNDを順次取得
(4-2):ノードNDの近傍ノード及びノードNDを一のブロブとする
(4-3):ブロブとしたノード及びそのノードのエッジを削除
(4-1): Sequentially acquire nodes ND at random (4-2): Set neighboring nodes of node ND and nodes ND as one blob (4-3): Delete blob nodes and their edges

例えば、情報処理装置100Aは、処理(4-1)~(4-3)を、すべてのノードにおいて実施する。なお、第3方法は、ノードの取得順がランダムである点以外は、第1方法及び第2方法と同様であり詳細な説明は省略する。例えば、情報処理装置100Aは、すべて同じエッジ数であればランダム順(第3方法)で第3情報の生成を実行してもよい。 For example, the information processing device 100A performs processes (4-1) to (4-3) in all nodes. Note that the third method is the same as the first and second methods except that the order in which nodes are acquired is random, and detailed description thereof will be omitted. For example, the information processing device 100A may generate the third information in a random order (third method) if all edges have the same number.

〔2-4-4-4.第4方法〕
なお、上述した第1方法~第3方法は一例に過ぎず、情報処理装置100Aは、様々な処理によりブロブを生成してもよい。例えば、情報処理装置100Aは、複数のオブジェクトを検索対象とする近傍検索インデックス(インデックス)を用いた検索によりブロブを生成してもよい。インデックスを用いた検索によりブロブを生成する方法を「第4方法」ともいう。
[2-4-4-4. Fourth method]
Note that the above-described first to third methods are merely examples, and the information processing apparatus 100A may generate blobs through various processes. For example, the information processing device 100A may generate a blob by performing a search using a neighborhood search index (index) for searching a plurality of objects. A method of generating a blob by searching using an index is also called a “fourth method”.

以下、第4方法について説明する。なお、上述した内容と同様の点については適宜説明を省略する。以下では、インデックスの一例としてグラフを用いる場合を一例として説明するが、上述したようにインデックスは、複数のオブジェクトを検索対象とするものであればどのようなものであってもよい。例えば、インデックスは、ハッシュインデックス、ツリーインデックス等、どのようなインデックスであってもよい。 The fourth method will be described below. It should be noted that descriptions of the same points as those described above will be omitted as appropriate. In the following, a case where a graph is used as an example of an index will be described as an example, but as described above, the index may be of any type as long as it searches for a plurality of objects. For example, the index may be any index such as a hash index, tree index, or the like.

ここから、図21に示すようなグラフGR21をインデックスとして用いた検索により、情報処理装置100Aがブロブを示す第3情報を生成する場合を説明する。例えば、情報処理装置100Aは、以下のような処理(5-1)~(5-4)を行い、グラフGR32を生成する。 From here, a case will be described where the information processing apparatus 100A generates the third information indicating the blob by performing a search using the graph GR21 as shown in FIG. 21 as an index. For example, the information processing device 100A performs the following processes (5-1) to (5-4) to generate the graph GR32.

(5-1):ランダムでオブジェクトNXを取得(選択)
(5-2):オブジェクトNXの近傍オブジェクトを定数k件検索
(5-3):オブジェクトNXの近傍オブジェクト及びオブジェクトNXを一のブロブとする
(5-4):重複処理回避用の処理を実行
(5-1): Obtain object NX at random (selection)
(5-2): Search constant k objects near object NX (5-3): Make object NX near object and object NX into one blob (5-4): Execute processing for avoiding overlapping processing

例えば処理(5-1)では、情報処理装置100Aは、グラフGR21からランダムに一のオブジェクトNXを取得する。 For example, in process (5-1), the information processing device 100A randomly acquires one object NX from the graph GR21.

例えば処理(5-2)では、情報処理装置100Aは、図11に示すような検索処理を、オブジェクトNXを対象(クエリ)とし、グラフGR21を用いて行うことにより、k件(個)のオブジェクトをオブジェクトNXの近傍オブジェクトとして抽出する。なお、情報処理装置100Aは、すべてのオブジェクトをスキャン(検索)して、オブジェクトNXの近傍オブジェクトを抽出してもよい。 For example, in the process (5-2), the information processing device 100A performs the search process as shown in FIG. are extracted as neighboring objects of the object NX. Note that the information processing device 100A may scan (search) all objects and extract nearby objects of the object NX.

例えば処理(5-3)では、情報処理装置100Aは、オブジェクトNXの近傍オブジェクトの近傍ノード及びオブジェクトNXを一のブロブとする情報を生成する。 For example, in the process (5-3), the information processing device 100A generates information regarding the neighboring nodes of the neighboring objects of the object NX and the object NX as one blob.

例えば処理(5-4)では、情報処理装置100Aは、一のオブジェクトが重複して検索されたりする等により複数のブロブに属することとならないように、重複処理回避用の処理を実行する。例えば、情報処理装置100Aは、ブロブとしたオブジェクトをインデックスから削除する。例えば、情報処理装置100Aは、ブロブとしたオブジェクトをグラフGR21から削除する。 For example, in the process (5-4), the information processing apparatus 100A executes duplicate process avoidance process so that one object does not belong to a plurality of blobs due to duplicate searches. For example, the information processing device 100A deletes the blob object from the index. For example, the information processing device 100A deletes the blob object from the graph GR21.

なお、情報処理装置100Aは、上記に限らず、一のオブジェクトが複数のブロブに属することとならなければ、どのような方法により重複処理回避用の処理を行ってもよい。例えば、情報処理装置100Aは、ブロブとしたオブジェクトに所定のフラグ(削除フラグ等)を立てることにより、既にブロブに属しているオブジェクトが処理対象となることを抑制してもよい。このように、フラグを用いる場合、情報処理装置100Aは、処理の際に各オブジェクトのフラグを参照して、そのオブジェクトを処理対象とするかを判定する。例えば、情報処理装置100Aは、上述したグループグラフの生成に検索結果を利用する場合には、フラグを用いた方法により重複処理回避用の処理を行ってもよい。 Note that the information processing apparatus 100A is not limited to the above, and may perform processing for avoiding duplicate processing by any method as long as one object does not belong to a plurality of blobs. For example, the information processing apparatus 100A may set a predetermined flag (deletion flag or the like) on an object set as a blob to prevent an object that already belongs to the blob from being processed. Thus, when using flags, the information processing apparatus 100A refers to the flags of each object during processing to determine whether the object is to be processed. For example, the information processing device 100A may perform processing for avoiding overlapping processing by a method using a flag when using the search results to generate the above-described group graph.

〔2-4-5.変形例に係る情報処理装置〕
第2の実施形態の変形例に係る情報処理装置100Aにおいて取得部131は、以下の処理も行う。取得部131は、データ検索の対象となる複数のオブジェクトを示す第1情報と、複数のオブジェクトを分類するために用いる第2情報とを取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスである第2情報を取得する。取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフである第2情報を取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスである第4情報を取得する。取得部131は、複数のオブジェクトの各々に対応する複数のオブジェクトノードがエッジにより連結されたグラフである第4情報を取得する。
[2-4-5. Information processing device according to modification]
In the information processing apparatus 100A according to the modified example of the second embodiment, the acquisition unit 131 also performs the following processes. The acquisition unit 131 acquires first information indicating a plurality of objects to be searched for data and second information used to classify the plurality of objects. The acquisition unit 131 acquires second information, which is an index for searching a plurality of objects. Acquisition unit 131 acquires second information, which is a graph in which a plurality of nodes corresponding to each of a plurality of objects are connected by edges. The acquisition unit 131 acquires fourth information, which is an index for searching a plurality of objects. Acquisition unit 131 acquires fourth information, which is a graph in which a plurality of object nodes corresponding to each of a plurality of objects are connected by edges.

また、第2の実施形態の変形例に係る情報処理装置100Aにおいて生成部132Aは、以下の処理も行う。生成部132Aは、取得部131により取得された第2情報を用いて、第1情報が示す複数のオブジェクトを分類し、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数のグループを示す第3情報を生成する。生成部132Aは、第2情報を用いて、複数のオブジェクトを複数のグループに分類する第3情報を生成する。生成部132Aは、第2情報を用いた検索により、複数のオブジェクトを複数のグループに分類する第3情報を生成する。 In addition, in the information processing device 100A according to the modification of the second embodiment, the generation unit 132A also performs the following processing. The generation unit 132A uses the second information acquired by the acquisition unit 131 to classify a plurality of objects indicated by the first information, and classifies a plurality of objects used for batch processing in search processing targeting a plurality of objects. to generate the third information indicating the group of The generator 132A uses the second information to generate the third information that classifies the plurality of objects into the plurality of groups. The generation unit 132A generates third information for classifying a plurality of objects into a plurality of groups by searching using the second information.

生成部132Aは、グラフ中の複数のノードから一のノードを選択し、一のノードにエッジで連結されたノードである近傍ノードのうち少なくとも一部のノードである分類対象ノード、及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、一のノードの近傍ノードのうち所定の数のノードである分類対象ノード、及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、一のノードの近傍ノードの全てである分類対象ノード、及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。 The generation unit 132A selects one node from a plurality of nodes in the graph, selects a node to be classified, which is at least part of neighboring nodes, which are nodes connected to the one node by an edge, and the one node. Third information is generated by classification processing for classifying the object groups corresponding to each into one group. The generation unit 132A generates the third information by a classification process of classifying, into one group, a classification target node, which is a predetermined number of nodes in the neighborhood of one node, and an object group corresponding to each of the one node. Generate. The generation unit 132A generates the third information by a classification process of classifying the classification target nodes, which are all neighboring nodes of one node, and the object groups corresponding to each of the one nodes into one group.

生成部132Aは、複数のノードの各々にエッジで連結されたノードである近傍ノードの数に基づいて、複数のノードから一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、近傍ノードの数が大きい方から順に一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、近傍ノードの数が小さい方から順に一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。 The generation unit 132A selects one node from the plurality of nodes based on the number of neighboring nodes that are nodes connected to each of the plurality of nodes by edges, The third information is generated by classification processing for classifying the object groups corresponding to each into one group. The generation unit 132A selects one node in descending order of the number of neighboring nodes, and classifies the classification target node of the one node and the object group corresponding to each of the one node into one group. Generate third information. The generation unit 132A selects one node in ascending order of the number of neighboring nodes, and classifies the classification target node of the one node and the object group corresponding to each of the one node into one group. Generate third information.

生成部132Aは、複数のノードからランダムに一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、一のグループに分類された一のノードの分類対象ノード及び一のノードである処理済みノード群をグラフから除外し、処理済みノード群を除外した後のグラフを用いて、分類処理を繰り返すことにより、第3情報を生成する。生成部132Aは、処理済みノード群を除外した後のグラフを用いて、分類処理を複数のオブジェクトがいずれかのグループに分類されるまで繰り返すことにより、第3情報を生成する。生成部132Aは、各々に属するオブジェクトが相互に排他的な複数のグループを示す第3情報を生成する。 The generation unit 132A randomly selects one node from a plurality of nodes, and classifies the classification target node of the one node and the object group corresponding to each of the one node into one group, thereby generating the third information. to generate The generation unit 132A excludes from the graph a group of processed nodes that are the nodes to be classified and the group of nodes classified into one group, and classifies the group using the graph after excluding the group of processed nodes. The third information is generated by repeating the process. The generation unit 132A generates the third information by repeating the classification process using the graph after excluding the processed node group until the plurality of objects are classified into any group. The generation unit 132A generates third information indicating a plurality of mutually exclusive groups of objects belonging to each.

生成部132Aは、第4情報を用いて、複数のオブジェクトのうち少なくとも一部のオブジェクトに対応するノードであるオブジェクトノードから、複数のグループのうち、オブジェクトノードが属するグループ以外の他のグループへエッジが連結されたグループグラフを生成する。生成部132Aは、複数のオブジェクトから一のオブジェクトを選択し、第4情報を用いて複数のオブジェクトを対象に、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトに対応する一のオブジェクトノードから、近傍オブジェクトが属する他のグループへエッジを連結する連結処理により、グループグラフを生成する。生成部132Aは、複数のオブジェクトからランダムに一のオブジェクトを選択し、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトに対応する一のオブジェクトノードから、近傍オブジェクトが属する他のグループへエッジを連結する連結処理により、グループグラフを生成する。生成部132Aは、第4情報を用いて、グループグラフを生成する。 The generation unit 132A uses the fourth information to generate an edge from an object node, which is a node corresponding to at least a part of objects among a plurality of objects, to a group other than the group to which the object node belongs among the plurality of groups. generates a connected group graph. The generation unit 132A selects one object from a plurality of objects, searches for a neighboring object of the one object in the plurality of objects using the fourth information, and selects an object node corresponding to the one object. , generates a group graph by a linking process that links edges to other groups to which neighboring objects belong. The generation unit 132A randomly selects one object from a plurality of objects, searches for neighboring objects of the one object, and generates an edge from one object node corresponding to the one object to another group to which the neighboring object belongs. A group graph is generated by a concatenation process that concatenates. The generator 132A generates a group graph using the fourth information.

〔2-4-6.情報処理のフロー〕
次に、図22を用いて、変形例に係る情報処理の手順について説明する。図22は、変形例に係る情報処理の一例を示すフローチャートである。
[2-4-6. Information processing flow]
Next, the procedure of information processing according to the modification will be described with reference to FIG. 22 . FIG. 22 is a flowchart illustrating an example of information processing according to the modification.

図22に示すように、情報処理装置100Aは、データ検索の対象となる複数のオブジェクトを示す第1情報を取得する(ステップS401)。例えば、情報処理装置100Aは、オブジェクト情報記憶部121から複数のオブジェクトを示す第1情報を取得する。 As shown in FIG. 22, the information processing apparatus 100A acquires first information indicating a plurality of objects to be searched for data (step S401). For example, the information processing device 100A acquires first information indicating a plurality of objects from the object information storage unit 121. FIG.

また、情報処理装置100Aは、複数のオブジェクトを分類するために用いる第2情報を取得する(ステップS402)。例えば、情報処理装置100Aは、グラフ情報記憶部122Aからグラフを第2情報として取得する。 The information processing device 100A also acquires second information used to classify a plurality of objects (step S402). For example, the information processing device 100A acquires the graph as the second information from the graph information storage unit 122A.

そして、情報処理装置100Aは、第2情報を用いて、第1情報が示す複数のオブジェクトを分類し、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数のグループを示す第3情報を生成する(ステップS403)。例えば、情報処理装置100Aは、各々に属するオブジェクトが相互に排他的な複数のブロブを示す第3情報を生成する。 Then, the information processing apparatus 100A uses the second information to classify the plurality of objects indicated by the first information, and indicates a plurality of groups used for batch processing in the search processing targeting the plurality of objects. Third information is generated (step S403). For example, the information processing device 100A generates third information indicating a plurality of blobs whose objects belong to each other and are mutually exclusive.

〔3.第3の実施形態〕
上述した例では、オブジェクトに対応するノード(オブジェクトノード)間をエッジで連結したグラフ(「オブジェクトグラフ」ともいう)、オブジェクトノードとグループ(ブロブ)間をエッジで連結したグラフ(ブロブ用グラフ)の2種類のグラフを用いる説明したが、情報処理システム1は様々な種類のグラフを用いてもよい。例えば、情報処理システム1は、オブジェクトグラフ及びブロブ用グラフとは異なり、グループ(ブロブ)間を連結したグラフ(以下「グループ連結グラフ」または「ブロブ連結グラフ」ともいう)を生成し、ブロブ連結グラフを検索に用いてもよい。
[3. Third Embodiment]
In the above example, a graph (also called "object graph") in which nodes corresponding to objects (object nodes) are connected by edges, and a graph (blob graph) in which object nodes and groups (blobs) are connected by edges Although two types of graphs have been described, the information processing system 1 may use various types of graphs. For example, unlike an object graph and a blob graph, the information processing system 1 generates a graph connecting groups (blobs) (hereinafter also referred to as a "group connection graph" or "blob connection graph"), and generates a blob connection graph. may be used for searching.

この点について、以下、第3の実施形態として説明する。第3の実施形態においては、情報処理システム1は、情報処理装置100または情報処理装置100Aに代えて、情報処理装置100Bを有する。なお、第1の実施形態及び第2の実施形態等において上述した内容と同様の点については適宜説明を省略する。 This point will be described below as a third embodiment. In the third embodiment, the information processing system 1 has an information processing device 100B instead of the information processing device 100 or the information processing device 100A. It should be noted that the description of the points similar to those described above in the first embodiment, the second embodiment, etc., will be omitted as appropriate.

情報処理装置100Bは、インデックス(インデックス情報)を用いて、一のオブジェクトが属する第1グループ(第1ブロブ)ら、一のオブジェクトの近傍オブジェクトが属する第2グループ(第2ブロブ)へエッジが連結されたグループ連結グラフを生成する。以下では、インデックスの一例としてグラフを用いる場合を一例として説明するが、上述したようにインデックスは、複数のオブジェクトを検索対象とするものであればどのようなものであってもよい。例えば、インデックスは、ハッシュインデックス、ツリーインデックス等、どのようなインデックスであってもよい。 The information processing device 100B uses an index (index information) to link edges from a first group (first blob) to which one object belongs to a second group (second blob) to which neighboring objects of one object belong. generate a group-connected graph. In the following, a case where a graph is used as an example of an index will be described as an example, but as described above, the index may be of any type as long as it searches for a plurality of objects. For example, the index may be any index such as a hash index, tree index, or the like.

〔3-1.情報処理〕
まず、図23を用いて、第3の実施形態に係る情報処理の概要を説明する。図23は、第3の実施形態に係る情報処理の一例を示す図である。
[3-1. information processing]
First, with reference to FIG. 23, an outline of information processing according to the third embodiment will be described. FIG. 23 is a diagram illustrating an example of information processing according to the third embodiment;

図23の例では、情報処理装置100Bは、空間情報SP21に示すようなグラフGR21を取得済みであるものとする。なお、情報処理装置100Bは、グラフ生成に関する様々な技術を適宜用いて、グラフGR21を生成してもよい。グラフGR21は図12等で示すグラフGR21と同様であるため説明を省略する。 In the example of FIG. 23, it is assumed that the information processing apparatus 100B has acquired a graph GR21 as shown in the spatial information SP21. Note that the information processing apparatus 100B may generate the graph GR21 by appropriately using various techniques related to graph generation. Since the graph GR21 is the same as the graph GR21 shown in FIG. 12 and the like, the explanation is omitted.

情報処理装置100Bは、任意の方法により、ブロブBL1~BL10等を示す情報を生成する。情報処理装置100Bは、k-means等の任意のクラスタリングにより各ノードをブロブBL1~BL10のいずれかに分類してもよい。なお、情報処理装置100Bは、ブロブを生成可能であれば、どのような方法によりブロブを生成してもよい。例えば、情報処理装置100Bは、上述した第1方法~第4方法のいずれかの方法によりブロブBL1~BL10等を示す情報を生成してもよい。 The information processing device 100B generates information indicating the blobs BL1 to BL10 and the like by any method. The information processing device 100B may classify each node into one of the blobs BL1 to BL10 by arbitrary clustering such as k-means. Note that the information processing apparatus 100B may generate a blob by any method as long as it can generate a blob. For example, the information processing device 100B may generate information indicating the blobs BL1 to BL10 and the like by any one of the first to fourth methods described above.

情報処理装置100Bは、空間情報SP21に示すようなグラフGR21及びブロブの情報を用いて、ブロブ連結グラフを生成する(ステップS61)。図23の例では、情報処理装置100Bは、空間情報SP41に示すように、ブロブ(第1ブロブ)と他のブロブ(第2ブロブ)との間をエッジで連結したブロブ連結グラフであるグラフGR41を生成する。図23に示す矢印線は、矢元のブロブ(第1ブロブ)から矢先のブロブ(第2ブロブ)への有向エッジを示す。すなわち、図23に示す矢印線は、矢元のブロブを参照元とし、矢先のブロブを参照先とする有向エッジを示す。例えば、図23では、ブロブBL1からは、ブロブBL2、ブロブBL3、ブロブBL4、ブロブBL5及びブロブBL8の5つのブロブへのエッジが連結されることを示す。 The information processing device 100B generates a blob connection graph using the graph GR21 and blob information as indicated in the spatial information SP21 (step S61). In the example of FIG. 23, the information processing device 100B, as shown in the spatial information SP41, creates a graph GR41, which is a blob-connected graph in which a blob (first blob) and another blob (second blob) are connected by edges. to generate The arrow lines shown in FIG. 23 indicate directed edges from the blob at the arrowhead (first blob) to the blob at the arrowhead (second blob). That is, the arrow lines shown in FIG. 23 indicate directed edges having the blob at the arrowhead as the reference source and the blob at the arrowhead as the reference destination. For example, FIG. 23 shows that from blob BL1, edges are connected to five blobs: blob BL2, blob BL3, blob BL4, blob BL5 and blob BL8.

例えば、情報処理装置100Bは、グラフGR21を検索し、検索結果を基にグラフGR41を生成する。例えば、情報処理装置100Bは、以下のような処理(6-1)~(6-4)を行い、ブロブ連結グラフであるグラフGR41を生成する。なお、以下のオブジェクトは、オブジェクトに対応するノードと読み替えてもよい。 For example, the information processing device 100B searches for the graph GR21 and generates a graph GR41 based on the search result. For example, the information processing device 100B performs the following processes (6-1) to (6-4) to generate a graph GR41, which is a blob connection graph. Note that the following objects may be read as nodes corresponding to the objects.

(6-1):ランダムでオブジェクトNXを取得(選択)
(6-2):オブジェクトNXの近傍オブジェクトを定数k件検索
(6-3):各近傍オブジェクトの属するブロブを取得
(6-4):オブジェクトNXが属するブロブから取得したブロブへのエッジを生成
(6-1): Obtain object NX at random (selection)
(6-2): Search constant k neighboring objects of object NX (6-3): Acquire blobs to which each neighboring object belongs (6-4): Generate edge from blob to which object NX belongs to acquired blob

例えば処理(6-1)では、情報処理装置100Bは、オブジェクト情報記憶部121に記憶された複数のオブジェクトからランダムに一のオブジェクトNXを取得する。 For example, in process (6-1), the information processing device 100B randomly acquires one object NX from a plurality of objects stored in the object information storage unit 121. FIG.

例えば処理(6-2)では、情報処理装置100Bは、図11に示すような検索処理を、オブジェクトNXを対象(クエリ)とし、グラフGR21を用いて行うことにより、k件(個)のオブジェクトをオブジェクトNXの近傍オブジェクトとして抽出する。 For example, in the process (6-2), the information processing device 100B performs the search process as shown in FIG. are extracted as neighboring objects of the object NX.

例えば処理(6-3)では、情報処理装置100Bは、ブロブ情報記憶部125に記憶されたブロブの情報を参照し、オブジェクトNXの近傍オブジェクト(ノード)が対応付けられたブロブを取得する。 For example, in the process (6-3), the information processing device 100B refers to the blob information stored in the blob information storage unit 125 and acquires the blob associated with the neighboring object (node) of the object NX.

例えば処理(6-4)では、情報処理装置100Bは、オブジェクトNXが属するブロブから取得したブロブへのエッジを生成する。情報処理装置100Bは、オブジェクトNXが属するブロブからすべての近傍オブジェクトの属するブロブへのエッジを生成する。例えば、情報処理装置100Bは、オブジェクトNXが属するブロブの参照先として取得したブロブを示す情報(ブロブID)を、オブジェクトNXが属するブロブを示す情報(ブロブID)に対応付けて、ブロブ連結グラフ情報記憶部126に登録することにより、グラフGR41を生成する。 For example, in the process (6-4), the information processing device 100B generates an edge to the blob acquired from the blob to which the object NX belongs. The information processing device 100B generates edges from the blob to which the object NX belongs to the blobs to which all neighboring objects belong. For example, the information processing device 100B associates the information (blob ID) indicating the blob acquired as the reference destination of the blob to which the object NX belongs with the information (blob ID) indicating the blob to which the object NX belongs, and generates the blob connection graph information. By registering in the storage unit 126, a graph GR41 is generated.

例えば、情報処理装置100Bは、上記の処理(6-1)~(6-4)を、処理対象となるオブジェクトが無くなるまで繰り返し行い、グラフGR41を生成する。なお、情報処理装置100Bは、ブロブXの参照先としてブロブYが登録済みの場合、ブロブXに属するオブジェクトの近傍オブジェクトとして、ブロブYに属するオブジェクトが再度検索(抽出)されても、登録をスキップして各ブロブの参照先に同じブロブが重複して登録されることを抑制してもよい。 For example, the information processing device 100B repeats the above processes (6-1) to (6-4) until there are no more objects to be processed, thereby generating the graph GR41. Note that when blob Y has already been registered as a reference destination of blob X, the information processing apparatus 100B skips registration even if an object belonging to blob Y is searched (extracted) again as a neighboring object of an object belonging to blob X. By doing so, it is possible to prevent the same blob from being redundantly registered as the reference destination of each blob.

例えば、情報処理装置100Bは、空間情報SP41に示すように、ブロブ間をエッジで連結するグラフGR41を用いて検索処理を行う。例えば、情報処理装置100Bは、検索クエリQE2を対象として、ブロブ連結グラフであるグラフGR41を用いた図27及び図28に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。 For example, the information processing apparatus 100B performs search processing using a graph GR41 connecting blobs with edges, as indicated by spatial information SP41. For example, the information processing apparatus 100B obtains the search result of the search query QE2 by performing the search processing as shown in FIGS. 27 and 28 using the graph GR41, which is the blob connection graph, for the search query QE2.

上述したブロブ連結グラフの生成方法は一例に過ぎず、情報処理装置100Bは、様々な方法によりブロブ連結グラフを生成してもよい。例えば、情報処理装置100Bは、グラフを検索することなく、ブロブ連結グラフを生成してもよい。空間情報SP21に示すブロブを検索により生成している場合、ブロブの生成の際の検索結果を流用して、グラフGR41等のブロブ連結グラフを生成してもよい。 The method of generating the blob connection graph described above is merely an example, and the information processing apparatus 100B may generate the blob connection graph by various methods. For example, the information processing device 100B may generate a blob connection graph without searching for graphs. When the blobs shown in the spatial information SP21 are generated by searching, a blob connection graph such as the graph GR41 may be generated by using the search results at the time of generating the blobs.

例えば、情報処理装置100Bは、グラフGR21でのオブジェクトノードの接続関係を、オブジェクトノードが属するブロブの接続関係に変換して、ブロブ連結グラフを生成してもよい。例えば、ブロブBL9に属するノードN1からはブロブBL8に属するノードN88及びブロブBL10に属するノードにエッジが連結されており、ブロブBL9に属するノードN4からはブロブBL7に属するノードにエッジが連結されている。そのため、情報処理装置100Bは、ブロブBL9から、ブロブBL7、ブロブBL8及びブロブBL10の3つのブロブへのエッジが連結されたブロブ連結グラフを生成する。このように、情報処理装置100Bは、オブジェクトノード間を連結するエッジを基に、ブロブ間をエッジで連結するブロブ連結グラフを生成してもよい。 For example, the information processing device 100B may convert the connection relation of object nodes in the graph GR21 into the connection relation of the blobs to which the object nodes belong to generate the blob connection graph. For example, an edge is connected from the node N1 belonging to the blob BL9 to a node N88 belonging to the blob BL8 and a node belonging to the blob BL10, and an edge is connected from the node N4 belonging to the blob BL9 to a node belonging to the blob BL7. . Therefore, the information processing apparatus 100B generates a blob connection graph in which the edges from the blob BL9 to the three blobs of the blob BL7, the blob BL8, and the blob BL10 are connected. In this manner, the information processing apparatus 100B may generate a blob connection graph that connects blobs with edges based on edges that connect object nodes.

〔3-2.情報処理装置の構成〕
次に、図24を用いて、第3の実施形態に係る情報処理装置100Bの構成について説明する。図24は、第3の実施形態に係る情報処理装置の構成例を示す図である。図24に示すように、情報処理装置100Bは、通信部110と、記憶部120Bと、制御部130Bとを有する。なお、情報処理装置100Bにおいて、情報処理装置100または情報処理装置100Aと同様の点は適宜説明を省略する。
[3-2. Configuration of Information Processing Device]
Next, the configuration of the information processing apparatus 100B according to the third embodiment will be described using FIG. FIG. 24 is a diagram illustrating a configuration example of an information processing apparatus according to the third embodiment; As shown in FIG. 24, the information processing device 100B has a communication section 110, a storage section 120B, and a control section 130B. In the information processing device 100B, description of the same points as those of the information processing device 100 or the information processing device 100A will be omitted as appropriate.

(記憶部120B)
記憶部120Bは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第3の実施形態に係る記憶部120Bは、図24に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、ブロブ情報記憶部125と、ブロブ連結グラフ情報記憶部126とを有する。
(storage unit 120B)
The storage unit 120B is realized by, for example, a semiconductor memory device such as a RAM or flash memory, or a storage device such as a hard disk or an optical disk. 24, the storage unit 120B according to the third embodiment includes an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, a codebook information storage unit 124, a blob It has an information storage unit 125 and a blob connection graph information storage unit 126 .

(ブロブ連結グラフ情報記憶部126)
第3の実施形態に係るブロブ連結グラフ情報記憶部126は、ブロブ連結グラフに関する各種情報を記憶する。例えば、ブロブ連結グラフ情報記憶部126は、生成したブロブ連結グラフを記憶する。図25は、第3の実施形態に係るブロブ連結グラフ情報記憶部の一例を示す図である。図25に示すブロブ連結グラフ情報記憶部126は、「ブロブID」および「接続ブロブ情報」といった項目を有する。
(Blob connection graph information storage unit 126)
The blob connection graph information storage unit 126 according to the third embodiment stores various types of information regarding the blob connection graph. For example, the blob connection graph information storage unit 126 stores the generated blob connection graph. 25 is a diagram illustrating an example of a blob connection graph information storage unit according to the third embodiment; FIG. The blob connection graph information storage unit 126 shown in FIG. 25 has items such as "blob ID" and "connected blob information".

「ブロブID」は、グラフにおける各ブロブ(グループ)を識別するための識別情報を示す。「接続ブロブ情報」は、対応するブロブから辿ることができるブロブ(参照先のブロブ)に関する情報を示す。例えば、「接続ブロブ情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのブロブから辿ることができる参照先(ブロブ)を識別するための情報を示す。すなわち、図25の例では、ブロブを識別するブロブIDに対して、そのブロブからエッジにより辿ることができる参照先(ブロブ)が対応付けられて登録されている。なお、「接続ブロブ情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 “Blob ID” indicates identification information for identifying each blob (group) in the graph. "Connection blob information" indicates information about a blob (reference destination blob) that can be traced from the corresponding blob. For example, "connection blob information" includes information such as "reference destination". "Reference destination" indicates information for identifying a reference destination (blob) that is connected by an edge and can be traced from the blob. That is, in the example of FIG. 25, a blob ID that identifies a blob is registered in association with a reference destination (blob) that can be traced from the blob by an edge. The “connection blob information” may include information (edge ID) for identifying the edge connected to the reference destination.

図25の例では、ブロブID「BL1」により識別されるブロブ(ブロブBL1)からは、ブロブID「BL2」、「BL3」、「BL4」、「BL5」、「BL8」の各々により識別される5つのブロブにエッジが連結されていることを示す。すなわち、ブロブBL1からは、ブロブBL2、BL3、BL4、BL5、BL8の5つのブロブの各々へ辿ることができることを示す。 In the example of FIG. 25, the blob (blob BL1) identified by the blob ID "BL1" is identified by each of the blob IDs "BL2", "BL3", "BL4", "BL5", and "BL8". It shows that the edge is connected to 5 blobs. That is, it indicates that each of the five blobs BL2, BL3, BL4, BL5, and BL8 can be traced from the blob BL1.

なお、ブロブ連結グラフ情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。また、ブロブ連結グラフは、クエリを入力とし、ブロブ連結グラフ中のエッジを辿ることによりオブジェクト(オブジェクトノード)を探索し、クエリに類似するオブジェクトを抽出し出力するプログラムモジュールを含んでもよい。すなわち、ブロブ連結グラフは、ブロブ連結グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、ブロブ連結グラフであるグラフGR41は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するオブジェクトをブロブ連結グラフにより抽出し、出力するプログラムであってもよい。例えば、グラフGR41は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR41は、入力されたクエリに基づいて、ブロブ連結グラフにおいてそのクエリに類似するオブジェクトを抽出し、出力するよう、コンピュータを機能させる。 Note that the blob connection graph information storage unit 126 is not limited to the above, and may store various types of information depending on the purpose. Also, the blob-connected graph may include a program module that takes a query as input, searches for objects (object nodes) by tracing edges in the blob-connected graph, extracts objects similar to the query, and outputs them. That is, the blob connection graph may be assumed to be used as a program module that performs search processing using the blob connection graph. For example, the graph GR41, which is a blob-connected graph, may be a program that, when vector data is input as a query, extracts objects corresponding to vector data similar to the vector data using the blob-connected graph and outputs them. . For example, the graph GR41 may be data used as a program module for searching for similar images corresponding to the query image. For example, graph GR41 causes a computer to extract and output objects similar to the query in the blob-connected graph based on an input query.

(制御部130B)
図24の説明に戻って、制御部130Bは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100B内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Bは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(Control section 130B)
Returning to the description of FIG. 24, the control unit 130B is a controller, and for example, various programs (information processing programs) stored in the storage device inside the information processing apparatus 100B are controlled by the CPU, MPU, GPU, or the like. (equivalent to one example) is implemented by executing the RAM as a work area. Also, the control unit 130B is a controller, and is implemented by an integrated circuit such as ASIC or FPGA, for example.

図24に示すように、制御部130Bは、取得部131と、生成部132Bと、検索処理部133Bと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Bの内部構成は、図24に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。 As shown in FIG. 24, the control unit 130B has an acquisition unit 131, a generation unit 132B, a search processing unit 133B, and a provision unit 134, and implements or executes the information processing functions and actions described below. do. Note that the internal configuration of the control unit 130B is not limited to the configuration shown in FIG. 24, and may be another configuration as long as it performs information processing to be described later.

第3の実施形態に係る取得部131は、データ検索の対象となる複数のオブジェクトが分類された複数のブロブを示すブロブ情報と、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報とを取得する。取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフを示すインデックス情報を取得する。取得部131は、クラスタリング処理により複数のオブジェクトが分類された複数のブロブを示すブロブ情報を取得する。取得部131は、各々に属するオブジェクトが相互に排他的な複数のブロブを示すブロブ情報を取得する。取得部131は、クエリを取得する。 The acquisition unit 131 according to the third embodiment acquires blob information indicating a plurality of blobs into which a plurality of objects to be searched for is classified, and index information indicating an index for searching the plurality of objects. do. The acquisition unit 131 acquires index information indicating a graph in which a plurality of nodes corresponding to each of a plurality of objects are connected by edges. The acquiring unit 131 acquires blob information indicating a plurality of blobs into which a plurality of objects are classified by clustering processing. The acquiring unit 131 acquires blob information indicating a plurality of blobs whose objects are mutually exclusive. Acquisition unit 131 acquires a query.

(生成部132B)
生成部132Bは、生成部132または生成部132Aと同様に各種情報を生成する。
(Generating unit 132B)
The generation unit 132B generates various information in the same manner as the generation unit 132 or the generation unit 132A.

生成部132Bは、取得部131により取得されたインデックス情報を用いて、複数のオブジェクトのうち一のオブジェクトが属する第1ブロブから、一のオブジェクトの近傍オブジェクトが属するブロブである第2ブロブへエッジが連結されたブロブ連結グラフを生成する。生成部132Bは、複数のオブジェクトから一のオブジェクトを選択し、インデックス情報を用いて複数のオブジェクトを対象に、一のオブジェクトの前近傍オブジェクトを検索し、一のオブジェクトが属する第1ブロブから、近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。 The generation unit 132B uses the index information acquired by the acquisition unit 131 to determine the edge from the first blob to which one of the plurality of objects belongs to the second blob to which the neighboring object of the one object belongs. Generates a connected blob-connected graph. The generating unit 132B selects one object from among a plurality of objects, searches the plurality of objects for objects in front of the object using the index information, and selects a neighborhood object from the first blob to which the one object belongs. A blob connectivity graph is generated by connecting the edges to the second blob to which the object belongs.

生成部132Bは、複数のオブジェクトからランダムに一のオブジェクトを選択し、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトが属する第1ブロブから、近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。生成部132Bは、グラフを用いて第1ブロブから第2ブロブへエッジが連結されたブロブ連結グラフを生成する。 The generation unit 132B randomly selects one object from a plurality of objects, searches for neighboring objects of the one object, and connects edges from the first blob to which the one object belongs to the second blob to which the neighboring objects belong. generates a blob-connected graph. The generation unit 132B uses the graph to generate a blob connection graph in which edges are connected from the first blob to the second blob.

生成部132Bは、グラフを用いて、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトが属する第1ブロブから、近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。生成部132Bは、第1ブロブから、グラフにおいて一のオブジェクトに対応する一のノードにエッジで連結されたノードである近傍ノードに対応する近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。 The generating unit 132B uses the graph to search for nearby objects of one object, and generates a blob connection graph by connecting edges from the first blob to which the one object belongs to the second blob to which the nearby object belongs. do. The generation unit 132B connects the edge from the first blob to the second blob to which the neighboring object corresponding to the neighboring node, which is the node connected by the edge to the one node corresponding to the one object in the graph, belongs, Generate a blob-connected graph.

生成部132Bは、第1ブロブから、第1ブロブの代表点である第1代表点と、第2ブロブの代表点である第2代表点との間をエッジで連結することにより、ブロブ連結グラフを生成する。生成部132Bは、第1ブロブのセントロイドである第1代表点と、第2ブロブのセントロイドである第2代表点との間をエッジで連結することにより、ブロブ連結グラフを生成する。生成部132Bは、第1ブロブに属するオブジェクトを基に算出される中心点である第1代表点と、第2ブロブに属するオブジェクトを基に算出される中心点である第2代表点との間をエッジで連結することにより、ブロブ連結グラフを生成する。 The generation unit 132B generates a blob connection graph by connecting, from the first blob, a first representative point, which is a representative point of the first blob, and a second representative point, which is a representative point of the second blob, with an edge. to generate The generation unit 132B generates a blob connection graph by connecting the first representative point, which is the centroid of the first blob, and the second representative point, which is the centroid of the second blob, with edges. The generation unit 132B creates a distance between the first representative point, which is the central point calculated based on the objects belonging to the first blob, and the second representative point, which is the central point calculated based on the objects belonging to the second blob. are connected by edges to generate a blob-connected graph.

(検索処理部133B)
検索処理部133Bは、検索処理部133または検索処理部133Aと同様に検索処理に関する各種処理を行う。
(Search processing unit 133B)
The search processing unit 133B performs various types of processing related to search processing, like the search processing unit 133 or the search processing unit 133A.

検索処理部133Bは、生成部132Bにより生成されたブロブ連結グラフを用いた検索処理を行う。検索処理部133Bは、ブロブ連結グラフを用いて、検索クエリの近傍オブジェクトを検索する検索処理を行う。検索処理部133Bは、ブロブ連結グラフにおいてブロブ間を連結するエッジを辿ることにより、検索クエリの近傍オブジェクトを検索する検索処理を行う。 The search processing unit 133B performs search processing using the blob connection graph generated by the generation unit 132B. The search processing unit 133B performs a search process of searching for nearby objects of the search query using the blob connection graph. The search processing unit 133B performs search processing for searching for nearby objects of the search query by tracing edges connecting blobs in the blob connection graph.

検索処理部133Bは、検索処理において、複数のブロブを示すブロブ情報を用いて、一のブロブに属するオブジェクトである対象オブジェクトと検索クエリとの距離を、ベクトル量子化された対象オブジェクトのベクトル情報を用いて算出する。検索処理部133Bは、対象オブジェクトと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133Bは、情報処理装置の仕様に基づいて決定される一括処理数の対象オブジェクトと検索クエリとの距離の算出を並列処理する。 In the search processing, the search processing unit 133B uses blob information indicating a plurality of blobs to calculate the distance between the target object, which is an object belonging to one blob, and the search query, and converts the vector information of the vector-quantized target object. calculated using The search processing unit 133B parallelizes and collectively calculates the distance between the target object and the search query. The search processing unit 133B parallel-processes the calculation of the distance between the search query and the target object of the batch processing number determined based on the specifications of the information processing apparatus.

〔3-3.情報処理のフロー〕
次に、図26を用いて、第3の実施形態に係る情報処理の手順について説明する。図26は、第3の実施形態に係る情報処理の一例を示すフローチャートである。
[3-3. Information processing flow]
Next, the procedure of information processing according to the third embodiment will be described with reference to FIG. 26 . FIG. 26 is a flowchart illustrating an example of information processing according to the third embodiment.

図26に示すように、情報処理装置100Bは、データ検索の対象となる複数のオブジェクトが分類された複数のグループを示すグループ情報を取得する(ステップS501)。例えば、情報処理装置100Bは、データ検索の対象となる複数のオブジェクトに対応するノード(オブジェクトノード)が分類された複数のブロブを示すブロブ情報を取得する。 As shown in FIG. 26, the information processing apparatus 100B acquires group information indicating a plurality of groups in which a plurality of objects to be searched for data are classified (step S501). For example, the information processing apparatus 100B acquires blob information indicating a plurality of blobs into which nodes (object nodes) corresponding to a plurality of objects to be searched for are classified.

情報処理装置100Bは、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する(ステップS502)。例えば、情報処理装置100Bは、複数のオブジェクトに対応するノード(オブジェクトノード)がエッジで連結されたグラフをインデックスとして取得する。 The information processing apparatus 100B acquires index information indicating an index that searches for a plurality of objects (step S502). For example, the information processing apparatus 100B acquires, as an index, a graph in which nodes (object nodes) corresponding to a plurality of objects are connected by edges.

情報処理装置100Bは、インデックス情報を用いて、複数のオブジェクトのうち一のオブジェクトが属する第1グループから、一のオブジェクトの近傍オブジェクトが属するグループである第2グループへエッジが連結されたグループ連結グラフを生成する(ステップS503)。例えば、情報処理装置100Bは、インデックス情報を用いて、複数のオブジェクトのうち一のオブジェクトが属する第1ブロブから、一のオブジェクトの近傍オブジェクトが属するブロブである第2ブロブへエッジが連結されたブロブ連結グラフを生成する。 The information processing device 100B uses the index information to create a group connection graph in which edges are connected from a first group to which one of a plurality of objects belongs to a second group to which a neighboring object of the one object belongs. is generated (step S503). For example, the information processing apparatus 100B uses the index information to extract a blob in which edges are connected from a first blob to which one of a plurality of objects belongs to a second blob to which a neighboring object of the one object belongs. Generate a connected graph.

〔3-4.検索処理例〕
ここで、第3の実施形態に係る検索処理の一例について、図27及び図28を一例として説明する。図27及び図28は、第3の実施形態に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100Bの検索処理部133Bによって行われる。なお、第1の実施形態や第2の実施形態で説明した検索処理と同様の点については適宜説明を省略する。
[3-4. Search processing example]
Here, an example of search processing according to the third embodiment will be described with reference to FIGS. 27 and 28 as an example. 27 and 28 are flowcharts showing an example of search processing according to the third embodiment. The search processing described below is performed by the search processing unit 133B of the information processing device 100B. It should be noted that descriptions of the same points as the search processing described in the first embodiment and the second embodiment will be omitted as appropriate.

図27及び図28では、N(G、s)およびCはブロブの集合(ブロブ集合)となる。また、「G」は、ブロブ間がエッジで連結されたグラフ(ブロブ連結グラフ)データ(例えば、空間情報SP41に示すグラフGR41等)であってもよい。例えば、情報処理装置100Bは、k近傍検索処理を実行する。 In FIGS. 27 and 28, N(G, s) and C are sets of blobs (blob sets). Also, "G" may be graph (blob-connected graph) data in which blobs are connected by edges (for example, graph GR41 shown in spatial information SP41, etc.). For example, the information processing device 100B executes k-nearest neighbor search processing.

まず、図27に示す処理(メイン処理)について説明する。例えば、情報処理装置100Bは、超球の半径rを∞(無限大)に設定し、ブロブ集合Cを空集合(Φ)に設定する(ステップS601)。そして、情報処理装置100Bは、既存のブロブ集合(全てのブロブ)から部分ブロブ集合Bを抽出する(ステップS602)。例えば、情報処理装置100Bは、ルートノードとして選択されたオブジェクト(ノード)が属するブロブを部分ブロブ集合Bとして抽出してもよい。また、例えば、情報処理装置100Bは、ランダムにブロブを部分ブロブ集合Bとして抽出してもよい。 First, the processing (main processing) shown in FIG. 27 will be described. For example, the information processing apparatus 100B sets the radius r of the hypersphere to ∞ (infinity) and sets the blob set C to an empty set (Φ) (step S601). Then, the information processing apparatus 100B extracts the partial blob set B from the existing blob set (all blobs) (step S602). For example, the information processing device 100B may extract the blob to which the object (node) selected as the root node belongs as the partial blob set B. FIG. Further, for example, the information processing apparatus 100B may extract blobs as the partial blob set B at random.

そして、情報処理装置100Bは、判定処理を実行する(ステップS603)。情報処理装置100Bは、図28に示すステップS701~S717の判定処理を実行する。図28に示す判定処理の詳細については後述する。 Then, the information processing apparatus 100B executes determination processing (step S603). The information processing apparatus 100B executes determination processing of steps S701 to S717 shown in FIG. Details of the determination processing shown in FIG. 28 will be described later.

そして、情報処理装置100Bは、ブロブ集合Sに部分ブロブ集合Bを設定する(ステップS604)。 Then, the information processing device 100B sets the partial blob set B to the blob set S (step S604).

情報処理装置100Bは、ブロブ集合Sに含まれるブロブの中で最小のクエリ距離dのブロブsを選択する(ステップS605)。なお、ここでいう「クエリ距離」とは、ブロブ内の全てのオブジェクトとクエリオブジェクト(クエリ)間の中で最も短い距離である。例えば、情報処理装置100Bは、クエリ(検索クエリ)となるオブジェクトをyとすると、ブロブ集合Sのうち、オブジェクトyとのクエリ距離が最も短いブロブsを選択する。なお、クエリ距離は、上記に限らず、例えばクエリとブロブの代表点(セントロイド等)との間の距離であってもよい。そして、情報処理装置100Bは、ブロブ集合Sからブロブsを除外する(ステップS606)。 The information processing apparatus 100B selects the blob s with the smallest query distance d from among the blobs included in the blob set S (step S605). The “query distance” here is the shortest distance between all objects in the blob and the query object (query). For example, the information processing apparatus 100B selects the blob s from the blob set S that has the shortest query distance to the object y, where y is an object to be used as a query (search query). Note that the query distance is not limited to the above, and may be, for example, the distance between the query and a representative point (centroid or the like) of the blob. The information processing apparatus 100B then excludes the blob s from the blob set S (step S606).

そして、情報処理装置100Bは、ブロブsのクエリ距離dがr(1+ε)を超えるか否かを判定する(ステップS607)。ブロブsのクエリ距離dがr(1+ε)を超える場合(ステップS607:Yes)、情報処理装置100Bは、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS608)、処理を終了する。 Then, the information processing device 100B determines whether or not the query distance d of the blob s exceeds r(1+ε) (step S607). If the query distance d of the blob s exceeds r(1+ε) (step S607: Yes), the information processing device 100B outputs the object set R as the neighborhood object set of the object y (step S608), and ends the process.

ブロブsのクエリ距離dがr(1+ε)を超えない場合(ステップS607:No)、情報処理装置100Bは、ブロブsがブロブ集合Cに含まれるかを判定する(ステップS609)。 When the query distance d of the blob s does not exceed r(1+ε) (step S607: No), the information processing device 100B determines whether the blob s is included in the blob set C (step S609).

ブロブsがブロブ集合Cに含まれる場合(ステップS609:Yes)、情報処理装置100Bは、ステップS605に戻って処理を繰り返す。 If the blob s is included in the blob set C (step S609: Yes), the information processing apparatus 100B returns to step S605 and repeats the process.

ブロブsがブロブ集合Cに含まれない場合(ステップS609:No)、情報処理装置100Bは、ブロブ集合Cにブロブsを追加する(ステップS610)。 If the blob s is not included in the blob set C (step S609: No), the information processing device 100B adds the blob s to the blob set C (step S610).

そして、情報処理装置100Bは、部分ブロブ集合Bにブロブsの近傍ブロブ集合N(G,s)を設定する(ステップS611)。近傍ブロブ集合N(G,s)は、例えばブロブsに関連付けられているブロブ(近傍のブロブ)の集合である。例えば、近傍ブロブ集合N(G,s)は、ブロブsからのエッジが連結されているブロブ(近傍のブロブ)の集合である。そして、情報処理装置100Bは、判定処理を実行する(ステップS612)。詳細は後述するが、例えば、情報処理装置100Bは、上述したステップS603と同様に、図28に示すステップS701~S717の判定処理を実行する。 Then, the information processing device 100B sets the neighboring blob set N(G, s) of the blob s to the partial blob set B (step S611). A neighboring blob set N(G, s) is, for example, a set of blobs (neighboring blobs) associated with the blob s. For example, the neighborhood blob set N(G, s) is the set of blobs (neighborhood blobs) whose edges from blob s are connected. Then, the information processing device 100B executes determination processing (step S612). Although the details will be described later, for example, the information processing apparatus 100B executes determination processing of steps S701 to S717 shown in FIG. 28 in the same manner as step S603 described above.

そして、情報処理装置100Bは、ブロブ集合Sが空集合(Φ)であるか否かを判定する(ステップS613)。ブロブ集合Sが空集合でない場合(ステップS613:No)、情報処理装置100Bは、ステップS605に戻って処理を繰り返す。また、ブロブ集合Sが空集合である場合(ステップS613:Yes)、情報処理装置100Bは、オブジェクト集合Rを出力し、処理を終了する(ステップS614)。例えば、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト(ノード)を追加ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。例えば、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応する近傍ノードとして抽出(選択)してもよい。また、例えば、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。 Then, the information processing device 100B determines whether or not the blob set S is an empty set (Φ) (step S613). If the blob set S is not an empty set (step S613: No), the information processing apparatus 100B returns to step S605 and repeats the process. If the blob set S is an empty set (step S613: Yes), the information processing device 100B outputs the object set R and ends the process (step S614). For example, the information processing device 100B may select an object (node) included in the object set R as a neighboring node corresponding to the additional node (input object y). For example, the information processing device 100B may extract (select) objects (nodes) included in the object set R as neighboring nodes corresponding to the target node (input object y). Further, for example, the information processing device 100B may provide objects (nodes) included in the object set R as search results corresponding to the search query (input object y) to the terminal device or the like that performed the search.

ここから、図28に示す処理(判定処理)について説明する。まず、情報処理装置100Bは、ブロブ集合Tに部分ブロブ集合Bを設定する(ステップS701)。 From here, the processing (determination processing) shown in FIG. 28 will be described. First, the information processing apparatus 100B sets a sub-blob set B in the blob set T (step S701).

そして、情報処理装置100Bは、ブロブ集合Tからブロブbを一つ取得し、ブロブ集合Tからブロブbを削除する(ステップS702)。そして、情報処理装置100Bは、判定処理に用いる変数であるminを∞(無限大)に設定する(ステップS703)。 Then, the information processing apparatus 100B acquires one blob b from the blob set T, and deletes the blob b from the blob set T (step S702). Then, the information processing apparatus 100B sets min, which is a variable used for determination processing, to ∞ (infinity) (step S703).

そして、情報処理装置100Bは、ブロブbからオブジェクトuを一つ取得し、ブロブbからオブジェクトuを削除する(ステップS704)。 Then, the information processing apparatus 100B acquires one object u from the blob b, and deletes the object u from the blob b (step S704).

そして、情報処理装置100Bは、オブジェクトuとオブジェクトyとの距離d(u,y)がmin未満か否かを判定する(ステップS705)。 The information processing apparatus 100B then determines whether or not the distance d(u, y) between the object u and the object y is less than min (step S705).

オブジェクトuとオブジェクトyとの距離d(u,y)がmin未満である場合(ステップS705:Yes)、情報処理装置100Bは、minの値を距離d(u,y)に設定(更新)し(ステップS706)、ステップS707の処理を行う。 When the distance d(u, y) between the object u and the object y is less than min (step S705: Yes), the information processing device 100B sets (updates) the value of min to the distance d(u, y). (Step S706), the process of step S707 is performed.

オブジェクトuとオブジェクトyとの距離d(u,y)がmin未満ではない場合(ステップS705:No)、情報処理装置100Bは、ステップS706の処理を行わず、ステップS707の処理を行う。 When the distance d(u, y) between the object u and the object y is not less than min (step S705: No), the information processing apparatus 100B performs the process of step S707 without performing the process of step S706.

情報処理装置100Bは、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS707)。 The information processing device 100B determines whether or not the distance d(u, y) between the object u and the object y is r(1+ε) or less (step S707).

オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS707:Yes)、情報処理装置100Bは、ブロブbをブロブ集合Sに追加し(ステップS708)、ステップS709の処理を行う。 If the distance d(u, y) between the object u and the object y is less than or equal to r(1+ε) (step S707: Yes), the information processing device 100B adds the blob b to the blob set S (step S708), The process of step S709 is performed.

オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS707:No)、情報処理装置100Bは、ステップS708の処理を行わず、ステップS709の処理を行う。 When the distance d(u, y) between the object u and the object y is not less than r(1+ε) (step S707: No), the information processing apparatus 100B does not perform the process of step S708, but performs the process of step S709. .

情報処理装置100Bは、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS709)。 The information processing device 100B determines whether or not the distance d(u, y) between the object u and the object y is less than or equal to r (step S709).

オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS709:Yes)、情報処理装置100Bは、オブジェクトuをオブジェクト集合Rに追加し(ステップS710)、ステップS711の処理を行う。 If the distance d (u, y) between the object u and the object y is less than or equal to r (step S709: Yes), the information processing device 100B adds the object u to the object set R (step S710). process.

オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS709:No)、情報処理装置100Bは、ステップS710の処理を行わず、ステップS711の処理を行う。 If the distance d(u, y) between the object u and the object y is not less than or equal to r (step S709: No), the information processing apparatus 100B performs the process of step S711 without performing the process of step S710.

情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS711)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索数や抽出対象数であってもよい。また、例えば、範囲検索等において抽出するオブジェクト数の上限を設けない場合、ksは、無限大に設定されてもよい。例えば、ks=4等であってもよい。 The information processing device 100B determines whether or not the number of objects included in the object set R exceeds ks (step S711). The predetermined number ks is an arbitrarily determined natural number. For example, ks may be the number of searches or the number of extraction targets. Also, for example, if there is no upper limit on the number of objects to be extracted in a range search or the like, ks may be set to infinity. For example, ks=4 or the like may be used.

オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS711:Yes)、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyから最も遠いオブジェクトを、オブジェクト集合Rから除外し(ステップS712)、ステップS713の処理を行う。 When the number of objects included in the object set R exceeds ks (step S711: Yes), the information processing device 100B excludes from the object set R the object farthest from the object y among the objects included in the object set R. (Step S712), the process of step S713 is performed.

オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS711:No)、情報処理装置100Bは、ステップS712の処理を行わず、ステップS713の処理を行う。 When the number of objects included in the object set R does not exceed ks (step S711: No), the information processing apparatus 100B does not perform the process of step S712, but performs the process of step S713.

情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS713)。 The information processing device 100B determines whether or not the number of objects included in the object set R matches ks (step S713).

オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS713:Yes)、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyから最も遠いオブジェクトと、オブジェクトyとの距離をrに設定し(ステップS714)、ステップS715の処理を行う。 If the number of objects included in the object set R matches ks (step S713: Yes), the information processing device 100B determines the distance between the object farthest from the object y among the objects included in the object set R and the object y. is set to r (step S714), and the process of step S715 is performed.

オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS713:No)、情報処理装置100Bは、ステップS714の処理を行わず、ステップS715の処理を行う。 When the number of objects included in the object set R does not match ks (step S713: No), the information processing apparatus 100B does not perform the process of step S714, but performs the process of step S715.

情報処理装置100Bは、ブロブbが空集合(Φ)であるか否かを判定する(ステップS715)。ブロブbが空集合でない場合(ステップS715:No)、情報処理装置100Bは、ステップS704に戻って処理を繰り返す。 The information processing apparatus 100B determines whether the blob b is an empty set (Φ) (step S715). If the blob b is not an empty set (step S715: No), the information processing apparatus 100B returns to step S704 and repeats the process.

また、ブロブbが空集合である場合(ステップS715:Yes)、情報処理装置100Bは、minを部分ブロブ集合B内のブロブbのブロブのクエリ距離とする(ステップS716)。例えば、情報処理装置100Bは、ブロブbの全てのオブジェクトとクエリとの間の距離のうち最も短い距離をクエリ距離としてminに設定する。 If the blob b is an empty set (step S715: Yes), the information processing apparatus 100B sets min as the blob query distance of the blob b in the sub-blob set B (step S716). For example, the information processing device 100B sets min as the query distance to be the shortest distance among the distances between all the objects of the blob b and the query.

情報処理装置100Bは、ブロブ集合Tが空集合(Φ)であるか否かを判定する(ステップS717)。ブロブ集合Tが空集合でない場合(ステップS717:No)、情報処理装置100Bは、ステップS702に戻って処理を繰り返す。 The information processing device 100B determines whether the blob set T is an empty set (Φ) (step S717). If the blob set T is not an empty set (step S717: No), the information processing apparatus 100B returns to step S702 and repeats the process.

また、ブロブ集合Tが空集合である場合(ステップS717:Yes)、判定処理を終了する。 Also, if the blob set T is an empty set (step S717: Yes), the determination process ends.

〔3-5.変形例〕
ブロブ連結グラフは、上述した例に限らず様々な態様により構成されてもよい。例えば、ブロブ連結グラフは、各グループ(ブロブ)の代表点間がエッジで連結されたグラフであってもよい。この点について、以下、第3の実施形態に係る変形例として説明する。なお、第1の実施形態や第2の実施形態や第3の実施形態と同様の点については、適宜説明を省略する。第3の実施形態の変形例に係る情報処理装置100Bは、ブロブ情報記憶部125及びブロブ連結グラフ情報記憶部126に代えて、ブロブ情報記憶部125A及びブロブ連結グラフ情報記憶部126Aを有する。
[3-5. Modification]
The blob connection graph is not limited to the example described above, and may be configured in various manners. For example, the blob-connected graph may be a graph in which representative points of each group (blob) are connected by edges. This point will be described below as a modification of the third embodiment. Note that descriptions of the same points as those of the first, second, and third embodiments will be omitted as appropriate. An information processing apparatus 100B according to the modification of the third embodiment has a blob information storage unit 125A and a blob connection graph information storage unit 126A instead of the blob information storage unit 125 and the blob connection graph information storage unit 126. FIG.

〔3-5-1.情報処理〕
まず、図29を用いて、変形例に係る情報処理の概要を説明する。図29は、変形例に係るブロブ連結グラフ情報の一例を示す図である。図29の例ではブロブがクラスタリングにより生成されている場合を示す。
[3-5-1. information processing]
First, with reference to FIG. 29, an overview of information processing according to the modification will be described. FIG. 29 is a diagram illustrating an example of blob connection graph information according to a modification. The example in FIG. 29 shows a case where blobs are generated by clustering.

図29の例では、情報処理装置100Bは、各ブロブのセントロイドを連結したブロブ連結グラフを生成する。情報処理装置100Bは、空間情報SP41に示すように、各ブロブBL1~BL10の各々に対応するセントロイドC1~C10をエッジで連結したブロブ連結グラフであるグラフGR42を生成する。情報処理装置100Bは、グラフ生成に関する種々の従来技術を適宜用いてグラフGR42を生成する。 In the example of FIG. 29, the information processing device 100B generates a blob connection graph in which the centroids of each blob are connected. The information processing apparatus 100B generates a graph GR42, which is a blob-connected graph in which centroids C1 to C10 corresponding to each of the blobs BL1 to BL10 are connected by edges, as shown in the spatial information SP41. The information processing device 100B generates the graph GR42 by appropriately using various conventional techniques related to graph generation.

例えば、情報処理装置100Bは、ブロブBL1のセントロイドC1がブロブBL2のセントロイドC2、ブロブBL3のセントロイドC3、ブロブBL4のセントロイドC4、ブロブBL7のセントロイドC7、及びブロブBL8のセントロイドC8の5つのセントロイドにエッジで連結されたグラフGR42を生成する。また、例えば、情報処理装置100Bは、ブロブBL2のセントロイドC2が、ブロブBL1のセントロイドC1、ブロブBL3のセントロイドC3、及びブロブBL4のセントロイドC4の3つのセントロイドにエッジで連結されたグラフGR42を生成する。 For example, the information processing apparatus 100B converts the centroid C1 of the blob BL1 into the centroid C2 of the blob BL2, the centroid C3 of the blob BL3, the centroid C4 of the blob BL4, the centroid C7 of the blob BL7, and the centroid C8 of the blob BL8. generate a graph GR42 edge-connected to the five centroids of . Further, for example, in the information processing apparatus 100B, the centroid C2 of the blob BL2 is edge-connected to three centroids, that is, the centroid C1 of the blob BL1, the centroid C3 of the blob BL3, and the centroid C4 of the blob BL4. Generate graph GR42.

なお、情報処理装置100Bは、どのような方法によりグラフGR42を生成してもよい。情報処理装置100Bは、様々なインデックスを用いて、グラフGR42を生成してもよい。例えば、情報処理装置100Bは、オブジェクトノードが連結されたグラフGR21を用いて、グラフGR42を生成してもよい。この場合、情報処理装置100Bは、図23中のグラフGR41と同様の処理によりグラフGR42を生成できるため、詳細な説明は省略する。例えば、情報処理装置100Bは、図23に示す例と同様の処理により、グラフGR42を生成してもよい。なお、グラフGR42は無向(双方向)エッジを一例として示すが、有向エッジであってもよい。 In addition, the information processing apparatus 100B may generate the graph GR42 by any method. The information processing device 100B may generate the graph GR42 using various indexes. For example, the information processing device 100B may generate a graph GR42 using a graph GR21 in which object nodes are connected. In this case, the information processing apparatus 100B can generate the graph GR42 by the same processing as the graph GR41 in FIG. 23, so detailed description thereof will be omitted. For example, the information processing device 100B may generate the graph GR42 by the same processing as the example shown in FIG. Graph GR42 shows undirected (bidirectional) edges as an example, but may be directed edges.

このように、変形例に係る情報処理装置100Bは、セントロイドのグラフをブロブ連結グラフとして生成する。そして、情報処理装置100Bは、生成したブロブ連結グラフを用いてセントロイドで通常の検索を行い、距離計算はブロブ単位で行う。このように、情報処理装置100Bは、ブロブをセントロイドで代表させることで、簡便な処理とすることができる。なお、情報処理装置100Bは、ブロブがクラスタリングではない場合には、各ブロブに属するオブジェクトを基に中心点を算出し、算出した中心点を代表点として用いてもよい。 In this manner, the information processing apparatus 100B according to the modification generates a graph of centroids as a blob-connected graph. Then, the information processing apparatus 100B performs a normal search by centroid using the generated blob connection graph, and performs distance calculation for each blob. In this manner, the information processing apparatus 100B can simplify processing by representing blobs with centroids. If the blobs are not clustered, the information processing apparatus 100B may calculate the center point based on the objects belonging to each blob and use the calculated center point as the representative point.

図29の例では、情報処理装置100Bは、空間情報SP42に示すように、ブロブの代表点であるセントロイド間がエッジで連結されたグラフGR42を用いて、検索処理を行う。例えば、情報処理装置100Bは、検索クエリQE2を対象として、グラフGR21を用いた図27及び図28に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。この点については、上述した例と同様であり詳細な説明は省略する。 In the example of FIG. 29, the information processing apparatus 100B performs search processing using a graph GR42 in which centroids, which are representative points of blobs, are connected by edges as shown in spatial information SP42. For example, the information processing device 100B obtains the search result of the search query QE2 by performing the search processing as shown in FIGS. 27 and 28 using the graph GR21 for the search query QE2. This point is the same as the example described above, and detailed description thereof will be omitted.

〔3-5-2.情報〕
次に、図30及び図31を用いて、変形例に係る情報の概要を説明する。図30は、変形例に係るブロブ情報記憶部の一例を示す図である。図31は、変形例に係るブロブ連結グラフ情報記憶部の一例を示す図である。
[3-5-2. information〕
Next, an outline of information related to the modification will be described with reference to FIGS. 30 and 31. FIG. 30 is a diagram illustrating an example of a blob information storage unit according to a modification; FIG. 31 is a diagram illustrating an example of a blob connection graph information storage unit according to a modification; FIG.

まず、図30に示す変形例に係るブロブ情報記憶部125Aについて説明する。図30に示す変形例に係るブロブ情報記憶部125Aは、「ブロブID」、「ノードID」、「ベクトル情報」、および「セントロイドID」といった項目が含まれる。このように、変形例に係るブロブ情報記憶部125Aは、「セントロイドID」を有する点で図15のブロブ情報記憶部125と相違する。なお、図15のブロブ情報記憶部125と同様の点については適宜説明を省略する。 First, the blob information storage unit 125A according to the modification shown in FIG. 30 will be described. A blob information storage unit 125A according to the modification shown in FIG. 30 includes items such as "blob ID", "node ID", "vector information", and "centroid ID". Thus, the blob information storage unit 125A according to the modification differs from the blob information storage unit 125 of FIG. 15 in that it has the "centroid ID". Note that description of the same points as those of the blob information storage unit 125 in FIG. 15 will be omitted as appropriate.

「セントロイドID」は、各ブロブのセントロイドを識別するための識別情報を示す。「ベクトル情報」は、ブロブの代表点であるセントロイドのベクトル情報を示す。 “Centroid ID” indicates identification information for identifying the centroid of each blob. "Vector information" indicates the vector information of the centroid, which is the representative point of the blob.

図30に示す例では、ブロブID「BL1」により識別されるブロブBL1のセントロイドは、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)であることを示す。ブロブID「BL9」により識別されるブロブBL9のセントロイドは、セントロイドID「C9」により識別されるセントロイド(セントロイドC9)であることを示す。 The example shown in FIG. 30 indicates that the centroid of the blob BL1 identified by the blob ID "BL1" is the centroid (centroid C1) identified by the centroid ID "C1". The centroid of blob BL9 identified by blob ID "BL9" is the centroid (centroid C9) identified by centroid ID "C9".

なお、ブロブ情報記憶部125Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。 Note that the blob information storage unit 125A may store various types of information, not limited to the above, depending on the purpose.

次に、図31に示す変形例に係るブロブ連結グラフ情報記憶部126Aについて説明する。図30に示す変形例に係るブロブ連結グラフ情報記憶部126Aは、「セントロイドID」および「接続セントロイド情報」といった項目を有する。なお、図25のブロブ連結グラフ情報記憶部126と同様の点については適宜説明を省略する。 Next, the blob connection graph information storage unit 126A according to the modification shown in FIG. 31 will be described. The blob connection graph information storage unit 126A according to the modification shown in FIG. 30 has items such as "centroid ID" and "connected centroid information". Note that the description of the same points as those of the blob connection graph information storage unit 126 in FIG. 25 will be omitted as appropriate.

「セントロイドID」は、グラフにおける各ブロブの代表点であるセントロイドを識別するための識別情報を示す。「接続セントロイド情報」は、対応するセントロイドから辿ることができるセントロイド(参照先のセントロイド)に関する情報を示す。例えば、「接続セントロイド情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのセントロイドから辿ることができる参照先(セントロイド)を識別するための情報を示す。すなわち、図31の例では、セントロイドを識別するセントロイドIDに対して、そのセントロイドからエッジにより辿ることができる参照先(セントロイド)が対応付けられて登録されている。なお、「接続セントロイド情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 "Centroid ID" indicates identification information for identifying the centroid that is the representative point of each blob in the graph. "Connected centroid information" indicates information about a centroid (reference destination centroid) that can be traced from the corresponding centroid. For example, "connection centroid information" includes information such as "reference destination". "Reference destination" indicates information for identifying a reference destination (centroid) that is connected by an edge and can be traced from the centroid. That is, in the example of FIG. 31, a centroid ID that identifies a centroid is registered in association with a reference destination (centroid) that can be traced from the centroid by an edge. The "connection centroid information" may include information (edge ID) for identifying the edge connected to the reference destination.

図31の例では、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)からは、セントロイドID「C2」、「C3」、「C4」、「C7」、「C8」の各々により識別される5つのセントロイドにエッジが連結されていることを示す。すなわち、セントロイドC1からは、セントロイドC2、C3、C4、C7、C8の5つのセントロイドの各々へ辿ることができることを示す。 In the example of FIG. 31, from the centroid (centroid C1) identified by the centroid ID "C1", each of the centroid IDs "C2", "C3", "C4", "C7", and "C8" indicates that the edge is connected to five centroids identified by . That is, from centroid C1, each of the five centroids of centroids C2, C3, C4, C7, and C8 can be traced.

なお、ブロブ連結グラフ情報記憶部126Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。また、ブロブ連結グラフは、クエリを入力とし、ブロブ連結グラフ中のエッジを辿ることによりオブジェクト(オブジェクトノード)を探索し、クエリに類似するオブジェクトを抽出し出力するプログラムモジュールを含んでもよい。すなわち、ブロブ連結グラフは、ブロブ連結グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、ブロブ連結グラフであるグラフGR42は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するオブジェクトをブロブ連結グラフにより抽出し、出力するプログラムであってもよい。例えば、グラフGR42は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR42は、入力されたクエリに基づいて、ブロブ連結グラフにおいてそのクエリに類似するオブジェクトを抽出し、出力するよう、コンピュータを機能させる。 Note that the blob connection graph information storage unit 126A is not limited to the above, and may store various types of information depending on the purpose. Also, the blob-connected graph may include a program module that takes a query as input, searches for objects (object nodes) by tracing edges in the blob-connected graph, extracts objects similar to the query, and outputs them. That is, the blob connection graph may be assumed to be used as a program module that performs search processing using the blob connection graph. For example, the graph GR42, which is a blob-connected graph, may be a program that, when vector data is input as a query, extracts objects corresponding to vector data similar to the vector data using the blob-connected graph and outputs them. . For example, the graph GR42 may be data used as a program module for retrieving similar images corresponding to the query image. For example, graph GR42 causes a computer to extract and output objects similar to the query in the blob-connected graph based on an input query.

上述したように、各実施形態及び変形例において、情報処理システム1は、以下のような処理を実行する。例えば、情報処理システム1は、ベクトルのクラスタリングでブロブを生成する。例えば、情報処理システム1は、ブロブのセントロイドをノードとしてグラフインデックスを生成する。 As described above, in each embodiment and modification, the information processing system 1 performs the following processes. For example, the information processing system 1 generates blobs by vector clustering. For example, the information processing system 1 generates a graph index using the centroids of blobs as nodes.

例えば、情報処理システム1は、任意のベクトルを一定数取得して、直積量子化のクラスタリングを行う。つまり、情報処理システム1は、部分ベクトルに分割して、部分ベクトル単位にクラスタリングを行い、コードブックを生成する。 For example, the information processing system 1 acquires a certain number of arbitrary vectors and performs clustering for direct product quantization. That is, the information processing system 1 divides into partial vectors, performs clustering on a partial vector basis, and generates a codebook.

例えば、情報処理システム1は、ブロブ単位に属するオブジェクトを直積量子化し、転置インデックスを生成する。例えば、情報処理システム1は、オブジェクトからブロブへのエッジを含むグラフ(ブロブ用グラフ)を生成する。例えば、情報処理システム1は、一般的な直積量子化の手法を用により近傍オブジェクトを検索する。ここでいう一般的な直積量子化の手法とは、例えば、オブジェクトとブロブのすべてのセントロイドとの距離を算出し上位一定数のブロブを取得した後に、ブロブ内のオブジェクトの距離を直積量子化で距離を求めて近傍オブジェクトを取得することであってもよい。なお、情報処理システム1は、上述したように、セントロイドのグラフを生成している場合はグラフを用いて一定数のブロブを検索して取得することが可能である。または、情報処理システム1は、上記した、オブジェクトからブロブへのエッジを含むグラフ(ブロブ用グラフ)ではなく、ブロブ間をエッジで連結したグラフ(ブロブ連結グラフ)を生成してもよい。 For example, the information processing system 1 performs Cartesian product quantization on objects belonging to blob units to generate transposed indices. For example, the information processing system 1 generates a graph including edges from objects to blobs (blob graph). For example, the information processing system 1 searches for nearby objects using a general direct product quantization technique. The general Cartesian product quantization method here is, for example, after calculating the distance between the object and all the centroids of the blob and obtaining a certain number of upper blobs, the distance of the object in the blob is Cartesian product quantized may be obtained by obtaining the distance and acquiring the nearby object. As described above, when the centroid graph is generated, the information processing system 1 can search and acquire a certain number of blobs using the graph. Alternatively, the information processing system 1 may generate a graph in which blobs are connected by edges (blob connection graph) instead of the above-described graph including edges from objects to blobs (blob graph).

〔4.第4の実施形態〕
上述した例では、オブジェクトを分類するグループの一例であるブロブを用いる場合を示したが、オブジェクトを分類するグループはブロブのみに限らず、オブジェクトを分類する様々なグラフが用いられてもよい。例えば、ブロブ(第1グループ)以外にもオブジェクトを量子化する単位となる第2グループであるクラスタが用いられてもよい。
[4. Fourth Embodiment]
In the above example, the case of using blobs, which are an example of groups for classifying objects, is shown, but the groups for classifying objects are not limited to blobs, and various graphs for classifying objects may be used. For example, in addition to blobs (first group), clusters, which are second groups that are units for quantizing objects, may be used.

この点について、以下、第4の実施形態として説明する。第4の実施形態においては、情報処理システム1は、情報処理装置100、情報処理装置100Aまたは情報処理装置100Bに代えて、情報処理装置100Cを有する。なお、第1の実施形態、第2の実施形態及び第3の実施形態等において上述した内容と同様の点については適宜説明を省略する。 This point will be described below as a fourth embodiment. In the fourth embodiment, the information processing system 1 has an information processing device 100C instead of the information processing device 100, the information processing device 100A, or the information processing device 100B. Note that descriptions of points similar to those described above in the first, second, and third embodiments will be omitted as appropriate.

情報処理装置100Cは、複数のオブジェクトを分類する複数のブロブを示すブロブ情報(第1グループ情報)と、ブロブとは異なる分類となるグループであるクラスタを示すクラスタ情報(第2グループ情報)とを生成する。 The information processing device 100C stores blob information (first group information) indicating a plurality of blobs that classify a plurality of objects, and cluster information (second group information) indicating a cluster that is a group classified differently from the blobs. Generate.

〔4-1.情報処理〕
まず、図32を用いて、第4の実施形態に係る情報処理の概要を説明する。図32は、第4の実施形態に係る情報処理の一例を示す図である。なお、図32では、情報処理装置100Cがオブジェクトを複数のブロブに分類し、そのブロブを基にクラスタに分類する場合を示すが、クラスタに分類した後にブロブに分類してもよいが、この点については後述する。
[4-1. information processing]
First, with reference to FIG. 32, an outline of information processing according to the fourth embodiment will be described. FIG. 32 is a diagram illustrating an example of information processing according to the fourth embodiment; Note that FIG. 32 shows a case where the information processing apparatus 100C classifies objects into a plurality of blobs and classifies them into clusters based on the blobs. will be described later.

まず、情報処理装置100Cは、複数のオブジェクトを複数のブロブに分類するブロブ情報を生成する(ステップS71)。図32の例では、情報処理装置100Cは、任意の方法により、複数のオブジェクトをブロブBL1~BL10等に分類するブロブ情報を生成する。情報処理装置100Cは、k-means等の任意のクラスタリングにより各ノードをブロブBL1~BL10のいずれかに分類してもよい。なお、情報処理装置100Cは、ブロブを生成可能であれば、どのような方法によりブロブを生成してもよい。例えば、情報処理装置100Cは、グラフ等のインデックスを用いて、ブロブを生成してもよい。例えば、情報処理装置100Cは、上述した第1方法~第4方法等に任意のいずれかの方法によりブロブBL1~BL10等を示す情報を生成してもよい。 First, the information processing device 100C generates blob information that classifies a plurality of objects into a plurality of blobs (step S71). In the example of FIG. 32, the information processing device 100C generates blob information that classifies a plurality of objects into blobs BL1 to BL10 and the like by any method. The information processing device 100C may classify each node into one of the blobs BL1 to BL10 by arbitrary clustering such as k-means. Note that the information processing apparatus 100C may generate the blob by any method as long as the blob can be generated. For example, the information processing device 100C may generate a blob using an index such as a graph. For example, the information processing device 100C may generate information indicating the blobs BL1 to BL10 and the like by any one of the first to fourth methods described above.

なお、図32では、情報処理装置100Cは、空間情報SP41に示すように、ブロブ連結グラフであるグラフGR41を生成するが、グラフGR41を生成しなくてもよい。例えば、情報処理装置100Cは、グラフGR41を生成する場合、図23と同様の情報をもちいた処理によりグラフGR41を生成するが、図23での説明と同様であるため詳細な説明を省略する。 In FIG. 32, the information processing device 100C generates the graph GR41, which is a blob-connected graph, as shown in the spatial information SP41, but the graph GR41 may not be generated. For example, when the information processing device 100C generates the graph GR41, the graph GR41 is generated by processing using the same information as in FIG. 23, but the detailed description is omitted because the description is the same as in FIG.

そして、情報処理装置100Cは、複数のブロブを複数のクラスタに分類するクラスタ情報を生成する(ステップS72)。例えば、情報処理装置100Cは、任意の方法により、ブロブBL1~BL10等の複数のブロブを分類するクラスタを示すクラスタ情報を生成する。情報処理装置100Cは、k-means等の任意のクラスタリングによりブロブBL1~BL10等の複数のクラスタのいずれかに分類してもよい。なお、情報処理装置100Cは、ブロブを生成可能であれば、どのような方法によりブロブを生成してもよい。例えば、情報処理装置100Cは、グラフ等のインデックスを用いて、ブロブを生成してもよい。 Then, the information processing device 100C generates cluster information for classifying a plurality of blobs into a plurality of clusters (step S72). For example, the information processing device 100C generates cluster information indicating clusters for classifying a plurality of blobs such as blobs BL1 to BL10 by any method. The information processing device 100C may classify the blobs BL1 to BL10 into any one of a plurality of clusters such as blobs BL1 to BL10 by arbitrary clustering such as k-means. Note that the information processing apparatus 100C may generate the blob by any method as long as the blob can be generated. For example, the information processing device 100C may generate a blob using an index such as a graph.

図32の例では、情報処理装置100Cは、ブロブBL1~BL10等のクラスタCL1~CL4等に分類するクラスタ情報を生成する。例えば、情報処理装置100Cは、ブロブBL1及びブロブBL7をクラスタCL1に分類する。すなわち、情報処理装置100Cは、ブロブBL1に属するオブジェクト、及びブロブBL7に属するオブジェクトをクラスタCL1に分類する。なお、図32及び図34では、ブロブの境界線がクラスタの境界線上にあるように図示したが、分割の方法によっては一致しない場合があり、また方法によっては空間が境界線で分割されるとも限らない。 In the example of FIG. 32, the information processing device 100C generates cluster information for classifying blobs BL1 to BL10 into clusters CL1 to CL4. For example, the information processing device 100C classifies the blob BL1 and the blob BL7 into the cluster CL1. That is, the information processing device 100C classifies the object belonging to the blob BL1 and the object belonging to the blob BL7 into the cluster CL1. In FIGS. 32 and 34, the boundaries of the blobs are shown to be on the boundaries of the clusters, but they may not match depending on the division method, and depending on the method, the space may be divided by the boundaries. Not exclusively.

また、情報処理装置100Cは、ブロブBL2及びブロブBL4をクラスタCL2に分類する。すなわち、情報処理装置100Cは、ブロブBL2に属するオブジェクト、及びブロブBL4に属するオブジェクトをクラスタCL2に分類する。 The information processing device 100C also classifies the blob BL2 and the blob BL4 into the cluster CL2. That is, the information processing device 100C classifies the object belonging to the blob BL2 and the object belonging to the blob BL4 into the cluster CL2.

また、情報処理装置100Cは、ブロブBL3、ブロブBL8及びブロブBL10をクラスタCL3に分類する。すなわち、情報処理装置100Cは、ブロブBL3に属するオブジェクト、ブロブBL8に属するオブジェクト、及びブロブBL10に属するオブジェクトをクラスタCL3に分類する。 The information processing device 100C also classifies the blob BL3, the blob BL8, and the blob BL10 into the cluster CL3. That is, the information processing device 100C classifies the objects belonging to the blob BL3, the objects belonging to the blob BL8, and the objects belonging to the blob BL10 into the cluster CL3.

また、情報処理装置100Cは、ブロブBL5、ブロブBL6及びブロブBL9をクラスタCL4に分類する。すなわち、情報処理装置100Cは、ブロブBL5に属するオブジェクト、ブロブBL6に属するオブジェクト、及びブロブBL9に属するオブジェクトをクラスタCL4に分類する。 The information processing device 100C also classifies the blob BL5, the blob BL6, and the blob BL9 into the cluster CL4. That is, the information processing device 100C classifies the objects belonging to the blob BL5, the objects belonging to the blob BL6, and the objects belonging to the blob BL9 into the cluster CL4.

例えば、情報処理装置100Cは、クラスタ情報を用いて量子化に関する処理を実行する。情報処理装置100Cは、クラスタ情報を用いて複数のオブジェクトを対象とする量子化に関する処理を行う。例えば、情報処理装置100Cは、クラスタCL1~CL4のの各々に属するオブジェクトごとに量子化を行うが、この点については後述する。 For example, the information processing device 100C executes processing related to quantization using cluster information. The information processing device 100C performs processing related to quantization for a plurality of objects using cluster information. For example, the information processing device 100C performs quantization for each object belonging to each of the clusters CL1 to CL4, which will be described later.

上記のように、情報処理装置100Cは、データ検索の対象となる複数のオブジェクトを分類する複数のブロブを示すブロブ情報と、複数のブロブとは異なる分類となる複数のクラスタを示すクラスタ情報とを生成する。これにより、情報処理装置100Cは、複数のオブジェクトを分類する2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 As described above, the information processing device 100C stores blob information indicating a plurality of blobs that classify a plurality of objects to be searched for data, and cluster information indicating a plurality of clusters classified differently from the plurality of blobs. Generate. Accordingly, the information processing device 100C can generate two types of groups for classifying a plurality of objects, and can generate groups for classifying objects.

〔4-1-1.他の処理例〕
なお、図32に示した処理は一例に過ぎず、情報処理装置100Cは、ブロブ情報及びクラスタ情報を生成可能であれば、どのような態様の処理により生成を行ってもよい。
[4-1-1. Other processing examples]
Note that the processing shown in FIG. 32 is merely an example, and the information processing apparatus 100C may generate the blob information and the cluster information by any form of processing as long as the information can be generated.

例えば、情報処理装置100Cは、クラスタに分類するクラスタ情報を生成した後に、ブロブに分類するブロブ情報を生成してもよい。この場合、情報処理装置100Cは、複数のオブジェクトをクラスタに分類するクラスタリングにより、各オブジェクトを複数のクラスタのいずれかの分類するクラスタ情報を生成してもよい。例えば、情報処理装置100Cは、k-means等の任意のクラスタリングにより各オブジェクトをクラスタCL1~CL4のいずれかに分類してもよい。 For example, the information processing device 100C may generate blob information to be classified into blobs after generating cluster information to be classified into clusters. In this case, the information processing device 100C may generate cluster information for classifying each object into one of a plurality of clusters by clustering a plurality of objects into clusters. For example, the information processing device 100C may classify each object into one of the clusters CL1 to CL4 by arbitrary clustering such as k-means.

そして、情報処理装置100Cは、クラスタCL1~CL4の少なくとも1つを分割し、二以上のブロブを生成することにより、ブロブを示すブロブ情報を生成してもよい。例えば、情報処理装置100Cは、各クラスタに属するオブジェクトをk-means等の任意のクラスタリングによってクラスタリングすることにより、各クラスタを分割しブロブを生成する。例えば、情報処理装置100Cは、クラスタCL1を2つのブロブに分割することにより、ブロブBL1及びブロブBL7を生成してもよい。例えば、情報処理装置100Cは、クラスタCL1に属しているオブジェクトをクラスタ数2でk-meansによりクラスタリングして、クラスタCL1を分割しブロブBL1及びブロブBL7を生成する。 The information processing device 100C may divide at least one of the clusters CL1 to CL4 to generate two or more blobs, thereby generating blob information indicating the blob. For example, the information processing device 100C divides each cluster and generates blobs by clustering the objects belonging to each cluster by arbitrary clustering such as k-means. For example, the information processing device 100C may generate the blob BL1 and the blob BL7 by dividing the cluster CL1 into two blobs. For example, the information processing device 100C clusters the objects belonging to the cluster CL1 with two clusters using k-means, divides the cluster CL1, and generates the blob BL1 and the blob BL7.

例えば、情報処理装置100Cは、クラスタCL2を2つのブロブに分割することにより、ブロブBL2及びブロブBL4を生成してもよい。例えば、情報処理装置100Cは、クラスタCL3を3つのブロブに分割することにより、ブロブBL3、ブロブBL8及びブロブBL10を生成してもよい。例えば、情報処理装置100Cは、クラスタCL4を3つのブロブに分割することにより、ブロブBL5、ブロブBL6及びブロブBL9を生成してもよい。 For example, the information processing device 100C may generate the blob BL2 and the blob BL4 by dividing the cluster CL2 into two blobs. For example, the information processing device 100C may generate a blob BL3, a blob BL8, and a blob BL10 by dividing the cluster CL3 into three blobs. For example, the information processing device 100C may generate blob BL5, blob BL6 and blob BL9 by dividing cluster CL4 into three blobs.

〔4-2.情報処理装置の構成〕
次に、図33を用いて、第4の実施形態に係る情報処理装置100Cの構成について説明する。図33は、第4の実施形態に係る情報処理装置の構成例を示す図である。図33に示すように、情報処理装置100Cは、通信部110と、記憶部120Cと、制御部130Bとを有する。なお、情報処理装置100Cにおいて、情報処理装置100、情報処理装置100Aまたは情報処理装置100Bと同様の点は適宜説明を省略する。
[4-2. Configuration of Information Processing Device]
Next, the configuration of the information processing apparatus 100C according to the fourth embodiment will be described using FIG. FIG. 33 is a diagram illustrating a configuration example of an information processing apparatus according to the fourth embodiment; As shown in FIG. 33, the information processing device 100C has a communication section 110, a storage section 120C, and a control section 130B. In the information processing device 100C, description of the same points as those of the information processing device 100, the information processing device 100A, or the information processing device 100B will be omitted as appropriate.

(記憶部120C)
記憶部120Cは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第4の実施形態に係る記憶部120Cは、図33に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、ブロブ情報記憶部125と、ブロブ連結グラフ情報記憶部126と、クラスタ情報記憶部127とを有する。
(Storage unit 120C)
120 C of memory|storage parts are implement|achieved by semiconductor memory elements, such as RAM and a flash memory, or memory|storage devices, such as a hard disk and an optical disk, for example. 33, the storage unit 120C according to the fourth embodiment includes an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, a codebook information storage unit 124, a blob It has an information storage unit 125 , a blob connection graph information storage unit 126 , and a cluster information storage unit 127 .

第4の実施形態に係るクラスタ情報記憶部127は、第2グループであるクラスタに関する情報を記憶する。クラスタ情報記憶部127は、量子化の単位となるクラスタに関する情報を記憶する。クラスタ情報記憶部127は、各クラスタを識別する識別情報(クラスタID等)に、そのクラスタに属する第1グループであるブロブを示す情報(ブロブID等)を対応付けて記憶してもよい。また、クラスタ情報記憶部127は、各クラスタを識別する識別情報(クラスタID等)に、そのクラスタに属するオブジェクトを示す情報(オブジェクトID等)を対応付けて記憶してもよい。また、クラスタ情報記憶部127は、各クラスタを識別する識別情報(クラスタID等)に、そのクラスタのセントロイド等の基点を特定するための情報(基点ID等)及びそのベクトル等を対応付けて記憶してもよい。 A cluster information storage unit 127 according to the fourth embodiment stores information about clusters that are the second group. The cluster information storage unit 127 stores information on clusters that are units of quantization. The cluster information storage unit 127 may store identification information (cluster ID, etc.) identifying each cluster in association with information (blob ID, etc.) indicating a blob that is the first group belonging to the cluster. Further, the cluster information storage unit 127 may store identification information (cluster ID, etc.) identifying each cluster in association with information (object ID, etc.) indicating an object belonging to the cluster. In addition, the cluster information storage unit 127 associates identification information (cluster ID, etc.) for identifying each cluster with information (base point ID, etc.) for specifying a base point such as the centroid of the cluster and its vector. You can remember.

(制御部130C)
制御部130Cは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100C内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Cは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(Control unit 130C)
The control unit 130C is a controller. For example, various programs (corresponding to an example of an information processing program) stored in a storage device inside the information processing apparatus 100C are operated by the CPU, MPU, GPU, or the like in the RAM. It is realized by being executed as a region. Also, the control unit 130C is a controller, and is realized by an integrated circuit such as ASIC or FPGA, for example.

図33に示すように、制御部130Cは、取得部131と、生成部132Cと、検索処理部133Cと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Cの内部構成は、図33に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。 As shown in FIG. 33, the control unit 130C has an acquisition unit 131, a generation unit 132C, a search processing unit 133C, and a provision unit 134, and implements or executes the information processing functions and actions described below. do. Note that the internal configuration of the control unit 130C is not limited to the configuration shown in FIG. 33, and may be another configuration as long as it performs information processing to be described later.

第4の実施形態に係る取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する。 An acquisition unit 131 according to the fourth embodiment acquires object information indicating a plurality of objects to be searched for data. The acquisition unit 131 acquires index information indicating an index that searches for a plurality of objects.

取得部131は、データ検索の対象となる複数のオブジェクトを分類する複数のブロブと、複数のブロブとは異なる分類となるグループであって、複数のオブジェクトのうち、複数のブロブにおいて同じブロブに属するオブジェクトを同じグループに分類するグループである複数のクラスタとを示す処理用情報を取得する。取得部131は、複数のオブジェクトを分類する第1数のブロブと、複数のオブジェクトを第1数よりも少ない第2数に分類するクラスタとを示す処理用情報を取得する。取得部131は、複数のブロブのうち二以上のブロブの各々に属するオブジェクト群が一のクラスタに分類された複数のクラスタを示す処理用情報を取得する。 The acquisition unit 131 selects a plurality of blobs that classify a plurality of objects to be searched for data, and a group that is classified differently from the plurality of blobs, and among the plurality of objects, the plurality of blobs belong to the same blob. Acquire processing information indicating a plurality of clusters, which are groups that classify objects into the same group. The acquisition unit 131 acquires processing information indicating a first number of blobs for classifying a plurality of objects and a cluster for classifying the plurality of objects into a second number smaller than the first number. The acquiring unit 131 acquires processing information indicating a plurality of clusters in which object groups belonging to each of two or more blobs among a plurality of blobs are classified into one cluster.

取得部131は、複数のオブジェクトを対象とする検索処理における一括処理である第1処理を実行するために用いられる複数のブロブを示す処理用情報を取得する。取得部131は、複数のオブジェクトを対象とする量子化に関する処理である第2処理を行うために用いられる複数のクラスタを示す処理用情報を取得する。 The acquisition unit 131 acquires processing information indicating a plurality of blobs used for executing a first process, which is batch processing in search processing targeting a plurality of objects. The acquisition unit 131 acquires processing information indicating a plurality of clusters used for performing a second process, which is a process related to quantization targeting a plurality of objects.

取得部131は、複数のブロブの各々を識別する複数の第1識別情報と、複数のクラスタの各々を識別する複数の第2識別情報とを対応付けた処理用情報を取得する。取得部131は、一の第2識別情報が二以上の第1識別情報に対応付けられた処理用情報を取得する。 The acquiring unit 131 acquires processing information in which a plurality of first identification information identifying each of the plurality of blobs and a plurality of second identification information identifying each of the plurality of clusters are associated with each other. The acquisition unit 131 acquires processing information in which one piece of second identification information is associated with two or more pieces of first identification information.

取得部131は、複数のオブジェクトの各々が属するブロブの第1識別情報に対応付けられた処理用情報を取得する。取得部131は、複数のオブジェクトの各々が量子化された量子化後オブジェクト情報が第1識別情報に対応付けられた処理用情報を取得する。取得部131は、直積量子化により、複数のオブジェクトの各々に対応するベクトルを分割した各部分ベクトルを量子化するベクトル量子化により生成された量子化後オブジェクト情報が、第1識別情報に対応付けられた処理用情報を取得する。取得部131は、量子化に対応する各セントロイドの各部分領域に対応する各部分セントロイドに基づいて生成された量子化後オブジェクト情報が、第1識別情報に対応付けられた処理用情報を取得する。取得部131は、量子化に対応する各セントロイドと、当該各セントロイドの各部分領域内に対応する各部分セントロイドと、により生成される残差ベクトルに基づいて生成された量子化後オブジェクト情報が、第1識別情報に対応付けられた処理用情報を取得する。 The acquisition unit 131 acquires processing information associated with the first identification information of the blob to which each of the plurality of objects belongs. The acquisition unit 131 acquires processing information in which quantized object information obtained by quantizing each of a plurality of objects is associated with first identification information. The acquiring unit 131 associates the quantized object information generated by vector quantization that quantizes each partial vector obtained by dividing the vector corresponding to each of the plurality of objects by direct product quantization with the first identification information. Get the processing information received. The obtaining unit 131 acquires processing information associated with the first identification information from the quantized object information generated based on each partial centroid corresponding to each partial area of each centroid corresponding to quantization. get. The acquisition unit 131 obtains a quantized object generated based on residual vectors generated by each centroid corresponding to quantization and each partial centroid corresponding to each partial region of each centroid. The information acquires processing information associated with the first identification information.

(生成部132C)
生成部132Cは、生成部132、生成部132Aまたは生成部132Bと同様に各種情報を生成する。
(Generation unit 132C)
The generation unit 132C generates various information in the same manner as the generation unit 132, the generation unit 132A, or the generation unit 132B.

生成部132Cは、取得部131により取得されたオブジェクト情報に基づいて、複数のオブジェクトを分類する複数のブロブを示すブロブ情報を生成する。生成部132Cは、複数のブロブとは異なる分類となるグループであって、複数のオブジェクトのうち、複数のブロブにおいて同じブロブに属するオブジェクトを同じグループに分類するグループである複数のクラスタを示すクラスタ情報を生成する。 Based on the object information acquired by the acquisition unit 131, the generation unit 132C generates blob information indicating a plurality of blobs that classify a plurality of objects. The generation unit 132C generates cluster information indicating a plurality of clusters, which are groups that are classified differently from the plurality of blobs and that classify objects belonging to the same blob among the plurality of objects into the same group. to generate

生成部132Cは、複数のオブジェクトを第1数のブロブに分類するブロブ情報と、複数のオブジェクトを第1数よりも少ない第2数のクラスタに分類するクラスタ情報とを生成する。生成部132Cは、複数のブロブのうち二以上のブロブの各々に属するオブジェクト群が一のクラスタに分類された複数のクラスタを示すクラスタ情報を生成する。 The generation unit 132C generates blob information for classifying a plurality of objects into a first number of blobs and cluster information for classifying a plurality of objects into a second number of clusters smaller than the first number. The generation unit 132C generates cluster information indicating a plurality of clusters in which object groups belonging to each of two or more blobs among the plurality of blobs are classified into one cluster.

生成部132Cは、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数のブロブを示すブロブ情報を生成する。生成部132Cは、複数のオブジェクトに関する距離の算出を一括して行うために用いられる複数のブロブを示すブロブ情報を生成する。生成部132Cは、検索処理で用いられる検索クエリとオブジェクトとの距離の算出を並列処理するために用いられる複数のブロブを示すブロブ情報を生成する。 The generation unit 132C generates blob information indicating a plurality of blobs used for batch processing in search processing targeting a plurality of objects. The generation unit 132C generates blob information indicating a plurality of blobs used to collectively calculate distances for a plurality of objects. The generation unit 132C generates blob information indicating a plurality of blobs used for parallel processing of calculating the distance between the search query and the object used in the search process.

生成部132Cは、複数のオブジェクトを対象とする量子化に関する処理を行うために用いられる複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、量子化の単位となる複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、複数のオブジェクトの各々に対応するベクトルを量子化するために用いられる複数のクラスタを示すクラスタ情報を生成する。 The generation unit 132C generates cluster information indicating a plurality of clusters used for performing quantization-related processing on a plurality of objects. The generator 132C generates cluster information indicating a plurality of clusters that are units of quantization. The generation unit 132C generates cluster information indicating a plurality of clusters used for quantizing vectors corresponding to each of a plurality of objects.

生成部132Cは、複数のブロブの分類後に、複数のクラスタの分類を行う。生成部132Cは、複数のオブジェクトをクラスタリングすることにより複数のブロブを示すブロブ情報を生成する。生成部132Cは、インデックス情報を用いて、複数のブロブを示すブロブ情報を生成する。生成部132Cは、ブロブを示すブロブ情報を用いて、複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、複数のブロブをクラスタリングすることにより複数のクラスタを示すクラスタ情報を生成する。 The generation unit 132C classifies a plurality of clusters after classifying a plurality of blobs. The generation unit 132C generates blob information indicating a plurality of blobs by clustering a plurality of objects. The generator 132C generates blob information indicating a plurality of blobs using the index information. The generating unit 132C generates cluster information indicating a plurality of clusters using blob information indicating blobs. The generation unit 132C generates cluster information indicating a plurality of clusters by clustering a plurality of blobs.

生成部132Cは、複数のクラスタの分類後に、複数のブロブの分類を行う。生成部132Cは、複数のオブジェクトをクラスタリングすることにより複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、クラスタを示すクラスタ情報を用いて、複数のブロブを示すブロブ情報を生成する。生成部132Cは、複数のクラスタのうち、少なくとも一のクラスタを分割し、二以上のブロブを生成することにより、複数のブロブを示すブロブ情報を生成する。生成部132Cは、各第2グループに属するオブジェクトをクラスタリングすることにより、各第2グループを二以上の第1グループに分割することにより、複数の第1グループを示す第1グループ情報を生成する。 After classifying a plurality of clusters, the generation unit 132C classifies a plurality of blobs. The generation unit 132C generates cluster information indicating a plurality of clusters by clustering a plurality of objects. The generating unit 132C generates blob information indicating a plurality of blobs using cluster information indicating clusters. The generation unit 132C divides at least one cluster out of the plurality of clusters to generate two or more blobs, thereby generating blob information indicating the plurality of blobs. The generating unit 132C generates first group information indicating a plurality of first groups by clustering objects belonging to each second group and dividing each second group into two or more first groups.

(検索処理部133C)
検索処理部133Cは、ブロブに属するオブジェクトを対象とする第1処理、及びクラスタに属するオブジェクトを対象とする第2処理を実行する処理部として機能する。検索処理部133Cは、検索処理部133、検索処理部133Aまたは検索処理部133Bと同様に検索処理に関する各種処理を行う。検索処理部133Cは、生成部132Cにより生成された情報を用いた処理を行う。
(Search processing unit 133C)
The search processing unit 133C functions as a processing unit that executes a first process for objects belonging to blobs and a second process for objects belonging to clusters. 133 C of search process parts perform the various processes regarding search processing like the search process part 133, the search process part 133A, or the search process part 133B. 133 C of search process parts perform the process using the information produced|generated by the production|generation part 132C.

検索処理部133Cは、取得部131により取得された処理用情報を用いて、ブロブに属するオブジェクトを対象とする第1処理と、クラスタに属するオブジェクトを対象とする第2処理とを実行する。検索処理部133Cは、一のクラスタに属するオブジェクト群を対象に第2処理を実行する。検索処理部133Cは、一のブロブに属するオブジェクト群を対象に第1処理を実行する。 The search processing unit 133C uses the processing information acquired by the acquisition unit 131 to perform a first process targeting objects belonging to blobs and a second process targeting objects belonging to clusters. The search processing unit 133C executes the second process on the object group belonging to one cluster. The search processing unit 133C executes the first process on a group of objects belonging to one blob.

検索処理部133Cは、一のブロブに属するオブジェクト群を対象に距離の算出を一括して行う第1処理を実行する。検索処理部133Cは、一のブロブに属するオブジェクト群の各々と、検索処理で用いられる検索クエリとの距離の算出の並列処理である第1処理を実行する。 The search processing unit 133C executes a first process of collectively calculating distances for a group of objects belonging to one blob. The search processing unit 133C executes first processing, which is parallel processing of calculating the distance between each object group belonging to one blob and the search query used in the search processing.

検索処理部133Cは、一のクラスタに属するオブジェクト群を対象に第2処理を実行する。検索処理部133Cは、一のクラスタに属するオブジェクト群を対象に量子化である第2処理を実行する。検索処理部133Cは、一のクラスタに属するオブジェクト群の各々に対応するベクトルを量子化する第2処理を実行する。 The search processing unit 133C executes the second process on the object group belonging to one cluster. The search processing unit 133C executes a second process of quantization on a group of objects belonging to one cluster. The search processing unit 133C executes a second process of quantizing vectors corresponding to each object group belonging to one cluster.

検索処理部133Cは、一のクラスタに二以上のブロブが属する場合、当該二以上のブロブに属するオブジェクト群を対象として第2処理を実行する。検索処理部133Cは、一のクラスタに二以上のブロブが属する場合、当該二以上のブロブに属する全オブジェクトを対象として量子化を実行する。 When two or more blobs belong to one cluster, the search processing unit 133C executes the second process on the object group belonging to the two or more blobs. When two or more blobs belong to one cluster, the search processing unit 133C executes quantization on all objects belonging to the two or more blobs.

検索処理部133Cは、処理用情報を参照して、第1処理と第2処理とを実行する。検索処理部133Cは、処理用情報を参照して処理対象となるオブジェクトを特定する。検索処理部133Cは、複数のオブジェクトを対象とする検索処理において、二以上の第1識別情報のうち、一の第1識別情報のブロブを対象として第1処理を行うとともに、一の第2識別情報のクラスタに関して検索処理において参照する参照用情報を生成した後、二以上の第1識別情報のうち、一の第1識別情報以外の他の第1識別情報の他のブロブを対象として第1処理を行い際は参照用情報を生成しない。 The search processing unit 133C refers to the processing information and executes the first process and the second process. The search processing unit 133C refers to the processing information to specify an object to be processed. In the search processing for a plurality of objects, the search processing unit 133C performs the first processing on a blob of one of the first identification information among the two or more pieces of first identification information, and After generating reference information to be referred to in search processing for a cluster of information, first No reference information is generated during processing.

検索処理部133Cは、ブロブ連結グラフを用いた検索処理を行う。検索処理部133Cは、ブロブ連結グラフを用いて、検索クエリの近傍オブジェクトを検索する検索処理を行う。検索処理部133Cは、ブロブ連結グラフにおいてブロブ間を連結するエッジを辿ることにより、検索クエリの近傍オブジェクトを検索する検索処理を行う。 The search processing unit 133C performs search processing using the blob connection graph. The search processing unit 133C performs a search process of searching for nearby objects of the search query using the blob connection graph. The search processing unit 133C performs search processing for searching for nearby objects of the search query by tracing edges connecting blobs in the blob connection graph.

検索処理部133Cは、検索処理において、複数のブロブを示すブロブ情報を用いて、一のブロブに属するオブジェクトである対象オブジェクトと検索クエリとの距離を、ベクトル量子化された対象オブジェクトのベクトル情報を用いて算出する。検索処理部133Cは、対象オブジェクトと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133Cは、情報処理装置の仕様に基づいて決定される一括処理数の対象オブジェクトと検索クエリとの距離の算出を並列処理する。 In the search processing, the search processing unit 133C uses blob information indicating a plurality of blobs to calculate the distance between the target object, which is an object belonging to one blob, and the search query, and converts the vector information of the vector-quantized target object. calculated using The search processing unit 133C parallelizes and collectively calculates the distance between the target object and the search query. The search processing unit 133C parallel-processes the calculation of the distance between the search query and the target object of the batch processing number determined based on the specifications of the information processing device.

検索処理部133Cは、ブロブ連結グラフを用い、図27及び図28に示す処理により検索処理を行う。例えば、検索処理部133Cは、空間情報SP51に示すように、ブロブ間をエッジで連結するグラフGR41を用いて検索処理を行う。例えば、検索処理部133Cは、検索クエリQE3を対象として、ブロブ連結グラフであるグラフGR41を用いた図27及び図28に示すような検索処理を行うことにより、検索クエリQE3の検索結果を得る。例えば、検索処理部133Cは、ブロブ連結グラフを辿ることにより、処理対象となったブロブについて第1処理を実行する。 The search processing unit 133C performs search processing using the blob connection graph and the processing shown in FIGS. 27 and 28. FIG. For example, the search processing unit 133C performs search processing using a graph GR41 connecting blobs with edges, as indicated by spatial information SP51. For example, the search processing unit 133C obtains the search result of the search query QE3 by performing search processing as shown in FIGS. For example, the search processing unit 133C executes the first process for the blob to be processed by tracing the blob connection graph.

検索処理部133Cは、処理対象となったブロブが属するクラスタについて、参照用情報が未生成である場合、参照用情報を生成する。例えば、検索処理部133Cは、距離のルックアップテーブル(LUT)を参照用情報として生成する。例えば、検索処理部133Cは、検索処理において、クラスタ単位に距離のルックアップテーブルを生成する。すなわち、検索処理部133Cは、検索処理において、ブロブ単位ではなく、クラスタ単位で、距離のルックアップテーブルを生成する。これにより、情報処理装置100Cは、検索時間の増大を抑制することができる。 The search processing unit 133C generates the reference information for the cluster to which the blob to be processed belongs, if the reference information has not yet been generated. For example, the search processing unit 133C generates a distance lookup table (LUT) as reference information. For example, the search processing unit 133C generates a distance lookup table for each cluster in the search process. That is, in the search processing, the search processing unit 133C generates a distance lookup table for each cluster rather than for each blob. Thereby, the information processing device 100C can suppress an increase in search time.

検索処理部133Cは、生成した参照用情報を用いて、処理対象となったブロブに属するオブジェクトについて一括して距離計算を実行する。例えば、検索処理部133Cは、処理対象となったブロブが属するクラスタについて、参照用情報が生成済みである場合、参照用情報を生成しない。そして、検索処理部133Cは、既に生成済みである参照用情報を用いて、処理対象となったブロブに属するオブジェクトについて一括して距離計算を実行する。 The search processing unit 133C uses the generated reference information to collectively execute distance calculation for objects belonging to the blob to be processed. For example, the search processing unit 133C does not generate the reference information when the reference information has already been generated for the cluster to which the blob to be processed belongs. Then, the search processing unit 133C uses the already generated reference information to collectively execute the distance calculation for the objects belonging to the blob to be processed.

〔4-3.処理及び情報例〕
ここから、第4の実施形態における処理や処理に用いる情報等の例について説明する。
[4-3. Example of processing and information]
Examples of processing and information used for the processing in the fourth embodiment will now be described.

まず、図34を用いて量子化に関する概念について説明する。図34は、第4の実施形態に係る量子化に関する概念図である。 First, the concept of quantization will be described with reference to FIG. FIG. 34 is a conceptual diagram regarding quantization according to the fourth embodiment.

例えば、基点CL1は、クラスタCL1の量子化に用いられる基点を示す。この場合、基点CL1は、ブロブBL1及びブロブBL7を含むクラスタCL1のセントロイドを示す。また、例えば、基点CL2は、クラスタCL2の量子化に用いられる基点を示す。この場合、基点CL2は、ブロブBL2及びブロブBL4を含むクラスタCL2のセントロイドを示す。 For example, base point CL1 indicates the base point used for quantization of cluster CL1. In this case, base point CL1 indicates the centroid of cluster CL1, which includes blob BL1 and blob BL7. Also, for example, a base point CL2 indicates a base point used for quantization of the cluster CL2. In this case, base point CL2 indicates the centroid of cluster CL2, which includes blob BL2 and blob BL4.

例えば、基点CL3は、クラスタCL3の量子化に用いられる基点を示す。この場合、基点CL3は、ブロブBL3、ブロブBL8及びブロブBL10を含むクラスタCL3のセントロイドを示す。また、例えば、基点CL4は、クラスタCL4の量子化に用いられる基点を示す。この場合、基点CL4は、ブロブBL5、ブロブBL6及びブロブBL9を含むクラスタCL4のセントロイドを示す。 For example, base point CL3 indicates the base point used for quantization of cluster CL3. In this case, origin CL3 indicates the centroid of cluster CL3, which includes blob BL3, blob BL8 and blob BL10. Also, for example, a base point CL4 indicates a base point used for quantization of the cluster CL4. In this case, origin CL4 indicates the centroid of cluster CL4, which includes blob BL5, blob BL6 and blob BL9.

この場合、情報処理装置100Cは、4つのクラスタCL1~CL4の各々の中で残差ベクトルを求める。そして、情報処理装置100Cは、4つのクラスタCL1~CL4の各々の中で求めた残差ベクトルを用いて、量子化を行う。例えば、情報処理装置100Cは、クラスタCL1に属するオブジェクトについては基点CL1からの残差ベクトルを用いて、量子化を行う。残差ベクトルを用いた量子化についての詳細な説明は省略するが、情報処理装置100Cは、例えば特許文献3に示す技術などを適宜用いて、残差ベクトルを用いた量子化を行う。 In this case, the information processing device 100C obtains residual vectors in each of the four clusters CL1 to CL4. Then, the information processing device 100C performs quantization using the residual vectors found in each of the four clusters CL1 to CL4. For example, the information processing device 100C quantizes objects belonging to the cluster CL1 using residual vectors from the base point CL1. Although a detailed description of the quantization using the residual vector is omitted, the information processing device 100C performs quantization using the residual vector by appropriately using the technique disclosed in Patent Document 3, for example.

なお、図34では図を用いて説明するために、ベクトルを部分ベクトルに分割していない状態を示すが、情報処理装置100Cは、直積量子化により分割された部分空間ごとに基点を導出し、導出した基点を基に残差ベクトルを用いて、量子化を行ってもよい。例えば、情報処理装置100Cは、ベクトルを4つの部分ベクトルに分割して直積量子化を行う場合、各部分ベクトルに対応する部分空間ごとに基点があり、その基点からの残差ベクトルを用いて、量子化を行う。 Note that FIG. 34 shows a state in which a vector is not divided into partial vectors for the sake of illustration, but the information processing device 100C derives a base point for each partial space divided by direct product quantization, Quantization may be performed using residual vectors based on the derived base points. For example, when the information processing device 100C divides a vector into four partial vectors and performs direct product quantization, there is a base point for each subspace corresponding to each partial vector, and using the residual vector from the base point, Quantize.

以下、図34を参照しつつ、情報処理装置100Cによるオブジェクトの量子化及び量子化による処理についての一例を説明する。図34では、クエリオブジェクト(検索クエリ)が検索クエリQE3である場合を一例として説明する。なお、以下で説明するオブジェクト(ベクトル)の量子化や直積量子化等において、特許文献3に開示された内容と同様の点については、詳細な説明を適宜省略する。 An example of object quantization and processing by quantization by the information processing apparatus 100C will be described below with reference to FIG. FIG. 34 illustrates a case where the query object (search query) is the search query QE3 as an example. In addition, in the quantization of objects (vectors), direct product quantization, etc., which will be described below, detailed descriptions of the same points as those disclosed in Patent Document 3 will be omitted as appropriate.

図34の空間情報SP52に示すように、検索クエリQE3と、ノードN7等のクラスタCL1に属する各オブジェクトに対応する各ベクトルとの距離は異なるが、情報処理装置100Cは、ノードN7等のクラスタCL1に属する各オブジェクトに対応するベクトルを用いない。この場合、検索クエリQE3と各ベクトルとの距離は、例えば検索クエリQE3とクラスタCL1の基点CL1に対応するベクトルとの距離とみなされることとなる。すなわち、クラスタCL1に属する各オブジェクトに対応するベクトルは、基点CL1に対応するベクトルに量子化される。具体的には、情報処理装置100Cは、基点CL1からの各ベクトルの差分である残差ベクトルを求めて、その残差ベクトルを直積量子化(さらに部分空間に分割して量子化)する。 As shown in the spatial information SP52 of FIG. 34, the distance between the search query QE3 and each vector corresponding to each object belonging to the cluster CL1 such as the node N7 is different, but the information processing device 100C can perform Do not use a vector corresponding to each object belonging to . In this case, the distance between the search query QE3 and each vector is regarded as, for example, the distance between the search query QE3 and the vector corresponding to the base point CL1 of the cluster CL1. That is, the vectors corresponding to each object belonging to cluster CL1 are quantized into vectors corresponding to base point CL1. Specifically, the information processing device 100C obtains a residual vector that is the difference of each vector from the base point CL1, and quantizes the residual vector by direct product quantization (further divides into subspaces and quantizes).

例えば、情報処理装置100Cは、各クラスタをさらに複数の部分領域に分割し、複数の部分領域に対応する部分セントロイドをコードブックとして生成する。例えば、情報処理装置100Cは、各クラスタに関する残差ベクトルの情報に基づいて、各クラスタが分割された複数の部分領域に対応する部分セントロイドを生成してもよい。 For example, the information processing device 100C further divides each cluster into a plurality of partial areas, and generates partial centroids corresponding to the plurality of partial areas as a codebook. For example, the information processing device 100C may generate partial centroids corresponding to a plurality of partial regions into which each cluster is divided, based on residual vector information regarding each cluster.

例えば、情報処理装置100Cは、各クラスタに含まれるオブジェクトの数に基づいて、各クラスタの部分領域の数を決定してもよいし、所定の設定値に基づいて部分領域の数を決定してもよい。例えば、情報処理装置100Cは、クラスタリングに関する種々の従来技術を適宜用いて、部分領域を決定してもよい。例えば、情報処理装置100Cは、クラスタCL1の各部分領域に含まれるオブジェクトとクラスタCL1の基点CL1から残差ベクトルを算出し、その残差ベクトルから部分領域の部分セントロイドを生成する。例えば、情報処理装置100Cは、クラスタの基点と、各部分領域の部分セントロイドとの残差ベクトルの情報を用いる。例えば、情報処理装置100Cは、クラスタCL1の基点CL1と、その各部分領域の部分セントロイドとの残差ベクトの情報を用いる。例えば、情報処理装置100Cは、各オブジェクトに対応付けてそのオブジェクトが属する部分領域の部分セントロイドの情報を記憶する。 For example, the information processing device 100C may determine the number of partial areas in each cluster based on the number of objects included in each cluster, or may determine the number of partial areas based on a predetermined set value. good too. For example, the information processing device 100C may appropriately use various conventional techniques regarding clustering to determine the partial regions. For example, the information processing device 100C calculates a residual vector from the object included in each partial area of the cluster CL1 and the base point CL1 of the cluster CL1, and generates the partial centroid of the partial area from the residual vector. For example, the information processing device 100C uses residual vector information between the base point of the cluster and the partial centroid of each partial area. For example, the information processing device 100C uses information of the residual vector between the base point CL1 of the cluster CL1 and the partial centroid of each partial area thereof. For example, the information processing device 100C stores information on the partial centroid of the partial area to which the object belongs in association with each object.

例えば、情報処理装置100Cは、上述した情報を用いることにより、各オブジェクトの位置をそのベクトルが属する部分領域のセントロイドの位置に量子化することができる。これにより、情報処理装置100Cは、検索クエリQE3と各オブジェクトとの距離を、検索クエリQE3と各オブジェクトが属する部分領域の部分セントロイドに対応するベクトルとの距離まで細部化することができる。 For example, the information processing device 100C can quantize the position of each object to the position of the centroid of the partial area to which the vector belongs, by using the information described above. Thereby, the information processing device 100C can refine the distance between the search query QE3 and each object to the distance between the search query QE3 and the vector corresponding to the partial centroid of the partial area to which each object belongs.

例えば、情報処理装置100Cは、各クラスタの基点のベクトルと、部分セントロイドに関する残差ベクトルとを示す情報とを用いる。これにより、情報処理装置100Cは、例えば検索クエリQE3に対して、部分セントロイドまでの距離を算出することができる。したがって、情報処理装置100Cは、例えば検索クエリQE3と各オブジェクトとの距離を、クラスタの基点よりもさらに近似した部分セントロイドまでの距離とすることができる。 For example, the information processing device 100C uses information indicating the vector of the base point of each cluster and the residual vector related to the partial centroid. Thereby, the information processing device 100C can calculate the distance to the partial centroid for the search query QE3, for example. Therefore, the information processing device 100C can, for example, set the distance between the search query QE3 and each object to a partial centroid that is closer than the base point of the cluster.

なお、情報処理装置100Cは、各オブジェクトのベクトルを複数の部分ベクトルに分割して処理してもよい。すなわち、情報処理装置100Cは、いわゆる直積量子化に関する技術を用いて、処理を行ってもよい。この点については、上述した第1の実施形態等と同様であるため、重複する説明は適宜省略する。 The information processing device 100C may divide the vector of each object into a plurality of partial vectors for processing. That is, the information processing device 100C may perform processing using a technique related to so-called direct product quantization. Since this point is the same as that of the above-described first embodiment and the like, redundant description will be omitted as appropriate.

例えば、図34の場合、情報処理装置100Cは、検索クエリQE3のベクトルを複数の部分ベクトル(「検索クエリQE3の部分ベクトル」ともいう)に分割する。この場合、空間情報SP52も複数の部分空間(「空間情報SP52の部分空間」ともいう)に分割される。例えば、情報処理装置100Cは、図1と同様に検索クエリQE3のベクトルを4分割してもよい。この場合、空間情報SP52も4つの部分空間に分割され、各クラスタが複数の部分空間に分割される。 For example, in the case of FIG. 34, the information processing device 100C divides the vector of the search query QE3 into a plurality of partial vectors (also referred to as "partial vectors of the search query QE3"). In this case, the spatial information SP52 is also divided into a plurality of partial spaces (also referred to as "partial spaces of the spatial information SP52"). For example, the information processing device 100C may divide the vector of the search query QE3 into four as in FIG. In this case, the spatial information SP52 is also divided into four subspaces and each cluster is divided into a plurality of subspaces.

例えば、情報処理装置100Cは、4つの部分空間において各オブジェクトが属する領域に対応する部分セントロイド(コードブック)を示す情報を、各オブジェクトに対応付けて記憶する。例えば、情報処理装置100Cは、各オブジェクトに対応する4つのコードブックと検索クエリQE3との距離を合計することにより、各オブジェクトと検索クエリQE3との距離を算出する。 For example, the information processing device 100C stores information indicating partial centroids (codebooks) corresponding to areas to which each object belongs in four partial spaces, in association with each object. For example, the information processing device 100C calculates the distance between each object and the search query QE3 by totaling the distances between the four codebooks corresponding to each object and the search query QE3.

次に、図35及び図36を用いて、転置インデックスの概要を説明する。図35は、第4の実施形態に係る転置インデックスの一例を示す図である。図36は、第4の実施形態に係る転置インデックスの具体例を示す図である。 Next, an outline of the transposed index will be described with reference to FIGS. 35 and 36. FIG. FIG. 35 is a diagram illustrating an example of a transposed index according to the fourth embodiment; FIG. 36 is a diagram showing a specific example of transposed indexes according to the fourth embodiment.

まず、図35に示す転置インデックスIND1について説明する。図35に示す転置インデックスIND1は、「ブロブID」、「クラスタID」、「量子化オブジェクト数」、「量子化オブジェクト#1」、「量子化オブジェクト#2」、「量子化オブジェクト#3」、および「量子化オブジェクト#4」等といった項目が含まれる。なお、図35では、「量子化オブジェクト#1」~「量子化オブジェクト#4」までの4つを図示するが、転置インデックスIND1には、「量子化オブジェクト#5」、「量子化オブジェクト#6」等、各ブロブに属するオブジェクト数に対応する数の項目が含まれる。 First, the transposed index IND1 shown in FIG. 35 will be described. The transposed index IND1 shown in FIG. 35 includes "blob ID", "cluster ID", "number of quantized objects", "quantized object #1", "quantized object #2", "quantized object #3", and "quantized object #4". In FIG. 35, four objects from "quantization object #1" to "quantization object #4" are illustrated, but "quantization object #5", "quantization object #6", and "quantization object #6" are shown in transposition index IND1. , etc., corresponding to the number of objects belonging to each blob.

「ブロブID」は、第1グループであるブロブを識別するための識別情報を示す。「クラスタID」は、第2グループであるクラスタを識別するための識別情報を示す。「量子化オブジェクト数」は、ブロブに属するオブジェクト数を示す。「量子化オブジェクト#1」~「量子化オブジェクト#4」は、量子化されたオブジェクトを示す。例えば、「量子化オブジェクト#1」~「量子化オブジェクト#4」には、オブジェクトが直積量子化され、各部分ベクトルに対応するコードブックを示す情報の一覧が記憶される。 "Blob ID" indicates identification information for identifying a blob that is the first group. "Cluster ID" indicates identification information for identifying a cluster that is the second group. "Number of quantized objects" indicates the number of objects belonging to the blob. "Quantized object #1" to "quantized object #4" indicate quantized objects. For example, "quantization object #1" to "quantization object #4" store a list of information indicating codebooks corresponding to partial vectors obtained by direct product quantization of objects.

図35の例では、ブロブID「1」であるブロブは、クラスタID「2」であるクラスタに属し、属するオブジェクト数が4つであることを示す。また、ブロブID「1」であるブロブについて、「量子化オブジェクト#1」には「4、2、8、10」が格納され、そのオブジェクトが4つの部分ベクトルで構成され、それぞれコードブック「4」、「2」、「8」、「10」で量子化されていることを示す。例えば、ブロブID「1」の「量子化オブジェクト#1」に対応するオブジェクトについては、4つ分割された部分ベクトルのうち、最初の部分ベクトルがコードブック「4」で量子化され、2番目の部分ベクトルがコードブック「2」で量子化され、3番目の部分ベクトルがコードブック「8」で量子化され、最後の部分ベクトルがコードブック「10」で量子化されることを示す。 In the example of FIG. 35, the blob with the blob ID "1" belongs to the cluster with the cluster ID "2", indicating that the number of belonging objects is four. Also, for the blob with the blob ID "1", "4, 2, 8, 10" is stored in the "quantization object #1", the object is composed of four partial vectors, and the codebook "4 ”, “2”, “8”, and “10”. For example, for the object corresponding to “quantized object #1” with blob ID “1”, the first partial vector among the four partial vectors is quantized with codebook “4”, and the second partial vector is quantized with codebook “4”. It indicates that the partial vector is quantized with codebook '2', the third partial vector is quantized with codebook '8', and the last partial vector is quantized with codebook '10'.

なお、転置インデックスIND1は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、転置インデックスIND1は、各量子化オブジェクトを示す情報(オブジェクトID等)を各量子化オブジェクトに対応付けて記憶してもよい。 Note that the transposed index IND1 is not limited to the above, and may store various information depending on the purpose. For example, the transposed index IND1 may store information indicating each quantized object (such as an object ID) in association with each quantized object.

次に、図36に示す転置インデックスIND2について説明する。図36は、図32に等に示す例と対応する転置インデックスの具体例を示す。なお、転置インデックスIND1と同様の点については適宜説明を省略する。図36に示す転置インデックスIND2は、「ブロブID」、「クラスタID」、「量子化オブジェクト数」、「量子化オブジェクト#1」等といった項目が含まれる。なお、図36では、「量子化オブジェクト#1」のみを図示するが、転置インデックスIND1と同様に各ブロブに属するオブジェクト数に対応する数の項目が含まれる。 Next, the transposed index IND2 shown in FIG. 36 will be described. FIG. 36 shows a specific example of the transposed index corresponding to the example shown in FIG. 32 and the like. The description of the same points as the transposed index IND1 will be omitted as appropriate. The transposed index IND2 shown in FIG. 36 includes items such as "blob ID", "cluster ID", "number of quantized objects", and "quantized object #1". Although FIG. 36 shows only "quantized object #1", it contains items corresponding in number to the number of objects belonging to each blob, similar to the transposed index IND1.

転置インデックスIND2では、図32に示す空間情報SP51と同様に、ブロブID「BL1」により識別されるブロブBL1は、クラスタID「CL1」であるクラスタCL1に属することを示す。また、ブロブBL1に属するオブジェクト数は、「NM1」であることを示す。なお、図36では「NM1」といった抽象的な符号で示すが、「量子化オブジェクト数」には、転置インデックスIND1と同様に具体的な数を示す値(例えば10や100等)が記憶される。 Similar to the spatial information SP51 shown in FIG. 32, the transposed index IND2 indicates that the blob BL1 identified by the blob ID "BL1" belongs to the cluster CL1 with the cluster ID "CL1". It also indicates that the number of objects belonging to the blob BL1 is "NM1". In FIG. 36, an abstract code such as "NM1" is used, but in the "number of quantized objects", a value indicating a specific number (for example, 10, 100, etc.) is stored in the same manner as the transposed index IND1. .

また、ブロブBL1は、「量子化オブジェクト#1」には「CD51、CD64、CD77、CD82」が格納され、そのオブジェクトが4つの部分ベクトルで構成され、それぞれコードブック「CD51」、「CD64」、「CD77」、「CD82」で量子化されていることを示す。 In addition, blob BL1 stores "CD51, CD64, CD77, CD82" in "quantization object #1", and the object is composed of four partial vectors, which are codebooks "CD51", "CD64", and "CD64", respectively. It indicates that it is quantized with "CD77" and "CD82".

また、転置インデックスIND2では、図32に示す空間情報SP51と同様に、ブロブID「BL2」により識別されるブロブBL2は、クラスタID「CL2」であるクラスタCL2に属することを示す。また、転置インデックスIND2では、図32に示す空間情報SP51と同様に、ブロブID「BL7」により識別されるブロブBL7は、クラスタID「CL1」であるクラスタCL1に属することを示す。 32, the transposed index IND2 indicates that the blob BL2 identified by the blob ID "BL2" belongs to the cluster CL2 with the cluster ID "CL2". 32, the transposed index IND2 indicates that the blob BL7 identified by the blob ID "BL7" belongs to the cluster CL1 with the cluster ID "CL1".

なお、転置インデックスIND2は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、転置インデックスIND2は、各量子化オブジェクトを示す情報(オブジェクトID等)を各量子化オブジェクトに対応付けて記憶してもよい。このように、転置インデックスには、クラスタを識別する情報(クラスタID)が付与されており、情報処理装置100Cは、転置インデックスを用いて残差ベクトルを算出する。例えば、残差ベクトルはインデックスの生成および検索時に用いられるが、特許文献3等の従来技術における処理と同様であるため詳細な説明を適宜省略する。 Note that the transposed index IND2 is not limited to the above, and may store various information depending on the purpose. For example, the transposed index IND2 may store information indicating each quantized object (such as an object ID) in association with each quantized object. In this way, information (cluster ID) for identifying a cluster is added to the transposed index, and the information processing device 100C calculates a residual vector using the transposed index. For example, the residual vector is used during index generation and retrieval, but since the process is the same as in the prior art such as Patent Document 3, detailed description thereof will be omitted as appropriate.

〔4-4.情報処理のフロー〕
次に、図37及び図38を用いて、第4の実施形態に係る情報処理の手順について説明する。図37及び図38は、第4の実施形態に係る情報処理の一例を示すフローチャートである。
[4-4. Information processing flow]
Next, the procedure of information processing according to the fourth embodiment will be described with reference to FIGS. 37 and 38. FIG. 37 and 38 are flowcharts showing an example of information processing according to the fourth embodiment.

まず、図37について説明する。例えば、図37は、グループの生成処理の一例を示すフローチャートである。図37に示すように、情報処理装置100Cは、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する(ステップS601)。例えば、情報処理装置100Cは、オブジェクト情報記憶部121から複数のオブジェクトを示すオブジェクト情報を取得する。 First, FIG. 37 will be described. For example, FIG. 37 is a flowchart illustrating an example of group generation processing. As shown in FIG. 37, the information processing device 100C acquires object information indicating a plurality of objects to be searched for data (step S601). For example, the information processing device 100</b>C acquires object information indicating a plurality of objects from the object information storage unit 121 .

情報処理装置100Cは、オブジェクト情報に基づいて、複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報を生成する(ステップS602)。例えば、情報処理装置100Cは、オブジェクト情報に基づいて、複数のオブジェクトを分類する複数のブロブを示すブロブ情報を生成する。 The information processing device 100C generates first group information indicating a plurality of first groups for classifying a plurality of objects based on the object information (step S602). For example, the information processing device 100C generates blob information indicating a plurality of blobs classifying a plurality of objects based on the object information.

情報処理装置100Cは、複数の第1グループとは異なる分類となるグループであって、複数のオブジェクトのうち、複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループを示す第2グループ情報を生成する(ステップS603)。例えば、情報処理装置100Cは、少なくとも1つのクラスタが2つ以上のブロブを含む複数のクラスタを示すクラスタ情報を生成する。なお、情報処理装置100Cは、ブロブと一対一に対応するクラスタを示すクラスタ情報を生成してもよい。 The information processing device 100C is a group that is classified differently from the plurality of first groups, and is a group that classifies objects belonging to the same first group among the plurality of first groups into the same group. Second group information indicating a plurality of second groups is generated (step S603). For example, the information processing device 100C generates cluster information indicating a plurality of clusters, at least one of which includes two or more blobs. Note that the information processing device 100C may generate cluster information indicating a cluster corresponding to the blob on a one-to-one basis.

次に、図38について説明する。例えば、図38は、グループを用いた処理の一例を示すフローチャートである。図38に示すように、情報処理装置100Cは、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループと、複数の第1グループとは異なる分類となるグループであって、複数のオブジェクトのうち、複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループとを示す処理用情報を取得する(ステップS701)。例えば、情報処理装置100Cは、ブロブ情報記憶部125に記憶されたブロブ情報と、クラスタ情報記憶部127に記憶されたクラスタ情報とを処理用情報として取得する。例えば、情報処理装置100Cは、転置インデックスIND1または転置インデックスIND2を取得する。 Next, FIG. 38 will be described. For example, FIG. 38 is a flowchart showing an example of processing using groups. As shown in FIG. 38, the information processing device 100C includes a plurality of first groups that classify a plurality of objects to be searched for data, and a group that is classified differently from the plurality of first groups. Among objects, processing information indicating a plurality of second groups, which are groups in which objects belonging to the same first group in a plurality of first groups are classified into the same group, is acquired (step S701). For example, the information processing device 100C acquires the blob information stored in the blob information storage unit 125 and the cluster information stored in the cluster information storage unit 127 as processing information. For example, the information processing device 100C acquires the transposed index IND1 or the transposed index IND2.

情報処理装置100Cは、処理用情報を用いて、第1グループに属するオブジェクトを対象とする第1処理と、第2グループに属するオブジェクトを対象とする第2処理とを実行する(ステップS702)。例えば、情報処理装置100Cは、ブロブに属するオブジェクトを対象とする一括処理を実行し、クラスタに属するオブジェクトを対象とする量子化を実行する。 The information processing apparatus 100C uses the processing information to perform a first process for objects belonging to the first group and a second process for objects belonging to the second group (step S702). For example, the information processing device 100C performs batch processing on objects belonging to blobs, and performs quantization on objects belonging to clusters.

〔5.効果〕
上述してきたように、第4の実施形態に係る情報処理装置100Cは、取得部131と、生成部132Cとを有する。取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。生成部132Cは、取得部131により取得されたオブジェクト情報に基づいて、複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報と、複数の第1グループとは異なる分類となるグループであって、複数のオブジェクトのうち、複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループを示す第2グループ情報とを生成する。
[5. effect〕
As described above, the information processing apparatus 100C according to the fourth embodiment has the acquisition unit 131 and the generation unit 132C. The acquisition unit 131 acquires object information indicating a plurality of objects to be searched for data. Based on the object information acquired by the acquisition unit 131, the generation unit 132C generates first group information indicating a plurality of first groups for classifying a plurality of objects, and a group classified differently from the plurality of first groups. and generating second group information indicating a plurality of second groups, which are groups in which objects belonging to the same first group in the plurality of first groups are classified into the same group among the plurality of objects.

このように、第4の実施形態に係る情報処理装置100Cは、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報と、複数の第1グループとは異なる分類となる複数の第2グループを示す第2グループ情報とを生成することで、複数のオブジェクトを分類する2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 As described above, the information processing apparatus 100C according to the fourth embodiment provides first group information indicating a plurality of first groups for classifying a plurality of objects to be searched for data, and the plurality of first groups. By generating second group information indicating a plurality of second groups to be classified, two types of groups for classifying a plurality of objects can be generated, and groups for classifying objects can be generated.

生成部132Cは、複数のオブジェクトを第1数の第1グループに分類する第1グループ情報と、複数のオブジェクトを第1数よりも少ない第2数の第2グループに分類する第2グループ情報とを生成する。 The generation unit 132C generates first group information for classifying a plurality of objects into a first group of a first number, and second group information for classifying a plurality of objects into a second group of a second number smaller than the first number. to generate

このように、情報処理装置100Cは、各々グループの数が異なる2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 Thus, the information processing apparatus 100C can generate two types of groups each having a different number of groups, and can generate groups for classifying objects.

生成部132Cは、複数の第1グループのうち二以上の第1グループの各々に属するオブジェクト群が一の第2グループに分類された複数の第2グループを示す第2グループ情報を生成する。 The generating unit 132C generates second group information indicating a plurality of second groups in which object groups belonging to each of two or more first groups among the plurality of first groups are classified into one second group.

このように、情報処理装置100Cは、包含関係のある2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 Thus, the information processing apparatus 100C can generate two types of groups having an inclusive relationship, and can generate groups for classifying objects.

生成部132Cは、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数の第1グループを示す第1グループ情報を生成する。 The generation unit 132C generates first group information indicating a plurality of first groups used for batch processing in search processing targeting a plurality of objects.

このように、情報処理装置100Cは、検索処理において一括処理を行うために用いられる第1グループを含む2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C can generate two types of groups including the first group used for batch processing in search processing, and can generate groups for classifying objects.

生成部132Cは、複数のオブジェクトに関する距離の算出を一括して行うために用いられる複数の第1グループを示す第1グループ情報を生成する。 The generation unit 132C generates first group information indicating a plurality of first groups used to collectively calculate distances for a plurality of objects.

このように、情報処理装置100Cは、距離の算出を一括して行うために用いられる第1グループを含む2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C can generate two types of groups including the first group used to collectively calculate distances, and can generate groups for classifying objects.

生成部132Cは、検索処理で用いられる検索クエリとオブジェクトとの距離の算出を並列処理するために用いられる複数の第1グループを示す第1グループ情報を生成する。 The generation unit 132C generates first group information indicating a plurality of first groups used for parallel processing of calculating the distance between the search query and the object used in the search process.

このように、情報処理装置100Cは、検索処理で用いられる検索クエリとオブジェクトとの距離の算出を並列処理するために用いられる第1グループを含む2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C can generate two types of groups including the first group used for parallel processing of calculating the distance between the search query used in the search process and the object. Groups can be created to classify.

生成部132Cは、複数のオブジェクトを対象とする量子化に関する処理を行うために用いられる複数の第2グループを示す第2グループ情報を生成する。 The generation unit 132C generates second group information indicating a plurality of second groups used for performing processing related to quantization for a plurality of objects.

このように、情報処理装置100Cは、複数のオブジェクトを対象とする量子化に関する処理を行うために用いられる第2グループを含む2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C can generate two types of groups including the second group used for performing processing related to quantization for a plurality of objects, and generates groups for classifying objects. can do.

生成部132Cは、量子化の単位となる複数の第2グループを示す第2グループ情報を生成する。 The generation unit 132C generates second group information indicating a plurality of second groups that are units of quantization.

このように、情報処理装置100Cは、量子化の単位となる第2グループを含む2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C can generate two types of groups including the second group that is the unit of quantization, and can generate groups for classifying objects.

生成部132Cは、複数のオブジェクトの各々に対応するベクトルを量子化するために用いられる複数の第2グループを示す第2グループ情報を生成する。 The generation unit 132C generates second group information indicating a plurality of second groups used for quantizing vectors corresponding to each of a plurality of objects.

このように、情報処理装置100Cは、複数のオブジェクトの各々に対応するベクトルを量子化するために用いられる第2グループを含む2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 Thus, the information processing device 100C can generate two types of groups including the second group used for quantizing vectors corresponding to each of a plurality of objects, and generates groups for classifying objects. can do.

生成部132Cは、複数の第1グループの分類後に、複数の第2グループの分類を行う。 The generation unit 132C performs the classification of the plurality of second groups after the classification of the plurality of first groups.

このように、情報処理装置100Cは、第1グループの分類、第2グループの分類の順でグループの情報を生成する処理を行うことで、オブジェクトを分類するグループを生成することができる。 In this manner, the information processing apparatus 100C can generate groups for classifying objects by performing processing for generating group information in the order of the classification of the first group and the classification of the second group.

生成部132Cは、複数のオブジェクトをクラスタリングすることにより複数の第1グループを示す第1グループ情報を生成する。 132 C of production|generation parts produce|generate the 1st group information which shows several 1st groups by clustering several objects.

このように、情報処理装置100Cは、複数のオブジェクトをクラスタリングすることにより複数の第1グループの分類を行うことで、オブジェクトを分類するグループを生成することができる。 In this manner, the information processing apparatus 100C can generate groups for classifying objects by classifying a plurality of first groups by clustering a plurality of objects.

取得部131は、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する。生成部132Cは、インデックス情報を用いて、複数の第1グループを示す第1グループ情報を生成する。 The acquisition unit 131 acquires index information indicating an index that searches for a plurality of objects. The generator 132C generates first group information indicating a plurality of first groups using the index information.

このように、情報処理装置100Cは、インデックスを用いて複数の第1グループの分類を行う、オブジェクトを分類するグループを生成することができる。 In this manner, the information processing device 100C can generate groups for classifying objects by classifying a plurality of first groups using indexes.

生成部132Cは、第1グループを示す第1グループ情報を用いて、複数の第2グループを示す第2グループ情報を生成する。 The generator 132C generates second group information indicating a plurality of second groups using the first group information indicating the first group.

このように、情報処理装置100Cは、第1グループ情報を用いて、複数の第2グループを示す第2グループ情報を生成することで、第1グループの分類を基に第2グループの分類ができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing apparatus 100C can classify the second groups based on the classification of the first groups by generating the second group information indicating the plurality of second groups using the first group information. , can generate groups that classify objects.

生成部132Cは、複数の第1グループをクラスタリングすることにより複数の第2グループを示す第2グループ情報を生成する。 The generation unit 132C generates second group information indicating a plurality of second groups by clustering the plurality of first groups.

このように、情報処理装置100Cは、第1グループをクラスタリングして複数の第2グループを示す第2グループ情報を生成することで、第1グループの分類を基に第2グループの分類ができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C clusters the first groups and generates second group information indicating a plurality of second groups, thereby classifying the second groups based on the classification of the first groups. Groups can be created to classify objects.

生成部132Cは、複数の第2グループの分類後に、複数の第1グループの分類を行う。 The generation unit 132C performs the classification of the plurality of first groups after the classification of the plurality of second groups.

このように、情報処理装置100Cは、第2グループの分類、第1グループの分類の順でグループの情報を生成する処理を行うことで、オブジェクトを分類するグループを生成することができる。 In this manner, the information processing apparatus 100C can generate groups for classifying objects by performing processing for generating group information in the order of the classification of the second group and the classification of the first group.

生成部132Cは、複数のオブジェクトをクラスタリングすることにより複数の第2グループを示す第2グループ情報を生成する。 The generation unit 132C generates second group information indicating a plurality of second groups by clustering a plurality of objects.

このように、情報処理装置100Cは、複数のオブジェクトをクラスタリングすることにより複数の第2グループの分類を行うことで、オブジェクトを分類するグループを生成することができる。 In this manner, the information processing apparatus 100C can generate groups for classifying objects by classifying a plurality of second groups by clustering a plurality of objects.

生成部132Cは、第2グループを示す第2グループ情報を用いて、複数の第1グループを示す第1グループ情報を生成する。 The generating unit 132C generates first group information indicating a plurality of first groups using the second group information indicating the second group.

このように、情報処理装置100Cは、第2グループ情報を用いて、複数の第1グループを示す第1グループ情報を生成することで、第2グループの分類を基に第1グループの分類ができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C can classify the first groups based on the classification of the second groups by generating the first group information indicating the plurality of first groups using the second group information. , can generate groups that classify objects.

生成部132Cは、複数の第2グループのうち、少なくとも一の第2グループを分割し、二以上の第1グループを生成することにより、複数の第1グループを示す第1グループ情報を生成する。 The generation unit 132C divides at least one of the plurality of second groups to generate two or more first groups, thereby generating first group information indicating the plurality of first groups.

このように、情報処理装置100Cは、第2グループを分割して複数の第1グループを示す第1グループ情報を生成することで、第2グループの分類を基に第1グループの分類ができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing device 100C divides the second group and generates first group information indicating a plurality of first groups, thereby classifying the first group based on the classification of the second group. Groups can be created to classify objects.

生成部132Cは、各第2グループに属するオブジェクトをクラスタリングすることにより、各第2グループを二以上の第1グループに分割することにより、複数の第1グループを示す第1グループ情報を生成する。 The generating unit 132C generates first group information indicating a plurality of first groups by clustering objects belonging to each second group and dividing each second group into two or more first groups.

このように、情報処理装置100Cは、各第2グループに属するオブジェクトをクラスタリングすることにより、各第2グループを二以上の第1グループに分割して複数の第1グループを示す第1グループ情報を生成することで、第2グループの分類を基に第1グループの分類ができ、オブジェクトを分類するグループを生成することができる。 In this way, the information processing apparatus 100C clusters objects belonging to each second group, divides each second group into two or more first groups, and generates first group information indicating a plurality of first groups. By generating, it is possible to classify the first group based on the classification of the second group, and it is possible to generate groups for classifying the objects.

〔6.ハードウェア構成〕
上述してきた各実施形態に係る情報処理装置100、100A、100B、100Cは、例えば図39に示すような構成のコンピュータ1000によって実現される。図39は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
[6. Hardware configuration]
The information processing apparatuses 100, 100A, 100B, and 100C according to the respective embodiments described above are implemented by a computer 1000 configured as shown in FIG. 39, for example. FIG. 39 is a hardware configuration diagram showing an example of a computer that implements the functions of the information processing device. The computer 1000 includes a CPU 1100, a RAM 1200, a ROM (Read Only Memory) 1300, a HDD (Hard Disk Drive) 1400, a communication interface (I/F) 1500, an input/output interface (I/F) 1600, and a media interface (I/F). ) 1700.

CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。 The CPU 1100 operates based on programs stored in the ROM 1300 or HDD 1400 and controls each section. The ROM 1300 stores a boot program executed by the CPU 1100 when the computer 1000 is started up, a program depending on the hardware of the computer 1000, and the like.

HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。 The HDD 1400 stores programs executed by the CPU 1100, data used by the programs, and the like. Communication interface 1500 receives data from other devices via network N, sends the data to CPU 1100, and transmits data generated by CPU 1100 to other devices via network N. FIG.

CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。 The CPU 1100 controls output devices such as displays and printers, and input devices such as keyboards and mice, through an input/output interface 1600 . CPU 1100 acquires data from an input device via input/output interface 1600 . CPU 1100 also outputs the generated data to an output device via input/output interface 1600 .

メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。 Media interface 1700 reads programs or data stored in recording medium 1800 and provides them to CPU 1100 via RAM 1200 . CPU 1100 loads such a program from recording medium 1800 onto RAM 1200 via media interface 1700, and executes the loaded program. The recording medium 1800 is, for example, an optical recording medium such as a DVD (Digital Versatile Disc) or a PD (Phase change rewritable disc), a magneto-optical recording medium such as an MO (Magneto-Optical disk), a tape medium, a magnetic recording medium, or a semiconductor memory. etc.

例えば、コンピュータ1000が第1の実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。 For example, when the computer 1000 functions as the information processing apparatus 100 according to the first embodiment, the CPU 1100 of the computer 1000 implements the functions of the control unit 130 by executing programs loaded on the RAM 1200 . The CPU 1100 of the computer 1000 reads these programs from the recording medium 1800 and executes them, but as another example, these programs may be acquired via the network N from another device.

以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。 As described above, some of the embodiments of the present application have been described in detail based on the drawings, but these are merely examples, and various modifications, It is possible to carry out the invention in other forms with modifications.

〔7.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
[7. others〕
Further, among the processes described in the above embodiments, all or part of the processes described as being automatically performed can be manually performed, or the processes described as being performed manually can be performed manually. All or part of this can also be done automatically by known methods. In addition, information including processing procedures, specific names, various data and parameters shown in the above documents and drawings can be arbitrarily changed unless otherwise specified. For example, the various information shown in each drawing is not limited to the illustrated information.

また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。 Also, each component of each device illustrated is functionally conceptual, and does not necessarily need to be physically configured as illustrated. In other words, the specific form of distribution and integration of each device is not limited to the one shown in the figure, and all or part of them can be functionally or physically distributed and integrated in arbitrary units according to various loads and usage conditions. Can be integrated and configured.

また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。 Further, each process described in each embodiment described above can be appropriately combined within a range in which the contents of the process are not inconsistent.

また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。 Also, the above-mentioned "section, module, unit" can be read as "means" or "circuit". For example, the acquisition unit can be read as acquisition means or an acquisition circuit.

1 情報処理システム
10 端末装置
50 情報提供装置
100、100A、100B、100C 情報処理装置
120、120A、120B、120C 記憶部
121 オブジェクト情報記憶部
122 グラフ情報記憶部
123、123A 量子化情報記憶部
124 コードブック情報記憶部
125、125A ブロブ情報記憶部
126、126A ブロブ連結グラフ情報記憶部
130、130A、130B、130C 制御部
131 取得部
132、132A、132B、132C 生成部
133、133A、133B、133C 検索処理部(処理部)
134 提供部
1 information processing system 10 terminal device 50 information providing device 100, 100A, 100B, 100C information processing device 120, 120A, 120B, 120C storage unit 121 object information storage unit 122 graph information storage unit 123, 123A quantization information storage unit 124 code Book information storage units 125, 125A Blob information storage units 126, 126A Blob connection graph information storage units 130, 130A, 130B, 130C Control unit 131 Acquisition units 132, 132A, 132B, 132C Generation units 133, 133A, 133B, 133C Search processing Department (Processing Department)
134 Provider

Claims (21)

データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得部と、
前記取得部により取得された前記オブジェクト情報に基づいて、前記複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報と、前記複数の第1グループとは異なる分類となるグループであって、前記複数のオブジェクトのうち、前記複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループを示す第2グループ情報とを生成する生成部と、
を備えることを特徴とする情報処理装置。
an acquisition unit for acquiring object information indicating a plurality of objects to be searched for data;
First group information indicating a plurality of first groups for classifying the plurality of objects, based on the object information acquired by the acquisition unit, and a group classified differently from the plurality of first groups, a generation unit for generating second group information indicating a plurality of second groups, which are groups in which objects belonging to the same first group in the plurality of first groups are classified into the same group among the plurality of objects;
An information processing device comprising:
前記生成部は、
前記複数のオブジェクトを第1数の第1グループに分類する前記第1グループ情報と、前記複数のオブジェクトを前記第1数よりも少ない第2数の第2グループに分類する前記第2グループ情報とを生成する
ことを特徴とする請求項1に記載の情報処理装置。
The generating unit
the first group information for classifying the plurality of objects into a first group of a first number; and the second group information for classifying the plurality of objects into a second group of a second number smaller than the first number. 2. The information processing apparatus according to claim 1, wherein a is generated.
前記生成部は、
前記複数の第1グループのうち二以上の第1グループの各々に属するオブジェクト群が一の第2グループに分類された前記複数の第2グループを示す前記第2グループ情報を生成する
ことを特徴とする請求項1または請求項2に記載の情報処理装置。
The generating unit
generating the second group information indicating the plurality of second groups in which object groups belonging to each of two or more first groups among the plurality of first groups are classified into one second group; 3. The information processing apparatus according to claim 1 or 2.
前記生成部は、
前記複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項1~3のいずれか1項に記載の情報処理装置。
The generating unit
4. The method according to any one of claims 1 to 3, wherein said first group information indicating said plurality of first groups used for batch processing in said search processing targeting said plurality of objects is generated. The information processing device according to .
前記生成部は、
前記複数のオブジェクトに関する距離の算出を一括して行うために用いられる前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項4に記載の情報処理装置。
The generating unit
5. The information processing apparatus according to claim 4, wherein said first group information indicating said plurality of first groups used for collectively calculating distances for said plurality of objects is generated.
前記生成部は、
前記検索処理で用いられる検索クエリとオブジェクトとの距離の算出を並列処理するために用いられる前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項4または請求項5に記載の情報処理装置。
The generating unit
4. The first group information indicating the plurality of first groups used for parallel processing of calculating the distance between the search query and the object used in the search processing is generated. 6. The information processing device according to 5.
前記生成部は、
前記複数のオブジェクトを対象とする量子化に関する処理を行うために用いられる前記複数の第2グループを示す前記第2グループ情報を生成する
ことを特徴とする請求項1~6のいずれか1項に記載の情報処理装置。
The generating unit
7. The method according to any one of claims 1 to 6, wherein said second group information indicating said plurality of second groups used for performing processing related to quantization targeting said plurality of objects is generated. The information processing device described.
前記生成部は、
前記量子化の単位となる前記複数の第2グループを示す前記第2グループ情報を生成する
ことを特徴とする請求項7に記載の情報処理装置。
The generating unit
8. The information processing apparatus according to claim 7, wherein the second group information indicating the plurality of second groups that are the units of the quantization is generated.
前記生成部は、
前記複数のオブジェクトの各々に対応するベクトルを量子化するために用いられる前記複数の第2グループを示す前記第2グループ情報を生成する
ことを特徴とする請求項7または請求項8に記載の情報処理装置。
The generating unit
9. Information according to claim 7 or claim 8, wherein said second group information is generated to indicate said plurality of second groups used to quantize vectors corresponding to each of said plurality of objects. processing equipment.
前記生成部は、
前記複数の第1グループの分類後に、前記複数の第2グループの分類を行う
ことを特徴とする請求項1~9のいずれか1項に記載の情報処理装置。
The generating unit
The information processing apparatus according to any one of claims 1 to 9, wherein the classification into the plurality of second groups is performed after the classification into the plurality of first groups.
前記生成部は、
前記複数のオブジェクトをクラスタリングすることにより前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項10に記載の情報処理装置。
The generating unit
11. The information processing apparatus according to claim 10, wherein said first group information indicating said plurality of first groups is generated by clustering said plurality of objects.
前記取得部は、
前記複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得し、
前記生成部は、
前記インデックス情報を用いて、前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項10に記載の情報処理装置。
The acquisition unit
obtaining index information indicating an index for searching the plurality of objects;
The generating unit
11. The information processing apparatus according to claim 10, wherein said index information is used to generate said first group information indicating said plurality of first groups.
前記生成部は、
前記第1グループを示す前記第1グループ情報を用いて、前記複数の第2グループを示す前記第2グループ情報を生成する
ことを特徴とする請求項10~12のいずれか1項に記載の情報処理装置。
The generating unit
The information according to any one of claims 10 to 12, wherein the first group information indicating the first group is used to generate the second group information indicating the plurality of second groups. processing equipment.
前記生成部は、
前記複数の第1グループをクラスタリングすることにより前記複数の第2グループを示す前記第2グループ情報を生成する
ことを特徴とする請求項10~13のいずれか1項に記載の情報処理装置。
The generating unit
The information processing apparatus according to any one of claims 10 to 13, wherein said second group information indicating said plurality of second groups is generated by clustering said plurality of first groups.
前記生成部は、
前記複数の第2グループの分類後に、前記複数の第1グループの分類を行う
ことを特徴とする請求項1~9のいずれか1項に記載の情報処理装置。
The generating unit
The information processing apparatus according to any one of claims 1 to 9, wherein the classification into the plurality of first groups is performed after the classification into the plurality of second groups.
前記生成部は、
前記複数のオブジェクトをクラスタリングすることにより前記複数の第2グループを示す前記第2グループ情報を生成する
ことを特徴とする請求項15に記載の情報処理装置。
The generating unit
16. The information processing apparatus according to claim 15, wherein said second group information indicating said plurality of second groups is generated by clustering said plurality of objects.
前記生成部は、
前記第2グループを示す前記第2グループ情報を用いて、前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項15または請求項16に記載の情報処理装置。
The generating unit
17. The information processing apparatus according to claim 15, wherein the first group information indicating the plurality of first groups is generated using the second group information indicating the second group.
前記生成部は、
前記複数の第2グループのうち、少なくとも一の第2グループを分割し、二以上の第1グループを生成することにより、前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項15~17のいずれか1項に記載の情報処理装置。
The generating unit
The first group information indicating the plurality of first groups is generated by dividing at least one second group out of the plurality of second groups to generate two or more first groups. The information processing apparatus according to any one of claims 15 to 17.
前記生成部は、
各第2グループに属するオブジェクトをクラスタリングすることにより、前記各第2グループを二以上の第1グループに分割することにより、前記複数の第1グループを示す前記第1グループ情報を生成する
ことを特徴とする請求項15~18のいずれか1項に記載の情報処理装置。
The generating unit
The first group information indicating the plurality of first groups is generated by clustering the objects belonging to each second group and dividing each second group into two or more first groups. The information processing apparatus according to any one of claims 15 to 18.
コンピュータが実行する情報処理方法であって、
データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得工程と、
前記取得工程により取得された前記オブジェクト情報に基づいて、前記複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報と、前記複数の第1グループとは異なる分類となるグループであって、前記複数のオブジェクトのうち、前記複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループを示す第2グループ情報とを生成する生成工程と、
を含むことを特徴とする情報処理方法。
A computer-executed information processing method comprising:
an obtaining step of obtaining object information indicating a plurality of objects to be searched for data;
First group information indicating a plurality of first groups for classifying the plurality of objects, based on the object information acquired in the acquisition step, and a group classified differently from the plurality of first groups, a generating step of generating second group information indicating a plurality of second groups, which are groups into which objects belonging to the same first group in the plurality of first groups are classified into the same group among the plurality of objects;
An information processing method comprising:
データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する取得手順と、
前記取得手順により取得された前記オブジェクト情報に基づいて、前記複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報と、前記複数の第1グループとは異なる分類となるグループであって、前記複数のオブジェクトのうち、前記複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループを示す第2グループ情報とを生成する生成手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
an acquisition procedure for acquiring object information indicating a plurality of objects to be searched for data;
First group information indicating a plurality of first groups for classifying the plurality of objects, based on the object information obtained by the obtaining procedure, and a group classified differently from the plurality of first groups, a generation step of generating second group information indicating a plurality of second groups, which are groups in which objects belonging to the same first group in the plurality of first groups are classified into the same group among the plurality of objects;
An information processing program characterized by causing a computer to execute
JP2021118331A 2021-07-16 2021-07-16 Information processing device, information processing method, and information processing program Active JP7471264B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021118331A JP7471264B2 (en) 2021-07-16 2021-07-16 Information processing device, information processing method, and information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021118331A JP7471264B2 (en) 2021-07-16 2021-07-16 Information processing device, information processing method, and information processing program

Publications (2)

Publication Number Publication Date
JP2023013868A true JP2023013868A (en) 2023-01-26
JP7471264B2 JP7471264B2 (en) 2024-04-19

Family

ID=85128720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021118331A Active JP7471264B2 (en) 2021-07-16 2021-07-16 Information processing device, information processing method, and information processing program

Country Status (1)

Country Link
JP (1) JP7471264B2 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6338618B2 (en) 2016-06-03 2018-06-06 ヤフー株式会社 Generating device, generating method, and generating program
JP6311000B1 (en) 2016-12-19 2018-04-11 ヤフー株式会社 Generating device, generating method, and generating program
JP7353737B2 (en) 2018-08-17 2023-10-02 ヤフー株式会社 Information processing device, information processing method, and information processing program

Also Published As

Publication number Publication date
JP7471264B2 (en) 2024-04-19

Similar Documents

Publication Publication Date Title
Schreiber et al. apricot: Submodular selection for data summarization in Python
WO2013129580A1 (en) Approximate nearest neighbor search device, approximate nearest neighbor search method, and program
JP5322111B2 (en) Similar image search device
JPH09245043A (en) Information retrieval device
JP2020086662A (en) Information processing apparatus, information processing method, and information processing program
CN111259176B (en) Cross-modal Hash retrieval method based on matrix decomposition and integrated with supervision information
JP7471264B2 (en) Information processing device, information processing method, and information processing program
JP7469262B2 (en) Information processing device, information processing method, and information processing program
JP5224537B2 (en) Locality-detectable hash construction device, similar neighborhood search processing device, and program
JP7353330B2 (en) Information processing device, information processing method, and information processing program
JP7354188B2 (en) Information processing device, information processing method, and information processing program
JP7353737B2 (en) Information processing device, information processing method, and information processing program
JP7109522B2 (en) Information processing device, information processing method, and information processing program
US20220179890A1 (en) Information processing apparatus, non-transitory computer-readable storage medium, and information processing method
JP2023086434A (en) Information processing device, information processing method, and information processing program
JP7077387B1 (en) Information processing equipment, information processing methods, and information processing programs
Zhang et al. Interpretable domain adaptation for hidden subdomain alignment in the context of pre-trained source models
JPWO2016043121A1 (en) Information processing apparatus, information processing method, and program
JP7121706B2 (en) Information processing device, information processing method, and information processing program
CN113901278A (en) Data search method and device based on global multi-detection and adaptive termination
JP2020187644A (en) Information processor, method for processing information, and information processing program
JP2024027034A (en) Information processing apparatus, information processing method, and information processing program
CN109299260B (en) Data classification method, device and computer readable storage medium
KR102062139B1 (en) Method and Apparatus for Processing Data Based on Intelligent Data Structure
JP2019194815A (en) Information processing apparatus, information processing method, and information processing program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230929

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20231026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240409

R150 Certificate of patent or registration of utility model

Ref document number: 7471264

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150