特許第5755823号(P5755823)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 楽天株式会社の特許一覧

特許5755823類似度算出システム、類似度算出方法およびプログラム
<>
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000002
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000003
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000004
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000005
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000006
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000007
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000008
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000009
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000010
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000011
  • 特許5755823-類似度算出システム、類似度算出方法およびプログラム 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】5755823
(24)【登録日】2015年6月5日
(45)【発行日】2015年7月29日
(54)【発明の名称】類似度算出システム、類似度算出方法およびプログラム
(51)【国際特許分類】
   G06F 17/30 20060101AFI20150709BHJP
【FI】
   G06F17/30 350C
   G06F17/30 210D
【請求項の数】7
【全頁数】16
(21)【出願番号】特願2014-561650(P2014-561650)
(86)(22)【出願日】2014年3月31日
(86)【国際出願番号】JP2014059470
【審査請求日】2014年12月26日
【早期審査対象出願】
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】特許業務法人はるか国際特許事務所
(72)【発明者】
【氏名】ジェヴァヒル アリ
【審査官】 山本 俊介
(56)【参考文献】
【文献】 佐々木 崇裕, 後藤 英昭,高速日本語文字認識のための線形判別分析を用いた高精度クラスタリング手法,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2012年12月 6日,Vol.112 No.357,p.19−24
【文献】 Yohei Sobu, Hideaki Goto,Binary Tree-Based Accuracy-Keeping Clustering Using CDA for Very Fast Japanese Character Recognition,Proceedings of the 12th IAPR Conference on Machine Vision Applications (MVA2011),2011年 6月15日,p.299−302,[retrieved on 24 April 2014] Retrieved from the Internet:<URL:http://www.mva-org.jp/Proceedings/2011,URL,http://www.mva-org.jp/Proceedings/2011CD/papers/09-18.pdf
【文献】 黄瀬 浩一,第2回 マルチメディア検索の最先端 − 大規模静止画像DBの検索,映像情報メディア学会誌,日本,(社)映像情報メディア学会,2010年 2月 1日,第64巻 第2号,p.192−197
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
複数の第1対象ベクトルを取得する第1対象ベクトル取得手段と、
前記複数の第1対象ベクトルよりも次元数が小さな複数の第2対象ベクトルを所定の処理を前記各第1対象ベクトルに施すことにより生成する第2対象ベクトル生成手段と、
前記複数の第2対象ベクトルに基づいて、前記各第1対象ベクトル及びそれに対応する前記第2対象ベクトルが属する複数のクラスタを取得するクラスタリング手段と、
前記第1対象ベクトルと次元数が等しい所与のクエリベクトルに前記所定の処理を施すことにより、前記クエリベクトルよりも次元数が小さな第2クエリベクトルを生成する第2クエリベクトル生成手段と、
前記第2クエリベクトルに基づいて1又は複数の前記クラスタを選出するクラスタ選出手段と、
前記選出される1又は複数の前記クラスタに属する前記各第1対象ベクトルと、前記クエリベクトルと、の各類似度を算出する類似度算出手段と、
を含む類似度算出システム。
【請求項2】
請求項1に記載の類似度算出システムにおいて、
前記各クラスタについて、該クラスタに属する前記各第1対象ベクトルに基づいて転置インデックスを生成する転置インデックス生成手段をさらに含み、
前記類似度算出手段は、生成される前記転置インデックスに基づいて前記各類似度を算出する、
類似度算出システム。
【請求項3】
請求項1または2に記載の類似度算出システムにおいて、
前記第2対象ベクトル生成手段は、前記各第1対象ベクトルと、それぞれベクトル要素がランダムに決定され、前記第1対象ベクトルの次元数よりも少数であって前記第1対象ベクトルと次元数が等しい変換ベクトルと、の各内積を算出することにより、前記各第2対象ベクトルの各ベクトル要素を算出する、
類似度算出システム。
【請求項4】
請求項1乃至3のいずれかに記載の類似度算出システムにおいて、
前記第2対象ベクトル生成手段は、前記第1対象ベクトルが追加される場合に、追加される前記第1対象ベクトルに応じた前記第2対象ベクトルを前記所定の処理を前記追加される前記第1対象ベクトルに施すことにより生成し、
前記クラスタリング手段は、新たに生成される前記第2対象ベクトルに基づいて、前記追加される前記第1対象ベクトルが属する前記クラスタを選出する、
類似度算出システム。
【請求項5】
請求項3に記載の類似度算出システムにおいて、
前記第2対象ベクトル生成手段は、
前記第1対象ベクトルに対して次元数が追加された次元追加対象ベクトルが追加される場合に、追加された次元数と同数だけ前記変換ベクトルの次元数を増加する手段を含み、
該次元数が増加された前記変換ベクトルに基づき、前記次元追加対象ベクトルに応じた前記第2対象ベクトルを新たに生成し、
前記クラスタリング手段は、新たに生成される前記第2対象ベクトルに基づいて、前記追加される前記次元追加対象ベクトルが属するクラスタを選出する、
類似度算出システム。
【請求項6】
第1対象ベクトル取得手段が、複数の第1対象ベクトルを取得する対象ベクトル取得ステップと、
第2対象ベクトル生成手段が、前記複数の第1対象ベクトルよりも次元数が小さな複数の第2対象ベクトルを所定の処理を前記各第1対象ベクトルに施すことにより生成する第2対象ベクトル生成ステップと、
クラスタリング手段が、前記複数の第2対象ベクトルに基づいて、前記各第1対象ベクトル及びそれに対応する前記第2対象ベクトルが属するクラスタを取得するクラスタリングステップと、
第2クエリベクトル生成手段が、前記第1対象ベクトルと次元数が等しい所与のクエリベクトルに前記所定の処理を施すことにより、前記クエリベクトルよりも次元数が小さな第2クエリベクトルを生成する第2クエリベクトル生成ステップと、
クラスタ選出手段が、前記第2クエリベクトルに基づいて1又は複数の前記クラスタを選出するクラスタ選出ステップと、
類似度算出手段が、前記選出される1又は複数の前記クラスタに属する前記各第1対象ベクトルと、前記クエリベクトルと、の各類似度を算出する類似度算出ステップと、
を含む類似度算出方法。
【請求項7】
複数の第1対象ベクトルを取得する対象ベクトル取得手段、
前記複数の第1対象ベクトルよりも次元数が小さな複数の第2対象ベクトルを所定の処理を前記各第1対象ベクトルに施すことにより生成する第2対象ベクトル生成手段、
前記複数の第2対象ベクトルに基づいて、前記各第1対象ベクトル及びそれに対応する前記第2対象ベクトルが属するクラスタを取得するクラスタリング手段、
前記第1対象ベクトルと次元数が等しい所与のクエリベクトルに前記所定の処理を施すことにより、前記クエリベクトルよりも次元数が小さな第2クエリベクトルを生成する第2クエリベクトル生成手段
前記第2クエリベクトルに基づいて1又は複数の前記クラスタを選出するクラスタ選出手段、及び
前記選出される1又は複数の前記クラスタに属する前記第1対象ベクトルと、前記クエリベクトルと、の各類似度を算出する類似度算出手段、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は類似度算出システム、類似度算出方法およびプログラムに関する。
【背景技術】
【0002】
所与のクエリベクトルが複数の対象ベクトルのいずれと類似しているかを算出する類似度算出システムがある。こうしたシステムは、例えば、各ベクトルがユーザの嗜好を示すようにして、類似した嗜好を有するユーザを検索するのに用いられたり、各ベクトルが文書の特徴を示すようにして、類似した文書を検索するのに用いられたりする。
【0003】
ここで、対象ベクトルの数が膨大となると、クエリベクトルに最も類似する対象ベクトルを判断するのに時間が掛かってしまう。この問題を解決するため、下記特許文献1には、対象ベクトルをクラスタリングするとともに、クラスタ毎に代表ベクトルを算出しておく方法が開示されている。この方法によれば、クエリベクトルが与えられると、該クエリベクトルと各代表ベクトルとの類似度を計算し、計算結果に基づいて最も類似するクラスタを選択する。そして、選択されたクラスタに属する対象ベクトルと、クエリベクトルと、の各類似度を計算することにより、クエリベクトルに最も類似する対象ベクトルを判断する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2013−65146号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述の先行技術によれば、類似度計算の回数を削減でき、クエリベクトルに最も類似する対象ベクトルを判断する時間を短縮できる。しかし、対象ベクトルの次元数が大きいと、それらをクラスタリングするのに時間が掛かってしまう。
【0006】
本発明は上記課題に鑑みてなされたものであって、その目的は、対象ベクトルの次元数が大きくても、クエリベクトルとの類似度を高速に計算することができる類似度算出システム、方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明にかかる類似度算出システムは、複数の第1対象ベクトルを取得する第1対象ベクトル取得手段と、前記複数の第1対象ベクトルよりも次元数が小さな複数の第2対象ベクトルを所定の処理を前記各第1対象ベクトルに施すことにより生成する第2対象ベクトル生成手段と、前記複数の第2対象ベクトルに基づいて、前記各第1対象ベクトル及びそれに対応する前記第2対象ベクトルが属する複数のクラスタを取得するクラスタリング手段と、前記第1対象ベクトルと次元数が等しい所与のクエリベクトルに基づいて選択される1又は複数の前記クラスタに属する前記各第1対象ベクトルと、前記クエリベクトルと、の各類似度を算出する類似度算出手段と、を含む。
【0008】
また、本発明にかかるプログラムは、複数の第1対象ベクトルを取得する対象ベクトル取得手段、前記複数の第1対象ベクトルよりも次元数が小さな複数の第2対象ベクトルを所定の処理を前記各第1対象ベクトルに施すことにより生成する第2対象ベクトル生成手段、前記複数の第2対象ベクトルに基づいて、前記各第1対象ベクトル及びそれに対応する前記第2対象ベクトルが属するクラスタを取得するクラスタリング手段、及び、前記第1対象ベクトルと次元数が等しい所与のクエリベクトルに基づいて選択される1又は複数の前記クラスタに属する前記第1対象ベクトルと、前記クエリベクトルと、の各類似度を算出する類似度算出手段、としてコンピュータを機能させる。
【0009】
また、本発明にかかる類似度算出方法は、複数の第1対象ベクトルを取得する対象ベクトル取得ステップと、前記複数の第1対象ベクトルよりも次元数が小さな複数の第2対象ベクトルを所定の処理を前記各第1対象ベクトルに施すことにより生成する第2対象ベクトル生成ステップと、前記複数の第2対象ベクトルに基づいて、前記各第1対象ベクトル及びそれに対応する前記第2対象ベクトルが属するクラスタを取得するクラスタリングステップと、前記第1対象ベクトルと次元数が等しい所与のクエリベクトルに基づいて選択される1又は複数の前記クラスタに属する前記各第1対象ベクトルと、前記クエリベクトルと、の各類似度を算出する類似度算出ステップと、を含む。
【0010】
本発明によれば、第1対象ベクトルの次元数が大きい場合でも、クエリベクトルとの類似度を高速に計算することができる。
【0011】
本発明の一態様では、類似度算出システムは、前記クエリベクトルよりも次元数が小さな第2クエリベクトルを前記所定の処理を前記クエリベクトルに施すことにより生成する第2クエリベクトル生成手段と、前記第2クエリベクトルに基づいて1又は複数の前記クラスタを選出するクラスタ選出手段と、をさらに含んでもよい。
【0012】
本発明の一態様では、類似度算出システムは、前記各クラスタについて、該クラスタに属する前記各第1対象ベクトルに基づいて転置インデックスを生成する転置インデックス生成手段をさらに含み、前記類似度算出手段は、生成される前記転置インデックスに基づいて前記各類似度を算出してもよい。
【0013】
本発明の一態様では、前記第2対象ベクトル生成手段は、前記各第1対象ベクトルと、それぞれベクトル要素がランダムに決定され、前記第1対象ベクトルの次元数よりも少数であって前記第1対象ベクトルと次元数が等しい変換ベクトルと、の各内積を算出することにより、前記各第2対象ベクトルの各ベクトル要素を算出してもよい。
【0014】
本発明の一態様では、前記第2対象ベクトル生成手段は、前記第1対象ベクトルが追加される場合に、追加される前記第1対象ベクトルに応じた前記第2対象ベクトルを前記所定の処理を前記追加される前記第1対象ベクトルに施すことにより生成し、前記クラスタリング手段は、新たに生成される前記第2対象ベクトルに基づいて、前記追加される前記第1対象ベクトルが属する前記クラスタを選出してもよい。
【0015】
本発明の一態様では、前記第2対象ベクトル生成手段は、前記第1対象ベクトルに対して次元数が追加された次元追加対象ベクトルが追加される場合に、追加された次元数と同数だけ前記変換ベクトルの次元数を増加する手段を含み、該次元数が増加された前記変換ベクトルに基づき、前記次元追加対象ベクトルに応じた前記第2対象ベクトルを新たに生成し、前記クラスタリング手段は、新たに生成される前記第2対象ベクトルに基づいて、前記追加される前記次元追加対象ベクトルが属するクラスタを選出してもよい。
【図面の簡単な説明】
【0016】
図1】本発明の実施形態にかかる類似検索サーバのハードウェア構成の一例を示す図である。
図2】類似検索サーバが実現する機能を示すブロック図である。
図3】対象ベクトルを複数のクラスタに分類しインデックスを作成する処理の一例を示すフロー図である。
図4】対象ベクトルを変換する処理の一例を説明する図である。
図5】対象ベクトルを変換する計算の一例を示す図である。
図6】変換行列の各要素の値の一例を示す図である。
図7】複数の対象ベクトルを変換する処理の一例を説明する図である。
図8】ベクトル格納部に格納される対象ベクトル等の情報の一例を示す図である。
図9】転置インデクスの一例を示す図である。
図10】クエリベクトルを用いて類似の対象ベクトルを探す処理のフローの一例を示す図である。
図11】追加の対象ベクトルをクラスタに分類しインデックスを作成する処理の一例を示す図である。
【発明を実施するための形態】
【0017】
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
【0018】
本発明の実施形態にかかる類似検索システムは、類似検索サーバ1を含む。類似検索サーバ1はサーバコンピュータである。類似検索サーバ1は、ネットワークを介して類似検索の開始を指示するパーソナルコンピュータやスマートフォン等と接続されていてもよい。
【0019】
図1は、類似検索サーバ1のハードウェア構成の一例を示す図である。類似検索サーバ1は、プロセッサ11、記憶部12、通信部13、入出力部14を含む。
【0020】
プロセッサ11は、記憶部12に格納されているプログラムに従って動作する。またプロセッサ11は通信部13、入出力部14を制御する。なお、上記プログラムは、インターネット等を介して提供されるものであってもよいし、フラッシュメモリやDVD−ROM等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよい。
【0021】
記憶部12は、RAMやフラッシュメモリ等のメモリ素子やハードディスクドライブによって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、各部から入力される情報や演算結果を格納する。
【0022】
通信部13は、他の装置と通信する機能を実現するものであり、例えば有線LANの集積回路やコネクタ端子などにより構成されている。通信部13は、プロセッサ11の制御に基づいて、他の装置から受信した情報をプロセッサ11や記憶部12に入力し、他の装置に情報を送信する。
【0023】
入出力部14は、表示出力手段をコントロールするビデオコントローラや、入力デバイスからのデータを取得するコントローラなどにより構成される。入力デバイスとしては、キーボード、マウス、タッチパネルなどがある。入出力部14は、プロセッサ11の制御に基づいて、表示出力デバイスに表示データを出力し、入力デバイスをユーザが操作することにより入力されるデータを取得する。表示出力デバイスは例えば外部に接続されるディスプレイ装置である。
【0024】
図2は、類似検索サーバ1が実現する機能を示すブロック図である。類似検索サーバ1は、機能的に、対象ベクトル取得部51と、縮小対象ベクトル生成部52と、クラスタ分類部53と、インデックス生成部54と、クエリベクトル取得部57と、縮小クエリベクトル生成部58と、クラスタ選出部59と、類似度算出部60と、を含む。これらの機能は、プロセッサ11が記憶部12に格納されたプログラムを実行し、通信部13や入出力部14を制御することで実現される。縮小対象ベクトル生成部52は、機能的に変換行列取得部55と、変換部56とを含んでいる。また、類似検索サーバ1は対象情報格納部71とベクトル格納部72とを含む。対象情報格納部71は類似検索の対象となる文書またはユーザなどの情報を格納し、ベクトル格納部72は、複数の対象ベクトルを格納する。ここで、対象ベクトルのそれぞれは、対応する文書またはユーザなどの情報から生成される特徴ベクトルである。対象情報格納部71およびベクトル格納部72は、主に記憶部12により構成されているが、他のサーバの記憶部などにより構成され、格納される情報を、類似検索サーバ1内の各機能とネットワークを介してやりとりしてもよい。
【0025】
本実施形態では、大きく分けて3種類の処理が行われる。1種類目の処理は、クエリベクトルに類似する対象ベクトルを検索する処理である。2種類目の処理は、その検索をする準備として、対象ベクトルが分類されるクラスタやインデックスを作成する処理である。3種類目の処理は、対象ベクトルが追加される場合(以下では追加される対象ベクトルを追加対象ベクトルと記載する)にその追加対象ベクトルをいずれかのクラスタに分類しインデックスを修正する処理である。1種類目の処理はクエリベクトル取得部57、縮小クエリベクトル生成部58、クラスタ選出部59、類似度算出部60により行われる。2種類目および3種類目の処理は、対象ベクトル取得部51、縮小対象ベクトル生成部52、クラスタ分類部53、インデックス生成部54により行われる。
【0026】
はじめに、対象ベクトルが分類されるクラスタやインデックスを作成する処理から説明する。図3は、対象ベクトルを複数のクラスタに分類しインデックスを作成する処理の一例を示すフロー図である。以下ではこの処理フローとともに各機能について説明する。
【0027】
対象ベクトル取得部51は、プロセッサ11および記憶部12を中心として実現される。対象ベクトル取得部51は、複数の対象ベクトルを取得する。より具体的には、対象情報格納部71に格納される文書やユーザなどの情報から対象ベクトルを生成する(ステップS101)。また、対象ベクトル取得部51は生成された対象ベクトルをベクトル格納部72に格納する。例えば、対象ベクトルが電子的な文書から生成される場合には、対象ベクトルは文書に対応し、その対象ベクトルに含まれる複数の要素のそれぞれは単語に対応する。なお対象ベクトルの次元数は対象ベクトルの要素の数となる。また対象ベクトルの要素の値は、対応する文書における単語の出現頻度を示すスコア(例えばTF−IDFの値)である。ある文書におけるある単語に対するTF−IDFの値は、文書中にその単語が出現しない場合は0となり、単語が出現してもそれが多くの文書で表れる一般的な語と思われる単語である場合はそうでない単語の場合より小さな値となる。また、複数のユーザ情報のそれぞれから対象ベクトルを生成してもよい。この場合、対象ベクトルの要素がユーザ情報の属性(ユーザの属性を示す情報)に対応してもよいし、その属性が複数の値を取りうる場合には、その属性の値ごとに対応する要素が存在してよい。文書やユーザ属性から対象ベクトルを生成する具体的な方法は公知であるので詳細の記載は省略する。
【0028】
縮小対象ベクトル生成部52は、プロセッサ11および記憶部12を中心として実現される。縮小対象ベクトル生成部52に含まれる変換行列取得部55は、対象ベクトルのそれぞれを対象ベクトルより次元数の小さい縮小対象ベクトルに変換するための変換行列Rを取得する(ステップS102)。そして、縮小対象ベクトル生成部52に含まれる変換部56は、対象ベクトルのそれぞれを対象ベクトルより次元数の小さい縮小対象ベクトルに変換し(ステップS103)、変換された縮小対象ベクトルをベクトル格納部72に格納させる。
【0029】
図4は、対象ベクトルを変換する処理の一例を説明する図である。図4は一つの対象ベクトルx(w,…,w)が変換行列Rにより縮小対象ベクトルy(s,…,s)に変換されることを示している。ここで、対象ベクトルの次元数はm、縮小対象ベクトルの次元数はnであり、nはmに比べて十分に小さい(例えばmの4分の1未満)とする。図5は、対象ベクトルを変換する計算を示す図である。本図からわかるように、縮小対象ベクトルyのt番目(tは1以上n以下の整数とする)の要素を計算する処理は、対象ベクトルxの1番目からm番目の要素の値と、変換行列Rのt列の1行目からm行目までの要素の値とをそれぞれ掛け、さらにその掛けられた値を積算することで求められる。これは、変換行列Rの各列をm次元の変換ベクトルと考えると、縮小対象ベクトルyのt番目の要素の値が、対象ベクトルと変換ベクトルの内積の値であるともいえる。ここで、u番目(uは1以上n以下の整数)の変換ベクトルは、(ru,1,ru,2,…,ru,m)となる。
【0030】
なお、対象ベクトルを縮小対象ベクトルに変換する処理において、縮小対象ベクトル生成部52は、対象ベクトルの要素のうち値が0でない要素とその要素に対応する変換行列Rの要素との積を積算することで縮小対象ベクトルの要素の値を取得してもよい。この場合、変換行列Rの各行のうち、対象ベクトルの複数の要素のうち値が0でない要素に対応する行のみがこの計算に用いられる。
【0031】
図6は、変換行列Rの各要素の値の一例を示す図である。変換行列Rの各要素の値は、乱数を用いてランダムに決定される。図6の例では、要素の値として取りうる値は{−1,0,1}の3つであり、そのそれぞれの値が出現する位置はランダムとなる。ここで、これらの3つの値のうち1と−1の値の出現する数は等しい。例えば変換行列の要素の数の1/6の値が1、また1/6の値が−1、残りの2/3の値が0である。さらにいえば、変換行列取得部55は、変換行列Rの各列の要素について、予め定められた数の1および−1をランダムに配置し、残りの要素に0を配置することで変換行列Rを生成する。変換行列Rで値が0となる要素の数と全体の要素の数との比は0から2/3程度にすると精度の上では好適であるが、その比を2/3より大きくしてもよい。
【0032】
図7は、複数の対象ベクトルを変換する処理の一例を説明する図である。複数の対象ベクトルから複数の縮小対象ベクトルに変換する処理は、行列演算で表すことができる。具体的には、行のそれぞれが対象ベクトルとなる対象行列Xと変換行列Rの積を求めることにより、行のそれぞれが縮小対象ベクトルとなる縮小対象行列Yが求められる。変換部56はこの行列演算の処理を実行することにより、複数の縮小対象ベクトルを取得する。
【0033】
なお、本実施形態ではランダムな変換行列Rを用いて縮小対象ベクトルを生成しているが、他の方法を用いて生成してもよい。例えば縮小対象ベクトル生成部52はPCA(Principal components analysis)法を用いて対象ベクトルからより次元数の小さい縮小対象ベクトルに変換してもよい。
【0034】
クラスタ分類部53は、プロセッサ11および記憶部12を中心として実現される。クラスタ分類部53は、縮小対象ベクトルに基づいて、対象ベクトルおよびそれに対応する縮小対象ベクトルが属する複数のクラスタを取得する。より具体的には、縮小対象ベクトルが生成されると、はじめにクラスタ分類部53はその複数の縮小対象ベクトルをクラスタリングすることにより、その複数の縮小対象ベクトルを複数のクラスタに分類する(ステップS104)。クラスタ分類部53はk−means法などの公知のクラスタリング手法を用いてクラスタに分類してよい。
【0035】
次に、クラスタ分類部53は各クラスタにそのクラスタに属する縮小対象ベクトルに対応する対象ベクトルを所属させる(ステップS105)。ここで、縮小対象ベクトルに対応する対象ベクトルは、縮小対象ベクトルの変換元である対象ベクトルのことである。これにより、各クラスタに縮小対象ベクトルと対象ベクトルとが属するようになる。
【0036】
図8は、ベクトル格納部72に格納される対象ベクトル等の情報の一例を示す図である。図8に示す情報の1レコードは、対象ベクトルおよび縮小対象ベクトルを特定するベクトル番号と、対象ベクトルと縮小対象ベクトルと、そのそれぞれが属するクラスタを示す情報であるクラスタ番号とを含む。対象ベクトルと縮小対象ベクトルとは1対1に対応し、1つの対象ベクトルと、それに対応する縮小対象ベクトルとは同じクラスタに属する。よって1つのレコードには1つのクラスタ番号のみ存在している。図8に示すベクトル格納部72のデータ構造の場合、ステップS105に示す処理は具体的には縮小対象ベクトルについて一時的なメモリに格納されているクラスタ番号をベクトル格納部72の各レコードに反映させる処理となる。なお、縮小対象ベクトルを対象ベクトルと別に管理してもよい。例えば、ベクトル番号と縮小対象ベクトルとクラスタ番号とを含むレコードの組により縮小対象ベクトルを管理し、対象ベクトルと縮小対象ベクトルとをベクトル番号により関連づけてもよい。なお、図8には対象ベクトルの要素の値や縮小対象ベクトルの要素の値として整数以外の値が記載されていないが、実際には整数以外の値が存在しても構わない。
【0037】
各ベクトルは、他のベクトルに対する相対的な類似度が対象ベクトルを変換する処理の前と後で維持されている。対象ベクトルの次元数を縮小する変換のアルゴリズムは、このような性質を有するものを用いる。それゆえ、縮小対象ベクトルのクラスタは、元の対象ベクトルのクラスタとしても利用可能である。
【0038】
そして、クラスタ分類部53は各クラスタに含まれる縮小対象ベクトルに基づいて、各クラスタの代表ベクトルを生成する(ステップS106)。クラスタの代表ベクトルは、その対象ベクトルの特徴を示し縮小対象ベクトルと同じ次元数を有する特徴ベクトルであり、例えばそのクラスタに含まれる複数の縮小対象ベクトルの重心や、その重心に最も近い縮小対象ベクトルである。代表ベクトルは、クエリベクトルに類似するクラスタを選択するために用いられ、クラスタ分類部53は代表ベクトルを記憶部12に格納する。
【0039】
クラスタリングに対象ベクトルではなく縮小対象ベクトルを用いると次元数が減るため、クラスタリングにかかる処理時間が短縮される。またランダムな変換行列Rにより変換された縮小対象ベクトル間の距離は、対応する対象ベクトル間の距離と概ね整合する値になる傾向があるので、縮小対象ベクトル間の距離を用いることによる精度の低下も抑えられる。
【0040】
インデックス生成部54は、プロセッサ11および記憶部12を中心として実現される。インデックス生成部54は、対象ベクトルがクラスタに分類されると、各クラスタについて、そのクラスタに属する対象ベクトルから転置インデックスを生成する(ステップS107)。
【0041】
図9は、転置インデクスの一例を示す図である。転置インデックスはクラスタと要素の組ごとに設けられるレコードを含み、各レコードはキー属性となる要素を特定する情報である要素番号と、要素を含む対象ベクトルおよびその対象ベクトルにおけるその要素の値の組のリストとを含む。図9において、クラスタ番号1の要素番号1のレコードにおける対象ベクトルと要素の値の組(x1,1)のうちx1はベクトル番号が1の対象ベクトルを示し、1はその対象ベクトルにおける1番目の要素の値を示す。
【0042】
転置インデックスは、クラスタ内の対象ベクトルとクエリベクトルとの類似度を計算する際の処理を効率化するためのインデックスであり、このインデックスを用いることでクエリベクトルのうち値をもつ要素について、その要素に値を有する対象ベクトルによる類似度への寄与を高速に計算することが可能になる。転置インデックスの作成手法は公知なので詳細の説明は省略する。
【0043】
次に、クエリベクトルに類似する対象ベクトルを検索する処理について説明する。図10は、クエリベクトルを用いて類似の対象ベクトルを探す処理のフローの一例を示す図である。以下ではこの処理フローとともに各機能について説明する。
【0044】
クエリベクトル取得部57は、プロセッサ11、記憶部12および通信部13を中心として実現される。クエリベクトル取得部57は、クエリベクトルを生成することでクエリベクトルを取得する(ステップS201)。クエリベクトル取得部57は、例えばネットワークを介して接続されるユーザ端末等から電子的な文書やユーザ情報などを取得し、その電子的な文書やユーザ情報などからクエリベクトルを生成する。クエリベクトル取得部57がクエリベクトルを生成する方法は、対象ベクトル取得部51が電子的な文書やユーザ情報などから対象ベクトルを生成する方法と同じである。
【0045】
縮小クエリベクトル生成部58は、プロセッサ11および記憶部12を中心として実現される。縮小クエリベクトル生成部58は、クエリベクトルに対応する縮小クエリベクトルを生成する(ステップS202)。縮小クエリベクトル生成部58が縮小クエリベクトルを生成する方法は、縮小対象ベクトル生成部52が対象ベクトルから縮小対象ベクトルを生成する方法と同じである。
【0046】
クラスタ選出部59は、プロセッサ11および記憶部12を中心として実現される。クラスタ選出部59は生成された縮小クエリベクトルに基づいてクラスタを選出する。クラスタ選出部59は、より具体的には、縮小クエリベクトルと複数のクラスタのそれぞれを代表する代表ベクトルとに基づいてクラスタを選出する。この際、クラスタ選出部59は縮小クエリベクトルと代表ベクトルとの距離を計算し、縮小クエリベクトルに対して最も距離が小さい代表ベクトルに対応するクラスタを選出する。なお、クラスタ選出部59は距離が小さいものからいくつか複数の代表ベクトルに対応するクラスタを選出してもよい。
【0047】
類似度算出部60は、プロセッサ11および記憶部12を中心として実現される。類似度算出部60は、選出されたクラスタに属する複数の対象ベクトルのそれぞれと、変換前のクエリベクトルとの類似度を算出する(ステップS204)。本実施形態では、類似度算出部60はインデックス生成部54が生成した転置インデックスを用いてクエリベクトルと対象ベクトルとの類似度を算出する。具体的には、はじめに類似度算出部60はそのクラスタに属する複数の対象ベクトルのそれぞれについて類似度の値を示す積算変数を初期化する。次に類似度算出部60はクエリベクトルのうち値の設定されている複数の要素のそれぞれについて、転置インデックスを用いてその要素に対応する(要素の値が0でない)対象ベクトルと対象ベクトルのその要素の値とを取得し、クエリベクトルのその要素の値と対象ベクトルのその要素の値との積をその対象ベクトルの積算変数に加算する。この処理がなされると、各対象ベクトルの積算変数(クエリベクトルと対象ベクトルとの内積に相当)が類似度の値となる。なお、類似度算出部60のより算出される類似度は、クエリベクトルと、選出されたクラスタに属する各対象ベクトルとのコサイン類似度であってよい。対象ベクトルやクエリベクトルとして予め正規化されたベクトルを用いると、上述の転置インデクスを用いた積算変数の値はコサイン類似度の値に相当するものになる。
【0048】
また、類似度算出部60は、最も類似度の高い対象ベクトルを選択し、最も類似度の高い対象ベクトルに関する情報を出力する(ステップS205)。対象ベクトルに関する情報は、対象ベクトルそのものの情報でもよいし、対象ベクトルが生成される元となる文書などの情報でもよい。また類似度算出部60は類似検索サーバ1に接続される表示出力手段に向けてその文書等の情報を出力してもよいし、ネットワークを介してユーザ端末等にその文書等の情報を送信してもよい。
【0049】
一度対象ベクトルを縮小対象ベクトルに変換すると、文書等の類似の順位を決めるために、通常は縮小対象ベクトルを用いて類似度を算出することを考える。しかしながら、クラスタ内を検索する場合、情報量が少なくなった縮小対象ベクトルを用いると精度の低下が生じ、最もクエリベクトルに類似する対象ベクトルを見つけられない恐れがある。本実施形態ではクラスタリングに縮小対象ベクトルを用い、クラスタ内の類似度の計算に変換前の対象ベクトルを用いることで、クラスタリングにかかる時間の低減と、クラスタを用いた検索の精度の向上とを両立させることができる。また、縮小対象ベクトルをクラスタ選択に用い、対象ベクトルを選択後の類似度の計算に用いることで、クラスタの特性を考慮した精度の高い計算と、処理の高速化とを両立させることもできる。
【0050】
次に、追加対象ベクトルが与えられる場合にその追加対象ベクトルをいずれかのクラスタに分類しインデックスを修正する処理について説明する。図11は追加の対象ベクトルをクラスタに分類しインデックスを作成する処理の一例を示す図である。
【0051】
はじめに、対象ベクトル取得部51は、追加対象ベクトルを取得する(ステップS301)。対象ベクトル取得部51は、追加対象ベクトルの元となる文書等の情報が与えられる場合はステップS101と同じ手法で追加対象ベクトルを取得する。
【0052】
ここで、追加対象ベクトルの元となる文書に新たな単語が出現した場合に、追加対象ベクトルの次元数が既にクラスタに分類されている対象ベクトルの次元数より大きくなる場合が考えられる。その対応について以下に説明する。
【0053】
追加対象ベクトルの次元数が既にクラスタに分類されている対象ベクトルの次元数以下である場合には(ステップS302のN)ステップS303の処理を行わない。一方、追加対象ベクトルの次元数が既にクラスタに分類されている対象ベクトルの次元数より大きい場合には(ステップS302のY)、縮小対象ベクトル生成部52に含まれる変換行列取得部55は、増加した次元にあわせて変換行列Rを修正する(ステップS303)。より具体的には、変換行列取得部55は、追加対象ベクトルではじめて追加された要素の位置(例えば最終列)に対応する行(例えば最終行)をその変換行列Rに挿入する。その行は、複数の変換ベクトルの要素のうち、追加対象ベクトルの追加された要素との積を取る要素からなる。変換行列Rに挿入される行の要素には、元の変換行列Rの要素の値を決定する方法と同じように、同じ数の−1と1とがランダムに配置される。
【0054】
そして、縮小対象ベクトル生成部52の変換部56は、追加対象ベクトルを変換し、縮小追加対象ベクトルを生成する(ステップS304)。変換部56が縮小追加対象ベクトルを生成する方法はステップS103で対象ベクトルから縮小対象ベクトルを生成する方法と同じである。
【0055】
次に、クラスタ分類部53は、各クラスタの代表ベクトルと、縮小追加対象ベクトルとに基づいて、追加対象ベクトルが属するクラスタを選出する(ステップS305)。より具体的には、クラスタ分類部53は縮小対象ベクトルから生成された各クラスタの代表ベクトルと、縮小追加対象ベクトルとの距離を計算し、最も距離の短い代表ベクトルに対応するクラスタを、縮小追加対象ベクトルが属するクラスタとして選出する。また、クラスタ分類部53は選出されたクラスタに追加対象ベクトルを関連づけて記憶させる(ステップS306)。より具体的にはクラスタ分類部53は、対象ベクトル番号の欄、対象ベクトルの欄、クラスタ番号の欄、縮小対象ベクトルの欄のそれぞれに、追加対象ベクトルの番号、追加対象ベクトルの要素、その追加対象ベクトルに対応づけられたクラスタの番号、縮小対象ベクトルの要素、の情報を含むレコードを追加する。このようにすることで、クラスタリングを始めからやり直さなくても追加対象ベクトルをクラスタに分類することができる。
【0056】
また、変換行列Rの要素の値がランダムに生成されるため、新たな単語が出たなどの理由により追加対象ベクトルの要素の数が増えても、変換行列Rの行を追加することにより縮小追加対象ベクトルを生成することができる。さらに、仮に、追加前の対象ベクトルにその新たな単語に対応する要素が追加され、行が追加された変換行列Rを用いて縮小対象ベクトルが計算されたとすると、その縮小対象ベクトルは、要素を追加する前に計算された縮小対象ベクトルと同じものになる。なぜなら、既存の対象ベクトルの元となる文書等にはその要素に対応する単語等が存在しないなどの理由により、既存の対象ベクトルに追加される要素の値が0になるので、追加された要素の値に変換行列Rの要素の値をかけた値(つまり0)によっては対応する縮小対象ベクトルの要素の値は変化しないからである。したがって、既存の対象ベクトルについて縮小対象ベクトルを再計算したり、クラスタリングをやり直す必要がない。
【0057】
インデックス生成部54は、追加対象ベクトルがクラスタに関連づけられると、追加対象ベクトルに基づいて選出されたクラスタの転置インデックスを修正する(ステップS307)。より具体的には、インデックス生成部54は、追加対象ベクトルの要素のうち0以外の値を有する要素をキーとするレコードの対象ベクトルの要素の値の組のリストに、追加対象ベクトルと、その要素の値との組を追加する。また新たな要素が追加されている場合には、そのレコードを追加する。
【0058】
このように転置インデックスを修正すれば、一から転置インデックスを再作成しなくてもクエリベクトルとクラスタのいずれかに属する対象ベクトルとの類似度を計算することが可能になる。
【0059】
ここで、既存の対象ベクトルの元となる文書等が更新された場合に、それに応じて更新された対象ベクトルが属するクラスタの転置インデックスの更新等が行われてもよい。例えば、追加対象ベクトルをクラスタに分類しインデックスを作成する処理に類似する以下の処理を行う。はじめに対象ベクトル取得部51は、対象ベクトルの元となる文書等が更新された場合に、その文書等から更新された対象ベクトルを生成する。変換行列取得部55は対象ベクトルの要素の数が増加した場合には変換行列Rを修正し、そうでない場合には既に生成された変換行列Rを取得する。次に変換部56は、更新された対象ベクトルを縮小対象ベクトルに再び変換する。そして、クラスタ分類部53は各クラスタの代表ベクトルと、更新された対象ベクトルに対応する縮小対象ベクトルとに基づいて、その対象ベクトルが属するクラスタを選出し、インデックス生成部54はその更新された対象ベクトルに基づいて、選出されたクラスタの転置インデックスを更新する。具体的には、インデックス生成部54は、転置インデックスのレコードの対象ベクトルと要素の値との組の値から更新前の対象ベクトルを含む組を削除し、更新された対象ベクトルの要素のうち0以外の値を有する要素をキーとするレコードの対象ベクトルの要素の値の組のリストに、対象ベクトルと、その要素の値との組を追加する。
【0060】
ここで、文書等の更新された箇所が部分的であることが期待される場合には、更新前の対象ベクトルが属するクラスタに更新された対象ベクトルが属するとして、クラスタ分類部53の処理をスキップしてもよい。また、クラスタ分類部53は、更新された対象ベクトルに対応する縮小対象ベクトルに基づいて、代表ベクトルを再生成してもよい。なお、追加対象ベクトルをいずれかのクラスタに分類しインデックスを修正する処理においても、クラスタ分類部53は追加対象ベクトルが属するクラスタを選出したあとに、代表ベクトルを再生成してよい。
【0061】
また、クエリベクトルに類似する対象ベクトルを検索する処理において、クエリベクトルを縮小クエリベクトルに変換せずにクラスタ選出に用いてよい。予め、代表ベクトルが対象ベクトルから生成され、代表ベクトルの次元数が対象ベクトルの次元数と同じであれば、クラスタ選出部59はクエリベクトルと代表ベクトルとに基づいてクラスタを選出することができる。この場合、対象ベクトルが分類されるクラスタやインデックスを作成する処理において、クラスタ分類部53は各クラスタに含まれる対象ベクトルに基づいて、各クラスタの代表ベクトルを生成する。ただし、縮小対象ベクトルを用いてクラスタリングしているので、代表ベクトルも縮小対象ベクトルとする方が好適である。
【0062】
なお、対象ベクトル取得部51、縮小対象ベクトル生成部52、クラスタ分類部53、インデックス生成部54の機能が、類似検索サーバ1と異なるサーバに含まれるプロセッサ等により実現されてもよい。クラスタの分類や、転置インデックスの作成は、クエリベクトルに類似する対象ベクトルを検索する動作と並行して行うことも可能である。類似検索サーバは複数存在してもよく、各類似検索サーバは1又は複数のクラスタに対応する転置インデックスを保持してもよい。各類似検索サーバが保持する転置インデックスに対応するクラスタは、クラスタリングされた複数のクラスタの一部であってよい。その場合、ディスパッチャを含むサーバが変換行列Rと代表ベクトル(クエリベクトルを変換しない場合は代表ベクトルのみ)を保持し、ディスパッチャがクエリベクトルに基づいてクラスタを選出し、対応する転置インデックスを保持する類似検索サーバにクエリベクトルを含むクエリをディスパッチすればよい。
【符号の説明】
【0063】
1 類似検索サーバ、11 プロセッサ、12 記憶部、13 通信部、14 入出力部、51 対象ベクトル取得部、52 縮小対象ベクトル生成部、53 クラスタ分類部、54 インデックス生成部、55 変換行列取得部、56 変換部、57 クエリベクトル取得部、58 縮小クエリベクトル生成部、59 クラスタ選出部、60 類似度算出部、71 対象情報格納部、72 ベクトル格納部、R 変換行列、x 対象ベクトル、y 縮小対象ベクトル、X 対象行列、Y 縮小対象行列。
【要約】
対象ベクトルの次元数が大きくても、クエリベクトルとの類似度を高速に計算すること。
類似度算出システムは、複数の第1対象ベクトルを取得し、前記複数の第1対象ベクトルよりも次元数が小さな複数の第2対象ベクトルを所定の処理を前記各第1対象ベクトルに施すことにより生成し、前記複数の第2対象ベクトルに基づいて、前記各第1対象ベクトル及びそれに対応する前記第2対象ベクトルが属する複数のクラスタを取得し、前記第1対象ベクトルと次元数が等しい所与のクエリベクトルに基づいて選択される1又は複数の前記クラスタに属する前記各第1対象ベクトルと、前記クエリベクトルと、の各類似度を算出する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11