(57)【特許請求の範囲】
【請求項１】
複数の登録文書に関して予め算出された、単語毎の単語出現頻度及び文書出現頻度をもっているインデックス情報と、
検索条件として指定された１個以上の単語の単語出現頻度及び文書出現頻度を前記インデックス情報から取得し、取得した単語出現頻度及び文書出現頻度に基づいて、登録文書をランキングして検索結果として出力する検索手段と、
を備え、
前記インデックス情報には、各単語について日付別の文書出現頻度が保持されており、
前記検索手段は、検索条件として日付範囲を指定されたときには、指定された日付範囲の文書出現頻度を前記インデックス情報から取得して、登録文書のランキングに用いる、文書検索装置。
【請求項２】
複数の登録文書に関して予め算出された、単語毎の単語出現頻度及び文書出現頻度をもっているインデックス情報と、
検索条件として指定された１個以上の単語の単語出現頻度及び文書出現頻度を前記インデックス情報から取得し、取得した単語出現頻度及び文書出現頻度に基づいて、登録文書をランキングして検索結果として出力する検索手段と、
を備え、
前記インデックス情報には、各単語について日付別の文書出現頻度が保持されており、
前記検索手段は、検索条件として日付範囲を指定されたときには、指定された日付範囲の文書出現頻度を前記インデックス情報から取得して、登録文書のランキングに用いる、
文書検索装置として、コンピュータを機能させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数キーワードによる文書検索装置に関する。
【０００２】
【従来の技術】
従来の全文検索エンジン（文書検索装置）の検索アルゴリズムは大きく二つの手法に分けられる。一つは文書を直接検索する方法であり、もう一つは事前に文書に対してインデックスファイルを作成しておく方法である。前者の方法では、検索条件に指定された文字列と文書中の文字を直接比較照合することによって検索を行う。後者の方法では、事前に単語単位に文書の管理番号と単語の位置情報をインデックスファイルに保存しておき、検索時には指定された単語をキーとしてインデックスファイルから文書の管理番号を取り出すことで、高速に文書を参照することが可能である。一般的に検索速度は前者に比べ後者の方法が高速である。
【０００３】
このようなアルゴリズムを持つ全文検索エンジンを利用して複数の単語を条件に指定した検索を行う場合には、文書中にある単語が出現する回数（単語出現頻度：Ｔｅｒｍ  Ｆｒｅｑｕｅｎｃｙ、以下、ＴＦと略称する）と、ある単語に対して、その単語を含む文書が出現する回数（文書出現頻度：Ｄｏｃｕｍｅｎｔ  Ｆｒｅｑｕｅｎｃｙ、以下、ＤＦと略称する）を検索時に計算して、検索結果として得られた文書のスコアを求め、文書のランキングを行う。
【０００４】
【発明が解決しようとする課題】
上記したように、従来の全文検索エンジンのインデックスでは、単語と文書管理番号、単語の位置情報のみを管理している。そのため、ランキングに必要なＴＦ，ＤＦの値を直接インデックスから求めることができない。ランキングを行うためには、指定された文字列の含まれている文書を検索する処理とは別に、ＴＦとＤＦを算出するための検索を行う必要がある。
【０００５】
また、ランキングの対象となる文書（検索にヒットした文書）や検索条件の単語数が多くなると、スコア計算のために実行される検索回数は検索結果文書数と検索指定単語の積に比例して増加する。
【０００６】
従って、従来の検索エンジンを利用して複数の単語を条件に指定した検索を行う場合には、検索に要する時間が極端に増加してしまうという問題が発生する。
【０００７】
本発明は、複数の単語が条件に指定された場合の文書検索を高速に行える文書検索装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明の文書検索装置は、複数の登録文書に関して予め算出された、単語毎の単語出現頻度及び文書出現頻度をもっているインデックス情報と、検索条件として指定された１個以上の単語の単語出現頻度（ＴＦ）及び文書出現頻度（ＤＦ）を前記インデックス情報から取得し、取得した単語出現頻度及び文書出現頻度に基づいて、登録文書をランキングして検索結果として出力する検索手段とを備える。
【０００９】
この文書検索装置によれば、登録文書に関する単語毎のＴＦ，ＤＦが予め（典型的には、文書登録時に）計算されてインデックス情報として保持されているので、検索時にＴＦ，ＤＦを計算する手間が省け、検索速度が向上する。
【００１０】
好適な実施形態では、可変長文字列である単語を固定長数値の単語ＩＤに変換し、この単語ＩＤによって単語を識別する。これにより、インデックス情報内のデータへのアクセス速度が高まり、検索速度が向上する。
【００１１】
好適な実施形態では、インデックス情報には、各単語について日付別のＤＦが保持されており、検索手段は、検索条件として日付範囲を指定されたときには、指定された日付範囲のＤＦをインデックス情報から取得し、これを登録文書のランキングに用いる。これにより、日付の条件指定が行われたときの検索を高速に行うことができる。
【００１２】
好適な実施形態では、インデックス情報は、登録文書別に各登録文書に含まれる単語を示した文書関連情報と、単語別に各単語が含まれる文書とＴＦとＤＦを示した単語関連情報とを有している。そして、検索手段は、検索条件として文字列が指定された場合には、指定された文字列を単語に分解し、分解した各単語についてのＴＦとＤＦをインデックス情報内の単語関連情報から取得し、取得したＴＦ及びＤＦに基づいて登録文書をランキングするする。一方、検索条件として登録文書が指定された場合には、指定された登録文書に含まれる単語をインデックス情報内の文書関連情報によって識別し、識別した各単語についてのＴＦとＤＦをインデックス情報内の単語関連情報から取得し、取得したＴＦ及びＤＦに基づいて登録文書をランキングする。これにより、特に、登録文書が条件として指定された場合の単語の抽出処理が簡単になり、検索速度が向上する。
【００１４】
【発明の実施の形態】
【００１５】
以下、本発明の実施の形態を添付図面に従って説明する。以下に説明する実施形態はコンピュータのソフトウェアにより実施されるものであるが、本発明は必ずしもコンピュータで実施しなければならないわけではなく、専用ハードウェアロジック回路によっても、又はそれらの組み合わせによっても実施することができる。
【００１６】
図１は、本発明の一実施形態にかかるコンピュータが実行する文書登録処理の基本説明図である。文書登録処理は、文書検索を行う前に行われるものであるものである。
【００１７】
検索エンジンにおける文書登録処理は以下のような流れで行われる。まず、（１）登録対象となる多数の文書の各々１を形態素解析器により単語に分解し、各文書１内でのそれぞれの単語の出現頻度ＴＦと、それぞれの単語を含む文書の数（文書出現頻度）ＤＦを集計する。次に、（２）可変長文字列である各単語を、固定長数値の単語ＩＤに変換する。固定長数値の単語ＩＤへの変換により、検索エンジンのインデックス５のデータアクセスが高速化されることになる。（１）、（２）の処理により、各文書１ごとに、その文書１に含まれる全ての単語の単語ＩＤとＴＦのリスト２ができる。次に、（３）各単語毎に（各単語ＩＤ毎に）、その単語が含まれる文書の文書ＩＤと単語出現頻度ＴＦの組のリスト３と、登録処理を行った日付とその日付で集計したその単語の文書出現頻度ＤＦの組のリスト４とを作成して、それらのリスト３、４をインデックス５に保存する。ここで、文書出現頻度ＤＦを日付単位で管理するのは日付条件指定の場合の検索を高速化するためである。
【００１８】
図２は文書検索処理の基本説明図である。
【００１９】
検索エンジンにおける検索処理は以下のような流れで行われる。まず、（１）検索条件６として指定された単語（キーワード）を固定長数値の単語ＩＤに変換する。次に、（２）その単語ＩＤを検索キーにして、インデックス５から、その単語ＩＤについての文書ＩＤとＴＦ，ＤＦを取得する。ＤＦは検索条件５で指令された日付範囲分のみ取得する。そして、（３）インデックス５から取得した各文書ＩＤについてスコアを計算する。ここで、スコアとは文書の重要度を示す数値であり、その計算方法は後述する。最後に、（４）文書ＩＤをスコアの降順に並べ変えて文書をランキングし、検索結果７とする。
【００２０】
以上のように、この実施形態にかかる検索エンジンは、可変長文字列である登録単語を固定数値化することにより、検索エンジンのインデックス５のデータアクセスを高速化する。また、文書の登録時に予め各単語についてのＴＦ，ＤＦを求めておき、これを検索エンジンのインデックス５で管理する。また、文書検索は既に求められているＴＦ，ＤＦをインデックス５から取得することによって行う。さらに、ＤＦを日付単位のファイルで保存しておくことにより、日付の条件指定が行われた場合の検索を高速に行う。
【００２１】
図３は検索エンジンにおける単語から単語ＩＤへの変換処理の説明図、図４は文書登録処理の具体例を示す説明図である。
【００２２】
図３、図４を参照して、検索エンジンのインデックス５の構造を説明する。
【００２３】
検索エンジンのインデックス５は、図３に示すような単語から単語ＩＤへの変換を行うための対応関係を保持する変換テーブル１０と、図４に示すような文書毎に単語ＩＤとＴＦを管理するＫＶＦテーブル１６と、単語毎にＴＦとＤＦを管理するＷＶＦテーブル１８とを備えている。
【００２４】
変換テーブル１０は、ＳＫＴ（Ｓｏｒｔｅｄ  Ｋｅｙ  Ｔａｂｌｅ；単語をハッシュ関数１４にかけて得られたキーコードをソートして持っているテーブル）１１、ＷＰＴＭ（Ｗｏｒｄ  Ｐｏｉｎｔｅｒ  Ｔａｂｌｅ  Ｍａｐ；前のＳＫＴ内の各キーコードを次のＷＰＴＬ内の単語ＩＤへ結び付けるためのＷＰＴＬへのポインタをもっているテーブル）１２、及びＷＰＴＬ（Ｗｏｒｄ  Ｐｏｉｎｔｅｒ  Ｔａｂｌｅ  Ｌｉｓｔ；単語ＩＤが登録されているテーブル）１３を有する。
【００２５】
ＫＶＦテーブル１６は、文書ＩＤ毎のＫＶＦ（Ｋｅｙｗｏｒｄ  Ｖｅｃｔｏｒ  Ｆｉｌｅｓ；文書毎の単語ＩＤとＴＦを保持するファイル）１７を有する。
【００２６】
ＷＶＦテーブル１８は、単語ＩＤ毎のＷＶＦ（Ｗｏｒｄ  Ｖｅｃｔｏｒ  Ｆｉｌｅｓ；単語毎のＴＦとＤＦを保持するファイル）を有する。ＷＶＦは、これは単語ＩＤ毎のＴＬ（ＴＦ  Ｌｉｓｔ  ；単毎に文書ＩＤとＴＦの組を保持するリストであり、図１のリスト３に相当する）１９と、単語ＩＤ毎のＤＬ（ＤＬ  Ｌｉｓｔ  ；単語毎に日付とＤＬの組を保持するリストであり、図１のリスト４に相当する）２０とから構成される。
【００２７】
図３に示すように、単語の単語ＩＤへの変換は次の手順で行われる。
【００２８】
まず、単語（例えば「情報」、「サービス」など）をハッシュ関数１４にかけてキーコード（例えば「ｋｅｙ００１」、「ｋａｙ００２」など）を計算する。次に、計算したキーコード（例えば「ｋｅｙ００１」）に該当するキーコードを変換テーブル１０のＳＫＴ１１から選び、その選んだキーコードに対応するポインタ（例えば、「ｏｆｆｓｅｔ００１」）をＷＰＴＭ１２から取得し、そして、その取得したポインタが指すＷＰＴＬ１３内の場所から単語ＩＤ（例えば「００２」）を取得する。こうして、例えば単語「情報」が単語ＩＤ「００２」に変換される。
【００２９】
図４に示すように、検索エンジンにおける文書登録処理は以下のような手順で行われる。
【００３０】
まず、登録対象となる文書に文書ＩＤを付与し（ステップＳ１）、その登録文書を形態素解析器により単語単位に分解する（Ｓ２）。次に、分解された各単語をハッシュ関数によって固定長数値（キーコード）に変換し、そのキーコードを用いてインデックス内の変換テーブル（図３、参照番号１０）から単語ＩＤを取得する（Ｓ３）。変換テーブルに単語が登録されていない場合、新たに単語ＩＤを発行し、変換テーブルに登録する。次に、その登録文書における各単語のＴＦを求めて、その文書ＩＤについての単語ＩＤとＴＦの組のリスト１５を作り（Ｓ４）、このリスト１５をＫＶＦテーブル１５に一つのＫＶＦ１６として登録する（Ｓ６）。また、各単語についてのＴＦとＤＦをＷＶＦテーブル１８に登録する（Ｓ５）。すなわち、各単語ＩＤ毎に、その登録文書の文書ＩＤと各単語のＴＦを、各単語ＩＤをもつＴＬ１９に登録し、かつ、日付と各単語についての登録文書のＤＦを、各単語ＩＤをもつＤＬ２０へ登録する。
【００３１】
以上の登録処理が登録対象の全ての文書について繰り返され、検索エンジンのインデックスが準備される。
【００３２】
図５は、複数の単語を指定した場合の文書検索処理の第１の具体例を示す説明図である。この例は、ある文字列（複数の単語から構成される）が検索条件としてユーザより指定された場合を示し、以下の処理が行われる。
【００３３】
まず、検索条件の文字列を形態素解析器により単語単位に分解する（Ｓ１１）。次に、分解されたすべての単語を、インデックスの変換テーブル（図３、参照番号１０）を用いて、単語ＩＤに変換する（Ｓ１２）。次に、インデックスのＷＶＦテーブル１８から、各単語ＩＤについての文書ＩＤとＴＦ及びＤＦを取得する（Ｓ１３）。すなわち、各単語ＩＤのＴＬ１９から文書ＩＤとＴＦを取得し、各単語ＩＤのＤＬ２０から検索条件で指定された日付範囲のＤＦを取得する。次に、ステップＳ１３で取得した文書ＩＤの各々について、以下の計算式を用いてスコア（ｓｃｏｒｅ）の計算を行う。
【００３４】
【数１】
0003558267.tif 000002
ここで、上記計算式内の「ＴＦ」は、条件に合致するＴＦ（つまり、各文書ＩＤ毎に、ＴＬ１９から取得したＴＦを集計した値）である。上記計算式内の「ＤＦ」は、条件に合致するＤＦ（つまり、各文書ＩＤ毎に、その文書に含まれる単語のＤＬ２０から取得したＤＦを集計した値）である。また、上記計算式内の「ＮＤＯＣ」は、検索対象となる文書数（つまり、ＴＬ１９から取得した文書ＩＤの個数）である。
【００３５】
各文書のスコアを計算した後、文書ＩＤをスコアの降順に並べて検索結果とする（Ｓ１５）。
【００３６】
図６は、複数単語を指定した場合の文書検索処理の第２の具体例を示す説明図である。この例は、ある登録文書（多数の単語を含んでいる）が検索条件として指定された場合を示し、以下の処理が行われる。
【００３７】
インデックスのＫＶＦテーブル１６から、検索条件として指定された文書ＩＤに含まれている単語ＩＤとＴＦのリストを取得する（Ｓ２１）。このとき、指定された文書ＩＤに含まれている単語全てのＩＤを取得するのではなく、出現頻度（ＴＦ）の高い所定個数（例えば３０個）の単語をその登録文書を特徴づける単語とみなし、その３０単語の単語ＩＤをＫＶＦテーブル１６から抽出する。ＫＶＦテーブル１６では、出現頻度（ＴＦ）の順に単語ＩＤがソートされているので、上位３０単語を抽出すれば良い。次に、抽出した各単語ＩＤ毎に、インデックスのＷＶＦテーブル１８から、文書ＩＤとＴＦと指定日付範囲のＤＦを取得する（Ｓ２２）。すなわち、各単語ＩＤのＴＬ１９から文書ＩＤとＴＦを取得し、各単語ＩＤのＤＬ２０から指定日付範囲のＤＦを取得する。次に、ステップＳ２２で取得した文書ＩＤの各々について、上述した計算式を用いてスコア（ｓｃｏｒｅ）の計算を行う（Ｓ２３）。そして、文書ＩＤをスコアの降順に並べて検索結果とする（Ｓ２４）。
【００３８】
以上説明した実施形態によれば、複数の単語を指定した場合の検索に要する時間を短縮できる。検索条件に指定した単語（キーワード）の個数が多くなるほど、その効果が高くなる。例えば、発明者らが実施した試験では、キーワード数が５ワードの場合に、従来の検索エンジンに比較して検索速度が１．８倍に向上し、また、キーワード数が１５ワードの場合には、従来の検索エンジンに比較して検索速度が５２．６倍に向上するという結果が得られた。
【図面の簡単な説明】
【図１】本発明の一実施形態における文書登録処理の基本説明図である。
【図２】文書検索処理の基本説明図である。
【図３】同実施形態の単語から単語ＩＤへの変換処理の説明図である。
【図４】文書登録処理の具体例を示す説明図である。
【図５】文書検索処理の第１の具体例を示す説明図である。
【図６】文書検索処理の第２の具体例を示す説明図である。
【符号の説明】
１  登録文書
５  インデックス
７  検索結果
１０  変換テーブル
１６  ＫＶＦテーブル
１８  ＷＶＦテーブル
１９  ＴＬ
２０  ＤＬ
【図１】
0003558267.tif 000003
【図２】
0003558267.tif 000004
【図３】
0003558267.tif 000005
【図４】
0003558267.tif 000006
【図５】
0003558267.tif 000007
【図６】
0003558267.tif 000008