本発明の実施の形態では、高速かつ省メモリでありながらも高精度な類似コンテンツ発見を実現するためのハッシュ関数の生成及びハッシュ値の生成を行う情報処理装置に本発明を適用した場合を例に説明する。以下、図面を参照して本発明の実施の形態を詳細に説明する。
<第1の実施の形態>
<システム構成>
本発明の実施の形態では、コンテンツに対して、複数の意味的観点およびその関連の強さを考慮したハッシュ関数とハッシュ値とを生成する。本発明の第1の実施の形態に係る情報処理装置1は、ハッシュ関数を生成し、生成されたハッシュ関数を用いてハッシュ値を生成する。この情報処理装置1は、CPUと、RAMと、後述するハッシュ関数生成処理ルーチン及びハッシュ値生成処理ルーチンを実行するためのプログラムを記憶したROMとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図1に示すように、情報処理装置1は、入力部2と、演算部3と、出力部4とを備えている。
また、図1に示すコンテンツデータベース5には、複数のコンテンツが登録されている。コンテンツデータベース5には、少なくともコンテンツ自体、あるいは、当該コンテンツデータの所在を一意に示すアドレスが格納されている。コンテンツは、例えば、文書であれば文書ファイル、画像であれば画像ファイル、音であれば音ファイル、映像であれば映像ファイルなどであり、好ましくは、コンテンツデータベース5には、更に、各コンテンツのメディア種別とそれ自体を一意に識別可能な識別子が格納されているものとする。
また、図1に示す意味ベクトルデータベース6には、コンテンツデータベース5に登録された各コンテンツに対応する意味ベクトルが格納されているものとする。
意味ベクトルは、コンテンツの意味を表す。また、意味ベクトルは、コンテンツごとに対応して与えられるベクトルであり、一つ以上の意味概念に対して当該コンテンツがどの程度の関連を持つかをベクトルとして表現したものである。例えば、上記例では意味ベクトルは「りんご」、「果物」、「青森」の3つの意味概念を表す3次元のベクトルと定めることができ、例えば
「赤いりんご」は{りんご:1}、{果物:1}、{青森:0.9}―>(1,1,0.9)
「青りんご」は{りんご:1}、{果物:1}、{青森:0.1}―>(1,1,0.1)
「みかん」は{りんご:0}、{果物:1}、{青森:0}―>(0,1,0)
「マグロ」は{りんご:0}、{果物:0}、{青森:0.7}―>(0,0,0.7)
などと定めることができる。上記の3次元の意味ベクトルによって、「赤いりんご」と「青りんご」の距離は(1−1)2+(1−1)2+(0.9−0.1)2=0.64と計算できる。同様に、「赤いりんご」と「みかん」の距離は1.81、「赤いりんご」と「マグロ」の距離は2.04と求めることができ、多様な観点に基づく意味的な差異を柔軟に表現することができる。
ここで、本発明の実施の形態において最も重要な点は、意味的観点を柔軟に表現できる意味ベクトルを取り入れたハッシュ関数およびハッシュ値を求めることができる点にある。上記特許文献1の技術によっては、どのコンテンツとどのコンテンツが関連しているか、という確定的かつ画一的な関連情報しか考慮できず、このように柔軟な意味ベクトルを取り入れてハッシュ関数およびハッシュ値を求めることはできない。
意味ベクトルデータベース6が所与でない場合には、別途意味ベクトルデータベース入力部を備えていても構わない。意味ベクトルデータベース入力部は、意味ベクトルの各次元(要素)に対応する意味概念と各要素の値を人手、あるいは、機械的に与えるための入力装置であり、人手によって与える場合にはユーザインタフェース(キーボードやポインティングデバイス等)を備えた汎用コンピュータ、機械的に与える場合には、例えばインターネットに接続可能な汎用コンピュータによって構成されているものとすればよい。
人手により与える場合には、利用者はユーザインタフェースを通じて、先行して示した一例のように、コンテンツの内容に関連の深いと想定される意味概念をリストしておき、各コンテンツがどの意味概念とどの程度関連しているかを、例えば0〜1の実数値で与えるものとすればよい。
また、機械的に与える場合の例として、例えばWebページから画像を収集するような場合があげられる。最も単純には、例えば同一Webページ内にある画像と文書は関連していると見做すという前提のもと、文書中に含まれる特徴的な単語を抽出し、これを意味概念として用いてもよい。特徴的な単語の抽出には、いかなる公知の方法を用いてもよいが、単純にはStopwords(助詞などの情報量の低い単語)をルールベースで除去した後、Document Frequency(DF)と呼ばれる各単語を含む文書数の高い/低い単語を除去することで実行してもよい。
あるいは、ブログやニュースサイト、マイクロブログ、SNS等、特定のWebページには、タグなどと呼ばれる分類キーワードが付与されている場合もある。このときにはこれらを直接意味概念として用いても構わない。
その他、メタデータとして、例えばコンテンツの内容を表現するもの(コンテンツのタイトル、概要文、キーワード)、コンテンツのフォーマットに関するもの(コンテンツのデータ量、サムネイル等のサイズ)などが、意味ベクトルデータベース6に格納されていてもよく、これらを意味ベクトルとして利用してもよい。
なお、意味ベクトルが機械的に与えられる場合、人手をかけることなく意味ベクトルが得られるというメリットがある。
情報処理装置1は、コンテンツデータベース5、及び意味ベクトルデータベース6と通信手段を介して接続され、入力部2、出力部4を介して相互に情報通信し、コンテンツデータベース5、及び意味ベクトルデータベース6に登録されたコンテンツに基づいてハッシュ関数を生成するハッシュ関数生成処理と、生成したハッシュ関数を用いてコンテンツを複数のバイナリ値に変換するハッシュ値生成処理を行う。
また、コンテンツデータベース5、及び意味ベクトルデータベース6は、情報処理装置1の内部にあっても外部にあっても構わず、通信手段は任意の公知のものを用いることができるが、本実施形態においては、外部にあるものとして、通信手段は、インターネット、TCP/IPにより通信するよう接続されているものとする。コンテンツデータベース5、及び意味ベクトルデータベース6は、いわゆるRDBMS(Relational Database Management System)などで構成されているものとしてもよい。
情報処理装置1の各部、コンテンツデータベース5、及び意味ベクトルデータベース6は、演算処理装置、記憶装置等を備えたコンピュータやサーバ等により構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは情報処理装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。もちろん、その他いかなる構成要素についても、単一のコンピュータやサーバによって実現しなければならないものではなく、ネットワークによって接続された複数のコンピュータに分散して実現してもよい。
次に、図1に示す情報処理装置1の各部について説明する。
入力部2は、コンテンツデータベース5から、複数(N個)のコンテンツを取得する。また、入力部2は、検索クエリとしてのコンテンツの入力を受け付ける。また、入力部2は、意味ベクトルデータベース6から、N個のコンテンツの各々について与えられた意味ベクトルを取得する。
演算部3は、特徴抽出部30と、ハッシュ関数生成部32と、ハッシュ関数記憶部34と、ハッシュ値生成部36とを備えている。
特徴抽出部30は、入力部2によって受け付けたN個のコンテンツの各々に対し、当該コンテンツから特徴量を抽出する。
また、特徴抽出部30は、入力部2によって受け付けた検索クエリとしてのコンテンツから、特徴量を抽出する。
特徴抽出部30における特徴量を抽出する処理は、コンテンツのメディア種別に依存する。例えば、コンテンツが文書であるか、画像であるか、音であるか、映像であるかによって、抽出するまたは抽出できる特徴量は変化する。ここで、各メディア種別に対してどのような特徴量を抽出するかは、本実施の形態の要件として重要ではなく、一般に知られた公知の特徴抽出処理を用いてよい。具体的には、あるコンテンツから抽出された次元を持つ数値データ(スカラー又はベクトル)であれば、あらゆる特徴量に対して有効である。したがって、ここでは、本実施形態に適する、各種コンテンツに対する特徴抽出処理の一例を説明する。
コンテンツが文書である場合には、文書中に出現する単語の出現頻度を用いることができる。例えば、公知の形態素解析を用いて、名詞、形容詞等に相当する単語ごとに、その出現頻度を計数すればよい。この場合、各文書の特徴量は、単語種別と同じだけの次元を持つベクトルとして表現される。
コンテンツが画像である場合には、例えば、明るさ特徴、色特徴、テクスチャ特徴、コンセプト特徴、景観特徴、形状特徴などを抽出する。明るさ特徴は、HSV色空間におけるV値を数え上げることで、ヒストグラムとして抽出することができる。この場合、各画像の特徴量は、V値の量子化数(例えば、16ビット量子化であれば256諧調)と同数の次元を持つベクトルとして表現される。
色特徴は、L*a*b*色空間における各軸(L*、a*、b*)の値を数え上げることで、ヒストグラムとして抽出することができる。各軸のヒストグラムのビンの数は、例えば、L*に対して4、a*に対して14、b*に対して14などとすればよく、この場合、3軸の合計ビン数は、4×14×14=784、すなわち784次元のベクトルとなる。
テクスチャ特徴としては、濃淡ヒストグラムの統計量(コントラスト)やパワースペクトルなどを求めればよい。あるいは、局所特徴量を用いると、色や動きなどと同様、ヒストグラムの形式で抽出することができるようになるため好適である。局所特徴としては、例えば下記の参考文献1に記載されるSIFT(Scale Invariant Feature Transform)や、下記の参考文献2に記載されるSURF(Speeded Up Robust Features)などを用いることができる。
[参考文献1]D.G. Lowe, “Distinctive Image Features from Scale-Invariant Keypoints ", International Journal of Computer Vision, pp.91-110, 2004
[参考文献2]H. Bay, T. Tuytelaars, and L.V. Gool, “SURF: Speeded Up Robust Features", Lecture Notes in Computer Science, vol. 3951, pp.404-417, 2006
これらによって抽出される局所特徴は、例えば128次元の実数値ベクトルとなる。このベクトルを、予め学習して生成しておいた符号長を参照して、符号に変換し、その符号の数を数え上げることでヒストグラムを生成することができる。この場合、ヒストグラムのビンの数は、符号長の符号数と一致する。又は、参考文献3に記載のスパース表現や、参考文献4、5に記載のフィッシャーカーネルに基づく特徴表現などを利用してもよい。
[参考文献3]Jinjun Wang, Jianchao Yang, Kai Yu, Fengjun Lv, Thomas Huang, and Yihong Gong, “Locality-constrained Linear Coding for Image Classification", IEEE Conference on Computer Vision and Pattern Recognition, pp. 3360-3367, 2010.
[参考文献4]Florent Perronnin, Jorge Sanchez, Thomas Mensink, “Improving the Fisher Kernel for Large-Scale Image Classification", European Conference on Computer Vision, pp. 143-156, 2010.
[参考文献5]Herve Jegou, Florent Perronnin, Matthijs Douze, Jorge Sanchez, Patrick Perez, Cordelia Schmid, “Aggregating Local Image Descriptors into Compact Codes", IEEE Trans. Pattern Recognition and Machine Intelligence, Vol. 34, No. 9, pp. 1704-1716, 2012.
結果として生成される特徴量は、いずれの場合にも、符号長の符号数に依存した長さを持つ実数値ベクトルになる。
コンセプト特徴とは、画像中に含まれる物体や、画像が捉えているイベントのことである。任意のものを用いてよいが、例を挙げれば、「海」、「山」、「ボール」などのようなものである。もし、ある画像に「海」が映っていた場合、その画像は「海」コンセプトに帰属する画像であるという。その画像が、各コンセプトに帰属するか否かは、コンセプト識別器を用いて判断することができる。通常、コンセプト識別器はコンセプト毎に一つ用意され、画像の特徴量を入力として、その画像があるコンセプトに帰属しているか否かを帰属レベルとして出力する。コンセプト識別器は、予め学習して獲得しておくものであり、決められた画像特徴、例えば先に述べた局所特徴と、予め人手によって、その画像がどのコンセプトに帰属しているかを表した正解ラベルとの関係を学習することによって獲得する。学習器としては、例えばサポートベクターマシンなどを用いればよい。コンセプト特徴は、各コンセプトへの帰属レベルをまとめてベクトルとして表現することで得ることができる。この場合、生成される特徴量はコンセプトの数と同数の次元を持つベクトルとなる。
景観特徴は、画像の風景や場面を表現した特徴量である。例えば参考文献6に記載のGIST記述子を用いることができる。GIST記述子は画像を領域分割し、各領域に対して一定のオリエンテーションを持つフィルタを掛けたときの係数によって表現されるが、この場合、生成される特徴量は、フィルタの種類(分割する領域の数とオリエンテーションの数)に依存した長さのベクトルとなる。
[参考文献6]A. Oliva and A. Torralba, “Building the gist of a scene: the role of global image features in recognition", Progress in Brain Research, 155, pp.23-36, 2006
形状特徴は、画像に写る物体の形状を表す特徴量である。例えば参考文献7に記載のHOG特徴量やエッジヒストグラムを用いることができる。
[参考文献7]N. Dalal and B. Triggs, “Histograms of Oriented Gradients for Human Detection", IEEE Conference on Computer Vision and Pattern Recognition, pp.886-893, 2005
コンテンツが音である場合には、音高特徴、音圧特徴、スペクトル特徴、リズム特徴、発話特徴、音楽特徴、音イベント特徴などを抽出する。音高特徴は、例えばピッチを取るものとすればよく、下記の参考文献8に記載される方法などを用いて抽出することができる。この場合、ピッチを1次元ベクトル(スカラー)として表現するか、あるいはこれをいくつかの次元に量子化しておいてもよい。
[参考文献8]古井貞熙,“ディジタル音声処理,4.9ピッチ抽出”,pp.57−59,1985
音圧特徴としては、音声波形データの振幅値を用いるものとしてもよいし、短時間パワースペクトルを求め、任意の帯域の平均パワーを計算して用いるものとしてもよい。いずれにしても、音圧を計算するバンドの数に依存した長さのベクトルとなる。
スペクトル特徴としては、例えばメル尺度ケプストラム係数(MFCC:Mel-Frequency Cepstral Coefficients)を用いることができる。
リズム特徴としては、例えばテンポを抽出すればよい。テンポを抽出するには、例えば下記の参考文献9に記載される方法などを用いることができる。
[参考文献9]E.D. Scheirer, “Tempo and Beat Analysis of Acoustic Musical Signals ", Journal of Acoustic Society America, Vol. 103, Issue 1, pp.588-601, 1998
発話特徴、音楽特徴は、それぞれ、発話の有無、音楽の有無を表す。発話・音楽の存在する区間を発見するには、例えば下記の参考文献10に記載される方法などを用いればよい。
[参考文献10]K. Minami, A. Akutsu, H. Hamada, and Y. Tonomura, “Video Handling with Music and Speech Detection", IEEE Multimedia, vol. 5, no. 3, pp.17-25, 1998
音イベント特徴としては、例えば、笑い声や大声などの感情的な音声、あるいは、銃声や爆発音などの環境音の生起などを用いるものとすればよい。このような音イベントを検出するには、例えば下記の参考文献11に記載される方法などを用いればよい。
[参考文献11]国際公開第2008/032787号
コンテンツが映像である場合、映像は、一般に画像と音のストリームであるから、上記説明した画像特徴と音特徴を用いることができる。映像中のどの画像、音情報を分析するかについては、例えば、予め映像をいくつかの区間に分割し、その区間ごとに1つの画像、音から特徴抽出を実施する。
映像を区間に分割するには、予め決定しておいた一定の間隔で分割するものとしてもよいし、例えば下記の参考文献12に記載される方法などを用いて、映像が不連続に切れる点であるカット点によって分割するものとしてもよい。
[参考文献12]Y. Tonomura, A. Akutsu, Y. Taniguchi, and G. Suzuki, “Structured Video Computing", IEEE Multimedia, pp.34-43, 1994
映像を区間に分割する場合には、望ましくは、上記の後者の方法を採用する。映像区間分割処理の結果として、区間の開始点(開始時刻)と終了点(終了時刻)が得られるが、この時刻毎に別々の特徴量として扱えばよい。
上記説明した特徴量の中から、一つあるいは複数を利用してもよいし、その他の公知の特徴量を用いるものとしてもよい。
ハッシュ関数生成部32は、特徴抽出部30によって抽出されたN個のコンテンツの各々の特徴量と、入力部2によって取得したN個のコンテンツの各々について与えられた意味ベクトルとに基づいて、ハッシュ関数を生成する。ハッシュ関数は、特徴量に対応するハッシュ値を求めるためのハッシュ関数である。
具体的には、あるコンテンツiから抽出された特徴量をxi∈RDと表し、特徴量xiのコンテンツの特徴量次元はDであるとき、ハッシュ関数生成部32は、特徴量xiに対して、hk:RD→{−1,1}となるハッシュ関数の集合を求める。{−1,1}と{0,1}とは情報量という観点で本質的に差異がないことに注意すれば、各hによって、特徴量xi∈RDは0または1を取るバイナリ値に写像されるから、特徴量xiは、ハッシュ関数集合H={h1,h2,・・・,hB}によってB個のバイナリ値、すなわち、Bビットのハッシュ値に変換されることを意味する。本実施の形態では、ハッシュ値が、複数のバイナリ値によって構成される場合を例に説明する。
本発明の実施の形態における目的は、このハッシュ値によって、異なるメディア種別であっても類似度の計測を可能にしたうえ、さらに時間のかかる類似度計算を省略することである。したがって、ここで生成するハッシュ関数と、それにより生成されるハッシュ値は、次の2つの性質を持つ。
(A)元の空間RDでの類似度を表すハッシュ値へと変換する。すなわち、高い類似度を持つコンテンツほど、ハッシュ値の距離(ハミング距離)が近くなる。
(B)意味ベクトルの近いコンテンツ同士は、ハッシュ値の距離が近くなる。
本実施の形態の一例では、ハッシュ関数として(1)式で示す線形関数に基づくハッシュ関数を適用する。
ここで、sign(x)は符号関数であり、x≧0のとき1、x<0のとき−1をとる関数である。また、wk∈RD、bk∈Rのパラメータである。このハッシュ関数において、未知のパラメータはwkとbkの二つだけである。
ここで、仮にxi(i=1,2,・・・,N)が平均0に正規化されているとき、bk=0としても一般性を失わない。xiを0に正規化するには、xiの平均を、各xiから減算すればよいのであり、これはxi∈RDにおいて常に可能であることから、bk=0と決定できる。したがって、以降、xiの平均は0に正規化されているとし、上記(1)式を(2)式のように定義しなおして説明する。
このハッシュ関数の定義によれば、ハッシュ関数を構成する関数φk内にあるパラメータwkを定めることで、ハッシュ関数を一意に定めることができる。したがって、本ハッシュ関数生成処理の目的は、このwk(k=1,2,…,B)を求めることである。
ここで、上記(2)式のように規定されるハッシュ関数の意味は、幾何的には図2を用いて説明できる。図2には、特徴量空間RD上に、各コンテンツ(i=1,2,・・・,N)から抽出された特徴量xi(i=1,2,・・・,N)が分布している。図2では、便宜上2次元のように図示しているが、実際にはD次元の空間である。ここでハッシュ関数を構成する関数φk(x)は、この特徴量空間上の原点を通る直線(実際はD−1次元の超平面)を表す。hk(x)は、本質的には符号関数であるから、その値は、特徴量の点が、ハッシュ関数を構成する関数φk(x)の直線のどちら側にあるかによって、1または0をとる。すなわち、上記(2)式によって定義されるハッシュ関数41は、特徴量空間を直線によって1と0の2つの領域に分割する関数である。ここで、wkはこの直線の傾きに対応し、wkが変化すれば、分割する角度が変化することになる。
前述した(A)、(B)の2つの性質に合うハッシュ関数となるように、wkを求めるには、
(A’)類似したコンテンツ群が、上記図2の例における直線の片側に集まるように直線を引き(すなわち、wkを決める)、
(B’)なおかつ、意味ベクトルが示す関連するコンテンツ同士が、ハッシュ値の空間において近い値を持つようにすればよい。
まず、(A’)の性質を満たすための方法を説明する。メディアコンテンツにおいては、前述した特徴量の種別によらず、類似したコンテンツ同士の特徴量や意味ベクトルの分布は滑らかな多様体構造を形成することがよく知られている。多様体構造とは、簡単に言えば滑らかな変化である。分かりやすく図3を用いて説明すると、各特徴量は大まかに、曲線51と曲線52の滑らかに変化する2本の曲線上に分布しており、同じ曲線上の点同士は互いに類似していることが多い。上記図3でいうところの、白丸(○)と黒丸(●)で表されている特徴量は、同色であれば互いに類似したコンテンツの特徴量となる。
さらに、意味ベクトルによって形成される意味ベクトル空間を考えた場合にも同じことが言える。
この知見に基づけば、これらの特徴量空間あるいは意味ベクトル空間において類似したコンテンツ群が直線の片側に集まるように直線を引けばよい。この観点に基づけば、図4に示す直線の内、直線61のような直線は好ましくなく、2群の間を通る直線62のような直線を規定するハッシュ関数のパラメータwkを求めればよいことになる。
続いて、(B’)の性質を満たすための方法について、図5を用いて説明する。図5の例では、特徴量によって形成される特徴量空間と、各コンテンツと対応して存在する意味ベクトルによって形成される意味ベクトル空間とを対応づけて示し、特徴量を丸、意味ベクトルを三角で表している。仮に、それぞれの特徴量空間と意味ベクトル空間において、性質(A’)を満たすように、すなわち、多様体構造を分離するような直線71、72がそれぞれ得られているとし、さらに、コンテンツごとの特徴量と意味ベクトルの対応関係が破線73〜76で示すように得られているとする(図中では3つのコンテンツのみにしか対応関係を示していないが、実際には他のコンテンツに対しても同様の対応関係があると考えてよい)。
このとき、直線71、72によって分離されている特徴量および意味ベクトルのうち、対応している特徴量/意味ベクトル同士が、互いに同じハッシュ値を持つようにハッシュ関数のパラメータwkを求めれば、特徴量の意味においても、意味ベクトルの意味においても類似したハッシュ値を生成でき、(B’)の性質を満たすようなになる。例えば、図5の例では白丸と白三角(△)、黒丸と黒三角(▲)がそれぞれ同じハッシュ値を持てばよい。
以上示した2つの方法に基づき、本実施形態の一例では、前述の(A’)と(B’)の2つの性質を満たすパラメータwkを求める。本実施形態の一例では、次の2つの手続きによってwkを求める。第1の手続きは、特徴量空間および意味ベクトル空間のそれぞれにおける多様体構造を捉える。第2の手続きは、特徴量空間および意味ベクトル空間それぞれの多様体構造、および、コンテンツ関係の対応に基づいて、wkを求める。
以下、それぞれの手続きについて詳述する。第1の手続きは、特徴量、意味ベクトルによらず同じであり、双方に対してそれぞれ同じ処理を適用すればよいので、ここでは特徴量の場合についてのみ述べる。例えば、上記非特許文献2に記載の公知の方法を用いることができる。以下、上記非特許文献2に記載の方法を説明する。
多様体とは、大まかに言えば滑らかな図形であり、言い換えれば局所的に見ればユークリッドな空間とみなせる。例えば、上記図3に示すような曲線のように、いくつかの直線の集まりとして近似されるようなものであると解釈してもよい。このことは、多様体とは局所的に見れば線形で近似される構造を持つことを表しているのであり、言い換えれば、多様体上の任意の点は、同じ多様体上にあるいくつかの近傍点に基づく、近傍の相対的幾何関係によって表現できることを意味している。
上記非特許文献2では、次の問題を解くことによって多様体を発見する。
ここで、第一項は特徴量xiを、そのユークリッド空間上での近傍集合ε(xi)に含まれる特徴量インデクスに対応する特徴量の集合{xj|j∈ε(xi)}によって線形結合で表したときの誤差であり、sijはその際の結合重みである。第二項は、結合重みのベクトルsi={si1,・・・,si|ε(xi)|}に対して、その要素がスパースであることを要請する、すなわち、ベクトル中のいくつかの限られた要素にのみ非ゼロの値を持つように正則化するスパース項であり、viはxiに近いほど小さな値を持つような定数を要素として持つベクトルである。ベクトルviの要素vijは、例えば、(4)式のように表わされる。なお、自分自身のベクトルについての重みsi=jは0である。
つまるところ、この問題を解くことによってある特徴量xiをできる限り少数の近傍点の線形結合として表した場合の結合重みsiを求めることができるが、これは多様体を表現するいくつかの近傍点と、その相対的幾何関係(結合重み)を表しているに他ならない。この問題は、公知のスパース問題ソルバによって解決することができる。例えば、SPAMSなどのオープンソースソフトウェアを用いてもよい。
なお、近傍集合ε(xi)は、いかなる方法を用いて求めてもよい。最も単純な方法は、各特徴量xjに対して、その他全ての点xj≠iとのユークリッド距離を求め、近いものからt個を近傍集合とするものである。tは任意の正の整数でよく、例えばt=10などとしてもよい。
しかし、この方法では1つの特徴量に対してその他全ての特徴量との距離を求める必要があるため、未知の特徴量xjに対して近傍集合を求めようとすると、O(N)の計算時間が掛かるという問題がある。したがって、高速に計算できる手法を用いることが好ましい。例えば、クラスタリングやハッシュによる方法を用いることができる。
クラスタリングを用いる場合、例えばk−means法などにより全N個の特徴量をクラスタリングし、L個のクラスタ(L<<N)と、各クラスタを代表するL個の代表特徴量(クラスタ中心)を求めておく。Lの値は任意の正の整数としてよいが、例えば、L=128などとすればよい。この結果、各特徴量がどのクラスタに属するか、および、当該クラスタの代表特徴量を得ることができる。この前提のもと、下記の手続きによって、未知の特徴量xiに対する近傍集合を得ることができる。まず、特徴量xjに対して、L個の代表特徴量との距離を計算し、最も近いクラスタを特定する。次に、当該クラスタに属する全ての特徴量を、近傍集合ε(xi)として得る。この処理に必要な計算時間はO(L)であり、L<<Nであることから、単純な方法に比べて高速に近傍集合を得ることができる。
また、ハッシュを用いる場合、例えば上記非特許文献1などの方法によって、全N個の特徴量に対するハッシュ値を求めておく。この前提のもと、未知の特徴量xjのハッシュ値を求め、これと同一またはハミング距離上近い値を持つハッシュ値を持つ(すなわち、同一あるいはそれに近接するバケットに属する)全ての特徴量を、近傍集合ε(xi)として得ればよい。この処理に必要な計算時間は参照するバケットの数に依存するが、一般に参照バケット数はNよりも小さいことから、こちらも高速に近傍集合を得ることができる。なお、非特許文献1の方法によるハッシュ値は、ユークリッド空間上のコサイン類似度を保存するようなハッシュ関数であり、ユークリッド空間上の角度が近ければ近いほどハッシュ値が衝突する確率が高くなる。一方で、本実施形態により生成されるハッシュ値は、ユークリッド空間上ではなく、多様体上の近さ(測地線距離に基づく近さ)を保存するようなハッシュ関数であり、特徴量の分布をより正確に捉えたハッシュ値を生成できる。
以上の手続きを、特徴量、意味ベクトル双方に対して適用すればよい。
次に、第2の手続きについて説明する。第1の手続きによって得た特徴量のsi(i=1,2,・・・,N)と同様の近傍の相対的幾何関係を持つハッシュ空間(埋め込み)を求めることによって、wkを求める。
以降、i番目のコンテンツの特徴量をこれまで同様xi、意味ベクトルをyiと表すものとする。
具体的には、下記の問題を解決する。便宜上、特徴量xi(i=1,2,・・・,N)および意味ベクトルyi(i=1,2,・・・,N)を並べた行列X={x1,・・・,xN}、Y={y1,・・・,yN}を定義する。さらに、ハッシュ関数のパラメータwk(k=1,2,…,B)の他、意味ベクトルに対する疑似的なハッシュ関数のパラメータuk(k=1,2,…,B)を導入し、これらを並べた行列W={w1,・・・,wB}、U={u1,・・・,uB}を定義する。
以下の問題を解く。
ここで、SX/SYは特徴量/意味ベクトルそれぞれに対するsijを要素に持つ行列(sijについては前記第1の手続きによって求められている)である。
JX、JYは、それぞれ特徴量、意味ベクトルの空間における多様体構造を保存するための関数であり、例えば、(6)式のように定義することができる。
上記式(6)における多様体構造は、特徴量が存在する空間である特徴量空間において、コンテンツの特徴量を、当該コンテンツの特徴量の近傍に存在する他のコンテンツの特徴量に対応するハッシュ値の線形結合で表したものである。
上記式(6)は、元々の特徴量空間における多様体構造、すなわち、sijとその線形結合を、ハッシュ関数を構成する関数
によって変換された先においてもそのまま再構築することを要請するものであり、上記(3)式とも相似性を持つものである。すなわち、上記(5)式に代入されたとき、ハッシュ値に変換された先でも元の空間と同様の多様体構造を持つようにWを決定することができる。上記はJXの例について示したが、JYについても全く同様でよい。JYについての式を(8)式に示す。
上記(8)式における多様体構造は、意味ベクトルが存在する空間である意味ベクトル空間において、コンテンツの意味ベクトルを、当該コンテンツの意味ベクトルの近傍に存在する他のコンテンツの意味ベクトルに対応するハッシュ値の線形結合で表したものである。
上記(5)式におけるJXYは、同一コンテンツの特徴量と意味ベクトルとの関係を保存するための関数であり、例えば、(9)式のように定義することができる。
この式では、同一コンテンツの特徴量と意味ベクトルを、変換先で同一の値にするよう要請するものである。上記式は、特徴量と意味ベクトルのペアについて、それぞれ上記(7)式によって与えられるハッシュ関数を構成する関数により変換された値の距離を表している。したがって、これを上記(5)式に代入することで、できる限りその距離を小さくするようにW(およびU)を決定することができる。
従って、ハッシュ関数生成部32は、上記(5)式、(6)式、(8)式、(9)式に従って、N個のコンテンツの各々について、当該コンテンツから抽出された特徴量に対応するハッシュ値と、当該コンテンツの意味ベクトルに対応するハッシュ値との距離が小さくなり、かつ、N個のコンテンツの各々について、多様体構造に基づいて求められる当該コンテンツの特徴量に対応するハッシュ値と、当該コンテンツから抽出された特徴量に対応するハッシュ値との距離が小さくなり、かつ、N個のコンテンツの各々について、多様体構造に基づいて求められる当該コンテンツの意味ベクトルに対応するハッシュ値と、当該コンテンツの意味ベクトルに対応するハッシュ値との距離が小さくなるように、特徴量に対応するハッシュ値を求めるためのハッシュ関数、及び意味ベクトルに対応するハッシュ値を求めるためのハッシュ関数を生成する。
以上のように定義された上記(6)式、(8)式及び(9)式を、上記(5)式に代入し、代数変形を適用すると、次の(10)式の問題が得られる。
ここで、
である。上記(10)式は、W(およびU)、すなわちPについて凸であるので、Wについて微分して極値を取ることで、次の一般化固有値問題に帰着される。
なお、上記式(12)におけるηは固有値を表す。このような一般化固有値問題の解は、反復法やべき乗法などの公知の方法によって求めることができる。
このようにして求めたW(およびU)は、元の空間における多様体構造を最適に保存し、かつ、同一のコンテンツと意味ベクトルとの関係を可能な限り同じハッシュ値に変換するものである。したがって、目的としていた2つの性質(A’)、(B’)を最適に満たすようなWを得ることができる。
新たなハッシュ値を生成する際には、上記(7)式を計算した後、その符号を調べればよいだけである。この計算に必要となるメモリ量は、wkとxiそれぞれを格納するに必要なメモリ量のみであり、仮に、特徴量が浮動小数点表示であり、次元Dが100の場合800B程度、仮に次元Dが100000程度になったとしても高々800KBと、現存する一般的なコンピュータにおいても極めて容易に蓄積できるメモリ量に抑えることができる。したがって、この方法によって、多様体の構造を捉えることによる高い精度でありながら、高速かつ省メモリなハッシュ値生成が可能である。
ハッシュ関数生成部32は、特徴抽出部30によって抽出されたN個のコンテンツの各々の特徴量と、入力部2によって受け付けたN個のコンテンツの各々について与えられたコンテンツの意味ベクトルとに基づいて、上記(10)式、(11)式、及び(12)式に従って、特徴量に対応するハッシュ値を求めるためのハッシュ関数、及び意味ベクトルに対応するハッシュ値を求めるためのハッシュ関数を生成する。
ハッシュ関数記憶部34には、ハッシュ関数生成部32によって生成された特徴量に対応するハッシュ値を求めるためのハッシュ関数が格納される。上記の処理詳細によって生成された特徴量に対応するハッシュ値を求めるためのハッシュ関数、すなわち、具体的には、全てのメディア種別におけるWが、ハッシュ関数記憶部34に記憶される。
ハッシュ値生成部36は、コンテンツデータベース5に格納されたN個のコンテンツの各々について、特徴抽出部30によって抽出された特徴量と、ハッシュ関数記憶部34に格納されたハッシュ関数とに基づいて、当該コンテンツの特徴量に対応するハッシュ値を生成する。
また、ハッシュ値生成部36は、入力部2によって受け付けた検索クエリとしてのコンテンツについて、特徴抽出部30によって抽出された特徴量と、ハッシュ関数記憶部34に格納されたハッシュ関数とに基づいて、当該コンテンツの特徴量に対応するハッシュ値を生成する。
出力部4は、ハッシュ値生成部36によって生成されたハッシュ値を、コンテンツデータベース5へ出力する。
コンテンツデータベース5には、出力部4によって出力されたハッシュ値と、当該ハッシュ値に対応するコンテンツとの組み合わせが格納される。
<情報処理装置の作用>
次に、本実施の形態に係る情報処理装置1の作用について説明する。情報処理装置1は、ハッシュ関数を生成するハッシュ関数生成処理と、特徴量をハッシュ化するハッシュ値生成処理を実行する。以下、これら2つの処理について説明する。
<ハッシュ関数生成処理ルーチン>
まず、情報処理装置1が、コンテンツデータベース5に格納されたN個のコンテンツと、意味ベクトルデータベース6に格納されたN個の意味ベクトルとを取得すると、情報処理装置1によって、図6に示すハッシュ関数生成処理ルーチンが実行される。ハッシュ関数生成処理ルーチンは、実際にコンテンツデータをハッシュ化する前に、少なくとも1度実行される処理である。
まず、ステップS100において、入力部2によって、コンテンツデータベース5に格納されている複数(N個)のコンテンツと、意味ベクトルデータベース6に格納されたN個の意味ベクトルとを取得する。
ステップS102において、特徴抽出部30によって、上記ステップS100で取得されたN個のコンテンツの各々に対し、当該コンテンツから特徴量を抽出する。
ステップS104において、ハッシュ関数生成部32によって、上記ステップS102で抽出されたN個のコンテンツの各々の特徴量と、上記ステップS100で取得したN個のコンテンツの各々について与えられた意味ベクトルとに基づいて、上記式(10)〜式(12)に従って、特徴量に対応するハッシュ値を求めるためのハッシュ関数、及び意味ベクトルに対応するハッシュ値を求めるためのハッシュ関数を生成する。また、ハッシュ関数生成部32によって、特徴量に対応するハッシュ値を求めるためのハッシュ関数、及び意味ベクトルに対応するハッシュ値を求めるためのハッシュ関数を、ハッシュ関数記憶部34へ格納して、ハッシュ関数生成処理ルーチンを終了する。
以上の処理により、コンテンツデータベース5に格納されたN個のコンテンツと、意味ベクトルデータベース6に格納されたN個の意味ベクトルとからハッシュ関数を生成することができる。
<ハッシュ値生成処理ルーチン>
次に、検索クエリとしてのコンテンツが情報処理装置1に入力されると、情報処理装置1によって、図7に示すハッシュ値生成処理ルーチンが実行される。ハッシュ値生成処理ルーチンは、ハッシュ関数記憶部34に格納された特徴量に対応するハッシュ値を求めるためのハッシュ関数を用いてコンテンツの特徴量をハッシュ化する処理である。
まず、ステップS200において、入力部2によって、検索クエリとしてのコンテンツの入力を受け付ける。
ステップS202において、特徴抽出部30によって、上記ステップS200で受け付けたコンテンツから、特徴量を抽出する。
ステップS204において、ハッシュ値生成部36によって、上記ステップS202で抽出された特徴量と、上記ステップS104でハッシュ関数記憶部34に格納されたハッシュ関数とに基づいて、上記ステップS200で受け付けたコンテンツのハッシュ値を生成する。また、ハッシュ値生成部36によって、コンテンツデータベース5に格納されたN個のコンテンツの各々について、上記ステップS102で抽出された当該コンテンツの各々の特徴量と、上記ステップS104でハッシュ関数記憶部34に格納されたハッシュ関数とに基づいて、当該コンテンツのハッシュ値を生成する。
ステップS206において、出力部4によって、上記ステップS204で生成されたハッシュ値と、上記ステップS200で受け付けたコンテンツとの組み合わせ、及び上記ステップS204で生成されたハッシュ値と、N個コンテンツとの組み合わせをコンテンツデータベース5へ出力し、コンテンツデータベース5に格納して、ハッシュ値生成処理ルーチンを終了する。
以上の処理により、入力したコンテンツに対して、メディアの種別によらずハッシュ値を求めることができる。また、検索クエリとしてのコンテンツのハッシュ値と類似するハッシュ値を有するコンテンツを、N個のコンテンツから発見することができる。
以上説明したように、本発明の実施の形態に係る情報処理装置によれば、複数のコンテンツの各々の特徴量と、複数のコンテンツの各々について与えられたコンテンツの意味を表す意味ベクトルとに基づいて、複数のコンテンツの各々について、当該コンテンツから抽出された特徴量に対応するハッシュ値と、当該コンテンツの意味ベクトルに対応するハッシュ値との距離が小さくなるように、特徴量に対応するハッシュ値を求めるためのハッシュ関数、及び意味ベクトルに対応するハッシュ値を求めるためのハッシュ関数を生成することにより、コンテンツの意味を考慮したハッシュ値を求めるためのハッシュ関数を生成することができる。
また、本発明の実施の形態に係る情報処理装置によれば、コンテンツから抽出された特徴量と、生成されたハッシュ関数とに基づいて、コンテンツの特徴量に対応するハッシュ値を生成することにより、コンテンツの意味を考慮したハッシュ値を生成することができる。また、検索クエリとしてのコンテンツから抽出された特徴量と、生成されたハッシュ関数とに基づいて、検索クエリとしてのコンテンツの特徴量に対応するハッシュ値を生成することにより、コンテンツの意味を考慮したハッシュ値を用いて、検索クエリとしてのコンテンツの類似するコンテンツを精度よく発見することができる。
また、以上説明したように、本実施の形態によれば、特徴量空間の多様体構造を捉え、かつ意味ベクトルの近さを保存するようにパラメトリックなハッシュ関数を生成することによって、意味的観点において類似したコンテンツ同士を、高速かつ省メモリでありながらも高精度に発見することができる。
また、大量のコンテンツの中から、類似コンテンツを発見することができる。
また、多様な意味的観点を考慮しながら、コンテンツを、高速かつ省メモリでありながらも高精度に発見することができるという効果が得られる。
<第2の実施の形態>
<システム構成>
次に、本発明の第2の実施の形態について説明する。なお、第1の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
第2の実施の形態では、ハッシュ関数の種類が第1の実施の形態と異なっている。
上記第1の実施の形態で前述した第2の手続きでは、上記式(2)の形をとるハッシュ関数の場合において、そのパラメータwk(k=1,2,…,B)を求める方法について述べたが、本発明の実施の形態で扱えるハッシュ関数は、何もこの形に限るものではなく、別の形式をとるハッシュ関数であっても、同様にそのパラメータを決定することができる。
例えば、次のようなハッシュ関数も扱うことができる。
ここで、αk,tはパラメータ、κ(xt,x)はカーネル関数である。カーネル関数は、
のような関数であり、さらにN個の特徴量{x1,・・・,xN}に対して、
および、任意の実数αi、αjに対して
を満たすような任意の関数である。このような関数は無数に存在するが、例を挙げれば、
などが存在する。ただし、β、γは正の実数値パラメータ、pは整数パラメータであり、適宜決定してよい。
上記(13)式において、bkは
すなわち平均値で定められる定数なので、上記(13)式は、
と、内積の形に変換できる。ただし、
である。ここで、Tはハッシュ関数を定める定数である。上記ハッシュ関数を構成するカーネル関数、具体的にはカーネルベクトル写像κ(x)は、T個の特徴量によって定められるが、TはT<Nの範囲で任意の値に決めてよい。例えば、T=300等として、全特徴量{x1,・・・,xN}の中からランダムにT個選んでもよいし、あるいはK−meansなどのクラスタリング法を用いて選ばれた代表ベクトルとしてもよい。本実施の形態では、T個の特徴量が予め選択されている場合を例に説明する。
このように定義されたハッシュ関数は、カーネル関数の形で定義された非線形写像を扱うことができる。したがって、非線形な関数、すなわち、直線だけでなく、曲線も扱える点で、上記(6)式によるハッシュ関数よりも柔軟な表現が可能であるという利点を持つ。
ハッシュ関数生成部32は、予め選択されているT個のコンテンツの特徴量に基づいて、カーネル関数を生成する。
以下、(13)式の形式をとるハッシュ関数において、そのパラメータαkを決定する方法を説明する。便宜上、特徴量についてκX(xi)(i= 1,2,…,N)および意味ベクトルについてκY(yi)(i=1,2,…,N)を並べた行列ΚX={κX(x1),・・・,κX(xN)}、ΚY={κY(y1),・・・,κY(yN)}を定義する。さらに、特徴量のためのハッシュ関数のパラメータαk(k=1,2,…,B)および意味ベクトルのための疑似的なハッシュ関数のパラメータθk(k=1,2,…,B)を並べた行列Α={α1,・・・,αB}、Θ={θ1,・・・,θB}を定義する。
具体的には、上記(2)式で定義されるハッシュ関数で言うところの上記(5)式に相当する、以下の問題を解く。
JX、JYおよびJXYは、上記(6)式、(8)式、及び(9)式と同様の理由で、例えば、下記のように定義することができる。
上記(20)式、(21)式、及び(22)式を、上記(19)式に代入し、代数変形を適用すると、次の(23)式の問題が得られる。
ここで、
である。この問題は、上記(10)式の問題と等価であるため、全く同様の手続きで解くことができる。
ハッシュ関数生成部32は、特徴抽出部30によって抽出されたN個のコンテンツの各々の特徴量と、入力部2によって受け付けたN個のコンテンツの各々について与えられたコンテンツの意味ベクトルとに基づいて、上記(23)式、(24)式に従って、N個のコンテンツの各々について、当該コンテンツから抽出された特徴量に対応するハッシュ値と、当該コンテンツの意味ベクトルに対応するハッシュ値との距離が小さくなり、かつ、N個のコンテンツの各々について、多様体構造に基づいて求められる当該コンテンツの特徴量に対応するハッシュ値と、当該コンテンツから抽出された特徴量に対応するハッシュ値との距離が小さくなり、かつ、N個のコンテンツの各々について、多様体構造に基づいて求められる当該コンテンツの意味ベクトルに対応するハッシュ値と、当該コンテンツの意味ベクトルに対応するハッシュ値との距離が小さくなるように、特徴量に対応するハッシュ値を求めるためのハッシュ関数、及び意味ベクトルに対応するハッシュ値を求めるためのハッシュ関数を生成する。
ハッシュ関数生成部32によって生成された特徴量に対応するハッシュ値を求めるためのハッシュ関数及びカーネル関数は、ハッシュ関数記憶部34に記憶される。具体的には、パラメータΑおよびカーネル関数κ(x)が、ハッシュ関数記憶部34に記憶される。
ハッシュ値生成部36は、コンテンツデータベース5に格納されたN個のコンテンツの各々について、特徴抽出部30によって抽出された特徴量と、ハッシュ関数記憶部34に格納されたハッシュ関数及びカーネル関数とに基づいて、当該コンテンツの特徴量に対応するハッシュ値を生成する。
また、ハッシュ値生成部36は、入力部2によって受け付けた検索クエリとしてのコンテンツについて、特徴抽出部30によって抽出された特徴量と、ハッシュ関数記憶部34に格納されたハッシュ関数及びカーネル関数とに基づいて、当該コンテンツの特徴量に対応するハッシュ値を生成する。
なお、第2の実施の形態に係る情報処理装置の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
<第3の実施の形態>
<システム構成>
次に、図8を参照して、本発明の第3の実施の形態について説明する。なお、第1の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
第3の実施の形態では、サーバ装置とクライアント装置とで情報処理システムを構成する点が、第1及び第2の実施の形態と異なっている。第3の実施の形態では、類似コンテンツ検索を実施する情報処理システムに、本発明を適用させた場合を例に説明する。
本発明の第3の実施の形態に係る情報処理システム200は、図8に示すように、サーバ装置7と、クライアント装置13とを備えている。
図8に示すサーバ装置7は、CPUと、RAMと、各処理ルーチンを実行するためのプログラムを記憶したROMとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図8に示すように、サーバ装置7は、入力部8、演算部9、出力部10を備えている。また、演算部9は、特徴抽出部90、ハッシュ関数生成部92、ハッシュ関数記憶部94、及びハッシュ値生成部96を備えている。また、コンテンツデータベース11には、第1の実施の形態のコンテンツデータベース5と同様に、複数のコンテンツが登録されている。また、意味ベクトルデータベース12には、第1の実施の形態の意味ベクトルデータベース6と同様に、コンテンツデータベース11に登録された各コンテンツに対応する意味ベクトルが格納されているものとする。
また、図8に示すクライアント装置13は、CPUと、RAMと、各処理ルーチンを実行するためのプログラムを記憶したROMとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図8に示すように、クライアント装置13は、入力部14、演算部15、出力部16を備えている。また、演算部15は、特徴抽出部150、ハッシュ関数記憶部154、及びハッシュ値生成部156を備える。
ここで、サーバ装置7とクライアント装置13において、共通する構成要素(入力部、特徴抽出部、ハッシュ関数記憶部、ハッシュ値生成部)はそれぞれ同一の機能を有するように構成し、また、上記図1に記載した各構成要素と同一名称のものは、上記図1の場合と同一の機能を有するものとしてよい。さらに、ハッシュ値生成部の内容は、それぞれ何らかの通信手段で適宜同期されているものとする。
図8に示す装置構成における処理動作は下記の通りである。まずサーバ装置7は、上記説明した処理と同様の処理を行って、適宜、ハッシュ関数を生成してハッシュ関数記憶部94に格納し、クライアント装置13のハッシュ関数記憶部154と同期させる。さらに、コンテンツデータベース11中のコンテンツに対して、上記説明した処理と同様の処理を行って、ハッシュ値を生成し、コンテンツデータベース11に格納しておく。
一方、クライアント装置13は、入力部14によって、利用者からの検索要求、すなわち、検索クエリとしてのコンテンツの入力を受け付けたら、当該コンテンツに対してハッシュ値を生成し、出力部16からサーバ装置7の入力部8へと当該ハッシュ値を出力する。
クライアント装置13からハッシュ値を受けた場合、サーバ装置7は、当該ハッシュ値を用いて、コンテンツデータベース11に対して検索を行い、ハッシュ値に基づいて類似コンテンツを発見し、その結果をクライアント装置13へと出力する。
最後に、クライアント装置13は、サーバ装置7より受け取った検索結果を利用者に出力する。
このように構成することで、サーバ装置7でハッシュ関数生成処理を実施し、クライアント装置13ではハッシュ値生成処理のみを実施するように構成することができる。
なお、第3の実施の形態に係る情報処理システム200の他の構成及び作用については、第1の実施の形態と同様であるため、説明を省略する。
この構成を取るメリットを説明する。一般に、クライアント装置(PC,携帯端末等)は、サーバ装置と比較して演算能力に乏しいため、ハッシュ関数生成のように演算量が比較的多い処理には適さない場合がある。この構成にすれば、ハッシュ関数生成処理は演算能力の高いサーバ装置で適宜実施し、クライアント装置では演算量の少ないハッシュ値生成処理だけを実施することができる。さらに、通常、ネットワークを介した通信によってデータ容量の多い情報を伝送する場合、伝送時間が掛かるという問題があるが、当該構成によって、伝送するのは情報量の小さい複数特徴量ハッシュ値のみでよくなり、検索に対する即応性を高めることができる。
以上説明したように、前述したハッシュ関数とハッシュ値を用いることにより、多様な意味的観点とその強さも含めて類似したコンテンツを、高速かつ省メモリでありながらも高精度に発見することが可能になる。この構成により、省メモリであることから、例えば、メモリ量の小さいモバイル端末(スマートフォンやタブレット)での利用も可能となる。また、高速であることから、実時間性の要求される利用に対しても対応可能である。これらの効果を活用した具体的な利用シーンとして、街中を歩いているときに気になる場所や商品をモバイル端末で写真撮影し、類似した場所・商品を検索することが可能になる。
[実施例]
次に、第1の実施の形態で説明した処理により生成したハッシュ関数によって、類似コンテンツを高速かつ省メモリに検索する実施例の一例について説明する。前述のハッシュ関数生成処理が済んでいれば、ハッシュ関数記憶部34には、メディア種別ごとにB組のハッシュ関数が格納されている。これを用いれば、上記(2)式にしたがって、特徴量で表現された任意のコンテンツを、Bビット以下のハッシュ値で表現することができる。例えば、コンテンツデータベース5に、N個の画像コンテンツが格納されているとし、特徴量X={x1,・・・,xN}と対応する意味ベクトルY={y1,・・・,yN}が意味ベクトルデータベース6に格納されているとし、特徴量は全て上記(2)式に基づいてハッシュ値Z={z1,・・・,zN}に変換されているものとする。このとき、目的は、Xに含まれない特徴量xqに対して類似するコンテンツをXの中から発見することである。
まず、上記(2)式に基づいて、特徴量xqをハッシュ値zqに変換しておく。最も単純には、図9に示すハッシュテーブルを用いる方法がある。まず、コンテンツデータベース5に登録されているハッシュ値Zによって、図9に示すようなハッシュテーブルを構成する。このテーブルでは、あるハッシュ値と、そのハッシュ値に変換された特徴量(コンテンツ識別子)を対応づけて格納しており、ハッシュ値が与えられた際に、それと同一のハッシュ値を取るコンテンツを即時発見することができる。ここで、本発明の実施の形態により生成されるハッシュ値においては、メディア種別に寄らず、関連するもの、類似するものを同一のハッシュ値に変換できることが特徴である。すなわち、例えば、ハッシュ値「0000」を指定した場合、それに対応づけられた画像(画像1、画像3・・・)を、メディア種別に寄らずに直ちに発見できるのである。同様に、このハッシュテーブルを利用すれば、ハッシュ値zqに対応したコンテンツを即座に発見することが可能となる。
この方法によれば、コンテンツデータベース5に登録された画像コンテンツ数Nに寄らず、ほぼ一定の時間で高速に、かつ、元の特徴量をメモリに保持する必要がないため、省メモリに類似コンテンツを発見できるという利点がある。
また、別の方法として、ハミング距離による距離計算を利用することができる。すなわち、ハッシュ値zqと、Zに含まれるN個のハッシュ値との距離を計算し、距離の小さいものを類似コンテンツとして得るものである。ハッシュ値はバイナリであるため、距離計算は例えばハミング距離で計算することができるが、ハミング距離はXOR(排他的論理和)とpopcnt演算(すなわち、バイナリ列のうち、1となっているビットの数を数える演算)のみで計算できること、および、ハッシュ値は通常少数のバイナリ値で表現できることから、元の特徴量で距離計算する場合に比べ、遥かに高速に演算できる。
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。本実施形態の主要な特徴を満たす範囲内において、任意の用途と構成を取ることができることは言うまでもない。
また、上記第1の実施の形態における、ハッシュ関数生成部32と、ハッシュ値生成部36とを別々の装置として構成してもよい。その場合には、ハッシュ関数生成部32を含んでハッシュ関数生成装置を構成し、ハッシュ値生成部36を含んでハッシュ値生成装置を構成する。
また、本実施の形態の情報処理装置及び情報処理システムは、ハッシュ関数記憶部34を備えている場合について説明したが、例えばハッシュ関数記憶部34が情報処理装置及び情報処理システムの外部装置に設けられ、情報処理装置及び情報処理システムは、外部装置と通信手段を用いて通信することにより、ハッシュ関数記憶部34を参照するようにしてもよい。
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
例えば、前述した実施形態におけるハッシュ関数生成部、ハッシュ値生成部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
また、上述の情報処理装置及び情報処理システムは、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。