(57)【特許請求の範囲】
【請求項１】
単語集合と文書集合との間の共起関係を表現するマトリクスを分割して得られた複数の領域から作成され、且つ、文書集合に含まれる部分集合を表す情報が与えられた場合に、前記複数の領域それぞれにおける単語の頻度の算出又は予測を可能にする情報を、要約情報として記憶する要約マトリクス記憶手段と、
前記部分集合を表す情報が入力されると、前記部分集合を表す情報と前記複数の領域との関係を調べ、得られた結果から、前記複数の領域それぞれに対する前記要約情報を参照して、前記複数の領域それぞれについて、それぞれに含まれる単語の、前記部分集合に対する頻度の上限を算出する領域上限算出手段と、
前記複数の領域それぞれについての前記頻度の上限を、前記単語が共通する領域毎に和算し、得られた和算値を、前記単語が共通する領域毎の単語の頻度の上限に設定する単語頻度算出手段と、
前記単語が共通する領域毎の単語の頻度の上限に基づいて、検索対象となる領域を求め、更に、求めた前記検索対象となる領域に基づいて、設定された数の単語を頻度が高い順に特定し、特定した単語を前記部分集合に特徴的な単語として出力する文書頻度参照手段と、
を備える検索装置。
【請求項２】
前記単語集合と前記文書集合との間の共起関係を特定するマトリクスを入力として、単語と文書に対するクラスタリング処理を行い、これによって、前記マトリクスを構成する単語集合と前記文書集合とを、それぞれ複数の部分集合に分割して、前記複数の領域を生成するクラスタ作成手段と、
前記クラスタリング処理による分割によって生成された前記複数の領域から、前記要約マトリクス記憶手段によって記憶される前記要約情報を作成する領域要約作成手段と、
を更に備える請求項１記載の検索装置。
【請求項３】
前記領域要約作成手段が、前記クラスタリング処理による分割によって生成された前記複数の領域それぞれについて、少なくとも、各領域内に含まれる単語の当該領域における頻度を求め、更に、求めた前記頻度の最大値を特定し、特定した前記最大値を前記要約情報とし、
前記領域上限算出手段が、前記部分集合を表す情報と前記複数の領域との関係として、前記複数の領域それぞれ毎に、当該領域に含まれている、前記部分集合を構成する文書の数を求め、求めた前記文書の数と、当該領域についての前記頻度の最大値とを比較し、比較結果に基づいて、前記頻度の上限を算出する、請求項２に記載の検索装置。
【請求項４】
前記領域要約作成手段が、前記クラスタリング処理による分割によって生成された前記複数の領域それぞれについて、少なくとも、各領域内の文書において当該領域内の単語が含まれるか否かを表すビット列を求め、求めた前記ビット列を前記要約情報とし、
前記領域上限算出手段が、前記部分集合を表す情報と前記複数の領域との関係として、前記複数の領域それぞれ毎に、前記部分集合を構成する文書が、当該領域に含まれているか否かを表すビット列を求め、当該領域上限算出手段によって求められたビット列と、前記領域要約作成手段によって求められたビット列とのＡＮＤ演算を実行し、演算結果に基づいて、前記頻度の上限を算出する、請求項２に記載の検索装置。
【請求項５】
複数のクラスタ処理手段と、クラスタ処理展開手段と、クラスタ処理選択手段とを更に備え、
前記クラスタ作成手段、前記領域要約作成手段、前記要約マトリクス記憶手段、前記領域上限算出手段、前記単語頻度算出手段、及び前記文書頻度参照手段は、前記複数のクラスタ処理手段それぞれに毎に備えられ、
前記複数のクラスタ処理手段それぞれにおいて、前記クラスタ作成手段それぞれは、互いに異なるクラスタリング処理を行い、
前記クラスタ処理展開手段は、前記部分集合を表す情報が入力されると、入力された情報を、前記複数のクラスタ処理手段それぞれの前記領域上限算出手段に入力し、
前記クラスタ処理選択手段は、前記複数のクラスタ処理手段それぞれの前記単語頻度算出手段が設定した、前記単語が共通する領域毎の単語の頻度の上限を受け取り、受け取った前記各単語の頻度の上限の分布に基づいて、前記複数のクラスタ処理手段のうちの少なくとも一つを選択し、選択した前記クラスタ処理手段の前記文書頻度参照手段のみに、処理を行わせる、請求項２に記載の検索装置。
【請求項６】
ＣＰＵ（Central Processing Unit）を備えるコンピュータを用いた検索方法であって、
前記ＣＰＵが、
（ａ）単語集合と文書集合との間の共起関係を表現するマトリクスを分割して得られた複数の領域から作成され、且つ、文書集合に含まれる部分集合を表す情報が与えられた場合に、前記複数の領域それぞれにおける単語の頻度の算出又は予測を可能にする情報を、要約情報として記憶する処理と、
（ｂ）前記部分集合を表す情報が入力されると、前記部分集合を表す情報と前記複数の領域との関係を調べ、得られた結果から、前記複数の領域それぞれに対する前記要約情報を参照して、前記複数の領域それぞれについて、それぞれに含まれる単語の、前記部分集合に対する頻度の上限を算出する処理と、
（ｃ）前記複数の領域それぞれについての前記頻度の上限を、前記単語が共通する領域毎に和算し、得られた和算値を、前記単語が共通する領域毎の単語の頻度の上限に設定する処理と、
（ｄ）前記単語が共通する領域毎の単語の頻度の上限に基づいて、検索対象となる領域を求め、更に、求めた前記検索対象となる領域に基づいて、設定された数の単語を頻度が高い順に特定し、特定した単語を前記部分集合に特徴的な単語として出力する処理と、
を実行することを特徴とする検索方法。
【請求項７】
前記ＣＰＵが、
（ｅ）前記単語集合と前記文書集合との間の共起関係を特定するマトリクスを入力として、単語と文書に対するクラスタリング処理を行い、これによって、前記マトリクスを構成する単語集合と前記文書集合とを、それぞれ複数の部分集合に分割して、前記複数の領域を生成する処理と、
（ｆ）前記（ｅ）のクラスタリング処理による分割によって生成された前記複数の領域から、前記（ａ）のステップで記憶される前記要約情報を作成する処理と、
を更に実行する請求項６に記載の検索方法。
【請求項８】
前記ＣＰＵが、
前記（ｆ）の作成において、前記クラスタリング処理による分割によって生成された前記複数の領域それぞれについて、少なくとも、各領域内に含まれる単語の当該領域における頻度を求め、更に、求めた前記頻度の最大値を特定し、特定した前記最大値を前記要約情報とし、
前記（ｂ）の算出において、前記部分集合を表す情報と前記複数の領域との関係として、前記複数の領域それぞれ毎に、当該領域に含まれている、前記部分集合を構成する文書の数を求め、求めた前記文書の数と、当該領域についての前記頻度の最大値とを比較し、比較結果に基づいて、前記頻度の上限を算出する、請求項７に記載の検索方法。
【請求項９】
前記ＣＰＵが、
前記（ｆ）の作成において、前記クラスタリング処理による分割によって生成された前記複数の領域それぞれについて、少なくとも、各領域内の文書において当該領域内の単語が含まれるか否かを表すビット列を求め、求めた前記ビット列を前記要約情報とし、
前記（ｂ）の算出において、前記部分集合を表す情報と前記複数の領域との関係として、前記複数の領域それぞれ毎に、前記部分集合を構成する文書が、当該領域に含まれているか否かを表すビット列を求め、求められたビット列と、前記（ｆ）の作成によって求められたビット列とのＡＮＤ演算を実行し、演算結果に基づいて、前記頻度の上限を算出する、請求項７に記載の検索方法。
【請求項１０】
前記ＣＰＵにより、
前記（ｅ）の生成が、前記クラスタリング処理の種類を変えて複数回実行され、
前記（ｆ）の作成と、前記（ａ）〜前記（ｃ）とが、前記（ｅ）の生成が実行される度に実行される場合において、
各（ｅ）の生成に対応する前記（ｃ）で設定された、前記単語が共通する領域毎の単語の頻度の上限から、それぞれの上限の分布に基づいて、少なくとも一つの、前記単語が共通する領域毎の単語の頻度の上限を選択し、選択した上限を用いて、前記（ｄ）の出力する処理を更に前記ＣＰＵが実行する、請求項７に記載の検索方法。
【請求項１１】
（ａ）単語集合と文書集合との間の共起関係を表現するマトリクスを分割して得られた複数の領域から作成され、且つ、文書集合に含まれる部分集合を表す情報が与えられた場合に、前記複数の領域それぞれにおける単語の頻度の算出又は予測を可能にする情報を、要約情報として記憶する処理と、
（ｂ）前記部分集合を表す情報が入力されると、前記部分集合を表す情報と前記複数の領域との関係を調べ、得られた結果から、前記複数の領域それぞれに対する前記要約情報を参照して、前記複数の領域それぞれについて、それぞれに含まれる単語の、前記部分集合に対する頻度の上限を算出する処理と、
（ｃ）前記複数の領域それぞれについての前記頻度の上限を、前記単語が共通する領域毎に和算し、得られた和算値を、前記単語が共通する領域毎の単語の頻度の上限に設定する処理と、
（ｄ）前記単語が共通する領域毎の単語の頻度の上限に基づいて、検索対象となる領域を求め、更に、求めた前記検索対象となる領域に基づいて、設定された数の単語を頻度が高い順に特定し、特定した単語を前記部分集合に特徴的な単語として出力する処理とを、コンピュータに実行させるためのプログラム。
【請求項１２】
（ｅ）前記単語集合と前記文書集合との間の共起関係を特定するマトリクスを入力として、単語と文書に対するクラスタリング処理を行い、これによって、前記マトリクスを構成する単語集合と前記文書集合とを、それぞれ複数の部分集合に分割して、前記複数の領域を生成する処理と、
（ｆ）前記（ｅ）の処理におけるクラスタリング処理による分割によって生成された前記複数の領域から、前記（ａ）の処理で記憶される前記要約情報を作成する、処理とを、更に前記コンピュータに実行させる、請求項１１に記載のプログラム。
【請求項１３】
前記（ｆ）の処理において、前記クラスタリング処理による分割によって生成された前記複数の領域それぞれについて、少なくとも、各領域内に含まれる単語の当該領域における頻度を求め、更に、求めた前記頻度の最大値を特定し、特定した前記最大値を前記要約情報とし、
前記（ｂ）の処理において、前記部分集合を表す情報と前記複数の領域との関係として、前記複数の領域それぞれ毎に、当該領域に含まれている、前記部分集合を構成する文書の数を求め、求めた前記文書の数と、当該領域についての前記頻度の最大値とを比較し、比較結果に基づいて、前記頻度の上限を算出する、請求項１２に記載のプログラム。
【請求項１４】
前記（ｆ）の処理において、前記クラスタリング処理による分割によって生成された前記複数の領域それぞれについて、少なくとも、各領域内の文書において当該領域内の単語が含まれるか否かを表すビット列を求め、求めた前記ビット列を前記要約情報とし、
前記（ｂ）の処理において、前記部分集合を表す情報と前記複数の領域との関係として、前記複数の領域それぞれ毎に、前記部分集合を構成する文書が、当該領域に含まれているか否かを表すビット列を求め、求められたビット列と、前記（ｆ）の処理によって求められたビット列とのＡＮＤ演算を実行し、演算結果に基づいて、前記頻度の上限を算出する、請求項１２に記載のプログラム。
【請求項１５】
前記（ｅ）の処理が、前記クラスタリング処理の種類を変えて複数回実行され、
前記（ｆ）の処理と、前記（ａ）〜前記（ｃ）の処理とが、前記（ｅ）の処理が実行される度に実行される場合において、
各（ｅ）の処理に対応する前記（ｃ）の処理で設定された、前記単語が共通する領域毎の単語の頻度の上限から、それぞれの上限の分布に基づいて、少なくとも一つの、前記単語が共通する領域毎の単語の頻度の上限を選択し、選択した上限を用いて、前記（ｄ）の処理を実行させる、処理を更に前記コンピュータに実行させる、請求項１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書データベースに格納されている文書集合の部分集合を表すクエリを入力として、その部分集合内に多く登場するキーワードを出力する検索装置、検索方法、及びプログラムが格納された記録媒体に関する。
【背景技術】
【０００２】
従来から、大量の文書の中から必要な情報を抽出するため、特徴語の検索装置の開発が行われている。特徴語の検索を最も単純に実現する方法としては、入力された文書番号のリストを元に、順番に各文書を読み込み、文書内に含まれる単語の数を数え、高頻度な語を特徴的として抽出する方法が考えられる。しかし、この文書の読み込み処理はランダムアクセスとなり、繰り返し文書データを読み込む必要があるため、検索の速度が遅いという問題がある。また、読み込む文書をサンプリングし、一部の文書だけを読み込むというアプローチも考えられるが、この方法は大きく精度が下がるという問題がある。【０００３】
このような問題に対応するため、例えば、非特許文献１は、文書番号をキーとして文書内に登場する単語のリストを圧縮し、この圧縮したリストを文書単語連想用データとしてメモリ上に保持した状態で検索を行う検索システムを開示している。非特許文献１に開示の検索システムは、メモリ上のデータにより、入力された文書リストに含まれる単語の列を高速に参照できるので、高速に関連語を返すことができる。
【０００４】
また、非特許文献２は、文書集合に含まれる単語の転置インデックスを頻度順に並べ替えて得られた頻度順インデックスと、この頻度順インデックスに対する問い合わせを受け付ける手段とを、構成要素として備えた検索システムを開示している。
【０００５】
非特許文献２に開示の検索システムは、問い合わせを受けると、先ず、頻度順インデックスを上位から順に（高頻度な単語から順に）読み込む。次に、この検索システムは、各単語に対する文書番号のリストと、入力された文書リストとを比較し、入力された文書リストで特定される文書集合内での各単語の頻度を決定する。
【０００６】
この処理は、読み込まれた第ｋ位の単語の頻度ｆ（ｋ）が、次に読まれる頻度順インデックスにおける単語の文書集合（検索対象となっている全ての文書集合）内での頻度より大きくなった時点で終了する。このように、読み込み処理は、頻度順インデックスに基づいて、毎回同じ順序で行われるため、読み込み処理のシーケンシャルアクセスが実現できる。よって、非特許文献２に開示の検索システムによれば、検索の速度の向上が可能であると考えられる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】高野明彦、他著、「汎用連想計算エンジンの開発と大規模文書分析への応用」、第１９回ＩＰＡ技術発表会、２０００年
【非特許文献２】吉田一星、宅間大介著、「対話的テキストマイニングのためのソフトウェア・アーキテクチャー」、ＰｒｏＶＩＳＩＯＮ  Ｎｏ．５２、２００７年、ｐ．７１−７８
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献１に開示の検索システムには、文書単語連想用データがメモリに格納される必要があるため、メモリに格納可能な程度の文書しか扱えないという問題がある。文書の量を増大させるには、メモリの容量を大きく拡大する必要がある。
【０００９】
例えば、１０００万個の文書に平均１０００個の単語が含まれると仮定する。このとき、単語を表す識別子を平均２バイトまで圧縮したとすると、システムが動作するために必要なメモリの量は２０ＧＢとなってしまい、大きなメモリ容量が求められる。このことから、非特許文献１に開示の検索システムでは、実質的に、特に大規模の文書集合を検索対象とする場合に、検索速度の向上は困難である。
【００１０】
また、非特許文献２に開示の検索システムでは、クエリで指定された文書集合と、全体の文書集合との間で、単語の分布が大きく異なる場合に、大量の単語に対して文書番号のリストを読んだ上で、入力された文書リストとの比較を行う必要がある。このため、非特許文献２に開示の検索システムによっても、検索速度の向上は不十分である。
【００１１】
本発明の目的は、上記問題を解消し、検索対象が大規模な文書集合であっても、文書集合に対する検索の高速化を図り得る、検索装置、検索方法及びプログラムが格納された記録媒体を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明における検索装置は、文書集合からその部分集合に特徴的な単語を検索する検索装置であって、
要約マトリクス記憶部と、領域上限算出部と、単語頻度算出部と、文書頻度参照部とを備え、
前記要約マトリクス記憶部は、
単語集合と文書集合との間の共起関係を表現するマトリクスを分割して得られた複数の領域から作成され、且つ、文書集合に含まれる部分集合を表す情報が与えられた場合に、前記複数の領域それぞれにおける単語の頻度の算出又は予測を可能にする情報を、要約情報として記憶し、
前記領域上限算出部は、
前記部分集合を表す情報が入力されると、前記部分集合を表す情報と前記複数の領域との関係を調べ、得られた結果から、前記複数の領域それぞれに対する前記要約情報を参照して、前記複数の領域それぞれについて、それぞれに含まれる単語の、前記部分集合に対する頻度の上限を算出し、
前記単語頻度算出部は、
前記複数の領域それぞれについての前記頻度の上限を、前記単語が共通する領域毎に和算し、得られた和算値を、前記単語が共通する領域毎の単語の頻度の上限に設定し、
前記文書頻度参照部は、
前記単語が共通する領域毎の単語の頻度の上限に基づいて、検索対象となる領域を求め、更に、求めた前記検索対象となる領域に基づいて、設定された数の単語を頻度が高い順に特定し、特定した単語を前記部分集合に特徴的な単語として出力する、
ことを特徴とする。【００１３】
また、上記目的を達成するため、本発明における検索方法は、文書集合からその部分集合に特徴的な単語を検索するための検索方法であって、
（ａ）単語集合と文書集合との間の共起関係を表現するマトリクスを分割して得られた複数の領域から作成され、且つ、文書集合に含まれる部分集合を表す情報が与えられた場合に、前記複数の領域それぞれにおける単語の頻度の算出又は予測を可能にする情報を、要約情報として記憶するステップと、
（ｂ）前記部分集合を表す情報が入力されると、前記部分集合を表す情報と前記複数の領域との関係を調べ、得られた結果から、前記複数の領域それぞれに対する前記要約情報を参照して、前記複数の領域それぞれについて、それぞれに含まれる単語の、前記部分集合に対する頻度の上限を算出するステップと、
（ｃ）前記複数の領域それぞれについての前記頻度の上限を、前記単語が共通する領域毎に和算し、得られた和算値を、前記単語が共通する領域毎の単語の頻度の上限に設定するステップと、
（ｄ）前記単語が共通する領域毎の単語の頻度の上限に基づいて、検索対象となる領域を求め、更に、求めた前記検索対象となる領域に基づいて、設定された数の単語を頻度が高い順に特定し、特定した単語を前記部分集合に特徴的な単語として出力するステップとを、有することを特徴とする。【００１４】
更に、上記目的を達成するため、本発明におけるプログラムが格納された記録媒体は、文書集合からその部分集合に特徴的な単語をコンピュータに検索させるためのプログラムが格納された記録媒体であって、
前記コンピュータに、
（ａ）単語集合と文書集合との間の共起関係を表現するマトリクスを分割して得られた複数の領域から作成され、且つ、文書集合に含まれる部分集合を表す情報が与えられた場合に、前記複数の領域それぞれにおける単語の頻度の算出又は予測を可能にする情報を、要約情報として記憶するステップと、
（ｂ）前記部分集合を表す情報が入力されると、前記部分集合を表す情報と前記複数の領域との関係を調べ、得られた結果から、前記複数の領域それぞれに対する前記要約情報を参照して、前記複数の領域それぞれについて、それぞれに含まれる単語の、前記部分集合に対する頻度の上限を算出するステップと、
（ｃ）前記複数の領域それぞれについての前記頻度の上限を、前記単語が共通する領域毎に和算し、得られた和算値を、前記単語が共通する領域毎の単語の頻度の上限に設定するステップと、
（ｄ）前記単語が共通する領域毎の単語の頻度の上限に基づいて、検索対象となる領域を求め、更に、求めた前記検索対象となる領域に基づいて、設定された数の単語を頻度が高い順に特定し、特定した単語を前記部分集合に特徴的な単語として出力するステップとを、実行させることを特徴とする。
【発明の効果】
【００１５】
以上のように本発明における検索装置、検索方法及びプログラムが格納された記録媒体によれば、検索対象が大規模な文書集合であっても、検索時に読み込まなければならないデータを絞り込むことができるため、高速に特徴語を算出することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明における「文書」の例を示す図である。
【図２】本発明における「単語文書マトリクス」の一例を示す図である。
【図３】図２に示した単語文書マトリクスを分割した例を示す図である。
【図４】本発明の実施の形態１における検索装置の構成を示すブロック図である。
【図５Ａ】図１に示す単語文書マトリクス記憶部に記憶されているデータ構造の一例である単語テーブルを示す図である。
【図５Ｂ】図１に示す単語文書マトリクス記憶部に記憶されているデータ構造の一例である単語インデックスを示す図である。
【図６Ａ】図１に示すクラスタ作成部５による出力の例である単語領域リストを示す図である。
【図６Ｂ】図１に示すクラスタ作成部５による出力の例である文書領域リストを示す図である。
【図７Ａ】情報理論に基づく共クラスタリング装置による２次元クラスタリング処理を説明するためのクラスタリング前の単語文書マトリックスの状態を示す図である。
【図７Ｂ】情報理論に基づく共クラスタリング装置による２次元クラスタリング処理を説明するためのクラスタリング後の単語文書マトリックスの状態を示す図である。
【図８Ａ】単語マトリクスを対角化するクラスタリング処理を説明するためのクラスタリング前の単語文書マトリックスの状態を示す図である。
【図８Ｂ】単語マトリクスを対角化するクラスタリング処理を説明するためのクラスタリング後の単語文書マトリックスの状態を示す図である。
【図９】本実施の形態１における要約マトリクスの一例を示す図である。
【図１０】本実施の形態１における要約マトリクスの他の例を示す図である。
【図１１】本実施の形態１における領域上限マトリクスの一例を示す図である。
【図１２】本実施の形態１における単語上限リストの一例を示す図である。
【図１３】本発明の実施の形態１の検索方法で行われるクラスタリングプロセスでの処理を示すフロー図である。
【図１４】図１３に示したステップＰ１２を具体的に示すフロー図である。
【図１５】図１４に示したステップＰ１２０１を詳細に示すフロー図である。
【図１６】単語文書リストの一例を示す図である。
【図１７】図１４に示したステップＰ１２０２を詳細に示すフロー図である。
【図１８】ベクトル要約作成部が作成する対応表の一例を示す図である。
【図１９】本発明の実施の形態１の検索方法で行われる検索プロセスでの処理を示すフロー図である。
【図２０】図１９に示したステップＰ２１の具体例の一例を示すフロー図である。
【図２１】図１９に示したステップＰ２１の具体例の他の例を示すフロー図である。
【図２２】図２１に示したステップＰ２１１１の具体例を示すフロー図である。
【図２３】図１９に示したステップＰ２３の具体例を示すフロー図である。
【図２４】図２３に示したステップＰ２３０３を具体的に示すフロー図である。
【図２５】本発明の実施の形態２における検索装置の構成を示すブロック図である。
【図２６】本発明の実施の形態２の検索方法で行われる検索プロセスでの処理を示すフロー図である。
【図２７Ａ】実施例２において得られる単語上限リストの例を示す図である。
【図２７Ｂ】実施例２において得られる単語上限リストの例を示す図である。
【発明を実施するための形態】
【００１７】
最初に、本発明における実施の形態について説明する前に、本明細書において本発明を説明するために用いる語彙を図１〜図３を用いて定義する。先ず、本発明では、「文書」は、少なくとも、文字列で構成される本文と、当該文書を識別する識別子（例えば、任意の整数値等が挙げられる。以下、「文書番号」とする）とを有する情報として定義される。図１は、本発明における「文書」の例を示す図である。図１の例では、７つの文書についての文書番号と本文とが示されている。
【００１８】
また、本発明では、「単語」は、形態素解析やＮグラム（文字列をＮ文字ごとに区切る）など何らかの基準に従って、文書中の本文から切り出された文字列として定義される。なお、「単語」には、本文中に現れる語（例えば「りんご」や「ガソリン」等）だけでなく、形態素解析や意味分析によって、文書に内に含まれると認識された意味に関する語や句（例、「果実」や「燃料」）などを含めても良い。
【００１９】
更に、本発明では、「文書」と「単語」との間の共起関係を表現した行列が、「単語文書マトリックス」として定義される。図２は、本発明における「単語文書マトリクス」の一例を示す図である。図２では、図１で示した７つの文書に対する「単語文書マトリクス」が黒線の枠内に示されている。
【００２０】
図２の単語文書マトリクスは、文書集合内に登場する単語を各行で表現し、各文書を各列で表現している。各行は、該当の単語が各文書内に登場するかどうか（登場する場合を１、登場しない場合を０とする）を示している。例えば、１行目の「容疑」という単語は、文書１、文書３、文書５、文書７に登場する。また、２行目の「ガソリン」という単語は、文書２、文書３、文書４、文書６に登場する。
【００２１】
さらに、単語の文書集合内の「頻度」を、この文書集合内において、当該単語が含まれる文書の数として定義する。例えば、単語「ガソリン」の図１で示した７つの文書の文書集合における「頻度」は、４となる。また、以降の説明では、「頻度」が高い単語に対して、高頻度な単語あるいは高頻度語という表現を用いることがある。
【００２２】
本発明における検索装置は、ある文書の集合（文書集合）Ｄａｌｌを検索対象とし、更に、少なくとも文書集合Ｄａｌｌの部分集合（文書集合Ｄ）を表現する情報、例えば、文書番号のリスト（以下、入力文書リスト）を入力とする。そして、本発明における検索装置は、文書集合Ｄに登場する単語集合Ｗの中から、文書集合Ｄ内での頻度の高い上位ｋ個の単語のリストを出力する。このような検索装置は、連想検索エンジンとも呼ばれる。また、このような検索装置は、テキストマイニングシステムや検索エンジンにおいて、あるクエリで表現される文書集合と関係が深い概念を表す高頻度な語を検索するために役立つ。
【００２３】
ここで、更に、単語文書マトリクスにおける「領域」、「単語領域」、「文書領域」を、図３を用いて定義する。図３は、図２に示した単語文書マトリクスを分割した例を示す図である。図３には、図１に示した文書集合に対する単語文書マトリックスが点線により４つの部分に分割された例が示されている。
【００２４】
「領域」とは、単語文書マトリックス内において、文書集合を複数の部分集合に分類し、単語集合を複数の部分集合に分類することによって、縦横方向に分割して得られた、単語文書マトリックスの一部を意味する。なお、以下の説明では、単語文書マトリックスＷＤ内の単語領域数をｍ、文書領域数をｎとする。また、領域の集合をＣとし、各領域をＣ［ｉ］［ｊ］｛０≦ｉ＜ｍ、０≦ｊ＜ｎ｝として表現することがある。図３の例では、単語文書マトリックスは、Ｃ［０］［０］、Ｃ［０］［１］、Ｃ［１］［０］、Ｃ［１］［１］の４つの領域に分割されている。
【００２５】
「単語領域」とは、単語文書マトリックスを単語集合のみを複数の部分集合に分類することによって生成される、単語文書マトリックスの一部を意味する。なお、以下の説明では、ある単語文書マトリックスに対する単語領域の集合をＷＣとし、各単語領域をＷＣ［ｉ］｛０≦ｉ＜ｍ｝として表現することがある。図３の例では、Ｃ［０］［０］とＣ［０］［１］から成る単語領域をＷＣ［０］、Ｃ［１］［０］とＣ［１］［１］から成る単語領域をＷＣ［１］と表現できる。
【００２６】
「文書領域」とは、単語文書マトリックスを文書集合のみを複数の部分集合に分類することによって生成される、単語文書マトリックスの一部を意味する。なお、以下の説明では、文書領域の集合をＤＣとし、各文書領域をＤＣ［ｊ］｛０≦ｊ＜ｎ｝として表現することがある。例えば、図３の例では、Ｃ［０］［０］とＣ［１］［０］から成る文書領域をＤＣ［０］、Ｃ［０］［１］とＣ［１］［１］から成る文書領域をＤＣ［１］と定義することができる。
【００２７】
更に、「領域」、「単語領域」、「文書領域」に関する文書頻度を表現した語彙として、「領域頻度」、「静的領域頻度」、及び「動的領域頻度」を以下のように定義する。ある文書集合における単語Ｗの領域Ｃ［ｉ］［ｊ］に対する「領域頻度」を、領域Ｃ［ｉ］［ｊ］内で単語Ｗが登場する文書の数として定義する。例えば、図３の例では、単語「ガソリン」に対する領域Ｃ［１］［０］内の領域頻度は１、領域Ｃ［１］［１］内の領域頻度は３となる。
【００２８】
また、単語Ｗの単語領域ＷＣ［ｉ］における「領域頻度」も同様に、単語領域ＷＣ［ｉ］内で単語Ｗが登場する文書の数として定義する。さらに、単語Ｗの文書領域ＤＣ［ｊ］における「領域頻度」も同様に、文書領域ＤＣ［ｊ］内で単語Ｗが登場する文書の数として定義する。そして、関連語検索装置内の、全体文書集合Ｄａｌｌにおける単語Ｗの領域Ｃ［ｉ］［ｊ］に対する領域頻度を「静的領域頻度」、入力される文書集合Ｄにおける単語Ｗの領域Ｃ［ｉ］［ｊ］に対する領域頻度を動的領域頻度と呼ぶ。
【００２９】
（実施の形態１）
以下、本発明の実施の形態１における検索装置、検索方法及びプログラムについて、図４〜図２４を参照しながら説明する。最初に、本実施の形態１における検索装置の構成について図４〜図１２を用いて説明する。図４は、本発明の実施の形態１における検索装置の構成を示すブロック図である。
【００３０】
図４に示すように、本実施の形態１における検索装置は、要約マトリクス記憶部１と、領域上限算出部２と、単語頻度算出部３と、文書頻度参照部４とを備え、これらによって、文書集合からその部分集合に特徴的な単語を検索する。
【００３１】
要約マトリクス記憶部１は、要約情報を記憶している。要約情報は、単語集合Ｗａｌｌと文書集合Ｄａｌｌとの間の共起関係を表現するマトリクスを分割して得られた複数の領域から作成されている。また、要約情報は、文書集合Ｄａｌｌに含まれる部分集合Ｄを表す情報が与えられた場合に、複数の領域それぞれにおける単語の頻度の算出又は予測を可能にする情報である。
【００３２】
領域上限算出部２は、文書集合Ｄａｌｌに含まれる部分集合Ｄを表す情報が入力されると、部分集合Ｄを表す情報と複数の領域との関係を調べる。そして、領域上限算出部２は、得られた結果から、複数の領域それぞれに対する要約情報を参照して、複数の領域それぞれについて、それぞれに含まれる単語の、部分集合Ｄに対する頻度の上限を算出する。
【００３３】
単語頻度算出部３は、複数の領域それぞれについての頻度の上限を、単語が共通する領域毎に和算し、得られた和算値を、単語が共通する領域毎の単語の頻度の上限に設定する。文書頻度参照部４は、単語が共通する領域毎の単語の頻度の上限に基づいて、検索対象となる領域を求める。そして、文書頻度参照部４は、求めた検索対象となる領域に基づいて、設定された数の単語を頻度が高い順に特定し、特定した単語を部分集合Ｄに特徴的な単語として出力する。
【００３４】
なお、共起関係を表現するマトリクスとしては、図２に示した単語文書マトリクスが挙げられる。各領域としては、図３に示した領域Ｃ［ｉ］［ｊ］が挙げられる。また、単語が共通する領域としては、上述した「単語領域」が挙げられる。単語の文書集合内の「頻度」は、上述したように、この文書集合内において、当該単語が含まれる文書の数である。また、文書集合Ｄａｌｌに含まれる部分集合Ｄを表す情報としては、上述した入力文書リストが挙げられる。
【００３５】
このように、本実施の形態１における検索装置は、検索時に、入力文書リストと、単語文書マトリックス内の領域ごとに作成された要約情報とを用いて、各領域に含まれる単語の頻度の上限を判定する。更に、検索装置は、頻度の上限を単語領域ごとにまとめることにより、検索対象となる領域、即ち、読み込むべき単語の領域を決定する。このため、本実施の形態１における検索装置によれば、無駄な単語領域に対する読み込み処理を避けることができ、検索の高速化が達成される。
【００３６】
ここで、本実施の形態１における検索装置について更に具体的に説明する。図１に示すように、本実施の形態１においては、検索装置は、更に、クラスタ作成部５と、領域要約作成部６と、単語文書マトリクス記憶部７とを備えている。
【００３７】
単語文書マトリックス記憶部７は、文書集合Ｄａｌｌから抽出した単語のリストと、単語文書マトリックス又はこれと意味的に同等の情報を保持する任意のデータ構造とを備えるデータベースである。図５Ａは、図１に示す単語文書マトリクス記憶部に記憶されているデータ構造の一例を示す図である。図５Ｂには、転置インデックスと呼ばれるデータ構造が示されている。転置インデックスは、単語テーブルと単語インデックスとを備えている。単語テーブルは、単語と単語とを識別するための識別子（単語毎に付された単語番号）が対応する単語と共に特定されているテーブルである。単語インデックスは、単語番号をキーとして、単語番号で指定される単語を含む文書の文書番号が特定されているインデックスである。
【００３８】
クラスタ作成部５は、単語文書マトリクス記憶部７に記憶されている単語文書マトリクス（本実施の形態１では図５Ａ及び図５Ｂに示す単語テーブルと単語インデックス）を入力として、文書と単語に対する２次元クラスタリング処理を実行する。このクラスタリング処理により、単語文書マトリクス内の文書の集合は複数の文書領域に分割され、単語文書マトリクス内の単語の集合は複数の単語領域に分割される。
【００３９】
また、クラスタ作成部５は、２次元クラスタリング処理の終了後、各文書が含まれる文書領域を表す識別子（文書領域番号）を、領域上限算出部２と領域要約作成部６とに出力する。更に、クラスタ作成部５は、各単語が含まれる単語領域を表す識別子（単語領域番号）を、文書頻度参照部４と領域要約作成部６とに出力する。
【００４０】
クラスタ作成部５による２次元クラスタリング処理は、少なくとも単語文書マトリックスを入力として受け付け、この単語文書マトリックス内の単語と文書の共起情報を元に行われる。また、本実施の形態１では、単語の集合を複数の単語領域に分割するクラスタリング処理と、文書の集合を複数の文書領域に分割するクラスタリング処理とが行われる。このような２次元クラスタリング処理により、各単語に対しその単語がどの単語領域に入るかを意味する識別子（単語領域番号）の列と、各文書に対しその文書がどの文書領域に入るかを意味する識別子（文書領域番号）の列とが出力される。
【００４１】
なお、「クラスタリング処理」とは、ある対象物の集合を複数の部分集合（「クラスタ」と呼ぶ）に分割する処理である。クラスタリング処理では、類似する対象物同士が同じクラスタに入るように、また、異なる対象物同士が異なるクラスタに入るようにクラスタが生成される。
【００４２】
図６Ａ及び図６Ｂは、図１に示すクラスタ作成部５による出力の例を示す図であり、図６Ａは単語領域リストを示し、図６Ｂは文書領域リストを示している。図６Ａに示す単語領域リストは、各単語番号と単語領域番号との関係を表すテーブルである。これは単語番号で指定される単語が、どの単語領域に入るかを単語領域番号で示している。例えば、２行目の単語番号「２」は単語「ガソリン」（図５Ａ参照）を意味し、「ガソリン」という単語は単語領域が「１」つまりＤＣ［１］に入ることを意味する。
【００４３】
また、図６Ｂに示す文書領域リストは、各文書番号と文書領域番号との関係を表すテーブルである。これは文書番号で指定される文書が、どの文書領域に入るかを文書領域番号で示している。
【００４４】
また、本実施の形態１においては、クラスタ作成部５は、具体的には、２次元クラスタリング処理を実現する以下のいずれかの装置を備えることができる。２次元クラスタリング処理を実現するクラスタリング装置としては、情報理論に基づく共クラスタリング装置（関連技術１参照）や、Non-Negative Matrix Factorization(以下、「ＮＭＦ」)を用いたクラスタリング装置（関連技術２参照）、ＰＬＳＡを用いたクラスタリング装置（関連技術３参照）が挙げられる。
【００４５】
［関連技術１］I. S. Dhillon, S. Mallela and D. S. Modha著「Information-theoretic co-clustering」、In Proceedings of ACM SIGKDD International Conference on pages 89--98、 2003.
［関連技術２］W.Xu, X.Liu and Y.Gong著「Document clustering based on non-negative matrix factorization」、In Proceedings of ACM SIGIR International Conference on pages 267-273、 2003.
［関連技術３］T.Hofmann著「Probabilistic Latent Semantic Analysis」、In Proceedings of Conference on Uncertainty in Artificial Intelligence on pages 289-296、 1999.
【００４６】
上述の「情報理論に基づく共クラスタリング装置」は、単語文書マトリックスに加え、作成する単語領域の数と、作成する文書領域の数とを更に入力とする。この装置によるクラスタリング処理は、クラスタリング処理を行う前における単語と文書との間の相互情報量と、クラスタリング処理を行った後の単語と文書との間の相互情報量との差が最小化するように、単語と文書とを分類する。この特徴により、単語領域と文書領域とで単語文書マトリックスを分割すると、相関性が高く１が多く含まれる高密度な領域と、相関性が低く０（ゼロ）ばかりが含まれる低密度な領域とが生成される。
【００４７】
情報理論に基づく共クラスタリング装置による処理の結果を、図７Ａ及び図７Ｂを用いて、より直感的に説明する。図７Ａ及び図７Ｂは、情報理論に基づく共クラスタリング装置による２次元クラスタリング処理を説明する図であり、図７Ａはクラスタリング前の単語文書マトリックスの状態を示し、図７Ｂはクラスタリング後の単語文書マトリックスの状態を示している。
【００４８】
なお、図７Ａの例では、作成する単語領域の数と、作成する文書領域の数とは、それぞれ４に設定されている。また、各領域における濃淡の程度は、「１」が含まれる割合を示している。また、クラスタリング前の単語文書マトリックスでは、単語と文書とが均等に分散しており、「１」となる箇所は、マトリックス内に均等に分布している。
【００４９】
図７Ｂに示すクラスタリング後の単語文書マトリックスは、クラスタリング前の単語文書マトリックス内の単語と文書とをそれぞれ、クラスタリング装置によって割り当てられた単語領域番号毎、及び文書領域番号毎に並べ直して得られている。また、クラスタリング後の単語文書マトリックスは、高密度な領域と低密度な領域とを有しており、よって、ある文書集合が決まると、その文書集合と相関性の高い単語の集合がどの単語領域に含まれるかが明確となる。
【００５０】
「ＮＭＦ」を用いたクラスタリング装置、及び「ＰＬＳＡ」を用いたクラスタリング装置では、単語文書マトリックスと、作成するクラスタの数Ｋとを入力として、クラスタリング処理が行われる。これら二つのクラスタリング装置は、単語と文書との両方を概念の集合として捉え、各単語と各文書とのそれぞれをＫ個の概念に分類する。よって、単語に対して割り当てられた概念のクラスタを単語領域と捉え、文書に対して割り当てられた概念のクラスタを文書領域として捉えると、これら二つのクラスタリング装置で行われる処理も２次元クラスタリングとして捉えることができる。
【００５１】
なお、上述した各クラスタリング装置で行われるクラスタリング処理は、単語と文書とを同じ概念のクラスタ集合に分割することを目的としており、単語文書マトリックスを対角化するように、領域の集合を生成するのが好ましい。この処理結果をより直感的に説明するために図８Ａ及び図８Ｂを用いる。
【００５２】
図８Ａ及び図８Ｂは、単語マトリクスを対角化するクラスタリング処理を説明する図であり、図７Ａ及び図７Ｂと同様、図８Ａは、クラスタリング前の単語文書マトリックスの状態を示し、図８Ｂは、クラスタリング後の単語文書マトリックスの状態を示している。また、各領域における濃淡の程度は、「１」が含まれる割合を示している。単語マトリクスを対角化するクラスタリング処理では、単語と文書とで分類先のクラスタを共有するため、単語文書マトリックスは、対角化されるように（濃い領域が対角線上に並ぶように）分割される。
【００５３】
本実施の形態１ではこのように、単語文書マトリクスに対して、類似する概念を持つ単語と文書とを同じ領域にまとめるように処理が行われ、単語と文書とを分割する任意の処理は２次元クラスタリング処理として捉えられる。
【００５４】
領域要約作成部６は、クラスタ作成部５のクラスタリング処理による分割によって生成された複数の領域から、要約情報を作成し、これを要約マトリクス記憶部１に記憶させる。本実施の形態１では、要約情報は、入力文書リストが与えられた際に各領域内の単語の動的領域頻度の上限を算出するための情報であり、要約マトリクスと呼ばれるものである。また、本実施の形態１では、領域要約作成部６は、クラスタ作成部５から出力された単語領域リストと文書領域リストとから、単語文書マトリックス記憶部７内の単語インデックスを参照し、要約マトリクスを作成する。領域要約作成部６は、例えば、図９に示す要約マトリクス、又は図１０に示す要約マトリクスを作成することができる。
【００５５】
図９は、本実施の形態１における要約マトリクスの一例を示す図である。図９の例では、４×４で分割された単語文書マトリックスの各領域に対して、動的領域頻度の上限を算出するための情報として、各領域内の単語の静的領域頻度の最大値が特定されている。
【００５６】
図９に示すように、例えば、この要約マトリックスの一行目は、「４８、１、０、７」となっている。これは、単語領域ＷＣ［０］に含まれる単語が、文書領域ＤＣ［０］では最大４８文書に存在し、文書領域ＤＣ［１］では最大１文書に存在し、ＤＣ［２］では最大０文書、つまり一文書も存在せず、文書領域ＤＣ［３］では最大７文書に存在することを意味している。
【００５７】
また、図１０は、本実施の形態１における要約マトリクスの他の例を示す図である。図１０の例では、４×４で分割された単語文書マトリックスの各領域に対して、動的領域頻度の上限を算出するための要約情報として、各領域内において単語が文書に登場しているかどうかを示すビット列が特定されている。
【００５８】
図１０に示すように、例えば、領域Ｃ［０］［０］については｛１、１、１、１・・・｝というビット列が特定されている。このビット列は、単語領域ＷＣ［０］内の単語は、文書領域ＤＣ［０］内の少なくとも１番目、２番目、３番目、４番目の文書に登場する可能性があることを意味している。また、領域Ｃ［１］［０］については｛０、１、０、０・・・｝というビット列が特定されている。このビット列は、単語領域ＷＣ［１］内の単語は、文書領域ＤＣ［０］内の少なくとも２番目の文書に登場する可能性があることを意味している。
【００５９】
ここで、図９に示す要約マトリクスを作成する領域要約作成部６の具体例について説明する。特に、図９に示す要約マトリクスを作成する領域要約作成部６については、「最大値要約作成部」と称する。最大値要約作成部６は、クラスタリング処理による分割によって生成された複数の領域それぞれについて、少なくとも、各領域内に含まれる単語の当該領域における頻度（静的領域頻度）を求める。更に、最大値要約作成部６は、求めた静的領域頻度の最大値を特定する。具体的は、最大値要約作成部６は、クラスタ作成部５が入力した単語領域リストと文書領域リストとを用いる。更に、最大値要約作成部６は、各領域に対応する単語文書マトリックスの部分を単語文書マトリックス記憶部７から読み込み、単語の静的領域頻度の最大値（図９参照）を算出する。
【００６０】
また、図１０に示す要約マトリクスを作成する領域要約作成部６の具体例について説明する。特に、図１０に示す要約マトリクスを作成する領域要約作成部６については、「ベクトル要約作成部」と称する。ベクトル要約作成部６は、クラスタリング処理による分割によって生成された複数の領域それぞれについて、少なくとも、各領域内の文書において当該領域内の単語が含まれるか否かを表すビット列を求める。具体的には、ベクトル要約作成部６は、クラスタ作成部５が入力した単語領域リストと文書領域リストを用いる。更に、ベクトル要約作成部６は、各領域に対応する単語文書マトリクスの部分を単語文書マトリックス記憶部７から読み込み、領域内の各文書が領域内のいずれかの単語を含むかどうかを調べる。そして、ベクトル要約作成部６は、調べた結果から、領域内の文書数と同じ長さのビット列（図１０参照）を作成する。
【００６１】
このようにして、最大値要約作成部及びベクトル要約作成部によって作成された要約マトリクスは、要約マトリックス記憶部１に記憶される。その後、領域上限算出部２、単語頻度算出部３、及び文書頻度参照部４による検索処理に利用される。
【００６２】
領域上限算出部２は、本実施の形態１では、ユーザが操作する入力装置や、外部のモジュールから少なくとも入力文書リストが検索装置に入力されると、呼び出される。そして、領域上限算出部２は、入力文書リストと、クラスタ作成部５から渡された文書領域リストと、要約マトリックス内の情報とを参照し、単語文書マトリックスの各領域に含まれる単語の動的領域頻度の上限を算出する。更に、領域上限算出部２は、算出した上限から領域上限マトリクスを生成し、これと単語領域リストとを単語頻度算出部３に出力する。
【００６３】
ここで、「領域上限マトリクス」とは、単語文書マトリクス内の各領域における、動的領域頻度の上限値を行列化して得られたものである。図１１は、本実施の形態１における領域上限マトリクスの一例を示す図である。図１１の例では、例えば、領域Ｃ［０］［０］における値は「１９」となっている。これは、単語領域ＷＣ［０］に含まれる単語は、入力文書リスト内の文書領域［０］の文書集合において、たかだか１９回しか登場しないことを意味する。
【００６４】
具体的には、領域上限算出部２は、先ず、入力文書リストと文書領域リスト（図６Ｂ）との間で比較を行い、入力文書リスト内の文書がそれぞれどの文書領域に入るかを調べる。そして、領域上限算出部２は、文書領域毎に、当該領域に含まれている、入力文書リスト内の文書の数をカウントする（文書入力数）。次に、領域上限算出部２は、各領域に対し、図９に示した要約マトリクスを参照し、各領域内の単語の静的領域頻度の最大値を求める。そして、領域上限算出部２は、各領域について、静的領域頻度の最大値と文書入力数とを比較し、小さい方を上限として算出する。
【００６５】
また、領域上限算出部２は、入力文書リストと文書領域リストとの間で比較を行い、入力文書リスト内の文書がそれぞれどの文書領域に入るかを調べた後に、文書領域毎に、入力文書リスト内の文書が含まれているか否かを表すビット列（入力ビット列）を作成することもできる。この場合、領域上限算出部２は、各領域について、図１０に示した要約マトリクスを参照し、作成したビット列と、要約マトリクスのビット列とのＡＮＤ演算を行い、その結果得られたビット列の「１」の数を上限として算出する。
【００６６】
単語頻度算出部３は、本実施の形態１では、領域上限算出部２が出力した、領域上限マトリクスを単語領域ごとに和算し、単語領域ごとの和算値を単語上限リストとして出力する。例えば、図１１に示した領域上限マトリクスを入力とし、これを横方向に（単語領域毎に）和算すると、図１２に示す単語上限リストが得られる。図１２は、本実施の形態１における単語上限リストの一例を示す図である。
【００６７】
このように、単語上限リストは、文書領域リストと入力文書リストとから、各単語領域に対して、動的領域頻度の上限値を算出することによって求められている。図１２に示された単語上限リストは、ある入力文書リストに対して算出された単語領域毎の動的領域頻度の上限値を示している。具体的には、図１２においては、例えば、単語領域ＷＣ［０］において、上限値は「２７」となっている。これは単語領域ＷＣ［０］内の単語は、入力文書内において、たかだか２７回しか登場しないことを意味する。
【００６８】
文書頻度参照部４は、本実施の形態１では、単語頻度算出部３が出力した単語上限リストと、クラスタ作成部５が出力した単語領域リストとが入力されると、単語上限リストを元に単語領域の絞り込みを行う。更に、文書頻度参照部４は、単語領域リストを元に各単語領域内の単語とその文書リストとを参照し、頻度（文書頻度）の高い上位ｋ個の単語を特定し、これを出力する。なお、文書頻度参照部４は、ある単語領域内の単語とその文書リストとを参照する手段であり、本実施の形態１では、文書頻度参照部４として、他の手段を用いることもできる。
【００６９】
次に、本発明の実施の形態１における検索方法について図１３〜図２４を用いて説明する。本実施の形態１における検索方法は、図４に示した本実施の形態１における検索装置を動作させることによって実施される。このため、以下の説明においては、適宜図４〜図１２を参酌し、本実施の形態１における検索装置の動作についても説明する。
【００７０】
また、本実施の形態１における検索方法では、主に、クラスタリングプロセスＰ１０と、検索プロセスＰ２０との２つのプロセスが実行される。このうち、クラスタリングプロセスは、クラスタ作成部５と領域要約作成部６とによって行われる。検索プロセスＰ２０は、領域上限算出部２、単語頻度算出部３及び文書頻度参照部４によって行われる。本実施の形態１においては、クラスタリングプロセスＰ１０と検索プロセスＰ２０とは、連続して行われても良いし、別々に行われても良い。以下ではこれらを順に説明する。
【００７１】
最初に、図１３を用いて、クラスタリングプロセスＰ１０について説明する。図１３は、本発明の実施の形態１の検索方法で行われるクラスタリングプロセスでの処理を示すフロー図である。クラスタリングプロセスＰ１０は、検索装置の管理者（ユーザ）、又は外部のモジュールによって起動される。
【００７２】
図１３に示すように、クラスタリングプロセスＰ１０が開始されると、先ず、クラスタ作成部５は、単語文書マトリックス記憶部７内に記憶されている単語文書マトリックスを読み込み、２次元クラスタリング処理を行う（ステップＰ１１）。これにより、単語領域リスト（図６Ａ参照）と文書領域リスト（図６Ｂ参照）とが、領域要約作成部６に、出力される。また、少なくとも文書領域リストが、領域上限算出部２に出力される。また、ステップＰ１１において、クラスタ作成部５は、単語領域リストを、文書頻度参照部４に出力しても良い。
【００７３】
次に、領域要約作成部６は、クラスタ作成部５から渡された単語領域リストと文書領域リストとを用いる。更に、領域要約作成部６は、単語文書マトリックス記憶部７を参照し、各領域に対する要約マトリクス（図９又は図１０参照）を作成し、これを要約マトリックス記憶部１に記憶させる（ステップＰ１２）。ステップＰ１２の実行後、クラスタリングプロセスＰ１０は終了する。
【００７４】
ここで、図１４を用いてステップＰ１２を更に具体的に説明する。図１４は、図１３に示したステップＰ１２を具体的に示すフロー図である。図１４に示すように、ステップＰ１２においては、入力された単語領域リストと文書領域リストとを元に作成される領域Ｃ［ｉ］［ｊ］(０≦ｉ＜ｍ、０≦ｊ＜ｎ)、それぞれに対して、次のステップＰ１２０１からＰ１２０３までが実行される。
【００７５】
まず、領域要約作成部６は、単語文書マトリックス記憶部７内から、領域Ｃ[ｉ]［ｊ］に対応する単語文書マトリックスの部分のみを抽出する（ステップＰ１２０１）。次に、領域要約作成部６は、ステップＰ１２０１で抽出された部分について、要約マトリクス（要約情報）を作成する（ステップＰ１２０２）。そして領域要約作成部６は、Ｐ１２０２で作成された要約マトリクスを、要約マトリックス記憶部１内の領域Ｃ［ｉ］［ｊ］に対応する領域に記憶させる（Ｐ１２０３）。
【００７６】
また、図１５を用いて、図１４に示したステップＰ１２０１を更に具体的に説明する。図１５は、図１４に示したステップＰ１２０１を詳細に示すフロー図である。ステップＰ１２０１は、単語領域番号ｉと文書領域番号ｊとを入力として、単語文書マトリックス記憶部７を参照することで、領域Ｃ［ｉ］［ｊ］に対応する単語文書マトリックスの部分を単語文書リストとして出力する処理である。
【００７７】
図１５に示すように、領域要約作成部６は、先ず、出力用の単語文書リストを空の状態で作成する（Ｐ１２０１０）。言い換えると、領域要約作成部６は、出力用の単語リストを初期化する。
【００７８】
次に、領域要約作成部６は、単語領域リスト内から単語領域番号がｉと等しい単語番号のリストを抽出する（ステップＰ１２０１１）。続いて、領域要約作成部６は取り出した単語番号のリスト内の各単語番号ｓに対して、下記のステップＰ１２０１２からＰ１２０１５の処理を行う。
【００７９】
具体的には、領域要約作成部６は、単語毎に、単語文書マトリックス記憶部７内の単語インデックスを参照し、文書リストを読み出す（ステップＰ１２０１２）。次いで、領域要約作成部６は、ステップＰ１２０１２で読み出した文書リストと文書領域リストとを比較し、文書領域番号＝ｊとなる文書番号のセットを抽出する（Ｐ１２０１３）。次に、領域要約作成部６は、単語番号ｓと、Ｐ１２０１３で抽出した文書番号のセットとを、単語文書リストに追加する（ステップＰ１２０１４）。
【００８０】
その後、領域要約作成部６は、ステップＰ１２０１１で抽出した全ての単語に対して処理が終了したかどうか判定する（ステップＰ１２０１５）。判定の結果、終了していない場合は、領域要約作成部６は、再度ステップＰ１２０１２〜Ｐ１２０１４を実行する。一方、終了している場合は、領域要約作成部６は、処理を終了する。
【００８１】
なお、「単語文書リスト」とは、領域Ｃ［ｉ］［ｊ］内の単語の単語番号と、その単語が登場する領域Ｃ［ｉ］［ｊ］内の文書の文書番号のリスト（領域内文書リスト）とから成る情報である。図１６は、単語文書リストの一例を示す図である。図１６の例では、単語領域ＷＣ［０］に単語番号１、３、５の単語が含まれ、文書領域ＤＣ［０］に文書番号１、２、３、４の文書が含まれることを前提とし、領域Ｃ［０］［０］に対して作成された単語文書リストが示されている。
【００８２】
また、図１４に示したステップＰ１２０２について具体的に説明する。先ず、領域要約作成部６が、最大値要約作成部として機能する場合について説明する。この場合、ステップＰ１２０２では、最大値要約作成部が、Ｐ１２０１で出力された単語文書リストを元に、各単語番号に対する領域内文書リストを調べ、領域内文書リスト内に含まれる文書番号の数（即ち、静的領域頻度）を算出し、その最大値を出力する。
【００８３】
つぎに、領域要約作成部６が、ベクトル要約作成部として機能する場合について説明する。図１７は、図１４に示したステップＰ１２０２を詳細に示すフロー図である。図１７に示すＰ１２０２では、ベクトル要約作成部が、各領域Ｃ［ｉ］［ｊ］に対して、Ｐ１２０２１からＰ１２０２４までのステップを行い、作成されたビット列Ｂを出力する。
【００８４】
なお、この各領域Ｃ［ｉ］［ｊ］に対して作成されるビット列Ｂは、次の意味を持つ。ビット列Ｂ内の各要素は領域Ｃ［ｉ］［ｊ］内の各文書に対応し、各要素の値はその文書が、同領域Ｃ［ｉ］［ｊ］内の単語を１個以上保有する可能性がある（「１」）か、否か（「０」）を意味する。
【００８５】
Ｐ１２０２１からＰ１２０２４の各ステップについて説明する。先ず、ベクトル要約作成部（領域要約作成部６）は、文書領域リストから文書領域番号＝ｊとなる文書番号のリストＴｅｍｐを取り出す。更に、ベクトル要約作成部は、リストＴｅｍｐ内の文書番号をソートし、これによって対応表を作成する（ステップＰ１２０２１）。対応表とは、文書領域ＤＣ［ｊ］内の各文書が、文書領域ＤＣ［ｊ］内では何番目にあたるかを意味する表である。
【００８６】
図１８は、ベクトル要約作成部が作成する対応表の一例を示す図である。図１８に示すように、例えば、文書番号「１」の文書は１番目の要素であることが示されている。また、文書番号「１０」の文書は５番目の要素であることがわかる。
【００８７】
次に、ベクトル要約作成部は、対応表と長さが等しく、すべての要素が「０（ゼロ）」となったベクトルＶを作成する（Ｐ１２０２２）。更に、ベクトル要約作成部は、対応表内の各文書番号ｑの位置が「ｒ」である場合に、文書番号ｑが単語文書リスト内に何回登場するかを数えた上で、ベクトルＶ内の「ｒ」番目に、数えられた値を保存する（Ｐ１２０２３）。これにより、ベクトルＶは領域Ｃ［ｉ］［ｊ］内の各文書に対し、「１」が何回登場しているかを表すベクトルとなる。
【００８８】
最後に、ベクトル要約作成部は、ベクトルＶ内の「１」以上の値をすべて「１」に変換し、それ以外を「０（ゼロ）」としたビット列Ｂを作成し（ステップＰ１２０２４）、処理を終了する。なお、ステップＰ１２０２４では、ベクトルＶに対して、「１以上の値をすべて「１」に変換し、それ以外を「０」とする」という処理が行われるが、代わりに、下記のステップＰ１２０２４'が行われても良い。
【００８９】
ステップＰ１２０２４'においては、ベクトルＶが有する値のうち閾値α以上である値は全て「１」に変換され、それ以外は「０」とされて、ビット列が作成される。なお、閾値αは、予め、検索装置の管理者によって設定されるものとする。ステップＰ１２０２４'によって作成されるビット列Ｂの各要素の値は、その文書が同領域Ｃ［ｉ］［ｊ］内の単語を保有する可能性が高い（「１」）か、否か（「０」）を意味している。
【００９０】
次に、図１９を用いて、検索プロセスＰ２０について説明する。図１９は、本発明の実施の形態１の検索方法で行われる検索プロセスでの処理を示すフロー図である。検索プロセスＰ２０は、ユーザ又は外部のプログラム（モジュール）が入力文書リストを領域上限算出部２に入力することによって開始される。
【００９１】
検索プロセスＰ２０が開始されると、先ず、領域上限算出部２は、各領域に対して動的領域頻度の上限を算出し、領域上限マトリックスを出力する（ステップＰ２１）。次に、単語頻度算出部３は、領域上限マトリックスを単語領域方向に和算し、単語上限リストを出力する（ステップＰ２２）。
【００９２】
最後に、文書頻度参照部４は、単語上限リストを入力として、単語文書マトリクス記憶部７を参照する。更に、文書頻度参照部４は、単語領域に対して絞り込みを行いながら文書リストを参照して、入力文書リストに対して高頻度な上位ｋ個の単語を出力する（ステップＰ２３）。具体的には、ステップＰ２３では、文書頻度算出部４は、各単語の頻度（文書頻度）を参照しながら、入力文書において特徴的な単語を特定している。ステップＰ２３の実行後、検索プロセスＰ２０における処理は終了する。
【００９３】
次に、ステップＰ２１〜Ｐ２３それぞれについて、図２０〜図２４を用いて詳細に説明する。先ずステップＰ２１について図２０及び図２１を用いて説明する。ステップＰ２１は、領域上限算出部２が、入力文書リストを入力とし、領域上限マトリックスＣＭａｘ［ｉ］［ｊ］{０≦ｉ＜ｍ、０≦ｊ<ｎ}を出力するプロセスである。このプロセスの一例として、図９に示した要約マトリクスを参照する領域上限算出部２が実行するプロセス（Ｐ２１０）について、図２０を用いて説明する。図２０は、図１９に示したステップＰ２１の具体例の一例を示すフロー図である。
【００９４】
図２０に示すように、先ず、領域上限算出部２が、入力文書リスト内の文書番号を元に、クラスタ作成部５が出力した文書領域リストを調べ、各文書領域ＤＣ［ｊ］に何個の文書が含まれるかをカウントする（ステップＰ２１０１）。なお、この出力（カウントされた値）をＤＣＦ［ｊ］{０≦ｊ<ｎ}として、定義する。ＤＣＦ［ｊ］は入力文書リスト内の文書のうち、文書領域ＤＣ［ｊ］に含まれる文書の数を意味する。
【００９５】
次に、領域上限算出部２は、単語文書マトリックスの各領域に対して、要約マトリクス記憶部１を参照し、ステップＰ２１０２〜Ｐ２１０５を実行する。具体的には、領域上限算出部２は、各領域Ｃ［ｉ］［ｊ］{０≦ｉ＜ｍ、０≦ｊ<ｎ}に対して、要約マトリクス記憶部１を参照し、単語の静的領域頻度の最大値を抽出する（Ｐ２１０２）。なお、この領域Ｃ［ｉ］［ｊ］に対する単語の静的領域頻度の最大値をｓＭａｘとする。
【００９６】
更に、領域上限算出部２は、ｓＭａｘとＤＣＦ［ｊ］との大小関係を比較する（Ｐ２１０３）。比較の結果、ｓＭａｘ＞ＤＣＦ［ｊ］が成立すれば、領域上限算出部２は、ＣＭａｘ［ｉ］［ｊ］にＤＣＦ［ｊ］を代入する（Ｐ２１０４）。これは、入力文書リスト内に、領域Ｃ［ｉ］［ｊ］の文書（文書領域ＤＣ［ｊ］の文書）がＤＣＦ［ｊ］個しかないのであれば、領域内にＤＣＦ［ｊ］回より多く登場する単語が存在するはずがないためである。
【００９７】
一方、比較の結果、ｓＭａｘ＞ＤＣＦ［ｊ］が成立しなければ、ＣＭａｘ［ｉ］［ｊ］にｓＭａｘを代入する（Ｐ２１０５）。これは、領域Ｃ［ｉ］［ｊ］内の単語の静的領域頻度がたかだかｓＭａｘ回であれば、領域内にｓＭａｘ回以上登場する単語が存在するはずがないためである。
【００９８】
その後、領域上限算出部２は、全ての領域についてステップＰ２１０２〜Ｐ２１０５の処理が終了したかどうかを判定する（ステップＰ２１０６）。領域上限算出部２は、判定の結果、終了していない場合は、再度ステップＰ２１０２〜Ｐ２１０５を実行し、終了している場合は、処理を終了する。
【００９９】
また、ステップＰ２１の別の例として、図１０に示した要約マトリクスを参照する領域上限算出部２が実行するプロセス（Ｐ２１１）について、図２１を用いて説明する。図２１は、図１９に示したステップＰ２１の具体例の他の例を示すフロー図である。
【０１００】
図２１に示すように、先ず、領域上限算出部２が、入力文書リスト内の文書番号を元に、クラスタ作成部５が出力した文書領域リストを調べ、各文書領域ＤＣ［ｊ］毎にｎ個のビット列を作成する（Ｐ２１１１）。このｎ個のビット列は、動的ビット列ＤＣＢ［ｊ］｛０≦ｊ＜ｎ}と定義する。
【０１０１】
動的ビット列ＤＣＢ［ｊ］は、文書領域ＤＣ［ｊ］に含まれる文書の数を長さとし、その各要素は、文書領域ＤＣ［ｊ］内の各文書が入力文書リストに含まれる可能性があるか（「１」）、否か（「０」）の２値を表している。
【０１０２】
次に、領域上限算出部２は、各領域Ｃ［ｉ］［ｊ］に対して、プロセスＰ２１１２〜Ｐ２１１３を実行する。具体的には、領域上限算出部２は各領域Ｃ［ｉ］［ｊ］{０≦ｉ＜ｍ、０≦ｊ＜ｎ｝毎に、要約マトリックス記憶部１を参照し、要約マトリクス記憶部１内に記憶されているビット列Ｂを抽出する（ステップＰ２１１２）。
【０１０３】
次に、領域上限算出部２は、ビット列Ｂと動的ビット列ＤＣＢ［ｊ］との二つビット列をＡＮＤ演算し、演算その結果が「１」となったビットの数をＣＭａｘ［ｉ］［ｊ］に代入する（ステップＰ２１１３）。このステップにより、領域Ｃ［ｉ］［ｊ］内で、ビット列Ｂが意味する、単語領域ＷＣ［ｉ］に単語を含む可能性のある文書の集合と、ＤＣＢ［ｊ］が意味する、入力文書リストに含まれる文書の集合との、論理積が取られることとなる。このことは、対象の領域内の単語の動的領域頻度の上限が見積もられていることを意味する。
【０１０４】
その後、領域上限算出部２は、全ての領域についてステップＰ２１１２〜Ｐ２１１３の処理が終了したかどうかを判定する（ステップＰ２１１４）。領域上限算出部２は、判定の結果、終了していない場合は、再度ステップＰ２１１２〜Ｐ２１１３を実行し、終了している場合は、処理を終了する。
【０１０５】
さらに、図２２を用いて、図２１に示したプロセスＰ２１１１について詳細に説明する。図２２は、図２１に示したステップＰ２１１１の具体例を示すフロー図である。ステップＰ２１１１は、上述したように、領域上限算出部２が、入力文書リストと、文書領域リストとを入力として、動的ビット列ＤＣＢ［ｊ］{０≦ｊ<ｎ}を出力するステップである。このステップでは、領域上限算出部２が、各文書領域ＤＣ［ｊ］{０≦ｊ＜ｎ}に対し、Ｐ２１１１１からＰ２１１１４のプロセスを実行して、ビット列ＤＣＢ［ｊ］を作成し、これを出力する。
【０１０６】
具体的には、図２２に示すように、領域上限算出部２は、先ず、単語領域リストから文書領域番号＝ｊとなる文書番号のリストを取り出す。更に、領域上限算出部２は、リスト内の文書番号を小さい順にソートし、これによって対応表を作成する（ステップＰ２１１１１）。この対応表は、図１７に示したステップＰ１２０２１において、領域ごとに作成される対応表と同じものである。このため、予めベクトル要約作成部（領域要約作成部６）が作成した対応表が文書領域ごとに保持され、領域上限算出部２が、これを使用できる態様であっても良い。
【０１０７】
次に、領域上限算出部２は、対応表と長さの等しいビット列ＤＣＢ［ｊ］を作成する（ステップＰ２１１１２）。更に、領域上限算出部２は、入力文書リスト内の各文書番号に対し、文書領域リストを参照し、文書領域番号＝ｊとなっている文書番号だけを抽出する（ステップＰ２１１１３）。
【０１０８】
最後に、領域上限算出部２は、ステップＰ２１１１３で得た各文書番号に基づいて、対応表を参照して、位置ｒを調べ、ビット列ＤＣＢ［ｊ］内のｒ番目のビットを「１」に変更する（ステップＰ２１１１４）。ステップＰ２１１１４の実行後、処理が終了する。なお、ステップＰ２１１１１とステップＰ２１１１２とにおいては、処理に入力文書リストが必要とされていない。このため、検索プロセスＰ２０が呼び出される以前に、これらのステップは、任意のタイミングで予め実行されていても良い。
【０１０９】
次に、図１９に示したステップＰ２２について詳細に説明する。ステップＰ２２は、上述したように、単語頻度算出部３が、領域上限マトリックスを入力として、単語上限リストを出力する処理である。領域上限マトリックスをＣＭａｘ［ｉ］［ｊ］｛０≦ｉ＜ｍ、０≦ｊ<ｎ｝、単語上限リストをＷＭａｘ［ｉ］{０≦ｉ＜ｍ}とすると、単語頻度算出部２は下記の式（１）で表現する計算処理を行う。単語頻度算出部２は、下記の式（１）により、各単語領域に対して、単語領域ごとの頻度を和算し、そして、入力文書リストに対する文書頻度の上限を算出し、この結果、単語上限リストとして出力する。
【０１１０】
0005594145.tif 000002
【０１１１】
次に、図１９に示したステップＰ２３について詳細に説明する。ステップＰ２３は、上述したように、文書頻度参照部４が、単語上限リストを入力とし、単語領域に対して絞り込みを行いながら入力文書リストに対して高頻度な上位ｋ個の単語を算出する処理である。図２３は、図１９に示したステップＰ２３の具体例を示すフロー図である。
【０１１２】
図２３に示すように、文書頻度参照部４は、先ず、変数ｑを１とし、出力用の単語リストＷを空にして初期化する（ステップＰ２３０１）。なお、単語リストＷは、入力文書リストで指定される文書集合に対する文書頻度が高い上位ｋ個の単語と、その頻度（文書頻度）とが格納されるリストである。
【０１１３】
次に、文書頻度参照部４は、単語上限リストを参照し、上限値がｑ番目に大きい単語領域の単語領域番号Ｘを抽出する（ステップＰ２３０２）。更に、文書頻度参照部４は、クラスタ作成部５から取得した単語領域リストに基づいて、単語領域ＷＣ［Ｘ］における各単語の頻度（文書頻度）を参照する（ステップＰ２３０３）。
【０１１４】
具体的には、ステップＰ２３０３では、文書頻度参照部４は、単語領域リストを元にして、単語領域ＷＣ［Ｘ］における単語番号のリストを取得し、各単号番号に対応する文書リストを、単語文書マトリックス内の単語インデックスから抽出する。そして、文書頻度参照部４は、抽出した文書リストと、入力文書リストとを比較することで、入力文書リストに対する頻度（文書頻度）を調べ、調べた頻度を参照して、頻度が上位となるｋ個の単語を抽出し、単語リストＷを更新する（Ｐ２３０３）。
【０１１５】
そして、文書頻度参照部４は、単語リストＷ内のｋ番目の単語の頻度と、単語上限リストの上限のうちｑ＋１番目に大きい上限値とを比較し、両者の大小関係調べる（Ｐ２３０４）。比較の結果、単語リストＷ内のｋ位の単語の頻度が、ｑ＋１番目に大きい上限値よりも大きい場合、文書頻度参照部４は、単語リストＷ内の単語を外部の表示装置や外部プログラムに出力し（Ｐ２３０５）、処理を終了する。これは、この場合は、他の単語領域には、現在ｋ位の単語より頻度の大きい単語が含まれることは無いためである。
【０１１６】
一方、比較の結果、単語リストＷ内のｋ位の単語の頻度が、ｑ＋１番目に大きい上限値よりも小さい場合は、文書頻度参照部４は、ｑに１を加算足し（Ｐ２３０７）、再度、ステップＰ２３０２を実行する。
【０１１７】
次に、ステップＰ２３０３について、図２４を用いて詳細に説明する。図２４は、図２３に示したステップＰ２３０３を具体的に示すフロー図である。ステップＰ２３０３では、単語領域番号Ｘが入力となる。Ｐ２３０３では、まず、文書頻度参照部４は、入力された単語領域番号Ｘを元に、クラスタ作成部５から取得した単語領域リストを調べ、単語領域ＷＣ［Ｘ］に入る単語の単語番号のリストを作成する（ステップＰ２３０３１）。
【０１１８】
次に、文書頻度参照部４は、ステップＰ２３０３１で得た単語番号それぞれに対し、単語文書マトリックス記憶部７内の単語テーブルと、単語インデックスとを参照し、単語自体と、文書リストとのペアを抽出する（ステップＰ２３０３２）。
【０１１９】
次いで、文書頻度参照部４は、ステップＰ２３０３２で得られた単語と文書リストとのペアを用い、文書リストと入力文書リストとを比較し、両方に含まれる文書番号の数（文書頻度）を数えて、単語と文書頻度とのペアを作成し、これを単語リストＷに追加する（ステップＰ２３０３３）。
【０１２０】
その後、文書頻度参照部４は、単語リストＷ内を文書頻度の降順にソートし、単語リストＷから、頻度がｋ＋１位以下の単語と文書頻度とのペアを削除する（ステップＰ２３０３４）。ステップＰ２３０３４が実行されると、文書頻度参照部４における処理は終了する。
【０１２１】
なお、本実施の形態１では、上述したように、ステップＰ２３０３では、クラスタ作成部５から取得した単語領域リストが使用され、単語領域番号から領域内の単語と文書リストとの組が参照される。このため、単語文書マトリックス記憶部７内の情報が参照されている。但し、本実施の形態１はこれに限定されず、例えば、単語領域リストが使用されず、別の任意のデータが参照される態様であっても良い。
【０１２２】
具体的には、予め、単語文書マトリックス記憶部１内のデータをクラスタ作成部５が作成した単語領域毎に分割する。そして、単語領域番号をキーとし、各単語領域内の単語と文書リストとをまとめて読み込める統合データ記憶部が用意される。そして、ステップＰ２３の処理において、統合データ記憶部が参照され、ある単語領域内の単語と文書リストとがまとめて読み込まれる態様であっても良い。
【０１２３】
以上のように本実施の形態１における検索方法を実施すれば、検索装置についての説明でも述べたように、検索対象となる領域、即ち、読み込むべき単語の領域が決定されるので、無駄な単語領域に対する読み込み処理が避けられ、検索の高速化が達成される。
【０１２４】
また、本実施の形態１では、予め単語文書マトリックスに対して２次元クラスタリング処理が行われるため、検索時の絞り込みを効率良く行うことができる。
【０１２５】
更に、本実施の形態１では、領域ごとに静的領域頻度の上限が予め算出される場合は、領域上限マトリックスが高速に作成可能となる。よって、高速に読み込むべき単語の領域が決定され、且つ、無駄な単語領域に対する読み込み処理が避けられ、検索のいっそうの高速化が図られる。
【０１２６】
また、本実施の形態１では、領域ごとに領域内の各文書が領域内の単語を含むかどうか表すビット列が要約マトリックス記憶部１に記憶される場合は、ビット列と入力文書リストとのＡＮＤ演算により、領域上限マトリックスはより厳密に作成される。このため、より多くの単語領域を絞り込むことが可能となり、不必要な単語領域をより多く絞り込めるため、検索のいっそうの高速化が可能となる。
【０１２７】
本発明の実施の形態１におけるプログラムは、コンピュータに、図１３〜図１７、図１９〜図２４に示された各ステップを実行させるプログラムであれば良い。このプログラムをインストールし、このプログラムを実行することによって、本実施の形態１における検索装置が実現され、本実施の形態１における検索方法の実行が可能となる。この場合、コンピュータのＣＰＵ（central  processing  unit）は、クラスタ作成部５、領域要約作成部６、領域上限算出部２、単語頻度算出部３、及び文書頻度参照部４として機能し、処理を行なう。
【０１２８】
また、本実施の形態１では、要約マトリクス記憶部１、及び単語文書マトリクス記憶部７は、コンピュータに備えられたハードディスク等の記憶装置に、これらを構成するデータファイルを格納することによって、又はこのデータファイルが格納された記録媒体をコンピュータと接続された読取装置に搭載することによって実現できる。
【０１２９】
（実施の形態２）
次に本発明の実施の形態２における検索装置、検索方法、およびプログラムについて、図２５及び図２６を参照しながら説明する。最初に、本実施の形態２における検索装置の構成について図２５を用いて説明する。図２５は、本発明の実施の形態２における検索装置の構成を示すブロック図である。
【０１３０】
図２５に示すように、本実施の形態２における検索装置は、複数のクラスタ処理部１０と、クラスタ処理展開部８と、クラスタ処理選択部９とを備え、この点で、図４に示した実施の形態１における検索装置と異なっている。また、本実施の形態２では、クラスタ作成部５、領域要約作成部６、要約マトリクス記憶部７、領域上限算出部２、単語頻度算出部３、及び文書頻度参照部４は、複数のクラスタ処理部１０それぞれに毎に備えられている。なお、これらの構成及び機能は、実施の形態１と同様である。
【０１３１】
クラスタ処理展開部８は、部分集合を表す情報、即ち、入力文書リストが、ユーザ又は外部のプログラムから入力されると、入力された情報を、各クラスタ処理部１０の領域上限算出部２に入力する。
【０１３２】
クラスタ処理選択部９は、複数のクラスタ処理部１０それぞれの単語頻度算出部３が設定した、単語領域毎の単語の頻度の上限を受け取る。また、クラスタ処理選択部９は、受け取った各単語の頻度の上限の分布に基づいて、複数のクラスタ処理部１０のうちの少なくとも一つを以降の処理で使用するために選択する。そして、クラスタ処理選択部９は、選択したクラスタ処理部１０の文書頻度参照部４のみに、選択したクラスタ処理部１０の単語頻度算出部３が設定した上限を渡して処理を行わせる。
【０１３３】
また、本実施の形態２において、複数のクラスタ処理部１０それぞれにおいて、各クラスタ作成部５は、互いに異なるクラスタリング処理を実行する。実施の形態１において述べたように、２次元クラスタリング処理には複数の種類のアルゴリズムがある。更に、２次元クラスタリング処理では、処理のために単語領域の数と文書領域の数とを設定しておく必要がある。
【０１３４】
このため、本実施の形態２によれば、一つの単語文書マトリックスに対して複数のパラメータ（アルゴリズム、単語領域の数、文書領域の数など）を用意し、複数の種類の２次元クラスタリング処理を行うことが可能である。本実施形態２では、各クラスタ処理部１０により、これらのパラメータを変えた複数の種類の２次元クラスタリング処理を実行することが可能となる。なお、クラスタ処理部１０の数をクラスタ種類数と呼ぶこととする。
【０１３５】
各クラスタ処理部１０は、管理者又は外部のプログラムによって呼び出される。各クラスタ処理部１０は、単語文書マトリックスを入力として、要約マトリックス記憶部１内に、単語文書マトリックス内の領域毎に、入力文書リストが与えられた場合に領域内の単語の動的領域頻度の上限又はその予測値を算出可能な要約情報（要約マトリクス）を出力する。
【０１３６】
また、各クラスタ処理部１０は、クラスタ処理展開部８によって呼び出され、クラスタ処理展開部８から入力文書リストが入力されると、単語領域毎の単語の頻度の上限を設定し、クラスタ処理選択部９に単語上限リストを出力する。更に、クラスタ処理部１０のうち一つは、上述したように、クラスタ処理選択部９により、単語上限リストを入力として呼び出され、内部の文書頻度参照部４により、入力文書リスト内で高頻度なｋ個の単語を読み込み、ユーザ又は外部のプログラムに出力する。
【０１３７】
次に、本発明の実施の形態２における検索方法について図２６〜図２８を用いて説明する。本実施の形態２における検索方法は、図２５に示した本実施の形態２における検索装置を動作させることによって実施される。このため、以下の説明においては、適宜図２５を参酌し、本実施の形態２における検索装置の動作についても説明する。
【０１３８】
また、本実施の形態２における検索方法では、主に、クラスタリングプロセスＰ１０'と、検索プロセスＰ２０'との２つのプロセスが実行される。このうち、クラスタリングプロセスＰ１０'は、各クラスタ処理部１０において、クラスタ作成部５と領域要約作成部６とがクラスタリングプロセスＰ１０を行うことによって実現される。
【０１３９】
ここで、図２６を用いて、検索プロセスＰ２０'について説明する。図２６は、本発明の実施の形態２の検索方法で行われる検索プロセスでの処理を示すフロー図である。検索プロセスＰ２０'は、ユーザ又は外部のプログラムが、クラスタ処理展開部８に、入力文書リストを入力することによって開始される。
【０１４０】
図２６に示すように、先ず、クラスタ処理展開部８は、外部から入力文書リストが入力されると、各クラスタ処理部１０に入力文書リストを渡す（ステップＰ２１'）。ステップＰ２１'では、いわゆるクエリの展開が行われる。
【０１４１】
次に、各クラスタ処理部１０は、内部の領域上限算出部２と単語領域算出部３とを用いて上限リストを作成し、それを出力する（ステップＰ２２'）。なお、具体的には、ステップＰ２２'では、各クラスタ処理部１０において、領域上限算出部２がステップＰ２１（図１９参照）を実行し、単語領域算出部３がステップＰ２２（図１９参照）を実行する。ステップＰ２１及びＰ２２の処理は、各クラスタ処理部１０において同時に行われても良い。
【０１４２】
次に、ステップＰ２２'の結果を用いて、クラスタ処理選択部９は、各クラスタ処理部１０の出力した単語上限リストを調べ、一つ以上のクラスタ処理部を選択し、選択したクラスタ処理部１０内の文書頻度参照部４を呼び出す（ステップＰ２３'）。
【０１４３】
続いて、呼び出された文書頻度参照部４は、ステップＰ２２'の結果に基づいて、各単語領域内の単語に対する文書リストを絞り込みながら、これを読み込む。そして、文書頻度参照部４は、入力文書リストにおいて文書頻度の高いｋ個の単語を特定し、これを出力する（ステップＰ２４'）。ステップＰ２４'では、選択されたクラスタ処理部１０の文書頻度算出部４が、各単語の頻度（文書頻度）を参照しながら、入力文書において特徴的な単語を特定する。ステップＰ２４'の実行後、検索プロセスＰ２０'における処理は終了する。
【０１４４】
ここで、ステップＰ２３'における処理の詳細について以下に説明する。ステップＰ２３'では、複数の単語上限リストを入力として、最も読み込み効率が高い単語上限リストを持つクラスタ処理部１０が選択されても良い。読み込みの効率が良いかどうかの判断は、例えば、単語上限リストの分布の歪度を計算することによって行うことができる。
【０１４５】
具体的には、この場合、先ず、クラスタ処理選択部９は、各単語上限リストに対して歪度を計算する。単語領域の数がｍである単語上限リスト内の上限値をＷＭａｘ［ｉ］{０≦ｉ＜ｍ}とするとき、歪度Ｓｋは下記の式（２）で表現される。なお、下記の式（２）内の「μ」及び「σ」は、それぞれ、下記の式（３）及び式（４）によって算出できる。また、下記の式（２）〜式（４）における「｜ＷＣ［ｉ］｜」は各単語領域内の単語の数を意味する。「｜ＷＣ［ｉ］｜」は、全単語集合Ｗ内の単語数をｍで除算することによって得られた値である。
【０１４６】
0005594145.tif 000003
【０１４７】
0005594145.tif 000004
【０１４８】
0005594145.tif 000005
【０１４９】
次に、歪度Ｓｋが算出されると、クラスタ処理選択部９は、歪度Ｓｋの最も大きい単語上限リストを選択し、その単語上限リストを出力した文書頻度参照部４を呼び出す。この結果、最も読み込み効率が高い単語上限リストを持つクラスタ処理部１０が選択され、単語の特定が行われる。
【０１５０】
上記の例では、クラスタ処理選択部９は、歪度が大きい単一のクラスタ処理部１０を選択しているが、本実施の形態２は、この態様に限定されるものではない。本実施の形態２においては、クラスタ処理選択部９は、複数のクラスタ処理部１０を選択し、それぞれのクラスタ処理部１０内で、文書頻度参照部４によって処理を行わせ、最も早く処理を終えた文書頻度参照部４のみに、ｋ個の単語を出力させることもできる。更に、本実施形態２においては、複数のクラスタ処理部１０をそれぞれ別々のコンピュータによって実現し、並列に処理が行われる態様としても良い。
【０１５１】
このように、本実施の形態２によれば、複数の種類の２次元クラスタリングアルゴリズムが同時に用いられるため、絞り込みが困難な入力文書リストが与えられた場合に有効である。即ち、このような場合であっても、複数の種類のクラスタ処理部１０によって最良の単語上限リストが出力され、これを用いて絞り込みが行われるからである。本実施の形態２によれば、このような場合であっても、検索の高速化が達成される。
【０１５２】
本発明の実施の形態２におけるプログラムは、コンピュータに、図２６に示されたステップＰ２１'〜ステップＰ２４'を実行させるプログラムであれば良い。このプログラムをインストールし、このプログラムを実行することによって、本実施の形態２における検索装置が実現され、本実施の形態２における検索方法の実行が可能となる。この場合、コンピュータのＣＰＵ（central  processing  unit）は、各クラスタ処理部１０における、クラスタ作成部５、領域要約作成部６、領域上限算出部２、単語頻度算出部３、及び文書頻度参照部４として機能し、処理を行なう。更に、コンピュータのＣＰＵは、クラスタ処理展開部８及びクラスタ処理選択部９としても機能し、処理を行う。
【０１５３】
また、本実施の形態２におけるプログラムは、複数のコンピュータによって、図２６に示されたステップＰ２１'〜ステップＰ２４'を実行させるプログラムであれば良い。この場合は、上述したように、各コンピュータのＣＰＵがそれぞれ別々のクラスタ処理部１０として機能し、並列に処理が実行される。
【０１５４】
また、本実施の形態２においても、要約マトリクス記憶部１、及び単語文書マトリクス記憶部７は、コンピュータに備えられたハードディスク等の記憶装置に、これらを構成するデータファイルを格納することによって、又はこのデータファイルが格納された記録媒体をコンピュータと接続された読取装置に搭載することによって実現できる。
【実施例１】
【０１５５】
ここで、具体的な実施例を用いて、実施の形態１における検索装置の動作を説明する。また、本実施例１では、領域要約作成部６が、図９に示す要約マトリクスを作成する最大要約作成部として機能する場合について説明する。以下、実施例１におけるクラスタリングプロセスＰ１０と検索プロセスＰ２０とについて説明する。なお、以下の動作例を説明する前提として、単語文書マトリクス記憶部７内には、図５Ａ及び図５Ｂに示した情報が保持されているものとし、パラメータｋ＝３であるとする。【０１５６】
先ず、クラスタリングプロセスについて説明する。ユーザ又は外部のプログラムによって、Ｐ１０の実行の指示が行われると、クラスタ作成部５は、図２に示した単語文書マトリックスを読み込み、２次元クラスタリング処理（ステップＰ１１）を行う。この結果、図６Ａに示した単語領域リストと、図６Ｂに示した文書領域リストが出力される。これにより、論理的には、図３に示した領域が作成される。但し、図３の例では、単語文書マトリックスの一部に対する分割しか示されていないが、実際は、単語領域数４×文書領域数４の領域に分割されたものとする。【０１５７】
次に、最大要約作成部は、単語領域リストと文書領域リストとを元に、要約マトリクスの作成処理（ステップＰ１２）を実行する。具体的には、最大要約作成部は、ステップＰ１２０１〜ステップＰ１２０３を実行し、図９に示した情報を、要約マトリクス記憶部１内に記憶させる。【０１５８】
このように、本実施例１では、クラスタリング処理により、同じ傾向にある単語と文書とがまとめられ、効率の良い要約マトリックスが作成される。【０１５９】
次に、検索プロセスＰ２０について説明する。ユーザ又は外部のプログラムによって、入力文書リストＤ＝{１、２、３、７…}が領域上限算出部２に入力されると、検索プロセスＰ２０が実行される。これにより、領域上限算出部２は、図９に示した要約マトリクスを参照して、領域上限を算出するプロセス（Ｐ２１０）を実行する。【０１６０】
Ｐ２１０では、先ず、領域上限算出部２は、入力文書リスト内の文書に対して、図６Ｂに示した文書領域リストを参照する。これにより、領域上限算出部２は、４つの文書領域それぞれに対して、入力文書内に含まれる文書の数を、ＤＣＦとして出力する（ステップＰ２１０１）。この場合のＤＣＦは、順に｛１９、３５、３、２｝であったとする。【０１６１】
次に、領域上限算出部２は、ステップＰ２１０２〜Ｐ２１０６の処理を行い、領域上限マトリックスを出力する。このときの領域上限マトリックスは、図１１に示される。その後、単語頻度算出部３が、図１２に示される単語上限リストを作成する（ステップＰ２２）。【０１６２】
次に、文書頻度参照部４は、図１２の単語上限リストを元に、ステップＰ２３（図１９参照）の処理を行う。ステップＰ２３では、単語上限リスト内で上限が最も大きい単語領域ＷＣ［１］に対してステップＰ２３０２（図２３参照）の処理が行われる。この結果、単語リストＷ内に、入力文書に対する文書頻度３４の単語「犯罪」、文書頻度３１の単語「自首」、文書頻度２５の単語「死亡」が追加されたとする。【０１６３】
また、このとき、ステップＰ２３０４では、単語リストＷ内の第３位の文書頻度２５と、図１２の単語上限リスト内で２番目に上限が大きい単語領域ＷＣ［０］の上限値２７との比較が行われる。この場合、単語リストＷ内の第３位の文書頻度２５の方が小さいため、「ｑ」を２に更新し（ステップＰ２３０７）、再度、ステップＰ２３０２の処理が行われる。【０１６４】
この結果、文書頻度２５を超える単語が発見できなったとし、単語リストＷ内は「犯罪」、「自首」、「死亡」のままであるとする。この後、再び、ステップＰ２３０４の処理が行われ、単語リストＷ内の第３位の文書頻度２５と、３番目に上限が大きい単語領域ＷＣ［３］の上限値３とが比較され、ステップＰ２３０５が実行される。これは、この時点でまだ調べていない他の単語領域内の単語は、文書頻度がたかだか６に過ぎず、これ以上の参照処理が無駄になると判断できるためである。よって文書頻度参照部４は、ステップＰ２３０５により「犯罪」、「自首」、「死亡」の３つの単語を出力し、処理を終了する。【０１６５】
このように、本実施例１における検索装置によれば、検索時に読み込むべき単語領域を絞ることができ、検索の速度の高速化が図られる。
【実施例２】
【０１６６】
次に、実施の形態１における検索装置の別の例について、その動作を説明する。本実施例２では、領域要約作成部６が、図１０に示す要約マトリクスを作成するベクトル要約作成部として機能する場合について説明する。なお、本実施例２における動作例を説明する前提は、上記の実施例１と同様であり、単語文書マトリクス記憶部７内には図５Ａ及び図５Ｂに示した情報が保持されているものとし、パラメータｋ＝３であるとする。【０１６７】
クラスタリングプロセスＰ１０内のステップＰ１１に関しては、上記の実施例１と同じであるため割愛し、ここではステップＰ１２に焦点を当てる。本実施例２において、ステップＰ１２内では、ステップＰ１２０１の処理の後、上記の最大要約作成部を用いた実施例１と異なり、ベクトル要約作成部を用いた処理Ｐ１２０２（図１７参照）が実行される。この結果、図１０に示した情報が、要約マトリクス記憶部１内に記憶される。【０１６８】
検索プロセスＰ２０では、ステップＰ２１において、領域上限算出部２は、実施例１と異なるプロセス（Ｐ２１１（図２１参照））を実行する。このとき、ステップＰ２１１１により、入力文書リストのうち、長さ４の動的ビット列ＤＣＢ［ｊ］{０≦ｊ＜４}が作成されるが、本実施例２では、特に以下の説明のためにＤＣＢ［３］＝{１、１、０、１、０・・・}であるとする。【０１６９】
次に、領域上限算出部２は、ステップＰ２１１２〜Ｐ２１１４の処理を行うが、ここでは、領域Ｃ［０］［３］に対する処理のみを取り上げる。領域上限算出部２は、先ず、Ｐ２１１２により、要約マトリクス記憶部１からビット列Ｂを読み込む。このときのビット列Ｂは、図１０の右上のセルに示される｛０、０、１、０、１・・・}である。このビット列Ｂと、動的ビット列ＤＣＢ［３］とをＡＮＤ演算すると、{０、０、０、０、０・・・}となり、ＣＭａｘ［０］［３］をより小さく見積もることができる。例えば、この処理によって得られる領域上限マトリックスは図１１に示される。【０１７０】
この結果、ビット列Ｂが表す領域内で単語を含む文書の集合と、入力の文書集合との間には、ほとんど一致が無いことがわかり、ＣＭａｘ［０］［３］をより小さく見積もることができ、例えば、ＣＭａｘ［０］［３］＝０とすることができる。この後、ステップＰ２２の処理を行うと、単語領域ＷＣ［０］に対しては、上限を２０とすることができ、ステップＰ２３の文書頻度の参照処理時に、単語領域ＷＣ［０］に対する参照処理（ステップＰ２３０３）を省くことができる。【０１７１】
上述したように、実施例１の検索装置は、要約マトリックスとして領域内の静的領域頻度の最大値を使用している。これは、領域内に含まれる単語は、たかだかＸ回しか登場しない、という情報を元に、領域上限算出部２が絞り込みを行うことで高速化を図っている。実施例１は、Ｘが十分小さい場合に有効であるが、文書集合の性質によってはＸが大きくなってしまうこともある。【０１７２】
これに対し、実施例２の検索装置では、領域毎に動的領域頻度の上限値を算出する際に、領域内で実際に単語を含む文書集合と入力文書との比較が行われる。これにより、Ｘが大きい場合に、文書集合と入力文書との分布が異なれば、領域内の上限値を小さく見積もることができる。
【実施例３】
【０１７３】
次に、実施の形態２における検索装置の動作を説明する。ここではステップＰ２３'（図２６参照）の処理に焦点を当てて、動作を説明する。例えば、ステップＰ２２'により、図２７Ａ及び図２７Ｂに示す二つの単語上限リストが得られたとする。図２７Ａ及び図２７Ｂは、実施例２において得られる単語上限リストの例を示す図であり、図２７Ａ及び図２７Ｂはそれぞれ異なる２次元クラスタリング処理によって得られた単語上限リストを示している。【０１７４】
具体的には、図２７Ａは、４×４の２次元クラスタリング処理により得られた結果を示している。一方、図２７Ｂは、５×５の２次元クラスタリング処理により得られた結果を示している。このとき、ｋ＝３であるとすると、図２７Ａに示す文書頻度の参照を行うと、単語領域ＷＣ［０］内の２５個の単語に対する参照のみで処理を終えることができそうである。【０１７５】
これに対し、図２７Ｂに示す文書頻度の参照を行うと、単語領域ＷＣ［０］内と単語領域ＷＣ［１］内との合計４０個の単語について参照が必要そうである。このため、この場合には図２７Ａの結果に対して、ステップＰ２４'（図２６参照）の処理を行うべきである。【０１７６】
この場合、クラスタ処理選択部９は、各クラスタ処理部１０に対して歪度を算出する。図２７Ａの結果に対する歪度は、上記数２により、約１．１として算出される。同様に図２７Ｂの結果に対する歪度は、上記数２により、約０．５として算出される。これにより、クラスタ処理選択部９は、図２７Ａを出力したクラスタ処理部１０を選択し、文書頻度の参照処理（ステップＰ２４'）を実行させることができる。【０１７７】
このように、本実施例２によれば、複数の種類の異なるクラスタ処理部１０が備えられている。よって、それぞれが出力する単語上限リストにより、入力文書リストによって最も多く単語領域を絞りこめるクラスタ処理部１０を選択でき、選択したクラスタ処理部１０により、検索の高速化がいっそう図られる。【０１７８】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、記録媒体に記録して提供することも可能であり、また、インターネットその他の伝送媒体を介して伝送することにより提供することも可能である。また、記録媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＢＤ(Blu-ray(登録商標) Disc)、ＲＯＭ（Read Only Memory）カートリッジ、バッテリバックアップ付きＲＡＭ（Random Access Memory）メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれる。【０１７９】
この出願は、２００８年１１月２６日に出願された日本出願特願２００８−３００７９３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１８０】
本発明は、連想検索エンジンとも呼ばれる検索エンジンに適用でき、テキストマイニングシステムや検索エンジンにおいて、あるクエリで表現される文書集合と関係が深い概念を表す高頻度な語を検索する際に、有用である。本発明は、産業上の利用可能性を有している。
【符号の説明】
【０１８１】
１  要約マトリクス記憶部
２  領域上限算出部
３  単語頻度算出部
４  文書頻度参照部
５  クラスタ作成部
６  領域要約作成部
７  単語文書マトリクス記憶部
８  クラスタ処理展開部
９  クラスタ処理選択部
１０  クラスタ処理部
【図１】
0005594145.tif 000006
【図２】
0005594145.tif 000007
【図３】
0005594145.tif 000008
【図４】
0005594145.tif 000009
【図５Ａ】
0005594145.tif 000010
【図５Ｂ】
0005594145.tif 000011
【図６Ａ】
0005594145.tif 000012
【図６Ｂ】
0005594145.tif 000013
【図７Ａ】
0005594145.tif 000014
【図７Ｂ】
0005594145.tif 000015
【図８Ａ】
0005594145.tif 000016
【図８Ｂ】
0005594145.tif 000017
【図９】
0005594145.tif 000018
【図１０】
0005594145.tif 000019
【図１１】
0005594145.tif 000020
【図１２】
0005594145.tif 000021
【図１３】
0005594145.tif 000022
【図１４】
0005594145.tif 000023
【図１５】
0005594145.tif 000024
【図１６】
0005594145.tif 000025
【図１７】
0005594145.tif 000026
【図１８】
0005594145.tif 000027
【図１９】
0005594145.tif 000028
【図２０】
0005594145.tif 000029
【図２１】
0005594145.tif 000030
【図２２】
0005594145.tif 000031
【図２３】
0005594145.tif 000032
【図２４】
0005594145.tif 000033
【図２５】
0005594145.tif 000034
【図２６】
0005594145.tif 000035
【図２７Ａ】
0005594145.tif 000036
【図２７Ｂ】
0005594145.tif 000037