WO2001046858A1 - Creation d'un indice vectoriel, recherche de vecteurs similaires et dispositifs correspondants - Google Patents

Creation d'un indice vectoriel, recherche de vecteurs similaires et dispositifs correspondants Download PDF

Info

Publication number
WO2001046858A1
WO2001046858A1 PCT/JP2000/009079 JP0009079W WO0146858A1 WO 2001046858 A1 WO2001046858 A1 WO 2001046858A1 JP 0009079 W JP0009079 W JP 0009079W WO 0146858 A1 WO0146858 A1 WO 0146858A1
Authority
WO
WIPO (PCT)
Prior art keywords
vector
partial
norm
search
index
Prior art date
Application number
PCT/JP2000/009079
Other languages
English (en)
French (fr)
Inventor
Yuji Kanno
Original Assignee
Matsushita Electric Industrial Co., Ltd.
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 Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to EP00987677A priority Critical patent/EP1204032A4/en
Priority to US09/913,960 priority patent/US7007019B2/en
Priority to AU23993/01A priority patent/AU2399301A/en
Publication of WO2001046858A1 publication Critical patent/WO2001046858A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

明 細 書
べクトル索引作成方法と類似べクトル検索方法およびそれらのための装
技術分野
本発明は、 テキスト情報、 画像情報、 音声情報、 アンケート結果、 売 り上げ (P O S ) データなど、 電子化されて蓄積された各種のデータべ ース (データの集合) 中の各データの特徴抽出を行って作成したべクト ルデ一夕 (当該データの特徴を表す実数を N個並べた、 通常 「特徴べク トル」 と呼ばれる N次元実ベクトルと、 その識別番号などとの組) の集 合であるべクトルデータベースに対して、 計算機を利用してべクトルデ 一夕の検索、 分類、 傾向分析などを行うための索引の作成方法およびそ の装置と、 指定したベクトルに類似のベクトルを、 上記の方法および装 置により作成された索引を用いて効率よく検索する、 類似べクトル検索 方法およびその装置に関する。
S -景技術
近年、 テキスト、 画像、 音声などのマルチメディア情報のデータべ一 ス化や、 P O Sシステムなどの普及に伴い、 マルチメディアデータべ一 スシステムゃデー夕マイニングシステムなどのコンピュータシステムに おいて、 数 -〜数百次元のべクトルデータを数十万個〜数百万個集めた ベクトルデータベースの検索、 分類、 傾向分析などを効率よく実行する ための技術の研究開発が盛んになつている。
例えば新聞記事データベースの場合には、 多数の新聞記事データを蓄積 したデータベースに対し、 W語の単語を集めた辞書を使って各新聞記事 から辞書中の各単語 kの出現回数 f kを抽出し、 各新聞記事を、 識別番 号 iと、 W次元の実ベクトル ( f い f 2 > · · · , f w) の組で表現す る。 主成分分析手法などによってこのベクトルを変換し、 各ベクトルの 主要な N個 (N《W) の成分を求めて、 これをベクトルデ一夕とする。 指定した新聞記事に対応するべクトルデータと、 データベース中の他の 新聞記事に対応するベクトルとの内積を計算し、 内積の最も大きいべク トルを持つ新聞記事を求めることで、 高精度な類似記事検索が可能にな る。 米国特許第 4 8 3 9 8 5 3号には、 このような、 べクトルデータを 用いた文書検索方法が開示されている。
また、 写真データベースの場合には、 多数の写真画像のデータを蓄積 したデータベースに対し、 各写真データに対して 2次元のフーリエ変換 を施し、 主要な N個のフーリエ成分を f kを抽出し、 各写真データを、 写真番号 i と、 N次元の実べクトル ( f い f 2 , · · ·, f w) の組で 表現し、 これをベクトルデータとする。 指定した写真に対応するべクト ルデータと、 データベース中の他の写真データに対応するべクトルとの 距離 (2つのベクトルの差の大きさ) を計算し、 距離の最も小さいべク トルを持つ写真データを求めることで、 高精度な類似写真検索が可能に なる。 さらに、 例えば 「ポートレート」 , 「風景写真」 , 「花の接写」 といった、 異なるカテゴリーに属する典型的な写真データをそれぞれ数 枚ずつ、 分類条件として提示し、 各カテゴリーの平均的な特徴ベクトル を算出、 各写真データのベクトルに対して最も距離の小さい特徴べクト ルのカテゴリーを割り当てることで、 残りの写真データを上記の 3種類 のカテゴリ一に自動的に分類することが可能になる。
このような用途には、 数 ^〜数百次元という、 極めて高次元のべクト ルの効率のよい類似検索手法が必要となるため、 各種の方法が研究され ている。 例えば、 Norio Katayama and Shinichi Satoh, "The SR - t ree : An Index St ruc ture for High-Diment ional Neares t Ne ighbor Quer ies , Proceedings of the SIGMOD , 97, ACM (1997) には、 S R (多次元探索) 木を用いた高次元べクトルの索引作成方法および類似検索方法が開示さ れてレ る。 また、 Sergey Brin, Near Neighbor Search in Large Metric Spaces , Proceedings of the VLDB 95, Morgan-Kaufman Publishers (1995) には、ポロノィ分割に基づいた高次元べクトルの索引作成方法お よび類似検索方法が開示されている。 さらに、 Stefan Berchtold, Christian Bohm and Hans Kriegel, The Pyramid - Technique : Towards Breaking the Curse of Diment ionar i ty" , Proceedings of the SIGMOD ' 98, ACM (1998) には、 「ピラミッド技法」 というデータ分割 手法に基づいた高次元べクトルの索引作成方法および類似検索方法が開 示されている。
しかしながら、 これらの従来のべクトル索引作成方法および類似べク トル検索方法は、 以下の 4種の条件のいずれかが満たされず、 広範囲の 用途に広く適用できない、 という課題があった。
1 ) ベクトルの次元が数百次元の場合でも、 高速な検索ができる。
2) 類似検索の際に、 ベクトル間の距離と、 ベクトルの内積の 2種類の 類似度のいずれかを選択できる。
3) 「もっとも類似している L個のベクトルを求める」 という型の類似 検索ができる。 さらに、 Lが比較的大きい (数十〜数百) 場合でも、 検 索処理が極端に遅くならない。
4) 「内積が 0. 6以上」 といった、 類似検索範囲の指定ができる。
5) 索引作成に要する計算量が実用的範囲である (即ち、 ベクトルデー 夕量 nに比例した時間、 あるいは n * 1 o g (n) 時間で索引が作成で きる) 。
具体的には、 S R木を用いた方法では上記 1) 、 2) が満たされず、 ポロノィ分割に基づいた方法では 2) 、 5) が満たされず、 ピラミッド 技法を用いた方法では、 2 ) 、 3 ) が満たされない。
本発明のべクトル索引作成方法および類似べクトル検索方法およびそ の装置は、 これらの従来の技術の持つ課題を解決するもので、 高次元の ベクトルを、 複数個の部分ベクトルに分解し、 各部分ベクトルの方向と 大きさを、 中心ベクトルで規定した所属領域番号と、 中心ベクトルとの なす角 (偏角) と、 ノルムを表すノルム区分との組で表現して記録する ことで、 どのような質問ベクトルに対しても、 ベクトル索引の検索対象 範囲を精度よく限定することができ、 部分内積の下限値 (部分二乗距離 の上限値) と、 実際の部分内積 (部分二乗距離) との差を累算すること で、 分岐限定技法による効率的な検索結果の確定ができるため、 上記の 1 ) 〜4 ) をすベて満足した、 広範囲の用途に適用可能なベクトル索引 作成方法および類似べクトル検索方法を提供するものである。
上記課題を解決するために、 本発明の第 1の様態によるべクトル索引 作成方法および装置は、 部分ベクトルを算定する手段と、 ノルム分布を 集計してノルム区分表を作成する手段と、 領域番号を算定する手段と、 偏角分布を集計して偏角区分表を作成する手段と、 ノルム区分番号を算 定する手段と、 偏角区分番号を算定する手段と、 索引データを算定する 手段と、 索引を構成する手段とを有することにより、 方向、 ノルムの分 布が不明なべクトルデータベースに対して、 べクトルの次元が数百次元 の場合でも、 高速な検索が可能で、 類似検索の際に、 ベクトル間の距離 と、 ベクトルの内積の 2種類の類似度のいずれかを選択でき、 「もっと も類似している L個のべクトルを求める」 という型の類似検索ができ、 さらに、 Lが比較的大きい (数十〜数百) 場合でも、 検索処理が極端に 遅くならず、 「内積が 0 . 6以上」 といった、 類似検索範囲の指定が可 能で、 索引作成に要する計算量が実用的範囲であるような、 ベクトル索 引の作成を可能にする、 という効果を奏するものである。 また、本発明の第 2の様態によるべクトル索引作成方法および装置は、 第 1の様態に加えて、 成分区分番号を算定する手段をさらに有すること により、 第 1の様態による効果に加えて、 成分の量子化による計算誤差 を最小限に抑えながら、 作成すべきべクトル索引の容量を大幅に低減で きる、 という効果を奏するものである。
また、本発明の第 3の様態による類似べクトル検索方法および装置は、 部分質問条件を算定する手段と、 検索対象範囲を生成する手段と、 索引 を検索する手段と、 内積差分上限を算定する手段と、 類似検索結果を決 定する手段とを有し、 部分内積差分の累算値を算定して類似検索の手が かりとして用いることにより、 ベクトルデータベースに対して、 べクト ルの次元が数百次元の場合でも、 高速な検索が可能で、 「もっとも類似 している L個のべクトルを求める」という型の類似検索ができ、さらに、 Lが比較的大きい (数十〜数百) 場合でも、 検索処理が極端に遅くなら ず、 「内積が 0 . 6以上」 といった、 類似検索範囲の指定が可能で、 内 積を類似尺度として用いる類似ベクトル検索を可能にする、 という効果 を奏するものである。
また、本発明の第 4の様態による類似べクトル検索方法および装置は、 部分質問条件を算定する手段と、 検索対象範囲を生成する手段と、 索引 を検索する手段と、 二乗距離差分上限を算定する手段と、 類似検索結果 を決定する手段とを有し、 部分二乗距離差分の累算値を算定して類似検 索の手がかりとして用いることにより、べクトルデータベースに対して、 ベクトルの次元が数百次元の場合でも、 高速な検索が可能で、 「もっと も類似している L個のべクトルを求める」 という型の類似検索ができ、 さらに、 Lが比較的大きい (数十〜数百) 場合でも、 検索処理が極端に 遅くならず、 「距離が 0 . 8以下」 といった、 類似検索範囲の指定が可 能で、 距離を類似尺度として用いる類似ベクトル検索を可能にする、 と いう効果を奏するものである。 図面の簡単な説明
図 1は、 第 1の実施の形態におけるべクトル索引作成装置の全体構成 を示すブロック図であり、
図 2は、 第 2の実施の形態におけるべクトル索引作成装置の全体構成 を示すブロック図であり、
図 3は、 第 3の実施の形態における類似べクトル検索装置の全体構成 を示すブロック図であり、
図 4は、 第 4の実施の形態における類似ベクトル検索装置の全体構成 を示すブロック図であり、
図 5 A、 5 Bは一体となって、 第 1、 第 2の実施の形態におけるべク トル索引作成の第 1ステップの作成手順を記述した流れ図であり、 図 6 A、 6 Bは一体となって、 第 1の実施の形態におけるベク トル索 引作成の第 2、 第 3ステップの作成手順を記述した流れ図であり、 図 7 A、 7 Bは一体となって、 第 2の実施の形態におけるベク トル索 引作成の第 2、 第 3ステツプの作成手順を記述した流れ図であり、 図 8 A、 8 Bは一体となって、 第 3の実施の形態における類似べクト ル検索の第 1ステップの検索手順を記述した流れ図であり、
図 9は、 第 3の実施の形態における類似ベクトル検索の第 2ステップ の検索手順を記述した流れ図であり、
図 1 0 A、 1 0 Bは一体となって、 第 4の実施の形態における類似べ クトル検索の第 1ステップの検索手順記述した流れ図であり、
図 1 1 A、 1 I Bは一体となって、 第 4の実施の形態における類似べ クトル検索の第 2ステップの検索手順を記述した流れ図であり、 図 1 2 A、 1 2 Bは一体となって、 第 1、 第 2、 第 3、 第 4の実施の 形態におけるべクトルデータベースの内容例を示す一覧図であり、 図 1 3は、 第 1、 第 2の実施の形態におけるノルム分布集計結果例を 示す特性図であり、
図 14は、 第 1、 第 2の実施の形態における偏角分布集計結果例を示 す特性図であり、
図 1 5A、 1 5 Bは一体となって、 第 1、 第 2、 第 3、 第 4の実施の 形態におけるノルム区分表の内容例を示す一覧図であり、
図 1 6は、 第 1、 第 2、 第 3、 第 4の実施の形態における偏角区分表 の内容例を示す一覧図であり、
図 1 7A、 1 7 Bは一体となって、 第 3の実施の形態における表 Wの 内容例 (一部分) を示す一覧図であり、
図 1 8A、 1 8 B、 1 8 Cは一体となって、 第 4の実施の形態におけ る表 Wの内容例 (一部分) を示す一覧図である。 発明を実施するための最良の形態
ぐ第 1の実施の形態 >
以下、 本発明の第 1の実施の形態について、 図面を参照しながら説明 する。 (べクトル索引作成装置の構成)
図 1は本発明の請求項 1、 3〜8、 14、 1 6〜2 1にかかる、 べク トル索引作成装置の第 1の実施の形態の全体構成を表わすプロック図で ある。 図 1において、 ベクトルデータベース 1 0 1は、 20万件の新聞 記事を集めた新聞記事全文データベースから作成した、 各新聞記事の特 徴を表す 296次元の単位実ベクトルと、 1から 2 00000の範囲の 識別番号の 2項目からなるべクトルデータを 20万個格納し、図 1 2 A、 1 2 Bのような内容を持つ。
部分べクトル算定手段 1 0 2は、 べクトルデータベース 1 0 1中の各 べクトルデータの 2 9 6次元のべクトル Vに対し、 3 7種の 8次元部分 ベクトル v。〜v36と、 0〜3 6の部分空間番号 bとを算定する。 ノルム分布集計手段 1 0 3は、 部分べクトル算定手段 1 0 2が 2 0万 個の各べクトルデータについて算定した 3 7個の各部分べクトルのュ一 クリツドノルムを算出して、 その分布を集計し、 2 5 6個の連続する実 数範囲、
ノルム区分 0 = [0 , r 1 ) ,
ノルム区分 1 = [r 1 , r 2) , ノルム区分 2 5 5 = [ r 2 5 5, r 2 5 6)
としてノルム区分を定める。
ノルム区分表 1 04は、 ノルム分布集計手段 1 0 3が算出したノルム 区分を格納する。
領域番号算定手段 1 0 5は、 部分べクトル算定手段 1 0 2が算定した 8次元の各部分ベクトル Vに対して、 成分が { 0, 1 , _ 1 } のいずれ かであるような、 0べクトルでない 8次元べクトルをノルムが 1になる よう正規化した、
領域中心ベクトル 0 = (0, 0, 0 0, 0 , 0 0 1) 領域中心べクトル 1 = ( 0 , 0 , 0 0, 0, 0 0
領域中心べクトル 2 = (0 , 0, 0 0, 0 , 0 0) , 領域中心ベクトル 3 = s q r t ( 1 2 ) * ( 0 0 0 , 0 0 , 0, 1, 1 ) ,
領域中心ベクトル 4 = s Q r t ( 1 2 ) * (0, 0, 0, 0, 0 0 , 1 , — 1 ) , 領域中心ベク トル 5 = (0, 0, 0, 0, 0, 0, — 1, 0) , 領域中心ベクトル 6 5 54 = s Q r t ( 1 / 7 ) * (— 1 , — 1 , - 1 , — 1 , — 1, 一 1, 1, 0) ,
領域中心ベクトル 6 5 5 5 = s Q r t ( 1 / 8 ) * (— 1 , — 1 , ― 1, — 1, _ 1, — 1, 1 , 1) ,
領域中心ベクトル 6 556 = s q r t ( 1 / 8 ) * — 1, - 領域中心ベクトル 6 557 = s q r t (1/7) * (— 1 , 一 1, 一 1, - 1 , - 1 , - 1 , - 1 , 0) ,
領域中心ベクトル 6 558 = s Q r t ( 1 / 8 ) * (— 1 , — 1, 一 領域中心ベクトル 6559 = s Q r t (1/8) * (— 1 , — 1, - という (ただし 「s q r t (x) は xの平方根を表す」 ;) 、 6 560個 のべク トルを領域中心べクトルとし、 部分べクトル Vとの内積が最も大 きい領域中心べク トル p dを求めて、 その番号 dを Vの所属領域の領域 番号とし、 p jと Vとのなす角の余弦を、 偏角 cとして求める。
偏角分布集計手段 1 06は、 領域番号算定手段 1 05が 20万個の各 べク トルデータの 3 7個の部分べクトルについて算定した偏角の値 cの 分布を集計し、 4個の連続する実数範囲、
偏角区分 0 = [c 0, c 1) ,
偏角区分 1 = [c 1 , c 2) ,
偏角区分 2 = [c 2, c 3) ,
偏角区分 3 = [c 3, c 4) ,
として偏角区分を定める。 偏角区分表 1 07は、 偏角分布集計手段 1 06が算出した偏角区分を 格納する。
ノルム区分番号算定手段 1 08は、 部分べクトル算定手段 1 02が算 出した各部分べクトルのノルムの属するノルム区分番号 rを、 ノルム区 分表 1 04を検索して定める。
偏角区分番号算定手段 1 09は、 部分べクトル算定手段 1 02が算出 した各部分べクトル Vと、 領域番号算定手段 1 05が Vに対して算定し た領域中心べクトル から、 Vと pの偏角の属する偏角区分番号 cを、 偏角区分表 1 07を検索して定める。
索引データ算定手段 1 1 0は、 部分べクトル算定手段 1 02の算定し た部分べクトル vbおよび部分空間番号 bと、 領域番号算定手段 1 05 の算定した領域番号 dと、 偏角区分番号算定手段 1 09の算定した偏角 区分番号 cと、 ノルム区分番号算定手段 1 08の算定したノルム区分番 号 rとから検索用の鍵、
K= ( (b * 6560 +d) * 4 + c) * 2 56 + r
を作成し、 この鍵 Kと部分ベクトルの識別番号 i と成分 v bの組 (K, i, vb) を索引データとして算定する。
索引構成手段 1 1 1は、 索引デ一夕算定手段 1 1 0の算定した索引デ 一夕 (K, i , vb) から、 Kを鍵とし、 ( i, vb) を検索するような 探索木と、 各識別番号 iと各部分空間番号 bの組に対して、 領域番号 d と偏角区分番号じと、 ノルム区分番号 rとから第 2の鍵、
L= (d * 4 + c) * 2 56 + r
を格納した逆採索表と、 ノルム区分表 1 04と、 偏角区分表 1 07とを 格納した索引を構成する。
べクトル索引 1 1 2は、 索引構成手段 1 1 1が作成する探索木と逆探 索表とノルム区分表 1 04と偏角区分表 1 07とを格納する。 (べクトル索引作成装置の動作)
以上の構成のべクトル索引作成装置において、 その動作を図面をもと に説明する。 図 5A、 5 Bは一体となってベクトル索引作成の第 1ステ ップにおけるノルム区分表 Rおよび偏角区分表 Cの作成処理の手順を記 述した流れ図であり、 図 6A、 6 Bは一体となってベクトル索引作成の 第 2、 第 3ステップにおける索引登録デ一夕の算定およびべクトル索引 の作成処理の手順を記述した流れ図である。 図中の 「s Q r t (x) 」 は xの平方根を、 「 i n t (X) 」 は Xの整数部分を、 「a b s (x) 」 は Xの絶対値を、 それぞれ表すものとする。 また 「s i g n 2 (x) 」 は xが非負なら 1を、 負なら 2をとる関数であるとする。
(べクトル索引作成の第 1ステップ)
ベクトル索引作成の第 1ステップでは、 まず、 部分ベクトル算定手段 1 02が、 べクトルデータベース 1 0 1からべクトルデータを順に読み 込んで部分ベクトルを算定し、 ノルム分布集計手段 1 03と偏角分布集 計手段 1 06が、 それぞれ部分べクトルのノルム分布、 偏角分布を算定 する。 全てのベクトルデータを処理した時点で、 ノルム区分表および偏 角区分表が作成される。 べクトルデータベース中のべクトルのノルムの 上限値は既知であり、 上限値は r— s u pであるとする。 本実施の形態 の例では、 各ベクトルデータのベクトルが単位ベクトルなので、 明らか に r— s u p= lとなる。 べクトルデータベース中のべクトルのノルム の上限値が未知である場合には、 予め調査して r— s u pを求めておけ ばよい。
初めに、 ステップ 1 00 1で、 集計用の表 H rおよび H cを 0に初期 ィ匕し、 総部分ベクトル数 nも 0にする。 次に、 ステップ 1 002で、 未 処理のベクトルデータ (し V) をベクトルデータベースから 1つ読み 込む。 部分空間の番号 bを 0に初期化する。 ステップ 1 0 0 3で、 の 値に従って、 8次元の部分ベクトル uを、 読み込んだ 2 9 6次元のべク トル Vの先頭から、 連続する 8成分ずつに区分して 3 7種作成する。 例 えば図 1 2 Aの 1番目のべクトルデータの場合には、 b = 0の部分べク トルは、
( +0. 029259 -0. 016005 -0. 021 118 +0. 024992 -0. 006860 -0. 009032 -0. 007255 -0. 007715)
となる。 b = lの部分ベクトルは、
( -0. 025648 +0. 016061 -0. 060584 -0. 013593 -0. 020985 -0. 1 12403 -0. 012045 +0. 044741)
となり、 b = 3 6の部分ベクトルは、
( +0. 069379 +0. 020206 +0. 032996 +0. 047815 +0. 046106 +0. 001794 +0. 035342-0. 003895)
となる。 そして、 uのノルム i u I をノルムの最大値 r— s u pで割つ て 1 0 0 0 0倍した後、 整数化し、 ノルム分布集計表 H rの該当する区 分 j に累算し、 ノルム分布を集計する。
図 1 3はこのようにして集計したノルム分布のグラフの例である。 グ ラフの横軸はノルム分布集計表 H rの区分番号、 縦軸は各区分番号 j に 対する H r [ j ] の値、 即ち区分 jのノルム範囲のノルムを持つ部分べ クトルの数である。 図 1 2 Aの 1番目のベクトルデータの b = 0の部分 べクトルの場合には、
I u I = sqr t (0. 029259*0. 029259 + 0. 016005*0. 016005 + … +
0. 007715*0. 007715) = 0. 049193
であり、 r— s u p = 1であるから、 区分 j は、
j = int ( (0. 049193 I 1. 0) * 10000) = 491
となる。 偏角区分は、ステップ 1 004〜ステップ 1 00 9で集計する。まず、 ステップ 1 004で、 部分べクトル uの 8個の成分 u [0]〜u [7]に対し て、 絶対値の大きい順に、 成分の番号を格納する。 図 1 2Aの 1番目の べクトルデータの b = 0の部分べクトルの場合には、 第 0成分の絶対値 が最も大きく、 次に第 3成分の絶対値が大きく、 第 4成分の絶対値が最 も小さいので、
s [0..7] = (0 3 2 1 5 7 6 4)
となる。
次にステップ 1 00 5〜ステップ 1 008を、 変数 mの値を 0から 7 まで変えながら、 8回 (8=部分空間の次元) 繰り返し、 6560種の 領域中心べクトルのうちで最も部分べクトル uとの内積が大きいものの 番号 dと、 そのときの内積の値 Xとを求める。 ステップ 1 005では、 絶対値の大きいほうから m+ 1個の成分が、 (部分べクトルの成分の符 号) * 1で、 残りの 7 _m個の成分が 0であるような領域中心ベクトル の番号 j と内積の SQrt (m)倍の値 yとを求めている。 ステップ 1 006 ではステップ 1 00 5で求めた値 yから内積を y * sart (1/m)で計算 し、 これまでの内積の最高値 Xを比較し、 Xより大きければステップ 1 007で内積の最高値 Xと、 領域中心べクトルの番号 dとを更新する。 このように、 成分が {+ 1, 0, - 1 } のいずれかであるような領域中 心ベクトル群を用いることにより、 非常に簡単な計算によって、 部分べ クトルと最も内積の大きい領域中心べクトルの番号と、 その内積の値と を効率よく求めることができる。
図 1 2 Aの 1番目のべクトルデータの b = 0の部分べクトルの場合に は、
(| u [0] |) * sqrt (1/1) = 0.029259
(I u [0] | + | u [3] |) * sqrt (1/2) = 0.038361 (I u [0] l + l u [3] l + l u [2] I) * sart (1/3) = 0.043514
(I u [0] l + l u [3] l + l u [2] l + l u [1] |) * sqrt (1/4) = 0.045687
(I u [0] l + l u [3] l + l u [2] l + l u [1] | + | u [5] |) * sart (1/5) = 0.044903 (I u [0】 l + l u [3] l + l u [2] l + l u [1] | + | u [5] | + | u [7] |) * sart (1/6) = 0.044140
(I u [0] l + l u [3] l + l u [2] l + l u [1] | + | u [5] | + | u [7] | + | u [6] |) * sart (1/7) = 0.043608
(I u [0] l + l u [3] l + l u [2] l + l u [1] | + | u [5] | + | u [7] | + | u [6] | + | u [4] I) * sqrt (1/8) = 0.043217
となって、 内積の最高値である x = 0. 04 5 6 8 7、 および領域中心 ベクトル
(+ 1 /2, _ 1 Z2, - 1 /2, + 1 Z2, 0, 0, 0, 0 )
の番号である d = (3 — 7) + 2 * (3 — 6) + 2 * (3 " 5) + (3 " 4) =42 1 2が求まる。
続いてステップ 1 0 0 9で内積 Xを部分べク トル uのノルムで割って、 部分べクトルと領域中心べクトルとのなす角の余弦を求め、 1 0 0 0 0 倍した後、 整数化し、 偏角分布集計表 Heの該当する区分 j に累算し、 偏角分布を集計する。 図 1 4はこのようにして集計した偏角分布のダラ フの例である。 グラフの横軸は偏角分布集計表 Heの区分番号、 縦軸は 各区分番号 j に対する He [ j ] の値、 即ち区分 j の偏角範囲の偏角を 持つ部分ベクトルの数である。 ただし図 1 4において、 8 2 74より小 さな区分の H cの集計値は全て 0なので、 8 0 0 0〜 1 0 0 0 0区分の 部分のみ図示している。 図 1 2 Aの 1番目のべクトルデータの b二 0の 部分べクトルの場合には、
j =int (1 0 0 0 0 * 0. 04 5 6 8 7/0. 049 1 9 3)
= int (1 0 0 0 0 * 0. 9 2 8 7 3 0) = 9 2 8 7 となる。
部分べクトル選択用変数 bと、 総部分べクトル数集計用変数 nを増や した後、 ステップ 1 0 1 0で着目べクトルデータの全ての部分べク トル を処理したか否かを判定し、 まだ未処理の部分べクトルが残っている場 合にはステップ 1 003に戻って、 次の部分ベクトルに対して処理を行 う。 全ての部分ベクトルを処理した場合には、 ステップ 1 0 1 1でべク トルデータベース 1 0 1中の全てのべクトルデータを処理したか否かを 判定し、 まだ未処理のべクトルデータが残っている場合にはステップ 1 002に戻って次のべクトルデータを処理し、 全てのべクトルデ一夕を 読み込んで処理した場合には、 ステップ 1 0 1 2〜ステップ 1 0 1 8の ノルム区分表、 偏角区分表の作成処理に進む。
ステップ 1 0 1 2では作業変数を初期化し、 ステップ 1 0 1 3〜ステ ップ 1 0 1 8でノルム区分表および偏角区分表の区分データの作成処理 を行う。 ステップ 1 0 1 3では、 ノルム集計結果のうち、 ノルムカ 0力、 ら! "— s u p * 1 0000までの部分べクトルの個数の合計値 Xと、 偏角集計結果のうち、 偏角が 0から j 1 0000までの部分べクトル の個数の合計値 yとを求める。
ステップ 1 0 14では、 ノルムが 0から r— s u p * jノ 1 0000 までの部分べクトルの個数の全部分べク トル数に対する割合 xZnが、 ノルム区分表の 2 56個の区分のうち、 第 k区分までの区分数の割合 k 2 56より大きいか否かを判定する。 大きい場合には、 ステップ 1 0 1 5に進んでノルム区分表の第 k区分の境界値である R [k] を r— s u p * j / 1 0000と定める。 図 1 5 A、 1 5 Bは一体となって、 以上 のようにして図 1 3のノルム分布のノルム分布集計表 H rから作成した ノルム区分表の例である。 分布が集中している 0. 1〜0. 2の区間を 細かく区分していることがわかる。 ステップ 1 0 1 6からステップ 1 0 1 7で、 偏角区分についても、 同 様にして偏角区分表の第 m区分の境界値を定める。 ステップ 1 0 1 8で ノルム集計結果、 偏角集計結果をすベて処理したか否かを判定し、 未処 理の集計結果が残っている場合にはステップ 1 0 1 3に戻って処理を続 行し、 全ての集計結果を処理し終えた場合にはステップ 1 0 1 9に進ん で、 R [0..256], C [0..4] をそれぞれノルム区分表、 偏角区分表として ベクトル索引作成の第 1ステップを終了する。 図 1 6は、 以上のように して図 14の偏角分布の偏角分布集計表 H cから作成した偏角区分表の 例である。 分布が集中している 0. 9 5付近を細かく区分していること がわかる。
(べクトル索引作成の第 2ステップ)
ベクトル索引作成の第 2ステップでは、 図 6A、 6 Bのステップ 1 1 0 1〜ステップ 1 1 0 9に記載した処理を行って、 個々の部分べクトル から索引登録データを作成する。まず、 1 1 0 1で探索木 Tを初期化し、 Tの登録データ数を 0とする。 探索木としては、
1) 整数値を鍵として、 ベクトルデータ ( i , u) 即ち整数と 8個の 浮動小数点数の組が登録できる。
2)登録時の整数値の範囲を鍵にして、登録したデータを検索できる。 という、 2つの条件を満たすものであれば、 R. セジウィック著、 野下 浩平他訳, "アルゴリズム第 2巻 探索 ·文字列 ·計算幾何" , 近代科学 社 (1992) や、 G. H. G o n n e t著 玄 光男他訳 "アルゴリズムと データ構造ハンドブック" , 啓学出版 (1987) などの教科書に記載され ている、 B木や 2分探索木などの(平衡)探索木を用いることができる。 ステツプ 1 1 02では、 べクトルデータベース 1 0 1から未処理のベ クトルデータを 1つ読み込み、 部分空間番号 bを 0から順に増やしなが ら各部分空間の部分べクトルに対する処理を行う。 ステップ 1 1 03で は、 部分ベクトル uを作成し、 作成済みのノルム区分表 1 04を検索し て、 ノルム I u Iに対応するノルム区分の番号 rを求める。 ステップ 1 1 04〜ステップ 1 1 0 8までは、 図 5 A、 5 Bのステップ 1 004〜 ステップ 1 008と同一の処理を行って、 6560種の領域中心べクト ルのうちで最も部分べクトル uとの内積が大きいものの番号 dと、 その ときの内積の値 Xとを求める。
ステップ 1 1 09では、 作成済みの偏角区分表 1 07を検索して、 偏 角(即ち部分べクトルと所属領域の領域中心べクトルとのなす角の余弦) xZ I u I に対応する偏角区分の番号 cを求める。ステップ 1 1 1 0で は、 索引データ算定手段 1 1 0が、 こうして求めたノルム区分番号 d、 偏角区分番号じから、
k = b *Nd*Nc *Nr + d *Nc *Nr + c * N r + r
=b * 76 1 7440 +d * 1 024+ c * 2 56 + r
によって、 部分空間番号 b、 領域番号 d、 偏角区分番号 c、 ノルム区分 番号 rの 4種の整数値を 1つの整数値に変換し、 探索木に登録する際の 鍵 kを算定、ステップ 1 1 1 1でこの鍵 kと、部分べク トルデ一夕( i, u) から、 索引登録データ (k, i, u) を算定する。 ただし、 Ndは 領域の総数で 6 560、 Ncは偏角区分数で 4, Nrはノルム区分数で 2 56である。 このようにして、 ベクトル索引作成の第 2ステップで、 各 ベクトルデータの各部分ベクトルに対する索引登録データ (k, i, u) を効率よく (ベクトルデータ数に比例した時間で) 作成できる。
(べクトル索引作成の第 3ステップ)
べクトル索引作成の第 3ステップでは、 図 6 Bのステップ 1 1 1 1〜 ステップ 1 1 1 5に記載した処理を行って、 索引登録デ一夕からべクト ル索引を作成する。 まず、ステップ 1 1 1 1では、索引登録データ (k, i , u ) 中の kを鍵として、 データ ( i, u ) を探索木に (追加) 登録 する。 次にステップ 1 1 1 2で、 逆探索表 Kの識別番号 iのベクトルデ 一夕の部分空間番号 bに対応する要素 K [i, u]に鍵 kを格納する。部分空 間番号 bを 1増やした後、 ステップ 1 1 1 3で全ての部分空間について 処理を終了したか否かを判定する。 まだ未処理の部分空間が残っている 場合にはステップ 1 1 0 3に戻って次の部分べクトルに対する処理を行 レ 、 全ての部分空間について処理を終了した場合には、 ステップ 1 1 1 4に進む。 ステップ 1 1 1 4では、 べクトルデータベース 1 0 1中の全 てのベクトルデ一夕を処理したか否かを判定する。 まだ未処理のべクト ルデ一夕が残っている場合にはステップ 1 1 0 2に戻って次のべクトル デ一夕に対する処理を行い、 全てのべクトルデータについて処理を終了 した場合には、 ステップ 1 1 1 5に進んで探索木 T、 逆探索表 Κ、 ノル ム区分表 R、 偏角区分表 Cを格納したベクトル索引を作成して、 べクト ル索引の作成が完了する。 '
以上説明したように、 本発明の第 1の実施の形態のべクトル索引作成 方法および装置によれば、 以下のような優れた効果を奏する。
1 ) 2 9 6次元のベクトルを、 3 7種の 8次元の部分ベクトルに分解 し、 各々の部分ベクトルに対して、 その方向を、 6 5 6 0種の領域中の 所属領域の領域番号と偏角区分番号の組で精密に量子化し、 その大きさ をノルム区分番号で量子化した上で、 複数の鍵を 1つの整数値にェンコ 一ドして探索木に登録することで、 部分空間毎の高速で高精度な範囲検 索が可能となる。
2 ) また、 逆探索表を作成 ·装備することで、 ベクトルデータの識別 番号を指定してベクトルの成分を取得する機能が、 成分データを 2重持 ちすることなく実現できるため、 元のべクトルデータベース 1 0 1が検 索時には不要となり、検索装置の記憶容量を削減することが可能となる。
3 ) ノルム分布集計手段, 偏角分布集計手段において、 各区分に所属 する部分べクトルの個数ができる限り均一になるように区分境界を定め るため、 分布に偏りのあるベクトルデータベースに対しても、 常に最適 な (検索速度の低下を最小限に抑えた) ベクトル索引を作成することが できる。
4 ) 領域中心ベクトルとして、 成分が { 0, + 1 , — 1 } のいずれか である 0べクトルでない全てのべクトルを正規化したべクトルの集合を 用いているため、 各部分ベクトルの所属領域の算定が、 領域の個数には 依存せずに行え、 部分ベクトルの成分の絶対値順序の算出と、 成分の絶 対値の加算などの、 極めて少ない計算量で済むことから、 数十万〜数百 万個のべクトルデータからなる大規模なべクトルデータベースの場合で も、 実用的な処理時間でべクトル索引を作成することが可能となる。 ぐ第 2の実施の形態 >
次に、 本発明の第 2の形態について、 図面を参照しながら説明する。
(べクトル索引作成装置の構成)
図 2は本発明の請求項 2、 3〜8、 1 5、 1 6〜2 1にかかる、 べク トル索引作成装置の第 2の実施の形態の全体構成を表わすプロック図で ある。 図 2において、 ベクトルデータべ一ス 2 0 1は、 2 0万件の新聞 記事を集めた新聞記事全文データベースから作成した、 各新聞記事の特 徴を表す 2 9 6次元の単位実べクトリレと、 1から 2 0 0 0 0 0の範囲の 識別番号と、 記事の見出しの 3項目からなるべクトルデータを 2 0万個 格納し、 図 1 2 A、 1 2 Bのような内容を持つ。
部分べクトル算定手段 2 0 2は、 べクトルデータベース 2 0 1中の各 べクトルデータの 2 9 6次元のべクトル Vに対し、 3 7種の 8次元部分 ベクトル vQ〜v36と、 0〜36の部分空間番号 bとを算定する。 ノルム分布集計手段 2 0 3は、 部分べクトル算定手段 2 0 2が 2 0万 個の各べクトルデータについて算定した 3 7個の各部分べクトルのユー クリツドノルムを算出して、 その分布を集計し、 2 56個の連続する実 数範囲、
ノルム区分 0 = [0, r 1 ) ,
ノルム区分 1 = [ r 1 , r 2) , ノルム区分 255= [ r 2 55 , r 2 56 ) ,
としてノルム区分を定める。
ノルム区分表 2 04は、 ノルム分布集計手段 2 0 3が算出したノルム 区分を格納する。
領域番号算定手段 2 0 5は、 部分べクトル算定手段 2 0 2が算定した 8次元の各部分ベクトル Vに対して、 成分が { 0, 1, - 1 } のいずれ かであるような、 0べクトルでない 8次元べクトルをノルムが 1になる よう正規化した、
領域中心ベクトル 0 = (0, 0, 0, 0, 0, 0 0 1) , 領域中心ベク トル 1 = (0, 0, 0, 0, 0, 0 0 一 1) 領域中心ベクトル 2 = (0, 0, 0, 0, 0, 0 1 0) , 領域中心ベクトル 3 = s q r t ( 1 / 2 ) * (0 0 0, 0 0, 0, 1 , 1 ) ,
領域中心ベクトル 4 = s Q r t ( 1 /2) * (0 0, 0, 0, 0, 0, 1 , 一 1 ) ,
領域中心ベク トル 5 = ( 0 , 0, 0, 0 , 0, 0, - 1 , 0) , 領域中心ベクトル 6554 = s q r t (1/7) * (— 1 , — 1 , 一 1 , - 1 , - 1 , - 1 , 1, 0) ,
領域中心ベクトル 6 5 5 5 = s Q r t ( 1 /8) * (— 1, — 1, - 領域中心ベクトル 6 5 5 6 = s Q r t ( 1/8) * (- 1 , — 1, - 領域中心ベクトル 6 5 5 7 = s Q r t ( 1 /7) * (— 1, _ 1, - 領域中心ベクトル 6 5 5 8 = s Q r t ( 1 / 8 ) * (— 1, — 1, - 領域中心ベクトル 6 5 59 = s q r t (1/8) * (— 1, — 1, - という (ただし 「s Q r t (x) は xの平方根を表す」 ;) 、 6 5 6 0個 のべクトルを領域中心べクトルとし、 部分べクトル Vとの内積が最も大 きい領域中心ベクトル p dを求めて、 その番号 dを Vの所属領域の領域 番号とし、 p」·と Vとのなす角の余弦を、 偏角 Cとして求める。
偏角分布集計手段 206は、 領域番号算定手段 205が 20万個の各 べクトルデータの 37個の部分べク トルについて算定した偏角の値 cの 分布を集計し、 4個の連続する実数範囲、
偏角区分 0 = [c 0, c 1) ,
偏角区分 1 = [c 1 , c 2) ,
偏角区分 2 = [c 2, c 3) ,
偏角区分 3 = [c 3, c 4) ,
として偏角区分を定める。
偏角区分表 207は、 偏角分布集計手段 206が算出した偏角区分を 格納する。 ノルム区分番号算定手段 208は、 部分べクトル算定手段 20 2が算 出した各部分べクトルのノルムの属するノルム区分番号 rを、 ノルム区 分表 2 04を検索して定める。
偏角区分番号算定手段 209は、 部分べクトル算定手段 202が算出 した各部分ベクトル Vと、 領域番号算定手段 205が Vに対して算定し た領域中心べクトル!)から、 Vと pの偏角の属する偏角区分番号 cを、 偏角区分表 20 7を検索して定める。
索引データ算定手段 2 1 0は、 部分べクトル算定手段 202の算定し た部分べクトル vbおよび部分空間番号 bと、 領域番号算定手段 2 0 5 の算定した領域番号 と、 偏角区分番号算定手段 209の算定した偏角 区分番号 cと、 ノルム区分番号算定手段 208の算定したノルム区分番 号 rとから検索用の鍵、
K= ( (b * 6560 + d) * 4 + c) * 256 + r
を作成し、 この鍵 Kと部分べクトルの識別番号 i と成分区分番号 y jの 組 (K, i , y) を索引データとして算定する。
索引構成手段 2 1 1は、 索引データ算定手段 2 1 0の算定した索引デ 一夕 (K, i , y) から、 Kを鍵とし、 ( i, y) を検索するような探 索木と、 各識別番号 iと各部分空間番号 bの組に対して、 領域番号 と 偏角区分番号 cと、 ノルム区分番号 rとから第 2の鍵、
L= (d * 4 + c) * 256 + r
を格納した逆探索表と、 ノルム区分表 204と、 偏角区分表 20 7とを 格納した索引を構成する。
べクトル索引 2 1 2は、 索引構成手段 2 1 1が作成する探索木と逆採 索表とノルム区分表 204と偏角区分表 207とを格納する。 なお、 構 成要素 2 0 1〜 2 1 2は、 それぞれ図 1の構成要素 1 0 1〜 1 1 2と対 応し、 特に構成要素 20 1〜209は、 図 1の構成要素 1 0 1〜 1 09 と同一である。
成分区分番号算定手段 2 1 3は、 部分べクトル算定手段 2 0 2が算定 した部分べク トル v bと、 ノルム区分番号算定手段 2 0 8が算定したノ ルム区分番号とから、 部分ベクトルの各成分の値から、 0〜 2 5 5の範 囲の成分区分番号 y Q〜y 7を算定する。
(べクトル索引作成装置の動作)
(べクトル索引作成の第 1ステップ)
以上の構成のべクトル索引作成装置において、 その動作を図面をもと に説明する。 べクトル索引作成の第 1ステップにおけるノルム区分表 R および偏角区分表 Cの作成処理の手順は、 第 1の実施の形態における手 順と同一であり、 同一のベクトルデータベースならば、 作成されるノル ム区分表 Rおよび偏角区分表 Cは、 ともに第 1の実施の形態におけるノ ルム区分表 Rおよび偏角区分表 Cの内容と同一となるので、 説明を省略 する。
(ベクトル索引作成の第 2、 第 3ステップ)
図 7 A、 7 Bは一体となってベクトル索引作成の第 2、 第 3ステップ における索引登録データの算定およびべクトル索引の作成処理の手順を 記述した流れ図である。 図 7 A、 7 Bのステップ 1 2 0 0〜ステップ 1 2 1 6はそれぞれ図 6 A、 6 Bのステップ 1 1 0 0〜ステップ 1 1 1 6 に対応し、 特に、 ステップ 1 2 1 1 , ステップ 1 2 1 5 , ステップ 1 2 1 7以外の各ステップは、 図 6 A、 6 Bの対応するステップと同一の処 理であるため、 説明を省略する。
ステップ 1 2 1 7では、 部分ベクトル u [0. . 7]から、 uの各成分に対 応する成分区分番号 y [0. . 7]を算定する。 どの u [m] に対しても、 abs (u [m] )≤| u | < R [r+ 1] なので、
- K u W X R [r+ l] < + 1
が成り立ち、成分区分番号 y [m]は 0〜 2 5 5までの、 8ビッ卜で表現で きる整数値となる。ステップ 1 2 1 1では、 uの代わりに、 yを使って、 ( i, y ) という、整数データを kを鍵にして探索木 Tに登録する。各々 の y [m]は 8ビッ卜で表現できるので、 u [m]を浮動小数点形式で登録す る場合に比べ、 探索木 Tの容量が大幅に低減する。 ステップ 1 2 1 5で は、 このようにして作成した探索木 Tを含むべクトル索引を作成するの で、結果的に作成したべクトル索引の容量が、 u [in]を登録する場合に比 ベて小さくて済む。
なお、 本実施の様態 2においては、 ステップ 1 2 1 7で 8ビットの整 数値 y [m]で各成分 u [m]を近似したが、 8ビットでは類似検索時の精度 が不足する場合には、 十分な精度が得られるよう、 9ビット〜 2 4ビッ トで表現して登録すればよい。
以上説明したように、 本発明の第 2の実施の形態のベクトル索引作成 方法および装置によれば、 以下のような優れた効果を奏する。
1 ) 2 9 6次元のベクトルを、 3 7種の 8次元の部分ベクトルに分解 し、 各々の部分ベクトルに対して、 その方向を、 6 5 6 0種の領域中の 所属領域の領域番号と偏角区分番号の組で精密に量子化し、 その大きさ をノルム区分番号で量子化し、 さらに加えて部分ベクトルの各成分を成 分区分番号という、 ノルム区分を基準にした量子化を行って、 複数の鍵 を 1つの整数値にエンコードして、 近似結果である部分べクトルの成分 区分番号とともに探索木に登録することで、 部分空間毎の高速で高精度 な範囲検索が可能となる。
2 ) 逆探索表を作成 ·装備することで、 ベクトルデータの識別番号を 指定してべクトルの成分を取得する機能が、 成分データを 2重持ちする ことなく実現できるため、 元のべクトルデータベース 1 0 1が検索時に は不要となり、 検索装置の記憶容量を削減することが可能となる。
3 ) ノルム分布集計手段, 偏角分布集計手段において、 各区分に所属 する部分べクトルの個数ができる限り均一になるように区分境界を定め るため、 分布に偏りのあるベクトルデータベースに対しても、 常に最適 な (検索速度の低下を最小限に抑えた) ベクトル索引を作成することが できる。
4 ) 領域中心ベクトルとして、 成分が { 0 , + 1, - 1 } のいずれか である 0べクトルでない全てのべクトルを正規化したべクトルの集合を 用いているため、 各部分ベクトルの所属領域の算定が、 領域の個数には 依存せずに行え、 部分ベクトルの成分の絶対値順序の算出と、 成分の絶 対値の加算などの、 極めて少ない計算量で済むことから、 数十万〜数百 万個のべクトルデータからなる大規模なべクトルデータベースの場合で も、 実用的な処理時間でべクトル索引を作成することが可能となる。
5 ) 作成するべクトル索引の容量を大幅に削減することができる。 ぐ第 3の実施の形態 >
次に、 本発明の第 3の形態について、 図面を参照しながら説明する。
(類似べクトル検索装置の構成)
図 3は本発明の請求項 9、 1 1、 1 2、 2 2、 2 4、 2 5にかかる、 類似べクトル検索装置の全体構成を表わすブロック図である。 図 3にお いて、 ベクトル索引 3 0 1は、 上記した第 1の実施の形態のベクトル索 引作成装置によって作成したものであり、 2 0万件の新聞記事を集めた 新聞記事全文データベースから作成した、 各新聞記事の特徴を表す 2 9 6次元の実べクトルと、 各記事を一意に識別するための 1から 2 0 0 0 0 0の範囲の識別番号の 2項目からなるべクトルデータを 2 0万個格納 した、 図 1 2A、 1 2 Bのような内容を持つベクトルデ一夕ベースから 作成したべクトル索引である。
検索条件入力手段 3 0 2は、 前記新聞記事全文データベースに対する 類似検索を行うために、 前記新聞記事全文データベース中のいずれかの 記事の識別番号と、 類似検索範囲を示す 0〜 1 0 0までの類似度下限値 と最大取得件数とを入力し、 べクトル索引 3 0 1を識別番号で検索して 入力された識別番号から対応する記事のべクトルを質問べクトル Qとし て求め、 類似度下限値から内積下限値 αを求める。
部分質問条件算定手段 3 0 3は、 検索条件入力手段 3 0 2が求めた質 問ベクトル Qに対し、 0〜 3 6までの部分空間について、 3 7種の 8次 元部分質問べクトル Qと、 Qに対応する部分べクトルとの内積の下限値 である部分内積下限値 f を f =ひ | q | 2Z | Q | 2によって算定する。 検索対象範囲生成手段 3 04は、 部分質問条件算定手段 3 0 3が求め た部分空間 bに対する部分質問べクトル Qと部分内積下限値 f とべクト ル索引 3 0 1中のノルム区分表および偏角区分表とから、 部分質問べク トル Qとの部分内積が部分内積下限値 f より大きい可能性がある部分文 書べクトルを含んでいる領域を特定する領域番号 d, 偏角区分番号 c, ノルム区分範囲 [i^, r 2] の組 (d, c , [r !, r 2] ) を全て列挙 する。
索引検索手段 3 0 5は、 検索対象範囲生成手段 3 04が各部分空間 b に対して生成した (d, c , [r 1; r 2] ) から、 ベクトル索引 3 0 1 に対する検索条件 Kを、べクトル索引作成時における鍵の算定と同様に、
K= [km i n, kmax]
kmi n=b * 7 6 1 7440 + d * 1 0 24 + c * 2 56 + r 1 kma =b * 7 6 1 7440 + d * 1 0 24 + c * 2 5 6 + r 9 と算定し、 べクトル索引 3 0 1を検索条件 Kで範囲検索して検索条件に 合致する鍵を持つ部分ベクトル Vと識別番号 i との組 ( i, V ) をすベ て求める。
内積差分上限算定手段 3 0 6は、 索引検索手段 3 0 5が求めた部分べ クトル Vと識別番号 iとの組 ( i, V ) および部分質問条件算定手段 3 0 3が求めた部分質問ベクトル Qと部分内積下限値 f から、 t = ( V · q ) 一 f によって部分内積差分値 tを算定して、 識別番号 iを添字とす る表の要素 S [ i ] に、 部分内積差分値 tを累算 (加算) することで、 識別番号 iのべクトルデータのべク トル Vと質問べクトル Qとの内積 Q · Vから内積下限値ひを減じた内積差分の上限値を算定する。
内積差分表 3 0 7は、 内積差分上限算定手段 3 0 6が算出した内積差 分の上限値を蓄積するものであり、 識別番号 iのべクトルべ一夕の内積 差分値 S [ i ] を参照ノ格納する。
類似検索決定手段 3 0 8は、 内積差分表 3 0 7の要素 S [i]中で、内積 差分上限値 S [i]が正の値で大きいものから順に、べクトル索引 3 0 1を 織別番号 iで検索して対応するべクトル Vを求め、 Vと検索条件入力手 段 3 0 2が算出した質問べクトル Qとの内積 V · Qから、 検索条件入力 手段 3 0 2が算出した内積下限値 αを差し引いた内積差分値 V · Q - a を算出して、 S [ i]を内積差分値 V · Q—ひで置き換え、 内積差分値を算 出していない記事の部分内積差分累算値の最大値より大きい内積差分値 を持つ、 内積差分値を算出した記事が L個以上になった時点、 あるいは 部分内積差分累算値が正である全ての記事の内積差分値を算出した時点 で、内積差分値が正である、内積差分値の大きな最大 L個の結果候補( i , S [i] )に対し、識別番号 iと内積 S [i] +ひとの組 U, S [ i] + α )を、 検索結果として、 検索結果出力手段 3 0 9に出力する。
検索結果出力手段 3 0 9は、 類似ベクトル検索の結果である、 最大し 件の新聞記事の識別番号と 0〜 1 0 0の範囲の類似度とを、 類似結果決 定手段 3 0 8が求めた検索結果から算定して表示する。
(類似べクトル検索装置の動作)
以上の構成の類似ベクトル検索装置において、 その動作を図面をもと に説明する。 図 8 A、 8 Bは一体となっては類似ベクトル検索の第 1ス テツプにおける検索処理の手順を記述した流れ図、 図 9は類似べクトル 検索の第 2ステップにおける検索処理の手順を記述した流れ図である。 類似べクトル検索の第 1ステップでは、 検索条件入力手段 3 0 2から入 力された検索条件から部分質問べクトル qと部分内積下限値 f とを作成 し、 ベクトル索引 3 0 1を検索して、 各ベクトルデ一夕の内積差分上限 値 S [ i ] , 即ち質問ベクトルとの内積から内積下限値を減じた値が S [ i ] 未満となるような値を内積差分表 3 0 7に求める。 次に、 類似べ クトル検索の第 2ステップでは、 第 1ステップで内積差分表 3 0 7に求 めた内積差分上限値を手がかりにして、類似検索結果決定手段 3 0 8が、 「質問ベクトルとの内積がひより大きい」 という検索条件に合致し、 か つ質問べクトルとの内積が比較的大きいべクトルデータから順に、 べク トルの成分を検索して内積差分を求めていき、 内積差分を求めていない べクトルデータのどれよりも内積差分値が大きいことが保証されるべク トルデータが指定件数 (即ち L件) 以上集まるか、 あるいは検索条件に 合致する全てのべクトルデータについて内積差分値を求めるまで処理を 続け、 得られた内積差分値から内積を算出して最終結果を出力する。
(類似べクトル検索の第 1ステップ)
以下、 検索条件として識別番号 1、 類似度下限値 9 0、 最大取得件数 1 0が入力された場合を例にとって、 図 8 A、 8 B、 図 9にそって類似 ベクトル検索の内容を説明する。 識別番号が 1なので、 296次元のベ クトルの各成分は、 図 1 2 Aの通りとなる。 まず、 ステップ 1 30 1で 内積差分表 Sの 20万個の要素 S [0] 〜S [200000 ] を 0に初 期設定する。 次に、 上記の検索条件を検索条件入力手段 30 2から読み 込み、 それぞれし Z、 Lに格納する。
ステップ 1 302で部分空間番号 bを 0に初期化した後、 類似度下限 値 Zから、 内積下限値ひを算出する。 この検索条件の場合には、 α— (9 0— 50) / 50 = 0. 8となる。 ステップ 1 304, ステップ 1 30 5で、 各部分空間について、 ベクトル索引 30 1の逆変換表 Κを引いて 鍵を求め、 探索表を検索してベクトルデータを求め、 識別番号が 1であ るもののべク トル部分を Qに格納することで、 質問ベク トルを Q
[0..295]に求める。ステップ 1 306で部分空間番号を初期化した後、 ステップ 1 307〜ステップ 1 3 1 7で各部分空間についてべクトル索 引を検索して内積差分表 307に各べクトルデータの内積差分上限値を 求める。
ステップ 1 307では、部分空間番号 bの部分質問べクトル Q [0..7] と部分内積下限値 f 、 即ちこの部分空間の部分べクトルデータと Qとの 内積の下限値を求める。 b = 0の場合には、 | q | 2= 0. 2 2 1 7 9 5, I Q I 2= 1であるから、
f = 0. 8 * 0. 22 1 79 5/1. 0 = 0. 1 77436 となる。 領域番号 dを 0に初期化したあと、 検索対象範囲を決定するた めに用いる表 Wを作成する。 表 Wは偏角区分番号 c、 ノルム区分番号 r で引いて、 着目している領域番号 dの領域の中心べクトル pと部分質問 ベクトル Qとの内積 P · qが W [c , r] 未満ならば、 区分 (d, c , 0 ) 〜区分 (d, c , r ) の部分ベクトル vと部分質問ベクトル Qとの 内積が f 以下となるように作成する。 この場合には、 区分 (d, c , 0) 〜区分 (d, c , r ) の部分ベクトルはこの部分空間に対する検索条件 (即ち部分内積が f より大きい) を満たさないため、 これらの区分の検 索を省略することができる。
表 Wを求めるには、 部分べクトル Vが領域 d内で最も部分質問べク卜 ル Qに近い場合、 p , q , Vがー平面上にあり、 かつ Vと qとのなす角 ωが偏角区分 cの範囲内でもっとも小さい場合を考えればよい。 このと き、 ρと Qのなす角を 0, ρと Vのなす角の最大値を φとすると、 Vと qのなす角 ωは ω= Θ — φとなるから、
f < V · q = I v |*| q |*cos - ) < R [r+1] *| q |* (cos Θ *cos + sin Θ sinc
と、
C [c] =cos φ
COS θ = (ρ · q)/| P 1*1 q 1= (p . q) /I Q I
とから、 p · qが満足する不等式、
f <R [r+l]*C [c] * (p · q) +R [r+1] *sart (1 - C [c] 2) *SQrt (I q | 2— (P · q) 2))
を解いて、 ステップ 1 3 0 7の W [c , r] の式を得る。
このように、 実際の部分ベクトル Vの成分を参照せず、 また領域 dに も依存せずに、 部分質問ベクトルのノルム i Q i だけから、 表 W[c, r] の値を定めることができる。本実施の形態の場合には、ノルム区分表 R, 偏角区分表 Cがそれぞれ図 1 5 A、 1 5 B、 1 6の通りなので、 b = 0 の場合には、 表 Wは図 1 7 A、 1 7 Bのような内容となる。 図中で表の 値が 「 9. 9 9 99 9」 となっている要素は、 この部分質問ベクトル Q については、 ノルムが小さすぎて、 どの方向の部分ベクトル Vでも、 q との内積が f に達することができないため、 検索対象とはならないノル ム区分であることを意味している。 図 1 7 A、 1 7 Bからは、 c = 0, 即ち偏角の値が大きい場合には、 広範囲な検索を行い、 c = 3 , 即ち偏 角の値が小さい場合には、 ノルムの大きな部分のみの、 より狭い範囲を 検索するような内容になっていることがわかる。
ステップ 1 3 0 8では、 着目する領域の中心べクトル pと部分質問べ クトル qとの内積 tを求め、 偏角区分用のループ変数 cを 0に初期化し た後、 ステップ 1 3 0 9で表 Wの最小値を与える要素 W [0, 255] より内 積 tが小さいか否か検査し、 小さい場合には、 領域 dを鍵の一部とする どの部分べクトルも検索条件を満足しないことが確定するのでステップ 1 3 1 2に飛び、 そうでない場合にはステップ 1 3 1 0で偏角区分 cに ついて、 検索すべきノルム区分の最低値 rをステップ 1 3 0 7で算定し た表 Wを手がかりにして求め、 この rと部分空間番号 b, 領域番号 d, 偏角区分番号 cとから、 ベクトル索引 3 0 1の検索範囲 [kmin, kmax] を求める。 ステップ 1 3 1 1ではこの検索範囲 [kmin, kmax] を鍵にし て探索木を範囲検索し、 範囲検索結果に含まれる、 識別番号 j とべクト ル Vの組 (j , V) のそれぞれについて、 部分質問ベクトル qと Vとの 内積から部分内積下限値 f を減じた部分内積差分値を算定、 内積差分表 3 0 7の該当要素 S [ j ] に累算する。
例えば、 b = 0 , d = 4 2 1 2の場合には、
q = ( +0.029259 -0.016005 -0.021118 +0.024992 -0.006860 -0.009032 -0.007255 -0.007715)
p o= (+ 1 /2 , - 1 /2 , - 1 / 2 , + 1 / 2 , 0, 0 , 0, 0) であるから、
t = p · q = + 0.045687
となり、 W [0, 255] =-0.02527 よりも tが大きく、 ステップ 1 3 1 0に 進む。 図 1 7 A、 1 7 Bの表 Wより、
W [0, r ]≤ t <W [0, r + 1 ] となるノルム区分番号 rは r = 1であり、 c = 0の場合には、 探索木の 鍵は、
[ k min , k max ] = [ 0*6717440+4212*1024+0*256+1, 0*6717440+4212*1024+0*256+255]
= [4313089, 4313343]
となる。 識別番号 1のべクトルデータの b = 0の部分べクトル
V = (+0.029259 -0.016005 -0.021118 +0.024992 -0.006860 -0.009032 -0.007255 -0.007715 ) は、 §i k = 0*6717440+4212*1024+0*256+1 = 4313089 で登録されているので、 この範囲検索の結果の 1つとなる。 そ の部分内積差分値は、
(V · q ) _ f = 0.221795-0.177436 = 0.044359
となり、 S [1] =0.044359となる。
また、 識別番号 2のべクトルデータの b = 0の部分べクトル
V = (+0.029259 -0.016005 -0.021118 +0.024992 -0.006860 -0.009032 -0.007255 -0.007715) は、 鍵 k =0*6717440+619*1024+2*256+2 で登録 されており、 b = 0., c = 2 , d = 6 1 9の範囲検索の結果に含まれ、 その部分内積差分値は、
(v - q) 一 f =0.00005
となり、 S [2]=0.00005となる。
同様に、 b= 1では、 識別番号 2のベクトルデータの部分ベクトルは 鍵 k=l*6717440+2691*1024+l*256+93で登録されており、 b= l, c =
1, d = 2 69 1の範囲検索の結果に含まれ、 その部分内積差分値は、 (v - q) - f =0.00217
が S [2]に累算され、 S [2] =0.00222 となる。
このようにして、 ステップ 1 3 1 2、 ステップ 1 3 1 3で cを増やし ながら各偏角区分について検索範囲の決定と検索処理, 内積差分の算出 と累算を行う。 次いで、 ステップ 1 3 1 4、 ステップ 1 3 1 5で領域番 号 dを 6 5 6 0まで順に増やしながら各領域についてステップ 1 3 0 8 〜ステップ 1 3 1 3の処理を行う。 さらにステップ 1 3 1 6、 ステップ 1 3 1 7で部分空間番号を 3 7まで順に増やしながら各部分空間につい てステップ 1 3 0 7〜ステップ 1 3 1 5の処理を行い、 類似べクトル検 索の第 1ステップを終了する。 この段階で、 内積差分表 3 0 7には各識 別番号のべクトルデータ Vについて、質問べクトル Qとの内積 V . Qと、 内積下限値 αとの差である、 内積差分値 (V · Q ) —ひの推定値の上限 が求まる。 なぜなら、 各部分空間 bについて、 部分質問ベクトル Qとの 内積が部分内積下限値 f より大きな部分べクトルについては、 もれなく 部分内積差分値を求めているので、 部分内積差分値を求めなかったべク トルデータの部分内積差分値は負の値となるはずであり、 この負の値を 0で置き換えて累算している ( 「内積差分表を変化させない」 というこ とは 0を累算していることに等価である) ので、 部分内積差分値の累算 結果は、 内積差分値を上から押さえる、 内積差分上限値の 1つとなるか らである。 以上のようにして内積差分表 3 0 7を求めた後、 類似べクト ル検索の第 2ステップを実行し、 最終的な検索結果を得る。
(類似べクトル検索の第 2ステップ)
次に、 図 9の流れ図にそって第 2ステップの処理手順を説明する。 ス テツプ 1 4 0 1で現時点での検索条件を満たす候補の件数を 0クリアし. べクトルデータの内積差分を求めたか否かのフラグ A [0. . 200000]も 0、 即ち 「内積差分を求めていない」 に初期設定する。 そして、 現時点で検 索条件を満たす候補のうちの内積差分値の最低値 (=しきい値) tを 0 に初期化する。
ステップ 1 4 0 2では、 まだ未調査、 即ち内積差分を求めていないべ クトルデータがあるかどうか調べ、 全てのべクトルデータの内積差分を 求めた場合にはステップ 1 4 1 2に飛ぶ。 ただし、 検索条件として与え た内積下限値が 0以上で、 かつ、 ベクトルデータの各成分の分布に偏り が小さい場合には、 全てのべクトルデ一夕の内積差分を求めるはるか前 にステップ 1 4 0 4で条件が 「n o」 になるため、 通常の検索条件では ステップ 1 4 0 2が 「n o」 になることはない。
ステップ 1 4 0 3では A [ j ] が 0、 即ち未調査のベクトルデータ中 で、 内積差分表の値 S [ j ] が最大となるようなベクトルデータの識別 番号 j を求める。 このステップの処理は、 内積差分表 3 0 7を、 内積差 分値の降順に整列するか、 あるいはヒープなどのデータ構造で表現する ことにより、 効率のよい実行が可能である。
ステップ 1 4 0 4では、 先に求めた tと S [ j ] とを比較し、 もしも S [ j ] が t以下であれば、 未調査のベクトルデータ中には現時点の n 件の候補の内積差分値を超えるべクトルデータは存在しないことが確定 するのでステップ 1 4 1 2に飛び、 現時点での候補から結果を計算して 出力し、 検索処理を終了する。 tが S [ j ] より大きい場合には、 ステ ップ 1 4 0 5で着目ベクトルデータのフラグ A [ j ] を 1に変えて 「内 積差分を求めた」 ことを記録し、 ベクトル索引 3 0 1を検索して識別番 号 jのベクトル Vを求め、 質問ベクトル Qとの内積差分値 (V · Q ) - αを求めて内積差分表 2 0 7の該当要素 S [ j ] 内の上限値を、 正確な 内積差分値で置き換える。 記憶領域に余裕のある場合には、 内積差分表 を置き換えず、 新たな表に記録しても差し支えない。
ステップ 1 4 0 6では、置き換えた後の S [ j ]と tとを再び比較し、 S [ j ] 力 S tより大きい場合には、 ステップ 1 4 0 7〜ステップ 1 4 1 1までを実行して識別番号 jのベクトルデータを候補に加える。 ステツ プ 1 4 0 7では、 この時点で既に L件の候補が求まっているかどうか判 定し、 まだ L件求まっていない場合には、 ステップ 1 4 0 8で候補の件 数 nを増やす。 ステップ 1 4 0 9では候補の識別番号の配列 Bの最終候 補 (内積差分が候補中でもっとも低いような候補) として j を登録した 後、 B [0. . n- 1] を、 S [ B [k] ]の降順に整列する。 ステップ 1 4 1 0で 候補件数 nが Lに達していれば、 ステップ 1 4 1 1でしきい値 tを更新 し、 ステップ 1 4 0 2に戻って処理を続ける。
ステップ 1 4 0 2、 もしくはステップ 1 4 0 4で判定が 「 n o」 にな ると、 上記のループを抜け、 ステップ 1 4 1 2に進む。 ステップ 1 4 1 2では、 n件 (最高 L件) の候補の識別番号 B [0]〜B [n- 1]のそれぞれ について、既に求めた内積差分値 S [B [k] ]に αを加えて内積の値を求め、 0から η— 1までの各 kについて、 内積が k番目に大きいべクトルデー 夕の結果番号 B [k]と、質問べクトル Vとの内積の値 S [ B [k] ]との組(B [k], S [B [k] ] ) を類似ベクトル検索の最終結果として出力し、 類似べ クトル検索を終了する。
検索条件中の内積下限の値が 0 . 5以上と十分に大きく、 かつべクト ルデ一夕の分布に大きな偏りがなく、 内積下限 α以上の内積となるべク トルデータの個数が取得件数 Lよりも十分多い場合には、 ステップ 1 4 0 2〜ステップ 1 4 1 1のループを、取得件数 Lの数倍程度繰り返すと、 ステップ 1 4 0 4の判定が 「η ο」 となるため、 実際にベクトルを検索 して内積を求めるベクトルデータの個数が非常に少なく、 最終結果を効 率よく求めることが可能となる。 しかも、 この特性は Lが数百程度の場 合でも成り立つため、 Lが比較的大きい検索条件の場合には、 Lが高々 数個の場合にしか実用的な検索速度が得られない従来の類似べク卜ル検 索方法に比べ、 処理効率が非常によくなる。
以上説明したように、 本発明の第 3の実施の形態の類似ベクトル検索 方法および装置によれば、 べクトルの次元が数百に及ぶべクトルデータ を多数集めたべクトルデータベースに対して、 「最も類似している L個 のベク トルデータを求める」 という型の高速な類似検索が可能で、 さら に Lが比較的大きい (数十〜数百個) 場合でも検索処理が極端に遅くな らず、 「内積の値が 0 . 8以上」といった類似検索範囲の指定が可能な、 べクトルの内積を類似尺度として用いる優れた類似べクトル検索方法お よび装置を提供することができる。
なお、 本実施の形態 3においては、 本発明の実施の形態 1のベク トル 索引作成装置で作成したべクトル索引を検索する場合について説明した が、 実施の形態 1の索引作成装置において、 各部分ベクトルを求める処 理を、 ノルム区分番号と各成分の成分区分番号とから各成分の値を求め るように変更するだけで、 本実施の形態 3の類似べクトル検索装置は、 実施の形態 2のべクトル索引作成装置で作成したべクトル索引の検索に も用いることができ、 上記と同様な効果が期待できる。
さらに、 本実施の形態 3においては、 類似ベクトル検索の第 1ステツ プにおいて、 各部分空間 bについての検索処理を逐次的に行う手順を説 明したが、 図 8 A、 8 Bの流れ図のステップ 1 3 0 6〜ステップ 1 3 1 7のループは、 多数の C P U (中央処理装置) を持つ並列計算機の場合 には、 それぞれの C P Uで分担して処理し、 共通の内積差分表に中間結 果として累算することで、容易に高い並列度で並列処理することができ、 検索速度をさらに向上させることが可能である。 ぐ第 4の実施の形態 >
次に、 本発明の第 4の形態について、 図面を参照しながら説明する,
(類似べクトル検索装置の構成)
図 4は本発明の請求項 1 0、 1 1、 1 3、 2 3、 2 4、 2 6にかかる 類似べクトル検索装置の全体構成を表わすブロック図である。 図 4にお いて、 ベクトル索引 4 0 1は、 上記した第 1の実施の形態のベクトル索 引作成装置によって作成したものであり、 2 0万件の新聞記事を集めた 新聞記事全文データベースから作成した、 各新聞記事の特徴を表す 2 9 6次元の実ベクトルと、 各記事を一意に識別するための 1から 2 0 0 0 0 0の範囲の識別番号の 2項目からなるべクトルデータを 2 0万個格納 した、 図 1 2 A、 1 2 Bのような内容を持つベクトルデータベースから 作成したべクトル索引である。
検索条件入力手段 4 0 2は、 前記新聞記事全文データベースに対する 類似検索を行うために、 前記新聞記事全文データベース中のいずれかの 記事の識別番号と、 類似検索範囲を示す 0〜 1 0 0までの類似度下限値 と最大取得件数とを入力し、 ベクトル索引 4 0 1を識別番号で検索して 入力された識別番号から対応する記事のべクトルを質問べクトル Qとし て求め、 類似度下限値から二乗距離、 即ち距離の二乗の上限値である、 二乗距離上限値 α 2を求める。
部分質問条件算定手段 4ひ 3は、 検索条件入力手段 4 0 2が求めた質 問ベクトル Qに対し、 0〜 3 6までの部分空間について、 3 7種の 8次 元部分質問べクトル Qと、 Qに対応する部分べクトルとの二乗距離の上 限値である部分二乗距離上限値 f 2を f 2 = ひ 2 I Q I 2 I Q I 2によ つて算定する。
検索対象範囲生成手段 4 0 4は、 部分質問条件算定手段 4 0 3が求め た部分空間 bに対する部分質問べクトル Qと部分二乗距離上限値 f 2と べクトル索引 4 0 1中のノルム区分表および偏角区分表とから、 部分質 問べクトル qとの部分二乗距離が部分二乗距離上限値 f 2より小さい可 能性がある部分ベクトルを含んでいる領域を特定する領域番号 d、 偏角 区分番号 c、 ノルム区分範囲 [ rい r 2 ] の組 (d, c, [ r 1; r 2 ] ) を全て列挙する。
索引検索手段 405は、 検索対象範囲生成手段 404が各部分空間 b に対して生成した (d, c, [ r 1; r 2] ) から、 べクトル索引 40 1 に対する検索条件 Kを、べクトル索引作成時における鍵の算定と同様に、 - L m j n , kmax]
kmi
Figure imgf000040_0001
* 76 1 7440 +d * 1 024 + c * 2 56 + r 1 kmax= b * 76 1 7440 + d * l 024 + c * 256 + r 2 と算定し、 べクトル索引 40 1を検索条件 Kで範囲検索して検索条件に 合致する鍵を持つ部分ベクトル Vと識別番号 iとの組 ( i, V) をすベ て求める。
二乗距離差分上限算定手段 406は、 索引検索手段 40 5が求めた部 分ベクトル Vと識別番号 i との組 ( i, V) および部分質問条件算定手 段 40 3が求めた部分質問べクトル Qと部分二乗距離上限値 f 2から、 t = f 2- I v- q I 2によって部分二乗距離差分値 tを算定して、識別 番号 iを添字とする表の要素 S [ i ] に、 部分二乗距離差分値 tを累算 (加算) することで、 二乗距離上限値 α2から、 識別番号 iのベクトル データのべクトル Vと質問べクトル Qとの二乗距離 I V— Q I 2を減じ た二乗距離差分の上限値を算定する。
二乗距離差分表 407は、 二乗距離差分上限算定手段 406が二乗距 離差分の上限値を蓄積する、 識別番号 iのベクトルべ一夕の二乗距離差 分値 S [ i ] を参照 格納する。
類似検索結果決定手段 40 8は、 二乗距離差分表 40 7の要素 S [i] 中で、二乗距離差分上限値 S [i]が正の値で大きいものから順に、べクト ル索引 40 1を識別番号 iで検索して対応するべクトル Vを求め、 検索 条件入力手段 40 2が算出した二乗距離上限値 α2から、 Vと検索条件 入力手段 40 2が算出した質問べクトル Qとの二乗距離 I V— Q I 2を 差し引いた二乗距離差分値ひ 2— I V - Q I 2を算出して、 S [i]を二乗 距離差分値ひ 2— I V - Q I 2で置き換え、二乗距離差分値を算出してい ない記事の部分二乗距離差分累算値の最大値より大きい二乗距離差分値 を持った二乗距離差分値を算出した記事が L個以上になった時点、 ある いは部分二乗距離差分累算値が正である全ての記事の二乗距離差分値を 算出した時点で、 二乗距離差分値が正である、 二乗距離差分値の大きな 最大 L個の結果候補( i , S [i] )〖こ対し、識別番号 i と距離 s q r t (ひ 2— S [i] ) との組( i , s q r t ( a 2 _ S [i] ) ) を、検索結果として、 検索結果出力手段に出力する。
検索結果出力手段 4 0 9は、 類似ベクトル検索の結果である、 最大 L 件の新聞記事の識別番号と 0〜 1 0 0の範囲の類似度とを、 類似検索結 果決定手段 4 0 8が求めた検索結果から算定して表示するものである。
(類似べクトル検索装置の動作)
以上の構成の類似べクトル検索装置において、 その動作を図面をもと に説明する。 図 1 0 A、 1 0 Bは一体となって類似ベクトル検索の第 1 ステップにおける検索処理の手順を記述した流れ図、 図 1 1 A、 1 1 B は一体となって類似べクトル検索の第 2ステップにおける検索処理の手 順を記述した流れ図である。 類似ベクトル検索の第 1ステップでは、 検 索条件入力手段 4 0 2から入力された検索条件から部分質問べクトル Q と部分二乗距離上限値 f とを作成し、 べクトル索引 4 0 1を検索して、 各ベクトルデータの二乗距離差分上限値 S [ i ] 、 即ち二乗距離上限値 から質問ベクトルとの二乗距離を減じた値が S [ i ] 未満となるような 値を二乗距離差分表 4 0 7に求める。 次に、 類似ベクトル検索の第 2ス テツプでは、 第 1ステップで二乗距離差分表 4 0 7に求めた二乗距離差 分上限値を手がかりにして、 類似検索結果決定手段 4 0 8が、 「質問べ クトルとの二乗距離が α2より小さい」 という検索条件に合致し、 かつ 質問べクトルとの二乗距離が比較的小さいべクトルデータから順に、 ベ クトルの成分を検索して二乗距離差分を求めていき、 二乗距離差分を求 めていないべクトルデータのどれよりも二乗距離差分値が大きいことが 保証されるベクトルデータが指定件数 (即ち L件) 以上集まるか、 ある いは検索条件に合致する全てのべクトルデ一夕について二乗距離差分値 を求めるまで処理を続け、 得られた二乗距離差分値から距離を算出して 最終結果を出力する。 (類似ベクトル検索の第 1ステップ)
以下、 検索条件として識別番号 1、 類似度下限値 90、 最大取得件数 1 0が入力された場合を例にとって、 図 1 0 A、 1 0 B、 1 1 A、 1 1 Bにそって類似べクトル検索の内容を説明する。 識別番号が 1なので、 296次元のベクトルの各成分は、 図 1 2 Aの通りとなる。 まず、 ステ ップ 1 50 1で二乗距離差分表 Sの 20万個の要素 S [0] 〜S [20 0000] を 0に初期設定する。 次に、 上記の検索条件を検索条件入力 手段 402から読み込み、 それぞれ i, Z, Lに格納する。
ステップ 1 502で部分空間番号 bを 0に初期化したあと、 類似度下 限値 Zから、二乗距離上限値ひ 2を算出する。 この検索条件の場合には、 ひ— (1 00— 90) /50 = 0. 2となる。 ステップ 1 504、 ステ ップ 1 50 5で、 各部分空間について、 ベクトル索引 40 1の逆変換表 Kを引いて鍵を求め、 探索表を検索してベクトルデータを求め、 識別番 号が 1であるもののべクトル部分を Qに格納することで、 質問べクトル を Q [0..295] に求める。 ステップ 1 506で部分空間番号を初期化し た後、 ステップ 1 507〜ステップ 1 5 1 7で各部分空間についてべク トル索引を検索して二乗距離差分表 40 7に各べクトルデータの二乗距 離差分上限値を求める。
ステップ 1 5 0 7では、部分空間番号 bの部分質問べクトル Q [0..7] と部分二乗距離上限値 f 2、 即ちこの部分空間の部分べクトルデータ V と Qとの部分二乗距離の上限値を求める。 b = 0の場合には、 I Q I 2 = 0. 2 2 1 7 9 5 , | Q = 1であるから、
f 2= 0. 0 4 * 0. 2 2 1 7 9 5/ 1. 0 = 0. 0 0 8 8 7 1 8 となる。 領域番号 dを 0に初期化したあと、 検索対象範囲を決定するた めに用いる表 Wを作成する。 表 Wは偏角区分番号 c, ノルム区分番号 r で引いて、 着目している領域番号 dの領域の中心べクトル pと部分質問 ベクトル Qとの内積 p · qが W [c, r ] 未満ならば、 区分 (d, c , 0) 〜区分 (d , c, r ) の部分ベクトル vと部分質問ベクトル Qとの 部分二乗距離が f 2以上となるように作成する。この場合には、区分(d, c , 0 ) 〜区分 (d, c , r ) の部分ベクトルはこの部分空間に対する 検索条件 (即ち部分二乗距離が f 2より小さい) を満たさないため、 こ れらの区分の検索を省略することができる。
表 Wを求めるには、 部分べクトル Vが領域 d内で最も部分質問べクト ル Qに近い場合、 即ち p、 Q、 Vがー平面上にあり、 かつ Vと Qとのな す角 ωが偏角区分 cの範囲内でもっとも小さい場合を考えればよい。 こ のとき、 Ρと Qのなす角を Θ、 Ρと Vのなす角の最大値を φとすると、 Vと qのなす角 ωは ω = Θ— φとなるから、
f 2> I V - q I 2 = I V I 2+ I q I 2 - 2 *| V |* | q |*cos(0 - ) > R [r] 2 + I q I 2 - 2 * R [r+1] *| q I* (cos Θ *cos φ + sin θ Ξϊη )
と、
C [c] =cos<|)
cos0 = (p · q) /I P 1*1 Q 1= (p · q) /I q I とから、 P · Qが満足する不等式
f 2>R [r] 2 + | q I 2 - 2 *R [r+1] * ((p · q ) * C [c] +SQrt (| q | 2- (p · q) 2) *sart (1— C [c] 2))
を解いて、 ステップ 1 507の W [c, r] の式を得る。
このように、 実際の部分ベクトル Vの成分を参照せず、 また領域 dに も依存せずに、部分質問べクトルのノルム I Q Iだけから表 W[c, Γ]の値 を定めることができる。 本実施例の場合には、 ノルム区分表 R、 偏角区 分表 Cがそれぞれ図 1 5 A、 1 5 B、 1 6の通りなので、 b = 0, b = 1の場合には、 表 Wは図 1 8 A、 1 8 B、 1 8 Cのような内容となる。 図 1 7A、 1 7 Bと同様に、 図中で表の値が 「 9. 99999」 となつ ている要素は、 この部分質問べクトル Qについては検索対象とはならな いノルム区分であることを意味している。 また、 b=0では区分 1 0〜 2 55, b = 1区分 0〜 59および区分 1 80〜 2 55までの表の値が 記載されていないが、 この部分はすべて値が 「 9. 99999」 である ので省略している。 これが、 類似尺度として距離を用いているため、 ノ ルムが小さすぎても、 逆に大きすぎても、 部分質問ベクトルとの距離が 大きくなつてしまい、 結果的に 「距離がひ未満」 という検索条件を満足 できなくなるためである。
ステップ 1 508で着目する領域の領域中心べクトル pと部分質問べ クトル Qとの内積 tを求め、 偏角区分用のループ変数 cを 0に初期化し た後、ステップ 1 509で表 Wの最小値を与える要素 M i n (W[0, r]) より内積 tが小さいか否か検査し、 小さい場合には、 領域 dを鍵の一部 とするどの部分べクトルも検索条件を満足しないことが確定するのでス テツプ 1 5 1 2に飛び、 そうでない場合には、 ステップ 1 5 1 0で偏角 区分 cについて、 検索すべきノルム区分の最低値 rmi n及び最高値 rma xをステップ 1 50 7で算定した表 Wを手がかりにして、 W [c , r ] < tが成り立つノルム区分番号 rの区間として求め、 この [ rm i n rm ax] と部分空間番号 b、 領域番号 d、 偏角区分番号 cとから、 ベクトル 索引 4 0 1の検索範囲 [kmin kmax] を求める。
ステップ 1 5 1 1では、 この検索範囲 [kmin kmax] を鍵にして探索 木を範囲検索し、 範囲検索結果に含まれる、 識別番号 j とベクトル Vの 組 (j , V) のそれぞれについて、 部分二乗距離上限値 f 2から部分質 問べクトル qと Vとの部分二乗距離 I V _ Q I 2を減じた部分二乗距離 差分値を算定、 二乗距離差分表 4 0 7の該当要素 S [ j ] に累算する。 例えば、 b = 0 , d = 4 2 1 2の場合には、
q = ( +0.029259 -0.016005 -0.021118 +0.024992 -0.006860 -0.009032 -0.007255 -0.007715)
p = (+ 1 /2 , - 1 /2 , - 1 / 2 , + 1 /2 , 0 , 0 0 0 ) であるから、
t = p · q = +0.045687
となり、 M i n (W[0 r]) =0.03356 よりも tが大きく、 ステップ 1 5 1 0に進む。図 1 5 A 1 5 Bの表 Wより、例えば c = 0の場合には、
A r m i n = 1 r ma x = 5
であり、 探索木の検索範囲は、
[ k min , k max ] = [ 0*6717440+4212*1024†0*256+1, 0*6717440+4212*1024+0*256+5] = [4313089, 4313093]
となる。 識別番号 1のべクトルデータの b = 0の部分べクトル Xは、
X = (+0.029259 -0.016005 -0.021118 +0.024992 - 0· 006860 -0.009032 -0.007255 -0.007715)
となり、 k =0*6717440+4212*1024+0*256+1 = 4313089で登録されている ので、 この範囲検索の結果の 1つとなる。 その部分二乗距離差分値は、 f 2一 j v _ q I 2 = 0.0088718- 0 = 0.0088718 となり、 S [ 1] = 0. 0088718となる。
このようにして、 ステップ 1 5 1 2、 ステップ 1 5 1 3で cを増やし ながら各偏角区分について検索範囲の決定と検索処理、 二乗距離差分の 算出と累算を行う。 ステップ 1 5 1 4、 ステップ 1 5 1 5で領域番号 d を 6 5 6 0まで順に増やしながら各領域についてステップ 1 5 0 8〜ス テツプ 1 5 1 3の処理を行う。 ステップ 1 5 1 6、 ステップ 1 5 1 7で 部分空間番号を 3 7まで順に増やしながら各部分空間についてステップ 1 5 0 7〜ステップ 1 5 1 5の処理を行い、 類似べクトル検索の第 1ス テツプを終了する。 この段階で、 二乗距離差分表 4 0 7には各識別番号 のベク トルデータ Vについて、 二乗距離上限値 α 2と、 質問ベク トル Q との二乗距離 I V _ Q I 2との差である、 二乗距離差分値ひ 2— I V - Q I 2の推定値の上限が求まる。 なぜなら、 各部分空間 bについて、 部分 質問べクトル Qとの二乗距離が部分二乗距離上限値 f 2より小さな部分 ベクトルについては、 もれなく部分二乗距離差分値を求めているので、 部分二乗距離差分値を求めなかったべクトルデータの部分二乗距離差分 値は負の値となるはずであり、 この負の値を 0で置き換えて累算してい る ( 「二乗距離差分表を変化させない」 ということは 0を累算している ことに等価である) ので、 部分二乗距離差分値の累算結果は、 二乗距離 差分値を上から押さえる、二乗距離差分上限値の 1つとなるからである。 こうして二乗距離差分表 4 0 7を求めた後、 類似べクトル検索の第 2ス テツプを実行し、 最終的な検索結果を得る。
(類似べクトル検索の第 2ステップ)
次に、 図 1 1 A、 1 1 B.の流れ図にそって第 2ステップの処理手順を 説明する。 ステップ 1 6 0 1で現時点での検索条件を満たす候補の件数 を 0クリアし、 べクトルデータの二乗距離差分を求めたか否かのフラグ A [0. . 200000] も 0、 即ち 「二乗距離差分を求めていない」 に初期設定 する。 そして、 現時点で検索条件を満たす候補のうちの二乗距離差分値 の最低値 (=しきい値) tを 0に初期化する。
ステップ 1 6 0 2では、 まだ未調査、 即ち二乗距離差分を求めていな いべクトルデータがあるかどうか調べ、 全てのべクトルデータの二乗距 離差分を求めた場合にはステップ 1 6 1 2に飛ぶ。 ただし、 検索条件と して与えた二乗距離上限値が 1以下で、 かつ、 ベクトルデータの各成分 の分布に偏りが小さい場合には、 全てのべクトルデータの二乗距離差分 を求めるはるか前にステップ 1 6 0 4で条件が 「n o」 になるため、 通 常の検索条件ではステップ 1 6 0 2が 「n o」 になることはない。 ステ ップ 1 6 0 3では A [ j ] が 0、 即ち未調査のベクトルデータ中で、 二 乗距離差分表の値 S [ j ] が最大となるようなベクトルデータの識別番 号 j を求める。 このステップの処理は、 二乗距離差分表 4 0 7を、 二乗 距離差分値の降順に整列するか、 あるいはヒープなどのデータ構造で表 現することにより、 効率のよい実行が可能である。
ステップ 1 6 0 4では、 先に求めた tと S [ j ] とを比較し、 もしも S [ j ] が t以下であれば、 未調査のベクトルデータ中には現時点の n 件の候補の二乗距離差分値を超えるべクトルデータは存在しないことが 確定するのでステップ 1 6 1 2に飛び、 現時点での候補から結果を計算 して出力し、 検索処理を終了する。
tが S [ j ] より大きい場合には、 ステップ 1 6 0 5で着目ベクトル データのフラグ A [ j ] を 1に変えて 「二乗距離差分を求めた」 ことを 記録し、べクトル索引 4 0 1を検索して識別番号 jのべクトル Vを求め、 質問べクトル Qとの二乗距離差分値ひ 2— I V - Q I 2を求めて二乗距 離差分表 4 0 7の該当要素 S [ j ] 内の上限値を、 正確な二乗距離差分 値で置き換える。 記憶領域に余裕のある場合には、 二乗距離差分表を置 き換えず、 新たな表に記録しても差し支えない。 ステップ 1 606で、 置き換えた後の S [ j ] と tとを再び比較し、 S [ j ] が tより大きい 場合には、 ステップ 1 607〜ステップ 1 6 1 1までを実行して識別番 号 jのベクトルデータを候補に加える。
ステップ 1 607では、 この時点で既に L件の候補が求まっているか どうか判定し、 まだ L件求まっていない場合には、 ステップ 1 608で 候補の件数 nを増やす。 ステップ 1 609では候補の識別番号の配列 B の最終候補 (二乗距離差分が候補中でもっとも低いような候補) として j を登録した後、 B [0.. n-1] を、 S [B [k]]の降順に整列する。 ステツ プ 1 6 1 0で候補件数 nが Lに達していれば、 ステップ 1 6 1 1でしき い値 tを更新し、 ステップ 1 602に戻って処理を続ける。 ステップ 1 602、 もしくはステップ 1 604で判定が 「n o」 になると、 上記の ループを抜け、 ステップ 1 6 1 2に進む。
ステップ 1 6 1 2では、 n件(最高 L件) の候補の識別番号 B [0]〜 B [n-1]のそれぞれについて、 既に求めた二乗距離差分値 S [B [k]]から、 s q r t (ひ 2— S [B [k]]) で質問ベクトル Qとの距離を求め、 0から n一 1までの各 kについて、 距離が k番目に小さいべクトルデータの結 果番号 B [k]と、 質問ベクトル Qとの距離の値 S [B [k]]との組 (B [k]、 S [B [k]]) を類似べクトル検索の最終結果として出力し、類似べクトル 検索を終了する。
検索条件中の二乗距離上限ひ 2の値が 0. 5以下と十分に小さく、 か つべクトルデータの分布に大きな偏りがなく、 二乗距離上限 α2未満の 二乗距離となるべクトルデータの個数が取得件数 Lよりも十分多い場合 には、 ステップ 1 602〜ステップ 1 6 1 1のループを、 取得件数しの 数倍程度繰り返すと、 ステップ 1 604の判定が 「η ο」 となるため、 実際にべクトルを検索して二乗距離を求めるべクトルデータの個数が非 常に少なく、 最終結果を効率よく求めることが可能となる。 しかも、 こ の特性は Lが数百程度の場合でも成り立つため、 Lが比較的大きい検索 条件の場合には、 Lが高々数個の場合にしか実用的な検索速度が得られ ない従来の類似ベクトル検索方法に比べ、 処理効率が非常によくなる。 以上、 説明したように、 本発明の第 4の実施の形態の類似ベクトル検 索方法によれば、 べクトルの次元が数百に及ぶべクトルデータを多数集 めたべクトルデータベースに対して、 「最も類似している L個のべクト ルデ一夕を求める」 という型の高速な類似検索が可能で、 さらに Lが比 較的大きい(数十〜数百個)場合でも検索処理が極端に遅くならず、 「距 離の値が 0 . 2以下」 といった類似検索範囲の指定が可能な、 ベクトル 間の距離を類似尺度として用いる優れた類似べクトル検索方法が実現で さる。
なお、 本実施の形態 4においては、 本発明の実施の形態 1のベクトル 索引作成装置で作成したべクトル索引を検索する場合について説明した が、 実施の形態 1の索引作成装置において、 各部分ベクトルを求める処 理を、 ノルム区分番号と各成分の成分区分番号とから各成分の値を求め るように変更するだけで、 本実施の形態 4の類似ベクトル検索装置は、 実施の形態 2のべクトル索引作成装置で作成したべクトル索引の検索に も用いることができ、 上記と同様な効果が期待できる。
また、 本実施の形態 4においては、 質問ベクトルを直接入力せず、 ベ クトルデータベース中のべクトルデータの識別番号を指定する形態を説 明したが、 外部から直接質問ベクトルのデータを指定した場合でも、 上 記の説明と同様の方法で、 類似べクトル検索装置を用意に実施できる。 さらに、 本実施の形態 4においては、 類似ベクトル検索の第 1ステツ プにおいて、 各部分空間 bについての検索処理を逐次的に行う手順を説 明したが、 図 1 0 A、 1 0 Bの流れ図のステップ 1 5 0 6〜ステップ 1 5 1 7のループは、 多数の C P U (中央処理装置) を持つ並列計算機の 場合には、 それぞれの C P Uで分担して処理し、 共通の内積差分表に中 間結果として累算することで、 容易に高い並列度で並列処理することが でき.、 検索速度をさらに向上させることが可能である。 産業上の利用可能性
以上のように本発明のべクトル索引作成方法は、 部分べクトル算定手 段と、 ノルム分布集計手段と、 ノルム区分表と、 領域番号算定手段と、 偏角分布集計手段と、 偏角区分表と、 ノルム区分番号算定手段と、 偏角 区分番号算定手段と、 索引データ算定手段と、 索引構成手段とを有する ことにより、 方向、 ノルムの分布が不明なベクトルデータベースに対し て、 ベクトルの次元が数百次元の場合でも、 高速な検索が可能で、 類似 検索の際に、 ベクトル間の距離と、 ベクトルの内積の 2種類の類似度の いずれかを選択でき、 「もっとも類似している L個のベクトルを求める」 という型の類似検索ができ、 さらに、 Lが比較的大きい (数十〜数百) 場合でも、 検索処理が極端に遅くならず、 「内積が 0 . 6以上」 といつ た、 類似検索範囲の指定が可能で、 索引作成に要する計算量が実用的範 囲であるような、 ベクトル索引の作成を可能にする、 という効果を奏す るものである。
また、 本発明のベクトル索引作成方法は、 成分区分番号算定手段をさ らに有することにより、 上記の効果に加えて、 成分の量子化による計算 誤差を最小限に抑えながら、 作成すべきべクトル索引の容量を大幅に低 減できる、 という効果を奏するものである。
また、 本発明の類似ベクトル検索方法は、 部分質問条件算定手段と、 検索対象範囲生成手段と、 索引検索手段と、 内積差分上限算定手段もし くは二乗距離差分上限算定手段と、 類似検索結果決定手段とを有し、 部 分内積差分の累算値を算定して類似検索の手がかりとして用いることに より、 ベクトルデータベースに対して、 ベクトルの次元が数百次元の場 合でも、 高速な検索が可能で、 「もっとも類似している L個のベクトル を求める」 という型の類似検索ができ、 さらに、 Lが比較的大きい (数 十〜数百) 場合でも、 検索処理が極端に遅くならず、 「内積が 0 . 6以 上」 といった、 類似検索範囲の指定が可能な、 内積あるいは距離を類似 尺度として用いる類似べクトル検索を可能にする、 という効果を奏する ものである。 しかも、 内積と距離のどちらを類似尺度として用いるかを ベクトル索引の作成時に指定する必要がなく、 単一のベクトル索引を使 つて、検索時に必要に応じて、類似尺度の使い分けが可能であるという、 優れた効果を奏するものである。
また、 本発明の類似ベクトル検索方法は、 部分質問条件を算定する手 段と、 検索対象範囲を生成する手段と、 索引を検索する手段と、 二乗距 離差分上限を算定する手段と、 類似検索結果を決定する手段とを有し、 部分二乗距離差分の累算値を算定して類似検索の手がかりとして用いる ことにより、 ベクトルデータベースに対して、 ベクトルの次元が数百次 元の場合でも、 高速な検索が可能で、 「もっとも類似している L個のベ クトルを求める」 という型の類似検索ができ、 さらに、 Lが比較的大き い(数十〜数百)場合でも、検索処理が極端に遅くならず、 「距離が 0 . 8以下」 といった、 類似検索範囲の指定が可能で、 距離を類似尺度とし て用いる類似べクトル検索を可能にする、 という効果を奏するものであ る。
本発明の効果は、 索引作成対象、 検索対象となるベクトルデータの次 元が数百次元と高く、 ベクトルべ一夕ベース中のベクトルデータ数が数 十万〜数百万個と多く、 検索時の取得件数が数十個と多い場合には特に 顕著であり、 従来のべクトル索引作成方法では数百時間を要していた索 引作成時間を数十分に短縮するとともに、 従来の類似べクトル検索方法 では数分を要する、 あるいは実行不可能であった類似検索処理を 1秒以 下で処理することができ、 実用上、 非常に大きな効果が得られる。

Claims

請 求 の 範 囲
1. 少なくとも N次元実ベクトルと、 その識別番号とを含む組を べクトルデータとして有限個登録したべクトルデータベースに対して、 機械検索可能な索引を作成する方法であって、
べクトル索引作成の第 1ステップでは、 前記べクトルデータベース中 の各べクトルデータの N次元実べク トル Vに対して、 N個の成分を予め 定めた方法で m組に分けて、 m個の部分べクトル V 〜 vmを作成した後, 部分ベク トル vk (k= l〜m) のノルムの分布を集計して、 予め定め られた D種のノルム区分のノルムの範囲を定めたノルム区分表を作成す るとともに、 予め定めた D個の領域中心ベクトル p i〜pDに従って、 前 記部分べクトル vkの所属する領域番号 dを算定し、 前記部分べク トル v kと領域中心べクトル p dとのなす角の余弦 (v k · p d) / ( I V k I * I P d I ) の分布を偏角分布として集計して、 予め定めた C種の偏角 区分の偏角の範囲を記録した偏角区分表を作成し、
べクトル索引作成の第 2ステップでは、 前記べクトルデータベース中 の各べクトルデータの N次元実べクトル Vに対して、 前記第 1のステツ プと同一の方法で N個の成分を m組に分けて、 m個の部分べクトル V! 〜vmを作成した後、 部分空間番号 bに対する部分ベク トル vb (b= 1 〜m) に対して、 前記ノルム区分表を参照して前記各部分ベク トル vb のノルムが所属するノルム区分の番号 rを算定するとともに、 前記第 1 のステップと同一の方法で、 予め定めた D個の領域中心べク トル p i〜 PDに従って、 前記部分ベクトル vbの所属する領域番号 dを算定し、 前 記部分べク トル vbと前記領域番号 dの領域の中心方向を表す領域中心 べクトル p dとのなす角の余弦である偏角 (vb ' pd) ( | vb | * | Pd I ) を算定して、 前記偏角区分表を参照して、 所属する偏角区分の 番号 cを算出し、 前記部分空間番号 と、 前記領域番号 dと、 前記偏角 区分番号 cと、 前記ノルム区分番号 rと、 前記部分ベク トル vbの成分 と、 識別番号 iとから、 ベクトル索引に登録する索引登録データを算定 し、
ベクトル索引作成の第 3ステップでは、 前記ノルム区分表と、 前記偏 角区分表と、 前記索引登録データとから、 各部分ベクトルの識別番号と 成分とを、 部分空間番号 b、 領域番号 d、 角区分番号 c、 ノルム区分番 号範囲 r 2] の組を鍵にして、 索可能で、 かつ各ベクトルデ一夕 のべクトルの成分を、 その識別番号で検索可能なべクトル索引として構 成することを特徴とするべクトル索引作成方法。
2. 少なくとも N次元実ベクトルと、 その識別番号とを含む組を べクトルデータとして有限個登録したべクトルデータベースに対して、 機械検索可能な索引を作成する方法であって、
べクトル索引作成の第 1ステップでは、 前記べクトルデータベース中 の各べクトルデータの N次元実べクトル Vに対して、 N個の成分を予め 定めた方法で m組に分けて、 m個の部分べクトル V 〜 vmを作成した後、 各部分空間番号 bに対する部分ベクトル vb (b= l〜m) のノルムの 分布を集計して、 予め定められた D種のノルム区分のノルムの範囲を定 めたノルム区分表を作成するとともに、 予め定めた D個の領域中心べク トル P P Dに従って、 前記部分べクトル V bの所属する領域番号 dを 算定し、 前記部分べクトル vbと領域中心べクトル pdとのなす角の余弦 (vb- pd)/( I vb I * I P d I )の分布を偏角分布として集計して、 予め定めた C種の偏角区分の偏角の範囲を記録した偏角区分表を作成し、 べクトル索引作成の第 2ステップでは、 前記べク卜ルデータベース中 の各べクトルデータの N次元実べクトル Vに対して、 前記第 1ステップ と同一の方法で N個の成分を m組に分けて、 m個の部分べク トル V 〜 vmを作成した後、 前記部分空間 bに対する部分ベクトル vb (b= l〜 m) に対して、 前記ノルム区分表を参照して前記各部分ベク トル vbの ノルムが所属するノルム区分の番号 rを算定するとともに、 前記第 1ス テツプと同一の方法で、 予め定めた D個の領域中心べクトル p i p Dに 従って、 前記部分ベクトル vbの所属する領域番号 dを算定し、 前記部 分べク トル V bと前記領域番号 dの領域の中心方向を表す領域中心べク トル p dとのなす角の余弦である偏角 (vb · pd) ( I vb I * I p d I ) を算定して、 前記偏角区分表を参照して、 所属する偏角区分の番号 cを算出し、 前記算定したノルム区分番号 rに対応するノルム区分のノ ルムの最高値から、 前記算定した部分べクトル vbの各成分 vb jに対し て、 V b jが所属する予め定めた範囲の成分区分番号 Wjを算定し、 前記 部分空間番号 bと、 前記領域番号 dと、 前記偏角区分番号 cと、 前記ノ ルム区分番号 rと、 前記成分区分番号 Wjの列と、 識別番号 i とから、 べクトル索引に登録する索引登録データを算定し、
ベクトル索引作成の第 3ステップでは、 前記ノルム区分表と、 前記偏 角区分表と、 前記索引登録データとから、 各部分ベクトルの識別番号と 成分とを、 部分空間番号 b、 領域番号 d、 偏角区分番号 c、 ノルム区分 番号範囲 [ι^, r 2] の組を鍵にして、 検索可能で、 かつ各ベクトルデ —夕のベク トルの成分を、 その識別番号で検索可能なベクトル索引とし て構成することを特徴とするべクトル索引作成方法。
3. 前記べクトル索引作成の第 1および第 2のステップにおいて、 部分べクトル vbと領域中心べクトル pdとのなす角度の関数として、角 度の余弦 ( vb · pd) ノ ( I vb i * I pd I ) を用い、 この値を偏角と して偏角分布を求める、 請求項 1又は 2記載のベクトル索引作成方法。
4. 前記べクトル索引作成の第 1および第 2のステップにおいて、 N次元べク トル Vの全成分を取り出すように、 Vの先頭の成分から順に、 N/m個、 あるいは (NZm) + 1個の成分を取り出して、 部分べク ト ルを作成する請求項 1又は 2記載のべクトル索引作成方法。
5. 前記ベクトル索引作成の第 1のステップにおいて、 ノルム区 分表を作成する際に、 ノルム分布の集計結果をもとに、 各ノルム区分に 相当するノルム範囲に所属する部分べクトルの数が、 できる限り均一に なるようにノルム区分を定める請求項 1記載のべクトル索引作成方法。
6. 前記ベクトル索引作成の第 1のステップにおいて、 偏角区分 表を作成する際に、 偏角分布の集計結果をもとに、 各偏角区分に相当す る偏角範囲に所属する部分べク トルの数が、 できる限り均一になるよう に偏角区分を定める請求項 1記載のべクトル索引作成方法。
7. 前記べクトル索引作成の第 1および第 2のステップにおいて、 部分べクトル V bの領域番号を、 予め定めた D個の領域中心べクトル p i 〜PDのうち、 011)のなす角の余弦 (V b ' p Z U vb l * ! p d I ) がもっとも大きくなるような領域中心べクトル p dの番号 dとし て求める請求項 1又は 2記載のべクトル索引作成方法。
8. 前記ベクトル索引作成の第 3のステップにおいて、 部分空間 番号 b、 領域番号 d、 偏角区分番号 c、 ノルム区分番号 rを結合した番 号 (b *Nd*Nc*Nr) + (d * Nc* Nr) + (c *Nr) + rを鍵と し、 ベクトルの識別番号 i と成分とを検索可能な探索木と、 ベクトルデ 一夕の識別番号を添字とする、 各部分べクトルの前記探索木の鍵を記録 した表とを作成し、 べクトル索引の一部とする請求項 1又は 2記載のベ クトル索引作成方法。
9. 前記ベクトル索引作成の第 2のステップにおいて、成分が {一
1 , 0, + 1 } のうちのいずれかである、 0ベクトルでない全てのべク トル (0, ···, 0, + 1) 〜 (— 1, …, — 1) を正規化したベクトル を領域中心べクトルとして用いる請求項 1又は 2記載のべクトル索引作 成方法。
1 0. 検索条件として N次元実ベクトルの質問ベクトル Qと、 内積 下限値ひ、 および最大取得ベクトル数 Lとを指定して、 少なくとも N次 元実べクトルとその I D番号との組を有限個登録したべクトルデータか ら作成したべクトル索引を検索して、 前記べクトルデータベースのべク トルデータ ( i , V) で、 前記質問ベクトル Qとの内積の値 V · Qが前 記内積下限値ひより大きいものについて、 その識別番号 iと、 Qと Vの 内積の組 ( i , V · Q) を最大 L個求める類似ベクトルの検索方法であ つて、
類似べクトル検索の第 1ステップでは、前記質問べクトル Qに対して、 Qの N個の成分を、 前記べク卜ル索引の作成時に用いた方法と同一の、 予め定めた方法で m組に分けて、 m個の部分質問べクトル (!ェ〜^ を作 成するとともに、 各部分質問べクトル qbと対応する部分べクトルとの 内積 (この内積をこれ以降 「部分内積」 と呼ぶ) の下限値である部分内 積下限値 f bを、 指定された内積下限値ひから算定し、 各部分質問べク トル Qb (b= l〜m) と各領域 bに対して、 領域中心ベクトル pdと前 記部分質問ベクトル Qbとの内積 Pd · Qbの値と、 前記部分内積下限値 f bと、 前記べクトル索引中のノルム区分表および偏角区分表とから、 部分空間番号 b、 領域番号 dにおいて検索すべき偏角区分番号 c、 ノル ム区分の範囲 [ , r 2] の組 (c, [r 1; r 2] ) を算定し、 前記算 定した (c, [r r 2] ) を基に、 (b, d, c, [r 1( r 2] ) を 検索条件として前記べクトル索引を範囲検索し、 索引検索結果として、 条件を満たす部分べクトル vbの識別番号 i と成分とを求め、 前記 vb
Q bとの部分内積V b · Q bと前記部分内積下限値 f bとの差である、部分 内積差分 (vb * Qb) —: f bを算出して、 内積差分表の識別番号 iの内 積差分上限値 S [i]として累算 (加算) し、
類似べクトル検索の第 2ステップでは、 前記内積差分表 S [ i]中で値 の大きいものから順に、 前記べクトル索引を識別番号 iで検索してべク トルデータの成分 Vを求め、 Vと前記質問べクトル Qとの内積 V · Qか ら を差し引いた内積差分値 t =V · Q_ aを算出していき、 前記内積 差分表中で、 内積差分値を算出していない要素の最大値より大きい内積 差分値を持つべクトルデータが L個以上になった時点、 あるいは内積差 分上限値が正である全てのべクトルデータの内積を算出した時点で、 内 積差分値の大きな最大 L個のべクトルデータに対し、 少なくとも識別番 号 i と内積 t +ひとの組を、 検索結果として出力することを特徴とする 類似べクトル検索方法。
1 1. 検索条件として N次元実ベクトルの質問ベクトル Qと、 距離 上限値ひ、 および最大取得ベクトル数 Lとを指定して、 少なくとも N次 元実べクトルとその識別番号との組を有限個登録したべクトルデータか ら作成したべクトル索引を検索して、 前記質問べクトル Qとの内積の値 が前記距離上限値 α以下であるような、 前記べクトルデータ中の Ν次元 実ベクトル Vの識別番号 iと、 Qと Vの距離 pの組 ( i , p) を最大 L 個求める類似べクトルの検索方法であって、
類似べクトル検索の第 1ステップでは、前記質問べクトル Qに対して、 Qの N個の成分を、 前記べクトル索引の作成時に用いた方法と同一の、 予め定めた方法で m組に分けて、 m個の部分質問べクトル q を作 成するとともに、 各部分質問べクトル Qbと対応する部分べクトル vbと の二乗距離 I vb— qb I 2 (すなわちユークリッド距離の二乗、 この値 をこれ以降 「部分二乗距離」 と呼ぶ) の上限値である部分二乗距離上限 値 f bを、 指定された距離上限値ひから算定し、 各部分質問ベクトル q b (b= l〜m) に対して、 前記部分質問ベクトル qbと、 前記部分二乗 距離上限値 f bと、 前記ベクトル索引中のノルム区分表および偏角区分 表とから、 検索すべき部分空間番号 b、 領域番号 d、 偏角区分番号 c、 ノルム区分の範囲 [i^, r 2] の組 (b, d, c , [ r 1; r 2] ) を系 統的に生成し、 前記生成した (b, d, c, [r 1; r 2] ) を検索条件 として、 前記ベクトル索引を範囲検索して、 索引検索結果として、 条件 を満たす部分ベクトル vbの識別番号 i と成分とを求め、 前記部分二乗 距離上限値 f bと、 vbと qbとの部分二乗距離 I vb— Qb I 2との差で ある、 部分二乗距離差分 f b— I vb-qb I 2を算出して、 二乗距離差分 表の識別番号 iの二乗距離差分上限値 S [ i ]として累算 (加算) し、 類似べクトル検索の第 2ステップでは、 前記二乗距離差分表 S [ i ]中 で値の大きいものから順に、 前記ベクトル索引を識別番号 iで検索して べクトルデータの成分 Vを求め、 距離上限値の二乗ひ 2から Vと前記質 問べク トル Qとの二乗距離 I V— Q I 2を差し引いた二乗距離差分値ひ 2— I V— Q I 2を算出していき、 前記二乗距離差分表中で、 二乗距離差 分値を算出していない要素の最大値より大きい二乗距離差分値を持つベ クトルデータが L個以上になった時点、 あるいは二乗距離差分上限値が 正である全てのべクトルデータの二乗距離差分値を算出した時点で、 二 乗距離差分値 tの大きな最大 L個のべクトルデータに対し、 少なくとも 識別番号 i と、 距離 (α2_ t ) 1/2との組を、 検索結果として出力する ことを特徴とする類似べクトル検索方法。
1 2. 前記類似ベクトル検索の第 1のステップにおいて、 N次元べ クトル Vの全成分を取り出すように、 Vの先頭の成分から順に、 NZm 個、 あるいは (NZm) + 1個の成分を取り出して、 部分質問ベクトル を作成する請求項 1 0又は 1 1記載の類似べクトル検索方法。
1 3. 前記類似ベクトル検索の第 1のステップにおいて、 前記部分 質問べクトル q bと対応する部分べクトル V bとの内積の下限値である 部分内積下限値 f bを、指定された内積下限値ひから、 f b=a I Qb I 2 /∑ ( I qb I 2) によって算定する請求項 1 1記載の類似べクトル検索 方法。
14. 前記類似ベクトル検索の第 1のステップにおいて、 前記部分 質問べクトル Q bと対応する部分べクトル vbとの二乗距離の上限値で ある部分二乗距離上限値 f bを、 指定された距離下上限値ひから、 f b = α2 I Qb I 2Z∑ ( I qb I 2) によって算定する請求項 1 1記載の類似 べクトル検索方法。
1 5. 少なくとも N次元実ベクトルと、 その識別番号とを含む組を べクトルデータとして有限個登録したべクトルデータベースに対して、 機械検索可能な索引を作成する装置であって、
前記べクトルデ一夕ベース中の各べクトルデータの N次元実べクトル Vに対して、 N個の成分を予め定めた方法で m組に分けて、 m個の部分 べクトル ェ〜 を作成する部分べク トル算定手段と、
前記作成された m個の部分べクトル V i〜 vmのうち、 部分べクトル V k (k= l〜m) のノルムの分布を集計して、 予め定められた D種のノ ルム区分のノルムの範囲を定めたノルム区分表を作成するノルム分布集 計手段と、
予め定めた D個の領域中心べクトル p 〜 。に従って、 前記部分べク トル vkの所属する領域番号 dを算定する領域番号算定手段と、
前記部分べク トル v kと領域中心べク トル p dとのなす角の余弦 (V k ' Pd) Z ( | vk | * | pd | ) の分布を偏角分布として集計して、 予 め定めた C種の偏角区分の偏角の範囲を記録した偏角区分表を作成する 偏角分布集計手段と、
前記部分べク トル算定手段が作成した m個の部分べク トル V i〜 vm のうち、 部分空間番号 bに対する部分ベクトル vb (b= l〜m) に対 して、 前記ノルム区分表を参照して前記各部分べク トル vbのノルムが 所属するノルム区分の番号 rを算定するノルム区分番号算定手段と、 前記部分べク トル vbと前記領域番号算定手段が算定した領域番号 d の領域の中心方向を表す領域中心べク トル p dとのなす角の余弦である 偏角 (vb · pd) / ( I vb I * I pd I ) を算定して、 前記偏角区分表 を参照して、 所属する偏角区分の番号 cを算出する偏角区分番号算定手 段と、
前記部分空間番号 と、 前記領域番号 と、 前記偏角区分番号 cと、 前記ノルム区分番号 rと、 前記部分ベク トル vbの成分と、 識別番号 i とから、 べクトル索引に登録する索引登録データを算定する索引データ 算定手段と、
前記ノルム区分表と、前記偏角区分表と、前記索引登録データとから、 各部分ベクトルの識別番号と成分とを、 部分空間番号 b、 領域番号 d、 偏角区分番号 c、 ノルム区分番号範囲 [ r^ , r 2] の組を鍵にして、 検 索可能で、 かつ各ベク トルデータのベクトルの成分を、 その識別番号で 検索可能なべク トル索引として構成する索引構成手段とを備えたことを 特徴とするべク トル索引作成装置。
1 6. 少なくとも N次元実ベクトルと、 その識別番号とを含む組を べクトルデータとして有限個登録したべクトルデータベースに对して、 機械検索可能な索引を作成する装置であって、
前記べクトルデータベース中の各べクトルデータの N次元実べクトル Vに対して、 N個の成分を予め定めた方法で m組に分けて、 m個の部分 べクトル V 〜 vmを作成する部分べクトル算定手段と、
前記作成された m個の部分べクトル V l〜vmのうち、 部分空間番号 b に対する部分ベクトル vb (b= l〜m) のノルムの分布を集計して、 予め定められた D種のノルム区分のノルムの範囲を定めたノルム区分表 を作成するノルム分布集計手段と、
予め定めた D個の領域中心べクトル p 〜 !^に従って、 前記部分べク トル vbの所属する領域番号 dを算定する領域番号算定手段と、
前記部分べク トル vbと領域中心べク トル p dとのなす角の余弦 (V b - pd) / ( | vb | * | P d | ) の分布を偏角分布として集計して、 予 め定めた C種の偏角区分の偏角の範囲を記録した偏角区分表を作成する 偏角分布集計手段と、
前記部分べク トル算定手段が作成した m個の部分べク トル V i〜 v m のうち、 部分空間 bに対する部分べクトル vb (b= l〜m) に対して、 前記ノルム区分表を参照して前記各部分べク トル V bのノルムが所属す るノルム区分の番号 rを算定するノルム区分番号算定手段と、
前記部分べク トル vbと前記領域番号算定手段が算定した領域番号 d の領域の中心方向を表す領域中心べクトル P dとのなす角の余弦である 偏角 (vb ' pd) ノ ( | vb | * | pd | ) を算定して、 前記偏角区分表 を参照して、 所属する偏角区分の番号 cを算出する偏角区分番号算定手 段と、
前記算定したノルム区分番号 rに対応するノルム区分のノルムの最高 値から、 前記算定した部分ベクトル vbの各成分 vb jに対して、 vb jが 所属する予め定めた範囲の成分区分番号 Wjを算定する成分区分番号算 定手段と、
前記部分空間番号 bと、 前記領域番号 dと、 前記偏角区分番号 cと、 前記ノルム区分番号 rと、 前記成分区分番号 Wjの列と、 識別番号 iと から、 ベ トル索引に登録する索引登録データを算定する索引データ算 定手段と、 . 前記ノルム区分表と、前記偏角区分表と、前記索引登録データとから、 各部分ベクトルの識別番号と成分とを、 部分空間番号 b、 領域番号 d、 偏角区分番号 c、 ノルム区分番号範囲 r 2] の組を鍵にして、 検 索可能で、 かつ各ベクトルデータのベクトルの成分を、 その識別番号で 検索可能なべクトル索引として構成する索引構成手段とを備えたことを 特徴とするべクトル索引作成装置。
1 7. 前記部分ベクトル算定手段が、 N次元ベクトル Vの全成分を 取り出すように、 Vの先頭の成分から順に、 NZm個、 あるいは (NZ m) + 1個の成分を取り出して、 部分ベクトルを作成する請求項 1 5又 は 1 6記載のべクトル索引作成装置。
1 8. 前記ノルム分布集計手段が、 ノルム区分表を作成する際に、 ノルム分布の集計結果をもとに、 各ノルム区分に相当するノルム範囲に 所属する部分べクトルの数が、 できる限り均一になるようにノルム区分 を定める請求項 1 5記載のべク卜ル索引作成装置。
1 9. 前記偏角分布集計手段が、 偏角区分表を作成する際に、 偏角 分布の集計結果をもとに、 各偏角区分に相当する偏角範囲に所属する部 分べクトルの数が、 できる限り均一になるように偏角区分を定める請求 項 1 5記載のべクトル索引作成装置。
20. 前記領域番号算定手段が、 部分ベクトル vbの領域番号を、 予め定めた D個の領域中心べクトル 〜 。のうち、 £113のなす角 の余弦 (vb ' pd) ( | vb | * | pd | ) がもっとも大きくなるよう な領域中心べクトル p dの番号 dとして求める請求項 1 5又は 1 6記載 のべク トル索引作成装置。
2 1. 前記索引構成手段が、 部分空間番号 b, 領域番号 d, 偏角 区分番号 c, ノルム区分番号 rを結合した番号 (b * Nd* Nc* Nr) + (d * Nc* Nr) + (c * Nr) + rを鍵とし、 べクトルの識別番号 i と 成分とを検索可能な探索木と、べクトルデータの識別番号を添字とする、 各部分べクトルの前記探索木の鍵を記録した表とを作成し、 べクトル索 引の一部とする請求項 1 5又は 1 6記載のべク トル索引作成装置。
22. 前記領域番号算定手段が、 成分が {_ 1, 0, + 1 } のう ちのいずれかである、 0ベク トルでない全てのベクトル ( 0 , …, 0, + 1 ) 〜 (_ 1 , ···, - 1 ) を正規化したベクトルを領域中心ベクトル として用いる請求項 1 5又は 1 6記載のべク トル索引作成装置。
2 3. 検索条件として N次元実ベクトルの質問ベクトル Qと、 内 積下限値 、 および最大取得ベクトル数 Lとを指定して、 少なくとも N 次元実べクトルとその I D番号との組を有限個登録したべクトルデータ から作成したべクトル索引を検索して、 前記べクトルデータベースのべ クトルデータ ( i, V) で、 前記質問べクトル Qとの内積の値 V · Qが 前記内積下限値 αより大きいものについて、 その識別番号 iと、 Qと V の内積の組 ( i, V · Q) を最大 L個求める類似ベクトルの検索装置で あって、
前記質問ベクトル Qに対して、 Qの N個の成分を、 前記ベクトル索引 の作成時に用いた方法と同一の、 予め定めた方法で m組に分けて、 m個 の部分質問べクトル Q を作成するとともに、各部分質問べクトル
Qbと対応する部分ベクトルとの内積 (この内積をこれ以降 「部分内積」 と呼ぶ) の下限値である部分内積下限値 f bを、 指定された内積下限値 (¾から算定する部分質問条件算定手段と、
前記部分質問ベクトル Q b (b= l〜m) と各領域 bに対して、 領域 中心べクトル pdと前記部分質問べクトル Q bとの内積 p d · q bの値と、 前記部分内積下限値 f bと、 前記べクトル索引中のノルム区分表および 偏角区分表とから、 部分空間番号 b、 領域番号 dにおいて検索すべき偏 角区分番号 c、 ノルム区分の範囲 [ rい r 2] の組 (c , [r 1; r 2] ) を算定する検索対象範囲生成手段と、
前記検索対象範囲生成手段が算定した (c, [r 1; r 2] ) を基に、 (b, d, c, [r !, r 2] ) を検索条件として前記ベクトル索引を範 囲検索し、 索引検索結果として、 条件を満たす部分ベクトル vbの識別 番号 iと成分とを求める索引検索手段と、
前記 vbと qbとの部分内積 vb · qbと前記部分内積下限値 f bとの差 である、 部分内積差分 (V b · Q b) — f bを算出して、 内積差分表の識 別番号 iの内積差分上限値 S [ i ]として累算 (加算) する内積差分上限 算定手段と、
前記内積差分表 S [ i ]中で値の大きいものから順に、 前記べクトル索 引を識別番号 iで検索してべクトルデ一夕の成分 Vを求め、 Vと前記質 問べクトル Qとの内積 V · Qから αを差し引いた内積差分値 t = V · Q 一 Q!を算出していき、 前記内積差分表中で、 内積差分値を算出していな い要素の最大値より大きい内積差分値を持つべクトルデータが L個以上 になった時点、 あるいは内積差分上限値が正である全てのべクトルデー 夕の内積を算出した時点で、 内積差分値の大きな最大 L個のべクトルデ 一夕に対し、 少なくとも識別番号 i と内積 t + αとの組を、 検索結果と して出力する類似検索結果決定手段とを備えたことを特徴とする類似べ クトル検索装置。
2 4 . 検索条件として Ν次元実ベクトルの質問ベクトル Qと、 距離 上限値 α、 および最大取得ベクトル数 Lとを指定して、 少なくとも Ν次 元実べクトルとその識別番号との組を有限個登録したべクトルデータか ら作成したべクトル索引を検索して、 前記質問べクトル Qとの内積の値 が前記距離上限値 α以下であるような、 前記べクトルデータ中の Ν次元 実ベクトル Vの識別番号 i と、 Qと Vの距離 pの組 ( i , p ) を最大 L 個求める類似べクトルの検索装置であって、
前記質問ベクトル Qに対して、 Qの N個の成分を、 前記ベクトル索引 の作成時に用いた方法と同一の、 予め定めた方法で m組に分けて、 m個 の部分質問べクトル Q を作成するとともに、 各部分質問べクトル
Q bと対応する部分べクトル v bとの二乗距離 I v b— q b I 2 (すなわち ユークリッド距離の二乗, この値のことをこれ以降 「部分二乗距離」 と 呼ぶ) の上限値である部分二乗距離上限値 f bを、 指定された距離上限 値ひから算定する部分質問条件算定手段と、
前記部分質問ベクトル Qb (b= l〜m) に対して、 前記部分質問べ クトル Qbと、 前記部分二乗距離上限値 f bと、 前記ベクトル索引中のノ ルム区分表および偏角区分表とから、 検索すべき部分空間番号 b、 領域 番号 d、 偏角区分番号 c、
ノルム区分の範囲 [r ^ r 2] の組 (b, d, c , [r 1 ; r 2] ) を系 統的に生成する検索対象範囲生成手段と、
前記検索対象範囲生成手段が生成した (b, d, c, [r 1 ( r 2] ) を検索条件として、 前記ベクトル索引を範囲検索して、 索引検索結果と して、 条件を満たす部分ベクトル v bの識別番号 iと成分とを求める索 引検索手段と、
前記部分二乗距離上限値 f bと、 V bと Q bとの部分二乗距離 I V b_ Q b I 2との差である、 部分二乗距離差分 f b— I v b- q b I 2を算出して、 二乗距離差分表の識別番号 iの二乗距離差分上限値 S [ i ]として累算 (加算) する二乗距離差分上限算定手段と、
前記二乗距離差分表 S [ i]中で値の大きいものから順に、 前記べクト ル索引を識別番号 iで検索してべクトルデータの成分 Vを求め、 距離上 限値の二乗ひ 2から Vと前記質問べクトル Qとの二乗距離 I V— Q I 2 を差し引いた二乗距離差分値 α2— I V-Q I 2を算出していき、 前記二 乗距離差分表中で、 二乗距離差分値を算出していない要素の最大値より 大きい二乗距離差分値を持つべクトルデータが L個以上になった時点、 あるいは二乗距離差分上限値が正である全てのべクトルデータの二乗距 離差分値を算出した時点で、 二乗距離差分値 tの大きな最大 L個のべク トルデータに対し、 少なくとも識別番号 iと距離 (a2_ t) 1/2との組 を、 検索結果として出力する類似検索結果決定手段とを備えたことを特 徴とする類似べクトル検索装置。
2 5. 前記部分質問条件算定手段が、 N次元べクトル Vの全成分を 取り出すように、 Vの先頭の成分から順に、 NZm個, あるいは (NZ m) + 1個の成分を取り出して、 部分質問ベクトルを作成する請求項 2 3又は 2 4記載の類似べクトル検索装置。
2 6. 前記部分質問べクトル Q bと対応する部分べクトル vbとの内 積の下限値である部分内積下限値 f bを、 指定された内積下限値ひから、 f b= o; I qb I 2/∑ ( I Qb I 2) によって算定する請求項 2 3記載の 類似ベクトル検索装置。
2 7. 前記部分質問べクトル Q bと対応する部分べクトル vbとの二 乗距離の上限値である部分二乗距離上限値 f bを、 指定された距離下上 限値ひから、 f b=a2 I Qb I 2Z∑ ( I qb I 2) によって算定する請 求項 24記載の類似べクトル検索装置。
2 8. 請求項 1又は 2記載の方法を実行するためのコンピュータプ ログラムを記録した記録媒体。
2 9. 請求項 1 5又は 1 6記載の装置をソフトウェアにより実現す るためのコンピュータプログラムを記録した記録媒体。
PCT/JP2000/009079 1999-12-21 2000-12-21 Creation d'un indice vectoriel, recherche de vecteurs similaires et dispositifs correspondants WO2001046858A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP00987677A EP1204032A4 (en) 1999-12-21 2000-12-21 CREATION OF A VECTORIAL INDEX, SEARCH FOR SIMILAR VECTORS AND CORRESPONDING DEVICES
US09/913,960 US7007019B2 (en) 1999-12-21 2000-12-21 Vector index preparing method, similar vector searching method, and apparatuses for the methods
AU23993/01A AU2399301A (en) 1999-12-21 2000-12-21 Vector index creating method, similar vector searching method, and devices for them

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP11/363058 1999-12-21
JP36305899 1999-12-21

Publications (1)

Publication Number Publication Date
WO2001046858A1 true WO2001046858A1 (fr) 2001-06-28

Family

ID=18478400

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2000/009079 WO2001046858A1 (fr) 1999-12-21 2000-12-21 Creation d'un indice vectoriel, recherche de vecteurs similaires et dispositifs correspondants

Country Status (4)

Country Link
US (1) US7007019B2 (ja)
EP (1) EP1204032A4 (ja)
AU (1) AU2399301A (ja)
WO (1) WO2001046858A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120630A1 (en) * 2001-12-20 2003-06-26 Daniel Tunkelang Method and system for similarity search and clustering
JP3974511B2 (ja) * 2002-12-19 2007-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報検索のためのデータ構造を生成するコンピュータ・システム、そのための方法、情報検索のためのデータ構造を生成するコンピュータ実行可能なプログラム、情報検索のためのデータ構造を生成するコンピュータ実行可能なプログラムを記憶したコンピュータ可読な記憶媒体、情報検索システム、およびグラフィカル・ユーザ・インタフェイス・システム
US7668801B1 (en) * 2003-04-21 2010-02-23 At&T Corp. Method and apparatus for optimizing queries under parametric aggregation constraints
US7693824B1 (en) * 2003-10-20 2010-04-06 Google Inc. Number-range search system and method
WO2006059295A1 (en) * 2004-12-01 2006-06-08 Koninklijke Philips Electronics, N.V. Associative content retrieval
US20070208722A1 (en) * 2006-03-02 2007-09-06 International Business Machines Corporation Apparatus and method for modification of a saved database query based on a change in the meaning of a query value over time
US8046363B2 (en) * 2006-04-13 2011-10-25 Lg Electronics Inc. System and method for clustering documents
US7644090B2 (en) 2006-06-27 2010-01-05 Nahava Inc. Method and apparatus for fast similarity-based query, self-join, and join for massive, high-dimension datasets
KR20080024712A (ko) * 2006-09-14 2008-03-19 삼성전자주식회사 사용자의 검색 히스토리를 이용한 모바일 정보 검색 방법,분류 방법 및 정보 검색 시스템
US7941442B2 (en) 2007-04-18 2011-05-10 Microsoft Corporation Object similarity search in high-dimensional vector spaces
US8417037B2 (en) * 2007-07-16 2013-04-09 Alexander Bronstein Methods and systems for representation and matching of video content
JP5333815B2 (ja) * 2008-02-19 2013-11-06 株式会社日立製作所 k最近傍検索方法、k最近傍検索プログラム及びk最近傍検索装置
US20110153677A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Apparatus and method for managing index information of high-dimensional data
CN102479191B (zh) 2010-11-22 2014-03-26 阿里巴巴集团控股有限公司 提供多粒度分词结果的方法及其装置
CN103425691B (zh) * 2012-05-22 2016-12-14 阿里巴巴集团控股有限公司 一种搜索方法和系统
US20150169644A1 (en) * 2013-01-03 2015-06-18 Google Inc. Shape-Gain Sketches for Fast Image Similarity Search
EP2887236A1 (en) * 2013-12-23 2015-06-24 D square N.V. System and method for similarity search in process data
WO2015194132A1 (ja) * 2014-06-19 2015-12-23 日本電気株式会社 情報処理装置、ベクトルデータ処理方法、及び、記録媒体
US9503747B2 (en) * 2015-01-28 2016-11-22 Intel Corporation Threshold filtering of compressed domain data using steering vector
US10255323B1 (en) 2015-08-31 2019-04-09 Google Llc Quantization-based fast inner product search
US10719509B2 (en) * 2016-10-11 2020-07-21 Google Llc Hierarchical quantization for fast inner product search
CN108091372B (zh) * 2016-11-21 2021-06-18 医渡云(北京)技术有限公司 医疗字段映射校验方法及装置
US10489468B2 (en) * 2017-08-22 2019-11-26 Facebook, Inc. Similarity search using progressive inner products and bounds
US10616338B1 (en) 2017-09-25 2020-04-07 Amazon Technologies, Inc. Partitioning data according to relative differences indicated by a cover tree
CN108733780B (zh) * 2018-05-07 2020-06-23 浙江大华技术股份有限公司 一种图片搜索方法及装置
US11392596B2 (en) 2018-05-14 2022-07-19 Google Llc Efficient inner product operations
US11775589B2 (en) * 2019-08-26 2023-10-03 Google Llc Systems and methods for weighted quantization
CN116523473B (zh) * 2023-06-29 2023-08-25 湖南省拾牛网络科技有限公司 基于相似企业的项目匹配方法、装置、设备及介质
CN116610848B (zh) * 2023-07-17 2023-10-20 上海爱可生信息技术股份有限公司 基于npu优化的向量数据库检索方法及可读存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3689796T2 (de) * 1985-01-16 1994-08-04 Mitsubishi Electric Corp Videokodierungsvorrichtung.
US5647058A (en) * 1993-05-24 1997-07-08 International Business Machines Corporation Method for high-dimensionality indexing in a multi-media database
US5706497A (en) * 1994-08-15 1998-01-06 Nec Research Institute, Inc. Document retrieval using fuzzy-logic inference
US5819288A (en) * 1996-10-16 1998-10-06 Microsoft Corporation Statistically based image group descriptor particularly suited for use in an image classification and retrieval system
US5987446A (en) * 1996-11-12 1999-11-16 U.S. West, Inc. Searching large collections of text using multiple search engines concurrently
JP4194680B2 (ja) * 1998-01-30 2008-12-10 康 清木 データ処理装置及びその方法、及びそのプログラムを記憶した記憶媒体
US6574632B2 (en) * 1998-11-18 2003-06-03 Harris Corporation Multiple engine information retrieval and visualization system
US6404925B1 (en) * 1999-03-11 2002-06-11 Fuji Xerox Co., Ltd. Methods and apparatuses for segmenting an audio-visual recording using image similarity searching and audio speaker recognition

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
BERCHTOLD S. ET AL.: "The pyramid-technique: Towards breaking the curse of dimensionality", PROCEEDINGS OF ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA, 1 June 1998 (1998-06-01), SEATTLE, WA, USA, pages 142 - 153, XP002936565 *
BRIN S.: "Near neighbor search in large metric spaces", PROCEEDINGS OF THE 21ST INTERNATIONAL CONFERENCE ON VERY LARGE DATA BASES, 11 September 1995 (1995-09-11), ZURICH, SWITZERLAND, pages 574 - 584, XP002936564 *
KATAYAMA N. & SATOH S.: "The SR-tree: An index structure for high-dimensional nearest neighbor queries", PROCEEDINGS OF THE ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA, 11 May 1997 (1997-05-11), TUCSON, AZ, USA, pages 369 - 380, XP002936563 *
LEE J.Y. ET AL.: "A fast retrieval method for image features", TENCON 99. PROCEEDINGS OF THE IEEE REGION 10 CONFERENCE, vol. 1, 15 September 1999 (1999-09-15), pages 577 - 580, XP002936560 *
NENE S.A. & NAYAR S.K.: "A simple algorithm for nearest neighbor search in high dimensions", IEEE TRANSACTIONS ON PATTERN ANALYSIS AND INTELLIGENCE, vol. 19, no. 9, September 1997 (1997-09-01), pages 989 - 1003, XP002936561 *
See also references of EP1204032A4 *
WASHIZAWA: "k-Nearest neighbor tansaku no kousoku keisan algorithm", GAZOU DENSHI GAKKAISHI, vol. 27, no. 5, 25 October 1998 (1998-10-25), JAPAN, pages 513 - 520, XP002936562 *

Also Published As

Publication number Publication date
US7007019B2 (en) 2006-02-28
AU2399301A (en) 2001-07-03
US20020178158A1 (en) 2002-11-28
EP1204032A1 (en) 2002-05-08
EP1204032A4 (en) 2008-06-11

Similar Documents

Publication Publication Date Title
WO2001046858A1 (fr) Creation d&#39;un indice vectoriel, recherche de vecteurs similaires et dispositifs correspondants
Jégou et al. On the burstiness of visual elements
US7725484B2 (en) Scalable object recognition using hierarchical quantization with a vocabulary tree
WO2008154029A1 (en) Data classification and hierarchical clustering
CN102693299A (zh) 一种并行视频拷贝检测系统和方法
CN104679887B (zh) 基于emd距离的大规模图像数据相似性搜索方法
US20120084305A1 (en) Compiling method, compiling apparatus, and compiling program of image database used for object recognition
JPWO2013129580A1 (ja) 近似最近傍探索装置、近似最近傍探索方法およびそのプログラム
CN106844481B (zh) 字体相似度及字体替换方法
CN111177435A (zh) 一种基于改进pq算法的cbir方法
CN110083731B (zh) 图像检索方法、装置、计算机设备及存储介质
Takahashi et al. Mixture of subspaces image representation and compact coding for large-scale image retrieval
Costache et al. Categorization based relevance feedback search engine for earth observation images repositories
JP5833499B2 (ja) 高次元の特徴ベクトル集合で表現されるコンテンツを高精度で検索する検索装置及びプログラム
CN114610941A (zh) 基于对比学习的文物图像检索系统
Wei et al. Visual language model for keyword spotting on historical Mongolian document images
Kalantidis et al. Loh and behold: Web-scale visual search, recommendation and clustering using locally optimized hashing
Cen et al. An improved algorithm for locality-sensitive hashing
CN114595350B (zh) 一种百亿级图像快速搜索的方法
Dhumal et al. Retrieval and extraction of unique patterns from compressed text data using the SVD technique on Hadoop Apache MAHOUT framework
Belarbi et al. Web-based multimedia research and indexation for big data databases
Orhei et al. Urban landmark detection using A-KAZE features and vector of aggregated local descriptors
He et al. Clustering-based descriptors for fingerprint indexing and fast retrieval
Reddy et al. Sparse coding based VLAD for efficient image retrieval
Kim et al. Distance approximation techniques to reduce the dimensionality for multimedia databases

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

ENP Entry into the national phase

Ref country code: JP

Ref document number: 2001 547305

Kind code of ref document: A

Format of ref document f/p: F

WWE Wipo information: entry into national phase

Ref document number: 2000987677

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 09913960

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 2000987677

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 2000987677

Country of ref document: EP