(57)【要約】【課題】検索対象を適切に絞り込み処理を高速化する。【解決手段】本方法は、記憶装置に格納されている入力テキストから自立語を抽出するステップと、抽出された自立語を条件として入力テキストとの類似度が、記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を特定する範囲特定ステップと、自立語語数が自立語語数の範囲内である既存テキストに限定して、記憶装置に格納されている、当該既存テキスト中の自立語と抽出された自立語とを用いて当該既存テキストと入力テキストの類似度を算出し、記憶装置に格納する類似度算出ステップと、記憶装置に格納された類似度が類似度閾値以上となる既存テキストを特定するステップとを含む。【選択図】図１
2010198288.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に格納されている入力テキストから自立語を抽出するステップと、
抽出された前記自立語を条件として前記入力テキストとの類似度が、前記記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を特定する範囲特定ステップと、
自立語語数が前記自立語語数の範囲内である既存テキストに限定して、前記記憶装置に格納されている、当該既存テキスト中の自立語と抽出された前記自立語とを用いて当該既存テキストと前記入力テキストの類似度を算出し、前記記憶装置に格納する類似度算出ステップと、
前記記憶装置に格納された前記類似度が前記類似度閾値以上となる前記既存テキストを特定するステップと、
を含み、コンピュータに実行される検索方法。
【請求項２】
前記範囲特定ステップが、
前記入力テキストと前記既存テキストとの類似度を算出するための類似度算出式に基づき予め規定され且つ前記入力テキスト中の自立語の語数を変数として類似度が類似度閾値以上となる前記既存テキスト中の自立語語数の範囲を算出する算式を用いて、抽出された前記自立語の語数を入力として前記類似度閾値以上となる前記既存テキスト中の自立語語数の範囲を算出する範囲算出ステップ
を含む請求項１記載の検索方法。
【請求項３】
前記範囲算出ステップにおいて、
いずれかの前記既存テキストに出現する、前記入力テキスト内の自立語のみの語数を、前記自立語語数の範囲の上限値算出のための入力としてさらに用いて、前記既存テキスト中の自立語語数の範囲を算出する
請求項２記載の検索方法。
【請求項４】
前記類似度算出ステップが、
前記既存テキストに出現する自立語毎に当該自立語を含む前記既存テキストの識別子が当該自立語を含む前記既存テキスト中の自立語語数順に列挙されている、前記記憶装置内のインデックス格納部を、抽出された前記自立語で検索して、一致する前記自立語について前記自立語語数が前記自立語語数の範囲内である前記既存テキストの識別子を順に抽出するステップ、
を含む請求項１記載の検索方法。
【請求項５】
前記類似度算出ステップが、
前記既存テキストに出現する自立語毎に当該自立語を含む前記既存テキストの識別子が列挙されており且つ前記既存テキスト中の自立語語数毎に設けられている、前記記憶装置内のインデックス格納部のうち、前記自立語語数の範囲に含まれる自立語語数についてのインデックス格納部を選択するステップと、
選択された前記インデックス格納部を、抽出された前記自立語で検索して、一致する前記自立語を含む前記既存テキストの識別子を抽出するステップと、
を含む請求項１記載の検索方法。
【請求項６】
請求項１乃至５のいずれか１つ記載の検索方法をコンピュータに実行させるためのプログラム。
【請求項７】
記憶装置に格納されている入力テキストから自立語を抽出する手段と、
抽出された前記自立語を条件として前記入力テキストとの類似度が、前記記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を特定する範囲特定手段と、
自立語語数が前記自立語語数の範囲内である既存テキストに限定して、前記記憶装置に格納されている、当該既存テキスト中の自立語と抽出された前記自立語とを用いて当該既存テキストと前記入力テキストの類似度を算出し、前記記憶装置に格納する類似度算出手段と、
前記記憶装置に格納された前記類似度が前記類似度閾値以上となる前記既存テキストを特定する手段と、
を有する検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、入力テキストと類似するテキストを探索する検索技術に関する。
【背景技術】
【０００２】
従来技術における検索技術の一例を図１乃至図３を用いて説明する。最初に、インデックスを生成する処理について図１及び図２を用いて説明する。まず、テキストＩＤが「１」である「太郎と花子と二郎と三郎が泣く。」というテキストが入力される（図１（ａ））。そうすると、入力テキストから、周知の単語切り出し技術を用いて単語のうち自立語（名詞及び動詞）を切り出す。本例では、「太郎」「花子」「二郎」「三郎」「泣く」が切り出される（図１（ｂ））。そして、各単語に対応付けて当該単語が出現したテキストのＩＤが格納されるインデックスＤＢに、抽出された単語「太郎」「花子」「二郎」「三郎」「泣く」のそれぞれに対応付けてＩＤ「１」が登録される（図１（ｃ））。さらに、各テキストに対応付けて単語数が登録されるテキストサイズＤＢに、今回の入力テキストのＩＤ「１」に対応付けて単語数「５」が登録される（図１（ｄ））。
【０００３】
その後、テキストＩＤが「２」である「太郎と花子と二郎が泣く。」というテキストが入力される（図２（ａ））。そうすると、入力テキストから、「太郎」「花子」「二郎」「泣く」という自立語が切り出される（図２（ｂ））。そして、インデックスＤＢに、抽出された単語「太郎」「花子」「二郎」「泣く」のそれぞれのレコードに、テキストＩＤ「２」が追加される（図２（ｃ））。さらに、テキストサイズＤＢに、今回の入力テキストのＩＤ「２」に対応付けて単語数「４」が登録される（図２（ｄ））。
【０００４】
このような前処理が行われた後に、検索キーとなるテキストが入力される。例えば、「太郎と二郎が泣く。」というテキストが入力されたものとする（図３（ａ））。そうすると、周知の単語切り出し技術を用いて自立語が切り出されて、「太郎」「二郎」「泣く」が得られる（図３（ｂ））。ここで、図２（ｃ）に示したインデックスＤＢに対して、「太郎」で検索すると、テキストのＩＤ「１」及び「２」が得られ、「二郎」で検索するとテキストのＩＤ「１」及び「２」が得られ、「泣く」で検索するとテキストのＩＤ「１」及び「２」が得られる。ここで、得られたテキストＩＤ毎に、一致する単語数をカウントして、共通出現単語数格納部に格納しておく。今回の例では、テキストＩＤが「１」のテキストについては一致する単語数は３個、テキストＩＤが「２」のテキストについても一致する単語数は３個である（図３（ｃ））。
【０００５】
ここでは、例えば２つのテキストの類似度に余弦（コサイン）類似度を用いるものとする。また、例えばテキストＡを当該テキストＡに含まれる単語についてのバイナリベクトルＡで表し、テキストＢを当該テキストＢに含まれる単語についてのバイナリベクトルＢで表すものとする。バイナリベクトルは、ある単語が出現する場合、対応する次元の値を「１」、それ以外については「０」とするベクトルである。例えば、「太郎」「花子」「二郎」「泣く」「三郎」という順番の場合には、テキストＩＤ「１」のバイナリベクトルは（１，１，１，１，１）であり、テキストＩＤ「２」のバイナリベクトルは（１，１，１，１，０）である。また、検索キーとなるテキストは（１，０，１，１，０）となる。
【０００６】
この際、テキストＡとテキストＢとのコサイン類似度は、以下のように算出される。
ｃｏｓ（Ａ，Ｂ）＝Ａ・Ｂ／（｜Ａ｜｜Ｂ｜）1/2
Ａ及びＢは、それぞれテキストに含まれる単語のバイナリベクトルであり、Ａ・Ｂは、ＡとＢの内積である。バイナリベクトルの場合には、Ａ・Ｂは、ＡとＢに共通に含まれる単語数であり、共通出現単語数格納部に格納されている値と一致する。｜Ａ｜はＡの長さであり、ここではＡに含まれる単語（ここでは自立語）の数であり、｜Ｂ｜はＢの長さであり、ここではＢに含まれる単語の数である。｜Ａ｜｜Ｂ｜は、Ａの長さとＢの長さの積である。
【０００７】
このようなコサイン類似度を用いる場合、分母は、検索キーとなる入力テキストの単語数とテキストサイズＤＢに登録されている単語数とを用いて算出され、分子は、共通出現単語数格納部に格納されている値を用いればよい。
【０００８】
具体的に、検索キーとなる入力テキストとテキストＩＤ「１」のテキストとのコサイン類似度ｃｏｓ（入力，１）＝３／（３×５）1/2＝０．７７４であり、検索キーとなる入力テキストとテキストＩＤ「２」のテキストとのコサイン類似度ｃｏｓ（入力，２）＝３／（３×４）1/2＝０．８６６となる（図３（ｄ））。
【０００９】
従って、類似度閾値ｓ＝０．８５以上という条件が設定されていれば、検索キーとなる入力テキストに類似するテキストとして、テキストＩＤ「２」が出力される（図３（ｅ））。
【００１０】
このような技術では、インデックスＤＢに登録されており且つ単語が１つでも一致するテキストであれば、全て類似度計算を実施しなければならないので、インデックスＤＢに登録されているテキストの数が多くなると、非常に検索時間が長くなってしまう。そこで、従来技術にも検索対象を絞り込むような技術は存在しているが、統計的に絞り込みの条件を設定しており、絞り込みが適切ではない場合も生じ得る。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平１１−６６０８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
以上のように、検索処理の高速化のためには検索対象の絞り込みは有効であるが、従来技術では適切に絞り込みがなされない場合も生じ得る。
【００１３】
従って、本技術の目的は、検索対象を適切に絞り込むための新規な技術を提供することである。
【課題を解決するための手段】
【００１４】
本検索方法は、記憶装置に格納されている入力テキストから自立語を抽出するステップと、抽出された自立語を条件として入力テキストとの類似度が、記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を特定する範囲特定ステップと、自立語語数が自立語語数の範囲内である既存テキストに限定して、記憶装置に格納されている、当該既存テキスト中の自立語と抽出された自立語とを用いて当該既存テキストと入力テキストの類似度を算出し、記憶装置に格納する類似度算出ステップと、記憶装置に格納された類似度が類似度閾値以上となる既存テキストを特定するステップとを含む。
【発明の効果】
【００１５】
検索対象を適切に絞り込むことができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、従来技術のインデックス生成処理を説明するための図である。
【図２】図２は、従来技術のインデックス生成処理を説明するための図である。
【図３】図３は、従来技術の検索処理を説明するための図である。
【図４】図４は、検索装置の機能ブロック図である。
【図５】図５は、第１の実施の形態のメインの処理フローを示す図である。
【図６】図６は、インデックスＤＢに格納されるデータの一例を示す図である。
【図７】図７は、テキストサイズＤＢに格納されるデータの一例を示す図である。
【図８】図８は、インデックス変換処理後のインデックスＤＢに格納されるデータの一例を示す図である。
【図９】図９は、インデックス生成処理の処理フローを示す図である。
【図１０】図１０は、インデックス生成処理の処理フローを示す図である。
【図１１】図１１は、インデックス変換処理の処理フローを示す図である。
【図１２】図１２は、共通出現単語数算出処理の処理フローを示す図である。
【図１３】図１３は、共通出現単語数算出処理の処理フローを示す図である。
【図１４】図１４（ａ）乃至（ｅ）は、第１の実施の形態の処理を具体的に説明するための図である。
【図１５】図１５は、類似テキスト選択処理の処理フローを示す図である。
【図１６】図１６は、第２の実施の形態のメインの処理フローを示す図である。
【図１７】図１７は、サイズ別インデックスＤＢの一例を示す図である。
【図１８】図１８は、サイズ別インデックスＤＢの一例を示す図である。
【図１９】図１９は、サイズ別インデックス生成処理の処理フローを示す図である。
【図２０】図２０は、サイズ別インデックス生成処理の処理フローを示す図である。
【図２１】図２１（ａ）及び（ｂ）は、サイズ別インデックス生成処理を説明するための具体例を示す図である。
【図２２】図２２（ａ）及び（ｂ）は、サイズ別インデックス生成処理を説明するための具体例を示す図である。
【図２３】図２３は、第２共通出現単語数算出処理の処理フローを示す図である。
【図２４】図２４は、第２共通出現単語数算出処理の処理フローを示す図である。
【図２５】図２５（ａ）乃至（ｅ）は、第２の実施の形態の処理を具体的に説明するための図である。
【図２６】図２６は、第３の実施の形態のメインの処理フローを示す図である。
【図２７】図２７は、第３共通出現単語数算出処理の処理フローを示す図である。
【図２８】図２８は、比較対象テキストのサイズ範囲決定処理の処理フローを示す図である。
【図２９】図２９（ａ）乃至（ｅ）は、第３の実施の形態の処理を具体的に説明するための図である。
【図３０】図３０は、第４共通出現単語数算出処理の処理フローを示す図である。
【図３１】図３１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１７】
［実施の形態１］
第１の実施の形態について図４乃至図１５を用いて説明する。
【００１８】
まず、図４に本実施の形態における検索装置の機能ブロック図を示す。検索装置１００は、入力部１１と、入力部１１から入力されたインデックス対象テキストを格納するインデックス対象テキスト格納部１２と、インデックス対象テキスト格納部１２に格納されているデータを用いてインデックス生成処理を実施するインデックス生成部１３と、インデックス生成部１３により生成されたインデックスのデータを格納するインデックスＤＢ１４と、インデックス生成部１３により生成されたテキストサイズのデータを格納するテキストサイズＤＢ１５と、テキストサイズＤＢ１５のデータに基づきインデックスＤＢ１４に格納されたインデックスデータについて変換処理を実施するインデックス変換部１６と、入力部１１から入力された検索キーである入力テキストを格納する検索入力テキスト格納部１８と、入力部１１から入力された類似度閾値を格納する類似度閾値格納部２０と、インデックスＤＢ１４とテキストサイズＤＢ１５と検索入力テキスト格納部１８と類似度閾値格納部２０とに格納されているデータを用いて処理を行う共通出現単語数算出部１７と、共通出現単語数算出部１７の処理結果を格納する共通出現単語数格納部１９と、共通出現単語数格納部１９とテキストサイズＤＢ１５と検索入力テキスト格納部１８と類似度閾値格納部２０とに格納されたデータを用いて処理を実施する類似テキスト選択処理部２１と、類似テキスト選択処理部２１の処理結果を格納するテキストＩＤ格納部２２と、テキストＩＤ格納部２２に格納されているデータを出力する出力部２３とを有する。なお、共通出現単語数算出部１７は、検索処理を行っても目的の文書（すなわちテキスト）が得られないと判断した場合には解無し通知を出力部２３に出力するようになっている。
【００１９】
次に、図５乃至図１５を用いて検索装置１００の処理内容について説明する。まず、インデックス生成部１３は、入力部１１から入力され且つインデックス対象テキスト格納部１２に格納されているインデックス対象テキストに対してインデックス生成処理を実施する（図５：ステップＳ１）。インデックス生成処理については、本実施の形態では従来技術と同様であるが、後に詳しく述べる。インデックス生成処理では、例えば図６に示すようなデータがインデックスＤＢ１４に格納される。データ構造については従来技術で説明したものと同じである。さらに、インデックス生成処理では、例えば図７に示すようなデータがテキストサイズＤＢ１５に格納される。データ構造については従来技術で説明したものと同じである。
【００２０】
そして、インデックス変換部１６は、インデックスＤＢ１４に新たにデータが蓄積されると、インデックス変換処理を実施する（ステップＳ３）。インデックス変換処理については、後に詳しく述べる。簡単に述べれば、インデックスＤＢ１４に格納されている各単語について、テキストＩＤをそのテキストが含む単語の数に基づき昇順で並び替える。すなわち、図６のようなインデックスＤＢ１４が存在する場合には、図７のようなテキストサイズＤＢ１５に格納されている各テキストの単語数に応じてテキストＩＤを昇順にソートする。図７の例では、単語数の小さい順に、ＩＤ「２」「１」「３」「４」の順番になるので、図８に示すように各単語についてテキストＩＤが並べ替えられる。
【００２１】
そして、共通出現単語数算出部１７は、入力部１１により入力され且つ検索入力テキスト格納部１８に格納された、検索キーとなる入力テキストについて、インデックスＤＢ１４とテキストサイズＤＢ１５と類似度閾値格納部２０とに格納されているデータを用いて検索対象テキストを絞り込みつつ類似度計算に必要なデータである共通出現単語数を算出する共通単語算出処理を実施する（ステップＳ５）。共通出現単語数は、従来技術の説明において述べたコサイン類似度を用いる場合に必要な内積Ａ・Ｂの値に該当する。検索対象テキストが絞り込まれているので、本実施の形態によれば共通出現単語数格納部１９に格納されるテキストＩＤの数は従来技術より少なくなっている。共通出現単語数算出処理については、後に詳しく述べる。
【００２２】
そして、類似テキスト選択処理部２１は、検索入力テキスト格納部１８と類似度閾値格納部２０とテキストサイズＤＢ１５と共通出現単語数格納部１９とに格納されているデータに基づき、共通出現単語数格納部１９に格納されているテキストＩＤ毎に類似度を算出して、テキストＩＤと共にテキストＩＤ格納部２２に格納する類似テキスト選択処理を実施する（ステップＳ７）。類似テキスト選択処理については、出力部２３の処理も含まれるが、詳細については後に述べる。
【００２３】
以上のような処理を実施することによって、検索キーとなる入力テキストに対して類似度閾値以上の類似度となるテキストを、高速に抽出することができるようになる。
【００２４】
次に、図９及び図１０を用いて、インデックス生成処理について説明する。インデックス生成部１３は、インデックス対象テキスト格納部１２に格納されているインデックス対象のテキストのうち未処理のテキストを１つ特定する（ステップＳ１１）。そして、インデックスＤＢ１４において未使用のＩＤを、特定されたテキスト用に選択する（ステップＳ１５）。また、テキストサイズＤＢ１５において、選択されたＩＤに対応する値を０に初期化する（ステップＳ１７）。
【００２５】
その後、インデックス生成部１３は、特定されたテキストから自立語（名詞及び動詞の単語）を、周知の方法で切り出し、例えばメインメモリなどの記憶装置に格納する（ステップＳ１９）。そして、未処理の単語を１つ特定する（ステップＳ２１）。処理は端子Ａを介して図１０の処理に移行する。
【００２６】
図１０の処理の説明に移行して、インデックス生成部１３は、インデックスＤＢ１４において、特定された単語に対応付けて、選択されたＩＤを登録する（ステップＳ２３）。さらに、テキストサイズＤＢ１５において、選択されたＩＤに対応する値に「１」を加算する（ステップＳ２５）。そして、未処理の単語があるか判断して（ステップＳ２７）、未処理の単語が存在している場合には端子Ｂを介してステップＳ２１に戻る。一方、未処理の単語が存在していない場合には、未処理のテキストがインデックス対象テキスト格納部１２に存在するか判断する（ステップＳ２９）。未処理のテキストが存在する場合には端子Ｃを介してステップＳ１１に戻る。一方、未処理のテキストが存在しない場合には、元の処理に戻る。
【００２７】
以上のような処理を実施することによって、図６のようなインデックスＤＢ１４のデータが生成され、さらに図７のようなテキストサイズＤＢ１５のデータが生成される。
【００２８】
次に、インデックス変換処理について図１１を用いて説明する。インデックス変換部１６は、インデックスＤＢ１４において未処理の単語を１つ特定する（ステップＳ３１）。そして、特定された単語に対応付けて登録されているＩＤに対応する単語数をテキストサイズＤＢ１５から特定し、単語数に基づき昇順にＩＤをソートする（ステップＳ３３）。さらに、インデックスＤＢ１４において、特定された単語に対応付けてソート結果（すなわちソート後のＩＤ列）を登録する（ステップＳ３５）。
【００２９】
この後、インデックス変換部１６は、インデックスＤＢ１４において未処理の単語が存在するか判断し（ステップＳ３７）、未処理の単語が存在する場合にはステップＳ３１に戻る。一方、全ての単語を処理した場合には、元の処理に戻る。
【００３０】
このような処理を実施することによって、図６に示したようなインデックスＤＢ１４は、図８に示すようなインデックスＤＢ１４に変換される。テキストＩＤが単語数の順番で並んでいるので、小さい順に処理すれば、ある順番以降のＩＤについては、以下で述べるサイズ範囲外ということで処理対象外となり、検索対象テキストの絞り込みを容易に且つ高速に実施できるようになる。
【００３１】
次に、図１２乃至図１５を用いて共通出現単語数算出処理について説明する。共通出現単語数算出部１７は、検索入力テキスト格納部１８から、検索キーとなる入力テキストを読み出す（ステップＳ４１）。また、共通出現単語数格納部１９を初期化する（ステップＳ４３）。そして、入力テキストから自立語（動詞及び名詞の単語）を、周知の方法にて切り出し、単語数と共に、例えば検索入力テキスト格納部１８に格納する（ステップＳ４５）。そして、入力テキストの単語数と、類似度閾値格納部２０に格納されている類似度閾値ｓとから、比較対象テキストのサイズ範囲を決定し、例えばメインメモリなどの記憶装置に格納する（ステップＳ４７）。
【００３２】
サイズ範囲は、例えばコサイン類似度の場合には、以下の算式にて算出できる。
【数１】
2010198288.tif 000003
ここで入力テキストの単語数は｜Ａ｜で表されており、｜Ｂi｜が比較対象テキストの単語数を表している。この（１）式が得られる理由については後に詳細に述べるが、コサイン類似度の計算式から導出されており、類似度閾値ｓが与えられているとすると、入力テキストの単語数を変数とした上限値及び下限値算出関数となっている。この範囲以外では、入力テキストの単語数からして類似度閾値ｓの条件を満たすことはあり得ない。また、この式には、確率論的な観点はない。このようにして比較対象テキストのサイズ範囲が狭くなれば、比較対象テキストが解析的に絞り込まれるので、比較すべきテキストが漏れなく処理されると共にその処理の高速化が図られる。なお、上限値と下限値とにより整数のサイズ範囲が得られない場合もある。すなわち、上限値が２．８で下限値が２．５というような範囲が算出された場合には、整数の解（すなわちサイズ範囲）は得られないので、検索処理を実施しても目的の文書を特定することはできない。従って、共通出現単語数算出部１７は、出力部２３に解無し通知を行い、出力部２３は、検索の解無し（例えば「条件に合致するような文書は存在しませんでした。」というようなメッセージ）を表示装置や印刷装置などの出力装置に出力して、処理を終了する。
【００３３】
その後、共通出現単語数算出部１７は、入力テキストから抽出された単語のうち未処理の単語を特定する（ステップＳ４９）。そして、インデックスＤＢ１４に、特定された単語が登録されている判断する（ステップＳ５１）。登録されていない場合には、未処理の単語が存在するか判断し（ステップＳ５３）、未処理の単語が存在する場合にはステップＳ４９に戻る。未処理の単語が存在しない場合には、端子Ｇを介して本処理を終了して元の処理に戻る。
【００３４】
一方、インデックスＤＢ１４に、特定された単語が登録されている場合には、共通出現単語数算出部１７は、インデックスＤＢ１４において、特定された単語に対応付けられているＩＤのうち単語数が少ない方から未処理のＩＤを１つ特定する（ステップＳ５５）。処理は端子Ｆを介して図１３の処理に移行する。
【００３５】
図１３の処理の説明に移行して、共通出現単語数算出部１７は、特定されたＩＤの単語数をテキストサイズＤＢ１５から読み出して、当該単語数がサイズ範囲内であるか判断する（ステップＳ５７）。単語数がサイズ範囲内ではない場合には、ステップＳ６１に移行する。単語数が下限値未満である場合には、これから単語数が増加してサイズ範囲内に入る場合もあるので、ステップＳ６１に移行して、上限値を超えていないことを確認した上で、次の処理を決定する。
【００３６】
一方、単語数がサイズ範囲内である場合には、共通出現単語数算出部１７は、共通出現単語数格納部１９において、特定されたＩＤに対応付けられている値を１インクリメントする（ステップＳ５９）。そして、特定されたＩＤの単語数がサイズ範囲の上限を超えたか判断する（ステップＳ６１）。特定されたＩＤの単語数がサイズ範囲の上限を超えた場合には、この単語についてはこれ以上処理する必要はないので、ステップＳ６５に移行する。一方、特定されたＩＤの単語数がサイズ範囲の上限以下であれば、処理に係る単語について未処理のＩＤがまだ存在するか判断する（ステップＳ６３）。未処理のＩＤが存在する場合には、端子Ｅを介してステップＳ５５に戻る。
【００３７】
一方、未処理のＩＤが存在しない場合には、共通出現単語数算出部１７は、入力テキストから抽出された単語のうち未処理の単語が存在しているか判断する（ステップＳ６５）。未処理の単語が存在している場合には、端子Ｄを介してステップＳ４９に戻る。未処理の単語が存在しない場合には、入力テキストから抽出された単語を全て処理したことになるので、元の処理に戻る。
【００３８】
図１４を用いて図１２及び図１３の処理を具体的に説明する。例えば、検索キーとなる入力テキスト「太郎と二郎が泣く。」が得られると（図１４（ａ））、ステップＳ４５で「太郎」「二郎」「泣く」という３自立語（単語）に分割される。また、類似度閾値ｓが０．８５と設定されているものとする。そうすると、比較対象テキストのサイズ範囲は、（１）式から、２．１６７５（＝ｓ2＊｜Ａ｜＝0.852＊３）≦比較対象テキストの単語数≦４．１５２２（＝｜Ａ｜／ｓ2＝３／0.852）であるから、整数である単語数は「３」及び「４」でなければならないということになる。
【００３９】
そして、「太郎」で図８のインデックスＤＢ１４を検索すると、該当レコードが存在し、ＩＤ「２」「１」「３」「４」が得られ、ＩＤ「２」の単語数は図７のテキストサイズＤＢ１５から「４」であることが分かる。従って、共通出現単語数格納部１９には、ＩＤ「２」に対応付けて共通出現単語数「１」を登録する。次に、ＩＤ「１」の単語数は図７のテキストサイズＤＢ１５から「５」であることが分かる。「５」はサイズ範囲外であり上限を超えているので、「太郎」についての処理は終了する。次に、「二郎」で図８のインデックスＤＢ１４を検索すると、該当レコードが存在し、ＩＤ「２」「１」が得られる。「太郎」と同様に、ＩＤ「２」の単語数「４」だけがサイズ範囲内であるので、共通出現単語数格納部１９には、ＩＤ「２」に対応付けて共通出現単語数「２」を登録する。さらに、「泣く」で図８のインデックスＤＢ１４を検索すると、該当レコードが存在し、ＩＤ「２」「１」が得られる。「太郎」「二郎」と同様に、ＩＤ「２」の単語数「４」だけがサイズ範囲内であるので、共通出現単語数格納部１９には、ＩＤ「２」に対応付けて共通出現単語数「３」を登録する（図１３（ｃ））。この後の処理については、処理フローの説明をしてから説明する。
【００４０】
次に、類似テキスト選択処理を図１５を用いて説明する。類似テキスト選択処理部２１は、共通出現単語数格納部１９に登録されているＩＤのうち未処理のＩＤを特定する（ステップＳ２５１）。そして、特定されたＩＤについて類似度を算出し、例えばメインメモリなどの記憶装置に格納する（ステップＳ２５２）。例えばコサイン類似度であれば、共通出現単語数格納部１９から、特定されたＩＤに対応付けている共通出現単語数（＝Ａ・Ｂ）を読み出し、テキストサイズＤＢ１５から、特定されたＩＤに対応付けられている単語数を読み出し、例えば検索入力テキスト格納部１８から入力テキストの単語数を読み出し、共通出現単語数／｛（特定されたＩＤに対応付けられている単語数）1/2＊（入力テキストの単語数）1/2｝でコサイン類似度を算出する。
【００４１】
図１４の例では、コサイン類似度ｃｏｓ（入力，２）は、３／｛３＊４｝1/2＝０．８６６と算出される（図１４（ｄ））。
【００４２】
そして、類似テキスト選択処理部２１は、計算された類似度が類似度閾値ｓ以上であるか判断する（ステップＳ２５３）。計算された類似度が類似度閾値ｓ未満であれば、ステップＳ２４９に移行する。計算された類似度が類似度閾値ｓ以上であれば、特定されたＩＤ及び類似度をテキストＩＤ格納部２２に格納する（ステップＳ２５４）。図１４（ｄ）で算出された類似度は、類似度閾値ｓ＝０．８５以上であるから、テキストＩＤ格納部２２に格納される。
【００４３】
その後、類似テキスト選択処理部２１は、ステップＳ２４７の後に又は計算された類似度が類似度閾値ｓ未満であれば、共通出現単語数格納部１９内の全てのＩＤについて処理したか判断する（ステップＳ２５５）。未処理のＩＤが存在する場合にはステップＳ２４１に戻る。一方、未処理のＩＤが存在しない場合には、出力部２３は、テキストＩＤ格納部２２に格納されているテキストＩＤ又はテキストＩＤ及び類似度を、表示装置や印刷装置などの出力装置に出力する（ステップＳ２５６）。例えば、検索装置１００にネットワークに接続されている他のコンピュータに送信するようにしても良い。図１４の例では、ＩＤ「２」が出力される（図１４（ｅ））。
【００４４】
従来技術のような手法を採用すると、図３（ｃ）に示すように、２つのＩＤが特定されてしまうが、図１４（ｃ）に示すように、比較対象テキストが絞り込まれて１つのＩＤのみが特定される。そして、ＩＤの数が減れば類似度の計算回数も削減され、処理全体が高速化される。
【００４５】
［実施の形態２］
本実施の形態では、絞り込み後のテキストをより簡単に特定できるようにして、処理を高速化するものである。具体的には、インデックスＤＢに格納されるデータを、単語数毎に生成する。
【００４６】
本実施の形態に係る検索装置の構成は、インデックス変換部１６を有しない部分を除き、図４で示した機能ブロック図と同じである。従って本実施の形態では、図４をベースに説明する。但し、各処理部は以下で述べるような異なる処理を実施する。
【００４７】
図１６に、第２の実施の形態に係るメインの処理フローを示す。まず、インデックス生成部１３は、入力部１１から入力され且つインデックス対象テキスト格納部１２に格納されているインデックス対象テキストに対してサイズ別インデックス生成処理を実施する（ステップＳ２６１）。サイズ別インデックス生成処理については、後に詳しく述べる。なお、図１７及び図１８に示すようなインデックスデータが、インデックスＤＢ１４に格納される。図１７のインデックスデータは単語数「４」のインデックスデータであり、図１８のインデックスデータは単語数「５」のインデックスデータである。このように、単語数毎に、インデックスデータが生成されるようになる。なお、サイズ別インデックス生成処理では、例えば図７に示すようなデータがテキストサイズＤＢ１５に格納される。データ構造については従来技術で説明したものと同じである。
【００４８】
また、共通出現単語数算出部１７は、入力部１１により入力され且つ検索入力テキスト格納部１８に格納された、検索キーとなる入力テキストについて、インデックスＤＢ１４とテキストサイズＤＢ１５と類似度閾値格納部２０とに格納されているデータを用いて比較対象テキストを絞り込みつつ類似度計算に必要なデータである共通出現単語数を算出する第２共通単語算出処理を実施する（ステップＳ２６３）。インデックスデータを絞り込むことにより、比較対象テキストが絞り込まれる。第２共通出現単語数算出処理については、後に詳しく述べる。
【００４９】
そして、類似テキスト選択処理部２１は、検索入力テキスト格納部１８と類似度閾値格納部２０とテキストサイズＤＢ１５と共通出現単語数格納部１９とに格納されているデータに基づき、共通出現単語数格納部１９に格納されているテキストＩＤ毎に類似度を算出して、テキストＩＤと共にテキストＩＤ格納部２２に格納する類似テキスト選択処理を実施する（ステップＳ２６５）。類似テキスト選択処理については、図１５で述べたものと同一である。従って、ここでは説明は省略する。
【００５０】
以上のような処理を実施することによって、検索キーとなる入力テキストに対して類似度閾値以上の類似度となるテキストを、さらに高速に抽出することができるようになる。
【００５１】
次に、サイズ別インデックス生成処理について図１９乃至図２２を用いて説明する。インデックス生成部１３は、インデックス対象テキスト格納部１２に格納されているインデックス対象のテキストのうち未処理のテキストを１つ特定する（ステップＳ７１）。そして、インデックスＤＢ１４において未使用のＩＤを、特定されたテキスト用に選択する（ステップＳ７３）。また、テキストサイズＤＢ１５において、選択されたＩＤに対応する値を０に初期化する（ステップＳ７５）。
【００５２】
その後、インデックス生成部１３は、特定されたテキストから自立語（名詞及び動詞の単語）を、周知の方法で切り出し、例えばメインメモリなどの記憶装置に格納する（ステップＳ７７）。ここで単語数をカウントする。そして、未処理の単語を１つ特定する（ステップＳ７９）。処理は端子Ｈを介して図２０の処理に移行する。
【００５３】
図２０の処理の説明に移行して、インデックス生成部１３は、特定されたテキストの単語数に対応するサイズ別インデックスＤＢを選択する（ステップＳ８１）。サイズ別インデックスＤＢは、インデックスＤＢ１４内に設けられている。そして、サイズ別インデックスＤＢにおいて、特定された単語に対応付けて、選択されたＩＤを登録する（ステップＳ８３）。さらに、テキストサイズＤＢ１５において、選択されたＩＤに対応する値に「１」を加算する（ステップＳ８５）。そして、未処理の単語があるか判断して（ステップＳ８７）、未処理の単語が存在している場合には端子Ｊを介してステップＳ７９に戻る。一方、未処理の単語が存在していない場合には、未処理のテキストがインデックス対象テキスト格納部１２に存在するか判断する（ステップＳ８９）。未処理のテキストが存在する場合には端子Ｋを介してステップＳ７１に戻る。一方、未処理のテキストが存在しない場合には、元の処理に戻る。
【００５４】
例えば、図２１（ａ）のようにＩＤ「１」のテキスト「太郎と花子と二郎が泣く。」から、自立語を抽出すると図２１（ｂ）のように「太郎」「花子」「二郎」「泣く」という単語が得られる。そして上で述べたような処理を実施することによって、単語数４のためのサイズ別インデックスＤＢ（図１７）が得られる。さらに、図２２（ａ）のようにＩＤ「２」のテキスト「太郎と花子と二郎と三郎が泣く。」から、自立語を抽出すると図２２（ｂ）のように「太郎」「花子」「二郎」「三郎」「泣く」という単語が得られる。そして上で述べたような処理を実施することによって、単語数５のためのサイズ別インデックスＤＢ（図１８）が得られる。さらに図７のようなテキストサイズＤＢ１５のデータが生成される。
【００５５】
次に、第２共通出現単語数算出処理を図２３乃至図２５を用いて説明する。共通出現単語数算出部１７は、検索入力テキスト格納部１８から、検索キーとなる入力テキストを読み出す（図２３：ステップＳ９１）。また、共通出現単語数格納部１９を初期化する（ステップＳ９３）。そして、入力テキストから自立語（動詞及び名詞の単語）を、周知の方法にて切り出し、単語数と共に、例えば検索入力テキスト格納部１８に格納する（ステップＳ９５）。そして、入力テキストの単語数と、類似度閾値格納部２０に格納されている類似度閾値ｓとから、比較対象テキストのサイズ範囲を決定し、例えばメインメモリなどの記憶装置に格納する（ステップＳ９７）。例えば上で述べた（１）式に従って、サイズ範囲を算出する。なお、上限値と下限値とにより整数のサイズ範囲が得られない場合もある。すなわち、上限値が２．８で下限値が２．５というような範囲が算出された場合には、整数の解（すなわちサイズ範囲）は得られないので、検索処理を実施しても目的の文書を特定することはできない。従って、共通出現単語数算出部１７は、出力部２３に解無し通知を行い、出力部２３は、検索の解無し（例えば「条件に合致するような文書は存在しませんでした。」というようなメッセージ）を表示装置や印刷装置などの出力装置に出力して、処理を終了する。
【００５６】
その後、共通出現単語数算出部１７は、入力テキストから抽出された単語のうち未処理の単語を特定する（ステップＳ９９）。そして、上で決定されたサイズ範囲内における未処理のサイズに係るサイズ別インデックスＤＢを１つ選択する（ステップＳ１０１）。そして、選択されたサイズ別インデックスＤＢを、特定された単語で検索して、当該サイズ別インデックスＤＢに、特定された単語が登録されているか判断する（ステップＳ１０３）。登録されていない場合には、端子Ｍを介してステップＳ１１１に移行する。
【００５７】
一方、選択されたサイズ別インデックスＤＢに、特定された単語が登録されている場合には、共通出現単語数算出部１７は、選択されたサイズ別インデックスＤＢにおいて、特定された単語に対応付けられているＩＤのうち未処理のＩＤを１つ特定する（ステップＳ１０５）。処理は端子Ｌを介して図２４の処理に移行する。
【００５８】
図２４の処理の説明に移行して、共通出現単語数算出部１７は、共通出現単語数格納部１９において、特定されたＩＤに対応付けられている値を１インクリメントする（ステップＳ１０７）。そして、処理に係る単語について未処理のＩＤがまだ存在するか判断する（ステップＳ１０９）。未処理のＩＤが存在する場合には、端子Ｎを介してステップＳ１０５に戻る。
【００５９】
一方、未処理のＩＤが存在しない場合には、共通出現単語数算出部１７は、ステップＳ１０１で選択されたサイズ別インデックスＤＢのうち、未処理のサイズに係るサイズ別インデックスＤＢが存在するか判断する（ステップＳ１１１）。未処理のサイズに係るサイズ別インデックスＤＢが存在する場合には、端子Ｐを介してステップＳ１０１に戻る。一方、ステップＳ１０１で選択されたサイズ別インデックスＤＢを全て処理した場合には、入力テキストから抽出された単語のうち未処理の単語が存在しているか判断する（ステップＳ１１３）。未処理の単語が存在している場合には、端子Ｑを介してステップＳ９９に戻る。未処理の単語が存在しない場合には、入力テキストから抽出された単語を全て処理したことになるので、元の処理に戻る。
【００６０】
図２５を用いて図２３及び図２４の処理を具体的に説明する。例えば、検索キーとなる入力テキスト「太郎と二郎が泣く。」が得られると（図２５（ａ））、ステップＳ９５で「太郎」「二郎」「泣く」という３自立語（単語）に分割される（図２５（ｂ））。また、類似度閾値ｓが０．８５と設定されているものとする。そうすると、比較対象テキストのサイズ範囲は、（１）式から、２．１６７５（＝ｓ2＊｜Ａ｜＝0.852＊３）≦比較対象テキストの単語数≦４．１５２２（＝｜Ａ｜／ｓ2＝３／0.852）であるから、整数である単語数は「３」及び「４」ということになる。
【００６１】
従って、単語数「３」のサイズ別インデックスＤＢと単語数「４」のサイズ別インデックスＤＢとを選択する。但し、本例では、単語数「４」のサイズ別インデックスＤＢ（図１７）が選択される。
【００６２】
そして、「太郎」で図１７のサイズ別インデックスＤＢを検索すると、該当レコードが存在し、ＩＤ「１」が得られるので、共通出現単語数格納部１９には、ＩＤ「１」に対応付けて共通出現単語数「１」を登録する。次に、「二郎」で図１７のサイズ別インデックスＤＢを検索すると、該当レコードが存在し、ＩＤ「１」が得られる。「太郎」と同様に、共通出現単語数格納部１９には、ＩＤ「１」に対応付けて共通出現単語数「２」を登録する。さらに、「泣く」で図１７のサイズ別インデックスＤＢを検索すると、該当レコードが存在し、ＩＤ「１」が得られる。「太郎」「二郎」と同様に、共通出現単語数格納部１９には、ＩＤ「１」に対応付けて共通出現単語数「３」を登録する（図２５（ｃ））。
【００６３】
そうすると、第１の実施の形態と同じ類似テキスト選択処理が実施される。図２５の例では、コサイン類似度ｃｏｓ（入力，１）は、３／｛３＊４｝1/2＝０．８６６と算出される（図２５（ｄ））。図２５（ｄ）で算出された類似度は、類似度閾値ｓ＝０．８５以上であるから、テキストＩＤ格納部２２に格納される。そして出力部２３により、ＩＤ「１」が出力される（図２５（ｅ））。
【００６４】
このように、サイズ別インデックスＤＢを用いることによって、テキストサイズＤＢ１５へのアクセス回数が減少していることが分かる。従って、その分検索時における処理速度が向上する。そのほか、比較対象テキストが絞り込まれる点については第１の実施の形態と同様である。
【００６５】
［実施の形態３］
本実施の形態では、さらに比較対象テキストのサイズ範囲を絞り込む方法を採用する。本実施の形態に係る検索装置の構成は、インデックス変換部１６を有しない部分を除き、図４で示した機能ブロック図と同じである。従って本実施の形態では、図４をベースに説明する。但し、各処理部は以下で述べるような異なる処理を実施する。
【００６６】
図２６に本実施の形態に係るメイン処理フローを示す。まず、インデックス生成部１３は、入力部１１から入力され且つインデックス対象テキスト格納部１２に格納されているインデックス対象テキストに対してインデックス生成処理を実施する（ステップＳ１２１）。インデックス生成処理については、図９及び図１０に示したものと同じであるから、説明を省略する。
【００６７】
そして、インデックス変換部１６は、インデックスＤＢ１４に新たにデータが蓄積されると、インデックス変換処理を実施する（ステップＳ１２３）。このインデックス変換処理についても、図１１に示したものと同じであるから、説明を省略する。
【００６８】
また、共通出現単語数算出部１７は、入力部１１により入力され且つ検索入力テキスト格納部１８に格納された、検索キーとなる入力テキストについて、インデックスＤＢ１４とテキストサイズＤＢ１５と類似度閾値格納部２０とに格納されているデータを用いて比較対象テキストを絞り込みつつ類似度計算に必要なデータである共通出現単語数を算出する第３共通単語算出処理を実施する（ステップＳ１２５）。比較対象テキストがさらに絞り込まれるので、本実施の形態によれば共通出現単語数格納部１９に格納されるテキストＩＤの数は第１の実施の形態より少なくなっている。第３共通出現単語数算出処理については、後に詳しく述べる。
【００６９】
そして、類似テキスト選択処理部２１は、検索入力テキスト格納部１８と類似度閾値格納部２０とテキストサイズＤＢ１５と共通出現単語数格納部１９とに格納されているデータに基づき、共通出現単語数格納部１９に格納されているテキストＩＤ毎に類似度を算出して、テキストＩＤと共にテキストＩＤ格納部２２に格納する類似テキスト選択処理を実施する（ステップＳ１２７）。類似テキスト選択処理については、図１５で述べたものと同一である。従って、ここでは説明は省略する。
【００７０】
以上のような処理を実施することによって、検索キーとなる入力テキストに対して類似度閾値以上の類似度となるテキストを、さらに高速に抽出することができるようになる。
【００７１】
次に、図２７乃至図２９を用いて第３共通出現単語数算出処理について説明する。共通出現単語数算出部１７は、検索入力テキスト格納部１８から、検索キーとなる入力テキストを読み出す（ステップＳ１３１）。また、共通出現単語数格納部１９を初期化する（ステップＳ１３３）。そして、入力テキストから自立語（動詞及び名詞の単語）を、周知の方法にて切り出し、単語数と共に、例えば検索入力テキスト格納部１８に格納する（ステップＳ１３５）。そして、比較対象テキストのサイズ範囲決定処理を実施する（ステップＳ１３７）。この比較対象テキストのサイズ範囲決定処理は、第１の実施の形態よりもさらに比較対象テキストの範囲を絞り込むための処理であり、図２８を用いて説明する。
【００７２】
比較対象テキストのサイズ範囲決定処理を図２８を用いて説明する。まず、共通出現単語数算出部１７は、単語カウンタＺを０に初期化する（ステップＳ１５１）。また、入力テキストの未処理の単語を１つ特定する（ステップＳ１５３）。そして、特定された単語で、インデックスＤＢ１４を検索して、インデックスＤＢ１４内に、特定された単語が登録されているか判断する（ステップＳ１５５）。登録されていれば、単語カウンタＺを１インクリメントする（ステップＳ１５７）。そしてステップＳ１５９に移行する。一方、登録されていなければステップＳ１５９に移行する。
【００７３】
ステップＳ１５９では、共通出現単語数算出部１７は、入力テキストから抽出された単語に未処理の単語が存在しているか判断する（ステップＳ１５９）。未処理の単語が存在している場合にはステップＳ１５３に戻る。一方、全ての単語について処理した場合には、サイズ範囲の下限値を、（１）式に従って、入力テキストの単語数を用いて算出する（ステップＳ１６１）。サイズ範囲の下限値については、変更はない。
【００７４】
一方、共通出現単語数算出部１７は、サイズ範囲の上限値を、（２）式に従って単語カウンタＺの値を用いて算出する（ステップＳ１６３）。
【数２】
2010198288.tif 000004
【００７５】
そして、共通出現単語数算出部１７は、ステップＳ１６１で算出した下限値と、ステップＳ１６３で算出した上限値とから整数の解（すなわちサイズ範囲）が得られるか判断する（ステップＳ１６５）。単語カウンタＺの値が小さい場合には、上限値と下限値が逆転する場合もある。また、例えば上限値が２．８で下限値が２．５というような範囲が算出されても、使用可能なサイズ範囲は整数にならない。もし、整数のサイズ範囲が得られないような場合には、これ以上処理を実施しても条件を満たすような文書は得られない。従って、共通出現単語数算出部１７は、出力部２３に解無し通知を行い、出力部２３は、検索の解無し（例えば「条件に合致するような文書は存在しませんでした。」というようなメッセージ）を表示装置や印刷装置などの出力装置に出力して（ステップＳ１６７）、処理を終了する。一方、上で述べた下限値と上限値で整数の解が得られる場合には、元の処理に戻る。
【００７６】
ステップＳ１６３で（２）式を使用できるのは、入力テキストの単語のうち、インデックスＤＢ１４に登録されている単語の数が内積（Ａ・Ｂ）の上限値となるという条件を利用すると、入力テキストの単語数ではなく、入力テキストに含まれる単語のうち実際にインデックスＤＢ１４に登録されている単語の数によって上限値を決定できるためである。詳細については、後に述べる。
【００７７】
通常単語カウンタＺの値は入力テキストの単語数より小さい値になるので、第１の実施の形態より上限値が下がる。従って、比較対象テキストのサイズ範囲がさらに狭められ、処理の高速化が図られる。
【００７８】
図２９の例を用いて具体例を説明する。例えば、検索キーとなる入力テキスト「太郎と二郎と五郎が泣く。」が得られると（図２９（ａ））、ステップＳ１３５で「太郎」「二郎」「五郎」「泣く」という４自立語（単語）に分割される。ここで、図２８に従って、これらの単語でインデックスＤＢ１４（図８）を検索すると、「五郎」は登録されておらず、「太郎」「二郎」「泣く」の３つの単語が登録されていることが分かる。そうすると、単語カウンタＺの値は「３」となる（図２９（ｃ））。
【００７９】
そして、類似度閾値ｓが０．８５と設定されているものとする。そうすると、比較対象テキストのサイズ範囲は、（２）式から、下限値は、２．８９（＝ｓ2＊｜Ａ｜＝0.852＊４）であり、上限値は３．１１（＝Ｚ2／（｜Ａ｜＊ｓ2）＝３2／（４＊0.852））となる。この例では、整数であるサイズ範囲は「３」だけということになる（図２９（ｄ）及び（ｅ））。もしも、上限値を入力テキストの単語数「４」で算出すると、５．５３と算出される。従って、上限値は整数「５」となり、「３」「４」「５」がサイズ範囲となって、範囲が絞り込まれていることが分かる。
【００８０】
その後、共通出現単語数算出部１７は、入力テキストから抽出された単語のうち未処理の単語を特定する（ステップＳ１３９）。そして、インデックスＤＢ１４に、特定された単語が登録されている判断する（ステップＳ１４１）。登録されていない場合には、未処理の単語が存在するか判断し（ステップＳ１４３）、未処理の単語が存在する場合にはステップＳ１３９に戻る。未処理の単語が存在しない場合には、端子Ｇを介して本処理を終了して元の処理に戻る。
【００８１】
一方、インデックスＤＢ１４に、特定された単語が登録されている場合には、共通出現単語数算出部１７は、インデックスＤＢ１４において、特定された単語に対応付けられているＩＤのうち単語数が少ない方から未処理のＩＤを１つ特定する（ステップＳ１４５）。処理は端子Ｆを介して図１３の処理に移行する。
【００８２】
図１３については既に説明しており、処理内容は同じであるから、説明を省略する。
【００８３】
以上述べたように、入力テキストの単語のインデックスＤＢ１４への登録状況に応じて、可能であれば比較対象テキストのサイズ範囲がさらに狭められ、処理の高速化が図られる。
【００８４】
［実施の形態４］
第３の実施の形態では、ステップＳ１３７において前もってインデックスＤＢ１４を、入力テキストから抽出された単語で検索する例を示したが、インデックスＤＢ１４の検索回数は増加してしまう。そこで例えば図３０に示すような処理を採用するようにしても良い。
【００８５】
まず、共通出現単語数算出部１７は、検索入力テキスト格納部１８から、検索キーとなる入力テキストを読み出す（ステップＳ１７１）。また、共通出現単語数格納部１９を初期化する（ステップＳ１７３）。そして、入力テキストから自立語（動詞及び名詞の単語）を、周知の方法にて切り出し、単語数と共に、例えば検索入力テキスト格納部１８に格納する（ステップＳ１７５）。そして、入力テキストの単語数と、類似度閾値格納部２０に格納されている類似度閾値ｓとから、比較対象テキストのサイズ範囲を決定し、例えばメインメモリなどの記憶装置に格納する（ステップＳ１７７）。この処理は例外を含めてステップＳ４７と同じである。
【００８６】
また、共通出現単語数算出部１７は、単語カウンタＺに、入力テキストの単語数を初期的に設定する（ステップＳ１７９）。また、入力テキストから抽出された単語のうち未処理の単語を特定する（ステップＳ１８１）。そして、インデックスＤＢ１４に、特定された単語が登録されている判断する（ステップＳ１８３）。登録されていない場合には、未処理の単語が存在するか判断し（ステップＳ１８５）、未処理の単語が存在する場合には、単語カウンタＺ＝（Ｚ−１）として、ステップＳ１６３と同様に単語カウンタＺを用いて（２）式に従ってサイズ範囲の上限値を再計算する（ステップＳ１８７）。
【００８７】
そして、共通出現単語数算出部１７は、ステップＳ１７７で算出した下限値と、ステップＳ１８７で算出した上限値とから整数の解（すなわちサイズ範囲）が得られるか判断する（ステップＳ１９１）。単語カウンタＺの値が小さい場合には、上限値と下限値が逆転する場合もある。また、例えば上限値が２．８で下限値が２．５というような範囲が算出されても、使用可能なサイズ範囲は整数にならない。もし、整数のサイズ範囲が得られないような場合には、これ以上処理を実施しても条件を満たすような文書は得られない。従って、共通出現単語数算出部１７は、出力部２３に解無し通知を行い、出力部２３は、検索の解無し（例えば「条件に合致するような文書は存在しませんでした。」というようなメッセージ）を表示装置や印刷装置などの出力装置に出力して（ステップＳ１９３）、処理を終了する。一方、上で述べた下限値と上限値で整数の解が得られる場合には、ステップＳ１８１に戻る。このようにすれば、インデックスＤＢ１４を検索する回数を削減することができ、さらにサイズ範囲を動的に変更することができるようになる。なお、未処理の単語が存在しない場合には、端子Ｇを介して本処理を終了して元の処理に戻る。
【００８８】
一方、インデックスＤＢ１４に、特定された単語が登録されている場合には、共通出現単語数算出部１７は、インデックスＤＢ１４において、特定された単語に対応付けられているＩＤのうち単語数が少ない方から未処理のＩＤを１つ特定する（ステップＳ１８９）。処理は端子Ｆを介して図１３の処理に移行する。
【００８９】
図１３については既に説明しており、処理内容は同じであるから、説明を省略する。
【００９０】
［その他の実施の形態］
例えば第２の実施の形態のように、サイズ別インデックスＤＢを採用する場合においても、第３の実施の形態のように、入力テキストから抽出された単語がインデックスＤＢに登録されているか否かに応じてサイズ範囲を変更するようにしても良い。さらに、第４の実施の形態を第２の実施の形態に適用しても良い。
【００９１】
［（１）式について詳細説明］
ステップＳ４７の説明で示した（１）式がどのようにして得られるのかについて説明する。なお、入力テキストの単語数は｜Ａ｜で表され、｜Ｂi｜は比較対象テキストの単語数を表しているものとする。
【００９２】
（条件１）｜Ｂi｜≦｜Ａ｜の場合、ＡとＢiに共通に含まれる単語数Ａ・Ｂiの上限値は、Ｂi・Ｂiであるので、以下の式が得られる。
【数３】
2010198288.tif 000005
【００９３】
このようにして得られた（３）式をさらに変形すれば、以下の式がサイズ範囲の下限値を算出するための式として得られる。
【数４】
2010198288.tif 000006
【００９４】
なお、Ｂi・Ｂiを｜Ｂi｜に置換しているのは、Ｂi・ＢiはＢiとＢiに共通して含まれる単語数、すなわちＢiに含まれる単語数｜Ｂi｜であるからである。
【００９５】
（条件２）｜Ａ｜≦｜Ｂi｜の場合、ＡとＢiに共通に含まれる単語数Ａ・Ｂiの上限値は、Ａ・Ａなので、以下の式が成立する。
【数５】
2010198288.tif 000007
【００９６】
このようにして得られた（４）式をさらに変形すれば、以下の式がサイズ範囲の上限値を算出するための式として得られる。
【数６】
2010198288.tif 000008
【００９７】
以上の条件１及び２から、入力テキストＡを条件として、類似度閾値ｓを満たすデータを既存テキスト集合Ｂ＝｛Ｂi｝（１≦ｉ≦Ｎ）から抽出する場合には、以下の式を満たすテキストＢiだけを比較対象とすればよい。
【数７】
2010198288.tif 000009
【００９８】
（５）式の両辺を二乗すれば、（１）式が得られる。
【００９９】
［類似度の他の例について］
上で述べた実施の形態では、類似度の計算はコサイン類似度ということで説明した。しかし、類似度計算については他の計算方法を採用することも可能である。例えば、バイナリベクトルではなく、各単語について出現する回数まで考慮してコサイン類似度を算出するようにしても良い。以下、出現回数を考慮する場合について前提条件から説明する。
【０１００】
１．前提条件
例えば、テキストＡにおいて「太郎」が１回、「花子」が２回、「泣く」が１回出現する場合、Ａ＝｛太郎：１，花子：２，泣く：１｝と表記するものとする。ここで、「：」の後の数字が出現回数である。
【０１０１】
この場合のＡのサイズ｜Ａ｜は、Ａに含まれる単語とそれらの出現数から計算するものとする。具体的には、各単語の出現数の二乗和とする。上で述べたＡであれば、｜Ａ｜＝１2＋２2＋１2＝６となる。
【０１０２】
また、Ｂi＝｛太郎：１，花子：３，二郎：１，三郎：１，泣く：１｝とすると、内積Ａ・Ｂiは以下のように算出される。すなわち、共通に含まれる単語は｛太郎，花子，泣く｝であるので、それぞれの出現回数の積和となる。
Ａ・Ｂi＝（Ａにおける「太郎」の出現回数）×（Ｂiにおける「太郎」の出現回数）＋（Ａにおける「花子」の出現回数）×（Ｂiにおける「花子の出現回数）＋（Ａにおける「泣く」の出現回数）×（Ｂiにおける「泣く」の出現回数）＝（１×１）＋（２×３）＋（１×１）＝８
【０１０３】
従って、出現回数を考慮する場合におけるコサイン類似度は、以下のように算出される。
【数８】
2010198288.tif 000010
【０１０４】
次に、サイズ範囲（ここでは上限値）の算出法について説明する。最初に、Ｂ＝｛Ｂi｝中のテキストに出現する全ての単語の集合をＷとする。すなわち、Ｂに属するテキストは、Ｗ中の単語を含むものとする。
【０１０５】
具体的には、Ｂ＝｛Ｂ1，Ｂ2｝であり、Ｂ1＝｛太郎：１，花子：３，二郎：１，三郎：１，泣く：１｝、Ｂ2＝｛太郎：１，花子：２，二郎：１，泣く：１｝である場合、Ｗ＝｛太郎，花子，二郎，三郎，泣く｝となる。
【０１０６】
また、ＢにおけるＷ中のある単語ｗの出現回数の最大値をＭＡＸ（ｗ）と表記する。具体的には、ＭＡＸ（太郎）＝１、ＭＡＸ（花子）＝３、ＭＡＸ（二郎）＝１、ＭＡＸ（三郎）＝１、ＭＡＸ（泣く）＝１である。
【０１０７】
さらに、Ｗmaxを、ＢのＷ中の各単語とそれらの最大値で表される集合とする。上で述べた例では、Ｗmax＝｛太郎：１，花子：３，二郎：１，三郎：１，泣く：１｝と表される。
【０１０８】
このような前提の下、サイズ範囲の計算を考えると、入力テキストＡとＢ中のテキストとの内積の上限値はＡとＷmaxとの内積Ａ・Ｗmaxとなる。
【０１０９】
従って、Ｂ中のテキストのうち入力テキストＡと類似度閾値ｓ以上の類似度を有するテキストを探索する場合には、以下の条件が成り立つ。
【数９】
2010198288.tif 000011
【０１１０】
整理すると、以下のような関係が得られる。
【数１０】
2010198288.tif 000012
【０１１１】
両辺を二乗すれば、｜Ｂi｜についての条件となる。
【数１１】
2010198288.tif 000013
【０１１２】
［Ｚを用いても良い理由］
単語カウンタＺは、入力テキストＡとインデックス対象テキストＢiとの内積の最大値となる。
【０１１３】
従って、（４）式のＡ・Ａの代わりにＺを用いて、以下のように定義できる。
【数１２】
2010198288.tif 000014
【０１１４】
これは、Ａ・Ｂi≦Ｚ≦｜Ａ｜であるから、（４）式における分子のＡ・ＡをＺに置換しても不等号は成り立つ。そうすると、式（６）から、Ｚを用いた上限値の（７）式が導出される。最終的には、（７）式の両辺を二乗すれば、（２）式のうち上限を算出する式が得られる。
【数１３】
2010198288.tif 000015
【０１１５】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、図４に示した機能ブロック図は、一例であって、必ずしも実際のプログラムモジュール構成と一致するわけではない。さらに、処理フローについても処理結果が変わらない限り、処理順番を入れ替えたり並列実行したりすることが可能である。さらに、上で述べた例では、自立語を抽出する例を示したが、自立語＋付属語で上で述べた処理を実施する場合もある。
【０１１６】
なお、上で述べた検索装置は、コンピュータ装置であって、図３１に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１７】
以上本実施の形態をまとめると以下のようになる。
【０１１８】
本検索方法は、記憶装置に格納されている入力テキストから自立語を抽出するステップと、抽出された自立語を条件として入力テキストとの類似度が、記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を特定する範囲特定ステップと、自立語語数が自立語語数の範囲内である既存テキストに限定して、記憶装置に格納されている、当該既存テキスト中の自立語と抽出された自立語とを用いて当該既存テキストと入力テキストの類似度を算出し、記憶装置に格納する類似度算出ステップと、記憶装置に格納された類似度が類似度閾値以上となる既存テキストを特定するステップとを含む。
【０１１９】
このように類似度算出の対象となる既存テキストを絞り込むことによって、検索速度を向上させることができるようになる。
【０１２０】
また、上で述べた範囲特定ステップが、入力テキストと既存テキストとの類似度を算出するための類似度算出式に基づき予め規定され且つ入力テキスト中の自立語の語数を変数として類似度が類似度閾値以上となる既存テキスト中の自立語語数の範囲を算出する算式を用いて、抽出された上記自立語の語数を入力として上記類似度閾値以上となる既存テキスト中の自立語語数の範囲を算出する範囲算出ステップを含むようにしてもよい。このような算式を予め用意しておくことによって、入力テキストから抽出された自立語の語数をベースに、例えば範囲の上限値及び下限値又は上限値を算出することができるようになる。
【０１２１】
さらに、上で述べた範囲算出ステップにおいて、いずれかの既存テキストに出現する、入力テキスト内の自立語のみの語数を、自立語語数の範囲の上限値算出のための入力としてさらに用いて、既存テキスト中の自立語語数の範囲を算出するようにしてもよい。このように、既存テキストに出現しない自立語が入力テキスト内に存在する場合には、より範囲を限定的にして、検索速度をさらに向上させることができるようになる。
【０１２２】
また、上で述べた類似度算出ステップが、既存テキストに出現する自立語毎に当該自立語を含む既存テキストの識別子が当該自立語を含む既存テキスト中の自立語語数順に列挙されている、記憶装置内のインデックス格納部を、抽出された自立語で検索して、一致する自立語について自立語語数が上記自立語語数の範囲内である既存テキストの識別子を順に抽出するステップを含むようにしてもよい。このようなインデックス格納部を用意することによって、上記自立語語数の範囲内である既存テキストの識別子を高速に抽出することができるようになる。
【０１２３】
さらに、上で述べた類似度算出ステップが、既存テキストに出現する自立語毎に当該自立語を含む既存テキストの識別子が列挙されており且つ既存テキスト中の自立語語数毎に設けられている、記憶装置内のインデックス格納部のうち、自立語語数の範囲に含まれる自立語語数についてのインデックス格納部を選択するステップと、選択されたインデックス格納部を、抽出された上記自立語で検索して、一致する自立語を含む既存テキストの識別子を抽出するステップとを含むようにしてもよい。このようにインデックス格納部を既存テキスト中の自立語語数毎に設けることによって、上記自立語語数の範囲内にある既存テキストの識別子を高速に抽出することができるようになる。
【０１２４】
また、上で述べた類似度算出ステップが、抽出された既存テキストの識別子について、一致する自立語の語数をカウントするステップと、既存テキストの識別子に対応付けて当該既存テキスト中の自立語語数が格納されているテキストサイズ格納部から、抽出された既存テキストの識別子に対応付けられている当該既存テキスト中の自立語語数を読み出し、当該既存テキスト中の自立語語数と、入力テキストから抽出された自立語の語数と、一致する自立語の語数とから、既存テキストと前記入力テキストとの類似度を算出するステップとをさらに含むようにしてもよい。例えば類似度として余弦値を採用する場合には、このような処理によってさらに高速に類似度を算出することができる。
【０１２５】
さらに、上で述べた範囲算出ステップが、インデックス格納部を、入力テキストから抽出された自立語で検索して一致する自立語の語数を特定するステップと、入力テキストと既存テキストとの類似度を算出するための類似度算出式に基づき予め規定され且つ入力テキスト中の自立語の語数を変数として類似度が類似度閾値以上となる既存テキスト中の自立語語数の範囲を算出する算式を用いて、特定された自立語の語数を入力として上記類似度閾値以上となる既存テキスト中の自立語語数の範囲を算出するステップとを含むようにしてもよい。このように既存テキストに含まれない自立語が入力テキストに含まれる場合には、より自立語語数の範囲を限定することができる。よって、上で述べたように事前に確認するようにしても良い。
【０１２６】
さらに、上で述べた類似度算出ステップが、インデックス格納部を、入力テキストから抽出された自立語で検索して一致する自立語が登録されていないことを検出した場合に、入力テキストから抽出された自立語から、登録されていない自立語を除いたものを条件として入力テキストとの類似度が、記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を再設定するステップをさらに含むようにしてもよい。このように、入力テキストから抽出された自立語で検索して一致する自立語が登録されていないことを検出すれば、動的に自立語語数の範囲を変更するようにしても良い。
【０１２７】
なお、上で述べたような処理をハードウエアに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
【０１２８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２９】
（付記１）
記憶装置に格納されている入力テキストから自立語を抽出するステップと、
抽出された前記自立語を条件として前記入力テキストとの類似度が、前記記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を特定する範囲特定ステップと、
自立語語数が前記自立語語数の範囲内である既存テキストに限定して、前記記憶装置に格納されている、当該既存テキスト中の自立語と抽出された前記自立語とを用いて当該既存テキストと前記入力テキストの類似度を算出し、前記記憶装置に格納する類似度算出ステップと、
前記記憶装置に格納された前記類似度が前記類似度閾値以上となる前記既存テキストを特定するステップと、
を含み、コンピュータに実行される検索方法。
【０１３０】
（付記２）
前記範囲特定ステップが、
前記入力テキストと前記既存テキストとの類似度を算出するための類似度算出式に基づき予め規定され且つ前記入力テキスト中の自立語の語数を変数として類似度が類似度閾値以上となる前記既存テキスト中の自立語語数の範囲を算出する算式を用いて、抽出された前記自立語の語数を入力として前記類似度閾値以上となる前記既存テキスト中の自立語語数の範囲を算出する範囲算出ステップ
を含む付記１記載の検索方法。
【０１３１】
（付記３）
前記範囲算出ステップにおいて、
いずれかの前記既存テキストに出現する、前記入力テキスト内の自立語のみの語数を、前記自立語語数の範囲の上限値算出のための入力としてさらに用いて、前記既存テキスト中の自立語語数の範囲を算出する
付記２記載の検索方法。
【０１３２】
（付記４）
前記類似度算出ステップが、
前記既存テキストに出現する自立語毎に当該自立語を含む前記既存テキストの識別子が当該自立語を含む前記既存テキスト中の自立語語数順に列挙されている、前記記憶装置内のインデックス格納部を、抽出された前記自立語で検索して、一致する前記自立語について前記自立語語数が前記自立語語数の範囲内である前記既存テキストの識別子を順に抽出するステップ、
を含む付記１記載の検索方法。
【０１３３】
（付記５）
前記類似度算出ステップが、
前記既存テキストに出現する自立語毎に当該自立語を含む前記既存テキストの識別子が列挙されており且つ前記既存テキスト中の自立語語数毎に設けられている、前記記憶装置内のインデックス格納部のうち、前記自立語語数の範囲に含まれる自立語語数についてのインデックス格納部を選択するステップと、
選択された前記インデックス格納部を、抽出された前記自立語で検索して、一致する前記自立語を含む前記既存テキストの識別子を抽出するステップと、
を含む付記１記載の検索方法。
【０１３４】
（付記６）
前記類似度算出ステップが、
抽出された前記既存テキストの識別子について、一致する前記自立語の語数をカウントするステップと、
前記既存テキストの識別子に対応付けて当該既存テキスト中の自立語語数が格納されているテキストサイズ格納部から、抽出された前記既存テキストの識別子に対応付けられている当該既存テキスト中の自立語語数を読み出し、当該既存テキスト中の自立語語数と、前記入力テキストから抽出された前記自立語の語数と、一致する前記自立語の語数とから、前記既存テキストと前記入力テキストとの類似度を算出するステップと、
をさらに含む付記４又は５記載の検索方法。
【０１３５】
（付記７）
前記範囲算出ステップが、
前記インデックス格納部を、前記入力テキストから抽出された前記自立語で検索して一致する自立語の語数を特定するステップと、
前記入力テキストと既存テキストとの類似度を算出するための類似度算出式に基づき予め規定され且つ前記入力テキスト中の自立語の語数を変数として類似度が類似度閾値以上となる前記既存テキスト中の自立語語数の範囲を算出する算式を用いて、特定された前記自立語の語数を入力として前記類似度閾値以上となる前記既存テキスト中の自立語語数の範囲を算出するステップと、
を含む付記４乃至６のいずれか１つ記載の検索方法。
【０１３６】
（付記８）
前記類似度算出ステップが、
前記インデックス格納部を、前記入力テキストから抽出された前記自立語で検索して一致する自立語が登録されていないことを検出した場合に、前記入力テキストから抽出された前記自立語から、登録されていない自立語を除いたものを条件として前記入力テキストとの類似度が、前記記憶装置に格納されている類似度閾値以上となる、前記既存テキスト中の自立語語数の範囲を再設定するステップ
をさらに含む付記４又は５記載の検索方法。
【０１３７】
（付記９）
付記１乃至８のいずれか１つ記載の検索方法をコンピュータに実行させるためのプログラム。
【０１３８】
（付記１０）
記憶装置に格納されている入力テキストから自立語を抽出する手段と、
抽出された前記自立語を条件として前記入力テキストとの類似度が、前記記憶装置に格納されている類似度閾値以上となる、既存テキスト中の自立語語数の範囲を特定する範囲特定手段と、
自立語語数が前記自立語語数の範囲内である既存テキストに限定して、前記記憶装置に格納されている、当該既存テキスト中の自立語と抽出された前記自立語とを用いて当該既存テキストと前記入力テキストの類似度を算出し、前記記憶装置に格納する類似度算出手段と、
前記記憶装置に格納された前記類似度が前記類似度閾値以上となる前記既存テキストを特定する手段と、
を有する検索装置。
【符号の説明】
【０１３９】
１１  入力部    １２  インデックス対象テキスト格納部
１３  インデックス生成部    １４  インデックスＤＢ
１５  テキストサイズＤＢ    １６  インデックス変換部
１７  共通出現単語数算出部    １８  検索入力テキスト格納部
１９  共通出現単語数格納部    ２０  類似度閾値格納部
２１  類似テキスト選択処理部    ２２  テキストＩＤ格納部
２３  出力部
【図１】
2010198288.tif 000016
【図２】
2010198288.tif 000017
【図３】
2010198288.tif 000018
【図４】
2010198288.tif 000019
【図５】
2010198288.tif 000020
【図６】
2010198288.tif 000021
【図７】
2010198288.tif 000022
【図８】
2010198288.tif 000023
【図９】
2010198288.tif 000024
【図１０】
2010198288.tif 000025
【図１１】
2010198288.tif 000026
【図１２】
2010198288.tif 000027
【図１３】
2010198288.tif 000028
【図１４】
2010198288.tif 000029
【図１５】
2010198288.tif 000030
【図１６】
2010198288.tif 000031
【図１７】
2010198288.tif 000032
【図１８】
2010198288.tif 000033
【図１９】
2010198288.tif 000034
【図２０】
2010198288.tif 000035
【図２１】
2010198288.tif 000036
【図２２】
2010198288.tif 000037
【図２３】
2010198288.tif 000038
【図２４】
2010198288.tif 000039
【図２５】
2010198288.tif 000040
【図２６】
2010198288.tif 000041
【図２７】
2010198288.tif 000042
【図２８】
2010198288.tif 000043
【図２９】
2010198288.tif 000044
【図３０】
2010198288.tif 000045
【図３１】
2010198288.tif 000046