(57)【要約】  一側面によれば、表記ゆれの存在による圧縮率の低下を抑制することを目的とする。  一態様によれば、圧縮装置は、互いに異なる複数の文字情報に対して割り当てられた第１の圧縮符号が、前記複数の文字情報のそれぞれに関連付けられた辞書情報を記憶する記憶部と、前記複数の文字情報のうちの第１の文字情報を取得した場合に、前記第１の文字情報と関連付けられた前記第１の圧縮符号を前記辞書情報から取得する取得部と、取得した前記第１の圧縮符号を、圧縮データを格納する格納領域に書き込む書込部と、を含む。
2014147672.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる複数の文字情報対して割り当てられた第１の圧縮符号が、前記複数の文字情報のそれぞれに関連付けられた辞書情報を記憶する記憶部と、
前記複数の文字情報のうちの第１の文字情報を取得した場合に、前記第１の文字情報と関連付けられた前記第１の圧縮符号を前記辞書情報から取得する取得部と、
取得した前記第１の圧縮符号を、圧縮データを格納する格納領域に書き込む書込部と、
を含むことを特徴とする圧縮装置。
【請求項２】
前記複数の文字情報は、前記複数の文字情報のそれぞれにより表される意味または文法上の機能の少なくとも一部が互いに共通し、
前記第１の圧縮符号は、前記複数の文字情報の出現頻度の合計に応じて生成される、
ことを特徴とする請求項１に記載の圧縮装置。
【請求項３】
前記辞書情報は、前記第１の文字情報に、さらに、前記複数の文字情報に含まれる前記第１の文字情報以外の文字情報と前記第１の文字情報とを識別する第１の識別情報を関連付け、
前記取得部は、前記第１の圧縮符号を取得するとともに、前記第１の識別情報を取得し、
前記書込部は、前記第１の圧縮符号および前記第１の識別情報を前記格納領域に書き込む、
ことを特徴とする請求項１または請求項２に記載の圧縮装置。
【請求項４】
前記第１の識別情報は、前記第１の文字情報の出現頻度に応じて生成された圧縮符号であり、
前記第１の識別情報に続いて前記第１の圧縮符号が前記格納領域に書き込まれる、
ことを特徴とする請求項３に記載の圧縮装置。
【請求項５】
前記第１の識別情報は、固定長の圧縮符号であり、前記第１の圧縮符号に続いて前記格納領域に書き込まれる、
ことを特徴とする請求項３に記載の圧縮装置。
【請求項６】
コンピュータに、
互いに異なる複数の文字情報に対して割り当てられた第１の圧縮符号が前記複数の文字情報のそれぞれに関連付けられた辞書情報を、前記複数の文字情報のうちの第１の文字情報を取得した場合に参照して、前記辞書情報により前記第１の文字情報と関連付けられた前記第１の圧縮符号を取得し、
取得した前記第１の圧縮符号を、圧縮データを格納する格納領域に書き込む、
ことを実行させることを特徴とする圧縮方法。
【請求項７】
コンピュータに、
互いに異なる複数の文字情報に対して割り当てられた第１の圧縮符号が前記複数の文字情報のそれぞれに関連付けられた辞書情報を、前記複数の文字情報のうちの第１の文字情報を取得した場合に参照して、前記辞書情報により前記第１の文字情報と関連付けられた前記第１の圧縮符号を取得し、
取得した前記第１の圧縮符号を、圧縮データを格納する格納領域に書き込む、
処理を実行させることを特徴とする圧縮プログラム。
【請求項８】
互いに異なる複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数の文字情報に対応する第１の文字情報とを関連付けた辞書情報を記憶する記憶部と、
前記第１の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第１の圧縮符号に関連付けられた前記第１の文字情報を前記辞書情報から取得する取得部と、
取得した前記第１の文字情報を前記圧縮データの伸張結果を格納する格納領域に書き込む書込部と、
を含むことを特徴とする伸張装置。
【請求項９】
前記辞書情報は、前記第１の文字情報と、前記複数の文字情報に含まれる第２の文字情報を前記複数の文字情報に含まれる前記第２の文字情報以外の文字情報と識別する識別情報との組み合わせの格納先を示す格納先情報を、前記第１の圧縮符号に関連付けることにより、前記第１の圧縮符号と前記第１の文字情報とを関連付ける、
ことを特徴とする請求項８に記載の伸張装置。
【請求項１０】
前記第１の圧縮符号は、前記複数の文字情報の出現頻度の合計に応じて生成され、
前記辞書情報は、前記第１の圧縮符号に、さらに、前記第１の圧縮符号が前記複数の文字情報の出現頻度の合計に基づいて生成された旨を示すフラグ情報を対応付け、
前記取得部は、前記辞書情報において前記第１の圧縮符号に前記フラグ情報が対応付けられている場合に、前記格納先情報に基づく前記格納先へのアクセスにより前記第１の文字情報を取得する、
ことを特徴とする請求項９に記載の伸張装置。
【請求項１１】
コンピュータに、
互いに異なる複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数の文字情報に対応する第１の文字情報とを関連付けた辞書情報を生成し、
前記第１の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第１の圧縮符号に関連付けられた前記第１の文字情報を前記辞書情報から取得し、
取得した前記第１の文字情報を前記圧縮データの伸張結果を格納する格納領域に書き込む、
ことを実行させることを特徴とする伸張方法。
【請求項１２】
コンピュータに、
複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数の文字情報に対応する第１の文字情報とを関連付けた辞書情報を生成し、
前記第１の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第１の圧縮符号に関連付けられた前記第１の文字情報を前記辞書情報から取得し、
取得した前記第１の文字情報を前記圧縮データの伸張結果を格納する格納領域に書き込む、
処理を実行させることを特徴とする伸張プログラム。
【請求項１３】
圧縮データが記憶された記憶装置と、
前記圧縮データに対する処理要求に応じた処理を実行する処理装置を含む情報処理システムであって、
前記処理装置は、
互いに異なる複数の文字情報に対して割り当てられた第１の圧縮符号を、前記複数の文字情報のそれぞれに関連付けた辞書情報を記憶する記憶部と、
前記処理要求に応じて、前記記憶装置から前記圧縮データを読み出す読出部と、
前記第１の圧縮符号を前記圧縮データから取得した場合に、前記辞書情報において前記第１の圧縮符号に関連付けられた第１の文字情報を前記辞書情報から取得する第１の取得部と、
取得した前記第１の文字情報を前記圧縮データの伸張結果を格納する第１の格納領域に書き込む第１の書込部と、
前記第１の格納領域に格納された伸張結果に対して前記処理要求に応じた処理を実行する処理部と、
前記処理要求に応じた処理が行なわれたデータから前記第１の文字情報を取得した場合に、前記辞書情報により前記第１の文字情報と関連付けられた前記第１の圧縮符号を取得する第２の取得部と、
取得した前記第１の圧縮符号を第２の格納領域に書き込む第２の書込部と、
前記第２の領域に書き込まれたデータを前記記憶装置に格納する格納部と、
を含むことを特徴とする情報処理システム。
【請求項１４】
互いに異なる複数の文字情報に対応する１種類の共通文字情報に対して圧縮符号の割り当て処理を行なう割当部と、
前記複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第１の圧縮符号を関連付けた辞書情報を生成する生成部と、
を含むことを特徴とする辞書生成装置。
【請求項１５】
前記複数の文字情報は、前記複数の文字情報のそれぞれにより表される意味または文法上の機能の少なくとも一部が互いに共通し、
前記圧縮符号は、前記複数の文字情報の出現頻度の合計に応じて生成される、
ことを特徴とする請求項１４に記載の辞書生成装置。
【請求項１６】
前記辞書情報は、前記複数の文字情報のうちの第１の文字情報に、前記複数の文字情報に含まれる前記第１の文字情報以外の文字情報と前記第１の文字情報とを識別する第１の識別情報をさらに関連付ける、
ことを特徴とする請求項１４または請求項１５に記載の辞書生成装置。
【請求項１７】
コンピュータに、
互いに異なる複数の文字情報に対応する１種類の共通文字情報に対して圧縮符号の割り当て処理を行ない、
前記複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第１の圧縮符号を関連付けた辞書情報を生成する、
ことを実行させることを辞書生成方法。
【請求項１８】
コンピュータに、
互いに異なる複数の文字情報に対応する１種類の共通文字情報に対して圧縮符号の割り当て処理を行ない、
前記複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第１の圧縮符号を関連付けた辞書情報を生成する、
処理を実行させることを特徴とする辞書生成プログラム。
【請求項１９】
互いに異なる複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数の文字情報に対応する第１の文字情報と、を関連付ける辞書情報を生成する生成部、
を含むことを特徴とする辞書生成装置。
【請求項２０】
コンピュータに、
互いに異なる複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数の文字情報に対応する第１の文字情報と、を関連付ける辞書情報を生成する、
ことを実行させることを特徴とする辞書生成方法。
【請求項２１】
コンピュータに、
互いに異なる複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数の文字情報に対応する第１の文字情報と、を関連付ける辞書情報を生成する、
処理を実行させることを特徴とする辞書生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
データの圧縮技術または伸長技術の少なくとも一方に関する。
【背景技術】
【０００２】
ハフマン符号化や算術圧縮などの可変長圧縮符号を用いた圧縮アルゴリズムでは、圧縮符号の割り当て対象の文字情報群に対して、文字情報群に含まれる文字情報ごとに出現頻度などの統計情報に応じた長さの圧縮符号が割り当てられる。ハフマン符号化の圧縮アルゴリズムでは、文字情報群に含まれる文字情報間の出現頻度の大小比較に基づいて圧縮符号の生成が行なわれる。算術圧縮では、文字情報群全体における各文字情報の出現割合に基づいて定められた符号長の圧縮符号が生成される。これらの圧縮アルゴリズムでは、出現頻度が高い文字情報ほど短い圧縮符号が割り当てられることで、短い圧縮符号の使用頻度が高くなるため、圧縮データ全体の圧縮率が向上する。【０００３】
ハフマン符号化や算術圧縮などの圧縮アルゴリズムにおける可変長圧縮符号の割り当て対象は、文字や数字などの記号である。また、圧縮符号の割り当て対象を拡長して、記号の組み合わせである単語やタグなどの文字列に対して可変長圧縮符号を割り当てる技術がある。この場合、複数の記号の組み合わせに１つの圧縮符号が割り当てられるので、圧縮率が向上する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−９３４１４号公報
【特許文献２】特開平０５−２４１７７７号公報
【発明の概要】
【解決しようとする課題】
【０００５】
文書データは、文字や数字などの記号の組み合わせである単語やタグなどの文字列により構成される。文書データ内の各文字列は、それぞれ特定の意味や文法的な機能などの概念と対応するが、共通する概念に対応する文字列同士であっても、互いに記号の組み合わせ（表記）が異なる、いわゆる表記ゆれが存在する。表記ゆれの例として、動詞や形容詞などの活用語の活用や、同義語や類語などが挙げられる。
【０００６】
単語やタグなどの文字列への可変長圧縮符号の割り当てにおいては、出現頻度が高い文字情報ほど短い圧縮符号が割り当てられる。１つの概念に対して互いに表記が異なる複数の文字列（複数種類の文字列）が対応する表記ゆれが生じると、１つの概念に対して１種類の文字列が対応する表記ゆれがない場合の文字列の出現頻度よりも、複数種類の文字列それぞれの出現頻度が低くなってしまう。そのため、複数種類の文字列それぞれに割り当てられる圧縮符号が長くなり、圧縮率が低下する要因となる。
【０００７】
本発明の一側面によれば、表記ゆれの存在による圧縮率の低下を抑制することを目的とする。
【課題を解決するための手段】
【０００８】
一態様によれば、圧縮装置は、互いに異なる複数の文字情報に対して割り当てられた第１の圧縮符号が、前記複数の文字情報のそれぞれに関連付けられた辞書情報を記憶する記憶部と、前記複数の文字情報のうちの第１の文字情報を取得した場合に、前記第１の文字情報と関連付けられた前記第１の圧縮符号を前記辞書情報から取得する取得部と、取得した前記第１の圧縮符号を、圧縮データを格納する格納領域に書き込む書込部と、を含む。【０００９】
一態様によれば、伸長装置は、互いに異なる複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数の文字情報に対応する第１の文字情報とを関連付けた辞書情報を記憶する記憶部と、前記第１の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第１の圧縮符号に関連付けられた前記第１の文字情報を前記辞書情報から取得する取得部と、取得した前記第１の文字情報を前記圧縮データの伸長結果を格納する格納領域に書き込む書込部と、を含む。【００１０】
一態様によれば、情報処理システムは、圧縮データが記憶された記憶装置と、前記圧縮データに対する処理要求に応じた処理を実行する処理装置を含む情報処理システムであって、前記処理装置は、互いに異なる複数の文字情報に対して割り当てられた第１の圧縮符号を、前記複数の文字情報のそれぞれに関連付けた辞書情報を記憶する記憶部と、前記処理要求に応じて、前記記憶装置から前記圧縮データを読み出す読出部と、前記第１の圧縮符号を前記圧縮データから取得した場合に、前記辞書情報において前記第１の圧縮符号に関連付けられた第１の文字情報を前記辞書情報から取得する第１の取得部と、取得した前記第１の文字情報を前記圧縮データの伸長結果を格納する第１の格納領域に書き込む第１の書込部と、前記第１の格納領域に格納された伸長結果に対して前記処理要求に応じた処理を実行する処理部と、前記処理要求に応じた処理が行なわれたデータから前記第１の文字情報を取得した場合に、前記辞書情報により前記第１の文字情報と関連付けられた前記第１の圧縮符号を取得する第２の取得部と、取得した前記第１の圧縮符号を第２の格納領域に書き込む第２の書込部と、前記第２の領域に書き込まれたデータを前記記憶装置に格納する格納部と、を含む。【００１１】
一態様によれば、辞書生成装置は、互いに異なる複数の文字情報に対応する１種類の共通文字情報に対して圧縮符号の割り当て処理を行なう割当部と、前記互いに異なる複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第１の圧縮符号を関連付けた辞書情報を生成する生成部と、を含む。【００１２】
一態様によれば、辞書生成装置は、互いに異なる複数の文字情報に対して共通して割り当てられた第１の圧縮符号と、前記複数種類の文字情報に対応する第１の文字情報と、を関連付ける辞書情報を生成する生成部を含む。
【発明の効果】
【００１３】
一側面によれば、表記ゆれの存在による圧縮率の低下を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、圧縮処理および伸長処理の概要を示す。
【図２】図２は、圧縮符号への変換例を示す。
【図３】図３は、機能ブロックの構成例を示す。
【図４】図４は、圧縮機能の処理手順例を示す。
【図５】図５は、圧縮辞書生成の処理手順例を示す。
【図６】図６は、頻度集計処理の処理手順例を示す。
【図７】図７は、変換テーブルＴ１の例を示す。
【図８】図８は、統計テーブルＴ２の例を示す。
【図９】図９は、圧縮辞書Ｄ１のデータ構造例を示す。
【図１０】図１０は、圧縮データ生成処理の処理手順例を示す。
【図１１】図１１は、伸長機能の処理手順例を示す。
【図１２】図１２は、伸長辞書生成の処理手順例を示す。
【図１３】図１３は、伸長辞書Ｄ２のデータ構造例を示す。
【図１４】図１４は、伸長データ生成処理の処理手順例を示す。
【図１５】図１５は、圧縮符号への変換例を示す。
【図１６】図１６は、圧縮辞書のデータ構造例を示す。
【図１７】図１７は、伸長辞書のデータ構造例を示す。
【図１８】図１８は、伸長データ生成処理の処理手順例を示す。
【図１９】図１９は、圧縮符号の割り当て例を示す。
【図２０】図２０は、伸長辞書のデータ構造例を示す。
【図２１】図２１は、伸長データ生成処理の処理手順例を示す。
【図２２】図２２は、伸長データ生成処理の処理手順例を示す。
【図２３】図２３は、伸長データ生成処理の処理手順例を示す。
【図２４】図２４は、伸長データ生成処理の処理手順例を示す。
【図２５】図２５は、伸長データ生成処理の処理手順例を示す。
【図２６】図２６は、伸長データ生成処理の処理手順例を示す。
【図２７】図２７は、伸長データ生成処理の処理手順例を示す。
【図２８】図２８は、コンピュータ１のハードウェア構成例を示す。
【図２９】図２９は、コンピュータ１で動作するプログラム構成例を示す。
【図３０】図３０は、コンピュータ１を用いたシステム構成例を示す。
【図３１】図３１は、コンピュータ１を用いたシステム構成例を示す。
【発明を実施するための形態】
【００１５】
［圧縮処理および伸長処理の流れ］
図１は、圧縮処理および伸長処理の概要を示す。圧縮ファイルＦ２の生成は、ファイルＦ１と変換テーブルＴ１とに基づいて行なわれる。変換テーブルＴ１は、共通の概念に対応する複数種類の文字情報のそれぞれと、その複数種類の文字情報で共通する概念を示す共通文字情報とを対応づける。例えば、変換テーブルＴ１は、前述の複数種類の文字情報（互いに異なる複数の文字情報）のそれぞれに対し、複数種類の文字情報同士を識別する識別記号をさらに対応付けてもよい。
【００１６】
圧縮符号を割り当てる対象の文字情報群それぞれについて、ファイルＦ１における頻度集計Ｈ１が、変換テーブルＴ１に基づいて行なわれる。頻度集計Ｈ１の処理において、変換テーブルＴ１に共通文字情報と対応づけられた文字情報は、共通文字情報としてカウントされる。また、頻度集計Ｈ１の処理において、識別記号と対応付けられた文字情報は、共通文字情報および識別記号の双方でカウントされてもよい。頻度集計Ｈ１の処理の集計結果は、頻度テーブルＴ２に格納される。
【００１７】
また、例えば、頻度集計Ｈ１の処理は、ファイルＦ１の代わりに、ファイルＦ１と共通の文字情報を多く含むことが見込まれるファイル（例えば、版数の異なる書籍など）に基づいて行なわれてもよい。また、頻度集計Ｈ１は、例えば、ファイルＦ１を含む複数のファイル（あるファイルを分割して得られる分割ファイル群（ファイルＦ１を含む）など）に基づいて行なわれてもよい。
【００１８】
頻度テーブルＴ２に格納された文字情報群（共通文字情報を含む、または共通文字情報と識別記号との双方を含む）に対して、それぞれの出現頻度に基づいて符号割当てＨ２の処理が行なわれる。例えば、ハフマン符号化のアルゴリズムによれば、文字情報同士での出現頻度の比較により各文字情報に対して圧縮符号が割り当てられる。また、例えば、算術圧縮によれば、圧縮符号を割り当てる対象の文字情報群全体における各文字情報の出現割合に応じて符号長が設定され、設定された符号長の圧縮符号が各文字情報に割り当てられる。圧縮辞書Ｄ１には、文字情報群（共通文字情報を含む、または共通文字情報と識別記号との双方を含む）それぞれについて、割り当てられた圧縮符号との対応関係が示されている。圧縮処理Ｈ３では、ファイルＦ１に含まれる文字情報と対応する圧縮符号が圧縮辞書Ｄ１から順次取得される。圧縮ファイルＦ２は、順次取得された圧縮符号による圧縮符号列（圧縮データ）、変換テーブルＴ１および頻度テーブルＴ２を含む。
【００１９】
上述の処理では、頻度集計Ｈ１の処理で、共通の概念に対応する複数種類の文字情報が共通文字情報に集約されるため、符号割当てＨ２において、圧縮符号を割り当てる対象の文字情報の種類が少なくなる。そのため、表記ゆれによる出現頻度低下が抑えられ、文字情報に割り当てられる圧縮符号の符号長が短く抑えられるので、表記ゆれを要因とする圧縮率の低下が抑制される。また、圧縮符号を割り当てる対象の文字情報の種類が少なくなることで、符号割当てＨ２の処理量が低減する。さらに、複数種類の文字情報のいずれについても圧縮符号が割り当てられるため、圧縮符号が割り当てられないことにより予期せずに圧縮率が低下することも抑制される。
【００２０】
また、頻度テーブルＴ２に格納された共通文字情報の出現頻度の情報は、そのままテキストマイニングに活用可能である。圧縮データを伸長しなくても、文書データ内にどのような概念がどの程度の頻度で示されているかなどの情報を頻度テーブルＴ２から抽出可能である。
【００２１】
伸長ファイルＦ３の生成は、圧縮ファイルＦ２に基づいて行なわれる。圧縮ファイルＦ２には、上述の通り、圧縮データ、変換テーブルＴ１および頻度テーブルＴ２が含まれる。圧縮ファイルＦ２から取り出された頻度テーブルＴ２に格納された文字情報群（共通文字情報を含む、または共通文字情報と識別記号との双方を含む）それぞれに対し、頻度テーブルＴ２で対応付けられた出現頻度に基づいて、符号割当てＨ４の処理が行なわれる。符号割当てＨ４の処理は、符号割当てＨ２の処理と同じアルゴリズムに基づいて行なわれる。伸長辞書Ｄ２は、圧縮符号と、圧縮符号が割り当てられた文字情報との対応関係を示す。伸長処理Ｈ５では、圧縮ファイルＦ２から取り出した圧縮符号に対応する文字情報が伸長辞書Ｄ２から取得される。伸長処理Ｈ５において、共通文字情報に対応する圧縮符号が圧縮ファイルＦ２から得られた場合には、圧縮符号に対応する共通文字情報が伸長辞書Ｄ２から取得される。また、識別記号に対応付けられた圧縮符号が用いられる場合には、伸長辞書Ｄ２は、共通文字情報の代わりに、圧縮ファイルＦ２から取り出した変換テーブルＴ１内の共通文字情報の格納位置（オフセット値）を含む。伸長処理Ｈ５において伸長辞書Ｄ２からオフセット値が得られた場合には、元の文字情報がオフセット値および識別記号に基づいて取得される。伸長ファイルＦ３は、伸長処理Ｈ５により得られた文字情報による文字情報列を含む。
【００２２】
圧縮ファイルＦ２に含まれる頻度テーブルＴ２においても、共通の概念に対応する複数種類の文字情報が共通文字情報に集約されているので、符号割当てＨ４において、圧縮符号を割り当てる対象の文字情報の種類が少なく抑えられる。
【００２３】
ファイルＦ１と伸長ファイルＦ３とが同一のデータであれば、圧縮処理Ｈ３および伸長処理Ｈ５は、可逆の圧縮伸長処理である。ファイルＦ１と伸長ファイルＦ３とが同一のデータでなければ、圧縮処理Ｈ３および伸長処理Ｈ５は、非可逆の圧縮伸長処理である。すなわち、共通の概念に対応する複数種類の文字情報同士が変換テーブルＴ１において識別記号により識別されると、伸長時に識別記号に基づいて圧縮前の文字情報を変換テーブルＴ１において特定可能となるため、可逆の圧縮伸長処理が行なわれる。
【００２４】
［表記ゆれと文字情報の出現頻度］
表記ゆれの一例として、文書データ内に同義語が存在しうる。例えば、英語では英国英語と米国英語で表記が異なる単語が存在する（例えば「ｐａｖｅｍｅｎｔ」と「ｓｉｄｅｗａｌｋ」など）し、そもそも複数通りに表記が認められた単語も存在する（例えば「ｃｅｎｔｅｒ」と「ｃｅｎｔｒｅ」など）。また、例えば、日本語では外国語を日本語表記に置き換える際に複数通りの表記が認められている（例えば「インターフェース」と「インタフェース」など）。さらに、各言語においては、同義語と同様に、類義語が存在しうる（例えば「ｃｅｎｔｅｒ」と「ｍｉｄｄｌｅ」など）。これらの同義語や類義語は概念が共通するので、共通文字情報に集約されることにより、表記ゆれによる出現頻度低下が抑えられる。これにより、文字情報に割り当てられる圧縮符号の符号長が短く抑えられるので、表記ゆれを要因とする圧縮率の低下が抑制される。また、圧縮符号の割り当て対象の文字情報が共通文字情報に集約されるので可変長圧縮符号割り当ての処理量が低減される。さらに、文字列に圧縮符号が割り当てられないことによる予期せぬ圧縮率低下が抑制される。
【００２５】
また、英語などの言語においては、文頭の単語の頭文字は大文字表記される。頭文字が小文字表記の単語のみを圧縮符号の割り当て対象とすると、文書データ中の文頭の単語は圧縮符号に置き換えられないので、圧縮率が向上しない要因となる。一方、頭文字が大文字表記の単語と、小文字表記の単語との双方に圧縮符号を個別に割り当てると、圧縮符号を割り当てる対象の文字情報の種類が倍になるので、圧縮符号の割り当て処理の処理量が増大する。この表記ゆれに対しても、頭文字が大文字表記の単語と小文字表記の単語との双方に対応する共通文字情報と、頭文字が大文字か小文字かを示す識別記号と、を用いることにより、圧縮率低下の抑制および圧縮符号割り当ての処理量抑制の効果が得られる。
【００２６】
また、特定の言語（例えば、英語、ドイツ語及び日本語など）においては、活用語が存在する。活用語とは、文法上の制約に応じて語形が変化する単語であり、例えば英語においては動詞、形容詞および副詞などである。活用語が存在する言語で記述された文書データでは、文法上の制約に応じた語形変化により異なる文字列で示される単語が存在する。例えば、英語においては、１種類の動詞について、原形、三人称単数現在形、過去形、過去分詞および現在分詞の５種類の活用形が存在する。これらは、共通の概念に対応するものの表記が異なる。そこで、例えば、活用形で表現された単語を活用語の概念に対応する共通文字情報（例えば動詞の原形）に集約して圧縮処理が行われることにより、圧縮率低下の抑制および圧縮符号割り当ての処理量抑制の効果が得られる。また、活用形を示す識別記号（例えば過去形を示す）を併用することにより、伸長時に元の活用形に戻すことができる。
【００２７】
文字情報の出現頻度は文書データによって異なる。そのため、出現頻度は、文字情報ごとに異なる。しかし、同義語や類語、または文頭の単語の頭文字の表記ゆれと異なり、活用語については、共通する概念に対応する複数種類の文字情報は、出現頻度の傾向が類似する。活用語で互いに異なる活用形の文字情報同士は、文書内で併用されることがある。例えば、「ｓｅａｒｃｈ  ｄａｔａ  ｆｏｒ  ・・・」などを含む文のあとに、「ｔｈｅ  ｓｅａｒｃｈｅｄ  ｄａｔａ  ｉｓ  ・・・」などの文が続くことがある。共通文字情報に集約される文字情報同士で出現頻度の傾向が類似するので、文字情報そのものの出現頻度と整合しない符号長の圧縮符号が割り当てることが少なくなる。
【００２８】
また、例えば、動詞に関しては原形と過去形の出現頻度が高い一方で過去分詞の出現頻度は低いなどの、動詞全体において共通する傾向が存在する。活用形を示す識別記号に対しても出現頻度に基づいて圧縮符号が割り当てられることで、出現頻度が高い活用形には短い圧縮符号が割り当てられ、出現頻度が低い活用形には長い圧縮符号が割り当てられる。異なる活用形の単語同士で出現頻度に差がある場合でも、識別記号に割り当てられた圧縮符号により、符号長が調整される。
【００２９】
また、活用形を示す識別記号が用いられないと非可逆圧縮となるが、非可逆圧縮により得られた圧縮データは、例えばテキストマイニングなどの用途に用いられる。非可逆圧縮された圧縮データが伸長された場合には、動詞に関して活用形の情報が失われる。その一方で、圧縮データに基づいて、「ｌｉｋｅ」や「ｈａｔｅ」などの動詞の使用頻度や、それらの動詞と共起するキーワードの抽出などの分析は、非可逆圧縮された圧縮データに基づいて実行可能である。
【００３０】
［圧縮符号への変換］
図２は、圧縮符号への変換例を示す。図１には、「Ｈｅ  ｓｐｅｎｔ  ｍｕｃｈ  ｔｉｍｅ  ｆｏｒ  ｔａｌｋｉｎｇ  ａｂｏｕｔ  ｈｉｓ  ｉｎｖｅｎｔｉｏｎ．」という英語例文が示される。単語や文字などの文字情報に対して割り当てられた圧縮符号を用いて、図１に示す英語例文の一部を変換した場合の例（１）〜（６）が図２に示される。例（１）〜（３）は、「ｔａｌｋｉｎｇ」という文字情報に対応する圧縮符号の例である。また、例（４）〜（６）は、「ｓｐｅｎｔ」という文字情報に対応する圧縮符号の例である。「ｔａｌｋｉｎｇ」および「ｓｐｅｎｔ」は、いずれも動詞の活用形である。
【００３１】
単語に対して圧縮符号を割り当てる割り当て方法の一つとして、動詞については原形のみに対して圧縮符号を割り当てる方法がある。例えば、「ｔａｌｋ」や「ｓｐｅｎｄ」などの動詞に対して、それぞれ圧縮符号ｃ（ｔａｌｋ）や圧縮符号ｃ（ｓｐｅｎｄ）が割り当てられる。以下、圧縮符号は「ｃ（）」と示される。圧縮符号を「ｃ（）」と示す場合には、丸括弧内に圧縮符号に対応する文字情報が示される。その場合は、「ｔａｌｋｉｎｇ」のうち、圧縮符号は原形の「ｔａｌｋ」にしか割り当てられていないので、「ｉｎｇ」については、例えば、圧縮符号ｃ（ｉ）、圧縮符号ｃ（ｎ）および圧縮符号ｃ（ｇ）を組み合わせて表現される。すなわち例（１）に示される通り、「ｔａｌｋｉｎｇ」は、圧縮符号列ｃ（ｔａｌｋ）ｃ（ｉ）ｃ（ｎ）ｃ（ｇ）に変換される。また、「ｓｐｅｎｔ」は圧縮符号が割り当てられた「ｓｐｅｎｄ」を含む文字列でないため、圧縮符号ｃ（ｓｐｅｎｄ）が用いられない。そのため、例えば、例（４）に示されるように、「ｓｐｅｎｔ」は、圧縮符号列ｃ（ｓ）ｃ（ｐ）ｃ（ｅ）ｃ（ｎ）ｃ（ｔ）に変換される。
【００３２】
「ｔａｌｋ」、「ｔａｌｋｅｄ」および「ｔａｌｋｉｎｇ」などの同じ動詞の活用形については、共通する意味を有しているものの文法上の制約により異なる表記で示される文字情報群である。その文字情報群の中の１つに圧縮符号を割り当てたとしても、他の文字情報を圧縮符号に変換する場合には、その一部または全部に対して文字単位の圧縮符号が行なわれることとなってしまう。そのため、単語単位の文字情報を複数の圧縮符号に変換することとなり、圧縮率向上の阻害要因になりうる。
【００３３】
また、単語に対して圧縮符号を割り当てる割り当て方法の一つとして、各動詞の各活用形に対して圧縮符号を割り当てる方法がある。例えば、「ｔａｌｋ」という動詞に関しては「ｔａｌｋ」、「ｔａｌｋｉｎｇ」および「ｔａｌｋｅｄ」などに対して、圧縮符号ｃ（ｔａｌｋ）、ｃ（ｔａｌｋｉｎｇ）および（ｔａｌｋｅｄ）などがそれぞれ対応づけられる。また、例えば、「ｓｐｅｎｄ」という動詞に関しても、「ｓｐｅｎｄ」、「ｓｐｅｎｄｉｎｇ」および「ｓｐｅｎｔ」などに対して圧縮符号ｃ（ｓｐｅｎｄ）、ｃ（ｓｐｅｎｄｉｎｇ）および（ｓｐｅｎｔ）などがそれぞれ対応づけられる。その場合には、図２に示す英語例文中の「ｔａｌｋｉｎｇ」は、例（２）に示す通り、圧縮符号ｃ（ｔａｌｋｉｎｇ）に変換される。また、英語例文中の「ｓｐｅｎｔ」も、例（５）に示す通り、圧縮符号ｃ（ｓｐｅｎｔ）に変換される。
【００３４】
例（２）および例（５）によれば、各動詞自体の意味が１つであるのに対し、語形変化により例えば５種類の活用形（原形、三人称単数現在形、過去形、過去分詞および現在分詞）それぞれに対応する圧縮符号が存在することになる。そのため、圧縮符号の種類が増大してしまう。圧縮符号の種類が多いほど、圧縮辞書や伸長辞書のサイズは増大し、また、各文字列に対して割り当てる圧縮符号を生成する処理の処理量が増大する。そのため、圧縮符号の種類が多くなることにより、圧縮速度や伸長速度が遅くなってしまう。圧縮符号の割り当て処理量や圧縮辞書データ構造と、圧縮符号の種類の数との関係についてさらに後述される。
【００３５】
そこで、例えば、圧縮符号の割り当て方法の一つとして、共通の意味を有する複数種類の文字情報のいずれについても、その複数種類の文字情報で共通する意味を示す共通文字情報に対して割り当てた圧縮符号に変換する方法がある。例えば、「ｔａｌｋ」、「ｔａｌｋｉｎｇ」および「ｔａｌｋｅｄ」などについては、共通する意味を示す「ｔａｌｋ」に割り当てられた圧縮符号ｃ（ｔａｌｋ）に変換される。同様に、例えば、「ｓｐｅｎｔ」などの文字情報についても圧縮符号ｃ（ｓｐｅｎｄ）に変換される。共通文字情報に対して割り当てられた圧縮符号を用いて文字情報を圧縮すると、圧縮されたデータを伸長して得られる伸長データは、前述の複数種類の文字情報で共通する意味を示す。その一方で、共通の圧縮符号が割り当てられているため、伸長データは、同一表記となってしまう。共通文字情報に対して割り当てられた圧縮符号が用いられると、圧縮されたデータを伸長した場合に共通の意味だけが再現されることとなり、上述の方法は、非可逆圧縮として用いられる。
【００３６】
さらに、上述の非可逆圧縮に加えて、例えば、共通の意味を有する複数の文字情報同士を識別する識別記号が用いられる。例えば、共通の「ｔａｌｋ」という意味を有する文字情報「ｔａｌｋｉｎｇ」および「ｔａｌｋｅｄ」などが、それぞれ識別記号［−ｉｎｇ］および［−ｅｄ］などで識別される。以下、角括弧［］により識別記号が示される。例えば、識別記号［−ｉｎｇ］は、単語が現在進行形であるという文法上の機能を示す。また、例えば、識別記号［−ｅｄ］は、単語が過去形であるという文法上の機能を示す。
【００３７】
例えば、例（３）に示す通り、圧縮符号ｃ（ｔａｌｋ）および圧縮符号ｃ（［−ｉｎｇ］）の双方を用いることにより、文字情報「ｔａｌｋｉｎｇ」に対応する圧縮データが生成される。この圧縮データが伸長された場合に、伸長データに文字情報「ｔａｌｋ」の現在進行形が存在すると判断できるので、文字情報「ｔａｌｋｉｎｇ」が復元される。また、例えば、例（６）に示す通り、圧縮符号ｃ（ｓｐｅｎｄ）および圧縮符号ｃ（［−ｅｄ］）の双方を用いることにより、文字情報「ｓｐｅｎｔ」に対応する圧縮データが生成される。この圧縮データが伸長された場合に、伸長データに文字情報「ｓｐｅｎｔ」の過去形が存在すると判断できるので、文字情報「ｓｐｅｎｔ」が復元される。共通文字情報に対して割り当てられた圧縮符号と、識別記号に対して割り当てられた圧縮符号とが組み合わせて用いられることで、文字情報が復元されるため、可逆圧縮として用いられる。
【００３８】
例（３）や例（６）を用いて示した圧縮方法によれば、文法上の制約により表記が変化したいずれの単語についても２つの圧縮符号で表現される。そのため、例（１）や例（４）のように、圧縮符号が割り当てられた単語と同じ概念に対応するにも関わらず表記が異なることにより、圧縮符号の種類が増大するという事態が回避される。また、識別記号は、複数種類の動詞に対して共通して用いることができる。そのため、圧縮符号の種類は、共通の概念に対応する文字情報の数程度増加する。例えば、８００種類の動詞に対して、例（２）や例（５）のごとく圧縮符号を割り当てると、圧縮符号の種類は、８００種類の数倍に跳ね上がってしまう。その一方で、文法上の機能の種類として、例えば、原形、三人称単数現在形、過去形、過去分詞および現在分詞の５種類を識別させる場合には、動詞に関しては圧縮符号の種類の数は５種類しか増加しない。例（３）や例（６）に示す圧縮符号の割り当てを行なうことにより、圧縮符号の種類の数をほぼ増大させず、例（１）や例（４）に示す事態を生じにくくなる。
【００３９】
［本実施形態の構成および手順］
図３は、機能ブロックの構成例を示す。コンピュータ１は、圧縮部１１、伸長部１２、生成部１３、生成部１４および記憶部１５を含む。記憶部１５は、例えば、圧縮対象のファイルＦ１、圧縮ファイルＦ２、伸長ファイルＦ３、圧縮辞書Ｄ１や伸長辞書Ｄ２などを記憶する。また、記憶部１５は、例えば圧縮辞書Ｄ１や伸長辞書Ｄ１の生成に用いられる単語リストＬ１を記憶する。単語リストＬ１は、圧縮符号を割り当てる対象の文字情報群のリストである。また、記憶部１５は、変換テーブルＴ１を記憶する。また、記憶部１５は、記憶領域Ａ１、Ａ２、Ａ３およびＡ４などの記憶領域を設け、圧縮部１１、伸長部１２、生成部１３および生成部１４の処理のワークエリアとして用いられる。圧縮部１１は、記憶部１５に記憶されたファイルＦ１の圧縮処理を実行し、圧縮ファイルＦ２を生成する。伸長部１２は、記憶部１５に記憶された圧縮ファイルＦ２の伸長処理を実行し、伸長ファイルＦ３を生成する。生成部１３は、圧縮部１１の圧縮処理で用いられる圧縮辞書Ｄ１を生成する。生成部１４は、伸長部１２の伸長処理で用いられる伸長辞書Ｄ２を生成する。
【００４０】
圧縮部１１は、制御部１１１、検索部１１２、読出部１１３および書込部１１４を含む。制御部１１１は、検索部１１２、読出部１１３および書込部１１４の制御により、ファイルＦ１の圧縮処理を実行する。制御部１１１は、ファイルＦ１を記憶領域Ａ１にロードする。読出部１１３は、記憶領域Ａ１内のファイルＦ１からデータを読み出す。検索部１１２は、読出部１１３が読み出したデータについて、圧縮辞書Ｄ１の検索を行なう。書込部１１４は、検索部１１２の検索結果に応じた圧縮符号を記憶領域Ａ２に書き込む。制御部１１１は、読出部１１３の読出し位置や、書込部１１４の書込み位置などの管理を行ない、例えば、読出部１１３や書込部１１４に、ファイルＦ１に含まれる文字コード列に対して順次処理を実行させる。また、制御部１１１は、記憶領域Ａ２に格納された圧縮データに基づいて圧縮ファイルＦ２を生成し、記憶部１５に圧縮ファイルＦ２を格納する。
【００４１】
伸長部１２は、制御部１２１、検索部１２２、読出部１２３および書込部１２４を含む。制御部１２１は、検索部１２２、読出部１２３および書込部１２４の制御により、圧縮ファイルＦ２の伸長処理を実行する。制御部１２１は、圧縮ファイルＦ２を記憶領域Ａ３にロードする。読出部１２３は、記憶領域Ａ３内の圧縮ファイルＦ２から圧縮符号を読み出す。検索部１２２は、読出部１２３が読み出した圧縮符号について、伸長辞書Ｄ２の検索を行なう。検索部１２２は、伸長辞書Ｄ２から取得した伸長コードが文字情報であるか変換テーブルＴ１におけるオフセット値であるか判定し、オフセット値である場合にはオフセット値に基づいて文字情報を取得する。書込部１２４は、検索部１２２により取得された文字情報を記憶領域Ａ４に書き込む。制御部１２１は、読出部１２３の読出し位置や、書込部１２４の書込み位置などの管理を行ない、例えば、読出部１２３や書込部１２４に、圧縮ファイルＦ２に含まれる圧縮符号に対して順次処理を実行させる。また、制御部１２１は、記憶領域Ａ４に格納された文字情報列（伸長データ）に基づいて伸長ファイルＦ３を生成し、記憶部１５に伸長ファイルＦ３を格納する。
【００４２】
生成部１３は、制御部１３１、統計部１３２、割当部１３３およびソート部１３４を含む。生成部１３は、圧縮部１１からの指示に応じて、圧縮辞書Ｄ１を生成する。制御部１３１は、統計部１３２、割当部１３３およびソート部１３４の制御により、ファイルＦ１の圧縮に用いられる圧縮辞書Ｄ１を生成する。統計部１３２は、ファイルＦ１内に含まれる文字や単語などの文字情報ごとに出現回数をカウントして、各文字情報の出現頻度を示す頻度テーブルＴ２生成する。ソート部１３４は、統計部１３２が生成した出現頻度に基づいて、頻度テーブルＴ２内の各文字情報をソートする。割当部１３３は、統計部１３２が生成した出現頻度に基づいて、各文字情報に対応する圧縮符号を生成し、生成した圧縮符号を各文字情報に割り当てる。ソート部１３４は、さらに、文字情報および圧縮符号の組み合わせである各組を、各文字情報に対応する文字コードの順序（例えば文字コードの値が小さい順）でソートする。制御部１３１は、統計部１３２、割当部１３３およびソート部１３４による処理結果に基づいて圧縮辞書Ｄ１を生成し、記憶部１５に圧縮辞書Ｄ１を格納する。また、制御部１３１は、統計部１３２が生成した頻度テーブルＴ２を記憶部１５に格納する。
【００４３】
生成部１４は、制御部１４１、割当部１４２、複製部１４３およびソート部１４４を含む。生成部１４は、伸長部１２からの指示に応じて、伸長辞書Ｄ２を生成する。制御部１４１は、割当部１４２、複製部１４３およびソート部１４４を制御し、圧縮ファイルＦ２の伸長に用いられる伸長辞書Ｄ２を生成する。割当部１４２は、頻度テーブルＴ２を用いて、頻度テーブルＴ２内の各文字情報に対応する圧縮符号を生成する。ソート部１４４は、圧縮符号が割り当てられた各文字情報を、圧縮符号の値に応じてソートする。複製部１４３は、ソートされた各圧縮符号の符号長に応じて、圧縮符号に対応する文字や単語を示す文字コードを複製する。制御部１４１は、複製部１４３により複製された文字コードを、割当部１４２により生成された圧縮符号に対応したオフセット位置に配置することにより、伸長辞書Ｄ２を生成する。制御部１４１は、さらに記憶部１５に伸長辞書Ｄ２を格納する。
【００４４】
圧縮部１１および生成部１３によりファイルＦ１の圧縮が行なわれる。圧縮の処理手順は、図４、図５、図６および図１０に示される。また、伸長部１２および生成部１４により圧縮ファイルＦ２の伸長が行なわれる。伸長の処理手順は、図１１、図１２および図１４に示される。
【００４５】
図４は、圧縮機能の処理手順例を示す。圧縮機能が呼び出されると、制御部１１１は、圧縮処理の前処理を実行する（Ｓ１０１）。圧縮機能の呼出しは、圧縮対象のファイルＦ１の指定を含む。Ｓ１０１の前処理においては、制御部１１１は、記憶領域Ａ１および記憶領域Ａ２を確保し、単語リストＬ１および変換テーブルＴ１を記憶部１５からロードし、頻度テーブルＴ２および圧縮辞書Ｄ１の格納領域を確保する。
【００４６】
Ｓ１０１の処理が終了すると、制御部１１１は、記憶領域Ａ１にファイルＦ１をロードする（Ｓ１０２）。ファイルＦ１のサイズが所定のサイズよりも大きい場合には、制御部１１１は、ファイルＦ１をブロック分割し、分割して得られたブロックごとに以下の圧縮処理を行なう。続いて、制御部１１１は、生成部１３に圧縮辞書Ｄ１の生成指示を行なう（Ｓ１０３）。
【００４７】
図５は、圧縮辞書生成の処理手順例を示す。制御部１１１から圧縮辞書の生成指示を受けると、制御部１３１は、統計部１３２にファイルＦ１に含まれる文字情報の頻度集計処理を実行させる（Ｓ２０１）。
【００４８】
図６は、頻度集計処理の処理手順例を示す。制御部１３１により頻度集計処理の指示を受けると、統計部１３２は、記憶領域Ａ１にロードされたファイルＦ１について頻度集計処理を開始する。頻度集計処理の開始時において、読出し位置は記憶領域Ａ１にロードされたファイルＦ１の先頭を示す。まず、統計部１３２は、記憶部１５からロードされた単語リストＬ１と変換テーブルＴ１とに基づいて、各文字情報の出現頻度を格納するための頻度テーブルＴ２を生成する（Ｓ３０１）。具体的には、統計部１３２は、Ｓ１０１の処理で確保された記憶領域内に、頻度集計を行なう対象の文字情報を順次登録する。
【００４９】
図７は、変換テーブルの例を示す。変換テーブルＴ１は、文字情報に対し、共通文字情報および識別記号の組を対応付ける。共通文字情報は、複数種類の共通の概念に対応する文字情報のそれぞれにおいて共通の概念を示す。識別記号は、それぞれの文字情報を識別する。例えば、「ｔａｌｋ」、「ｔａｌｋｓ」、「ｔａｌｋｅｄ」および「ｔａｌｋｉｎｇ」という文字情報のそれぞれは、「ｔａｌｋ」という共通の概念に対応する文字情報である。変換テーブルＴ１においては、「ｔａｌｋ」、「ｔａｌｋｓ」、「ｔａｌｋｅｄ」および「ｔａｌｋｉｎｇ」という文字情報のそれぞれに対し、「ｔａｌｋ」という共通の概念を示す文字情報（共通文字情報）が対応付けられる。また、変換テーブルＴ１においては、「ｔａｌｋ」、「ｔａｌｋｓ」、「ｔａｌｋｅｄ」および「ｔａｌｋｉｎｇ」という文字情報のそれぞれを識別するために、識別記号［ｃ１］、［ｃ２］、［ｃ３］および［ｃ４］がさらに対応付けられる。識別記号［ｃ１］は、動詞の原形であることを示す識別記号である。また、識別記号［ｃ２］は、動詞の三人称単数形であることを示す識別記号である。また、識別記号［ｃ３］は、動詞の過去形であることを示す識別記号である。また、識別記号［ｃ４］は、動詞の現在分詞であることを示す識別記号である。変換テーブルＴ１の左側の値は、変換テーブルＴ１において、各文字情報に関する情報が格納されるオフセット位置を示す。識別記号［ｃ１］、［ｃ２］、［ｃ３］および［ｃ４］として、ファイルＦ１に使用される文字コード系における空きコードが用いられる。その他の識別記号についても同様に空きコードが用いられる。
【００５０】
「ｓｐｅｎｄ」、「ｓｐｅｎｄｓ」、「ｓｐｅｎｔ」および「ｓｐｅｎｄｉｎｇ」という文字情報に対しても、共通の概念を示す「ｓｐｅｎｄ」という共通文字情報が対応付けられる。また、「ｓｐｅｎｄ」、「ｓｐｅｎｄｓ」、「ｓｐｅｎｔ」および「ｓｐｅｎｄｉｎｇ」のそれぞれに対しては、「ｔａｌｋ」、「ｔａｌｋｓ」、「ｔａｌｋｅｄ」および「ｔａｌｋｉｎｇ」と同様に識別記号［ｃ１］、識別記号［ｃ２］、識別記号［ｃ３］および識別記号［ｃ４］が対応付けられる。また、例えば、「ｄｒｕｎｋ」という文字情報については、共通文字情報「ｄｒｉｎｋ」および動詞の過去分詞であることを示す識別記号［ｃ５］が対応付けられている。
【００５１】
また、例えば、「ｇｏｏｄ」、「ｂｅｔｔｅｒ」および「ｂｅｓｔ」という形容詞に対し、共通する概念である「ｇｏｏｄ」を示す共通文字情報が対応付けられている。「ｇｏｏｄ」、「ｂｅｔｔｅｒ」および「ｂｅｓｔ」という形容詞のそれぞれは、形容詞の原形であることを示す識別記号［ｃ６］、形容詞の比較級であることを示す識別記号［ｃ７］および形容詞の最上級であることを示す識別記号［ｃ８］のそれぞれと対応付けられる。また、例えば、「Ｉ」、「ｍｙ」、「ｍｅ」、「ｍｉｎｅ」および「ｍｙｓｅｌｆ」という文字情報は、共通する概念である「Ｉ」を示す共通文字情報が対応付けられている。「Ｉ」、「ｍｙ」、「ｍｅ」、「ｍｉｎｅ」および「ｍｙｓｅｌｆ」のそれぞれは、人称代名詞の主格を示す識別記号［ｃ９］、人称代名詞の所有格を示す識別記号［ｃ１０］、人称代名詞の目的格を示す識別記号［ｃ１１］、所有代名詞を示す識別記号［ｃ１２］および再帰代名詞を示す識別記号［ｃ１３］が対応付けられる。
【００５２】
例えば、変換テーブルＴ１は、文字情報と、共通文字情報および識別記号による組との対応関係が予め設定されて記憶部１５に記憶される。統計部１３２は、単語リストＬ１に登録された文字情報を、変換テーブルＴ１に登録された文字情報を除いて、頻度テーブルＴ２に登録する。さらに、統計部１３２は、変換テーブルＴ１内の共通文字情報および識別記号を頻度テーブルＴ２に登録する。
【００５３】
図８は、頻度テーブルＴ２の例を示す。頻度テーブルＴ２は、文字情報（共通文字情報や識別記号も含む）と、出現頻度とを対応付けるテーブルである。上述の通り、統計部１３２の頻度テーブルＴ２の生成において、変換テーブルＴ１に登録されている文字情報が除かれている。そのため、「ｔａｌｋ」、「ｔａｌｋｓ」、「ｔａｌｋｅｄ」および「ｔａｌｋｉｎｇ」などの共通の概念に対応する複数種類の文字情報のそれぞれは、共通文字情報「ｔａｌｋ」と各識別記号［ｃ１］〜［ｃ４］とに分けられて頻度テーブルＴ２に登録されている。
【００５４】
図６に示す処理手順の説明に戻る。頻度テーブルＴ２に対して文字情報が登録されると、統計部１３２は、記憶領域Ａ１の読出し位置から文字コードを取得する（Ｓ３０２）。Ｓ３０２の処理において、読出し位置はＳ３０２で取得された文字コード分進められる。
【００５５】
次に、統計部１３２は、Ｓ３０２で取得した文字コードが区切り記号であるか否かを判定する（Ｓ３０３）。Ｓ３０３の判定は、区切り記号として処理する文字コードを予め設定しておき、Ｓ３０２で取得した文字コードが予め設定した文字コードのいずれかに該当するか否かにより判断される。区切り記号は、例えば、スペース記号（ＡＳＣＩＩコード系で０ｘ２０）、エクスクラメーション（ＡＳＣＩＩコード系で０ｘ２１）、カンマ（ＡＳＣＩＩコード系で０ｘ２Ｃ）、ピリオド（ＡＳＣＩＩコード系で０ｘ２Ｅ）、コロン（ＡＳＣＩＩコード系で０ｘ３Ａ）、セミコロン（ＡＳＣＩＩコード系で０ｘ３Ｂ）およびクエスチョン（ＡＳＣＩＩコード系で０ｘ３Ｆ）などである。もしくは、Ｓ３０３の判定は、Ｓ３０２で取得した文字コードが、予め定めた数値範囲（例えば、ＡＳＣＩＩコード系で０ｘ２０〜０ｘ３Ｆ）であるか否かにより判断されてもよい。
【００５６】
Ｓ３０２で取得した文字コードが区切り記号でない場合（Ｓ３０３：ＮＯ）には、統計部１３２は、Ｓ３０２で取得した文字コードをバッファに格納する（Ｓ３０４）。Ｓ３０４の処理が終了すると、Ｓ３１１の手順に移行する。
【００５７】
Ｓ３０２で取得した文字コードが区切り記号である場合（Ｓ３０３：ＹＥＳ）には、統計部１３２は、バッファに格納されている文字情報に基づき変換テーブルＴ１を参照する（Ｓ３０５）。さらに、統計部１３２は、Ｓ３０５の参照結果に基づいて、変換テーブルＴ１にバッファに格納されている文字情報が登録されているか否かを判定する（Ｓ３０６）。
【００５８】
バッファに格納されている文字情報が変換テーブルＴ１に格納されていない場合（Ｓ３０６：ＮＯ）には、統計部１３２は、バッファに格納されている文字情報についてカウントする（Ｓ３０７）。Ｓ３０７において、頻度テーブルＴ２に、バッファに格納されている文字情報と同じ文字情報がない場合には、統計部１３２は、バッファに格納されている各々の文字コードについてカウントを行なう。
【００５９】
バッファに格納されている文字情報が変換テーブルＴ１に格納されている場合（Ｓ３０６：ＹＥＳ）には、統計部１３２は、バッファに格納されている文字情報と変換テーブルＴ１により対応付けられた共通文字情報および識別記号の双方についてカウントする（Ｓ３０８）。例えば、統計部１３２は、Ｓ３０８において、共通文字情報と識別記号との双方について頻度テーブルＴ２により対応付けられたカウント値をインクリメントする。例えば、バッファに格納されている文字情報が「ｓｐｅｎｔ」である場合には、統計部１３２は、共通文字情報の「ｓｐｅｎｄ」と、識別記号［ｃ３］の双方についてカウント値をインクリメントする。
【００６０】
Ｓ３０７またはＳ３０８の処理が行われると、統計部１３２は、Ｓ３０２で取得した区切り記号のカウントを行なう（Ｓ３０９）。Ｓ３０９において、統計部１３２は、頻度テーブルＴ２においてＳ３０２で取得した区切り記号に対応するカウント値をインクリメントする。さらに、統計部１３２は、バッファをクリアする（Ｓ３１０）。Ｓ３０９とＳ３１０の処理は互いに順序入れ替えても構わない。
【００６１】
Ｓ３０４またはＳ３１０が行なわれると、統計部１３２は、読出し位置が、記憶領域Ａ１にロードしたファイルＦ１の終端であるか否かを判定する（Ｓ３１１）。Ｓ３１１の判定において終端でなければ（Ｓ３１１：ＮＯ）、統計部１３２は、Ｓ３０２の手順に移行する。またＳ３１１の判定において終端であれば（Ｓ３１１：ＹＥＳ）、統計部１３２は頻度集計処理を終了する。
【００６２】
統計部１３２による頻度集計処理が終了すると、制御部１３１は、図５の手順に戻り、ソート部１３４にソート処理を実行させる（Ｓ２０２）。例えば、ソート部１３４は、頻度テーブルＴ２に登録された文字情報（文字、記号、単語、共通文字情報および識別記号など）を、統計部１３２により生成された頻度情報（各文字情報についての出現回数）に基づいて並べ替える。例えば、ソート部１３４は出現回数が多い順か少ない順のいずれか一方で、頻度テーブルＴ２に登録された文字情報を並べ替える。
【００６３】
Ｓ２０２の処理が終了すると、制御部１３１は、割当部１３３に圧縮符号の割り当てを実行させる（Ｓ２０３）。例えば、割当部１３３は、Ｓ２０２で頻度順に並べ替えられた文字情報群に対して、ハフマン符号化や算術圧縮など、高頻度の文字情報ほど短い圧縮符号を割り当てるアルゴリズムに基づいて圧縮符号を割り当てる。
【００６４】
頻度テーブルＴ２に登録された各文字情報に圧縮符号が割り当てられると、制御部１３１は、共通文字情報および識別記号の組み合わせに対応する圧縮符号の組を生成する（Ｓ２０４）。Ｓ２０４において、制御部１３１は、変換テーブルＴ１に登録された共通文字情報と識別記号との組み合わせに対応する文字情報と、組み合わせられた共通文字情報および識別情報それぞれに対応する圧縮符号の組み合わせとを対応付ける。例えば、文字情報「ｓｐｅｎｔ」は、変換テーブルＴ１において対応付けられた共通文字情報「ｓｐｅｎｄ」および識別記号［ｃ３］に対応する圧縮符号ｃ（ｓｐｅｎｄ）および圧縮符号ｃ（［ｃ３］）の組に対応付けられる。この際、圧縮符号ｃ（［ｃ３］）が先で圧縮符号ｃ（ｓｐｅｎｄ）が後である順序で圧縮符号が組み合わせられる。さらに、制御部１３１は、単語リストＬ１に登録された文字情報のそれぞれと、それぞれの文字情報に対応する圧縮符号とを対応付けた対応情報を、圧縮辞書Ｄ１を格納する領域に格納する。この対応情報において、変換テーブルＴ１に登録されている文字情報については、対応情報において圧縮符号の組（共通文字情報に対応する圧縮符号と識別記号に対応する圧縮符号の組）と対応付けられている。
【００６５】
続いて、制御部１３１は、ソート部１３４に、対応情報に含まれる各文字情報と、各文字情報に対応付けられた圧縮符号とのセットを、各文字情報の文字コードの値に基づいてソート処理させる（Ｓ２０５）。ソート部１３４は、例えば、文字情報の文字コードが小さい順に並べ替える。例えば、ソート部１３４は、文字情報の１文字目の文字コードの値が小さい順に並べ、１文字目の文字コードが同じ文字情報同士は、２文字目の文字コードの値が小さい順に並べる。Ｓ２０５の処理により並べ替えられた状態が、図９に示す圧縮辞書Ｄ１である。
【００６６】
Ｓ２０５の処理が終了すると、制御部１３１は、インデックスの生成処理を行なう（Ｓ２０６）。制御部１３１は、文字情報と、その文字情報がＳ２０５でソートされた文字情報群内で存在する位置を示す情報（オフセット値）とを対応付けてインデックスを生成する。図９に示す圧縮辞書Ｄ１に対して、例えば、文字「ｉ」にオフセット値「０ｘ００５２」などが対応付けられる。圧縮符号の生成においてこのインデックスが利用されると、「ｉ」から始まる単語に対応する圧縮符号の検索が「０ｘ００５２」から開始される。Ｓ２０６の処理が終了すると、生成部１３は、圧縮辞書Ｄ１の生成処理を終了する。
【００６７】
図９は、圧縮辞書のデータ構造例を示す。図９に示される圧縮辞書Ｄ１には、文字情報と圧縮符号とが対応付けられて格納される。文字情報と圧縮符号とのセットの格納位置は、圧縮辞書Ｄ１の格納位置を始点とするオフセット値で示される。例えば、文字情報「ｉｎｖｅｎｔｉｏｎ」の情報は、オフセット値０ｘ００５３に格納される。Ｓ２０６で生成されるインデックスは、このオフセット値を利用して検索範囲の絞り込みを実現する。また、前述の通り、「ｃ（）」は、括弧内の文字情報に対応する圧縮符号であることを示す。図９の例においては、圧縮辞書Ｄ１に登録される文字情報のうち、変換テーブルＴ１に登録される文字情報については、複数の圧縮符号と対応付けられており、変換テーブルＴ２に登録されない文字情報については１つの圧縮符号と対応付けられている。
【００６８】
圧縮辞書Ｄ１は、生成部１３により生成されたが、他の一例として、圧縮辞書Ｄ１が予め記憶部１５に記憶されていることとしてもよい。この場合に、圧縮辞書Ｄ１は、例えば複数のファイルにおいて共通で用いられる。例えば、予め記憶部１５に記憶される圧縮辞書Ｄ１では、例えば、過去に圧縮されたファイル（過去の版の文書ファイル）やデータベース内に存在する複数のファイルにおける文字情報の頻度情報に基づいて圧縮符号が割り当てられてもよい。
【００６９】
生成部１３が圧縮辞書Ｄ１の生成処理を終了すると、制御部１１１は図４の手順に戻り、圧縮データ生成処理を実行する（Ｓ１０４）。
【００７０】
図１０は、圧縮データ生成処理の処理手順例を示す。圧縮データ生成処理の開始時点において、読出し位置は記憶領域Ａ１にロードされたファイルＦ１の始点にセットされ、書込み位置は記憶領域Ａ２の所定の位置にセットされ、バッファはクリアされる。読出部１１３は、読出し位置から文字コードを取得する（Ｓ４０１）。制御部１１１は、Ｓ４０１の文字コード取得後、読出し位置を更新する。制御部１１１は、Ｓ４０１で取得した文字コードが区切り記号であるか否かを判定する（Ｓ４０２）。区切り記号は、Ｓ３０３と同様に、スペースやカンマなどの予め設定した文字コードである。
【００７１】
Ｓ４０１で取得した文字コードが区切り記号でない場合（Ｓ４０２：ＮＯ）には、制御部１１１は、読出部１１３がＳ４０１で取得した文字コードをバッファに格納する（Ｓ４０３）。Ｓ４０３が行なわれると、Ｓ４０１の手順に戻り、読出部１１３は、読出し位置から文字コードを取得する。
【００７２】
Ｓ４０１で取得した文字コードが区切り記号である場合（Ｓ４０２：ＹＥＳ）には、検索部１１２は、圧縮辞書Ｄ１をバッファ内に格納された文字コード（または文字コード列）で検索する（Ｓ４０４）。制御部１１１は、バッファ内に格納された文字コード（または文字コード列）と一致する一致文字情報が圧縮辞書Ｄ１内に存在するか否かを判定する（Ｓ４０５）。
【００７３】
一致文字情報が存在する場合（Ｓ４０５：ＹＥＳ）には、書込部１１４は、記憶領域Ａ２の書込み位置に、圧縮辞書Ｄ１内で一致文字情報に対応付けられた圧縮符号を書き込む（Ｓ４０６）。さらに、制御部１１１は、書込み位置を更新する。圧縮辞書Ｄ１において、複数の圧縮符号が一致文字情報に対応付けられている場合には、書込部１１４は、複数の圧縮符号を書込み位置から書き込む。書込みが行われると制御部１１１は、書き込んだ圧縮符号長に基づいて、記憶領域Ａ２への書き込み位置の更新を行なう。
【００７４】
圧縮辞書Ｄ１内に一致文字情報が存在しない場合（Ｓ４０５：ＮＯ）は、制御部１１１は、バッファ内の各文字コードに対して処理を行なう（Ｓ４０７〜Ｓ４１０）。制御部１１１は、各文字コードについて、検索部１１２に圧縮辞書Ｄ１を検索させ（Ｓ４０８）、検索の結果得られた圧縮符号を書込部１１４に書込み位置に書き込ませる（Ｓ４０９）。Ｓ４０８およびＳ４０９の処理が、バッファに格納された各文字コードに対して行なわれるＳ４０７〜Ｓ４１０の処理が終了する。
【００７５】
Ｓ４０６またはＳ４１０のいずれかが行われると、制御部１１１は、バッファに格納された文字コード（または文字コード列）を削除（クリア）する（Ｓ４１１）。また、書込部１１４は、Ｓ４０１で取得した区切り記号に圧縮辞書Ｄ１において対応付けられた圧縮符号を書込み位置に書き込む（Ｓ４１２）。Ｓ４１１よりも先にＳ４１２が行われても構わない。さらに、制御部１１１は、読出し位置が記憶領域Ａ１にロードされたファイルＦ１の終端であるか否かを判定する（Ｓ４１３）。
【００７６】
読出し位置がファイルＦ１の終端でない場合（Ｓ４１３：ＮＯ）には、Ｓ４０１の手順に戻り、読出部１１３は、読出し位置から文字コードを取得する。読出し位置がファイルＦ１の終端である場合（Ｓ４１３：ＹＥＳ）には、制御部１１１は、圧縮データ生成処理を終了する。
【００７７】
上述の圧縮データ生成処理が終了すると、図４に示すＳ１０５に手順が戻る。制御部１１１は、記憶領域Ａ２内に格納された圧縮データを用いて圧縮ファイルＦ２を生成し、記憶部１５に格納する（Ｓ１０５）。圧縮ファイルＦ２は、例えば、ヘッダ、記憶領域Ａ２内の圧縮データおよびトレーラ情報で構成される。ヘッダには、例えば、圧縮アルゴリズムを識別する識別情報や、ヘッダ、圧縮データおよびトレーラ情報それぞれのデータサイズなどの情報が含まれる。また、トレーラ情報には、例えば、変換テーブルＴ１、頻度テーブルＴ２などが含まれる。
【００７８】
Ｓ１０５の処理が終了すると、制御部１１１は、圧縮機能の呼出し先に圧縮処理が終了した旨の通知を行なう（Ｓ１０６）。Ｓ１０６の通知には、例えば、圧縮ファイルＦ２の格納先を示す情報が含まれる。Ｓ１０６の処理が終了すると、圧縮部１１による圧縮処理が終了する。
【００７９】
図１１は、伸長機能の処理手順例を示す。伸長機能が呼び出されると、制御部１２１は、伸長処理の前処理を実行する（Ｓ５０１）。伸長機能の呼出しは、伸長対象の圧縮ファイルＦ２の指定を含む。Ｓ５０１の前処理においては、制御部１２１は、記憶領域Ａ３および記憶領域Ａ４を確保し、さらに、伸長辞書Ｄ３の格納領域を確保する。
【００８０】
Ｓ５０１の処理が終了すると、制御部１２１は、圧縮ファイルＦ２を記憶領域Ａ３にロードする（Ｓ５０２）。次に、制御部１２１は生成部１４に伸長辞書を生成させる（Ｓ５０３）。
【００８１】
図１２は、伸長辞書生成の処理手順例を示す。制御部１４１は、記憶領域Ａ３にロードされた圧縮ファイルＦ２のトレーラ情報から、変換テーブルＴ１および頻度テーブルＴ２を取得する（Ｓ６０１）。次に、制御部１４１は、頻度テーブルＴ２に登録された各文字情報（共通文字情報および識別記号を含む）について、頻度テーブルＴ２に基づいて圧縮符号を割り当てる（Ｓ６０２）。Ｓ６０２の処理においては、Ｓ２０３と同様のアルゴリズムにより圧縮符号が割り当てられる。次に、制御部１４１は、圧縮符号が割り当てられた文字情報のうち、共通文字情報は、取得した変換テーブルＴ１内のオフセット値に変更する（Ｓ６０３）。このオフセット値は、変換テーブルＴ１において、共通文字情報に対応する文字情報が格納される位置を示す。例えば、共通文字情報「ｔａｌｋ」については、オフセット値「０ｘ０１８２」が格納される。このオフセット値「０ｘ０１８２」により、「ｔａｌｋ」、「ｔａｌｋｓ」、「ｔａｌｋｅｄ」および「ｔａｌｋｉｎｇ」などの共通の概念「ｔａｌｋ」に対応する文字情報が参照可能となる。
【００８２】
ソート部１４４は、圧縮符号が割り当てられた文字情報（Ｓ６０３により変更されたオフセット値を含む）を、圧縮符号の値に応じてソートする（Ｓ６０４）。さらに、制御部１４１は、圧縮符号が割り当てられた各文字情報（Ｓ６０３により変更されたオフセット値を含む）に対し、割り当てられた圧縮符号の符号長を関連付ける。
【００８３】
次に、複製部１４３は、文字情報に関連付けられた符号長に応じた数に、文字情報および符号長の情報を複製する（Ｓ６０５）。例えば、最大の圧縮符号長が１２ビットと設定されている場合には、複製部１４３は、符号長がｎの文字情報（オフセット値を含む）および符号長の情報を２の（１２−ｎ）乗個に複製する。さらに、制御部１４１は、複製された情報を記憶部１５に確保された伸長辞書Ｄ２の格納領域内の位置であって、圧縮符号に基づいたオフセット位置に格納する（Ｓ６０６）。Ｓ６０６の結果、伸長辞書Ｄ２が生成され、手順は図１１のＳ５０４に移行する。
【００８４】
図１３は、伸長辞書のデータ構造例を示す。伸長辞書Ｄ２は、伸長コード（文字情報または変換テーブルＴ１のオフセット値）と符号長とを示す情報が、対応する圧縮符号に基づくオフセット位置に格納されるデータ構造を有している。図１３の伸長辞書Ｄ２は、圧縮符号の最大の符号長が１２ビットである場合を例示するものである。
【００８５】
伸長辞書Ｄ２を用いることにより、可変長の符号化が行なわれた圧縮データから固定長のデータを読み出して、読み出した固定長のデータに対応する伸長コードを取り出すことが可能である。固定長のデータを読み出すことで、1ビットずつ符号の境目を判定するよりも伸長速度の高速化が図られる。１２ビットよりも短い圧縮符号については余分に圧縮データからデータを読み出してしまうので、符号長に基づいて圧縮データからの読出し位置の調整が行なわれる。伸長辞書Ｄ２はこのような伸長処理に用いられる伸長辞書であるため、伸長コードおよび符号長が同じ情報が重複して登録される。
【００８６】
例えば、伸長辞書Ｄ２における識別記号［ｃ３］に対応する圧縮符号ｃ（［ｃ３］）は、「０００１０１」という６ビットのデータであるのに対し、圧縮データから１２ビットのデータでまとめて読み出される。読み出した１２ビットのうち前半の６ビットが「０００１０１」であれば、後半の６ビットがどのようなデータであっても識別記号［ｃ３］という伸長コードが取得可能となる必要がある。そのため、後半の６ビットが取り得る値の全通りについて伸長コードおよび符号長を格納しておくことで、１２ビットの固定長データのうちの後半６ビットがどのようなデータであっても、６ビットの可変長符号に対応する伸長コードなどの情報が取得される。識別記号［ｃ３］の情報は、後半６ビットの全通り（「００００００」〜「１１１１１１」）の数（６４個）に複製されて、圧縮符号が「０００１０１」に応じたオフセット位置（０００１０１００００００（０ｘ１４０））に格納される。すなわち、伸長辞書のオフセット値０ｘ１４０〜０ｘ１７Ｆまでの６４個のデータは、識別記号［ｃ３］に関する情報が格納される。
【００８７】
また、共通文字情報「ｔａｌｋ」に関する情報も、制御記号［ｃ３］と同様に、圧縮符号の符号長に応じた数に複製され、圧縮符号に応じたオフセット位置に格納される。ただし共通文字情報は、Ｓ６０３の処理で変換テーブルＴ１内のオフセット値（０ｘ０１８２）に変更されている。
【００８８】
図１４は、伸長データ生成処理の処理手順例を示す。伸長辞書Ｄ２が生成されると、制御部１２１は、圧縮ファイルＦ２に含まれる圧縮データに対応する伸長データを生成する処理を開始する。記憶領域Ａ３からの読出し位置はファイルＦ２の圧縮データの始点にセットされ、記憶領域Ａ４への書込み位置は記憶領域Ａ４内の所定の位置にセットされる。
【００８９】
読出部１２３は記憶領域Ａ３の読出し位置から圧縮データを読み出す（Ｓ７０１）。圧縮データの読出しは、前述の通り固定長（例えば、１２ビット）で行なわれる。検索部１２２は、読み出した固定長データに基づいて伸長辞書Ｄ２を参照する（Ｓ７０２）。制御部１２１は、Ｓ７０２の参照により得られた伸長コードが、識別記号であるか否か判定する（Ｓ７０３）。
【００９０】
Ｓ７０２の参照により得られた伸長コードが、識別記号である場合（Ｓ７０３：ＹＥＳ）には、制御部１２１は活用フラグをＯＮにする（Ｓ７０４）。活用フラグは、伸長辞書Ｄ２において圧縮符号に対応付けられた伸長コードが文字情報であるかオフセット値であるかの判定に用いられる。Ｓ７０４において、制御部１２１は、Ｓ７０２の参照により得られた識別記号をバッファに記憶する。
【００９１】
Ｓ７０２の参照により得られた伸長コードが、識別記号でない場合（Ｓ７０３：ＮＯ）には、制御部１２１は、活用フラグがＯＮであるか否かを判定する（Ｓ７０５）。活用フラグがＯＮである場合（Ｓ７０５：ＹＥＳ）には、検索部１２２は、変換テーブルＴ１を参照する（Ｓ７０６）。Ｓ７０６において、検索部１２２は、Ｓ７０２の参照により得られた伸長コードを変換テーブルＴ１のオフセット値として、オフセット値に基づいて変換テーブルＴ１を参照する。さらに、検索部１２２は、バッファに格納した識別記号と、オフセット値（伸長コード）により示される共通文字情報との組み合わせに対応する文字情報を、変換テーブルＴ１から取得する。制御部１２１は、活用フラグをＯＦＦにし、バッファに格納された識別記号を削除する（Ｓ７０７）。
【００９２】
Ｓ７０５の判定で活用フラグがＯＦＦである（Ｓ７０５：ＮＯ）か、Ｓ７０７の処理を終えると、制御部１２１は、記憶領域Ａ４の書き込み位置に文字情報の書き込みを行なう（Ｓ７０８）。Ｓ７０８で書き込まれる文字情報は、Ｓ７０２の伸長辞書Ｄ２の参照により得られた伸長コードであるか、Ｓ７０６の変換テーブルＴ１の参照により得られた文字情報である。Ｓ７０８で書き込まれた文字情報の長さに応じて、制御部１２１は、記憶領域Ａ４への書込み位置を更新する（Ｓ７０９）。
【００９３】
Ｓ７０４またはＳ７０９の処理が行なわれると、制御部１２１は、記憶領域Ａ３からの読出し位置を更新する（Ｓ７１０）。記憶領域Ａ３からの読出し位置は、Ｓ７０２の参照により得られた符号長に基づいて更新される。例えば、読出し位置は、符号長の情報示されるビット数だけ進められる。
【００９４】
続いて、制御部１２１は、記憶領域Ａ３からの読出し位置が、圧縮ファイルＦ２の圧縮データの終端であるか否かを判断する（Ｓ７１１）。記憶領域Ａ３からの読出し位置が圧縮データの終端でない場合（Ｓ７１１：ＮＯ）には手順がＳ７０１に戻り、再度読出部１２３が圧縮データの読出しを行なう。記憶領域Ａ３からの読出し位置が圧縮データの終端である場合（Ｓ７１１：ＹＥＳ）には、制御部１２１は伸長データ生成処理を終了し、手順がＳ５０５に移行する。
【００９５】
他の一例として、伸長辞書Ｄ２は、伸長辞書の一例であり、同じ情報が重複して登録されていない伸長辞書が用いられてもよい。例えば、一般的なハフマン符号化の伸長辞書が用いられてもよい。その場合であっても、伸長辞書から伸長コードが取得された場合には、制御部１２１は、Ｓ７０３の判定を行ない、その判定結果に応じてＳ７０４か、Ｓ７０５〜Ｓ７０９かのいずれかの処理を行なう。
【００９６】
伸長データ生成処理が終了すると、制御部１２１は、記憶領域Ａ４に格納された伸長データに基づいて伸長ファイルＦ３を生成し、生成した伸長ファイルＦ３を記憶部１５に格納する（Ｓ５０５）。さらに、制御部１２１は、伸長機能の呼出し先に伸長処理が終了した旨の通知を行なう（Ｓ５０６）。Ｓ５０６の通知には、例えば、伸長ファイルＦ３の格納先を示す情報が含まれる。Ｓ５０６の処理が終了すると、伸長部１２による伸長処理が終了する。
【００９７】
［圧縮符号への変換］
図２に示される例（３）および例（６）においては、識別記号に対応する圧縮符号と、共通文字情報に対応する圧縮符号との組み合わせが用いられる。この組み合わせにおいては、識別記号に対応する圧縮符号が先で、共通文字情報に対応する圧縮符号が後の順序で組み合わせられている。この順序により、識別記号が伸長辞書Ｄ１から先に読み出されるので、その後に読み出される圧縮符号に基づいて伸長辞書Ｄ１から取得される伸長コードが文字情報であるかオフセット値であるかの判定が可能となる。
【００９８】
図１５は、圧縮符号への変換例を示す。例（３）に示すように識別記号に対応する圧縮符号を先にしてもよいが、例（７）に示すように共通文字情報に対応する圧縮符号を先にしてもよい。例（８）も例（７）と同様に、共通文字情報に対応する圧縮符号を先にし、識別記号に対応する圧縮符号を後にした場合を例示している。
【００９９】
図９に示す圧縮辞書Ｄ１は、図５のＳ２０４の処理において、識別記号に対応する圧縮符号を先に、共通文字情報に対応する圧縮符号を後にする制御により生成される。図１５に示す例（７）や例（８）の順序で圧縮符号を並べるには、図５のＳ２０４の処理で、共通文字情報に対応する圧縮符号を先に、識別記号に対応する圧縮符号を後にする制御が行われればよい。
【０１００】
図１６は、圧縮辞書のデータ構造例を示す。図１６に示される圧縮辞書Ｄ１ａは、変換テーブルＴ１に登録されている文字情報に対応付けられた圧縮符号の組み合わせにおける順序を、圧縮辞書Ｄ１とは逆にしたものである。すなわち、共通文字情報に対応する圧縮符号が先で、識別記号に対応する圧縮符号が後の順序となっている。
【０１０１】
圧縮辞書Ｄ１ａは、圧縮辞書Ｄ１と同様、文字情報と圧縮符号とを対応付けている。図１６においては、圧縮辞書Ｄ１ａの文字情報「ｓｐｅｎｄ」、「ｓｐｅｎｄｓ」、「ｓｐｅｎｔ」および「ｓｐｅｎｄｉｎｇ」に関する部分のみについて内容が例示されている。例えば、文字情報「ｓｐｅｎｔ」については、圧縮符号ｃ（ｓｐｅｎｄ）および圧縮符号ｃ（［ｃ３］）が、ｃ（ｓｐｅｎｄ）ｃ（［ｃ３］）の順序で並んでいる。圧縮辞書Ｄ１ａを用いて図１０の圧縮データ生成処理が行われると、圧縮辞書Ｄ１ａ内の圧縮符号の順序がそのまま圧縮データに反映されるので、圧縮ファイルＦ２においてもｃ（ｓｐｅｎｄ）ｃ（［ｃ３］）の順序で圧縮符号が並ぶ。
【０１０２】
図１７は、伸長辞書のデータ構造例を示す。図１７に示される伸長辞書Ｄ２ａは、伸長コード（文字情報またはオフセット値）および符号長に加えて、さらに活用フラグが対応付けられる。伸長辞書Ｄ２ａでは、共通文字情報に対応する圧縮符号に対しては、変換テーブルＴ１のオフセット値、圧縮符号の符号長およびＯＮの状態の活用フラグが対応付けられる。共通文字情報に対応する圧縮符号に基づいて伸長辞書Ｄ２ａが参照された場合には、活用フラグがＯＮであることにより、伸長コードがオフセット値であることが判断可能となる。共通文字情報でない文字情報に対応する圧縮符号に対しては、文字情報、圧縮符号の符号長およびＯＦＦの状態の活用フラグが対応付けられる。
【０１０３】
伸長辞書Ｄ２ａを用いると、伸長辞書Ｄ２ａの活用フラグの参照により、共通文字情報に対応する圧縮符号であることが明らかとなるため、この次に識別記号が得られることも明らかとなる。そのため、識別記号に対応する圧縮符号と、文字情報に対応する圧縮符号とが競合することについて考慮する必要がなくなる。すなわち、図１５に示す例（７）および例（８）の場合には、識別記号に対応する圧縮符号は、Ｓ２０３などで適用された符号割り当てのアルゴリズムによらずに、独自に割り当てても構わない。それにより、符号割り当てのアルゴリズムにより圧縮符号を割り当てる対象の文字情報の種類が少なくなる。特に、識別記号は、複数の文字情報に対して共通で用いられる（各動詞において過去形は識別記号［ｃ３］で示される）ので、出現頻度が高い傾向にある。そのため、他の文字情報とともに可変長圧縮符号の割り当てが行なわれると、短い圧縮符号が割り当てられやすく、他の文字情報に割り当てられる圧縮符号は、長くなりやすい。そのため、識別記号に対して圧縮符号を独自に（文字情報とは別に）割り当てることにより、文字情報に割り当てられる圧縮符号の符号長が短くなる傾向にある。
【０１０４】
また、識別記号に対して独自に短い圧縮符号を割り当てることが可能である。例えば、識別記号により８種類までの識別が行われるのであれば、３ビットの固定長符号を割り当ててもよい。この固定長割り当てについては、図１９を用いて後述する。
【０１０５】
図１８は、伸長データ生成処理の処理手順例を示す。伸長辞書Ｄ２ａを用いる場合には、伸長辞書Ｄ２を用いた場合と、伸長コードが文字情報であるか変換テーブルＴ１のオフセット値であるかを判定する仕組みが異なる。伸長辞書Ｄ２ａが生成されると、制御部１２１は、圧縮ファイルＦ２に含まれる圧縮データに対応する伸長データを生成する処理を開始する。記憶領域Ａ３からの読出し位置はファイルＦ２の圧縮データの始点にセットされ、記憶領域Ａ４への書込み位置は記憶領域Ａ４内の所定の位置にセットされる。
【０１０６】
読出部１２３は記憶領域Ａ３の読出し位置から圧縮データを読み出す（Ｓ８０１）。圧縮データの読出しは、前述の通り固定長（例えば、１２ビット）で行なわれる。検索部１２２は、読み出した固定長データに基づいて伸長辞書Ｄ２ａを参照する（Ｓ８０２）。制御部１２１は、記憶領域Ａ３からの読出し位置を更新する（Ｓ８０３）。記憶領域Ａ３からの読出し位置は、Ｓ８０２の参照により得られた符号長に基づいて更新される。
【０１０７】
続いて、Ｓ８０２の参照により得られた活用フラグがＯＮであるか否かを判定する（Ｓ８０４）。活用フラグがＯＮである場合（Ｓ８０４：ＹＥＳ）には、読出部１２３は、記憶領域Ａ３の読出し位置から識別記号に対応する圧縮符号を読み出す（Ｓ８０５）。さらに、制御部１２１は、読み出された圧縮符号に基づき識別記号を取得する。
【０１０８】
検索部１２２は、Ｓ８０２の参照により得られたオフセット値と、Ｓ８０５で取得した識別記号とに基づいて変換テーブルＴ１を参照する（Ｓ８０６）。Ｓ８０６において、検索部１２２は、オフセット値（伸長コード）および識別記号により示される文字情報を、変換テーブルＴ１から取得する。制御部１２１は、Ｓ８０５で読み出した圧縮符号の符号長に応じて記憶領域Ａ３の読出し位置を更新する（Ｓ８０７）。
【０１０９】
Ｓ８０４の判定で活用フラグがＯＦＦである（Ｓ８０４：ＮＯ）か、Ｓ８０７の処理を終えると、制御部１２１は、記憶領域Ａ４の書き込み位置に文字情報の書き込みを行なう（Ｓ８０８）。Ｓ８０８で書き込まれる文字情報は、Ｓ８０２の伸長辞書Ｄ２ａの参照により得られた伸長コードであるか、Ｓ８０６の変換テーブルＴ１の参照により得られた文字情報である。Ｓ８０８で書き込まれた文字情報の長さに応じて、制御部１２１は、記憶領域Ａ４への書込み位置を更新する（Ｓ８０９）。
【０１１０】
続いて、制御部１２１は、記憶領域Ａ３からの読出し位置が、圧縮ファイルＦ２の圧縮データの終端であるか否かを判断する（Ｓ８１０）。記憶領域Ａ３からの読出し位置が圧縮データの終端でない場合（Ｓ８１０：ＮＯ）には手順がＳ８０１に戻り、再度読出部１２３が圧縮データの読出しを行なう。記憶領域Ａ３からの読出し位置が圧縮データの終端である場合（Ｓ８１０：ＹＥＳ）には、制御部１２１は伸長データ生成処理を終了し、手順がＳ５０５に移行する。
【０１１１】
図７に示す変換テーブルＴ１によれば、識別記号［ｃ１］〜［ｃ５］は動詞に対して用いられ、識別記号［ｃ６］〜［ｃ８］は形容詞に対して用いられ、識別記号［ｃ９］〜［ｃ１３］は代名詞に対して用いられる。例えば、識別記号［ｃ１］が用いられる文字情報に対しては、識別記号［ｃ６］〜［ｃ１３］は用いられない。そのため、識別記号に対して割り当てる圧縮符号が、識別記号［ｃ６］〜［ｃ１３］のいずれかに割り当てる圧縮符号と競合しても、共通文字情報に対応する圧縮符号と識別記号［ｃ１］に対応する圧縮符号との組み合わせにより文字情報が特定される。すなわち、識別記号［ｃ１］〜［ｃ５］に対しては、識別記号［ｃ１］〜［ｃ５］で互いに識別可能な圧縮符号が割り当てられればよい。また、識別記号［ｃ６］〜［ｃ８］に対しては、識別記号［ｃ６］〜［ｃ８］で互いに識別可能な圧縮符号が割り当てられればよい。同様に、識別記号［ｃ９］〜［ｃ１３］に対しては、識別記号［ｃ９］〜［ｃ１３］で互いに識別可能な圧縮符号が割り当てられればよい。
【０１１２】
図１９は、圧縮符号の割り当て例を示す。識別記号に対して固定長符号を割り当てるとすると、識別記号［ｃ１］〜［ｃ５］（または［ｃ９］〜［ｃ１３］）の５種類を識別可能な圧縮符号が割り当てられればよい。例えば、図１９の例によれば、各識別記号に対し、３ビットの固定長の圧縮符号が割り当てられる。
【０１１３】
図１９には、５種類の圧縮符号として、「０００」、「００１」、「０１０」、「０１１」および「１００」が例示される。固定長圧縮符号「０００」は、識別記号［ｃ１］、識別記号［ｃ６］および識別記号［ｃ９］に対して共通で割り当てられる。固定長圧縮符号「００１」は、識別記号［ｃ２］、識別記号［ｃ７］および識別記号［ｃ１０］に対して共通で割り当てられる。固定長圧縮符号「０１０」は、識別記号［ｃ３］、識別記号［ｃ８］および識別記号［ｃ１１］に対して共通で割り当てられる。固定長圧縮符号「０１１」は、識別記号［ｃ４］および識別記号［ｃ１２］に対して共通で割り当てられる。固定長圧縮符号「１００」は、識別記号［ｃ５］および識別記号［ｃ１３］に対して共通で割り当てられる。共通で固定長符号が割り当てられた識別記号同士は、識別対象の文字情報が競合しない（品詞の種類が異なるため）ので、圧縮符号同士が競合しても伸長データ生成処理時の変換テーブルＴ１の参照（Ｓ７０６またはＳ８０６）で問題なく文字情報を取得可能となる。例えば、変換テーブルＴ１において、共通文字情報「ｓｐｅｎｄ」で識別情報の圧縮符号が「０１０」となる文字情報を探せば、文字情報「ｓｐｅｎｔ」を取得することが可能である。圧縮符号「０１０」は、識別記号［ｃ３］にも識別記号［ｃ８］にも対応するが、変換テーブルＴ１において、共通文字情報「ｓｐｅｎｄ」と関連付けられるは識別記号［ｃ３］のみであるため、識別記号［ｃ３］が特定される。
【０１１４】
［規則変化する単語への対応］
上述の方法によれば、伸長処理時に変換テーブルＴ１を参照することにより、表記が異なる文字情報が取得された。動詞や形容詞については、不規則に語形が変化する単語が存在する一方で、語形変化のパターンが共通する場合がある。語形の変化パターンが共通する場合には、単語の基本形を語形変化のルールに従って語形変化させることにより、語形変化した単語を特定することが可能である。伸長時に共通文字情報をルールに従って語形変化させることで元の文字情報を復元できれば、変換テーブルＴ１の参照が不要となる。そのため、変換テーブルＴ１のうち、規則変化する文字情報に関する情報は、圧縮ファイルＦ２に含まれなくても構わない。変換テーブルＴ１のうち、規則変化する文字情報に関する情報を除いて圧縮ファイルＦ２に含めることにより、トレーラ情報のデータサイズが小さくなり、圧縮ファイルＦ２全体のファイルサイズが小さくなる。また、この場合には、頻度テーブルＴ２に登録された共通文字情報のうち、圧縮ファイルＦ２から取り出された変換テーブルに登録されていない共通文字情報が規則変化フラグをＯＮにする対象となる。
【０１１５】
図２０は、伸長辞書のデータ構造例を示す。図２０に示す伸長辞書Ｄ２ｂは、伸長コード（文字情報）と、圧縮符号の符号長、活用フラグおよび規則変化フラグが関連付けられている。規則変化フラグは、関連付けられた文字情報が規則変化する文字情報であるか否かを示す。ＯＮの状態の規則変化フラグが関連付けられた文字情報は文法的に規則変化する文字情報（「ｔａｌｋ」などの動詞など）である。一方、ＯＦＦの状態の規則変化フラグが関連付けられた文字情報は文法的に不規則変化する文字情報（「ｓｐｅｎｄ」などの動詞など）であるか、または変化しない文字情報である（一般名詞など）。例えば、規則変化フラグは、例えば、変換テーブルＴ１を拡長し、変換テーブルＴ１に登録された文字情報のそれぞれに対して設定される。伸長辞書Ｄ２ｂを生成する際に、変換テーブルＴ１から規則変化フラグが設定された文字情報を特定し、特定された文字情報について、伸長辞書Ｄ２ｂ内の規則変化フラグがＯＮに設定される。規則変化の文字情報に関する伸長を、テーブル参照でなくアルゴリズムで実行するために、図１８に示す伸長データ生成処理が一部拡長される。
【０１１６】
図２１は、伸長データ生成処理の処理手順例を示す。Ｓ８０４において、活用フラグがＯＮと判定された場合（Ｓ８０４：ＹＥＳ）には、読出部１２３は、識別記号に対応する圧縮符号を読み出す（Ｓ８０５）。さらに、制御部１２１は、Ｓ８０２の伸長辞書Ｄ２ｂの参照により参照される規則変化フラグがＯＦＦであるか否かを判定する（Ｓ８１１）。
【０１１７】
規則変化フラグがＯＦＦである場合（Ｓ８１１：ＹＥＳ）には、変換テーブルＴ１を識別号とオフセット値に基づいて参照するＳ８０６の処理が行われる（Ｓ８０６）。Ｓ８０６が行われると、続いてＳ８０７の処理が行われる。
【０１１８】
図２２は、伸長データ生成処理の処理手順例を示す。規則変化フラグがＯＮである場合（Ｓ８１１：ＮＯ）には、Ｓ８０５で読み出された圧縮符号に対応する識別記号が［ｃ１］であるか否かを判定する（Ｓ８１２）。Ｓ８１２の判定で識別記号［ｃ１］である場合（Ｓ８１２：ＹＥＳ）には、制御部１２１は、伸長辞書Ｄ２ｂからＳ８０１で読み出した圧縮データに対応する伸長コード（文字情報）を取得する（Ｓ８１３）。Ｓ８１３の処理が行われると、それに続いてＳ８０７の処理が行われる。Ｓ８１２の判定で識別記号［ｃ１］でない場合（Ｓ８１２：ＮＯ）には、Ｓ８０５で読み出された圧縮符号に対応する識別記号が［ｃ２］であるか否かを判定する（Ｓ８１４）。Ｓ８１４の判定で識別記号［ｃ２］でない場合（Ｓ８１４：ＮＯ）には、Ｓ８０５で読み出された圧縮符号に対応する識別記号が［ｃ３］であるか否かを判定する（Ｓ８１５）。Ｓ８１５の判定で識別記号［ｃ３］でない場合（Ｓ８１５：ＮＯ）には、Ｓ８０５で読み出された圧縮符号に対応する識別記号が［ｃ４］であるか否かを判定する（Ｓ８１６）。Ｓ８１６の判定で識別記号［ｃ４］でない場合（Ｓ８１６：ＮＯ）には、Ｓ８０５で読み出された圧縮符号に対応する識別記号が［ｃ５］であるか否かを判定する（Ｓ８１７）。Ｓ８１７の判定で識別記号［ｃ６］である場合（Ｓ８１７：ＹＥＳ）には、制御部１２１は、伸長辞書Ｄ２ｂからＳ８０１で読み出した圧縮データに対応する伸長コード（文字情報）を取得する（Ｓ８１８）。Ｓ８１８の処理が行われると、それに続いてＳ８０７の処理が行われる。Ｓ８１７の判定で識別記号［ｃ６］でない場合（Ｓ８１７：ＮＯ）には、Ｓ８０５で読み出された圧縮符号に対応する識別記号が［ｃ７］であるか否かを判定する（Ｓ８１９）。
【０１１９】
図２３は、伸長データ生成処理の処理手順例を示す。Ｓ８１４の判定で識別記号［ｃ２］である場合（Ｓ８１４：ＹＥＳ）には、制御部１２１は、伸長辞書Ｄ２ｂからＳ８０１で読み出した圧縮データに対応する伸長コード（文字情報）を取得する（Ｓ８２０）。続いて、制御部１２１は、Ｓ８２０で取得した文字情報の末尾が、「ｓ」、「ｓｈ」、「ｃｈ」、「ｘ」および「ｏ」のうちのいずれかであるか否かを判定する（Ｓ８２１）。Ｓ８２１において、いずれかに該当すると判断された場合（Ｓ８２１：ＹＥＳ）には、制御部１２１は、Ｓ８２０で取得された文字情報に「ｅｓ」を追加する（Ｓ８２２）。Ｓ８２２の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２０】
Ｓ８２１において、いずれにも該当しないと判断された場合（Ｓ８２１：ＮＯ）には、制御部１２１は、Ｓ８２０で取得された文字情報の末尾が、子音（「ａ」、「ｅ」、「ｉ」、「ｕ」および「ｏ」以外のアルファベット）に「ｙ」が後続する語形であるか否かを判定する（Ｓ８２３）。Ｓ８２３において、子音に「ｙ」が後続する語形であると判定された場合（Ｓ８２３：ＹＥＳ）には、制御部１２１は、Ｓ８２０で取得された文字情報の末尾の「ｙ」を「ｉｅｓ」に変更する（Ｓ８２４）。Ｓ８２４の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２１】
Ｓ８２３において、子音に「ｙ」が後続する語形でないと判定された場合（Ｓ８２３：ＮＯ）には、制御部１２１は、Ｓ８２０で取得された文字情報の末尾に「ｓ」を追加する（Ｓ８２５）。Ｓ８２５の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２２】
図２４は、伸長データ生成処理の処理手順例を示す。Ｓ８１５の判定で識別記号［ｃ３］である場合（Ｓ８１５：ＹＥＳ）には、制御部１２１は、伸長辞書Ｄ２ｂからＳ８０１で読み出した圧縮データに対応する伸長コード（文字情報）を取得する（Ｓ８２６）。続いて、制御部１２１は、Ｓ８２６で取得した文字情報の末尾が「ｅ」であるか否かを判定する（Ｓ８２７）。Ｓ８２７において、Ｓ８２６で取得した文字情報の末尾が「ｅ」であると判断された場合（Ｓ８２７：ＹＥＳ）には、制御部１２１は、Ｓ８２６で取得された文字情報に「ｄ」を追加する（Ｓ８２８）。Ｓ８２８の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２３】
Ｓ８２７において、Ｓ８２６で取得した文字情報の末尾が「ｅ」でないと判断された場合（Ｓ８２７：ＮＯ）には、制御部１２１は、Ｓ８２６で取得された文字情報の末尾が、子音に「ｙ」が後続する語形であるか否かを判定する（Ｓ８２９）。Ｓ８２９において、子音に「ｙ」が後続する語形であると判定された場合（Ｓ８２９：ＹＥＳ）には、制御部１２１は、Ｓ８２６で取得された文字情報の末尾の「ｙ」を「ｉｅｄ」に変更する（Ｓ８３０）。Ｓ８３０の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２４】
Ｓ８２９において、子音に「ｙ」が後続する語形でないと判定された場合（Ｓ８２９：ＮＯ）には、制御部１２１は、Ｓ８２６で取得された文字情報の末尾に「ｅｄ」を追加する（Ｓ８３１）。Ｓ８３１の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２５】
図２５は、伸長データ生成処理の処理手順例を示す。Ｓ８１６の判定で識別記号［ｃ４］である場合（Ｓ８１６：ＹＥＳ）には、制御部１２１は、伸長辞書Ｄ２ｂからＳ８０１で読み出した圧縮データに対応する伸長コード（文字情報）を取得する（Ｓ８３２）。続いて、制御部１２１は、Ｓ８３２で取得した文字情報の末尾が「ｅ」であるか否かを判定する（Ｓ８３３）。Ｓ８３３において、Ｓ８３２で取得した文字情報の末尾が「ｅ」であると判断された場合（Ｓ８３３：ＹＥＳ）には、制御部１２１は、Ｓ８３２で取得された文字情報の末尾の「ｅ」を「ｉｎｇ」に変更する（Ｓ８３４）。Ｓ８３４の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２６】
Ｓ８３３において、Ｓ８３２で取得した文字情報の末尾が「ｅ」でないと判断された場合（Ｓ８３３：ＮＯ）には、制御部１２１は、Ｓ８３２で取得された文字情報の末尾に「ｉｎｇ」を追加する（Ｓ８３５）。Ｓ８３５の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２７】
図２６は、伸長データ生成処理の処理手順例を示す。Ｓ８１９の判定で識別記号［ｃ７］である場合（Ｓ８１９：ＹＥＳ）には、制御部１２１は、伸長辞書Ｄ２ｂからＳ８０１で読み出した圧縮データに対応する伸長コード（文字情報）を取得する（Ｓ８３６）。続いて、制御部１２１は、Ｓ８３６で取得した文字情報の末尾が「ｅ」であるか否かを判定する（Ｓ８３７）。Ｓ８３７において、Ｓ８３６で取得した文字情報の末尾が「ｅ」であると判断された場合（Ｓ８３７：ＹＥＳ）には、制御部１２１は、Ｓ８３６で取得された文字情報に「ｒ」を追加する（Ｓ８３８）。Ｓ８３８の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２８】
Ｓ８３７において、Ｓ８３６で取得した文字情報の末尾が「ｅ」でないと判断された場合（Ｓ８３７：ＮＯ）には、制御部１２１は、Ｓ８３６で取得された文字情報の末尾が、子音に「ｙ」が後続する語形であるか否かを判定する（Ｓ８３９）。Ｓ８３９において、子音に「ｙ」が後続する語形であると判定された場合（Ｓ８３９：ＹＥＳ）には、制御部１２１は、Ｓ８３６で取得された文字情報の末尾の「ｙ」を「ｉｅｒ」に変更する（Ｓ８４０）。Ｓ８４０の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１２９】
Ｓ８３９において、子音に「ｙ」が後続する語形でないと判定された場合（Ｓ８３９：ＮＯ）には、制御部１２１は、Ｓ８３６で取得された文字情報の末尾に「ｅｒ」を追加する（Ｓ８４１）。Ｓ８４１の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１３０】
図２７は、伸長データ生成処理の処理手順例を示す。図２２のＳ８１９の判定で識別記号［ｃ７］でない場合（Ｓ８１９：ＮＯ）には、制御部１２１は、伸長辞書Ｄ２ｂからＳ８０１で読み出した圧縮データに対応する伸長コード（文字情報）を取得する（Ｓ８４２）。続いて、制御部１２１は、Ｓ８４２で取得した文字情報の末尾が「ｅ」であるか否かを判定する（Ｓ８４３）。Ｓ８４３において、Ｓ８４２で取得した文字情報の末尾が「ｅ」であると判断された場合（Ｓ８４３：ＹＥＳ）には、制御部１２１は、Ｓ８４２で取得された文字情報に「ｓｔ」を追加する（Ｓ８４４）。Ｓ８４４の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１３１】
Ｓ８４３において、Ｓ８４２で取得した文字情報の末尾が「ｅ」でないと判断された場合（Ｓ８４３：ＮＯ）には、制御部１２１は、Ｓ８４２で取得された文字情報の末尾が、子音に「ｙ」が後続する語形であるか否かを判定する（Ｓ８４５）。Ｓ８４５において、子音に「ｙ」が後続する語形であると判定された場合（Ｓ８４５：ＹＥＳ）には、制御部１２１は、Ｓ８４２で取得された文字情報の末尾の「ｙ」を「ｉｅｓｔ」に変更する（Ｓ８４６）。Ｓ８４６の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１３２】
Ｓ８４５において、子音に「ｙ」が後続する語形でないと判定された場合（Ｓ８４５：ＮＯ）には、制御部１２１は、Ｓ８４２で取得された文字情報の末尾に「ｅｓｔ」を追加する（Ｓ８４７）。Ｓ８４７の処理が行われると、それに続いてＳ８０７の処理が行われる。
【０１３３】
［本実施形態の実現手段］
以下に、上述の圧縮処理や伸長処理を実施する構成について説明する。
【０１３４】
図２８は、コンピュータ１のハードウェア構成例を示す。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【０１３５】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭ以外にもフラッシュメモリなどが用いられてもよい。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）などでもよい。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【０１３６】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク３を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワーク４によりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【０１３７】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１と一体になっていてもよいし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から有線または無線で接続する装置であってもよい。
【０１３８】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って圧縮部１１、伸長部１２、生成部１３および生成部１４の少なくとも１つの処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１５の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（ファイルＦ１、圧縮ファイルＦ２および伸長ファイルＦ３など）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図２９を用いて説明する。
【０１３９】
図２９は、コンピュータ１で動作するプログラム構成例を示す。アプリケーションプログラム２４またはミドルウェア２３は、本実施形態の圧縮機能または伸長機能の処理手順が定められたプログラムである。もしくは、アプリケーションプログラム２４またはミドルウェア２３は、本実施形態の圧縮辞書生成または伸長辞書生成の処理手順が定められたプログラムである。
【０１４０】
圧縮機能の処理手順が定められた圧縮プログラムと、伸長機能の処理手順が定められた伸長プログラムとが一体のプログラムでもよいし、別体のプログラムでもよい。さらに、圧縮辞書生成の手順が定められた圧縮辞書生成プログラムは、圧縮プログラムに含まれてもよいし、圧縮プログラムにより呼び出される別体のプログラムでもよい。また、伸長辞書生成の手順が定められた伸長辞書生成プログラムは、伸長プログラムに含まれてもよいし、伸長プログラムにより読み出される別体のプログラムでもよい。もしくはＯＳ（オペレーティング・システム）２２の一機能として、本実施形態の圧縮機能および伸長機能の少なくとも一方が提供されてもよい。
【０１４１】
例えば、上述の圧縮機能および伸長機能の少なくとも一方、圧縮プログラム、伸長プログラム、圧縮辞書生成プログラムならびに伸長辞書生成プログラムの少なくとも１つは、記憶媒体に記憶される。例えば、その記憶媒体がドライブ装置３０４により読み取られ、インストールされることにより記憶媒体に記憶されたプログラムが実行可能な状態になる。インストールされたプログラムに定められた処理手順の各々は、ＯＳ２２に基づいてハードウェア群２１（３０１〜３１２）が制御されることにより実行される。
【０１４２】
図３に示すコンピュータ１に含まれる各機能ブロックの機能は、プロセッサ３０１が、圧縮プログラムまたは伸長プログラムを実行することにより提供される。圧縮プログラムの各処理手順がプロセッサ３０１に実行されることにより圧縮部１１および生成部１３内に含まれる各機能ブロックの機能が提供される。また、伸長プログラムの処理手順がプロセッサ３０１に実行されることにより伸長部１２および生成部１４内に含まれる各機能ブロックの機能が提供される。
【０１４３】
例えば、圧縮部１１内の機能ブロックは、以下のようにハードウェア群２１を用いて実行される。制御部１１１の機能は、プロセッサ３０１が、ＲＡＭ３０２内へのアクセス（記憶領域の確保、ファイルのロードなど）を行ない、また、レジスタ内で処理ステータス（読出し位置や書込み位置など）を管理し、レジスタ内に保持された情報との合致判定を行なうことにより提供される。読出部１１３の機能は、プロセッサ３０１がレジスタ内の処理ステータスに応じてＲＡＭ３０２にアクセスすることにより提供される。検索部１１２の機能は、プロセッサ３０１がＲＡＭ３０２にアクセスし、アクセス結果に基づく照合判定を行なうことにより提供される。書込部１１４の機能は、プロセッサ３０１がレジスタ内の処理ステータスに応じてＲＡＭ３０２にアクセスすることにより提供される。
【０１４４】
例えば、伸長部１２内の機能ブロックは、以下のようにハードウェア群２１を用いて実行される。制御部１２１の機能は、プロセッサ３０１が、ＲＡＭ３０２内へのアクセス（記憶領域の確保、ファイルのロードなど）を行ない、レジスタ内で処理ステータス（読出し位置や書込み位置など）を管理し、レジスタ内に保持された情報との合致判定を行なうことにより提供される。また、読出部１２３の機能は、プロセッサ３０１がレジスタ内の処理ステータスに応じてＲＡＭ３０２にアクセスすることにより提供される。検索部１２２の機能は、プロセッサ３０１がＲＡＭ３０２にアクセスし、アクセス結果に基づく照合判定を行なうことにより提供される。書込部１２４の機能は、プロセッサ３０１がレジスタ内の処理ステータスに応じてＲＡＭ３０２にアクセスすることにより提供される。
【０１４５】
例えば、生成部１３内の機能ブロックは、以下のようにハードウェア群２１を用いて実行される。制御部１３１の機能は、プロセッサ３０１がＲＡＭ３０２の領域管理およびＲＡＭ３０２へのアクセスを行ない、さらに、プロセッサ３０１がルーチンの処理結果に応じたルーチンの呼出しを行なうことにより提供される。統計部１３２の機能は、プロセッサ３０１によるＲＡＭ３０２へのアクセス処理およびアクセス処理の結果に応じた演算処理により提供される。ソート部１３４の機能は、プロセッサ３０１によるＲＡＭ３０２へのアクセスとアクセス結果に応じた演算処理により提供される。割当部１３３の機能は、プロセッサ３０１がＲＡＭ３０２へのアクセスに基づく演算処理を行なうことにより提供される。
【０１４６】
例えば、生成部１４内の機能ブロックは、以下のようにハードウェア群２１を用いて実行される。制御部１４１の機能は、プロセッサ３０１がＲＡＭ３０２の領域管理およびＲＡＭ３０２へのアクセスを行ない、さらに、プロセッサ３０１がルーチンの処理結果に応じたルーチンの呼出しを行なうことにより提供される。複製部１４３の機能は、プロセッサ３０１によるＲＡＭ３０２へのアクセス処理により提供される。ソート部１４４の機能は、プロセッサ３０１によるＲＡＭ３０２へのアクセスとアクセス結果に応じた演算処理により提供される。割当部１４２の機能は、プロセッサ３０１がＲＡＭ３０２へのアクセスに基づく演算処理を行なうことにより提供される。
【０１４７】
図３０は、コンピュータ１を用いたシステム構成例を示す。図３０に例示する情報処理システムは、基地局２、ネットワーク３、コンピュータ１ａおよびコンピュータ１ｂを含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。図３に示す圧縮部１１、伸長部１２、生成部１３および生成部１４が、コンピュータ１ａのみに含まれてもよいし、コンピュータ１ａおよびコンピュータ１ｂの双方に含まれてもよい。コンピュータ１ａが圧縮部１１および生成部１３を含み、コンピュータ１ｂが伸長部１２および生成部１４を含んでもよいし、それとは逆に、コンピュータ１ｂが圧縮部１１および生成部１３を含み、コンピュータ１ａが伸長部１２および生成部１４を含んでもよい。
【０１４８】
例えば、コンピュータ１ａで生成された圧縮ファイルＦ２がネットワーク３を介した通信によりコンピュータ１ｂに送信され、コンピュータ１ｂにより圧縮ファイルＦ２が伸長されて伸長ファイルＦ３が生成される。圧縮ファイルＦ２は無線で基地局２に送信され、基地局２からコンピュータ１ｂに送信されてもよい。
【０１４９】
本実施形態の圧縮機能や伸長機能によれば圧縮率の増大が抑制されるので、通信される圧縮データの量が削減される。それにより通信処理に対する図３０に例示されるシステムのハードウェアリソースの使用が抑制される。
【０１５０】
図３１は、コンピュータ１を用いたシステム構成例を示す。図３１に例示する情報処理システムは、コンピュータ１、ネットワーク３、クライアント装置６、ストレージエリアネットワーク（ＳＡＮ）４およびストレージ装置５を含む。例えば、コンピュータ１は、クライアント装置６からの要求に応じた情報処理を行なう。情報処理対象のデータは、例えばストレージ装置５に圧縮されて記憶されている。コンピュータ１は、クライアント装置６から要求を受けた場合に、圧縮されてストレージ装置５に記憶された情報処理対象のデータを取得して伸長する。コンピュータ１は、伸長したデータに対してクライアント装置６から要求された情報処理を実行し、さらに、情報処理後のデータを圧縮し、ストレージ装置５に格納する。情報処理は、例えば、ストレージ装置５に記憶されたデータの更新処理や、ストレージ装置５に記憶されたデータの分析・解析処理などである。
【０１５１】
図３１に例示されるシステムにおいて、圧縮処理や伸長処理の度に圧縮辞書や伸長辞書を生成しなくても、一度作成した圧縮辞書や伸長辞書を保持しておき、その圧縮辞書や伸長辞書に基づいて圧縮処理または伸長辞書が実行されてもよい。その場合、図４のＳ１０３の処理や図１１のＳ５０３の処理は、単に保持されている圧縮辞書や伸長辞書をロードするのみでもよい。
【０１５２】
図３１に例示するシステムでは、情報処理の要求を受けるたびにデータの伸長が行なわれる。伸長処理に時間がかかると要求に対する応答までの時間も増大してしまう。本実施形態の圧縮機能により圧縮率が低下しにくいので、圧縮データをストレージ装置５から読み出すＩ／Ｏ回数の増大が抑制される。また、圧縮符号数が極端に増大しないので伸長処理にかかるメモリアクセスの回数が抑制される。また、圧縮ファイルＦ２のロードに確保される記憶領域も少なく抑えられる。
【０１５３】
［圧縮符号の種類］
英和辞典などで大学教養課程程度までに必要であると分類される単語の数は約４０００語となる。この４０００語は、文書データにおいて使用頻度が比較的高い基礎単語である。そのうち、名詞が２０００語程度であり、形容詞が７００語程度であり、動詞が８００語程度である。例えば、形容詞の活用形それぞれに対して圧縮符号を割り当てると、形容詞に関して圧縮符号が２１００種類程度割り当てられることになる。また、例えば、動詞の活用形それぞれに対して圧縮符号を割り当てると、動詞に関して圧縮符号が３２００〜４０００種類程度割り当てられることになる（過去形と過去分詞が同じ表記である動詞が存在するため、各動詞について４〜５種類の活用形が存在するため）。
【０１５４】
本実施形態で示した圧縮辞書や伸長辞書の構造でなく、一般のハフマン符号化アルゴリズムで生成される圧縮辞書や伸長辞書が本実施形態において用いられてもよい。ハフマン符号化において、伸長辞書は、圧縮符号の割り当て対象の文字情報同士の出現頻度の比較によりビットが割り当てられる。ここで、出現頻度が比較された文字情報の組に対応する節のデータが生成される。さらに、生成された節同士で出現頻度の比較が行なわれ、順次ビットが生成される。上述の手順が繰り返されて木構造のデータ（ハフマン木）が形成される。圧縮符号の割り当て対象の文字情報（葉のデータ）が２の１２乗存在すると、それらの比較により２の１１乗の節のデータが生成される。節同士の頻度情報の比較により、順次節のデータが生成されると、葉のデータと節のデータとを合わせて２の１３乗存在することになる。節のデータには、それぞれ上位の節のデータへのポインタと、下位のポインタ（ビットが１の場合とビットが０の場合との双方）が含まれる。それぞれのポインタが２バイトであるとすると、ポインタにより３×２の１４乗のハフマン木のデータ構造内の位置が特定される。
【０１５５】
しかしながら、活用形に対して圧縮符号を割り当てることとすると、４０００語の基礎単語が８０００語程度になってしまう。すると、圧縮符号の割り当て対象の文字情報が２の１３乗存在することとなり、結果的にハフマン木のデータ構造内の位置が２バイトで特定できなくなってしまう。すると、アーキテクチャによるが、例えば、ポインタに４バイト使用することとなってしまい、ハフマン木のデータサイズが圧縮符号の割り当て対象が倍になったことにより倍増し、ポインタのデータサイズの都合によりさらに倍増してしまう。
【０１５６】
［変形例の説明］
以下、上述の実施形態における変形例の一部を説明する。図７に示す変換テーブルＴ１において、同義語や類義語が設定されてもよい。たとえば、文字情報「ｃｅｎｔｅｒ」、「ｃｅｎｔｒｅ」および「ｍｉｄｄｌｅ」が共通文字情報「ｃｅｎｔｅｒ」に対応付けられる。さらに、例えば、変換テーブルＴ１において、文字情報「ｃｅｎｔｅｒ」は、共通文字情報「ｃｅｎｔｅｒ」および識別記号［ｃ１］の組み合わせと対応づけられる。また、例えば、変換テーブルＴ１において、文字情報「ｃｅｎｔｒｅ」は、共通文字情報「ｃｅｎｔｅｒ」および識別記号［ｃ２］の組み合わせと対応づけられる。さらに、例えば、変換テーブルＴ１において、文字情報「ｍｉｄｄｌｅ」は、共通文字情報「ｃｅｎｔｅｒ」および識別記号［ｃ３］の組み合わせと対応づけられる。このように同義語または類義語が設定された変換テーブルＴ１を上述の実施形態に適用することにより、同義語や類義語などの表記ゆれによる圧縮率低下を抑制できる。
【０１５７】
図７に示す変換テーブルＴ１において、頭文字が大文字の単語と頭文字が小文字の単語との双方が設定されてもよい。例えば、変換テーブルＴ１は、文字情報「ｔｈｉｓ」および「Ｔｈｉｓ」を共通文字情報「ｔｈｉｓ」とそれぞれ対応づける。文字情報「ｔｈｉｓ」は、共通文字情報「ｔｈｉｓ」および識別記号［ｃ１］の組み合わせと対応づけられる。文字情報「Ｔｈｉｓ」は、共通文字情報「ｔｈｉｓ」および識別記号［ｃ２］の組み合わせと対応づけられる。このように単語の頭文字が大文字である場合と小文字の場合との双方が設定された変換テーブルＴ１を上述の実施形態に適用することにより、文頭の単語の表記ゆれによる圧縮率低下を抑制できる。
【０１５８】
また、圧縮処理の対象は、ファイル以外にも、システムから出力される監視メッセージなどでもよい。例えば、バッファに順次格納される監視メッセージを上述の圧縮処理により圧縮し、ログファイルとして格納するなどの処理が行なわれる。また、例えば、データベース内のページ単位に圧縮が行なわれてもよいし、複数のページをまとめた単位で圧縮が行なわれてもよい。また、圧縮辞書は複数の監視メッセージに対して共通の圧縮辞書が用いられてもよいし、複数のページに対して共通の圧縮辞書が用いられてもよい。
【符号の説明】
【０１５９】
１        コンピュータ
１ａ      コンピュータ
１ｂ      コンピュータ
２        基地局
３        ネットワーク
４        ストレージエリアネットワーク
５        ストレージ装置
６        クライアント装置
１１      圧縮部
１２      伸長部
１３      生成部
１４      生成部
１５      記憶部
【図１】
2014147672.tif 000003
【図２】
2014147672.tif 000004
【図３】
2014147672.tif 000005
【図４】
2014147672.tif 000006
【図５】
2014147672.tif 000007
【図６】
2014147672.tif 000008
【図７】
2014147672.tif 000009
【図８】
2014147672.tif 000010
【図９】
2014147672.tif 000011
【図１０】
2014147672.tif 000012
【図１１】
2014147672.tif 000013
【図１２】
2014147672.tif 000014
【図１３】
2014147672.tif 000015
【図１４】
2014147672.tif 000016
【図１５】
2014147672.tif 000017
【図１６】
2014147672.tif 000018
【図１７】
2014147672.tif 000019
【図１８】
2014147672.tif 000020
【図１９】
2014147672.tif 000021
【図２０】
2014147672.tif 000022
【図２１】
2014147672.tif 000023
【図２２】
2014147672.tif 000024
【図２３】
2014147672.tif 000025
【図２４】
2014147672.tif 000026
【図２５】
2014147672.tif 000027
【図２６】
2014147672.tif 000028
【図２７】
2014147672.tif 000029
【図２８】
2014147672.tif 000030
【図２９】
2014147672.tif 000031
【図３０】
2014147672.tif 000032
【図３１】
2014147672.tif 000033
【国際調査報告】
2014147672.tif 000034
2014147672.tif 000035
2014147672.tif 000036