情報検索システム
【課題】言葉と言葉との関係性に着目することによって、的確な検索結果を表示する。
【解決手段】1台以上の計算機によって構成され、テキスト情報を検索する検索システムであって、前記計算機は、ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得する手段と、蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得する手段と、前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択する手段とを備える。
【解決手段】1台以上の計算機によって構成され、テキスト情報を検索する検索システムであって、前記計算機は、ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得する手段と、蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得する手段と、前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択する手段とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報検索システムに関し、特に、検索精度を向上する技術に関する。
【背景技術】
【0002】
一般的な検索システム(検索エンジン)では、前処理と本処理とを行なうことによってコンテンツの検索を実現している。ここで、コンテンツとは、電子文書など電子的に表現されたコンピュータで処理可能な情報である。
【0003】
前処理では、検索インデックスを生成する。具体的には、検索対象のコンテンツを解析し、コンテンツに含まれる特徴的な文字列(特徴文字列)を取得し、取得した特徴文字列とコンテンツをマッピングし、検索インデックスとして格納領域に保存している。本処理では、検索クエリを解析し、検索処理に用いるキーワード群(検索ターム)を抽出し、抽出された検索タームを用いて、前処理にて生成した検索インデックスを走査し、該当するコンテンツの集合を取得する。その後、該当するコンテンツとの類似度を計算することによって、検索結果をソーティングする。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2007−507801号公報
【特許文献2】特開2005−165632号公報
【特許文献3】特開2000−200281号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、言葉は複数の意味を持つことが多い。特に、新語や略語は複数の意味を持つ傾向が顕著である。このため、あるキーワードで検索した場合に、検索結果の上位に予想しない意味の情報が多く並ぶ結果になることもある。このように、検索者の意図と異なる結果では検索者の目的は達成されない。
【0006】
これに対し、検索者は、検索キーワードを追加するなど、検索クエリを見直して検索を再度実行したり、下位の検索結果まで内容を閲覧するなどの作業が必要となる。このような再検索は、検索者に検索スキル及び作業時間を要求することになり、結果として作業効率や作業の質を下げる要因となっている。
【0007】
これは、コンテンツと特徴文字列(語彙)との関係性のみで検索を行なっているために生じる問題であり、この問題を現状の検索エンジンで回避することは困難である。
【0008】
このような問題を解決するために、例えば、特許文献1には、ユーザの個人情報をプロフィール情報として保持し、ユーザの嗜好や関心への適合度を考慮して検索結果リストへの出現順を調整する検索方法が記載されている。しかし、特許文献1に記載された方法では、ユーザから見た同音異義語の重みが異なる場合に対応できない。
【0009】
また、特許文献2には、コンテンツの特徴ベクトルとユーザの嗜好ベクトルとの類似度に従って、コンテンツを推薦する情報検索方法が提案されている。しかし、特許文献2に記載された方法では、ユーザから見た同音異義語の重みが異なる場合に対応できない。
【0010】
また、同義語辞書やオントロジを用いて、この問題を解決しようとする方法も存在する(例えば、特許文献3参照)。特許文献3に記載された方法は、検索タームを拡張することによる方法であり、検索漏れを低減することは可能である。しかし、検索者が意図しない文書(検索ノイズ)を排除することは困難であり、むしろ、検索ノイズが増大する要因にもなる。
【0011】
そこで、本発明は、言葉と言葉との関係性に着目することによって、的確な検索結果を表示する情報検索システムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の代表的な一例によると、語彙と語彙の関係性に着目し、コンテンツと語彙との関係性だけでなく、語彙と語彙の関係性を考慮した検索をする。
【0013】
具体的には、前処理として、検索対象のコンテンツを解析し、コンテンツに含まれる語彙を取得し、コンテンツと語彙の関連性をコンテンツインデックスとしてマッピングし、語彙と語彙との関連性を分析し、分析された関連性を示すコンテンツ語彙モデルを生成する。そして、検索者(ユーザ)の行動履歴に基づいて、ユーザに関連する語彙を抽出しユーザインデックスを生成する。そして、ユーザがアクセスしたファイルに含まれる語彙間の関連性も分析し、分析された関連性を示すユーザ語彙モデルを生成する。
【0014】
その後、本処理として、検索クエリから抽出した検索タームを用いて、ユーザ語彙モデルを走査し、検索タームに関連する語彙集合(以下、ユーザ拡張検索ターム)を取得し、検索ターム及び関連する語彙集合の語彙間の関連性を取得し、取得した関連度が登録された検索クエリ行列を生成する。さらに、ユーザ拡張タームを用いて、前処理にて生成したコンテンツインデックスを走査し、ユーザ拡張タームを含むコンテンツの集合を取得する。そして、各コンテンツのコンテンツ語彙モデルを走査し、コンテンツに含まれる語彙間の関連性を取得し、取得した関連度が登録されたコンテンツ行列を生成する。その後、検索クエリ行列とコンテンツ行列との間で類似度を計算し、類似度の計算結果に基づいて、検索結果をソーティングする。
【発明の効果】
【0015】
本発明の実施の形態によると、コンテンツと語彙との関係性だけでなく、語彙と語彙の関係性を考慮することによって、多義的な語彙であっても、検索者が日常使用している語彙と関連するコンテンツの類似度が高くなる。このため、検索者が嗜好するコンテンツを上位に表示することができ、ユーザの嗜好に近いコンテンツを上位に表示することができ、検索精度を向上することができる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施の形態の情報検索システムの全体の構成を示すブロック図である。
【図2】本発明の実施の形態のコンテンツ分析サブシステム101の構成を示すブロック図である。
【図3】本発明の実施の形態のコンテンツ分析サブシステム101によって実行される処理のフローチャートである。
【図4】本発明の実施の形態のコンテンツインデックスD131の例の説明図である。
【図5】本発明の実施の形態のコンテンツ語彙モデルD132の例の説明図である。
【図6】本発明の実施の形態のユーザ行動履歴D137の例の説明図である。
【図7】本発明の実施の形態のユーザ分析サブシステム102の構成を示すブロック図である。
【図8】本発明の実施の形態のユーザ分析サブシステム102によって実行される処理のフローチャートである。
【図9】本発明の実施の形態のユーザインデックスD135の例の説明図である。
【図10】本発明の実施の形態のユーザ語彙モデルD136の例の説明図である。
【図11】本発明の実施の形態のリポジトリ管理サブシステム103の構成を示すブロック図である。
【図12】本発明の実施の形態のリポジトリ管理サブシステム103によって実行される処理のフローチャートである。
【図13】本発明の実施の形態の情報検索サーバ104の構成を示すブロック図である。
【図14】本発明の実施の形態の情報検索サーバ104によって実行される処理のフローチャートである。
【図15A】本発明の実施の形態の検索クエリ行列生成処理(S412)の詳細な手順を示すフローチャートである。
【図15B】本発明の実施の形態の検索クエリ行列生成処理(S412)の詳細な手順を示すフローチャートである。
【図16】本発明の実施の形態のステップS412における検索クエリ行列の生成の例の説明図である。
【図17】本発明の実施の形態の類似コンテンツ抽出処理(S413)の詳細な手順を示すフローチャートである。
【図18】本発明の実施の形態のコンテンツ行列生成手順(S4134)の詳細な手順を示すフローチャートである。
【図19】本発明の実施の形態のステップS413におけるコンテンツ行列の生成の例の説明図である。
【図20】本発明の実施の形態の類似度算出手順(S4135)の詳細な手順を示すフローチャートである。
【図21】本発明の実施の形態の情報検索クライアント105の構成を示すブロック図である。
【図22A】本発明の実施の形態の情報検索クライアント105によって実行される処理のフローチャートである。
【図22B】本発明の実施の形態の情報検索クライアント105によって実行される処理のフローチャートである。
【発明を実施するための形態】
【0017】
<システムの全体の構成>
図1は、本発明の実施の形態の情報検索システムの全体の構成を示すブロック図である。
【0018】
本発明の実施の形態の情報検索システムは、コンテンツ分析サブシステム101、ユーザ分析サブシステム102、リポジトリ管理サブシステム103及び情報検索サーバ104を備える。これらの各装置はネットワーク(LAN又はWAN)106によって接続されている。本情報検索システムには、ネットワーク106を介して、情報検索クライアント105が接続される。
【0019】
コンテンツ分析サブシステム101は、検索対象のコンテンツの内容を、検索の実行前にあらかじめ分析する計算機であり、その詳細な構成は図2を用いて後述する。すなわち、コンテンツ分析サブシステム101は、コンテンツ内の語彙の関係を分析・抽出する。この語彙の関係は、情報検索サーバ104における処理に必要であり、リポジトリ管理サブシステム103に保存される。
【0020】
ユーザ分析サブシステム102は、検索を行うユーザのプロファイル情報を、検索の実行前にあらかじめ分析する計算機であり、その詳細な構成は図7を用いて後述する。すなわち、ユーザ分析サブシステム102は、ユーザ固有の情報(嗜好、興味範囲など)を語彙の関係として洗い出すことによって、ユーザのプロファイル情報を分析する。この分析結果は、情報検索サーバ104における処理に必要であり、リポジトリ管理サブシステム103に保存される。
【0021】
リポジトリ管理サブシステム103は、コンテンツ分析サブシステム101およびユーザ分析サブシステム102で分析された情報を格納するデータベースシステムであり、その詳細な構成は図11を用いて後述する。すなわち、リポジトリ管理サブシステム103は、コンテンツ分析サブシステム101及びユーザ分析サブシステム102によって分析された情報を、情報検索サーバ104からの要求に応じて提示する。
【0022】
情報検索サーバ104は、コンテンツを探索する計算機であり、その詳細な構成は図13を用いて後述する。すなわち、情報検索サーバ104は、情報検索クライアント105からの要求に応じて、リポジトリ管理サブシステム103から検索対象を抽出し、抽出された分析データから該検索ユーザの分析結果と類似するコンテンツを探索する。この探索結果は情報検索クライアント105に提示される。
【0023】
情報検索クライアント105は、検索を行うユーザが操作する計算機であり、その詳細な構成は図21を用いて後述する。すなわち、情報検索クライアント105は、ユーザからの検索要求を受け付け、情報検索サーバ104に検索を要求し、情報検索サーバ104から検索結果を受信し、検索結果を出力装置を介してユーザに提示する。
【0024】
なお、図1には、1台の検索クライアントのみを図示したが、複数台(2台以上)の検索クライアントを備えてもよい。
【0025】
ネットワーク106は、その一部又は全部がLAN又はWANで構成されるネットワークであり、コンテンツ分析サブシステム101、ユーザ分析サブシステム102、リポジトリ管理サブシステム103、情報検索サーバ104及び情報検索クライアント105を接続する。
【0026】
なお、コンテンツ分析サブシステム101及びユーザ分析サブシステム102から、ネットワーク106を経由して、リポジトリ管理サブシステム103に分析結果を転送するものとしたが、可搬型記憶媒体(例えば、光ディスク、不揮発性メモリなど)を使用して、分析結果を転送してもよい。
【0027】
また、コンテンツ分析サブシステム101、ユーザ分析サブシステム102、リポジトリ管理サブシステム103及び情報検索サーバ104のうち2以上のシステムを1台の物理的な計算機上に実装することもできる。この場合、各システム間では内部バスを経由してデータを転送することができる。
【0028】
また、情報検索クライアント105と、他のサブシステム(例えば、情報検索サーバ104など)を、1台の物理計算機に実装することもできる。
【0029】
<コンテンツ分析サブシステム101>
図2は、本発明の実施の形態のコンテンツ分析サブシステム101の構成を示すブロック図である。
【0030】
コンテンツ分析サブシステム101は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される一般的な構成の計算機である。
【0031】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及びコンテンツ分析プログラムP11がメモリ110に格納される。また、メモリ110には、CPU130によるプログラムの実行時に、データを一時的に格納するワークエリアが設けられる。
【0032】
システム制御プログラムP10は、いわゆるオペレーティングシステムであり、コンテンツ分析サブシステム101の全体を制御する。
【0033】
コンテンツ分析プログラムP11は、検索対象のコンテンツの内容を分析するプログラムである。
【0034】
記憶装置120は、電源遮断時にも記憶内容を保持可能な不揮発性の記憶素子であり、例えば、磁気ディスクドライブ(HDD)や、フラッシュメモリ(SSD)によって構成される。記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、前述したシステム制御プログラムP10及びコンテンツ分析プログラムP11が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0035】
CPU130は、メモリ110に格納されたプログラムを実行する。
【0036】
出力装置140は、入力装置150及びインターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0037】
インターフェース160は、所定のプロトコルに従ってネットワーク106に接続された装置との間でデータを送受信するネットワークインターフェース(NIC)である。
【0038】
出力装置140は、処理の結果を画面に表示するディスプレイや、紙に出力するプリンタなどである。
【0039】
入力装置150は、ユーザがコンテンツ分析サブシステム101に指示を与えるためのキーボード、マウスなどである。
【0040】
コンテンツ分析サブシステム101は、コンテンツ分析プログラムP11を実行することによって得られたコンテンツの分析結果を、ネットワーク106を介して、リポジトリ管理サブシステム103に転送する。次に、この処理の詳細を説明する。
【0041】
図3は、本発明の実施の形態のコンテンツ分析サブシステム101によって実行される処理のフローチャートである。
【0042】
まず、コンテンツ分析サブシステム101は、分析対象となるコンテンツの指定を受けると、分析対象となる全てのコンテンツのリストを生成し(S101)、生成されたリストに含まれるコンテンツのインデックスD131(図11参照)をリポジトリ管理サブシステム103からを取得する(S102)。ステップS102において取得されるコンテンツインデックスには、コンテンツの今までの分析結果が含まれており、その構成は図4を用いて後述する。
【0043】
コンテンツ分析サブシステム101によって分析されるコンテンツは、リポジトリ管理サブシステム103の記憶装置120に格納されているコンテンツ情報D130である。各コンテンツ情報は、情報コンテンツ内に含まれるテキストデータ及び前記情報コンテンツに付加されるテキストデータである。この場合、各コンテンツ情報(各テキストデータ)は、複数の語によって構成される。
【0044】
また、コンテンツ情報は、情報コンテンツ内に含まれるテキストデータ及び前記情報コンテンツに付加されるテキストデータのうち複数のテキストデータを含む集合体でもよい。この場合、各テキストデータは一つ以上の語によって構成され、各テキストデータが集合体を構成することによって、各コンテンツ情報が複数の語によって構成される。
【0045】
その後、ループを制御するパラメータnを1に初期設定する(S103)。
【0046】
そして、n番目のコンテンツをリポジトリ管理サブシステム103のコンテンツ情報D130から読み出し(S104)、読み出したコンテンツにコンテンツ識別子が付与されていない場合、新たにコンテンツ識別子を割り当る(S105)。割り当てられたコンテンツ識別子は、ステップS112において、リポジトリ管理サブシステム103のコンテンツ情報D130(図11参照)に格納される。
【0047】
その後、読み出したコンテンツにテキスト情報が含まれるか否かを判定する(S106)。その結果、読み出されたコンテンツにテキスト情報が含まれない場合、コンテンツを解析する必要がないので、ステップS109に進む。
【0048】
一方、読み出されたコンテンツにテキスト情報が含まれる場合、形態素解析によって、テキスト情報中に登場する語彙を抽出し、抽出された語彙の出現頻度に基づいてコンテンツインデックスを更新する(S107)。更新されたコンテンツインデックスは、ステップS112において、リポジトリ管理サブシステム103のコンテンツインデックスD131(図11参照)に格納される。本明細書において、「語彙」とは、文章を構成する一つ一つの単語又は複合語となる文字列であり、後述する形態素解析によって分解される単位である。
【0049】
次に、ステップS107において抽出された語彙の前後の所定の範囲内で登場する語彙を共起語彙として、共起語彙の組み合わせの出現頻度に基づいて、コンテンツ語彙モデルを更新する(S108)。更新されたコンテンツ語彙モデルは、ステップS112において、リポジトリ管理サブシステム103のコンテンツ語彙モデルD132(図11参照)に格納される。
【0050】
ここで、コンテンツ語彙モデルを取得する方法について説明する。
【0051】
例えば、下記の文章を考える。
「私の上司は笠松さんです。笠松さんは部長をしています。」
この文章は形態素解析によって下記のように単語又は複合語単位の文字列(語彙)に分解される。
【0052】
「私(私)/の(の)/上司(上司)/は(は)/笠松(笠松)/さん(さん)/です(です)/。(。)/笠松(笠松)/さん(さん)/は(は)/部長(部長)/を(を)/し(する)/て(て)/い(いる)/ます(ます)/。(。)」
【0053】
なお、カッコ内の文字列は語彙の基本活用形を示す。
【0054】
その後、分解された文字列(語彙)に対し、共起情報取得処理を実行する。具体的には、語彙のテキスト内出現位置情報に基づき、ある語彙において関連性があると考えられる別の語彙を共起語彙とし、その共起語彙及びその度数を取得する。例えば、ある語彙において所定の範囲内(直前、直後から数語離れた位置)に現れる別の語彙が、統計的に有意に多く現れているのであれば、その二つの語彙間には強い関連性があると考えられる。このことから、ある語彙の前後n個(ただし、n>0)までの語彙を共起語彙として収集し、収集された語彙の共起する頻度を統計処理することによって、共起する頻度が高い語彙、つまり、関連性の高い語彙を取得することができる。ただし、共起語彙を取得する際には、語彙の基本活用形によって収集・分析を行なう。これは、動詞や形容詞のような活用する語彙を活用した状態のまま処理すると、同じ意味を持つ語彙を別の語彙と判断されることを防ぐためである。また、句読点などの記号が含まれていた場合は、それらは共起語彙として収集しない。
【0055】
なお、ここでは、n=4と設定した場合を考える。
【0056】
そうすると、第1文の「笠松」との共起する語彙は、処理の対象となっている語彙の前4個までの「私」、「の」、「上司」、「は」と、後4個までの「さん」、「です」となる。また、第2文の「笠松」との共起する語彙は、処理の対象となっている語彙の前4個までの「さん」、「です」、と、「さん」、「は」、「部長」、「を」となる。
【0057】
そして、語彙のペアが共起している頻度を計算し、それを関連度とする。なお、語彙間の関連度を算出する方法として、語彙間の共起回数を計算して設定する方法の他に、統計学におけるt検定手法を利用することもできる。これにより、共起語彙の頻度が有意に大きいかを推定することが可能になる。具体的には下式を用いるとよい。
【0058】
【数1】
【0059】
また、語彙間の関連度を算出する方法として、語彙の出現位置情報に基づく算出方法について説明したが、文章の構造(係り受け)に基づいて関連度を算出することもできる。この場合、構文解析器を用いて係り受け構造を解析し、解析された係り受け関係の頻度情報を関連度とすることができる。
【0060】
なお、前述した他にも、特開2003−167894号公報に開示されている方法を用いて、関連する語彙を取得することもできる。ただし、この場合は事前にコンテンツを適切なカテゴリに分類する手順が必要になる。
【0061】
さらに、これらの方式を組み合わせて関連度を算出することもできる。本実施の形態では、語彙の出現位置の情報に基づいて語彙間の共起回数を計算して、関連度を設定する方法を用いて説明する。
【0062】
次に、コンテンツの関係者をユーザ行動履歴に登録することによって、ユーザ行動履歴を更新する(S109)。例えば、コンテンツの作成者や、更新者の情報をコンテンツの属性情報(例えば、ファイルのプロパティや、ファイルのメタデータ)から取得し、取得したユーザのユーザID、行動種別及びコンテンツIDを、新規のエントリ(頻度=1)としてユーザ行動履歴D137に登録する。なお、ユーザID、行動種別及びコンテンツIDが同一のエントリが既に登録されている場合、頻度に1を加算する。更新されたユーザ行動履歴は、ステップS112において、リポジトリ管理サブシステム103のユーザ行動履歴D137(図11参照)に格納される。
【0063】
その後、パラメータnとステップS101で生成したリストの要素数とを比較して、次の分析対象のコンテンツが存在するか否かを判定する(S110)。
【0064】
その結果、次(n+1番目)のコンテンツが存在する場合、パラメータnに1を加算し(S111)、ステップS104に戻り、次のコンテンツを分析する。
【0065】
一方、次(n+1番目)のコンテンツが存在しない場合、ステップS101で生成したリストの中の全てのコンテンツの分析が終了しているので、更新されたコンテンツインデックス、コンテンツ語彙モデル、ユーザ行動履歴をリポジトリ管理サブシステム103に転送する(S112)。
【0066】
リポジトリ管理サブシステム103は、これらのデータをコンテンツ分析サブシステム101から受信すると、受信したコンテンツ識別子をコンテンツ情報D130に格納し、コンテンツインデックスをコンテンツインデックスD131に格納し、コンテンツ語彙モデルをコンテンツ語彙モデルD132に格納し、ユーザ行動履歴をユーザ行動履歴D137に格納する。
【0067】
図4は、本発明の実施の形態のコンテンツインデックスの例を説明する図である。
【0068】
コンテンツ分析サブシステム101がステップS107において更新するコンテンツインデックスは、リポジトリ管理サブシステム103の記憶装置120にコンテンツインデックスD131として格納されており、語彙、コンテンツID及び重みを含む。
【0069】
語彙は、コンテンツにテキスト情報として含まれる単語又は複合語単位の文字列である。コンテンツIDは、コンテンツを一意に識別するための識別子であり、当該語彙が含まれるコンテンツを示す。重みは、当該語彙がこのコンテンツに出現する度数を示す。
【0070】
なお、重みは、当該語彙がこのコンテンツに出現する回数を用いて設定する方法の他、当該語彙がこのコンテンツに出現する回数をコンテンツ内で出現する語彙総数で除することによって正規化した指標を用いる方法や、このコンテンツが含まれるコンテンツ集合における当該語彙の出現確率を用いる方法や、文中の役割(主語、述語、目的語)などに応じて決定する方法や、これらの方式を組み合わせて重みを設定する方法など様々な公知の方法を用いることができる。本実施の形態では、当該語彙がこのコンテンツに出現する方法を用いて説明する。
【0071】
図5は、本発明の実施の形態のコンテンツ語彙モデルの例を説明する図である。
【0072】
コンテンツ分析サブシステム101がステップS108において生成するコンテンツ語彙モデルは、コンテンツに含まれる語彙の共起情報であり、リポジトリ管理サブシステム103の記憶装置120にコンテンツ語彙モデルD132として格納されており、語彙1、語彙2、コンテンツID及び関連度を含む。
【0073】
語彙1及び語彙2は、コンテンツ中の所定の範囲内で共起する語彙の組である。所定の範囲内で共起する語彙とは、前述したように、例えば、ある語彙の前後4個以内に存在する語彙を共起する語彙と定めることができる。
【0074】
コンテンツIDは、語彙1及び語彙2が共起しているコンテンツの識別子である。関連度は、語彙1及び語彙2の組が共起する度数であり、例えば、当該コンテンツ内で語彙1及び語彙2の組が共起した回数を用いることができる。すなわち、共起する回数が多い語彙の組は、その語彙の関連性が高いといえる。
【0075】
図6は、本発明の実施の形態のユーザ行動履歴の例を説明する図である。
【0076】
コンテンツ分析サブシステム101がステップS108において生成するユーザ行動履歴は、リポジトリ管理サブシステム103の記憶装置120にユーザ行動履歴D137として格納されており、ユーザID、行動種別、コンテンツID、キーワード及び頻度を含む。
【0077】
ユーザIDは、本情報検索システムを使用するユーザを一意に識別する識別子であり、図示した例では名前が用いられている。
【0078】
行動種別は、ユーザがコンテンツにアクセスした行動の種別を一意に識別する識別子である。なお、図6に示すユーザ行動履歴には、コンテンツの「作成」、「更新」の他、「閲覧」、「検索」が記録されているが、一部の種別のアクセス(例えば、「作成」、「更新」のみ)が記録されてもよい。また、その他の行動種別(例えば、「メタタグ付与」など)を設定し、該当する行動を記録してもよい。
【0079】
コンテンツIDは、ユーザがアクセスしたコンテンツを一意に識別する識別子である。キーワードは、ユーザがコンテンツに対して行動した際に付随するキーワード(例えば、検索キーワード、メタタグなど)である。頻度は、そのユーザが、その行動によって、そのコンテンツにアクセスした回数である。
【0080】
例えば、図6に示すユーザ行動履歴では、ユーザ「高取」が「作成」したコンテンツ「CONT−1」を、ユーザ「高取」が「2」回「更新」し、ユーザ「野崎」が「3」回閲覧し、ユーザ「野崎」が「1」回検索していることが分かる。
【0081】
なお、行動種別が「作成」又は「更新」など、コンテンツ作成に付随する行動である場合、コンテンツ分析サブシステム101がユーザ行動履歴を操作する。また、行動種別が「閲覧」又は「検索」など、コンテンツ作成に直接的には付随しない行動である場合、情報検索サーバ104がユーザ行動履歴を操作する。
【0082】
なお、本実施の形態では、コンテンツインデックスD131及びコンテンツ語彙モデルD132の構築方法として、対象となるコンテンツ内に存在するテキスト情報を使用する方法について説明したが、コンテンツ内のテキスト情報だけでなく、コンテンツに付随するテキスト情報(コンテンツの属性、メタタグなど)を利用して、コンテンツインデックスD131及びコンテンツ語彙モデルD132を構築することもできる。例えば、コンテンツの属性やメタタグに基づいて、ステップS107を実行することによって、コンテンツインデックスを構築することができる。
【0083】
また、同様に、例えば、同じコンテンツに付随するメタタグ同士は関連性があるものと判定して、ステップS108を実行することによって、コンテンツ語彙モデルを構築することもできる。
【0084】
これらの情報は、リポジトリ管理サブシステム103のコンテンツ語彙モデルD132に格納されているため、必要な情報をここから適宜抽出し、該当処理を実行すればよい。
【0085】
<ユーザ分析サブシステム102>
図7は、本発明の実施の形態のユーザ分析サブシステム102の構成を示すブロック図である。
【0086】
ユーザ分析サブシステム102は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0087】
すなわち、ユーザ分析サブシステム102は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0088】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及びユーザ分析プログラムP12がメモリ110に格納される。ユーザ分析プログラムP12は、ユーザがアクセスしたコンテンツの内容に基づいてユーザによるコンテンツの嗜好を分析するプログラムである。
【0089】
記憶装置120に格納される各種プログラムD100には、システム制御プログラムP10及びユーザ分析プログラムP12が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0090】
ユーザ分析サブシステム102は、ユーザ分析プログラムP12を実行することによって得られたユーザの分析結果を、ネットワーク106を介して、リポジトリ管理サブシステム103に転送する。次に、この処理の詳細を説明する。
【0091】
図8は、本発明の実施の形態のユーザ分析サブシステム102によって実行される処理のフローチャートである。
【0092】
図8に示す処理は、定期的に全データを分析し、分析結果は上書き更新される。
【0093】
まず、ユーザ分析サブシステム102は、分析対象となるユーザを取得し、分析対象となる全てのユーザのリストを生成する(S201)。そして、生成されたリストに含まれるユーザのインデックスD135(図11参照)をリポジトリ管理サブシステム103からを取得する(S202)。ステップS202において取得されるユーザインデックスファイルには、ユーザの今までの分析結果が含まれており、その構成は図9を用いて後述する。
【0094】
さらに、ユーザ行動履歴D137(図11参照)をリポジトリ管理サブシステム103からを取得する(S203)。
【0095】
その後、ループを制御するパラメータnを1に初期設定する(S204)。
【0096】
そして、n番目のユーザ情報をリポジトリ管理サブシステム103のユーザ情報D134から読み出す(S205)。そして、該当するユーザ情報が存在するか否か、すなわち、ステップS201で生成されたリストに含まれるユーザの情報がリポジトリ管理サブシステム103のユーザ情報D134から読み出すことができたか否かを判定する(S206)。
【0097】
その結果、ユーザ情報が存在する、すなわち、ユーザ情報がリポジトリ管理サブシステム103のユーザ情報D134から読み出すことができた場合、ステップS208に進む。一方、ユーザ情報が存在しない、すなわち、ユーザ情報がリポジトリ管理サブシステム103のユーザ情報D134から読み出すことができなかった場合、当該ユーザの情報はリポジトリ管理サブシステム103に登録されていないので、新たにユーザ情報を作成する。このため、ユーザ識別子をユーザに割り当て、このユーザのユーザ情報をリポジトリ管理サブシステム103のユーザ情報D134に格納する(S207)。
【0098】
次に、ユーザインデックスファイルを更新する(S208)。ユーザインデックスファイルは、図9に示すように、ユーザに関連した(当該ユーザが作成、閲覧等のアクセスをした)コンテンツに含まれる語彙の出現度数を示す。具体的には、ステップS203で取得したユーザ行動履歴D137を参照して、ユーザがアクセスしたコンテンツを特定する。そして、特定されたコンテンツを形態素解析によって抽出した語彙の出現度数を、全コンテンツにわたって集計して重みを求める。なお、既に該当コンテンツが分析済みであり、コンテンツインデックスに該当コンテンツの情報が保持されている場合、それを参照しながら重みを算出することができる。
【0099】
その後、ユーザ語彙モデル情報(図10参照)を更新する(S209)。ユーザ語彙モデルは、前述したコンテンツ語彙モデルの更新と同様の方法によって更新することができる。すなわち、ステップS208において抽出された語彙の前後の所定の範囲内で登場する語彙を共起語彙として、共起語彙の組み合わせの出現頻度を算出する。そして、算出されたコンテンツ毎の共起語彙の組み合わせの出現頻度を、ユーザ行動履歴D137を参照することによって、ユーザ毎にアクセスしたコンテンツを特定し、当該特定されたコンテンツの共起語彙の組み合わせの出現頻度をユーザ毎に集計する。これは、ユーザ行動履歴D137を参照することによって、ユーザ毎にアクセスしたコンテンツを特定し、当該特定されたコンテンツの共起語彙の組み合わせの出現頻度をユーザ毎に集計する。更新されたユーザ語彙モデルは、ステップS212において、リポジトリ管理サブシステム103のユーザ語彙モデルD136(図11参照)に格納される。なお、既に該当コンテンツが分析済みであり、コンテンツ語彙モデルに該当コンテンツの情報が保持されている場合、それを参照しながら関連度を算出することができる。
【0100】
その後、パラメータnとステップS201で生成したリストの要素数とを比較して、次の分析対象のユーザが存在するか否かを判定する(S210)。
【0101】
その結果、次(n+1番目)のユーザが存在する場合、パラメータnに1を加算し(S211)、ステップS205に戻り、次のユーザを分析する。
【0102】
一方、次(n+1番目)のユーザが存在しない場合、ステップS201で取得したリストの中の全てのユーザの分析が終了しているので、更新されたユーザインデックス、ユーザ語彙モデルをリポジトリ管理サブシステム103に転送する(S212)。
【0103】
リポジトリ管理サブシステム103は、これらのデータをユーザ分析サブシステム101から受信すると、受信したユーザインデックスをユーザインデックスD135に格納し、ユーザ語彙モデルをユーザ語彙モデルD136に格納する。
【0104】
図9は、本発明の実施の形態のユーザインデックスの例を説明する図である。
【0105】
ユーザ分析サブシステム102がステップS208において更新するユーザインデックスは、リポジトリ管理サブシステム103の記憶装置120にユーザインデックスD135として格納されており、語彙、ユーザID及び重みを含む。
【0106】
語彙は、コンテンツにテキスト情報として含まれる単語又は複合語単位の文字列である。ユーザIDは、ユーザを一意に識別するための識別子であり、当該語彙が含まれるコンテンツにアクセスしたユーザを示す。
【0107】
重みは、当該語彙がこのユーザがアクセスしたコンテンツに出現する度数を示す。なお、この重みを算出する際には、アクセスの種別によって重み付け係数を変えて出現回数を加算してもよい。例えば、「作成」には係数1を乗じ、「更新」には係数0.5を乗じることができる。
【0108】
図9に示すユーザインデックスによると、ユーザ「高取」がアクセスした全てのコンテンツには語彙「BT」が10回出現していることが分かる。
【0109】
図10は、本発明の実施の形態のユーザ語彙モデルの例を説明する図である。
【0110】
ユーザ分析サブシステム102がステップS209において生成するユーザ語彙モデルは、ユーザがアクセスしたコンテンツに含まれる語彙の共起情報であり、リポジトリ管理サブシステム103の記憶装置120にユーザ語彙モデルD136として格納されており、語彙1、語彙2、ユーザID及び関連度を含む。
【0111】
語彙1及び語彙2は、コンテンツ中の所定の範囲内で共起する語彙の組である。所定の範囲とは、前述したように、例えば、語彙1の前後4個以内に存在する語彙を共起する語彙と定めることができる。
【0112】
ユーザIDは、語彙1及び語彙2が共起しているコンテンツにアクセスしたユーザの識別子である。関連度は、語彙1及び語彙2の組が共起する度数であり、例えば、当該ユーザがアクセスしたコンテンツ内で語彙1及び語彙2の組が共起した回数を用いることができる。すなわち、関連度が大きい語彙の組は、その語彙の関連性が高く、そのユーザによる嗜好性が高い語彙の組であるといえる。
【0113】
図10に示すユーザ語彙モデルによると、ユーザ「高取」がアクセスした全てのコンテンツには、「BT」「SOA」の組が共起語彙として5回出現していることが分かる。
【0114】
なお、本実施の形態では、ユーザインデックスD135及びユーザ語彙モデルD136の構築方法として、当該ユーザが作成、閲覧等のアクセスを行なったコンテンツ情報に基づいて構築する方法について説明したが、アクセスしたコンテンツの情報だけでなく、検索やメタタグ付与などの別の行動の対象となったコンテンツの情報を利用して構築することもできる。
【0115】
例えば、検索を実行した際に入力される検索キーワードや、ユーザがコンテンツに付与したメタタグは、ユーザの嗜好を表していると考えられる。このため、これらの情報に基づいて、ステップS208を実行することによって、ユーザインデックスを構築することができる。
【0116】
また、同様に、例えば、ユーザが一回の検索時に入力された語彙同士、又は、同じユーザがアクセスしたコンテンツに付随するメタタグ同士は関連性があると判定して、ステップS209を実行しすることによって、ユーザ語彙モデルを構築することもできる。
【0117】
これらの情報は、リポジトリ管理サブシステム103のユーザ行動履歴D137に格納されているため、必要な情報をここから適宜抽出し、該当処理を実行すればよい。
【0118】
<リポジトリ管理サブシステム103>
図11は、本発明の実施の形態のリポジトリ管理サブシステム103の構成を示すブロック図である。
【0119】
リポジトリ管理サブシステム103は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0120】
すなわち、リポジトリ管理サブシステム103は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0121】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及びリポジトリ管理プログラムP13がメモリ110に格納される。リポジトリ管理プログラムP13は、リポジトリ管理サブシステム103に格納される情報を管理するプログラムである。
【0122】
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10及びリポジトリ管理プログラムP13が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0123】
また、記憶装置120には、コンテンツ情報D130、コンテンツインデックスD131、コンテンツ語彙モデルD132、コンテンツ付加情報D133、ユーザ情報D134、ユーザインデックスD135、ユーザ語彙モデルD136及びユーザ行動履歴D137が格納される。
【0124】
コンテンツ情報D130は、コンテンツの識別子と、コンテンツの実体を含む。コンテンツインデックスD131は、図4に示すように、コンテンツに出現する語彙の度数を示す。コンテンツ語彙モデルD132は、図5に示すように、コンテンツに出現する共起語彙の度数を示す。コンテンツ付加情報D133は、コンテンツに付加される情報であり、コンテンツの属性や、メタタグを含む。
【0125】
ユーザ情報D134は、ユーザの識別子、氏名、所属、権限レベル等のユーザに関する情報を含む。ユーザインデックスD135は、図9に示すように、ユーザがアクセスしたコンテンツに含まれる語彙の出現度数を示す。ユーザ語彙モデルD136は、図10に示すように、ユーザがアクセスしたコンテンツに含まれる共起語彙及びその度数を示す。ユーザ行動履歴D137は、図6に示すように、ユーザがコンテンツにアクセスした態様、頻度を示す。
【0126】
リポジトリ管理サブシステム103は、リポジトリ管理プログラムP13を実行することによって、ネットワーク106を介して転送された分析情報を記憶装置120に格納し、ネットワーク106を介して送信された情報問合せを受信し、受信した問合せ内容に応じた情報を磁気ディスク装置120から取得し、ネットワーク106を介して要求元の情報検索クライアント105に返信する。次に、この処理の詳細を説明する。
【0127】
図12は、本発明の実施の形態のリポジトリ管理サブシステム103によって実行される処理のフローチャートである。
【0128】
まず、リポジトリ管理サブシステム103は、情報検索クライアント105からリクエストを受信すると(S301)、受信したリクエストを解析する(S302)。
【0129】
受信したリクエストが情報参照要求である場合、要求された問合せ内容に応じた情報を記憶装置120から読み出して(S303)、読み出した情報を要求元の情報検索クライアント105に送信する(S304)。その後、ステップS301に戻り、他のリクエストの受信を待つ。
【0130】
一方、受信したリクエストがコンテンツ情報登録要求である場合、要求された登録内容に応じて、情報を記憶装置120に格納する。
【0131】
具体的には、コンテンツ情報の登録要求であれば、受信したコンテンツ情報をコンテンツ情報D130に新たに登録する(S305)。コンテンツインデックスの更新要求であれば、受信したコンテンツインデックスによってコンテンツインデックスD131を更新する(S306)。コンテンツ語彙モデルの更新要求であれば、受信したコンテンツ語彙モデルによってコンテンツ語彙モデルD132を更新する(S307)。コンテンツ付加情報の登録要求であれば、受信したコンテンツ付加情報をコンテンツ付加情報D133に追加登録する(S308)。ユーザ行動履歴の登録要求であれば、受信したユーザ行動履歴をユーザ行動履歴D137に追加登録する(S309)。ユーザ情報の登録要求であれば、受信した新規登録ユーザの情報をユーザ情報D134に追加するように登録する(S310)。ユーザインデックスの登録要求であれば、受信したユーザインデックスによってユーザインデックスD135を更新する(S311)。ユーザ語彙モデルの更新要求であれば、受信したユーザ語彙モデルによってユーザ語彙モデルD136を更新する(S312)。ステップS305からステップS312の処理の終了後、ステップS301に戻り、他のリクエストの受信を待つ。
【0132】
一方、受信したリクエストがサブシステム停止コマンドである場合、リポジトリ管理サブシステム103の動作を終了する。
【0133】
<情報検索サーバ104>
図13は、本発明の実施の形態の情報検索サーバ104の構成を示すブロック図である。
【0134】
情報検索サーバ104は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0135】
すなわち、情報検索サーバ104は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0136】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及び情報検索制御プログラムP14がメモリ110に格納される。
【0137】
情報検索制御プログラムP14は、情報検索クライアント105から送信された検索要求に基づいて、コンテンツを検索するプログラムであり、サブプログラムとして、コンテンツ検索プログラムP141、検索結果取得プログラムP142、コンテンツ取得プログラムP143、ユーザ行動履歴登録プログラムP144、及びユーザ認証プログラムP145を含む。
【0138】
コンテンツ検索プログラムP141は、コンテンツの検索を実行するためのプログラムで、検索条件式解析プログラムP1411、検索クエリ行列生成プログラムP1412、コンテンツ行列生成プログラムP1413、類似度算出プログラムP1414、及びコンテンツ抽出プログラムP1415を含む。
【0139】
検索条件式解析プログラムP1411は、ユーザによって入力された検索条件式を解析する(図14のステップS411)。検索クエリ行列生成プログラムP1412は、検索条件式の解析結果に従って、検索クエリ行列を生成する(図14のステップS412)。
【0140】
コンテンツ行列生成プログラムP1413は、検索クエリ行列と類似度が比較されるコンテンツ行列を生成する(図17のステップS4134)。類似度算出プログラムP1414は、検索クエリ行列とコンテンツ行列との類似度を算出する(図17のステップS4135))。
【0141】
コンテンツ抽出プログラムP1415は、コンテンツインデックスD131を検索し、検索クエリ行列のラベルの語彙が含まれているコンテンツのリストを抽出する(図17のステップS4132)。
【0142】
検索結果取得プログラムP142は、情報検索クライアント105からの問合せ内容に従って検索結果データD140を要求元に転送する。
【0143】
コンテンツ取得プログラムP143は、情報検索クライアント105からの要求に従って、リポジトリ管理サブシステム103からコンテンツを取得する。
【0144】
ユーザ行動履歴登録プログラムP144は、情報検索クライアント105からの要求に従ったコンテンツへのアクセス履歴をユーザ行動履歴D137に登録する。
【0145】
ユーザ認証プログラムP145は、情報検索クライアント105を操作するユーザを認証する。
【0146】
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10及び情報検索制御プログラムP14が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0147】
また、記憶装置120には、検索結果データD140が格納される。検索結果データD140は、コンテンツ検索プログラムP141によって検索された検索結果であり、検索結果取得プログラムP142によって、情報検索クライアント105に転送される。
【0148】
情報検索サーバ104は、情報検索制御プログラムP14を実行することによって、情報検索クライアント105から送信された検索要求に基づいて、コンテンツを検索し、検索結果を要求元の情報検索クライアント105に返信する。次に、この処理の詳細を説明する。
【0149】
図14は、本発明の実施の形態の情報検索サーバ104によって実行される処理のフローチャートである。
【0150】
まず、情報検索サーバ104は、情報検索クライアント105からリクエストを受信すると(S401)、受信したリクエストを解析する(S402)。
【0151】
受信したリクエストがユーザ認証要求である場合、情報検索クライアント105に入力されたユーザIDに基づいてユーザを認証し、認証結果を要求元の情報検索クライアント105に返信する(S403)。
【0152】
一方、受信したリクエストが検索結果問合せである場合、検索結果取得プログラムP142を実行し、情報検索クライアント105からの問合せ内容に従って検索結果データD140を記憶装置120から読み出して、検索結果データD140を要求元情報検索クライアント105に転送する(S421)。検索結果データD140には、検索されたコンテンツのリストが含まれている。
【0153】
一方、受信したリクエストがコンテンツ転送要求である場合、コンテンツ内容取得プログラムP143を実行し、情報検索クライアント105からの要求をリポジトリ管理サブシステム103に転送し、要求されたコンテンツをリポジトリ管理サブシステム103から取得する(S431)。そして、ユーザ行動履歴登録プログラムP144を実行し、コンテンツ転送要求の原因(例えば、閲覧)をリポジトリ管理サブシステム103のユーザ行動履歴D137に追加登録する(S432)。その後、要求されたコンテンツを要求元の情報検索クライアント105に転送する(S433)。
【0154】
一方、受信したリクエストがコンテンツ検索要求である場合、検索条件式解析プログラムP1411を実行し、検索条件式を解析する(S411)。具体的には、検索者のユーザIDを取得し、検索者が入力した文章を、形態素解析を用いて語彙に分割する。そして、語彙の出現頻度を算出し、検索条件式をベクトル化する。ベクトル化された検索条件式は、情報検索サーバ104のメモリ110のワークエリアに格納される。次に、検索クエリ行列生成プログラムP1412を実行し、検索クエリ行列を生成する(S412)。検索クエリ行列生成処理の詳細は、図15を用いて後述する。本発明の実施の形態では、ステップS411によって検索条件式を解析し、検索クエリ行列を生成して、検索を実行するので、検索条件式が自然文で入力されても、適切な検索をすることができる。
【0155】
その後、検索クエリ行列に基づいて、コンテンツ情報D130中の各コンテンツの類似度を算出し(S413)、コンテンツ情報D130中の各コンテンツを類似度の降順にソートする(S414)。類似コンテンツ抽出処理の詳細は、図17を用いて後述する。
【0156】
その後、ユーザー行動履歴登録プログラムP144を実行し、ユーザ行動履歴を追加登録する(S415)。そして、ソートした検索結果データ集合を要求元の情報検索クライアント105に返信する(S416)。
【0157】
一方、受信したリクエストがサーバー停止コマンドである場合、情報検索サーバ104の動作を終了する。
【0158】
図15A及び図15Bは、本発明の実施の形態の情報検索クエリ行列生成処理(S412)の詳細な手順を示すフローチャートである。
【0159】
まず、ステップS411において検索条件式を解析して得られた検索キーワード及びその重み値をワークエリアから読み込む(S41201)。
【0160】
そして、検索キーワード数に1を加算した値の次数の正方零行列を作成し、作成した行列を検索クエリ行列に初期設定する(S41202)。
【0161】
そして、作成した検索クエリ行列の行のラベルに、抽象ノード及び検索キーワードを設定し、検索クエリ行列の列のラベルにも、抽象ノード及び検索キーワードを設定する(S41203)。すなわち、検索クエリ行列の行のラベルと列のラベルとには、同じ抽象ノード及び検索キーワードが設定される。なお、抽象ノードは第1行目及び第1列目のラベルに設定される。
【0162】
その後、処理される検索キーワードを制御するパラメータnを1に初期設定する(S41204)。なお、nの最大値は、ステップS41201において取得した検索キーワードの数である。
【0163】
そして、n番目の検索キーワードをワークエリアから読み込む(S41205)。
【0164】
抽象ノード及びn番目の検索キーワードに対応する検索クエリ行列の値<1,n>に、ステップS40201において取得した重み値を設定する。同様に、n番目の検索キーワード及び抽象ノードに対応する検索クエリ行列の値<n,1>にも同じ重み値を設定する(S41206)。
【0165】
その後、n番目の検索キーワードに関連する語彙のリストをユーザ語彙モデルD136から抽出する(S41207)。具体的には、n番目の検索キーワードとユーザIDとに基づいてユーザ語彙モデルD136の語彙1を検索し、対応する語彙2の語彙集合を取得し、関連語彙集合に設定する。同様に、n番目の検索キーワードとユーザIDに基づいてユーザ語彙モデルD136の語彙2を検索し、対応する語彙1の語彙集合を取得し、関連語彙集合に設定する。取得した関連語彙はメモリ110のワークエリアに格納される。
【0166】
その後、処理される関連語彙を制御するパラメータkを1に初期設定する(S41208)。なお、パラメータkの最大値は、ステップS41207において取得した関連語彙集合の要素数である。
【0167】
その後、k番目の関連語彙をワークエリアから読み込む(S41209)。そして、検索クエリ行列の行及び列のラベルを参照して、読み込んだk番目の関連語彙が検索クエリ行列に存在するか否かを判定する(S41210)。その結果、k番目の関連語彙が検索クエリ行列のラベルに存在する場合、k番目の関連語彙を検索クエリ行列に追加する必要がないので、ステップS41213に進む。
【0168】
一方、k番目の関連語彙が検索クエリ行列のラベルに存在しない場合、検索クエリ行列を1行及び1列拡張し、拡張された行及び列の要素を0に設定し(S41211)、拡張された行及び列のラベルにk番目の関連語彙を設定する(S41212)。
【0169】
その後、k+1番目の関連語彙が存在するか否かを判定する(S41213)。その結果、k+1番目の関連語彙が存在する場合、パラメータkに1を加算し(S41215)、ステップS41209に戻り、次の関連語彙を処理する。
【0170】
一方、k+1番目の関連語彙が存在しない場合、この検索キーワードに関する関連語彙の処理は終了したので、n+1番目の検索キーワードが存在するか否かを判定する(S41214)。その結果、n+1番目の検索キーワードが存在する場合、パラメータnに1を加算し(S41216)、ステップS41205に戻り、次の検索キーワードを処理する。
【0171】
一方、n+1番目の検索キーワードが存在しない場合、検索に必要な全ての関連語彙が含まれる検索クエリ行列の生成が完了したので、ステップS41217に進む。なお、生成された検索クエリ行列は、メモリ110のワークエリアに格納されている。
【0172】
ステップS41217では、検索クエリ行列の行を示すパラメータiを2に初期設定した後(S41217)、検索クエリ行列のi行のラベル(語彙)をワークエリアから読み込む(S41218)。その後、検索クエリ行列の列を示すパラメータjを2に初期設定した後(S41219)、検索クエリ行列のj列のラベル(語彙)を読み込む(S41220)。
【0173】
その後、検索クエリ行列のi行のラベルと、j列のラベルとの関連度をユーザ語彙モデルD136から取得し(S41221)、取得した関連度を検索クエリ行列の<i,j>に設定する。ただし、ステップS41221において関連語を取得できなかった場合は何も実行せず、次のステップに移る(S41222)。
【0174】
その後、j+1番目のラベル(語彙)が存在するか否かを判定する(S41223)。その結果、j+1番目の語彙が存在する場合、jに1を加算し(S41226)、ステップS41120に戻り、次の列を処理する。一方、j+1番目の語彙が存在しない場合、i行の処理は終了したので、次に行に移るため、i+1番目のラベル(語彙)が存在するか否かを判定する(S41224)。
【0175】
その結果、i+1番目の語彙が存在する場合、iに1を加算し(S41227)、ステップS41218に戻り、次のi+1行を処理する。一方、i+1番目の語彙が存在しない場合、検索クエリ行列への語彙間の関連度の登録が終了したので、生成した検索クエリ行列をワークエリアに格納し(S41225)、情報検索クエリ行列生成処理(S412)を終了し、ステップS413に進む。
【0176】
図16は、本発明の実施の形態のステップS411及びS412において、検索条件式を解析し検索クエリ行列を生成する例を説明する図である。
【0177】
ステップS411では、検索者が文章「BTによる効果的なシステム構築手法について・・・」1701を入力した場合を考える。この文章1701を、形態素解析を用いて語彙に分割する。そして、語彙の文章1701中の出現頻度を算出し(1702)、検索条件式をベクトル化する。この生成されたベクトル1703は検索クエリ行列1704の1列目に含まれている。
【0178】
次に、ステップS412では、ベクトル1703が1行目及び1列目に設定された検索クエリ行列1704を生成する。検索クエリ行列1704の2行目及び2列目以後の要素は、ユーザ語彙モデルD136に記録された語彙間が共起する頻度が登録される。
【0179】
なお、本実施の形態では、検索者が、検索語として文章1701を入力した場合の検索方法について説明したが、検索者に検索語とそれに対する重みの入力を求め、形態素解析をすることなく、入力された検索語とそれに対する重みによって検索クエリを作成することもできる。なお、検索者が検索語に対する重みの入力を省略した場合、デフォルト値(例えば、1)を設定すればよい。
【0180】
また、検索したい内容に関連したコンテンツのコンテンツIDの入力を検索者に求めることによって、形態素解析をすることなく、入力されたコンテンツIDに基づいて検索クエリ行列を作成することもできる。具体的には、まず、コンテンツIDに基づいてコンテンツインデックスD131から語彙集合を取得し、その重みの上位n件を取得すれば、ユーザが検索したい内容を特徴付ける語彙集合を取得することができる。そして、得られた語彙集合に基づいて同様の処理を実行することによって検索クエリ行列を作成し、検索者が望むコンテンツを提示することができる。
【0181】
さらに、ユーザの嗜好に合うコンテンツを推薦する処理に適用することも可能である。この場合、ユーザIDに基づいてユーザインデックスD135から語彙集合を取得し、その重みの上位n件を取得すれば、そのユーザを特徴付ける語彙集合を取得することができる。そして、このユーザを特徴付ける語彙集合に基づいて、同様の処理を用いて検索クエリ行列を作成することによって、ユーザの嗜好に合わせたコンテンツを推薦することができる。
【0182】
図17は、本発明の実施の形態の類似コンテンツ抽出処理(S413)の詳細な手順を示すフローチャートである。
【0183】
まず、ステップS412で生成された検索クエリ行列をワークエリアから読み出す(S4131)。その後、コンテンツ抽出プログラムP1415を実行し、検索クエリ行列のラベルを用いて、コンテンツインデックスD131を検索し、検索クエリ行列のラベルの語彙が含まれているコンテンツのリストを抽出する(S4132)。
【0184】
その後、ループを制御するためのパラメータnを1に初期設定する(S4133)。そして、コンテンツ行列生成プログラムP1413を実行し、抽出されたn番目のコンテンツのコンテンツ行列を生成する(S4134)。このコンテンツ行列生成処理の詳細は、図18を用いて後述する。
【0185】
そして、類似度算出プログラムP1414を実行し、検索クエリ行列と生成したn番目のコンテンツ行列との類似度を算出する(S4135)。このコンテンツ行列生成処理の詳細は、図20を用いて後述する。
【0186】
その後、算出した類似度をコンテンツと関連付けて、ワークエリアに格納する(S4136)。
【0187】
その後、n+1番目のコンテンツが存在するか否かを判定する(S4137)。その結果、n+1番目のコンテンツが存在する場合、nに1を加算し(S4138)、ステップS4134に戻り、次のコンテンツを処理する。一方、n+1番目のコンテンツが存在しない場合、抽出した全てのコンテンツの処理が終了しているので、類似コンテンツ抽出処理を終了し、ステップS414に進む。
【0188】
図18は、本発明の実施の形態のコンテンツ行列生成手順(S4134)の詳細な手順を示すフローチャートである。
【0189】
まず、検索クエリ行列の次数と同じ次数の正方零行列を作成し、作成した行列をコンテンツ行列に初期設定する(S413401)。
【0190】
そして、検索クエリ行列の行及び列のラベルを、作成したコンテンツ行列の行のラベルに設定する(S413402)。すなわち、コンテンツ行列の行と列のラベルには、検索クエリ行列の行及び列のラベルと同じ抽象ノード及び検索キーワードが同じ順で設定される。なお、抽象ノードは第1行目及び第1列目のラベルに設定される。
【0191】
その後、コンテンツ行列のラベルに設定された語彙を示すパラメータnを2に初期設定した後(S413403)、コンテンツ行列のn行のラベル(語彙)をワークエリアから読み込む(S413404)。
【0192】
その後、コンテンツ行列のn行のラベル(語彙)の重みを、n行のラベルとコンテンツIDに基づいて、コンテンツインデックスD131から取得し、取得した重みをコンテンツ行列の<1,n>、<n,1>に設定する(S413405)。
【0193】
その後、n+1番目のラベル(語彙)が存在するか否かを判定する(S413406)。その結果、n+1番目の語彙が存在する場合、nに1を加算し(S413407)、ステップS413404に戻り、次の語彙を処理する。一方、n+1番目の語彙が存在しない場合、抽象ノードの処理は終了したので、次に検索キーワードの処理に移るため、検索クエリ行列の行を示すパラメータiを2に初期設定する(S413408)。
【0194】
その後、コンテンツ行列のi行のラベル(語彙)をワークエリアから読み込む(S413409)。その後、コンテンツ行列の列を示すパラメータjを2に初期設定した後(S413410)、コンテンツ行列のj列のラベル(語彙)を読み込む(S413411)。
【0195】
その後、コンテンツ行列のi行のラベルと、j列のラベルとの関連度をi行のラベル、j列のラベル及びコンテンツIDに基づいて、コンテンツ語彙モデルD132から取得し(S413412)、取得した関連度を検索クエリ行列の<i,j>に設定する。ただし、関連度が取得できなかった場合、何もせず、次のステップに進む(S413413)。
【0196】
その後、j+1番目のラベル(語彙)が存在するか否かを判定する(S413414)。その結果、j+1番目の語彙が存在する場合、jに1を加算し(S413417)、ステップS413411に戻り、次の列を処理する。一方、j+1番目の語彙が存在しない場合、i行の処理は終了したので、次に行に移るため、i+1番目のラベル(語彙)が存在するか否かを判定する(S413415)。
【0197】
その結果、i+1番目の語彙が存在する場合、iに1を加算し(S413418)、ステップS413409に戻り、次のi+1行を処理する。一方、i+1番目の語彙が存在しない場合、コンテンツ行列への語彙間の関連度の登録が終了したので、生成したコンテンツ行列をワークエリアに格納し(S413416)、コンテンツ行列抽出処理(S4134)を終了し、ステップS4145に進む。
【0198】
図19は、本発明の実施の形態のステップS413におけるコンテンツ行列の生成の例を説明する図である。
【0199】
まず、ステップS4132では、検索クエリ行列のラベルを用いて該当するコンテンツをフィルタリングする。このステップは、図17のステップS4132と同じである。具体的には、検索クエリ行列1704のラベルを用いて、コンテンツインデックスD131を検索し、検索クエリ行列のラベルの語彙が含まれているコンテンツのリスト2000を抽出する。
【0200】
次に、ステップS4134では、コンテンツ行列2001を生成する。ここで生成されるコンテンツ行列2001の行及び列のラベルには、検索クエリ行列の行及び列のラベル
が設定される。コンテンツ行列2001の1行目及び1列目には、コンテンツインデックスD131に記録されたコンテンツと語彙の重みが登録される。コンテンツ行列2001の2行目及び2列目以後の要素には、コンテンツ語彙モデルD132に記録された語彙間の関連度が登録される。
【0201】
その後、ステップS4135では、検索クエリ行列とコンテンツ行列との類似度を算出する(S4135)。
【0202】
図20は、本発明の実施の形態の類似度算出手順(S4135)の詳細な手順を示すフローチャートである。
【0203】
まず、ステップS412で生成した検索クエリ行列、及びステップS4134で生成したコンテンツ行列をワークエリアから読み出す(S413501)。
【0204】
その後、類似度を計算するためのパラメータステップSUMを0に初期設定し(S413502)、検索クエリ行列及びコンテンツ行列の列を制御するパラメータnを1に初期設定する(S413503)。
【0205】
そして、検索クエリ行列のn列目をベクトル化(QVn)し、ベクトルQVnをワークエリアに格納する(S413504)。さらに、コンテンツ行列のn列目をベクトル化(CVn)し、ベクトルCVnをワークエリアに格納する(S413505)。
【0206】
その後、ワークエリアに格納されているベクトルQVnとベクトルCVnとの類似度を算出する。この類似度の算出には、コサイン類似度などの手法を利用することができる(S413506)。なお、コサイン類似度は、ベクトルQVnとCVnとの間の内積を、ベクトルのノルム(ベクトルの幾何学的な長さ)で除したものを用いることができる。そして、算出したベクトル間の類似度をSUMに加算する(S413507)。
【0207】
その後、n+1列が存在するか否かを判定する(S413508)。その結果、n+1列目が存在する場合、nに1を加算し(S413510)、ステップS413504に戻り、次の列を処理する。一方、n+1列目が存在しない場合、SUMを検索クエリ行列の次元数で除算することによって、類似度を算出する(S413509)。その後、類似度算出手順(S4135)を終了し、ステップS4136に進み、算出された類似度をワークエリアに格納する。
【0208】
以上、コサイン類似度(ベクトル間の内積)を用いて、検索クエリ行列とコンテンツ行列との間の類似度を算出する方法について説明した。
【0209】
なお、本実施の形態では、検索クエリ行列の作成方法及びコンテンツ行列の作成方法について、各種記憶装置に格納されている分析結果をそのまま使用する方法について説明したが、他の方法を用いて検索クエリ行列及びコンテンツ行列を作成することもできる。
【0210】
検索クエリ行列又はコンテンツ行列を俯瞰すると、それぞれラベルをノードとし、行列内の要素値をエッジとするグラフ構造と考えることもできる。このとき、検索クエリ行列又はコンテンツ行列は、グラフ理論における隣接行列と呼ばれる行列形式である考えることができる。
【0211】
このグラフ構造を構成するノード間の類似度を算出することによって、検索クエリ又はコンテンツと語彙の関係、及び、それぞれの語彙間の関連性の精度を高めることができる。このため、算出される類似度の精度を高めることができる。
【0212】
グラフにおけるノード間の類似度を算出する方法は、グラフ理論の分野においてフォンノイマン行列を援用する方法や、ラプラシアン熱拡張行列を援用する方法など、いくつか公知なものが存在し、これらの方法を使用することができる。
【0213】
例えば、正則化ラプラシアンカーネルを用いて検索クエリ行列におけるノード間の類似度(RL)を算出することができる。具体的には下式を用いるとよい。
【0214】
下式によって得られる値(RL)は行列となり、この行列の要素値はノード間の類似度、すなわち、検索クエリと語彙の関係度、及び、それぞれの語彙間の関連性を示す。
【0215】
【数2】
【0216】
また、同様に、コンテンツ行列におけるノード間の類似度(RL)を算出することもできる。この場合、上式によって得られる値(RL)は行列である。この行列における要素値はノード間の類似度、すなわち、コンテンツと語彙の関係度、及び、それぞれの語彙間の関連性を示す。
【0217】
そして、正則化ラプラシアンカーネルを適用して再構築した検索クエリ行列とコンテンツ行列を用いて、前述したステップS4135の方法によって類似度を算出することができる。
【0218】
なお、正則化ラプラシアンカーネルを検索クエリ行列又はコンテンツ行列のいずれかに適用してもよい。正則化ラプラシアンカーネルは、検索クエリ行列又はコンテンツ行列における要素値(関連性)の精度を向上させることを目的として適用されるものであり、正則化ラプラシアンカーネルを適用しても検索クエリ行列又はコンテンツ行列におけるラベル及びその要素値の意味は変わらないからである。
【0219】
<情報検索クライアント105>
図21は、本発明の実施の形態の情報検索クライアント105の構成を示すブロック図である。
【0220】
情報検索クライアント105は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0221】
すなわち、情報検索クライアント105は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0222】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及び検索クライアント制御プログラムP15がメモリ110に格納される。
【0223】
検索クライアント制御プログラムP15は、情報検索サーバ104へ送信する検索要求にを生成するプログラムであり、サブプログラムとして、検索条件入力プログラムP151及び検索結果表示プログラムP152を含む。
【0224】
検索条件入力プログラムP151は、ユーザからの検索条件の入力を受け付け、検索リクエストを情報検索サーバ104に送信する。検索結果表示プログラムP152は、ユーザからの指示に従って検索結果を表示する。
【0225】
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10及び検索クライアント制御プログラムP15が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0226】
また、記憶装置120には、検索結果データD150が格納される。検索結果データD150は、情報検索サーバ104から転送された検索結果が一時的に格納されるキャッシュである。
【0227】
情報検索クライアント105は、検索クライアント制御プログラムP15を実行することによって、情報検索サーバ104に送信する検索要求を生成し、情報検索サーバ104によって行われた検索の結果を表示する。次に、この処理の詳細を説明する。
【0228】
図22A及び図22Bは、本発明の実施の形態の情報検索クライアント105によって実行される処理のフローチャートである。
【0229】
まず、ユーザ認証用画面を表示して、ユーザ認証情報の入力を促す(S501)。そして、ユーザから入力されたユーザ認証情報を取得し(S502)、取得したユーザ認証情報を情報検索サーバ104に送り、ユーザ認証を要求する(S503)。
【0230】
その後、情報検索サーバ104からユーザ認証の結果を受信すると、受信したユーザ認証の結果に基づいて、認証が成功したか否かを判定する(S504)。その結果、認証失敗である場合、ステップS501に戻り、認証失敗を表示し、さらにユーザ認証情報の入力を求める。一方、認証成功である場合、検索条件入力用画面を表示して、指示(コマンド)の入力を促す(S505)。
【0231】
その後、コマンドが入力されると(S506)、入力されたコマンドを解析する(S507)。
【0232】
解析したコマンドがクライアント停止コマンドである場合、情報検索処理を終了する。一方、解析したコマンドがコンテンツ検索コマンドである場合、検索条件入力プログラムP151を実行し、入力されたデータに基づいて検索リクエストを生成し(S508)、生成された検索リクエストを情報検索サーバ104に送信する(S509)。
【0233】
その後、情報検索サーバ104から検索結果を受信すると、受信した検索結果を記憶装置120の検索結果データD150に格納する(S510)。コンテンツ検索結果は、検索結果識別子と検索されたコンテンツ集合におけるコンテンツ識別子の全体又は部分集合が含まれ、図14のステップS416で情報検索サーバ104から送信される。
【0234】
その後、検索結果表示プログラムP152を起動し、検索結果表示/指示入力用画面を表示し、指示内容の入力を促す(S511)。そして、ユーザから入力された指示内容を取得し(S512)、ユーザからの指示内容を解析する(S513)。
【0235】
解析された指示内容が検出コンテンツ識別子リスト表示指示である場合、コンテンツ検索結果識別子問合せリクエストを作成し、作成したリクエストを情報検索サーバ104に送信する(S514)。その後、情報検索サーバ104からコンテンツ識別子の集合を受信すると、受信したコンテンツ識別子のリストを表示する(S515)。
【0236】
解析された指示内容がコンテンツ内容表示指示である場合、コンテンツ転送リクエストを作成し、作成したリクエストを情報検索サーバ104に送信する(S516)。その後、情報検索サーバ104からコンテンツデータを受信すると、受信したコンテンツデータを検索結果データD150に格納する(S517)。そして、受信したコンテンツデータを所定のフォームに変換して表示する(S518)。
【0237】
解析された指示内容が検索結果表示終了である場合、ステップS506に戻り、さらにコマンドを受信する。
【0238】
以上説明したように、本発明の実施の形態によると、コンテンツと検索クエリに含まれる検索キーワードとの関係性だけでなく、コンテンツに含まれる語彙間の関係性及び検索クエリに含まれる検索キーワード間の語彙の関係性を考慮する。このため、多義的な語彙であっても、検索者が日常使用している語彙と関連するコンテンツの類似度が高くなり、検索者が日常使用していない語彙と関連するコンテンツの類似度が低くなる。つまり、ユーザ語彙モデルを用いることによって、多様な意味を持つ言葉の揺れを補正し、ユーザの嗜好に近いコンテンツを上位に表示することができ、検索精度を向上することができる。
【符号の説明】
【0239】
101 コンテンツ分析サブシステム
102 ユーザ分析サブシステム
103 リポジトリ管理サブシステム
104 情報検索サーバ
105 情報検索クライアント
106 ネットワーク
【技術分野】
【0001】
本発明は、情報検索システムに関し、特に、検索精度を向上する技術に関する。
【背景技術】
【0002】
一般的な検索システム(検索エンジン)では、前処理と本処理とを行なうことによってコンテンツの検索を実現している。ここで、コンテンツとは、電子文書など電子的に表現されたコンピュータで処理可能な情報である。
【0003】
前処理では、検索インデックスを生成する。具体的には、検索対象のコンテンツを解析し、コンテンツに含まれる特徴的な文字列(特徴文字列)を取得し、取得した特徴文字列とコンテンツをマッピングし、検索インデックスとして格納領域に保存している。本処理では、検索クエリを解析し、検索処理に用いるキーワード群(検索ターム)を抽出し、抽出された検索タームを用いて、前処理にて生成した検索インデックスを走査し、該当するコンテンツの集合を取得する。その後、該当するコンテンツとの類似度を計算することによって、検索結果をソーティングする。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2007−507801号公報
【特許文献2】特開2005−165632号公報
【特許文献3】特開2000−200281号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、言葉は複数の意味を持つことが多い。特に、新語や略語は複数の意味を持つ傾向が顕著である。このため、あるキーワードで検索した場合に、検索結果の上位に予想しない意味の情報が多く並ぶ結果になることもある。このように、検索者の意図と異なる結果では検索者の目的は達成されない。
【0006】
これに対し、検索者は、検索キーワードを追加するなど、検索クエリを見直して検索を再度実行したり、下位の検索結果まで内容を閲覧するなどの作業が必要となる。このような再検索は、検索者に検索スキル及び作業時間を要求することになり、結果として作業効率や作業の質を下げる要因となっている。
【0007】
これは、コンテンツと特徴文字列(語彙)との関係性のみで検索を行なっているために生じる問題であり、この問題を現状の検索エンジンで回避することは困難である。
【0008】
このような問題を解決するために、例えば、特許文献1には、ユーザの個人情報をプロフィール情報として保持し、ユーザの嗜好や関心への適合度を考慮して検索結果リストへの出現順を調整する検索方法が記載されている。しかし、特許文献1に記載された方法では、ユーザから見た同音異義語の重みが異なる場合に対応できない。
【0009】
また、特許文献2には、コンテンツの特徴ベクトルとユーザの嗜好ベクトルとの類似度に従って、コンテンツを推薦する情報検索方法が提案されている。しかし、特許文献2に記載された方法では、ユーザから見た同音異義語の重みが異なる場合に対応できない。
【0010】
また、同義語辞書やオントロジを用いて、この問題を解決しようとする方法も存在する(例えば、特許文献3参照)。特許文献3に記載された方法は、検索タームを拡張することによる方法であり、検索漏れを低減することは可能である。しかし、検索者が意図しない文書(検索ノイズ)を排除することは困難であり、むしろ、検索ノイズが増大する要因にもなる。
【0011】
そこで、本発明は、言葉と言葉との関係性に着目することによって、的確な検索結果を表示する情報検索システムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の代表的な一例によると、語彙と語彙の関係性に着目し、コンテンツと語彙との関係性だけでなく、語彙と語彙の関係性を考慮した検索をする。
【0013】
具体的には、前処理として、検索対象のコンテンツを解析し、コンテンツに含まれる語彙を取得し、コンテンツと語彙の関連性をコンテンツインデックスとしてマッピングし、語彙と語彙との関連性を分析し、分析された関連性を示すコンテンツ語彙モデルを生成する。そして、検索者(ユーザ)の行動履歴に基づいて、ユーザに関連する語彙を抽出しユーザインデックスを生成する。そして、ユーザがアクセスしたファイルに含まれる語彙間の関連性も分析し、分析された関連性を示すユーザ語彙モデルを生成する。
【0014】
その後、本処理として、検索クエリから抽出した検索タームを用いて、ユーザ語彙モデルを走査し、検索タームに関連する語彙集合(以下、ユーザ拡張検索ターム)を取得し、検索ターム及び関連する語彙集合の語彙間の関連性を取得し、取得した関連度が登録された検索クエリ行列を生成する。さらに、ユーザ拡張タームを用いて、前処理にて生成したコンテンツインデックスを走査し、ユーザ拡張タームを含むコンテンツの集合を取得する。そして、各コンテンツのコンテンツ語彙モデルを走査し、コンテンツに含まれる語彙間の関連性を取得し、取得した関連度が登録されたコンテンツ行列を生成する。その後、検索クエリ行列とコンテンツ行列との間で類似度を計算し、類似度の計算結果に基づいて、検索結果をソーティングする。
【発明の効果】
【0015】
本発明の実施の形態によると、コンテンツと語彙との関係性だけでなく、語彙と語彙の関係性を考慮することによって、多義的な語彙であっても、検索者が日常使用している語彙と関連するコンテンツの類似度が高くなる。このため、検索者が嗜好するコンテンツを上位に表示することができ、ユーザの嗜好に近いコンテンツを上位に表示することができ、検索精度を向上することができる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施の形態の情報検索システムの全体の構成を示すブロック図である。
【図2】本発明の実施の形態のコンテンツ分析サブシステム101の構成を示すブロック図である。
【図3】本発明の実施の形態のコンテンツ分析サブシステム101によって実行される処理のフローチャートである。
【図4】本発明の実施の形態のコンテンツインデックスD131の例の説明図である。
【図5】本発明の実施の形態のコンテンツ語彙モデルD132の例の説明図である。
【図6】本発明の実施の形態のユーザ行動履歴D137の例の説明図である。
【図7】本発明の実施の形態のユーザ分析サブシステム102の構成を示すブロック図である。
【図8】本発明の実施の形態のユーザ分析サブシステム102によって実行される処理のフローチャートである。
【図9】本発明の実施の形態のユーザインデックスD135の例の説明図である。
【図10】本発明の実施の形態のユーザ語彙モデルD136の例の説明図である。
【図11】本発明の実施の形態のリポジトリ管理サブシステム103の構成を示すブロック図である。
【図12】本発明の実施の形態のリポジトリ管理サブシステム103によって実行される処理のフローチャートである。
【図13】本発明の実施の形態の情報検索サーバ104の構成を示すブロック図である。
【図14】本発明の実施の形態の情報検索サーバ104によって実行される処理のフローチャートである。
【図15A】本発明の実施の形態の検索クエリ行列生成処理(S412)の詳細な手順を示すフローチャートである。
【図15B】本発明の実施の形態の検索クエリ行列生成処理(S412)の詳細な手順を示すフローチャートである。
【図16】本発明の実施の形態のステップS412における検索クエリ行列の生成の例の説明図である。
【図17】本発明の実施の形態の類似コンテンツ抽出処理(S413)の詳細な手順を示すフローチャートである。
【図18】本発明の実施の形態のコンテンツ行列生成手順(S4134)の詳細な手順を示すフローチャートである。
【図19】本発明の実施の形態のステップS413におけるコンテンツ行列の生成の例の説明図である。
【図20】本発明の実施の形態の類似度算出手順(S4135)の詳細な手順を示すフローチャートである。
【図21】本発明の実施の形態の情報検索クライアント105の構成を示すブロック図である。
【図22A】本発明の実施の形態の情報検索クライアント105によって実行される処理のフローチャートである。
【図22B】本発明の実施の形態の情報検索クライアント105によって実行される処理のフローチャートである。
【発明を実施するための形態】
【0017】
<システムの全体の構成>
図1は、本発明の実施の形態の情報検索システムの全体の構成を示すブロック図である。
【0018】
本発明の実施の形態の情報検索システムは、コンテンツ分析サブシステム101、ユーザ分析サブシステム102、リポジトリ管理サブシステム103及び情報検索サーバ104を備える。これらの各装置はネットワーク(LAN又はWAN)106によって接続されている。本情報検索システムには、ネットワーク106を介して、情報検索クライアント105が接続される。
【0019】
コンテンツ分析サブシステム101は、検索対象のコンテンツの内容を、検索の実行前にあらかじめ分析する計算機であり、その詳細な構成は図2を用いて後述する。すなわち、コンテンツ分析サブシステム101は、コンテンツ内の語彙の関係を分析・抽出する。この語彙の関係は、情報検索サーバ104における処理に必要であり、リポジトリ管理サブシステム103に保存される。
【0020】
ユーザ分析サブシステム102は、検索を行うユーザのプロファイル情報を、検索の実行前にあらかじめ分析する計算機であり、その詳細な構成は図7を用いて後述する。すなわち、ユーザ分析サブシステム102は、ユーザ固有の情報(嗜好、興味範囲など)を語彙の関係として洗い出すことによって、ユーザのプロファイル情報を分析する。この分析結果は、情報検索サーバ104における処理に必要であり、リポジトリ管理サブシステム103に保存される。
【0021】
リポジトリ管理サブシステム103は、コンテンツ分析サブシステム101およびユーザ分析サブシステム102で分析された情報を格納するデータベースシステムであり、その詳細な構成は図11を用いて後述する。すなわち、リポジトリ管理サブシステム103は、コンテンツ分析サブシステム101及びユーザ分析サブシステム102によって分析された情報を、情報検索サーバ104からの要求に応じて提示する。
【0022】
情報検索サーバ104は、コンテンツを探索する計算機であり、その詳細な構成は図13を用いて後述する。すなわち、情報検索サーバ104は、情報検索クライアント105からの要求に応じて、リポジトリ管理サブシステム103から検索対象を抽出し、抽出された分析データから該検索ユーザの分析結果と類似するコンテンツを探索する。この探索結果は情報検索クライアント105に提示される。
【0023】
情報検索クライアント105は、検索を行うユーザが操作する計算機であり、その詳細な構成は図21を用いて後述する。すなわち、情報検索クライアント105は、ユーザからの検索要求を受け付け、情報検索サーバ104に検索を要求し、情報検索サーバ104から検索結果を受信し、検索結果を出力装置を介してユーザに提示する。
【0024】
なお、図1には、1台の検索クライアントのみを図示したが、複数台(2台以上)の検索クライアントを備えてもよい。
【0025】
ネットワーク106は、その一部又は全部がLAN又はWANで構成されるネットワークであり、コンテンツ分析サブシステム101、ユーザ分析サブシステム102、リポジトリ管理サブシステム103、情報検索サーバ104及び情報検索クライアント105を接続する。
【0026】
なお、コンテンツ分析サブシステム101及びユーザ分析サブシステム102から、ネットワーク106を経由して、リポジトリ管理サブシステム103に分析結果を転送するものとしたが、可搬型記憶媒体(例えば、光ディスク、不揮発性メモリなど)を使用して、分析結果を転送してもよい。
【0027】
また、コンテンツ分析サブシステム101、ユーザ分析サブシステム102、リポジトリ管理サブシステム103及び情報検索サーバ104のうち2以上のシステムを1台の物理的な計算機上に実装することもできる。この場合、各システム間では内部バスを経由してデータを転送することができる。
【0028】
また、情報検索クライアント105と、他のサブシステム(例えば、情報検索サーバ104など)を、1台の物理計算機に実装することもできる。
【0029】
<コンテンツ分析サブシステム101>
図2は、本発明の実施の形態のコンテンツ分析サブシステム101の構成を示すブロック図である。
【0030】
コンテンツ分析サブシステム101は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される一般的な構成の計算機である。
【0031】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及びコンテンツ分析プログラムP11がメモリ110に格納される。また、メモリ110には、CPU130によるプログラムの実行時に、データを一時的に格納するワークエリアが設けられる。
【0032】
システム制御プログラムP10は、いわゆるオペレーティングシステムであり、コンテンツ分析サブシステム101の全体を制御する。
【0033】
コンテンツ分析プログラムP11は、検索対象のコンテンツの内容を分析するプログラムである。
【0034】
記憶装置120は、電源遮断時にも記憶内容を保持可能な不揮発性の記憶素子であり、例えば、磁気ディスクドライブ(HDD)や、フラッシュメモリ(SSD)によって構成される。記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、前述したシステム制御プログラムP10及びコンテンツ分析プログラムP11が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0035】
CPU130は、メモリ110に格納されたプログラムを実行する。
【0036】
出力装置140は、入力装置150及びインターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0037】
インターフェース160は、所定のプロトコルに従ってネットワーク106に接続された装置との間でデータを送受信するネットワークインターフェース(NIC)である。
【0038】
出力装置140は、処理の結果を画面に表示するディスプレイや、紙に出力するプリンタなどである。
【0039】
入力装置150は、ユーザがコンテンツ分析サブシステム101に指示を与えるためのキーボード、マウスなどである。
【0040】
コンテンツ分析サブシステム101は、コンテンツ分析プログラムP11を実行することによって得られたコンテンツの分析結果を、ネットワーク106を介して、リポジトリ管理サブシステム103に転送する。次に、この処理の詳細を説明する。
【0041】
図3は、本発明の実施の形態のコンテンツ分析サブシステム101によって実行される処理のフローチャートである。
【0042】
まず、コンテンツ分析サブシステム101は、分析対象となるコンテンツの指定を受けると、分析対象となる全てのコンテンツのリストを生成し(S101)、生成されたリストに含まれるコンテンツのインデックスD131(図11参照)をリポジトリ管理サブシステム103からを取得する(S102)。ステップS102において取得されるコンテンツインデックスには、コンテンツの今までの分析結果が含まれており、その構成は図4を用いて後述する。
【0043】
コンテンツ分析サブシステム101によって分析されるコンテンツは、リポジトリ管理サブシステム103の記憶装置120に格納されているコンテンツ情報D130である。各コンテンツ情報は、情報コンテンツ内に含まれるテキストデータ及び前記情報コンテンツに付加されるテキストデータである。この場合、各コンテンツ情報(各テキストデータ)は、複数の語によって構成される。
【0044】
また、コンテンツ情報は、情報コンテンツ内に含まれるテキストデータ及び前記情報コンテンツに付加されるテキストデータのうち複数のテキストデータを含む集合体でもよい。この場合、各テキストデータは一つ以上の語によって構成され、各テキストデータが集合体を構成することによって、各コンテンツ情報が複数の語によって構成される。
【0045】
その後、ループを制御するパラメータnを1に初期設定する(S103)。
【0046】
そして、n番目のコンテンツをリポジトリ管理サブシステム103のコンテンツ情報D130から読み出し(S104)、読み出したコンテンツにコンテンツ識別子が付与されていない場合、新たにコンテンツ識別子を割り当る(S105)。割り当てられたコンテンツ識別子は、ステップS112において、リポジトリ管理サブシステム103のコンテンツ情報D130(図11参照)に格納される。
【0047】
その後、読み出したコンテンツにテキスト情報が含まれるか否かを判定する(S106)。その結果、読み出されたコンテンツにテキスト情報が含まれない場合、コンテンツを解析する必要がないので、ステップS109に進む。
【0048】
一方、読み出されたコンテンツにテキスト情報が含まれる場合、形態素解析によって、テキスト情報中に登場する語彙を抽出し、抽出された語彙の出現頻度に基づいてコンテンツインデックスを更新する(S107)。更新されたコンテンツインデックスは、ステップS112において、リポジトリ管理サブシステム103のコンテンツインデックスD131(図11参照)に格納される。本明細書において、「語彙」とは、文章を構成する一つ一つの単語又は複合語となる文字列であり、後述する形態素解析によって分解される単位である。
【0049】
次に、ステップS107において抽出された語彙の前後の所定の範囲内で登場する語彙を共起語彙として、共起語彙の組み合わせの出現頻度に基づいて、コンテンツ語彙モデルを更新する(S108)。更新されたコンテンツ語彙モデルは、ステップS112において、リポジトリ管理サブシステム103のコンテンツ語彙モデルD132(図11参照)に格納される。
【0050】
ここで、コンテンツ語彙モデルを取得する方法について説明する。
【0051】
例えば、下記の文章を考える。
「私の上司は笠松さんです。笠松さんは部長をしています。」
この文章は形態素解析によって下記のように単語又は複合語単位の文字列(語彙)に分解される。
【0052】
「私(私)/の(の)/上司(上司)/は(は)/笠松(笠松)/さん(さん)/です(です)/。(。)/笠松(笠松)/さん(さん)/は(は)/部長(部長)/を(を)/し(する)/て(て)/い(いる)/ます(ます)/。(。)」
【0053】
なお、カッコ内の文字列は語彙の基本活用形を示す。
【0054】
その後、分解された文字列(語彙)に対し、共起情報取得処理を実行する。具体的には、語彙のテキスト内出現位置情報に基づき、ある語彙において関連性があると考えられる別の語彙を共起語彙とし、その共起語彙及びその度数を取得する。例えば、ある語彙において所定の範囲内(直前、直後から数語離れた位置)に現れる別の語彙が、統計的に有意に多く現れているのであれば、その二つの語彙間には強い関連性があると考えられる。このことから、ある語彙の前後n個(ただし、n>0)までの語彙を共起語彙として収集し、収集された語彙の共起する頻度を統計処理することによって、共起する頻度が高い語彙、つまり、関連性の高い語彙を取得することができる。ただし、共起語彙を取得する際には、語彙の基本活用形によって収集・分析を行なう。これは、動詞や形容詞のような活用する語彙を活用した状態のまま処理すると、同じ意味を持つ語彙を別の語彙と判断されることを防ぐためである。また、句読点などの記号が含まれていた場合は、それらは共起語彙として収集しない。
【0055】
なお、ここでは、n=4と設定した場合を考える。
【0056】
そうすると、第1文の「笠松」との共起する語彙は、処理の対象となっている語彙の前4個までの「私」、「の」、「上司」、「は」と、後4個までの「さん」、「です」となる。また、第2文の「笠松」との共起する語彙は、処理の対象となっている語彙の前4個までの「さん」、「です」、と、「さん」、「は」、「部長」、「を」となる。
【0057】
そして、語彙のペアが共起している頻度を計算し、それを関連度とする。なお、語彙間の関連度を算出する方法として、語彙間の共起回数を計算して設定する方法の他に、統計学におけるt検定手法を利用することもできる。これにより、共起語彙の頻度が有意に大きいかを推定することが可能になる。具体的には下式を用いるとよい。
【0058】
【数1】
【0059】
また、語彙間の関連度を算出する方法として、語彙の出現位置情報に基づく算出方法について説明したが、文章の構造(係り受け)に基づいて関連度を算出することもできる。この場合、構文解析器を用いて係り受け構造を解析し、解析された係り受け関係の頻度情報を関連度とすることができる。
【0060】
なお、前述した他にも、特開2003−167894号公報に開示されている方法を用いて、関連する語彙を取得することもできる。ただし、この場合は事前にコンテンツを適切なカテゴリに分類する手順が必要になる。
【0061】
さらに、これらの方式を組み合わせて関連度を算出することもできる。本実施の形態では、語彙の出現位置の情報に基づいて語彙間の共起回数を計算して、関連度を設定する方法を用いて説明する。
【0062】
次に、コンテンツの関係者をユーザ行動履歴に登録することによって、ユーザ行動履歴を更新する(S109)。例えば、コンテンツの作成者や、更新者の情報をコンテンツの属性情報(例えば、ファイルのプロパティや、ファイルのメタデータ)から取得し、取得したユーザのユーザID、行動種別及びコンテンツIDを、新規のエントリ(頻度=1)としてユーザ行動履歴D137に登録する。なお、ユーザID、行動種別及びコンテンツIDが同一のエントリが既に登録されている場合、頻度に1を加算する。更新されたユーザ行動履歴は、ステップS112において、リポジトリ管理サブシステム103のユーザ行動履歴D137(図11参照)に格納される。
【0063】
その後、パラメータnとステップS101で生成したリストの要素数とを比較して、次の分析対象のコンテンツが存在するか否かを判定する(S110)。
【0064】
その結果、次(n+1番目)のコンテンツが存在する場合、パラメータnに1を加算し(S111)、ステップS104に戻り、次のコンテンツを分析する。
【0065】
一方、次(n+1番目)のコンテンツが存在しない場合、ステップS101で生成したリストの中の全てのコンテンツの分析が終了しているので、更新されたコンテンツインデックス、コンテンツ語彙モデル、ユーザ行動履歴をリポジトリ管理サブシステム103に転送する(S112)。
【0066】
リポジトリ管理サブシステム103は、これらのデータをコンテンツ分析サブシステム101から受信すると、受信したコンテンツ識別子をコンテンツ情報D130に格納し、コンテンツインデックスをコンテンツインデックスD131に格納し、コンテンツ語彙モデルをコンテンツ語彙モデルD132に格納し、ユーザ行動履歴をユーザ行動履歴D137に格納する。
【0067】
図4は、本発明の実施の形態のコンテンツインデックスの例を説明する図である。
【0068】
コンテンツ分析サブシステム101がステップS107において更新するコンテンツインデックスは、リポジトリ管理サブシステム103の記憶装置120にコンテンツインデックスD131として格納されており、語彙、コンテンツID及び重みを含む。
【0069】
語彙は、コンテンツにテキスト情報として含まれる単語又は複合語単位の文字列である。コンテンツIDは、コンテンツを一意に識別するための識別子であり、当該語彙が含まれるコンテンツを示す。重みは、当該語彙がこのコンテンツに出現する度数を示す。
【0070】
なお、重みは、当該語彙がこのコンテンツに出現する回数を用いて設定する方法の他、当該語彙がこのコンテンツに出現する回数をコンテンツ内で出現する語彙総数で除することによって正規化した指標を用いる方法や、このコンテンツが含まれるコンテンツ集合における当該語彙の出現確率を用いる方法や、文中の役割(主語、述語、目的語)などに応じて決定する方法や、これらの方式を組み合わせて重みを設定する方法など様々な公知の方法を用いることができる。本実施の形態では、当該語彙がこのコンテンツに出現する方法を用いて説明する。
【0071】
図5は、本発明の実施の形態のコンテンツ語彙モデルの例を説明する図である。
【0072】
コンテンツ分析サブシステム101がステップS108において生成するコンテンツ語彙モデルは、コンテンツに含まれる語彙の共起情報であり、リポジトリ管理サブシステム103の記憶装置120にコンテンツ語彙モデルD132として格納されており、語彙1、語彙2、コンテンツID及び関連度を含む。
【0073】
語彙1及び語彙2は、コンテンツ中の所定の範囲内で共起する語彙の組である。所定の範囲内で共起する語彙とは、前述したように、例えば、ある語彙の前後4個以内に存在する語彙を共起する語彙と定めることができる。
【0074】
コンテンツIDは、語彙1及び語彙2が共起しているコンテンツの識別子である。関連度は、語彙1及び語彙2の組が共起する度数であり、例えば、当該コンテンツ内で語彙1及び語彙2の組が共起した回数を用いることができる。すなわち、共起する回数が多い語彙の組は、その語彙の関連性が高いといえる。
【0075】
図6は、本発明の実施の形態のユーザ行動履歴の例を説明する図である。
【0076】
コンテンツ分析サブシステム101がステップS108において生成するユーザ行動履歴は、リポジトリ管理サブシステム103の記憶装置120にユーザ行動履歴D137として格納されており、ユーザID、行動種別、コンテンツID、キーワード及び頻度を含む。
【0077】
ユーザIDは、本情報検索システムを使用するユーザを一意に識別する識別子であり、図示した例では名前が用いられている。
【0078】
行動種別は、ユーザがコンテンツにアクセスした行動の種別を一意に識別する識別子である。なお、図6に示すユーザ行動履歴には、コンテンツの「作成」、「更新」の他、「閲覧」、「検索」が記録されているが、一部の種別のアクセス(例えば、「作成」、「更新」のみ)が記録されてもよい。また、その他の行動種別(例えば、「メタタグ付与」など)を設定し、該当する行動を記録してもよい。
【0079】
コンテンツIDは、ユーザがアクセスしたコンテンツを一意に識別する識別子である。キーワードは、ユーザがコンテンツに対して行動した際に付随するキーワード(例えば、検索キーワード、メタタグなど)である。頻度は、そのユーザが、その行動によって、そのコンテンツにアクセスした回数である。
【0080】
例えば、図6に示すユーザ行動履歴では、ユーザ「高取」が「作成」したコンテンツ「CONT−1」を、ユーザ「高取」が「2」回「更新」し、ユーザ「野崎」が「3」回閲覧し、ユーザ「野崎」が「1」回検索していることが分かる。
【0081】
なお、行動種別が「作成」又は「更新」など、コンテンツ作成に付随する行動である場合、コンテンツ分析サブシステム101がユーザ行動履歴を操作する。また、行動種別が「閲覧」又は「検索」など、コンテンツ作成に直接的には付随しない行動である場合、情報検索サーバ104がユーザ行動履歴を操作する。
【0082】
なお、本実施の形態では、コンテンツインデックスD131及びコンテンツ語彙モデルD132の構築方法として、対象となるコンテンツ内に存在するテキスト情報を使用する方法について説明したが、コンテンツ内のテキスト情報だけでなく、コンテンツに付随するテキスト情報(コンテンツの属性、メタタグなど)を利用して、コンテンツインデックスD131及びコンテンツ語彙モデルD132を構築することもできる。例えば、コンテンツの属性やメタタグに基づいて、ステップS107を実行することによって、コンテンツインデックスを構築することができる。
【0083】
また、同様に、例えば、同じコンテンツに付随するメタタグ同士は関連性があるものと判定して、ステップS108を実行することによって、コンテンツ語彙モデルを構築することもできる。
【0084】
これらの情報は、リポジトリ管理サブシステム103のコンテンツ語彙モデルD132に格納されているため、必要な情報をここから適宜抽出し、該当処理を実行すればよい。
【0085】
<ユーザ分析サブシステム102>
図7は、本発明の実施の形態のユーザ分析サブシステム102の構成を示すブロック図である。
【0086】
ユーザ分析サブシステム102は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0087】
すなわち、ユーザ分析サブシステム102は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0088】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及びユーザ分析プログラムP12がメモリ110に格納される。ユーザ分析プログラムP12は、ユーザがアクセスしたコンテンツの内容に基づいてユーザによるコンテンツの嗜好を分析するプログラムである。
【0089】
記憶装置120に格納される各種プログラムD100には、システム制御プログラムP10及びユーザ分析プログラムP12が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0090】
ユーザ分析サブシステム102は、ユーザ分析プログラムP12を実行することによって得られたユーザの分析結果を、ネットワーク106を介して、リポジトリ管理サブシステム103に転送する。次に、この処理の詳細を説明する。
【0091】
図8は、本発明の実施の形態のユーザ分析サブシステム102によって実行される処理のフローチャートである。
【0092】
図8に示す処理は、定期的に全データを分析し、分析結果は上書き更新される。
【0093】
まず、ユーザ分析サブシステム102は、分析対象となるユーザを取得し、分析対象となる全てのユーザのリストを生成する(S201)。そして、生成されたリストに含まれるユーザのインデックスD135(図11参照)をリポジトリ管理サブシステム103からを取得する(S202)。ステップS202において取得されるユーザインデックスファイルには、ユーザの今までの分析結果が含まれており、その構成は図9を用いて後述する。
【0094】
さらに、ユーザ行動履歴D137(図11参照)をリポジトリ管理サブシステム103からを取得する(S203)。
【0095】
その後、ループを制御するパラメータnを1に初期設定する(S204)。
【0096】
そして、n番目のユーザ情報をリポジトリ管理サブシステム103のユーザ情報D134から読み出す(S205)。そして、該当するユーザ情報が存在するか否か、すなわち、ステップS201で生成されたリストに含まれるユーザの情報がリポジトリ管理サブシステム103のユーザ情報D134から読み出すことができたか否かを判定する(S206)。
【0097】
その結果、ユーザ情報が存在する、すなわち、ユーザ情報がリポジトリ管理サブシステム103のユーザ情報D134から読み出すことができた場合、ステップS208に進む。一方、ユーザ情報が存在しない、すなわち、ユーザ情報がリポジトリ管理サブシステム103のユーザ情報D134から読み出すことができなかった場合、当該ユーザの情報はリポジトリ管理サブシステム103に登録されていないので、新たにユーザ情報を作成する。このため、ユーザ識別子をユーザに割り当て、このユーザのユーザ情報をリポジトリ管理サブシステム103のユーザ情報D134に格納する(S207)。
【0098】
次に、ユーザインデックスファイルを更新する(S208)。ユーザインデックスファイルは、図9に示すように、ユーザに関連した(当該ユーザが作成、閲覧等のアクセスをした)コンテンツに含まれる語彙の出現度数を示す。具体的には、ステップS203で取得したユーザ行動履歴D137を参照して、ユーザがアクセスしたコンテンツを特定する。そして、特定されたコンテンツを形態素解析によって抽出した語彙の出現度数を、全コンテンツにわたって集計して重みを求める。なお、既に該当コンテンツが分析済みであり、コンテンツインデックスに該当コンテンツの情報が保持されている場合、それを参照しながら重みを算出することができる。
【0099】
その後、ユーザ語彙モデル情報(図10参照)を更新する(S209)。ユーザ語彙モデルは、前述したコンテンツ語彙モデルの更新と同様の方法によって更新することができる。すなわち、ステップS208において抽出された語彙の前後の所定の範囲内で登場する語彙を共起語彙として、共起語彙の組み合わせの出現頻度を算出する。そして、算出されたコンテンツ毎の共起語彙の組み合わせの出現頻度を、ユーザ行動履歴D137を参照することによって、ユーザ毎にアクセスしたコンテンツを特定し、当該特定されたコンテンツの共起語彙の組み合わせの出現頻度をユーザ毎に集計する。これは、ユーザ行動履歴D137を参照することによって、ユーザ毎にアクセスしたコンテンツを特定し、当該特定されたコンテンツの共起語彙の組み合わせの出現頻度をユーザ毎に集計する。更新されたユーザ語彙モデルは、ステップS212において、リポジトリ管理サブシステム103のユーザ語彙モデルD136(図11参照)に格納される。なお、既に該当コンテンツが分析済みであり、コンテンツ語彙モデルに該当コンテンツの情報が保持されている場合、それを参照しながら関連度を算出することができる。
【0100】
その後、パラメータnとステップS201で生成したリストの要素数とを比較して、次の分析対象のユーザが存在するか否かを判定する(S210)。
【0101】
その結果、次(n+1番目)のユーザが存在する場合、パラメータnに1を加算し(S211)、ステップS205に戻り、次のユーザを分析する。
【0102】
一方、次(n+1番目)のユーザが存在しない場合、ステップS201で取得したリストの中の全てのユーザの分析が終了しているので、更新されたユーザインデックス、ユーザ語彙モデルをリポジトリ管理サブシステム103に転送する(S212)。
【0103】
リポジトリ管理サブシステム103は、これらのデータをユーザ分析サブシステム101から受信すると、受信したユーザインデックスをユーザインデックスD135に格納し、ユーザ語彙モデルをユーザ語彙モデルD136に格納する。
【0104】
図9は、本発明の実施の形態のユーザインデックスの例を説明する図である。
【0105】
ユーザ分析サブシステム102がステップS208において更新するユーザインデックスは、リポジトリ管理サブシステム103の記憶装置120にユーザインデックスD135として格納されており、語彙、ユーザID及び重みを含む。
【0106】
語彙は、コンテンツにテキスト情報として含まれる単語又は複合語単位の文字列である。ユーザIDは、ユーザを一意に識別するための識別子であり、当該語彙が含まれるコンテンツにアクセスしたユーザを示す。
【0107】
重みは、当該語彙がこのユーザがアクセスしたコンテンツに出現する度数を示す。なお、この重みを算出する際には、アクセスの種別によって重み付け係数を変えて出現回数を加算してもよい。例えば、「作成」には係数1を乗じ、「更新」には係数0.5を乗じることができる。
【0108】
図9に示すユーザインデックスによると、ユーザ「高取」がアクセスした全てのコンテンツには語彙「BT」が10回出現していることが分かる。
【0109】
図10は、本発明の実施の形態のユーザ語彙モデルの例を説明する図である。
【0110】
ユーザ分析サブシステム102がステップS209において生成するユーザ語彙モデルは、ユーザがアクセスしたコンテンツに含まれる語彙の共起情報であり、リポジトリ管理サブシステム103の記憶装置120にユーザ語彙モデルD136として格納されており、語彙1、語彙2、ユーザID及び関連度を含む。
【0111】
語彙1及び語彙2は、コンテンツ中の所定の範囲内で共起する語彙の組である。所定の範囲とは、前述したように、例えば、語彙1の前後4個以内に存在する語彙を共起する語彙と定めることができる。
【0112】
ユーザIDは、語彙1及び語彙2が共起しているコンテンツにアクセスしたユーザの識別子である。関連度は、語彙1及び語彙2の組が共起する度数であり、例えば、当該ユーザがアクセスしたコンテンツ内で語彙1及び語彙2の組が共起した回数を用いることができる。すなわち、関連度が大きい語彙の組は、その語彙の関連性が高く、そのユーザによる嗜好性が高い語彙の組であるといえる。
【0113】
図10に示すユーザ語彙モデルによると、ユーザ「高取」がアクセスした全てのコンテンツには、「BT」「SOA」の組が共起語彙として5回出現していることが分かる。
【0114】
なお、本実施の形態では、ユーザインデックスD135及びユーザ語彙モデルD136の構築方法として、当該ユーザが作成、閲覧等のアクセスを行なったコンテンツ情報に基づいて構築する方法について説明したが、アクセスしたコンテンツの情報だけでなく、検索やメタタグ付与などの別の行動の対象となったコンテンツの情報を利用して構築することもできる。
【0115】
例えば、検索を実行した際に入力される検索キーワードや、ユーザがコンテンツに付与したメタタグは、ユーザの嗜好を表していると考えられる。このため、これらの情報に基づいて、ステップS208を実行することによって、ユーザインデックスを構築することができる。
【0116】
また、同様に、例えば、ユーザが一回の検索時に入力された語彙同士、又は、同じユーザがアクセスしたコンテンツに付随するメタタグ同士は関連性があると判定して、ステップS209を実行しすることによって、ユーザ語彙モデルを構築することもできる。
【0117】
これらの情報は、リポジトリ管理サブシステム103のユーザ行動履歴D137に格納されているため、必要な情報をここから適宜抽出し、該当処理を実行すればよい。
【0118】
<リポジトリ管理サブシステム103>
図11は、本発明の実施の形態のリポジトリ管理サブシステム103の構成を示すブロック図である。
【0119】
リポジトリ管理サブシステム103は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0120】
すなわち、リポジトリ管理サブシステム103は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0121】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及びリポジトリ管理プログラムP13がメモリ110に格納される。リポジトリ管理プログラムP13は、リポジトリ管理サブシステム103に格納される情報を管理するプログラムである。
【0122】
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10及びリポジトリ管理プログラムP13が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0123】
また、記憶装置120には、コンテンツ情報D130、コンテンツインデックスD131、コンテンツ語彙モデルD132、コンテンツ付加情報D133、ユーザ情報D134、ユーザインデックスD135、ユーザ語彙モデルD136及びユーザ行動履歴D137が格納される。
【0124】
コンテンツ情報D130は、コンテンツの識別子と、コンテンツの実体を含む。コンテンツインデックスD131は、図4に示すように、コンテンツに出現する語彙の度数を示す。コンテンツ語彙モデルD132は、図5に示すように、コンテンツに出現する共起語彙の度数を示す。コンテンツ付加情報D133は、コンテンツに付加される情報であり、コンテンツの属性や、メタタグを含む。
【0125】
ユーザ情報D134は、ユーザの識別子、氏名、所属、権限レベル等のユーザに関する情報を含む。ユーザインデックスD135は、図9に示すように、ユーザがアクセスしたコンテンツに含まれる語彙の出現度数を示す。ユーザ語彙モデルD136は、図10に示すように、ユーザがアクセスしたコンテンツに含まれる共起語彙及びその度数を示す。ユーザ行動履歴D137は、図6に示すように、ユーザがコンテンツにアクセスした態様、頻度を示す。
【0126】
リポジトリ管理サブシステム103は、リポジトリ管理プログラムP13を実行することによって、ネットワーク106を介して転送された分析情報を記憶装置120に格納し、ネットワーク106を介して送信された情報問合せを受信し、受信した問合せ内容に応じた情報を磁気ディスク装置120から取得し、ネットワーク106を介して要求元の情報検索クライアント105に返信する。次に、この処理の詳細を説明する。
【0127】
図12は、本発明の実施の形態のリポジトリ管理サブシステム103によって実行される処理のフローチャートである。
【0128】
まず、リポジトリ管理サブシステム103は、情報検索クライアント105からリクエストを受信すると(S301)、受信したリクエストを解析する(S302)。
【0129】
受信したリクエストが情報参照要求である場合、要求された問合せ内容に応じた情報を記憶装置120から読み出して(S303)、読み出した情報を要求元の情報検索クライアント105に送信する(S304)。その後、ステップS301に戻り、他のリクエストの受信を待つ。
【0130】
一方、受信したリクエストがコンテンツ情報登録要求である場合、要求された登録内容に応じて、情報を記憶装置120に格納する。
【0131】
具体的には、コンテンツ情報の登録要求であれば、受信したコンテンツ情報をコンテンツ情報D130に新たに登録する(S305)。コンテンツインデックスの更新要求であれば、受信したコンテンツインデックスによってコンテンツインデックスD131を更新する(S306)。コンテンツ語彙モデルの更新要求であれば、受信したコンテンツ語彙モデルによってコンテンツ語彙モデルD132を更新する(S307)。コンテンツ付加情報の登録要求であれば、受信したコンテンツ付加情報をコンテンツ付加情報D133に追加登録する(S308)。ユーザ行動履歴の登録要求であれば、受信したユーザ行動履歴をユーザ行動履歴D137に追加登録する(S309)。ユーザ情報の登録要求であれば、受信した新規登録ユーザの情報をユーザ情報D134に追加するように登録する(S310)。ユーザインデックスの登録要求であれば、受信したユーザインデックスによってユーザインデックスD135を更新する(S311)。ユーザ語彙モデルの更新要求であれば、受信したユーザ語彙モデルによってユーザ語彙モデルD136を更新する(S312)。ステップS305からステップS312の処理の終了後、ステップS301に戻り、他のリクエストの受信を待つ。
【0132】
一方、受信したリクエストがサブシステム停止コマンドである場合、リポジトリ管理サブシステム103の動作を終了する。
【0133】
<情報検索サーバ104>
図13は、本発明の実施の形態の情報検索サーバ104の構成を示すブロック図である。
【0134】
情報検索サーバ104は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0135】
すなわち、情報検索サーバ104は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0136】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及び情報検索制御プログラムP14がメモリ110に格納される。
【0137】
情報検索制御プログラムP14は、情報検索クライアント105から送信された検索要求に基づいて、コンテンツを検索するプログラムであり、サブプログラムとして、コンテンツ検索プログラムP141、検索結果取得プログラムP142、コンテンツ取得プログラムP143、ユーザ行動履歴登録プログラムP144、及びユーザ認証プログラムP145を含む。
【0138】
コンテンツ検索プログラムP141は、コンテンツの検索を実行するためのプログラムで、検索条件式解析プログラムP1411、検索クエリ行列生成プログラムP1412、コンテンツ行列生成プログラムP1413、類似度算出プログラムP1414、及びコンテンツ抽出プログラムP1415を含む。
【0139】
検索条件式解析プログラムP1411は、ユーザによって入力された検索条件式を解析する(図14のステップS411)。検索クエリ行列生成プログラムP1412は、検索条件式の解析結果に従って、検索クエリ行列を生成する(図14のステップS412)。
【0140】
コンテンツ行列生成プログラムP1413は、検索クエリ行列と類似度が比較されるコンテンツ行列を生成する(図17のステップS4134)。類似度算出プログラムP1414は、検索クエリ行列とコンテンツ行列との類似度を算出する(図17のステップS4135))。
【0141】
コンテンツ抽出プログラムP1415は、コンテンツインデックスD131を検索し、検索クエリ行列のラベルの語彙が含まれているコンテンツのリストを抽出する(図17のステップS4132)。
【0142】
検索結果取得プログラムP142は、情報検索クライアント105からの問合せ内容に従って検索結果データD140を要求元に転送する。
【0143】
コンテンツ取得プログラムP143は、情報検索クライアント105からの要求に従って、リポジトリ管理サブシステム103からコンテンツを取得する。
【0144】
ユーザ行動履歴登録プログラムP144は、情報検索クライアント105からの要求に従ったコンテンツへのアクセス履歴をユーザ行動履歴D137に登録する。
【0145】
ユーザ認証プログラムP145は、情報検索クライアント105を操作するユーザを認証する。
【0146】
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10及び情報検索制御プログラムP14が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0147】
また、記憶装置120には、検索結果データD140が格納される。検索結果データD140は、コンテンツ検索プログラムP141によって検索された検索結果であり、検索結果取得プログラムP142によって、情報検索クライアント105に転送される。
【0148】
情報検索サーバ104は、情報検索制御プログラムP14を実行することによって、情報検索クライアント105から送信された検索要求に基づいて、コンテンツを検索し、検索結果を要求元の情報検索クライアント105に返信する。次に、この処理の詳細を説明する。
【0149】
図14は、本発明の実施の形態の情報検索サーバ104によって実行される処理のフローチャートである。
【0150】
まず、情報検索サーバ104は、情報検索クライアント105からリクエストを受信すると(S401)、受信したリクエストを解析する(S402)。
【0151】
受信したリクエストがユーザ認証要求である場合、情報検索クライアント105に入力されたユーザIDに基づいてユーザを認証し、認証結果を要求元の情報検索クライアント105に返信する(S403)。
【0152】
一方、受信したリクエストが検索結果問合せである場合、検索結果取得プログラムP142を実行し、情報検索クライアント105からの問合せ内容に従って検索結果データD140を記憶装置120から読み出して、検索結果データD140を要求元情報検索クライアント105に転送する(S421)。検索結果データD140には、検索されたコンテンツのリストが含まれている。
【0153】
一方、受信したリクエストがコンテンツ転送要求である場合、コンテンツ内容取得プログラムP143を実行し、情報検索クライアント105からの要求をリポジトリ管理サブシステム103に転送し、要求されたコンテンツをリポジトリ管理サブシステム103から取得する(S431)。そして、ユーザ行動履歴登録プログラムP144を実行し、コンテンツ転送要求の原因(例えば、閲覧)をリポジトリ管理サブシステム103のユーザ行動履歴D137に追加登録する(S432)。その後、要求されたコンテンツを要求元の情報検索クライアント105に転送する(S433)。
【0154】
一方、受信したリクエストがコンテンツ検索要求である場合、検索条件式解析プログラムP1411を実行し、検索条件式を解析する(S411)。具体的には、検索者のユーザIDを取得し、検索者が入力した文章を、形態素解析を用いて語彙に分割する。そして、語彙の出現頻度を算出し、検索条件式をベクトル化する。ベクトル化された検索条件式は、情報検索サーバ104のメモリ110のワークエリアに格納される。次に、検索クエリ行列生成プログラムP1412を実行し、検索クエリ行列を生成する(S412)。検索クエリ行列生成処理の詳細は、図15を用いて後述する。本発明の実施の形態では、ステップS411によって検索条件式を解析し、検索クエリ行列を生成して、検索を実行するので、検索条件式が自然文で入力されても、適切な検索をすることができる。
【0155】
その後、検索クエリ行列に基づいて、コンテンツ情報D130中の各コンテンツの類似度を算出し(S413)、コンテンツ情報D130中の各コンテンツを類似度の降順にソートする(S414)。類似コンテンツ抽出処理の詳細は、図17を用いて後述する。
【0156】
その後、ユーザー行動履歴登録プログラムP144を実行し、ユーザ行動履歴を追加登録する(S415)。そして、ソートした検索結果データ集合を要求元の情報検索クライアント105に返信する(S416)。
【0157】
一方、受信したリクエストがサーバー停止コマンドである場合、情報検索サーバ104の動作を終了する。
【0158】
図15A及び図15Bは、本発明の実施の形態の情報検索クエリ行列生成処理(S412)の詳細な手順を示すフローチャートである。
【0159】
まず、ステップS411において検索条件式を解析して得られた検索キーワード及びその重み値をワークエリアから読み込む(S41201)。
【0160】
そして、検索キーワード数に1を加算した値の次数の正方零行列を作成し、作成した行列を検索クエリ行列に初期設定する(S41202)。
【0161】
そして、作成した検索クエリ行列の行のラベルに、抽象ノード及び検索キーワードを設定し、検索クエリ行列の列のラベルにも、抽象ノード及び検索キーワードを設定する(S41203)。すなわち、検索クエリ行列の行のラベルと列のラベルとには、同じ抽象ノード及び検索キーワードが設定される。なお、抽象ノードは第1行目及び第1列目のラベルに設定される。
【0162】
その後、処理される検索キーワードを制御するパラメータnを1に初期設定する(S41204)。なお、nの最大値は、ステップS41201において取得した検索キーワードの数である。
【0163】
そして、n番目の検索キーワードをワークエリアから読み込む(S41205)。
【0164】
抽象ノード及びn番目の検索キーワードに対応する検索クエリ行列の値<1,n>に、ステップS40201において取得した重み値を設定する。同様に、n番目の検索キーワード及び抽象ノードに対応する検索クエリ行列の値<n,1>にも同じ重み値を設定する(S41206)。
【0165】
その後、n番目の検索キーワードに関連する語彙のリストをユーザ語彙モデルD136から抽出する(S41207)。具体的には、n番目の検索キーワードとユーザIDとに基づいてユーザ語彙モデルD136の語彙1を検索し、対応する語彙2の語彙集合を取得し、関連語彙集合に設定する。同様に、n番目の検索キーワードとユーザIDに基づいてユーザ語彙モデルD136の語彙2を検索し、対応する語彙1の語彙集合を取得し、関連語彙集合に設定する。取得した関連語彙はメモリ110のワークエリアに格納される。
【0166】
その後、処理される関連語彙を制御するパラメータkを1に初期設定する(S41208)。なお、パラメータkの最大値は、ステップS41207において取得した関連語彙集合の要素数である。
【0167】
その後、k番目の関連語彙をワークエリアから読み込む(S41209)。そして、検索クエリ行列の行及び列のラベルを参照して、読み込んだk番目の関連語彙が検索クエリ行列に存在するか否かを判定する(S41210)。その結果、k番目の関連語彙が検索クエリ行列のラベルに存在する場合、k番目の関連語彙を検索クエリ行列に追加する必要がないので、ステップS41213に進む。
【0168】
一方、k番目の関連語彙が検索クエリ行列のラベルに存在しない場合、検索クエリ行列を1行及び1列拡張し、拡張された行及び列の要素を0に設定し(S41211)、拡張された行及び列のラベルにk番目の関連語彙を設定する(S41212)。
【0169】
その後、k+1番目の関連語彙が存在するか否かを判定する(S41213)。その結果、k+1番目の関連語彙が存在する場合、パラメータkに1を加算し(S41215)、ステップS41209に戻り、次の関連語彙を処理する。
【0170】
一方、k+1番目の関連語彙が存在しない場合、この検索キーワードに関する関連語彙の処理は終了したので、n+1番目の検索キーワードが存在するか否かを判定する(S41214)。その結果、n+1番目の検索キーワードが存在する場合、パラメータnに1を加算し(S41216)、ステップS41205に戻り、次の検索キーワードを処理する。
【0171】
一方、n+1番目の検索キーワードが存在しない場合、検索に必要な全ての関連語彙が含まれる検索クエリ行列の生成が完了したので、ステップS41217に進む。なお、生成された検索クエリ行列は、メモリ110のワークエリアに格納されている。
【0172】
ステップS41217では、検索クエリ行列の行を示すパラメータiを2に初期設定した後(S41217)、検索クエリ行列のi行のラベル(語彙)をワークエリアから読み込む(S41218)。その後、検索クエリ行列の列を示すパラメータjを2に初期設定した後(S41219)、検索クエリ行列のj列のラベル(語彙)を読み込む(S41220)。
【0173】
その後、検索クエリ行列のi行のラベルと、j列のラベルとの関連度をユーザ語彙モデルD136から取得し(S41221)、取得した関連度を検索クエリ行列の<i,j>に設定する。ただし、ステップS41221において関連語を取得できなかった場合は何も実行せず、次のステップに移る(S41222)。
【0174】
その後、j+1番目のラベル(語彙)が存在するか否かを判定する(S41223)。その結果、j+1番目の語彙が存在する場合、jに1を加算し(S41226)、ステップS41120に戻り、次の列を処理する。一方、j+1番目の語彙が存在しない場合、i行の処理は終了したので、次に行に移るため、i+1番目のラベル(語彙)が存在するか否かを判定する(S41224)。
【0175】
その結果、i+1番目の語彙が存在する場合、iに1を加算し(S41227)、ステップS41218に戻り、次のi+1行を処理する。一方、i+1番目の語彙が存在しない場合、検索クエリ行列への語彙間の関連度の登録が終了したので、生成した検索クエリ行列をワークエリアに格納し(S41225)、情報検索クエリ行列生成処理(S412)を終了し、ステップS413に進む。
【0176】
図16は、本発明の実施の形態のステップS411及びS412において、検索条件式を解析し検索クエリ行列を生成する例を説明する図である。
【0177】
ステップS411では、検索者が文章「BTによる効果的なシステム構築手法について・・・」1701を入力した場合を考える。この文章1701を、形態素解析を用いて語彙に分割する。そして、語彙の文章1701中の出現頻度を算出し(1702)、検索条件式をベクトル化する。この生成されたベクトル1703は検索クエリ行列1704の1列目に含まれている。
【0178】
次に、ステップS412では、ベクトル1703が1行目及び1列目に設定された検索クエリ行列1704を生成する。検索クエリ行列1704の2行目及び2列目以後の要素は、ユーザ語彙モデルD136に記録された語彙間が共起する頻度が登録される。
【0179】
なお、本実施の形態では、検索者が、検索語として文章1701を入力した場合の検索方法について説明したが、検索者に検索語とそれに対する重みの入力を求め、形態素解析をすることなく、入力された検索語とそれに対する重みによって検索クエリを作成することもできる。なお、検索者が検索語に対する重みの入力を省略した場合、デフォルト値(例えば、1)を設定すればよい。
【0180】
また、検索したい内容に関連したコンテンツのコンテンツIDの入力を検索者に求めることによって、形態素解析をすることなく、入力されたコンテンツIDに基づいて検索クエリ行列を作成することもできる。具体的には、まず、コンテンツIDに基づいてコンテンツインデックスD131から語彙集合を取得し、その重みの上位n件を取得すれば、ユーザが検索したい内容を特徴付ける語彙集合を取得することができる。そして、得られた語彙集合に基づいて同様の処理を実行することによって検索クエリ行列を作成し、検索者が望むコンテンツを提示することができる。
【0181】
さらに、ユーザの嗜好に合うコンテンツを推薦する処理に適用することも可能である。この場合、ユーザIDに基づいてユーザインデックスD135から語彙集合を取得し、その重みの上位n件を取得すれば、そのユーザを特徴付ける語彙集合を取得することができる。そして、このユーザを特徴付ける語彙集合に基づいて、同様の処理を用いて検索クエリ行列を作成することによって、ユーザの嗜好に合わせたコンテンツを推薦することができる。
【0182】
図17は、本発明の実施の形態の類似コンテンツ抽出処理(S413)の詳細な手順を示すフローチャートである。
【0183】
まず、ステップS412で生成された検索クエリ行列をワークエリアから読み出す(S4131)。その後、コンテンツ抽出プログラムP1415を実行し、検索クエリ行列のラベルを用いて、コンテンツインデックスD131を検索し、検索クエリ行列のラベルの語彙が含まれているコンテンツのリストを抽出する(S4132)。
【0184】
その後、ループを制御するためのパラメータnを1に初期設定する(S4133)。そして、コンテンツ行列生成プログラムP1413を実行し、抽出されたn番目のコンテンツのコンテンツ行列を生成する(S4134)。このコンテンツ行列生成処理の詳細は、図18を用いて後述する。
【0185】
そして、類似度算出プログラムP1414を実行し、検索クエリ行列と生成したn番目のコンテンツ行列との類似度を算出する(S4135)。このコンテンツ行列生成処理の詳細は、図20を用いて後述する。
【0186】
その後、算出した類似度をコンテンツと関連付けて、ワークエリアに格納する(S4136)。
【0187】
その後、n+1番目のコンテンツが存在するか否かを判定する(S4137)。その結果、n+1番目のコンテンツが存在する場合、nに1を加算し(S4138)、ステップS4134に戻り、次のコンテンツを処理する。一方、n+1番目のコンテンツが存在しない場合、抽出した全てのコンテンツの処理が終了しているので、類似コンテンツ抽出処理を終了し、ステップS414に進む。
【0188】
図18は、本発明の実施の形態のコンテンツ行列生成手順(S4134)の詳細な手順を示すフローチャートである。
【0189】
まず、検索クエリ行列の次数と同じ次数の正方零行列を作成し、作成した行列をコンテンツ行列に初期設定する(S413401)。
【0190】
そして、検索クエリ行列の行及び列のラベルを、作成したコンテンツ行列の行のラベルに設定する(S413402)。すなわち、コンテンツ行列の行と列のラベルには、検索クエリ行列の行及び列のラベルと同じ抽象ノード及び検索キーワードが同じ順で設定される。なお、抽象ノードは第1行目及び第1列目のラベルに設定される。
【0191】
その後、コンテンツ行列のラベルに設定された語彙を示すパラメータnを2に初期設定した後(S413403)、コンテンツ行列のn行のラベル(語彙)をワークエリアから読み込む(S413404)。
【0192】
その後、コンテンツ行列のn行のラベル(語彙)の重みを、n行のラベルとコンテンツIDに基づいて、コンテンツインデックスD131から取得し、取得した重みをコンテンツ行列の<1,n>、<n,1>に設定する(S413405)。
【0193】
その後、n+1番目のラベル(語彙)が存在するか否かを判定する(S413406)。その結果、n+1番目の語彙が存在する場合、nに1を加算し(S413407)、ステップS413404に戻り、次の語彙を処理する。一方、n+1番目の語彙が存在しない場合、抽象ノードの処理は終了したので、次に検索キーワードの処理に移るため、検索クエリ行列の行を示すパラメータiを2に初期設定する(S413408)。
【0194】
その後、コンテンツ行列のi行のラベル(語彙)をワークエリアから読み込む(S413409)。その後、コンテンツ行列の列を示すパラメータjを2に初期設定した後(S413410)、コンテンツ行列のj列のラベル(語彙)を読み込む(S413411)。
【0195】
その後、コンテンツ行列のi行のラベルと、j列のラベルとの関連度をi行のラベル、j列のラベル及びコンテンツIDに基づいて、コンテンツ語彙モデルD132から取得し(S413412)、取得した関連度を検索クエリ行列の<i,j>に設定する。ただし、関連度が取得できなかった場合、何もせず、次のステップに進む(S413413)。
【0196】
その後、j+1番目のラベル(語彙)が存在するか否かを判定する(S413414)。その結果、j+1番目の語彙が存在する場合、jに1を加算し(S413417)、ステップS413411に戻り、次の列を処理する。一方、j+1番目の語彙が存在しない場合、i行の処理は終了したので、次に行に移るため、i+1番目のラベル(語彙)が存在するか否かを判定する(S413415)。
【0197】
その結果、i+1番目の語彙が存在する場合、iに1を加算し(S413418)、ステップS413409に戻り、次のi+1行を処理する。一方、i+1番目の語彙が存在しない場合、コンテンツ行列への語彙間の関連度の登録が終了したので、生成したコンテンツ行列をワークエリアに格納し(S413416)、コンテンツ行列抽出処理(S4134)を終了し、ステップS4145に進む。
【0198】
図19は、本発明の実施の形態のステップS413におけるコンテンツ行列の生成の例を説明する図である。
【0199】
まず、ステップS4132では、検索クエリ行列のラベルを用いて該当するコンテンツをフィルタリングする。このステップは、図17のステップS4132と同じである。具体的には、検索クエリ行列1704のラベルを用いて、コンテンツインデックスD131を検索し、検索クエリ行列のラベルの語彙が含まれているコンテンツのリスト2000を抽出する。
【0200】
次に、ステップS4134では、コンテンツ行列2001を生成する。ここで生成されるコンテンツ行列2001の行及び列のラベルには、検索クエリ行列の行及び列のラベル
が設定される。コンテンツ行列2001の1行目及び1列目には、コンテンツインデックスD131に記録されたコンテンツと語彙の重みが登録される。コンテンツ行列2001の2行目及び2列目以後の要素には、コンテンツ語彙モデルD132に記録された語彙間の関連度が登録される。
【0201】
その後、ステップS4135では、検索クエリ行列とコンテンツ行列との類似度を算出する(S4135)。
【0202】
図20は、本発明の実施の形態の類似度算出手順(S4135)の詳細な手順を示すフローチャートである。
【0203】
まず、ステップS412で生成した検索クエリ行列、及びステップS4134で生成したコンテンツ行列をワークエリアから読み出す(S413501)。
【0204】
その後、類似度を計算するためのパラメータステップSUMを0に初期設定し(S413502)、検索クエリ行列及びコンテンツ行列の列を制御するパラメータnを1に初期設定する(S413503)。
【0205】
そして、検索クエリ行列のn列目をベクトル化(QVn)し、ベクトルQVnをワークエリアに格納する(S413504)。さらに、コンテンツ行列のn列目をベクトル化(CVn)し、ベクトルCVnをワークエリアに格納する(S413505)。
【0206】
その後、ワークエリアに格納されているベクトルQVnとベクトルCVnとの類似度を算出する。この類似度の算出には、コサイン類似度などの手法を利用することができる(S413506)。なお、コサイン類似度は、ベクトルQVnとCVnとの間の内積を、ベクトルのノルム(ベクトルの幾何学的な長さ)で除したものを用いることができる。そして、算出したベクトル間の類似度をSUMに加算する(S413507)。
【0207】
その後、n+1列が存在するか否かを判定する(S413508)。その結果、n+1列目が存在する場合、nに1を加算し(S413510)、ステップS413504に戻り、次の列を処理する。一方、n+1列目が存在しない場合、SUMを検索クエリ行列の次元数で除算することによって、類似度を算出する(S413509)。その後、類似度算出手順(S4135)を終了し、ステップS4136に進み、算出された類似度をワークエリアに格納する。
【0208】
以上、コサイン類似度(ベクトル間の内積)を用いて、検索クエリ行列とコンテンツ行列との間の類似度を算出する方法について説明した。
【0209】
なお、本実施の形態では、検索クエリ行列の作成方法及びコンテンツ行列の作成方法について、各種記憶装置に格納されている分析結果をそのまま使用する方法について説明したが、他の方法を用いて検索クエリ行列及びコンテンツ行列を作成することもできる。
【0210】
検索クエリ行列又はコンテンツ行列を俯瞰すると、それぞれラベルをノードとし、行列内の要素値をエッジとするグラフ構造と考えることもできる。このとき、検索クエリ行列又はコンテンツ行列は、グラフ理論における隣接行列と呼ばれる行列形式である考えることができる。
【0211】
このグラフ構造を構成するノード間の類似度を算出することによって、検索クエリ又はコンテンツと語彙の関係、及び、それぞれの語彙間の関連性の精度を高めることができる。このため、算出される類似度の精度を高めることができる。
【0212】
グラフにおけるノード間の類似度を算出する方法は、グラフ理論の分野においてフォンノイマン行列を援用する方法や、ラプラシアン熱拡張行列を援用する方法など、いくつか公知なものが存在し、これらの方法を使用することができる。
【0213】
例えば、正則化ラプラシアンカーネルを用いて検索クエリ行列におけるノード間の類似度(RL)を算出することができる。具体的には下式を用いるとよい。
【0214】
下式によって得られる値(RL)は行列となり、この行列の要素値はノード間の類似度、すなわち、検索クエリと語彙の関係度、及び、それぞれの語彙間の関連性を示す。
【0215】
【数2】
【0216】
また、同様に、コンテンツ行列におけるノード間の類似度(RL)を算出することもできる。この場合、上式によって得られる値(RL)は行列である。この行列における要素値はノード間の類似度、すなわち、コンテンツと語彙の関係度、及び、それぞれの語彙間の関連性を示す。
【0217】
そして、正則化ラプラシアンカーネルを適用して再構築した検索クエリ行列とコンテンツ行列を用いて、前述したステップS4135の方法によって類似度を算出することができる。
【0218】
なお、正則化ラプラシアンカーネルを検索クエリ行列又はコンテンツ行列のいずれかに適用してもよい。正則化ラプラシアンカーネルは、検索クエリ行列又はコンテンツ行列における要素値(関連性)の精度を向上させることを目的として適用されるものであり、正則化ラプラシアンカーネルを適用しても検索クエリ行列又はコンテンツ行列におけるラベル及びその要素値の意味は変わらないからである。
【0219】
<情報検索クライアント105>
図21は、本発明の実施の形態の情報検索クライアント105の構成を示すブロック図である。
【0220】
情報検索クライアント105は、前述したコンテンツ分析サブシステム101(図2)と、格納されているプログラムが異なる以外は同じ構成を有する。このため、前述したコンテンツ分析サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
【0221】
すなわち、情報検索クライアント105は、メモリ110、記憶装置120、CPU130、出力装置140、入力装置150及び通信インターフェース160を備え、これらの各構成がバス170によって接続される計算機である。
【0222】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10及び検索クライアント制御プログラムP15がメモリ110に格納される。
【0223】
検索クライアント制御プログラムP15は、情報検索サーバ104へ送信する検索要求にを生成するプログラムであり、サブプログラムとして、検索条件入力プログラムP151及び検索結果表示プログラムP152を含む。
【0224】
検索条件入力プログラムP151は、ユーザからの検索条件の入力を受け付け、検索リクエストを情報検索サーバ104に送信する。検索結果表示プログラムP152は、ユーザからの指示に従って検索結果を表示する。
【0225】
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10及び検索クライアント制御プログラムP15が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0226】
また、記憶装置120には、検索結果データD150が格納される。検索結果データD150は、情報検索サーバ104から転送された検索結果が一時的に格納されるキャッシュである。
【0227】
情報検索クライアント105は、検索クライアント制御プログラムP15を実行することによって、情報検索サーバ104に送信する検索要求を生成し、情報検索サーバ104によって行われた検索の結果を表示する。次に、この処理の詳細を説明する。
【0228】
図22A及び図22Bは、本発明の実施の形態の情報検索クライアント105によって実行される処理のフローチャートである。
【0229】
まず、ユーザ認証用画面を表示して、ユーザ認証情報の入力を促す(S501)。そして、ユーザから入力されたユーザ認証情報を取得し(S502)、取得したユーザ認証情報を情報検索サーバ104に送り、ユーザ認証を要求する(S503)。
【0230】
その後、情報検索サーバ104からユーザ認証の結果を受信すると、受信したユーザ認証の結果に基づいて、認証が成功したか否かを判定する(S504)。その結果、認証失敗である場合、ステップS501に戻り、認証失敗を表示し、さらにユーザ認証情報の入力を求める。一方、認証成功である場合、検索条件入力用画面を表示して、指示(コマンド)の入力を促す(S505)。
【0231】
その後、コマンドが入力されると(S506)、入力されたコマンドを解析する(S507)。
【0232】
解析したコマンドがクライアント停止コマンドである場合、情報検索処理を終了する。一方、解析したコマンドがコンテンツ検索コマンドである場合、検索条件入力プログラムP151を実行し、入力されたデータに基づいて検索リクエストを生成し(S508)、生成された検索リクエストを情報検索サーバ104に送信する(S509)。
【0233】
その後、情報検索サーバ104から検索結果を受信すると、受信した検索結果を記憶装置120の検索結果データD150に格納する(S510)。コンテンツ検索結果は、検索結果識別子と検索されたコンテンツ集合におけるコンテンツ識別子の全体又は部分集合が含まれ、図14のステップS416で情報検索サーバ104から送信される。
【0234】
その後、検索結果表示プログラムP152を起動し、検索結果表示/指示入力用画面を表示し、指示内容の入力を促す(S511)。そして、ユーザから入力された指示内容を取得し(S512)、ユーザからの指示内容を解析する(S513)。
【0235】
解析された指示内容が検出コンテンツ識別子リスト表示指示である場合、コンテンツ検索結果識別子問合せリクエストを作成し、作成したリクエストを情報検索サーバ104に送信する(S514)。その後、情報検索サーバ104からコンテンツ識別子の集合を受信すると、受信したコンテンツ識別子のリストを表示する(S515)。
【0236】
解析された指示内容がコンテンツ内容表示指示である場合、コンテンツ転送リクエストを作成し、作成したリクエストを情報検索サーバ104に送信する(S516)。その後、情報検索サーバ104からコンテンツデータを受信すると、受信したコンテンツデータを検索結果データD150に格納する(S517)。そして、受信したコンテンツデータを所定のフォームに変換して表示する(S518)。
【0237】
解析された指示内容が検索結果表示終了である場合、ステップS506に戻り、さらにコマンドを受信する。
【0238】
以上説明したように、本発明の実施の形態によると、コンテンツと検索クエリに含まれる検索キーワードとの関係性だけでなく、コンテンツに含まれる語彙間の関係性及び検索クエリに含まれる検索キーワード間の語彙の関係性を考慮する。このため、多義的な語彙であっても、検索者が日常使用している語彙と関連するコンテンツの類似度が高くなり、検索者が日常使用していない語彙と関連するコンテンツの類似度が低くなる。つまり、ユーザ語彙モデルを用いることによって、多様な意味を持つ言葉の揺れを補正し、ユーザの嗜好に近いコンテンツを上位に表示することができ、検索精度を向上することができる。
【符号の説明】
【0239】
101 コンテンツ分析サブシステム
102 ユーザ分析サブシステム
103 リポジトリ管理サブシステム
104 情報検索サーバ
105 情報検索クライアント
106 ネットワーク
【特許請求の範囲】
【請求項1】
1台以上の計算機によって構成され、テキスト情報を検索する情報検索システムであって、
前記テキスト情報は、情報コンテンツ内に含まれるテキストデータ及び前記情報コンテンツに付加されるテキストデータの少なくとも一方を含む情報であり、
前記計算機は、
ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得する手段と、
蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得する手段と、
前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択する手段とを備えることを特徴とする情報検索システム。
【請求項2】
前記情報検索システムは、前記ユーザが関連したテキスト情報における語の関連性が記録されたユーザ語彙モデルを管理し、
前記第1の関連性を取得する手段は、
前記入力された検索条件に含まれる語を形態素解析によって抽出し、
前記ユーザ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義された検索クエリ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項1に記載の情報検索システム。
【請求項3】
前記計算機は、前記ユーザ語彙モデルを生成するユーザ語彙モデル生成手段を備え、
前記ユーザ語彙モデル生成手段は、
ユーザがアクセスしたテキスト情報、及びユーザがアクセスしたデータに関連するテキスト情報を特定し、
前記特定されたテキスト情報に含まれる語を形態素解析によって抽出し、
前記抽出された語のうち、所定の共起範囲内に存在する語を収集し、
前記収集された語の登場回数を、前記アクセスの種別によって重み付けした後に集計することによって、語の関連性を求めることを特徴とする請求項2に記載の情報検索システム。
【請求項4】
前記情報検索システムは、前記蓄積されているテキスト情報に含まれる語の関連性が記録されたコンテンツ語彙モデルを管理し、
前記第2の関連性を取得する手段は、
前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、
前記コンテンツ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義されたコンテンツ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項1から3のいずれか一つに記載の情報検索システム。
【請求項5】
前記計算機は、前記コンテンツ語彙モデルを生成するコンテンツ語彙モデル生成手段を備え、
前記コンテンツ語彙モデル生成手段は、
前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、
前記蓄積されているテキスト情報に含まれる語のうち、所定の共起範囲内に存在する語を収集し、
前記収集された語の登場回数を集計することによって、語の関連性を求めることを特徴とする請求項4に記載の情報検索システム。
【請求項6】
前記情報検索システムは、前記第1の関連性を示す検索クエリ行列と、前記第2の関連性を示すコンテンツ行列との間の内積を、前記検索クエリ行列のノルムと前記コンテンツ行列のノルムとの積で除することによって、第1の関連性と第2の関連性との類似度を計算する手段を備えることを特徴とする請求項1から5のいずれか一つに記載の情報検索システム。
【請求項7】
1台以上の計算機によって構成され、テキスト情報を検索する検索システムにおける情報検索方法であって、
前記テキスト情報は、情報コンテンツ内に含まれるテキストデータ又は前記情報コンテンツに付加されるテキストデータの情報であり、
前記計算機は、プログラムを実行するプロセッサと、前記実行されるプログラムを格納するメモリとを備え、
前記方法は、
前記計算機が、ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得して前記メモリに書き込むステップと、
前記計算機が、蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得して前記メモリに書き込むステップと、
前記計算機が、前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択して出力するステップと、を含むことを特徴とする情報検索方法。
【請求項8】
前記方法は、前記計算機が、前記ユーザが関連したテキスト情報における語の関連性が記録されたユーザ語彙モデルを管理するステップを含み、
前記第1の関連性を取得するステップでは、前記計算機が、前記入力された検索条件に含まれる語を形態素解析によって抽出し、前記ユーザ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義された検索クエリ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項7に記載の情報検索方法。
【請求項9】
前記方法は、前記計算機が、ユーザがアクセスしたテキスト情報、及びユーザがアクセスしたデータに関連するテキスト情報を特定し、前記特定されたテキスト情報に含まれる語を形態素解析によって抽出し、前記抽出された語のうち、所定の共起範囲内に存在する語を収集し、前記収集された語の登場回数を、前記アクセスの種別によって重み付けした後に集計することによって、語の関連性を求め、これによって前記ユーザ語彙モデルを生成するステップを含むことを特徴とする請求項8に記載の情報検索方法。
【請求項10】
前記方法は、前記計算機が、前記蓄積されているテキスト情報に含まれる語の関連性が記録されたコンテンツ語彙モデルを管理するステップを含み、
前記第2の関連性を取得するステップでは、前記計算機が、前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、前記コンテンツ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義されたコンテンツ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項7から9のいずれか一つに記載の情報検索方法。
【請求項11】
前記方法は、前記計算機が、前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、前記蓄積されているテキスト情報に含まれる語のうち、所定の共起範囲内に存在する語を収集し、前記収集された語の登場回数を集計することによって、語の関連性を求め、これによって前記コンテンツ語彙モデルを生成するステップを含むことを特徴とする請求項10に記載の情報検索方法。
【請求項12】
前記方法は、前記計算機が、前記第1の関連性を示す検索クエリ行列と、前記第2の関連性を示すコンテンツ行列との間の内積を、前記検索クエリ行列のノルムと前記コンテンツ行列のノルムとの積で除することによって、第1の関連性と第2の関連性との類似度を計算するステップを含むことを特徴とする請求項7から11のいずれか一つに記載の情報検索方法。
【請求項13】
クライアントからの要求に従って、テキスト情報を検索する情報検索サーバであって、
前記テキスト情報は、情報コンテンツ内に含まれるテキストデータ又は前記情報コンテンツに付加されるテキストデータの情報であり、
前記情報検索サーバは、
ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得する手段と、
蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得する手段と、
前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択する手段とを備えることを特徴とする情報検索サーバ。
【請求項1】
1台以上の計算機によって構成され、テキスト情報を検索する情報検索システムであって、
前記テキスト情報は、情報コンテンツ内に含まれるテキストデータ及び前記情報コンテンツに付加されるテキストデータの少なくとも一方を含む情報であり、
前記計算機は、
ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得する手段と、
蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得する手段と、
前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択する手段とを備えることを特徴とする情報検索システム。
【請求項2】
前記情報検索システムは、前記ユーザが関連したテキスト情報における語の関連性が記録されたユーザ語彙モデルを管理し、
前記第1の関連性を取得する手段は、
前記入力された検索条件に含まれる語を形態素解析によって抽出し、
前記ユーザ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義された検索クエリ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項1に記載の情報検索システム。
【請求項3】
前記計算機は、前記ユーザ語彙モデルを生成するユーザ語彙モデル生成手段を備え、
前記ユーザ語彙モデル生成手段は、
ユーザがアクセスしたテキスト情報、及びユーザがアクセスしたデータに関連するテキスト情報を特定し、
前記特定されたテキスト情報に含まれる語を形態素解析によって抽出し、
前記抽出された語のうち、所定の共起範囲内に存在する語を収集し、
前記収集された語の登場回数を、前記アクセスの種別によって重み付けした後に集計することによって、語の関連性を求めることを特徴とする請求項2に記載の情報検索システム。
【請求項4】
前記情報検索システムは、前記蓄積されているテキスト情報に含まれる語の関連性が記録されたコンテンツ語彙モデルを管理し、
前記第2の関連性を取得する手段は、
前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、
前記コンテンツ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義されたコンテンツ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項1から3のいずれか一つに記載の情報検索システム。
【請求項5】
前記計算機は、前記コンテンツ語彙モデルを生成するコンテンツ語彙モデル生成手段を備え、
前記コンテンツ語彙モデル生成手段は、
前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、
前記蓄積されているテキスト情報に含まれる語のうち、所定の共起範囲内に存在する語を収集し、
前記収集された語の登場回数を集計することによって、語の関連性を求めることを特徴とする請求項4に記載の情報検索システム。
【請求項6】
前記情報検索システムは、前記第1の関連性を示す検索クエリ行列と、前記第2の関連性を示すコンテンツ行列との間の内積を、前記検索クエリ行列のノルムと前記コンテンツ行列のノルムとの積で除することによって、第1の関連性と第2の関連性との類似度を計算する手段を備えることを特徴とする請求項1から5のいずれか一つに記載の情報検索システム。
【請求項7】
1台以上の計算機によって構成され、テキスト情報を検索する検索システムにおける情報検索方法であって、
前記テキスト情報は、情報コンテンツ内に含まれるテキストデータ又は前記情報コンテンツに付加されるテキストデータの情報であり、
前記計算機は、プログラムを実行するプロセッサと、前記実行されるプログラムを格納するメモリとを備え、
前記方法は、
前記計算機が、ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得して前記メモリに書き込むステップと、
前記計算機が、蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得して前記メモリに書き込むステップと、
前記計算機が、前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択して出力するステップと、を含むことを特徴とする情報検索方法。
【請求項8】
前記方法は、前記計算機が、前記ユーザが関連したテキスト情報における語の関連性が記録されたユーザ語彙モデルを管理するステップを含み、
前記第1の関連性を取得するステップでは、前記計算機が、前記入力された検索条件に含まれる語を形態素解析によって抽出し、前記ユーザ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義された検索クエリ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項7に記載の情報検索方法。
【請求項9】
前記方法は、前記計算機が、ユーザがアクセスしたテキスト情報、及びユーザがアクセスしたデータに関連するテキスト情報を特定し、前記特定されたテキスト情報に含まれる語を形態素解析によって抽出し、前記抽出された語のうち、所定の共起範囲内に存在する語を収集し、前記収集された語の登場回数を、前記アクセスの種別によって重み付けした後に集計することによって、語の関連性を求め、これによって前記ユーザ語彙モデルを生成するステップを含むことを特徴とする請求項8に記載の情報検索方法。
【請求項10】
前記方法は、前記計算機が、前記蓄積されているテキスト情報に含まれる語の関連性が記録されたコンテンツ語彙モデルを管理するステップを含み、
前記第2の関連性を取得するステップでは、前記計算機が、前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、前記コンテンツ語彙モデルを参照することによって、前記抽出された語の間の関連性が定義されたコンテンツ行列を前記第1の関連性を表すものとして生成することを特徴とする請求項7から9のいずれか一つに記載の情報検索方法。
【請求項11】
前記方法は、前記計算機が、前記蓄積されているテキスト情報に含まれる語を形態素解析によって抽出し、前記蓄積されているテキスト情報に含まれる語のうち、所定の共起範囲内に存在する語を収集し、前記収集された語の登場回数を集計することによって、語の関連性を求め、これによって前記コンテンツ語彙モデルを生成するステップを含むことを特徴とする請求項10に記載の情報検索方法。
【請求項12】
前記方法は、前記計算機が、前記第1の関連性を示す検索クエリ行列と、前記第2の関連性を示すコンテンツ行列との間の内積を、前記検索クエリ行列のノルムと前記コンテンツ行列のノルムとの積で除することによって、第1の関連性と第2の関連性との類似度を計算するステップを含むことを特徴とする請求項7から11のいずれか一つに記載の情報検索方法。
【請求項13】
クライアントからの要求に従って、テキスト情報を検索する情報検索サーバであって、
前記テキスト情報は、情報コンテンツ内に含まれるテキストデータ又は前記情報コンテンツに付加されるテキストデータの情報であり、
前記情報検索サーバは、
ユーザが入力した検索条件を解析することによって、当該検索条件に含まれる語の間の第1の関連性を取得する手段と、
蓄積されている前記テキスト情報を解析することによって、当該テキスト情報に含まれる語の間の第2の関連性を取得する手段と、
前記取得した第1の関連性と第2の関連性との類似度によって、入力された検索条件に合致するものとして出力するテキスト情報を選択する手段とを備えることを特徴とする情報検索サーバ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15A】
【図15B】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22A】
【図22B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15A】
【図15B】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22A】
【図22B】
【公開番号】特開2012−3603(P2012−3603A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−139512(P2010−139512)
【出願日】平成22年6月18日(2010.6.18)
【出願人】(391002409)株式会社 日立システムアンドサービス (205)
【Fターム(参考)】
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願日】平成22年6月18日(2010.6.18)
【出願人】(391002409)株式会社 日立システムアンドサービス (205)
【Fターム(参考)】
[ Back to top ]