JPWO2016001998A1 - 類似度算出システム、類似度算出方法およびプログラム - Google Patents

類似度算出システム、類似度算出方法およびプログラム Download PDF

Info

Publication number
JPWO2016001998A1
JPWO2016001998A1 JP2014561649A JP2014561649A JPWO2016001998A1 JP WO2016001998 A1 JPWO2016001998 A1 JP WO2016001998A1 JP 2014561649 A JP2014561649 A JP 2014561649A JP 2014561649 A JP2014561649 A JP 2014561649A JP WO2016001998 A1 JPWO2016001998 A1 JP WO2016001998A1
Authority
JP
Japan
Prior art keywords
vector
target
similarity
cluster
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014561649A
Other languages
English (en)
Other versions
JP5755822B1 (ja
Inventor
アリ ジェヴァヒル
アリ ジェヴァヒル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rakuten Group Inc
Original Assignee
Rakuten Inc
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 Rakuten Inc filed Critical Rakuten Inc
Application granted granted Critical
Publication of JP5755822B1 publication Critical patent/JP5755822B1/ja
Publication of JPWO2016001998A1 publication Critical patent/JPWO2016001998A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification

Landscapes

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

Abstract

対象べクトルとクエリベクトルとの類似度を計算する時間を平準化すること。類似度算出システムは、複数の対象ベクトルを取得する対象ベクトル取得手段と、前記複数の対象ベクトルのそれぞれについて推定される計算量であって、前記複数の対象ベクトルのそれぞれと所定の基準クエリベクトルとの類似度を計算する場合に推定される計算量に基づいて、複数のクラスタのそれぞれに属する全ての前記対象ベクトルと、前記所定の基準クエリベクトルと、の総類似度計算量の差を小さくするように前記複数の対象ベクトルをクラスタリングするクラスタリング手段と、を含む。

Description

本発明は類似度算出システム、類似度算出方法およびプログラムに関する。
所与のクエリベクトルが複数の対象ベクトルのいずれと類似しているかを算出する類似度算出システムがある。こうしたシステムは、例えば、各ベクトルがユーザの嗜好を示すようにして、類似した嗜好を有するユーザを検索するのに用いられたり、各ベクトルが文書の特徴を示すようにして、類似した文書を検索するのに用いられる。
ここで、対象ベクトルの数が膨大となると、クエリベクトルに最も類似する対象ベクトルを判断するのに時間が掛かってしまう。この問題を解決するため、下記特許文献1には、対象ベクトルをクラスタリングするとともに、クラスタ毎に代表ベクトルを算出しておく方法が開示されている。この方法によれば、クエリベクトルが与えられると、該クエリベクトルと各代表ベクトルとの類似度を計算し、計算結果に基づいて最も類似するクラスタを選択する。そして、選択されたクラスタに属する対象ベクトルと、クエリベクトルと、の各類似度を計算することにより、クエリベクトルに最も類似する対象ベクトルを判断する。
特開2013−65146号公報
上述の先行技術によれば、クラスタが選択された後、該選択されたクラスタに属する全ての対象ベクトルについて、クエリベクトルとの類似度を計算し、類似度が最大となる対象ベクトルを選択する。しかし、その推定総計算コストはクラスタ毎に大きく変わる可能性がある。このため、クエリベクトルの内容により、該クエリベクトルに最も類似する対象ベクトルを判断するまでの時間が大きく変わる可能性がある。
本発明は上記課題に鑑みてなされたものであって、その目的は、クエリベクトルに類似する対象ベクトルを選ぶための処理時間を平準化できる類似度算出システム、方法およびプログラムを提供することにある。
上記課題を解決するために、本発明にかかる類似度算出システムは、複数の対象ベクトルを取得する対象ベクトル取得手段と、前記複数の対象ベクトルのそれぞれについて推定される計算量であって、前記複数の対象ベクトルのそれぞれとクエリベクトルとの類似度を計算する場合に推定される計算量に基づいて、前記複数の対象ベクトルをクラスタリングするクラスタリング手段と、を含む。
また、本発明にかかる類似度算出方法は、複数の対象ベクトルを取得するステップと、前記複数の対象ベクトルのそれぞれについて推定される計算量であって、前記複数の対象ベクトルのそれぞれとクエリベクトルとの類似度を計算する場合に推定される計算量に基づいて、前記複数の対象ベクトルをクラスタリングするステップと、を含む。
また、本発明にかかるプログラムは、複数の対象ベクトルを取得し、前記複数の対象ベクトルのそれぞれについて推定される計算量であって、前記複数の対象ベクトルのそれぞれとクエリベクトルとの類似度を計算する場合に推定される計算量に基づいて、前記複数の対象ベクトルをクラスタリングする、処理をコンピュータに実行させる。
本発明の一態様では、前記クラスタリング手段は、複数のクラスタのそれぞれについて推定される総計算量であって、当該クラスタに属する複数の対象ベクトルのそれぞれについて推定される計算量に基づいて推定される総計算量の差を小さくするよう、前記複数の対象ベクトルをクラスタリングしてもよい。
本発明によれば、複数の対象ベクトルを複数のクラスタに分類し、いずれかのクラスタについてクエリベクトルに類似する対象ベクトルを選ぶ場合に、対象べクトルとクエリベクトルとの類似度を計算する時間を平準化することができる。
本発明の一態様では、類似度算出システムは、前記各対象ベクトルについて、前記各対象ベクトルについて、当該対象ベクトルとクエリベクトルとの類似度を計算する場合に推定される計算量を算出する推定計算量算出手段を更に含み、前記クラスタリング手段は、前記各クラスタに属する全ての前記対象ベクトルについての前記算出された計算量の総和の差を小さくするよう、前記複数の対象ベクトルをクラスタリングしてもよい。
本発明の一態様では、類似度算出システムは、前記推定計算量算出手段は、前記各対象ベクトルの零でない要素の数を、前記推定される計算量として算出してもよい。
本発明の一態様では、類似度算出システムは、クエリベクトルを取得するクエリベクトル取得手段と、前記複数のクラスタのいずれかに属する複数の前記対象ベクトルとクエリベクトルとの類似度を算出する類似度算出手段と、をさらに含んでもよい。
本発明の一態様では、前記クラスタリング手段は、前記複数の対象ベクトルのそれぞれに対応し当該対象ベクトルについて推定される計算量を重みとする複数の第1のノードと、前記対象ベクトルの要素の種類に対応する複数の第2のノードと、前記第1のノードのそれぞれと前記第2のノードのいずれかとを接続する複数のエッジとを含むグラフを生成し、前記第1のノードの重みに基づいて前記生成されたグラフを分割することにより前記複数の対象ベクトルをクラスタリングしてもよい。
本発明の一態様では、前記複数のエッジのそれぞれは、当該エッジに対応する対象ベクトルの要素の値に応じたコストを有し、前記クラスタリング手段は、前記エッジのコストにさらに基づいて前記生成されたグラフを分割することにより前記複数の対象ベクトルをクラスタリングしてもよい。
本発明の一態様では、類似度算出システムは、前記クラスタリング手段により前記複数のクラスタに分類された前記第2のノードに対応する要素の種類と、複数の要素を含む前記クエリベクトルとに基づいて、当該クエリベクトルと複数の対象ベクトルとの類似度が計算されるクラスタを選択するクラスタ選択手段をさらに含み、前記類似度算出手段は、前記クラスタ選択手段により選択されたクラスタに属する複数の前記対象ベクトルとクエリベクトルとの類似度を算出してもよい。
本発明の実施形態にかかる類似検索サーバのハードウェア構成の一例を示す図である。 類似検索サーバが実現する機能を示すブロック図である。 対象ベクトルを複数のクラスタに分類しインデックスを作成する処理の一例を示すフロー図である。 複数の対象ベクトルを示すデータの一例を示す図である。 クラスタ分類部の処理の一例を示すフロー図である。 生成された2部グラフの一例を示す図である。 複数のノードの重みの一例を示す図である。 エッジのコストの一例を示す図である。 クラスタに分類された複数のノードの一例を示す図である。 特徴ベクトルが属するクラスタの情報の一例を示す図である。 転置インデックスの一例を示す図である。 要素の種類が属するクラスタの情報の一例を示す図である。 クエリベクトルに類似する対象ベクトルを検索する処理のフローの一例を示す図である。
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
本発明の実施形態にかかる類似検索システムは、類似検索サーバを含む。類似検索サーバはサーバコンピュータである。類似検索サーバは、ネットワークを介して類似検索の開始を指示するパーソナルコンピュータやスマートフォン等と接続されていてもよい。
図1は、類似検索サーバのハードウェア構成の一例を示す図である。類似検索サーバは、プロセッサ11、記憶部12、通信部13、入出力部14を含む。
プロセッサ11は、記憶部12に格納されているプログラムに従って動作する。またプロセッサ11は通信部13、入出力部14を制御する。なお、上記プログラムは、インターネット等を介して提供されるものであってもよいし、フラッシュメモリやDVD−ROM等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよい。
記憶部12は、RAMやフラッシュメモリ等のメモリ素子やハードディスクドライブによって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、各部から入力される情報や演算結果を格納する。
通信部13は、他の装置と通信する機能を実現するものであり、例えば有線LANの集積回路やコネクタ端子などにより構成されている。通信部13は、プロセッサ11の制御に基づいて、他の装置から受信した情報をプロセッサ11や記憶部12に入力し、他の装置に情報を送信する。
入出力部14は、表示出力手段をコントロールするビデオコントローラや、入力デバイスからのデータを取得するコントローラなどにより構成される。入力デバイスとしては、キーボード、マウス、タッチパネルなどがある。入出力部14は、プロセッサ11の制御に基づいて、表示出力デバイスに表示データを出力し、入力デバイスをユーザが操作することにより入力されるデータを取得する。表示出力デバイスは例えば外部に接続されるディスプレイ装置である。
図2は、類似検索サーバが実現する機能を示すブロック図である。類似検索サーバは、機能的に、対象ベクトル取得部51と、ベクトル寄与量算出部52と、クラスタ分類部53と、インデックス生成部54と、クエリベクトル取得部55と、クラスタ選択部56と、類似度算出部57と、を含む。これらの機能は、プロセッサ11が記憶部12に格納されたプログラムを実行し、通信部13や入出力部14を制御することで実現される。また、類似検索サーバは対象情報格納部71とベクトル格納部72とインデックス格納部73とを含む。
対象情報格納部71は類似検索の対象となる文書またはユーザなどの情報を格納し、ベクトル格納部72は、複数の対象ベクトルを格納する。インデックス格納部73は、検索条件となるクエリベクトルを用いて対象ベクトルを検索する際のインデックスとなる情報を格納する。ここで、対象ベクトルのそれぞれは、対応する文書またはユーザなどの情報から生成される特徴ベクトルである。対象情報格納部71、ベクトル格納部72およびインデックス格納部73は、主に記憶部12により構成されているが、他のサーバの記憶部などにより構成され、格納される情報を、類似検索サーバ内の各機能とネットワークを介してやりとりしてもよい。
本実施形態は、クエリベクトルに類似する対象ベクトルを検索する処理と、その検索のために対象ベクトルをクラスタに分類し、検索用のインデックスを作成する処理とが行われる。前者の処理は、クエリベクトル取得部55と、クラスタ選択部56と、類似度算出部57とにより行われる。後者の処理は、対象ベクトル取得部51と、ベクトル寄与量算出部52と、クラスタ分類部53と、インデックス生成部54とにより行われる。
図3は、対象ベクトルを複数のクラスタに分類しインデックスを作成する処理の一例を示すフロー図である。以下では対象ベクトル取得部51と、ベクトル寄与量算出部52と、クラスタ分類部53と、インデックス生成部54についてこの処理フローと共に説明する。
対象ベクトル取得部51は、プロセッサ11および記憶部12を中心として実現される。対象ベクトル取得部51は、複数の対象ベクトルを取得する。より具体的には、対象情報格納部71に格納される文書やユーザなどの情報から、その文書等の特徴を示す対象ベクトルを生成する(ステップS101)。また、対象ベクトル取得部51は生成された対象ベクトルをベクトル格納部72に格納する。例えば、対象ベクトルが電子的な文書から生成される場合には、対象ベクトルは文書に対応し、その対象ベクトルに含まれる複数の要素のそれぞれは単語に対応する。なお対象ベクトルの次元数は対象ベクトルの要素の数となる。また対象ベクトルの要素の値は、対応する文書における単語の出現頻度を示すスコア(例えばTFやTF−IDF)である。
TF(Term Frequency)は、単語の出現頻度であり、IDF(Inverse Document Frequency)は単語が出現する文書が多いほど小さくなる値である。ある文書におけるある単語に対するTF−IDFの値は、文書中にその単語が出現しない場合は0となり、単語が出現してもそれが多くの文書で表れる一般的な語と思われる単語である場合はそうでない単語の場合より小さな値となる。また、複数のユーザ情報のそれぞれから対象ベクトルを生成してもよい。この場合、対象ベクトルの要素がユーザ情報の属性(ユーザの属性を示す情報)に対応してもよいし、その属性が複数の値を取りうる場合には、その属性の値ごとに対応する要素が存在してよい。文書やユーザ属性から対象ベクトルを生成する具体的な方法は公知であるので詳細の記載は省略する。
図4は、複数の対象ベクトルを示すデータの一例を示す図である。図4に示される表に含まれる複数の行が対象ベクトルr1〜r6であり、列は対象ベクトルの要素(成分)c1〜c10である。ここでは対象ベクトルの数は6であり、各対象ベクトルの成分の数は10であるが、実際にはこれらの数はこれより大きくてよい。また図4に示す対象ベクトルの要素にはTFの値が設定されている。r1行c1列のセルに1と記載されているのは、対象ベクトルr1の要素c1の値が1であることを示し、r1行c2列のセルに何も記載されていないのは、対象ベクトルr1の要素c1の値が0であることを示している。図4に示す対象ベクトルを用いる場合には、クラスタ分類部53が対象ベクトルをクラスタに分類する処理と、類似度算出部57が対象ベクトルを検索する処理とにおいて、TFから算出されるTF−IDFスコアを用いてよい。なお、対象ベクトルの要素の値がはじめからTF−IDFスコアであれば、TFからTF−IDFスコアを算出する必要はない。
ベクトル寄与量算出部52は、プロセッサ11および記憶部12を中心として実現される。ベクトル寄与量算出部52は、生成された複数の対象ベクトルのそれぞれについて、類似度算出部57があるクラスタについてクエリベクトルに類似する対象ベクトルを検索する場合の推定される計算量(クラスタ計算量と記載する)に対してその対象ベクトルが寄与すると推定される計算量であるベクトル寄与量を算出する(ステップS102)。ベクトル寄与量は複数の対象ベクトルのそれぞれについて推定される計算量であり、複数の対象ベクトルのそれぞれとクエリベクトルとの類似度を計算する場合に推定される計算量である。各クラスタのクラスタ計算量は、そのクラスタに属する複数の対象ベクトルのベクトル寄与量の和である。
類似度算出部57がいわゆる転置インデクスを用いてクエリベクトルと対象ベクトルとの類似度を算出する場合には、ベクトル寄与量算出部52は、例えば、対象ベクトルに含まれる0でない要素の数を、その対象ベクトルのベクトル寄与量として算出してよい。また、ベクトル寄与量算出部52は、対象ベクトルに含まれる0でない要素に対応する基準クエリベクトルの要素の値の和をその対象ベクトルの推定されたベクトル寄与量として算出してよい。ここで、基準クエリベクトルの各要素には1が設定されていてもよいし、基準クエリベクトルの各要素に、クエリベクトルの要素に0でない値が出現する確率に応じた値が設定されてもよい。0でない要素の数をベクトル寄与量とすることは、基準クエリベクトルの各要素に1を設定して対象ベクトルと基準クエリベクトルとの類似度計算をする場合のベクトル寄与量を計算することに相当する。
なお、類似度算出部57が対象ベクトルごとに、対象ベクトルとクエリベクトルとの内積を計算することで類似度を求める場合は、ベクトル寄与量算出部52は、対象ベクトルにかかわらず一定の値をベクトル寄与量として取得してよい。
クラスタ分類部53は、プロセッサ11および記憶部12を中心として実現される。クラスタ分類部53は、クエリベクトルに類似する対象ベクトルが検索される際の複数の対象ベクトルのそれぞれについての類似度の計算量(ベクトル寄与量に相当する)に基づいて、複数の対象ベクトルをクラスタに分類する。さらにいえば、クラスタ分類部53はベクトル寄与量に基づいて、複数のクラスタのそれぞれに対するクエリベクトルに類似する対象ベクトルを検索する際の推定される計算量(クラスタ計算量)のクラスタ間における差を小さくするように、前記複数の対象ベクトルを複数のクラスタに分類する(ステップS103)。
クラスタ間におけるクラスタ計算量の差を小さくすることは、例えば、分類された複数のクラスタについてのクラスタ計算量のばらつき(分散など)が上限より小さいことであってよい。さらに、クラスタ間におけるクラスタ計算量の差を小さくすることが、単に全てのクラスタのクラスタ計算量が許容範囲内にあることであってもよい。ここで許容範囲は、例えば複数のベクトルにおけるベクトル寄与量の和に応じて定まるものであってよい。ここで、クラスタ計算量のばらつきが上限より小さいことやクラスタ計算量が許容範囲内にあることを以下では「ばらつき条件を満たす」と記載する。また、クラスタ間におけるクラスタ計算量の差を小さくすることは、最終的に分類されたクラスタにおけるクラスタ計算量の最小値と最大値との差が、初期条件として複数のベクトルが分類されるクラスタにおける差よりも小さいことであってもよい。
図5は、クラスタ分類部53の処理の一例を示すフロー図である。図5に示す処理では、クラスタ分類部53は複数の特徴ベクトルを示すグラフを生成し、グラフを複数のクラスタに分割する。クラスタに含まれるノードがそのクラスタに含まれる特徴ベクトルを示す。以下ではこの処理の詳細を説明する。
はじめに、クラスタ分類部53は、複数の対象ベクトルを示す複数のノードと、複数の要素の種類を示す複数のノードと、複数のエッジと、を含むグラフを示すデータを生成する(ステップS201)。ここでクラスタ分類部53が生成するグラフは2部グラフ(Bipartite Graph)である。この2部グラフでは、対象ベクトルと対象ベクトルを示すノードとは1対1で対応し、対象ベクトルの要素の種類と要素の種類を示すノードとは1対1に対応する。また、対象ベクトルを示す複数のノードのそれぞれの重みは、対応する対象ベクトルのベクトル寄与量であり、要素の種類を示す複数のノードの重みは0である。
また、複数の対象ベクトルのそれぞれに対応するノードと、その対象ベクトルに含まれる0でない要素の種類に対応するノードとの間にエッジが設けられる。エッジの数は、生成された複数の対象ベクトルに含まれる0でない要素の数の和である。エッジに接続される対象ベクトルのノードをベクトルノード、そのエッジに接続される要素の種類のノードを要素ノードとすると、ベクトルノードに対応する対象ベクトルにおける要素ノードに対応する要素の値に応じた値がエッジのコストとなる。例えば、その対象ベクトルの要素の値がTFであればその要素の値に基づいて計算されたTF−IDFスコアをそのエッジのコストとしてよいし、対象ベクトルの要素の値がTF−IDFの値であればその要素の値自体をエッジのコストとしてよい。
図6は、生成された2部グラフの一例を示す図である。図6は、図4に示す複数の対象ベクトルに基づいて生成される2部グラフである。この2部グラフは、それぞれ対象ベクトルr1〜r6に対応する6個のノードと、それぞれ要素の種類c1〜c10に対応する10個のノードc1〜c10とを含む。例えば、対象ベクトルr1に対応するノードは、対象ベクトルr1に含まれる要素のうち0でない要素c1,c4とエッジにより接続される。クラスタ分類部53が生成する2部グラフは、対象ベクトルに対応するノード同士、あるいは要素の種類に対応するノード同士を接続するエッジがない。
図7は、複数のノードの重みの一例を示す図である。図7は、図4に示す対象ベクトルから求められるノードの重みの例であり、またベクトル寄与量を対象ベクトルが含む0でない要素の数とした場合の例である。対象ベクトルr1の重みは、対象ベクトルr1が含む0でない要素の数である2であり、他の対象ベクトルの重みも、その対象ベクトルが含む0でない要素の数となっている。一方、要素の種類c1〜c10の重みは0である。
図8は、エッジのコストの一例を示す図である。図8は、図4に示す対象ベクトルから求められるエッジのコストを示す。ここでは、対象ベクトルr1に対応するノードと要素の種類c1に対応するノードとの間のエッジのコストは、対象ベクトルr1の要素c1のTFの値である1に、要素の種類c1のIDFスコアの値をかけた値となっている。他のエッジのコストについても同様にそのエッジに対応する対象ベクトルの要素の値に応じて定まる。
なお、クラスタ分類部53は2部グラフの代わりに、対象ベクトルに対応する2つのノードを接続するエッジのあるグラフを生成してもよい。この場合、エッジの重みはエッジが接続する2つの対象ベクトルの距離であってよいし、要素の種類に対応するノードが存在しなくてよい。
クラスタ分類部53は、グラフが生成されると、ノードを複数のクラスタに仮に配置する(ステップS202)。ここで、クラスタ分類部53は、ノードが仮に配置されたクラスタに含まれる複数のノードの重みの和のばらつきが、ばらつき条件を満たすように複数のノードをクラスタに配置する。クラスタの数は2であってもよいし、3以上であってもよい。クラスタ分類部53は、ノードを重みの大きさで順位付けし、1からk番目のクラスタに1からk番目のノードを配置し、あとは最も重みの和の小さいクラスタに順にノードを配置することを繰り返すことでばらつき条件を満たすようにノードをクラスタに配置してもよいし、ばらつき条件を満たすまでノードを複数のクラスタにランダムに配置することを繰返すことでノードをクラスタに配置してもよい。
ノードがクラスタに仮に配置されると、クラスタ分類部53はKernighan-Linアルゴリズムを用いて反復的にノードの配置を修正することで最終的に分割されたグラフを求める。最終的に分割されたグラフのクラスタは、対象ベクトルが分類されたクラスタに相当する。
具体的には、まずクラスタ分類部53は、複数のクラスタを複数の仮クラスタにコピーする(ステップS203)。これにより、複数の仮クラスタに属するノードは対応するクラスタに属するノードと同じになる。次に、クラスタ分類部53は互いに異なる仮クラスタに属するノード間にあるエッジのコストの和を初期コストとして計算する(ステップS204)。以下では互いに異なる仮クラスタに属するノード間にあるエッジのコストの和を単に「コストの和」と記載する。
そして、クラスタ分類部53は、2つのノードの組合せを選択し、そのノードを交換する(ステップS205)。ここで、選択されるノードの組合せは、互いに異なるクラスタに属する2つのノードの組合せであり、その2つのノードを交換した場合に最もコストの和を小さくしかつばらつき条件を満たすノードの組合せである。クラスタ分類部53は、ノードが交換された後のコストの和を記憶する(ステップS206)。また交換されたノードを、ステップS205でノードの組合せを選択する対象となるノードから除外する(ステップS207)。そして、複数の仮クラスタに選択対象となるノードの組合せが存在すれば(ステップS208のY)ステップS205から処理を繰返す。ノードの組合せが存在しなくなれば(ステップS208のN)、今回のステップS205からステップS208のループで記憶されたコストのうちの最小値が初期コストより低いか判定する(ステップS209)。最小値が初期コストより低ければ(ステップS209のY)、仮クラスタでない複数のクラスタに含まれるノードのうち、その最小値に対応する組合せと、その組合せを選択する前にステップS205からステップS208により選択された組合せとに対応する複数のノードを交換する(ステップS210)。一方、最小値が初期コスト以上なら(ステップS209のN)、クラスタに分類する処理を終了する。処理の終了時点におけるクラスタが、ノードが分類されたクラスタとなる。
図9は、クラスタに分類された複数のノードの一例を示す図である。図9は、図6から8に示すグラフのノードが2つのクラスタP1,P2に分類された場合の例である。クラスタP1には対象ベクトルr1〜r3、要素の種類c1〜c4に対応するノードが分類され、クラスタP2には対象ベクトルr4〜r6、要素の種類c5からc10に対応するノードが分類されている。図9のグラフは、クラスタP1には対象ベクトルr1からr3が、クラスタP2には対象ベクトルr4からr6が分類されていることに相当する。
なお、グラフを分割する手法は上記のものに限られない。クラスタ分類部53は、公知の他の手法を用いて、ばらつきの条件を満たしかつエッジのコストの和を最小にするようにグラフを分割し、対象ベクトルをクラスタに分類してよい。エッジのコストの和を最小にすることにより、複数のクラスタの間の依存が減り、それぞれのクラスタに属するノードは互いに関連が強くなる。したがって、あるクラスタに属する対象ベクトルは、互いに類似する対象ベクトルとなる蓋然性が高くなる。
クラスタにノードが分類されると、クラスタ分類部53は、各クラスタに属する対象ベクトルの情報をベクトル格納部72に格納する(ステップS104)。
図10は、ベクトル格納部72に格納される、特徴ベクトルが属するクラスタの情報の一例を示す図である。特徴ベクトルが属するクラスタの情報は、特徴ベクトルとその特徴ベクトルが属するクラスタとを関連づける情報である。図10は図9に対応しており、特徴ベクトルは対応するノードが分類されるクラスタに分類されている。
インデックス生成部54は、プロセッサ11と記憶部12とを中心として実現される。インデックス生成部54は、クエリベクトルから対象ベクトルを検索するためのインデックスを生成し、インデックス格納部73に格納させる。
インデックス生成部54は、インデックスとして、複数のクラスタのそれぞれについてそのクラスタに属する対象ベクトルから転置インデックスを生成し、インデックス格納部73に格納する(ステップS105)。インデックス格納部73は、複数のクラスタのそれぞれについて、そのクラスタに属する全ての対象ベクトルに基づいて算出される転置インデクスを記憶する。
図11は、転置インデックスの一例を示す図である。図11は、図4に示す対象ベクトルが図10に示すクラスタP1,P2に分類された場合のクラスタP1,P2の転置インデックスを示す図である。転置インデックスは、要素の種類をキーとして対象ベクトルを検索する際に用いるインデックスである。従って、転置インデックスは、キー項目としてクラスタの識別情報と要素の種類とを含み、またそのクラスタおよび要素の種類について値を有する対象ベクトルのそれぞれについての識別情報と要素の値との組を含む。
また、インデックス生成部54は、インデックスとして、クラスタの選択に用いるための各クラスタの特徴を示す情報をインデックス格納部73に格納する(ステップS106)。クラスタの特徴を示す情報は、例えば、インデックス生成部54は、クラスタ分類部53がステップS201〜S210により分類された各クラスタに属する要素の種類のノードに基づいて、そのノードに対応する要素の種類をクラスタに関連づけてインデックス格納部73に格納してもよい。また、インデックス生成部54は、クラスタに属する対象ベクトルの重心のようなクラスタの中心を、クラスタの特徴を示す情報として生成し、各クラスタの中心をインデックス格納部73に格納してもよい。
図12は、インデックス格納部73に格納される、要素の種類が属するクラスタの情報の一例を示す図である。要素の種類が属するクラスタの情報は、クラスタとそのクラスタに属する要素の種類とを関連づける情報である。図12は図9に対応しており、要素の種類は対応するノードが分類されるクラスタに分類されている。なお、転置インデックスを作成する処理は公知であるので、その詳細の説明は省略する。
図13は、クエリベクトルに類似する対象ベクトルを検索する処理の一例を示す図である。以下ではクエリベクトル取得部55と、クラスタ選択部56と、類似度算出部57とについてこの処理フローと共に説明する。
クエリベクトル取得部55は、プロセッサ11、記憶部12および通信部13等を中心として実現される。クエリベクトル取得部55は、クエリベクトルを生成することでユーザが指示する検索条件を示すクエリベクトルを取得する(ステップS301)。クエリベクトル取得部55は、例えばネットワークを介して接続されるユーザ端末等からユーザの指定する電子的な文書やユーザ情報などを取得し、その電子的な文書やユーザ情報などからクエリベクトルを生成する。クエリベクトル取得部55がクエリベクトルを生成する方法は、対象ベクトル取得部51が電子的な文書やユーザ情報などから対象ベクトルを生成する方法と同じである。なお、クエリベクトル取得部55は、他のコンピュータが生成したクエリベクトルを受信することでクエリベクトルを取得してもよい。
クラスタ選択部56は、プロセッサ11および記憶部12を中心として実現される。クラスタ選択部56は、インデックス生成部54が生成し、インデックス格納部73に格納したクラスタの特徴を示す情報と、クエリベクトルとに基づいて、複数のクラスタからクエリベクトルに類似する対象ベクトルを含むクラスタを選択する(ステップS302)。
クラスタ選択部56は、クラスタの特徴を示す情報として図12に示すような、クラスタに関連づけられた要素の種類の情報が格納されている場合には、クエリベクトルのうち、クラスタに関連づけられた要素の種類における要素の値の和をクラスタのスコアとして算出する。例えば、図12の例ではクラスタP1についてはクエリベクトルのうちc1,c2,c3,c4の4つの要素の値の和をクラスタP1のスコアとし、クラスタP2についてはクエリベクトルのc5からc10の要素の値の和をクラスタP2のスコアとする。そして、クラスタ選択部56は、スコアが最も大きいクラスタを選択する。なお、クラスタの特徴を示す情報としてクラスタの中心を示す情報が格納されている場合には、クラスタ選択部56はクラスタの中心とクエリベクトルとの距離を計算し、その距離が最も小さいクラスタを選択する。前者の場合には、クラスタに強く関連づけられる要素の種類の情報を用いてクラスタを選択することで、クラスタの選択に必要な計算量を削減することができる。また、図5に示すような2部グラフを用いたグラフ分割を用いてクラスタに分類する場合には、インデックスの作成も容易になる。
類似度算出部57は、プロセッサ11および記憶部12を中心として実現される。類似度算出部57は、選択されたクラスタに属する全ての対象ベクトルのそれぞれと、クエリベクトルとの類似度を算出する(ステップS303)。本実施形態では、類似度算出部57はインデックス格納部73に格納された、選択されたクラスタの転置インデックスに基づいて、そのクラスタに属する対象ベクトルとクエリベクトルとの類似度を算出する。具体的には、はじめに類似度算出部57はそのクラスタに属する複数の対象ベクトルのそれぞれについて類似度の値を示す積算変数を初期化する。次に類似度算出部57はクエリベクトルのうち値の設定されている複数の要素のそれぞれについて、転置インデックスを用いてその要素に対応する(要素の値が0でない)対象ベクトルと対象ベクトルのその要素の値とを取得し、対象ベクトルのその要素の値がTFである場合にはその要素の値からTF−IDFの値を計算し、クエリベクトルのその要素の値とTF−IDFの値または要素の値との積をその対象ベクトルの積算変数に加算する。この処理がなされると、各対象ベクトルの積算変数(クエリベクトルと対象ベクトルとの内積に相当)が類似度の値となる。なお、類似度算出部57のより算出される類似度は、クエリベクトルと、選出されたクラスタに属する各対象ベクトルとのコサイン類似度であってよい。対象ベクトルやクエリベクトルとして予め正規化されたベクトルを用いると、上述の転置インデクスを用いた積算変数の値はコサイン類似度の値に相当するものになる。
ここで、転置インデックスを用いて対象ベクトルを検索する際に類似度の計算に必要な計算量(クラスタ計算量に対応する)は、クエリベクトルのうち値の設定されている複数の要素における、その要素の値が0でない対象ベクトルの数に依存している。クエリベクトルとしてどのようなものが設定されるかわからないと考え、基準クエリベクトルの要素の値がどれも同じであるとすると、クラスタ計算量は複数の対象ベクトルについての値が0でない要素の数に依存すると考えられる。これを対象ベクトルの視点で見ると、対象ベクトルが含む値が0でない要素の数は、その対象ベクトルがクラスタに属する際のクラスタ計算量に寄与する推定量であり、またこの推定量は、対象ベクトルと基準クエリベクトルとの類似度を計算する場合の計算量の推定量に相当する。ベクトル寄与量算出部52は、この推定量を計算する。なお、クエリベクトルとして要素ごとに出現確率が異なると予想される場合には、クラスタ計算量は、クエリベクトルの要素ごとに、要素の値が0でない対象ベクトルの数に要素の出現確率を掛けた値の和に依存すると考えられる。したがって、ベクトル寄与量算出部52は、基準クエリベクトルの各要素にその出現確率が設定されているとして、推定量を計算してもよい。
対象ベクトルとクエリベクトルとの類似度が計算されると、類似度算出部57は、算出された類似度が最も大きい対象ベクトルを特定し、その特定された対象ベクトルに関する情報を出力する(ステップS304)。対象ベクトルに関する情報は、対象ベクトルそのものの情報でもよいし、対象ベクトルが生成される元となる文書などの情報でもよい。また類似度算出部57は類似検索サーバに接続される表示出力手段に向けてその文書等の情報を出力してもよいし、ネットワークを介してユーザ端末等にその文書等の情報を送信してもよい。
ここで、クラスタ分類部53がクラスタ間におけるクラスタ計算量の差を小さくしつつ複数の対象ベクトルをクラスタに分割する方法は、必ずしもグラフ分割手法でなくてもよい。
例えば、クラスタ分類部53は、クラスタ計算量の分散とクラスタ中心間の平均距離の逆数に係数を掛けた値との和からなる評価値に基づいて対象ベクトルを複数のクラスタに分類してもよい。より具体的には、k-means法で対象ベクトルをクラスタに分割した後に、互いに異なるクラスタに属する2つの対象ベクトルを交換した場合の評価値を算出し、算出された評価値が交換前の評価値より小さければ実際に2つの対象ベクトルを交換することを繰り返すとよい。また、対象ベクトルを交換するだけでなく、クラスタ計算量の大きいクラスタから小さいクラスタに対象ベクトルを移動した場合の評価値も算出し、この評価値が前の評価値より小さければ実際の対象ベクトルを移動させてもよい。
また、k-means法で対象ベクトルをクラスタに分割した後に、クラスタ計算量が予め定められた上限を超える第1のクラスタと、第1のクラスタに隣接する第2のクラスタとがある場合に、第1のクラスタ中心からの距離と、第2クラスタの中心からの距離の差が最も小さい対象ベクトルを第1のクラスタから第2のクラスタに移動することを繰り返してもよい。このようにしても、クラスタ分類部53がクラスタ間におけるクラスタ計算量の差を小さくしつつ複数の対象ベクトルをクラスタに分割することができる。
11 プロセッサ、12 記憶部、13 通信部、14 入出力部、51 対象ベクトル取得部、52 ベクトル寄与量算出部、53 クラスタ分類部、54 インデックス生成部、55 クエリベクトル取得部、56 クラスタ選択部、57 類似度算出部、71 対象情報格納部、72 ベクトル格納部、73 インデックス格納部、r1,r2,r3,r4,r5,r6 対象ベクトル、c1,c2,c3,c4,c5,c6,c7,c8,c9,c10 要素、P1,P2 クラスタ。

Claims (10)

  1. 複数の対象ベクトルを取得する対象ベクトル取得手段と、
    前記複数の対象ベクトルのそれぞれについて推定される計算量であって、前記複数の対象ベクトルのそれぞれとクエリベクトルとの類似度を計算する場合に推定される計算量に基づいて、前記複数の対象ベクトルをクラスタリングするクラスタリング手段と、
    を含む類似度算出システム。
  2. 請求項1に記載の類似度算出システムにおいて、
    前記クラスタリング手段は、複数のクラスタのそれぞれについて推定される総計算量であって、当該クラスタに属する複数の対象ベクトルのそれぞれについて推定される計算量に基づいて推定される総計算量の差を小さくするよう、前記複数の対象ベクトルをクラスタリングする、
    類似度算出システム。
  3. 請求項1または2に記載の類似度算出システムにおいて、
    前記各対象ベクトルについて、当該対象ベクトルとクエリベクトルとの類似度を計算する場合に推定される計算量を算出する推定計算量算出手段をさらに含み、
    前記クラスタリング手段は、前記各クラスタに属する全ての前記対象ベクトルについての前記算出された計算量の総和の差を小さくするよう、前記複数の対象ベクトルをクラスタリングする、
    類似度算出システム。
  4. 請求項3に記載の類似度算出システムにおいて、
    前記推定計算量算出手段は、前記各対象ベクトルの零でない要素の数を、前記推定される計算量として算出する、
    類似度算出システム。
  5. 請求項1から4のいずれかに記載の類似度算出システムにおいて、
    クエリベクトルを取得するクエリベクトル取得手段と、
    前記複数のクラスタのいずれかに属する複数の前記対象ベクトルとクエリベクトルとの類似度を算出する類似度算出手段と、
    をさらに含む類似度算出システム。
  6. 請求項5に記載の類似度算出システムにおいて、
    前記クラスタリング手段は、前記複数の対象ベクトルのそれぞれに対応し当該対象ベクトルについて推定される計算量を重みとする複数の第1のノードと、前記対象ベクトルの要素の種類に対応する複数の第2のノードと、前記第1のノードのそれぞれと前記第2のノードのいずれかとを接続する複数のエッジとを含むグラフを生成し、前記第1のノードの重みに基づいて前記生成されたグラフを分割することにより前記複数の対象ベクトルをクラスタリングする、
    類似度算出システム。
  7. 請求項6に記載の類似度算出システムにおいて、
    前記複数のエッジのそれぞれは、当該エッジに対応する対象ベクトルの要素の値に応じたコストを有し、
    前記クラスタリング手段は、前記エッジのコストにさらに基づいて前記生成されたグラフを分割することにより前記複数の対象ベクトルをクラスタリングする、
    類似度算出システム。
  8. 請求項6又は7に記載の類似度算出システムにおいて、
    前記クラスタリング手段により前記複数のクラスタに分類された前記第2のノードに対応する要素の種類と、複数の要素を含む前記クエリベクトルとに基づいて、当該クエリベクトルと複数の対象ベクトルとの類似度が計算されるクラスタを選択するクラスタ選択手段をさらに含み、
    前記類似度算出手段は、前記クラスタ選択手段により選択されたクラスタに属する複数の前記対象ベクトルとクエリベクトルとの類似度を算出する、
    類似度算出システム。
  9. 複数の対象ベクトルを取得するステップと、
    前記複数の対象ベクトルのそれぞれについて推定される計算量であって、前記複数の対象ベクトルのそれぞれとクエリベクトルとの類似度を計算する場合に推定される計算量に基づいて、前記複数の対象ベクトルをクラスタリングするステップと、
    を含むことを特徴とする類似度算出方法。
  10. 複数の対象ベクトルを取得し、
    前記複数の対象ベクトルのそれぞれについて推定される計算量であって、前記複数の対象ベクトルのそれぞれとクエリベクトルとの類似度を計算する場合に推定される計算量に基づいて、前記複数の対象ベクトルをクラスタリングする、
    処理をコンピュータに実行させるためのプログラム。
JP2014561649A 2014-06-30 2014-06-30 類似度算出システム、類似度算出方法およびプログラム Active JP5755822B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/067465 WO2016001998A1 (ja) 2014-06-30 2014-06-30 類似度算出システム、類似度算出方法およびプログラム

Publications (2)

Publication Number Publication Date
JP5755822B1 JP5755822B1 (ja) 2015-07-29
JPWO2016001998A1 true JPWO2016001998A1 (ja) 2017-04-27

Family

ID=53759615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014561649A Active JP5755822B1 (ja) 2014-06-30 2014-06-30 類似度算出システム、類似度算出方法およびプログラム

Country Status (3)

Country Link
US (1) US10140342B2 (ja)
JP (1) JP5755822B1 (ja)
WO (1) WO2016001998A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6344395B2 (ja) * 2013-09-20 2018-06-20 日本電気株式会社 払出量予測装置、払出量予測方法、プログラム、及び、払出量予測システム
US9699205B2 (en) 2015-08-31 2017-07-04 Splunk Inc. Network security system
CN106557521B (zh) * 2015-09-29 2020-07-14 佳能株式会社 对象索引方法、对象搜索方法及对象索引系统
US11113609B2 (en) * 2016-04-07 2021-09-07 Ancestry.Com Operations Inc. Machine-learning system and method for identifying same person in genealogical databases
JP6708043B2 (ja) * 2016-07-28 2020-06-10 富士通株式会社 データ検索プログラム、データ検索方法およびデータ検索装置
US10558756B2 (en) * 2016-11-03 2020-02-11 International Business Machines Corporation Unsupervised information extraction dictionary creation
US10558747B2 (en) * 2016-11-03 2020-02-11 International Business Machines Corporation Unsupervised information extraction dictionary creation
US10205735B2 (en) 2017-01-30 2019-02-12 Splunk Inc. Graph-based network security threat detection across time and entities
CN106874199B (zh) * 2017-02-10 2022-10-18 腾讯科技(深圳)有限公司 测试用例处理方法和装置
US11055604B2 (en) * 2017-09-12 2021-07-06 Intel Corporation Per kernel Kmeans compression for neural networks
US11595484B2 (en) * 2019-05-03 2023-02-28 Servicenow, Inc. Centralized machine learning predictor for a remote network management platform
JP7388256B2 (ja) * 2020-03-10 2023-11-29 富士通株式会社 情報処理装置及び情報処理方法
US11455322B2 (en) * 2020-05-12 2022-09-27 International Business Machines Corporation Classification of time series data
JP7274160B1 (ja) 2022-09-27 2023-05-16 株式会社Fronteo 情報処理システム及び情報処理方法
CN116226472B (zh) * 2022-11-17 2024-06-21 上海药明康德新药开发有限公司 一种基于向量化的参考反应查询方法和系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4527322B2 (ja) * 2001-07-25 2010-08-18 日本電気株式会社 画像検索装置、画像検索方法、及び画像検索用プログラム
US7283992B2 (en) * 2001-11-30 2007-10-16 Microsoft Corporation Media agent to suggest contextually related media content
WO2008102410A1 (ja) * 2007-02-19 2008-08-28 Sony Computer Entertainment Inc. クラスタリング装置、その方法、コンピュータ、プログラムおよび記録媒体
US8520979B2 (en) * 2008-08-19 2013-08-27 Digimarc Corporation Methods and systems for content processing
WO2011021605A1 (ja) * 2009-08-18 2011-02-24 公立大学法人大阪府立大学 物体検出方法
JP4976578B1 (ja) * 2011-09-16 2012-07-18 楽天株式会社 画像検索装置およびプログラム
JP2014095967A (ja) * 2012-11-08 2014-05-22 Sony Corp 情報処理装置、情報処理方法およびプログラム
WO2014087496A1 (ja) * 2012-12-05 2014-06-12 株式会社日立製作所 グラフ処理方法、および情報処理システム
US9190026B2 (en) * 2013-03-14 2015-11-17 Canon Kabushiki Kaisha Systems and methods for feature fusion

Also Published As

Publication number Publication date
US20160321265A1 (en) 2016-11-03
WO2016001998A1 (ja) 2016-01-07
JP5755822B1 (ja) 2015-07-29
US10140342B2 (en) 2018-11-27

Similar Documents

Publication Publication Date Title
JP5755822B1 (ja) 類似度算出システム、類似度算出方法およびプログラム
CN104090967B (zh) 应用程序推荐方法及推荐装置
US10678765B2 (en) Similarity calculation system, method of calculating similarity, and program
US20130222388A1 (en) Method of graph processing
US11100073B2 (en) Method and system for data assignment in a distributed system
Ye et al. Variable selection via penalized neural network: a drop-out-one loss approach
CN110322318B (zh) 一种客户分群方法、装置及计算机存储介质
US10810458B2 (en) Incremental automatic update of ranked neighbor lists based on k-th nearest neighbors
JP2018173909A (ja) 学習プログラム、学習方法および学習装置
WO2020173043A1 (zh) 用户群的优化方法及装置、计算机非易失性可读存储介质
Huan et al. K-means text dynamic clustering algorithm based on KL divergence
JP6311000B1 (ja) 生成装置、生成方法、及び生成プログラム
CN110968790A (zh) 基于大数据的潜在客户智能推荐方法、设备和存储介质
CN104091131B (zh) 应用程序与权限的关系确定方法及确定装置
WO2017065795A1 (en) Incremental update of a neighbor graph via an orthogonal transform based indexing
US11361003B2 (en) Data clustering and visualization with determined group number
JP5903376B2 (ja) 情報推薦装置、情報推薦方法、及び情報推薦プログラム
US20130218916A1 (en) File management apparatus, file management method, and file management system
KR102142767B1 (ko) 데이터간 상대적 거리 비율 및 클러스터의 중심 데이터 간의 거리를 고려한 데이터 클러스터링 방법 및 시스템
JP2013242675A (ja) 分散情報制御装置、分散情報検索方法、データ分散配置方法、及びプログラム
JP5820784B2 (ja) 検索結果出力装置、検索結果出力方法及びプログラム
CN111684817B (zh) 推荐算法的选择的方法及对应的装置
JP2012173795A (ja) クラス分類装置、クラス分類方法、及びクラス分類プログラム
JP6505755B2 (ja) 情報処理装置、情報処理方法、およびプログラム
CN113626474B (zh) 数据库随机抽取方法、装置及设备

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150512

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150527

R150 Certificate of patent or registration of utility model

Ref document number: 5755822

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250