(57)【要約】  （Ａ）において、検索単語「カレーライス」の階層別の分類コード「＃１」，「＃１０」，「＃１０３２」が得られる。（Ｂ）において、比較文字列「カレーライス。カレーをご飯にかけた食べ物。」については、大分類コード「＃１」（食べ物）の出現回数は４回、中分類コード「＃１０」（飯）の出現回数は２回、小分類コード「＃１０３２」（カレーライス）の出現回数は１回、中分類コード「＃１１」（香辛料）の出現回数は１回、小分類コード「＃１１５４」（カレー）の出現回数は１回となる。（Ｃ）において、（Ａ）で求めた出現回数をベクトル化する。（Ｂ）で求めた出現回数をベクトル化する。両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は７となる。あいまい検索の対象範囲を自動的に取捨選択することにより、あいまい検索精度の向上を図ることができる。
2012108006.tif 000002
【特許請求の範囲】
【請求項１】
単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定工程と、
前記特定工程によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出工程と、
前記抽出工程によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定工程と、
前記判定工程による前記特定階層での一致数を計数する計数工程と、
前記計数工程によって計数された一致数に基づいて、前記判定工程によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断工程と、
前記検索単語の階層ごとの分類コードと前記判断工程によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする検索プログラム。
【請求項２】
前記特定階層は前記階層群の中の中間階層であることを特徴とする請求項１に記載の検索プログラム。
【請求項３】
前記抽出工程は、
さらに、前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記中間階層よりも上位となる上位階層の分類コードを抽出し、
前記判定工程は、
前記抽出工程によって抽出された前記検索単語の前記上位階層の分類コードと前記比較単語の前記上位階層の分類コードとが一致するか否かを、前記比較文字列ごとに判定し、一致すると判定された比較文字列ごとに、前記検索単語の前記中間階層の分類コードと前記比較単語の前記中間階層の分類コードとが一致するか否かを判定することを特徴とする請求項２に記載の検索プログラム。
【請求項４】
前記検索単語の数が所定単語数以上であるか否かを判別する判別工程を前記コンピュータに実行させ、
前記特定工程は、
前記判別工程によって前記検索単語の数が所定単語数以上でないと判別された場合、前記類語辞書データの中から、前記検索文字列内の検索単語の階層ごとの分類コードと、前記比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードとを、比較文字列ごとに特定することを特徴とする請求項１〜３のいずれか一つに記載の検索プログラム。
【請求項５】
前記類語辞書データ内の各分類コードに対応する単語の各対象ファイル内での存否を示すビット列の集合を階層別にまとめた分類マップ群のうち最上位階層の分類マップを参照して、前記検索単語の前記最上位階層の分類コードが存在する特定の対象ファイルを検出する検出工程を前記コンピュータに実行させ、
前記特定工程は、
前記類語辞書データの中から、前記検索文字列内の検索単語の階層ごとの分類コードと、前記検出工程によって検出された特定の対象ファイル内に存在する前記比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードとを、比較文字列ごとに特定することを特徴とする請求項１〜３のいずれか一つに記載の検索プログラム。
【請求項６】
単語間の類義関係を階層的に分類してコード化した類語辞書データを構成する階層群の中から指定された指定階層を対象階層に設定する第１の設定工程と、
前記類語辞書データの中から、検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定する特定工程と、
前記検索単語の前記指定階層から前記対象階層までの分類コードと前記比較単語の前記指定階層から前記対象階層までの分類コードに基づいて、前記検索文字列と前記比較文字列との類似度を比較文字列ごとに算出する算出工程と、
前記算出工程によって類似度が算出された比較文字列群のうち所定類似度以上となる前記比較文字列の数を計数する計数工程と、
前記計数工程によって計数された計数結果が所定数以下である場合、前記対象階層をより上位の階層に変更する第２の設定工程と、
前記計数工程によって計数された計数結果が前記所定数よりも多いこととなった比較文字列群のうち少なくとも前記所定類似度以上の比較文字列を出力する出力工程と、
をコンピュータに実行させることを特徴とする検索プログラム。
【請求項７】
前記検索単語の文字数が所定文字数以上であるか否かを判別する判別工程を前記コンピュータに実行させ、
前記第１の設定工程は、
前記判別工程によって前記検索単語が所定文字数以上であると判別された場合、前記指定階層を前記対象階層に設定することを特徴とする請求項６に記載の検索プログラム。
【請求項８】
前記類語辞書データ内の各分類コードに対応する単語の各対象ファイル内での存否を示すビット列の集合を階層別にまとめた分類マップ群を参照して、前記検索単語の前記対象階層の分類コードが存在する特定の対象ファイルを検出する検出工程を前記コンピュータに実行させ、
前記特定工程は、
前記類語辞書データの中から、前記検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、前記検出工程によって検出された特定の対象ファイル内に存在する比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定することを特徴とする請求項６または７に記載の検索プログラム。
【請求項９】
単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定手段と、
前記特定手段によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出手段と、
前記抽出手段によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定手段と、
前記判定手段による前記特定階層での一致数を計数する計数手段と、
前記計数手段によって計数された一致数に基づいて、前記判定手段によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断手段と、
前記検索単語の階層ごとの分類コードと前記判断手段によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出手段と、
前記算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする検索装置。
【請求項１０】
単語間の類義関係を階層的に分類してコード化した類語辞書データを構成する階層群の中から指定された指定階層を対象階層に設定する第１の設定手段と、
前記類語辞書データの中から、検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定する特定手段と、
前記検索単語の前記指定階層から前記対象階層までの分類コードと前記比較単語の前記指定階層から前記対象階層までの分類コードに基づいて、前記検索文字列と前記比較文字列との類似度を比較文字列ごとに算出する算出手段と、
前記算出手段によって類似度が算出された比較文字列群のうち所定類似度以上となる前記比較文字列の数を計数する計数手段と、
前記計数手段によって計数された計数結果が所定数以下である場合、前記対象階層をより上位の階層に変更する第２の設定手段と、
前記計数手段によって計数された計数結果が前記所定数よりも多いこととなった比較文字列群のうち少なくとも前記所定類似度以上の比較文字列を出力する出力手段と、
を備えることを特徴とする検索装置。
【請求項１１】
コンピュータが、
単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定工程と、
前記特定工程によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出工程と、
前記抽出工程によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定工程と、
前記判定工程による前記特定階層での一致数を計数する計数工程と、
前記計数工程によって計数された一致数に基づいて、前記判定工程によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断工程と、
前記検索単語の階層ごとの分類コードと前記判断工程によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
を実行することを特徴とする検索方法。
【請求項１２】
コンピュータが、
単語間の類義関係を階層的に分類してコード化した類語辞書データを構成する階層群の中から指定された指定階層を対象階層に設定する第１の設定工程と、
前記類語辞書データの中から、検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定する特定工程と、
前記検索単語の前記指定階層から前記対象階層までの分類コードと前記比較単語の前記指定階層から前記対象階層までの分類コードに基づいて、前記検索文字列と前記比較文字列との類似度を比較文字列ごとに算出する算出工程と、
前記算出工程によって類似度が算出された比較文字列群のうち所定類似度以上となる前記比較文字列の数を計数する計数工程と、
前記計数工程によって計数された計数結果が所定数以下である場合、前記対象階層をより上位の階層に変更する第２の設定工程と、
前記計数工程によって計数された計数結果が前記所定数よりも多いこととなった比較文字列群のうち少なくとも前記所定類似度以上の比較文字列を出力する出力工程と、
を実行することを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を検索する検索プログラム、検索装置、および検索方法に関する。
【背景技術】
【０００２】
一般に、あいまい検索とは、たとえば、「風景」および「写す」というような検索文字列を与えた場合に、検索文字列と不一致な文字列「写真を撮影する」であっても、検索文字列と意味が似ているため検索できる検索方法である。【０００３】
このようなあいまい検索については、従来、複数のキーワード（キーワードには分類コードを含む）をベクトルに変換し、スコア計算を行う検索方法が開示されている（たとえば、下記特許文献１を参照。）。また、フリーワードの検索において、ビットマップ型の全文インデックスを用いて行う検索方法が開示されている。このビットマップ型の全文インデックスは、文字ごとに各ブロック内に当該文字と等しいビット数のビット列を配置したブロックビットマップと階層構成を形成する（たとえば、下記特許文献２を参照。）。【０００４】
さらに、入力記号列のベクトルと、辞書に登録されている所定の記号列の標準ベクトルとの間で類似度を算出し、誤りがあれば、辞書検索による記号列に対応する単語に修正する検索方法が開示されている（たとえば、下記特許文献３を参照。）。【０００５】
また、コールセンターなどの顧客からのお問い合わせの統計情報を活用し、携帯電話などのマニュアル検索においてあいまい検索を実現する技術も開示されている（たとえば、下記特許文献４，５を参照。）。また、類語入力とカーネル関数によるフィルタリング技術も開示されている（たとえば、下記特許文献１を参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−２８８６８３号公報
【特許文献２】特開平８−６９４７６号公報
【特許文献３】特開平８−１６６９６６号公報
【特許文献４】特許第３３７４２４３号公報
【特許文献５】特許第３５４８９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、あいまい検索に際し、どこまでをあいまい検索の対象範囲とし、どこからをあいまい検索の対象範囲外とするかについては、人手により操作する必要があった。すなわち、あいまい検索の対象範囲が適切か否かについては、ユーザ依存となってしまうこととなる。したがって、ユーザが欲しいあいまい検索結果が得られなかったり、ユーザが欲しくないあいまい検索結果までもが得られてしまったりすることにより、あいまい検索精度が低下するという問題がある。【０００８】
１つの側面では、本発明は、あいまい検索精度の向上を図ることができる検索プログラム、検索装置、および検索方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定し、特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出し、抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定し、前記特定階層での一致数を計数し、計数された一致数に基づいて、前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断し、前記検索単語の階層ごとの分類コードと除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出し、算出された算出結果を出力する検索プログラム、検索装置、および検索方法を用いる。
【発明の効果】
【００１０】
本発明の検索プログラム、検索装置、および検索方法によれば、あいまい検索精度の向上を図ることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、類語辞書データのデータ構造例を示す説明図である。
【図２】図２は、第１階層（大分類）の分類マップの例を示す説明図である。
【図３】図３は、第２階層（中分類）の分類マップの例を示す説明図である。
【図４】図４は、第３階層（小分類）の分類マップの例を示す説明図である。
【図５】図５は、分類マップ群と対象ファイル群とのリンク関係を示す説明図である。
【図６】図６は、実施の形態にかかるコンピュータのハードウェア構成を示すブロック図である。
【図７】図７は、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を示すフローチャートである。
【図８】図８は、本実施の形態の検索装置の機能的構成例を示すブロック図である。
【図９】図９は、図８に示した第１検索処理部８０４の機能的構成例を示すブロック図である。
【図１０】図１０は、第１算出部９０７による類似度算出の具体例１を示す説明図である。
【図１１】図１１は、第１算出部９０７による類似度算出の具体例２を示す説明図である。
【図１２】図１２は、図８に示した第２検索処理部８０５の機能的構成例を示すブロック図である。
【図１３】図１３は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。
【図１４】図１４は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。
【図１５】図１５は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。
【図１６】図１６は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。
【図１７】図１７は、検索装置８００による検索処理手順例を示すフローチャートである。
【図１８】図１８は、図１７に示した第１検索処理（ステップＳ１７０６、ステップＳ１７０９）の詳細な処理手順例を示すフローチャートである。
【図１９】図１９は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その１）である。
【図２０】図２０は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その２）である。
【図２１】図２１は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その１）である。
【図２２】図２２は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その２）である。
【図２３】図２３は、図１８に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その１）である。
【図２４】図２４は、図１８に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明の検索プログラム、検索装置、および検索方法の実施の形態を詳細に説明する。
【００１３】
＜類語辞書データ＞
類語辞書データとは、単語間の類義関係を階層的に分類してコード化したデータである。シソーラスとも呼ばれる。具体的には、たとえば、各単語はコード化されており、概念的に下位階層となる単語には、上位階層の単語のコードを先頭につけてコード化される。
【００１４】
図１は、類語辞書データのデータ構造例を示す説明図である。図１では、類語辞書データ１００は、例として３階層で構成されている。なお、階層数は、２以上であればよい。図１では、３階層であるため、最上位階層である第１階層を「大分類」、中間階層である第２階層を「中分類」、最下層である第３階層を「小分類」とする。
【００１５】
たとえば、大分類「食べ物」には、中分類「飯」，「香辛料」（これ以外にも「ラーメン」などあるが図１では省略）が属しており、中分類「飯」には、小分類「カレーライス」，「ハヤシライス」，「寿司」（これ以外にも「炒飯」などあるが図１では省略）が属している。
【００１６】
また、各単語には、２種類の分類コードが付与される。１つは、単独分類コードであり、もう１つは連結分類コードである。単独分類コードとは、各単語に付与される分類コードである。連結分類コードとは、その単語の単独分類コードの先頭に、上位階層のすべての単独分類コードが連結された分類コードである。
【００１７】
たとえば、小分類「カレーライス」の単独分類コードは「＃３２」であるが、その上位階層である中分類「飯」の単独分類コードは「＃０」であり、中分類「飯」の上位階層である大分類「食べ物」の単独分類コードは「＃１」である。したがって、「カレーライス」の連結分類コードは、上位階層の単独分類コードから順に連結した「＃１０３２」となる。
【００１８】
以降、本明細書では、特に断りがない限り、「分類コード」と称した場合は「連結分類コード」を指すこととする。また、大分類の連結分類コードを、「大分類コード」と称し、中分類の連結分類コードを、「中分類コード」と称し、小分類の連結分類コードを、「小分類コード」と称す。
【００１９】
また、連結分類コードは、単独分類コードが上位階層から連結されたコードである。したがって、コード長と桁により、どのコードがどの階層の単独分類コードであるかがわかる。たとえば、図１では、大分類コードおよび中分類コードは１桁、小分類コードは２桁としている。したがって、コード長が１であれば、その分類コードは大分類コードである。コード長が２であれば、中分類コードである。また、先頭桁が大分類の単独分類コード、末尾の桁が中分類の単独分類コードであることがわかる。
【００２０】
さらに、コード長が４であれば、小分類コードである。また、先頭から１桁目が大分類の単独分類コード、２番目の桁が中分類の単独分類コード、末尾２桁が小分類の単独分類コードであることがわかる。
【００２１】
＜分類マップ＞
つぎに、分類マップについて説明する。分類マップとは、ビットマップ型の全文インデックスを拡張子、類語辞書データ１００の任意階層について、各分類コードにより包含される単語の各対象ファイル内での存否を示すビット列の集合をまとめたビットマップである。全階層の分類マップをまとめたマップ群を、分類マップ群と称す。分類マップは、類語辞書データ１００で定義された階層数存在することとなる。
【００２２】
また、対象ファイルとは、文字列が記述されたファイルであり、たとえば、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式，ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式，テキスト形式のファイルである。対象ファイル（群）としては、たとえば、電子辞書、電子書籍、Ｗｅｂページ、電子文書、その他文字列を含むデータが挙げられる。図２〜図４では、ファイル番号１〜ｎの対象ファイルＦ１〜Ｆｎについての分類マップを示している。
【００２３】
また、「分類コードにより包含される単語」とは、ある階層に注目した場合、注目階層の単語のほか、注目階層の単語よりも下位階層に属する概念的に下位の単語である。具体的には、たとえば、注目階層の連結分類コードに対応する単語のほか、注目階層の単語の単独分類コードが連結された下位階層の連結分類コードに対応する単語である。
【００２４】
図２は、第１階層（大分類）の分類マップの例を示す説明図であり、図３は、第２階層（中分類）の分類マップの例を示す説明図であり、図４は、第３階層（小分類）の分類マップの例を示す説明図である。なお、図２〜図４では、分類コードに対応する単語の各対象ファイルＦｉ内での存否を示すビット（以下、単に、「ビット」）の値について、本例では「存在」を示す場合は“１”、不存在を示す場合は“０”とする。
【００２５】
図２に示した大分類コードの分類マップ（大分類マップ）２００には、大分類ごとに、対象ファイルＦｉの数分のビット列が記憶されている。たとえば、大分類コード＃１（食べ物）については、対象ファイルＦ１〜Ｆ３の各ビットが“１”であるため、対象ファイルＦ１〜Ｆ３には、「食べ物」という単語が存在していることがわかる。
【００２６】
ただし、大分類コードに対応する単語そのものが存在していなくても、大分類コードに包含される単語が存在していれば、ビットの値は“１”となる。たとえば、大分類コード＃１（食べ物）について、対象ファイルＦ１に「食べ物」という単語が存在していなくても、大分類コード＃１（食べ物）の下位階層に属する中分類コード＃１０に対応する単語「飯」が存在する場合は、ビットの値は“１”となる。
【００２７】
同様に、大分類コード＃１（食べ物）について、大分類コード＃１（食べ物）の下位階層に属する小分類コード＃１０３２に対応する単語「カレーライス」が存在する場合は、ビットの値は“１”となる。
【００２８】
図３に示した中分類コードの分類マップ（中分類マップ）３００には、中分類ごとに、対象ファイルＦｉの数分のビット列が記憶されている。たとえば、中分類コード＃１０（飯）については、対象ファイルＦ１，Ｆ２の各ビットが“１”であるため、対象ファイルＦ１，Ｆ２には、「飯」という単語が存在していることがわかる。
【００２９】
ただし、中分類コードに対応する単語そのものが存在していなくても、中分類コードに包含される単語が存在していれば、ビットの値は“１”となる。たとえば、中分類コード＃１０（飯）について、対象ファイルＦ１に「飯」という単語が存在していなくても、中分類コード＃１０（飯）の下位階層に属する小分類コード＃１０３２に対応する単語「カレーライス」が存在する場合は、ビットの値は“１”となる。
【００３０】
図４に示した小分類コードの分類マップ（小分類マップ）４００には、小分類ごとに、対象ファイルＦｉの数分のビット列が記憶されている。たとえば、小分類コード＃１０３２（カレーライス）については、対象ファイルＦ１，Ｆ２の各ビットが“１”であるため、対象ファイルＦ１，Ｆ２には、「カレーライス」という単語が存在していることがわかる。
【００３１】
＜分類マップ群と対象ファイル群とのリンク関係＞
図５は、分類マップ群と対象ファイル群とのリンク関係を示す説明図である。分類マップ群Ｍと対象ファイル群Ｆとは、分類コードファイル群Ｃによってリンクされている。ここで、分類コードファイルＣｉとは、対象ファイルＦｉごとに、対象ファイルＦｉ内に存在する単語に対応する分類コードとその出現位置が記述されたファイルである。
【００３２】
本実施例では、ファイル番号ｉが同一の対象ファイルＦｉおよび分類コードファイルＣｉどうしが対応する。たとえば、対象ファイルＦ１と分類コードファイルＣ１とが対応する。また、出現位置とは、対象ファイル内での記述位置を特定する情報であり、たとえば、対象ファイルにおける先頭文字からの文字数が挙げられる。
【００３３】
たとえば、図５において、対象ファイルＦ１に「カレーライスは中辛だ。」という文字列が記述されている場合、対象ファイルＦ１に対応する分類コードファイルＣ１には、「カレーライス」の分類コード「＃１０３２」とその出現位置を示す「５」とを組み合わせた「＃１０３２／５」が記述される。すなわち、対象ファイルＦ１の先頭文字から５番目の文字から「カレーライス」が記述されていることがわかる。
【００３４】
同様に、分類コードファイルＣ１には、「中辛」の分類コード「＃４２１０」とその出現位置を示す「１２」とを組み合わせた「＃４２１０／１２」が記述される。すなわち、対象ファイルＦ１の先頭文字から１２番目の文字から「中辛」が記述されていることがわかる。このようなリンク関係があることにより、後述の第１特定部９０２や第２特定部１２０３で対象ファイルＦｉ内の単語から分類コードを特定することが可能となる。
【００３５】
また、各分類コードファイルＣｉ内に、特殊コードを埋め込むことで、検索単語との比較範囲を規定することができる。たとえば、対象ファイル群Ｆが辞書データである場合、見出し語およびその解説文内の単語について、分類コードおよび出現位置を記述しておき、末尾に特殊コードとして改行コードを埋め込んでおく。これにより、改行コードと次の改行コードとの間に記述されている見出し語および解説文についての分類コード群が、検索単語との比較範囲となる。なお、特殊コードが埋め込まれていない場合は、個々の分類コードが比較範囲となる。
【００３６】
＜コンピュータのハードウェア構成例＞
図６は、実施の形態にかかるコンピュータのハードウェア構成例を示すブロック図である。図６において、コンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６０３と、磁気ディスクドライブ６０４と、磁気ディスク６０５と、光ディスクドライブ６０６と、光ディスク６０７と、ディスプレイ６０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）６０９と、キーボード６１０と、マウス６１１と、スキャナ６１２と、プリンタ６１３と、を備えている。また、各構成部はバス６００によってそれぞれ接続されている。
【００３７】
ここで、ＣＰＵ６０１は、コンピュータの全体の制御を司る。ＲＯＭ６０２は、ブートプログラムや本実施の形態の検索プログラム、生成プログラムなどのプログラムを記憶している。ＲＡＭ６０３は、ＣＰＵ６０１のワークエリアとして使用される。磁気ディスクドライブ６０４は、ＣＰＵ６０１の制御にしたがって磁気ディスク６０５に対するデータのリード／ライトを制御する。磁気ディスク６０５は、磁気ディスクドライブ６０４の制御で書き込まれたデータを記憶する。
【００３８】
光ディスクドライブ６０６は、ＣＰＵ６０１の制御にしたがって光ディスク６０７に対するデータのリード／ライトを制御する。光ディスク６０７は、光ディスクドライブ６０６の制御で書き込まれたデータを記憶したり、光ディスク６０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３９】
ディスプレイ６０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ６０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４０】
インターフェース（以下、「Ｉ／Ｆ」と略する。）６０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク６１４に接続され、このネットワーク６１４を介して他の装置に接続される。そして、Ｉ／Ｆ６０９は、ネットワーク６１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ６０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４１】
キーボード６１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス６１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４２】
スキャナ６１２は、画像を光学的に読み取り、コンピュータ内に画像データを取り込む。なお、スキャナ６１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ６１３は、画像データや文書データを印刷する。プリンタ６１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４３】
＜分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理＞
つぎに、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理について説明する。この生成処理は、本実施の形態の検索装置が実行してもよく、検索装置とは異なる生成装置が実行してもよい。いずれにしても、本実施の形態の生成プログラムがインストールされたコンピュータが実行する。
【００４４】
図７は、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を示すフローチャートである。まず、コンピュータは、類語辞書データ１００の階層番号ｊをｊ＝１に設定する（ステップＳ７０１）。そして、コンピュータは、類語辞書データ１００に第ｊ階層の未選択の単語があるか否かを判断する（ステップＳ７０２）。未選択の単語がある場合（ステップＳ７０２：Ｙｅｓ）、コンピュータは、第ｊ階層の未選択の単語を１つ選択する（ステップＳ７０３）。
【００４５】
そして、コンピュータは、選択単語の分類コードを第ｊ階層の分類マップに設定する（ステップＳ７０４）。つぎに、コンピュータは、対象ファイルＦｉのファイル番号ｉをｉ＝１に設定する（ステップＳ７０５）。そして、コンピュータは、対象ファイルＦｉを走査して、選択単語に一致する文字列があるか否かを判断する（ステップＳ７０６）。一致する文字列がない場合（ステップＳ７０６：Ｎｏ）、ステップＳ７１２に移行する。これにより、つぎの対象ファイルに移ることとなる。
【００４６】
一方、一致する文字列がある場合（ステップＳ７０６：Ｙｅｓ）、コンピュータは、選択単語の分類コードと選択単語の対象ファイルＦｉでの出現位置とを分類コードファイルＣｉに追加する（ステップＳ７０７）。
【００４７】
そして、コンピュータは、第ｊ階層の分類マップにおいて選択単語の分類コードにおけるファイル番号ｉのビットをＯＮ（“１”）にする（ステップＳ７０８）。このあと、コンピュータは、選択単語の分類コードから、第ｊ階層よりも上位階層ごとの分類コードを抽出する（ステップＳ７０９）。
【００４８】
上述したように、第ｊ階層の分類コードには、その上位階層（第１階層，…，第（ｊ−１）階層）の分類コードが含まれている。たとえば、第３階層である小分類コード「＃１０３２」（カレーライス）の先頭２桁は、中分類コードであるため、先頭２桁のコードを第２階層である中分類コード「＃１０」（飯）として抽出する。同様に、小分類コード「＃１０３２」（カレーライス）の先頭１桁は、大分類コードであるため、先頭１桁のコードを第１階層である大分類コード「＃１」（食べ物）として抽出する。
【００４９】
そして、コンピュータは、ステップＳ７０９で抽出された上位階層の分類コードを、その上位階層の分類マップに設定する（ステップＳ７１０）。具体的には、上述の例では、中分類コード「＃１０」（飯）については、中分類の分類マップに中分類コード「＃１０」（飯）を設定する。同様に、大分類コード「＃１」（食べ物）についても、大分類の分類マップ大分類コード「＃１」（食べ物）を設定する。設定済みである場合は設定しない。
【００５０】
このあと、コンピュータは、ステップＳ７１０で各上位階層の分類マップに設定された抽出分類コードにおけるファイル番号ｉのビットをＯＮ（“１”）にする（ステップＳ７１１）。なお、すでにＯＮである場合は何もしない。
【００５１】
そして、コンピュータは、ファイル番号ｉをインクリメントし（ステップＳ７１２）、ｉ＞ｎであるか否かを判断する（ステップＳ７１３）。ｎは対象ファイル群Ｆのファイル総数である。ｉ＞ｎでない場合（ステップＳ７１３：Ｎｏ）、ステップＳ７０６に戻り、対象ファイルＦｉに、選択単語に一致する文字列があるか否かを判断することとなる。
【００５２】
また、ｉ＞ｎである場合（ステップＳ７１３：Ｙｅｓ）、ステップＳ７０２に戻り、コンピュータは、類語辞書データ１００に第ｊ階層の未選択の単語があるか否かを判断する（ステップＳ７０２）。第ｊ階層の未選択の単語がない場合（ステップＳ７０２：Ｎｏ）、階層番号ｊをインクリメントして（ステップＳ７１４）、コンピュータは、ｊ＞ｍであるか否かを判断する（ステップＳ７１５）。ｍは階層数である。図１のような類語辞書データ１００を用いる場合は、ｍ＝３である。
【００５３】
ｊ＞ｍでない場合（ステップＳ７１５：Ｎｏ）、ステップＳ７０２に戻り、コンピュータは、類語辞書データ１００に第ｊ階層の未選択の単語があるか否かを判断する（ステップＳ７０２）。一方、ｊ＞ｍである場合（ステップＳ７１５：Ｙｅｓ）、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を終了する。
【００５４】
この分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を実行することで、最終的に、対象ファイル群Ｆに固有な分類マップ群Ｍおよび分類コードファイル群Ｃが自動生成されることとなる。
【００５５】
＜検索装置の機能的構成例＞
図８は、本実施の形態の検索装置の機能的構成例を示すブロック図である。図８において、検索装置８００は、入力部８０１と、解析部８０２と、判別部８０３と、第１検索処理部８０４と、第２検索処理部８０５と、出力部８０６とを備える。入力部８０１〜出力部８０６は、具体的には、たとえば、図６に示したＲＯＭ６０２、ＲＡＭ６０３、磁気ディスク６０５、光ディスク６０７などの記憶装置に記憶されたプログラムをＣＰＵ６０１に実行させることにより、または、Ｉ／Ｆ６０９により、その機能を実現する。
【００５６】
入力部８０１は、検索文字列の入力や検索モードの指定を受け付ける。検索モードとは、検索処理の種別を示しており、後述する上位階層分類コードによる検索処理（第１検索モード）または最下層の分類コードからの検索処理（第２検索モード）のいずれかのモードである。
【００５７】
解析部８０２は、入力部８０１によって入力された検索文字列を解析する。具体的には、たとえば、解析部８０２は、形態素解析を実行することで検索文字列を単語に分解し、分解された単語の各々について品詞を特定する。そして、解析部８０２は、この分解された単語群のうち、あいまい検索で使用する品詞、たとえば、名詞、動詞、形容詞、副詞に該当する単語を、検索単語として抽出する。なお、解析部８０２は比較文字列も検索文字列と同様に解析する。
【００５８】
判別部８０３は、指定された検索モードがいずれの検索処理であるかを判別する。また、検索モードが指定されていない場合は、判別部８０３は、解析部８０２によって解析された検索単語の数が所定単語数以上であるか否かを判別する。所定単語数未満である場合は、第１検索モードが指定され、所定文字数以上である場合は、第２検索モードが指定される。
【００５９】
検索装置８００は、判別部８０３で判別された検索モードで検索処理を実行することとなる。このように、検索単語の数が多いと、あいまい検索のヒット数が膨大になる可能性があるため、検索装置８００は、第２検索モードにより、指定階層から段階的に検索対象となる階層を拡大していくこととする。
【００６０】
第１検索処理部８０４は、上位階層分類コードによる検索処理を実行する。上位階層分類コードによる検索処理とは、検索文字列内の検索単語の分類コードと検索単語を包含する上位階層の単語の分類コードを用いて検索文字列に固有の類語ベクトルを生成する。同様に、比較文字列内の比較単語についても、比較単語の分類コードと比較単語を包含する上位階層の単語の分類コードを用いて比較文字列に固有の類語ベクトルを生成する。そして、第１検索処理部８０４は、カーネル法による両類語ベクトルの演算をおこなって、検索文字列と比較文字列との類似度を算出することとなる。なお詳細については後述する。
【００６１】
また、第２検索処理部８０５は、最下層の分類コードからの検索処理を実行する。最下層の分類コードからの検索処理とは、検索文字列内の検索単語の分類コードとを用いて検索文字列に固有の類語ベクトルを生成する。同様に、比較対象となる比較文字列内の比較単語についても、比較単語の分類コードを用いて比較文字列に固有の類語ベクトルを生成する。そして、第２検索処理部８０５は、カーネル法による両類語ベクトルの演算をおこなって、検索文字列と比較文字列との類似度を算出することとなる。
【００６２】
このとき、所定類似度以上の比較文字列の総数が所定数未満である場合は、検索文字列および比較文字列について、１つ上位の階層の分類コードを特定して、それぞれの類語ベクトルに追加し、同様に類似度を算出する。このように、第２検索処理部８０５は、所定類似度以上の比較文字列の総数が所定数以上となるまで、１つ上位の階層に上がって類語ベクトルを再生成して、類似度を算出することとなる。なお詳細については後述する。
【００６３】
出力部８０６は、第１検索処理部８０４または第２検索処理部８０５の検索結果を出力する。具体的には、たとえば、出力部８０６は、類似度の高い順に比較文字列をランキング表示する。なお、出力部８０６による出力形式は、ディスプレイ６０８への表示に限らず、通信可能な他のコンピュータへの送信でもよく、印刷出力でもよい。また、検索装置８００内の記憶領域への書込でもよい。
【００６４】
なお、検索装置８００は、入力部８０１、解析部８０２、第１検索処理部８０４、および出力部８０６により構成してもよく、また、入力部８０１、解析部８０２、第２検索処理部８０５、および出力部８０６により構成してもよい。
【００６５】
＜第１検索処理部８０４の機能的構成例＞
図９は、図８に示した第１検索処理部８０４の機能的構成例を示すブロック図である。第１検索処理部８０４は、第１検出部９０１と、第１特定部９０２と、抽出部９０３と、判定部９０４と、第１計数部９０５と、判断部９０６と、第１算出部９０７とを備える。
【００６６】
第１検出部９０１は、類語辞書データ１００内の各分類コードに対応する単語の各対象ファイルＦｉ内での存否を示すビット列の集合を階層別にまとめた分類マップ群Ｍのうち最上位階層の分類マップを参照して、検索単語が所属する最上位階層の分類コードが存在する特定の対象ファイルを検出する。
【００６７】
ここで、検索単語が所属する階層とは、検索単語の分類コードが存在する階層のほか、当該分類コードにより特定されるより上位の階層も含む。このような階層を所属階層と称す。そして、第１検出部９０１は、検索単語の分類コードを包含する最上位階層の分類コードまでさかのぼり、最上位階層の分類マップから特定の対象ファイルを検出することとなる。
【００６８】
たとえば、検索単語が「食べ物」である場合、分類コードは大分類コード「＃１」であるため、大分類マップ２００の「＃１」のビット列を参照することで、特定の対象ファイルＦ１〜Ｆ３を検出することとなる。
【００６９】
また、検索単語が「辛い」である場合、分類コードは中分類コード「＃４２」である。この中分類コード「＃４２」は大分類コード「＃４」（味）に属するため、大分類マップ２００の「＃４」のビット列を参照することで、特定の対象ファイルＦ１，Ｆ２，Ｆｎを検出することとなる。
【００７０】
また、検索単語が「カレーライス」である場合、分類コードは小分類コード「＃１０３２」である。この小分類コード「＃１０３２」は大分類コード「＃１」（食べ物）に属するため、大分類マップ２００の「＃１」のビット列を参照することで、特定の対象ファイルＦ１〜Ｆ３を検出することとなる。このように、検索単語がどの階層の分類コードであっても、最上位階層までさかのぼることで、必要最小限の範囲で対象ファイルＦｉを絞り込むことができる。
【００７１】
また、検索単語が「食べ物」および「味」である場合、分類コードは大分類コード「＃１」，「＃４」であるため、大分類マップ２００の「＃１」，「＃４」のビット列を参照する。そして、「＃１」，「＃４」の両ビット列でＯＮになっているファイル番号の対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。
【００７２】
また、検索単語が「食べ物」および「辛い」である場合、検索単語「食べ物」の分類コードは大分類コード「＃１」であるため、大分類マップ２００の「＃１」のビット列を参照する。一方、検索単語「辛い」の分類コードは中分類コード「＃４２」である。この中分類コード「＃４２」は大分類コード「＃４」（味）に属するため、大分類マップ２００の「＃４」のビット列を参照する。そして、「＃１」，「＃４」の両ビット列でＯＮになっているファイル番号の対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。
【００７３】
このように、検索単語が複数ある場合、最上位階層での分類コードのビット列どうしで論理積をとることで、対象ファイルＦｉを絞り込むことができる。すなわち、第１検出部９０１では、以降のあいまい検索の検索先を特定の対象ファイルＦｉに絞り込むことができるため、無駄な対象ファイルＦｉの検索を防止でき、検索処理の高速化を図ることができる。なお、検索装置８００が分類マップ群Ｍにアクセスできない場合は、全対象ファイルＦ１〜Ｆｎ内の単語が比較対象となる。
【００７４】
第１特定部９０２は、単語間の類義関係を階層的に分類してコード化した類語辞書データ１００の中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する。第１特定部９０２は、具体的には、たとえば、図１に示した類語辞書データ１００の中から分類コードを特定する。
【００７５】
まず、検索単語の階層ごとの分類コードの特定について説明する。第１特定部９０２は、類語辞書データ１００を参照して、検索文字列内の検索単語の分類コードとその階層を特定する。ここで、検索文字列内の検索単語とは、入力部８０１によって入力された検索文字列が解析部８０２によって単語に分解されて抽出された単語である。
【００７６】
分類コードの階層が最上位でない場合は、第１特定部９０２は、当該階層の分類コードを包含する上位階層の分類コードを最上位階層まで特定する。たとえば、検索単語が「カレーライス」である場合、その階層は第３階層（小分類）、小分類コードは「＃１０３２」となる。そして、小分類コードの先頭２桁は中分類コードであるため、第１特定部９０２は「＃１０」を中分類コードとして特定する。さらに、小分類コードの先頭１桁は大分類コードであるため、第１特定部９０２は「＃１」を大分類コードとして特定する。
【００７７】
このように、検索単語「カレーライス」から、小分類コード「＃１０３２」、中分類コード「＃１０」および大分類コード「＃１」が所属階層（第１階層〜第３階層）での分類コードとして特定されることとなる。このような特定の仕方は、比較単語についても同様である。
【００７８】
また、比較文字列とは、ある比較単位内に記述されている一または複数の文字列（たとえば、読点や改行コードで区切られている。）である。比較単位は、単一の比較単語でもよく、一または複数の対象ファイルＦｉでもよい。また、第１検出部９０１により特定の対象ファイルＦｉに絞り込まれている場合は、特定の対象ファイルＦｉ内の文字列のみが対象となる。
【００７９】
また、比較文字列は、ある対象ファイルＦｉ内のある項目単位でもよい。対象ファイルＦｉが辞書データである場合、見出し語およびその解説文となる文字列を比較単位とし、当該文字列内の単語を比較単語とする。
【００８０】
抽出部９０３は、第１特定部９０２によって特定された検索単語の階層ごとの分類コードおよび各比較単語の階層ごとの分類コードの中から、類語辞書データ１００を構成する階層群のうち特定階層の分類コードを抽出する。ここで、特定階層とは、たとえば、中間階層を指す。中間階層とは、少なくとも最上位階層および最下位階層を含まない階層（群）である。
【００８１】
本例では、第１階層〜第３階層であるため、第２階層が中間階層となる。また、第１階層〜第５階層まである場合は、中間階層は、第２階層のみ、第３階層のみ、第４階層のみ、第２階層および第３階層、第３階層および第４階層、第２階層〜第４階層が中間階層として選ぶことが可能である。どの階層を中間階層にするかは、あらかじめ設定されているものとする。なお、本例では、特定階層を中間階層としたが、ある階層のみターゲットとして検索をおこないたい場合は、最上位階層や最下位階層を含む階層（群）を特定階層としてもよい。
【００８２】
したがって、検索単語が「カレーライス」である場合は、第１特定部９０２により小分類コード「＃１０３２」、中分類コード「＃１０」および大分類コード「＃１」が特定されるため、中分類コード「＃１０」が抽出されることとなる。
【００８３】
同様に、比較単語が「ハヤシライス」である場合は、第１特定部９０２により小分類コード「＃１０３３」、中分類コード「＃１０」および大分類コード「＃１」が特定されるため、中分類コード「＃１０」が抽出されることとなる。
【００８４】
なお、抽出部９０３は、中間階層よりも上位の上位階層での検索単語および比較単語の分類コードも抽出する。上記のカレーライスとハヤシライスの例では、ともに大分類コード「＃１」を抽出することとなる。
【００８５】
判定部９０４は、抽出部９０３によって抽出された検索単語の特定階層の分類コードと比較単語の特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する。具体的には、たとえば、判定部９０４は、検索単語の中間階層における分類コードと比較単語の中間階層における分類コードとの一致判定をおこなう。上記のカレーライスとハヤシライスの例では、ともに中分類コード「＃１０」であるため、一致することとなる。
【００８６】
また、検索文字列内の検索単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。たとえば、検索単語の中分類コードが３個で比較単語の中分類コードが１個の場合は、一致判定を３回おこなう。これに対し、比較文字列内の比較単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。たとえば、検索単語の中分類コードが１個で比較単語の中分類コードが４個の場合は、一致判定を４回おこなう。
【００８７】
さらに、検索単語および比較単語が複数存在する場合がある。この場合も、判定部９０４は、検索単語ごとに各比較単語との一致判定をおこなう。たとえば、検索単語の中分類コードが２個で比較単語の中分類コードが３個である場合、一致判定を６回おこなう。
【００８８】
判定部９０４では、検索文字列内の検索単語の中間階層の分類コードと比較単位内の比較単語の中間階層の分類コードとの一致判定において、検索単語と比較単語の組み合わせですべて一致した場合に、検索文字列と比較単位内の比較文字列とが一致したと判定する。また、検索単語と比較単語の組み合わせのうち一部一致した場合に、検索文字列と比較単位内の比較文字列とが一致したと判定することとしてもよい。
【００８９】
なお、検索単語と比較単語の組み合わせのうちすべて不一致の場合に、検索文字列と比較単位内の比較文字列とが不一致であると判定する。すなわち、一部一致の場合に、検索文字列と比較単位内の比較文字列とを一致とするか不一致とするかは、あらかじめ設定しておくこととなる。
【００９０】
なお、判定部９０４では、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなう前に、検索単語および比較単語の上位階層の分類コードどうしの一致判定をおこなうこととしてもよい。そして、一致した場合に、判定部９０４は、さらに中間階層の分類コードどうしの一致判定をおこない、不一致の場合はおこなわないこととなる。
【００９１】
具体的には、たとえば、上記のカレーライスとハヤシライスの例では、ともに大分類コード「＃１」であるため、中分類コードどうしの一致判定をおこなうこととなる。この場合も上記と同様、検索文字列内の検索単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。
【００９２】
たとえば、検索単語の大分類コードが３個で比較単語の大分類コードが１個の場合は、一致判定を３回おこなう。これに対し、比較文字列内の比較単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。たとえば、検索単語の大分類コードが１個で比較単語の大分類コードが４個の場合は、一致判定を４回おこなう。
【００９３】
さらに、検索単語および比較単語が複数存在する場合がある。この場合も、判定部９０４は、検索単語ごとに各比較単語との一致判定をおこなう。たとえば、検索単語の大分類コードが２個で比較単語の大分類コードが３個である場合、一致判定を６回おこなう。
【００９４】
判定部９０４では、検索単語および比較単語の上位階層の分類コードどうしの一致判定が複数回行われる場合、すべて一致した場合のみ、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなう。また、一部一致した場合でも、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなうこととしてもよい。なお、全部不一致の場合は、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなわない。一部一致の場合の取り扱いは、あらかじめ設定しておくこととなる。
【００９５】
いずれにしても、上位階層の分類コードどうしが不一致であれば、それよりも下位の階層で類似していないと考えられるため、上位階層の分類コードの一致判定をおこなうことで、無駄な検索を回避でき、検索効率の向上を図ることができる。
【００９６】
第１計数部９０５は、判定部９０４による特定階層での一致数を計数する。第１計数部９０５による一致数は、比較対象となる対象ファイル群Ｆでの一致数の総和である。たとえば、全対象ファイルでもよく、第１検出部９０１によって検出された特定の対象ファイルＦｉであってもよい。なお、第１計数部９０５での計数単位については、検索単語と比較単語との中間階層の分類コードどうしで一致した場合に、１ポイント計数する。
【００９７】
また、比較単位内で１つでも検索単語の中間階層の分類コードと一致する比較単語の中間階層の分類コードがあれば、１ポイント計数することとしてもよい。さらに、比較単位内のすべての比較単語の中間階層の分類コードが検索単語の中間階層の分類コードと一致した場合に、１ポイント計数することとしてもよい。どの計数方法を採用するかは、判定部９０４での一致判定に従うこととなる。
【００９８】
判断部９０６は、第１計数部９０５によって計数された一致数に基づいて、判定部９０４によって比較単語の階層ごとの分類コードが不一致と判定された比較文字列を除外するか否かを判断する。具体的には、たとえば、判断部９０６ではしきい値が設定されており、判断部９０６は、中間階層での一致数がしきい値以上であるか否かを判断する。すなわち、判断部９０６は、しきい値以上であるか否かにより、中間階層の分類コードが不一致となった比較文字列を、第１算出部９０７の算出対象とするか否かを判断する。
【００９９】
そして、一致数がしきい値以上である場合は、十分類語が含まれていることとなり、中間階層の分類コードが不一致となった比較単語についてまで、あいまい検索の対象（第１算出部９０７による算出対象）とする必要はない。したがって、一致数がしきい値以上の場合は、判断部９０６は、中間階層の分類コードが不一致となった比較文字列を、あいまい検索の対象から除外する。
【０１００】
一方、一致数がしきい値未満である場合は、類語が少ないと考えられるため、中間階層の分類コードが不一致となった比較文字列を、あいまい検索の対象とする必要がある。したがって、一致数がしきい値未満の場合は、判断部９０６は、中間階層の分類コードが不一致となった比較文字列を、あいまい検索の対象から除外しない。
【０１０１】
第１算出部９０７は、判断部９０６によって除外しないと判断された比較文字列内の比較単語の階層ごとの分類コードとに基づいて、検索文字列と除外しないと判断された比較文字列との類似度を算出する。また、第１算出部９０７は、検索文字列と判定部９０４によって中間階層の分類コードが一致すると判定された比較文字列とについても、類似度を算出する。いずれの場合でも、第１算出部９０７は、カーネル法を用いた類似度を算出する。算出結果は出力部８０６に与えられる。以下、具体例を説明する。
【０１０２】
図１０は、第１算出部９０７による類似度算出の具体例１を示す説明図である。具体例１は、検索文字列となる１つの検索単語で比較文字列と比較する例である。ここでは、検索単語を「カレーライス」とし、比較単位となる比較文字列を辞書の見出し語「カレーライス。」および解説文「カレーをご飯にかけた食べ物。」とする。
【０１０３】
（Ａ）において、第１特定部９０２により検索単語「カレーライス」の階層別の分類コード「＃１」，「＃１０」，「＃１０３２」が得られる。検索単語は「カレーライス」のみであるため、各分類コード「＃１」，「＃１０」，「＃１０３２」の出現回数は１回である。
【０１０４】
（Ｂ）において、比較文字列「カレーライス。カレーをご飯にかけた食べ物。」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「カレー」，「飯」，「食べ物」が抽出される。それぞれの抽出単語については、第１特定部９０２により階層別の分類コードが得られる。
【０１０５】
本例の場合、大分類コード「＃１」（食べ物）の出現回数は４回、中分類コード「＃１０」（飯）の出現回数は２回、小分類コード「＃１０３２」（カレーライス）の出現回数は１回、中分類コード「＃１１」（香辛料）の出現回数は１回、小分類コード「＃１１５４」（カレー）の出現回数は１回となる。なお、検索単語の分類コードと不一致の分類コード「＃１１」（香辛料），「＃１１５４」（カレー）の出現回数は除外される。
【０１０６】
（Ｃ）において、第１算出部９０７は（Ａ）で求めた出現回数をベクトル化する。これを検索文字列の類語ベクトルと称す。同様に、第１算出部９０７は（Ｂ）で求めた出現回数をベクトル化する。これを比較文字列の類語ベクトルと称す。そして、第１算出部９０７は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は７となる。
【０１０７】
図１１は、第１算出部９０７による類似度算出の具体例２を示す説明図である。具体例２は、検索文字列と比較文字列とを比較する例である。ここでは、比較単位となる検索文字列を「このカレーライスは甘口だ」とし、比較文字列を「このハヤシライスはマイルドだ」とする。
【０１０８】
（Ａ）において、検索文字列「このカレーライスは甘口だ」について、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「甘口」が抽出される。それぞれの抽出単語については、第１特定部９０２により階層別の分類コードが得られる。検索文字列では、各抽出単語の出現回数は１回であるため、各分類コード「＃１」，「＃１０」，「＃１０３２」，「＃４」，「＃４１」，「＃４１１０」の出現回数は１回である。
【０１０９】
（Ｂ）において、比較文字列「このハヤシライスはマイルドだ」について、解析部８０２による形態素解析および単語抽出により、「ハヤシライス」，「マイルド」が抽出される。それぞれの抽出単語については、第１特定部９０２により階層別の分類コードが得られる。比較文字列では、各抽出単語の出現回数は１回であるため、各分類コード「＃１」，「＃１０」，「＃１０３３」，「＃４」，「＃４１」，「＃４１１１」の出現回数は１回である。
【０１１０】
なお、「＃１０３２」（カレーライス）および「＃４１１０」（甘口）は、比較文字列では出現していないため、出現回数は０となる。なお、検索単語の分類コードと不一致の分類コード「＃１０３３」（ハヤシライス），「＃４１１１」（マイルド）の出現回数は除外される。
【０１１１】
（Ｃ）において、第１算出部９０７は（Ａ）で求めた出現回数をベクトル化する。これを検索文字列の類語ベクトルと称す。同様に、第１算出部９０７は（Ｂ）で求めた出現回数をベクトル化する。これを比較文字列の類語ベクトルと称す。そして、第１算出部９０７は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は４となる。つぎに、第２検索処理部８０５の詳細について説明する。
【０１１２】
＜第２検索処理部８０５の機能的構成例＞
図１２は、図８に示した第２検索処理部８０５の機能的構成例を示すブロック図である。第２検索処理部８０５は、第２検出部１２０１と、設定部１２０２と、第２特定部１２０３と、第２算出部１２０４と、第２計数部１２０５と、を備える。
【０１１３】
第２検出部１２０１は、類語辞書データ１００内の各分類コードに対応する単語の各対象ファイル内での存否を示すビット列の集合を階層別にまとめた分類マップ群Ｍを参照して、検索単語の対象階層の分類コードが存在する特定の対象ファイルＦｉを検出する。
【０１１４】
たとえば、図１の類語辞書データ１００の場合、最下層は第３階層となる。ここで、たとえば、対象階層が第３階層である場合、第２検索処理部８０５は、図４の小分類マップ４００のみを参照する。そして、小分類マップ４００において、検索単語の分類コードのビット列でＯＮになっている対象ファイルＦｉを特定の対象ファイルとして検出する。
【０１１５】
たとえば、検索単語が「ハヤシライス」である場合、分類コードは小分類コード「＃１０３３」である。したがって、第２検出部１２０１では、小分類マップ４００における小分類コード「＃１０３３」のビット列でＯＮになっている対象ファイルＦ１を特定の対象ファイルとして検出することとなる。
【０１１６】
また、対象階層が第２階層にまで上がった場合、分類コードも第２階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」の場合、中分類コードは先頭２桁の「＃１０」（飯）である。したがって、第２検出部１２０１では、中分類マップ３００における中分類コード「＃１０」のビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。このように、対象階層をより上位の階層に移すことで、第３階層では検出されなかった対象ファイルＦ２を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。
【０１１７】
同様に、対象階層が第１階層にまで上がった場合、分類コードも第１階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」の場合、大分類コードは先頭１桁の「＃１」（食べ物）である。したがって、第２検出部１２０１では、大分類マップ２００における大分類コード「＃１」のビット列でＯＮになっている対象ファイルＦ１〜Ｆ３を特定の対象ファイルとして検出することとなる。このように、対象階層をより上位の階層に移すことで、第２階層では検出されなかった対象ファイルＦ３を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。
【０１１８】
たとえば、検索単語が「ハヤシライス」および「マイルド」である場合、分類コードは小分類コード「＃１０３３」，「＃４１１１」である。したがって、第２検出部１２０１では、小分類マップ４００における小分類コード「＃１０３３」，「＃４１１１」の両ビット列でＯＮになっている対象ファイルＦ１を特定の対象ファイルとして検出することとなる。
【０１１９】
また、対象階層が第２階層にまで上がった場合、分類コードも第２階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」および「マイルド」の場合、中分類コードは先頭２桁の「＃１０」（飯），「＃４１」（甘い）である。したがって、第２検出部１２０１では、中分類マップ３００における中分類コード「＃１０」，「＃４１」の両ビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。このように、対象階層をより上位の階層に移すことで、第３階層では検出されなかった対象ファイルＦ２を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。
【０１２０】
同様に、対象階層が第１階層にまで上がった場合、分類コードも第１階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」および「マイルド」の場合、大分類コードは先頭１桁の「＃１」（食べ物），「＃４」（味）である。したがって、第２検出部１２０１では、大分類マップ２００における大分類コード「＃１」，「＃４」の両ビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。特定の対象ファイルの範囲を拡大しようと試みたが結果的に拡大しなかった例である。
【０１２１】
また、複数の検索単語の階層が異なる場合については以下のようになる。たとえば、検索単語が「ハヤシライス」および「甘い」である場合、分類コードは小分類コード「＃１０３３」と中分類コード「＃４１」である。したがって、第２検出部１２０１では、小分類マップ４００における小分類コード「＃１０３３」，中分類コード「＃４１」の両ビット列でＯＮになっている対象ファイルＦ１を特定の対象ファイルとして検出することとなる。
【０１２２】
そして、対象階層が第２階層にまで上がった場合、第２検出部１２０１では、中分類マップ３００における中分類コード「＃１０」，「＃４１」の両ビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。
【０１２３】
このように、対象階層をより上位の階層に移すことで、第３階層では検出されなかった対象ファイルＦ２を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。なお、検索装置８００が分類マップ群Ｍにアクセスできない場合は、全対象ファイルＦ１〜Ｆｎ内の単語が比較対象となる。
【０１２４】
設定部１２０２は、単語間の類義関係を階層的に分類してコード化した類語辞書データ１００を構成する階層群の中から指定された指定階層を対象階層に設定する。具体的には、たとえば、指定階層は、最下位層とする。対象階層は変数であり、初期値が指定階層である。対象階層は指定階層から１階層ずつ上がっていく。
【０１２５】
具体的には、設定部１２０２は、第２計数部１２０５によって計数された計数結果が所定数以下である場合、対象階層をより上位の階層に変更する。所定数は、あらかじめ設定された値である。なお、変更基準を所定数以下としたが、パーセンテージで判断してもよい。具体的には、分母を比較文字列の総数とし、分子を所定数として、所定確率とする。
【０１２６】
そして、計数結果を比較文字列の総数で割った値が所定確率以下である場合、設定部１２０２は、対象階層をより上位の階層に変更する。また、変更する幅は、１階層とする。たとえば、変更前が第３階層である場合、変更後は第２階層となる。また、対象階層が変更された場合、第２検出部１２０１では、検索単語の変更後の対象階層の分類コードが存在する特定の対象ファイルを検出することとなる。
【０１２７】
第２特定部１２０３は、類語辞書データ１００の中から、検索文字列内の検索単語の指定階層から対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の指定階層から対象階層までの分類コードとを、比較文字列ごとに特定する。第１特定部９０２では、検索単語および比較単語について特定階層（たとえば、中間階層）の分類コードを特定したが、第２特定部１２０３では、指定階層から対象階層までの分類コードを特定する。第２特定部１２０３では、対象階層が変更される都度、指定階層から変更後の対象階層までの分類コードを特定することとなる。
【０１２８】
ここで、検索単語を「カレーライス」とする。たとえば、指定階層が第３階層である場合、初期状態では対象階層も第３階層に設定される。第２特定部１２０３は、検索単語「カレーライス」の第３階層での分類コード「＃１０３２」を特定する。また、対象階層が第２階層に上がった場合、第２特定部１２０３は、さらに、検索単語「カレーライス」の第２階層での分類コード「＃１０」（飯）を特定する。さらに、対象階層が第１階層である場合、第２特定部１２０３は、さらに、検索単語「カレーライス」の第１階層での分類コード「＃１」（食べ物）を特定する。
【０１２９】
また、ここで、検索単語を「辛い」とする。検索単語「辛い」の分類コードは中分類コードであり、指定階層（第３階層）の分類コードではない。この場合、対象階層が第３階層となるため、第２特定部１２０３は、検索単語「辛い」の分類コードは特定できないこととなる。このあと、対象階層が第２階層に上がった場合、第２特定部１２０３は、検索単語「辛い」の第２階層での分類コード「＃４２」を特定することとなる。さらに、対象階層が第１階層に上がった場合、第２特定部１２０３は、検索単語「辛い」の第１階層での分類コード「＃４」（味）を特定することとなる。
【０１３０】
第２算出部１２０４は、検索単語の指定階層から対象階層までの分類コードと比較単語の指定階層から対象階層までの分類コードに基づいて、検索文字列と比較文字列との類似度を比較文字列ごとに算出する。具体的には、第２算出部１２０４は、検索単語における指定階層から対象階層までの分類コードで検索文字列の類語ベクトルを生成する。
【０１３１】
同様に、第２算出部１２０４は、比較単語における指定階層から対象階層までの分類コードで比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、第１算出部９０７と同様に、検索文字列の類語ベクトルと比較文字列の類語ベクトルの内積をとることで類似度を算出する。具体例については後述する。
【０１３２】
第２計数部１２０５は、第２算出部１２０４によって類似度が算出された比較文字列群のうち所定類似度以上となる比較文字列の数を計数する。所定類似度は、あらかじめ設定された値である。第２計数部１２０５によって計数された計数結果が所定数以下である場合、設定部１２０２により対象階層が１階層上がって再度、第２検出部１２０１および第２特定部１２０３による処理が実行されることとなる。
【０１３３】
なお、第２検索処理部８０５による処理を実行した場合、出力部８０６は、第２計数部１２０５によって計数された計数結果が所定数よりも多いこととなった比較文字列群のうち少なくとも所定類似度以上の比較文字列を出力することとなる。
【０１３４】
図１３は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。具体例１は、検索文字列となる１つの検索単語で比較文字列と比較する例である。ここでは、検索単語を「カレーライス」とし、比較単位となる比較文字列を辞書の見出し語「カレーライス。」および解説文「カレーをご飯にかけた食べ物。」とする。なお、指定階層は第３階層、対象階層も第３階層とする。
【０１３５】
（Ａ）において、第２特定部１２０３により検索単語「カレーライス」の対象階層（第３階層）となる小分類コード「＃１０３２」が得られる。検索単語は「カレーライス」のみであるため、小分類コード「＃１０３２」の出現回数は１回である。
【０１３６】
（Ｂ）において、比較文字列「カレーライス。カレーをご飯にかけた食べ物。」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「カレー」，「飯」，「食べ物」が抽出される。それぞれの抽出単語については、第２特定部１２０３により対象階層（第３階層）の分類コードが得られる。
【０１３７】
本例の場合、抽出単語「カレーライス」，「カレー」，「飯」，「食べ物」のうち対象階層である第３階層に属する単語は「カレーライス」，「カレー」であるため、小分類コード「＃１０３２」，「＃１１５４」が特定される。また、これらの出現回数はそれぞれ１回である。このうち、検索単語の分類コードと不一致の分類コード「＃１１５４」（カレー）の出現回数は除外される。
【０１３８】
（Ｃ）において、第２算出部１２０４は（Ａ）で求めた出現回数をベクトル化する。これを検索文字列の類語ベクトルと称す。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化する。これを比較文字列の類語ベクトルと称す。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は１となる。
【０１３９】
図１４は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。具体例２は、図１３の具体例１において、対象階層が第２階層に上がった場合の例である。
【０１４０】
（Ａ）において、第２特定部１２０３により検索単語「カレーライス」の指定階層（第３階層）から対象階層（第２階層）までの分類コードとして、小分類コード「＃１０３２」および中分類コード「＃１０」が得られる。検索単語は「カレーライス」のみであるため、小分類コード「＃１０３２」および中分類コード「＃１０」の出現回数はそれぞれ１回である。
【０１４１】
（Ｂ）において、比較文字列「カレーライス。カレーをご飯にかけた食べ物。」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「カレー」，「飯」，「食べ物」が抽出される。それぞれの抽出単語については、第２特定部１２０３により指定階層（第３階層）から対象階層（第２階層）までの分類コードが得られる。
【０１４２】
本例の場合、抽出単語「カレーライス」，「カレー」，「飯」，「食べ物」のうち指定階層である第３階層に属する単語は「カレーライス」，「カレー」であるため、小分類コード「＃１０３２」，「＃１１５４」が特定される。また、第２特定部１２０３は、抽出単語「カレーライス」，「カレー」，「飯」，「食べ物」の第２階層での分類コードを特定する。
【０１４３】
「カレーライス」自体は、小分類コード「＃１０３２」であるが、中分類コードは先頭２桁の「＃１０」（飯）が特定される。「カレー」も小分類コード「＃１１５４」であるが、中分類コードは先頭２桁の「＃１１」（香辛料）が特定される。「飯」は中分類コードであるため、「＃１０」がそのまま特定される。
【０１４４】
したがって、中分類コード「＃１０」（飯）の出現回数は２回、中分類コード「＃１１」（香辛料）の出現回数は１回である。このうち、中分類コード「＃１１」（香辛料）は、（Ａ）に存在しないため除外される。そして、今回特定された中分類コード「＃１１」（香辛料）の出現回数と、図１３に示した比較文字列での小分類コードの出現回数と、を統合する。
【０１４５】
（Ｃ）において、第２算出部１２０４は、（Ａ）で求めた出現回数をベクトル化して、検索文字列の類語ベクトルを生成する。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化して、比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は３となる。
【０１４６】
図１５は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。具体例１は、検索文字列（複数の検索単語を含む）と比較文字列とを比較する例である。ここでは、検索文字列を「このカレーライスは甘口だ」とし、比較単位となる比較文字列を「このハヤシライスはマイルドだ」とする。なお、指定階層は第３階層、対象階層も第３階層とする。
【０１４７】
（Ａ）において、検索文字列「このカレーライスは甘口だ」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「甘口」が抽出される。それぞれの抽出単語については、第２特定部１２０３により対象階層（第３階層）の分類コードが得られる。本例の場合、抽出単語「カレーライス」，「甘口」の小分類コード「＃１０３２」，「＃４１１０」が特定される。また、これらの出現回数はそれぞれ１回である。
【０１４８】
（Ｂ）において、比較文字列「このハヤシライスはマイルドだ」については、解析部８０２による形態素解析および単語抽出により、「ハヤシライス」，「マイルド」が抽出される。それぞれの抽出単語については、第２特定部１２０３により対象階層（第３階層）の分類コードが得られる。本例の場合、抽出単語「ハヤシライス」，「マイルド」の小分類コード「＃１０３３」，「＃４１１１」が特定される。また、これらの出現回数はそれぞれ１回である。しかしながら、小分類コード「＃１０３３」，「＃４１１１」の出現回数は検索単語の分類コードと不一致のため、ともに除外される。
【０１４９】
（Ｃ）において、第２算出部１２０４は（Ａ）で求めた出現回数をベクトル化して、検索文字列の類語ベクトルを生成する。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化して、比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は０となる。
【０１５０】
図１６は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。具体例２は、図１５の具体例１において、対象階層を第３階層から第２階層に変更した例である。
【０１５１】
（Ａ）において、検索文字列「このカレーライスは甘口だ」の抽出単語「カレーライス」，「甘口」について、第２特定部１２０３により第３階層の分類コードのほか、第２階層の分類コードも得られる。本例の場合、抽出単語「カレーライス」，「甘口」の具体例１で特定された小分類コード「＃１０３２」，「＃４１１０」のほか、小分類コードの先頭２桁から中分類コード「＃１０」（飯），「＃４１」（甘い）が特定される。また、これらの出現回数はそれぞれ１回である。
【０１５２】
（Ｂ）において、比較文字列「このハヤシライスはマイルドだ」の抽出単語「ハヤシライス」，「マイルド」について、第２特定部１２０３により第３階層の分類コードのほか、第２階層の分類コードも得られる。本例の場合、抽出単語「ハヤシライス」，「マイルド」の小分類コード「＃１０３３」，「＃４１１１」のほか、小分類コードの先頭２桁から中分類コード「＃１０」（飯），「＃４１」（甘い）が特定される。また、これらの出現回数はそれぞれ１回である。また、図１５の具体例１と同様、小分類コード「＃１０３３」，「＃４１１１」の出現回数は検索単語の分類コードと不一致のため、ともに除外される。
【０１５３】
（Ｃ）において、第２算出部１２０４は（Ａ）で求めた出現回数をベクトル化して、検索文字列の類語ベクトルを生成する。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化して、比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は２となる。
【０１５４】
このように、図１５の具体例１に示した第３階層のみの分類コードで算出された類似度よりも、第３階層〜第２階層の分類コードを用いて算出された類似度のほうが高くなることがある。このように、階層を上位にまで拡大していくことで所定類似度以上の類似度の数が増加することとなる。したがって、類似度の高いあいまい検索のヒット数を段階的に増加することができる。
【０１５５】
＜検索処理手順＞
つぎに、図１７〜図２５を用いて、検索装置８００による検索処理手順について説明する。
【０１５６】
図１７は、検索装置８００による検索処理手順例を示すフローチャートである。まず、検索装置８００は、入力部８０１により検索文字列が入力されるのを待ち受ける（ステップＳ１７０１：Ｎｏ）。そして、検索文字列が入力された場合（ステップＳ１７０１：Ｙｅｓ）、検索装置８００は、解析部８０２により、検索文字列を形態素解析して単語に分解する（ステップＳ１７０２）。このあと、検索装置８００は、分解された単語群の中からあいまい検索に必要な品詞に該当する検索単語を抽出する（ステップＳ１７０３）。
【０１５７】
そして、検索装置８００は、入力部８０１により検索モードの指定があったか否かを判断する（ステップＳ１７０４）。検索モードの指定があった場合（ステップＳ１７０４：Ｙｅｓ）、検索装置８００は、指定された検索モードが第１検索モードであるか第２検索モードであるかを判断する（ステップＳ１７０５）。
【０１５８】
第１検索モードである場合（ステップＳ１７０５：第１検索）、検索装置８００は、第１検索処理部８０４により第１検索処理を実行する（ステップＳ１７０６）。一方、第２検索モードである場合（ステップＳ１７０５：第２検索）、検索装置８００は、第２検索処理部８０５により第２検索処理を実行する（ステップＳ１７０７）。
【０１５９】
また、ステップＳ１７０４において、検索モードの指定がない場合（ステップＳ１７０４：Ｎｏ）、検索装置８００は、判別部８０３により検索単語の数が所定単語数以上であるか否かを判断する（ステップＳ１７０８）。所定単語数以上でない場合（ステップＳ１７０８：Ｎｏ）、検索装置８００は、第１検索処理部８０４により第１検索処理を実行する（ステップＳ１７０９）。一方、所定単語数以上である場合（ステップＳ１７０８：Ｙｅｓ）、検索装置８００は、第２検索処理部８０５により第２検索処理を実行する（ステップＳ１７１０）。
【０１６０】
そして、検索装置８００は、第１検索処理（ステップＳ１７０６、Ｓ１７０９）または第２検索処理（ステップＳ１７０７、Ｓ１７１０）が終了した場合、出力部８０６による出力処理を実行する（ステップＳ１７１１）。これにより、検索処理を終了する。
【０１６１】
このように、検索装置８００は、検索モードの指定が受け付けられている場合はその指定内容にしたがって検索処理を実行することになる。一方で、検索モードの指定がない場合は、検索単語の数の多さにより第１検索処理か第２検索処理かを決定することとなる。検索単語の数が多い（所定単語数以上）場合は、第２検索処理を実行することで、検索対象となる階層範囲を絞って段階的にあいまい検索のヒット数を増加させることができる。一方、検索単語の数が少ない（所定単語数未満）場合は、あいまい検索のヒット数が多くはならないと考えられるため、検索単語の階層から最上位階層までの範囲を検索対象範囲としてあいまい検索のヒット数を適切に得ることができる。
【０１６２】
＜第１検索処理手順＞
図１８は、図１７に示した第１検索処理（ステップＳ１７０６、ステップＳ１７０９）の詳細な処理手順例を示すフローチャートである。まず、検索装置８００は、第１特定部９０２により、類語辞書データ１００から、検索単語の分類コードを、最上位階層にまでさかのぼって、検索単語ごとに特定する（ステップＳ１８０１）。
【０１６３】
つぎに、検索装置８００は、検索単語群の各々の検索単語から特定された階層ごとの分類コードのビット列で、ＯＮとなっているファイル番号の対象ファイルを分類マップ群Ｍから検出する（ステップＳ１８０２）。そして、検索装置８００は、中間分類コード一致数集計処理（ステップＳ１８０３）、類似度算出処理（ステップＳ１８０４）を実行する。これにより、第１検索処理を終了する。
【０１６４】
＜中間分類コード一致数集計処理手順＞
図１９は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その１）である。まず、検索装置８００は、中間分類コード一致数ＮをＮ＝０に設定する（ステップＳ１９０１）。つぎに、検索装置８００は、特定対象ファイル数をＫとし、特定対象ファイル番号ｋをｋ＝１とする（ステップＳ１９０２）。特定対象ファイル数Ｋは、図１８のステップＳ１８０２で検出された対象ファイル数である。
【０１６５】
このあと、検索装置８００は、ｋ＞Ｋであるか否かを判断する（ステップＳ１９０３）。ｋ＞Ｋでない場合（ステップＳ１９０３：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋを選択する（ステップＳ１９０４）。そして、検索装置８００は、特定対象ファイルＦｋでの計数が終了したか否かを判断する（ステップＳ１９０５）。具体的には、未選択の比較文字列がなくなった場合に終了する。
【０１６６】
計数終了である場合（ステップＳ１９０５：Ｙｅｓ）、検索装置８００は、特定対象ファイル番号ｋをインクリメントし（ステップＳ１９０６）、ステップＳ１９０３に戻る。一方、計数終了でない場合（ステップＳ１９０５：Ｎｏ）、図２０のステップＳ２００１に移行する。なお、ステップＳ１９０３において、ｋ＞Ｋとなった場合（ステップＳ１９０３：Ｙｅｓ）、類似度算出処理（ステップＳ１８０４）に移行する。
【０１６７】
図２０は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その２）である。まず、図１９のステップＳ１９０５において計数終了でない場合（ステップＳ１９０５：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋから比較単位で比較文字列を抽出する（ステップＳ２００１）。つぎに、検索装置８００は、解析部８０２により、検索文字列を形態素解析して単語に分解する（ステップＳ２００２）。このあと、検索装置８００は、分解された単語群の中からあいまい検索に必要な品詞に該当する比較単語を抽出する（ステップＳ２００３）。
【０１６８】
このあと、検索装置８００は、第１特定部９０２により、類語辞書データ１００から比較単語の分類コードを階層ごとに特定する（ステップＳ２００４）。そして、検索装置８００は、階層番号ｊをｊ＝１とし（ステップＳ２００５）、ｊ＝ｔ１であるか否かを判断する（ステップＳ２００６）。ここでは、中間階層の範囲を第ｔ１階層から第ｔ２階層（ｔ１＜ｔ２、ｔ１≠１、ｔ２≠ｍ、ｍは最下層の階層番号）とする。
【０１６９】
ｊ＝ｔ１でない場合（ステップＳ２００６：Ｎｏ）、図１９のステップＳ１９０５に移行する。一方、ｊ＝ｔ１である場合（ステップＳ２００６：Ｙｅｓ）、検索装置８００は、判定部９０４により、検索文字列内の検索単語および比較文字列内の比較単語において、第ｊ階層での分類コードどうしを比較する（ステップＳ２００７）。
【０１７０】
そして、検索装置８００は、第１計数部９０５により、第ｊ階層での分類コードの一致数ａを計数し（ステップＳ２００８）、計数された一致数ａを中間分類コード一致数Ｎ（初期値はＮ＝０）に加算する（ステップＳ２００９）。このあと、検索装置８００は、ｊ＞ｔ２であるか否かを判断する（ステップＳ２０１０）。ｊ＞ｔ２でない場合（ステップＳ２０１０：Ｎｏ）、検索装置８００は、階層番号ｊをインクリメントし（ステップＳ２０１１）、ステップＳ２００７に戻る。
【０１７１】
一方、ｊ＞ｔ２である場合（ステップＳ２０１０：Ｙｅｓ）、図１９のステップＳ１９０５に移行する。このような中間分類コード一致数集計処理（ステップＳ１８０３）により、中間階層（第ｔ１階層から第ｔ２階層）での分類コードの一致数が計数されることとなる。
【０１７２】
＜類似度算出処理手順＞
図２１は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その１）である。まず、検索装置８００は、特定対象ファイル数をＫとし、特定対象ファイル番号ｋをｋ＝１とする（ステップＳ２１０１）。特定対象ファイル数Ｋは、図１８のステップＳ１８０２で検出された対象ファイル数である。
【０１７３】
つぎに、検索装置８００は、ｋ＞Ｋであるか否かを判断する（ステップＳ２１０２）。ｋ＞Ｋである場合（ステップＳ２１０２：Ｙｅｓ）、出力処理（ステップＳ１７１１）に移行する。一方、ｋ＞Ｋでない場合（ステップＳ２１０２：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋを選択する（ステップＳ２１０３）。そして、検索装置８００は、特定対象ファイルＦｋでの比較が終了したか否かを判断する（ステップＳ２１０４）。具体的には、未選択の比較文字列がなくなった場合に終了する。
【０１７４】
特定対象ファイルＦｋでの比較が終了した場合（ステップＳ２１０４：Ｙｅｓ）、抽出すべき比較文字列がないため、検索装置８００は、特定対象ファイル番号ｋをインクリメントし（ステップＳ２１０５）、ステップＳ２１０２に戻る。
【０１７５】
一方、特定対象ファイルＦｋでの比較が終了しない場合（ステップＳ２１０４：Ｎｏ）、検索装置８００は、比較単位で比較文字列を特定対象ファイルＦｋから抽出する（ステップＳ２１０６）。そして、検索装置８００は、第１特定部９０２により、類語辞書データ１００から比較単語の分類コードを階層ごとに特定し（ステップＳ２１０７）、図２２のステップＳ２２０１に移行する。
【０１７６】
図２２は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その２）である。まず、ステップＳ２１０７のあと、検索装置８００は、階層番号ｊをｊ＝１に設定し（ステップＳ２２０１）、ｊ＝ｔ１であるか否かを判断する（ステップＳ２２０２）。ｊ＝ｔ１でない場合（ステップＳ２２０２：Ｎｏ）、すなわち、上位階層である場合、検索装置８００は、判定部９０４により、検索文字列の検索単語と比較文字列の比較単語との間で、第ｊ階層の分類コードが一致するか否かを判定する（ステップＳ２２０３）。一致する場合（ステップＳ２２０３：Ｙｅｓ）、検索装置８００は、階層番号ｊをインクリメントし（ステップＳ２２０４）、ステップＳ２２０２に戻る。
【０１７７】
一方、不一致である場合（ステップＳ２２０３：Ｎｏ）、図２１のステップＳ２１０４に戻る。また、ステップＳ２２０２において、ｊ＝ｔ１である場合（ステップＳ２２０２：Ｙｅｓ）、検索装置８００は、判定部９０４により、検索文字列の検索単語と比較文字列の比較単語との間で、第ｊ階層の分類コードが一致するか否かを判定する（ステップＳ２２０５）。
【０１７８】
不一致である場合（ステップＳ２２０５：Ｎｏ）、検索装置８００は、中間分類コード一致数Ｎがしきい値Ｎｔ以上であるか否かを判断する（ステップＳ２２０６）。Ｎ≧Ｎｔである場合（ステップＳ２２０６：Ｙｅｓ）、不一致な比較単語を有する比較文字列をあいまい検索の対象にする必要はないため、類似度算出対象から除外してステップＳ２１０４に戻る。一方、Ｎ≧Ｎｔでない場合（ステップＳ２２０６：Ｎｏ）、あいまい検索の対象が不足しているため、ステップＳ２２０７に移行する。
【０１７９】
また、ステップＳ２２０５において、一致すると判定された場合（ステップＳ２２０５：Ｙｅｓ）、ステップＳ２２０７に移行する。ステップＳ２２０７では、検索装置８００は、階層番号ｊをインクリメントし（ステップＳ２２０７）、ｊ＞ｔ２であるか否かを判断する（ステップＳ２２０８）。ｊ＞ｔ２でない場合（ステップＳ２２０８：Ｎｏ）、まだ中間階層であるため、ステップＳ２２０５に戻る。
【０１８０】
一方、ｊ＞ｔ２である場合（ステップＳ２２０８：Ｙｅｓ）、検索装置８００は、第１算出部９０７により検索文字列の類語ベクトルおよび比較文字列の類語ベクトルを生成して、カーネル法により検索文字列と比較文字列との類似度を算出する（ステップＳ２２０９）。そして、図２１のステップＳ２１０４に戻る。
【０１８１】
このように、中間階層（第ｔ１階層〜第ｔ２階層）においては、中間分類コード一致数Ｎの多さに応じて、比較文字列をあいまい検索の対象にしたり除外したりと、状況に応じて取捨選択することができる。したがって、類似性の高い適切な数の比較文字列についてあいまい検索をおこなうことができる。
【０１８２】
＜第２検索処理手順＞
図２３は、図１７に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その１）である。図２３において、まず、検索装置８００は、階層番号ｊをｊ＝ｍに設定する（ステップＳ２３０１）。ｍは指定階層の階層番号であり、たとえば、最下位の階層番号とする。
【０１８３】
つぎに、検索装置８００は、第２特定部１２０３により、類語辞書データ１００から検索単語の第ｊ階層〜第ｍ階層の分類コードを特定する（ステップＳ２３０２）。そして、検索装置８００は、第ｊ階層〜第ｍ階層の分類マップを参照して、検索単語の第ｊ階層〜第ｍ階層の分類コードのビット列を特定する。そして、検索装置８００は、第２検出部１２０１により、特定されたビット列においてすべてＯＮになっている対象ファイルを検出する（ステップＳ２３０３）。これにより、検索対象が特定対象ファイルに絞り込まれたこととなる。このあと、図２４のステップＳ２４０１に移行する。
【０１８４】
図２４は、図１８に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その２）である。まず、図２３のステップＳ２３０３のあと、検索装置８００は、特定対象ファイル数をＫとし、特定対象ファイル番号ｋをｋ＝１とする（ステップＳ２４０１）。特定対象ファイル数Ｋは、図２３のステップＳ２３０３で検出された対象ファイル数である。
【０１８５】
つぎに、検索装置８００は、ｋ＞Ｋであるか否かを判断する（ステップＳ２４０２）。ｋ＞Ｋでない場合（ステップＳ２４０２：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋを選択する（ステップＳ２４０３）。そして、検索装置８００は、特定対象ファイルＦｋでの比較が終了したか否かを判断する（ステップＳ２４０４）。具体的には、未選択の比較文字列がなくなった場合に終了する。
【０１８６】
特定対象ファイルＦｋでの比較が終了しない場合（ステップＳ２４０４：Ｎｏ）、検索装置８００は、比較単位で比較文字列を特定対象ファイルＦｋから抽出する（ステップＳ２４０５）。そして、検索装置８００は、解析部８０２により、抽出された比較文字列を形態素解析して単語に分解する（ステップＳ２４０６）。
【０１８７】
このあと、検索装置８００は、分解された単語群の中からあいまい検索に必要な品詞に該当する比較単語を抽出する（ステップＳ２４０７）。つぎに、検索装置８００は、第２特定部１２０３により、類語辞書データ１００から比較単語の第ｊ階層〜第ｍ階層の分類コードを特定する（ステップＳ２４０８）。
【０１８８】
そして、検索装置８００は、第２算出部１２０４により、検索文字列内の検索単語の第ｊ階層〜第ｍ階層の分類コードで検索文字列の類語ベクトルを生成する。同様に、検索装置８００は、第２算出部１２０４により、比較文字列内の比較単語の第ｊ階層〜第ｍ階層の分類コードで比較文字列の類語ベクトルを生成する。そして、検索装置８００は、第２算出部１２０４により両類語ベクトルから検索文字列と比較文字列との類似度を算出する（ステップＳ２４０９）。そして、ステップＳ２４０４に戻る。
【０１８９】
一方、ステップＳ２４０４において、特定対象ファイルＦｋでの比較が終了した場合（ステップＳ２４０４：Ｙｅｓ）、抽出すべき比較文字列がないため、検索装置８００は、特定対象ファイル番号ｋをインクリメントし（ステップＳ２４１０）、ステップＳ２４０２に戻る。
【０１９０】
また、ステップＳ２４０２において、ｋ＞Ｋである場合（ステップＳ２４０２：Ｙｅｓ）、検索装置８００は、第２計数部１２０５により、ステップＳ２４０９で算出された類似度が所定類似度以上である比較文字列の数を計数する（ステップＳ２４１１）。そして、検索装置８００は、計数結果がしきい値以上であるか否かを判断する（ステップＳ２４１２）。しきい値以上でない場合（ステップＳ２４１２：Ｎｏ）、検索装置８００は、階層番号がｊ＝１であるか否かを判断する（ステップＳ２４１３）。そして、ｊ＝１でない場合（ステップＳ２４１３：Ｎｏ）、検索装置８００は、階層番号ｊをデクリメントして（ステップＳ２４１４）、図２３のステップＳ２３０２に戻る。
【０１９１】
一方、ステップＳ２４１２においてしきい値以上と判定された場合（ステップＳ２４１２：Ｙｅｓ）、または、ステップＳ２４１３において階層番号ｊ＝１と判定された場合（ステップＳ２４１３：Ｙｅｓ）、第２検索処理を終了する。
【０１９２】
このように、上述した実施の形態では、中間階層の分類コードで検索文字列と不一致と判定された比較文字列に対して、比較文字列をあいまい検索の対象にしたり除外したりと、状況に応じて取捨選択することができる。したがって、類似性の高い適切な数の比較文字列についてあいまい検索をおこなうことができる。
【０１９３】
また、分類マップ群Ｍを用いて対象ファイル群Ｆの絞込みをおこなうことで、類似性の高い比較文字列を含む対象ファイルに狙い撃ちしてあいまい検索を実行することができる。したがって、無駄なあいまい検索を未然に防止することができ、あいまい検索速度の向上を図ることができる。
【０１９４】
また、検索文字列を構成する検索単語の個数の多さに応じて、第１検索処理と第２検索処理のいずれか一方を選択することができる。すなわち、検索単語の個数が少ないと第１検索処理が選択され、検索文字列の類語ベクトルが大きくなるものの、類似度計算は一度で完了するため、あいまい検索の高速化を図ることができる。
【０１９５】
一方、検索単語の個数が多いと第２検索処理が選択され、下位階層から段階的に検索対象範囲を拡大していくことができるため、最初のうちは類語ベクトルの大きさが小さく済み、検索効率の向上を図ることができる。
【０１９６】
以上説明したように、検索プログラム、検索装置、および検索方法によれば、あいまい検索の対象範囲を自動的に取捨選択することにより、あいまい検索精度の向上を図ることができるという効果を奏する。
【０１９７】
なお、本実施の形態で説明した検索方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検索プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検索プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１９８】
１００  類語辞書データ
２００  大分類マップ
３００  中分類マップ
４００  小分類マップ
８００  検索装置
８０１  入力部
８０２  解析部
８０３  判別部
８０４  第１検索処理部
８０５  第２検索処理部
８０６  出力部
９０１  第１検出部
９０２  第１特定部
９０３  抽出部
９０４  判定部
９０５  第１計数部
９０６  判断部
９０７  第１算出部
１２０１  第２検出部
１２０２  設定部
１２０３  第２特定部
１２０４  第２算出部
１２０５  第２計数部
【図１】
2012108006.tif 000003
【図２】
2012108006.tif 000004
【図３】
2012108006.tif 000005
【図４】
2012108006.tif 000006
【図５】
2012108006.tif 000007
【図６】
2012108006.tif 000008
【図７】
2012108006.tif 000009
【図８】
2012108006.tif 000010
【図９】
2012108006.tif 000011
【図１０】
2012108006.tif 000012
【図１１】
2012108006.tif 000013
【図１２】
2012108006.tif 000014
【図１３】
2012108006.tif 000015
【図１４】
2012108006.tif 000016
【図１５】
2012108006.tif 000017
【図１６】
2012108006.tif 000018
【図１７】
2012108006.tif 000019
【図１８】
2012108006.tif 000020
【図１９】
2012108006.tif 000021
【図２０】
2012108006.tif 000022
【図２１】
2012108006.tif 000023
【図２２】
2012108006.tif 000024
【図２３】
2012108006.tif 000025
【図２４】
2012108006.tif 000026
【手続補正書】
【提出日】平成25年8月30日(2013.8.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定工程と、
前記特定工程によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出工程と、
前記抽出工程によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定工程と、
前記判定工程による前記特定階層での一致数を計数する計数工程と、
前記計数工程によって計数された一致数に基づいて、前記判定工程によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断工程と、
前記検索単語の階層ごとの分類コードと前記判断工程によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする検索プログラム。
【請求項２】
前記特定階層は前記階層群の中の中間階層であることを特徴とする請求項１に記載の検索プログラム。
【請求項３】
前記抽出工程は、
さらに、前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記中間階層よりも上位となる上位階層の分類コードを抽出し、
前記判定工程は、
前記抽出工程によって抽出された前記検索単語の前記上位階層の分類コードと前記比較単語の前記上位階層の分類コードとが一致するか否かを、前記比較文字列ごとに判定し、一致すると判定された比較文字列ごとに、前記検索単語の前記中間階層の分類コードと前記比較単語の前記中間階層の分類コードとが一致するか否かを判定することを特徴とする請求項２に記載の検索プログラム。
【請求項４】
前記検索単語の数が所定単語数以上であるか否かを判別する判別工程を前記コンピュータに実行させ、
前記特定工程は、
前記判別工程によって前記検索単語の数が所定単語数以上でないと判別された場合、前記類語辞書データの中から、前記検索文字列内の検索単語の階層ごとの分類コードと、前記比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードとを、比較文字列ごとに特定することを特徴とする請求項１〜３のいずれか一つに記載の検索プログラム。
【請求項５】
前記類語辞書データ内の各分類コードに対応する単語の各対象ファイル内での存否を示すビット列の集合を階層別にまとめた分類マップ群のうち最上位階層の分類マップを参照して、前記検索単語の前記最上位階層の分類コードが存在する特定の対象ファイルを検出する検出工程を前記コンピュータに実行させ、
前記特定工程は、
前記類語辞書データの中から、前記検索文字列内の検索単語の階層ごとの分類コードと、前記検出工程によって検出された特定の対象ファイル内に存在する前記比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードとを、比較文字列ごとに特定することを特徴とする請求項１〜３のいずれか一つに記載の検索プログラム。
【請求項６】
単語間の類義関係を階層的に分類してコード化した類語辞書データを構成する階層群の中から指定された指定階層を対象階層に設定する第１の設定工程と、
前記類語辞書データの中から、検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定する特定工程と、
前記検索単語の前記指定階層から前記対象階層までの分類コードと前記比較単語の前記指定階層から前記対象階層までの分類コードに基づいて、前記検索文字列と前記比較文字列との類似度を比較文字列ごとに算出する算出工程と、
前記算出工程によって類似度が算出された比較文字列群のうち所定類似度以上となる前記比較文字列の数を計数する計数工程と、
前記計数工程によって計数された計数結果が所定数以下である場合、前記対象階層をより上位の階層に変更する第２の設定工程と、
前記計数工程によって計数された計数結果が前記所定数よりも多いこととなった比較文字列群のうち少なくとも前記所定類似度以上の比較文字列を出力する出力工程と、
をコンピュータに実行させることを特徴とする検索プログラム。
【請求項７】
単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定手段と、
前記特定手段によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出手段と、
前記抽出手段によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定手段と、
前記判定手段による前記特定階層での一致数を計数する計数手段と、
前記計数手段によって計数された一致数に基づいて、前記判定手段によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断手段と、
前記検索単語の階層ごとの分類コードと前記判断手段によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出手段と、
前記算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする検索装置。
【請求項８】
コンピュータが、
単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定工程と、
前記特定工程によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出工程と、
前記抽出工程によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定工程と、
前記判定工程による前記特定階層での一致数を計数する計数工程と、
前記計数工程によって計数された一致数に基づいて、前記判定工程によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断工程と、
前記検索単語の階層ごとの分類コードと前記判断工程によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
を実行することを特徴とする検索方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を検索する検索プログラム、検索装置、および検索方法に関する。
【背景技術】
【０００２】
一般に、あいまい検索とは、たとえば、「風景」および「写す」というような検索文字列を与えた場合に、検索文字列と不一致な文字列「写真を撮影する」であっても、検索文字列と意味が似ているため検索できる検索方法である。
【０００３】
このようなあいまい検索については、従来、複数のキーワード（キーワードには分類コードを含む）をベクトルに変換し、スコア計算を行う検索方法が開示されている（たとえば、下記特許文献１を参照。）。また、フリーワードの検索において、ビットマップ型の全文インデックスを用いて行う検索方法が開示されている。このビットマップ型の全文インデックスは、文字ごとに各ブロック内に当該文字と等しいビット数のビット列を配置したブロックビットマップと階層構成を形成する（たとえば、下記特許文献２を参照。）。
【０００４】
さらに、入力記号列のベクトルと、辞書に登録されている所定の記号列の標準ベクトルとの間で類似度を算出し、誤りがあれば、辞書検索による記号列に対応する単語に修正する検索方法が開示されている（たとえば、下記特許文献３を参照。）。
【０００５】
また、コールセンターなどの顧客からのお問い合わせの統計情報を活用し、携帯電話などのマニュアル検索においてあいまい検索を実現する技術も開示されている（たとえば、下記特許文献４，５を参照。）。また、類語入力とカーネル関数によるフィルタリング技術も開示されている（たとえば、下記特許文献１を参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−２８８６８３号公報
【特許文献２】特開平８−６９４７６号公報
【特許文献３】特開平８−１６６９６６号公報
【特許文献４】特開２００１−２４９９３７号公報
【特許文献５】特開２００２−１２３５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、あいまい検索に際し、どこまでをあいまい検索の対象範囲とし、どこからをあいまい検索の対象範囲外とするかについては、人手により操作する必要があった。すなわち、あいまい検索の対象範囲が適切か否かについては、ユーザ依存となってしまうこととなる。したがって、ユーザが欲しいあいまい検索結果が得られなかったり、ユーザが欲しくないあいまい検索結果までもが得られてしまったりすることにより、あいまい検索精度が低下するという問題がある。
【０００８】
１つの側面では、本発明は、あいまい検索精度の向上を図ることができる検索プログラム、検索装置、および検索方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定し、特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出し、抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定し、前記特定階層での一致数を計数し、計数された一致数に基づいて、前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断し、前記検索単語の階層ごとの分類コードと除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出し、算出された算出結果を出力する検索プログラム、検索装置、および検索方法を用いる。
【発明の効果】
【００１０】
本発明の検索プログラム、検索装置、および検索方法によれば、あいまい検索精度の向上を図ることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、類語辞書データのデータ構造例を示す説明図である。
【図２】図２は、第１階層（大分類）の分類マップの例を示す説明図である。
【図３】図３は、第２階層（中分類）の分類マップの例を示す説明図である。
【図４】図４は、第３階層（小分類）の分類マップの例を示す説明図である。
【図５】図５は、分類マップ群と対象ファイル群とのリンク関係を示す説明図である。
【図６】図６は、実施の形態にかかるコンピュータのハードウェア構成を示すブロック図である。
【図７】図７は、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を示すフローチャートである。
【図８】図８は、本実施の形態の検索装置の機能的構成例を示すブロック図である。
【図９】図９は、図８に示した第１検索処理部８０４の機能的構成例を示すブロック図である。
【図１０】図１０は、第１算出部９０７による類似度算出の具体例１を示す説明図である。
【図１１】図１１は、第１算出部９０７による類似度算出の具体例２を示す説明図である。
【図１２】図１２は、図８に示した第２検索処理部８０５の機能的構成例を示すブロック図である。
【図１３】図１３は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。
【図１４】図１４は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。
【図１５】図１５は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。
【図１６】図１６は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。
【図１７】図１７は、検索装置８００による検索処理手順例を示すフローチャートである。
【図１８】図１８は、図１７に示した第１検索処理（ステップＳ１７０６、ステップＳ１７０９）の詳細な処理手順例を示すフローチャートである。
【図１９】図１９は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その１）である。
【図２０】図２０は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その２）である。
【図２１】図２１は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その１）である。
【図２２】図２２は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その２）である。
【図２３】図２３は、図１８に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その１）である。
【図２４】図２４は、図１８に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明の検索プログラム、検索装置、および検索方法の実施の形態を詳細に説明する。
【００１３】
＜類語辞書データ＞
類語辞書データとは、単語間の類義関係を階層的に分類してコード化したデータである。シソーラスとも呼ばれる。具体的には、たとえば、各単語はコード化されており、概念的に下位階層となる単語には、上位階層の単語のコードを先頭につけてコード化される。
【００１４】
図１は、類語辞書データのデータ構造例を示す説明図である。図１では、類語辞書データ１００は、例として３階層で構成されている。なお、階層数は、２以上であればよい。図１では、３階層であるため、最上位階層である第１階層を「大分類」、中間階層である第２階層を「中分類」、最下層である第３階層を「小分類」とする。
【００１５】
たとえば、大分類「食べ物」には、中分類「飯」，「香辛料」（これ以外にも「ラーメン」などあるが図１では省略）が属しており、中分類「飯」には、小分類「カレーライス」，「ハヤシライス」，「寿司」（これ以外にも「炒飯」などあるが図１では省略）が属している。
【００１６】
また、各単語には、２種類の分類コードが付与される。１つは、単独分類コードであり、もう１つは連結分類コードである。単独分類コードとは、各単語に付与される分類コードである。連結分類コードとは、その単語の単独分類コードの先頭に、上位階層のすべての単独分類コードが連結された分類コードである。
【００１７】
たとえば、小分類「カレーライス」の単独分類コードは「＃３２」であるが、その上位階層である中分類「飯」の単独分類コードは「＃０」であり、中分類「飯」の上位階層である大分類「食べ物」の単独分類コードは「＃１」である。したがって、「カレーライス」の連結分類コードは、上位階層の単独分類コードから順に連結した「＃１０３２」となる。
【００１８】
以降、本明細書では、特に断りがない限り、「分類コード」と称した場合は「連結分類コード」を指すこととする。また、大分類の連結分類コードを、「大分類コード」と称し、中分類の連結分類コードを、「中分類コード」と称し、小分類の連結分類コードを、「小分類コード」と称す。
【００１９】
また、連結分類コードは、単独分類コードが上位階層から連結されたコードである。したがって、コード長と桁により、どのコードがどの階層の単独分類コードであるかがわかる。たとえば、図１では、大分類コードおよび中分類コードは１桁、小分類コードは２桁としている。したがって、コード長が１であれば、その分類コードは大分類コードである。コード長が２であれば、中分類コードである。また、先頭桁が大分類の単独分類コード、末尾の桁が中分類の単独分類コードであることがわかる。
【００２０】
さらに、コード長が４であれば、小分類コードである。また、先頭から１桁目が大分類の単独分類コード、２番目の桁が中分類の単独分類コード、末尾２桁が小分類の単独分類コードであることがわかる。
【００２１】
＜分類マップ＞
つぎに、分類マップについて説明する。分類マップとは、ビットマップ型の全文インデックスを拡張子、類語辞書データ１００の任意階層について、各分類コードにより包含される単語の各対象ファイル内での存否を示すビット列の集合をまとめたビットマップである。全階層の分類マップをまとめたマップ群を、分類マップ群と称す。分類マップは、類語辞書データ１００で定義された階層数存在することとなる。
【００２２】
また、対象ファイルとは、文字列が記述されたファイルであり、たとえば、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式，ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式，テキスト形式のファイルである。対象ファイル（群）としては、たとえば、電子辞書、電子書籍、Ｗｅｂページ、電子文書、その他文字列を含むデータが挙げられる。図２〜図４では、ファイル番号１〜ｎの対象ファイルＦ１〜Ｆｎについての分類マップを示している。
【００２３】
また、「分類コードにより包含される単語」とは、ある階層に注目した場合、注目階層の単語のほか、注目階層の単語よりも下位階層に属する概念的に下位の単語である。具体的には、たとえば、注目階層の連結分類コードに対応する単語のほか、注目階層の単語の単独分類コードが連結された下位階層の連結分類コードに対応する単語である。
【００２４】
図２は、第１階層（大分類）の分類マップの例を示す説明図であり、図３は、第２階層（中分類）の分類マップの例を示す説明図であり、図４は、第３階層（小分類）の分類マップの例を示す説明図である。なお、図２〜図４では、分類コードに対応する単語の各対象ファイルＦｉ内での存否を示すビット（以下、単に、「ビット」）の値について、本例では「存在」を示す場合は“１”、不存在を示す場合は“０”とする。
【００２５】
図２に示した大分類コードの分類マップ（大分類マップ）２００には、大分類ごとに、対象ファイルＦｉの数分のビット列が記憶されている。たとえば、大分類コード＃１（食べ物）については、対象ファイルＦ１〜Ｆ３の各ビットが“１”であるため、対象ファイルＦ１〜Ｆ３には、「食べ物」という単語が存在していることがわかる。
【００２６】
ただし、大分類コードに対応する単語そのものが存在していなくても、大分類コードに包含される単語が存在していれば、ビットの値は“１”となる。たとえば、大分類コード＃１（食べ物）について、対象ファイルＦ１に「食べ物」という単語が存在していなくても、大分類コード＃１（食べ物）の下位階層に属する中分類コード＃１０に対応する単語「飯」が存在する場合は、ビットの値は“１”となる。
【００２７】
同様に、大分類コード＃１（食べ物）について、大分類コード＃１（食べ物）の下位階層に属する小分類コード＃１０３２に対応する単語「カレーライス」が存在する場合は、ビットの値は“１”となる。
【００２８】
図３に示した中分類コードの分類マップ（中分類マップ）３００には、中分類ごとに、対象ファイルＦｉの数分のビット列が記憶されている。たとえば、中分類コード＃１０（飯）については、対象ファイルＦ１，Ｆ２の各ビットが“１”であるため、対象ファイルＦ１，Ｆ２には、「飯」という単語が存在していることがわかる。
【００２９】
ただし、中分類コードに対応する単語そのものが存在していなくても、中分類コードに包含される単語が存在していれば、ビットの値は“１”となる。たとえば、中分類コード＃１０（飯）について、対象ファイルＦ１に「飯」という単語が存在していなくても、中分類コード＃１０（飯）の下位階層に属する小分類コード＃１０３２に対応する単語「カレーライス」が存在する場合は、ビットの値は“１”となる。
【００３０】
図４に示した小分類コードの分類マップ（小分類マップ）４００には、小分類ごとに、対象ファイルＦｉの数分のビット列が記憶されている。たとえば、小分類コード＃１０３２（カレーライス）については、対象ファイルＦ１，Ｆ２の各ビットが“１”であるため、対象ファイルＦ１，Ｆ２には、「カレーライス」という単語が存在していることがわかる。
【００３１】
＜分類マップ群と対象ファイル群とのリンク関係＞
図５は、分類マップ群と対象ファイル群とのリンク関係を示す説明図である。分類マップ群Ｍと対象ファイル群Ｆとは、分類コードファイル群Ｃによってリンクされている。ここで、分類コードファイルＣｉとは、対象ファイルＦｉごとに、対象ファイルＦｉ内に存在する単語に対応する分類コードとその出現位置が記述されたファイルである。
【００３２】
本実施例では、ファイル番号ｉが同一の対象ファイルＦｉおよび分類コードファイルＣｉどうしが対応する。たとえば、対象ファイルＦ１と分類コードファイルＣ１とが対応する。また、出現位置とは、対象ファイル内での記述位置を特定する情報であり、たとえば、対象ファイルにおける先頭文字からの文字数が挙げられる。
【００３３】
たとえば、図５において、対象ファイルＦ１に「カレーライスは中辛だ。」という文字列が記述されている場合、対象ファイルＦ１に対応する分類コードファイルＣ１には、「カレーライス」の分類コード「＃１０３２」とその出現位置を示す「５」とを組み合わせた「＃１０３２／５」が記述される。すなわち、対象ファイルＦ１の先頭文字から５番目の文字から「カレーライス」が記述されていることがわかる。
【００３４】
同様に、分類コードファイルＣ１には、「中辛」の分類コード「＃４２１０」とその出現位置を示す「１２」とを組み合わせた「＃４２１０／１２」が記述される。すなわち、対象ファイルＦ１の先頭文字から１２番目の文字から「中辛」が記述されていることがわかる。このようなリンク関係があることにより、後述の第１特定部９０２や第２特定部１２０３で対象ファイルＦｉ内の単語から分類コードを特定することが可能となる。
【００３５】
また、各分類コードファイルＣｉ内に、特殊コードを埋め込むことで、検索単語との比較範囲を規定することができる。たとえば、対象ファイル群Ｆが辞書データである場合、見出し語およびその解説文内の単語について、分類コードおよび出現位置を記述しておき、末尾に特殊コードとして改行コードを埋め込んでおく。これにより、改行コードと次の改行コードとの間に記述されている見出し語および解説文についての分類コード群が、検索単語との比較範囲となる。なお、特殊コードが埋め込まれていない場合は、個々の分類コードが比較範囲となる。
【００３６】
＜コンピュータのハードウェア構成例＞
図６は、実施の形態にかかるコンピュータのハードウェア構成例を示すブロック図である。図６において、コンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６０３と、磁気ディスクドライブ６０４と、磁気ディスク６０５と、光ディスクドライブ６０６と、光ディスク６０７と、ディスプレイ６０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）６０９と、キーボード６１０と、マウス６１１と、スキャナ６１２と、プリンタ６１３と、を備えている。また、各構成部はバス６００によってそれぞれ接続されている。
【００３７】
ここで、ＣＰＵ６０１は、コンピュータの全体の制御を司る。ＲＯＭ６０２は、ブートプログラムや本実施の形態の検索プログラム、生成プログラムなどのプログラムを記憶している。ＲＡＭ６０３は、ＣＰＵ６０１のワークエリアとして使用される。磁気ディスクドライブ６０４は、ＣＰＵ６０１の制御にしたがって磁気ディスク６０５に対するデータのリード／ライトを制御する。磁気ディスク６０５は、磁気ディスクドライブ６０４の制御で書き込まれたデータを記憶する。
【００３８】
光ディスクドライブ６０６は、ＣＰＵ６０１の制御にしたがって光ディスク６０７に対するデータのリード／ライトを制御する。光ディスク６０７は、光ディスクドライブ６０６の制御で書き込まれたデータを記憶したり、光ディスク６０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３９】
ディスプレイ６０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ６０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４０】
インターフェース（以下、「Ｉ／Ｆ」と略する。）６０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク６１４に接続され、このネットワーク６１４を介して他の装置に接続される。そして、Ｉ／Ｆ６０９は、ネットワーク６１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ６０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４１】
キーボード６１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス６１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４２】
スキャナ６１２は、画像を光学的に読み取り、コンピュータ内に画像データを取り込む。なお、スキャナ６１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ６１３は、画像データや文書データを印刷する。プリンタ６１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４３】
＜分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理＞
つぎに、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理について説明する。この生成処理は、本実施の形態の検索装置が実行してもよく、検索装置とは異なる生成装置が実行してもよい。いずれにしても、本実施の形態の生成プログラムがインストールされたコンピュータが実行する。
【００４４】
図７は、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を示すフローチャートである。まず、コンピュータは、類語辞書データ１００の階層番号ｊをｊ＝１に設定する（ステップＳ７０１）。そして、コンピュータは、類語辞書データ１００に第ｊ階層の未選択の単語があるか否かを判断する（ステップＳ７０２）。未選択の単語がある場合（ステップＳ７０２：Ｙｅｓ）、コンピュータは、第ｊ階層の未選択の単語を１つ選択する（ステップＳ７０３）。
【００４５】
そして、コンピュータは、選択単語の分類コードを第ｊ階層の分類マップに設定する（ステップＳ７０４）。つぎに、コンピュータは、対象ファイルＦｉのファイル番号ｉをｉ＝１に設定する（ステップＳ７０５）。そして、コンピュータは、対象ファイルＦｉを走査して、選択単語に一致する文字列があるか否かを判断する（ステップＳ７０６）。一致する文字列がない場合（ステップＳ７０６：Ｎｏ）、ステップＳ７１２に移行する。これにより、つぎの対象ファイルに移ることとなる。
【００４６】
一方、一致する文字列がある場合（ステップＳ７０６：Ｙｅｓ）、コンピュータは、選択単語の分類コードと選択単語の対象ファイルＦｉでの出現位置とを分類コードファイルＣｉに追加する（ステップＳ７０７）。
【００４７】
そして、コンピュータは、第ｊ階層の分類マップにおいて選択単語の分類コードにおけるファイル番号ｉのビットをＯＮ（“１”）にする（ステップＳ７０８）。このあと、コンピュータは、選択単語の分類コードから、第ｊ階層よりも上位階層ごとの分類コードを抽出する（ステップＳ７０９）。
【００４８】
上述したように、第ｊ階層の分類コードには、その上位階層（第１階層，…，第（ｊ−１）階層）の分類コードが含まれている。たとえば、第３階層である小分類コード「＃１０３２」（カレーライス）の先頭２桁は、中分類コードであるため、先頭２桁のコードを第２階層である中分類コード「＃１０」（飯）として抽出する。同様に、小分類コード「＃１０３２」（カレーライス）の先頭１桁は、大分類コードであるため、先頭１桁のコードを第１階層である大分類コード「＃１」（食べ物）として抽出する。
【００４９】
そして、コンピュータは、ステップＳ７０９で抽出された上位階層の分類コードを、その上位階層の分類マップに設定する（ステップＳ７１０）。具体的には、上述の例では、中分類コード「＃１０」（飯）については、中分類の分類マップに中分類コード「＃１０」（飯）を設定する。同様に、大分類コード「＃１」（食べ物）についても、大分類の分類マップ大分類コード「＃１」（食べ物）を設定する。設定済みである場合は設定しない。
【００５０】
このあと、コンピュータは、ステップＳ７１０で各上位階層の分類マップに設定された抽出分類コードにおけるファイル番号ｉのビットをＯＮ（“１”）にする（ステップＳ７１１）。なお、すでにＯＮである場合は何もしない。
【００５１】
そして、コンピュータは、ファイル番号ｉをインクリメントし（ステップＳ７１２）、ｉ＞ｎであるか否かを判断する（ステップＳ７１３）。ｎは対象ファイル群Ｆのファイル総数である。ｉ＞ｎでない場合（ステップＳ７１３：Ｎｏ）、ステップＳ７０６に戻り、対象ファイルＦｉに、選択単語に一致する文字列があるか否かを判断することとなる。
【００５２】
また、ｉ＞ｎである場合（ステップＳ７１３：Ｙｅｓ）、ステップＳ７０２に戻り、コンピュータは、類語辞書データ１００に第ｊ階層の未選択の単語があるか否かを判断する（ステップＳ７０２）。第ｊ階層の未選択の単語がない場合（ステップＳ７０２：Ｎｏ）、階層番号ｊをインクリメントして（ステップＳ７１４）、コンピュータは、ｊ＞ｍであるか否かを判断する（ステップＳ７１５）。ｍは階層数である。図１のような類語辞書データ１００を用いる場合は、ｍ＝３である。
【００５３】
ｊ＞ｍでない場合（ステップＳ７１５：Ｎｏ）、ステップＳ７０２に戻り、コンピュータは、類語辞書データ１００に第ｊ階層の未選択の単語があるか否かを判断する（ステップＳ７０２）。一方、ｊ＞ｍである場合（ステップＳ７１５：Ｙｅｓ）、分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を終了する。
【００５４】
この分類マップ群Ｍおよび分類コードファイル群Ｃの生成処理を実行することで、最終的に、対象ファイル群Ｆに固有な分類マップ群Ｍおよび分類コードファイル群Ｃが自動生成されることとなる。
【００５５】
＜検索装置の機能的構成例＞
図８は、本実施の形態の検索装置の機能的構成例を示すブロック図である。図８において、検索装置８００は、入力部８０１と、解析部８０２と、判別部８０３と、第１検索処理部８０４と、第２検索処理部８０５と、出力部８０６とを備える。入力部８０１〜出力部８０６は、具体的には、たとえば、図６に示したＲＯＭ６０２、ＲＡＭ６０３、磁気ディスク６０５、光ディスク６０７などの記憶装置に記憶されたプログラムをＣＰＵ６０１に実行させることにより、または、Ｉ／Ｆ６０９により、その機能を実現する。
【００５６】
入力部８０１は、検索文字列の入力や検索モードの指定を受け付ける。検索モードとは、検索処理の種別を示しており、後述する上位階層分類コードによる検索処理（第１検索モード）または最下層の分類コードからの検索処理（第２検索モード）のいずれかのモードである。
【００５７】
解析部８０２は、入力部８０１によって入力された検索文字列を解析する。具体的には、たとえば、解析部８０２は、形態素解析を実行することで検索文字列を単語に分解し、分解された単語の各々について品詞を特定する。そして、解析部８０２は、この分解された単語群のうち、あいまい検索で使用する品詞、たとえば、名詞、動詞、形容詞、副詞に該当する単語を、検索単語として抽出する。なお、解析部８０２は比較文字列も検索文字列と同様に解析する。
【００５８】
判別部８０３は、指定された検索モードがいずれの検索処理であるかを判別する。また、検索モードが指定されていない場合は、判別部８０３は、解析部８０２によって解析された検索単語の数が所定単語数以上であるか否かを判別する。所定単語数未満である場合は、第１検索モードが指定され、所定文字数以上である場合は、第２検索モードが指定される。
【００５９】
検索装置８００は、判別部８０３で判別された検索モードで検索処理を実行することとなる。このように、検索単語の数が多いと、あいまい検索のヒット数が膨大になる可能性があるため、検索装置８００は、第２検索モードにより、指定階層から段階的に検索対象となる階層を拡大していくこととする。
【００６０】
第１検索処理部８０４は、上位階層分類コードによる検索処理を実行する。上位階層分類コードによる検索処理とは、検索文字列内の検索単語の分類コードと検索単語を包含する上位階層の単語の分類コードを用いて検索文字列に固有の類語ベクトルを生成する。同様に、比較文字列内の比較単語についても、比較単語の分類コードと比較単語を包含する上位階層の単語の分類コードを用いて比較文字列に固有の類語ベクトルを生成する。そして、第１検索処理部８０４は、カーネル法による両類語ベクトルの演算をおこなって、検索文字列と比較文字列との類似度を算出することとなる。なお詳細については後述する。
【００６１】
また、第２検索処理部８０５は、最下層の分類コードからの検索処理を実行する。最下層の分類コードからの検索処理とは、検索文字列内の検索単語の分類コードとを用いて検索文字列に固有の類語ベクトルを生成する。同様に、比較対象となる比較文字列内の比較単語についても、比較単語の分類コードを用いて比較文字列に固有の類語ベクトルを生成する。そして、第２検索処理部８０５は、カーネル法による両類語ベクトルの演算をおこなって、検索文字列と比較文字列との類似度を算出することとなる。
【００６２】
このとき、所定類似度以上の比較文字列の総数が所定数未満である場合は、検索文字列および比較文字列について、１つ上位の階層の分類コードを特定して、それぞれの類語ベクトルに追加し、同様に類似度を算出する。このように、第２検索処理部８０５は、所定類似度以上の比較文字列の総数が所定数以上となるまで、１つ上位の階層に上がって類語ベクトルを再生成して、類似度を算出することとなる。なお詳細については後述する。
【００６３】
出力部８０６は、第１検索処理部８０４または第２検索処理部８０５の検索結果を出力する。具体的には、たとえば、出力部８０６は、類似度の高い順に比較文字列をランキング表示する。なお、出力部８０６による出力形式は、ディスプレイ６０８への表示に限らず、通信可能な他のコンピュータへの送信でもよく、印刷出力でもよい。また、検索装置８００内の記憶領域への書込でもよい。
【００６４】
なお、検索装置８００は、入力部８０１、解析部８０２、第１検索処理部８０４、および出力部８０６により構成してもよく、また、入力部８０１、解析部８０２、第２検索処理部８０５、および出力部８０６により構成してもよい。
【００６５】
＜第１検索処理部８０４の機能的構成例＞
図９は、図８に示した第１検索処理部８０４の機能的構成例を示すブロック図である。第１検索処理部８０４は、第１検出部９０１と、第１特定部９０２と、抽出部９０３と、判定部９０４と、第１計数部９０５と、判断部９０６と、第１算出部９０７とを備える。
【００６６】
第１検出部９０１は、類語辞書データ１００内の各分類コードに対応する単語の各対象ファイルＦｉ内での存否を示すビット列の集合を階層別にまとめた分類マップ群Ｍのうち最上位階層の分類マップを参照して、検索単語が所属する最上位階層の分類コードが存在する特定の対象ファイルを検出する。
【００６７】
ここで、検索単語が所属する階層とは、検索単語の分類コードが存在する階層のほか、当該分類コードにより特定されるより上位の階層も含む。このような階層を所属階層と称す。そして、第１検出部９０１は、検索単語の分類コードを包含する最上位階層の分類コードまでさかのぼり、最上位階層の分類マップから特定の対象ファイルを検出することとなる。
【００６８】
たとえば、検索単語が「食べ物」である場合、分類コードは大分類コード「＃１」であるため、大分類マップ２００の「＃１」のビット列を参照することで、特定の対象ファイルＦ１〜Ｆ３を検出することとなる。
【００６９】
また、検索単語が「辛い」である場合、分類コードは中分類コード「＃４２」である。この中分類コード「＃４２」は大分類コード「＃４」（味）に属するため、大分類マップ２００の「＃４」のビット列を参照することで、特定の対象ファイルＦ１，Ｆ２，Ｆｎを検出することとなる。
【００７０】
また、検索単語が「カレーライス」である場合、分類コードは小分類コード「＃１０３２」である。この小分類コード「＃１０３２」は大分類コード「＃１」（食べ物）に属するため、大分類マップ２００の「＃１」のビット列を参照することで、特定の対象ファイルＦ１〜Ｆ３を検出することとなる。このように、検索単語がどの階層の分類コードであっても、最上位階層までさかのぼることで、必要最小限の範囲で対象ファイルＦｉを絞り込むことができる。
【００７１】
また、検索単語が「食べ物」および「味」である場合、分類コードは大分類コード「＃１」，「＃４」であるため、大分類マップ２００の「＃１」，「＃４」のビット列を参照する。そして、「＃１」，「＃４」の両ビット列でＯＮになっているファイル番号の対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。
【００７２】
また、検索単語が「食べ物」および「辛い」である場合、検索単語「食べ物」の分類コードは大分類コード「＃１」であるため、大分類マップ２００の「＃１」のビット列を参照する。一方、検索単語「辛い」の分類コードは中分類コード「＃４２」である。この中分類コード「＃４２」は大分類コード「＃４」（味）に属するため、大分類マップ２００の「＃４」のビット列を参照する。そして、「＃１」，「＃４」の両ビット列でＯＮになっているファイル番号の対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。
【００７３】
このように、検索単語が複数ある場合、最上位階層での分類コードのビット列どうしで論理積をとることで、対象ファイルＦｉを絞り込むことができる。すなわち、第１検出部９０１では、以降のあいまい検索の検索先を特定の対象ファイルＦｉに絞り込むことができるため、無駄な対象ファイルＦｉの検索を防止でき、検索処理の高速化を図ることができる。なお、検索装置８００が分類マップ群Ｍにアクセスできない場合は、全対象ファイルＦ１〜Ｆｎ内の単語が比較対象となる。
【００７４】
第１特定部９０２は、単語間の類義関係を階層的に分類してコード化した類語辞書データ１００の中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する。第１特定部９０２は、具体的には、たとえば、図１に示した類語辞書データ１００の中から分類コードを特定する。
【００７５】
まず、検索単語の階層ごとの分類コードの特定について説明する。第１特定部９０２は、類語辞書データ１００を参照して、検索文字列内の検索単語の分類コードとその階層を特定する。ここで、検索文字列内の検索単語とは、入力部８０１によって入力された検索文字列が解析部８０２によって単語に分解されて抽出された単語である。
【００７６】
分類コードの階層が最上位でない場合は、第１特定部９０２は、当該階層の分類コードを包含する上位階層の分類コードを最上位階層まで特定する。たとえば、検索単語が「カレーライス」である場合、その階層は第３階層（小分類）、小分類コードは「＃１０３２」となる。そして、小分類コードの先頭２桁は中分類コードであるため、第１特定部９０２は「＃１０」を中分類コードとして特定する。さらに、小分類コードの先頭１桁は大分類コードであるため、第１特定部９０２は「＃１」を大分類コードとして特定する。
【００７７】
このように、検索単語「カレーライス」から、小分類コード「＃１０３２」、中分類コード「＃１０」および大分類コード「＃１」が所属階層（第１階層〜第３階層）での分類コードとして特定されることとなる。このような特定の仕方は、比較単語についても同様である。
【００７８】
また、比較文字列とは、ある比較単位内に記述されている一または複数の文字列（たとえば、読点や改行コードで区切られている。）である。比較単位は、単一の比較単語でもよく、一または複数の対象ファイルＦｉでもよい。また、第１検出部９０１により特定の対象ファイルＦｉに絞り込まれている場合は、特定の対象ファイルＦｉ内の文字列のみが対象となる。
【００７９】
また、比較文字列は、ある対象ファイルＦｉ内のある項目単位でもよい。対象ファイルＦｉが辞書データである場合、見出し語およびその解説文となる文字列を比較単位とし、当該文字列内の単語を比較単語とする。
【００８０】
抽出部９０３は、第１特定部９０２によって特定された検索単語の階層ごとの分類コードおよび各比較単語の階層ごとの分類コードの中から、類語辞書データ１００を構成する階層群のうち特定階層の分類コードを抽出する。ここで、特定階層とは、たとえば、中間階層を指す。中間階層とは、少なくとも最上位階層および最下位階層を含まない階層（群）である。
【００８１】
本例では、第１階層〜第３階層であるため、第２階層が中間階層となる。また、第１階層〜第５階層まである場合は、中間階層は、第２階層のみ、第３階層のみ、第４階層のみ、第２階層および第３階層、第３階層および第４階層、第２階層〜第４階層が中間階層として選ぶことが可能である。どの階層を中間階層にするかは、あらかじめ設定されているものとする。なお、本例では、特定階層を中間階層としたが、ある階層のみターゲットとして検索をおこないたい場合は、最上位階層や最下位階層を含む階層（群）を特定階層としてもよい。
【００８２】
したがって、検索単語が「カレーライス」である場合は、第１特定部９０２により小分類コード「＃１０３２」、中分類コード「＃１０」および大分類コード「＃１」が特定されるため、中分類コード「＃１０」が抽出されることとなる。
【００８３】
同様に、比較単語が「ハヤシライス」である場合は、第１特定部９０２により小分類コード「＃１０３３」、中分類コード「＃１０」および大分類コード「＃１」が特定されるため、中分類コード「＃１０」が抽出されることとなる。
【００８４】
なお、抽出部９０３は、中間階層よりも上位の上位階層での検索単語および比較単語の分類コードも抽出する。上記のカレーライスとハヤシライスの例では、ともに大分類コード「＃１」を抽出することとなる。
【００８５】
判定部９０４は、抽出部９０３によって抽出された検索単語の特定階層の分類コードと比較単語の特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する。具体的には、たとえば、判定部９０４は、検索単語の中間階層における分類コードと比較単語の中間階層における分類コードとの一致判定をおこなう。上記のカレーライスとハヤシライスの例では、ともに中分類コード「＃１０」であるため、一致することとなる。
【００８６】
また、検索文字列内の検索単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。たとえば、検索単語の中分類コードが３個で比較単語の中分類コードが１個の場合は、一致判定を３回おこなう。これに対し、比較文字列内の比較単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。たとえば、検索単語の中分類コードが１個で比較単語の中分類コードが４個の場合は、一致判定を４回おこなう。
【００８７】
さらに、検索単語および比較単語が複数存在する場合がある。この場合も、判定部９０４は、検索単語ごとに各比較単語との一致判定をおこなう。たとえば、検索単語の中分類コードが２個で比較単語の中分類コードが３個である場合、一致判定を６回おこなう。
【００８８】
判定部９０４では、検索文字列内の検索単語の中間階層の分類コードと比較単位内の比較単語の中間階層の分類コードとの一致判定において、検索単語と比較単語の組み合わせですべて一致した場合に、検索文字列と比較単位内の比較文字列とが一致したと判定する。また、検索単語と比較単語の組み合わせのうち一部一致した場合に、検索文字列と比較単位内の比較文字列とが一致したと判定することとしてもよい。
【００８９】
なお、検索単語と比較単語の組み合わせのうちすべて不一致の場合に、検索文字列と比較単位内の比較文字列とが不一致であると判定する。すなわち、一部一致の場合に、検索文字列と比較単位内の比較文字列とを一致とするか不一致とするかは、あらかじめ設定しておくこととなる。
【００９０】
なお、判定部９０４では、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなう前に、検索単語および比較単語の上位階層の分類コードどうしの一致判定をおこなうこととしてもよい。そして、一致した場合に、判定部９０４は、さらに中間階層の分類コードどうしの一致判定をおこない、不一致の場合はおこなわないこととなる。
【００９１】
具体的には、たとえば、上記のカレーライスとハヤシライスの例では、ともに大分類コード「＃１」であるため、中分類コードどうしの一致判定をおこなうこととなる。この場合も上記と同様、検索文字列内の検索単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。
【００９２】
たとえば、検索単語の大分類コードが３個で比較単語の大分類コードが１個の場合は、一致判定を３回おこなう。これに対し、比較文字列内の比較単語が複数存在する場合がある。この場合、判定部９０４は、検索単語ごとに一致判定をおこなう。たとえば、検索単語の大分類コードが１個で比較単語の大分類コードが４個の場合は、一致判定を４回おこなう。
【００９３】
さらに、検索単語および比較単語が複数存在する場合がある。この場合も、判定部９０４は、検索単語ごとに各比較単語との一致判定をおこなう。たとえば、検索単語の大分類コードが２個で比較単語の大分類コードが３個である場合、一致判定を６回おこなう。
【００９４】
判定部９０４では、検索単語および比較単語の上位階層の分類コードどうしの一致判定が複数回行われる場合、すべて一致した場合のみ、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなう。また、一部一致した場合でも、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなうこととしてもよい。なお、全部不一致の場合は、検索単語および比較単語の中間階層の分類コードどうしの一致判定をおこなわない。一部一致の場合の取り扱いは、あらかじめ設定しておくこととなる。
【００９５】
いずれにしても、上位階層の分類コードどうしが不一致であれば、それよりも下位の階層で類似していないと考えられるため、上位階層の分類コードの一致判定をおこなうことで、無駄な検索を回避でき、検索効率の向上を図ることができる。
【００９６】
第１計数部９０５は、判定部９０４による特定階層での一致数を計数する。第１計数部９０５による一致数は、比較対象となる対象ファイル群Ｆでの一致数の総和である。たとえば、全対象ファイルでもよく、第１検出部９０１によって検出された特定の対象ファイルＦｉであってもよい。なお、第１計数部９０５での計数単位については、検索単語と比較単語との中間階層の分類コードどうしで一致した場合に、１ポイント計数する。
【００９７】
また、比較単位内で１つでも検索単語の中間階層の分類コードと一致する比較単語の中間階層の分類コードがあれば、１ポイント計数することとしてもよい。さらに、比較単位内のすべての比較単語の中間階層の分類コードが検索単語の中間階層の分類コードと一致した場合に、１ポイント計数することとしてもよい。どの計数方法を採用するかは、判定部９０４での一致判定に従うこととなる。
【００９８】
判断部９０６は、第１計数部９０５によって計数された一致数に基づいて、判定部９０４によって比較単語の階層ごとの分類コードが不一致と判定された比較文字列を除外するか否かを判断する。具体的には、たとえば、判断部９０６ではしきい値が設定されており、判断部９０６は、中間階層での一致数がしきい値以上であるか否かを判断する。すなわち、判断部９０６は、しきい値以上であるか否かにより、中間階層の分類コードが不一致となった比較文字列を、第１算出部９０７の算出対象とするか否かを判断する。
【００９９】
そして、一致数がしきい値以上である場合は、十分類語が含まれていることとなり、中間階層の分類コードが不一致となった比較単語についてまで、あいまい検索の対象（第１算出部９０７による算出対象）とする必要はない。したがって、一致数がしきい値以上の場合は、判断部９０６は、中間階層の分類コードが不一致となった比較文字列を、あいまい検索の対象から除外する。
【０１００】
一方、一致数がしきい値未満である場合は、類語が少ないと考えられるため、中間階層の分類コードが不一致となった比較文字列を、あいまい検索の対象とする必要がある。したがって、一致数がしきい値未満の場合は、判断部９０６は、中間階層の分類コードが不一致となった比較文字列を、あいまい検索の対象から除外しない。
【０１０１】
第１算出部９０７は、判断部９０６によって除外しないと判断された比較文字列内の比較単語の階層ごとの分類コードとに基づいて、検索文字列と除外しないと判断された比較文字列との類似度を算出する。また、第１算出部９０７は、検索文字列と判定部９０４によって中間階層の分類コードが一致すると判定された比較文字列とについても、類似度を算出する。いずれの場合でも、第１算出部９０７は、カーネル法を用いた類似度を算出する。算出結果は出力部８０６に与えられる。以下、具体例を説明する。
【０１０２】
図１０は、第１算出部９０７による類似度算出の具体例１を示す説明図である。具体例１は、検索文字列となる１つの検索単語で比較文字列と比較する例である。ここでは、検索単語を「カレーライス」とし、比較単位となる比較文字列を辞書の見出し語「カレーライス。」および解説文「カレーをご飯にかけた食べ物。」とする。
【０１０３】
（Ａ）において、第１特定部９０２により検索単語「カレーライス」の階層別の分類コード「＃１」，「＃１０」，「＃１０３２」が得られる。検索単語は「カレーライス」のみであるため、各分類コード「＃１」，「＃１０」，「＃１０３２」の出現回数は１回である。
【０１０４】
（Ｂ）において、比較文字列「カレーライス。カレーをご飯にかけた食べ物。」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「カレー」，「飯」，「食べ物」が抽出される。それぞれの抽出単語については、第１特定部９０２により階層別の分類コードが得られる。
【０１０５】
本例の場合、大分類コード「＃１」（食べ物）の出現回数は４回、中分類コード「＃１０」（飯）の出現回数は２回、小分類コード「＃１０３２」（カレーライス）の出現回数は１回、中分類コード「＃１１」（香辛料）の出現回数は１回、小分類コード「＃１１５４」（カレー）の出現回数は１回となる。なお、検索単語の分類コードと不一致の分類コード「＃１１」（香辛料），「＃１１５４」（カレー）の出現回数は除外される。
【０１０６】
（Ｃ）において、第１算出部９０７は（Ａ）で求めた出現回数をベクトル化する。これを検索文字列の類語ベクトルと称す。同様に、第１算出部９０７は（Ｂ）で求めた出現回数をベクトル化する。これを比較文字列の類語ベクトルと称す。そして、第１算出部９０７は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は７となる。
【０１０７】
図１１は、第１算出部９０７による類似度算出の具体例２を示す説明図である。具体例２は、検索文字列と比較文字列とを比較する例である。ここでは、比較単位となる検索文字列を「このカレーライスは甘口だ」とし、比較文字列を「このハヤシライスはマイルドだ」とする。
【０１０８】
（Ａ）において、検索文字列「このカレーライスは甘口だ」について、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「甘口」が抽出される。それぞれの抽出単語については、第１特定部９０２により階層別の分類コードが得られる。検索文字列では、各抽出単語の出現回数は１回であるため、各分類コード「＃１」，「＃１０」，「＃１０３２」，「＃４」，「＃４１」，「＃４１１０」の出現回数は１回である。
【０１０９】
（Ｂ）において、比較文字列「このハヤシライスはマイルドだ」について、解析部８０２による形態素解析および単語抽出により、「ハヤシライス」，「マイルド」が抽出される。それぞれの抽出単語については、第１特定部９０２により階層別の分類コードが得られる。比較文字列では、各抽出単語の出現回数は１回であるため、各分類コード「＃１」，「＃１０」，「＃１０３３」，「＃４」，「＃４１」，「＃４１１１」の出現回数は１回である。
【０１１０】
なお、「＃１０３２」（カレーライス）および「＃４１１０」（甘口）は、比較文字列では出現していないため、出現回数は０となる。なお、検索単語の分類コードと不一致の分類コード「＃１０３３」（ハヤシライス），「＃４１１１」（マイルド）の出現回数は除外される。
【０１１１】
（Ｃ）において、第１算出部９０７は（Ａ）で求めた出現回数をベクトル化する。これを検索文字列の類語ベクトルと称す。同様に、第１算出部９０７は（Ｂ）で求めた出現回数をベクトル化する。これを比較文字列の類語ベクトルと称す。そして、第１算出部９０７は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は４となる。つぎに、第２検索処理部８０５の詳細について説明する。
【０１１２】
＜第２検索処理部８０５の機能的構成例＞
図１２は、図８に示した第２検索処理部８０５の機能的構成例を示すブロック図である。第２検索処理部８０５は、第２検出部１２０１と、設定部１２０２と、第２特定部１２０３と、第２算出部１２０４と、第２計数部１２０５と、を備える。
【０１１３】
第２検出部１２０１は、類語辞書データ１００内の各分類コードに対応する単語の各対象ファイル内での存否を示すビット列の集合を階層別にまとめた分類マップ群Ｍを参照して、検索単語の対象階層の分類コードが存在する特定の対象ファイルＦｉを検出する。
【０１１４】
たとえば、図１の類語辞書データ１００の場合、最下層は第３階層となる。ここで、たとえば、対象階層が第３階層である場合、第２検索処理部８０５は、図４の小分類マップ４００のみを参照する。そして、小分類マップ４００において、検索単語の分類コードのビット列でＯＮになっている対象ファイルＦｉを特定の対象ファイルとして検出する。
【０１１５】
たとえば、検索単語が「ハヤシライス」である場合、分類コードは小分類コード「＃１０３３」である。したがって、第２検出部１２０１では、小分類マップ４００における小分類コード「＃１０３３」のビット列でＯＮになっている対象ファイルＦ１を特定の対象ファイルとして検出することとなる。
【０１１６】
また、対象階層が第２階層にまで上がった場合、分類コードも第２階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」の場合、中分類コードは先頭２桁の「＃１０」（飯）である。したがって、第２検出部１２０１では、中分類マップ３００における中分類コード「＃１０」のビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。このように、対象階層をより上位の階層に移すことで、第３階層では検出されなかった対象ファイルＦ２を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。
【０１１７】
同様に、対象階層が第１階層にまで上がった場合、分類コードも第１階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」の場合、大分類コードは先頭１桁の「＃１」（食べ物）である。したがって、第２検出部１２０１では、大分類マップ２００における大分類コード「＃１」のビット列でＯＮになっている対象ファイルＦ１〜Ｆ３を特定の対象ファイルとして検出することとなる。このように、対象階層をより上位の階層に移すことで、第２階層では検出されなかった対象ファイルＦ３を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。
【０１１８】
たとえば、検索単語が「ハヤシライス」および「マイルド」である場合、分類コードは小分類コード「＃１０３３」，「＃４１１１」である。したがって、第２検出部１２０１では、小分類マップ４００における小分類コード「＃１０３３」，「＃４１１１」の両ビット列でＯＮになっている対象ファイルＦ１を特定の対象ファイルとして検出することとなる。
【０１１９】
また、対象階層が第２階層にまで上がった場合、分類コードも第２階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」および「マイルド」の場合、中分類コードは先頭２桁の「＃１０」（飯），「＃４１」（甘い）である。したがって、第２検出部１２０１では、中分類マップ３００における中分類コード「＃１０」，「＃４１」の両ビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。このように、対象階層をより上位の階層に移すことで、第３階層では検出されなかった対象ファイルＦ２を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。
【０１２０】
同様に、対象階層が第１階層にまで上がった場合、分類コードも第１階層の分類コードまで特定することとなる。上記の検索単語「ハヤシライス」および「マイルド」の場合、大分類コードは先頭１桁の「＃１」（食べ物），「＃４」（味）である。したがって、第２検出部１２０１では、大分類マップ２００における大分類コード「＃１」，「＃４」の両ビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。特定の対象ファイルの範囲を拡大しようと試みたが結果的に拡大しなかった例である。
【０１２１】
また、複数の検索単語の階層が異なる場合については以下のようになる。たとえば、検索単語が「ハヤシライス」および「甘い」である場合、分類コードは小分類コード「＃１０３３」と中分類コード「＃４１」である。したがって、第２検出部１２０１では、小分類マップ４００における小分類コード「＃１０３３」，中分類コード「＃４１」の両ビット列でＯＮになっている対象ファイルＦ１を特定の対象ファイルとして検出することとなる。
【０１２２】
そして、対象階層が第２階層にまで上がった場合、第２検出部１２０１では、中分類マップ３００における中分類コード「＃１０」，「＃４１」の両ビット列でＯＮになっている対象ファイルＦ１，Ｆ２を特定の対象ファイルとして検出することとなる。
【０１２３】
このように、対象階層をより上位の階層に移すことで、第３階層では検出されなかった対象ファイルＦ２を特定の対象ファイルに含めることができ、特定の対象ファイルの範囲を拡大することができる。なお、検索装置８００が分類マップ群Ｍにアクセスできない場合は、全対象ファイルＦ１〜Ｆｎ内の単語が比較対象となる。
【０１２４】
設定部１２０２は、単語間の類義関係を階層的に分類してコード化した類語辞書データ１００を構成する階層群の中から指定された指定階層を対象階層に設定する。具体的には、たとえば、指定階層は、最下位層とする。対象階層は変数であり、初期値が指定階層である。対象階層は指定階層から１階層ずつ上がっていく。
【０１２５】
具体的には、設定部１２０２は、第２計数部１２０５によって計数された計数結果が所定数以下である場合、対象階層をより上位の階層に変更する。所定数は、あらかじめ設定された値である。なお、変更基準を所定数以下としたが、パーセンテージで判断してもよい。具体的には、分母を比較文字列の総数とし、分子を所定数として、所定確率とする。
【０１２６】
そして、計数結果を比較文字列の総数で割った値が所定確率以下である場合、設定部１２０２は、対象階層をより上位の階層に変更する。また、変更する幅は、１階層とする。たとえば、変更前が第３階層である場合、変更後は第２階層となる。また、対象階層が変更された場合、第２検出部１２０１では、検索単語の変更後の対象階層の分類コードが存在する特定の対象ファイルを検出することとなる。
【０１２７】
第２特定部１２０３は、類語辞書データ１００の中から、検索文字列内の検索単語の指定階層から対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の指定階層から対象階層までの分類コードとを、比較文字列ごとに特定する。第１特定部９０２では、検索単語および比較単語について特定階層（たとえば、中間階層）の分類コードを特定したが、第２特定部１２０３では、指定階層から対象階層までの分類コードを特定する。第２特定部１２０３では、対象階層が変更される都度、指定階層から変更後の対象階層までの分類コードを特定することとなる。
【０１２８】
ここで、検索単語を「カレーライス」とする。たとえば、指定階層が第３階層である場合、初期状態では対象階層も第３階層に設定される。第２特定部１２０３は、検索単語「カレーライス」の第３階層での分類コード「＃１０３２」を特定する。また、対象階層が第２階層に上がった場合、第２特定部１２０３は、さらに、検索単語「カレーライス」の第２階層での分類コード「＃１０」（飯）を特定する。さらに、対象階層が第１階層である場合、第２特定部１２０３は、さらに、検索単語「カレーライス」の第１階層での分類コード「＃１」（食べ物）を特定する。
【０１２９】
また、ここで、検索単語を「辛い」とする。検索単語「辛い」の分類コードは中分類コードであり、指定階層（第３階層）の分類コードではない。この場合、対象階層が第３階層となるため、第２特定部１２０３は、検索単語「辛い」の分類コードは特定できないこととなる。このあと、対象階層が第２階層に上がった場合、第２特定部１２０３は、検索単語「辛い」の第２階層での分類コード「＃４２」を特定することとなる。さらに、対象階層が第１階層に上がった場合、第２特定部１２０３は、検索単語「辛い」の第１階層での分類コード「＃４」（味）を特定することとなる。
【０１３０】
第２算出部１２０４は、検索単語の指定階層から対象階層までの分類コードと比較単語の指定階層から対象階層までの分類コードに基づいて、検索文字列と比較文字列との類似度を比較文字列ごとに算出する。具体的には、第２算出部１２０４は、検索単語における指定階層から対象階層までの分類コードで検索文字列の類語ベクトルを生成する。
【０１３１】
同様に、第２算出部１２０４は、比較単語における指定階層から対象階層までの分類コードで比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、第１算出部９０７と同様に、検索文字列の類語ベクトルと比較文字列の類語ベクトルの内積をとることで類似度を算出する。具体例については後述する。
【０１３２】
第２計数部１２０５は、第２算出部１２０４によって類似度が算出された比較文字列群のうち所定類似度以上となる比較文字列の数を計数する。所定類似度は、あらかじめ設定された値である。第２計数部１２０５によって計数された計数結果が所定数以下である場合、設定部１２０２により対象階層が１階層上がって再度、第２検出部１２０１および第２特定部１２０３による処理が実行されることとなる。
【０１３３】
なお、第２検索処理部８０５による処理を実行した場合、出力部８０６は、第２計数部１２０５によって計数された計数結果が所定数よりも多いこととなった比較文字列群のうち少なくとも所定類似度以上の比較文字列を出力することとなる。
【０１３４】
図１３は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。具体例１は、検索文字列となる１つの検索単語で比較文字列と比較する例である。ここでは、検索単語を「カレーライス」とし、比較単位となる比較文字列を辞書の見出し語「カレーライス。」および解説文「カレーをご飯にかけた食べ物。」とする。なお、指定階層は第３階層、対象階層も第３階層とする。
【０１３５】
（Ａ）において、第２特定部１２０３により検索単語「カレーライス」の対象階層（第３階層）となる小分類コード「＃１０３２」が得られる。検索単語は「カレーライス」のみであるため、小分類コード「＃１０３２」の出現回数は１回である。
【０１３６】
（Ｂ）において、比較文字列「カレーライス。カレーをご飯にかけた食べ物。」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「カレー」，「飯」，「食べ物」が抽出される。それぞれの抽出単語については、第２特定部１２０３により対象階層（第３階層）の分類コードが得られる。
【０１３７】
本例の場合、抽出単語「カレーライス」，「カレー」，「飯」，「食べ物」のうち対象階層である第３階層に属する単語は「カレーライス」，「カレー」であるため、小分類コード「＃１０３２」，「＃１１５４」が特定される。また、これらの出現回数はそれぞれ１回である。このうち、検索単語の分類コードと不一致の分類コード「＃１１５４」（カレー）の出現回数は除外される。
【０１３８】
（Ｃ）において、第２算出部１２０４は（Ａ）で求めた出現回数をベクトル化する。これを検索文字列の類語ベクトルと称す。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化する。これを比較文字列の類語ベクトルと称す。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は１となる。
【０１３９】
図１４は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。具体例２は、図１３の具体例１において、対象階層が第２階層に上がった場合の例である。
【０１４０】
（Ａ）において、第２特定部１２０３により検索単語「カレーライス」の指定階層（第３階層）から対象階層（第２階層）までの分類コードとして、小分類コード「＃１０３２」および中分類コード「＃１０」が得られる。検索単語は「カレーライス」のみであるため、小分類コード「＃１０３２」および中分類コード「＃１０」の出現回数はそれぞれ１回である。
【０１４１】
（Ｂ）において、比較文字列「カレーライス。カレーをご飯にかけた食べ物。」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「カレー」，「飯」，「食べ物」が抽出される。それぞれの抽出単語については、第２特定部１２０３により指定階層（第３階層）から対象階層（第２階層）までの分類コードが得られる。
【０１４２】
本例の場合、抽出単語「カレーライス」，「カレー」，「飯」，「食べ物」のうち指定階層である第３階層に属する単語は「カレーライス」，「カレー」であるため、小分類コード「＃１０３２」，「＃１１５４」が特定される。また、第２特定部１２０３は、抽出単語「カレーライス」，「カレー」，「飯」，「食べ物」の第２階層での分類コードを特定する。
【０１４３】
「カレーライス」自体は、小分類コード「＃１０３２」であるが、中分類コードは先頭２桁の「＃１０」（飯）が特定される。「カレー」も小分類コード「＃１１５４」であるが、中分類コードは先頭２桁の「＃１１」（香辛料）が特定される。「飯」は中分類コードであるため、「＃１０」がそのまま特定される。
【０１４４】
したがって、中分類コード「＃１０」（飯）の出現回数は２回、中分類コード「＃１１」（香辛料）の出現回数は１回である。このうち、中分類コード「＃１１」（香辛料）は、（Ａ）に存在しないため除外される。そして、今回特定された中分類コード「＃１１」（香辛料）の出現回数と、図１３に示した比較文字列での小分類コードの出現回数と、を統合する。
【０１４５】
（Ｃ）において、第２算出部１２０４は、（Ａ）で求めた出現回数をベクトル化して、検索文字列の類語ベクトルを生成する。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化して、比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は３となる。
【０１４６】
図１５は、第２算出部１２０４による類似度算出の具体例１を示す説明図である。具体例１は、検索文字列（複数の検索単語を含む）と比較文字列とを比較する例である。ここでは、検索文字列を「このカレーライスは甘口だ」とし、比較単位となる比較文字列を「このハヤシライスはマイルドだ」とする。なお、指定階層は第３階層、対象階層も第３階層とする。
【０１４７】
（Ａ）において、検索文字列「このカレーライスは甘口だ」については、解析部８０２による形態素解析および単語抽出により、「カレーライス」，「甘口」が抽出される。それぞれの抽出単語については、第２特定部１２０３により対象階層（第３階層）の分類コードが得られる。本例の場合、抽出単語「カレーライス」，「甘口」の小分類コード「＃１０３２」，「＃４１１０」が特定される。また、これらの出現回数はそれぞれ１回である。
【０１４８】
（Ｂ）において、比較文字列「このハヤシライスはマイルドだ」については、解析部８０２による形態素解析および単語抽出により、「ハヤシライス」，「マイルド」が抽出される。それぞれの抽出単語については、第２特定部１２０３により対象階層（第３階層）の分類コードが得られる。本例の場合、抽出単語「ハヤシライス」，「マイルド」の小分類コード「＃１０３３」，「＃４１１１」が特定される。また、これらの出現回数はそれぞれ１回である。しかしながら、小分類コード「＃１０３３」，「＃４１１１」の出現回数は検索単語の分類コードと不一致のため、ともに除外される。
【０１４９】
（Ｃ）において、第２算出部１２０４は（Ａ）で求めた出現回数をベクトル化して、検索文字列の類語ベクトルを生成する。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化して、比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は０となる。
【０１５０】
図１６は、第２算出部１２０４による類似度算出の具体例２を示す説明図である。具体例２は、図１５の具体例１において、対象階層を第３階層から第２階層に変更した例である。
【０１５１】
（Ａ）において、検索文字列「このカレーライスは甘口だ」の抽出単語「カレーライス」，「甘口」について、第２特定部１２０３により第３階層の分類コードのほか、第２階層の分類コードも得られる。本例の場合、抽出単語「カレーライス」，「甘口」の具体例１で特定された小分類コード「＃１０３２」，「＃４１１０」のほか、小分類コードの先頭２桁から中分類コード「＃１０」（飯），「＃４１」（甘い）が特定される。また、これらの出現回数はそれぞれ１回である。
【０１５２】
（Ｂ）において、比較文字列「このハヤシライスはマイルドだ」の抽出単語「ハヤシライス」，「マイルド」について、第２特定部１２０３により第３階層の分類コードのほか、第２階層の分類コードも得られる。本例の場合、抽出単語「ハヤシライス」，「マイルド」の小分類コード「＃１０３３」，「＃４１１１」のほか、小分類コードの先頭２桁から中分類コード「＃１０」（飯），「＃４１」（甘い）が特定される。また、これらの出現回数はそれぞれ１回である。また、図１５の具体例１と同様、小分類コード「＃１０３３」，「＃４１１１」の出現回数は検索単語の分類コードと不一致のため、ともに除外される。
【０１５３】
（Ｃ）において、第２算出部１２０４は（Ａ）で求めた出現回数をベクトル化して、検索文字列の類語ベクトルを生成する。同様に、第２算出部１２０４は（Ｂ）で求めた出現回数をベクトル化して、比較文字列の類語ベクトルを生成する。そして、第２算出部１２０４は、両類語ベクトルの内積をとることで類似度を算出する。（Ｃ）では、類似度は２となる。
【０１５４】
このように、図１５の具体例１に示した第３階層のみの分類コードで算出された類似度よりも、第３階層〜第２階層の分類コードを用いて算出された類似度のほうが高くなることがある。このように、階層を上位にまで拡大していくことで所定類似度以上の類似度の数が増加することとなる。したがって、類似度の高いあいまい検索のヒット数を段階的に増加することができる。
【０１５５】
＜検索処理手順＞
つぎに、図１７〜図２５を用いて、検索装置８００による検索処理手順について説明する。
【０１５６】
図１７は、検索装置８００による検索処理手順例を示すフローチャートである。まず、検索装置８００は、入力部８０１により検索文字列が入力されるのを待ち受ける（ステップＳ１７０１：Ｎｏ）。そして、検索文字列が入力された場合（ステップＳ１７０１：Ｙｅｓ）、検索装置８００は、解析部８０２により、検索文字列を形態素解析して単語に分解する（ステップＳ１７０２）。このあと、検索装置８００は、分解された単語群の中からあいまい検索に必要な品詞に該当する検索単語を抽出する（ステップＳ１７０３）。
【０１５７】
そして、検索装置８００は、入力部８０１により検索モードの指定があったか否かを判断する（ステップＳ１７０４）。検索モードの指定があった場合（ステップＳ１７０４：Ｙｅｓ）、検索装置８００は、指定された検索モードが第１検索モードであるか第２検索モードであるかを判断する（ステップＳ１７０５）。
【０１５８】
第１検索モードである場合（ステップＳ１７０５：第１検索）、検索装置８００は、第１検索処理部８０４により第１検索処理を実行する（ステップＳ１７０６）。一方、第２検索モードである場合（ステップＳ１７０５：第２検索）、検索装置８００は、第２検索処理部８０５により第２検索処理を実行する（ステップＳ１７０７）。
【０１５９】
また、ステップＳ１７０４において、検索モードの指定がない場合（ステップＳ１７０４：Ｎｏ）、検索装置８００は、判別部８０３により検索単語の数が所定単語数以上であるか否かを判断する（ステップＳ１７０８）。所定単語数以上でない場合（ステップＳ１７０８：Ｎｏ）、検索装置８００は、第１検索処理部８０４により第１検索処理を実行する（ステップＳ１７０９）。一方、所定単語数以上である場合（ステップＳ１７０８：Ｙｅｓ）、検索装置８００は、第２検索処理部８０５により第２検索処理を実行する（ステップＳ１７１０）。
【０１６０】
そして、検索装置８００は、第１検索処理（ステップＳ１７０６、Ｓ１７０９）または第２検索処理（ステップＳ１７０７、Ｓ１７１０）が終了した場合、出力部８０６による出力処理を実行する（ステップＳ１７１１）。これにより、検索処理を終了する。
【０１６１】
このように、検索装置８００は、検索モードの指定が受け付けられている場合はその指定内容にしたがって検索処理を実行することになる。一方で、検索モードの指定がない場合は、検索単語の数の多さにより第１検索処理か第２検索処理かを決定することとなる。検索単語の数が多い（所定単語数以上）場合は、第２検索処理を実行することで、検索対象となる階層範囲を絞って段階的にあいまい検索のヒット数を増加させることができる。一方、検索単語の数が少ない（所定単語数未満）場合は、あいまい検索のヒット数が多くはならないと考えられるため、検索単語の階層から最上位階層までの範囲を検索対象範囲としてあいまい検索のヒット数を適切に得ることができる。
【０１６２】
＜第１検索処理手順＞
図１８は、図１７に示した第１検索処理（ステップＳ１７０６、ステップＳ１７０９）の詳細な処理手順例を示すフローチャートである。まず、検索装置８００は、第１特定部９０２により、類語辞書データ１００から、検索単語の分類コードを、最上位階層にまでさかのぼって、検索単語ごとに特定する（ステップＳ１８０１）。
【０１６３】
つぎに、検索装置８００は、検索単語群の各々の検索単語から特定された階層ごとの分類コードのビット列で、ＯＮとなっているファイル番号の対象ファイルを分類マップ群Ｍから検出する（ステップＳ１８０２）。そして、検索装置８００は、中間分類コード一致数集計処理（ステップＳ１８０３）、類似度算出処理（ステップＳ１８０４）を実行する。これにより、第１検索処理を終了する。
【０１６４】
＜中間分類コード一致数集計処理手順＞
図１９は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その１）である。まず、検索装置８００は、中間分類コード一致数ＮをＮ＝０に設定する（ステップＳ１９０１）。つぎに、検索装置８００は、特定対象ファイル数をＫとし、特定対象ファイル番号ｋをｋ＝１とする（ステップＳ１９０２）。特定対象ファイル数Ｋは、図１８のステップＳ１８０２で検出された対象ファイル数である。
【０１６５】
このあと、検索装置８００は、ｋ＞Ｋであるか否かを判断する（ステップＳ１９０３）。ｋ＞Ｋでない場合（ステップＳ１９０３：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋを選択する（ステップＳ１９０４）。そして、検索装置８００は、特定対象ファイルＦｋでの計数が終了したか否かを判断する（ステップＳ１９０５）。具体的には、未選択の比較文字列がなくなった場合に終了する。
【０１６６】
計数終了である場合（ステップＳ１９０５：Ｙｅｓ）、検索装置８００は、特定対象ファイル番号ｋをインクリメントし（ステップＳ１９０６）、ステップＳ１９０３に戻る。一方、計数終了でない場合（ステップＳ１９０５：Ｎｏ）、図２０のステップＳ２００１に移行する。なお、ステップＳ１９０３において、ｋ＞Ｋとなった場合（ステップＳ１９０３：Ｙｅｓ）、類似度算出処理（ステップＳ１８０４）に移行する。
【０１６７】
図２０は、図１８に示した中間分類コード一致数集計処理（ステップＳ１８０３）の詳細な処理手順例を示すフローチャート（その２）である。まず、図１９のステップＳ１９０５において計数終了でない場合（ステップＳ１９０５：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋから比較単位で比較文字列を抽出する（ステップＳ２００１）。つぎに、検索装置８００は、解析部８０２により、検索文字列を形態素解析して単語に分解する（ステップＳ２００２）。このあと、検索装置８００は、分解された単語群の中からあいまい検索に必要な品詞に該当する比較単語を抽出する（ステップＳ２００３）。
【０１６８】
このあと、検索装置８００は、第１特定部９０２により、類語辞書データ１００から比較単語の分類コードを階層ごとに特定する（ステップＳ２００４）。そして、検索装置８００は、階層番号ｊをｊ＝１とし（ステップＳ２００５）、ｊ＝ｔ１であるか否かを判断する（ステップＳ２００６）。ここでは、中間階層の範囲を第ｔ１階層から第ｔ２階層（ｔ１＜ｔ２、ｔ１≠１、ｔ２≠ｍ、ｍは最下層の階層番号）とする。
【０１６９】
ｊ＝ｔ１でない場合（ステップＳ２００６：Ｎｏ）、図１９のステップＳ１９０５に移行する。一方、ｊ＝ｔ１である場合（ステップＳ２００６：Ｙｅｓ）、検索装置８００は、判定部９０４により、検索文字列内の検索単語および比較文字列内の比較単語において、第ｊ階層での分類コードどうしを比較する（ステップＳ２００７）。
【０１７０】
そして、検索装置８００は、第１計数部９０５により、第ｊ階層での分類コードの一致数ａを計数し（ステップＳ２００８）、計数された一致数ａを中間分類コード一致数Ｎ（初期値はＮ＝０）に加算する（ステップＳ２００９）。このあと、検索装置８００は、ｊ＞ｔ２であるか否かを判断する（ステップＳ２０１０）。ｊ＞ｔ２でない場合（ステップＳ２０１０：Ｎｏ）、検索装置８００は、階層番号ｊをインクリメントし（ステップＳ２０１１）、ステップＳ２００７に戻る。
【０１７１】
一方、ｊ＞ｔ２である場合（ステップＳ２０１０：Ｙｅｓ）、図１９のステップＳ１９０５に移行する。このような中間分類コード一致数集計処理（ステップＳ１８０３）により、中間階層（第ｔ１階層から第ｔ２階層）での分類コードの一致数が計数されることとなる。
【０１７２】
＜類似度算出処理手順＞
図２１は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その１）である。まず、検索装置８００は、特定対象ファイル数をＫとし、特定対象ファイル番号ｋをｋ＝１とする（ステップＳ２１０１）。特定対象ファイル数Ｋは、図１８のステップＳ１８０２で検出された対象ファイル数である。
【０１７３】
つぎに、検索装置８００は、ｋ＞Ｋであるか否かを判断する（ステップＳ２１０２）。ｋ＞Ｋである場合（ステップＳ２１０２：Ｙｅｓ）、出力処理（ステップＳ１７１１）に移行する。一方、ｋ＞Ｋでない場合（ステップＳ２１０２：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋを選択する（ステップＳ２１０３）。そして、検索装置８００は、特定対象ファイルＦｋでの比較が終了したか否かを判断する（ステップＳ２１０４）。具体的には、未選択の比較文字列がなくなった場合に終了する。
【０１７４】
特定対象ファイルＦｋでの比較が終了した場合（ステップＳ２１０４：Ｙｅｓ）、抽出すべき比較文字列がないため、検索装置８００は、特定対象ファイル番号ｋをインクリメントし（ステップＳ２１０５）、ステップＳ２１０２に戻る。
【０１７５】
一方、特定対象ファイルＦｋでの比較が終了しない場合（ステップＳ２１０４：Ｎｏ）、検索装置８００は、比較単位で比較文字列を特定対象ファイルＦｋから抽出する（ステップＳ２１０６）。そして、検索装置８００は、第１特定部９０２により、類語辞書データ１００から比較単語の分類コードを階層ごとに特定し（ステップＳ２１０７）、図２２のステップＳ２２０１に移行する。
【０１７６】
図２２は、図１８に示した類似度算出処理（ステップＳ１８０４）の詳細な処理手順例を示すフローチャート（その２）である。まず、ステップＳ２１０７のあと、検索装置８００は、階層番号ｊをｊ＝１に設定し（ステップＳ２２０１）、ｊ＝ｔ１であるか否かを判断する（ステップＳ２２０２）。ｊ＝ｔ１でない場合（ステップＳ２２０２：Ｎｏ）、すなわち、上位階層である場合、検索装置８００は、判定部９０４により、検索文字列の検索単語と比較文字列の比較単語との間で、第ｊ階層の分類コードが一致するか否かを判定する（ステップＳ２２０３）。一致する場合（ステップＳ２２０３：Ｙｅｓ）、検索装置８００は、階層番号ｊをインクリメントし（ステップＳ２２０４）、ステップＳ２２０２に戻る。
【０１７７】
一方、不一致である場合（ステップＳ２２０３：Ｎｏ）、図２１のステップＳ２１０４に戻る。また、ステップＳ２２０２において、ｊ＝ｔ１である場合（ステップＳ２２０２：Ｙｅｓ）、検索装置８００は、判定部９０４により、検索文字列の検索単語と比較文字列の比較単語との間で、第ｊ階層の分類コードが一致するか否かを判定する（ステップＳ２２０５）。
【０１７８】
不一致である場合（ステップＳ２２０５：Ｎｏ）、検索装置８００は、中間分類コード一致数Ｎがしきい値Ｎｔ以上であるか否かを判断する（ステップＳ２２０６）。Ｎ≧Ｎｔである場合（ステップＳ２２０６：Ｙｅｓ）、不一致な比較単語を有する比較文字列をあいまい検索の対象にする必要はないため、類似度算出対象から除外してステップＳ２１０４に戻る。一方、Ｎ≧Ｎｔでない場合（ステップＳ２２０６：Ｎｏ）、あいまい検索の対象が不足しているため、ステップＳ２２０７に移行する。
【０１７９】
また、ステップＳ２２０５において、一致すると判定された場合（ステップＳ２２０５：Ｙｅｓ）、ステップＳ２２０７に移行する。ステップＳ２２０７では、検索装置８００は、階層番号ｊをインクリメントし（ステップＳ２２０７）、ｊ＞ｔ２であるか否かを判断する（ステップＳ２２０８）。ｊ＞ｔ２でない場合（ステップＳ２２０８：Ｎｏ）、まだ中間階層であるため、ステップＳ２２０５に戻る。
【０１８０】
一方、ｊ＞ｔ２である場合（ステップＳ２２０８：Ｙｅｓ）、検索装置８００は、第１算出部９０７により検索文字列の類語ベクトルおよび比較文字列の類語ベクトルを生成して、カーネル法により検索文字列と比較文字列との類似度を算出する（ステップＳ２２０９）。そして、図２１のステップＳ２１０４に戻る。
【０１８１】
このように、中間階層（第ｔ１階層〜第ｔ２階層）においては、中間分類コード一致数Ｎの多さに応じて、比較文字列をあいまい検索の対象にしたり除外したりと、状況に応じて取捨選択することができる。したがって、類似性の高い適切な数の比較文字列についてあいまい検索をおこなうことができる。
【０１８２】
＜第２検索処理手順＞
図２３は、図１７に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その１）である。図２３において、まず、検索装置８００は、階層番号ｊをｊ＝ｍに設定する（ステップＳ２３０１）。ｍは指定階層の階層番号であり、たとえば、最下位の階層番号とする。
【０１８３】
つぎに、検索装置８００は、第２特定部１２０３により、類語辞書データ１００から検索単語の第ｊ階層〜第ｍ階層の分類コードを特定する（ステップＳ２３０２）。そして、検索装置８００は、第ｊ階層〜第ｍ階層の分類マップを参照して、検索単語の第ｊ階層〜第ｍ階層の分類コードのビット列を特定する。そして、検索装置８００は、第２検出部１２０１により、特定されたビット列においてすべてＯＮになっている対象ファイルを検出する（ステップＳ２３０３）。これにより、検索対象が特定対象ファイルに絞り込まれたこととなる。このあと、図２４のステップＳ２４０１に移行する。
【０１８４】
図２４は、図１８に示した第２検索処理（ステップＳ１７０７、ステップＳ１７１０）の詳細な処理手順例を示すフローチャート（その２）である。まず、図２３のステップＳ２３０３のあと、検索装置８００は、特定対象ファイル数をＫとし、特定対象ファイル番号ｋをｋ＝１とする（ステップＳ２４０１）。特定対象ファイル数Ｋは、図２３のステップＳ２３０３で検出された対象ファイル数である。
【０１８５】
つぎに、検索装置８００は、ｋ＞Ｋであるか否かを判断する（ステップＳ２４０２）。ｋ＞Ｋでない場合（ステップＳ２４０２：Ｎｏ）、検索装置８００は、特定対象ファイルＦｋを選択する（ステップＳ２４０３）。そして、検索装置８００は、特定対象ファイルＦｋでの比較が終了したか否かを判断する（ステップＳ２４０４）。具体的には、未選択の比較文字列がなくなった場合に終了する。
【０１８６】
特定対象ファイルＦｋでの比較が終了しない場合（ステップＳ２４０４：Ｎｏ）、検索装置８００は、比較単位で比較文字列を特定対象ファイルＦｋから抽出する（ステップＳ２４０５）。そして、検索装置８００は、解析部８０２により、抽出された比較文字列を形態素解析して単語に分解する（ステップＳ２４０６）。
【０１８７】
このあと、検索装置８００は、分解された単語群の中からあいまい検索に必要な品詞に該当する比較単語を抽出する（ステップＳ２４０７）。つぎに、検索装置８００は、第２特定部１２０３により、類語辞書データ１００から比較単語の第ｊ階層〜第ｍ階層の分類コードを特定する（ステップＳ２４０８）。
【０１８８】
そして、検索装置８００は、第２算出部１２０４により、検索文字列内の検索単語の第ｊ階層〜第ｍ階層の分類コードで検索文字列の類語ベクトルを生成する。同様に、検索装置８００は、第２算出部１２０４により、比較文字列内の比較単語の第ｊ階層〜第ｍ階層の分類コードで比較文字列の類語ベクトルを生成する。そして、検索装置８００は、第２算出部１２０４により両類語ベクトルから検索文字列と比較文字列との類似度を算出する（ステップＳ２４０９）。そして、ステップＳ２４０４に戻る。
【０１８９】
一方、ステップＳ２４０４において、特定対象ファイルＦｋでの比較が終了した場合（ステップＳ２４０４：Ｙｅｓ）、抽出すべき比較文字列がないため、検索装置８００は、特定対象ファイル番号ｋをインクリメントし（ステップＳ２４１０）、ステップＳ２４０２に戻る。
【０１９０】
また、ステップＳ２４０２において、ｋ＞Ｋである場合（ステップＳ２４０２：Ｙｅｓ）、検索装置８００は、第２計数部１２０５により、ステップＳ２４０９で算出された類似度が所定類似度以上である比較文字列の数を計数する（ステップＳ２４１１）。そして、検索装置８００は、計数結果がしきい値以上であるか否かを判断する（ステップＳ２４１２）。しきい値以上でない場合（ステップＳ２４１２：Ｎｏ）、検索装置８００は、階層番号がｊ＝１であるか否かを判断する（ステップＳ２４１３）。そして、ｊ＝１でない場合（ステップＳ２４１３：Ｎｏ）、検索装置８００は、階層番号ｊをデクリメントして（ステップＳ２４１４）、図２３のステップＳ２３０２に戻る。
【０１９１】
一方、ステップＳ２４１２においてしきい値以上と判定された場合（ステップＳ２４１２：Ｙｅｓ）、または、ステップＳ２４１３において階層番号ｊ＝１と判定された場合（ステップＳ２４１３：Ｙｅｓ）、第２検索処理を終了する。
【０１９２】
このように、上述した実施の形態では、中間階層の分類コードで検索文字列と不一致と判定された比較文字列に対して、比較文字列をあいまい検索の対象にしたり除外したりと、状況に応じて取捨選択することができる。したがって、類似性の高い適切な数の比較文字列についてあいまい検索をおこなうことができる。
【０１９３】
また、分類マップ群Ｍを用いて対象ファイル群Ｆの絞込みをおこなうことで、類似性の高い比較文字列を含む対象ファイルに狙い撃ちしてあいまい検索を実行することができる。したがって、無駄なあいまい検索を未然に防止することができ、あいまい検索速度の向上を図ることができる。
【０１９４】
また、検索文字列を構成する検索単語の個数の多さに応じて、第１検索処理と第２検索処理のいずれか一方を選択することができる。すなわち、検索単語の個数が少ないと第１検索処理が選択され、検索文字列の類語ベクトルが大きくなるものの、類似度計算は一度で完了するため、あいまい検索の高速化を図ることができる。
【０１９５】
一方、検索単語の個数が多いと第２検索処理が選択され、下位階層から段階的に検索対象範囲を拡大していくことができるため、最初のうちは類語ベクトルの大きさが小さく済み、検索効率の向上を図ることができる。
【０１９６】
以上説明したように、検索プログラム、検索装置、および検索方法によれば、あいまい検索の対象範囲を自動的に取捨選択することにより、あいまい検索精度の向上を図ることができるという効果を奏する。
【０１９７】
なお、本実施の形態で説明した検索方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検索プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検索プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１９８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１９９】
（付記１）単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定工程と、
前記特定工程によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出工程と、
前記抽出工程によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定工程と、
前記判定工程による前記特定階層での一致数を計数する計数工程と、
前記計数工程によって計数された一致数に基づいて、前記判定工程によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断工程と、
前記検索単語の階層ごとの分類コードと前記判断工程によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする検索プログラム。
【０２００】
（付記２）前記特定階層は前記階層群の中の中間階層であることを特徴とする付記１に記載の検索プログラム。
【０２０１】
（付記３）前記抽出工程は、
さらに、前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記中間階層よりも上位となる上位階層の分類コードを抽出し、
前記判定工程は、
前記抽出工程によって抽出された前記検索単語の前記上位階層の分類コードと前記比較単語の前記上位階層の分類コードとが一致するか否かを、前記比較文字列ごとに判定し、一致すると判定された比較文字列ごとに、前記検索単語の前記中間階層の分類コードと前記比較単語の前記中間階層の分類コードとが一致するか否かを判定することを特徴とする付記２に記載の検索プログラム。
【０２０２】
（付記４）前記検索単語の数が所定単語数以上であるか否かを判別する判別工程を前記コンピュータに実行させ、
前記特定工程は、
前記判別工程によって前記検索単語の数が所定単語数以上でないと判別された場合、前記類語辞書データの中から、前記検索文字列内の検索単語の階層ごとの分類コードと、前記比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードとを、比較文字列ごとに特定することを特徴とする付記１〜３のいずれか一つに記載の検索プログラム。
【０２０３】
（付記５）前記類語辞書データ内の各分類コードに対応する単語の各対象ファイル内での存否を示すビット列の集合を階層別にまとめた分類マップ群のうち最上位階層の分類マップを参照して、前記検索単語の前記最上位階層の分類コードが存在する特定の対象ファイルを検出する検出工程を前記コンピュータに実行させ、
前記特定工程は、
前記類語辞書データの中から、前記検索文字列内の検索単語の階層ごとの分類コードと、前記検出工程によって検出された特定の対象ファイル内に存在する前記比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードとを、比較文字列ごとに特定することを特徴とする付記１〜３のいずれか一つに記載の検索プログラム。
【０２０４】
（付記６）単語間の類義関係を階層的に分類してコード化した類語辞書データを構成する階層群の中から指定された指定階層を対象階層に設定する第１の設定工程と、
前記類語辞書データの中から、検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定する特定工程と、
前記検索単語の前記指定階層から前記対象階層までの分類コードと前記比較単語の前記指定階層から前記対象階層までの分類コードに基づいて、前記検索文字列と前記比較文字列との類似度を比較文字列ごとに算出する算出工程と、
前記算出工程によって類似度が算出された比較文字列群のうち所定類似度以上となる前記比較文字列の数を計数する計数工程と、
前記計数工程によって計数された計数結果が所定数以下である場合、前記対象階層をより上位の階層に変更する第２の設定工程と、
前記計数工程によって計数された計数結果が前記所定数よりも多いこととなった比較文字列群のうち少なくとも前記所定類似度以上の比較文字列を出力する出力工程と、
をコンピュータに実行させることを特徴とする検索プログラム。
【０２０５】
（付記７）前記検索単語の文字数が所定文字数以上であるか否かを判別する判別工程を前記コンピュータに実行させ、
前記第１の設定工程は、
前記判別工程によって前記検索単語が所定文字数以上であると判別された場合、前記指定階層を前記対象階層に設定することを特徴とする付記６に記載の検索プログラム。
【０２０６】
（付記８）前記類語辞書データ内の各分類コードに対応する単語の各対象ファイル内での存否を示すビット列の集合を階層別にまとめた分類マップ群を参照して、前記検索単語の前記対象階層の分類コードが存在する特定の対象ファイルを検出する検出工程を前記コンピュータに実行させ、
前記特定工程は、
前記類語辞書データの中から、前記検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、前記検出工程によって検出された特定の対象ファイル内に存在する比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定することを特徴とする付記６または７に記載の検索プログラム。
【０２０７】
（付記９）単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定手段と、
前記特定手段によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出手段と、
前記抽出手段によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定手段と、
前記判定手段による前記特定階層での一致数を計数する計数手段と、
前記計数手段によって計数された一致数に基づいて、前記判定手段によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断手段と、
前記検索単語の階層ごとの分類コードと前記判断手段によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出手段と、
前記算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする検索装置。
【０２０８】
（付記１０）単語間の類義関係を階層的に分類してコード化した類語辞書データを構成する階層群の中から指定された指定階層を対象階層に設定する第１の設定手段と、
前記類語辞書データの中から、検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定する特定手段と、
前記検索単語の前記指定階層から前記対象階層までの分類コードと前記比較単語の前記指定階層から前記対象階層までの分類コードに基づいて、前記検索文字列と前記比較文字列との類似度を比較文字列ごとに算出する算出手段と、
前記算出手段によって類似度が算出された比較文字列群のうち所定類似度以上となる前記比較文字列の数を計数する計数手段と、
前記計数手段によって計数された計数結果が所定数以下である場合、前記対象階層をより上位の階層に変更する第２の設定手段と、
前記計数手段によって計数された計数結果が前記所定数よりも多いこととなった比較文字列群のうち少なくとも前記所定類似度以上の比較文字列を出力する出力手段と、
を備えることを特徴とする検索装置。
【０２０９】
（付記１１）コンピュータが、
単語間の類義関係を階層的に分類してコード化した類語辞書データの中から、検索文字列内の検索単語の階層ごとの分類コードと、比較文字列群の各々の比較文字列内の比較単語の階層ごとの分類コードと、を特定する特定工程と、
前記特定工程によって特定された前記検索単語の階層ごとの分類コードおよび前記各比較単語の階層ごとの分類コードの中から、前記類語辞書データを構成する階層群のうち特定階層の分類コードを抽出する抽出工程と、
前記抽出工程によって抽出された前記検索単語の前記特定階層の分類コードと前記比較単語の前記特定階層の分類コードとが一致するか否かを、比較文字列ごとに判定する判定工程と、
前記判定工程による前記特定階層での一致数を計数する計数工程と、
前記計数工程によって計数された一致数に基づいて、前記判定工程によって前記比較単語の前記特定階層の分類コードが不一致と判定された比較文字列を除外するか否かを判断する判断工程と、
前記検索単語の階層ごとの分類コードと前記判断工程によって除外しないと判断された比較文字列内の前記比較単語の階層ごとの分類コードとに基づいて、前記検索文字列と前記除外しないと判断された比較文字列との類似度を算出する算出工程と、
前記算出工程によって算出された算出結果を出力する出力工程と、
を実行することを特徴とする検索方法。
【０２１０】
（付記１２）コンピュータが、
単語間の類義関係を階層的に分類してコード化した類語辞書データを構成する階層群の中から指定された指定階層を対象階層に設定する第１の設定工程と、
前記類語辞書データの中から、検索文字列内の検索単語の前記指定階層から前記対象階層までの分類コードと、比較文字列群の各々の比較文字列内の比較単語の前記指定階層から前記対象階層までの分類コードとを、比較文字列ごとに特定する特定工程と、
前記検索単語の前記指定階層から前記対象階層までの分類コードと前記比較単語の前記指定階層から前記対象階層までの分類コードに基づいて、前記検索文字列と前記比較文字列との類似度を比較文字列ごとに算出する算出工程と、
前記算出工程によって類似度が算出された比較文字列群のうち所定類似度以上となる前記比較文字列の数を計数する計数工程と、
前記計数工程によって計数された計数結果が所定数以下である場合、前記対象階層をより上位の階層に変更する第２の設定工程と、
前記計数工程によって計数された計数結果が前記所定数よりも多いこととなった比較文字列群のうち少なくとも前記所定類似度以上の比較文字列を出力する出力工程と、
を実行することを特徴とする検索方法。
【符号の説明】
【０２１１】
１００  類語辞書データ
２００  大分類マップ
３００  中分類マップ
４００  小分類マップ
８００  検索装置
８０１  入力部
８０２  解析部
８０３  判別部
８０４  第１検索処理部
８０５  第２検索処理部
８０６  出力部
９０１  第１検出部
９０２  第１特定部
９０３  抽出部
９０４  判定部
９０５  第１計数部
９０６  判断部
９０７  第１算出部
１２０１  第２検出部
１２０２  設定部
１２０３  第２特定部
１２０４  第２算出部
１２０５  第２計数部
【国際調査報告】
2012108006.tif 000027
2012108006.tif 000028
2012108006.tif 000029
2012108006.tif 000030
2012108006.tif 000031
2012108006.tif 000032
2012108006.tif 000033