(57)【特許請求の範囲】
【請求項１】
コンピュータに、
入力された互いに関連を持つ複数のテキストファイルそれぞれを、前記複数のテキストファイルにおける単語の出現頻度に応じて動的辞書を生成し、静的辞書および前記動的辞書を用いて符号化し、
前記符号化された複数の符号化ファイルと、前記動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを含む、結合符号化ファイルを生成する、
処理を行わせる符号化プログラム。
【請求項２】
前記生成する処理は、前記動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを、前記結合符号化ファイルのトレーラ部に格納する
ことを特徴とする請求項１に記載の符号化プログラム。
【請求項３】
前記互いに関連を持つ複数のテキストファイルは、同じフォルダにある
ことを特徴とする請求項１に記載の符号化プログラム。
【請求項４】
前記互いに関連を持つ複数のテキストファイルは、共通する、あるいは、関連するファイル関連情報を持つ
ことを特徴とする請求項１に記載の符号化プログラム。
【請求項５】
前記互いに関連を持つ複数のテキストファイルは、共通する特定の単語を持つ
ことを特徴とする請求項１に記載の符号化プログラム。
【請求項６】
前記互いに関連を持つ複数のテキストファイルは、共通する特定の単語の出現頻度が所定値以上である
ことを特徴とする請求項１に記載の符号化プログラム。
【請求項７】
入力された互いに関連を持つ複数のテキストファイルそれぞれを、前記複数のテキストファイルにおける単語の出現頻度に応じて生成される動的辞書および静的辞書を用いて符号化する符号化部と、
前記符号化部によって符号化された複数の符号化ファイルと、前記動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを含む、結合符号化ファイルを生成する生成部と、
を有することを特徴とする符号化装置。
【請求項８】
コンピュータが、
入力された互いに関連を持つ複数のテキストファイルそれぞれを、前記複数のテキストファイルにおける単語の出現頻度に応じて生成される動的辞書および静的辞書を用いて符号化し、
前記符号化された複数の符号化ファイルと、前記動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを含む、結合符号化ファイルを生成する、
処理を実行する符号化方法。
【請求項９】
コンピュータに、
互いに関連を持つ複数のテキストファイルを符号化した複数の符号化ファイルと、単語の出現頻度に応じて生成される動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを含む結合符号化ファイルから、前記複数の符号化ファイルそれぞれの位置を示す位置情報に基づいて、復号化対象の符号化ファイルを抽出し、
該抽出した符号化ファイルを前記動的辞書および静的辞書を用いて復号化する
処理を行わせる復号化プログラム。
【請求項１０】
互いに関連を持つ複数のテキストファイルを符号化した複数の符号化ファイルと、単語の出現頻度に応じて生成される動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを含む結合符号化ファイルから、前記複数の符号化ファイルそれぞれの位置を示す位置情報に基づいて、復号化対象の符号化ファイルを抽出する抽出部と、
該抽出した符号化ファイルを前記動的辞書および静的辞書を用いて復号化する復号化部と、
を有することを特徴とする復号化装置。
【請求項１１】
コンピュータが、
互いに関連を持つ複数のテキストファイルを符号化した複数の符号化ファイルと、単語の出現頻度に応じて生成される動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを含む結合符号化ファイルから、前記複数の符号化ファイルそれぞれの位置を示す位置情報に基づいて、復号化対象の符号化ファイルを抽出し、
該抽出した符号化ファイルを前記動的辞書および静的辞書を用いて復号化する
処理を実行する復号化方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化プログラムなどに関する。
【背景技術】
【０００２】
圧縮技術では、ＺＩＰなどのＬＺ７７系圧縮とＬＺＷなどのＬＺ７８系圧縮が主流である。ＬＺ７７系圧縮では、圧縮対象の文字列に対して、スライド窓を利用し、最長一致文字列探索を行い、圧縮符号に最長一致文字列のアドレスと文字列長を割り当てる。
【０００３】
また、ＬＺ７８系圧縮の一例として、標準的に使用される単語や語句が階層構造（トライ木）に予め登録された静的単語辞書と、元の文書データの中で静的単語辞書に登録されていない文字列が登録された補助辞書とを用いて、元の文書データの単語を圧縮する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２６９８２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の圧縮技術では、圧縮対象の文書データに複数のファイルが存在する場合には、圧縮率を向上することができないという問題がある。
【０００６】
例えば、ＬＺ７７系圧縮は、スライド窓を利用し、バイトパターンの繰り返しに基づいて圧縮する。このスライド窓は、圧縮対象の文書データに複数のファイルが存在する場合には、複数のファイルを跨いで共有化できない。特定のファイルにおいて繰り返し出現したバイトパターンが、他のファイルにおいて、同様に出現するとは限らないからである。したがって、ＬＺ７７系圧縮では、圧縮対象の文書データに複数のファイルが存在する場合に、複数のファイル毎に個別に圧縮するので、圧縮率を向上することができない。
【０００７】
また、ＬＺ７８系圧縮の一例では、圧縮対象の文書データに複数のファイルが存在する場合に、複数のファイル毎に、静的単語辞書に登録されていない単語を補助辞書に登録し、登録された補助辞書と、トライ木を利用して符号化する。補助辞書の数が増えると、辞書のサイズが増加する。特に、繰り返し出現する単語が複数のファイル毎の補助辞書に登録されると、辞書のサイズが増加する。したがって、ＬＺ７８系圧縮の一例でも、圧縮対象の文書データに複数のファイルが存在する場合に、圧縮率を向上することができない。
【０００８】
１つの側面では、圧縮対象の文書データに複数のファイルが存在する場合であっても、圧縮率を向上することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、符号化プログラムは、コンピュータに、入力された複数のテキストファイルそれぞれを、静的辞書および前記複数のテキストファイルにおける単語の出現頻度に応じて生成される動的辞書を用いて符号化し、前記符号化された複数の符号化ファイルと、前記動的辞書に関する情報と、前記複数の符号化ファイルそれぞれの位置を示す位置情報とを含む、結合符号化ファイルを生成する、処理を実行させる。
【発明の効果】
【００１０】
１つの態様によれば、圧縮対象の文書データに複数のファイルが存在する場合であっても、圧縮率を向上することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施例に係る符号化装置の符号化処理の流れの一例を示す図である。
【図２】図２は、本実施例に係る動的辞書の一例を示す図である。
【図３】図３は、ビットフィルタの一例を示す図である。
【図４】図４は、符号化ファイルの構成例を示す図である。
【図５】図５は、本実施例に係る復号化装置の復号化処理の流れの一例を示す図である。
【図６】図６は、復号化用のケヤキ木のデータ構造の一例を示す図である。
【図７】図７は、本実施例に係る符号化装置の構成の一例を示す機能ブロック図である。
【図８】図８は、本実施例に係る復号化装置の構成の一例を示す機能ブロック図である。
【図９】図９は、本実施例に係る符号化処理のフローチャートの一例を示す図である。
【図１０】図１０は、本実施例に係る復号化処理のフローチャートの一例を示す図である。
【図１１】図１１は、本実施例に係る符号化処理の用途の一例を示す図である。
【図１２】図１２は、実施例の情報処理装置のハードウェア構成を示す図である。
【図１３】図１３は、コンピュータで動作するプログラムの構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【００１３】
［実施例に係る符号化処理］
図１は、本実施例に係る符号化装置の符号化処理の流れの一例を示す図である。図１に示すように、符号化装置は、符号化対象のファイルＦ１内の複数のテキストファイルｆ１１〜ｆ１ｎそれぞれを、静的辞書および動的辞書Ｄ０を用いて符号化する。符号化装置は、複数のテキストファイルｆ１１〜ｆ１ｎを通して、繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率の向上を図る。
【００１４】
ここで、まず、静的辞書とは、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書のことをいう。静的辞書には、それぞれの単語に対応する符号である静的コードがあらかじめ登録されている。これに対して、動的辞書Ｄ０とは、静的辞書に登録されていない単語と、動的に付された動的コード（符号）とを対応付けた辞書である。静的辞書に登録されていない単語には、一例として、出現頻度の低い単語（低頻度単語）、未知語、数値、時刻、タグなどがある。ここでいう未知語とは、静的辞書に登録されていない単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。動的辞書Ｄ０には、静的辞書に登録されていない単語の出現順に、動的コードに対応付けられた単語がバッファ部に登録される。なお、動的辞書Ｄ０に関する詳しい説明は後述する。
【００１５】
符号化装置の符号化処理の一例を、以下に説明する。例えば、符号化装置は、符号化対象のファイルＦ１内の複数のテキストファイルｆ１１〜ｆ１ｎを記憶領域にロードする。ここでいうテキストファイルｆ１１〜ｆ１ｎは、互いに関連を持つファイルである。互いに関連を持つファイルとは、共通する特定の単語を含むファイルであったり、特定の単語の出現頻度が所定値以上であるファイルであったりする。あるいは、同じフォルダにあるファイルであったり、共通または関連するファイル関連情報を持つファイルであったりする。
【００１６】
符号化装置は、符号化対象のテキストファイルを記憶領域から読み出し、読み出したテキストファイルに対して字句解析を行う。ここでいう字句解析とは、符号化されていない状態のテキストファイルを単語に分割することをいう。
【００１７】
符号化装置は、ビットフィルタＢ０と単語の文字列とを比較して、単語の文字列がビットフィルタＢ０にヒットするか否かを判定する。ビットフィルタＢ０は、静的辞書を用いて符号化可能な単語の文字列を特定するフィルタである。なお、ビットフィルタＢ０のデータ構造の一例は、後述する。符号化装置は、単語の文字列がビットフィルタＢ０にヒットした場合には、静的辞書に基づいて単語の文字列を、当該単語の文字列に対応する静的コードに符号化し、静的コードを出力する。
【００１８】
符号化装置は、単語の文字列がビットフィルタＢ０にヒットしない場合には、単語の文字列が動的辞書Ｄ０に登録されているか否かを判定する。符号化装置は、単語の文字列が動的辞書Ｄ０に登録されていない場合には、単語の文字列を動的辞書Ｄ０に登録し、動的辞書Ｄ０に基づいて、登録した単語の文字列を、当該登録した単語の文字列に対応する動的コードに符号化し、動的コードを出力する。また、符号化装置は、単語の文字列が動的辞書Ｄ０に登録されている場合には、動的辞書Ｄ０に基づいて、当該単語の文字列を、当該単語の文字列に対応する動的コードに符号化する。
【００１９】
符号化装置は、ビットフィルタＢ０に基づいた静的コードおよび動的辞書Ｄ０に基づいた動的コードそれぞれを、符号化ファイルＦ２内の、符号化対象のテキストファイルに対するテキスト（単語コード）のエリアに出力する。
【００２０】
ここで、符号化装置が符号化対象のファイルＦ１内のテキストファイルｆ１１を符号化する場合の処理について説明する。テキストファイルｆ１１には、「・・・Ｓｈｅｒｌｏｃｋ・・・２２１Ｂ・・・・・Ｂａｋｅｒ・・・」が記憶されている。単語の文字列「Ｓｈｅｒｌｏｃｋ」、単語の文字列「２２１Ｂ」、単語の文字列「Ｂａｋｅｒ」は、静的辞書に登録されていないものとする。単語の文字列が動的辞書Ｄ０に登録されていないものとする。
【００２１】
符号化装置は、単語の文字列「Ｓｈｅｒｌｏｃｋ」がビットフィルタＢ０にヒットするか否かを判定する。単語の文字列「Ｓｈｅｒｌｏｃｋ」がビットフィルタＢ０にヒットしないため、符号化装置は、単語の文字列「Ｓｈｅｒｌｏｃｋ」が動的辞書Ｄ０に既に登録されているか否かを判定する。単語の文字列「Ｓｈｅｒｌｏｃｋ」が動的辞書Ｄ０に既に登録されていないので、符号化装置は、単語の文字列「Ｓｈｅｒｌｏｃｋ」を新たな動的コード「Ａ０００ｈ」に対応付けて動的辞書Ｄ０に登録する。符号化装置は、動的コード「Ａ０００ｈ」を、テキストファイルｆ１１における符号化ファイルＦ２のテキストファイル（単語コード）ｆ２１に出力する。
【００２２】
また、符号化装置は、単語の文字列「２２１Ｂ」がビットフィルタＢ０にヒットするか否かを判定する。単語の文字列「２２１Ｂ」がビットフィルタＢ０にヒットしないため、符号化装置は、単語の文字列「２２１Ｂ」が動的辞書Ｄ０に既に登録されているか否かを判定する。単語の文字列「２２１Ｂ」が動的辞書Ｄ０に既に登録されていないので、符号化装置は、単語の文字列「２２１Ｂ」を新たな動的コード「Ａ００１ｈ」に対応付けて動的辞書Ｄ０に登録する。符号化装置は、動的コード「Ａ００１ｈ」を、テキストファイルｆ１１における符号化ファイルＦ２のテキストファイル（単語コード）ｆ２１に出力する。
【００２３】
また、符号化装置は、単語の文字列「Ｂａｋｅｒ」がビットフィルタＢ０にヒットするか否かを判定する。単語の文字列「Ｂａｋｅｒ」がビットフィルタＢ０にヒットしないため、符号化装置は、単語の文字列「Ｂａｋｅｒ」が動的辞書Ｄ０に既に登録されているか否かを判定する。単語の文字列「Ｂａｋｅｒ」が動的辞書Ｄ０に既に登録されていないので、符号化装置は、単語の文字列「Ｂａｋｅｒ」を新たな動的コード「Ａ００２ｈ」に対応付けて動的辞書Ｄ０に登録する。符号化装置は、動的コード「Ａ００２ｈ」を、テキストファイルｆ１１における符号化ファイルＦ２のテキストファイル（単語コード）ｆ２１に出力する。
【００２４】
引き続き、符号化装置が符号化対象のファイルＦ１に記憶されたテキストファイルｆ１２を符号化する場合の処理について説明する。テキストファイルｆ１２には、「・・・・・・・・Ｂａｋｅｒ・・・」が記憶されている。単語の文字列「Ｂａｋｅｒ」が動的辞書Ｄ０に登録されている。
【００２５】
符号化装置は、単語の文字列「Ｂａｋｅｒ」がビットフィルタＢ０にヒットするか否かを判定する。単語の文字列「Ｂａｋｅｒ」がビットフィルタＢ０にヒットしないため、符号化装置は、単語の文字列「Ｂａｋｅｒ」が動的辞書Ｄ０に既に登録されているか否かを判定する。単語の文字列「Ｂａｋｅｒ」が動的辞書Ｄ０に既に登録されているので、符号化装置は、動的辞書Ｄ０に基づいて、単語の文字列「Ｂａｋｅｒ」を、当該単語の文字列に対応する動的コード「Ａ００２ｈ」に符号化する。符号化装置は、動的コード「Ａ００２ｈ」を、テキストファイルｆ１２における符号化ファイルＦ２のテキストファイル（単語コード）ｆ２２に出力する。
【００２６】
このようにして、符号化装置は、複数のテキストファイルｆ１１〜ｆ１ｎを通して、繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率の向上を図る。すなわち、符号化装置は、テキストファイルｆ１１〜ｆ１ｎ個別に動的辞書を持つ場合と比較して、テキストファイルｆ１１〜ｆ１ｎ共通に動的辞書Ｄ０を持つことで、圧縮率を向上できる。
【００２７】
［動的辞書の一例］
図２は、本実施例に係る動的辞書の一例を示す図である。図２に示される動的辞書Ｄ０は、バッファ部Ｄ１とアドレステーブルＤ２とを含む。バッファ部Ｄ１は、文字列を記憶する。アドレステーブルＤ２は、動的コードと、格納位置と、データ長とを対応付けて保持する。動的コードは、あらかじめ定められた固定長の符号であり、例えば圧縮符号である。そして、動的コードは、単語の文字列が登録された順に割り当てられる。ここでは、動的コードは、１６進数「Ａ」から始まる固定長２バイトのコードである。格納位置は、バッファ部Ｄ１に格納された文字列の位置を示す。データ長は、バッファ部Ｄ１に格納された文字列の長さ（バイト長）を示す。
【００２８】
例えば、文字列「Ｂａｋｅｒ」に動的コードが割り当てられる場合について説明する。
【００２９】
符号化装置は、文字列「Ｂａｋｅｒ」をバッファ部Ｄ１に格納する。符号化装置は、文字列を格納した格納位置および格納したデータ長をアドレステーブルＤ２に登録する。ここでは、符号化装置は、格納位置として「１４」、データ長として「６」をアドレステーブルＤ２に登録する。
【００３０】
符号化装置は、文字列に対応付けられたアドレステーブルＤ２の動的コードを圧縮符号として割り当てる。ここでは、符号化装置は、文字列「Ｂａｋｅｒ」に対応付けられた動的コード「Ａ００２ｈ」を割り当てる。
【００３１】
［ビットフィルタの一例］
図３は、ビットフィルタの一例を示す図である。図３に示されるビットフィルタＢ０は、所定の文書の日本語一般単語のビットフィルタである。なお、図３の例では、日本語一般単語のビットフィルタについて説明するが、英数字を含む基礎単語のビットフィルタの構成も同様であるので、省略する。
【００３２】
図３に示すように、ビットフィルタＢ０は、２グラムと、ビットマップと、ポインタと、単語文字列と、文字コード列長と、静的コードとを含んで対応付ける。
【００３３】
２グラムは、２文字の文字コード列を示す情報である。ビットマップは、２グラムの文字コード列に対応するビットマップを示す。例えば、「００ｈ００ｈ」に対応するビットマップは「０＿０＿０＿０＿０」となる。ポインタは、ビットマップに対応する単語文字列の位置を示すポインタである。
【００３４】
単語文字列は、静的辞書に登録された日本語の単語の文字列であり、文字コード列で表わされる。ここでは、文字コード列が括弧内に示される。文字コード列長は、単語文字列に対応する文字コード列の長さである。静的コードは、単語文字列に割り当てられた、例えば圧縮符号である。
【００３５】
例えば、単語文字列「今日」に静的コードが割り当てられる場合について説明する。符号化装置は、ビットフィルタＢ０と、単語文字列「今日」とを比較して、単語文字列「今日」がビットフィルタＢ０にヒットする、静的辞書に登録されている静的コード「８０１０ｈ」を特定する。
【００３６】
［符号化ファイルの構成例］
図４は、符号化ファイルの構成例を示す図である。図４に示すように、符号化ファイルＦ２は、ヘッダ部と、符号化データと、トレーラ部とを有する。符号化データは、複数のテキストファイルそれぞれの符号化された単語コード群を記憶する。トレーラ部は、各ファイルのアドレス、動的辞書Ｄ０の情報、復号化用のケヤキ木などを記憶する。各ファイルのアドレスは、複数のテキストファイルが符号化されたファイルを格納するアドレスを示す。各ファイルのアドレスは、一例として、符号化データの先頭からの相対アドレスである。動的辞書Ｄ０の情報は、図２に示した動的辞書の情報に対応する。ヘッダ部には、各ファイルのアドレスへのポインタやトレーラ部に格納された動的辞書Ｄ０へのポインタが格納される。符号化装置は、複数のテキストファイルを符号化すると、符号化された結果である各ファイルを符号化ファイルＦ２に格納し、格納したアドレスを各ファイルのアドレスに格納する。後述する復号化装置は、復号化処理において、ヘッダ部の各ファイルのアドレスへのポインタを利用して、トレーラ部の各ファイルのアドレスから復号化対象のファイルのアドレスを参照する。復号化装置は、ヘッダ部の動的辞書Ｄ０へのポインタを利用し、動的辞書Ｄ０を参照する。
【００３７】
［復号化処理の流れ］
図５は、本実施例に係る復号化装置の復号化処理の流れの一例を示す図である。図５では、復号化処理のワークエリアとして、メモリに記憶領域Ａ１、記憶領域Ａ２および記憶領域Ａ３を設ける。復号化装置は、記憶領域Ａ２に、図４のトレーラ部に格納された動的辞書Ｄ０の情報をロードする。また、復号化装置は、符号化ファイルＦ２に記憶されたテキストファイルｆ１２の符号化データを記憶領域Ａ１にロードし、順次単語コードを読み出す。復号化装置は、読み出した単語コードに応じた復号化処理を行う。復号化装置は、単語の文字列（文字コード）を記憶領域Ａ３に格納し、記憶領域Ａ３に格納された文字コードに基づいて復号化ファイルＦ３を生成する。
【００３８】
図５では、単語コードｄ１、ｄ２に対する復号化処理を説明する。
【００３９】
復号化装置は、テキストファイルｆ１２に対する符号化データを読み出し、符号化データに含まれる単語コードが動的コードであるか否かを判定する。図５の例では、単語コードｄ１は、動的コードであると判定される。このため、復号化装置は、動的辞書Ｄ０を用いて単語コードｄ１を復号化する。例えば、復号化装置は、動的辞書Ｄ０のアドレステーブルＤ２から単語コードｄ１と合致する動的コードを特定し、特定した動的コードに対応する格納位置およびデータ長を取得する。そして、復号化装置は、バッファ部Ｄ１から、取得した格納位置およびデータ長を示す復号化データを特定する。すなわち、復号化装置は、単語の文字列（文字コード）を特定する。ここでは、復号化データとして単語の文字列（文字コード）「Ｂａｋｅｒ」が特定される。復号化装置は、特定した復号化データを、記憶領域Ａ３に書き込む。
【００４０】
また、復号化装置は、テキストファイルｆ１２に対する符号化データを読み出し、符号化データに含まれる単語コードが動的コードであるか否かを判定する。図５の例では、単語コードｄ２は、動的コードでないと判定される。すなわち、単語コードｄ２は、静的辞書によって符号化されたと判定される。このため、復号化装置は、復号化用ケヤキ木を用いて単語コードｄ２を伸長する。例えば、復号化装置は、単語コードｄ２と復号化用ケヤキ木とを比較して、復号化用ケヤキ木に示される復号化データへのポインタを特定する。そして、復号化装置は、特定した復号化データへのポインタを基に、復号化データを特定する。ここでは、復号化データとして単語の文字列（文字コード）「今日」が特定される。復号化装置は、特定した復号化データを、記憶領域Ａ３に書き込む。
【００４１】
また、復号化装置は、テキストファイルｆ１２に対する符号化データを全て復号化した後、記憶領域Ａ３に書き込まれた復号化データを復号化ファイルＦ３に書き込む。
【００４２】
このようにして、復号化装置は、共有化された動的辞書Ｄ０を用いて、それぞれのテキストファイルに対する符号化データを個別に復号化することができる。
【００４３】
図６は、復号化用のケヤキ木のデータ構造の一例を示す図である。図６に示すように、復号化用のケヤキ６０は、複数の枝６０−１〜６０−ｎと、葉６１−１〜６１−ｍとを有する。各枝６０−１〜６０−ｎには、所定のビット列が割り当てられる。復号化装置は、単語コードのビット列と、枝６０−１〜６０−ｎに割り当てられたビット列とを比較して、単語コードのビット列にヒットする枝に接続される葉を特定する。葉には、単語コードに対応する文字などの情報が格納される。
【００４４】
例えば、葉のデータ構造は、６１に示すものとなる。例えば、葉には、葉識別情報と、圧縮符号長と、単語へのポインタとが格納される。葉識別情報は、葉を一意に識別する情報である。圧縮符号長は、各枝６０−１〜６０−ｎと比較した単語コードのビット列の内、有効な長さを示す情報である。単語へのポインタは、単語コードを復号化した場合の復号化データを一意に示す情報であり、復号化データへのポインタに対応する。
【００４５】
［符号化装置の構成］
図７は、本実施例に係る符号化装置の構成の一例を示す機能ブロック図である。図７に示すように、符号化装置１００は、符号化部１１０および記憶部１２０を有する。
【００４６】
符号化部１１０は、図１に示した符号化処理を実行する処理部である。符号化部１１０は、ファイルリード部１１１、判定部１１２、第１符号化部１１３、第２符号化部１１４、更新部１１５およびファイルライト部１１６を有する。
【００４７】
記憶部１２０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部１２０は、静的辞書部１２１および動的辞書部１２２を有する。  
【００４８】
静的辞書部１２１は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。なお、静的辞書部１２１の説明は、図３と同様であるので、その説明を省略する。
【００４９】
動的辞書部１２２は、静的辞書部１２１に登録されていない単語と動的に付された動的コード（単語コード）とを対応付けた辞書である。なお、動的辞書部１２２の説明は、図２と同様であるので、その説明を省略する。
【００５０】
ファイルリード部１１１は、符号化対象のファイルＦ１内の複数のテキストファイルを記憶領域に読み出す。ファイルリード部１１１は、符号化対象のテキストファイルを記憶領域から読み出し、読み出したテキストファイルに対して字句解析を行う。ファイルリード部１１１は、字句解析した結果の各単語を順次判定部１１２に出力する。
【００５１】
判定部１１２は、単語が静的辞書部１２１に登録されているか否かを判定する。例えば、判定部１１２は、ファイルリード部１１１から出力された単語の文字列が静的辞書部１２１のビットフィルタＢ０にヒットするか否かを判定する。判定部１１２は、静的辞書部１２１のビットフィルタＢ０にヒットすると判定した場合には、単語の文字列を第１符号化部１１３に出力する。判定部１１２は、静的辞書部１２１のビットフィルタＢ０にヒットしないと判定した場合には、単語の文字列を第２符号化部１１４に出力する。
【００５２】
第１符号化部１１３は、単語の文字列を静的辞書部１２１に基づいて符号化する。例えば、第１符号化部１１３は、静的辞書部１２１の静的辞書に基づいて、単語の文字列を、当該単語の文字列に対応する静的コードに符号化する。第１符号化部１１３は、符号化された静的コードを更新部１１５に出力する。
【００５３】
第２符号化部１１４は、単語の文字列を動的辞書部１２２に基づいて符号化する。例えば、第２符号化部１１４は、単語の文字列が、動的辞書部１２２のバッファ部Ｄ１に既に格納されているか否かを判定する。第２符号化部１１４は、単語の文字列が、動的辞書部１２２のバッファ部Ｄ１に既に格納されていない場合には、当該単語の文字列をバッファ部Ｄ１に格納するとともに、当該単語の文字列を格納した格納位置および格納したデータ長をアドレステーブルＤ２に格納する。第２符号化部１１４は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルＤ２の動的コードに符号化する。また、第２符号化部１１４は、単語の文字列が、動的辞書部１２２のバッファ部Ｄ１に既に格納されている場合には、当該単語の文字列を、当該単語の文字列に対応する動的コードに符号化する。第２符号化部１１４は、符号化された動的コードを更新部１１５に出力する。
【００５４】
更新部１１５は、第１符号化部１１３および第２符号化部１１４から符号化データを取得し、取得した順に、取得した符号化データを記憶領域に蓄積することで、当該記憶領域を更新する。
【００５５】
ファイルライト部１１６は、ファイルＦ１内の複数のテキストファイルを全て符号化した後、記憶領域に書き込まれた符号化データ（単語コード）を符号化ファイルＦ２に格納する。ファイルライト部１１６は、動的辞書部１２２の情報および各テキストファイルを符号化した結果である各ファイルを格納したアドレスを符号化ファイルＦ２のトレーラ部に書き込む。
【００５６】
［復号化装置の構成］
図８は、本実施例に係る復号化装置の構成の一例を示す機能ブロック図である。図８に示すように、復号化装置２００は、復号化部２１０および記憶部２２０を有する。
【００５７】
復号化部２１０は、図５に示した復号化処理を実行する処理部である。復号化部２１０は、ファイルリード部２１１、判定部２１２、第１復号化部２１３、第２復号化部２１４、更新部２１５およびファイルライト部２１６を有する。
【００５８】
記憶部２２０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部２２０は、静的辞書部２２１、動的辞書部２２２および復号化用ケヤキ木２２３を有する。
【００５９】
静的辞書部２２１は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。なお、静的辞書部２２１の説明は、図３と同様であるので、その説明を省略する。
【００６０】
動的辞書部２２２は、静的辞書部２２１に登録されていない単語と動的に付された動的コード（単語コード）とを対応付けた辞書である。なお、動的辞書部２２２の説明は、図２と同様であるので、その説明を省略する。
【００６１】
復号化用ケヤキ木２２３は、静的辞書部２２１に登録された単語の静的コードを復号化する際に用いられるケヤキ木である。なお、復号化用ケヤキ木２２３の説明は、図６と同様であるので、その説明を省略する。
【００６２】
ファイルリード部２１１は、符号化ファイルＦ２内の復号化対象のテキストファイルの符号化データを記憶領域Ａ１に読み出す。例えば、ファイルリード部２１１は、符号化ファイルＦ２のトレーラ部に記憶された各ファイルのアドレスを用いて、復号化対象のテキストファイルの符号化データを記憶領域Ａ１に読み出す。ファイルリード部２１１は、記憶領域Ａ１の先頭から各単語コードを順次判定部２１２に出力する。
【００６３】
判定部２１２は、単語コードが動的コードであるか否かを判定する。例えば、判定部２１２は、単語コードの先頭の４ビットが「Ａ」であるか否かを判定する。判定部２１２は、単語コードの先頭の４ビットが「Ａ」である場合には、動的コードであると判定する。判定部２１２は、動的コードを第２復号化部２１４に出力する。判定部２１２は、単語コードの先頭の４ビットが「Ａ」でない場合には、動的コードでない、すなわち静的コードであると判定する。判定部２１２は、静的コードを第１復号化部２１３に出力する。
【００６４】
第１復号化部２１３は、復号化用ケヤキ木２２３を用いて静的コードを復号化する。例えば、第１復号化部２１３は、静的コードと復号化用ケヤキ木２２３とを比較して、復号化用ケヤキ木２２３に示される復号化データへのポインタを特定する。第１復号化部２１３は、特定した復号化データへのポインタを基に、復号化データを特定する。第１復号化部２１３は、特定した復号化データを更新部２１５に出力する。
【００６５】
第２復号化部２１４は、動的辞書部２２２を用いて符号化データを復号化する。例えば、第２復号化部２１４は、動的辞書部２２２のアドレステーブルＤ２から単語コードと合致する動的コードを特定し、特定した動的コードに対応する格納位置およびデータ長を取得する。第２復号化部２１４は、動的辞書部２２２のバッファ部Ｄ１から、取得した格納位置およびデータ長の復号化データを特定する。第２復号化部２１４は、特定した復号化データを更新部２１５に出力する。
【００６６】
更新部２１５は、第１復号化部２１３および第２復号化部２１４から復号化データを取得し、取得した順に、取得した復号化データを記憶領域Ａ３に蓄積することで、該記憶領域を更新する。
【００６７】
ファイルライト部２１６は、符号化ファイルＦ２内の復号化対象のテキストファイルの符号化データを全て復号化した後、記憶領域に書き込まれた復号化データを復号化ファイルＦ３に書き込む。
【００６８】
［符号化処理の処理手順］
次に、図７に示した符号化部１１０の処理手順について、図９を参照して説明する。図９は、本実施例に係る符号化処理のフローチャートの一例を示す図である。
【００６９】
図９に示すように、符号化部１１０は、前処理を実行する（ステップＳ１１）。例えば、符号化部１１０は、各種記憶領域を記憶部１２０に確保する。そして、符号化部１１０は、符号化対象のファイルＦ１内の複数のテキストファイルの文字列を読み出し、読出用の記憶領域に格納する（ステップＳ１２）。
【００７０】
符号化部１１０は、読み出した複数のテキストファイルから１つのテキストファイルを選択する（ステップＳ１３）。
【００７１】
符号化部１１０は、読出用の記憶領域から、選択したテキストファイルの単語の文字列を読み出す（ステップＳ１４）。例えば、符号化部１１０は、選択したテキストファイルに対して字句解析を行い、字句解析した結果の単語の文字列を先頭から読み出す。
【００７２】
符号化部１１０は、静的辞書部１２１の静的辞書に単語の文字列が登録済みであるか否かを判定する（ステップＳ１５）。静的辞書部１２１の静的辞書に単語の文字列が登録済みであると判定した場合には（ステップＳ１５；Ｙｅｓ）、符号化部１１０は、静的辞書部１２１の静的辞書に登録されている静的コードを出力する（ステップＳ１６）。そして、符号化部１１０は、ステップＳ２１に移行する。
【００７３】
一方、静的辞書部１２１の静的辞書に単語の文字列が登録済みでないと判定した場合には（ステップＳ１５；Ｎｏ）、符号化部１１０は、動的辞書部１２２を参照する（ステップＳ１７）。符号化部１１０は、動的辞書部１２２に単語の文字列が登録済みであるか否かを判定する（ステップＳ１８）。例えば、符号化部１１０は、単語の文字列が動的辞書部１２２のバッファ部Ｄ１に既に格納されているか否かを判定する。
【００７４】
動的辞書部１２２に単語の文字列が登録済みであると判定した場合には（ステップＳ１８；Ｙｅｓ）、符号化部１１０は、ステップＳ２０に移行する。一方、動的辞書部１２２に単語の文字列が登録済みでないと判定した場合には（ステップＳ１８；Ｎｏ）、符号化部１１０は、当該単語の文字列を動的辞書部１２２に登録する（ステップＳ１９）。例えば、符号化部１１０は、単語の文字列を動的辞書部１２２のバッファ部Ｄ１に格納するとともに、当該単語の文字列を格納した格納位置および格納したデータ長をアドレステーブルＤ２に格納する。そして、符号化部１１０は、ステップＳ２０に移行する。
【００７５】
ステップＳ２０において、符号化部１１０は、動的辞書部１２２に登録されている動的コードを出力する（ステップＳ２０）。例えば、符号化部１１０は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルＤ２の動的コードに符号化する。符号化部１１０は、符号化した動的コードを出力する。そして、符号化部１１０は、ステップＳ２１に移行する。
【００７６】
ステップＳ２１において、符号化部１１０は、選択されたテキストファイルの単語コードとして書込用の記憶領域に格納する（ステップＳ２１）。符号化部１１０は、選択されたテキストファイルの終点か否かを判定する（ステップＳ２２）。選択されたテキストファイルの終点でないと判定した場合には（ステップＳ２２；Ｎｏ）、符号化部１１０は、選択されたテキストファイルの次の単語を読み出すべく、ステップＳ１４に移行する。
【００７７】
一方、選択されたテキストファイルの終点であると判定した場合には（ステップＳ２２；Ｙｅｓ）、符号化部１１０は、符号化対象のファイルの終点か否かを判定する（ステップＳ２３）。符号化対象のファイルの終点でないと判定した場合には（ステップＳ２３；Ｎｏ）、符号化部１１０は、次のテキストファイルを選択すべく、ステップＳ１３に移行する。
【００７８】
符号化対象のファイルの終点であると判定した場合には（ステップＳ２３；Ｙｅｓ）、符号化部１１０は、書込用の記憶領域に記憶された符号化データを符号化ファイルに書き込む（ステップＳ２４）。このとき、符号化部１１０は、各テキストファイルを格納したアドレスおよび動的辞書部１２２の情報を符号化ファイルのトレーラ部に書き込む。そして、符号化部１１０は、符号化処理を終了する。
【００７９】
［復号化部の処理手順］
次に、図８に示した復号化部２１０の処理手順について、図１０を参照して説明する。図１０は、本実施例に係る復号化処理のフローチャートの一例を示す図である。
【００８０】
図１０に示すように、復号化部２１０は、前処理を実行する（ステップＳ３１）。例えば、復号化部２１０は、各種記憶領域を記憶部２２０に確保する。そして、復号化部２１０は、符号化ファイルＦ２から復号化対象のテキストファイル（単語コード）である符号化データを読出用の記憶領域に読み出し（ステップＳ３２）、動的辞書Ｄ０および復号化用のケヤキ木６０を読み出す（ステップＳ３３）。動的辞書Ｄ０は、記憶部２２０の動的辞書部２２２に格納される。復号化用のケヤキ木６０は、読出用の記憶領域から、単語コードを読み出す記憶部２２０の復号化用ケヤキ木２２３に格納される。
【００８１】
復号化部２１０は、読出用の記憶領域から、単語コードを読み出す（ステップＳ３４）。復号化部２１０は、単語コードが動的コードであるか否かを判定する（ステップＳ３５）。
【００８２】
単語コードが動的コードでないと判定した場合には（ステップＳ３５；Ｎｏ）、復号化部２１０は、復号化用のケヤキ木２２３と単語コードとを比較して復号化データへのポインタを特定する（ステップＳ３６）。復号化部２１０は、復号化データへのポインタを基に復号化データを特定する（ステップＳ３７）。そして、復号化部２１０は、ステップＳ３９に移行する。
【００８３】
一方、単語コードが動的コードであると判定した場合には（ステップＳ３５；Ｙｅｓ）、復号化部２１０は、動的辞書部２２２の動的コードを基にして復号化データを特定する（ステップＳ３８）。例えば、復号化部２１０は、動的辞書部２２２のアドレステーブルＤ２から単語コードと合致する動的コードを特定し、特定した動的コードに対応する格納位置およびデータ長を取得する。復号化部２１０は、動的辞書部２２２のバッファ部Ｄ１に対して、取得された格納位置から取得されたデータ長分の復号化データを特定する。そして、復号化部２１０は、ステップＳ３９に移行する。
【００８４】
ステップＳ３９において、復号化部２１０は、復号化データを書込用の記憶領域に書き込む（ステップＳ３９）。復号化部２１０は、読出用の記憶領域に処理する単語コードがあるか否かを判定する（ステップＳ４０）。読出用の記憶領域に処理する単語コードがあると判定した場合には（ステップＳ４０；Ｙｅｓ）、復号化部２１０は、次の単語コードを読み出すべく、ステップＳ３４に移行する。
【００８５】
一方、読出用の記憶領域に処理する単語コードがないと判定した場合には（ステップＳ４０；Ｎｏ）、復号化部２１０は、符号化ファイルＦ２をクローズする（ステップＳ４１）。そして、復号化部２１０は、復号化処理を終了する。
【００８６】
［符号化処理の用途］
図１１は、本実施例に係る符号化処理の用途の一例を示す図である。図１１では、符号化対象のファイルＦ１内の複数のテキストファイルとして、掲示板への投稿文およびこれに対するコメント文が用いられる場合である。ここでは、Ａさんが、掲示板に「山歩き」について投稿したところ、９件のコメントが書き込まれた場合であるとする。Ａさんの投稿文および９件のコメント文は、それぞれ互いに関連を持つテキストファイルである。すなわち、それぞれのテキストファイル内で、「尾瀬ヶ原」「ニッコウキスゲ」「鳩待峠」などの未知語が、繰り返し使用されている。「尾瀬ヶ原」は、符号ａ１で示されている。「鳩待峠」は、符号ａ２で示されている。「ニッコウキスゲ」は、符号ａ３で示されている。Ａさんの投稿文、Ｂさんのコメント、Ｃさんのコメント、Ｄさんのコメント、Ｅさんのコメント、Ｆさんのコメント、Ｇさんのコメント、Ｈさんのコメント、Ｉさんのコメント、Ａさんのコメントが、それぞれテキストファイルに対応する。
【００８７】
このような状況の下、符号化処理は、「山歩き」に投稿された投稿文および各コメント文を一括して符号化し、符号化ファイルＦ２に格納する。符号化ファイルＦ２には、投稿文および各コメント文のそれぞれの符号化データが、符号化データのエリアに格納される。符号化ファイルＦ２には、投稿文および各コメント文の符号化データをそれぞれ格納したアドレスが、トレーラ部の各ファイルのアドレスに格納される。そして、符号化ファイルＦ２には、共通化された動的辞書Ｄ０が、トレーラ部に格納される。一例として、動的辞書Ｄ０のバッファ部Ｄ１に「・・・尾瀬ヶ原△鳩待峠△ニッコウキスゲ△・・・」が格納される。動的辞書Ｄ０のアドレステーブルＤ２に、格納位置とデータ長が、「尾瀬ヶ原△」「鳩待峠△」「ニッコウキスゲ△」をそれぞれ動的コードと対応付けて格納される。
【００８８】
これにより、符号化処理は、複数のテキストファイルを通して、静的辞書に登録されていない単語であって繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率を向上できる。
【００８９】
また、フォルダにより複数のファイルが分類されると、あるフォルダ配下の各ファイルには、共通する単語が含まれる場合がある。例えば、ツイッターでは、各発言はあるフォルダ配下の各ファイルに格納される。ある発言者のテキストに含まれる重要な単語がテーマとなり、その単語やその単語に関連する単語が、フォロアーの発言にも多く含まれている。このような状況の下でも、符号化処理は、あるフォルダ配下の各ファイルに格納される各発言を一括して符号化し、符号化ファイルＦ２に格納する。これにより、符号化処理は、複数のファイルを通して、静的辞書に登録されていない単語であって繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率を向上できる。
【００９０】
［実施例の効果］
上記実施例によれば、符号化装置１００は、入力された複数のテキストファイルそれぞれを、静的辞書部１２１および複数のテキストファイルにおける単語の出現頻度に応じて生成される動的辞書部１２２を用いて符号化する。符号化装置１００は、符号化された複数の符号化ファイルと、動的辞書部１２２に関する情報と、複数の符号化ファイルそれぞれの位置を示す位置情報とを含む、結合符号化ファイルＦ２を生成する。かかる構成によれば、符号化装置１００は、複数のテキストファイルの動的辞書部１２２を共有することで、圧縮率を向上できる。
【００９１】
また、上記実施例によれば、符号化装置１００は、動的辞書部１２２に関する情報と、複数の符号化ファイルそれぞれの位置を示す位置情報とを、結合符号化ファイルＦ２のトレーラ部に格納する。かかる構成によれば、符号化装置１００は、複数の符号化ファイルを復号化する際に必要な情報をトレーラ部に纏めて格納することで、複数の符号化ファイルを効率的に復号化することが可能になる。
【００９２】
また、上記実施例によれば、符号化装置１００は、互いに関連を持つ複数のテキストファイルにおける単語の出現頻度に応じて動的辞書部１２２を生成し、静的辞書部１２１および動的辞書部１２２を用いて符号化する。かかる構成によれば、符号化装置１００は、複数のテキストファイルに繰り返し出現する単語が存在する可能性が高いので、複数のテキストファイルを通して、繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率を向上できる。
【００９３】
また、上記実施例によれば、符号化装置１００は、同じフォルダにある複数のテキストファイルにおける単語の出現頻度に応じて前記動的辞書を生成し、前記静的辞書および前記動的辞書を用いて符号化する。かかる構成によれば、符号化装置１００は、複数のテキストファイルに繰り返し出現する単語が存在する可能性があるので、複数のテキストファイルを通して、繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率を向上できる。
【００９４】
また、上記実施例によれば、符号化装置１００は、共通する、あるいは、関連するファイル関連情報を持つ複数のテキストファイルにおける単語の出現頻度に応じて前記動的辞書を生成し、前記静的辞書および前記動的辞書を用いて符号化する。かかる構成によれば、符号化装置１００は、複数のテキストファイルに繰り返し出現する単語が存在する可能性が高いので、複数のテキストファイルを通して、繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率を向上できる。
【００９５】
また、上記実施例によれば、符号化装置１００は、共通する特定の単語を持つ複数のテキストファイルにおける単語の出現頻度に応じて前記動的辞書を生成し、前記静的辞書および前記動的辞書を用いて符号化する。かかる構成によれば、符号化装置１００は、複数のテキストファイルに繰り返し出現する単語が存在する可能性が高いので、複数のテキストファイルを通して、繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率を向上できる。
【００９６】
また、上記実施例によれば、符号化装置１００は、共通する特定の単語の出現頻度が所定値以上である複数のテキストファイルにおける単語の出現頻度に応じて前記動的辞書を生成し、前記静的辞書および前記動的辞書を用いて符号化する。かかる構成によれば、符号化装置１００は、複数のテキストファイルに繰り返し出現する単語が存在する可能性が高いので、複数のテキストファイルを通して、繰り返し出現する単語が登録される動的辞書Ｄ０の共有化を図ることで、圧縮率を向上できる。
【００９７】
［実施例に関連する他の態様］
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
【００９８】
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００９９】
［情報処理装置のハードウェア構成］
実施例の符号化装置１００および復号化装置２００を含む情報処理装置のハードウェア構成を、図１２を参照して説明する。図１２は、実施例の情報処理装置のハードウェア構成を示す図である。図１２の例が示すように、コンピュータ４００は、各種演算処理を実行するＣＰＵ４０１と、ユーザからのデータ入力を受け付ける入力装置４０２と、モニタ４０３とを有する。また、コンピュータ４００は、記憶媒体からプログラム等を読み取る媒体読取装置４０４と、他の装置と接続するためのインターフェース装置４０５と、他の装置と無線により接続するための無線通信装置４０６とを有する。また、コンピュータ４００は、各種情報を一時記憶するＲＡＭ４０７と、ハードディスク装置４０８とを有する。また、各装置４０１〜４０８は、バス４０９に接続される。
【０１００】
ハードディスク装置４０８には、例えば図７に示した判定部１１２、第１符号化部１１３、第２符号化部１１４および更新部１１５の各処理部と同様の機能を有する符号化プログラムが記憶される。また、ハードディスク装置４０８には、符号化プログラムを実現するための各種データが記憶される。また、ハードディスク装置４０８には、例えば図８に示した判定部２１２、第１復号化部２１３、第２復号化部２１４および更新部２１５の各処理部と同様の機能を有する復号化プログラムが記憶される。また、ハードディスク装置４０８には、復号化プログラムを実現するための各種データが記憶される。
【０１０１】
ＣＰＵ４０１は、ハードディスク装置４０８に記憶された各プログラムを読み出して、ＲＡＭ４０７に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ４００を、例えば図７に示した判定部１１２、第１符号化部１１３、第２符号化部１１４および更新部１１５として機能させることができる。コンピュータ４００を、例えば図８に示した判定部２１２、第１復号化部２１３、第２復号化部２１４および更新部２１５として機能させることができる。
【０１０２】
なお、上記の符号化プログラムおよび復号化プログラムは、必ずしもハードディスク装置４０８に記憶されている必要はない。例えば、コンピュータ４００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ４００が読み出して実行するようにしてもよい。コンピュータ４００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ４００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１０３】
図１３は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ４００において、図１３に示すハードウェア群２６（４０１〜４０９）の制御を行なうＯＳ（オペレーティング・システム）２７が動作する。ＯＳ２７に従った手順でＣＰＵ４０１が動作して、ハードウェア群２６の制御・管理が行なわれることにより、アプリケーションプログラム２９やミドルウェア２８に従った処理がハードウェア群２６で実行される。さらに、コンピュータ４００において、ミドルウェア２８またはアプリケーションプログラム２９が、ＲＡＭ４０７に読み出されてＣＰＵ４０１により実行される。
【０１０４】
ＣＰＵ４０１により符号化する単語を受け付けた場合、ミドルウェア２８またはアプリケーションプログラム２９の少なくとも一部に基づく処理を行なうことで、（それらの処理をＯＳ２７に基づいてハードウェア群２６を制御して）符号化部１１０の符号化機能が実現される。符号化機能は、それぞれアプリケーションプログラム２９自体に含まれてもよいし、アプリケーションプログラム２９に従って呼び出されることで実行されるミドルウェア２８の一部であってもよい。
【符号の説明】
【０１０５】
１００  符号化装置
１１０  符号化部
１１１  ファイルリード部
１１２  判定部
１１３  第１符号化部
１１４  第２符号化部
１１５  更新部
１１６  ファイルライト部
１２０  記憶部
１２１  静的辞書部
１２２  動的辞書部
２００  復号化装置
２１０  復号化部
２１１  ファイルリード部
２１２  判定部
２１３  第１復号化部
２１４  第２復号化部
２１５  更新部
２１６  ファイルライト部
２２０  記憶部
２２１  静的辞書部
２２２  動的辞書部
２２３  復号化用ケヤキ木
【図１】
0006686639.tif 000002
【図２】
0006686639.tif 000003
【図３】
0006686639.tif 000004
【図４】
0006686639.tif 000005
【図５】
0006686639.tif 000006
【図６】
0006686639.tif 000007
【図７】
0006686639.tif 000008
【図８】
0006686639.tif 000009
【図９】
0006686639.tif 000010
【図１０】
0006686639.tif 000011
【図１１】
0006686639.tif 000012
【図１２】
0006686639.tif 000013
【図１３】
0006686639.tif 000014