(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-21
(45)【発行日】2022-11-30
(54)【発明の名称】データ抽出装置、データ抽出方法、及びプログラム
(51)【国際特許分類】
G06F 16/28 20190101AFI20221122BHJP
G06F 16/903 20190101ALI20221122BHJP
【FI】
G06F16/28
G06F16/903
(21)【出願番号】P 2018117196
(22)【出願日】2018-06-20
【審査請求日】2020-09-15
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100154852
【氏名又は名称】酒井 太一
(74)【代理人】
【識別番号】100181124
【氏名又は名称】沖田 壮男
(74)【代理人】
【識別番号】100194087
【氏名又は名称】渡辺 伸一
(72)【発明者】
【氏名】富樫 陸
(72)【発明者】
【氏名】田口 拓明
(72)【発明者】
【氏名】奈良 寧々花
(72)【発明者】
【氏名】和田 悠佑
【審査官】松尾 真人
(56)【参考文献】
【文献】特開2014-149713(JP,A)
【文献】特開2005-301701(JP,A)
【文献】特開2009-199151(JP,A)
【文献】特開2014-048916(JP,A)
【文献】岩崎 雅二郎,商品画像検索へのグラフ構造型インデックスの適用,画像電子学会誌,一般社団法人画像電子学会,2013年12月31日,第42巻 第5号,pp.633~641
【文献】江田 孝治,DCT符号を用いた知覚ハッシュの検討,電気学会論文誌C,一般社団法人電気学会,2017年10月01日,第137巻 第10号,pp.1433~1434
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
入力データを、距離を定義することが可能であり且つ距離の公理を満たす符号に変換する変換部と、
前記符号を照合可能なデータ構造である空間インデックスを用いて、着目データから変換された符号に空間的に近い符号を抽出し、前記抽出した符号の変換元のデータを、前記着目データに類似するデータとして抽出する抽出部と、
を備え、
前記空間インデックスは、階層構造を有し、各階層において近傍関係にある要素がグループ化されていると共に、前記階層構造における上位の階層のラベルを参照することで、前記符号の属するグループが認識可能なデータ構造であり、
前記抽出部は、指定された数の符号が前記着目データから変換された符号の属する階層に存在しない場合、更に、前記着目データから変換された符号の上位階層に属する符号から、前記着目データから変換された符号に空間的に近い符号を抽出
し、
前記上位階層に属する符号から前記着目データから変換された符号に空間的に近い符号を抽出する際に、前記着目データから変換された符号の属する階層における前記符号の抽出範囲を変更しない、
データ抽出装置。
【請求項2】
前記変換部は、前記着目データのpHashを前記符号として算出する、
請求項1に記載のデータ抽出装置。
【請求項3】
前記空間インデックスには、近似k最近傍グラフが含まれ、
前記符号は、前記近似k最近傍グラフにおける頂点である、
請求項1または2に記載のデータ抽出装置。
【請求項4】
コンピュータが、
入力データを、距離を定義することが可能であり且つ距離の公理を満たす符号に変換し、
前記符号を照合可能なデータ構造である空間インデックスを用いて、着目データから変換された符号に空間的に近い符号を抽出し、
前記抽出した符号の変換元のデータを、前記着目データに類似するデータとして抽出し、
前記空間インデックスは、階層構造を有し、各階層において近傍関係にある要素がグループ化されていると共に、前記階層構造における上位の階層のラベルを参照することで、前記符号の属するグループが認識可能なデータ構造であり、
前記抽出する際に、指定された数の符号が前記着目データから変換された符号の属する階層に存在しない場合、更に、前記着目データから変換された符号の上位階層に属する符号から、前記着目データから変換された符号に空間的に近い符号を抽出し、
前記上位階層に属する符号から前記着目データから変換された符号に空間的に近い符号を抽出する際に、前記着目データから変換された符号の属する階層における前記符号の抽出範囲を変更しない、
データ抽出方法。
【請求項5】
コンピュータに、
入力データを、距離を定義することが可能であり且つ距離の公理を満たす符号に変換させ、
前記符号を照合可能なデータ構造である空間インデックスを用いて、着目データから変換された符号に空間的に近い符号を抽出させ、
前記抽出した符号の変換元のデータを、前記着目データに類似するデータとして抽出させ、
前記空間インデックスは、階層構造を有し、各階層において近傍関係にある要素がグループ化されていると共に、前記階層構造における上位の階層のラベルを参照することで、前記符号の属するグループが認識可能なデータ構造であり、
前記コンピュータに、前記抽出させる際に、指定された数の符号が前記着目データから変換された符号の属する階層に存在しない場合、更に、前記着目データから変換された符号の上位階層に属する符号から、前記着目データから変換された符号に空間的に近い符号を抽出させ、
前記上位階層に属する符号から前記着目データから変換された符号に空間的に近い符号を抽出する際に、前記着目データから変換された符号の属する階層における前記符号の抽出範囲を変更させない、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ抽出装置、データ抽出方法、及びプログラムに関する。
【背景技術】
【0002】
近年、EC(electronic commerce)サイトの一般化に伴い、ユーザによる商品の出品行為が浸透しつつある。出品者であるユーザは、自身が出品する商品の写真やネットワークを介して取得された当該商品の販促写真を用いてECサイトに出品し、購入者であるユーザは、出品された商品の写真を確認して購入する。これに関連し、ECサイトにおいてある商品の画像を元に、類似する商品を検索する技術が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ECサイトにおいて、商品の紹介画面には販促写真などの画像が提示される。出品者の立場では、他の出品者が出品している商品の画像と同じまたは類似する画像を提示したくない。また、ECサイトの運営者の立場でも、販売促進やECサイトの魅力維持の観点から、種々の出品者が同じ画像を使用して出品することは避けたいといった事情がある。例えば、類似画像の重複選択を避ければ、そのような事態も回避できるため、類似画像を抽出するニーズは高い。
【0005】
しかしながら、上記特許文献1では、画像に対応付けられたクエリに基づいて類似する画像を特定することができても、クエリが対応付けられていない画像に類似する画像を特定することまでは困難である。また、画像のみを処理対象として、類似する画像を抽出する場合、処理負荷が膨大になる場合があった。
【0006】
本発明は、このような事情を考慮してなされたものであり、より効率よく類似データを抽出することができるデータ抽出装置、データ抽出方法、及びプログラムを提供することを目的の一つとする。
【課題を解決するための手段】
【0007】
本発明の一態様は、入力データを、距離を定義することが可能であり且つ距離の公理を満たす符号に変換する変換部と、前記符号を照合可能なデータ構造である空間インデックスを用いて、着目データから変換された符号に空間的に近い符号を抽出し、前記抽出した符号の変換元のデータを、前記着目データに類似するデータとして抽出する抽出部と、を備えるデータ抽出装置である。
【発明の効果】
【0008】
本発明の一態様によれば、より効率よく類似データを抽出することができる。
【図面の簡単な説明】
【0009】
【
図1】実施形態に係るデータ抽出装置100を利用したデータ抽出システム1の構成の一例を示す図である。
【
図2】ハッシュ算出部124によるpHashの算出手法を概念的に示す図である。
【
図3】近似k最近傍グラフGによる類似画像グループの生成処理の一例を示すフローチャートである。
【
図4】近似k最近傍検索処理の一例を示すフローチャートである。
【
図5】最近傍ノード特定処理の一例を示すフローチャートである。
【
図6】追加ノードqの近傍探索処理の一例を示すフローチャートである。
【
図7】近似k最近傍グラフGを模式的に示す図である。
【
図8】dvp-Treeの生成処理の一例を示すフローチャートである。
【
図9】リーフノードラベルndLの分割処理の一例を示すフローチャートである。
【
図10】分割球によって分割された近似k最近傍グラフGの一例を示す図である。
【
図11】近似k最近傍グラフGに対応付けられたdvp-Treeの一例を示す図である。
【
図12】空間インデックスを用いた類似画像グループの検索処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、図面を参照し、本発明のデータ抽出装置、データ抽出方法、及びプログラムの実施形態について説明する。
【0011】
データ抽出装置は、一以上のプロセッサにより実現される。データ抽出装置は、入力データを、距離を定義することが可能であり且つ距離の公理を満たす符号に変換する。また、データ抽出装置は、符号を照合可能なデータ構造である空間インデックスを用いて、着目データから変換された符号に空間的に近い符号を抽出し、抽出した符号の変換元のデータを、着目データに類似するデータとして抽出する。
【0012】
対象データは、例えば画像データである(以下、単に画像と称する)。この場合、データ抽出装置は、例えば、画像に基づいてpHash(perception Hashing)を求める(変換することの一例)。空間インデックスは、pHashの位置が照合可能な下位階層のデータ構造と、これに対して上位階層に展開されるデータ構造とを含む階層構造のデータ構造である。下位階層のデータ構造は、例えば、ANNG(Approximate k-Nearest Neighbor Graph)で表現される。上位階層に展開されるデータ構造は、下位階層のデータ構造におけるノードをリーフとして、ノードラベルが上位階層に展開される木構造型インデックス(例えば、dvp-Tree(dynamic vantage point Tree)である。データ抽出装置は、着目画像(着目データの一例)から算出されたpHashに空間的に近いpHashを空間インデックスから抽出する。そして、抽出したpHashの変換元の画像を、着目画像に類似する画像として抽出する。
【0013】
[実施形態]
図1は、実施形態に係るデータ抽出装置100の構成および使用環境の一例を示す図である。データ抽出システム1には、例えば、データ抽出装置100と、一以上の端末装置200と、サービスサーバ300とが含まれる。
【0014】
これらの装置等は、ネットワークNWを介して互いに通信する。ネットワークNWは、例えば、WAN(Wide Area Network)やLAN(Local Area Network)、インターネット、専用回線、無線基地局、プロバイダなどを含む。
【0015】
端末装置200は、例えば、スマートフォンなどの携帯電話、タブレット端末、各種パーソナルコンピュータなどの、入力装置、表示装置、通信装置、記憶装置、および演算装置を備える端末装置である。通信装置は、NIC(Network Interface Card)などのネットワークカード、無線通信モジュールなどを含む。端末装置200では、ウェブブラウザやアプリケーションプログラムなどのUA(User Agent)が起動し、ユーザの入力に応じたリクエストを端末装置200に送信する。また、UAが起動された端末装置200は、サービスサーバ300から取得した情報に基づいて、表示装置に各種画像を表示させる。
【0016】
サービスサーバ300は、例えば、UAとして起動されたウェブブラウザからのリクエストに応じてウェブページを端末装置200に提供するウェブサーバである。ウェブページは、例えば、インターネット上において商品を販売するショッピングサイトやオークションサイト、フリーマーケットサイト等の電子商取引に関するウェブサイトを構成する。また、サービスサーバ300は、UAとして起動されたアプリケーションからのリクエストに応じてコンテンツを端末装置200に提供することで、ウェブサーバと同様のサービスを提供するアプリケーションサーバであってもよい。
【0017】
端末装置200のユーザは、サービスサーバ300によって提供されるウェブページを用いて、商品またはサービスの販売や購入等を行う。サービスサーバ300によって提供されるウェブページを用いて商品の販売を行う場合、ユーザ(出品者)は、例えば、販売する商品に関する情報と、当該商品を示す画像とをネットワークNWを介してサービスサーバ300に送信する。
【0018】
サービスサーバ300は、端末装置200によって送信された商品に関する情報と、当該商品を示す画像とを対応付けて、データベース310に保存する。サービスサーバ300は、データベース310に保存された情報に基づいて、ショッピングサイトやオークションサイト、フリーマーケットサイト等のウェブサイトを構成するウェブページを生成する。なお、データベース310を格納する記憶装置は、サービスサーバ300に付随するものであってもよく、サービスサーバ300と別体であり、サービスサーバ300とネットワークNWによって通信可能な記憶装置であってもよい。
【0019】
ウェブサイトにおいて、商品の紹介画面には販促写真などの画像が提示される。出品者の立場では、他の出品者が出品している商品の画像と同じまたは類似する画像を提示したくない。また、ウェブサイトの運営者の立場でも、販売促進やウェブサイトの魅力維持の観点から、種々の出品者が同じ画像を使用して出品することは避けたい。例えば、類似画像の重複選択を避ければ、そのような事態も回避できため、類似画像を抽出するニーズは高い。しかながら、データベース310に保存されている画像を1つ1つ確認し、類似する画像を削除する処理には、膨大な手間が生じる。データ抽出装置100は、画像の集合の中から、類似した画像を抽出する負荷を低減する処理を行う。
【0020】
[データ抽出装置100の構成について]
データ抽出装置100は、例えば、通信部110と、制御部120と、記憶部130とを備える。通信部110は、NICなどのネットワークカード、無線通信モジュールなどを含む。
【0021】
制御部120は、例えば、取得部122と、ハッシュ算出部124と、抽出部126と、出力部128とを備える。制御部120は、例えば、CPU等のハードウェアプロセッサが、記憶部130に記憶されたプログラムを実行することにより実現される。また、これらの機能部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)等のハードウェア(回路部;circuitry)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。また、上記のプログラムは、予め記憶部130に格納されていてもよいし、DVDやCD-ROMなどの着脱可能な記憶媒体に格納されており、記憶媒体がデータ抽出装置100のドライブ装置に装着されることで記憶部130にインストールされてもよい。
【0022】
記憶部130は、例えば、ROM(Read Only Memory)、フラッシュメモリ、SDカード、RAM(Random Access Memory)等によって実現される。記憶部130には、例えば、空間インデックス情報132が記憶されている。空間インデックス情報132の詳細については、後述する。
【0023】
取得部122は、通信部110を介して、類似する画像を抽出する対象の画像(着目画像)を取得する。着目画像は、例えば、直近の所定期間(例えば、数日程度)に新たにデータベース310に追加された一以上の画像である。
【0024】
ハッシュ算出部124は、取得部122によって取得された着目画像に基づいて、着目画像のpHashを算出する。pHashは、「距離を定義することが可能であり且つ距離の公理を満たす符号」の一例である。
【0025】
図2は、ハッシュ算出部124によるpHashの算出手法を概念的に示す図である。
図2に示す一例において、ハッシュ算出部124は、取得部122によって取得されたスマートフォンを示す画像を、所定の大きさの画像(図示する加工画像pp1)に縮小している。所定の大きさとは、例えば、縦が8×n画素であり、横が9×m画素の画像である。nと、mとは、それぞれ自然数である。縮小の手法に関しては種々の手法が知られており、説明を省略する。次に、ハッシュ算出部124は、加工画像pp1を、グレースケールの画像(図示する加工画像pp2)に加工する。
【0026】
次に、ハッシュ算出部124は、加工画像pp2を72個(つまり、縦8分割、横9分割)の領域に分割し、各領域を離散コサイン変換(Discrete Cosine Transform)することにより、各領域の疎密度合いを周波数で表した値を各領域(画素)に対応付けた画像(図示する加工画像pp3)に加工する。次に、ハッシュ算出部124は、算出された各領域の周波数に基づいて、着目領域の周波数と、着目領域の右側に隣接する領域の周波数を比較し、比較結果に基づいて「0」、又は「1」を着目領域に対応付ける処理を、72個の領域毎に行う。
【0027】
次に、ハッシュ算出部124は、着目領域の周波数が、着目領域の右側に隣接する領域の周波数よりも高い場合(つまり、着目領域の方が画素の変化が大きい領域である場合)、比較対象の領域に「1」(黒色)を付し、その逆である場合(つまり、着目領域の方が画素の変化が小さい領域である場合)、比較対象の領域に「0」(白色)を付した画像(図示する加工画像pp4)を生成する。そして、ハッシュ算出部124は、加工画像pp4のうち、最も左側に位置する8つの領域を除いた64個(つまり、縦8個、横8個)の領域の左上の領域から、ビッグエンディアンの順序で、「0」または「1」のデータが並べられた64[bit]のデータをpHashとして算出する。
【0028】
なお、ハッシュ算出部124は、pHashに代えて、dHash(difference Hashing)値を算出してもよい。dHash値は、「距離を定義することが可能であり且つ距離の公理を満たす符号」の他の一例である。この他にも、上記の性質を有するものであれば、如何なる符号を生成してもよい。
【0029】
図1に戻り、抽出部126は、ハッシュ算出部124によって算出された着目画像のpHashと、空間インデックス情報132とに基づいて、着目画像と類似する画像の集合(以下、類似画像グループ)を抽出する。
【0030】
空間インデックス情報132は、例えば、pHashの位置が照合可能な下位階層のデータ構造と、これに対して上位階層に展開されるデータ構造とを含む階層構造のデータ構造である。下位階層のデータ構造は、例えば、pHashをノードとして有し、ハミング距離などの距離が近い順に第k位までのノードを結んだ近似k最近傍グラフG(Approximate k-Nearest Neighbor Graph;ANNG)で表現される。kの値(以下、k値)は、自然数であり、所定の値(例えば、3)が予め定められる。上位階層に展開されるデータ構造は、下位階層のデータ構造におけるノードの各近傍集合をリーフとして、ノードラベルが上位階層に展開される木構造型インデックス(例えば、dvp-Tree(dynamic vantage point Tree)である。
【0031】
[近似k最近傍グラフGについて]
一般に、ユーグリッド空間において、グラフが以下の条件1を満たす場合、エッジで結合された近傍ノードを検索する(局所検索する)ことによって最近傍検索が可能であるとされている。
【0032】
条件1:
グラフZのノード(以下、ノードY)と、グラフZにおけるノードYの近傍ノードの集合(以下、集合W(Z,Y))に属する任意のノードXと、検索対象のノード(以下、
ノードV)との間において、「ノードVとノードYとの間の距離」<「ノードVとノードXとの間の距離」が成り立つならば、グラフZに属する任意のノードXに対して「ノードVとノードYとの間の距離」<「ノードVとノードXとの間の距離」が成り立つ。
【0033】
ここで、pHashは、算出方法の特性上、サイズの違い画像や色調が加工された画像等、全く同一の画像ではない場合であっても、同一の値になる場合がある。このため、pHashをノードとするグラフは、条件1が成立しない。したがって、pHashをノードとするグラフであり、k最近傍グラフと同様の生成方法によって生成されたグラフは、k最近傍グラフに近似するグラフ(つまり、近似k最近傍グラフG)である。近似k最近傍グラフGの生成処理と、近似k最近傍グラフGに対応付けられたdvp-Treeの生成処理とについては、後述する。
【0034】
抽出部126は、例えば、ハッシュ算出部124によって算出されたpHashに基づいて、着目画像として取得部122によって取得された複数の画像の中から、当該複数の着目画像同士で類似する画像を、類似画像グループとして抽出する(以下、抽出態様(1))。抽出部126が抽出態様(1)によって類似画像グループを抽出する場合に用いられる空間インデックス情報132は、例えば、新たにデータベース310に追加された複数の着目画像に基づいて生成されたものである。抽出部126は、生成された空間インデックスの同じリーフに追加されたノードの画像を類似画像として抽出する。抽出態様(1)において、着目画像は、「入力データ」、及び「着目データ」の一例である。
【0035】
抽出部126は、例えば、ハッシュ算出部124によって算出されたpHashに基づいて、データベース310に追加されている画像の中から、着目画像として取得部122によって取得された画像と類似する画像を、類似画像グループとして抽出してもよい(以下、抽出態様(2))。抽出部126が抽出態様(2)によって類似画像グループを抽出する場合に用いられる空間インデックス情報132は、例えば、既にデータベース310に追加(後述)されている画像に基づいて生成されたものである。抽出部126は、生成された空間インデックスを用いて着目画像の画像の類似画像グループを検索する。抽出部126による空間インデックスを用いた類似画像グループの検索処理については、後述する。抽出態様(2)において、データベース310に追加されている画像は、「入力データ」の一例であり、着目画像は、「着目データ」の一例である。
【0036】
出力部128は、例えば、ネットワークNWを介して、類似画像グループに含まれる画像を、サービスサーバ300によって提供されるウェブページの管理者が使用する端末装置(不図示)に送信する。ウェブページの管理者は、データ抽出装置100によって出力された類似画像グループを確認し、着目画像の画像に含まれる重複画像を確認(削除)することができ、データベース310に重複画像が登録されることを抑制することができる。
【0037】
以下、pHashをノードとする近似k最近傍グラフGの生成処理と、生成された近似k最近傍グラフGによって示される近傍集合(つまり、類似画像グループに含まれる画像のpHashの集合)をリーフとする空間インデックスの生成処理と、生成されたdvp-Treeによって類似画像グループを検索する検索処理との詳細について説明する。
【0038】
[pHashをノードとする近似k最近傍グラフGの生成処理について]
図3は、近似k最近傍グラフGの生成処理の流れの一例を示すフローチャートである。
図3に示される処理は、データ抽出装置100によって行われてもよく、サービスサーバ300によって行われてもよく、他の装置によって行われてもよい。以下では、
図3に示される処理を、データ抽出装置100の制御部120が備える空間インデックス生成部(不図示)が実行し、生成した空間インデックス情報132を記憶部130に記憶させるものとする。
【0039】
なお、以降の説明において、pHashに対応するノードであり、近似k最近傍グラフGに順次追加されるノードを追加ノードqと称し、追加ノードqの集合を追加ノード集合Qと称す。追加ノードqは、抽出態様(1)の場合、着目画像のpHashであり、追加ノード集合Qは、複数の着目画像のそれぞれに対応するpHashに対応するノードの集合である。また、追加ノードqは、抽出態様(2)の場合、既にデータベース310に追加されている画像のpHashであり、追加ノード集合Qは、既にデータベース310に追加されている画像のそれぞれに対応するpHashに対応するノードの集合である。また、追加ノードqには、追加ノードqの元となる着目画像、又は既にデータベース310に追加されている画像を識別可能な情報(以下、ノードID)が対応付けられる。
【0040】
まず、空間インデックス生成部は、追加ノード集合Qに属する追加ノードqの中から、任意の追加ノードqを選択する(ステップS100)。次に、空間インデックス生成部は、近似k最近傍グラフGが空集合であるか否かを判定する(ステップS102)。近似k最近傍グラフGが空集合であると判定した場合、空間インデックス生成部は、追加ノードqを近似k最近傍グラフGのノードとして追加し(ステップS104)、処理をステップS116に進める。ここで、近似k最近傍グラフGが空集合である場合は、追加ノード集合Qに属する追加ノードqに対して、1つも処理が行われていない(つまり、初期状態の)場合である。
【0041】
近似k最近傍グラフGが空集合ではないと判定した場合、空間インデックス生成部は、近似k最近傍グラフGと、追加ノードqと、k値とに基づいて、近似k最近傍検索処理を実行する(ステップS106)。近似k最近傍検索処理の詳細については、後述する。空間インデックス生成部は、近似k最近傍検索処理によって、(A)近似k最近傍グラフGに属するノードの中から、追加ノードqからハミング距離が近い順に第k位までのノードを検索した検索結果の集合(以下、結果集合R)と、(B)当該結果集合Rに属するノードの中から、最も遠いノードまでの距離(以下、検索半径r)と、(C)結果集合Rに属するノードのノードIDとを取得する。
【0042】
次に、空間インデックス生成部は、近似k最近傍グラフGに追加ノードqを追加したグラフを近似k最近傍グラフGとして再定義(更新)する(ステップS108)。次に、空間インデックス生成部は、結果集合Rに属するノードを、追加ノードqの近傍集合(以下、追加ノード近傍集合Nq)に属するノードとして定義する(ステップS110)。次に、空間インデックス生成部は、結果集合Rに属するノード(結果ノードp)の中から、ある結果ノードpを選択し、当該結果ノードpの近傍ノード集合(以下、結果ノード近傍集合Np)に追加ノードqを追加した集合を、結果ノード近傍集合Npとして再定義(更新)する(ステップS112)。このステップS108、及びステップS112の処理により、近似k最近傍グラフGうち、近傍に存在するノード同士は、無向エッジにより互いに対応付けられる。
【0043】
次に、空間インデックス生成部は、結果集合Rに属するすべての結果ノードpに対してステップS112の処理が行われたか否かを判定する(ステップS114)。結果集合Rに属するすべての結果ノードpに対してステップS112の処理が行われていないと判定される場合、空間インデックス生成部は、結果集合Rに属する結果ノードpの中から、結果ノード近傍集合Npに追加ノードqが追加されていない結果ノードpを選択し(ステップS115)、処理をステップS112に進める。ステップS112~S115の処理を繰り返すことにより、結果ノード近傍集合Npは、1ノードずつ追加ノードqを追加することができる。次に、空間インデックス生成部は、結果集合Rに属するすべての結果ノードpに対してステップS112の処理が行われた場合、処理をステップS116に進める。
【0044】
空間インデックス生成部は、追加ノード集合Qに属するすべての追加ノードqに対して、ステップS102~S115の処理が行われたか否かを判定する(ステップS116)。空間インデックス生成部は、追加ノード集合Qに属するすべての追加ノードqに対してステップS102~S115の処理が行われていない場合、追加ノード集合Qの中から、まだ結果集合Rが取得されていない追加ノードqを選択し(ステップS118)、処理をステップS102に進める。空間インデックス生成部は、追加ノード集合Qに属するすべての追加ノードqに対して、ステップS102~S115の処理が行われた場合、処理を終了する。
【0045】
上述した処理により、複数の着目画像の画像、或いは既にデータベース310に登録された画像を、近似k最近傍グラフGとして示し、ある画像を追加ノードqとする追加ノード近傍集合Nqによって当該画像の類似画像グループをクラスタリングすることができる。
【0046】
[近似k最近傍検索処理について]
図4は、近似k最近傍検索処理の流れの一例を示すフローチャートである。
図4に示されるフローチャートは、
図3に示されるステップS106の処理を詳細に示すフローチャートである。まず、空間インデックス生成部は、近似k最近傍グラフGに属する複数のノードの中から、追加ノードqの追加ノード近傍集合Nqの検索起点となる追加ノードq(以下、検索起点ノードs)をランダムに1つ決定する(ステップS202)。次に、空間インデックス生成部は、近似k最近傍グラフGと、追加ノードqと、検索起点ノードsとに基づいて、最近傍ノード特定処理を実行する(ステップS204)。最近傍ノード特定処理の詳細については、後述する。空間インデックス生成部は、最近傍ノード特定処理によって、近似k最近傍グラフGに属する複数のノードの中から、追加ノードqから最も距離が近いノードである最近傍ノードq*を特定する。
【0047】
次に、空間インデックス生成部は、追加ノードqを中心とする超球の検索半径rの初期値を、無限大に設定する(ステップS206)。超球とは、中心点から所定の距離(この一例では、検索半径r)にあるn次元ユーグリット空間における点の集合である。上述したように、pHashは、64[bit]の情報であるため、追加ノードqを中心とする超球は、64次元ユーグリット空間における範囲である。追加ノードqを中心とする検索半径rの超球によって示される範囲は、追加ノード近傍集合Nqの検索を開始する範囲である。
【0048】
次に、空間インデックス生成部は、結果集合Rと、結果集合Rの検索に用いられる検索用集合Cとの初期状態を空集合に設定する(ステップS208)。次に、空間インデックス生成部は、近似k最近傍グラフGと、追加ノードqと、最近傍ノードq*と、検索半径rと、k値と、検索用集合Cとに基づいて、追加ノードqの近傍検索処理を行い、結果集合Rを追加ノード近傍集合Nqとして取得する(ステップS210)。追加ノードqの近傍検索処理の詳細については、後述する。
【0049】
上述した処理により、空間インデックス生成部は、(A)近似k最近傍グラフGに属するノードのうち追加ノードqからハミング距離が近い順に第k位までのノードの集合(つまり、追加ノード近傍集合Nq)と、(B)追加ノード近傍集合Nqに属するノードのうち、中心ノードから最遠ノードまでの距離(つまり、検索半径r)と、(C)追加ノード近傍集合Nqに属するそれぞれのノードのノードIDとを、追加ノードq毎に取得することができる。
【0050】
[最近傍ノードq*の探索方法について]
図5は、最近傍ノード特定処理の流れの一例を示すフローチャートである。
図5に示されるフローチャートは、
図4に示されるステップS204の処理を詳細に示すフローチャートである。まず、空間インデックス生成部は、近似k最近傍グラフGに属するノードの中から、検索起点ノードsの近傍のノードの集合である検索起点ノード近傍集合Nsを抽出する(ステップS302)。次に、空間インデックス生成部は、検索起点ノード近傍集合Nsに属するノードの中から、検索起点ノードsを除くノードであり、検索起点ノードsとの距離が最も短いノードである検索起点最近傍ノードs*を特定する(ステップS304)。
【0051】
次に、空間インデックス生成部は、検索起点最近傍ノードs*と追加ノードqとの間の距離が、検索起点ノードsと追加ノードqとの間の距離よりも短いか否かを判定する(ステップS306)。空間インデックス生成部は、検索起点最近傍ノードs*と追加ノードqとの間の距離が、検索起点ノードsと追加ノードqとの間の距離よりも短い場合、検索起点最近傍ノードs*を検索起点ノードsとして再定義(更新)し(ステップS308)、処理をステップS302に進める。ステップS302~S308の処理を繰り返し実行することにより、追加ノードqまでの距離が短い検索起点ノードsを検索起点最近傍ノードs*に更新し、より追加ノードqに近い検索起点最近傍ノードs*を抽出することができる。
【0052】
次に、空間インデックス生成部は、検索起点最近傍ノードs*と追加ノードqとの間の距離が、検索起点ノードsと追加ノードqとの間の距離よりも短くない場合、現在の検索起点ノードsが追加ノードqの最近傍ノード(つまり、最近傍ノードq*)であると特定する(ステップS310)。
【0053】
上述した処理により、空間インデックス生成部は、追加ノードqの最近傍ノードを取得することができる。
【0054】
[追加ノードqの近傍検索処理について]
図6は、追加ノードqの近傍探索処理の一例を示すフローチャートである。
図6に示されるフローチャートは、
図4に示されるステップS210の処理を詳細に示すフローチャートである。まず、空間インデックス生成部は、近似k最近傍グラフGに属するノードの中から、最近傍ノードq*の近傍ノードの集合(以下、最近傍ノード近傍集合Nq*)に属する任意のノード(以下、近傍ノードqc)を選択する(ステップS402)。
【0055】
ここで、近傍ノードqcは、抽出態様(1)においては、追加ノードq(のpHash)の元データである着目画像以外の、着目画像の画像のpHashに対応するノードであり、抽出態様(2)においては、データベース310に追加されている画像のpHashに対応するノードである。
【0056】
次に、空間インデックス生成部は、検索用集合Cに近傍ノードqcが属しているか否かを判定する(ステップS404)。空間インデックス生成部は、検索用集合Cに近傍ノードqcが属していない場合、処理をステップS408に進める。空間インデックス生成部は、検索用集合Cに近傍ノードqcが属していない場合、検索用集合Cに近傍ノードqcを追加した集合を、検索用集合Cとして再定義(更新)する(ステップS406)。
【0057】
次に、空間インデックス生成部は、近傍ノードqcと追加ノードqとの間の距離が、検索半径r以下であるか否かを判定する(ステップS408)。空間インデックス生成部は、近傍ノードqcと追加ノードqとの間の距離が、検索半径r以下ではない場合、処理をステップS416に進める。空間インデックス生成部は、近傍ノードqcと追加ノードqとの間の距離が、検索半径r以下である場合、結果集合Rに近傍ノードqcを追加した集合を、結果集合Rとして再定義(更新)する(ステップS410)。
【0058】
次に、空間インデックス生成部は、結果集合Rに属するノードの数が、k値より多いか否かを判定する(ステップS412)。空間インデックス生成部は、結果集合Rに属するノードの数が、k値より多くない場合、処理をステップS416に進める。空間インデックス生成部は、結果集合Rに属するノードの数が、k値より多い場合、結果集合Rに属するノードのうち、追加ノードqから最遠ノードを結果集合Rから除いた集合を結果集合Rとして再定義(更新)する(ステップS414)。
【0059】
次に、空間インデックス生成部は、結果集合Rに属するノードの数が、k値と一致するか否かを判定する(ステップS416)。空間インデックス生成部は、結果集合Rに属するノードの数が、k値と一致しない場合、処理をステップS420に進める。空間インデックス生成部は、結果集合Rに属するノードの数が、k値と一致する場合、結果集合Rに属するノードのうち、追加ノードqから最も遠いノードまでの距離を検索半径rとして再定義(更新)する(ステップS417)。次に、空間インデックス生成部は、再定義された検索半径rに基づいて、探索半径rsを算出する(ステップS418)。
【0060】
ここで、グラフが上述した条件1を満たす場合には、検索半径rの周辺を検索すれば、追加ノードqの近傍ノードを見つけることが可能であるが、上述したように、近似k最近傍グラフGは、条件1を満足しないため、検索半径rとする範囲内に近傍ノードが存在しない場合がある。このため、検索半径rを有する検索範囲より広い範囲を探索することが好ましい。したがって、空間インデックス生成部は、検索半径rに基づいて、検索半径rを有する検索範囲より広い範囲ある探索範囲(超球)の探索半径rsを式(1)のように決定する。
【0061】
rs=(1+ε)r…(1)
ε:探索係数
【0062】
次に、空間インデックス生成部は、追加ノードqと、近傍ノードqcとの間の距離が、探索半径rs以下であるか否かを判定する(ステップS420)。空間インデックス生成部は、追加ノードqと近傍ノードqcとの間の距離が、探索半径rs以下である場合、近傍ノードqcを最近傍ノードq*として定義し(ステップS422)、処理をステップS402に進める。空間インデックス生成部は、追加ノードqと、近傍ノードqcとの間の距離が、探索半径rs以下ではなくなるまでの間、ステップS402~S422までの処理を繰り返すことにより、追加ノードqにより近いノードの集合の第k位までを結果集合Rとして更新する。
【0063】
次に、空間インデックス生成部は、追加ノードqと近傍ノードqcとの間の距離が、探索半径rs以下ではない場合、最近傍ノード近傍集合Nq*に属するすべての近傍ノードqcに対してステップS402~ステップS420までの処理が行われたか否かを判定する(ステップS424)。空間インデックス生成部は、最近傍ノード近傍集合Nq*に属するすべての近傍ノードqcに対してステップS402~ステップS422までの処理が行われていない場合、最近傍ノード近傍集合Nq*の中から、まだ処理が行われていない近傍ノードqcを選択し(ステップS426)、処理をステップS402に進める。
【0064】
上述した処理により、空間インデックス生成部は、(A)追加ノード近傍集合Nqと、(B)検索半径rと、(C)追加ノード近傍集合Nqに属するノードののノードIDとを追加ノードq毎に取得することができる。
【0065】
[生成された近似k最近傍グラフGについて]
図7は、近似k最近傍グラフGを模式的に示す図である。
図7に示される一例において、着目画像は、全部で12[個]であり、それぞれのノード(図示する追加ノードq1~q12)は、無向エッジにより互いに対応付けられる。
図7に示される通り、近似k最近傍グラフGでは、ステップS108、及びステップS112の処理により、1ノードずつ無向エッジにより順次対応付けられるため、k値を定めた場合であっても、k本以上のエッジがノードに対応付けられる場合がある。このため、近似k最近傍グラフGは、k最近傍グラフの場合とグラフの形状は異なるが、各ノードの対応付けが十分に行われているため、条件1を満たさないことに伴う検索漏れを許容するインデックスとして十分な検索制度を実現することができる。
【0066】
[dvp-Treeの生成処理について]
空間インデックス生成部は、上述した処理により生成された近似k最近傍グラフGにdvp-Treeを対応付けた空間インデックスを示す空間インデックス情報132を生成する。dvp-Treeは、木構造型インデックスの最上位のノードであるルートノードラベルndRと、最下位のリーフノードラベルndLとルートノードラベルndRとリーフノードラベルndLとの間に位置するインターナルノードラベルndIとの、3つのノードラベルndから構成される。リーフノードラベルndLには、少なくとも1つ以上、且つ最大でk[個]の追加ノードqが対応付けられる。
【0067】
図8は、dvp-Treeの生成処理の一例を示すフローチャートである。
図8は、
図3のフローチャートが実行された後に実行される。まず、空間インデックス生成部は、近似k最近傍グラフGのノードの中から、dvp-Treeの1つ目のノードとする追加ノード近傍集合Nqをランダムに決定する(ステップS502)。ここで、dvp-Treeの1つ目のノードラベルndは、ルートノードラベルndRであるが、他のノードラベルndが存在しないため、リーフノードラベルndLでもある。次に、空間インデックス生成部は、近似k最近傍グラフGに属するノードの中から、dvp-Treeに挿入する追加ノードqであり、ステップS502において決定された追加ノード近傍集合Nqに属さない追加ノードq(以下、挿入追加ノードqi)を選択する(ステップS504)。次に、空間インデックス生成部は、dvp-TreeのカレントノードラベルNの初期値を、ルートノードラベルndRに設定する(ステップS506)。カレントノードラベルNは、dvp-Treeにおける現在のノードラベルndである。
【0068】
次に、空間インデックス生成部は、カレントノードラベルNがリーフノードラベルndLであるか否かを判定する(ステップS508)。空間インデックス生成部は、カレントノードラベルNがリーフノードラベルndLである場合、処理をステップS516に進める。
【0069】
空間インデックス生成部は、カレントノードラベルNがリーフノードラベルndLではない場合、カレントノードラベルNの中心の追加ノードqと、挿入追加ノードqiとの間の距離が、カレントノードラベルNの検索半径r以下であるか否かを判定する(ステップS510)。空間インデックス生成部は、カレントノードラベルNの中心の追加ノードqと、挿入追加ノードqiとの間の距離が検索半径r以下である場合、カレントノードラベルNの内部のノードラベルndをカレントノードラベルNとして再定義(更新)する(ステップS512)。空間インデックス生成部は、カレントノードラベルNの中心の追加ノードqと、挿入追加ノードqiとの間の距離が検索半径rより長い場合、カレントノードラベルNの外部のノードラベルndをカレントノードラベルNとして再定義(更新)する(ステップS514)。空間インデックス生成部は、ステップS508~S414の処理を繰り返すことにより、挿入追加ノードqiとハミング距離が近い追加ノードqが属するノードラベルndを特定することができる。
【0070】
次に、空間インデックス生成部は、カレントノードラベルNであるリーフノードラベルndLに空きがあり(つまり、リーフノードラベルndLに登録されている追加ノードqの数がk[個]未満であり)、挿入追加ノードqiを追加することが可能であるか否かを判定する(ステップS516)。空間インデックス生成部は、カレントノードラベルNであるリーフノードラベルndLに空きがあり、追加ノードqを追加することができる場合、カレントノードラベルNであるリーフノードラベルndLに追加ノードqを追加する(ステップS518)。空間インデックス生成部は、カレントノードラベルNであるリーフノードラベルndLに空きがなく、追加ノードqを追加することができない場合、カレントノードラベルNであるリーフノードラベルndLを分割する処理を行う(ステップS520)。
【0071】
リーフノードラベルndLは、種々の方法によって分割することが可能であるが、空間インデックス生成部は、例えば、以下の方法によってリーフノードラベルndLを分割する。
図9は、リーフノードラベルndLの分割処理の一例を示すフローチャートである。
図9に示されるフローチャートは、
図8に示されるステップS520の処理を詳細に示すフローチャートである。空間インデックス生成部は、カレントノードラベルNであるリーフノードラベルndLに属する追加ノードqの中から、任意の追加ノードqを選択する(ステップS602)。リーフノードラベルndLから分割されるノードラベルnd(以下、被分割ノードラベルnde)の中心の追加ノードqとして定義する(ステップS604)。
【0072】
次に、空間インデックス生成部は、被分割ノードラベルndeの中心の追加ノードqからカレントノードラベルNであるリーフノードラベルndLに属する追加ノードqまでの距離をそれぞれ算出する(ステップS606)。次に、空間インデックス生成部は、算出された距離の中から、リーフノードラベルndLの中心の追加ノードqと、被分割ノードラベルndeの中心の追加ノードqとの中間に近い距離に位置する追加ノードq(以下、分割点追加ノードqs)を特定する(ステップS608)。
【0073】
次に、空間インデックス生成部は、リーフノードラベルndLを、リーフノードラベルndLの中心の追加ノードqから分割点追加ノードqsまでの長さの検索半径rを有する分割球のリーフノードラベルndLと、被分割ノードラベルndeの中心の追加ノードqから分割点追加ノードqsまでの長さの検索半径rを有する分割球の被分割ノードラベルndeとに分割する(ステップS610)。次に、空間インデックス生成部は、分割されたリーフノードラベルndLと、被分割ノードラベルndeとの各種情報を更新、或いは生成する(ステップS620)。各種情報は、例えば、リーフノードラベルndL、及び被分割ノードラベルndeのノードID、ノード種別(ルートノードラベルndR、インターナルノードラベルndI、或いはリーフノードラベルndL)、ノードラベルndに属する追加ノードqのノードIDリスト、ノードラベルndの中心の追加ノードq、ノードラベルndの検索半径r又は分割球の検索半径r、ノードラベルndの中心の追加ノードqからノードラベルndに属する各追加ノードqまでの距離リスト等である。
【0074】
上述した処理により、空間インデックス生成部は、近似k最近傍グラフGにdvp-Treeを対応付けた空間インデックスを示す空間インデックス情報132を生成する。
【0075】
[空間インデックスについて]
図10は、分割球によって分割された近似k最近傍グラフGの一例を示す図である。また、
図11は、近似k最近傍グラフGに対応付けられたdvp-Treeの一例を示す図である。
図10~11に示される通り、上述した処理によって
図7に示される追加ノードq1~q12は、5つのリーフノードラベルndL(図示するリーフノードラベルndL1~ndL5)の分割球に分割される。また、リーフノードラベルndL1~ndL5は、3つのインターナルノードラベルndI(図示するインターナルノードラベルndI1~ndI3)の分割球に分割される。また、インターナルノードラベルndI1~ndI3は、ルートノードラベルndRに対応付けられる。
【0076】
[空間インデックスを用いた類似画像グループの検索処理について]
抽出部126は、上述した処理によって生成された空間インデックスを示す空間インデックス情報132に基づいて、類似画像グループを抽出する。抽出部126は、例えば、抽出態様(1)の場合、同一のノードラベルndに分割された追加ノードqの元データである着目画像の画像を類似画像として抽出する。また、抽出部126は、例えば、抽出態様(2)の場合、上述した処理によって生成された空間インデックスを用いて、着目画像の類似画像グループであるノードラベルndを検索し、特定する。
【0077】
図12は、空間インデックスを用いた類似画像グループの検索処理の一例を示すフローチャートである。
図12に示されるフローチャートは、所定の時間間隔によって繰り返し実行される、或いは、ウェブページの管理者の指示によって実行される。まず、抽出部126は、空間インデックスのカレントノードラベルNをルートノードラベルndRに設定する(ステップS702)。次に、抽出部126は、ハッシュ算出部124によって算出されたpHash(以下、検索対象ノードq#)を取得する(ステップS704)。次に、抽出部126は、類似画像として特定された追加ノードqのノードIDが追加されるリスト(以下、検索結果リストL)を初期化する(ステップS706)。
【0078】
次に、抽出部126は、カレントノードラベルNがリーフノードラベルndLであるか否かを判定する(ステップS708)。抽出部126は、カレントノードラベルNがリーフノードラベルndLである場合、処理をステップS716に進める。抽出部126は、カレントノードラベルNがリーフノードラベルndLではない場合、カレントノードラベルNの中心の追加ノードqと検索対象ノードq#との間の距離が、カレントノードラベルNの検索半径rと検索距離rqとの和によって示される距離以下であるか否かを判定する(ステップS710)。検索距離rqは、データ抽出装置100のユーザによって予め定められる値である。
【0079】
抽出部126は、カレントノードラベルNの中心の追加ノードqと検索対象ノードq#との間の距離が、カレントノードラベルNの検索半径rと検索距離rqとの和によって示される距離以下である場合、カレントノードラベルNの内部のノードラベルndをカレントノードラベルNとして再定義(更新)する(ステップS712)。抽出部126は、カレントノードラベルNの中心の追加ノードqと検索対象ノードq#との間の距離が、カレントノードラベルNの検索半径rと検索距離rqとの和によって示される距離より長い場合、カレントノードラベルNの外部のノードラベルndをカレントノードラベルNとして再定義(更新)する(ステップS714)。抽出部126は、ステップS608~S614の処理を繰り返すことにより、検索対象ノードq#とハミング距離が近い類似画像グループが属するノードラベルndを特定することができる。
【0080】
次に、抽出部126は、カレントノードラベルNであるリーフノードラベルndLに属する追加ノードqの中から、検索対象ノードq#とハミング距離が比較される対象の追加ノードq(以下、比較対象ノードqp)を選択する(ステップS716)。次に、抽出部126は、カレントノードラベルNの中心の追加ノードqと比較対象ノードqpとの間の距離(以下、ノード距離CD1)と、カレントノードラベルNの中心の追加ノードqと検索対象ノードq#との間の距離(以下、ノード距離CD2)との差の絶対値が、検索距離rq以下であるか否かを判定する(ステップS718)。
【0081】
抽出部126は、ノード距離CD1とノード距離CD2との差の絶対値が、検索距離rq以下ではない場合、処理をステップS724に進める。抽出部126は、ノード距離CD1とノード距離CD2との差の絶対値が、検索距離rq以下である場合、比較対象ノードqpと検索対象ノードq#との間の距離が、検索距離rq以下であるか否かを判定する(ステップS720)。抽出部126は、比較対象ノードqpと検索対象ノードq#との間の距離が、検索距離rq以下ではない場合、処理をステップS724に進める。抽出部126は、比較対象ノードqpと検索対象ノードq#との間の距離が、検索距離rq以下である場合、比較対象ノードqpのノードIDを検索結果リストLに追加する(ステップS722)。
【0082】
次に、抽出部126は、カレントノードラベルNに属するすべての追加ノードqに対して、ステップS718~S622の処理が行われたか否かを判定する(ステップS724)。抽出部126は、カレントノードラベルNに属するすべての追加ノードqに対して、ステップS718~S622の処理が行われた場合、処理を終了する。カレントノードラベルNに属するすべての追加ノードqに対して、ステップS718~S622の処理が行われていない場合、カレントノードラベルNに属する追加ノードqの中に、まだ処理が行われていない(つまり、比較対象ノードqpとして選択されていない)追加ノードqが存在する場合、当該追加ノードqを比較対象ノードqpとして選択し(ステップS726)、処理をステップS718に進める。
【0083】
上述した処理により、抽出部126は、着目画像の類似画像グループのリストとして検索結果リストLを生成し、類似画像グループを抽出することができる。
【0084】
[実施形態のまとめ]
以上説明したように、本実施形態のデータ抽出装置100は、対象データ(この一例では、着目画像)を、距離を定義することが可能であり且つ距離の公理を満たす符号(この一例では、pHash)に変換する変換部(ハッシュ算出部124)と、pHashを照合可能な空間インデックス(この一例ででは、近似k最近傍グラフGに対応付けられたdvp-Tree)を用いて、pHashに空間的に近い順にインデックスが対応付けられた対象データ(この一例では、類似画像)を抽出する抽出部126と、を備え、より効率よく類似データを抽出することができる。
【0085】
<空間インデックスを用いた類似画像グループの検索処理の他の例について>
なお、上述では、抽出部126が、抽出態様(1)においては、着目画像と同じリーフノードラベルndLに属する追加ノードqに対応する類似画像を抽出する場合について説明したが、これに限られない。ここで、データ抽出装置100のユーザは、類似画像グループとして所定の数(例えば、100件)の類似画像を取得したい場合がある。この場合に、リーフノードラベルndLに、所定の数の追加ノードqが属していないと、ユーザは、所定の数の類似画像を取得することが困難である場合がある。したがって、抽出部126は、リーフノードラベルndLに所定の数の追加ノードqが属していない場合、更に上位のノードラベルndに属する追加ノードqに対応する類似画像を抽出してもよい。また、抽出部126は、抽出態様(2)において、所定の数の類似画像が抽出できるまでの間、検索距離rqをより長い値に設定し、ステップS702~S726までの処理を繰り返し実行してもよい。
【0086】
なお、上述では、ウェブページの管理者が、データ抽出装置100によって出力された類似画像グループと、着目画像の画像とを比較し、着目画像の画像に含まれる重複画像を確認(削除)する場合について説明したが、これに限られず、データ抽出装置100は、他の用途に用いられてもよい。
【0087】
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【0088】
1…データ抽出システム、100…データ抽出装置、110…通信部、120…制御部、122…取得部、124…ハッシュ算出部、126…抽出部、128…出力部、130…記憶部、132…空間インデックス情報、200…端末装置、300…サービスサーバ、310…データベース、G…近似k最近傍グラフ、N…カレントノードラベル、nd…ノードラベル、nde…被分割ノードラベル、ndI、ndI1、ndI2、ndI3…インターナルノードラベル、ndL、ndL1、ndL2、ndL3、ndL4、ndL5…リーフノードラベル、ndR…ルートノードラベル、Np…結果ノード近傍集合、Nq…追加ノード近傍集合、Nq*…最近傍ノード近傍集合、Ns…検索起点ノード近傍集合、Q…追加ノード集合、q、q1、q2、q3、q4、q5、q6、q7、q8、q9、q10、q11、q12…追加ノード、qc…近傍ノード、qi…挿入追加ノード、qp…比較対象ノード、qs…分割点追加ノード、q*…最近傍ノード、q#…検索対象ノード、r…検索半径、R…結果集合、rq…検索距離、rs…探索半径、s…検索起点ノード、s*…検索起点最近傍ノード