図1は、本発明の一本実施形態に係る連想検索システム10の全体構成図である。ユーザ端末32は、インターネット、LAN(Local Area Network)等のネットワーク34を介して検索サービス装置30に接続される。ユーザ端末32は、例えばパーソナルコンピュータであり、少なくとも表示装置であるディスプレイとキーボードおよびマウスなどの入力装置とを備える。ユーザ端末32には、周知のブラウザが搭載され、ネットワーク上で提供されている様々なウェブページを閲覧可能となっている。検索サービス装置30は、単一のウェブサーバとして構成されてもよいし、データベースサーバなどを含む複数のサーバで構成されてもよい。
ユーザは、ユーザ端末32を利用して、検索サービス装置30の提供するウェブサイトにアクセスし、所定のページにおいて所望の検索語を入力する。検索サービス装置30は、ユーザ端末32から検索語を受け取ると、以下に述べる手順にしたがって検索語に関連の深い連想語を探し出し、その結果をウェブページ形式でユーザ端末32に送信する。
図2は、検索サービス装置30の構成を示す。ここに示す各ブロックは、ハードウェア的には、コンピュータのCPUやメモリをはじめとする素子で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここではそれらの連携によって実現される機能ブロックとして描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
ユーザ処理部36は、ユーザ端末32に関わる処理を受け持つ。検索語受付部42は、各ユーザ端末32から送られた検索語を受け付け、連想検索エンジン50や他の機能ブロックに渡す。ユーザ特定部44は、ユーザがウェブサイトにアクセスするときに入力するユーザID、またはユーザ端末に保存されているCookieなどを参照してユーザを認証する。ユーザの認証は、主に後述するユーザフィードバック反映処理に関して必要となるので、この機能を提供しない場合にはユーザ特定部44を備えていなくてもよい。ユーザフィードバック(F/B)受付部46は、検索結果である連想語の表示に対してユーザからなされるフィードバックを受け付け、ユーザフィードバック反映処理部90に渡す。
連想検索エンジン50は、予め準備されている文書データに基づき、ユーザから入力された検索語に対して関連の深い連想語を検索する。
比較差分検索実行部60、二次元マップ作成部70、鮮度検索実行部80、およびユーザフィードバック反映処理部90は、連想検索エンジン50を利用して検索語に対する連想語を抽出し、それぞれ所定の加工を施した上で、ユーザに提示するための図表やグラフなどをウェブページ形式で作成する。作成されたウェブページは、表示出力部52によってユーザ端末32に送られ、ユーザ端末上で表示される。これらの機能ブロックの詳細は、追って説明する。
図3は、連想検索エンジン50の詳細な構成を示す。ここに示す機能ブロックも、ハードウェアおよびソフトウェアの組合せによっていろいろなかたちで実現できる。
文書データベース12は、多数の文書をテキストデータとして蓄積する。蓄積される文書としては、新聞記事、雑誌記事、学術論文などが好ましいが、これらに限定されない。別の実施例として、連想検索エンジン50が、所定の期間毎にネットワークを介して多数のウェブページにアクセスしてページ内の文書データを収集するウェブクローラを備えており、収集した文書データを適宜データベースに蓄積していくように構成してもよい。
文書データベース12に蓄積された文書データは、後述するように、検索語と関連の深い連想語を導き出すための元データとしての役割を有する。
文書データベース12は、形態素インデックス12aと、テキスト本文12bとを記憶している。形態素インデックス12aは、文書データに対して周知の形態素解析を行った結果をインデックス形式で保存したものである。文書データベース12内に蓄積された多量の文書データに含まれる各文字列に関して、それぞれの出現頻度を集計するには膨大な時間を要する。そこで、本実施形態では、予め全文書データに登場する各形態素が個々の文書データ中に存在しているか否かを一覧表にまとめた形態素インデックス(いわゆる転置インデックス)12aを生成しておく。キーワード抽出部14は、この形態素インデックス12aを参照することで、比較的短時間で各文字列の出現頻度を簡単に取得することができる。
キーワード抽出部14は、係り受け表現抽出フィルタ14a、区切り文字抽出フィルタ14b、文字列頻度統計フィルタ14c、TermExtractフィルタ14d、および多数決フィルタ14eからなる複数のフィルタを備えている。ここで、本明細書における「キーワード」とは、文書データから抽出された形態素のうち、上述の各種フィルタによってフィルタリングされた個々の文字列のことをいう。つまり、これらキーワードは、検索語と関連の深い連想語を導き出すために予め準備されているものである。したがって、通常の検索エンジンにおける「検索キーワード」とは異なるものであることに注意されたい。
キーワード保持部16には、キーワード抽出部14で抽出されたキーワードが格納される。キーワードは、50音順、ASCIIコード順、または他の適当な規則にしたがって整理されて格納される。
関連度算出部18は、二つのキーワードが同一の文書中に出現する共起頻度に基づいて、二つのキーワード間の結びつきの強さを示す「関連度」を算出する。算出された関連度は、キーワード関連度保持部26に保持される。
一般に、あるキーワードXとキーワードYの間の関連度は、以下の数式を用いて計算することができる。
ここで、relevancy(X,Y)は、キーワードXとキーワードYの関連度、Xi、Yiは、それぞれキーワードX、Yが文書データDi(i=1〜m)の中に出現する回数を表す。
しかしながら、文書データの分量やキーワードの総数が多い場合には、関連度を算出するのに膨大な計算量を伴うため、多くの処理時間を要することとなる。
そこで、本実施形態では、後述するように、まずキーワード出現頻度表20を作成し、その後これを利用してキーワード組合せ頻度総和表22およびキーワード頻度総和表24を作成することにより、計算工程の簡素化を図っている。
図4は、キーワード抽出部14において文書データからキーワードを抽出する処理を説明するフローチャートである。
まず、キーワード抽出部14は、文書データベース12内に蓄積された各文書データに対して係り受け表現抽出フィルタ14aを適用し、所定の係り受け表現を含む文字列を抽出する(S10)。係り受け表現抽出フィルタ14aには、「XXメーカー」、「XXが主力」、「XXを生産」といったような係り受け表現パターンが予め多数用意されている。係り受け表現抽出フィルタ14aを適用することで、文書データから上述のような表現パターンを含む文字列を検出した後、キーワード抽出部14は、「XX」に相当する部分をキーワード候補として抽出する。
次に、キーワード抽出部14は、各文書データに対して区切り文字抽出フィルタ14bを適用する(S12)。区切り文字抽出フィルタ14bには、「XX」、”XX”、(XX)、[XX]、,XX,のような、カンマや括弧、スペース、タブ等の区切り文字が用意されている。キーワード抽出部14は、これら区切り文字で囲まれた文字列を検出した後、XXに相当する部分をキーワード候補として抽出する。
続いて、キーワード抽出部14は、各文書データに文字列頻度統計フィルタ14cを適用し、文書データに含まれる各文字列が全文書データにおいて何回出現するのかを集計する。そして、一定範囲の出現頻度を備えた文字列をキーワード候補として抽出する(S14)。
ここで、文字列頻度統計フィルタ14cについて説明する。文字列頻度統計フィルタ14cは、文書データ中のある名詞(例えば、「DVD」)に注目し、このDVDという注目語が文書データベース12内に蓄積された各文書データ中に出現する回数をカウントする。続いて、文字列頻度統計フィルタ14cは、この注目語の前後の形態素に範囲を拡張して、いくつかの新たな注目語を作り出す。各注目語が全文書データ中に登場する頻度を再度集計し、この出現頻度が一定数以下(例えば、20回以下)となった時点で注目語の範囲拡張を停止する。
一例として、「昨年販売したDVDレコーダでは」という文字列があったとする。まず、文字列頻度統計フィルタ14cは、注目語「DVD」の一つ前の形態素に範囲を拡張して、「したDVD」という注目語を作り、この「したDVD」の出現頻度を集計する。出現頻度が例えば2回であった場合、これ以上前の形態素に範囲が拡張されることはない。続いて、文字列頻度統計フィルタ14cは、注目語「DVD」の一つ後の形態素に範囲を拡張して、「DVDレコーダ」という注目語を作り、出現頻度を集計する。出現頻度が例えば862回であった場合は、さらにその一つ後の形態素に範囲を拡張して、「DVDレコーダでは」という注目語を作る。この注目語の出現頻度が、今度は例えば5回であった場合、これ以降の形態素に範囲が拡張されることはない。
ここで、「形態素」とは、意味を有する最小の言語単位を指す。例えば、「私の名前は鈴木です」を形態素に分解すると、「私(代名詞)」「の(助詞)」「名前(一般名詞)」「は(係助詞)」「鈴木(固有名詞)」「です(助動詞)」となる。形態素解析は当業者には周知であるので、これ以上の説明は省略する。
文字列頻度統計フィルタ14cは、「DVD」および「DVDレコーダ」が所定範囲(例えば、20〜5000)内の出現頻度を備えていることを理由に、これらをキーワード候補として抽出する。これに対し、「したDVD」および「DVDレコーダでは」は上記の範囲外であるため、キーワード候補から除外される。なお、キーワード候補を決定するための所定範囲の上限値と下限値は、文書データベース12に蓄積されている文書データの分量や、検索サービス装置30の主たる使用目的に応じて適宜調整される。この場合、下限値は、出現頻度があまりに少ないと連想検索の対象となりにくい、という観点から決定することが好ましい。逆に、上限値は、あまりに出現頻度が多い語は、汎用語や助詞、助動詞の可能性が高い、という観点から決定することが好ましい。現実には、検索を多数回繰り返すことによって実験的に上限値と下限値を設定する。
図4に戻り、キーワード抽出部14は、文書データベース12内に蓄積された文書データに対してTermExtractフィルタ14dを適用し、各文書データから所定以上のスコアを備えた文字列をキーワード候補として抽出する(S16)。
このTermExtractフィルタ14dは、専門分野のコーパス、すなわち主として研究目的で収集され、電子化された自然言語の文章からなる巨大な文書データから専門用語を自動抽出するために案出された文字列抽出アルゴリズムである。TermExtractフィルタ14dは、文書データ中から単名詞および複合名詞を候補語として抽出し、各候補語の出現頻度と連接頻度に基づいてそれぞれの重要度を算出する機能を備えている。このTermExtractフィルタ14d自体は公知技術であるため、これ以上の説明は省略する。
キーワード抽出部14は、係り受け表現抽出フィルタ14a、区切り文字抽出フィルタ14b、文字列頻度統計フィルタ14c、TermExtractフィルタ14dによってそれぞれ抽出された各キーワード候補を多数決フィルタ14eに入力し、キーワードを絞り込む(S18)。多数決フィルタ14eは、各フィルタ14a〜14dによって抽出されたキーワード候補同士をマッチングし、二つ以上のフィルタによってキーワード候補として挙げられているものを最終的なキーワードと認定する。なお、三つ以上のフィルタによって抽出されたことをキーワード認定の要件としてもよい。認定されたキーワードは、キーワード保持部16に格納される。
このように、キーワード抽出部14は、係り受け表現抽出フィルタ14a、区切り文字抽出フィルタ14b、文字列頻度統計フィルタ14c、TermExtractフィルタ14dという、それぞれ異なる抽出基準を用いた4つのフィルタを用いて、文書データからキーワードを抽出する。こうすることで、文書データから重要なキーワードの抽出ミスが起こるのを防止することができる。さらに、各フィルタによる抽出キーワードをそのまま用いるのではなく、多数決フィルタ14eによって絞り込みをかけることで、ノイズとなるキーワードの混入を防止することができる。
なお、キーワード抽出部14で使用されるフィルタの数および種類は、上述したものに限定されるわけではなく、他の任意のキーワード候補抽出フィルタを用いることができる。
図5は、関連度算出部18による各キーワード間の関連度の算出を説明するフローチャートである。まず、関連度算出部18は、各文書データにおけるキーワードの出現頻度を集計し、キーワード出現頻度表を作成する(S20)。
図6は、キーワード出現頻度表130の具体例を示す。列132は、キーワード保持部16に格納されている全てのキーワードを表し、列134は、各キーワードが文書データD1〜Dmの中にそれぞれ何回出現しているかを表している。
続いて、関連度算出部18は、キーワード出現頻度表130に基づき、各文書データD1〜Dmに含まれるキーワードの組合せ(ペア)毎にそれぞれの出現頻度を乗じた値を記述したキーワード組合せ頻度総和表22を作成し(S22)、さらに、各キーワードの出現頻度を二乗した値を記述したキーワード頻度総和表24を作成する(S24)。
図7は、キーワード組合せ頻度総和表110とキーワード頻度総和表118の具体例を示す。図6に示したキーワード出現頻度表130のうち、文書データD1に含まれるキーワード間の関連度を計算することを考える。この場合、表130において、KW−3およびKW−4の出現頻度は0であるから、実際に関連度を算出すべきキーワードの組合せ108は、(KW−1,KW−2)、(KW−1,KW−5)、(KW−2,KW−5)の三つに限られることになる。
キーワード組合せ頻度総和表110は、文書データD1に含まれる、キーワードX1の出現頻度(列112)と、キーワードY1(列114)の出現頻度の積であるX1*Y1(列116)を示している。例えば、KW−1とKW−2の出現頻度はそれぞれ「3」「5」であるから、X1*Y1=15となる。この列116の値を合計したΣX1*Y1は、数1におけるi=1の場合の分子に相当する。
キーワード頻度総和表118は、文書データD1に含まれる各キーワード120の出現頻度の二乗値122を示している。この列122の値を合計して平方をとった√ΣX1 2または√ΣY1 2は、数1におけるi=1の場合の分母に相当する。
このようにして、関連度算出部18は、各文書データD1〜Dmについて、それぞれキーワード組合せ頻度総和表110とキーワード頻度総和表118とを作成する。そして、これらの値を数1にしたがって加算していくことにより、キーワード間の関連度を算出することができる(S26)。したがって、関連度はキーワードのペアに対して一つ与えられることになる。算出された関連度は、キーワード関連度保持部26に格納される。このキーワード関連度保持部26を参照することで、後述するような多様な検索処理を実現することができる。
上述のように、文書データD1〜Dnのそれぞれについて、各キーワード間の組合せを先に抽出しておき、抽出された組合せについてキーワード組合せ頻度総和表110とキーワード頻度総和表118を作成することで、出現頻度が0のキーワードについて数1の計算を省くことができる。したがって、文書データのボリュームが大きく、またキーワード数が多い場合でも、関連度を比較的速やかに算出することが可能になる。
また、文書データベース12に新規の文書データが追加された場合には、この新規文書データ中の各キーワードに係るデータをキーワード組合せ頻度総和表110およびキーワード頻度総和表118に追加し、既存の集計値に追加分の値を加算することによって、キーワード間の関連度の再計算が容易となる。
反対に、不要となった文書データの影響を排除する場合にも、当該文書データ中の各キーワードに係るデータをキーワード組合せ頻度総和表110およびキーワード頻度総和表118から削除し、既存の集計値から削除分の値を減算することによって、キーワード間の関連度を最新の状態に維持することが可能となる。
以下、キーワード関連度を使用したいくつかの検索手法について、順に説明する。
1.比較差分検索
比較差分検索は、複数の検索語に対して共通する連想語と相違する連想語を出力するものである。図2を参照して、比較差分検索実行部60は、連想語選択部62、連想語マッチング部64、およびページ作成部66を含む。
連想語選択部62は、検索語受付部42よりユーザから入力された複数の検索語を受け取る。そして、キーワード関連度保持部26を参照して、検索語と同一または一定範囲内の類似性を有するキーワードを検索語として認定するとともに、当該キーワードとペアとなっているキーワードの中から所定数のキーワードを関連度の高い順に抽出する。このようにして抽出されたキーワードを、検索語に対する「連想語」と呼ぶことにする。
ここで、「一定範囲内の類似性を有する」とは、以下のような意味である。すなわち、キーワード関連度保持部26の中に、所望の検索語と完全に同一のキーワードが含まれていないことも考えられる。したがって、ある程度近似する言葉であれば、それを代替的にキーワードとみなすのである。一例として、ユーザの入力した検索語が平仮名の「ひまん」であった場合、漢字の「肥満」や片仮名の「ヒマン」も対象とするなどが考えられる。
図8は、ユーザが検索語を入力するための画面142の一例を示す。図示するように、比較差分検索の対象である検索語を入力する欄144が三つ含まれている。「もっと追加する」ボタン148をクリックすると、欄144が一つずつ追加され、検索語を四語以上とすることも可能である。検索語を欄144に入力した後、「Search」ボタン146をクリックすると、検索語が検索語受付部42に送られる。
ここでは、一例として、「肥満」「糖尿病」「心臓病」の三つの検索語を指定したとして、以下の説明を行う。
図2に戻り、連想語マッチング部64は、三つの検索語に対してそれぞれ抽出された三セットの連想語について相互にマッチングを行い、検索語「肥満」「糖尿病」「心臓病」のいずれかに対してのみ抽出された連想語、「肥満」「糖尿病」「心臓病」のうち二つに対して抽出された連想語、および「肥満」「糖尿病」「心臓病」の全てに対して抽出された連想語、に分類する。
そして、ページ作成部66は、連想語マッチング部64により分類された連想語を図9のページ150のようにグループ分けしたページを作成する。図示するように、ページ150では、「肥満」「糖尿病」「心臓病」の三つ全てに関連する連想語のグループ152と、「肥満」「糖尿病」「心臓病」のいずれかにのみ関連する連想語のグループ154〜158が表示されている。このように、ユーザが入力した全ての検索語について共通する連想語と、いずれかの検索語にのみ関連する連想語とを一画面内で比較表示することによって、特徴的な連想語を見つけることが容易になる。
ページ150には、「ベン図表示」と記載されたボタン160が表示される。これをクリックすることで、ページ作成部66は、連想語マッチング部64によるマッチング結果をベン図形式に書き換えたページを作成する。
図10は、このようなベン図表示の一例を示す。ページ166には、「肥満」の連想語を含む枠170と、「糖尿病」の連想語を含む枠172と、「心臓病」の連想語を含む枠174とが表示される。そして、周知のベン図と同じように、枠の重複部分には、二つ以上の検索語に対してヒットした連想語が表示される。すなわち、領域176には、「肥満」と「糖尿病」に関連する連想語が表示される。領域178には、「肥満」と「心臓病」に関連する連想語が表示される。領域180には、「糖尿病」と「心臓病」に関連する連想語が表示される。領域182には、「肥満」「糖尿病」「心臓病」の全てに共通する連想語が表示される。ページ166内の「タグクラウド表示」ボタン168をクリックすることで、図9に示したページに戻ることもできる。
ところで、図9のタグクラウド表示、および図10のベン図表示のいずれにおいても、表示される各連想語は「タグ」として表示される。このタグは、図11にタグ162として示すように長方形状であり、連想語の文字列と、これを取り囲む余白部分とを備えている。検索語を含むタグについては、連想語と区別するために、白黒反転させたタグ161を使用することが好ましい。
このタグ161、162の面積は、連想語のフォントサイズと文字数に応じて自動的に決定される。検索語との関連度が大きいほど大きなフォントサイズが割り当てられる。以下に、フォントサイズの設定方法の一例を示す。
ページ上で表示される最大フォントサイズ=Aポイント
ページ上で表示される最小フォントサイズ=Bポイント
フォントサイズ変換比R=(A−B)/(関連度の最大値−関連度の最小値)
このとき、連想語XのフォントサイズFは、F=(連想語Xの関連度−関連度の最小値)*Rで設定される。
以上説明したように、本実施形態の比較差分検索によれば、二つ以上の検索語を指定し、それらに対する連想語の共通部分と相違部分とを容易に知ることができる。例えば、検索語Aに対する連想語と、検索語Bに対する連想語とで共通のものを参照することで、これら検索語の背後にある類似の概念を知ることができる。また、検索語AまたはBに対する固有の連想語を参照することで、他方の検索語からは想起されない概念を知ることができる。このように、本実施形態の比較差分検索により、複数の検索語から多様な関連する概念を導き出すことができる。
このような比較差分検索の活用例としては、以下のようなものが考えられる。
(1)同業種である複数の企業名を検索語として比較差分検索を実施する。これによって、企業間で共通の連想語と各企業単独の連想語とを見ることができるため、投資に際して考慮すべき企業間の共通性や各企業の独自性を発見することが容易になる。
(2)競合関係にある商品の名称を検索語として比較差分検索を実施する。これによって、各商品の共通性や独自性を発見できるため、マーケティング等に活用することができる。
(3)一見何の関係もない複数の検索語を入力して比較差分検索を実施することで、新規な着眼点を発見したり発想を膨らましたりするアイデアのマイニングに利用することができる。
2.比較差分検索のマップ表示
上述のように、比較差分検索をタグクラウド表示またはベン図表示することで、それぞれの検索語に対する連想語の共通部分と相違部分とを容易に把握することができる。しかし、これらの表示形式では、連想語と検索語との関連度合いや、二つの検索語がある場合にどちらの検索語に対して各連想語との結びつきが強いのかといった、結びつきの強さに関する情報を得ることができない。そこで、以下では、比較差分検索の結果をマップ表示する方法について説明する。
図2に戻り、二次元マップ作成部70は、データ集計部72、主成分分析部74、座標データ変換部76、マップ作成部78を含む。
データ集計部72は、ユーザから入力された複数の検索語それぞれについてキーワード関連度保持部26から抽出された連想語を、連想語選択部62から受け取る。そして、関連度が上位の連想語について、キーワード出現頻度表20を参照して、各文書データ内での連想語の出現頻度を集計する。主成分分析部74は、連想語の出現頻度に基づき、周知の主成分分析を実行する。座標データ変換部76は、主成分分析の結果に基づいて、各連想語を二次元のマップ上に配置するための座標を計算する。マップ作成部78は、計算された座標に連想語を含むタグを配置した連想語マップを作成する。
図12は、比較差分検索のマップ表示処理を説明するフローチャートである。まず、ユーザが検索語を入力すると(S30)、連想語選択部62は、キーワード関連度保持部26を参照して、検索語と同一または一定範囲内の類似性を有するキーワードを検索語として認定するとともに、当該キーワードとペアとなっているキーワードの中から所定数のキーワードを、関連度の高い順に連想語として抽出する(S31)。
例えば、ユーザから検索語として「肥満」と「心臓病」の二つが入力されたとする。連想語選択部62は、図13の表186に示すように、検索語「肥満」との関連度が高い順に、「脂肪」、「糖尿病」、「糖尿」、...、「体重」の各キーワードを連想語として抽出する。同様に、データ集計部72は、表188に示すように、検索語「心臓病」との関連度が高い順に、「心臓」、「病」、「治療」、...、「内科」の各キーワードを連想語として抽出する。
続いて、データ集計部72は、「肥満」の連想語と「心臓病」の連想語について関連度を合計し、両者の和集合を作る(S32)。例えば、連想語「病」が「肥満」に対して関連度Cを有し、「心臓病」に対して関連度Dを有している場合には、和集合における「病」の関連度はC+Dになる。そして、データ集計部72は、和集合のうち、関連度が大きい順に所定数、例えば50位までの連想語を抽出する。図13の表190は、このようにして抽出された連想語である。なお、抽出する連想語の数は、後述する連想語マップ内に配置可能なタグの数以下とする必要がある。
次に、データ集計部72は、キーワード出現頻度表20を参照して、和集合に含まれる連想語および検索語が出現している文書データのIDと、各文書データ内での出現頻度とを取得する(S34)。
図14は、S34の取得結果を示すテーブル194を示す。列196は連想語であり、ここでは代表として連想語「病」を示している。列198は、連想語「病」が含まれている文書データの文書IDを示す。列200は、列198で特定される文書データ内に、列196の連想語が出現する回数を示す。
図15は、テーブル194を集計し直して、文書データ毎に検索語および連想語がいくつずつ含まれているかを示すクロス集計テーブル202を示す。行項目206は、文書データの文書IDを示し、各列との交差部に列項目204で指定される連想語または検索語の出現回数が示されている。一例として、文書ID「6102」で指定される文書データには、「心臓」が2回、「心臓病」が1回、「肥満」が3回、「病」が1回出現していることを表している。
主成分分析部74は、クロス集計テーブル202に示した文書データ毎の検索語または連想語の出現頻度に対して周知の主成分分析を実行し(S36)、分析結果として検索語または連想語の第1主成分値および第2主成分値を算出する(S38)。図16は、主成分分析の結果210を示す。列212は、図15の列項目204に対応する検索語および連想語であり、列214、216は、それぞれ第1主成分値および第2主成分値を示す。
座標データ変換部76は、各検索語および連想語の第1主成分値および第2主成分値に基づき、所定の面積を備えた2次元平面上にタグを配置するための座標値を算出する(S40)。一例として、検索語または連想語EのX座標とY座標は、次に式のようにして算出される。
X座標変換比=座標平面の横幅÷(第1主成分値の最大値−第1主成分値の最小値)
Y座標変換比=座標平面の縦幅÷(第2主成分値の最大値−第2主成分値の最小値)
X座標=(Eの第1主成分値−第1主成分の最小値)*X座標変換比
Y座標=(Eの第2主成分値−第2主成分の最小値)*Y座標変換比
図17は、座標平面の横幅を700ピクセル、縦幅を500ピクセルとしたとき、各検索語または連想語(列222)のX座標(列224)およびY座標(列226)を計算した結果220を示す。
マップ作成部78は、検索語または連想語を含むタグを作成し(S42)、S40で算出された座標値にしたがって、それらのタグを座標平面上に配置した連想語マップを作成する(S44)。このとき、各タグの中心点が上述のXY座標に一致するように配置する。作成された連想語マップは、表示出力部52によりユーザ端末32に送信される(S46)。
図18は、上述の手順にしたがって作成された連想語マップ230を示す。上述のように、関連度は、検索語「肥満」に対するものと検索語「心臓病」に対するものが合計されているため、タグのサイズは、両検索語との関連度が大きいほど大きくなっている。また、各タグ232の配置された座標は、検索語「肥満」、「心臓病」との共起性に基づく関連の強さを反映している。したがって、検索語「肥満」、「心臓病」と他のタグとの距離が近いほど、関連性の高い連想語であることを示している。例えば、検索語「肥満」の近傍には、「予防」「脂肪」「血圧」「硬化」といった連想語のタグが集まっているため、「肥満」とこれらの連想語の関連性が高いことを読み取ることができる。また、マップ内で互いに近距離に位置する連想語は、同じ文書内で共起している度合いが高いことを示している。さらに、例えば「ウエスト」「こうそく」「動脈」といった連想語は、検索語「肥満」と「心臓病」からほぼ等距離に位置しているため、これらの連想語は、「肥満」と「心臓病」に対して同程度の関連性があることを示している。
このように、ユーザは連想語マップ230を参照することで、タグ232の配置の様子から、複数の検索語に対する各連想語の関連度合いや、連想語間の類似性などを読み取ることができる。
なお、上記では検索語が二語の場合を例として説明したが、検索語が三語以上であっても同様の手順で連想語マップを作成することができる。さらに、検索語が一語であっても連想語マップを作成できる。この場合、図12のS32における関連度の和集合を作成する処理を省き、単独の関連度に基づいて主成分分析等の処理をすればよい。
ところで、図18では、各タグ232は互いに重ならないように配置されている。しかしながら、実際には、タグが所定の面積を有している一方、検索語または連想語について座標を算出する際には、タグの大きさを考慮していない。そのため、各タグを座標データにしたがって二次元平面上に配置すると、図19に示すマップ240のように、タグ同士が重複して配置されてしまうことが多い。特に、表示するタグの数が多いほど、この傾向は顕著になる。
このような場合、配置座標の正確性よりもユーザの視認性を重視し、タグ同士の重複を解いて文字を認識し易いように調整することが望ましいが、各タグ間の関係性を尊重するという観点からは、タグの移動距離を最小限に抑えることが重要となる。
そこで、マップ作成部78は、各タグの移動距離を最小限に抑えつつ重複表示を解消するために、以下で述べるようなアルゴリズムを採用している。以下、図20のフローチャートにしたがい、その手順を説明する。
まず、マップ作成部78は、各タグの面積を比較し、面積の大きい順番に位置を固定する(S50)。各タグの面積は、上記の通り、キーワードのフォントサイズおよび文字数によって決定される。この過程でタグ間の重複が検知された場合には(S52のY)、重複タグ同士の面積を比較し(S54)、最も面積の大きなタグの位置を固定する(S56)。
次に、マップ作成部78は、重複タグ中で2番目に面積の大きなタグを上下左右の何れかの方向に移動させ、面積が最も大きなタグとの重複状態を解消させる(S58)。この際、マップ作成部78は以下のルールに拘束される。
(1)原則として、最も移動距離が短くて済む方向を優先的に選択する。
(2)原則として、既に固定済みのタグと重複する方向は選択できない。
(3)何れの方向においても固定済みのタグと重複する場合には、最も重複面積が小さくて済む方向を選択する。
(4)タグが表示領域の枠を越える方向は選択できない。
(5)戻り方向への移動は選択できない。
移動先において他のタグとの重複が発生した場合(S60のY)、マップ作成部78はS54〜S58のステップを繰り返し、重複状態の回避を図る。全てのタグについて重複回避のための調整処理が完了するまで、マップ作成部78はS54〜S60の処理を繰り返す(S62)。
図21ないし図27は、タグ間の重複解消処理の具体例を示す。図21は、座標データ変換部76で算出された座標通りにタグを配置した初期状態を示している。図21では、表示領域の枠αの近傍において、「ABC」タグ40a、「DEF」タグ40b、「GHI」タグ40c、「JKLMNO」タグ40d間に重複が生じている状態を示している。
この場合、まずマップ作成部78は各重複タグ間の面積を比較し(S54)、最も面積の大きな「ABC」タグ40aを現在位置に固定する(S56)。
次に、マップ作成部78は、「ABC」タグ40aの次に面積の大きな「DEF」タグ40bの位置を上下左右の何れかの方向に移動させ、「ABC」タグ40aとの重複を解消する(S58)。この場合、図21に点線で示すように、移動距離が最も短くて済むのは上方向であり、他の固定済みのタグと重複したり、枠αに抵触することもないため、図22に示すように、マップ作成部78は「DEF」タグ40bを上方向に移動させる。
続いて、マップ作成部78は、「DEF」タグ40bの次に面積の大きな「GHI」タグ40cの位置を上下左右の何れかの方向に移動させ、「ABC」タグ40aとの重複を解消する。図22に点線で示すように、「DEF」タグ40bを左方向に動かすと、枠αとの抵触が生じるため、上記(4)のルールにより左方向は移動先として除外される。また、上方向への移動は固定済みの「DEF」タグ40bと重複し、右方向も固定済みの「STUV」タグ40fとの重複が生じ、下方向も固定済みの「PQR」タグ40eとの重複が生じるため、上記(2)のルールからすれば選択できないこととなる。そこで、マップ作成部78は、上記(3)のルールを適用し、図23に示すように、最も重複面積が小となる下方向を「GHI」タグ40cの移動先として選択する。
この結果、「GHI」タグ40cと「PQR」タグ40eとの重複関係が新たに発生することとなるため、マップ作成部78は引き続き「GHI」タグ40cを移動対象とする。この場合、図23に点線で示すように、左方向および下方向への移動は枠αとの抵触が発生し(上記(4)のルール違反)、また上方向は戻り方向となるため(上記(5)のルール違反)、図24に示すように、マップ作成部78は「GHI」タグ40cを右方向に移動させ、「PQR」タグ40eとの重複を解消する。
この結果、「GHI」タグ40cと「STUV」タグ40fとの重複関係が発生することとなるため、マップ作成部78は再度「GHI」タグ40cを移動対象とする。この場合は、図24に点線で示すように、下方向が最も短い移動距離で「STUV」タグ40fとの重複を回避でき、固定済みのタグと重複することも枠αと抵触することもない。したがって、図25に示すように、マップ作成部78は「GHI」タグ40cを下方向に移動させる。
続いて、マップ作成部78は、残された「JKLMNO」タグ40dの位置を上下左右の何れかの方向に移動させ、「ABC」タグ40aとの重複を解消する。この場合、図25に点線で示すように、「JKLMNO」タグ40dを左方向に動かすと、枠αとの抵触が生じるため、上記(4)のルールにより、左方向は移動先として除外される。また、上下方向および右方向への移動は何れも固定済みのタグと重複が生じる。そこで、マップ作成部78は、上記(3)のルールにしたがい、図26に示すように、重複面積が最も小さくて済む下方向への移動を選択し、「ABC」タグ40aとの重複関係を解消させる。
この結果、「JKLMNO」タグ40dと「PQR」タグ40eとの重複関係が新たに発生するため、マップ作成部78は「JKLMNO」タグ40dを再度移動対象とする。この場合、図26に点線で示すように、下方向に移動すれば他の固定済みタグとの重複が発生せず、枠αとの抵触も生じないため、図27に示すように、マップ作成部78は「JKLMNO」タグ40dを下方向に移動させる。
以上の処理により、タグ間の重複状態が全て解消されることとなる。例えば、図19に示した連想語マップは、タグの重複が解消されて図28に示すマップ248のようになる。
上述の説明では、表示領域の枠αを固定するという前提に立っているため、(2)のルールを設定し、枠αに抵触する方向への移動は選択できないものとしたが、これに限定されるわけではない。例えば、タグの表示領域を上下左右にスクロール可能に構成したり、または表示領域の全体をズームイン/ズームアウト可能に構成することにより、枠αを越えたタグの移動を許容することもできる。
また、上述の説明では、タグの重複を一切排除する方法について説明したが、若干の重複を許容するようにしてもよい。例えば、各タグの面積の5%以内の重複を許容するというように設定しておけば、タグの視認性を比較的良好に維持したまま、その移動距離を短く抑えることが可能となる。
以上説明したように、本実施形態によれば、比較差分検索の結果を主成分分析を用いて二次元座標に変換し、二次元マップとして表示できるようにした。これにより、ユーザはタグの位置関係や集積度を見ることで、複数の検索語に対する連想語の関連性、および連想語同士の関連性を視覚的に把握することが可能になる。
これにより、ある企業または商品と、同業他社または競合製品とを検索語に指定して比較差分検索を実施し、マップ表示させることで、それぞれの独自性や共通性の比較検討を画面上で容易に行うことができる。また、二次元マップとして表示するため、連想語間の予想外の関連性を発見できる可能性もある。
なお、上記では連想語を二次元マップ上に表示しているが、クロス集計テーブルから第3主成分を求めることで、連想語を三次元マップとして表示できることは言うまでもない。
3.連想語の鮮度表示
上記で説明した連想検索結果の表示方法は、複数の検索語と連想語間の関連度の高低を比較するのに適している。しかしながら、連想語はそれぞれ別の時点に作成された文書データの中から抽出されているにもかかわらず、連想検索結果においてはその作成時点が全く考慮されていないという問題がある。
図29は、ある検索語に対する連想語A、Bの文書データ内での出現頻度の一例250を示す。横軸は時間の経過を示し、右に行くほど最新の文書データであることを表す。縦軸は、横軸で示される時点に作成された文書データ内に含まれている連想語の数を表す。例えば、最近話題となったニュース項目に関連する連想語Bは、図示するように、より最近の文書中での出現頻度が高い。それに対し、過去に話題となったニュース項目に関連する連想語Aは、その当時の文書データでの出現頻度は高いが、最近の文書データでの出現は少ない。このような場合、連想語Aと連想語Bとは、全期間を通しては同程度の出現頻度でも、異なる扱いとしたい。例えば、図中のグラフ252で示すように、過去の連想語には負の重みを、最近の連想語には正の重みを与えて連想語の出現頻度を集計してやれば、最近の連想語が高く評価されるようになる。
そこで、本実施形態の鮮度検索実行部では、連想語の検索結果に時間情報を含めて表示する方法を提供する。
図2を参照して、鮮度検索実行部80は、出現頻度取得部82と、鮮度算出部84と、鮮度表示部86とを含む。
出現頻度取得部82は、ユーザから入力された複数の検索語それぞれについてキーワード関連度保持部26から抽出された連想語を、連想語選択部62から受け取る。そして、各連想語の文書データ内の出現頻度を求める。鮮度算出部84は、各連想語の文書データへの出現頻度と文書データの作成時点とに応じて重み付けを行い、連想語毎にデータの新しさを表す「鮮度」を算出する。鮮度表示部86は、抽出された連想語を表示するページを作成する。このとき、鮮度に応じて各連想語を含むタグの表示態様を変化させる。一例として、鮮度が大きいほどタグのサイズを大きくしたり、またはタグの色を目立つようにしたりする。
図30は、鮮度検索処理を説明するフローチャートである。まず、ユーザが検索文字列を入力すると(S70)、連想語選択部62は、キーワード関連度保持部26を参照して、検索語と同一または一定範囲内の類似性を有するキーワードを検索語として認定するとともに、当該キーワードとペアとなっているキーワードの中から所定数のキーワードを、関連度の高い順に連想語として抽出する(S72)。続いて、出現頻度取得部82は、キーワード出現頻度表20を参照して、検索語および連想語が出現している文書データのIDと、各文書データ内での出現頻度とを取得する(S74)。
鮮度算出部84は、文書データのメタデータを参照して作成日付を取得する。そして、検索語または連想語毎に、文書データの日付順に出現頻度を並び替え、日付に応じた重みを与える(S76)。そして、出現頻度に重みを乗じた値を合計することで、検索語または連想語の鮮度を算出する(S78)。
図31は、S76〜S78の様子を示すテーブル256である。列258は検索語または連想語を表す。ここでは、例として「肥満」という連想語を示している。列260は、列258の検索語または連想語が含まれていた文書データの作成日付である。図示するように、データは日付順に並べられている。列262は、検索語または連想語の文書データ内での出現頻度である。列264は、文書データの作成日付により決まる重みである。この例では、新しいデータほど重みが大きくなるように設定されている。列266は、出現頻度と重みを乗じた結果を示す。この列266の値を合計することで、検索語または連想語についての鮮度が求められる。
鮮度表示部86は、検索語および連想語をタグクラウド形式で表示するページを作成する。このとき、算出された鮮度に応じてタグの大きさや色を変えるようにする(S80)。図32は、以上のようにして作成された検索結果のページ270を示す。「糖尿」「糖尿病」「脂肪」などが大きなタグで表示されており、これらの連想語は鮮度が非常に高いことを表している。なお、鮮度表示部86は、上述のベン図形式、または連想語マップの形式で検索結果ページを作成してもよい。後者の場合、複数の検索語について上述の方法にしたがって連想語マップを作成するとともに、連想語の和集合から関連度が大きい順に抽出された所定数の連想語について、各文書データ内での出現頻度を取得する。続いて、文書データの作成日付に応じて重み付けをし、鮮度を算出する。そして、先に作成した連想語マップ内の各タグを、鮮度に応じた表示に変えればよい。
以上説明したように、本実施形態によれば、各連想語が出現する文書データの日付を参照して重み付けをすることで、連想語の検索結果に時間的な情報を含めることができる。従来の検索では、連想語の抽出ベースとなっている文書データには、作成時点やデータベースへの蓄積時点などの時間の要素が内在しているにもかかわらず、検索結果では時間情報が捨象されていた。これに対し本実施形態では、時間情報をある程度検索結果に反映させることが可能になる。
この手法を応用することで、「特定の期間に盛り上がりを見せた話題に関する連想語」を検索することもできる。例えば、特定の期間に作成された文書データに含まれる連想語にのみ重みを与え、他の文書データに含まれる連想語にはゼロの重みを付与することで、不要な連想語を排除することができる。
重み付けは、他にも多様な検索視点から設定可能である。例えば、過去の文書データほど重みを大きくする、特定の時点をピークとした正規分布状の重みを与える、毎年一定期間(例えば、6〜9月)の重みを他の期間よりも大きくする、特定の曜日のみ重みを大きくする、などが考えられる。
なお、上述では文書データの作成日付に応じた重みを付与したが、他にも、文書データをデータベースに蓄積した日付に応じた重みを付与する、文書データの閲覧回数に応じた重みを付与する、などのように、文書データのメタデータに含まれる属性に応じて重みを変えるようにしてもよい。
4.連想検索結果に対するユーザフィードバック
従来の検索手法においては、連想語は予め蓄積されている文書データから抽出されたキーワードに基づいて検索される。しかし、このような手法では、検索精度にはある程度の限界がある。例えば、同一の文書内で共起する頻度は少ないものの、連想される可能性の高い語句などは漏れてしまう可能性がある。逆に、使用頻度の高い単語などは、同一の文書内で共起する頻度が高いため、連想される可能性が低いのに検索されノイズとなってしまう可能性がある。
そこで、本実施形態のユーザフィードバック反映処理部では、検索サービス装置の出力する連想検索結果に対してユーザのフィードバックを入れられるようにした。
図2を参照すると、ユーザフィードバック反映処理部90は、連想語追加部92、投票処理部94、タグ強調部96、検索履歴表示部97、選択肢表示部98を備える。
連想語追加部92は、ユーザから提案された連想語を受け取り、検索語と連想語とを新たなキーワードのペアとしてキーワード関連度保持部26に追加する。このとき、このペアに与えられる関連度は予め定められている初期値に設定する。提案された連想語と検索語とのペアが既にキーワード関連度保持部26に存在している場合は、その提案を無視してもよいし、または所定の値または所定の比率だけ関連度を増加させるようにしてもよい。
投票処理部94は、ユーザからの投票結果を受け取り、キーワード関連度保持部26内の検索語と連想語のペアについての関連度を変化させる。例えば、ユーザから連想語に対して賛成する投票があった場合には、検索語と連想語のペアについての関連度を所定の値または所定の比率だけ増加させる。反対に、ユーザから連想語に対して反対する投票があった場合には、検索語と連想語のペアについての関連度を所定の値または所定の比率だけ減少させる。このとき、関連度が予め定められている閾値以下になった場合には、そのペアをキーワード関連度保持部26から消去するようにしてもよい。
タグ強調部96は、各タグに対するユーザのクリックを集計し、連想語毎にクリックされた回数を保持しておく。そして、クリック数が多い連想語を含むタグについては、色を濃くしたりまたは色を変えるなどの強調表示をするように、ページ作成部66やマップ作成部78に対して指令を出す。上述したように、連想語を含むタグの大きさは、関連度の値に応じて決まっている。したがって、ユーザは、色の違うタグとサイズの違うタグとを見分けることで、他のユーザの関心が高い連想語と、検索語に対する関連度の高い連想語とを区別することが可能になる。
検索履歴表示部97は、検索サービス装置30にアクセスしたユーザのログを記録する。このログには、各ユーザが行った検索の履歴が含まれている。検索履歴表示部97は、ユーザからの要請に応じて、各ユーザの検索の履歴を表示する。
選択肢表示部98は、ユーザがタグをクリックしたときに画面に表示するメニューを作成する。メニューは表示出力部52に渡され、タグクラウド表示、連想語マップ表示またはベン図表示と重畳表示される。
図33は、検索語「肥満」に対する連想語のタグクラウド表示272に含まれているタグをユーザがクリックしたときに表示されるメニュー274の一例を示す。図示するように、ここでは「食」というタグがクリックされている。選択肢表示部98は、そのタグに対する選択肢として、「”食”に行く」276、「ウェブ検索する」278、「肥満−食の連想に投票する」280、「食は肥満と関係ないと思う」282の選択肢を含むメニュー274を表示する。
このうち、ユーザが「”食”に行く」276を選択すると、新たに検索語として「食」を指定したときの連想検索が実行される。すなわち、検索語「食」に対する連想語の抽出と検索結果の表示が、上述の比較差分検索実行部60、二次元マップ作成部70、または鮮度検索実行部80のいずれかによって行われる。タグ「食」が表示されているマップと同種類のマップを作成するようにしてもよいし、さらに別のメニューが表示されて、ユーザが所望の種類のマップを選べるようにしてもよい。
また、ユーザが「ウェブ検索する」278を選択すると、ユーザ端末においてウェブブラウザが起動して予め設定された検索サイトに接続され、当該検索サイトに対して「食」が検索語として送信される。
ユーザが、「肥満」の連想語として「食」が検索されたことに賛成する場合、「肥満−食の連想に投票する」280が選択される。この選択肢が選択されると、投票処理部94は、キーワード関連度保持部26内の「肥満」と「食」のキーワードペアの関連度を増加させる。これにより、図34(a)に示すように、「食」のタグの色が濃く表示される。ユーザが、「肥満」の連想語として「食」が検索されたことに反対する場合、「食は肥満と関係ないと思う」282が選択される。この選択肢が選択されると、投票処理部94は、キーワード関連度保持部26内の「肥満」と「食」のキーワードペアの関連度を減少させる。これにより、図34(b)に示すように、「食」のタグの色が薄く表示される。
ユーザが連想語に対する賛成または反対の投票をしたときに、投票処理部94は、投票した本人に対する表示態様と、他のユーザに対する表示態様とを異ならせるように、ページ作成部66やマップ作成部78に対して指令を出してもよい。こうすることで、ユーザは、自分が投票した連想語と他のユーザが投票した連想語とを区別することができる。
図35(a)は、ユーザが検索語に対する新たな連想語を提案するためのページ290の一例を示す。図示するように、検索語「肥満」に対してユーザが提案する連想語を入力するためのフィールド292が表示されている。ユーザが「提案する」ボタン294をクリックすると、入力された言葉がユーザ端末32から検索サービス装置30に送信される。連想語追加部92は、受け取った言葉と検索語とをキーワードにしたペアをキーワード関連度保持部26に格納する。
代替的に、連想語追加部92は、提案された連想語を直ちにキーワード関連度保持部26に格納するのではなく、当分の間、他のユーザによる提案された連想語に対する投票を受け付けるようにしてもよい。図35(b)はそのような投票を受け付けるためのページ298の一例を示す。図示するように、フィールド300には、全てのユーザから提案された言葉がタグとして表示される。ユーザがこのタグをクリックすると、図33で説明したメニューと同様のメニュー302が表示される。ユーザは、それぞれの選択肢304〜310を適宜選択することで、提案された言葉に対する連想語を調べたり、ウェブで検索したり、提案された言葉に対して賛成や反対の意思を表すことができる。
ユーザが賛成の投票をする毎に、フィールド300に表示される連想語のフォントを大きくしたり、反対の投票をする毎に、連想語のフォントを小さく表示したりしてもよい。
投票処理部94は、提案された連想語に対する賛成の投票が一定値を超えた場合、その連想語と検索語のペアをキーワード関連度保持部26に格納するようにしてもよい。また、投票処理部94は、提案された連想語に対する反対の投票が一定値を超えた場合、その連想語を破棄するようにしてもよい。
図36は、ユーザが行った検索の履歴を表示するページ312の一例を示す。ここには、他のユーザが、メニュー274で提示された選択肢276を利用して、タグに対する連想検索を繰り返したときの履歴が表示される。つまり、履歴313の場合、このユーザは、最初に「肥満」を検索語にして連想検索を実施し、続いて「メタボリックシンドローム」のタグをクリックしてこれを検索語にして連想検索を実施し、以下同様の処理を繰り返したことを表している。ユーザがいずれかの履歴をクリックすると、ページ314が表示される。各タグ316をクリックすることで、それぞれの連想検索結果を確認することができる。
このように、ユーザは、他のユーザによる検索の足跡を参照することによって、他人の連想の流れを辿っていくことができる。これによって、新たな視野を開拓したり、思いつかなかった発想を得たりするようなツールとして検索サービス装置を利用することができる。
なお、上述の説明では、タグクラウド表示されたタグに対してユーザフィードバックすることを述べたが、ベン図表示されたタグ、または連想語マップに表示されたタグについても、同様の方法でフィードバックを与えられることは言うまでもない。
また、上述の説明では、単一の検索語に対する連想語のタグに対してユーザフィードバックすることを述べたが、複数の検索語に対する連想語のタグに対しても、同様のことができる。この状況において、ユーザが連想語に対して賛成または反対の投票をする場合、選択肢表示部98は、複数の検索語のいずれに対しての投票かを選択できるようなメニュー274を表示することが好ましい。投票処理部94は、メニューで選択された検索語と連想語のキーワードペアの関連度を増加または減少させるようにする。
以上説明したように、本実施形態によれば、検索サービス装置の検索結果に対してユーザがフィードバックを与えられるので、連想検索の精度を向上させることができる。また、タグをクリックするだけでフィードバック用の選択肢が表示されるという仕組みを設けることで、参加の垣根を低くしている。これによって、投票や提案といったユーザの自然な参加を促し、ユーザの集合知によって連想検索の精度を継続的に高められる可能性がある。
また、比較的最近の話題についての連想語は、それを含む文書データがデータベースに相応の数だけ蓄積されるまでに時間がかかるため、連想検索結果として反映されるまでにタイムラグが生じてしまう。しかし、上述のようなユーザのフィードバックを利用することで、より早期に連想検索結果として反映される可能性がある。
以上、本発明をいくつかの実施の形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
請求項に記載の各構成要件が果たすべき機能は、本実施例において示された各機能ブロックの単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
本明細書にはいくつかの実施の形態が含まれるが、これらの実施形態は適宜組み合わせて用いることが可能である。また、上述の実施形態のうちの一部を含まないように構成することも可能である。
10 連想検索システム、 12 文書データベース、 14 キーワード抽出部、 16 キーワード保持部、 18 関連度算出部、 20 キーワード出現頻度表、 22 キーワード組合せ頻度総和表、 24 キーワード頻度総和表、 26 キーワード関連度保持部、 30 検索サービス装置、 36 ユーザ処理部、 42 検索語受付部、 44 ユーザ特定部、 46 ユーザフィードバック受付部、 50 連想検索エンジン、 52 表示出力部、 60 比較差分検索実行部、 62 連想語選択部、 64 連想語マッチング部、 66 ページ作成部、 70 二次元マップ作成部、 72 データ集計部、 74 主成分分析部、 76 座標データ変換部、 78 マップ作成部、 80 鮮度検索実行部、 82 出現頻度取得部、 84 鮮度算出部、 86 鮮度表示部、 90 ユーザフィードバック反映処理部、 92 連想語追加部、 94 投票処理部、 96 タグ強調部、 97 検索履歴表示部、 98 選択肢表示部。