データ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体
【課題】既存の検索結果をフィードバックさせ、新たに評価を行う必要無しに検索結果を洗練させること。
【解決手段】まず、ベクトル作成部202は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する。次に、分類部203は、データを適合データと非適合データに分類する。算出部204は、適合データの集合と非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める。割り当て部205は、各要素ベクトルのフィードバック値を、要素ベクトルにそれぞれベクトル要素として割り当てる。演算部206は、データの要素ベクトルと検索項目の要素ベクトルとの間で演算を実行する。順位付け部207は、演算結果に基づいてデータの順位付けに関する値を求める。
【解決手段】まず、ベクトル作成部202は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する。次に、分類部203は、データを適合データと非適合データに分類する。算出部204は、適合データの集合と非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める。割り当て部205は、各要素ベクトルのフィードバック値を、要素ベクトルにそれぞれベクトル要素として割り当てる。演算部206は、データの要素ベクトルと検索項目の要素ベクトルとの間で演算を実行する。順位付け部207は、演算結果に基づいてデータの順位付けに関する値を求める。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、データの検索結果をフィードバックさせて使用するデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体に関する。
【背景技術】
【0002】
従来、文書の検索や分類の精度を向上させるためには、関連語による単語ベクトルの拡張が有効とされてきた。関連語辞書は、一般に人手もしくは、文書コーパスからの自動抽出によって作成されるが、人手による場合は手間がかかり、文書コーパスからの自動抽出の場合、検索・分類行動の変化に対応できない。これに対し、適合性フィードバック(relevancd feedback)を採用していた。
【0003】
この適合性フィードバックとは、検索結果の文書の内容に基づいて、検索戦略(検索式、ランキング手法等)を変更する方法である。例を挙げると、適合文書(検索意図に合致する文書)や、その反対の非適合文書を、ユーザにいくつか選択させ、その文書内の単語情報によって検索式を拡張する(たとえば、非特許文献1)。すなわち、適合性フィードバックは、検索結果に対する評価を利用して、検索結果を洗練する手法であり、検索結果の精度を向上させることができる。
【0004】
また、検索結果の上位数件を、擬似的に適合文書として、適合性フィードバックを行うことにより、適合・非適合文書の選択を必要とせずに適合性フィードバックを実現する、擬似的な適合性フィードバック(pseudo relevance feedback)という方法もある(たとえば、非特許文献1)。
【0005】
検索のたびに、適合・非適合文書の選択を必要としない別の方法として、過去の適合性フィードバックで得られた情報を、検索モデルに反映する方法がある。典型的な例では、クエリーと文書それぞれの単語ベクトルに対して、通常は単純に内積等で適合度を計算するところを、一次変換をかけて(つまり、単語を関連語に拡張して)、その後に内積の計算を行うところが異なっている。一次変換は、既存のクエリーに対する適合・非適合文書から、行列演算で学習して得ることが出来る。この方法により、検索のたびに文書の評価を行う必要が無く、ユーザの特性を考慮して検索することができる。
【0006】
【非特許文献1】リカード(Ricard).B.Y、バーサー(Verthier).R.N著、「現代情報検索(Modern Information Retirieval)」、ACMプレス(Press)、1999年
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、適合性フィードバックを使用するだけでは、一般に検索精度は向上するが、検索のたびに適合・非適合文書を選択し、評価を入力する手間が掛かる。また、擬似的な適合性フィードバックを使用する方法は、検索結果の上位に適合文書が多い事を期待した方法なので、検索結果の上位に適合文書が少ない場合は、逆効果となる場合がある。また、通常の適合性フィードバックの場合、ユーザの特性や検索意図を反映できるのに対し、この方法では反映できない。
【0008】
また、過去の適合性フィードバックを検索モデルに反映する場合、行列の特異値分解が必要なため、Web上の様に大規模であったり追加・修正が激しい場合への対応が難しいという問題がある。また、検索意図に関わらず、全く同一の関連語拡張を行うため、状況に応じた検索がしにくいという問題がある。
【0009】
この発明は、上述した従来技術による問題点を解消するため、既存の似た意図の検索の評価情報がある場合、新たに評価を行う必要無しに検索結果を洗練させることができるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するため、請求項1の発明にかかるデータ検索装置は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成手段と、前記データを適合データと非適合データに分類する分類手段と、前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出手段と、前記算出手段によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て手段と、前記割り当て手段によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算手段と、前記演算手段によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け手段と、を備えることを特徴とする。
【0011】
この請求項1の発明によれば、データの適合/非適合から得られるフィードバックを使用することにより、検索項目およびデータに対応した要素ベクトルを拡張することができる。それにより、要素間の相関性を持たせることができ、検索項目に含まれない要素を考慮した検索結果を得ることができる。その結果、データに対して再検索する場合に、要素間の相関性を反映させることにより検索結果を洗練させることができる。
【0012】
また、請求項2の発明にかかるデータ検索装置は、請求項1に記載の発明において、前記演算手段によって演算を実行した後に、前記分類手段による前記データを再び適合データと非適合データに分類する処理、前記算出手段による各要素ベクトルのフィードバック値を求める処理、前記割り当て手段によるフィードバック値の割り当て処理、前記演算手段による演算処理を、1回または複数回繰り返すことにより前記順位付け手段によって使用される演算値を求めることを特徴とする。
【0013】
この請求項2の発明によれば、拡張された要素ベクトルについて1回または複数回演算を実行することにより、要素ベクトルをさらに拡張することができる。それにより、要素間の相関性をさらに高めることができ、データに対して再検索する場合に、要素間の相関性をより反映させ、検索結果を洗練させることができる。
【0014】
また、請求項3の発明にかかるデータ検索装置は、請求項1または2に記載の発明において、前記分類手段は、前記検索項目を前記適合データに分類することを特徴とする。
【0015】
この請求項3の発明によれば、適合データと非適合データとの相違だけでなく、検索項目も正の相関をもつものとしてフィードバック値を求めることができる。それにより、より検索項目の意図に近い形で要素ベクトルをフィードバックさせることができる。
【0016】
また、請求項4の発明にかかるデータ検索装置は、請求項1〜3のいずれか一つに記載の発明において、前記算出手段は、求めたフィードバック値が負の値の場合、0にすることを特徴とする。
【0017】
この請求項4の発明によれば、求めたフィードバック値に負の値が含まれないようにすることができる。それにより、ベクトルに負の値が生ずることによるノイズの発生を抑えることができる。
【0018】
また、請求項5の発明にかかるデータ検索装置は、請求項1〜4のいずれか一つに記載の発明において、前記分類手段は、適合データまたは非適合データのいずれか一方が指摘されなかった場合、分類されなかったデータの集合を、適合データまたは非適合データの指摘されなかった方に分類することを特徴とする。
【0019】
この請求項5の発明によれば、適合データまたは非適合データの一方にしか分類されない場合に、偏った分類結果に基づいたフィードバックを防ぐことができる。
【0020】
また、請求項6の発明にかかるデータ検索装置は、請求項1〜5のいずれか一つに記載の発明において、ユーザ間の関係の深さに関する値を入力する入力手段を備え、前記算出手段は、前記入力手段によって入力された、情報の提示を求めるユーザとフィードバックを入力したユーザとの間の関係の深さに関する値にしたがって前記フィードバック値を増減することを特徴とする。
【0021】
この請求項6の発明によれば、ユーザの間の関係にしたがったフィードバック値を得ることができ、それによりユーザの意図に沿った形で検索結果を洗練させることができる。
【0022】
また、請求項7の発明にかかるデータ検索装置は、請求項1〜6のいずれか一つに記載の発明において、前記算出手段は、Rocchio法を利用することにより前記フィードバック値を求めることを特徴とする。
【0023】
この請求項7の発明によれば、Rocchio法により、洗練されたフィードバック値を求めることができる。
【0024】
また、請求項8の発明にかかるデータ検索装置は、請求項1〜7のいずれか一つに記載の発明において、前記算出手段は、Bayes法を利用することにより前記フィードバック値を求めることを特徴とする。
【0025】
この請求項8の発明によれば、Bayes法により、洗練されたフィードバック値を求めることができる。
【0026】
また、請求項9の発明にかかるデータ検索装置は、請求項1〜8のいずれか一つに記載の発明において、前記算出手段は、SVMを利用することにより前記フィードバック値を求めることを特徴とする。
【0027】
この請求項9の発明によれば、SVMを使用して算出することにより、洗練されたフィードバック値を求めることができる。
【0028】
また、請求項10の発明にかかるデータ検索装置は、請求項1〜9のいずれか一つに記載の発明において、前記検索項目に従って前記データを検索する検索手段を備え、前記作成手段は、前記検索手段によって検索されたデータおよび前記検索項目について要素ベクトルを作成することを特徴とする。
【0029】
この請求項10の発明によれば、検索することにより得られる視点を使用することにより、データおよび検索項目の要素ベクトルを拡張することができる。それにより、検索結果がフィードバックされ、検索結果を洗練させることができる。
【0030】
また、請求項11の発明にかかるデータ検索装置は、請求項1〜10のいずれか一つに記載の発明において、前記データは文書であり、前記要素は前記文書を構成する単語であり、前記要素ベクトルは、前記単語についてそれぞれ値を割り当てることによって作成される単語ベクトルであることを特徴とする。
【0031】
この請求項11の発明によれば、文書を検索するにあたり適合文書と非適合文書の違いから、単語間の相関性を求め、検索項目に含まれない単語を考慮して文書を検索することができる。それにより単語の検索結果を洗練させることができる。たとえば、検索エンジンにおいて、より関連性の高い文書を上位に提示することができる。
【0032】
また、請求項12の発明にかかるデータ検索装置は、請求項1〜11のいずれか一つに記載の発明において、前記算出手段は、適合データおよび非適合データの各集合から学習することによりデータ間の距離計算法を修正し、学習結果によって得られた数値が所定の範囲に納まるように所定の倍率をかけることによって、前記フィードバック値を求めることを特徴とする。
【0033】
この請求項12の発明によれば、適合データおよび非適合データの分類結果から、学習によって検索結果を洗練させることができる。そして、その計算方法を適正な範囲に納まるように修正するので、より適切な検索結果を得ることができる。
【0034】
請求項13の発明にかかるデータ検索装置は、複数の要素によって構成されるデータおよび該データの複数の検索項目について要素ベクトルを作成する作成手段と、前記検索項目のそれぞれについて前記データを適合データと非適合データに分類する分類手段と、前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、前記検索項目についての要素ベクトルをそれぞれ修正して、修正ベクトルを作成する修正手段と、前記修正手段によって作成された修正ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより前記検索項目についてそれぞれ評価値を求め、前記データについての修正ベクトルを該評価値でそれぞれ加重して合成することにより加算ベクトルを作成する合成手段と、前記合成手段によって作成された加算ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより、前記データの順位付けに関する値を求める順位付け手段と、を備えることを特徴とする。
【0035】
この請求項13の発明によれば、データの適合/非適合から得られるフィードバックを使用することにより、検索項目に対応した要素ベクトルを拡張することができる。それにより、データに対して再検索する場合に、要素間の相関性を反映させることにより検索結果を洗練させることができる。ここで、データが大量に提供される場合でも、検索項目についてベクトル要素を拡張すればよい、大量のデータ全てについて拡張処理を実行する必要がなくなる。それにより、必要以上の演算処理を実行する必要がなくなり、処理負担や時間をかけることなく所望の検索結果を得ることができる。
【0036】
また、請求項14の発明にかかるデータ検索装置は、請求項13に記載のデータ検索装置において、前記修正手段は、前記検索項目についての要素ベクトルに、前記適合データについての要素ベクトルを加算し、前記非適合データについての要素ベクトルを減算することにより、前記修正ベクトルを作成することを特徴とする。
【0037】
この請求項14の発明によれば、検索項目についての要素ベクトルは、適合データを正、非適合データを負として修正される。それにより、検索項目についての要素ベクトルを、より的確な検索結果を得ることができる形で利用することができ、それにより所望の演算結果を得ることができる。
【0038】
また、請求項15の発明にかかるデータ検索装置は、請求項13または14に記載のデータ検索装置において、前記合成手段は、前記修正ベクトルと前記要素ベクトルとの間の内積をとることにより得られた内積値を、前記評価値として求めることを特徴とする。
【0039】
この請求項15の発明によれば、修正ベクトルと要素ベクトルの内積値を評価値とすることができる。それにより、修正ベクトルに加重する評価値としてより適切な値を求めることができる。そして、適切な評価値を使用することにより所望の検索結果を得ることができる。
【0040】
また、請求項16の発明にかかるデータ検索装置は、請求項13〜15のいずれか一つに記載のデータ検索装置において、前記合成手段は、前記検索項目に対する修正ベクトルを、前記検索項目についての評価値でそれぞれ加重して加算することにより、前記加算ベクトルを作成することを特徴とする。
【0041】
この請求項16の発明によれば、修正ベクトルを評価値で加重することにより加算ベクトルを求めることができる。評価値が大きくなる検索項目について修正ベクトルが加重されるので、修正ベクトルごとのばらつきを抑えた形で適切な加算ベクトルを求めることができ、それにより所望の検索結果を得ることができる。
【0042】
請求項17の発明にかかるデータ検索方法は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成工程と、前記データを適合データと非適合データに分類する分類工程と、前記分類工程によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出工程と、前記算出工程によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て工程と、前記割り当て工程によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算工程と、前記演算工程によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け工程と、を含むことを特徴とする。
【0043】
この請求項17の発明によれば、データの適合/非適合から得られるフィードバックを使用することにより、検索項目およびデータに対応した要素ベクトルを拡張することができる。それにより、要素間の相関性を持たせることができ、検索項目に含まれない要素を考慮した検索結果を得ることができる。その結果、データに対して再検索する場合に、要素間の相関性を反映させることにより検索結果を洗練させることができる。
【0044】
請求項18の発明にかかるデータ検索プログラムによれば、請求項17に記載のデータ検索方法をコンピュータに実行させることができる。
【0045】
また、請求項19の発明にかかるコンピュータに読み取り可能な記録媒体は、請求項18に記載のデータ検索プログラムをコンピュータが読み出して実行することができる。
【発明の効果】
【0046】
本発明にかかるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体によれば、既存の評価を視点として再利用し、検索クエリーおよびデータのベクトルを拡張する事で、検索結果のランキングを改善する。その結果、たとえば既存の似た意図の検索の評価情報が有れば、新たに評価を行う必要無しに、検索結果を洗練することができるという効果を奏する。
【発明を実施するための最良の形態】
【0047】
以下に添付図面を参照して、この発明によるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体の実施の形態を詳細に説明する。
【0048】
(実施例1)
図1は、この発明の実施の形態によるデータ検索装置のハードウエア構成の一例を示すブロック図である。図中、CPU101は装置全体を制御する。ROM102は基本入出力プログラムを記憶する。RAM103はCPU101のワークエリアとして使用される。
【0049】
また、HDD(ハードディスクドライブ)104はCPU101の制御にしたがってHD(ハードディスク)105に対するデータのリード/ライトを制御する。HD105はHDD104の制御にしたがって書き込まれたデータを記憶する。
【0050】
また、FDD(フレキシブルディスクドライブ)106はCPU101の制御にしたがってFD(フレキシブルディスク)107に対するデータのリード/ライトを制御する。FD107は、着脱自在であり、FDD106の制御にしたがって書き込まれたデータを記憶する。
【0051】
また、CD−RWドライブ108はCPU101の制御にしたがってCD−RW(または、CD−R、CD−ROM)109に対するデータのリード/ライトを制御する。CD−RW109は着脱自在であり、CD−RWドライブ108の制御にしたがって書き込まれたデータを記憶する。
【0052】
また、ディスプレイ110はカーソル、メニュー、ウィンドウ、あるいは文字や画像などの各種データを表示する。キーボード111は文字、数値、各種指示などの入力のための複数のキーを備える。マウス112は各種指示の選択や実行、処理対象の選択、マウスポインタの移動などを行う。
【0053】
また、ネットワークI/F113は、通信ケーブル114を介してLANやWANなどのネットワークに接続され、当該ネットワークとCPU101とのインターフェースとして機能する。バス120は上記各部を接続する。
【0054】
図2は、この発明の実施の形態にかかるデータ検索装置の機能的構成を示すブロック図である。データ検索装置は、検索部201、ベクトル作成部202、分類部203、算出部204、割り当て部205、演算部206、順位付け部207によって構成される。以上の各構成は、図1に示したCPU101が、ROM102からプログラムを読み出しRAM103をワークエリアとして使用することにより実現される。
【0055】
検索部201は、複数の要素によって構成されるデータのうち、所定の検索項目を要素として含むデータを検索する。データが文書の場合、複数の文書から所定の検索語を含む文書を検索する。たとえば「和菓子」を検索語として入力した場合、「和菓子のレシピ集。季節の果物を使う。」などの「和菓子」を含む文書を検索する。以降、データが文書である場合を中心に説明していくが、実施例4において説明するように、データは文書以外であるとすることもできる。
【0056】
ベクトル作成部202は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する。具体的には、検索された文書について単語ベクトルを作成する。たとえば、「和菓子のレシピ集。季節の果物を使う。」という文書が検索された場合、(和菓子:0.5、レシピ:0.5、季節:0.5、果物:0.5)という単語ベクトルを作成することができる。
【0057】
分類部203は、検索された文書を、適合文書と非適合文書に分類する。たとえば、「和菓子」という語を含む文書を検索しても、検索意図にあった文書とそうでない文書の両方が含まれる。そこで、検索意図に合った文書を適合文書に、検索意図に合わない文書を非適合文書に分類し、後述の処理を実行することによりその後の検索結果を洗練させる。また、検索された文書のうち少なくとも1つを、適合文書または非適合文書に分類することもできる。また、検索された文書を、適合文書と非適合文書のうち一方にのみ分類された場合、検索された文書のすべてを分類できなかった文書の集合とすることもできる。
【0058】
算出部204は、分類された適合文書の集合と非適合文書の集合の間の相違に基づいてフィードバック値を求める。具体的には、適合文書と非適合文書のそれぞれについて代表的な値をもつベクトルを求め、両者の差分である差分ベクトルを求め、差分ベクトルと各文書の単語ベクトルの内積値からフィードバック値を求める。
【0059】
また、適合文書および非適合文書の各集合から学習することによりデータ間の距離計算法を修正し、学習結果によって得られた数値が所定の範囲に納まるように所定の倍率をかけることによって、フィードバック値を求めることもできる。また、SVMのスコアを利用することによりフィードバック値を求めることもできる。
【0060】
割り当て部205は、算出部204によって求められたフィードバック値を、各文書の単語ベクトルにそれぞれ割り当てる。すなわち、フィードバック値を各単語ベクトルの一要素とし、一次元として追加する。
【0061】
演算部206は、割り当て部205によってフィードバック値が割り当てられた単語ベクトルを参照することにより、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する。演算実行後に、分類部203、算出部204、割り当て部205、演算部206による演算処理を、1回または複数回繰り返すことにより演算結果を洗練させることもできる。
【0062】
順位付け部207は、演算部206によって実行された演算結果に基づいて、データの順位付けに関する値を求める。たとえば、得られたスコアの値の順に文書を並べ、順番に文書を表示する。
【0063】
上述の構成により、文書集合からユーザの意図に沿った文書を検索する。例えば、和菓子の作り方を知りたいユーザによって、「和菓子」というクエリーが検索部201に入力される。そして検索部201によって、図3において説明される文書群が検索される。なお、単語や概念のベクトルによって検索することができるが、ブーリアン等他の検索システムでも、同様の効果を得ることもできる。この場合、得られた結果だけを、クエリーのベクトルに近い順にランキングすることにより検索する。ここでは、単語ベクトルによる検索システムであることを仮定して話を進める。
【0064】
なお、単語ベクトルの作成方法としては、TF(単語頻度)に基づく方法や、TF・IDF(単語が出現する文書頻度の逆数)に基づく方法等、様々な方法があり、任意の手法と組み合わせが可能である。ここでは、いずれかの手法によって、単語ベクトルは作成できているものとする。
【0065】
単語ベクトルの作成にあたっては、まず文書から単語を抽出する。抽出された単語について、上述のように単語ベクトルを作成する。なお、抽出する単語が英語の場合と日本語の場合では方法は異なる。まず、英語の場合、単語間に空白があるので、個々の単語を容易に取り出せる。また、名詞は単数、複数で語尾変化する。動詞も時制、数で語尾変化する。一方、日本語の場合、膠着言語であり、単語の切れ目が形だけでは分からない。また、名詞は語尾変化しない。また、多数の名詞が繋がって複合名詞を形成することが多い。また、漢字は1文字でそれなりの意味を持つ。
【0066】
英語のターム抽出について説明する。英語では、異形態から語幹を抽出する。例えば、engineering,engineered,engineeresなどから共通の語幹engineerを抽出する。最もナイーブな方法は、全ての異形態に語幹を対応させる対応辞書を作っておき、入力された異形態から辞書引きによって語幹を求める。ただし、この対応辞書は膨大なものになるので、語幹を求める規則を用意しておき、それを適用することもできる。この規則の例を次に示す。
【0067】
ational−−>ate(relational−−>relate)、
tional −−>tion(conditional−−>condition)、
ator−−>ate(operator−−>operate)、
ly−−>NULL(truely−−>true)
とすることができる。
【0068】
また、文書を特徴付けない一般的な語をリストに登録しておき、このリストにある語を取り除く。除く語の例としては、a,about,above,across,after,again,・・・,get,give,go,・・・,that,the,・・・,x,y,year,you,・・・,zが挙げられる。
【0069】
次に、日本語のターム抽出について説明する。先に述べた日本語の性質からすれば、タームとして、文字ないしn文字の連続(これをn−gramという)であるもの、単語、の2種類が考えられる。
【0070】
まず、n−gramについて説明する。日本語の場合は複雑な形態素解析をしなければ単語を切り出すことができない。そこで、形態素解析を使わずにキーワードらしきものを切り出す方法としてn−gramがある。n−gramはn個の連続する文字列である。例えば、「形態素解析辞書」からは、「形態」「態素」「素解」「解析」「析辞」「辞書」の6個の2−gram が得られる。しかし、「辞書は」という文節からは「書は」などという意味のないタームも出て来てしまう。そこで、これらの2−gramから何らかの基準を使ってよりよいキーワードを選択する。
【0071】
次に、単語について説明する。日本語の場合は、文から単語を切り出す形態素解析を行う。形態素解析し、単語を切り出した場合、英語のような異形態は比較的少ない。「XX的」などは、形態素解析で「的」まで分離してくれるものもある。また、形態素解析は単語の品詞も分かる。そこでstop wordとして品詞を使うことができる。このとき、ターム候補として名詞だけを選ぶこともできる。
【0072】
図3は、検索された文書の単語ベクトルを説明する説明図である。まず、「和菓子」が検索された場合について説明する。このクエリー300の単語ベクトルは、(和菓子:1)である。これに対し、次の文書301〜304が検索結果の一部であった場合について説明する。
【0073】
検索結果の文書301は、「和菓子のレシピ集。季節の果物を使う。」であり、文書301の単語ベクトルは、(和菓子:0.5、レシピ:0.5、季節:0.5、果物:0.5)である。検索結果の文書302は、「通信販売。和菓子特集。ようかん1000円。」であり、単語ベクトルは、(通信:0.5、販売:0.5、和菓子:0.4、特集:0.3、ようかん:0.5)である。
【0074】
検索結果の文書303は、「和菓子の歴史。粒あんとこしあんの違い。」であり、単語ベクトルは、(和菓子:0.4、歴史:0.8、粒あん:0.4、こしあん:0.2)である。検索結果の文書304は、「美味しい和菓子を作るコツ。下ごしらえが大事。」であり、単語ベクトルは、(和菓子:0.2、コツ:0.8、下ごしらえ:0.4、大事:0.4)である。
【0075】
図4は、クエリーと検索結果の各文書の角度のコサイン値行列を説明する説明図である。ベクトル間の距離尺度として、ベクトル同士のなす角のコサイン値を利用する場合を考える。この場合、コサイン値が大きいほど、ベクトル同士が似ていると見なすため、一般的な距離尺度とは大小関係が逆となる。また、他の距離尺度、例えばユークリッド距離等を利用した場合でも同様に成り立つ。
【0076】
この距離尺度でランキングする場合、クエリーに対する文書301〜304のスコア(ベクトル間の角度のコサイン値)は、それぞれ0.5、0.4、0.4、0.2となる。その結果、文書301〜304の順番で提示される。そして、クエリー300および文書301〜304の全てのベクトル間のスコアは、図4に示す通りとなる。
【0077】
図5は、差分ベクトルを求める処理を説明する説明図である。ここで、文書301〜304を、適合文書と非適合文書に分類する。文書301〜304に関して、ユーザの意図は、和菓子の作成にあることを例に挙げて説明する。この場合、文書301および304が希望文書に近く、文書302および303は遠いと考えられる。そこでユーザは、文書301および304を適合文書と指摘し、文書302および303を非適合文書と指摘したとする。そして分類部203は、文書301および304を適合文書集合501に、文書302および303を非適合文書集合502に分類する。
【0078】
このユーザからのフィードバックを利用して、適合文書集合501と非適合文書集合502を識別する関数の学習処理を行う。この学習処理には、様々な手法が考えられ、一般的な学習手法である、SVM(Support Vector Machine)やNB(Naive Bayes)やk−NN(k−Nearest Neibour)等を利用しても良い。ここでは、より簡便な各文書集合の重心間の差分ベクトルを利用する手法に沿って、説明を行う。
【0079】
適合文書集合501(文書301および304)の重心は、(和菓子:0.35、レシピ:0.25、季節:0.25、果物:0.25、コツ:0.4、下ごしらえ:0.2、大事:0.2)となる。非適合文書集合502(文書302および303)の重心は、(通信:0.25、販売:0.25、和菓子:0.4、特集:0.15、ようかん:0.25、歴史:0.4、粒あん:0.2、こしあん:0.1)となる。
【0080】
これらの差分である差分ベクトル503は、(和菓子:−0.05、レシピ0.25、季節:0.25、果物;0.25、コツ:0.4、下ごしらえ:0.2、大事:0.2、通信:−0.25、販売:−0.25、特集:−0.15、ようかん:−0.25、歴史:−0.4、粒あん:−0.2、こしあん:−0.1)となる。
【0081】
ここで、スコア値を、差分ベクトル503とクエリー300および各文書301〜304の単語ベクトルとの間で求める。このスコア値は、上述のように、ベクトル同士のなす角のコサイン値によって求め、具体的には、ベクトル間の内積を両ベクトルの絶対値で割ることによって求める。ここで、クエリー300および各文書301〜304の単語ベクトルについて求められたスコア値を、各ベクトルに対するフィードバック値として、各ベクトルにそれぞれ割り当てる。
【0082】
差分ベクトル503とクエリー300の間のスコアは、−0.05である。また、差分ベクトル503と、文書301〜304の単語ベクトルのスコアは、それぞれ約0.38、約−0.48、約−0.48、約0.51となる。適合文書301・304のスコアが高く、非適合文書302・303のスコアが低い指標となる。この指標となる差分ベクトル503を利用して、文書を再検索したり、検索結果の文書群を再ランキングしたりして、ユーザの意図により近い文書を効率的に発見することが可能となる。
【0083】
ここで、ユーザが検索結果に対して与えた指標は、一つの視点であり、新たな次元として利用することも可能となる。そこで、この指標(評価関数値)を、各文書の新たな次元の一つとして追加する。今回は、新たな次元の値として、上記のスコアをそのまま用いるが、もちろん、値の範囲を何らかの手法で限定しても良い。値の範囲を限定する方法として、単純に、1以上の数値を全部1と見なしたり、シグモイド関数(1/(1+ex))を通したりすることが考えられる。ここでは、以上のクエリーと4つの文書のベクトルをそのまま利用することを考える。
【0084】
図6は、フィードバックを反映した単語ベクトルを説明する説明図である。図3に示したクエリー300および文書301〜304に、それぞれの差分ベクトル503との間のスコアであるフィードバック値を割り当て、その結果であるクエリー600および文書601〜604を図6に示している。
【0085】
ここで、クエリー600は、「和菓子」であり、クエリー600の単語ベクトルは、(和菓子:1、フィードバック:−0.05)である。検索結果の文書601は、「和菓子のレシピ集。季節の果物を使う。」であり、文書601の単語ベクトルは、(和菓子:0.5、レシピ:0.5、季節:0.5、果物:0.5、フィードバック:0.38)である。
【0086】
検索結果の文書602は、「通信販売。和菓子特集。ようかん1000円。」であり、文書602の単語ベクトル(通信:0.5、販売:0.5、和菓子:0.4、特集:0.3、ようかん:0.5、フィードバック:−0.48)である。検索結果の文書603は、「和菓子の歴史。粒あんとこしあんの違い。」であり、文書603の単語ベクトル(和菓子:0.4、歴史:0.8、粒あん:0.4、こしあん:0.2、フィードバック:−0.48)である。検索結果の文書604は、「美味しい和菓子を作るコツ。下ごしらえが大事。」であり、文書604の単語ベクトル(和菓子:0.2、コツ:0.8、下ごしらえ:0.4、大事:0.4、フィードバック:0.51)である。
【0087】
図7は、フィードバックを反映したコサイン値行列を説明する説明図である。クエリー600と各文書601〜604のスコアは、それぞれ0.45、0.38、0.38、0.16となる。また、文書601と文書602、603、604とのスコアは、それぞれ0.01、0.01、0.24となる。文書602と文書603、604とのスコアはそれぞれ0.32、−0.13となる。文書603と文書604とのスコアは、−0.13となる。
【0088】
このように、フィードバックを反映させる操作の結果、この新たな次元の値(フィードバック値)が似ているベクトルの間のスコア(文書601・604間、文書602・603間)はより大きく、似ていないベクトル間のスコア(文書601・602間、文書601・603間、文書602・604間、文書603・604間)はより小さくなる。
【0089】
図8は、フィードバックを反映した単語ベクトルの作成処理を説明するフローチャートである。まず、クエリー(検索項目)300を入力する(ステップS801)。次に、検索部201は、文書を検索する(ステップS802)。それにより、文書301〜304が検索される。
【0090】
次に、検索された文書301〜304について、単語ベクトルを作成する(ステップS803)。ここで作成される単語ベクトルは、図3に示したとおりである。そして、検索された文書301〜304を、適合文書と非適合文書に分類する(ステップS804)。それにより、文書301〜304は、適合文書集合501と非適合文書集合502に分けられる。次に、適合文書集合501と非適合文書集合502について重心を求める(ステップS805)。求められる重心は、図5において適合文書集合501および非適合文書集合502のそれぞれの単語ベクトルとして示している。
【0091】
次に、適合文書集合501と非適合文書集合502の重心の間で、差分ベクトル503を求める(ステップS806)。次に、差分ベクトル503と各文書の単語ベクトルとの間のスコアをフィードバック値とする(ステップS807)。そして、求められたフィードバック値を各文書の単語ベクトルの要素値の1つにして(ステップS808)、一連の処理を終了する。
【0092】
以上の様に、ユーザフィードバックを考慮に入れたデータ間の距離の補正が可能となる。このフィードバックを複数回繰り返すことによって、似ていると判定するユーザフィードバックが多ければよりベクトル間の角度を小さく、少なければよりベクトル間の角度を大きくする事が出来る。
【0093】
この実施の形態では、過去の適合性フィードバックで得られた情報を、検索モデルに反映する。それにより従来の適合性フィードバックに比べて、状況依存の関連語拡張ができ、大規模対応しやすい構成となる。この実施の形態による適合性フィードバックを、具体例を用いて説明してきたが、次に、数式を用いた形で説明する。
【0094】
図9は、適合性フィードバックで得られた情報を、検索モデルに反映する処理を説明するフローチャートである。この処理においては、適合性フィードバックにより視点を蓄積し、その上で視点を利用して検索を実行する。
【0095】
適合性フィードバック時には、文書に対する評価式を決定する。この評価式は、文書がどれだけ検索意図に合致していたかを示す指標の場合、任意の式が利用可能ではあるが、後の計算のしやすさを考えて、次の線形の評価式を用いる。その式は、f(doc)=h+Σaiwiである。但し、(w1,w2,w3,・・・,wn)は文書の単語ベクトルである。また、(a1,a2,a3,・・・,an)とhは、学習によって求められるパラメータである。
【0096】
この評価式が高いほど、検索意図に合致する可能性を高くすることが望まれるが、そうなるようにパラメータを学習するにあたり、様々な手法が考えられる。ここでは、少数のデータで頑健に判別できるSVM(Support Vector Machine)を利用する。適合性フィードバックにSVMを利用することにより、検索精度を大きく改善することができる。
【0097】
まず、文書を単語ベクトルに変換する(ステップS901)。単語ベクトルは、形態素解析後の自立語を各次元とし、TF・IDF法で数値化する。その後、L2ノルムが1となるように正規化し、各文書の単語ベクトルとして使用する。このときのベクトルの値は、例えば文書内の各自立語の有無を、それぞれ2値(1,0)で数値化するなどとしてもよい。その後、L2ノルムが1となる様に正規化し、各文書の単語ベクトルとして使用する。その結果、図3に示す各文書301〜304についての単語ベクトルが作成される。
【0098】
次に、クエリー300を単語ベクトルに変換する(ステップS902)。クエリー中の各単語を、1単語のみの文書とみなして、文書と同様に単語ベクトルに変換する方法や、クエリー内の全単語を1つずつ含む単一の文書とみなして単語ベクトルに変換する方法が考えられる。次に、SVMの学習を行う(ステップS903)。ここで、非適合文書集合502の単語ベクトルを負例として、適合文書集合501の単語ベクトルと、クエリーの単語ベクトルを正例とする。
【0099】
そして、学習されたSVMの判定式を用いて評価式を構築する(ステップS904)。SVMの判定式は、0の場合、Separating hyperplain上であり、±1の場合、それぞれ正例・負例側のSupporting hyperplain上である事を示す式である。このSVMの判定値に1を足し、さらに負の場合は0に切り上げることで、評価式の値とする。
【0100】
ここで求めた評価式は、適合性フィードバックの検索意図と文書がどれだけ合致しているかを示す指標である。つまり、目的を限定した、文書群に対する一つの視点とも言える。また、クエリーの単語ベクトルも学習対象としているため、同様のクエリーが入力された場合、クエリーの評価値も高くなることが期待できる。そのため、クエリーと文書を同列に扱うことが可能となる。このようにして、視点(評価式)を、適合性フィードバックのたびに蓄積し、文書やクエリーから視点ベクトルを構築できる様にしておく。
【0101】
以上のように視点が作成され、蓄積されるが、この蓄積された視点を利用して検索を実行することができる。視点ベクトルが似ていると言うことは、クエリーや文書が、評価や利用のされ方において似ている事を示す。そこで、視点ベクトルを、通常の検索で用いる単語ベクトルの代わりに利用する。
【0102】
検索を実行した後、クエリーの視点ベクトルと、文書の視点ベクトルとの内積が高い順に、検索結果をユーザに提示する。それにより、検索結果を適切な順序に並べて、ユーザが利用しやすい形で提示することができる。
【0103】
この実施の形態においては、クエリーの単語ベクトルを関連語拡張し、その後ベクトル空間モデルに基づいて、文書の検索を行っているとみなすことができる。ただし、以下の説明で明らかな様に、検索クエリーに応じて、別々に関連語拡張している。
【0104】
関連語拡張について説明する。クエリーの単語ベクトルをq=(1,q1,q2,q3,・・・,qn)、文書の単語ベクトルをw=(1,w1,w2,w3,・・・,wn)とする。ここで、上述のようにf(doc)=h+Σaiwiにより、視点ベクトルの要素を、それぞれこのベクトルと学習によって求められた評価式の重みであるvj=(hj,aj1,aj2,aj3,・・・,ajn)の内積により求める。ただし、視点の値が0以下の値の場合には、0に切り上げる処理を実行する。つまり、視点ベクトルの構築は、評価式の重みの行列である、次の式を使用する
【0105】
【数1】
【0106】
上記の式を利用して、行列演算を実行する。クエリーの視点ベクトルはVq、文書の視点ベクトルはVwと表現でき、これらの内積は、(Vw)tVq=wtVtVqと変形できる。つまり、クエリーの単語ベクトルであるqを、VtVにより一次変換することによって、関連語拡張をしていると見なせる。
【0107】
ただし、視点ベクトルの元として、負の値を認めず0に切り上げている。視点が負の値ということは、その視点の検索意図において、全然使い物にならないクエリーや文書である可能性が高いことを意味する。適合度が低い部分の類似度を計算すると、ノイズになるだけでメリットが無いため、この切り上げ処理を行っている。
【0108】
この切り上げ処理により、クエリーの視点ベクトルの中には、0になる次元が出てくる。0になった次元は、文書の視点ベクトルに対応する次元の値が何であろうと、視点ベクトル同士の内積に影響せず、無視できる。つまり、視点ベクトルへの変換行列Vの中で、実際の検索に利用するのは、クエリーの視点ベクトルの要素が正となる部分に対応する行だけである。この検索に利用する部分は、クエリーによって変化するため、状況に応じた関連語拡張が可能となっている。
【0109】
図10は、適合性フィードバックを小規模文書に適用した場合のフィードバック処理を説明するフローチャートである。まず、クエリーと適合・非適合文書を入力する(ステップS1001)。適合・非適合文書の入力は、既存文書を適合文書集合501または非適合文書集合502に分類することにより実行する。そして、クエリーと適合文書を正例として、非適合文書を負例として評価式を学習する(ステップS1002)。
【0110】
フィードバック時の処理は以上のとおりであるが、ここで、クエリーを適合文書に混ぜる以外は、従来の適合性フィードバックを踏襲している。以上の処理により、クエリー中の語と適合文書中の特徴語を、両方とも評価値を上昇させる効果を持たせることが出来る。その結果、適合文書の評価値が高くなるのはもちろん、同じクエリーや、表現に揺らぎのあるクエリー(学習したクエリー中の語と適合文書中の特徴語が混ざっている場合)でも、評価値を高くすることが出来る。そのため、文書だけでなく、クエリーに関しても、どれだけフィードバックしたときの検索意図(使い道)に近いかどうかという基準として利用することができる。
【0111】
図11は、適合性フィードバックを小規模文書に適用した場合の検索処理を説明するフローチャートである。まず、図10に示したフィードバック処理を実行することにより、評価式を学習しておく。そして、クエリーと既存文書全てに対して、既存の全ての評価式を用いた評価値のベクトルを作成する(ステップS1101)。次に、評価値のベクトルの中の、負の値を全て0に置き換える(ステップS1102)。次に、ベクトル空間モデルを利用して、クエリーの評価値のベクトルに近い評価値のベクトルを持つ文書の順に、文書を提示する(ステップS1103)。ここで、近さの定義には、さまざまなものをあげることができる。例えば内積や差ベクトルのノルム等が考えられる。
【0112】
検索時の処理は以上のとおりであるが、ここでのポイントは、既存の全ての評価式を利用して、評価値のベクトルを作成する点と、評価値のベクトルの負の値を切り上げて0にする点である。前者は、検索意図が似ているかどうかを、既存の検索意図を学習した全ての評価式を利用してベクトルとして表現していることになる。つまり、検索意図が似ていれば、大きい評価値になる次元が似てくるはずである。
【0113】
後者は、ノイズを除去するための措置である。この処理を行わないと、どの様な検索意図でも使い物にならず、全ての評価値が負の値である様な文書が、特定の検索意図に基づくクエリー(つまり一部の次元だけが正で他の多くの次元が負の値)と近い文書とされてしまう。この様に、使い物にならない部分が似ていてもしかたなく、使い物になる検索意図の部分の類似性のみを見るために、負の値の切り上げを行っている。
【0114】
図12は、適合性フィードバックを大規模文書に適用した場合の準備処理を説明するフローチャートである。まず、図10に示したステップS1001およびステップS1002と同じ処理を実行しておく。すなわち、クエリーと適合・非適合文書を入力し、クエリーと適合文書を正例として、非適合文書を負例として評価式を学習する。
【0115】
その上で、準備処理を実行する。大規模文書群に対して適用する場合、文書一つ一つに対して評価値を計算していたのでは実用的な性能は出ない。そのため、数学的にクエリーのほうを工夫して、関連語拡張により同様に操作できるようにする。
【0116】
なお、小規模文書群に対しては、評価式等の形を限定しなかったが、大規模対応のために、「文書やクエリの単語等から作成したベクトルwと学習によって求める重みベクトルvの内積」という形に評価式を限定する。また、ベクトル空間モデルによる検索も、「内積が近いベクトルの順に結果を返す」という形に限定する。
【0117】
まず、フィードバック毎に、評価式の重みベクトルを得る(ステップS1201)。次に、評価式の重みベクトルを、ベクトル空間モデル(内積順)で高速に検索できるように準備する(ステップS1202)。ここでのポイントは、文書やクエリーのベクトルと同次元である、評価式の重みベクトルを、あたかも文書やクエリーのベクトルであるかの様に、高速なベクトル空間モデルによる検索が出来るようにしておく事である。そして、入力ベクトルとの内積が高い順に結果を出力する。具体的には、既存の代表的な手法である。転置索引を利用した手法等が考えられる。
【0118】
図13は、適合性フィードバックを大規模文書に適用した場合の検索処理を説明するフローチャートである。まず、図12に示した準備処理を実行しておく。この準備処理がされた大規模文書に対して次に説明する検索処理を実行する。
【0119】
まず、クエリーのベクトルを用いて、評価値の重みベクトル群を対象に検索し、内積が正になる重みベクトルのみを抽出する(ステップS1301)。次に、検索された重みベクトルを加重平均し、実際の文書のベクトルを検索するためのベクトルを算出する(ステップS1302)。ここで、加重平均の重みには、クエリーのベクトルとの内積の値を利用する。そして、文書検索用のベクトルを利用して、内積値が高い順に文書のベクトルを検索し(ステップS1303)、一連の処理を終了する。
【0120】
準備処理をしておくことにより、検索時には、文書毎に評価値を付与しておく必要無しに、単純な単語等のベクトルとしての検索が可能となる。このように、文書全てに適合性フィードバックによる視点の値を付与して、インデックス化することは必ずしも必要ではない。文書すべてに視点の値を付与しない場合、文書を従来どおりに単語ベクトルとしてインデックス化し、クエリーに対して、状況依存の関連語拡張を行う前処理をした後に、通常のベクトル空間モデルにより文書を検索することができる。つまり、大規模対応のためには、関連語拡張の部分の大規模対応で必要十分である。
【0121】
関連語拡張の前処理の部分、すなわちVtVqの計算であるが、これも従来のベクトル空間モデルと同じ方法で可能である。評価式の重みベクトルである、vjを、文書の単語ベクトルと見なしてインデックス化しておき、クエリーの単語ベクトルqとの内積値が0以上の重みベクトルを検索する。この内積値を並べたクエリーの視点ベクトルがVqであり、検索された重みベクトル群を並べた行列がVであるため、重みベクトルの単純な線形和として、VtVqが算出できる。
【0122】
厳密には、この方法だと、文書の視点の値を0に切り上げる処理を省略した事になる。しかし、元々視点の値を0に切り上げた意図は、視点が負の値同士の場合に、内積値が上昇してノイズになるのを防ぐことが主目的であったため、クエリーの視点ベクトルだけの切り上げで十分である事が予想される。
【0123】
この前処理は、擬似的な適合性フィードバックにおいて、1回文書を検索して、その文書によってクエリーの関連語拡張を行う処理と、全く同じである。ただ、前処理で検索するのが、文書の単語ベクトルなのか、評価式の重みベクトルなのかの違いが有るだけである。以上の考察により、理論上は擬似的な適合性フィードバックと同程度の大規模対応性能が有ると言え、本手法の検索1回につき、ベクトル空間モデルによる検索を2回行う程度の計算量である事が分かる。
【0124】
以上の実施の形態においては、適合性フィードバックを使用して検索する例について説明してきたが、検索以外にもベクトル空間モデルの手法が適用できる。この実施の形態においては、通常の(単語ベクトル等を利用した)ベクトル空間モデルの中に、評価値のベクトルを利用したベクトル空間モデルを組み込む。そのため、従来の単語ベクトル等で利用できた検索・分類・クラスタリング等の手法は、全て評価値のベクトルに対しても利用可能である。
【0125】
また、ベクトルの次元が単語ではなく評価に基づくので、扱いやすい粒度で処理することができる。したがって、評価式には意図や作成者があるので、この性質を利用して、一定範囲のコミュニティー内で作成された評価式を重視する(評価値の値を数倍する)等の工夫が簡単に出来る。
【0126】
また、評価式同士の関連性が容易に取得可能である。例えば、評価式が単語ベクトルと重みベクトルの内積で算出できる場合、評価式は重みベクトルとして表現できる。重みベクトルは、単語ベクトルと同じ次元数のベクトルであるため、評価式の重みベクトル同士の遠近関係なども容易に取得できる。そのため、評価式をそのまま検索に利用するのではなく、クエリーの評価値が高くなる評価式の重みベクトルをクラスタリングして、評価式の総数を絞り、それぞれの評価式毎に別々の検索結果を返すことなどが可能である。これらの検索結果の中で、最も意図に沿った検索結果を選ぶことで、ユーザに検索結果の選択肢を提示することが出来る。
【0127】
(実施例2)
次に、複数の検索クエリーを使用した場合の例を説明する。まず、検索対象文書と検索クエリーを共に単語ベクトルとして表現しておく。単語ベクトル化には、様々な方法が有るが、ここでは一例として、単語の有無をそれぞれ1と0の2値に変換し、その後ユークリッドノルムを正規化してベクトル化する手法を採用する。
【0128】
このベクトル化の手法によって、クエリーと文書は次のように単語ベクトル化される。
クエリー1:「構造改革」→(構造改革)=(1)
クエリー2:「補助金」→(補助金)=(1)
文書1:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し)=(0.5,0.5,0.5,0.5)
文書2:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート)=(0.5,0.5,0.5,0.5)
文書3:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる)=(0.5,0.5,0.5,0.5)
【0129】
ここで、一例として、検索が内積のスコア順の場合、「構造改革」で検索した結果は、文書1:スコア=0.5、文書2:スコア=0.5、(文書3:スコア=0)となる。この時、ユーザが行政上の構造改革について興味が有った場合、文書1が適合文書で、文書2が不適合文書となる。ここでは、適合文書を1つ、非適合文書を1つとしたが、適合文書、非適合文書をそれぞれ複数選択し、それぞれ適合文書集合、非適合文書集合とすることもできる。ここで、フィードバックからの学習方法として、Rocchio法を利用したとすると、以下のように再検索のためのクエリーベクトルを構成できる。
【0130】
再検索のためのクエリーベクトル1=(クエリー1+文書1−文書2):
(構造改革,補助金,削減,見通し,全国チェーン,物流,スマート)
=(1,0.5,0.5,0.5,−0.5,−0.5,−0.5)
評価式1=「再検索のためのクエリーベクトル1」とデータの単語ベクトルの内積
【0131】
ここでは、再検索のためのクエリーベクトルを正規化しなかったが、ユークリッドノルム等で正規化しても良い。この評価式1の値を追加する事により、クエリーと文書のベクトルは以下の様に拡張できる。
クエリー1’:「構造改革」→(構造改革,評価値1)=(1,1)
クエリー2’:「補助金」→(補助金,評価値1)=(1,0.5)
文書1’:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し,評価値1)
=(0.5,0.5,0.5,0.5,1.25)
文書2’:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート,評価値1)
=(0.5,0.5,0.5,0.5,−0.25)
文書3’:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる,評価値1)
=(0.5,0.5,0.5,0.5,0.25)
【0132】
この拡張により、もし以降の検索で再び「構造改革」というクエリーが入力された場合、文書の検索順は、文書1:スコア=1.75、文書2:スコア=0.25、文書3:スコア=0.25、と修正される。
【0133】
この様に、検索語を含まない文書3が、評価値を導入したおかげで上位に上がってきている。これは、Rocchio法なので当然ではあるが、クエリーのベクトルと適合文書のベクトルを同様に扱った結果、「構造改革」と「補助金」の関連性を学習出来たためである。もし、BayesやSVMで学習する場合、明示的にクエリーのベクトルを適合文書のベクトルとして扱う事で、同様の効果が期待できる。
【0134】
また、逆に「補助金」というクエリーで検索した場合、文書1:スコア=1.125、文書3:スコア=0.625、(文書2:スコア=−0.125)の様な順番となる。行政上の構造改革に関連する文書1・3のスコアがより高く、そうではない文書2のスコアをより低くできている。これによって、今までにフィードバックが入力された事のない検索クエリーに対しても、ランキングの改善の効果が期待できる。
【0135】
また、この検索時に、仮に文書3を適合文書として選択した場合、同様の枠組みにより、以下の評価式が構築される。
再検索のためのクエリーベクトル2=(クエリー2+文書3):
(補助金,教育,見直し,はじまる)=(1.5,0.5,0.5,0.5)
評価式2=「再検索のためのクエリーベクトル2」とデータの単語ベクトルの内積
【0136】
そのため、以降の検索では、以下の様に拡張されたベクトルを利用する事になる。
クエリー1”:「構造改革」→(構造改革,評価値1,評価値2)=(1,1,0)
クエリー2”:「補助金」→(補助金,評価値1,評価値2)=(1,0.5,1.5)
文書1”:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,1.25,0.75)
文書2”:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,−0.25,0)
文書3”:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,0.25,1.5)
【0137】
また、ベクトルに負の値が生ずると、負×負が正の値となり、ノイズとなる事がある。これを防ぐには、クエリーか文書の少なくともどちらかの評価値に対して、負の値を切り上げて0とすれば良い。もし文書の評価値を切り上げた場合、拡張されたベクトルは以下の様になる。
クエリー1’’’:「構造改革」
→(構造改革,評価値1,評価値2)=(1,1,0)
クエリー2’’’:「補助金」
→(補助金,評価値1,評価値2)=(1,0.5,1.5)
文書1’’’:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,1.25,0.75)
文書2’’’:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,0,0)
文書3’’’:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,0.25,1.5)
【0138】
以上の手法により、ユーザの嗜好や、ユーザが同一視する関連語を学習した検索を行う事が出来る。以上のでは、検索を例に出したが、ベクトルを評価式によって拡張する事が技術の根幹であるため、ベクトルを利用する他の方法、例えば、データの分類やクラスタリング等にも同様の枠組みで応用できる。また、この例では評価式自体もベクトルで表現できるため、似た評価式をクラスタリング等でまとめて、次元数を減少させて単純化する事も考えられる。
【0139】
(実施例3)
実施例2では、全てのデータ(クエリーや文書)に対して、全ての評価式を適用するため、データ数×評価式数の数値を格納する必要があり、データとフィードバックが多い場合には、さらに工夫するほうが好ましい。実施例3では、数学的な工夫によって、これらの評価値を直接管理せずに済ます方法を述べる。なお、適合文書を1つ、非適合文書を1つではなく、適合文書、非適合文書をそれぞれ複数選択し、それぞれ適合文書集合、非適合文書集合とすることもできる。
【0140】
まず、実施例2で構築した、以下のデータを利用する。
クエリー1:「構造改革」→(構造改革)=(1)
クエリー2:「補助金」→(補助金)=(1)
文書1:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し)=(0.5,0.5,0.5,0.5)
文書2:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート)=(0.5,0.5,0.5,0.5)
文書3:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる)=(0.5,0.5,0.5,0.5)
【0141】
再検索のためのクエリーベクトル1=(クエリー1+文書1−文書2)
→(構造改革,補助金,削減,見通し,全国チェーン,物流,スマート)
=(1,0.5,0.5,0.5,−0.5,−0.5,−0.5)
評価式1=「再検索のためのクエリーベクトル1」とデータの単語ベクトルの内積
【0142】
再検索のためのクエリーベクトル2=(クエリー2+文書3)
→(補助金,教育,見直し,はじまる)=(1.5,0.5,0.5,0.5)
評価式2=「再検索のためのクエリーベクトル2」とデータの単語ベクトルの内積
【0143】
ここで、以上の2回のフィードバックの情報を利用して、クエリー2で文書を検索する場合を考える。この時、まずクエリー2のベクトルで、再検索のためのクエリーベクトルを検索すると、再検索のためのクエリーベクトル2:スコア=1.5、再検索のためのクエリーベクトル1:スコア=0.5、となる。
【0144】
もし、この時負のスコアの検索結果がある場合、それを無視する事によって、クエリーの評価値の負の値を切り上げて0にするのと同様の効果が生じ、ノイズの削減効果が期待できる。次に、このスコアの重み付きで、再検索のためのクエリーベクトルを加算する。
【0145】
加算結果1→再検索のためのクエリーベクトル2×1.5+再検索のためのクエリーベクトル1×0.5→(補助金,教育,見直し,はじまる,構造改革,削減,見通し,全国チェーン,物流,スマート)=(2.5,0.75,0.75,0.75,0.5,0.25,0.25,−0.25,−0.25,−0.25)。
【0146】
さらに、このベクトルにクエリー2の単語ベクトルを加える。加算結果2→加算結果1+クエリー2→(補助金,教育,見直し,はじまる,構造改革,削減,見通し,全国チェーン,物流,スマート)=(3.5,0.75,0.75,0.75,0.5,0.25,0.25,−0.25,−0.25,−0.25)。
【0147】
このベクトルと、文書の「拡張していない」ベクトルの内積が高い順に、文書をスコアリングして提示する。その結果、文書3:スコア=2.875、文書1:スコア=2.25、(文書2:スコア=−0.125)となる。
【0148】
この様に、評価式を構成する重みベクトルを用いて、関連語拡張を行うことにより、クエリーと文書のベクトル両方を、あたかも評価値で拡張したかの様な、検索結果を得ることができる。
【0149】
(実施例4)
この技術は、文書以外にも適用可能である。実施例4では、パソコンの検索を例に取って、複数のユーザから関連する性能指標を学習する例を述べる。まず、パソコンの性能指標を「処理速度」・「容量」・「持ち運びやすさ」・「安さ」の4つに分け、何らかの基準で数量化したとする。また、ユーザの検索には、重視する性能指標をいくつか選択する事とする。その結果、以下の様なベクトルが生成できる。
【0150】
クエリー:「処理性能」→(処理性能)=(5)
パソコン1→(処理速度,容量,持ち運びやすさ,安さ)=(5,4,1,2)
パソコン2→(処理速度,容量,持ち運びやすさ,安さ)=(2,2,5,3)
パソコン3→(処理速度,容量,持ち運びやすさ,安さ)=(4,1,3,5)
【0151】
ここで、クエリーで検索した結果は、パソコン1:スコア=25、パソコン3:スコア=20、パソコン2:スコア=10となる。
【0152】
このユーザが、パソコン3が適合パソコンで、パソコン1が不適合パソコンだとフィードバックしたとすると、
再検索のためのクエリーベクトル=(クエリー+パソコン3−パソコン1):
(処理速度,容量,持ち運びやすさ,安さ)=(4,−3,2,3)
評価式=「再検索のためのクエリーベクトル」とパソコンの性能ベクトルの内積
【0153】
このユーザは、実は処理速度以外に、安さと持ち運びやすさも重視していた事が分かる。この評価式を利用すると、クエリーとパソコンのベクトルは、以下の様に拡張できる。
クエリー’:「処理性能」→(処理性能,評価値)=(5,20)
パソコン1’→(処理速度,容量,持ち運びやすさ,安さ,評価値)
=(5,4,1,2,16)
パソコン2’→(処理速度,容量,持ち運びやすさ,安さ,評価値)
=(2,2,5,3,21)
パソコン3’→(処理速度,容量,持ち運びやすさ,安さ,評価値)
=(4,1,3,5,34)
【0154】
このため、再び処理性能による検索を行った場合、検索順序が修正され、パソコン3:スコア=700、パソコン2:スコア=430、パソコン1:スコア=345、となる。
【0155】
このように、複数のユーザからのフィードバックを利用して、多くの評価値を加えていけば、重視する性能指標を全て入力しなくても、関連する性能指標も自動的に利用して、検索を行うことができる様になる。この関連性は、ユーザのフィードバックから取得されるため、多くのユーザの共通認識が抽出される上、ユーザ層によって異なる関連性が学習できる。
【0156】
以上説明したように、クエリーに近い視点(検索意図)に基づくクエリー・文書の評価式によって、状況に応じた単語ベクトルの関連語拡張を行い、検索精度を向上することができる。似た意図の検索があった場合、適合性フィードバック無しに、かなりの検索(ランキング)精度向上が可能である。この実施の形態においては視点の蓄積について説明したが、実際に全ての視点をそのまま利用するか、ベクトル量子化等の処理で、似た視点をまとめるか、様々な変形が考えられる。また、視点の線形和という形で、関連語拡張を制御する点について説明したが、ここで選択する視点を絞り込むか広げるかによって、パーソナライズと普遍的な関連語拡張のバランスや、検索速度を調整することもできる。
【0157】
なお、本実施の形態で説明したデータ検索方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【0158】
以上のように、本発明にかかるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体は、データの利用のされ方に基づいた検索などのデータ処理にあたって有用である。
【図面の簡単な説明】
【0159】
【図1】この発明の実施の形態によるデータ検索装置のハードウエア構成の一例を示すブロック図である。
【図2】この発明の実施の形態にかかるデータ検索装置の機能的構成を示すブロック図である。
【図3】検索された文書の単語ベクトルを説明する説明図である。
【図4】クエリーと検索結果の各文書の角度のコサイン値行列を説明する説明図である
【図5】差分ベクトルを求める処理を説明する説明図である。
【図6】フィードバックを反映した単語ベクトルを説明する説明図である。
【図7】フィードバックを反映したコサイン値行列を説明する説明図である。
【図8】フィードバックを反映した単語ベクトルの作成処理を説明するフローチャートである。
【図9】適合性フィードバックで得られた情報を、検索モデルに反映する処理を説明するフローチャートである。
【図10】適合性フィードバックを小規模文書に適用した場合のフィードバック処理を説明するフローチャートである。
【図11】適合性フィードバックを小規模文書に適用した場合の検索処理を説明するフローチャートである。
【図12】適合性フィードバックを大規模文書に適用した場合の準備処理を説明するフローチャートである。
【図13】適合性フィードバックを大規模文書に適用した場合の検索処理を説明するフローチャートである。
【符号の説明】
【0160】
101 CPU
102 ROM
103 RAM
104 HDD
105 HD
106 FDD
107 FD
108 CD−RWドライブ
109 CD−RW
110 ディスプレイ
111 キーボード
112 マウス
113 ネットワークI/F
114 通信ケーブル
120 バス
201 検索部
202 ベクトル作成部
203 分類部
204 算出部
205 割り当て部
206 演算部
207 順位付け部
【技術分野】
【0001】
この発明は、データの検索結果をフィードバックさせて使用するデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体に関する。
【背景技術】
【0002】
従来、文書の検索や分類の精度を向上させるためには、関連語による単語ベクトルの拡張が有効とされてきた。関連語辞書は、一般に人手もしくは、文書コーパスからの自動抽出によって作成されるが、人手による場合は手間がかかり、文書コーパスからの自動抽出の場合、検索・分類行動の変化に対応できない。これに対し、適合性フィードバック(relevancd feedback)を採用していた。
【0003】
この適合性フィードバックとは、検索結果の文書の内容に基づいて、検索戦略(検索式、ランキング手法等)を変更する方法である。例を挙げると、適合文書(検索意図に合致する文書)や、その反対の非適合文書を、ユーザにいくつか選択させ、その文書内の単語情報によって検索式を拡張する(たとえば、非特許文献1)。すなわち、適合性フィードバックは、検索結果に対する評価を利用して、検索結果を洗練する手法であり、検索結果の精度を向上させることができる。
【0004】
また、検索結果の上位数件を、擬似的に適合文書として、適合性フィードバックを行うことにより、適合・非適合文書の選択を必要とせずに適合性フィードバックを実現する、擬似的な適合性フィードバック(pseudo relevance feedback)という方法もある(たとえば、非特許文献1)。
【0005】
検索のたびに、適合・非適合文書の選択を必要としない別の方法として、過去の適合性フィードバックで得られた情報を、検索モデルに反映する方法がある。典型的な例では、クエリーと文書それぞれの単語ベクトルに対して、通常は単純に内積等で適合度を計算するところを、一次変換をかけて(つまり、単語を関連語に拡張して)、その後に内積の計算を行うところが異なっている。一次変換は、既存のクエリーに対する適合・非適合文書から、行列演算で学習して得ることが出来る。この方法により、検索のたびに文書の評価を行う必要が無く、ユーザの特性を考慮して検索することができる。
【0006】
【非特許文献1】リカード(Ricard).B.Y、バーサー(Verthier).R.N著、「現代情報検索(Modern Information Retirieval)」、ACMプレス(Press)、1999年
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、適合性フィードバックを使用するだけでは、一般に検索精度は向上するが、検索のたびに適合・非適合文書を選択し、評価を入力する手間が掛かる。また、擬似的な適合性フィードバックを使用する方法は、検索結果の上位に適合文書が多い事を期待した方法なので、検索結果の上位に適合文書が少ない場合は、逆効果となる場合がある。また、通常の適合性フィードバックの場合、ユーザの特性や検索意図を反映できるのに対し、この方法では反映できない。
【0008】
また、過去の適合性フィードバックを検索モデルに反映する場合、行列の特異値分解が必要なため、Web上の様に大規模であったり追加・修正が激しい場合への対応が難しいという問題がある。また、検索意図に関わらず、全く同一の関連語拡張を行うため、状況に応じた検索がしにくいという問題がある。
【0009】
この発明は、上述した従来技術による問題点を解消するため、既存の似た意図の検索の評価情報がある場合、新たに評価を行う必要無しに検索結果を洗練させることができるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するため、請求項1の発明にかかるデータ検索装置は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成手段と、前記データを適合データと非適合データに分類する分類手段と、前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出手段と、前記算出手段によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て手段と、前記割り当て手段によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算手段と、前記演算手段によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け手段と、を備えることを特徴とする。
【0011】
この請求項1の発明によれば、データの適合/非適合から得られるフィードバックを使用することにより、検索項目およびデータに対応した要素ベクトルを拡張することができる。それにより、要素間の相関性を持たせることができ、検索項目に含まれない要素を考慮した検索結果を得ることができる。その結果、データに対して再検索する場合に、要素間の相関性を反映させることにより検索結果を洗練させることができる。
【0012】
また、請求項2の発明にかかるデータ検索装置は、請求項1に記載の発明において、前記演算手段によって演算を実行した後に、前記分類手段による前記データを再び適合データと非適合データに分類する処理、前記算出手段による各要素ベクトルのフィードバック値を求める処理、前記割り当て手段によるフィードバック値の割り当て処理、前記演算手段による演算処理を、1回または複数回繰り返すことにより前記順位付け手段によって使用される演算値を求めることを特徴とする。
【0013】
この請求項2の発明によれば、拡張された要素ベクトルについて1回または複数回演算を実行することにより、要素ベクトルをさらに拡張することができる。それにより、要素間の相関性をさらに高めることができ、データに対して再検索する場合に、要素間の相関性をより反映させ、検索結果を洗練させることができる。
【0014】
また、請求項3の発明にかかるデータ検索装置は、請求項1または2に記載の発明において、前記分類手段は、前記検索項目を前記適合データに分類することを特徴とする。
【0015】
この請求項3の発明によれば、適合データと非適合データとの相違だけでなく、検索項目も正の相関をもつものとしてフィードバック値を求めることができる。それにより、より検索項目の意図に近い形で要素ベクトルをフィードバックさせることができる。
【0016】
また、請求項4の発明にかかるデータ検索装置は、請求項1〜3のいずれか一つに記載の発明において、前記算出手段は、求めたフィードバック値が負の値の場合、0にすることを特徴とする。
【0017】
この請求項4の発明によれば、求めたフィードバック値に負の値が含まれないようにすることができる。それにより、ベクトルに負の値が生ずることによるノイズの発生を抑えることができる。
【0018】
また、請求項5の発明にかかるデータ検索装置は、請求項1〜4のいずれか一つに記載の発明において、前記分類手段は、適合データまたは非適合データのいずれか一方が指摘されなかった場合、分類されなかったデータの集合を、適合データまたは非適合データの指摘されなかった方に分類することを特徴とする。
【0019】
この請求項5の発明によれば、適合データまたは非適合データの一方にしか分類されない場合に、偏った分類結果に基づいたフィードバックを防ぐことができる。
【0020】
また、請求項6の発明にかかるデータ検索装置は、請求項1〜5のいずれか一つに記載の発明において、ユーザ間の関係の深さに関する値を入力する入力手段を備え、前記算出手段は、前記入力手段によって入力された、情報の提示を求めるユーザとフィードバックを入力したユーザとの間の関係の深さに関する値にしたがって前記フィードバック値を増減することを特徴とする。
【0021】
この請求項6の発明によれば、ユーザの間の関係にしたがったフィードバック値を得ることができ、それによりユーザの意図に沿った形で検索結果を洗練させることができる。
【0022】
また、請求項7の発明にかかるデータ検索装置は、請求項1〜6のいずれか一つに記載の発明において、前記算出手段は、Rocchio法を利用することにより前記フィードバック値を求めることを特徴とする。
【0023】
この請求項7の発明によれば、Rocchio法により、洗練されたフィードバック値を求めることができる。
【0024】
また、請求項8の発明にかかるデータ検索装置は、請求項1〜7のいずれか一つに記載の発明において、前記算出手段は、Bayes法を利用することにより前記フィードバック値を求めることを特徴とする。
【0025】
この請求項8の発明によれば、Bayes法により、洗練されたフィードバック値を求めることができる。
【0026】
また、請求項9の発明にかかるデータ検索装置は、請求項1〜8のいずれか一つに記載の発明において、前記算出手段は、SVMを利用することにより前記フィードバック値を求めることを特徴とする。
【0027】
この請求項9の発明によれば、SVMを使用して算出することにより、洗練されたフィードバック値を求めることができる。
【0028】
また、請求項10の発明にかかるデータ検索装置は、請求項1〜9のいずれか一つに記載の発明において、前記検索項目に従って前記データを検索する検索手段を備え、前記作成手段は、前記検索手段によって検索されたデータおよび前記検索項目について要素ベクトルを作成することを特徴とする。
【0029】
この請求項10の発明によれば、検索することにより得られる視点を使用することにより、データおよび検索項目の要素ベクトルを拡張することができる。それにより、検索結果がフィードバックされ、検索結果を洗練させることができる。
【0030】
また、請求項11の発明にかかるデータ検索装置は、請求項1〜10のいずれか一つに記載の発明において、前記データは文書であり、前記要素は前記文書を構成する単語であり、前記要素ベクトルは、前記単語についてそれぞれ値を割り当てることによって作成される単語ベクトルであることを特徴とする。
【0031】
この請求項11の発明によれば、文書を検索するにあたり適合文書と非適合文書の違いから、単語間の相関性を求め、検索項目に含まれない単語を考慮して文書を検索することができる。それにより単語の検索結果を洗練させることができる。たとえば、検索エンジンにおいて、より関連性の高い文書を上位に提示することができる。
【0032】
また、請求項12の発明にかかるデータ検索装置は、請求項1〜11のいずれか一つに記載の発明において、前記算出手段は、適合データおよび非適合データの各集合から学習することによりデータ間の距離計算法を修正し、学習結果によって得られた数値が所定の範囲に納まるように所定の倍率をかけることによって、前記フィードバック値を求めることを特徴とする。
【0033】
この請求項12の発明によれば、適合データおよび非適合データの分類結果から、学習によって検索結果を洗練させることができる。そして、その計算方法を適正な範囲に納まるように修正するので、より適切な検索結果を得ることができる。
【0034】
請求項13の発明にかかるデータ検索装置は、複数の要素によって構成されるデータおよび該データの複数の検索項目について要素ベクトルを作成する作成手段と、前記検索項目のそれぞれについて前記データを適合データと非適合データに分類する分類手段と、前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、前記検索項目についての要素ベクトルをそれぞれ修正して、修正ベクトルを作成する修正手段と、前記修正手段によって作成された修正ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより前記検索項目についてそれぞれ評価値を求め、前記データについての修正ベクトルを該評価値でそれぞれ加重して合成することにより加算ベクトルを作成する合成手段と、前記合成手段によって作成された加算ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより、前記データの順位付けに関する値を求める順位付け手段と、を備えることを特徴とする。
【0035】
この請求項13の発明によれば、データの適合/非適合から得られるフィードバックを使用することにより、検索項目に対応した要素ベクトルを拡張することができる。それにより、データに対して再検索する場合に、要素間の相関性を反映させることにより検索結果を洗練させることができる。ここで、データが大量に提供される場合でも、検索項目についてベクトル要素を拡張すればよい、大量のデータ全てについて拡張処理を実行する必要がなくなる。それにより、必要以上の演算処理を実行する必要がなくなり、処理負担や時間をかけることなく所望の検索結果を得ることができる。
【0036】
また、請求項14の発明にかかるデータ検索装置は、請求項13に記載のデータ検索装置において、前記修正手段は、前記検索項目についての要素ベクトルに、前記適合データについての要素ベクトルを加算し、前記非適合データについての要素ベクトルを減算することにより、前記修正ベクトルを作成することを特徴とする。
【0037】
この請求項14の発明によれば、検索項目についての要素ベクトルは、適合データを正、非適合データを負として修正される。それにより、検索項目についての要素ベクトルを、より的確な検索結果を得ることができる形で利用することができ、それにより所望の演算結果を得ることができる。
【0038】
また、請求項15の発明にかかるデータ検索装置は、請求項13または14に記載のデータ検索装置において、前記合成手段は、前記修正ベクトルと前記要素ベクトルとの間の内積をとることにより得られた内積値を、前記評価値として求めることを特徴とする。
【0039】
この請求項15の発明によれば、修正ベクトルと要素ベクトルの内積値を評価値とすることができる。それにより、修正ベクトルに加重する評価値としてより適切な値を求めることができる。そして、適切な評価値を使用することにより所望の検索結果を得ることができる。
【0040】
また、請求項16の発明にかかるデータ検索装置は、請求項13〜15のいずれか一つに記載のデータ検索装置において、前記合成手段は、前記検索項目に対する修正ベクトルを、前記検索項目についての評価値でそれぞれ加重して加算することにより、前記加算ベクトルを作成することを特徴とする。
【0041】
この請求項16の発明によれば、修正ベクトルを評価値で加重することにより加算ベクトルを求めることができる。評価値が大きくなる検索項目について修正ベクトルが加重されるので、修正ベクトルごとのばらつきを抑えた形で適切な加算ベクトルを求めることができ、それにより所望の検索結果を得ることができる。
【0042】
請求項17の発明にかかるデータ検索方法は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成工程と、前記データを適合データと非適合データに分類する分類工程と、前記分類工程によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出工程と、前記算出工程によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て工程と、前記割り当て工程によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算工程と、前記演算工程によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け工程と、を含むことを特徴とする。
【0043】
この請求項17の発明によれば、データの適合/非適合から得られるフィードバックを使用することにより、検索項目およびデータに対応した要素ベクトルを拡張することができる。それにより、要素間の相関性を持たせることができ、検索項目に含まれない要素を考慮した検索結果を得ることができる。その結果、データに対して再検索する場合に、要素間の相関性を反映させることにより検索結果を洗練させることができる。
【0044】
請求項18の発明にかかるデータ検索プログラムによれば、請求項17に記載のデータ検索方法をコンピュータに実行させることができる。
【0045】
また、請求項19の発明にかかるコンピュータに読み取り可能な記録媒体は、請求項18に記載のデータ検索プログラムをコンピュータが読み出して実行することができる。
【発明の効果】
【0046】
本発明にかかるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体によれば、既存の評価を視点として再利用し、検索クエリーおよびデータのベクトルを拡張する事で、検索結果のランキングを改善する。その結果、たとえば既存の似た意図の検索の評価情報が有れば、新たに評価を行う必要無しに、検索結果を洗練することができるという効果を奏する。
【発明を実施するための最良の形態】
【0047】
以下に添付図面を参照して、この発明によるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体の実施の形態を詳細に説明する。
【0048】
(実施例1)
図1は、この発明の実施の形態によるデータ検索装置のハードウエア構成の一例を示すブロック図である。図中、CPU101は装置全体を制御する。ROM102は基本入出力プログラムを記憶する。RAM103はCPU101のワークエリアとして使用される。
【0049】
また、HDD(ハードディスクドライブ)104はCPU101の制御にしたがってHD(ハードディスク)105に対するデータのリード/ライトを制御する。HD105はHDD104の制御にしたがって書き込まれたデータを記憶する。
【0050】
また、FDD(フレキシブルディスクドライブ)106はCPU101の制御にしたがってFD(フレキシブルディスク)107に対するデータのリード/ライトを制御する。FD107は、着脱自在であり、FDD106の制御にしたがって書き込まれたデータを記憶する。
【0051】
また、CD−RWドライブ108はCPU101の制御にしたがってCD−RW(または、CD−R、CD−ROM)109に対するデータのリード/ライトを制御する。CD−RW109は着脱自在であり、CD−RWドライブ108の制御にしたがって書き込まれたデータを記憶する。
【0052】
また、ディスプレイ110はカーソル、メニュー、ウィンドウ、あるいは文字や画像などの各種データを表示する。キーボード111は文字、数値、各種指示などの入力のための複数のキーを備える。マウス112は各種指示の選択や実行、処理対象の選択、マウスポインタの移動などを行う。
【0053】
また、ネットワークI/F113は、通信ケーブル114を介してLANやWANなどのネットワークに接続され、当該ネットワークとCPU101とのインターフェースとして機能する。バス120は上記各部を接続する。
【0054】
図2は、この発明の実施の形態にかかるデータ検索装置の機能的構成を示すブロック図である。データ検索装置は、検索部201、ベクトル作成部202、分類部203、算出部204、割り当て部205、演算部206、順位付け部207によって構成される。以上の各構成は、図1に示したCPU101が、ROM102からプログラムを読み出しRAM103をワークエリアとして使用することにより実現される。
【0055】
検索部201は、複数の要素によって構成されるデータのうち、所定の検索項目を要素として含むデータを検索する。データが文書の場合、複数の文書から所定の検索語を含む文書を検索する。たとえば「和菓子」を検索語として入力した場合、「和菓子のレシピ集。季節の果物を使う。」などの「和菓子」を含む文書を検索する。以降、データが文書である場合を中心に説明していくが、実施例4において説明するように、データは文書以外であるとすることもできる。
【0056】
ベクトル作成部202は、複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する。具体的には、検索された文書について単語ベクトルを作成する。たとえば、「和菓子のレシピ集。季節の果物を使う。」という文書が検索された場合、(和菓子:0.5、レシピ:0.5、季節:0.5、果物:0.5)という単語ベクトルを作成することができる。
【0057】
分類部203は、検索された文書を、適合文書と非適合文書に分類する。たとえば、「和菓子」という語を含む文書を検索しても、検索意図にあった文書とそうでない文書の両方が含まれる。そこで、検索意図に合った文書を適合文書に、検索意図に合わない文書を非適合文書に分類し、後述の処理を実行することによりその後の検索結果を洗練させる。また、検索された文書のうち少なくとも1つを、適合文書または非適合文書に分類することもできる。また、検索された文書を、適合文書と非適合文書のうち一方にのみ分類された場合、検索された文書のすべてを分類できなかった文書の集合とすることもできる。
【0058】
算出部204は、分類された適合文書の集合と非適合文書の集合の間の相違に基づいてフィードバック値を求める。具体的には、適合文書と非適合文書のそれぞれについて代表的な値をもつベクトルを求め、両者の差分である差分ベクトルを求め、差分ベクトルと各文書の単語ベクトルの内積値からフィードバック値を求める。
【0059】
また、適合文書および非適合文書の各集合から学習することによりデータ間の距離計算法を修正し、学習結果によって得られた数値が所定の範囲に納まるように所定の倍率をかけることによって、フィードバック値を求めることもできる。また、SVMのスコアを利用することによりフィードバック値を求めることもできる。
【0060】
割り当て部205は、算出部204によって求められたフィードバック値を、各文書の単語ベクトルにそれぞれ割り当てる。すなわち、フィードバック値を各単語ベクトルの一要素とし、一次元として追加する。
【0061】
演算部206は、割り当て部205によってフィードバック値が割り当てられた単語ベクトルを参照することにより、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する。演算実行後に、分類部203、算出部204、割り当て部205、演算部206による演算処理を、1回または複数回繰り返すことにより演算結果を洗練させることもできる。
【0062】
順位付け部207は、演算部206によって実行された演算結果に基づいて、データの順位付けに関する値を求める。たとえば、得られたスコアの値の順に文書を並べ、順番に文書を表示する。
【0063】
上述の構成により、文書集合からユーザの意図に沿った文書を検索する。例えば、和菓子の作り方を知りたいユーザによって、「和菓子」というクエリーが検索部201に入力される。そして検索部201によって、図3において説明される文書群が検索される。なお、単語や概念のベクトルによって検索することができるが、ブーリアン等他の検索システムでも、同様の効果を得ることもできる。この場合、得られた結果だけを、クエリーのベクトルに近い順にランキングすることにより検索する。ここでは、単語ベクトルによる検索システムであることを仮定して話を進める。
【0064】
なお、単語ベクトルの作成方法としては、TF(単語頻度)に基づく方法や、TF・IDF(単語が出現する文書頻度の逆数)に基づく方法等、様々な方法があり、任意の手法と組み合わせが可能である。ここでは、いずれかの手法によって、単語ベクトルは作成できているものとする。
【0065】
単語ベクトルの作成にあたっては、まず文書から単語を抽出する。抽出された単語について、上述のように単語ベクトルを作成する。なお、抽出する単語が英語の場合と日本語の場合では方法は異なる。まず、英語の場合、単語間に空白があるので、個々の単語を容易に取り出せる。また、名詞は単数、複数で語尾変化する。動詞も時制、数で語尾変化する。一方、日本語の場合、膠着言語であり、単語の切れ目が形だけでは分からない。また、名詞は語尾変化しない。また、多数の名詞が繋がって複合名詞を形成することが多い。また、漢字は1文字でそれなりの意味を持つ。
【0066】
英語のターム抽出について説明する。英語では、異形態から語幹を抽出する。例えば、engineering,engineered,engineeresなどから共通の語幹engineerを抽出する。最もナイーブな方法は、全ての異形態に語幹を対応させる対応辞書を作っておき、入力された異形態から辞書引きによって語幹を求める。ただし、この対応辞書は膨大なものになるので、語幹を求める規則を用意しておき、それを適用することもできる。この規則の例を次に示す。
【0067】
ational−−>ate(relational−−>relate)、
tional −−>tion(conditional−−>condition)、
ator−−>ate(operator−−>operate)、
ly−−>NULL(truely−−>true)
とすることができる。
【0068】
また、文書を特徴付けない一般的な語をリストに登録しておき、このリストにある語を取り除く。除く語の例としては、a,about,above,across,after,again,・・・,get,give,go,・・・,that,the,・・・,x,y,year,you,・・・,zが挙げられる。
【0069】
次に、日本語のターム抽出について説明する。先に述べた日本語の性質からすれば、タームとして、文字ないしn文字の連続(これをn−gramという)であるもの、単語、の2種類が考えられる。
【0070】
まず、n−gramについて説明する。日本語の場合は複雑な形態素解析をしなければ単語を切り出すことができない。そこで、形態素解析を使わずにキーワードらしきものを切り出す方法としてn−gramがある。n−gramはn個の連続する文字列である。例えば、「形態素解析辞書」からは、「形態」「態素」「素解」「解析」「析辞」「辞書」の6個の2−gram が得られる。しかし、「辞書は」という文節からは「書は」などという意味のないタームも出て来てしまう。そこで、これらの2−gramから何らかの基準を使ってよりよいキーワードを選択する。
【0071】
次に、単語について説明する。日本語の場合は、文から単語を切り出す形態素解析を行う。形態素解析し、単語を切り出した場合、英語のような異形態は比較的少ない。「XX的」などは、形態素解析で「的」まで分離してくれるものもある。また、形態素解析は単語の品詞も分かる。そこでstop wordとして品詞を使うことができる。このとき、ターム候補として名詞だけを選ぶこともできる。
【0072】
図3は、検索された文書の単語ベクトルを説明する説明図である。まず、「和菓子」が検索された場合について説明する。このクエリー300の単語ベクトルは、(和菓子:1)である。これに対し、次の文書301〜304が検索結果の一部であった場合について説明する。
【0073】
検索結果の文書301は、「和菓子のレシピ集。季節の果物を使う。」であり、文書301の単語ベクトルは、(和菓子:0.5、レシピ:0.5、季節:0.5、果物:0.5)である。検索結果の文書302は、「通信販売。和菓子特集。ようかん1000円。」であり、単語ベクトルは、(通信:0.5、販売:0.5、和菓子:0.4、特集:0.3、ようかん:0.5)である。
【0074】
検索結果の文書303は、「和菓子の歴史。粒あんとこしあんの違い。」であり、単語ベクトルは、(和菓子:0.4、歴史:0.8、粒あん:0.4、こしあん:0.2)である。検索結果の文書304は、「美味しい和菓子を作るコツ。下ごしらえが大事。」であり、単語ベクトルは、(和菓子:0.2、コツ:0.8、下ごしらえ:0.4、大事:0.4)である。
【0075】
図4は、クエリーと検索結果の各文書の角度のコサイン値行列を説明する説明図である。ベクトル間の距離尺度として、ベクトル同士のなす角のコサイン値を利用する場合を考える。この場合、コサイン値が大きいほど、ベクトル同士が似ていると見なすため、一般的な距離尺度とは大小関係が逆となる。また、他の距離尺度、例えばユークリッド距離等を利用した場合でも同様に成り立つ。
【0076】
この距離尺度でランキングする場合、クエリーに対する文書301〜304のスコア(ベクトル間の角度のコサイン値)は、それぞれ0.5、0.4、0.4、0.2となる。その結果、文書301〜304の順番で提示される。そして、クエリー300および文書301〜304の全てのベクトル間のスコアは、図4に示す通りとなる。
【0077】
図5は、差分ベクトルを求める処理を説明する説明図である。ここで、文書301〜304を、適合文書と非適合文書に分類する。文書301〜304に関して、ユーザの意図は、和菓子の作成にあることを例に挙げて説明する。この場合、文書301および304が希望文書に近く、文書302および303は遠いと考えられる。そこでユーザは、文書301および304を適合文書と指摘し、文書302および303を非適合文書と指摘したとする。そして分類部203は、文書301および304を適合文書集合501に、文書302および303を非適合文書集合502に分類する。
【0078】
このユーザからのフィードバックを利用して、適合文書集合501と非適合文書集合502を識別する関数の学習処理を行う。この学習処理には、様々な手法が考えられ、一般的な学習手法である、SVM(Support Vector Machine)やNB(Naive Bayes)やk−NN(k−Nearest Neibour)等を利用しても良い。ここでは、より簡便な各文書集合の重心間の差分ベクトルを利用する手法に沿って、説明を行う。
【0079】
適合文書集合501(文書301および304)の重心は、(和菓子:0.35、レシピ:0.25、季節:0.25、果物:0.25、コツ:0.4、下ごしらえ:0.2、大事:0.2)となる。非適合文書集合502(文書302および303)の重心は、(通信:0.25、販売:0.25、和菓子:0.4、特集:0.15、ようかん:0.25、歴史:0.4、粒あん:0.2、こしあん:0.1)となる。
【0080】
これらの差分である差分ベクトル503は、(和菓子:−0.05、レシピ0.25、季節:0.25、果物;0.25、コツ:0.4、下ごしらえ:0.2、大事:0.2、通信:−0.25、販売:−0.25、特集:−0.15、ようかん:−0.25、歴史:−0.4、粒あん:−0.2、こしあん:−0.1)となる。
【0081】
ここで、スコア値を、差分ベクトル503とクエリー300および各文書301〜304の単語ベクトルとの間で求める。このスコア値は、上述のように、ベクトル同士のなす角のコサイン値によって求め、具体的には、ベクトル間の内積を両ベクトルの絶対値で割ることによって求める。ここで、クエリー300および各文書301〜304の単語ベクトルについて求められたスコア値を、各ベクトルに対するフィードバック値として、各ベクトルにそれぞれ割り当てる。
【0082】
差分ベクトル503とクエリー300の間のスコアは、−0.05である。また、差分ベクトル503と、文書301〜304の単語ベクトルのスコアは、それぞれ約0.38、約−0.48、約−0.48、約0.51となる。適合文書301・304のスコアが高く、非適合文書302・303のスコアが低い指標となる。この指標となる差分ベクトル503を利用して、文書を再検索したり、検索結果の文書群を再ランキングしたりして、ユーザの意図により近い文書を効率的に発見することが可能となる。
【0083】
ここで、ユーザが検索結果に対して与えた指標は、一つの視点であり、新たな次元として利用することも可能となる。そこで、この指標(評価関数値)を、各文書の新たな次元の一つとして追加する。今回は、新たな次元の値として、上記のスコアをそのまま用いるが、もちろん、値の範囲を何らかの手法で限定しても良い。値の範囲を限定する方法として、単純に、1以上の数値を全部1と見なしたり、シグモイド関数(1/(1+ex))を通したりすることが考えられる。ここでは、以上のクエリーと4つの文書のベクトルをそのまま利用することを考える。
【0084】
図6は、フィードバックを反映した単語ベクトルを説明する説明図である。図3に示したクエリー300および文書301〜304に、それぞれの差分ベクトル503との間のスコアであるフィードバック値を割り当て、その結果であるクエリー600および文書601〜604を図6に示している。
【0085】
ここで、クエリー600は、「和菓子」であり、クエリー600の単語ベクトルは、(和菓子:1、フィードバック:−0.05)である。検索結果の文書601は、「和菓子のレシピ集。季節の果物を使う。」であり、文書601の単語ベクトルは、(和菓子:0.5、レシピ:0.5、季節:0.5、果物:0.5、フィードバック:0.38)である。
【0086】
検索結果の文書602は、「通信販売。和菓子特集。ようかん1000円。」であり、文書602の単語ベクトル(通信:0.5、販売:0.5、和菓子:0.4、特集:0.3、ようかん:0.5、フィードバック:−0.48)である。検索結果の文書603は、「和菓子の歴史。粒あんとこしあんの違い。」であり、文書603の単語ベクトル(和菓子:0.4、歴史:0.8、粒あん:0.4、こしあん:0.2、フィードバック:−0.48)である。検索結果の文書604は、「美味しい和菓子を作るコツ。下ごしらえが大事。」であり、文書604の単語ベクトル(和菓子:0.2、コツ:0.8、下ごしらえ:0.4、大事:0.4、フィードバック:0.51)である。
【0087】
図7は、フィードバックを反映したコサイン値行列を説明する説明図である。クエリー600と各文書601〜604のスコアは、それぞれ0.45、0.38、0.38、0.16となる。また、文書601と文書602、603、604とのスコアは、それぞれ0.01、0.01、0.24となる。文書602と文書603、604とのスコアはそれぞれ0.32、−0.13となる。文書603と文書604とのスコアは、−0.13となる。
【0088】
このように、フィードバックを反映させる操作の結果、この新たな次元の値(フィードバック値)が似ているベクトルの間のスコア(文書601・604間、文書602・603間)はより大きく、似ていないベクトル間のスコア(文書601・602間、文書601・603間、文書602・604間、文書603・604間)はより小さくなる。
【0089】
図8は、フィードバックを反映した単語ベクトルの作成処理を説明するフローチャートである。まず、クエリー(検索項目)300を入力する(ステップS801)。次に、検索部201は、文書を検索する(ステップS802)。それにより、文書301〜304が検索される。
【0090】
次に、検索された文書301〜304について、単語ベクトルを作成する(ステップS803)。ここで作成される単語ベクトルは、図3に示したとおりである。そして、検索された文書301〜304を、適合文書と非適合文書に分類する(ステップS804)。それにより、文書301〜304は、適合文書集合501と非適合文書集合502に分けられる。次に、適合文書集合501と非適合文書集合502について重心を求める(ステップS805)。求められる重心は、図5において適合文書集合501および非適合文書集合502のそれぞれの単語ベクトルとして示している。
【0091】
次に、適合文書集合501と非適合文書集合502の重心の間で、差分ベクトル503を求める(ステップS806)。次に、差分ベクトル503と各文書の単語ベクトルとの間のスコアをフィードバック値とする(ステップS807)。そして、求められたフィードバック値を各文書の単語ベクトルの要素値の1つにして(ステップS808)、一連の処理を終了する。
【0092】
以上の様に、ユーザフィードバックを考慮に入れたデータ間の距離の補正が可能となる。このフィードバックを複数回繰り返すことによって、似ていると判定するユーザフィードバックが多ければよりベクトル間の角度を小さく、少なければよりベクトル間の角度を大きくする事が出来る。
【0093】
この実施の形態では、過去の適合性フィードバックで得られた情報を、検索モデルに反映する。それにより従来の適合性フィードバックに比べて、状況依存の関連語拡張ができ、大規模対応しやすい構成となる。この実施の形態による適合性フィードバックを、具体例を用いて説明してきたが、次に、数式を用いた形で説明する。
【0094】
図9は、適合性フィードバックで得られた情報を、検索モデルに反映する処理を説明するフローチャートである。この処理においては、適合性フィードバックにより視点を蓄積し、その上で視点を利用して検索を実行する。
【0095】
適合性フィードバック時には、文書に対する評価式を決定する。この評価式は、文書がどれだけ検索意図に合致していたかを示す指標の場合、任意の式が利用可能ではあるが、後の計算のしやすさを考えて、次の線形の評価式を用いる。その式は、f(doc)=h+Σaiwiである。但し、(w1,w2,w3,・・・,wn)は文書の単語ベクトルである。また、(a1,a2,a3,・・・,an)とhは、学習によって求められるパラメータである。
【0096】
この評価式が高いほど、検索意図に合致する可能性を高くすることが望まれるが、そうなるようにパラメータを学習するにあたり、様々な手法が考えられる。ここでは、少数のデータで頑健に判別できるSVM(Support Vector Machine)を利用する。適合性フィードバックにSVMを利用することにより、検索精度を大きく改善することができる。
【0097】
まず、文書を単語ベクトルに変換する(ステップS901)。単語ベクトルは、形態素解析後の自立語を各次元とし、TF・IDF法で数値化する。その後、L2ノルムが1となるように正規化し、各文書の単語ベクトルとして使用する。このときのベクトルの値は、例えば文書内の各自立語の有無を、それぞれ2値(1,0)で数値化するなどとしてもよい。その後、L2ノルムが1となる様に正規化し、各文書の単語ベクトルとして使用する。その結果、図3に示す各文書301〜304についての単語ベクトルが作成される。
【0098】
次に、クエリー300を単語ベクトルに変換する(ステップS902)。クエリー中の各単語を、1単語のみの文書とみなして、文書と同様に単語ベクトルに変換する方法や、クエリー内の全単語を1つずつ含む単一の文書とみなして単語ベクトルに変換する方法が考えられる。次に、SVMの学習を行う(ステップS903)。ここで、非適合文書集合502の単語ベクトルを負例として、適合文書集合501の単語ベクトルと、クエリーの単語ベクトルを正例とする。
【0099】
そして、学習されたSVMの判定式を用いて評価式を構築する(ステップS904)。SVMの判定式は、0の場合、Separating hyperplain上であり、±1の場合、それぞれ正例・負例側のSupporting hyperplain上である事を示す式である。このSVMの判定値に1を足し、さらに負の場合は0に切り上げることで、評価式の値とする。
【0100】
ここで求めた評価式は、適合性フィードバックの検索意図と文書がどれだけ合致しているかを示す指標である。つまり、目的を限定した、文書群に対する一つの視点とも言える。また、クエリーの単語ベクトルも学習対象としているため、同様のクエリーが入力された場合、クエリーの評価値も高くなることが期待できる。そのため、クエリーと文書を同列に扱うことが可能となる。このようにして、視点(評価式)を、適合性フィードバックのたびに蓄積し、文書やクエリーから視点ベクトルを構築できる様にしておく。
【0101】
以上のように視点が作成され、蓄積されるが、この蓄積された視点を利用して検索を実行することができる。視点ベクトルが似ていると言うことは、クエリーや文書が、評価や利用のされ方において似ている事を示す。そこで、視点ベクトルを、通常の検索で用いる単語ベクトルの代わりに利用する。
【0102】
検索を実行した後、クエリーの視点ベクトルと、文書の視点ベクトルとの内積が高い順に、検索結果をユーザに提示する。それにより、検索結果を適切な順序に並べて、ユーザが利用しやすい形で提示することができる。
【0103】
この実施の形態においては、クエリーの単語ベクトルを関連語拡張し、その後ベクトル空間モデルに基づいて、文書の検索を行っているとみなすことができる。ただし、以下の説明で明らかな様に、検索クエリーに応じて、別々に関連語拡張している。
【0104】
関連語拡張について説明する。クエリーの単語ベクトルをq=(1,q1,q2,q3,・・・,qn)、文書の単語ベクトルをw=(1,w1,w2,w3,・・・,wn)とする。ここで、上述のようにf(doc)=h+Σaiwiにより、視点ベクトルの要素を、それぞれこのベクトルと学習によって求められた評価式の重みであるvj=(hj,aj1,aj2,aj3,・・・,ajn)の内積により求める。ただし、視点の値が0以下の値の場合には、0に切り上げる処理を実行する。つまり、視点ベクトルの構築は、評価式の重みの行列である、次の式を使用する
【0105】
【数1】
【0106】
上記の式を利用して、行列演算を実行する。クエリーの視点ベクトルはVq、文書の視点ベクトルはVwと表現でき、これらの内積は、(Vw)tVq=wtVtVqと変形できる。つまり、クエリーの単語ベクトルであるqを、VtVにより一次変換することによって、関連語拡張をしていると見なせる。
【0107】
ただし、視点ベクトルの元として、負の値を認めず0に切り上げている。視点が負の値ということは、その視点の検索意図において、全然使い物にならないクエリーや文書である可能性が高いことを意味する。適合度が低い部分の類似度を計算すると、ノイズになるだけでメリットが無いため、この切り上げ処理を行っている。
【0108】
この切り上げ処理により、クエリーの視点ベクトルの中には、0になる次元が出てくる。0になった次元は、文書の視点ベクトルに対応する次元の値が何であろうと、視点ベクトル同士の内積に影響せず、無視できる。つまり、視点ベクトルへの変換行列Vの中で、実際の検索に利用するのは、クエリーの視点ベクトルの要素が正となる部分に対応する行だけである。この検索に利用する部分は、クエリーによって変化するため、状況に応じた関連語拡張が可能となっている。
【0109】
図10は、適合性フィードバックを小規模文書に適用した場合のフィードバック処理を説明するフローチャートである。まず、クエリーと適合・非適合文書を入力する(ステップS1001)。適合・非適合文書の入力は、既存文書を適合文書集合501または非適合文書集合502に分類することにより実行する。そして、クエリーと適合文書を正例として、非適合文書を負例として評価式を学習する(ステップS1002)。
【0110】
フィードバック時の処理は以上のとおりであるが、ここで、クエリーを適合文書に混ぜる以外は、従来の適合性フィードバックを踏襲している。以上の処理により、クエリー中の語と適合文書中の特徴語を、両方とも評価値を上昇させる効果を持たせることが出来る。その結果、適合文書の評価値が高くなるのはもちろん、同じクエリーや、表現に揺らぎのあるクエリー(学習したクエリー中の語と適合文書中の特徴語が混ざっている場合)でも、評価値を高くすることが出来る。そのため、文書だけでなく、クエリーに関しても、どれだけフィードバックしたときの検索意図(使い道)に近いかどうかという基準として利用することができる。
【0111】
図11は、適合性フィードバックを小規模文書に適用した場合の検索処理を説明するフローチャートである。まず、図10に示したフィードバック処理を実行することにより、評価式を学習しておく。そして、クエリーと既存文書全てに対して、既存の全ての評価式を用いた評価値のベクトルを作成する(ステップS1101)。次に、評価値のベクトルの中の、負の値を全て0に置き換える(ステップS1102)。次に、ベクトル空間モデルを利用して、クエリーの評価値のベクトルに近い評価値のベクトルを持つ文書の順に、文書を提示する(ステップS1103)。ここで、近さの定義には、さまざまなものをあげることができる。例えば内積や差ベクトルのノルム等が考えられる。
【0112】
検索時の処理は以上のとおりであるが、ここでのポイントは、既存の全ての評価式を利用して、評価値のベクトルを作成する点と、評価値のベクトルの負の値を切り上げて0にする点である。前者は、検索意図が似ているかどうかを、既存の検索意図を学習した全ての評価式を利用してベクトルとして表現していることになる。つまり、検索意図が似ていれば、大きい評価値になる次元が似てくるはずである。
【0113】
後者は、ノイズを除去するための措置である。この処理を行わないと、どの様な検索意図でも使い物にならず、全ての評価値が負の値である様な文書が、特定の検索意図に基づくクエリー(つまり一部の次元だけが正で他の多くの次元が負の値)と近い文書とされてしまう。この様に、使い物にならない部分が似ていてもしかたなく、使い物になる検索意図の部分の類似性のみを見るために、負の値の切り上げを行っている。
【0114】
図12は、適合性フィードバックを大規模文書に適用した場合の準備処理を説明するフローチャートである。まず、図10に示したステップS1001およびステップS1002と同じ処理を実行しておく。すなわち、クエリーと適合・非適合文書を入力し、クエリーと適合文書を正例として、非適合文書を負例として評価式を学習する。
【0115】
その上で、準備処理を実行する。大規模文書群に対して適用する場合、文書一つ一つに対して評価値を計算していたのでは実用的な性能は出ない。そのため、数学的にクエリーのほうを工夫して、関連語拡張により同様に操作できるようにする。
【0116】
なお、小規模文書群に対しては、評価式等の形を限定しなかったが、大規模対応のために、「文書やクエリの単語等から作成したベクトルwと学習によって求める重みベクトルvの内積」という形に評価式を限定する。また、ベクトル空間モデルによる検索も、「内積が近いベクトルの順に結果を返す」という形に限定する。
【0117】
まず、フィードバック毎に、評価式の重みベクトルを得る(ステップS1201)。次に、評価式の重みベクトルを、ベクトル空間モデル(内積順)で高速に検索できるように準備する(ステップS1202)。ここでのポイントは、文書やクエリーのベクトルと同次元である、評価式の重みベクトルを、あたかも文書やクエリーのベクトルであるかの様に、高速なベクトル空間モデルによる検索が出来るようにしておく事である。そして、入力ベクトルとの内積が高い順に結果を出力する。具体的には、既存の代表的な手法である。転置索引を利用した手法等が考えられる。
【0118】
図13は、適合性フィードバックを大規模文書に適用した場合の検索処理を説明するフローチャートである。まず、図12に示した準備処理を実行しておく。この準備処理がされた大規模文書に対して次に説明する検索処理を実行する。
【0119】
まず、クエリーのベクトルを用いて、評価値の重みベクトル群を対象に検索し、内積が正になる重みベクトルのみを抽出する(ステップS1301)。次に、検索された重みベクトルを加重平均し、実際の文書のベクトルを検索するためのベクトルを算出する(ステップS1302)。ここで、加重平均の重みには、クエリーのベクトルとの内積の値を利用する。そして、文書検索用のベクトルを利用して、内積値が高い順に文書のベクトルを検索し(ステップS1303)、一連の処理を終了する。
【0120】
準備処理をしておくことにより、検索時には、文書毎に評価値を付与しておく必要無しに、単純な単語等のベクトルとしての検索が可能となる。このように、文書全てに適合性フィードバックによる視点の値を付与して、インデックス化することは必ずしも必要ではない。文書すべてに視点の値を付与しない場合、文書を従来どおりに単語ベクトルとしてインデックス化し、クエリーに対して、状況依存の関連語拡張を行う前処理をした後に、通常のベクトル空間モデルにより文書を検索することができる。つまり、大規模対応のためには、関連語拡張の部分の大規模対応で必要十分である。
【0121】
関連語拡張の前処理の部分、すなわちVtVqの計算であるが、これも従来のベクトル空間モデルと同じ方法で可能である。評価式の重みベクトルである、vjを、文書の単語ベクトルと見なしてインデックス化しておき、クエリーの単語ベクトルqとの内積値が0以上の重みベクトルを検索する。この内積値を並べたクエリーの視点ベクトルがVqであり、検索された重みベクトル群を並べた行列がVであるため、重みベクトルの単純な線形和として、VtVqが算出できる。
【0122】
厳密には、この方法だと、文書の視点の値を0に切り上げる処理を省略した事になる。しかし、元々視点の値を0に切り上げた意図は、視点が負の値同士の場合に、内積値が上昇してノイズになるのを防ぐことが主目的であったため、クエリーの視点ベクトルだけの切り上げで十分である事が予想される。
【0123】
この前処理は、擬似的な適合性フィードバックにおいて、1回文書を検索して、その文書によってクエリーの関連語拡張を行う処理と、全く同じである。ただ、前処理で検索するのが、文書の単語ベクトルなのか、評価式の重みベクトルなのかの違いが有るだけである。以上の考察により、理論上は擬似的な適合性フィードバックと同程度の大規模対応性能が有ると言え、本手法の検索1回につき、ベクトル空間モデルによる検索を2回行う程度の計算量である事が分かる。
【0124】
以上の実施の形態においては、適合性フィードバックを使用して検索する例について説明してきたが、検索以外にもベクトル空間モデルの手法が適用できる。この実施の形態においては、通常の(単語ベクトル等を利用した)ベクトル空間モデルの中に、評価値のベクトルを利用したベクトル空間モデルを組み込む。そのため、従来の単語ベクトル等で利用できた検索・分類・クラスタリング等の手法は、全て評価値のベクトルに対しても利用可能である。
【0125】
また、ベクトルの次元が単語ではなく評価に基づくので、扱いやすい粒度で処理することができる。したがって、評価式には意図や作成者があるので、この性質を利用して、一定範囲のコミュニティー内で作成された評価式を重視する(評価値の値を数倍する)等の工夫が簡単に出来る。
【0126】
また、評価式同士の関連性が容易に取得可能である。例えば、評価式が単語ベクトルと重みベクトルの内積で算出できる場合、評価式は重みベクトルとして表現できる。重みベクトルは、単語ベクトルと同じ次元数のベクトルであるため、評価式の重みベクトル同士の遠近関係なども容易に取得できる。そのため、評価式をそのまま検索に利用するのではなく、クエリーの評価値が高くなる評価式の重みベクトルをクラスタリングして、評価式の総数を絞り、それぞれの評価式毎に別々の検索結果を返すことなどが可能である。これらの検索結果の中で、最も意図に沿った検索結果を選ぶことで、ユーザに検索結果の選択肢を提示することが出来る。
【0127】
(実施例2)
次に、複数の検索クエリーを使用した場合の例を説明する。まず、検索対象文書と検索クエリーを共に単語ベクトルとして表現しておく。単語ベクトル化には、様々な方法が有るが、ここでは一例として、単語の有無をそれぞれ1と0の2値に変換し、その後ユークリッドノルムを正規化してベクトル化する手法を採用する。
【0128】
このベクトル化の手法によって、クエリーと文書は次のように単語ベクトル化される。
クエリー1:「構造改革」→(構造改革)=(1)
クエリー2:「補助金」→(補助金)=(1)
文書1:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し)=(0.5,0.5,0.5,0.5)
文書2:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート)=(0.5,0.5,0.5,0.5)
文書3:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる)=(0.5,0.5,0.5,0.5)
【0129】
ここで、一例として、検索が内積のスコア順の場合、「構造改革」で検索した結果は、文書1:スコア=0.5、文書2:スコア=0.5、(文書3:スコア=0)となる。この時、ユーザが行政上の構造改革について興味が有った場合、文書1が適合文書で、文書2が不適合文書となる。ここでは、適合文書を1つ、非適合文書を1つとしたが、適合文書、非適合文書をそれぞれ複数選択し、それぞれ適合文書集合、非適合文書集合とすることもできる。ここで、フィードバックからの学習方法として、Rocchio法を利用したとすると、以下のように再検索のためのクエリーベクトルを構成できる。
【0130】
再検索のためのクエリーベクトル1=(クエリー1+文書1−文書2):
(構造改革,補助金,削減,見通し,全国チェーン,物流,スマート)
=(1,0.5,0.5,0.5,−0.5,−0.5,−0.5)
評価式1=「再検索のためのクエリーベクトル1」とデータの単語ベクトルの内積
【0131】
ここでは、再検索のためのクエリーベクトルを正規化しなかったが、ユークリッドノルム等で正規化しても良い。この評価式1の値を追加する事により、クエリーと文書のベクトルは以下の様に拡張できる。
クエリー1’:「構造改革」→(構造改革,評価値1)=(1,1)
クエリー2’:「補助金」→(補助金,評価値1)=(1,0.5)
文書1’:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し,評価値1)
=(0.5,0.5,0.5,0.5,1.25)
文書2’:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート,評価値1)
=(0.5,0.5,0.5,0.5,−0.25)
文書3’:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる,評価値1)
=(0.5,0.5,0.5,0.5,0.25)
【0132】
この拡張により、もし以降の検索で再び「構造改革」というクエリーが入力された場合、文書の検索順は、文書1:スコア=1.75、文書2:スコア=0.25、文書3:スコア=0.25、と修正される。
【0133】
この様に、検索語を含まない文書3が、評価値を導入したおかげで上位に上がってきている。これは、Rocchio法なので当然ではあるが、クエリーのベクトルと適合文書のベクトルを同様に扱った結果、「構造改革」と「補助金」の関連性を学習出来たためである。もし、BayesやSVMで学習する場合、明示的にクエリーのベクトルを適合文書のベクトルとして扱う事で、同様の効果が期待できる。
【0134】
また、逆に「補助金」というクエリーで検索した場合、文書1:スコア=1.125、文書3:スコア=0.625、(文書2:スコア=−0.125)の様な順番となる。行政上の構造改革に関連する文書1・3のスコアがより高く、そうではない文書2のスコアをより低くできている。これによって、今までにフィードバックが入力された事のない検索クエリーに対しても、ランキングの改善の効果が期待できる。
【0135】
また、この検索時に、仮に文書3を適合文書として選択した場合、同様の枠組みにより、以下の評価式が構築される。
再検索のためのクエリーベクトル2=(クエリー2+文書3):
(補助金,教育,見直し,はじまる)=(1.5,0.5,0.5,0.5)
評価式2=「再検索のためのクエリーベクトル2」とデータの単語ベクトルの内積
【0136】
そのため、以降の検索では、以下の様に拡張されたベクトルを利用する事になる。
クエリー1”:「構造改革」→(構造改革,評価値1,評価値2)=(1,1,0)
クエリー2”:「補助金」→(補助金,評価値1,評価値2)=(1,0.5,1.5)
文書1”:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,1.25,0.75)
文書2”:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,−0.25,0)
文書3”:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,0.25,1.5)
【0137】
また、ベクトルに負の値が生ずると、負×負が正の値となり、ノイズとなる事がある。これを防ぐには、クエリーか文書の少なくともどちらかの評価値に対して、負の値を切り上げて0とすれば良い。もし文書の評価値を切り上げた場合、拡張されたベクトルは以下の様になる。
クエリー1’’’:「構造改革」
→(構造改革,評価値1,評価値2)=(1,1,0)
クエリー2’’’:「補助金」
→(補助金,評価値1,評価値2)=(1,0.5,1.5)
文書1’’’:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,1.25,0.75)
文書2’’’:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,0,0)
文書3’’’:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる,評価値1,評価値2)
=(0.5,0.5,0.5,0.5,0.25,1.5)
【0138】
以上の手法により、ユーザの嗜好や、ユーザが同一視する関連語を学習した検索を行う事が出来る。以上のでは、検索を例に出したが、ベクトルを評価式によって拡張する事が技術の根幹であるため、ベクトルを利用する他の方法、例えば、データの分類やクラスタリング等にも同様の枠組みで応用できる。また、この例では評価式自体もベクトルで表現できるため、似た評価式をクラスタリング等でまとめて、次元数を減少させて単純化する事も考えられる。
【0139】
(実施例3)
実施例2では、全てのデータ(クエリーや文書)に対して、全ての評価式を適用するため、データ数×評価式数の数値を格納する必要があり、データとフィードバックが多い場合には、さらに工夫するほうが好ましい。実施例3では、数学的な工夫によって、これらの評価値を直接管理せずに済ます方法を述べる。なお、適合文書を1つ、非適合文書を1つではなく、適合文書、非適合文書をそれぞれ複数選択し、それぞれ適合文書集合、非適合文書集合とすることもできる。
【0140】
まず、実施例2で構築した、以下のデータを利用する。
クエリー1:「構造改革」→(構造改革)=(1)
クエリー2:「補助金」→(補助金)=(1)
文書1:「構造改革により補助金が削減される見通し。」
→(構造改革,補助金,削減,見通し)=(0.5,0.5,0.5,0.5)
文書2:「全国チェーンの物流を構造改革してスマートに」
→(全国チェーン,物流,構造改革,スマート)=(0.5,0.5,0.5,0.5)
文書3:「教育への補助金の見直しがはじまる」
→(教育,補助金,見直し,はじまる)=(0.5,0.5,0.5,0.5)
【0141】
再検索のためのクエリーベクトル1=(クエリー1+文書1−文書2)
→(構造改革,補助金,削減,見通し,全国チェーン,物流,スマート)
=(1,0.5,0.5,0.5,−0.5,−0.5,−0.5)
評価式1=「再検索のためのクエリーベクトル1」とデータの単語ベクトルの内積
【0142】
再検索のためのクエリーベクトル2=(クエリー2+文書3)
→(補助金,教育,見直し,はじまる)=(1.5,0.5,0.5,0.5)
評価式2=「再検索のためのクエリーベクトル2」とデータの単語ベクトルの内積
【0143】
ここで、以上の2回のフィードバックの情報を利用して、クエリー2で文書を検索する場合を考える。この時、まずクエリー2のベクトルで、再検索のためのクエリーベクトルを検索すると、再検索のためのクエリーベクトル2:スコア=1.5、再検索のためのクエリーベクトル1:スコア=0.5、となる。
【0144】
もし、この時負のスコアの検索結果がある場合、それを無視する事によって、クエリーの評価値の負の値を切り上げて0にするのと同様の効果が生じ、ノイズの削減効果が期待できる。次に、このスコアの重み付きで、再検索のためのクエリーベクトルを加算する。
【0145】
加算結果1→再検索のためのクエリーベクトル2×1.5+再検索のためのクエリーベクトル1×0.5→(補助金,教育,見直し,はじまる,構造改革,削減,見通し,全国チェーン,物流,スマート)=(2.5,0.75,0.75,0.75,0.5,0.25,0.25,−0.25,−0.25,−0.25)。
【0146】
さらに、このベクトルにクエリー2の単語ベクトルを加える。加算結果2→加算結果1+クエリー2→(補助金,教育,見直し,はじまる,構造改革,削減,見通し,全国チェーン,物流,スマート)=(3.5,0.75,0.75,0.75,0.5,0.25,0.25,−0.25,−0.25,−0.25)。
【0147】
このベクトルと、文書の「拡張していない」ベクトルの内積が高い順に、文書をスコアリングして提示する。その結果、文書3:スコア=2.875、文書1:スコア=2.25、(文書2:スコア=−0.125)となる。
【0148】
この様に、評価式を構成する重みベクトルを用いて、関連語拡張を行うことにより、クエリーと文書のベクトル両方を、あたかも評価値で拡張したかの様な、検索結果を得ることができる。
【0149】
(実施例4)
この技術は、文書以外にも適用可能である。実施例4では、パソコンの検索を例に取って、複数のユーザから関連する性能指標を学習する例を述べる。まず、パソコンの性能指標を「処理速度」・「容量」・「持ち運びやすさ」・「安さ」の4つに分け、何らかの基準で数量化したとする。また、ユーザの検索には、重視する性能指標をいくつか選択する事とする。その結果、以下の様なベクトルが生成できる。
【0150】
クエリー:「処理性能」→(処理性能)=(5)
パソコン1→(処理速度,容量,持ち運びやすさ,安さ)=(5,4,1,2)
パソコン2→(処理速度,容量,持ち運びやすさ,安さ)=(2,2,5,3)
パソコン3→(処理速度,容量,持ち運びやすさ,安さ)=(4,1,3,5)
【0151】
ここで、クエリーで検索した結果は、パソコン1:スコア=25、パソコン3:スコア=20、パソコン2:スコア=10となる。
【0152】
このユーザが、パソコン3が適合パソコンで、パソコン1が不適合パソコンだとフィードバックしたとすると、
再検索のためのクエリーベクトル=(クエリー+パソコン3−パソコン1):
(処理速度,容量,持ち運びやすさ,安さ)=(4,−3,2,3)
評価式=「再検索のためのクエリーベクトル」とパソコンの性能ベクトルの内積
【0153】
このユーザは、実は処理速度以外に、安さと持ち運びやすさも重視していた事が分かる。この評価式を利用すると、クエリーとパソコンのベクトルは、以下の様に拡張できる。
クエリー’:「処理性能」→(処理性能,評価値)=(5,20)
パソコン1’→(処理速度,容量,持ち運びやすさ,安さ,評価値)
=(5,4,1,2,16)
パソコン2’→(処理速度,容量,持ち運びやすさ,安さ,評価値)
=(2,2,5,3,21)
パソコン3’→(処理速度,容量,持ち運びやすさ,安さ,評価値)
=(4,1,3,5,34)
【0154】
このため、再び処理性能による検索を行った場合、検索順序が修正され、パソコン3:スコア=700、パソコン2:スコア=430、パソコン1:スコア=345、となる。
【0155】
このように、複数のユーザからのフィードバックを利用して、多くの評価値を加えていけば、重視する性能指標を全て入力しなくても、関連する性能指標も自動的に利用して、検索を行うことができる様になる。この関連性は、ユーザのフィードバックから取得されるため、多くのユーザの共通認識が抽出される上、ユーザ層によって異なる関連性が学習できる。
【0156】
以上説明したように、クエリーに近い視点(検索意図)に基づくクエリー・文書の評価式によって、状況に応じた単語ベクトルの関連語拡張を行い、検索精度を向上することができる。似た意図の検索があった場合、適合性フィードバック無しに、かなりの検索(ランキング)精度向上が可能である。この実施の形態においては視点の蓄積について説明したが、実際に全ての視点をそのまま利用するか、ベクトル量子化等の処理で、似た視点をまとめるか、様々な変形が考えられる。また、視点の線形和という形で、関連語拡張を制御する点について説明したが、ここで選択する視点を絞り込むか広げるかによって、パーソナライズと普遍的な関連語拡張のバランスや、検索速度を調整することもできる。
【0157】
なお、本実施の形態で説明したデータ検索方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【0158】
以上のように、本発明にかかるデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータに読み取り可能な記録媒体は、データの利用のされ方に基づいた検索などのデータ処理にあたって有用である。
【図面の簡単な説明】
【0159】
【図1】この発明の実施の形態によるデータ検索装置のハードウエア構成の一例を示すブロック図である。
【図2】この発明の実施の形態にかかるデータ検索装置の機能的構成を示すブロック図である。
【図3】検索された文書の単語ベクトルを説明する説明図である。
【図4】クエリーと検索結果の各文書の角度のコサイン値行列を説明する説明図である
【図5】差分ベクトルを求める処理を説明する説明図である。
【図6】フィードバックを反映した単語ベクトルを説明する説明図である。
【図7】フィードバックを反映したコサイン値行列を説明する説明図である。
【図8】フィードバックを反映した単語ベクトルの作成処理を説明するフローチャートである。
【図9】適合性フィードバックで得られた情報を、検索モデルに反映する処理を説明するフローチャートである。
【図10】適合性フィードバックを小規模文書に適用した場合のフィードバック処理を説明するフローチャートである。
【図11】適合性フィードバックを小規模文書に適用した場合の検索処理を説明するフローチャートである。
【図12】適合性フィードバックを大規模文書に適用した場合の準備処理を説明するフローチャートである。
【図13】適合性フィードバックを大規模文書に適用した場合の検索処理を説明するフローチャートである。
【符号の説明】
【0160】
101 CPU
102 ROM
103 RAM
104 HDD
105 HD
106 FDD
107 FD
108 CD−RWドライブ
109 CD−RW
110 ディスプレイ
111 キーボード
112 マウス
113 ネットワークI/F
114 通信ケーブル
120 バス
201 検索部
202 ベクトル作成部
203 分類部
204 算出部
205 割り当て部
206 演算部
207 順位付け部
【特許請求の範囲】
【請求項1】
複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成手段と、
前記データを適合データと非適合データに分類する分類手段と、
前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出手段と、
前記算出手段によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て手段と、
前記割り当て手段によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算手段と、
前記演算手段によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け手段と、
を備えることを特徴とするデータ検索装置。
【請求項2】
前記演算手段によって前記演算を実行した後に、前記分類手段による前記データを再び適合データと非適合データに分類する処理、前記算出手段による各要素ベクトルのフィードバック値を求める処理、前記割り当て手段によるフィードバック値の割り当て処理、前記演算手段による演算処理を、1回または複数回繰り返すことにより前記順位付け手段によって使用される演算値を求めることを特徴とする請求項1に記載のデータ検索装置。
【請求項3】
前記分類手段は、前記検索項目を前記適合データに分類することを特徴とする請求項1または2に記載のデータ検索装置。
【請求項4】
前記算出手段は、求めたフィードバック値が負の値の場合、0にすることを特徴とする請求項1〜3のいずれか一つに記載のデータ検索装置。
【請求項5】
前記分類手段は、適合データまたは非適合データのいずれか一方が指摘されなかった場合、分類されなかったデータの集合を、適合データまたは非適合データの指摘されなかった方に分類することを特徴とする請求項1〜4のいずれか一つに記載のデータ検索装置。
【請求項6】
ユーザ間の関係の深さに関する値を入力する入力手段を備え、
前記算出手段は、前記入力手段によって入力された、情報の提示を求めるユーザとフィードバックを入力したユーザとの間の関係の深さに関する値にしたがって前記フィードバック値を増減することを特徴とする請求項1〜5のいずれか一つに記載のデータ検索装置。
【請求項7】
前記算出手段は、Rocchio法を利用することにより前記フィードバック値を求めることを特徴とする請求項1〜6のいずれか一つに記載のデータ検索装置。
【請求項8】
前記算出手段は、Bayes法を利用することにより前記フィードバック値を求めることを特徴とする請求項1〜7のいずれか一つに記載のデータ検索装置。
【請求項9】
前記算出手段は、SVMを利用することにより前記フィードバック値を求めることを特徴とする請求項請求項1〜8のいずれか一つに記載のデータ検索装置。
【請求項10】
前記検索項目に従って前記データを検索する検索手段を備え、前記作成手段は、前記検索手段によって検索されたデータおよび前記検索項目について要素ベクトルを作成することを特徴とする請求項1〜9のいずれか一つに記載のデータ検索装置。
【請求項11】
前記データは文書であり、前記要素は前記文書を構成する単語であり、前記要素ベクトルは、前記単語についてそれぞれ値を割り当てることによって作成される単語ベクトルであることを特徴とする請求項1〜10のいずれか一つに記載のデータ検索装置。
【請求項12】
前記算出手段は、適合データおよび非適合データの各集合から学習することによりデータ間の距離計算法を修正し、学習結果によって得られた数値が所定の範囲に納まるように所定の倍率をかけることによって、前記フィードバック値を求めることを特徴とする、請求項1〜11のいずれか一つに記載のデータ検索装置。
【請求項13】
複数の要素によって構成されるデータおよび該データの複数の検索項目について要素ベクトルを作成する作成手段と、
前記検索項目のそれぞれについて前記データを適合データと非適合データに分類する分類手段と、
前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、前記検索項目についての要素ベクトルをそれぞれ修正して、修正ベクトルを作成する修正手段と、
前記修正手段によって作成された修正ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより前記検索項目についてそれぞれ評価値を求め、前記データについての修正ベクトルを該評価値でそれぞれ加重して合成することにより加算ベクトルを作成する合成手段と、
前記合成手段によって作成された加算ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより、前記データの順位付けに関する値を求める順位付け手段と、
を備えることを特徴とするデータ検索装置。
【請求項14】
前記修正手段は、前記検索項目についての要素ベクトルに、前記適合データについての要素ベクトルを加算し、前記非適合データについての要素ベクトルを減算することにより、前記修正ベクトルを作成することを特徴とする請求項13に記載のデータ検索装置。
【請求項15】
前記合成手段は、前記修正ベクトルと前記要素ベクトルとの間の内積をとることにより得られた内積値を、前記評価値として求めることを特徴とする請求項13または14に記載のデータ検索装置。
【請求項16】
前記合成手段は、前記検索項目に対する修正ベクトルを、前記検索項目についての評価値でそれぞれ加重して加算することにより、前記加算ベクトルを作成することを特徴とする請求項13〜15のいずれか一つに記載のデータ検索装置。
【請求項17】
複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成工程と、
前記データを適合データと非適合データに分類する分類工程と、
前記分類工程によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出工程と、
前記算出工程によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て工程と、
前記割り当て工程によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算工程と、
前記演算工程によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け工程と、
を含むことを特徴とするデータ検索方法。
【請求項18】
請求項17に記載のデータ検索方法をコンピュータに実行させることを特徴とするデータ検索プログラム。
【請求項19】
請求項18に記載のデータ検索プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【請求項1】
複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成手段と、
前記データを適合データと非適合データに分類する分類手段と、
前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出手段と、
前記算出手段によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て手段と、
前記割り当て手段によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算手段と、
前記演算手段によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け手段と、
を備えることを特徴とするデータ検索装置。
【請求項2】
前記演算手段によって前記演算を実行した後に、前記分類手段による前記データを再び適合データと非適合データに分類する処理、前記算出手段による各要素ベクトルのフィードバック値を求める処理、前記割り当て手段によるフィードバック値の割り当て処理、前記演算手段による演算処理を、1回または複数回繰り返すことにより前記順位付け手段によって使用される演算値を求めることを特徴とする請求項1に記載のデータ検索装置。
【請求項3】
前記分類手段は、前記検索項目を前記適合データに分類することを特徴とする請求項1または2に記載のデータ検索装置。
【請求項4】
前記算出手段は、求めたフィードバック値が負の値の場合、0にすることを特徴とする請求項1〜3のいずれか一つに記載のデータ検索装置。
【請求項5】
前記分類手段は、適合データまたは非適合データのいずれか一方が指摘されなかった場合、分類されなかったデータの集合を、適合データまたは非適合データの指摘されなかった方に分類することを特徴とする請求項1〜4のいずれか一つに記載のデータ検索装置。
【請求項6】
ユーザ間の関係の深さに関する値を入力する入力手段を備え、
前記算出手段は、前記入力手段によって入力された、情報の提示を求めるユーザとフィードバックを入力したユーザとの間の関係の深さに関する値にしたがって前記フィードバック値を増減することを特徴とする請求項1〜5のいずれか一つに記載のデータ検索装置。
【請求項7】
前記算出手段は、Rocchio法を利用することにより前記フィードバック値を求めることを特徴とする請求項1〜6のいずれか一つに記載のデータ検索装置。
【請求項8】
前記算出手段は、Bayes法を利用することにより前記フィードバック値を求めることを特徴とする請求項1〜7のいずれか一つに記載のデータ検索装置。
【請求項9】
前記算出手段は、SVMを利用することにより前記フィードバック値を求めることを特徴とする請求項請求項1〜8のいずれか一つに記載のデータ検索装置。
【請求項10】
前記検索項目に従って前記データを検索する検索手段を備え、前記作成手段は、前記検索手段によって検索されたデータおよび前記検索項目について要素ベクトルを作成することを特徴とする請求項1〜9のいずれか一つに記載のデータ検索装置。
【請求項11】
前記データは文書であり、前記要素は前記文書を構成する単語であり、前記要素ベクトルは、前記単語についてそれぞれ値を割り当てることによって作成される単語ベクトルであることを特徴とする請求項1〜10のいずれか一つに記載のデータ検索装置。
【請求項12】
前記算出手段は、適合データおよび非適合データの各集合から学習することによりデータ間の距離計算法を修正し、学習結果によって得られた数値が所定の範囲に納まるように所定の倍率をかけることによって、前記フィードバック値を求めることを特徴とする、請求項1〜11のいずれか一つに記載のデータ検索装置。
【請求項13】
複数の要素によって構成されるデータおよび該データの複数の検索項目について要素ベクトルを作成する作成手段と、
前記検索項目のそれぞれについて前記データを適合データと非適合データに分類する分類手段と、
前記分類手段によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、前記検索項目についての要素ベクトルをそれぞれ修正して、修正ベクトルを作成する修正手段と、
前記修正手段によって作成された修正ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより前記検索項目についてそれぞれ評価値を求め、前記データについての修正ベクトルを該評価値でそれぞれ加重して合成することにより加算ベクトルを作成する合成手段と、
前記合成手段によって作成された加算ベクトルと前記データについての要素ベクトルとの間で演算を実行することにより、前記データの順位付けに関する値を求める順位付け手段と、
を備えることを特徴とするデータ検索装置。
【請求項14】
前記修正手段は、前記検索項目についての要素ベクトルに、前記適合データについての要素ベクトルを加算し、前記非適合データについての要素ベクトルを減算することにより、前記修正ベクトルを作成することを特徴とする請求項13に記載のデータ検索装置。
【請求項15】
前記合成手段は、前記修正ベクトルと前記要素ベクトルとの間の内積をとることにより得られた内積値を、前記評価値として求めることを特徴とする請求項13または14に記載のデータ検索装置。
【請求項16】
前記合成手段は、前記検索項目に対する修正ベクトルを、前記検索項目についての評価値でそれぞれ加重して加算することにより、前記加算ベクトルを作成することを特徴とする請求項13〜15のいずれか一つに記載のデータ検索装置。
【請求項17】
複数の要素によって構成されるデータおよび該データの検索項目について要素ベクトルを作成する作成工程と、
前記データを適合データと非適合データに分類する分類工程と、
前記分類工程によって分類された前記適合データの集合と前記非適合データの集合の間の相違に基づいて、各要素ベクトルのフィードバック値を求める算出工程と、
前記算出工程によって求められた各要素ベクトルのフィードバック値を、前記要素ベクトルにそれぞれベクトル要素として割り当てる割り当て工程と、
前記割り当て工程によってフィードバック値が割り当てられた、前記データの要素ベクトルと前記検索項目の要素ベクトルとの間で演算を実行する演算工程と、
前記演算工程によって実行された演算結果に基づいて、前記データの順位付けに関する値を求める順位付け工程と、
を含むことを特徴とするデータ検索方法。
【請求項18】
請求項17に記載のデータ検索方法をコンピュータに実行させることを特徴とするデータ検索プログラム。
【請求項19】
請求項18に記載のデータ検索プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2007−18389(P2007−18389A)
【公開日】平成19年1月25日(2007.1.25)
【国際特許分類】
【出願番号】特願2005−200948(P2005−200948)
【出願日】平成17年7月8日(2005.7.8)
【出願人】(390024350)株式会社ジャストシステム (123)
【Fターム(参考)】
【公開日】平成19年1月25日(2007.1.25)
【国際特許分類】
【出願日】平成17年7月8日(2005.7.8)
【出願人】(390024350)株式会社ジャストシステム (123)
【Fターム(参考)】
[ Back to top ]