(57)【要約】  （Ａ）対象ファイル群（Ｆ）からの集計、（Ｂ）出現頻度の降順でのソート、（Ｃ）目標出現率の順位までの抽出、（Ｄ）マップ生成、という４つのフェーズを実行する。（Ａ１）まず、情報生成装置は、対象ファイル群（Ｆ）を読み込んで、基礎単語の出現頻度を計数する。（Ｂ１）対象ファイル群Ｆにおいて基礎単語の集計が終了すると、情報生成装置は、基礎単語出現頻度テーブル（１０１）を、出現頻度の降順にソートする。すなわち、出現頻度の高い順に並べ替え、出現頻度が最も高い基礎単語から順位付けをおこなう。（Ｃ１）つぎに、情報生成装置は、（Ｂ１）ソート後の基礎単語出現頻度テーブル（１０１）を参照して、目標出現率Ｐｗまでの順位の基礎単語を抽出する。（Ｄ１）最後に、情報生成装置は、特定基礎単語群について、特定基礎単語出現マップ（Ｍ１）を生成する。
2011148511.tif 000002
【特許請求の範囲】
【請求項１】
文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の指定単語を検出する検出工程と、
前記検出工程によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータに実行させることを特徴とする情報生成プログラム。
【請求項２】
前記検出工程は、
前記対象ファイル内の対象文字を先頭文字とする最長一致検索により前記特定の指定単語を検出することを特徴とする請求項１に記載の情報生成プログラム。
【請求項３】
文字列が記述された対象ファイル群の中から単一文字ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された単一文字の出現頻度に基づいて、前記単一文字に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の単一文字を検出する検出工程と、
前記検出工程によって検出された特定の単一文字ごとに、当該特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータに実行させることを特徴とする情報生成プログラム。
【請求項４】
前記集計工程は、
前記対象ファイル群の中から単一文字の出現頻度を集計し、
前記順位特定工程は、
前記集計工程によって集計された単一文字の出現頻度に基づいて、前記単一文字に関する目標出現率までの降順の順位を特定し、
前記検出工程は、
前記ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の単一文字を検出し、
前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字ごとに、当該特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする請求項１または２に記載の情報生成プログラム。
【請求項５】
前記順位特定工程によって特定された降順の順位よりも下位の順位となる単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する分割工程を前記コンピュータに実行させ、
前記生成工程は、
前記分割工程によって分割された上位ビットの分割文字コードごとに、当該分割文字コードの存否を前記対象ファイルごとに示すインデックス情報と、前記分割工程によって分割された下位ビットの分割文字コードごとに、当該分割文字コードの存否を前記対象ファイルごとに示すインデックス情報とを生成することを特徴とする請求項３または４に記載の情報生成プログラム。
【請求項６】
前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字が連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする請求項３または４に記載の情報生成プログラム。
【請求項７】
前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字と前記上位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする請求項５または６に記載の情報生成プログラム。
【請求項８】
前記生成工程は、
前記下位ビットの分割文字コードと前記順位特定工程によって特定された降順の順位までの特定の単一文字とが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする請求項５〜７のいずれか一つに記載の情報生成プログラム。
【請求項９】
前記生成工程は、
前記上位ビットの分割文字コードと前記下位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする請求項５〜８のいずれか一つに記載の情報生成プログラム。
【請求項１０】
検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項１１】
検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位以内の特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する各単一文字が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイル群の中から前記検索文字列を構成する各単一文字がすべて存在する対象ファイルを絞り込む絞込み工程と、
前記絞込み工程によって絞り込まれた対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項１２】
前記ファイル特定工程は、
前記特定の指定単語が存在する対象ファイルが存在しない場合、前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位以内の特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する各単一文字が存在する対象ファイルを特定することを特徴とする請求項１０に記載の情報検索プログラム。
【請求項１３】
前記検索文字列を構成する単一文字のうち前記特定の単一文字に該当しない単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する分割工程を前記コンピュータに実行させ、
前記ファイル特定工程は、
前記分割工程によって分割された上位ビットの分割文字コードの存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記上位ビットの分割文字コードが存在する対象ファイルを特定し、前記分割工程によって分割された下位ビットの分割文字コードの存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記下位ビットの分割文字コードが存在する対象ファイルを特定することを特徴とする請求項１２に記載の情報検索プログラム。
【請求項１４】
前記ファイル特定工程は、
前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの単一文字が連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する各連接文字列が存在する対象ファイルを特定し、
前記絞込み工程は、
前記ファイル特定工程によって特定された対象ファイル群の中から前記検索文字列を構成する前記各単一文字および前記各連接文字列がすべて存在する対象ファイルを絞り込むことを特徴とする請求項１２に記載の情報検索プログラム。
【請求項１５】
前記ファイル特定工程は、
前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字と前記上位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する、前記特定の単一文字と前記上位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定し、
前記下位ビットの分割文字コードと前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字とが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する、前記下位ビットの分割文字コードと前記特定の単一文字とが連続する連接文字列が存在する対象ファイルを特定し、
前記上位ビットの分割文字コードと前記下位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する、前記上位ビットの分割文字コードと前記下位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定し、
前記絞込み工程は、
前記ファイル特定工程によって特定された対象ファイル群の中から前記検索文字列を構成する前記各単一文字、前記各上位ビットの分割文字コード、前記各下位ビットの分割文字コード、および前記各連接文字列がすべて存在する対象ファイルを絞り込むことを特徴とする請求項１３に記載の情報検索プログラム。
【請求項１６】
文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計手段と、
前記集計手段によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定手段と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定手段によって特定された降順の順位までの特定の指定単語を検出する検出手段と、
前記検出手段によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成手段と、
を備えることを特徴とする情報生成装置。
【請求項１７】
検索文字列の入力を受け付ける入力手段と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定手段と、
前記ファイル特定手段によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索手段と、
前記検索手段によって検索された検索結果を出力する出力手段と、
を備えることを特徴とする情報検索装置。
【請求項１８】
文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の指定単語を検出する検出工程と、
前記検出工程によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータが実行することを特徴とする情報生成方法。
【請求項１９】
検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータが実行することを特徴とする情報検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字や基礎単語の存否を示すインデックス情報を生成し、インデックス情報を用いて検索をおこなう情報生成プログラム、情報検索プログラム、情報生成装置、情報検索装置、情報生成方法、および情報検索方法に関する。
【背景技術】
【０００２】
従来から、文字成分表といった全文検索インデックスを高速に生成するビットマップ型の全文検索技術がある（たとえば、下記特許文献１〜３を参照。）。従来のビットマップ型の全文検索技術では、形態素解析を行わないため、高速に生成でき、ビットマップを圧縮することができる。
一般的な国語辞典では、約２４万項目のレコードを持ち、約６０００〜８０００文字で記述されており、単一文字のビットマップも約６０００〜８０００である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１−１８１３２９号公報
【特許文献２】特開平３−１７４６５２号公報
【特許文献３】特開平５−１７４０６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、各項目（レコード）に含まれる、かな、カタカナや英字の出現頻度が高く、単一文字のビットマップでは、対象項目を絞り込む効率が低いという問題がある。【０００５】
また、２連接文字列のビットマップを追加すると、サイズが大きくなってメモリを逼迫する。ハッシュ処理によりサイズ縮小を行うと検索ノイズが発生する。このため、ビットマップの絞込みの効率が低下し、検索速度が遅くなる。【０００６】
一方、英字、かな、カタカナなどの単語で構成される文字列については、文字の接続による検索ノイズが発生する。たとえば、英単語のｂｅ動詞「ｉｓ」や不定冠詞「ａ」を含む例文「ｔｈａｔ  ｉｓ  ａ  ｐｅｎ」を検索することができない。特に、アルファベットａの出現頻度は非常に高いため、不定冠詞「ａ」で検索をかけてもほぼすべての例文や単語が候補として検索されてしまう。【０００７】
これに対し、「結婚」、「活動」といった辞書の見出し語となる基礎単語ごとにビットマップを生成することも考えられる。しかしながら、基礎単語ではない文字列で検索するとヒットしないという問題がある。たとえば、「婚活」という文字列で検索すると、「結婚」、「活動」、「結婚活動」という文字列を含むファイルが存在しても、「結婚」や「活動」で検索をしていないため、当該ファイルを特定することができない。このように、基礎単語「結婚」の末尾文字「婚」と基礎単語「活動」の先頭文字「活」との間でいわゆる泣き別れが発生することとなる。【０００８】
なお、「婚」で終わる基礎単語や「活」で始まる基礎単語を検索し、かつ、その相互のビットマップの組合せを網羅し、各ビットマップのリードとＡＮＤ演算で候補ファイルを特定することは可能であるが、キーワード内の検索などの一連の処理に時間を要するだけでなく、ビットマップのハッシュ処理から発生する検索ノイズのため、候補ファイルの絞込み性能が期待できない。【０００９】
本発明は、上述した従来技術による問題点を解消するため、基礎単語や文字の存否を示すインデックス情報の生成の高速化およびインデックス情報のサイズの最適化を図ることができる情報生成プログラム、情報生成装置、および情報生成方法を提供することを目的とする。また、このようなインデックス情報を用いることで、検索ノイズの低減化を図ることができる情報検索プログラム、情報検索装置、および情報検索方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明にかかる情報生成プログラム、情報生成装置、および情報生成方法は、文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計し、集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定し、前記対象ファイル群の中から選ばれた対象ファイルの中から、特定された降順の順位までの特定の指定単語を検出し、検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成することを要件とする。【００１１】
また、本発明にかかる情報検索プログラム、情報検索装置、および情報検索方法は、検索文字列の入力を受け付け、文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定し、特定された対象ファイルの中から前記検索文字列に関する情報を検索し、検索された検索結果を出力することを要件とする。
【発明の効果】
【００１２】
本情報生成プログラム、情報生成装置、および情報生成方法によれば、基礎単語や文字の存否を示すインデックス情報の生成の高速化およびインデックス情報のサイズの最適化を図ることができるという効果を奏する。また、本情報検索プログラム、情報検索装置、および情報検索方法によれば、検索ノイズの低減化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】情報生成装置における情報生成の一例（その１）を示す説明図である。
【図２】非特定単一文字の分割例を示す説明図である。
【図３】情報生成装置における情報生成の一例（その２）を示す説明図である。
【図４】実施の形態にかかる情報生成装置のハードウェア構成例を示すブロック図である。
【図５】情報生成装置の機能的構成例を示すブロック図である。
【図６】マップ生成例（その１）を示す説明図である。
【図７】マップ生成例（その２）を示す説明図である。
【図８−１】マップ生成例（その３）を示す説明図（前半）である。
【図８−２】マップ生成例（その３）を示す説明図（後半）である。
【図９】マップ生成例（その４）を示す説明図である。
【図１０】情報生成装置５００による情報生成処理手順を示すフローチャートである。
【図１１】図１０に示した集計処理（ステップＳ１００１）の詳細な処理手順を示すフローチャートである。
【図１２】図１１に示した対象ファイルＦｉの集計処理（ステップＳ１１０３）の詳細な処理手順を示すフローチャートである。
【図１３】図１２に示した基礎単語集計処理（ステップＳ１２０２）の詳細な処理手順を示すフローチャートである。
【図１４】図１３に示した最長一致検索処理（ステップＳ１３０１）の詳細な処理手順を示すフローチャートである。
【図１５】図１０に示したマップ割当数決定処理（ステップＳ１００２）の詳細な処理手順を示すフローチャートである。
【図１６】図１０に示したマップ生成処理（ステップＳ１００３）の詳細な処理手順を示すフローチャートである。
【図１７】図１６に示した対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）の詳細な処理手順を示すフローチャートである。
【図１８】図１７で示した特定基礎単語出現マップ生成処理（ステップＳ１７０２）の詳細な処理手順を示すフローチャートである。
【図１９】図１７で示した特定単一文字出現マップ生成処理（ステップＳ１７０３）の詳細な処理手順を示すフローチャートである。
【図２０】図１９で示した分割文字コード出現マップ生成処理（ステップＳ１９０３）の詳細な処理手順を示すフローチャートである。
【図２１】図１７で示した連接文字列出現マップ生成処理（ステップＳ１７０４）の詳細な処理手順を示すフローチャートである。
【図２２】図２１で示した連接文字列特定処理（ステップＳ２１０１）の詳細な処理手順を示すフローチャートである。
【図２３】情報検索装置の機能的構成例を示すブロック図である。
【図２４】情報検索処理の具体例（その１）を示す説明図である。
【図２５】情報検索処理の具体例（その２）を示す説明図である。
【図２６】情報検索処理の具体例（その３）を示す説明図である。
【図２７】情報検索処理の具体例（その４）を示す説明図である。
【図２８】情報検索処理の具体例（その５）を示す説明図である。
【図２９】情報検索処理の具体例（その６）を示す説明図である。
【図３０】情報検索処理の具体例（その７）を示す説明図である。
【図３１】情報検索装置２３００による情報検索処理手順を示すフローチャートである。
【図３２−１】図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その１）である。
【図３２−２】図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その２）である。
【図３３】図３２−２に示した最長一致検索処理（ステップＳ３２０２）の詳細な処理手順を示すフローチャートである。
【図３４】図３２−２で示した連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）の詳細な処理手順を示すフローチャートである。
【図３５】マップ突き出しを示す説明図である。
【図３６】対象ファイルの追加により複数個にセグメント化された出現マップ群を用いた場合の情報検索処理手順を示すフローチャートである。
【図３７】図３６に示した情報検索処理（ステップＳ３６０２）における、ファイル特定処理（ステップＳ３１０４）の一部を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明にかかる情報生成プログラム、情報検索プログラム、情報生成装置、情報検索装置、情報生成方法、および情報検索方法の実施の形態を詳細に説明する。
【００１５】
［情報生成プログラム／装置／方法］
まず、情報生成プログラム、情報生成装置、および情報生成方法について説明する。
【００１６】
＜情報生成の一例（その１）＞
図１は、情報生成装置における情報生成の一例（その１）を示す説明図である。図１において、対象ファイル群Ｆは、対象ファイルの集合である。各対象ファイルは、文字列が記述された電子データである。対象ファイルは、たとえば、辞書や辞典、電子書籍、Ｗｅｂページなどの電子データであり、テキスト、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で記述されている。
【００１７】
情報生成装置は、（Ａ）対象ファイル群Ｆからの集計、（Ｂ）出現頻度の降順でのソート、（Ｃ）目標出現率の順位までの抽出、（Ｄ）マップ生成、という４つのフェーズを実行する。以下、基礎単語と単一文字に分けて説明する。
【００１８】
（Ａ１）まず、情報生成装置は、対象ファイル群Ｆを読み込んで、基礎単語の出現頻度を計数する。ここで、基礎単語とは、単語群のうちあらかじめ指定された単語を意味する。たとえば、辞書の場合、見出し語が基礎単語に該当する。情報生成装置は、基礎単語を集めた基礎単語構造体を参照して、基礎単語構造体内の基礎単語に一致する文字列が対象ファイルに存在する場合に、当該基礎単語の出現頻度（初期値は０）を１加算する。基礎単語構造体とは、基礎単語が記述されたデータ構造体である。
【００１９】
（Ｂ１）対象ファイル群Ｆにおいて基礎単語の集計が終了すると、情報生成装置は、基礎単語出現頻度テーブル１０１を、出現頻度の降順にソートする。すなわち、出現頻度の高い順に並べ替え、出現頻度が最も高い基礎単語から順位付けをおこなう。
【００２０】
（Ｃ１）つぎに、情報生成装置は、（Ｂ１）ソート後の基礎単語出現頻度テーブル１０１を参照して、目標出現率Ｐｗまでの順位の基礎単語を抽出する。具体的には、情報生成装置は、全基礎単語の出現頻度の総和（総出現頻度）を分母とし、順位が１位の基礎単語から降順に出現頻度を累計して分子とし、各順位までの出現率を算出する。
【００２１】
たとえば、総出現頻度が５００００、１位からｘ位までの基礎単語群の累計出現頻度が４５０００とすると、ｘ位までの出現頻度は、（４５０００／５００００）×１００＝９０［％］となる。ここで、目標出現率Ｐｗが９０［％］である場合は、上位ｘ位までの基礎単語を抽出することとなる。なお、（Ｃ１）で抽出された基礎単語を、元の基礎単語群と区別するために、「特定基礎単語（群）」と称す。
【００２２】
（Ｄ１）最後に、情報生成装置は、特定基礎単語群について、特定基礎単語出現マップＭ１を生成する。特定基礎単語出現マップＭ１とは、特定基礎単語ごとに、特定基礎単語の存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。各対象ファイルにおいて、１回でも出現した場合は該当する対象ファイルのビットをＯＮにし、１回も出現しなかった場合は該当する対象ファイルのビットをＯＦＦのままにしておく。
【００２３】
なお、本明細書では、「ビットをＯＮ」とした場合は、そのビットの値を“１”にし、「ビットをＯＦＦ」とした場合は、そのビットの値を“０”として説明する。なお、「ビットをＯＮ」とした場合は、そのビットの値を“０”にし、「ビットをＯＦＦ」とした場合は、そのビットの値を“１”にしてもよい。つぎに、単一文字について説明する。
【００２４】
（Ａ２）まず、情報生成装置は、対象ファイル群Ｆを読み込んで、単一文字の出現頻度を計数する。ここで、単一文字とは、所定ビット長の文字コードで表現された文字である。たとえば、ＵＴＦ（ＵＣＳ／Ｕｎｉｃｏｄｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  Ｆｏｒｍａｔ）１６ビット文字コードの文字などがある。情報生成装置は、単一文字を集めた単一文字構造体を参照して、単一文字構造体内の単一文字に一致する単一文字が対象ファイルに存在する場合に、当該単一文字の出現頻度（初期値は０）を１加算する。単一文字構造体とは、単一文字が記述されたデータ構造体である。
【００２５】
（Ｂ２）対象ファイル群Ｆにおいて単一文字の集計が終了すると、情報生成装置は、単一文字出現頻度テーブル１０２を、出現頻度の降順にソートする。すなわち、出現頻度の高い順に並べ替え、出現頻度が最も高い単一文字から順位付けをおこなう。
【００２６】
（Ｃ２１）つぎに、情報生成装置は、（Ｂ２）ソート後の単一文字出現頻度テーブル１０２を参照して、目標出現率Ｐｃまでの順位の単一文字を抽出する。具体的には、情報生成装置は、全単一文字の出現頻度の総和（総出現頻度）を分母とし、順位が１位の単一文字から降順に出現頻度を累計して分子とし、各順位までの出現率を算出する。
【００２７】
たとえば、総出現頻度が５００００、１位からｙ位までの単一文字群の累計出現頻度が４００００とすると、ｙ位までの出現頻度は、（５００００／４００００）×１００＝８０［％］となる。ここで、目標出現率Ｐｃが８０［％］である場合は、上位ｙ位までの単一文字を抽出することとなる。なお、（Ｃ２１）で抽出された単一文字を、元の単一文字群と区別するために、「特定単一文字（群）」と称す。
【００２８】
（Ｃ２２）また、単一文字群のうち特定単一文字群から外された単一文字（以下、「非特定単一文字（群）」）は、出現頻度が各特定単一文字よりも低いため、その文字コードを分割する。具体的には、非特定単一文字の文字コードを、上位ビットの文字コードと、下位ビットの文字コードに分割する。
【００２９】
たとえば、単一文字がＵＴＦ１６ビット文字コードで表現されている場合は、上位８ビットの文字コードと下位８ビットの文字コードに分割する。この場合、分割されたいずれの文字コードも、０ｘ００〜０ｘＦＦのコードで表現される。このように、上位ビットの文字コードを「上位分割文字コード（群）」と称し、下位ビットの文字コードを「下位分割文字コード（群）」と称す。
【００３０】
（Ｄ２）そして、情報生成装置は、（Ｃ２１）で抽出された特定単一文字群について、特定単一文字出現マップＭ２を生成する。特定単一文字出現マップＭ２とは、特定単一文字ごとに、特定単一文字の存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。各対象ファイルにおいて、１回でも出現した場合は該当する対象ファイルのビットをＯＮにし、１回も出現しなかった場合は該当する対象ファイルのビットをＯＦＦのままにしておく。
【００３１】
（Ｄ３）また、情報生成装置は、（Ｃ２２）で分割された上位分割文字コード群について、上位分割文字コード出現マップＭ３を生成する。上位分割文字コード出現マップＭ３とは、上位分割文字コードごとに、上位分割文字コードの存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。上位分割文字コードおよび下位分割文字コードは、ともに０ｘ００〜０ｘＦＦの範囲で表現されるが、上位分割文字コード出現マップＭ３では、下位分割文字コードとしてではなく、上位分割文字コードとして出現した場合に、該当する対象ファイルのビットがＯＮになる。
【００３２】
（Ｄ４）同様に、情報生成装置は、（Ｃ２２）で分割された下位分割文字コード群について、下位分割文字コード出現マップＭ４を生成する。下位分割文字コード出現マップＭ４とは、下位分割文字コードごとに、下位分割文字コードの存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。上位分割文字コードおよび下位分割文字コードは、ともに０ｘ００〜０ｘＦＦの範囲で表現されるが、下位分割文字コード出現マップＭ４では、上位分割文字コードとしてではなく、下位分割文字コードとして出現した場合に、該当する対象ファイルのビットがＯＮになる。
【００３３】
このように、目標出現率Ｐｗ，Ｐｃにより、特定基礎単語および特定単一文字を制限するため、目的や用途に応じて目標出現率Ｐｗ，Ｐｃを設定することで、必要最小限のマップサイズで各種出現マップを生成することができる。換言すれば、すべての基礎単語や単一文字についてマップ上でレコードを割り当てると、出現頻度の低い基礎単語や単一文字については、“０”のビット列が長くなり、マップ内で無駄が発生する。
【００３４】
このため、目的や用途に応じて目標出現率Ｐｗ，Ｐｃを設定し、その目標出現率Ｐｗ，Ｐｃに応じた分だけ特定基礎単語や特定単一文字として登録してマップ生成することで、マップサイズの縮小化を図ることができる。また、特定基礎単語から外された基礎単語であっても、基礎単語を構成する単一文字の各々が特定単一文字出現マップＭ２に設定されるため問題ない。また、非特定単一文字についても分割されて上位分割文字コード出現マップＭ３と下位分割文字コード出現マップＭ４に設定されるため問題ない。
【００３５】
また、文字の連続性についても、後述する連接文字列出現マップＭ５で設定可能であるため問題ない。このように、非特定基礎単語については、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、および連接文字列出現マップＭ５で設定可能となる。したがって、これらの出現マップのＡＮＤをとることで、非特定基礎単語の存否を判断することができる。
【００３６】
なお、（Ａ）〜（Ｄ）のフェーズは、基礎単語と単一文字とにわけて実行してもよいが、１文字ずつシフトすることで、基礎単語と単一文字とを特定して、同時並行で実行することでマップ生成の高速化を実現することができる。
【００３７】
＜非特定単一文字の分割例＞
図２は、非特定単一文字の分割例を示す説明図である。図２では、（Ａ）非特定単一文字「芝」と（Ｂ）非特定単一文字「兆」を例に挙げて説明する。「芝」の文字コードは「９Ｄ８２」であるため、上位ビットの「０ｘ９Ｄ」と下位ビットの「０ｘ８２」に分割される。同様に、「兆」の文字コードは「５１４６」であるため、上位ビットの「０ｘ５１」と下位ビットの「０ｘ４６」に分割される。
【００３８】
＜情報生成の一例（その２）＞
図３は、情報生成装置における情報生成の一例（その２）を示す説明図である。（Ｄ５）図３に示したように、情報生成装置は、図１の（Ｄ）フェーズにおいて、連接文字列出現マップＭ５も生成する。連接文字列とは、２以上の文字が連続する文字列である。たとえば、「結婚」は、特定単一文字「結」と特定単一文字「婚」の２連接文字列である。また、単一文字「芝」は非特定単一文字であるため、上位分割文字コード“０ｘ９Ｄ”と下位分割文字コード“０ｘ８２”に分割される。このように、上位分割文字コードと下位分割文字コードが連続する場合も、２連接文字列である。
【００３９】
また、文字列「芝居」については、上位分割文字コード“０ｘ９Ｄ”と下位分割文字コード“０ｘ８２”と特定単一文字「居」との３連接文字列である。「芝」と「居」の文字境界に着目すると、下位分割文字コード“０ｘ８２”と特定単一文字「居」との２連接文字列となる。同様に、文字列「人工芝」については、特定単一文字「人」，「工」と上位分割文字コード“０ｘ９Ｄ”と下位分割文字コード“０ｘ８２”との４連接文字列である。「工」と「芝」の文字境界に着目すると、特定単一文字「工」と上位分割文字コード“０ｘ９Ｄ”との２連接文字列となる。なお、本明細書では、説明の簡略化のため、２連接文字列を用いて説明することとする。
【００４０】
＜情報生成装置のハードウェア構成＞
図４は、実施の形態にかかる情報生成装置のハードウェア構成例を示すブロック図である。図４において、情報生成装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、磁気ディスクドライブ４０４と、磁気ディスク４０５と、光ディスクドライブ４０６と、光ディスク４０７と、ディスプレイ４０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０９と、キーボード４１０と、マウス４１１と、スキャナ４１２と、プリンタ４１３と、を備えている。また、各構成部はバス４００によってそれぞれ接続されている。
【００４１】
ここで、ＣＰＵ４０１は、情報生成装置の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。磁気ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがって磁気ディスク４０５に対するデータのリード／ライトを制御する。磁気ディスク４０５は、磁気ディスクドライブ４０４の制御で書き込まれたデータを記憶する。
【００４２】
光ディスクドライブ４０６は、ＣＰＵ４０１の制御にしたがって光ディスク４０７に対するデータのリード／ライトを制御する。光ディスク４０７は、光ディスクドライブ４０６の制御で書き込まれたデータを記憶したり、光ディスク４０７に記憶されたデータをコンピュータに読み取らせたりする。
【００４３】
ディスプレイ４０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ４０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４４】
インターフェース（以下、「Ｉ／Ｆ」と略する。）４０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１４に接続され、このネットワーク４１４を介して他の装置に接続される。そして、Ｉ／Ｆ４０９は、ネットワーク４１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４５】
キーボード４１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス４１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４６】
スキャナ４１２は、画像を光学的に読み取り、情報生成装置内に画像データを取り込む。なお、スキャナ４１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ４１３は、画像データや文書データを印刷する。プリンタ４１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４７】
＜情報生成装置の機能的構成＞
図５は、情報生成装置の機能的構成例を示すブロック図である。情報生成装置５００は、設定部５０１と、集計部５０２と、順位特定部５０３と、検出部５０４と、分割部５０５と、生成部５０６とを備えている。設定部５０１〜生成部５０６は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９により、その機能を実現する。
【００４８】
設定部５０１は、目標出現率Ｐｗ，Ｐｃを設定する機能を有する。具体的には、たとえば、キーボード４１０やマウス４１１の操作によって入力された目標出現率Ｐｗ，Ｐｃを記憶装置に保存する。
【００４９】
集計部５０２は、文字列が記述された対象ファイル群Ｆの中から指定単語ごとの出現頻度を集計する。具体的には、たとえば、集計部５０２は、図１に示したように、基礎単語構造体を参照して、注目する単一文字を先頭文字とする基礎単語を、注目する単一文字からの最長一致検索により検索する。そして、最長一致検索された基礎単語のレコードを基礎単語出現頻度テーブル１０１に追加登録する。すでに追加登録済である場合は、追加登録する必要はない。そして、最長一致検索された基礎単語のレコードにおいて出現頻度を１加算する。
【００５０】
また、集計部５０２は、文字列が記述された対象ファイル群Ｆの中から単一文字ごとの出現頻度を集計する。具体的には、たとえば、集計部５０２は、図１に示したように、単一文字構造体を参照して、注目する単一文字のレコードを基礎単語出現頻度テーブル１０１に追加登録する。すでに追加登録済である場合は、追加登録する必要はない。そして、注目する単一文字のレコードにおいて出現頻度を１加算する。
【００５１】
順位特定部５０３は、集計部５０２によって集計された指定単語ごとの出現頻度に基づいて、指定単語に関する目標出現率までの降順の順位を特定する。具体的には、たとえば、順位特定部５０３は、設定部５０１によって設定された基礎単語に関する目標出現率Ｐｗまでの降順の順位を特定する。すなわち、図１で説明したように、基礎単語出現頻度テーブル１０１を出現頻度の降順にソートしておく。
【００５２】
そして、注目する順位を第ｘ位とし、ｘをｘ＝１からインクリメントしながら、第１位から第ｘ位までの基礎単語群の累積出現頻度を全基礎単語の総出現頻度で除算することで、第ｘ位までの出現率を算出する。算出された出現率が目標出現率Ｐｗ以内であれば、ｘをインクリメントして、再度第ｘ位までの出現率を算出する。
【００５３】
そして、目標出現率Ｐｗを超えた場合、ｘを１つデクリメントすることで、目標出現率Ｐｗまでの順位（デクリメント後のｘの値）を特定することとなる。これにより、出現頻度の降順で第１位の基礎単語から目標出現率Ｐｗとなる順位の基礎単語までの基礎単語群が、特定基礎単語群となる。
【００５４】
また、順位特定部５０３は、集計部５０２によって集計された単一文字ごとの出現頻度に基づいて、単一文字に関する目標出現率までの降順の順位を特定する。具体的には、たとえば、順位特定部５０３は、設定部５０１によって設定された単一文字に関する目標出現率Ｐｃまでの降順の順位を特定する。すなわち、図１で説明したように、単一文字出現頻度テーブル１０２を出現頻度の降順にソートしておく。
【００５５】
そして、注目する順位を第ｙ位とし、ｙをｙ＝１からインクリメントしながら、第１位から第ｙ位までの単一文字群の累積出現頻度を全単一文字の総出現頻度で除算することで、第ｙ位までの出現率を算出する。算出された出現率が目標出現率Ｐｃ以内であれば、ｙをインクリメントして、再度第ｙ位までの出現率を算出する。
【００５６】
そして、目標出現率Ｐｃを超えた場合、ｙを１つデクリメントすることで、目標出現率Ｐｃまでの順位（デクリメント後のｙの値）を特定することとなる。これにより、出現頻度の降順で第１位の単一文字から目標出現率Ｐｃとなる順位の単一文字までの単一文字群が、特定単一文字群となる。
【００５７】
検出部５０４は、対象ファイル群Ｆの中から選ばれた対象ファイルの中から順位特定部５０３によって特定された降順の順位までの特定の指定単語を検出する。具体的には、たとえば、対象ファイル内の注目単一文字を先頭から１文字ずつシフトしていく。このとき、順位特定部５０３によって特定された特定基礎単語群のうち、注目する単一文字を先頭文字とする特定基礎単語を、最長一致検索により検出する。
【００５８】
また、検出部５０４は、対象ファイル群Ｆの中から選ばれた対象ファイルの中から順位特定部５０３によって特定された降順の順位までの特定の単一文字を検出する。具体的には、たとえば、対象ファイル内の注目単一文字を先頭から１文字ずつシフトしていく。このとき、順位特定部５０３によって特定された特定単一文字に一致する注目単一文字を検出する。
【００５９】
分割部５０５は、順位特定部５０３によって特定された降順の順位よりも下位の順位となる単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する。具体的には、たとえば、図２に示したように、非特定単一文字について上位８ビットの上位分割文字コードと下位８ビットの下位分割文字コードに分割する。
【００６０】
生成部５０６は、検出部５０４によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を対象ファイルごとに示すインデックス情報を生成する。具体的には、たとえば、生成部５０６は、検出部５０４によって検出された特定基礎単語ごとに、特定基礎単語の存否を対象ファイルごとに示す特定基礎単語出現マップＭ１を生成する。
【００６１】
また、生成部５０６は、検出部５０４によって検出された特定の単一文字ごとに、当該特定の単一文字の存否を対象ファイルごとに示すインデックス情報を生成する。具体的には、たとえば、生成部５０６は、検出部５０４によって検出された特定単一文字ごとに、特定単一文字の存否を対象ファイルごとに示す特定単一文字出現マップＭ２を生成する。
【００６２】
また、生成部５０６は、分割部５０５によって分割された上位ビットの分割文字コードごとに、当該分割文字コードの存否を対象ファイルごとに示すインデックス情報（上位分割文字コード出現マップＭ３）を生成する。また、生成部５０６は、分割部５０５によって分割された下位ビットの分割文字コードごとに、当該分割文字コードの存否を対象ファイルごとに示すインデックス情報（下位分割文字コード出現マップＭ４）を生成する。
【００６３】
また、生成部５０６は、連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報（連接文字列出現マップＭ５）を生成する。連接文字列としては、具体的には、たとえば、順位特定部５０３によって特定された降順の順位までの複数の特定単一文字による連接文字列や特定単一文字と分割文字コードが混在する連接文字列がある。たとえば、２連接文字列には、特定単一文字の２連接文字列がある。
【００６４】
また、２連接文字列には、特定単一文字、上位分割文字コードの順で連続する連接文字列がある。また、２連接文字列には、下位分割文字コード、特定単一文字の順で連続する連接文字列がある。また、２連接文字列には、上位分割文字コード、下位分割文字コードの順で連続する連接文字列（すなわち、分割された非特定文字）がある。また、２連接文字列には、下位分割文字コード、上位分割文字コードの順で連続する連接文字列（すなわち、分割された２連接非特定文字の境界）がある。連接文字列出現マップＭ５では、このような連接文字列が出現した対象ファイルに対してビットをＯＮにすることとなる。
【００６５】
＜マップ生成の具体例＞
つぎに、マップ生成の具体例について説明する。なお、本例では、連接文字列の連接数を２とする。また、マップ生成では、単一文字、２連接文字列、基礎単語について、まだ１回も出現していない場合は、そのマップ（ファイル番号１〜ｎまでのｎ個のビット列（値は“０”））を生成し、今回対象となっている対象ファイルＦｉのビットをＯＮにすることとなる。一方、すでに対象ファイルＦ１〜Ｆ（ｉ−１）までに生成済みの場合は、対象ファイルＦｉのビットをＯＮにすることとなる。
【００６６】
図６は、マップ生成例（その１）を示す説明図である。図６では、対象ファイルＦｉ内に『私の結婚活動の記録』という文字列が記述されているものとする。マップ生成では、先頭文字を対象文字として、１文字ずつ末尾方向へシフトしていく。図中、矢印で指している文字が対象文字である。
【００６７】
（Ａ）まず、先頭文字「私」が対象文字である。対象文字「私」は特定単一文字であるため、特定単一文字「私」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「私」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。さらに、対象文字「私」を先頭文字とする「私の結婚活動の記録」の中から対象文字「私」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００６８】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「の」にする。まず、対象文字「の」は特定単一文字であるため、特定単一文字「の」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「の」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「の」にシフトされた場合、「私の」という２連接文字列が得られるため、２連接文字列「私の」の２連接文字列出現マップＭ５を指定する。
【００６９】
そして、２連接文字列「私の」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「の」を先頭文字とする「の結婚活動の記録」の中から対象文字「の」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００７０】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「結」にする。まず、対象文字「結」は特定単一文字であるため、特定単一文字「結」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「結」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「結」にシフトされた場合、「の結」という２連接文字列が得られるため、２連接文字列「の結」の２連接文字列出現マップＭ５を指定する。
【００７１】
そして、２連接文字列「の結」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「結」を先頭文字とする「結婚活動の記録」の中から対象文字「結」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「結婚」が最長一致するため、特定基礎単語「結婚」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「結婚」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【００７２】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「婚」にする。まず、対象文字「婚」は特定単一文字であるため、特定単一文字「婚」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「婚」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「婚」にシフトされた場合、「結婚」という２連接文字列が得られるため、２連接文字列「結婚」の２連接文字列出現マップＭ５を指定する。
【００７３】
そして、２連接文字列「結婚」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「婚」を先頭文字とする「婚活動の記録」の中から対象文字「婚」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００７４】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を「活」にする。まず、対象文字「活」は特定単一文字であるため、単一文字「活」の単一文字出現マップを指定する。そして、特定単一文字「活」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「活」にシフトされた場合、「婚活」という２連接文字列が得られるため、２連接文字列「婚活」の２連接文字列出現マップＭ５を指定する。
【００７５】
そして、２連接文字列「結活」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「活」を先頭文字とする「活動の記録」の中から対象文字「活」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「活動」が最長一致するため、特定基礎単語「活動」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「活動」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【００７６】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「動」にする。まず、対象文字「動」は特定単一文字であるため、特定単一文字「動」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「動」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「動」にシフトされた場合、「活動」という２連接文字列が得られるため、２連接文字列「活動」の２連接文字列出現マップＭ５を指定する。
【００７７】
そして、２連接文字列「活動」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「動」を先頭文字とする「動の記録」の中から対象文字「動」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００７８】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を「の」にする。まず、対象文字「の」は特定単一文字であるため、特定単一文字「の」の特定単一文字出現マップＭ２を指定する。そして、対象文字「の」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｂ）でＯＮになっているため、何もしないこととなる。また、対象文字が「の」にシフトされた場合、「動の」という２連接文字列が得られるため、２連接文字列「動の」の２連接文字列出現マップＭ５を指定する。
【００７９】
そして、２連接文字列「動の」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「の」を先頭文字とする「の記録」の中から対象文字「の」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８０】
（Ｈ）つぎに、対象文字を１文字シフトして、対象文字を「記」にする。まず、対象文字「記」は特定単一文字であるため、単一文字「記」の単一文字出現マップを指定する。そして、特定単一文字「記」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「記」にシフトされた場合、「の記」という２連接文字列が得られるため、２連接文字列「の記」の２連接文字列出現マップＭ５を指定する。
【００８１】
そして、２連接文字列「の記」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「記」を先頭文字とする「記録」の中から対象文字「記」を先頭文字とする基礎単語の最長一致検索を実行する。この場合、「記録」が最長一致するため、特定基礎単語「記録」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「記録」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【００８２】
（Ｉ）つぎに、対象文字を１文字シフトして、対象文字を「録」にする。まず、対象文字「録」は特定単一文字であるため、特定単一文字「録」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「録」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「録」にシフトされた場合、「記録」という２連接文字列が得られるため、２連接文字列「記録」の２連接文字列出現マップＭ５を指定する。
【００８３】
そして、２連接文字列「記録」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「録」を先頭文字とする「録」の中から対象文字「録」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８４】
図７は、マップ生成例（その２）を示す説明図である。図７では分割文字コードを含む場合のマップ生成例を示す。単一文字を分割した場合は、分割文字コードを１文字として扱ってシフトすることとなる。図７では、対象ファイルＦｉ内に『竜馬は脱藩した』という文字列が記述されているものとする。
【００８５】
（Ａ）まず、先頭文字「竜」が対象文字である。対象文字「竜」は特定単一文字であるため、特定単一文字「竜」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「竜」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。さらに、対象文字「竜」を先頭文字とする「竜馬は脱藩した」の中から対象文字「竜」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８６】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「馬」にする。まず、対象文字「馬」は特定単一文字であるため、特定単一文字「馬」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「馬」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「馬」にシフトされた場合、「竜馬」という２連接文字列が得られるため、２連接文字列「竜馬」の２連接文字列出現マップＭ５を指定する。
【００８７】
そして、２連接文字列「竜馬」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「馬」を先頭文字とする「馬は脱藩した」の中から対象文字「馬」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８８】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「は」にする。まず、対象文字「は」は特定単一文字であるため、特定単一文字「は」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「は」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「は」にシフトされた場合、「馬は」という２連接文字列が得られるため、２連接文字列「馬は」の２連接文字列出現マップＭ５を指定する。
【００８９】
そして、２連接文字列「馬は」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「は」を先頭文字とする「は脱藩した」の中から対象文字「は」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９０】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「脱」にする。まず、対象文字「脱」は特定単一文字ではないため、対象文字「脱」の文字コード「０ｘ８１３１」を、上位分割文字コード「０ｘ８１」と下位分割文字コード「０ｘ３１」に分割する。そして、対象文字を上位分割文字コード「０ｘ８１」にし、上位分割文字コード「０ｘ８１」の上位分割文字コード出現マップＭ３を指定する。つぎに、上位分割文字コード「０ｘ８１」の上位分割文字コード出現マップＭ３について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が上位分割文字コード「０ｘ８１」にシフトされた場合、「は  ０ｘ８１」という２連接文字列が得られるため、２連接文字列「は  ０ｘ８１」の２連接文字列出現マップＭ５を指定する。
【００９１】
そして、２連接文字列「は  ０ｘ８１」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘ８１」を先頭文字とする「０ｘ８１  ０ｘ３１  藩した」の中から対象文字「０ｘ８１」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９２】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を下位分割文字コード「０ｘ３１」にする。まず、下位分割文字コード「０ｘ３１」の下位分割文字コード出現マップＭ４を指定する。つぎに、下位分割文字コード「０ｘ３１」の下位分割文字コード出現マップＭ４について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が下位分割文字コード「０ｘ３１」にシフトされた場合、「０ｘ８１  ０ｘ３１」という２連接文字列が得られるため、２連接文字列「０ｘ８１  ０ｘ３１」の２連接文字列出現マップＭ５を指定する。
【００９３】
そして、２連接文字列「０ｘ８１  ０ｘ３１」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘ３１」を先頭文字とする「０ｘ３１  藩した」の中から対象文字「０ｘ３１」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９４】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「藩」にする。まず、対象文字「藩」は特定単一文字ではないため、対象文字「藩」の文字コード「０ｘＥ９８５」を、上位分割文字コード「０ｘＥ９」と下位分割文字コード「０ｘ８５」に分割する。そして、対象文字を上位分割文字コード「０ｘＥ９」にし、上位分割文字コード「０ｘＥ９」の上位分割文字コード出現マップＭ３を指定する。
【００９５】
つぎに、上位分割文字コード「０ｘＥ９」の上位分割文字コード出現マップＭ３について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が上位分割文字コード「０ｘＥ９」にシフトされた場合、「０ｘ３１  ０ｘＥ９」という２連接文字列が得られるため、２連接文字列「０ｘ３１  ０ｘＥ９」の２連接文字列出現マップＭ５を指定する。
【００９６】
そして、２連接文字列「０ｘ３１  ０ｘＥ９」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘＥ９」を先頭文字とする「０ｘＥ９  ０ｘ８５  した」の中から対象文字「０ｘＥ９」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９７】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を下位分割文字コード「０ｘ８５」にする。まず、下位分割文字コード「０ｘ８５」の下位分割文字コード出現マップＭ４を指定する。つぎに、下位分割文字コード「０ｘ８５」の下位分割文字コード出現マップＭ４について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が下位分割文字コード「０ｘ８５」にシフトされた場合、「０ｘＥ９  ０ｘ８５」という２連接文字列が得られるため、２連接文字列「０ｘＥ９  ０ｘ８５」の２連接文字列出現マップＭ５を指定する。
【００９８】
そして、２連接文字列「０ｘＥ９  ０ｘ８５」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘ８５」を先頭文字とする「０ｘ８５  した」の中から対象文字「０ｘ８５」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９９】
（Ｈ）つぎに、対象文字を１文字シフトして、対象文字を「し」にする。まず、対象文字「し」は特定単一文字であるため、特定単一文字「し」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「し」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「し」にシフトされた場合、「０ｘ８５  し」という２連接文字列が得られるため、２連接文字列「０ｘ８５  し」の２連接文字列出現マップＭ５を指定する。
【０１００】
そして、２連接文字列「０ｘ８５  し」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「し」を先頭文字とする「した」の中から対象文字「し」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【０１０１】
（Ｉ）つぎに、対象文字を１文字シフトして、対象文字を「た」にする。まず、対象文字「た」は特定単一文字であるため、特定単一文字「た」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「た」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「た」にシフトされた場合、「した」という２連接文字列が得られるため、２連接文字列「した」の２連接文字列出現マップＭ５を指定する。
【０１０２】
そして、２連接文字列「した」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「た」を先頭文字とする「た」の中から対象文字「た」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【０１０３】
図８−１および図８−２は、マップ生成例（その３）を示す説明図である。図８−１および図８−２では、対象ファイルＦｉ内に英文文字列『ｔｈａｔ□ｉｓ□ａ□ｐｅｎ』が記述されているものとする。なお、「□」はブランクである。ブランクも１文字として扱う。
【０１０４】
（Ａ）まず、先頭文字「ｔ」が対象文字である。対象文字「ｔ」は特定単一文字であるため、特定単一文字「ｔ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｔ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。
【０１０５】
さらに、対象文字「ｔ」を先頭文字とする「ｔｈａｔ□ｉｓ□ａ□ｐｅｎ」の中から対象文字「ｔ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ｔｈａｔ」（代名詞）が最長一致するため、特定基礎単語「ｔｈａｔ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｔｈａｔ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１０６】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「ｈ」にする。まず、対象文字「ｈ」は特定単一文字であるため、特定単一文字「ｈ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｈ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｈ」にシフトされた場合、「ｔｈ」という２連接文字列が得られるため、２連接文字列「ｔｈ」の２連接文字列出現マップＭ５を指定する。
【０１０７】
そして、２連接文字列「ｔｈ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。なお、英単語では前方一致の検索が重視されるため、英単語の文字列の途中については、特定基礎単語の最長一致検索を行わない。
【０１０８】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「ａ」にする。まず、対象文字「ａ」は特定単一文字であるため、特定単一文字「ａ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ａ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ａ」にシフトされた場合、「ｈａ」という２連接文字列が得られるため、２連接文字列「ｈａ」の２連接文字列出現マップＭ５を指定する。
【０１０９】
そして、２連接文字列「ｈａ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１０】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「ｔ」にする。まず、対象文字「ｔ」は特定単一文字であるため、特定単一文字「ｔ」の特定単一文字出現マップＭ２を指定する。そして、対象文字「ｔ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ａ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「ｔ」にシフトされた場合、「ａｔ」という２連接文字列が得られるため、２連接文字列「ａｔ」の２連接文字列出現マップＭ５を指定する。
【０１１１】
そして、２連接文字列「ａｔ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１２】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を「□」にする。まず、対象文字「□」は特定単一文字であるため、特定単一文字「□」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「□」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「□」にシフトされた場合、「ｔ□」という２連接文字列が得られるため、２連接文字列「ｔ□」の２連接文字列出現マップＭ５を指定する。
【０１１３】
そして、２連接文字列「ｔ□」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１４】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「ｉ」にする。対象文字「ｉ」は特定単一文字であるため、特定単一文字「ｉ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｉ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｉ」にシフトされた場合、「□ｉ」という２連接文字列が得られるため、２連接文字列「□ｉ」の２連接文字列出現マップＭ５を指定する。
【０１１５】
そして、２連接文字列「□ｉ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「ｉ」を先頭文字とする「ｉｓ□ａ□ｐｅｎ」の中から対象文字「ｉ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ｉｓ」（ｂｅ動詞）が最長一致するため、特定基礎単語「ｉｓ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｉｓ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１６】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を「ｓ」にする。対象文字「ｓ」は特定単一文字であるため、特定単一文字「ｓ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｓ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｓ」にシフトされた場合、「ｉｓ」という２連接文字列が得られるため、２連接文字列「ｉｓ」の２連接文字列出現マップＭ５を指定する。
【０１１７】
そして、２連接文字列「ｉｓ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１８】
（Ｈ）つぎに、対象文字を１文字シフトして、対象文字を「□」にする。まず、対象文字「□」は特定単一文字であるため、特定単一文字「□」の特定単一文字出現マップＭ２を指定する。そして、対象文字「□」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｅ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「□」にシフトされた場合、「ｓ□」という２連接文字列が得られるため、２連接文字列「ｓ□」の２連接文字列出現マップＭ５を指定する。
【０１１９】
そして、２連接文字列「ｓ□」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２０】
（Ｉ）つぎに、対象文字を１文字シフトして、対象文字を「ａ」にする。まず、対象文字「ａ」は特定単一文字であるため、特定単一文字「ａ」の特定単一文字出現マップＭ２を指定する。そして、対象文字「ａ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｃ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「ａ」にシフトされた場合、「□ａ」という２連接文字列が得られるため、２連接文字列「□ａ」の２連接文字列出現マップＭ５を指定する。
【０１２１】
そして、２連接文字列「□ａ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「ａ」を先頭文字とする「ａ□ｐｅｎ」の中から対象文字「ａ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ａ」（不定冠詞）が最長一致するため、特定基礎単語「ａ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ａ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２２】
（Ｊ）つぎに、対象文字を１文字シフトして、対象文字を「□」にする。まず、対象文字「□」は特定単一文字であるため、特定単一文字「□」の特定単一文字出現マップＭ２を指定する。そして、対象文字「□」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｅ）でＯＮになっているため、何もしないこととなる。また、対象文字が「□」にシフトされた場合、「ａ□」という２連接文字列が得られるため、２連接文字列「ａ□」の２連接文字列出現マップＭ５を指定する。
【０１２３】
そして、２連接文字列「ａ□」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２４】
（Ｋ）つぎに、対象文字を１文字シフトして、対象文字を「ｐ」にする。まず、対象文字「ｐ」は特定単一文字であるため、特定単一文字「ｐ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｐ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｐ」にシフトされた場合、「□ｐ」という２連接文字列が得られるため、２連接文字列「□ｐ」の２連接文字列出現マップＭ５を指定する。
【０１２５】
そして、２連接文字列「□ｐ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「ｐ」を先頭文字とする「ｐｅｎ」の中から対象文字「ｐ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ｐｅｎ」（ペン）が最長一致するため、特定基礎単語「ｐｅｎ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｐｅｎ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２６】
（Ｌ）つぎに、対象文字を１文字シフトして、対象文字を「ｅ」にする。まず、対象文字「ｅ」は特定単一文字であるため、特定単一文字「ｅ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｅ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｅ」にシフトされた場合、「ｐｅ」という２連接文字列が得られるため、２連接文字列「ｐｅ」の２連接文字列出現マップＭ５を指定する。
【０１２７】
そして、２連接文字列「ｐｅ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２８】
（Ｍ）つぎに、対象文字を１文字シフトして、対象文字を「ｎ」にする。まず、対象文字「ｎ」は特定単一文字であるため、特定単一文字「ｎ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｎ」にシフトされた場合、「ｅｎ」という２連接文字列が得られるため、２連接文字列「ｅｎ」の２連接文字列出現マップＭ５を指定する。
【０１２９】
そして、２連接文字列「ｅｎ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３０】
図９は、マップ生成例（その４）を示す説明図である。図９では、対象ファイルＦｉ内に英単語『ｉｎｔｅｒｎａｌ』が記述されているものとする。
【０１３１】
（Ａ）まず、先頭文字「ｉ」が対象文字である。対象文字「ｉ」は特定単一文字であるため、特定単一文字「ｉ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｉ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。さらに、対象文字「ｉ」を先頭文字とする「ｉｎｔｅｒｎａｌ」の中から対象文字「ｉ」を先頭文字とする特定基礎単語の最長一致検索を実行する。
【０１３２】
この場合、「ｉｎｔｅｒｎａｌ」は特定基礎単語ではないため最長一致しないが、「ｉｎｔｅｒ」（内）が最長一致するため、特定基礎単語「ｉｎｔｅｒ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｉｎｔｅｒ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３３】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「ｎ」にする。まず、対象文字「ｎ」は特定単一文字であるため、特定単一文字「ｎ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｎ」にシフトされた場合、「ｉｎ」という２連接文字列が得られるため、２連接文字列「ｉｎ」の２連接文字列出現マップＭ５を指定する。
【０１３４】
そして、２連接文字列「ｉｎ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３５】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「ｔ」にする。まず、対象文字「ｔ」は特定単一文字であるため、特定単一文字「ｔ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｔ」にシフトされた場合、「ｎｔ」という２連接文字列が得られるため、２連接文字列「ｎｔ」の２連接文字列出現マップＭ５を指定する。
【０１３６】
そして、２連接文字列「ｎｔ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３７】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「ｅ」にする。まず、対象文字「ｅ」は特定単一文字であるため、特定単一文字「ｅ」の特定単一文字出現マップＭ２を指定する。また、対象文字が「ｅ」にシフトされた場合、「ｔｅ」という２連接文字列が得られるため、２連接文字列「ｔｅ」の２連接文字列出現マップＭ５を指定する。
【０１３８】
そして、２連接文字列「ｔｅ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３９】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を「ｒ」にする。まず、対象文字「ｒ」は特定単一文字であるため、特定単一文字「ｒ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｒ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｎ」にシフトされた場合、「ｅｒ」という２連接文字列が得られるため、２連接文字列「ｅｒ」の２連接文字列出現マップＭ５を指定する。
【０１４０】
そして、２連接文字列「ｅｒ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４１】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「ｎ」にする。まず、対象文字「ｎ」は特定単一文字であるため、特定単一文字「ｎ」の特定単一文字出現マップＭ２を指定する。そして、対象文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｂ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「ｎ」にシフトされた場合、「ｒｎ」という２連接文字列が得られるため、２連接文字列「ｒｎ」の２連接文字列出現マップＭ５を指定する。
【０１４２】
そして、２連接文字列「ｒｎ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４３】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を「ａ」にする。対象文字「ａ」は特定単一文字であるため、特定単一文字「ａ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ａ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ａ」にシフトされた場合、「ｎａ」という２連接文字列が得られるため、２連接文字列「ｎａ」の２連接文字列出現マップＭ５を指定する。
【０１４４】
そして、２連接文字列「ｎａ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４５】
（Ｈ）最後に、対象文字を１文字シフトして、対象文字を「ｌ」にする。対象文字「ｌ」は特定単一文字であるため、特定単一文字「ｌ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｌ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｌ」にシフトされた場合、「ａｌ」という２連接文字列が得られるため、２連接文字列「ａｌ」の２連接文字列出現マップＭ５を指定する。
【０１４６】
そして、２連接文字列「ａｌ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４７】
＜情報生成処理手順＞
図１０は、情報生成装置５００による情報生成処理手順を示すフローチャートである。情報生成装置５００は、集計処理（ステップＳ１００１）、マップ割当数決定処理（ステップＳ１００２）、マップ生成処理（ステップＳ１００３）を実行する。集計処理（ステップＳ１００１）、マップ割当数決定処理（ステップＳ１００２）、マップ生成処理（ステップＳ１００３）の詳細については後述する。
【０１４８】
図１１は、図１０に示した集計処理（ステップＳ１００１）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、ファイル番号ｉをｉ＝１に設定し（ステップＳ１１０１）、対象ファイルＦｉを読み込む（ステップＳ１１０２）。そして、情報生成装置５００は、対象ファイルＦｉの集計処理を実行する（ステップＳ１１０３）。このあと、情報生成装置５００は、ファイル番号ｉがｉ＞ｎ（ｎは対象ファイルＦ１〜Ｆｎの総数）であるか否かを判断する（ステップＳ１１０４）。
【０１４９】
ｉ＞ｎでない場合（ステップＳ１１０４：Ｎｏ）、情報生成装置５００は、ｉをインクリメントし（ステップＳ１１０５）、ステップＳ１１０２に戻る。一方、ｉ＞ｎである場合（ステップＳ１１０４：Ｙｅｓ）、情報生成装置５００は、マップ割当数決定処理（ステップＳ１００２）に移行して、集計処理（ステップＳ１００１）を終了する。この集計処理（ステップＳ１００１）によれば、対象ファイルＦｉごとに対象ファイルＦｉの集計処理（ステップＳ１１０３）を実行することができる。
【０１５０】
図１２は、図１１に示した対象ファイルＦｉの集計処理（ステップＳ１１０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字を対象ファイルＦｉの先頭文字とし（ステップＳ１２０１）、基礎単語集計処理を実行する（ステップＳ１２０２）。このあと、情報生成装置５００は、単一文字出現頻度テーブル１０２において対象文字の出現回数を１増加する（ステップＳ１２０３）。そして、情報生成装置５００は、対象文字が対象ファイルＦｉの末尾文字であるか否かを判断する（ステップＳ１２０４）。
【０１５１】
対象文字が対象ファイルＦｉの末尾文字でない場合（ステップＳ１２０４：Ｎｏ）、情報生成装置５００は、対象文字を末尾方向へ１文字シフトし（ステップＳ１２０５）、ステップＳ１２０２に戻る。一方、対象文字が対象ファイルＦｉの末尾文字である場合（ステップＳ１２０４：Ｙｅｓ）、情報生成装置５００は、ステップＳ１１０４に移行して、対象ファイルＦｉの集計処理（ステップＳ１１０３）を終了する。この対象ファイルＦｉの集計処理（ステップＳ１１０３）によれば、対象ファイル群Ｆに存在する基礎単語および単一文字の出現頻度を集計することができる。
【０１５２】
図１３は、図１２に示した基礎単語集計処理（ステップＳ１２０２）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、最長一致検索処理を実行し（ステップＳ１３０１）、最長一致した基礎単語があったか否かを判断する（ステップＳ１３０２）。最長一致した基礎単語があった場合（ステップＳ１３０２：Ｙｅｓ）、情報生成装置５００は、基礎単語出現頻度テーブル１０１において最長一致した基礎単語の出現回数を１増加し（ステップＳ１３０３）、ステップＳ１２０３に移行する。
【０１５３】
一方、最長一致した基礎単語がなかった場合（ステップＳ１３０２：Ｎｏ）、ステップＳ１２０３に移行する。これにより、基礎単語集計処理（ステップＳ１２０２）を終了する。この基礎単語集計処理（ステップＳ１２０２）によれば、最長一致検索処理（ステップＳ１３０１）により基礎単語を計数することができるため、文字列が長い基礎単語を優先的に計数することができる。
【０１５４】
図１４は、図１３に示した最長一致検索処理（ステップＳ１３０１）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、ｃ＝１とする（ステップＳ１４０１）。ｃは対象文字からの文字数（対象文字含む）である。ｃ＝１の場合は、対象文字だけである。つぎに、情報生成装置５００は、対象文字からｃ文字目までの対象文字列と前方一致する基礎単語を、基礎単語構造体を検索する（ステップＳ１４０２）。そして、情報生成装置５００は、検索により基礎単語があるか否かを判断する（ステップＳ１４０３）。２分探索により基礎単語がヒットしなかった場合（ステップＳ１４０３：Ｎｏ）、ステップＳ１４０６に移行する。
【０１５５】
一方、２分探索により基礎単語がヒットした場合（ステップＳ１４０３：Ｙｅｓ）、情報生成装置５００は、ヒットした基礎単語と対象文字列とが完全一致するか否かを判断する（ステップＳ１４０４）。そして、完全一致しない場合（ステップＳ１４０４：Ｎｏ）、ステップＳ１４０６に移行する。一方、完全一致する場合（ステップＳ１４０４：Ｙｅｓ）、情報生成装置５００は、最長一致候補として記憶装置に保持し（ステップＳ１４０５）、ステップＳ１４０６に移行する。
【０１５６】
ステップＳ１４０６では、情報生成装置５００は、対象文字列について２分探索が終了したか否かを判断する（ステップＳ１４０６）。具体的には、情報生成装置５００は、末尾の基礎単語まで２分探索したか否かを判断する。２分探索が終了していない場合（ステップＳ１４０６：Ｎｏ）、情報生成装置５００は、ステップＳ１４０２に移行して、２分探索が終了するまで継続する。
【０１５７】
一方、対象文字列について２分探索が終了した場合（ステップＳ１４０６：Ｙｅｓ）、情報生成装置５００は、ｃ文字目の文字が対象ファイルＦｉの末尾文字であるか否かを判断する（ステップＳ１４０７）。ｃ文字目の文字が対象ファイルＦｉの末尾文字である場合（ステップＳ１４０７：Ｙｅｓ）、ステップＳ１４１０に移行する。一方、ｃ文字目の文字が対象ファイルＦｉの末尾文字でない場合（ステップＳ１４０７：Ｎｏ）、情報生成装置５００は、ｃ＞ｃｍａｘであるか否かを判断する（ステップＳ１４０８）。ｃｍａｘは予め設定された値であり、これにより対象文字列の上限文字数が設定される。
【０１５８】
ｃ＞ｃｍａｘでない場合（ステップＳ１４０８：Ｎｏ）、情報生成装置５００は、ｃをインクリメントして（ステップＳ１４０９）、ステップＳ１４０２に戻る。一方、ｃ＞ｃｍａｘである場合（ステップＳ１４０８：Ｙｅｓ）、情報生成装置５００は、最長一致候補があるか否かを判断する（ステップＳ１４１０）。具体的には、情報生成装置５００は、ステップＳ１４０５において１つでも最長一致候補がメモリに保持されているか否かを判断する。
【０１５９】
最長一致候補がある場合（ステップＳ１４１０：Ｙｅｓ）、情報生成装置５００は、最長一致候補のうち最長文字列を、最長一致した基礎単語に決定する（ステップＳ１４１１）。そして、ステップＳ１３０２に移行する。一方、ステップＳ１４１０において、最長一致候補が１つもない場合（ステップＳ１４１０：Ｎｏ）、ステップＳ１３０２に移行する。これにより、最長一致検索処理（ステップＳ１３０１）を終了する。この最長一致検索処理（ステップＳ１３０１）によれば、基礎単語構造体にある基礎単語の中から、完全一致した文字列の中でかつ最長の文字列を基礎単語として検索することができる。
【０１６０】
図１５は、図１０に示したマップ割当数決定処理（ステップＳ１００２）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、集計処理（ステップＳ１００１）による基礎単語ごとの出現頻度を示す基礎単語出現頻度テーブル１０１と単一文字ごとの出現頻度を示す単一文字出現頻度テーブル１０２を出現頻度の高い順にソートする（ステップＳ１５０１）。そして、情報生成装置５００は、ソート後の基礎単語出現頻度テーブル１０１を参照して、基礎単語の出現順位ＲｗをＲｗ＝１とし（ステップＳ１５０２）、出現順位Ｒｗまでの累積出現回数Ａｒｗを計数する（ステップＳ１５０３）。そして、情報生成装置５００は、下記式（１）を満たすか否かを判断する（ステップＳ１５０４）。
【０１６１】
Ａｒｗ＞Ｐｗ×Ａｗ・・・（１）
Ａｗは集計された基礎単語の総出現回数である。
【０１６２】
上記（１）式を満たさない場合（ステップＳ１５０４：Ｎｏ）、情報生成装置５００は、出現順位Ｒｗをインクリメントして（ステップＳ１５０５）、ステップＳ１５０３に戻る。すなわち、上記式（１）を満たすまで出現順位Ｒｗを下げ続ける。
【０１６３】
そして、上記式（１）を満たした場合（ステップＳ１５０４：Ｙｅｓ）、情報生成装置５００は、基礎単語のマップ割当数ＮｗをＮｗ＝Ｒｗ−１とする（ステップＳ１５０６）。ここで、マップ割当数Ｎｗとは、特定基礎単語出現マップＭ１のレコード数（行数）を意味する。
【０１６４】
また、情報生成装置５００は、単一文字の出現順位ＲｃをＲｃ＝１とし（ステップＳ１５０７）、出現順位Ｒｃまでの累積出現回数Ａｒｃを計数する（ステップＳ１５０８）。そして、情報生成装置５００は、下記式（２）を満たすか否かを判断する（ステップＳ１５０９）。
【０１６５】
Ａｒｃ＞Ｐｃ×Ａｃ・・・（２）
Ａｃは集計された単一文字の総出現回数である。
【０１６６】
上記（２）式を満たさない場合（ステップＳ１５０９：Ｎｏ）、情報生成装置５００は、出現順位Ｒｃをインクリメントして（ステップＳ１５１０）、ステップＳ１５０８に戻る。すなわち、上記式（２）を満たすまで出現順位Ｒｃを下げ続ける。
【０１６７】
そして、上記式（２）を満たした場合（ステップＳ１５０９：Ｙｅｓ）、情報生成装置５００は、単一文字のマップ割当数ＮｃをＮｃ＝Ｒｃ−１とする（ステップＳ１５１１）。ここで、マップ割当数Ｎｃとは、特定単一文字出現マップＭ２のレコード数（行数）を意味する。この後、マップ生成処理（ステップＳ１００３）に移行して、マップ割当数決定処理（ステップＳ１００２）を終了する。
【０１６８】
このマップ割当数決定処理（ステップＳ１００２）によれば、目標出現率Ｐｗに応じた数の基礎単語分について特定基礎単語出現マップＭ１を生成することができる。したがって、すべての基礎単語についてマップ割当をおこなう必要はなく、目標出現率Ｐｗにしたがって決められるため、マップサイズの最適化を図ることができる。
【０１６９】
また、単一文字についても、目標出現率Ｐｃに応じた数の単一文字分について特定単一文字出現マップＭ２を生成することができる。したがって、すべての単一文字についてマップ割当をおこなう必要はなく、目標出現率Ｐｃにしたがって決められるため、マップサイズの最適化を図ることができる。
【０１７０】
図１６は、図１０に示したマップ生成処理（ステップＳ１００３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、ファイル番号ｉをｉ＝１に設定し（ステップＳ１６０１）、対象ファイルＦｉを読み込む（ステップＳ１６０２）。そして、情報生成装置５００は、対象ファイルＦｉのマップ生成処理を実行する（ステップＳ１６０３）。このあと、情報生成装置５００は、ファイル番号ｉがｉ＞ｎ（ｎは対象ファイルＦ１〜Ｆｎの総数）であるか否かを判断する（ステップＳ１６０４）。
【０１７１】
ｉ＞ｎでない場合（ステップＳ１６０４：Ｎｏ）、情報生成装置５００は、ｉをインクリメントし（ステップＳ１６０５）、ステップＳ１６０２に戻る。一方、ｉ＞ｎである場合（ステップＳ１６０４：Ｙｅｓ）、マップ生成処理（ステップＳ１００３）が終了する。このマップ生成処理（ステップＳ１００３）によれば、対象ファイルＦｉごとに対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）を実行することができる。
【０１７２】
図１７は、図１６に示した対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字を対象ファイルＦｉの先頭文字とし（ステップＳ１７０１）、特定基礎単語出現マップ生成処理（ステップＳ１７０２）、特定単一文字出現マップ生成処理（ステップＳ１７０３）、連接文字列出現マップ生成処理（ステップＳ１７０４）を実行する。このあと、情報生成装置５００は、対象文字が対象ファイルＦｉの末尾文字であるか否かを判断する（ステップＳ１７０５）。
【０１７３】
対象文字が対象ファイルＦｉの末尾文字でない場合（ステップＳ１７０５：Ｎｏ）、情報生成装置５００は、対象文字を末尾方向へ１文字シフトし（ステップＳ１７０６）、ステップＳ１７０２に戻る。一方、対象文字が対象ファイルＦｉの末尾文字である場合（ステップＳ１７０５：Ｙｅｓ）、ステップＳ１６０４に移行して、対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）を終了する。
【０１７４】
この対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）によれば、特定基礎単語出現マップＭ１、特定単一文字出現マップＭ２および連接文字列出現マップＭ５を、対象文字を１文字ずつシフトしながら、同時並行で生成することができる。
【０１７５】
図１８は、図１７で示した特定基礎単語出現マップ生成処理（ステップＳ１７０２）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字について最長一致検索処理を実行する（ステップＳ１８０１）。最長一致検索処理（ステップＳ１８０１）の詳細な処理手順は、図１４に示した最長一致検索処理（ステップＳ１３０１）と同一処理内容である。
【０１７６】
そして、情報生成装置５００は、最長一致した基礎単語、すなわち、特定基礎単語があるか否かを判断する（ステップＳ１８０２）。最長一致した基礎単語がない場合（ステップＳ１８０２：Ｎｏ）、特定単一文字出現マップ生成処理（ステップＳ１７０３）に移行する。一方、最長一致した基礎単語がある場合（ステップＳ１８０２：Ｙｅｓ）、情報生成装置５００は、その最長一致した基礎単語について、特定基礎単語出現マップＭ１が設定済みであるか否かを判断する（ステップＳ１８０３）。
【０１７７】
設定済みである場合（ステップＳ１８０３：Ｙｅｓ）、ステップＳ１８０５に移行する。一方、設定済みでない場合（ステップＳ１８０３：Ｎｏ）、情報生成装置５００は、最長一致した基礎単語について、特定基礎単語出現マップＭ１を設定して（ステップＳ１８０４）、ステップＳ１８０５に移行する。
【０１７８】
具体的には、情報生成装置５００は、最長一致した基礎単語を特定基礎単語として、特定基礎単語出現マップＭ１の特定基礎単語項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ１８０５では、最長一致した基礎単語についての特定基礎単語出現マップＭ１の対象ファイルＦｉのビットをＯＮにする（ステップＳ１８０５）。
【０１７９】
これにより、特定基礎単語出現マップ生成処理（ステップＳ１７０２）を終了し、特定単一文字出現マップ生成処理（ステップＳ１７０３）に移行する。この特定基礎単語出現マップ生成処理（ステップＳ１７０２）によれば、対象文字ごとに最長一致した基礎単語を特定基礎単語としてマップ生成することができる。
【０１８０】
図１９は、図１７で示した特定単一文字出現マップ生成処理（ステップＳ１７０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、単一文字構造体に対して対象文字の２分探索をおこない（ステップＳ１９０１）、一致したか否かを判断する（ステップＳ１９０２）。一致する単一文字がなかった場合（ステップＳ１９０２：Ｎｏ）、情報生成装置５００は、分割文字コード出現マップ生成処理を実行して（ステップＳ１９０３）、連接文字列出現マップ生成処理（ステップＳ１７０４）に移行する。分割文字コード出現マップ生成処理（ステップＳ１９０３）の詳細については後述する。
【０１８１】
一方、ステップＳ１９０２において、２分探索により対象文字と一致する単一文字があった場合（ステップＳ１９０２：Ｙｅｓ）、情報生成装置５００は、その２分探索された対象文字について、特定単一文字出現マップＭ２が設定済みであるか否かを判断する（ステップＳ１９０４）。設定済みである場合（ステップＳ１９０４：Ｙｅｓ）、ステップＳ１９０６に移行する。一方、設定済みでない場合（ステップＳ１９０４：Ｎｏ）、情報生成装置５００は、２分探索された単一文字について、特定単一文字出現マップＭ２を設定して（ステップＳ１９０５）、ステップＳ１９０６に移行する。
【０１８２】
具体的には、情報生成装置５００は、２分探索された単一文字を特定単一文字として、特定単一文字出現マップＭ２の特定単一文字項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ１９０６では、情報生成装置５００は、２分探索された単一文字についての特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮにする（ステップＳ１９０６）。
【０１８３】
これにより、特定単一文字出現マップ生成処理（ステップＳ１７０３）を終了し、連接文字列出現マップ生成処理（ステップＳ１７０４）に移行する。この特定単一文字出現マップ生成処理（ステップＳ１７０３）によれば、２分探索された対象文字を特定単一文字としてマップ生成することができる。
【０１８４】
図２０は、図１９で示した分割文字コード出現マップ生成処理（ステップＳ１９０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字を分割し（ステップＳ２００１）、対象文字から分割された上位分割文字コードについて、上位分割文字コード出現マップＭ３が設定済みであるか否かを判断する（ステップＳ２００２）。設定済みである場合（ステップＳ２００２：Ｙｅｓ）、ステップＳ２００４に移行する。一方、設定済みでない場合（ステップＳ２００２：Ｎｏ）、情報生成装置５００は、対象文字から分割された上位分割文字コードについて、上位分割文字コード出現マップＭ３を設定して（ステップＳ２００３）、ステップＳ２００４に移行する。
【０１８５】
具体的には、情報生成装置５００は、対象文字から分割された上位分割文字コードを、上位分割文字コード出現マップＭ３の上位分割文字コード項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ２００４では、情報生成装置５００は、対象文字から分割された上位分割文字コードについての上位分割文字コード出現マップＭ３の対象ファイルＦｉのビットをＯＮにする（ステップＳ２００４）。
【０１８６】
また、情報生成装置５００は、対象文字から分割された下位分割文字コードについて、下位分割文字コード出現マップＭ４が設定済みであるか否かを判断する（ステップＳ２００５）。設定済みである場合（ステップＳ２００５：Ｙｅｓ）、ステップＳ２００７に移行する。一方、設定済みでない場合（ステップＳ２００５：Ｎｏ）、情報生成装置５００は、対象文字から分割された下位分割文字コードについて、下位分割文字コード出現マップＭ４を設定して（ステップＳ２００６）、ステップＳ２００７に移行する。
【０１８７】
具体的には、情報生成装置５００は、対象文字から分割された下位分割文字コードを、下位分割文字コード出現マップＭ４の下位分割文字コード項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ２００７では、情報生成装置５００は、対象文字から分割された下位分割文字コードについての下位分割文字コード出現マップＭ４の対象ファイルＦｉのビットをＯＮにする（ステップＳ２００７）。
【０１８８】
これにより、分割文字コード出現マップ生成処理（ステップＳ１９０３）を終了し、連接文字列出現マップ生成処理（ステップＳ１７０４）に移行する。この分割文字コード出現マップ生成処理（ステップＳ１９０３）によれば、目標出現率Ｐｃに応じた順位よりも下位の単一文字については、出現頻度が低いため、ＯＦＦのビットが多数出現することとなる。
【０１８９】
しかしながら、特定単一文字出現マップＭ２の生成対象外とすることで、特定単一文字出現マップＭ２のマップサイズの最適化を図ることができる。また、分割することで、目標出現率Ｐｃに応じた順位よりも下位の単一文字については、上位分割文字コード出現マップＭ３および下位分割文字コード出現マップＭ４といったマップサイズが固定化されたマップに設定される。したがって、目標出現率Ｐｃをどのような出現率に設定しても、上位分割文字コード出現マップＭ３および下位分割文字コード出現マップＭ４は変わらないため、マップサイズの増大化を防止でき、省メモリ化を図ることができる。
【０１９０】
図２１は、図１７で示した連接文字列出現マップ生成処理（ステップＳ１７０４）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字に対し、連接文字列特定処理を実行する（ステップＳ２１０１）。連接文字列特定処理（ステップＳ２１０１）の詳細については後述する。情報生成装置５００は、連接文字列特定処理（ステップＳ２１０１）のあと、対象文字に関する連接文字列がない場合（ステップＳ２１０２：Ｎｏ）、ステップＳ１７０５に移行する。
【０１９１】
一方、対象文字に関する連接文字列がある場合（ステップＳ２１０２：Ｙｅｓ）、情報生成装置５００は、対象文字に関する連接文字列に対し、連接文字列出現マップＭ５が設定済みであるか否かを判断する（ステップＳ２１０３）。設定済みである場合（ステップＳ２１０３：Ｙｅｓ）、ステップＳ２１０５に移行する。一方、設定済みでない場合（ステップＳ２１０３：Ｎｏ）、情報生成装置５００は、対象文字に関する連接文字列について、連接文字列出現マップＭ５を設定して（ステップＳ２１０４）、ステップＳ２１０５に移行する。
【０１９２】
具体的には、情報生成装置５００は、対象文字に関する連接文字列を、連接文字列出現マップＭ５の連接文字列項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ２１０５では、情報生成装置５００は、対象文字に関する連接文字列についての連接文字列出現マップＭ５の対象ファイルＦｉのビットをＯＮにする（ステップＳ２１０５）。これにより、連接文字列出現マップ生成処理（ステップＳ１７０４）を終了し、ステップＳ１７０５に移行する。この連接文字列出現マップ生成処理（ステップＳ１７０４）によれば、対象文字に関する連接文字列ごとにマップ生成することができる。
【０１９３】
図２２は、図２１で示した連接文字列特定処理（ステップＳ２１０１）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字に対し、対象文字は分割されたか否かを判断する（ステップＳ２２０１）。すなわち、情報生成装置５００は、対象文字が分割文字コードか否かを判断する。分割されていない場合（ステップＳ２２０１：Ｎｏ）、すなわち、単一文字の場合、情報生成装置５００は、１つ前の文字があるか否かを判断する（ステップＳ２２０２）。
【０１９４】
１つ前の文字がある場合（ステップＳ２２０２：Ｙｅｓ）、情報生成装置５００は、１つ前の文字は分割されたか否かを判断する（ステップＳ２２０３）。すなわち、情報生成装置５００は、１つ前の文字が分割文字コードか否かを判断する。分割されていない場合（ステップＳ２２０３：Ｎｏ）、すなわち、単一文字の場合、情報生成装置５００は、対象文字の１つ前の単一文字と対象文字（単一文字）からなる文字列を、連接文字列に決定する（ステップＳ２２０４）。そして、ステップＳ２１０２に移行する。
【０１９５】
一方、ステップＳ２２０３において、１つ前の文字が分割された場合（ステップＳ２２０３：Ｙｅｓ）、すなわち、分割文字コードである場合、その１つ前の文字である分割文字コードは、下位分割文字コードとなる。したがって、情報生成装置５００は、１つ前の文字である下位分割文字コードと対象文字からなる文字列を、連接文字列に決定する（ステップＳ２２０５）。そして、ステップＳ２１０２に移行する。
【０１９６】
また、ステップＳ２２０２において、１つ前の文字がない場合（ステップＳ２２０２：Ｎｏ）、対象文字だけとなるため、連接文字列を決定せずに、ステップＳ２１０２に移行する。
【０１９７】
また、ステップＳ２２０１において、対象文字が分割された場合（ステップＳ２２０１：Ｙｅｓ）、すなわち、分割文字コードである場合、情報生成装置５００は、その分割文字コードが上位分割文字コードか下位分割文字コードであるかを判断する（ステップＳ２２０６）。
【０１９８】
上位分割文字コードである場合（ステップＳ２２０６：上位）、情報生成装置５００は、１つ前の文字は分割されたか否かを判断する（ステップＳ２２０７）。すなわち、１つ前の文字が分割文字コードか否かを判断する。分割されていない場合（ステップＳ２２０７：Ｎｏ）、すなわち、単一文字の場合、情報生成装置５００は、対象文字の１つ前の単一文字と対象文字から分割された上位分割文字コードからなる文字列を、連接文字列に決定する（ステップＳ２２０８）。そして、ステップＳ２１０２に移行する。
【０１９９】
一方、ステップＳ２２０７において、１つ前の文字が分割された場合（ステップＳ２２０７：Ｙｅｓ）、すなわち、分割文字コードである場合、その１つ前の文字である分割文字コードは、下位分割文字コードとなる。したがって、情報生成装置５００は、１つ前の文字である下位分割文字コードと対象文字から分割された上位分割文字コードからなる文字列を、連接文字列に決定する（ステップＳ２２０９）。そして、ステップＳ２１０２に移行する。
【０２００】
また、ステップＳ２２０６において、下位分割文字コードである場合（ステップＳ２２０６：下位）、情報生成装置５００は、対象文字から分割された上位分割文字コードおよび下位分割文字コードからなる文字列を、連接文字列に決定する（ステップＳ２２１０）。そして、ステップＳ２１０２に移行する。
【０２０１】
この連接文字列特定処理（ステップＳ２１０１）によれば、対象文字が分割された場合であっても連接文字列を特定することができる。また、１文字シフトにしたがって連接文字列を特定するため、特定基礎単語出現マップＭ１および特定単一文字出現マップＭ２と同時並行で生成することができる。
【０２０２】
このように、上述した情報生成によれば、目標出現率Ｐｗ，Ｐｃにより、マップ生成される基礎単語数および単一文字数が制限されるため、無駄なマップ生成がなくなり、マップ生成の高速化およびマップサイズの最適化を同時に実現することができる。また、１文字シフトにより複数種類のマップ生成を同時並行で実行することができ、高精度な検索に用いる複数種類のマップ生成の効率化を図ることができる。
【０２０３】
［情報検索プログラム／装置／方法］
つぎに、情報検索プログラム、情報検索装置、および情報検索方法について説明する。情報検索プログラム、情報検索装置、および情報検索方法では、情報生成プログラム、情報検生成索装置、および情報生成方法により生成された各種マップを用いて検索を実行する。なお、情報検索装置のハードウェア構成例は、図４に示したハードウェア構成例と同一である。また、情報検索装置は、情報生成装置５００と一体型のコンピュータとしてもよく、別々のコンピュータとしてもよい。
【０２０４】
＜情報検索装置の機能的構成＞
図２３は、情報検索装置の機能的構成例を示すブロック図である。情報検索装置２３００は、入力部２３０１と、分割部２３０２と、ファイル特定部２３０３と、絞込み部２３０４と、検索部２３０５と、出力部２３０６とを備えている。入力部２３０１〜出力部２３０６は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９により、その機能を実現する。
【０２０５】
入力部２３０１は、検索文字列の入力を受け付ける。具体的には、たとえば、キーボード４１０やマウス４１１などの入力装置の操作入力により、検索文字列の入力を受け付ける。
【０２０６】
分割部２３０２は、検索文字列を構成する単一文字のうち特定の単一文字に該当しない単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する。具体的には、たとえば、上述した特定単一文字出現マップＭ２の特定単一文字項目に登録されている特定単一文字に該当しない単一文字の文字コードを、上位分割文字コードと下位分割文字コードに分割する。
【０２０７】
ファイル特定部２３０３は、文字列が記述された対象ファイル群Ｆに存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列が存在する対象ファイルを特定する。具体的には、たとえば、上述した特定基礎単語出現マップＭ１を参照することにより、検索文字列が存在する対象ファイルを特定する。
【０２０８】
また、ファイル特定部２３０３は、文字列が記述された対象ファイル群Ｆに存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位以内の特定の単一文字の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する各単一文字が存在する対象ファイルを特定する。具体的には、たとえば、上述した特定単一文字出現マップＭ２を参照することにより、検索文字列が存在する対象ファイルを特定する。
【０２０９】
また、ファイル特定部２３０３は、分割部２３０２によって分割された上位ビットの分割文字コードの存否を対象ファイルごとに示すインデックス情報を参照することにより、上位ビットの分割文字コードが存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した上位分割文字コード出現マップＭ３を参照することにより、分割部２３０２により分割された上位分割文字コードが存在する対象ファイルを特定する。
【０２１０】
同様に、ファイル特定部２３０３は、分割部２３０２によって分割された下位ビットの分割文字コードの存否を対象ファイルごとに示すインデックス情報を参照することにより、下位ビットの分割文字コードが存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した下位分割文字コード出現マップＭ４を参照することにより、分割部２３０２により分割された下位分割文字コードが存在する対象ファイルを特定する。
【０２１１】
また、ファイル特定部２３０３は、対象ファイル群Ｆに存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの単一文字が連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１２】
また、ファイル特定部２３０３は、対象ファイル群Ｆに存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字と上位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する、特定の単一文字と上位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１３】
また、ファイル特定部２３０３は、下位ビットの分割文字コードとファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字とが連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する、下位ビットの分割文字コードと特定の単一文字とが連続する連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１４】
また、ファイル特定部２３０３は、上位ビットの分割文字コードと下位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する、上位ビットの分割文字コードと下位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１５】
絞込み部２３０４は、ファイル特定部２３０３によって特定された対象ファイル群Ｆの中から検索文字列を構成する各単一文字がすべて存在する対象ファイルを絞り込む。具体的には、たとえば、絞込み部２３０４は、特定単一文字出現マップＭ２において、検索文字列を構成するすべての単一文字のビットがＯＮになっている対象ファイルを、ファイル特定部２３０３によって特定された対象ファイルの中から絞り込む。
【０２１６】
また、絞込み部２３０４は、ファイル特定部２３０３によって特定された対象ファイル群Ｆの中から検索文字列を構成する各単一文字および各連接文字列がすべて存在する対象ファイルを絞り込む。具体的には、たとえば、絞込み部２３０４は、特定単一文字出現マップＭ２において、検索文字列を構成するすべての特定単一文字のビットがＯＮになっており、かつ、連接文字列出現マップＭ５において、検索文字列を構成するすべての連接文字列のビットがＯＮになっている対象ファイルを、ファイル特定部２３０３によって特定された対象ファイルの中から絞り込む。
【０２１７】
また、絞込み部２３０４は、ファイル特定部２３０３によって特定された対象ファイル群Ｆの中から検索文字列を構成する各単一文字、各上位ビットの分割文字コード、各下位ビットの分割文字コード、および各連接文字列がすべて存在する対象ファイルを絞り込む。
【０２１８】
具体的には、たとえば、絞込み部２３０４は、特定単一文字出現マップＭ２において、検索文字列を構成するすべての特定単一文字のビットがＯＮになっており、かつ、上位分割文字コード出現マップＭ３において、検索文字列を構成するすべての上位分割文字コードのビットがＯＮになっており、かつ、下位分割文字コード出現マップＭ４において、検索文字列を構成するすべての下位分割文字コードのビットがＯＮになっており、かつ、連接文字列出現マップＭ５において、検索文字列を構成するすべての連接文字列のビットがＯＮになっている対象ファイルを、ファイル特定部２３０３によって特定された対象ファイルの中から絞り込む。
【０２１９】
検索部２３０５は、ファイル特定部２３０３によって特定された対象ファイルの中から検索文字列に関する情報を検索する。具体的には、たとえば、検索部２３０５は、検索文字列が特定基礎単語に該当する場合、ファイル特定部２３０３により、特定基礎単語出現マップＭ１を参照して特定された対象ファイルの中から、検索文字列に一致する文字列を検索する。また、検索部２３０５は、検索文字列が特定基礎単語に該当しない場合、絞込み部２３０４により絞り込まれた対象ファイルの中から、検索文字列に一致する文字列を検索する。
【０２２０】
出力部２３０６は、検索部２３０５によって検索された検索結果を出力する。具体的には、たとえば、出力部２３０６は、検索結果をディスプレイに表示出力したり、検索結果を印刷出力したり、検索結果を音声により読み上げたり、検索結果を記憶装置に保存したり、検索結果を外部に送信したりする。
【０２２１】
また、検索結果は、検索文字列に一致する文字列を出力したり、検索文字列に一致する文字列に関連する情報を出力する。関連する情報としては、たとえば、検索文字列に一致する文字列が辞書の見出し語である場合には、解説文を出力する。これとは逆に、検索文字列に一致する文字列が辞書の解説文内の文字列である場合には、その解説文の見出し語を出力することとしてもよい。
【０２２２】
＜情報検索処理の具体例＞
つぎに、情報検索処理の具体例について説明する。
【０２２３】
図２４は、情報検索処理の具体例（その１）を示す説明図である。図２４では、検索文字列を「結婚活動」とする。なお、検索文字列「結婚活動」の中には、特定基礎単語「結婚」，「活動」が含まれている。したがって、図２４に示した特定基礎単語「結婚」，「活動」の特定基礎単語出現マップＭ１のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２４の場合は、対象ファイルＦ３，Ｆｎ内に、検索文字列「結婚活動」が存在する可能性が高い。
【０２２４】
図２５は、情報検索処理の具体例（その２）を示す説明図である。図２５では、検索文字列を「婚活」とする。なお、検索文字列「婚活」の中には、特定単一文字「婚」，「活」が含まれている。さらに、２連接文字列「婚活」が含まれている。特定基礎単語は含まれていない。
【０２２５】
したがって、図２５に示した特定単一文字出現マップＭ２、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２５の場合は、対象ファイルＦｎ内に、検索文字列「婚活」が存在する。また、対象ファイルＦｎ内に、「婚活」を含む文字列（たとえば、「結婚活動」）が存在する可能性が高く、いわゆる泣き別れによる検索性能の劣化を防止することができる。
【０２２６】
図２６は、情報検索処理の具体例（その３）を示す説明図である。図２６では、検索文字列を「脱藩」とする。なお、検索文字列「脱藩」の単一文字「脱」，「藩」は特定単一文字でないため、単一文字「脱」の上位分割文字コード「０ｘ８１」，下位分割文字コード「０ｘ３１」、単一文字「藩」の上位分割文字コード「０ｘＥ９」，下位分割文字コード「０ｘ８５」が含まれている。また、２連接文字列「０ｘ８１  ０ｘ３１」，「０ｘ３１  ０ｘＥ９」，「０ｘＥ９  ０ｘ８５」が含まれている。なお、検索文字列「脱藩」には特定基礎単語は含まれていない。
【０２２７】
したがって、図２６に示した上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２６の場合は、対象ファイルＦｎ内に、検索文字列「脱藩」が存在する可能性が高い。
【０２２８】
図２７は、情報検索処理の具体例（その４）を示す説明図である。図２７では、検索文字列を「離脱」とする。なお、検索文字列「離脱」の単一文字「離」は特定単一文字であるが、「脱」は特定単一文字でない。したがって、検索文字列「離脱」には、特定単一文字「離」，単一文字「脱」の上位分割文字コード「０ｘ８１」，下位分割文字コード「０ｘ３１」が含まれている。また、２連接文字列「離  ０ｘ８１」，「０ｘ８１  ０ｘ３１」が含まれている。なお、検索文字列「離脱」には特定基礎単語は含まれていない。
【０２２９】
したがって、図２７に示した特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２７の場合は、対象ファイルＦｎ内に、検索文字列「離脱」が存在する可能性が高い。
【０２３０】
図２８は、情報検索処理の具体例（その５）を示す説明図である。図２８では、検索文字列を「脱出」とする。また、検索文字列「脱出」の単一文字「出」は特定単一文字であるが、「脱」は特定単一文字でない。したがって、検索文字列「脱出」には、特定単一文字「出」，単一文字「脱」の上位分割文字コード「０ｘ８１」，下位分割文字コード「０ｘ３１」が含まれている。また、２連接文字列「０ｘ８１  ０ｘ３１」，「０ｘ３１  出」が含まれている。なお、検索文字列「脱出」には特定基礎単語は含まれていない。
【０２３１】
したがって、図２８に示した特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２８の場合は、対象ファイルＦｎ内に、検索文字列「脱出」が存在する可能性が高い。
【０２３２】
図２９は、情報検索処理の具体例（その６）を示す説明図である。図２９では、検索文字列を「ｉｓ」と「ａ」とし、検索条件をＡＮＤとする。なお、検索文字列「ｉｓ」には、特定基礎単語「ｉｓ」（ｂｅ動詞）が含まれており、検索文字列「ａ」には特定基礎単語「ａ」（不定冠詞）が含まれている。この検索文字列では、いわゆるｉｓ  ａ構文の文章を検索することができる。したがって、図２９に示した「ｉｓ」と「ａ」の特定基礎単語出現マップＭ１のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２９の場合は、対象ファイルＦ３，Ｆｎ内に、検索文字列「ｉｓ」および「ａ」が存在する。
【０２３３】
図３０は、情報検索処理の具体例（その７）を示す説明図である。図３０では、検索文字列を「ｔｅｒｎ」とする。なお、検索文字列「ｔｅｒｎ」には、２連接文字列「ｔｅ」「ｅｒ」「ｒｎ」が含まれている。したがって、図３０に示した２連接文字列マップＭ５でＯＮ（１）になったファイル番号の対象ファイルが特定される。図３０の場合は、対象ファイルＦｎ内に、検索文字列「ｔｅｒｎ」が存在する。
【０２３４】
＜情報検索処理手順＞
図３１は、情報検索装置２３００による情報検索処理手順を示すフローチャートである。まず、情報検索装置２３００は、入力部２３０１により、検索文字列群（１つの検索文字列も含む）が入力されるのを待ち受け（ステップＳ３１０１：Ｎｏ）、検索文字列群が入力された場合（ステップＳ３１０１：Ｙｅｓ）、情報検索装置２３００は、未選択の検索文字列があるか否かを判断する（ステップＳ３１０２）。未選択の検索文字列がある場合（ステップＳ３１０２：Ｙｅｓ）、情報検索装置２３００は、未選択の検索文字列を１つ選択し（ステップＳ３１０３）、ファイル特定処理を実行して（ステップＳ３１０４）、ステップＳ３１０２に戻る。
【０２３５】
一方、ステップＳ３１０２において、未選択の検索文字列がない場合（ステップＳ３１０２：Ｎｏ）、情報検索装置２３００は、検索条件を判断する（ステップＳ３１０５）。検索条件がＡＮＤの場合（ステップＳ３１０５：ＡＮＤ）、情報検索装置２３００は、検索文字列ごとに特定された対象ファイルをＡＮＤ演算で絞り込み、検索対象ファイルに設定し（ステップＳ３１０６）、ステップＳ３１０８に移行する。一方、検索条件がＯＲである場合（ステップＳ３１０５：ＯＲ）、情報検索装置２３００は、検索文字列ごとに特定された対象ファイルをＯＲ演算で絞り込み、検索対象ファイルに設定し（ステップＳ３１０７）、ステップＳ３１０８に移行する。
【０２３６】
ステップＳ３１０８では、検索対象ファイルごとに検索条件にしたがって検索する（ステップＳ３１０８）。そして、検索結果を出力する出力処理を実行して（ステップＳ３１０９）、情報検索処理を終了する。
【０２３７】
図３２−１は、図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その１）である。まず、情報検索装置２３００は、対象文字を検索文字列の先頭文字に設定し（ステップＳ３２０１）、検索文字列の最長一致検索処理を実行する（ステップＳ３２０２）。検索文字列の最長一致検索処理（ステップＳ３２０２）の詳細について後述する。
【０２３８】
つぎに、情報検索装置２３００は、検索文字列の最長一致検索処理（ステップＳ３２０２）により、最長一致した基礎単語があるか否かを判断する（ステップＳ３２０３）。最長一致した基礎単語がない場合（ステップＳ３２０３：Ｎｏ）、図３２−２のステップＳ３２１１に移行する。一方、最長一致した基礎単語がある場合（ステップＳ３２０３：Ｙｅｓ）、情報検索装置２３００は、特定基礎単語出現マップＭ１から最長一致した基礎単語を含む対象ファイルを特定する（ステップＳ３２０４）。具体的には、情報検索装置２３００は、最長一致した基礎単語、すなわち、特定基礎単語についてビットがＯＮになっている対象ファイルを特定する。
【０２３９】
このあと、情報検索装置２３００は、対象文字を、最長一致した基礎単語の文字列分シフトする（ステップＳ３２０５）。そして、情報検索装置２３００は、シフト後の対象文字があるか否かを判断する（ステップＳ３２０６）。対象文字がある場合（ステップＳ３２０６：Ｙｅｓ）、ステップＳ３２０２に戻る。一方、対象文字がない場合（ステップＳ３２０６：Ｎｏ）、情報検索装置２３００は、絞込み部２３０４により、ステップＳ３２０６までで特定された対象ファイルのＡＮＤ演算により絞り込みをおこなう（ステップＳ３２０７）。そして、ステップＳ３１０２に戻る。
【０２４０】
図３２−２は、図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その２）である。図３２−１のステップＳ３２０３において、最長一致した基礎単語がない場合（ステップＳ３２０３：Ｎｏ）、図３２−２において、情報検索装置２３００は、対象文字が特定単一文字であるか否かを判断する（ステップＳ３２１１）。具体的には、情報検索装置２３００は、特定単一文字出現マップＭ２における特定単一文字項目に登録されているか否かを判断する。
【０２４１】
特定単一文字である場合（ステップＳ３２１１：Ｙｅｓ）、情報検索装置２３００は、特定単一文字出現マップＭ２から対象文字を含む対象ファイルを特定する（ステップＳ３２１２）。すなわち、情報検索装置２３００は、対象文字についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１６に移行する。
【０２４２】
一方、ステップＳ３２１１において、対象文字が特定単一文字でない場合（ステップＳ３２１１：Ｎｏ）、情報検索装置２３００は、対象文字列を、上位分割文字コードと下位分割文字コードとに分割する（ステップＳ３２１３）。そして、情報検索装置２３００は、上位分割文字コード出現マップＭ３から特定単一文字の上位分割文字コードを含む対象ファイルを特定する（ステップＳ３２１４）。具体的には、情報検索装置２３００は、上位分割文字コードについてビットがＯＮになっている対象ファイルを特定する。同様に、情報検索装置２３００は、下位分割文字コード出現マップＭ４から特定単一文字の下位分割文字コードを含む対象ファイルを特定する（ステップＳ３２１５）。具体的には、情報検索装置２３００は、下位分割文字コードについてビットがＯＮになっている対象ファイルを特定する。そして、ステップＳ３２１６に移行する。
【０２４３】
ステップＳ３２１６では、情報検索装置２３００は、連接文字列出現マップＭ５によるファイル特定処理を実行する（ステップＳ３２１６）。連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）の詳細については後述する。このあと、情報検索装置２３００は、対象文字を１文字分シフトして（ステップＳ３２１７）、図３２−１のステップＳ３２０６に移行する。
【０２４４】
このファイル特定処理（ステップＳ３１０４）によれば、検索文字列が特定基礎単語を含んでいれば、特定基礎単語出現マップＭ１により対象ファイルを絞り込むことができ、そうでない場合は、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算により絞り込むことで対象ファイルを特定することができる。
【０２４５】
図３３は、図３２−２に示した最長一致検索処理（ステップＳ３２０２）の詳細な処理手順を示すフローチャートである。まず、情報検索装置２３００は、ｃ＝１とする（ステップＳ３３０１）。ｃは対象文字からの文字数（対象文字含む）である。ｃ＝１の場合は、対象文字だけである。つぎに、情報検索装置２３００は、対象文字からｃ文字目までの対象文字列と前方一致する基礎単語を２分探索する（ステップＳ３３０２）。ここで探索対象となるのは、特定基礎単語出現マップＭ１の特定基礎単語項目に登録されている特定基礎単語群である。
【０２４６】
そして、情報検索装置２３００は、２分探索により特定基礎単語があるか否かを判断する（ステップＳ３３０３）。２分探索により特定基礎単語がヒットしなかった場合（ステップＳ３３０３：Ｎｏ）、ステップＳ３３０６に移行する。
【０２４７】
一方、２分探索により特定基礎単語がヒットした場合（ステップＳ３３０３：Ｙｅｓ）、情報検索装置２３００は、ヒットした特定基礎単語と対象文字列とが完全一致するか否かを判断する（ステップＳ３３０４）。そして、完全一致しない場合（ステップＳ３３０４：Ｎｏ）、ステップＳ３３０６に移行する。一方、完全一致する場合（ステップＳ３３０４：Ｙｅｓ）、情報検索装置２３００は、最長一致候補として記憶装置に保持し（ステップＳ３３０５）、ステップＳ３３０６に移行する。
【０２４８】
ステップＳ３３０６では、情報検索装置２３００は、対象文字列について２分探索が終了したか否かを判断する（ステップＳ３３０６）。具体的には、情報検索装置２３００は、末尾の特定基礎単語まで２分探索したか否かを判断する。２分探索が終了していない場合（ステップＳ３３０６：Ｎｏ）、ステップＳ３３０２に移行して、２分探索が終了するまで継続する。
【０２４９】
一方、対象文字列について２分探索が終了した場合（ステップＳ３３０６：Ｙｅｓ）、情報検索装置２３００は、ｃ文字目の文字が検索文字列の末尾文字であるか否かを判断する（ステップＳ３３０７）。ｃ文字目の文字が検索文字列の末尾文字である場合（ステップＳ３３０７：Ｙｅｓ）、ステップＳ３３１０に移行する。一方、ｃ文字目の文字が検索文字列の末尾文字でない場合（ステップＳ３３０７：Ｎｏ）、情報検索装置２３００は、ｃ＞ｃｍａｘであるか否かを判断する（ステップＳ３３０８）。ｃｍａｘは予め設定された値であり、これにより対象文字列の上限文字数が設定される。
【０２５０】
ｃ＞ｃｍａｘでない場合（ステップＳ３３０８：Ｎｏ）、ｃをインクリメントして（ステップＳ３３０９）、ステップＳ３３０２に戻る。一方、ｃ＞ｃｍａｘである場合（ステップＳ３３０８：Ｙｅｓ）、情報検索装置２３００は、最長一致候補があるか否かを判断する（ステップＳ３３１０）。具体的には、情報検索装置２３００は、ステップＳ３３０５において１つでも最長一致候補が記憶装置に保持されているか否かを判断する。
【０２５１】
最長一致候補がある場合（ステップＳ３３１０：Ｙｅｓ）、情報検索装置２３００は、最長一致候補のうち最長文字列を、最長一致した基礎単語に決定する（ステップＳ３３１１）。そして、ステップＳ３２０３に移行する。一方、ステップＳ３３１０において、最長一致候補が１つもない場合（ステップＳ３３１０：Ｎｏ）、ステップＳ３２０３に移行する。
【０２５２】
これにより、最長一致検索処理（ステップＳ３２０２）を終了する。この最長一致検索処理（ステップＳ３２０２）によれば、特定基礎単語出現マップＭ１に登録された特定基礎単語群の中から、完全一致した文字列の中でかつ最長の文字列を特定基礎単語として検索することができる。
【０２５３】
図３４は、図３２−２で示した連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）の詳細な処理手順を示すフローチャートである。まず、情報検索装置２３００は、対象文字を、検索文字列の先頭文字にする（ステップＳ３４０１）。ここでの検索文字列は、分割文字コードに分割されていれば、分割文字コードも１文字として扱う。
【０２５４】
つぎに、情報検索装置２３００は、対象文字が分割文字コードであるか否かを判断する（ステップＳ３４０２）。分割文字コードでない場合（ステップＳ３４０２：Ｎｏ）、対象文字の１つ前の文字があるか否かを判断する（ステップＳ３４０３）。たとえば、対象文字が下位分割文字コードである場合は、１つ前の文字は上位分割文字コードとなる。また、対象文字が特定単一文字または上位分割文字コードである場合は、１つ前で分割されていれば、１つ前の文字は下位分割文字コードとなる。
【０２５５】
１つ前の文字がある場合（ステップＳ３４０３：Ｙｅｓ）、情報検索装置２３００は、１つ前の文字が分割文字コードであるか否かを判断する（ステップＳ３４０４）。分割文字コードでない場合（ステップＳ３４０４：Ｎｏ）、２グラムの特定単一文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４０５）。具体的には、情報検索装置２３００は、２グラムの特定単一文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２５６】
一方、ステップＳ３４０４において、１つ前の文字が分割文字コードである場合（ステップＳ３４０４：Ｙｅｓ）、情報検索装置２３００は、分割文字コードと特定単一文字からなる連接文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４０６）。具体的には、分割文字コードと特定単一文字からなる連接文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２５７】
一方、ステップＳ３４０３において、対象文字の１つ前の文字がない場合（ステップＳ３４０３：Ｎｏ）、対象ファイルを特定せずに、ステップＳ３２１７に移行する。
【０２５８】
一方、ステップＳ３４０２において、対象文字が分割文字コードである場合（ステップＳ３４０２：Ｙｅｓ）、情報検索装置２３００は、対象文字の１つ前の文字の文字があるか否かを判断する（ステップＳ３４０７）。
【０２５９】
１つ前の文字がある場合（ステップＳ３４０７：Ｙｅｓ）、情報検索装置２３００は、１つ前の文字が分割文字コードであるか否かを判断する（ステップＳ３４０８）。分割文字コードでない場合（ステップＳ３４０８：Ｎｏ）、情報検索装置２３００は、特定単一文字と上位分割文字コードからなる連接文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４０９）。具体的には、情報検索装置２３００は、特定単一文字と上位分割文字コードからなる連接文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２６０】
一方、ステップＳ３４０８において、１つ前の文字が分割文字コードである場合（ステップＳ３４０８：Ｙｅｓ）、情報検索装置２３００は、２連接の分割文字コードからなる連接文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４１０）。具体的には、情報検索装置２３００は、２連接の分割文字コードからなる連接文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２６１】
一方、ステップＳ３４０７において、対象文字の１つ前の文字がない場合（ステップＳ３４０７：Ｎｏ）、対象ファイルを特定せずに、ステップＳ３２１７に移行する。
【０２６２】
この連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）によれば、特定単一文字のみからなる連接文字列、分割文字コードのみからなる連接文字列、特定単一文字と分割文字コードが混在する連接文字列が検索文字列に存在する対象ファイルを特定することができる。
【０２６３】
このように、上述した情報検索によれば、検索文字列に特定基礎単語があれば、特定基礎単語出現マップＭ１から対象ファイルを特定することができるため、高速な検索処理を実現することができる。また、検索文字列に特定基礎単語がない場合でも、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５を用いることにより、対象ファイルの効率的な絞り込みをおこなうことができる。たとえば、「婚活」といった新しい短縮語については，特定基礎単語として登録されていないため、このような場合に、対象ファイルの絞り込みをおこなうことができる。
【０２６４】
＜マップ突き出し＞
つぎに、マップ突き出しについて説明する。マップ突き出しとは、対象ファイル群Ｆに対し、あらたに対象ファイルが追加される場合がある。このような場合、追加された対象ファイルについても、図１〜図３に示したように、（Ａ）〜（Ｄ）のフェーズを実行する。これにより、特定基礎単語出現マップＭ１、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５において、追加された対象ファイルについて、ビット行を生成する処理を、マップ突き出しという。
【０２６５】
図３５は、マップ突き出しを示す説明図である。図３５では、特定基礎単語出現マップＭ１を例に挙げて説明する。（Ａ）では、特定基礎単語群および初期の対象ファイル群Ｆである対象ファイルＦ１〜ＦｎからなるビットマップをセグメントＳ１とする。
【０２６６】
追加された対象ファイルの数が所定数貯まった場合は、あらたなセグメントを設定する。図３５では、一例として、セグメントＳ１と同数のｎ個の対象ファイルが追加された場合に、あらたなセグメントとしてセグメントＳ２とする。なお、セグメントＳ１と同数である必要はない。（Ｂ）では、セグメントＳ２が設定された状態を示す。
【０２６７】
（Ｃ）は、セグメントＳ２の設定後に、あらたに対象ファイルが追加され、その追加された対象ファイルについてビット行が生成された状態を示す。（Ｄ）このようにして、特定基礎単語出現マップＭ１が、特定基礎単語群およびセグメントＳ１〜ＳＮからなるビットマップを生成することができる。
【０２６８】
図３６は、対象ファイルの追加により複数個にセグメント化された出現マップ群を用いた場合の情報検索処理手順を示すフローチャートである。まず、情報検索装置２３００は、セグメント番号ｊをｊ＝１とし（ステップＳ３６０１）、セグメントＳｊを用いた情報検索処理を実行する（ステップＳ３６０２）。この情報検索処理（ステップＳ３６０２）では、図３１に示したステップＳ３１０１〜ステップＳ３１０８を実行する。すなわち、図３２−１および図３２−２に示したファイル特定処理（ステップＳ３１０４）、図３３に示した最長一致検索処理（ステップＳ３２０２）も実行する。ただし、図３２−２については、一部異なる処理があるため、図３７で説明する。
【０２６９】
そして、情報検索装置２３００は、ｊ＞Ｎであるか否かを判断する（ステップＳ３６０３）。ｊ＞Ｎでない場合（ステップＳ３６０３：Ｎｏ）、情報検索装置２３００は、ｊをインクリメントしてつぎのセグメントＳｊを指定して（ステップＳ３６０４）、ステップＳ３６０２に戻る。一方、ステップＳ３６０３において、ｊ＞Ｎである場合（ステップＳ３６０３：Ｙｅｓ）、情報検索装置２３００は、出力部２３０６による出力処理を実行する（ステップＳ３６０５）。ここでは、セグメントＳ１〜ＳＮを用いた各検索結果を出力することとなる。
【０２７０】
図３７は、図３６に示した情報検索処理（ステップＳ３６０２）における、ファイル特定処理（ステップＳ３１０４）の一部を示すフローチャートである。なお、図３７では、図３２−２と同一ステップには同一ステップ番号を付し、その説明を省略する。図３７において、ステップＳ３２１２により、ファイル特定できたセグメントＳｊ内の対象ファイルがあるか否かを判断する（ステップＳ３７００）。
【０２７１】
ファイル特定できたセグメントＳｊ内の対象ファイルがある場合（ステップＳ３７００：Ｙｅｓ）、ステップＳ３２１６に移行する。一方、ファイル特定できたセグメントＳｊ内の対象ファイルがない場合（ステップＳ３７００：Ｎｏ）、ステップＳ３６０３に移行する。すなわち、対象文字である特定単一文字を含む対象ファイルがセグメントＳｊに存在しない場合、後続の単一文字を対象文字にしてファイル特定できても、ステップＳ３２０７のファイル絞り込みをおこなっても、対象ファイルが得られない。
【０２７２】
したがって、１文字でも対象ファイルが特定できなかった場合は、情報検索装置２３００は、ステップＳ３６０３に移行して、つぎのセグメントＳｊを指定することで、無駄な検索を省略することができ、検索速度の高速化を図ることができる。
【０２７３】
以上説明したように、本情報生成プログラム、情報生成装置、および情報生成方法によれば、基礎単語や文字の存否を示すインデックス情報の生成の高速化およびインデックス情報のサイズの最適化を図ることができる。また、本情報検索プログラム、情報検索装置、および情報検索方法によれば、検索ノイズの低減化を図ることができる。
【０２７４】
なお、本実施の形態で説明した方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報生成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報生成プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０２７５】
１０１  基礎単語出現頻度テーブル
１０２  単一文字出現頻度テーブル
５００  情報生成装置
５０１  設定部
５０２  集計部
５０３  順位特定部
５０４  検出部
５０５  分割部
５０６  生成部
２３０１  入力部
２３０２  分割部
２３０３  ファイル特定部
２３０４  絞込み部
２３０５  検索部
２３０６  出力部
２３００  情報検索装置
Ｆ  対象ファイル群
Ｍ１  特定基礎単語出現マップ
Ｍ２  特定単一文字出現マップ
Ｍ３  上位分割文字コード出現マップ
Ｍ４  下位分割文字コード出現マップ
Ｍ５  連接文字列出現マップ
【図１】
2011148511.tif 000003
【図２】
2011148511.tif 000004
【図３】
2011148511.tif 000005
【図４】
2011148511.tif 000006
【図５】
2011148511.tif 000007
【図６】
2011148511.tif 000008
【図７】
2011148511.tif 000009
【図８−１】
2011148511.tif 000010
【図８−２】
2011148511.tif 000011
【図９】
2011148511.tif 000012
【図１０】
2011148511.tif 000013
【図１１】
2011148511.tif 000014
【図１２】
2011148511.tif 000015
【図１３】
2011148511.tif 000016
【図１４】
2011148511.tif 000017
【図１５】
2011148511.tif 000018
【図１６】
2011148511.tif 000019
【図１７】
2011148511.tif 000020
【図１８】
2011148511.tif 000021
【図１９】
2011148511.tif 000022
【図２０】
2011148511.tif 000023
【図２１】
2011148511.tif 000024
【図２２】
2011148511.tif 000025
【図２３】
2011148511.tif 000026
【図２４】
2011148511.tif 000027
【図２５】
2011148511.tif 000028
【図２６】
2011148511.tif 000029
【図２７】
2011148511.tif 000030
【図２８】
2011148511.tif 000031
【図２９】
2011148511.tif 000032
【図３０】
2011148511.tif 000033
【図３１】
2011148511.tif 000034
【図３２−１】
2011148511.tif 000035
【図３２−２】
2011148511.tif 000036
【図３３】
2011148511.tif 000037
【図３４】
2011148511.tif 000038
【図３５】
2011148511.tif 000039
【図３６】
2011148511.tif 000040
【図３７】
2011148511.tif 000041
【手続補正書】
【提出日】平成24年12月6日(2012.12.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の指定単語を検出する検出工程と、
前記検出工程によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータに実行させることを特徴とする情報生成プログラム。
【請求項２】
文字列が記述された対象ファイル群の中から単一文字ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された単一文字の出現頻度に基づいて、前記単一文字に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の単一文字を検出する検出工程と、
前記検出工程によって検出された特定の単一文字ごとに、当該特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータに実行させることを特徴とする情報生成プログラム。
【請求項３】
前記集計工程は、
前記対象ファイル群の中から単一文字の出現頻度を集計し、
前記順位特定工程は、
前記集計工程によって集計された単一文字の出現頻度に基づいて、前記単一文字に関する目標出現率までの降順の順位を特定し、
前記検出工程は、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の単一文字を検出し、
前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字ごとに、当該特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする請求項１に記載の情報生成プログラム。
【請求項４】
前記順位特定工程によって特定された降順の順位よりも下位の順位となる単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する分割工程を前記コンピュータに実行させ、
前記生成工程は、
前記分割工程によって分割された上位ビットの分割文字コードごとに、当該分割文字コードの存否を前記対象ファイルごとに示すインデックス情報と、前記分割工程によって分割された下位ビットの分割文字コードごとに、当該分割文字コードの存否を前記対象ファイルごとに示すインデックス情報とを生成することを特徴とする請求項２または３に記載の情報生成プログラム。
【請求項５】
前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字が連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする請求項２または３に記載の情報生成プログラム。
【請求項６】
検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項７】
検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位以内の特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する各単一文字が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイル群の中から前記検索文字列を構成する各単一文字がすべて存在する対象ファイルを絞り込む絞込み工程と、
前記絞込み工程によって絞り込まれた対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項８】
文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計手段と、
前記集計手段によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定手段と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定手段によって特定された降順の順位までの特定の指定単語を検出する検出手段と、
前記検出手段によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成手段と、
を備えることを特徴とする情報生成装置。
【請求項９】
検索文字列の入力を受け付ける入力手段と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定手段と、
前記ファイル特定手段によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索手段と、
前記検索手段によって検索された検索結果を出力する出力手段と、
を備えることを特徴とする情報検索装置。
【請求項１０】
文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の指定単語を検出する検出工程と、
前記検出工程によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータが実行することを特徴とする情報生成方法。
【請求項１１】
検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータが実行することを特徴とする情報検索方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字や基礎単語の存否を示すインデックス情報を生成し、インデックス情報を用いて検索をおこなう情報生成プログラム、情報検索プログラム、情報生成装置、情報検索装置、情報生成方法、および情報検索方法に関する。
【背景技術】
【０００２】
従来から、文字成分表といった全文検索インデックスを高速に生成するビットマップ型の全文検索技術がある（たとえば、下記特許文献１〜３を参照。）。従来のビットマップ型の全文検索技術では、形態素解析を行わないため、高速に生成でき、ビットマップを圧縮することができる。一般的な国語辞典では、約２４万項目のレコードを持ち、約６０００〜８０００文字で記述されており、単一文字のビットマップも約６０００〜８０００である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１−１８１３２９号公報
【特許文献２】特開平３−１７４６５２号公報
【特許文献３】特開平５−１７４０６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、各項目（レコード）に含まれる、かな、カタカナや英字の出現頻度が高く、単一文字のビットマップでは、対象項目を絞り込む効率が低いという問題がある。
【０００５】
また、２連接文字列のビットマップを追加すると、サイズが大きくなってメモリを逼迫する。ハッシュ処理によりサイズ縮小を行うと検索ノイズが発生する。このため、ビットマップの絞込みの効率が低下し、検索速度が遅くなる。
【０００６】
一方、英字、かな、カタカナなどの単語で構成される文字列については、文字の接続による検索ノイズが発生する。たとえば、英単語のｂｅ動詞「ｉｓ」や不定冠詞「ａ」を含む例文「ｔｈａｔ  ｉｓ  ａ  ｐｅｎ」を検索することができない。特に、アルファベットａの出現頻度は非常に高いため、不定冠詞「ａ」で検索をかけてもほぼすべての例文や単語が候補として検索されてしまう。
【０００７】
これに対し、「結婚」、「活動」といった辞書の見出し語となる基礎単語ごとにビットマップを生成することも考えられる。しかしながら、基礎単語ではない文字列で検索するとヒットしないという問題がある。たとえば、「婚活」という文字列で検索すると、「結婚」、「活動」、「結婚活動」という文字列を含むファイルが存在しても、「結婚」や「活動」で検索をしていないため、当該ファイルを特定することができない。このように、基礎単語「結婚」の末尾文字「婚」と基礎単語「活動」の先頭文字「活」との間でいわゆる泣き別れが発生することとなる。
【０００８】
なお、「婚」で終わる基礎単語や「活」で始まる基礎単語を検索し、かつ、その相互のビットマップの組合せを網羅し、各ビットマップのリードとＡＮＤ演算で候補ファイルを特定することは可能であるが、キーワード内の検索などの一連の処理に時間を要するだけでなく、ビットマップのハッシュ処理から発生する検索ノイズのため、候補ファイルの絞込み性能が期待できない。
【０００９】
本発明は、上述した従来技術による問題点を解消するため、基礎単語や文字の存否を示すインデックス情報の生成の高速化およびインデックス情報のサイズの最適化を図ることができる情報生成プログラム、情報生成装置、および情報生成方法を提供することを目的とする。また、このようなインデックス情報を用いることで、検索ノイズの低減化を図ることができる情報検索プログラム、情報検索装置、および情報検索方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明にかかる情報生成プログラム、情報生成装置、および情報生成方法は、文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計し、集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定し、前記対象ファイル群の中から選ばれた対象ファイルの中から、特定された降順の順位までの特定の指定単語を検出し、検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成することを要件とする。
【００１１】
また、本発明にかかる情報検索プログラム、情報検索装置、および情報検索方法は、検索文字列の入力を受け付け、文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定し、特定された対象ファイルの中から前記検索文字列に関する情報を検索し、検索された検索結果を出力することを要件とする。
【発明の効果】
【００１２】
本情報生成プログラム、情報生成装置、および情報生成方法によれば、基礎単語や文字の存否を示すインデックス情報の生成の高速化およびインデックス情報のサイズの最適化を図ることができるという効果を奏する。また、本情報検索プログラム、情報検索装置、および情報検索方法によれば、検索ノイズの低減化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、情報生成装置における情報生成の一例（その１）を示す説明図である。
【図２】図２は、非特定単一文字の分割例を示す説明図である。
【図３】図３は、情報生成装置における情報生成の一例（その２）を示す説明図である。
【図４】図４は、実施の形態にかかる情報生成装置のハードウェア構成例を示すブロック図である。
【図５】図５は、情報生成装置の機能的構成例を示すブロック図である。
【図６】図６は、マップ生成例（その１）を示す説明図である。
【図７】図７は、マップ生成例（その２）を示す説明図である。
【図８−１】図８−１は、マップ生成例（その３）を示す説明図（前半）である。
【図８−２】図８−２は、マップ生成例（その３）を示す説明図（後半）である。
【図９】図９は、マップ生成例（その４）を示す説明図である。
【図１０】図１０は、情報生成装置５００による情報生成処理手順を示すフローチャートである。
【図１１】図１１は、図１０に示した集計処理（ステップＳ１００１）の詳細な処理手順を示すフローチャートである。
【図１２】図１２は、図１１に示した対象ファイルＦｉの集計処理（ステップＳ１１０３）の詳細な処理手順を示すフローチャートである。
【図１３】図１３は、図１２に示した基礎単語集計処理（ステップＳ１２０２）の詳細な処理手順を示すフローチャートである。
【図１４】図１４は、図１３に示した最長一致検索処理（ステップＳ１３０１）の詳細な処理手順を示すフローチャートである。
【図１５】図１５は、図１０に示したマップ割当数決定処理（ステップＳ１００２）の詳細な処理手順を示すフローチャートである。
【図１６】図１６は、図１０に示したマップ生成処理（ステップＳ１００３）の詳細な処理手順を示すフローチャートである。
【図１７】図１７は、図１６に示した対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）の詳細な処理手順を示すフローチャートである。
【図１８】図１８は、図１７で示した特定基礎単語出現マップ生成処理（ステップＳ１７０２）の詳細な処理手順を示すフローチャートである。
【図１９】図１９は、図１７で示した特定単一文字出現マップ生成処理（ステップＳ１７０３）の詳細な処理手順を示すフローチャートである。
【図２０】図２０は、図１９で示した分割文字コード出現マップ生成処理（ステップＳ１９０３）の詳細な処理手順を示すフローチャートである。
【図２１】図２１は、図１７で示した連接文字列出現マップ生成処理（ステップＳ１７０４）の詳細な処理手順を示すフローチャートである。
【図２２】図２２は、図２１で示した連接文字列特定処理（ステップＳ２１０１）の詳細な処理手順を示すフローチャートである。
【図２３】図２３は、情報検索装置の機能的構成例を示すブロック図である。
【図２４】図２４は、情報検索処理の具体例（その１）を示す説明図である。
【図２５】図２５は、情報検索処理の具体例（その２）を示す説明図である。
【図２６】図２６は、情報検索処理の具体例（その３）を示す説明図である。
【図２７】図２７は、情報検索処理の具体例（その４）を示す説明図である。
【図２８】図２８は、情報検索処理の具体例（その５）を示す説明図である。
【図２９】図２９は、情報検索処理の具体例（その６）を示す説明図である。
【図３０】図３０は、情報検索処理の具体例（その７）を示す説明図である。
【図３１】図３１は、情報検索装置２３００による情報検索処理手順を示すフローチャートである。
【図３２−１】図３２−１は、図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その１）である。
【図３２−２】図３２−２は、図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その２）である。
【図３３】図３３は、図３２−２に示した最長一致検索処理（ステップＳ３２０２）の詳細な処理手順を示すフローチャートである。
【図３４】図３４は、図３２−２で示した連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）の詳細な処理手順を示すフローチャートである。
【図３５】図３５は、マップ突き出しを示す説明図である。
【図３６】図３６は、対象ファイルの追加により複数個にセグメント化された出現マップ群を用いた場合の情報検索処理手順を示すフローチャートである。
【図３７】図３７は、図３６に示した情報検索処理（ステップＳ３６０２）における、ファイル特定処理（ステップＳ３１０４）の一部を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明にかかる情報生成プログラム、情報検索プログラム、情報生成装置、情報検索装置、情報生成方法、および情報検索方法の実施の形態を詳細に説明する。
【００１５】
［情報生成プログラム／装置／方法］
まず、情報生成プログラム、情報生成装置、および情報生成方法について説明する。
【００１６】
＜情報生成の一例（その１）＞
図１は、情報生成装置における情報生成の一例（その１）を示す説明図である。図１において、対象ファイル群Ｆは、対象ファイルの集合である。各対象ファイルは、文字列が記述された電子データである。対象ファイルは、たとえば、辞書や辞典、電子書籍、Ｗｅｂページなどの電子データであり、テキスト、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で記述されている。
【００１７】
情報生成装置は、（Ａ）対象ファイル群Ｆからの集計、（Ｂ）出現頻度の降順でのソート、（Ｃ）目標出現率の順位までの抽出、（Ｄ）マップ生成、という４つのフェーズを実行する。以下、基礎単語と単一文字に分けて説明する。
【００１８】
（Ａ１）まず、情報生成装置は、対象ファイル群Ｆを読み込んで、基礎単語の出現頻度を計数する。ここで、基礎単語とは、単語群のうちあらかじめ指定された単語を意味する。たとえば、辞書の場合、見出し語が基礎単語に該当する。情報生成装置は、基礎単語を集めた基礎単語構造体を参照して、基礎単語構造体内の基礎単語に一致する文字列が対象ファイルに存在する場合に、当該基礎単語の出現頻度（初期値は０）を１加算する。基礎単語構造体とは、基礎単語が記述されたデータ構造体である。
【００１９】
（Ｂ１）対象ファイル群Ｆにおいて基礎単語の集計が終了すると、情報生成装置は、基礎単語出現頻度テーブル１０１を、出現頻度の降順にソートする。すなわち、出現頻度の高い順に並べ替え、出現頻度が最も高い基礎単語から順位付けをおこなう。
【００２０】
（Ｃ１）つぎに、情報生成装置は、（Ｂ１）ソート後の基礎単語出現頻度テーブル１０１を参照して、目標出現率Ｐｗまでの順位の基礎単語を抽出する。具体的には、情報生成装置は、全基礎単語の出現頻度の総和（総出現頻度）を分母とし、順位が１位の基礎単語から降順に出現頻度を累計して分子とし、各順位までの出現率を算出する。
【００２１】
たとえば、総出現頻度が５００００、１位からｘ位までの基礎単語群の累計出現頻度が４５０００とすると、ｘ位までの出現頻度は、（４５０００／５００００）×１００＝９０［％］となる。ここで、目標出現率Ｐｗが９０［％］である場合は、上位ｘ位までの基礎単語を抽出することとなる。なお、（Ｃ１）で抽出された基礎単語を、元の基礎単語群と区別するために、「特定基礎単語（群）」と称す。
【００２２】
（Ｄ１）最後に、情報生成装置は、特定基礎単語群について、特定基礎単語出現マップＭ１を生成する。特定基礎単語出現マップＭ１とは、特定基礎単語ごとに、特定基礎単語の存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。各対象ファイルにおいて、１回でも出現した場合は該当する対象ファイルのビットをＯＮにし、１回も出現しなかった場合は該当する対象ファイルのビットをＯＦＦのままにしておく。
【００２３】
なお、本明細書では、「ビットをＯＮ」とした場合は、そのビットの値を“１”にし、「ビットをＯＦＦ」とした場合は、そのビットの値を“０”として説明する。なお、「ビットをＯＮ」とした場合は、そのビットの値を“０”にし、「ビットをＯＦＦ」とした場合は、そのビットの値を“１”にしてもよい。つぎに、単一文字について説明する。
【００２４】
（Ａ２）まず、情報生成装置は、対象ファイル群Ｆを読み込んで、単一文字の出現頻度を計数する。ここで、単一文字とは、所定ビット長の文字コードで表現された文字である。たとえば、ＵＴＦ（ＵＣＳ／Ｕｎｉｃｏｄｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  Ｆｏｒｍａｔ）１６ビット文字コードの文字などがある。情報生成装置は、単一文字を集めた単一文字構造体を参照して、単一文字構造体内の単一文字に一致する単一文字が対象ファイルに存在する場合に、当該単一文字の出現頻度（初期値は０）を１加算する。単一文字構造体とは、単一文字が記述されたデータ構造体である。
【００２５】
（Ｂ２）対象ファイル群Ｆにおいて単一文字の集計が終了すると、情報生成装置は、単一文字出現頻度テーブル１０２を、出現頻度の降順にソートする。すなわち、出現頻度の高い順に並べ替え、出現頻度が最も高い単一文字から順位付けをおこなう。
【００２６】
（Ｃ２１）つぎに、情報生成装置は、（Ｂ２）ソート後の単一文字出現頻度テーブル１０２を参照して、目標出現率Ｐｃまでの順位の単一文字を抽出する。具体的には、情報生成装置は、全単一文字の出現頻度の総和（総出現頻度）を分母とし、順位が１位の単一文字から降順に出現頻度を累計して分子とし、各順位までの出現率を算出する。
【００２７】
たとえば、総出現頻度が５００００、１位からｙ位までの単一文字群の累計出現頻度が４００００とすると、ｙ位までの出現頻度は、（５００００／４００００）×１００＝８０［％］となる。ここで、目標出現率Ｐｃが８０［％］である場合は、上位ｙ位までの単一文字を抽出することとなる。なお、（Ｃ２１）で抽出された単一文字を、元の単一文字群と区別するために、「特定単一文字（群）」と称す。
【００２８】
（Ｃ２２）また、単一文字群のうち特定単一文字群から外された単一文字（以下、「非特定単一文字（群）」）は、出現頻度が各特定単一文字よりも低いため、その文字コードを分割する。具体的には、非特定単一文字の文字コードを、上位ビットの文字コードと、下位ビットの文字コードに分割する。
【００２９】
たとえば、単一文字がＵＴＦ１６ビット文字コードで表現されている場合は、上位８ビットの文字コードと下位８ビットの文字コードに分割する。この場合、分割されたいずれの文字コードも、０ｘ００〜０ｘＦＦのコードで表現される。このように、上位ビットの文字コードを「上位分割文字コード（群）」と称し、下位ビットの文字コードを「下位分割文字コード（群）」と称す。
【００３０】
（Ｄ２）そして、情報生成装置は、（Ｃ２１）で抽出された特定単一文字群について、特定単一文字出現マップＭ２を生成する。特定単一文字出現マップＭ２とは、特定単一文字ごとに、特定単一文字の存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。各対象ファイルにおいて、１回でも出現した場合は該当する対象ファイルのビットをＯＮにし、１回も出現しなかった場合は該当する対象ファイルのビットをＯＦＦのままにしておく。
【００３１】
（Ｄ３）また、情報生成装置は、（Ｃ２２）で分割された上位分割文字コード群について、上位分割文字コード出現マップＭ３を生成する。上位分割文字コード出現マップＭ３とは、上位分割文字コードごとに、上位分割文字コードの存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。上位分割文字コードおよび下位分割文字コードは、ともに０ｘ００〜０ｘＦＦの範囲で表現されるが、上位分割文字コード出現マップＭ３では、下位分割文字コードとしてではなく、上位分割文字コードとして出現した場合に、該当する対象ファイルのビットがＯＮになる。
【００３２】
（Ｄ４）同様に、情報生成装置は、（Ｃ２２）で分割された下位分割文字コード群について、下位分割文字コード出現マップＭ４を生成する。下位分割文字コード出現マップＭ４とは、下位分割文字コードごとに、下位分割文字コードの存否を対象ファイルごとに示したビットマップ形式のインデックス情報である。上位分割文字コードおよび下位分割文字コードは、ともに０ｘ００〜０ｘＦＦの範囲で表現されるが、下位分割文字コード出現マップＭ４では、上位分割文字コードとしてではなく、下位分割文字コードとして出現した場合に、該当する対象ファイルのビットがＯＮになる。
【００３３】
このように、目標出現率Ｐｗ，Ｐｃにより、特定基礎単語および特定単一文字を制限するため、目的や用途に応じて目標出現率Ｐｗ，Ｐｃを設定することで、必要最小限のマップサイズで各種出現マップを生成することができる。換言すれば、すべての基礎単語や単一文字についてマップ上でレコードを割り当てると、出現頻度の低い基礎単語や単一文字については、“０”のビット列が長くなり、マップ内で無駄が発生する。
【００３４】
このため、目的や用途に応じて目標出現率Ｐｗ，Ｐｃを設定し、その目標出現率Ｐｗ，Ｐｃに応じた分だけ特定基礎単語や特定単一文字として登録してマップ生成することで、マップサイズの縮小化を図ることができる。また、特定基礎単語から外された基礎単語であっても、基礎単語を構成する単一文字の各々が特定単一文字出現マップＭ２に設定されるため問題ない。また、非特定単一文字についても分割されて上位分割文字コード出現マップＭ３と下位分割文字コード出現マップＭ４に設定されるため問題ない。
【００３５】
また、文字の連続性についても、後述する連接文字列出現マップＭ５で設定可能であるため問題ない。このように、非特定基礎単語については、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、および連接文字列出現マップＭ５で設定可能となる。したがって、これらの出現マップのＡＮＤをとることで、非特定基礎単語の存否を判断することができる。
【００３６】
なお、（Ａ）〜（Ｄ）のフェーズは、基礎単語と単一文字とにわけて実行してもよいが、１文字ずつシフトすることで、基礎単語と単一文字とを特定して、同時並行で実行することでマップ生成の高速化を実現することができる。
【００３７】
＜非特定単一文字の分割例＞
図２は、非特定単一文字の分割例を示す説明図である。図２では、（Ａ）非特定単一文字「芝」と（Ｂ）非特定単一文字「兆」を例に挙げて説明する。「芝」の文字コードは「９Ｄ８２」であるため、上位ビットの「０ｘ９Ｄ」と下位ビットの「０ｘ８２」に分割される。同様に、「兆」の文字コードは「５１４６」であるため、上位ビットの「０ｘ５１」と下位ビットの「０ｘ４６」に分割される。
【００３８】
＜情報生成の一例（その２）＞
図３は、情報生成装置における情報生成の一例（その２）を示す説明図である。（Ｄ５）図３に示したように、情報生成装置は、図１の（Ｄ）フェーズにおいて、連接文字列出現マップＭ５も生成する。連接文字列とは、２以上の文字が連続する文字列である。たとえば、「結婚」は、特定単一文字「結」と特定単一文字「婚」の２連接文字列である。また、単一文字「芝」は非特定単一文字であるため、上位分割文字コード“０ｘ９Ｄ”と下位分割文字コード“０ｘ８２”に分割される。このように、上位分割文字コードと下位分割文字コードが連続する場合も、２連接文字列である。
【００３９】
また、文字列「芝居」については、上位分割文字コード“０ｘ９Ｄ”と下位分割文字コード“０ｘ８２”と特定単一文字「居」との３連接文字列である。「芝」と「居」の文字境界に着目すると、下位分割文字コード“０ｘ８２”と特定単一文字「居」との２連接文字列となる。同様に、文字列「人工芝」については、特定単一文字「人」，「工」と上位分割文字コード“０ｘ９Ｄ”と下位分割文字コード“０ｘ８２”との４連接文字列である。「工」と「芝」の文字境界に着目すると、特定単一文字「工」と上位分割文字コード“０ｘ９Ｄ”との２連接文字列となる。なお、本明細書では、説明の簡略化のため、２連接文字列を用いて説明することとする。
【００４０】
＜情報生成装置のハードウェア構成＞
図４は、実施の形態にかかる情報生成装置のハードウェア構成例を示すブロック図である。図４において、情報生成装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、磁気ディスクドライブ４０４と、磁気ディスク４０５と、光ディスクドライブ４０６と、光ディスク４０７と、ディスプレイ４０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０９と、キーボード４１０と、マウス４１１と、スキャナ４１２と、プリンタ４１３と、を備えている。また、各構成部はバス４００によってそれぞれ接続されている。
【００４１】
ここで、ＣＰＵ４０１は、情報生成装置の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。磁気ディスクドライブ４０４は、ＣＰＵ４０１の制御にしたがって磁気ディスク４０５に対するデータのリード／ライトを制御する。磁気ディスク４０５は、磁気ディスクドライブ４０４の制御で書き込まれたデータを記憶する。
【００４２】
光ディスクドライブ４０６は、ＣＰＵ４０１の制御にしたがって光ディスク４０７に対するデータのリード／ライトを制御する。光ディスク４０７は、光ディスクドライブ４０６の制御で書き込まれたデータを記憶したり、光ディスク４０７に記憶されたデータをコンピュータに読み取らせたりする。
【００４３】
ディスプレイ４０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ４０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４４】
インターフェース（以下、「Ｉ／Ｆ」と略する。）４０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１４に接続され、このネットワーク４１４を介して他の装置に接続される。そして、Ｉ／Ｆ４０９は、ネットワーク４１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４５】
キーボード４１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス４１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４６】
スキャナ４１２は、画像を光学的に読み取り、情報生成装置内に画像データを取り込む。なお、スキャナ４１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ４１３は、画像データや文書データを印刷する。プリンタ４１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４７】
＜情報生成装置の機能的構成＞
図５は、情報生成装置の機能的構成例を示すブロック図である。情報生成装置５００は、設定部５０１と、集計部５０２と、順位特定部５０３と、検出部５０４と、分割部５０５と、生成部５０６とを備えている。設定部５０１〜生成部５０６は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９により、その機能を実現する。
【００４８】
設定部５０１は、目標出現率Ｐｗ，Ｐｃを設定する機能を有する。具体的には、たとえば、キーボード４１０やマウス４１１の操作によって入力された目標出現率Ｐｗ，Ｐｃを記憶装置に保存する。
【００４９】
集計部５０２は、文字列が記述された対象ファイル群Ｆの中から指定単語ごとの出現頻度を集計する。具体的には、たとえば、集計部５０２は、図１に示したように、基礎単語構造体を参照して、注目する単一文字を先頭文字とする基礎単語を、注目する単一文字からの最長一致検索により検索する。そして、最長一致検索された基礎単語のレコードを基礎単語出現頻度テーブル１０１に追加登録する。すでに追加登録済である場合は、追加登録する必要はない。そして、最長一致検索された基礎単語のレコードにおいて出現頻度を１加算する。
【００５０】
また、集計部５０２は、文字列が記述された対象ファイル群Ｆの中から単一文字ごとの出現頻度を集計する。具体的には、たとえば、集計部５０２は、図１に示したように、単一文字構造体を参照して、注目する単一文字のレコードを基礎単語出現頻度テーブル１０１に追加登録する。すでに追加登録済である場合は、追加登録する必要はない。そして、注目する単一文字のレコードにおいて出現頻度を１加算する。
【００５１】
順位特定部５０３は、集計部５０２によって集計された指定単語ごとの出現頻度に基づいて、指定単語に関する目標出現率までの降順の順位を特定する。具体的には、たとえば、順位特定部５０３は、設定部５０１によって設定された基礎単語に関する目標出現率Ｐｗまでの降順の順位を特定する。すなわち、図１で説明したように、基礎単語出現頻度テーブル１０１を出現頻度の降順にソートしておく。
【００５２】
そして、注目する順位を第ｘ位とし、ｘをｘ＝１からインクリメントしながら、第１位から第ｘ位までの基礎単語群の累積出現頻度を全基礎単語の総出現頻度で除算することで、第ｘ位までの出現率を算出する。算出された出現率が目標出現率Ｐｗ以内であれば、ｘをインクリメントして、再度第ｘ位までの出現率を算出する。
【００５３】
そして、目標出現率Ｐｗを超えた場合、ｘを１つデクリメントすることで、目標出現率Ｐｗまでの順位（デクリメント後のｘの値）を特定することとなる。これにより、出現頻度の降順で第１位の基礎単語から目標出現率Ｐｗとなる順位の基礎単語までの基礎単語群が、特定基礎単語群となる。
【００５４】
また、順位特定部５０３は、集計部５０２によって集計された単一文字ごとの出現頻度に基づいて、単一文字に関する目標出現率までの降順の順位を特定する。具体的には、たとえば、順位特定部５０３は、設定部５０１によって設定された単一文字に関する目標出現率Ｐｃまでの降順の順位を特定する。すなわち、図１で説明したように、単一文字出現頻度テーブル１０２を出現頻度の降順にソートしておく。
【００５５】
そして、注目する順位を第ｙ位とし、ｙをｙ＝１からインクリメントしながら、第１位から第ｙ位までの単一文字群の累積出現頻度を全単一文字の総出現頻度で除算することで、第ｙ位までの出現率を算出する。算出された出現率が目標出現率Ｐｃ以内であれば、ｙをインクリメントして、再度第ｙ位までの出現率を算出する。
【００５６】
そして、目標出現率Ｐｃを超えた場合、ｙを１つデクリメントすることで、目標出現率Ｐｃまでの順位（デクリメント後のｙの値）を特定することとなる。これにより、出現頻度の降順で第１位の単一文字から目標出現率Ｐｃとなる順位の単一文字までの単一文字群が、特定単一文字群となる。
【００５７】
検出部５０４は、対象ファイル群Ｆの中から選ばれた対象ファイルの中から順位特定部５０３によって特定された降順の順位までの特定の指定単語を検出する。具体的には、たとえば、対象ファイル内の注目単一文字を先頭から１文字ずつシフトしていく。このとき、順位特定部５０３によって特定された特定基礎単語群のうち、注目する単一文字を先頭文字とする特定基礎単語を、最長一致検索により検出する。
【００５８】
また、検出部５０４は、対象ファイル群Ｆの中から選ばれた対象ファイルの中から順位特定部５０３によって特定された降順の順位までの特定の単一文字を検出する。具体的には、たとえば、対象ファイル内の注目単一文字を先頭から１文字ずつシフトしていく。このとき、順位特定部５０３によって特定された特定単一文字に一致する注目単一文字を検出する。
【００５９】
分割部５０５は、順位特定部５０３によって特定された降順の順位よりも下位の順位となる単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する。具体的には、たとえば、図２に示したように、非特定単一文字について上位８ビットの上位分割文字コードと下位８ビットの下位分割文字コードに分割する。
【００６０】
生成部５０６は、検出部５０４によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を対象ファイルごとに示すインデックス情報を生成する。具体的には、たとえば、生成部５０６は、検出部５０４によって検出された特定基礎単語ごとに、特定基礎単語の存否を対象ファイルごとに示す特定基礎単語出現マップＭ１を生成する。
【００６１】
また、生成部５０６は、検出部５０４によって検出された特定の単一文字ごとに、当該特定の単一文字の存否を対象ファイルごとに示すインデックス情報を生成する。具体的には、たとえば、生成部５０６は、検出部５０４によって検出された特定単一文字ごとに、特定単一文字の存否を対象ファイルごとに示す特定単一文字出現マップＭ２を生成する。
【００６２】
また、生成部５０６は、分割部５０５によって分割された上位ビットの分割文字コードごとに、当該分割文字コードの存否を対象ファイルごとに示すインデックス情報（上位分割文字コード出現マップＭ３）を生成する。また、生成部５０６は、分割部５０５によって分割された下位ビットの分割文字コードごとに、当該分割文字コードの存否を対象ファイルごとに示すインデックス情報（下位分割文字コード出現マップＭ４）を生成する。
【００６３】
また、生成部５０６は、連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報（連接文字列出現マップＭ５）を生成する。連接文字列としては、具体的には、たとえば、順位特定部５０３によって特定された降順の順位までの複数の特定単一文字による連接文字列や特定単一文字と分割文字コードが混在する連接文字列がある。たとえば、２連接文字列には、特定単一文字の２連接文字列がある。
【００６４】
また、２連接文字列には、特定単一文字、上位分割文字コードの順で連続する連接文字列がある。また、２連接文字列には、下位分割文字コード、特定単一文字の順で連続する連接文字列がある。また、２連接文字列には、上位分割文字コード、下位分割文字コードの順で連続する連接文字列（すなわち、分割された非特定文字）がある。また、２連接文字列には、下位分割文字コード、上位分割文字コードの順で連続する連接文字列（すなわち、分割された２連接非特定文字の境界）がある。連接文字列出現マップＭ５では、このような連接文字列が出現した対象ファイルに対してビットをＯＮにすることとなる。
【００６５】
＜マップ生成の具体例＞
つぎに、マップ生成の具体例について説明する。なお、本例では、連接文字列の連接数を２とする。また、マップ生成では、単一文字、２連接文字列、基礎単語について、まだ１回も出現していない場合は、そのマップ（ファイル番号１〜ｎまでのｎ個のビット列（値は“０”））を生成し、今回対象となっている対象ファイルＦｉのビットをＯＮにすることとなる。一方、すでに対象ファイルＦ１〜Ｆ（ｉ−１）までに生成済みの場合は、対象ファイルＦｉのビットをＯＮにすることとなる。
【００６６】
図６は、マップ生成例（その１）を示す説明図である。図６では、対象ファイルＦｉ内に『私の結婚活動の記録』という文字列が記述されているものとする。マップ生成では、先頭文字を対象文字として、１文字ずつ末尾方向へシフトしていく。図中、矢印で指している文字が対象文字である。
【００６７】
（Ａ）まず、先頭文字「私」が対象文字である。対象文字「私」は特定単一文字であるため、特定単一文字「私」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「私」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。さらに、対象文字「私」を先頭文字とする「私の結婚活動の記録」の中から対象文字「私」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００６８】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「の」にする。まず、対象文字「の」は特定単一文字であるため、特定単一文字「の」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「の」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「の」にシフトされた場合、「私の」という２連接文字列が得られるため、２連接文字列「私の」の２連接文字列出現マップＭ５を指定する。
【００６９】
そして、２連接文字列「私の」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「の」を先頭文字とする「の結婚活動の記録」の中から対象文字「の」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００７０】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「結」にする。まず、対象文字「結」は特定単一文字であるため、特定単一文字「結」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「結」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「結」にシフトされた場合、「の結」という２連接文字列が得られるため、２連接文字列「の結」の２連接文字列出現マップＭ５を指定する。
【００７１】
そして、２連接文字列「の結」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「結」を先頭文字とする「結婚活動の記録」の中から対象文字「結」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「結婚」が最長一致するため、特定基礎単語「結婚」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「結婚」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【００７２】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「婚」にする。まず、対象文字「婚」は特定単一文字であるため、特定単一文字「婚」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「婚」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「婚」にシフトされた場合、「結婚」という２連接文字列が得られるため、２連接文字列「結婚」の２連接文字列出現マップＭ５を指定する。
【００７３】
そして、２連接文字列「結婚」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「婚」を先頭文字とする「婚活動の記録」の中から対象文字「婚」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００７４】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を「活」にする。まず、対象文字「活」は特定単一文字であるため、単一文字「活」の単一文字出現マップを指定する。そして、特定単一文字「活」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「活」にシフトされた場合、「婚活」という２連接文字列が得られるため、２連接文字列「婚活」の２連接文字列出現マップＭ５を指定する。
【００７５】
そして、２連接文字列「結活」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「活」を先頭文字とする「活動の記録」の中から対象文字「活」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「活動」が最長一致するため、特定基礎単語「活動」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「活動」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【００７６】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「動」にする。まず、対象文字「動」は特定単一文字であるため、特定単一文字「動」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「動」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「動」にシフトされた場合、「活動」という２連接文字列が得られるため、２連接文字列「活動」の２連接文字列出現マップＭ５を指定する。
【００７７】
そして、２連接文字列「活動」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「動」を先頭文字とする「動の記録」の中から対象文字「動」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００７８】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を「の」にする。まず、対象文字「の」は特定単一文字であるため、特定単一文字「の」の特定単一文字出現マップＭ２を指定する。そして、対象文字「の」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｂ）でＯＮになっているため、何もしないこととなる。また、対象文字が「の」にシフトされた場合、「動の」という２連接文字列が得られるため、２連接文字列「動の」の２連接文字列出現マップＭ５を指定する。
【００７９】
そして、２連接文字列「動の」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「の」を先頭文字とする「の記録」の中から対象文字「の」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８０】
（Ｈ）つぎに、対象文字を１文字シフトして、対象文字を「記」にする。まず、対象文字「記」は特定単一文字であるため、単一文字「記」の単一文字出現マップを指定する。そして、特定単一文字「記」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「記」にシフトされた場合、「の記」という２連接文字列が得られるため、２連接文字列「の記」の２連接文字列出現マップＭ５を指定する。
【００８１】
そして、２連接文字列「の記」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「記」を先頭文字とする「記録」の中から対象文字「記」を先頭文字とする基礎単語の最長一致検索を実行する。この場合、「記録」が最長一致するため、特定基礎単語「記録」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「記録」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【００８２】
（Ｉ）つぎに、対象文字を１文字シフトして、対象文字を「録」にする。まず、対象文字「録」は特定単一文字であるため、特定単一文字「録」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「録」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「録」にシフトされた場合、「記録」という２連接文字列が得られるため、２連接文字列「記録」の２連接文字列出現マップＭ５を指定する。
【００８３】
そして、２連接文字列「記録」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「録」を先頭文字とする「録」の中から対象文字「録」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８４】
図７は、マップ生成例（その２）を示す説明図である。図７では分割文字コードを含む場合のマップ生成例を示す。単一文字を分割した場合は、分割文字コードを１文字として扱ってシフトすることとなる。図７では、対象ファイルＦｉ内に『竜馬は脱藩した』という文字列が記述されているものとする。
【００８５】
（Ａ）まず、先頭文字「竜」が対象文字である。対象文字「竜」は特定単一文字であるため、特定単一文字「竜」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「竜」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。さらに、対象文字「竜」を先頭文字とする「竜馬は脱藩した」の中から対象文字「竜」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８６】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「馬」にする。まず、対象文字「馬」は特定単一文字であるため、特定単一文字「馬」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「馬」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「馬」にシフトされた場合、「竜馬」という２連接文字列が得られるため、２連接文字列「竜馬」の２連接文字列出現マップＭ５を指定する。
【００８７】
そして、２連接文字列「竜馬」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「馬」を先頭文字とする「馬は脱藩した」の中から対象文字「馬」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００８８】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「は」にする。まず、対象文字「は」は特定単一文字であるため、特定単一文字「は」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「は」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「は」にシフトされた場合、「馬は」という２連接文字列が得られるため、２連接文字列「馬は」の２連接文字列出現マップＭ５を指定する。
【００８９】
そして、２連接文字列「馬は」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「は」を先頭文字とする「は脱藩した」の中から対象文字「は」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９０】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「脱」にする。まず、対象文字「脱」は特定単一文字ではないため、対象文字「脱」の文字コード「０ｘ８１３１」を、上位分割文字コード「０ｘ８１」と下位分割文字コード「０ｘ３１」に分割する。そして、対象文字を上位分割文字コード「０ｘ８１」にし、上位分割文字コード「０ｘ８１」の上位分割文字コード出現マップＭ３を指定する。つぎに、上位分割文字コード「０ｘ８１」の上位分割文字コード出現マップＭ３について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が上位分割文字コード「０ｘ８１」にシフトされた場合、「は  ０ｘ８１」という２連接文字列が得られるため、２連接文字列「は  ０ｘ８１」の２連接文字列出現マップＭ５を指定する。
【００９１】
そして、２連接文字列「は  ０ｘ８１」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘ８１」を先頭文字とする「０ｘ８１  ０ｘ３１  藩した」の中から対象文字「０ｘ８１」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９２】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を下位分割文字コード「０ｘ３１」にする。まず、下位分割文字コード「０ｘ３１」の下位分割文字コード出現マップＭ４を指定する。つぎに、下位分割文字コード「０ｘ３１」の下位分割文字コード出現マップＭ４について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が下位分割文字コード「０ｘ３１」にシフトされた場合、「０ｘ８１  ０ｘ３１」という２連接文字列が得られるため、２連接文字列「０ｘ８１  ０ｘ３１」の２連接文字列出現マップＭ５を指定する。
【００９３】
そして、２連接文字列「０ｘ８１  ０ｘ３１」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘ３１」を先頭文字とする「０ｘ３１  藩した」の中から対象文字「０ｘ３１」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９４】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「藩」にする。まず、対象文字「藩」は特定単一文字ではないため、対象文字「藩」の文字コード「０ｘＥ９８５」を、上位分割文字コード「０ｘＥ９」と下位分割文字コード「０ｘ８５」に分割する。そして、対象文字を上位分割文字コード「０ｘＥ９」にし、上位分割文字コード「０ｘＥ９」の上位分割文字コード出現マップＭ３を指定する。
【００９５】
つぎに、上位分割文字コード「０ｘＥ９」の上位分割文字コード出現マップＭ３について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が上位分割文字コード「０ｘＥ９」にシフトされた場合、「０ｘ３１  ０ｘＥ９」という２連接文字列が得られるため、２連接文字列「０ｘ３１  ０ｘＥ９」の２連接文字列出現マップＭ５を指定する。
【００９６】
そして、２連接文字列「０ｘ３１  ０ｘＥ９」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘＥ９」を先頭文字とする「０ｘＥ９  ０ｘ８５  した」の中から対象文字「０ｘＥ９」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９７】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を下位分割文字コード「０ｘ８５」にする。まず、下位分割文字コード「０ｘ８５」の下位分割文字コード出現マップＭ４を指定する。つぎに、下位分割文字コード「０ｘ８５」の下位分割文字コード出現マップＭ４について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が下位分割文字コード「０ｘ８５」にシフトされた場合、「０ｘＥ９  ０ｘ８５」という２連接文字列が得られるため、２連接文字列「０ｘＥ９  ０ｘ８５」の２連接文字列出現マップＭ５を指定する。
【００９８】
そして、２連接文字列「０ｘＥ９  ０ｘ８５」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「０ｘ８５」を先頭文字とする「０ｘ８５  した」の中から対象文字「０ｘ８５」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【００９９】
（Ｈ）つぎに、対象文字を１文字シフトして、対象文字を「し」にする。まず、対象文字「し」は特定単一文字であるため、特定単一文字「し」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「し」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「し」にシフトされた場合、「０ｘ８５  し」という２連接文字列が得られるため、２連接文字列「０ｘ８５  し」の２連接文字列出現マップＭ５を指定する。
【０１００】
そして、２連接文字列「０ｘ８５  し」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「し」を先頭文字とする「した」の中から対象文字「し」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【０１０１】
（Ｉ）つぎに、対象文字を１文字シフトして、対象文字を「た」にする。まず、対象文字「た」は特定単一文字であるため、特定単一文字「た」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「た」について特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「た」にシフトされた場合、「した」という２連接文字列が得られるため、２連接文字列「した」の２連接文字列出現マップＭ５を指定する。
【０１０２】
そして、２連接文字列「した」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「た」を先頭文字とする「た」の中から対象文字「た」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、最長一致する特定基礎単語が存在しないため、特定基礎単語出現マップＭ１は生成されない。
【０１０３】
図８−１および図８−２は、マップ生成例（その３）を示す説明図である。図８−１および図８−２では、対象ファイルＦｉ内に英文文字列『ｔｈａｔ□ｉｓ□ａ□ｐｅｎ』が記述されているものとする。なお、「□」はブランクである。ブランクも１文字として扱う。
【０１０４】
（Ａ）まず、先頭文字「ｔ」が対象文字である。対象文字「ｔ」は特定単一文字であるため、特定単一文字「ｔ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｔ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。
【０１０５】
さらに、対象文字「ｔ」を先頭文字とする「ｔｈａｔ□ｉｓ□ａ□ｐｅｎ」の中から対象文字「ｔ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ｔｈａｔ」（代名詞）が最長一致するため、特定基礎単語「ｔｈａｔ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｔｈａｔ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１０６】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「ｈ」にする。まず、対象文字「ｈ」は特定単一文字であるため、特定単一文字「ｈ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｈ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｈ」にシフトされた場合、「ｔｈ」という２連接文字列が得られるため、２連接文字列「ｔｈ」の２連接文字列出現マップＭ５を指定する。
【０１０７】
そして、２連接文字列「ｔｈ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。なお、英単語では前方一致の検索が重視されるため、英単語の文字列の途中については、特定基礎単語の最長一致検索を行わない。
【０１０８】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「ａ」にする。まず、対象文字「ａ」は特定単一文字であるため、特定単一文字「ａ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ａ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ａ」にシフトされた場合、「ｈａ」という２連接文字列が得られるため、２連接文字列「ｈａ」の２連接文字列出現マップＭ５を指定する。
【０１０９】
そして、２連接文字列「ｈａ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１０】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「ｔ」にする。まず、対象文字「ｔ」は特定単一文字であるため、特定単一文字「ｔ」の特定単一文字出現マップＭ２を指定する。そして、対象文字「ｔ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ａ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「ｔ」にシフトされた場合、「ａｔ」という２連接文字列が得られるため、２連接文字列「ａｔ」の２連接文字列出現マップＭ５を指定する。
【０１１１】
そして、２連接文字列「ａｔ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１２】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を「□」にする。まず、対象文字「□」は特定単一文字であるため、特定単一文字「□」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「□」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「□」にシフトされた場合、「ｔ□」という２連接文字列が得られるため、２連接文字列「ｔ□」の２連接文字列出現マップＭ５を指定する。
【０１１３】
そして、２連接文字列「ｔ□」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１４】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「ｉ」にする。対象文字「ｉ」は特定単一文字であるため、特定単一文字「ｉ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｉ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｉ」にシフトされた場合、「□ｉ」という２連接文字列が得られるため、２連接文字列「□ｉ」の２連接文字列出現マップＭ５を指定する。
【０１１５】
そして、２連接文字列「□ｉ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「ｉ」を先頭文字とする「ｉｓ□ａ□ｐｅｎ」の中から対象文字「ｉ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ｉｓ」（ｂｅ動詞）が最長一致するため、特定基礎単語「ｉｓ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｉｓ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１６】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を「ｓ」にする。対象文字「ｓ」は特定単一文字であるため、特定単一文字「ｓ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｓ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｓ」にシフトされた場合、「ｉｓ」という２連接文字列が得られるため、２連接文字列「ｉｓ」の２連接文字列出現マップＭ５を指定する。
【０１１７】
そして、２連接文字列「ｉｓ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１１８】
（Ｈ）つぎに、対象文字を１文字シフトして、対象文字を「□」にする。まず、対象文字「□」は特定単一文字であるため、特定単一文字「□」の特定単一文字出現マップＭ２を指定する。そして、対象文字「□」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｅ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「□」にシフトされた場合、「ｓ□」という２連接文字列が得られるため、２連接文字列「ｓ□」の２連接文字列出現マップＭ５を指定する。
【０１１９】
そして、２連接文字列「ｓ□」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２０】
（Ｉ）つぎに、対象文字を１文字シフトして、対象文字を「ａ」にする。まず、対象文字「ａ」は特定単一文字であるため、特定単一文字「ａ」の特定単一文字出現マップＭ２を指定する。そして、対象文字「ａ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｃ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「ａ」にシフトされた場合、「□ａ」という２連接文字列が得られるため、２連接文字列「□ａ」の２連接文字列出現マップＭ５を指定する。
【０１２１】
そして、２連接文字列「□ａ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「ａ」を先頭文字とする「ａ□ｐｅｎ」の中から対象文字「ａ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ａ」（不定冠詞）が最長一致するため、特定基礎単語「ａ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ａ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２２】
（Ｊ）つぎに、対象文字を１文字シフトして、対象文字を「□」にする。まず、対象文字「□」は特定単一文字であるため、特定単一文字「□」の特定単一文字出現マップＭ２を指定する。そして、対象文字「□」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｅ）でＯＮになっているため、何もしないこととなる。また、対象文字が「□」にシフトされた場合、「ａ□」という２連接文字列が得られるため、２連接文字列「ａ□」の２連接文字列出現マップＭ５を指定する。
【０１２３】
そして、２連接文字列「ａ□」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２４】
（Ｋ）つぎに、対象文字を１文字シフトして、対象文字を「ｐ」にする。まず、対象文字「ｐ」は特定単一文字であるため、特定単一文字「ｐ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｐ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｐ」にシフトされた場合、「□ｐ」という２連接文字列が得られるため、２連接文字列「□ｐ」の２連接文字列出現マップＭ５を指定する。
【０１２５】
そして、２連接文字列「□ｐ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。さらに、対象文字「ｐ」を先頭文字とする「ｐｅｎ」の中から対象文字「ｐ」を先頭文字とする特定基礎単語の最長一致検索を実行する。この場合、「ｐｅｎ」（ペン）が最長一致するため、特定基礎単語「ｐｅｎ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｐｅｎ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２６】
（Ｌ）つぎに、対象文字を１文字シフトして、対象文字を「ｅ」にする。まず、対象文字「ｅ」は特定単一文字であるため、特定単一文字「ｅ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｅ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｅ」にシフトされた場合、「ｐｅ」という２連接文字列が得られるため、２連接文字列「ｐｅ」の２連接文字列出現マップＭ５を指定する。
【０１２７】
そして、２連接文字列「ｐｅ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１２８】
（Ｍ）つぎに、対象文字を１文字シフトして、対象文字を「ｎ」にする。まず、対象文字「ｎ」は特定単一文字であるため、特定単一文字「ｎ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｎ」にシフトされた場合、「ｅｎ」という２連接文字列が得られるため、２連接文字列「ｅｎ」の２連接文字列出現マップＭ５を指定する。
【０１２９】
そして、２連接文字列「ｅｎ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３０】
図９は、マップ生成例（その４）を示す説明図である。図９では、対象ファイルＦｉ内に英単語『ｉｎｔｅｒｎａｌ』が記述されているものとする。
【０１３１】
（Ａ）まず、先頭文字「ｉ」が対象文字である。対象文字「ｉ」は特定単一文字であるため、特定単一文字「ｉ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｉ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、先頭文字であるため、２連接文字列出現マップＭ５は生成されない。さらに、対象文字「ｉ」を先頭文字とする「ｉｎｔｅｒｎａｌ」の中から対象文字「ｉ」を先頭文字とする特定基礎単語の最長一致検索を実行する。
【０１３２】
この場合、「ｉｎｔｅｒｎａｌ」は特定基礎単語ではないため最長一致しないが、「ｉｎｔｅｒ」（内）が最長一致するため、特定基礎単語「ｉｎｔｅｒ」の特定基礎単語出現マップＭ１を指定する。そして、特定基礎単語「ｉｎｔｅｒ」の特定基礎単語出現マップＭ１について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３３】
（Ｂ）つぎに、対象文字を１文字シフトして、対象文字を「ｎ」にする。まず、対象文字「ｎ」は特定単一文字であるため、特定単一文字「ｎ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｎ」にシフトされた場合、「ｉｎ」という２連接文字列が得られるため、２連接文字列「ｉｎ」の２連接文字列出現マップＭ５を指定する。
【０１３４】
そして、２連接文字列「ｉｎ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３５】
（Ｃ）つぎに、対象文字を１文字シフトして、対象文字を「ｔ」にする。まず、対象文字「ｔ」は特定単一文字であるため、特定単一文字「ｔ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｔ」にシフトされた場合、「ｎｔ」という２連接文字列が得られるため、２連接文字列「ｎｔ」の２連接文字列出現マップＭ５を指定する。
【０１３６】
そして、２連接文字列「ｎｔ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３７】
（Ｄ）つぎに、対象文字を１文字シフトして、対象文字を「ｅ」にする。まず、対象文字「ｅ」は特定単一文字であるため、特定単一文字「ｅ」の特定単一文字出現マップＭ２を指定する。また、対象文字が「ｅ」にシフトされた場合、「ｔｅ」という２連接文字列が得られるため、２連接文字列「ｔｅ」の２連接文字列出現マップＭ５を指定する。
【０１３８】
そして、２連接文字列「ｔｅ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１３９】
（Ｅ）つぎに、対象文字を１文字シフトして、対象文字を「ｒ」にする。まず、対象文字「ｒ」は特定単一文字であるため、特定単一文字「ｒ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｒ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｎ」にシフトされた場合、「ｅｒ」という２連接文字列が得られるため、２連接文字列「ｅｒ」の２連接文字列出現マップＭ５を指定する。
【０１４０】
そして、２連接文字列「ｅｒ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４１】
（Ｆ）つぎに、対象文字を１文字シフトして、対象文字を「ｎ」にする。まず、対象文字「ｎ」は特定単一文字であるため、特定単一文字「ｎ」の特定単一文字出現マップＭ２を指定する。そして、対象文字「ｎ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットは、すでに、（Ｂ）でＯＮになっているため、何も変わらないこととなる。また、対象文字が「ｎ」にシフトされた場合、「ｒｎ」という２連接文字列が得られるため、２連接文字列「ｒｎ」の２連接文字列出現マップＭ５を指定する。
【０１４２】
そして、２連接文字列「ｒｎ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４３】
（Ｇ）つぎに、対象文字を１文字シフトして、対象文字を「ａ」にする。対象文字「ａ」は特定単一文字であるため、特定単一文字「ａ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ａ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ａ」にシフトされた場合、「ｎａ」という２連接文字列が得られるため、２連接文字列「ｎａ」の２連接文字列出現マップＭ５を指定する。
【０１４４】
そして、２連接文字列「ｎａ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４５】
（Ｈ）最後に、対象文字を１文字シフトして、対象文字を「ｌ」にする。対象文字「ｌ」は特定単一文字であるため、特定単一文字「ｌ」の特定単一文字出現マップＭ２を指定する。そして、特定単一文字「ｌ」の特定単一文字出現マップＭ２について対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。また、対象文字が「ｌ」にシフトされた場合、「ａｌ」という２連接文字列が得られるため、２連接文字列「ａｌ」の２連接文字列出現マップＭ５を指定する。
【０１４６】
そして、２連接文字列「ａｌ」の２連接文字列出現マップＭ５において対象ファイルＦｉのビットをＯＮ（“０”→“１”）にする。
【０１４７】
＜情報生成処理手順＞
図１０は、情報生成装置５００による情報生成処理手順を示すフローチャートである。情報生成装置５００は、集計処理（ステップＳ１００１）、マップ割当数決定処理（ステップＳ１００２）、マップ生成処理（ステップＳ１００３）を実行する。集計処理（ステップＳ１００１）、マップ割当数決定処理（ステップＳ１００２）、マップ生成処理（ステップＳ１００３）の詳細については後述する。
【０１４８】
図１１は、図１０に示した集計処理（ステップＳ１００１）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、ファイル番号ｉをｉ＝１に設定し（ステップＳ１１０１）、対象ファイルＦｉを読み込む（ステップＳ１１０２）。そして、情報生成装置５００は、対象ファイルＦｉの集計処理を実行する（ステップＳ１１０３）。このあと、情報生成装置５００は、ファイル番号ｉがｉ＞ｎ（ｎは対象ファイルＦ１〜Ｆｎの総数）であるか否かを判断する（ステップＳ１１０４）。
【０１４９】
ｉ＞ｎでない場合（ステップＳ１１０４：Ｎｏ）、情報生成装置５００は、ｉをインクリメントし（ステップＳ１１０５）、ステップＳ１１０２に戻る。一方、ｉ＞ｎである場合（ステップＳ１１０４：Ｙｅｓ）、情報生成装置５００は、マップ割当数決定処理（ステップＳ１００２）に移行して、集計処理（ステップＳ１００１）を終了する。この集計処理（ステップＳ１００１）によれば、対象ファイルＦｉごとに対象ファイルＦｉの集計処理（ステップＳ１１０３）を実行することができる。
【０１５０】
図１２は、図１１に示した対象ファイルＦｉの集計処理（ステップＳ１１０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字を対象ファイルＦｉの先頭文字とし（ステップＳ１２０１）、基礎単語集計処理を実行する（ステップＳ１２０２）。このあと、情報生成装置５００は、単一文字出現頻度テーブル１０２において対象文字の出現回数を１増加する（ステップＳ１２０３）。そして、情報生成装置５００は、対象文字が対象ファイルＦｉの末尾文字であるか否かを判断する（ステップＳ１２０４）。
【０１５１】
対象文字が対象ファイルＦｉの末尾文字でない場合（ステップＳ１２０４：Ｎｏ）、情報生成装置５００は、対象文字を末尾方向へ１文字シフトし（ステップＳ１２０５）、ステップＳ１２０２に戻る。一方、対象文字が対象ファイルＦｉの末尾文字である場合（ステップＳ１２０４：Ｙｅｓ）、情報生成装置５００は、ステップＳ１１０４に移行して、対象ファイルＦｉの集計処理（ステップＳ１１０３）を終了する。この対象ファイルＦｉの集計処理（ステップＳ１１０３）によれば、対象ファイル群Ｆに存在する基礎単語および単一文字の出現頻度を集計することができる。
【０１５２】
図１３は、図１２に示した基礎単語集計処理（ステップＳ１２０２）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、最長一致検索処理を実行し（ステップＳ１３０１）、最長一致した基礎単語があったか否かを判断する（ステップＳ１３０２）。最長一致した基礎単語があった場合（ステップＳ１３０２：Ｙｅｓ）、情報生成装置５００は、基礎単語出現頻度テーブル１０１において最長一致した基礎単語の出現回数を１増加し（ステップＳ１３０３）、ステップＳ１２０３に移行する。
【０１５３】
一方、最長一致した基礎単語がなかった場合（ステップＳ１３０２：Ｎｏ）、ステップＳ１２０３に移行する。これにより、基礎単語集計処理（ステップＳ１２０２）を終了する。この基礎単語集計処理（ステップＳ１２０２）によれば、最長一致検索処理（ステップＳ１３０１）により基礎単語を計数することができるため、文字列が長い基礎単語を優先的に計数することができる。
【０１５４】
図１４は、図１３に示した最長一致検索処理（ステップＳ１３０１）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、ｃ＝１とする（ステップＳ１４０１）。ｃは対象文字からの文字数（対象文字含む）である。ｃ＝１の場合は、対象文字だけである。つぎに、情報生成装置５００は、対象文字からｃ文字目までの対象文字列と前方一致する基礎単語を、基礎単語構造体を検索する（ステップＳ１４０２）。そして、情報生成装置５００は、検索により基礎単語があるか否かを判断する（ステップＳ１４０３）。２分探索により基礎単語がヒットしなかった場合（ステップＳ１４０３：Ｎｏ）、ステップＳ１４０６に移行する。
【０１５５】
一方、２分探索により基礎単語がヒットした場合（ステップＳ１４０３：Ｙｅｓ）、情報生成装置５００は、ヒットした基礎単語と対象文字列とが完全一致するか否かを判断する（ステップＳ１４０４）。そして、完全一致しない場合（ステップＳ１４０４：Ｎｏ）、ステップＳ１４０６に移行する。一方、完全一致する場合（ステップＳ１４０４：Ｙｅｓ）、情報生成装置５００は、最長一致候補として記憶装置に保持し（ステップＳ１４０５）、ステップＳ１４０６に移行する。
【０１５６】
ステップＳ１４０６では、情報生成装置５００は、対象文字列について２分探索が終了したか否かを判断する（ステップＳ１４０６）。具体的には、情報生成装置５００は、末尾の基礎単語まで２分探索したか否かを判断する。２分探索が終了していない場合（ステップＳ１４０６：Ｎｏ）、情報生成装置５００は、ステップＳ１４０２に移行して、２分探索が終了するまで継続する。
【０１５７】
一方、対象文字列について２分探索が終了した場合（ステップＳ１４０６：Ｙｅｓ）、情報生成装置５００は、ｃ文字目の文字が対象ファイルＦｉの末尾文字であるか否かを判断する（ステップＳ１４０７）。ｃ文字目の文字が対象ファイルＦｉの末尾文字である場合（ステップＳ１４０７：Ｙｅｓ）、ステップＳ１４１０に移行する。一方、ｃ文字目の文字が対象ファイルＦｉの末尾文字でない場合（ステップＳ１４０７：Ｎｏ）、情報生成装置５００は、ｃ＞ｃｍａｘであるか否かを判断する（ステップＳ１４０８）。ｃｍａｘは予め設定された値であり、これにより対象文字列の上限文字数が設定される。
【０１５８】
ｃ＞ｃｍａｘでない場合（ステップＳ１４０８：Ｎｏ）、情報生成装置５００は、ｃをインクリメントして（ステップＳ１４０９）、ステップＳ１４０２に戻る。一方、ｃ＞ｃｍａｘである場合（ステップＳ１４０８：Ｙｅｓ）、情報生成装置５００は、最長一致候補があるか否かを判断する（ステップＳ１４１０）。具体的には、情報生成装置５００は、ステップＳ１４０５において１つでも最長一致候補がメモリに保持されているか否かを判断する。
【０１５９】
最長一致候補がある場合（ステップＳ１４１０：Ｙｅｓ）、情報生成装置５００は、最長一致候補のうち最長文字列を、最長一致した基礎単語に決定する（ステップＳ１４１１）。そして、ステップＳ１３０２に移行する。一方、ステップＳ１４１０において、最長一致候補が１つもない場合（ステップＳ１４１０：Ｎｏ）、ステップＳ１３０２に移行する。これにより、最長一致検索処理（ステップＳ１３０１）を終了する。この最長一致検索処理（ステップＳ１３０１）によれば、基礎単語構造体にある基礎単語の中から、完全一致した文字列の中でかつ最長の文字列を基礎単語として検索することができる。
【０１６０】
図１５は、図１０に示したマップ割当数決定処理（ステップＳ１００２）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、集計処理（ステップＳ１００１）による基礎単語ごとの出現頻度を示す基礎単語出現頻度テーブル１０１と単一文字ごとの出現頻度を示す単一文字出現頻度テーブル１０２を出現頻度の高い順にソートする（ステップＳ１５０１）。そして、情報生成装置５００は、ソート後の基礎単語出現頻度テーブル１０１を参照して、基礎単語の出現順位ＲｗをＲｗ＝１とし（ステップＳ１５０２）、出現順位Ｒｗまでの累積出現回数Ａｒｗを計数する（ステップＳ１５０３）。そして、情報生成装置５００は、下記式（１）を満たすか否かを判断する（ステップＳ１５０４）。
【０１６１】
Ａｒｗ＞Ｐｗ×Ａｗ・・・（１）
Ａｗは集計された基礎単語の総出現回数である。
【０１６２】
上記（１）式を満たさない場合（ステップＳ１５０４：Ｎｏ）、情報生成装置５００は、出現順位Ｒｗをインクリメントして（ステップＳ１５０５）、ステップＳ１５０３に戻る。すなわち、上記式（１）を満たすまで出現順位Ｒｗを下げ続ける。
【０１６３】
そして、上記式（１）を満たした場合（ステップＳ１５０４：Ｙｅｓ）、情報生成装置５００は、基礎単語のマップ割当数ＮｗをＮｗ＝Ｒｗ−１とする（ステップＳ１５０６）。ここで、マップ割当数Ｎｗとは、特定基礎単語出現マップＭ１のレコード数（行数）を意味する。
【０１６４】
また、情報生成装置５００は、単一文字の出現順位ＲｃをＲｃ＝１とし（ステップＳ１５０７）、出現順位Ｒｃまでの累積出現回数Ａｒｃを計数する（ステップＳ１５０８）。そして、情報生成装置５００は、下記式（２）を満たすか否かを判断する（ステップＳ１５０９）。
【０１６５】
Ａｒｃ＞Ｐｃ×Ａｃ・・・（２）
Ａｃは集計された単一文字の総出現回数である。
【０１６６】
上記（２）式を満たさない場合（ステップＳ１５０９：Ｎｏ）、情報生成装置５００は、出現順位Ｒｃをインクリメントして（ステップＳ１５１０）、ステップＳ１５０８に戻る。すなわち、上記式（２）を満たすまで出現順位Ｒｃを下げ続ける。
【０１６７】
そして、上記式（２）を満たした場合（ステップＳ１５０９：Ｙｅｓ）、情報生成装置５００は、単一文字のマップ割当数ＮｃをＮｃ＝Ｒｃ−１とする（ステップＳ１５１１）。ここで、マップ割当数Ｎｃとは、特定単一文字出現マップＭ２のレコード数（行数）を意味する。この後、マップ生成処理（ステップＳ１００３）に移行して、マップ割当数決定処理（ステップＳ１００２）を終了する。
【０１６８】
このマップ割当数決定処理（ステップＳ１００２）によれば、目標出現率Ｐｗに応じた数の基礎単語分について特定基礎単語出現マップＭ１を生成することができる。したがって、すべての基礎単語についてマップ割当をおこなう必要はなく、目標出現率Ｐｗにしたがって決められるため、マップサイズの最適化を図ることができる。
【０１６９】
また、単一文字についても、目標出現率Ｐｃに応じた数の単一文字分について特定単一文字出現マップＭ２を生成することができる。したがって、すべての単一文字についてマップ割当をおこなう必要はなく、目標出現率Ｐｃにしたがって決められるため、マップサイズの最適化を図ることができる。
【０１７０】
図１６は、図１０に示したマップ生成処理（ステップＳ１００３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、ファイル番号ｉをｉ＝１に設定し（ステップＳ１６０１）、対象ファイルＦｉを読み込む（ステップＳ１６０２）。そして、情報生成装置５００は、対象ファイルＦｉのマップ生成処理を実行する（ステップＳ１６０３）。このあと、情報生成装置５００は、ファイル番号ｉがｉ＞ｎ（ｎは対象ファイルＦ１〜Ｆｎの総数）であるか否かを判断する（ステップＳ１６０４）。
【０１７１】
ｉ＞ｎでない場合（ステップＳ１６０４：Ｎｏ）、情報生成装置５００は、ｉをインクリメントし（ステップＳ１６０５）、ステップＳ１６０２に戻る。一方、ｉ＞ｎである場合（ステップＳ１６０４：Ｙｅｓ）、マップ生成処理（ステップＳ１００３）が終了する。このマップ生成処理（ステップＳ１００３）によれば、対象ファイルＦｉごとに対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）を実行することができる。
【０１７２】
図１７は、図１６に示した対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字を対象ファイルＦｉの先頭文字とし（ステップＳ１７０１）、特定基礎単語出現マップ生成処理（ステップＳ１７０２）、特定単一文字出現マップ生成処理（ステップＳ１７０３）、連接文字列出現マップ生成処理（ステップＳ１７０４）を実行する。このあと、情報生成装置５００は、対象文字が対象ファイルＦｉの末尾文字であるか否かを判断する（ステップＳ１７０５）。
【０１７３】
対象文字が対象ファイルＦｉの末尾文字でない場合（ステップＳ１７０５：Ｎｏ）、情報生成装置５００は、対象文字を末尾方向へ１文字シフトし（ステップＳ１７０６）、ステップＳ１７０２に戻る。一方、対象文字が対象ファイルＦｉの末尾文字である場合（ステップＳ１７０５：Ｙｅｓ）、ステップＳ１６０４に移行して、対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）を終了する。
【０１７４】
この対象ファイルＦｉのマップ生成処理（ステップＳ１６０３）によれば、特定基礎単語出現マップＭ１、特定単一文字出現マップＭ２および連接文字列出現マップＭ５を、対象文字を１文字ずつシフトしながら、同時並行で生成することができる。
【０１７５】
図１８は、図１７で示した特定基礎単語出現マップ生成処理（ステップＳ１７０２）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字について最長一致検索処理を実行する（ステップＳ１８０１）。最長一致検索処理（ステップＳ１８０１）の詳細な処理手順は、図１４に示した最長一致検索処理（ステップＳ１３０１）と同一処理内容である。
【０１７６】
そして、情報生成装置５００は、最長一致した基礎単語、すなわち、特定基礎単語があるか否かを判断する（ステップＳ１８０２）。最長一致した基礎単語がない場合（ステップＳ１８０２：Ｎｏ）、特定単一文字出現マップ生成処理（ステップＳ１７０３）に移行する。一方、最長一致した基礎単語がある場合（ステップＳ１８０２：Ｙｅｓ）、情報生成装置５００は、その最長一致した基礎単語について、特定基礎単語出現マップＭ１が設定済みであるか否かを判断する（ステップＳ１８０３）。
【０１７７】
設定済みである場合（ステップＳ１８０３：Ｙｅｓ）、ステップＳ１８０５に移行する。一方、設定済みでない場合（ステップＳ１８０３：Ｎｏ）、情報生成装置５００は、最長一致した基礎単語について、特定基礎単語出現マップＭ１を設定して（ステップＳ１８０４）、ステップＳ１８０５に移行する。
【０１７８】
具体的には、情報生成装置５００は、最長一致した基礎単語を特定基礎単語として、特定基礎単語出現マップＭ１の特定基礎単語項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ１８０５では、最長一致した基礎単語についての特定基礎単語出現マップＭ１の対象ファイルＦｉのビットをＯＮにする（ステップＳ１８０５）。
【０１７９】
これにより、特定基礎単語出現マップ生成処理（ステップＳ１７０２）を終了し、特定単一文字出現マップ生成処理（ステップＳ１７０３）に移行する。この特定基礎単語出現マップ生成処理（ステップＳ１７０２）によれば、対象文字ごとに最長一致した基礎単語を特定基礎単語としてマップ生成することができる。
【０１８０】
図１９は、図１７で示した特定単一文字出現マップ生成処理（ステップＳ１７０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、単一文字構造体に対して対象文字の２分探索をおこない（ステップＳ１９０１）、一致したか否かを判断する（ステップＳ１９０２）。一致する単一文字がなかった場合（ステップＳ１９０２：Ｎｏ）、情報生成装置５００は、分割文字コード出現マップ生成処理を実行して（ステップＳ１９０３）、連接文字列出現マップ生成処理（ステップＳ１７０４）に移行する。分割文字コード出現マップ生成処理（ステップＳ１９０３）の詳細については後述する。
【０１８１】
一方、ステップＳ１９０２において、２分探索により対象文字と一致する単一文字があった場合（ステップＳ１９０２：Ｙｅｓ）、情報生成装置５００は、その２分探索された対象文字について、特定単一文字出現マップＭ２が設定済みであるか否かを判断する（ステップＳ１９０４）。設定済みである場合（ステップＳ１９０４：Ｙｅｓ）、ステップＳ１９０６に移行する。一方、設定済みでない場合（ステップＳ１９０４：Ｎｏ）、情報生成装置５００は、２分探索された単一文字について、特定単一文字出現マップＭ２を設定して（ステップＳ１９０５）、ステップＳ１９０６に移行する。
【０１８２】
具体的には、情報生成装置５００は、２分探索された単一文字を特定単一文字として、特定単一文字出現マップＭ２の特定単一文字項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ１９０６では、情報生成装置５００は、２分探索された単一文字についての特定単一文字出現マップＭ２の対象ファイルＦｉのビットをＯＮにする（ステップＳ１９０６）。
【０１８３】
これにより、特定単一文字出現マップ生成処理（ステップＳ１７０３）を終了し、連接文字列出現マップ生成処理（ステップＳ１７０４）に移行する。この特定単一文字出現マップ生成処理（ステップＳ１７０３）によれば、２分探索された対象文字を特定単一文字としてマップ生成することができる。
【０１８４】
図２０は、図１９で示した分割文字コード出現マップ生成処理（ステップＳ１９０３）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字を分割し（ステップＳ２００１）、対象文字から分割された上位分割文字コードについて、上位分割文字コード出現マップＭ３が設定済みであるか否かを判断する（ステップＳ２００２）。設定済みである場合（ステップＳ２００２：Ｙｅｓ）、ステップＳ２００４に移行する。一方、設定済みでない場合（ステップＳ２００２：Ｎｏ）、情報生成装置５００は、対象文字から分割された上位分割文字コードについて、上位分割文字コード出現マップＭ３を設定して（ステップＳ２００３）、ステップＳ２００４に移行する。
【０１８５】
具体的には、情報生成装置５００は、対象文字から分割された上位分割文字コードを、上位分割文字コード出現マップＭ３の上位分割文字コード項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ２００４では、情報生成装置５００は、対象文字から分割された上位分割文字コードについての上位分割文字コード出現マップＭ３の対象ファイルＦｉのビットをＯＮにする（ステップＳ２００４）。
【０１８６】
また、情報生成装置５００は、対象文字から分割された下位分割文字コードについて、下位分割文字コード出現マップＭ４が設定済みであるか否かを判断する（ステップＳ２００５）。設定済みである場合（ステップＳ２００５：Ｙｅｓ）、ステップＳ２００７に移行する。一方、設定済みでない場合（ステップＳ２００５：Ｎｏ）、情報生成装置５００は、対象文字から分割された下位分割文字コードについて、下位分割文字コード出現マップＭ４を設定して（ステップＳ２００６）、ステップＳ２００７に移行する。
【０１８７】
具体的には、情報生成装置５００は、対象文字から分割された下位分割文字コードを、下位分割文字コード出現マップＭ４の下位分割文字コード項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ２００７では、情報生成装置５００は、対象文字から分割された下位分割文字コードについての下位分割文字コード出現マップＭ４の対象ファイルＦｉのビットをＯＮにする（ステップＳ２００７）。
【０１８８】
これにより、分割文字コード出現マップ生成処理（ステップＳ１９０３）を終了し、連接文字列出現マップ生成処理（ステップＳ１７０４）に移行する。この分割文字コード出現マップ生成処理（ステップＳ１９０３）によれば、目標出現率Ｐｃに応じた順位よりも下位の単一文字については、出現頻度が低いため、ＯＦＦのビットが多数出現することとなる。
【０１８９】
しかしながら、特定単一文字出現マップＭ２の生成対象外とすることで、特定単一文字出現マップＭ２のマップサイズの最適化を図ることができる。また、分割することで、目標出現率Ｐｃに応じた順位よりも下位の単一文字については、上位分割文字コード出現マップＭ３および下位分割文字コード出現マップＭ４といったマップサイズが固定化されたマップに設定される。したがって、目標出現率Ｐｃをどのような出現率に設定しても、上位分割文字コード出現マップＭ３および下位分割文字コード出現マップＭ４は変わらないため、マップサイズの増大化を防止でき、省メモリ化を図ることができる。
【０１９０】
図２１は、図１７で示した連接文字列出現マップ生成処理（ステップＳ１７０４）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字に対し、連接文字列特定処理を実行する（ステップＳ２１０１）。連接文字列特定処理（ステップＳ２１０１）の詳細については後述する。情報生成装置５００は、連接文字列特定処理（ステップＳ２１０１）のあと、対象文字に関する連接文字列がない場合（ステップＳ２１０２：Ｎｏ）、ステップＳ１７０５に移行する。
【０１９１】
一方、対象文字に関する連接文字列がある場合（ステップＳ２１０２：Ｙｅｓ）、情報生成装置５００は、対象文字に関する連接文字列に対し、連接文字列出現マップＭ５が設定済みであるか否かを判断する（ステップＳ２１０３）。設定済みである場合（ステップＳ２１０３：Ｙｅｓ）、ステップＳ２１０５に移行する。一方、設定済みでない場合（ステップＳ２１０３：Ｎｏ）、情報生成装置５００は、対象文字に関する連接文字列について、連接文字列出現マップＭ５を設定して（ステップＳ２１０４）、ステップＳ２１０５に移行する。
【０１９２】
具体的には、情報生成装置５００は、対象文字に関する連接文字列を、連接文字列出現マップＭ５の連接文字列項目に登録し、そのファイル番号分のビット列をオール０にする。このあと、ステップＳ２１０５では、情報生成装置５００は、対象文字に関する連接文字列についての連接文字列出現マップＭ５の対象ファイルＦｉのビットをＯＮにする（ステップＳ２１０５）。これにより、連接文字列出現マップ生成処理（ステップＳ１７０４）を終了し、ステップＳ１７０５に移行する。この連接文字列出現マップ生成処理（ステップＳ１７０４）によれば、対象文字に関する連接文字列ごとにマップ生成することができる。
【０１９３】
図２２は、図２１で示した連接文字列特定処理（ステップＳ２１０１）の詳細な処理手順を示すフローチャートである。まず、情報生成装置５００は、対象文字に対し、対象文字は分割されたか否かを判断する（ステップＳ２２０１）。すなわち、情報生成装置５００は、対象文字が分割文字コードか否かを判断する。分割されていない場合（ステップＳ２２０１：Ｎｏ）、すなわち、単一文字の場合、情報生成装置５００は、１つ前の文字があるか否かを判断する（ステップＳ２２０２）。
【０１９４】
１つ前の文字がある場合（ステップＳ２２０２：Ｙｅｓ）、情報生成装置５００は、１つ前の文字は分割されたか否かを判断する（ステップＳ２２０３）。すなわち、情報生成装置５００は、１つ前の文字が分割文字コードか否かを判断する。分割されていない場合（ステップＳ２２０３：Ｎｏ）、すなわち、単一文字の場合、情報生成装置５００は、対象文字の１つ前の単一文字と対象文字（単一文字）からなる文字列を、連接文字列に決定する（ステップＳ２２０４）。そして、ステップＳ２１０２に移行する。
【０１９５】
一方、ステップＳ２２０３において、１つ前の文字が分割された場合（ステップＳ２２０３：Ｙｅｓ）、すなわち、分割文字コードである場合、その１つ前の文字である分割文字コードは、下位分割文字コードとなる。したがって、情報生成装置５００は、１つ前の文字である下位分割文字コードと対象文字からなる文字列を、連接文字列に決定する（ステップＳ２２０５）。そして、ステップＳ２１０２に移行する。
【０１９６】
また、ステップＳ２２０２において、１つ前の文字がない場合（ステップＳ２２０２：Ｎｏ）、対象文字だけとなるため、連接文字列を決定せずに、ステップＳ２１０２に移行する。
【０１９７】
また、ステップＳ２２０１において、対象文字が分割された場合（ステップＳ２２０１：Ｙｅｓ）、すなわち、分割文字コードである場合、情報生成装置５００は、その分割文字コードが上位分割文字コードか下位分割文字コードであるかを判断する（ステップＳ２２０６）。
【０１９８】
上位分割文字コードである場合（ステップＳ２２０６：上位）、情報生成装置５００は、１つ前の文字は分割されたか否かを判断する（ステップＳ２２０７）。すなわち、１つ前の文字が分割文字コードか否かを判断する。分割されていない場合（ステップＳ２２０７：Ｎｏ）、すなわち、単一文字の場合、情報生成装置５００は、対象文字の１つ前の単一文字と対象文字から分割された上位分割文字コードからなる文字列を、連接文字列に決定する（ステップＳ２２０８）。そして、ステップＳ２１０２に移行する。
【０１９９】
一方、ステップＳ２２０７において、１つ前の文字が分割された場合（ステップＳ２２０７：Ｙｅｓ）、すなわち、分割文字コードである場合、その１つ前の文字である分割文字コードは、下位分割文字コードとなる。したがって、情報生成装置５００は、１つ前の文字である下位分割文字コードと対象文字から分割された上位分割文字コードからなる文字列を、連接文字列に決定する（ステップＳ２２０９）。そして、ステップＳ２１０２に移行する。
【０２００】
また、ステップＳ２２０６において、下位分割文字コードである場合（ステップＳ２２０６：下位）、情報生成装置５００は、対象文字から分割された上位分割文字コードおよび下位分割文字コードからなる文字列を、連接文字列に決定する（ステップＳ２２１０）。そして、ステップＳ２１０２に移行する。
【０２０１】
この連接文字列特定処理（ステップＳ２１０１）によれば、対象文字が分割された場合であっても連接文字列を特定することができる。また、１文字シフトにしたがって連接文字列を特定するため、特定基礎単語出現マップＭ１および特定単一文字出現マップＭ２と同時並行で生成することができる。
【０２０２】
このように、上述した情報生成によれば、目標出現率Ｐｗ，Ｐｃにより、マップ生成される基礎単語数および単一文字数が制限されるため、無駄なマップ生成がなくなり、マップ生成の高速化およびマップサイズの最適化を同時に実現することができる。また、１文字シフトにより複数種類のマップ生成を同時並行で実行することができ、高精度な検索に用いる複数種類のマップ生成の効率化を図ることができる。
【０２０３】
［情報検索プログラム／装置／方法］
つぎに、情報検索プログラム、情報検索装置、および情報検索方法について説明する。情報検索プログラム、情報検索装置、および情報検索方法では、情報生成プログラム、情報検生成索装置、および情報生成方法により生成された各種マップを用いて検索を実行する。なお、情報検索装置のハードウェア構成例は、図４に示したハードウェア構成例と同一である。また、情報検索装置は、情報生成装置５００と一体型のコンピュータとしてもよく、別々のコンピュータとしてもよい。
【０２０４】
＜情報検索装置の機能的構成＞
図２３は、情報検索装置の機能的構成例を示すブロック図である。情報検索装置２３００は、入力部２３０１と、分割部２３０２と、ファイル特定部２３０３と、絞込み部２３０４と、検索部２３０５と、出力部２３０６とを備えている。入力部２３０１〜出力部２３０６は、具体的には、たとえば、図４に示したＲＯＭ４０２、ＲＡＭ４０３、磁気ディスク４０５、光ディスク４０７などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、Ｉ／Ｆ４０９により、その機能を実現する。
【０２０５】
入力部２３０１は、検索文字列の入力を受け付ける。具体的には、たとえば、キーボード４１０やマウス４１１などの入力装置の操作入力により、検索文字列の入力を受け付ける。
【０２０６】
分割部２３０２は、検索文字列を構成する単一文字のうち特定の単一文字に該当しない単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する。具体的には、たとえば、上述した特定単一文字出現マップＭ２の特定単一文字項目に登録されている特定単一文字に該当しない単一文字の文字コードを、上位分割文字コードと下位分割文字コードに分割する。
【０２０７】
ファイル特定部２３０３は、文字列が記述された対象ファイル群Ｆに存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列が存在する対象ファイルを特定する。具体的には、たとえば、上述した特定基礎単語出現マップＭ１を参照することにより、検索文字列が存在する対象ファイルを特定する。
【０２０８】
また、ファイル特定部２３０３は、文字列が記述された対象ファイル群Ｆに存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位以内の特定の単一文字の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する各単一文字が存在する対象ファイルを特定する。具体的には、たとえば、上述した特定単一文字出現マップＭ２を参照することにより、検索文字列が存在する対象ファイルを特定する。
【０２０９】
また、ファイル特定部２３０３は、分割部２３０２によって分割された上位ビットの分割文字コードの存否を対象ファイルごとに示すインデックス情報を参照することにより、上位ビットの分割文字コードが存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した上位分割文字コード出現マップＭ３を参照することにより、分割部２３０２により分割された上位分割文字コードが存在する対象ファイルを特定する。
【０２１０】
同様に、ファイル特定部２３０３は、分割部２３０２によって分割された下位ビットの分割文字コードの存否を対象ファイルごとに示すインデックス情報を参照することにより、下位ビットの分割文字コードが存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した下位分割文字コード出現マップＭ４を参照することにより、分割部２３０２により分割された下位分割文字コードが存在する対象ファイルを特定する。
【０２１１】
また、ファイル特定部２３０３は、対象ファイル群Ｆに存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの単一文字が連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１２】
また、ファイル特定部２３０３は、対象ファイル群Ｆに存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字と上位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する、特定の単一文字と上位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１３】
また、ファイル特定部２３０３は、下位ビットの分割文字コードとファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字とが連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する、下位ビットの分割文字コードと特定の単一文字とが連続する連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１４】
また、ファイル特定部２３０３は、上位ビットの分割文字コードと下位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を対象ファイルごとに示すインデックス情報を参照することにより、検索文字列を構成する、上位ビットの分割文字コードと下位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定する。具体的には、たとえば、ファイル特定部２３０３は、上述した連接文字列出現マップＭ５を参照することにより、検索文字列を構成する各連接文字列が存在する対象ファイルを特定する。
【０２１５】
絞込み部２３０４は、ファイル特定部２３０３によって特定された対象ファイル群Ｆの中から検索文字列を構成する各単一文字がすべて存在する対象ファイルを絞り込む。具体的には、たとえば、絞込み部２３０４は、特定単一文字出現マップＭ２において、検索文字列を構成するすべての単一文字のビットがＯＮになっている対象ファイルを、ファイル特定部２３０３によって特定された対象ファイルの中から絞り込む。
【０２１６】
また、絞込み部２３０４は、ファイル特定部２３０３によって特定された対象ファイル群Ｆの中から検索文字列を構成する各単一文字および各連接文字列がすべて存在する対象ファイルを絞り込む。具体的には、たとえば、絞込み部２３０４は、特定単一文字出現マップＭ２において、検索文字列を構成するすべての特定単一文字のビットがＯＮになっており、かつ、連接文字列出現マップＭ５において、検索文字列を構成するすべての連接文字列のビットがＯＮになっている対象ファイルを、ファイル特定部２３０３によって特定された対象ファイルの中から絞り込む。
【０２１７】
また、絞込み部２３０４は、ファイル特定部２３０３によって特定された対象ファイル群Ｆの中から検索文字列を構成する各単一文字、各上位ビットの分割文字コード、各下位ビットの分割文字コード、および各連接文字列がすべて存在する対象ファイルを絞り込む。
【０２１８】
具体的には、たとえば、絞込み部２３０４は、特定単一文字出現マップＭ２において、検索文字列を構成するすべての特定単一文字のビットがＯＮになっており、かつ、上位分割文字コード出現マップＭ３において、検索文字列を構成するすべての上位分割文字コードのビットがＯＮになっており、かつ、下位分割文字コード出現マップＭ４において、検索文字列を構成するすべての下位分割文字コードのビットがＯＮになっており、かつ、連接文字列出現マップＭ５において、検索文字列を構成するすべての連接文字列のビットがＯＮになっている対象ファイルを、ファイル特定部２３０３によって特定された対象ファイルの中から絞り込む。
【０２１９】
検索部２３０５は、ファイル特定部２３０３によって特定された対象ファイルの中から検索文字列に関する情報を検索する。具体的には、たとえば、検索部２３０５は、検索文字列が特定基礎単語に該当する場合、ファイル特定部２３０３により、特定基礎単語出現マップＭ１を参照して特定された対象ファイルの中から、検索文字列に一致する文字列を検索する。また、検索部２３０５は、検索文字列が特定基礎単語に該当しない場合、絞込み部２３０４により絞り込まれた対象ファイルの中から、検索文字列に一致する文字列を検索する。
【０２２０】
出力部２３０６は、検索部２３０５によって検索された検索結果を出力する。具体的には、たとえば、出力部２３０６は、検索結果をディスプレイに表示出力したり、検索結果を印刷出力したり、検索結果を音声により読み上げたり、検索結果を記憶装置に保存したり、検索結果を外部に送信したりする。
【０２２１】
また、検索結果は、検索文字列に一致する文字列を出力したり、検索文字列に一致する文字列に関連する情報を出力する。関連する情報としては、たとえば、検索文字列に一致する文字列が辞書の見出し語である場合には、解説文を出力する。これとは逆に、検索文字列に一致する文字列が辞書の解説文内の文字列である場合には、その解説文の見出し語を出力することとしてもよい。
【０２２２】
＜情報検索処理の具体例＞
つぎに、情報検索処理の具体例について説明する。
【０２２３】
図２４は、情報検索処理の具体例（その１）を示す説明図である。図２４では、検索文字列を「結婚活動」とする。なお、検索文字列「結婚活動」の中には、特定基礎単語「結婚」，「活動」が含まれている。したがって、図２４に示した特定基礎単語「結婚」，「活動」の特定基礎単語出現マップＭ１のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２４の場合は、対象ファイルＦ３，Ｆｎ内に、検索文字列「結婚活動」が存在する可能性が高い。
【０２２４】
図２５は、情報検索処理の具体例（その２）を示す説明図である。図２５では、検索文字列を「婚活」とする。なお、検索文字列「婚活」の中には、特定単一文字「婚」，「活」が含まれている。さらに、２連接文字列「婚活」が含まれている。特定基礎単語は含まれていない。
【０２２５】
したがって、図２５に示した特定単一文字出現マップＭ２、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２５の場合は、対象ファイルＦｎ内に、検索文字列「婚活」が存在する。また、対象ファイルＦｎ内に、「婚活」を含む文字列（たとえば、「結婚活動」）が存在する可能性が高く、いわゆる泣き別れによる検索性能の劣化を防止することができる。
【０２２６】
図２６は、情報検索処理の具体例（その３）を示す説明図である。図２６では、検索文字列を「脱藩」とする。なお、検索文字列「脱藩」の単一文字「脱」，「藩」は特定単一文字でないため、単一文字「脱」の上位分割文字コード「０ｘ８１」，下位分割文字コード「０ｘ３１」、単一文字「藩」の上位分割文字コード「０ｘＥ９」，下位分割文字コード「０ｘ８５」が含まれている。また、２連接文字列「０ｘ８１  ０ｘ３１」，「０ｘ３１  ０ｘＥ９」，「０ｘＥ９  ０ｘ８５」が含まれている。なお、検索文字列「脱藩」には特定基礎単語は含まれていない。
【０２２７】
したがって、図２６に示した上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２６の場合は、対象ファイルＦｎ内に、検索文字列「脱藩」が存在する可能性が高い。
【０２２８】
図２７は、情報検索処理の具体例（その４）を示す説明図である。図２７では、検索文字列を「離脱」とする。なお、検索文字列「離脱」の単一文字「離」は特定単一文字であるが、「脱」は特定単一文字でない。したがって、検索文字列「離脱」には、特定単一文字「離」，単一文字「脱」の上位分割文字コード「０ｘ８１」，下位分割文字コード「０ｘ３１」が含まれている。また、２連接文字列「離  ０ｘ８１」，「０ｘ８１  ０ｘ３１」が含まれている。なお、検索文字列「離脱」には特定基礎単語は含まれていない。
【０２２９】
したがって、図２７に示した特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２７の場合は、対象ファイルＦｎ内に、検索文字列「離脱」が存在する可能性が高い。
【０２３０】
図２８は、情報検索処理の具体例（その５）を示す説明図である。図２８では、検索文字列を「脱出」とする。また、検索文字列「脱出」の単一文字「出」は特定単一文字であるが、「脱」は特定単一文字でない。したがって、検索文字列「脱出」には、特定単一文字「出」，単一文字「脱」の上位分割文字コード「０ｘ８１」，下位分割文字コード「０ｘ３１」が含まれている。また、２連接文字列「０ｘ８１  ０ｘ３１」，「０ｘ３１  出」が含まれている。なお、検索文字列「脱出」には特定基礎単語は含まれていない。
【０２３１】
したがって、図２８に示した特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２８の場合は、対象ファイルＦｎ内に、検索文字列「脱出」が存在する可能性が高い。
【０２３２】
図２９は、情報検索処理の具体例（その６）を示す説明図である。図２９では、検索文字列を「ｉｓ」と「ａ」とし、検索条件をＡＮＤとする。なお、検索文字列「ｉｓ」には、特定基礎単語「ｉｓ」（ｂｅ動詞）が含まれており、検索文字列「ａ」には特定基礎単語「ａ」（不定冠詞）が含まれている。この検索文字列では、いわゆるｉｓ  ａ構文の文章を検索することができる。したがって、図２９に示した「ｉｓ」と「ａ」の特定基礎単語出現マップＭ１のＡＮＤ演算をおこなう。このＡＮＤ演算によるＡＮＤ結果でＯＮ（１）になったファイル番号の対象ファイルが特定される。図２９の場合は、対象ファイルＦ３，Ｆｎ内に、検索文字列「ｉｓ」および「ａ」が存在する。
【０２３３】
図３０は、情報検索処理の具体例（その７）を示す説明図である。図３０では、検索文字列を「ｔｅｒｎ」とする。なお、検索文字列「ｔｅｒｎ」には、２連接文字列「ｔｅ」「ｅｒ」「ｒｎ」が含まれている。したがって、図３０に示した２連接文字列マップＭ５でＯＮ（１）になったファイル番号の対象ファイルが特定される。図３０の場合は、対象ファイルＦｎ内に、検索文字列「ｔｅｒｎ」が存在する。
【０２３４】
＜情報検索処理手順＞
図３１は、情報検索装置２３００による情報検索処理手順を示すフローチャートである。まず、情報検索装置２３００は、入力部２３０１により、検索文字列群（１つの検索文字列も含む）が入力されるのを待ち受け（ステップＳ３１０１：Ｎｏ）、検索文字列群が入力された場合（ステップＳ３１０１：Ｙｅｓ）、情報検索装置２３００は、未選択の検索文字列があるか否かを判断する（ステップＳ３１０２）。未選択の検索文字列がある場合（ステップＳ３１０２：Ｙｅｓ）、情報検索装置２３００は、未選択の検索文字列を１つ選択し（ステップＳ３１０３）、ファイル特定処理を実行して（ステップＳ３１０４）、ステップＳ３１０２に戻る。
【０２３５】
一方、ステップＳ３１０２において、未選択の検索文字列がない場合（ステップＳ３１０２：Ｎｏ）、情報検索装置２３００は、検索条件を判断する（ステップＳ３１０５）。検索条件がＡＮＤの場合（ステップＳ３１０５：ＡＮＤ）、情報検索装置２３００は、検索文字列ごとに特定された対象ファイルをＡＮＤ演算で絞り込み、検索対象ファイルに設定し（ステップＳ３１０６）、ステップＳ３１０８に移行する。一方、検索条件がＯＲである場合（ステップＳ３１０５：ＯＲ）、情報検索装置２３００は、検索文字列ごとに特定された対象ファイルをＯＲ演算で絞り込み、検索対象ファイルに設定し（ステップＳ３１０７）、ステップＳ３１０８に移行する。
【０２３６】
ステップＳ３１０８では、検索対象ファイルごとに検索条件にしたがって検索する（ステップＳ３１０８）。そして、検索結果を出力する出力処理を実行して（ステップＳ３１０９）、情報検索処理を終了する。
【０２３７】
図３２−１は、図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その１）である。まず、情報検索装置２３００は、対象文字を検索文字列の先頭文字に設定し（ステップＳ３２０１）、検索文字列の最長一致検索処理を実行する（ステップＳ３２０２）。検索文字列の最長一致検索処理（ステップＳ３２０２）の詳細について後述する。
【０２３８】
つぎに、情報検索装置２３００は、検索文字列の最長一致検索処理（ステップＳ３２０２）により、最長一致した基礎単語があるか否かを判断する（ステップＳ３２０３）。最長一致した基礎単語がない場合（ステップＳ３２０３：Ｎｏ）、図３２−２のステップＳ３２１１に移行する。一方、最長一致した基礎単語がある場合（ステップＳ３２０３：Ｙｅｓ）、情報検索装置２３００は、特定基礎単語出現マップＭ１から最長一致した基礎単語を含む対象ファイルを特定する（ステップＳ３２０４）。具体的には、情報検索装置２３００は、最長一致した基礎単語、すなわち、特定基礎単語についてビットがＯＮになっている対象ファイルを特定する。
【０２３９】
このあと、情報検索装置２３００は、対象文字を、最長一致した基礎単語の文字列分シフトする（ステップＳ３２０５）。そして、情報検索装置２３００は、シフト後の対象文字があるか否かを判断する（ステップＳ３２０６）。対象文字がある場合（ステップＳ３２０６：Ｙｅｓ）、ステップＳ３２０２に戻る。一方、対象文字がない場合（ステップＳ３２０６：Ｎｏ）、情報検索装置２３００は、絞込み部２３０４により、ステップＳ３２０６までで特定された対象ファイルのＡＮＤ演算により絞り込みをおこなう（ステップＳ３２０７）。そして、ステップＳ３１０２に戻る。
【０２４０】
図３２−２は、図３１に示したファイル特定処理（ステップＳ３１０４）の詳細な処理手順を示すフローチャート（その２）である。図３２−１のステップＳ３２０３において、最長一致した基礎単語がない場合（ステップＳ３２０３：Ｎｏ）、図３２−２において、情報検索装置２３００は、対象文字が特定単一文字であるか否かを判断する（ステップＳ３２１１）。具体的には、情報検索装置２３００は、特定単一文字出現マップＭ２における特定単一文字項目に登録されているか否かを判断する。
【０２４１】
特定単一文字である場合（ステップＳ３２１１：Ｙｅｓ）、情報検索装置２３００は、特定単一文字出現マップＭ２から対象文字を含む対象ファイルを特定する（ステップＳ３２１２）。すなわち、情報検索装置２３００は、対象文字についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１６に移行する。
【０２４２】
一方、ステップＳ３２１１において、対象文字が特定単一文字でない場合（ステップＳ３２１１：Ｎｏ）、情報検索装置２３００は、対象文字列を、上位分割文字コードと下位分割文字コードとに分割する（ステップＳ３２１３）。そして、情報検索装置２３００は、上位分割文字コード出現マップＭ３から特定単一文字の上位分割文字コードを含む対象ファイルを特定する（ステップＳ３２１４）。具体的には、情報検索装置２３００は、上位分割文字コードについてビットがＯＮになっている対象ファイルを特定する。同様に、情報検索装置２３００は、下位分割文字コード出現マップＭ４から特定単一文字の下位分割文字コードを含む対象ファイルを特定する（ステップＳ３２１５）。具体的には、情報検索装置２３００は、下位分割文字コードについてビットがＯＮになっている対象ファイルを特定する。そして、ステップＳ３２１６に移行する。
【０２４３】
ステップＳ３２１６では、情報検索装置２３００は、連接文字列出現マップＭ５によるファイル特定処理を実行する（ステップＳ３２１６）。連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）の詳細については後述する。このあと、情報検索装置２３００は、対象文字を１文字分シフトして（ステップＳ３２１７）、図３２−１のステップＳ３２０６に移行する。
【０２４４】
このファイル特定処理（ステップＳ３１０４）によれば、検索文字列が特定基礎単語を含んでいれば、特定基礎単語出現マップＭ１により対象ファイルを絞り込むことができ、そうでない場合は、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５のＡＮＤ演算により絞り込むことで対象ファイルを特定することができる。
【０２４５】
図３３は、図３２−２に示した最長一致検索処理（ステップＳ３２０２）の詳細な処理手順を示すフローチャートである。まず、情報検索装置２３００は、ｃ＝１とする（ステップＳ３３０１）。ｃは対象文字からの文字数（対象文字含む）である。ｃ＝１の場合は、対象文字だけである。つぎに、情報検索装置２３００は、対象文字からｃ文字目までの対象文字列と前方一致する基礎単語を２分探索する（ステップＳ３３０２）。ここで探索対象となるのは、特定基礎単語出現マップＭ１の特定基礎単語項目に登録されている特定基礎単語群である。
【０２４６】
そして、情報検索装置２３００は、２分探索により特定基礎単語があるか否かを判断する（ステップＳ３３０３）。２分探索により特定基礎単語がヒットしなかった場合（ステップＳ３３０３：Ｎｏ）、ステップＳ３３０６に移行する。
【０２４７】
一方、２分探索により特定基礎単語がヒットした場合（ステップＳ３３０３：Ｙｅｓ）、情報検索装置２３００は、ヒットした特定基礎単語と対象文字列とが完全一致するか否かを判断する（ステップＳ３３０４）。そして、完全一致しない場合（ステップＳ３３０４：Ｎｏ）、ステップＳ３３０６に移行する。一方、完全一致する場合（ステップＳ３３０４：Ｙｅｓ）、情報検索装置２３００は、最長一致候補として記憶装置に保持し（ステップＳ３３０５）、ステップＳ３３０６に移行する。
【０２４８】
ステップＳ３３０６では、情報検索装置２３００は、対象文字列について２分探索が終了したか否かを判断する（ステップＳ３３０６）。具体的には、情報検索装置２３００は、末尾の特定基礎単語まで２分探索したか否かを判断する。２分探索が終了していない場合（ステップＳ３３０６：Ｎｏ）、ステップＳ３３０２に移行して、２分探索が終了するまで継続する。
【０２４９】
一方、対象文字列について２分探索が終了した場合（ステップＳ３３０６：Ｙｅｓ）、情報検索装置２３００は、ｃ文字目の文字が検索文字列の末尾文字であるか否かを判断する（ステップＳ３３０７）。ｃ文字目の文字が検索文字列の末尾文字である場合（ステップＳ３３０７：Ｙｅｓ）、ステップＳ３３１０に移行する。一方、ｃ文字目の文字が検索文字列の末尾文字でない場合（ステップＳ３３０７：Ｎｏ）、情報検索装置２３００は、ｃ＞ｃｍａｘであるか否かを判断する（ステップＳ３３０８）。ｃｍａｘは予め設定された値であり、これにより対象文字列の上限文字数が設定される。
【０２５０】
ｃ＞ｃｍａｘでない場合（ステップＳ３３０８：Ｎｏ）、ｃをインクリメントして（ステップＳ３３０９）、ステップＳ３３０２に戻る。一方、ｃ＞ｃｍａｘである場合（ステップＳ３３０８：Ｙｅｓ）、情報検索装置２３００は、最長一致候補があるか否かを判断する（ステップＳ３３１０）。具体的には、情報検索装置２３００は、ステップＳ３３０５において１つでも最長一致候補が記憶装置に保持されているか否かを判断する。
【０２５１】
最長一致候補がある場合（ステップＳ３３１０：Ｙｅｓ）、情報検索装置２３００は、最長一致候補のうち最長文字列を、最長一致した基礎単語に決定する（ステップＳ３３１１）。そして、ステップＳ３２０３に移行する。一方、ステップＳ３３１０において、最長一致候補が１つもない場合（ステップＳ３３１０：Ｎｏ）、ステップＳ３２０３に移行する。
【０２５２】
これにより、最長一致検索処理（ステップＳ３２０２）を終了する。この最長一致検索処理（ステップＳ３２０２）によれば、特定基礎単語出現マップＭ１に登録された特定基礎単語群の中から、完全一致した文字列の中でかつ最長の文字列を特定基礎単語として検索することができる。
【０２５３】
図３４は、図３２−２で示した連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）の詳細な処理手順を示すフローチャートである。まず、情報検索装置２３００は、対象文字を、検索文字列の先頭文字にする（ステップＳ３４０１）。ここでの検索文字列は、分割文字コードに分割されていれば、分割文字コードも１文字として扱う。
【０２５４】
つぎに、情報検索装置２３００は、対象文字が分割文字コードであるか否かを判断する（ステップＳ３４０２）。分割文字コードでない場合（ステップＳ３４０２：Ｎｏ）、対象文字の１つ前の文字があるか否かを判断する（ステップＳ３４０３）。たとえば、対象文字が下位分割文字コードである場合は、１つ前の文字は上位分割文字コードとなる。また、対象文字が特定単一文字または上位分割文字コードである場合は、１つ前で分割されていれば、１つ前の文字は下位分割文字コードとなる。
【０２５５】
１つ前の文字がある場合（ステップＳ３４０３：Ｙｅｓ）、情報検索装置２３００は、１つ前の文字が分割文字コードであるか否かを判断する（ステップＳ３４０４）。分割文字コードでない場合（ステップＳ３４０４：Ｎｏ）、２グラムの特定単一文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４０５）。具体的には、情報検索装置２３００は、２グラムの特定単一文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２５６】
一方、ステップＳ３４０４において、１つ前の文字が分割文字コードである場合（ステップＳ３４０４：Ｙｅｓ）、情報検索装置２３００は、分割文字コードと特定単一文字からなる連接文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４０６）。具体的には、分割文字コードと特定単一文字からなる連接文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２５７】
一方、ステップＳ３４０３において、対象文字の１つ前の文字がない場合（ステップＳ３４０３：Ｎｏ）、対象ファイルを特定せずに、ステップＳ３２１７に移行する。
【０２５８】
一方、ステップＳ３４０２において、対象文字が分割文字コードである場合（ステップＳ３４０２：Ｙｅｓ）、情報検索装置２３００は、対象文字の１つ前の文字の文字があるか否かを判断する（ステップＳ３４０７）。
【０２５９】
１つ前の文字がある場合（ステップＳ３４０７：Ｙｅｓ）、情報検索装置２３００は、１つ前の文字が分割文字コードであるか否かを判断する（ステップＳ３４０８）。分割文字コードでない場合（ステップＳ３４０８：Ｎｏ）、情報検索装置２３００は、特定単一文字と上位分割文字コードからなる連接文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４０９）。具体的には、情報検索装置２３００は、特定単一文字と上位分割文字コードからなる連接文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２６０】
一方、ステップＳ３４０８において、１つ前の文字が分割文字コードである場合（ステップＳ３４０８：Ｙｅｓ）、情報検索装置２３００は、２連接の分割文字コードからなる連接文字列の連接文字列出現マップＭ５から対象ファイルを特定する（ステップＳ３４１０）。具体的には、情報検索装置２３００は、２連接の分割文字コードからなる連接文字列についてビットがＯＮになっている対象ファイルを特定して、ステップＳ３２１７に移行する。
【０２６１】
一方、ステップＳ３４０７において、対象文字の１つ前の文字がない場合（ステップＳ３４０７：Ｎｏ）、対象ファイルを特定せずに、ステップＳ３２１７に移行する。
【０２６２】
この連接文字列出現マップＭ５によるファイル特定処理（ステップＳ３２１６）によれば、特定単一文字のみからなる連接文字列、分割文字コードのみからなる連接文字列、特定単一文字と分割文字コードが混在する連接文字列が検索文字列に存在する対象ファイルを特定することができる。
【０２６３】
このように、上述した情報検索によれば、検索文字列に特定基礎単語があれば、特定基礎単語出現マップＭ１から対象ファイルを特定することができるため、高速な検索処理を実現することができる。また、検索文字列に特定基礎単語がない場合でも、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５を用いることにより、対象ファイルの効率的な絞り込みをおこなうことができる。たとえば、「婚活」といった新しい短縮語については，特定基礎単語として登録されていないため、このような場合に、対象ファイルの絞り込みをおこなうことができる。
【０２６４】
＜マップ突き出し＞
つぎに、マップ突き出しについて説明する。マップ突き出しとは、対象ファイル群Ｆに対し、あらたに対象ファイルが追加される場合がある。このような場合、追加された対象ファイルについても、図１〜図３に示したように、（Ａ）〜（Ｄ）のフェーズを実行する。これにより、特定基礎単語出現マップＭ１、特定単一文字出現マップＭ２、上位分割文字コード出現マップＭ３、下位分割文字コード出現マップＭ４、連接文字列出現マップＭ５において、追加された対象ファイルについて、ビット行を生成する処理を、マップ突き出しという。
【０２６５】
図３５は、マップ突き出しを示す説明図である。図３５では、特定基礎単語出現マップＭ１を例に挙げて説明する。（Ａ）では、特定基礎単語群および初期の対象ファイル群Ｆである対象ファイルＦ１〜ＦｎからなるビットマップをセグメントＳ１とする。
【０２６６】
追加された対象ファイルの数が所定数貯まった場合は、あらたなセグメントを設定する。図３５では、一例として、セグメントＳ１と同数のｎ個の対象ファイルが追加された場合に、あらたなセグメントとしてセグメントＳ２とする。なお、セグメントＳ１と同数である必要はない。（Ｂ）では、セグメントＳ２が設定された状態を示す。
【０２６７】
（Ｃ）は、セグメントＳ２の設定後に、あらたに対象ファイルが追加され、その追加された対象ファイルについてビット行が生成された状態を示す。（Ｄ）このようにして、特定基礎単語出現マップＭ１が、特定基礎単語群およびセグメントＳ１〜ＳＮからなるビットマップを生成することができる。
【０２６８】
図３６は、対象ファイルの追加により複数個にセグメント化された出現マップ群を用いた場合の情報検索処理手順を示すフローチャートである。まず、情報検索装置２３００は、セグメント番号ｊをｊ＝１とし（ステップＳ３６０１）、セグメントＳｊを用いた情報検索処理を実行する（ステップＳ３６０２）。この情報検索処理（ステップＳ３６０２）では、図３１に示したステップＳ３１０１〜ステップＳ３１０８を実行する。すなわち、図３２−１および図３２−２に示したファイル特定処理（ステップＳ３１０４）、図３３に示した最長一致検索処理（ステップＳ３２０２）も実行する。ただし、図３２−２については、一部異なる処理があるため、図３７で説明する。
【０２６９】
そして、情報検索装置２３００は、ｊ＞Ｎであるか否かを判断する（ステップＳ３６０３）。ｊ＞Ｎでない場合（ステップＳ３６０３：Ｎｏ）、情報検索装置２３００は、ｊをインクリメントしてつぎのセグメントＳｊを指定して（ステップＳ３６０４）、ステップＳ３６０２に戻る。一方、ステップＳ３６０３において、ｊ＞Ｎである場合（ステップＳ３６０３：Ｙｅｓ）、情報検索装置２３００は、出力部２３０６による出力処理を実行する（ステップＳ３６０５）。ここでは、セグメントＳ１〜ＳＮを用いた各検索結果を出力することとなる。
【０２７０】
図３７は、図３６に示した情報検索処理（ステップＳ３６０２）における、ファイル特定処理（ステップＳ３１０４）の一部を示すフローチャートである。なお、図３７では、図３２−２と同一ステップには同一ステップ番号を付し、その説明を省略する。図３７において、ステップＳ３２１２により、ファイル特定できたセグメントＳｊ内の対象ファイルがあるか否かを判断する（ステップＳ３７００）。
【０２７１】
ファイル特定できたセグメントＳｊ内の対象ファイルがある場合（ステップＳ３７００：Ｙｅｓ）、ステップＳ３２１６に移行する。一方、ファイル特定できたセグメントＳｊ内の対象ファイルがない場合（ステップＳ３７００：Ｎｏ）、ステップＳ３６０３に移行する。すなわち、対象文字である特定単一文字を含む対象ファイルがセグメントＳｊに存在しない場合、後続の単一文字を対象文字にしてファイル特定できても、ステップＳ３２０７のファイル絞り込みをおこなっても、対象ファイルが得られない。
【０２７２】
したがって、１文字でも対象ファイルが特定できなかった場合は、情報検索装置２３００は、ステップＳ３６０３に移行して、つぎのセグメントＳｊを指定することで、無駄な検索を省略することができ、検索速度の高速化を図ることができる。
【０２７３】
以上説明したように、本情報生成プログラム、情報生成装置、および情報生成方法によれば、基礎単語や文字の存否を示すインデックス情報の生成の高速化およびインデックス情報のサイズの最適化を図ることができる。また、本情報検索プログラム、情報検索装置、および情報検索方法によれば、検索ノイズの低減化を図ることができる。
【０２７４】
なお、本実施の形態で説明した方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報生成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報生成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２７５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２７６】
（付記１）文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の指定単語を検出する検出工程と、
前記検出工程によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータに実行させることを特徴とする情報生成プログラム。
【０２７７】
（付記２）前記検出工程は、
前記対象ファイル内の対象文字を先頭文字とする最長一致検索により前記特定の指定単語を検出することを特徴とする付記１に記載の情報生成プログラム。
【０２７８】
（付記３）文字列が記述された対象ファイル群の中から単一文字ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された単一文字の出現頻度に基づいて、前記単一文字に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の単一文字を検出する検出工程と、
前記検出工程によって検出された特定の単一文字ごとに、当該特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータに実行させることを特徴とする情報生成プログラム。
【０２７９】
（付記４）前記集計工程は、
前記対象ファイル群の中から単一文字の出現頻度を集計し、
前記順位特定工程は、
前記集計工程によって集計された単一文字の出現頻度に基づいて、前記単一文字に関する目標出現率までの降順の順位を特定し、
前記検出工程は、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の単一文字を検出し、
前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字ごとに、当該特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする付記１または２に記載の情報生成プログラム。
【０２８０】
（付記５）前記順位特定工程によって特定された降順の順位よりも下位の順位となる単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する分割工程を前記コンピュータに実行させ、
前記生成工程は、
前記分割工程によって分割された上位ビットの分割文字コードごとに、当該分割文字コードの存否を前記対象ファイルごとに示すインデックス情報と、前記分割工程によって分割された下位ビットの分割文字コードごとに、当該分割文字コードの存否を前記対象ファイルごとに示すインデックス情報とを生成することを特徴とする付記３または４に記載の情報生成プログラム。
【０２８１】
（付記６）前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字が連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする付記３または４に記載の情報生成プログラム。
【０２８２】
（付記７）前記生成工程は、
前記順位特定工程によって特定された降順の順位までの特定の単一文字と前記上位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする付記５または６に記載の情報生成プログラム。
【０２８３】
（付記８）前記生成工程は、
前記下位ビットの分割文字コードと前記順位特定工程によって特定された降順の順位までの特定の単一文字とが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする付記５〜７のいずれか一つに記載の情報生成プログラム。
【０２８４】
（付記９）前記生成工程は、
前記上位ビットの分割文字コードと前記下位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を生成することを特徴とする付記５〜８のいずれか一つに記載の情報生成プログラム。
【０２８５】
（付記１０）検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０２８６】
（付記１１）検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位以内の特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する各単一文字が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイル群の中から前記検索文字列を構成する各単一文字がすべて存在する対象ファイルを絞り込む絞込み工程と、
前記絞込み工程によって絞り込まれた対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０２８７】
（付記１２）前記ファイル特定工程は、
前記特定の指定単語が存在する対象ファイルが存在しない場合、前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位以内の特定の単一文字の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する各単一文字が存在する対象ファイルを特定することを特徴とする付記１０に記載の情報検索プログラム。
【０２８８】
（付記１３）前記検索文字列を構成する単一文字のうち前記特定の単一文字に該当しない単一文字の文字コードを上位ビットの分割文字コードと下位ビットの分割文字コードとに分割する分割工程を前記コンピュータに実行させ、
前記ファイル特定工程は、
前記分割工程によって分割された上位ビットの分割文字コードの存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記上位ビットの分割文字コードが存在する対象ファイルを特定し、前記分割工程によって分割された下位ビットの分割文字コードの存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記下位ビットの分割文字コードが存在する対象ファイルを特定することを特徴とする付記１２に記載の情報検索プログラム。
【０２８９】
（付記１４）前記ファイル特定工程は、
前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの単一文字が連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する各連接文字列が存在する対象ファイルを特定し、
前記絞込み工程は、
前記ファイル特定工程によって特定された対象ファイル群の中から前記検索文字列を構成する前記各単一文字および前記各連接文字列がすべて存在する対象ファイルを絞り込むことを特徴とする付記１２に記載の情報検索プログラム。
【０２９０】
（付記１５）前記ファイル特定工程は、
前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字と前記上位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する、前記特定の単一文字と前記上位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定し、
前記下位ビットの分割文字コードと前記対象ファイル群に存在する単一文字のうち当該単一文字に関する目標出現率に応じた降順の順位までの特定の単一文字とが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する、前記下位ビットの分割文字コードと前記特定の単一文字とが連続する連接文字列が存在する対象ファイルを特定し、
前記上位ビットの分割文字コードと前記下位ビットの分割文字コードとが連続する連接文字列ごとに、当該連接文字列の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列を構成する、前記上位ビットの分割文字コードと前記下位ビットの分割文字コードとが連続する連接文字列が存在する対象ファイルを特定し、
前記絞込み工程は、
前記ファイル特定工程によって特定された対象ファイル群の中から前記検索文字列を構成する前記各単一文字、前記各上位ビットの分割文字コード、前記各下位ビットの分割文字コード、および前記各連接文字列がすべて存在する対象ファイルを絞り込むことを特徴とする付記１３に記載の情報検索プログラム。
【０２９１】
（付記１６）文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計手段と、
前記集計手段によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定手段と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定手段によって特定された降順の順位までの特定の指定単語を検出する検出手段と、
前記検出手段によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成手段と、
を備えることを特徴とする情報生成装置。
【０２９２】
（付記１７）検索文字列の入力を受け付ける入力手段と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定手段と、
前記ファイル特定手段によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索手段と、
前記検索手段によって検索された検索結果を出力する出力手段と、
を備えることを特徴とする情報検索装置。
【０２９３】
（付記１８）文字列が記述された対象ファイル群の中から指定単語ごとの出現頻度を集計する集計工程と、
前記集計工程によって集計された指定単語ごとの出現頻度に基づいて、前記指定単語に関する目標出現率までの降順の順位を特定する順位特定工程と、
前記対象ファイル群の中から選ばれた対象ファイルの中から前記順位特定工程によって特定された降順の順位までの特定の指定単語を検出する検出工程と、
前記検出工程によって検出された特定の指定単語ごとに、当該特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を生成する生成工程と、
をコンピュータが実行することを特徴とする情報生成方法。
【０２９４】
（付記１９）検索文字列の入力を受け付ける入力工程と、
文字列が記述された対象ファイル群に存在する指定単語のうち当該指定単語に関する目標出現率に応じた降順の順位以内の特定の指定単語の存否を前記対象ファイルごとに示すインデックス情報を参照することにより、前記検索文字列が存在する対象ファイルを特定するファイル特定工程と、
前記ファイル特定工程によって特定された対象ファイルの中から前記検索文字列に関する情報を検索する検索工程と、
前記検索工程によって検索された検索結果を出力する出力工程と、
をコンピュータが実行することを特徴とする情報検索方法。
【符号の説明】
【０２９５】
１０１  基礎単語出現頻度テーブル
１０２  単一文字出現頻度テーブル
５００  情報生成装置
５０１  設定部
５０２  集計部
５０３  順位特定部
５０４  検出部
５０５  分割部
５０６  生成部
２３０１  入力部
２３０２  分割部
２３０３  ファイル特定部
２３０４  絞込み部
２３０５  検索部
２３０６  出力部
２３００  情報検索装置
Ｆ  対象ファイル群
Ｍ１  特定基礎単語出現マップ
Ｍ２  特定単一文字出現マップ
Ｍ３  上位分割文字コード出現マップ
Ｍ４  下位分割文字コード出現マップ
Ｍ５  連接文字列出現マップ
【国際調査報告】
2011148511.tif 000042
2011148511.tif 000043