)データ、プログラムコード等のように、特定の意味を持つ1種類以上のビットサイズのコードを記述したコード表に基づくデータの圧縮/復元技術に関する。[0002]【従来の技術】近年、文書データ、CADデータ等の様々な種類のデータがコンピュータで扱われるようになるのに伴い、取り扱われるデータ量も増大している。そのような大量を扱う場合、データ中の冗長な部分を省いて圧縮することにより、記憶容量を減らしたり、遠隔地への伝送を高速に行うことができる。speed.【0003】例えば、文書データを対象とする圧縮方法の1つとして、単語とそれに対応する語コードを有する辞書を持ち、この辞書に従って入力文字列をそれより短い語コードに変換する方法がある。method,単語とそれに対応する語コードをあらかじめ準備しておく必要があるが、一般に、単語の数は多く、固有名詞等の特殊な単語もあるので、入力データのすべての単語に対してあらかじめ語コードを割り当てることはできない。そこで、あらかじめ準備できない単語の扱いとして、大きく分けて次の2つの方法が提案されている。proposed.【0004】第1の方法は、すべての文字に対して出力コードを割り当てておき、空きコードを単語に割り当てる方法である。JIS(日本工業規格)コード等の日本語コードでは、利用可能なすべての2バイトコードのうち、一部のコードのみを仮名や漢字等の文字として使用しているため、空いているコードに単語を割り当てることができる。to.【0005】図19は、このような2バイトコードのコード空間における文字コードの領域を示している。coordinate,下位バイトが表す数0x00〜0xFFを第2の座標とする2次元空間に対応する。ここでは、上位バイトおよび下位バイトがそれぞれ0x21〜0x7Eに対応する領域が文字コードとして用いられており、それ以外の領域の空きコードが単語の語コードとして用いられる。word.【0006】第2の方法は、圧縮結果において、変換されていないコードと変換後の語コードとの間に切り替えコードを挿入して、入力データと同じコードと語コードとを区別する方法である。この方法では、変換されていない元のコードを語コードと重複して使用することができ、圧縮結果に挿入された切り替えコードを検出することで、次のコードが語コードなのか元のコードなのかが区別される。distinguished.【0007】図20は、上述の2バイトコードのコード空間を語コードとして用いた場合を示している。ここでは、“0xFFFF”以外のすべてのコードが語コードとして用いられ、“0xFFFF”は切り替えコードとして用いられている。example,図21に示すようにして、圧縮結果に挿入される。"0x8261”に変換される。“CAD”に対応する“0x826282608263”は元のままで残され、その前後に切り替えコード“0xFFFF”が挿入される。[0009]【発明が解決しようとする課題】しかしながら、上述した従来のデータ圧縮方法には、次のような問題がある。problems.【0010】あらかじめすべての文字を登録しておく方法では、文字の数が多いと登録できる単語の数が少なくなり、わずかな単語しか語コードに置き換えることができない。このため、データをあまり圧縮することができない。用いた場合、図19のコード空間の多くの領域が文字に割り当てられ、単語として使用可能な空きコードの数が少なくなる。ユーザが外字コードを登録する場合にも、同様の問題が生じる。arises.【0011】一方、切り替えコードを挿入する方法では、圧縮データの復元の際に切り替えコードが出現すると、それに続くコードはそれまでのコードとは異なる種類であるものとみなされる。"の次に“0xFFFF”が出現すると、それ以降のコードは再び語コードと認識される。code.【0012】このように、切り替えコードの位置によってその前後のコードの意味するところが違ってくるため、常に圧縮データを先頭から復元する必要があり、それを途中から復元することはできない。middle.【0013】本発明の課題は、あらかじめ決められたコードにより表されるデータを高い圧縮率で圧縮し、圧縮データの任意の位置から復元することのできるデータ圧縮/復元装置およびその方法を提供することである。[0014]【課題を解決するための手段】図1は、本発明のデータ圧縮/復元装置の原理図である。invention.【0015】図1のデータ圧縮装置は、コード入力手段1、辞書手段2、登録コード出力手段3、および符号化手段4を備え、1種類以上のサイズのコードを含むデータを圧縮する。sizes.【0016】コード入力手段1は、データをコード単位で入力し、辞書手段2は、1つ以上のコードからなるコード列と、そのコード列に対応する登録コードを保持する。登録コード出力手段3は、入力コード列が辞書手段2に保持されているとき、その入力コード列に対応する登録コードを出力する。符号化手段4は、入力コード列が辞書手段2に保持されていないとき、その入力コード列中の入力コードに付加コードを付加して新たなコードを生成し、新たなコードを出力する。.【0017】このような構成によれば、コード入力手段1は、与えられた処理対象のデータを1コードずつ入力し、登録コード出力手段3は、入力コード列に対応する登録コードが辞書手段2に登録されているとき、その登録コードを圧縮結果として出力する。符号化手段4は、1つの入力コードから始まるコード列が辞書手段2に登録されていないとき、その入力コードの適当な位置にあらかじめ決められた付加コードを付加し、付加コードを含む新たなコードを圧縮結果として出力する。2に登録されていない入力コードに対して動的に圧縮結果を生成することができるため、圧縮のためにすべての単コードをあらかじめ登録しておく必要がない。このため、使用するコード表の種類によらず、コード列に割り当てる登録コードを多く確保することができ、圧縮率が向上する。improved.【0019】また、付加コードを用いることで、圧縮データに含まれるコードが登録コードかどうかを、切り替えコードなしでも容易に判別することができる。したがって、圧縮データを先頭から辿らなくても、途中から復元することが可能になる。middle.【0020】次に、図1のデータ復元装置は、辞書手段2、単位入力手段5、除去手段6、およびコード列復元手段7を備え、1種類以上のサイズのコードを含むデータを圧縮して得られた圧縮データを復元する。restore.【0021】単位入力手段5は、データを一定単位で入力し、辞書手段2は、1つ以上のコードからなるコード列と、そのコード列に対応する登録コードを保持する。sequence.除去手段6は、入力データの一部があらかじめ決められた付加コードであるとき、その入力データから付加コードを除去してデータを生成し、生成されたデータを出力する。コード列復元手段7は、入力データの一部が付加コードでないとき、その入力データを登録コードとみなして、入力データに対応するコード列を出力する。data,残されたデータを復元結果として出力する。コード列復元手段7は、入力データの特定の部分が付加コードでないとき、その入力データを辞書手段2に登録された登録コードとみなして、入力データに対応するコード列を取得し、それを復元結果として出力する。result.【0023】除去手段6を備えることで、辞書手段2に登録されていない入力データから元のデータを復元することができるため、圧縮のためにすべての単コードをあらかじめ登録しておく必要がない。このため、使用するコード表の種類によらず、コード列に割り当てる登録コードを多く確保することができ、圧縮率が向上する。improved.【0024】また、付加コードを用いることで、圧縮データに含まれるコードが登録コードかどうかを、切り替えコードなしでも容易に判別することができる。したがって、圧縮データを先頭から辿らなくても、途中から復元することが可能になる。4,それぞれ、後述する図2の文字入力部11、辞書保持部13、語コード出力部15、および文字符号化部14に対応し、図1の単位入力手段5、除去手段6、およびコード列復元手段7は、それぞれ、後述する図3の一定単位入力部21、付加コード除去部23、および単語復元部24に対応する。inputted,辞書手段2が保持するコード列および登録コードは、辞書保持部13が保持する単語および語コードに対応する。[0027]【発明の実施の形態】以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。detail.【0028】本発明は、文書データのように、特定の意味を持つ1種類以上のビットサイズのコードを記述したコード表から生成されたデータの圧縮/復元に適用できる。以下では、コード表に登録された情報の1つの単位をコードまたは文字と呼ぶことにする。SJIS(シフトJIS)コードの場合、制御コードやアルファベット等の文字は、1バイトのビットサイズで表され、漢字や平仮名等の文字は、2バイトのビットサイズで表される。bytes.【0029】また、以下では、1つ以上の文字からなる文字列を単語と呼ぶことにする。ここでは、1つの名詞や動詞のような通常の単語のみに限らず、複数の単語の複雑な組合せを含む任意の文字列を単語として扱っている。word.【0030】本実施形態においては、単語とそれに対応する語コードを辞書として保持する。データ圧縮の際に、辞書に登録されていない単語が出現すると、その単語の先頭の文字のコードを特定のサイズに分割し、あらかじめ決められた付加コードを付加して、語コードと同じ長さのコードを生成する。して生成された未登録文字のコードは、登録単語に対して割り当てられた語コードと重複しないようにしておく。1バイトで表現可能な256個のコードを、未登録文字を出力するために使用することができる。way,未登録文字に対して動的にコードを割り当てることができるため、図19に示したように、すべての文字をあらかじめ登録しておく必要がない。このため、使用するコード表の種類によらず、登録単語に割り当てられる空きコードを多く確保することができ、圧縮率の向上に寄与する。ratio.【0032】また、付加コードを用いることで、圧縮データに含まれるコードの長さが統一され、また切り替えコードなしでも容易に語コードか未登録文字のコードかを区別することができる。したがって、圧縮データを先頭から辿らなくても、途中から復元することが可能になる。middle.【0033】図2は、本実施形態のデータ圧縮装置の構成図である。a.【0034】文字入力部11は、与えられたコード表に従って、被圧縮データを文字単位で入力する。12は、入力された文字列が辞書に登録されているかどうかを検索する。dictionary.【0035】文字符号化部14は、分割部17とコード付加部18を含み、入力文字列が辞書に登録されていなかった場合、その文字列の先頭の文字を符号化して出力する。分割部17は、与えられた文字コードをあらかじめ決められた単位に分割し、コード付加部18は、分割により生成された各部分にあらかじめ決められた付加コードを付加する。入力文字列が辞書に登録されていた場合、語コード出力部15は、それに対応する語コードを出力する。14と語コード出力部15から出力されたコードを順に並べて、圧縮データとして出力する。data.【0037】また、図3は、本実施形態のデータ復元装置の構成図である。22,付加コード除去部23、単語復元部24、および復元データ出力部25を備える。25.【0038】一定単位入力部21は、図2のデータ圧縮装置により圧縮されたデータをあらかじめ決められた単位で入力し、付加コード判別部22は、入力データの一部が付加コードに対応するかどうかを判別する。how.【0039】入力データの特定部分が付加コードに対応する場合、付加コード除去部23は、入力データから付加コードを除去して、残されたデータを復元する。単語復元部24は、語コード検索部26と単語出力部27を含み、入力データの特定部分が付加コードに対応しない場合、入力データを語コードとみなして単語を復元する。語コード検索部26は、入力データを辞書保持部13に保持された辞書の語コードと照合し、入力データに対応する単語を検索する。単語出力部27は、検索された単語を出力する。words.【0040】復元データ出力部25は、付加コード除去部23と単語復元部24から出力されたデータを順に並べて、復元データとして出力する。dictionary,語コードを単語に復元する。word.【0041】例えば、被圧縮データをSJISコードのコード表を用いて生成されたデータとし、圧縮後の語コードのサイズを2バイトとし、分割単位を1バイトとし、付加コードを0xFFとした場合、以下のような圧縮処理が行われる。"0xFFij”と“0xFFkm”を生成する。"0xFF”を付加して、“0xFFpq”を出力する。0X0~0xFのいずれかの値を表している。xF.【0043】図4は、このような付加コードを用いた場合のコード空間を示している。ここでは、上位バイトが0x00〜0xFEの領域があらかじめ語コードとして登録単語に割り当てられ、上位バイトが0xFFの領域が付加コードを用いて生成される未登録文字のコードとして用いられる。0xFF.【0044】このような圧縮処理により、図21に示した入力文字列“圧縮するCADデータ”のコードは、図5に示すようなコードに変換される。words,それぞれ、図21と同様の語コードに変換される。FIG.【0045】しかし、“C”、“A”、および“D”から始まる単語は辞書に登録されていないため、これらの文字は登録されていない単語の先頭の文字(未登録文字)として扱われる。"0x8263”は、それぞれ、1バイト単位に分割され、得られた各部分の前に付加コード“0xFF”が付加される。"0x8262”は、“0x82”と“0x62”の2つの部分に分割され、それぞれの部分に“0xFF”が付加されて、“0xFF82”と“0xFF62”に変換される。“A”と“D”についても同様である。0xFFを除いた下位バイトを出力する。0xFFでない場合は、その入力データは語コードを表すものと判断し、辞書に従ってその語コードに対応する単語を出力する。0x0011”、“0x8261”は、それぞれ、辞書に従って元のコードに変換される。"0xFF63”の上位バイトは0xFFであり、これは付加コードに対応する。"0x82”、“0x60”、“0x82”、“0x63”に変換される。"0x8263”が出力される。"CAD”については元のコードより長いコードに変換されている。このため、一見、必ずしも高い圧縮率が得られていないように見えるかも知れない。obtained.【0051】しかし、圧縮処理では、一般に、頻繁に出現する情報に短いコードを割り当て、ほとんど出現しない情報に長いコードを割り当てることによって、全体として元のデータより短いコードが生成される。この例では、未登録文字のコードは2倍の長さになるが、登録単語は1/2以下の長さになるので、頻繁に出現する多くの単語を登録しておくことで、全体として元のデータの1/2以下に圧縮することが可能である。data.【0052】図6は、図2のデータ圧縮装置による圧縮処理のフローチャートである。11は、制御変数nを0とおき(ステップS1)、入力データが終了したかどうかを判定する(ステップS2)。未処理の入力データがあれば、1文字分のコードを入力し、バッファP[n]に入力文字のコードを入力する(ステップS3)。P[n]から始まる単語が辞書に登録されているかどうかを調べる(ステップS4)。S2以降の処理を繰り返す。P[n]から始まる単語が辞書に登録されていなければ、次に、n=0かどうかを判定する(ステップS6)。P[n−1]は、単語として辞書に登録されているので、その単語に対応する語コードを辞書から取り出し、語コード出力部15に渡す(ステップS7)。16は、それを圧縮データとして出力する。文字入力部11は、P[0]=P[n]、n=0とおいて(ステップS8)、ステップS4以降の処理を繰り返す。andコード付加部18は、各部分に付加コードを付加して(ステップS10)、出力する(ステップS11)。11は、ステップS2以降の処理を繰り返す。S2.【0056】そして、ステップS2において入力データが終了すると、データ圧縮装置は、圧縮処理を終了する。"0x88b3”となる(ステップS3)。"0x8260”が出力される(ステップS7)。P[0]=P[2]=“0x82b7”、n=0となる(ステップS8)。=“0x8262”となる(ステップS3)。"0x0011”が出力される(ステップS7)。P[0]=P[2]=“0x8262”、n=0となる(ステップS8)。and“0xFF82”と“0xFF62”が出力される(ステップS11)。P[0]=“0x8366”となる(ステップS3)。"0x835e”となる(ステップS3)。[3]から始まる単語が辞書に登録されていないものとする。"0x8261”が出力される(ステップS7)。S7).【0065】図7は、図3のデータ復元装置による復元処理のフローチャートである。25は、残された部分を復元データとして出力する(ステップS24)。一定単位入力部21は、入力データが終了したかどうかを判定して(ステップS25)、未処理のデータが残っていれば、ステップS21以降の処理を繰り返す。26は、それを語コードとみなして辞書を検索し、単語出力部27は、対応する単語のコードを出力する(ステップS26)。21は、ステップS25以降の処理を繰り返す。processing.【0068】そして、ステップS25において入力データが終了すると、データ復元装置は、復元処理を終了する。"0x0011"には付加コードが付加されていないので、これらは語コードと認識される。S26),“0x0011”は“0x82b782e9”に変換される(ステップS26)。得られたコードは、2つの単語“圧縮”および“する”に対応している。",“0xFF82”、および“0xFF63”には付加コード“0xFF”が付加されているので、それが除去されて、“0x826282608263”が出力される(ステップS24)。"CAD"に対応している。to.【0071】また、次のコード“0x8261”には付加コードが付加されていないので、これは語コードと認識され、“0x8366815b835e”に変換される(ステップS26)。得られたコードは、単語“データ”に対応している。"data".【0072】次に、図8から図12までを参照しながら、圧縮データを途中から復元する処理について説明する。先頭の2バイトコードに付加コードが含まれていると、そこから忠実に復元しても意味のある結果が得られない場合がある。twoバイトコード“0xFF82”と合わせて1つの文字“C”を表しており、“0xFF62”から付加コードを除いた1バイトコード“0x62”だけでは、文字をなさない。character.【0074】そこで、圧縮データを途中から復元する場合、最初の語コードが出現するまで復元を行わない方法と、文字コードの切れ目を判別して、文字を意味しない先頭の復元コードを削除する方法の2通りが考えられる。",“0xFF82”、および“0xFF63”は復元されずにスキップされ、“0x8261”以降のコードが復元される。restored.【0076】図10は、このような復元処理のフローチャートである。一定単位入力部21は、入力データから1つのコードを入力し(ステップS31)、付加コード判別部22は、それに付加コードが付加されているかどうかを判別する(ステップS32)。入力コードに付加コードが付加されていれば、一定単位入力部21は、ステップS31以降の処理を繰り返す。26は、それを語コードとみなして辞書を検索し、単語出力部27は、対応する単語のコードを出力する(ステップS33)。復元データ出力部25は、その単語のコードを復元データとして出力する。S37、S38、およびS39において、図7と同様の復元処理を行う。FIG.【0078】また、後者の方法では、図11に示すように、文字をなさない先頭のコード“0xFF62”は復元されず、次の“0xFF82”以降のコードが復元される。restored.【0079】図12は、このような復元処理のフローチャートである。一定単位入力部21は、区切り判別用バッファstk[]を用意し、制御変数nを0とおいて(ステップS41)、入力データから1つのコードを入力する(ステップS42)。S42).【0080】次に、付加コード判別部22は、入力コードに付加コードが付加されているかどうかを判別する(ステップS43)。入力コードに付加コードが付加されていれば、付加コード除去部23は、入力コードから付加コードを除去して(ステップS44)、残された部分をstk[n]に入力する(ステップS45)。一定単位入力部21は、nに1を加算して(ステップS46)、ステップS42以降の処理を繰り返す。23は、次に、stk[0]内のコードが文字コードの切れ目と一致するかどうかを判定する(ステップS47)。Stk[n]内のコードを順に出力する(ステップS49)。復元データ出力部25は、その単語のコードを復元データとして出力する。S55、およびS56において、図7と同様の復元処理を行う。FIG.【0083】ところで、このような付加データを用いた圧縮処理によれば、圧縮データに含まれる各コードは同じ長さであり、それぞれ1対1で特定の単語または文字を表しているため、この処理を他の圧縮処理の前処理として使用することができる。圧縮データを他の圧縮処理により再度圧縮すると、さらに各単語の出現頻度に見合った長さのコードを割り当てることができ、圧縮率が向上する。この場合、語コードのサイズを単位として圧縮することが望ましい。)、LZ77コード、LZ78コードのような任意の符号化を用いることができる。code.【0085】図13は、付加データを用いた圧縮処理を他の圧縮処理の前処理として用いた複合圧縮処理のフローチャートである。apparatus,まず、入力データに付加データを用いた圧縮処理を施し(ステップS61)、次に、他の圧縮処理を施して(ステップS62)、圧縮データを生成する。data.【0086】また、図14は、こうして生成された圧縮データを復元する複合復元処理のフローチャートである。この処理では、データ復元装置は、まず、入力データにステップS62の圧縮処理と組み合わされる他の復元処理を施し(ステップS71)、次に、付加データを用いた復元処理を施して(ステップS72)、復元データを生成する。data.【0087】さらに、本実施形態の圧縮処理は、データ検索にも利用することができる。usually,圧縮されていない元のデータの形式で行われるが、圧縮されたデータ内で文字列等を検索すると、圧縮せずに検索する場合よりも、検索するデータ量が少なくなり、検索速度を向上させることができる。本実施形態の圧縮処理によれば、圧縮データに含まれる各コードは同じ長さであり、それぞれ1対1で特定の単語または文字を表しているため、圧縮データ内の検索を高速に行うことができる。out.【0088】図15は、このような検索処理を行う検索装置の構成図である。図15の検索装置は、検索キー入力部31、データ圧縮装置32、文字列検索部33、検索結果出力部34、およびデータベース35を備え、図16に示すような処理を行う。2).【0090】データ圧縮装置32としては、図2に示したデータ圧縮装置を用いることが望ましいが、他の静的な符号化に基づくデータ圧縮装置を用いてもよい。データベース35には、データ圧縮装置32と同じ圧縮方法により圧縮された検索対象のデータが格納されている。検索結果出力部34は、検索結果を出力して(ステップS84)、処理を終了する。ends.【0092】以上説明した実施形態では、文書データを圧縮する例を示しているが、本発明は、文書データに限らず、CADデータおよびプログラムコードを含む任意のデータに適用できる。適用対象コードのビットサイズは、2バイトに限らず、3バイトまたは4バイトであっても、2種類以上のビットサイズの混合であってもよい。いずれの場合でも、辞書に登録されている単語/文字は語コードに置き換えられ、未登録の単語に含まれる文字は一定単位の部分に分割されて、各部分に付加コードが付加される。portion.【0093】また、上述した付加コードは、圧縮データとして出力されるコードの任意の位置に付加することができる。"のようなコードを生成してもよい。付加コードとしては、“0xFF”以外にも任意のコードを用いることができる。"0xFF".【0094】このとき、文字コードの分割単位としては、任意のビットサイズを用いることができ、分割数も任意である。partビットの付加コードを付加してもよい。bits.【0095】図2のデータ圧縮装置、図3のデータ復元装置、および図15の検索装置は、例えば、図17に示すような情報処理装置(コンピュータ)を用いて構成される。44,外部記憶装置45、媒体駆動装置46、およびネットワーク接続装置47を備え、それらはバス48により互いに接続されている。memory)等を含み、処理に用いられるプログラムとデータを格納する。processing.CPU41は、メモリ42を利用してプログラムを実行することにより、必要な処理を行う。34は、例えば、プログラムにより記述されたソフトウェアコンポーネントとして、メモリ42の特定のプログラムコードセグメントに格納される。42は、図2および図3の辞書保持部13としても用いられる。FIGS.【0098】入力装置43は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。44は、例えば、ディスプレイやプリンタ等であり、ユーザへの問い合わせ、処理結果等の出力に用いられる。disk)装置等である。45,上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ42にロードして使用することもできる。外部記憶装置45は、図15のデータベース35としても用いられる。15.【0100】媒体駆動装置46は、可搬記録媒体49を駆動し、その記録内容にアクセスする。)、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。この可搬記録媒体49に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ42にロードして使用することもできる。network)等の任意のネットワーク(回線)を介して外部の装置と通信し、通信に伴うデータ変換を行う。必要に応じて、上述のプログラムとデータを外部の装置から受け取り、それらをメモリ42にロードして使用することもできる。42.【0102】図18は、図17の情報処理装置にプログラムとデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体49や外部のデータベース50に保存されたプログラムとデータは、メモリ42にロードされる。CPU41は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。[0103]【発明の効果】本発明によれば、どのようなコード表から生成されたデータでも高い圧縮率で圧縮することができ、また圧縮データのどの位置からでも復元することができる。data.【0104】また、得られた圧縮データに含まれる各コードは同じ長さであり、それぞれ1対1で特定の単語または文字を表しているため、この処理を他の圧縮処理の前処理として使用することができ、そのまま復元せずに検索処理に利用することもできる。DRAWINGS【図1】本発明のデータ圧縮/復元装置の原理図である。invention.【図2】データ圧縮装置の構成図である。apparatus.【図3】データ復元装置の構成図である。apparatus.【図4】付加コードを用いる方法を示す図である。code.【図5】付加コードを用いた符号化を示す図である。code.【図6】圧縮処理のフローチャートである。process.【図7】復元処理のフローチャートである。processing.【図8】復元開始位置を示す図である。position.【図9】途中から復元する第1の処理を示す図である。middle.【図10】第1の処理のフローチャートである。process.【図11】途中から復元する第2の処理を示す図である。middle.【図12】第2の処理のフローチャートである。process.【図13】複合圧縮処理のフローチャートである。compression.【図14】複合復元処理のフローチャートである。process.【図15】検索装置の構成図である。device.【図16】検索処理のフローチャートである。processing.【図17】情報処理装置の構成図である。apparatus.【図18】記録媒体を示す図である。medium.【図19】空きコードを単語に割り当てる方法を示す図である。word.【図20】切り替えコードを挿入する方法を示す図である。code.【図21】切り替えコードの例を示す図である。means,該入力コード列中の入力コードに付加コードを付加して新たなコードを生成し、該新たなコードを出力する符号化手段とを備えることを特徴とするデータ圧縮装置。前記入力コード列が前記辞書手段に保持されているかどうかをチェックする検索手段と、前記入力コードをあらかじめ決められた単位で複数の部分に分割する分割手段と、得られた各部分に前記付加コードを付加して前記新たなコードを生成する付加手段とをさらに備えることを特徴とする請求項1記載のデータ圧縮装置。前記符号化手段は、前記登録コードのサイズに一致する新たなコードを生成することを特徴とする請求項2記載のデータ圧縮装置。前記辞書手段は、2バイトの登録コードを保持し、前記分割手段は、前記入力コードを1バイト単位で複数の部分に分割し、前記付加手段は、得られた各部分に1バイトの付加コードを付加して2バイトの新たなコードを生成することを特徴とする請求項3記載のデータ圧縮装置。前記圧縮データをさらに圧縮する圧縮手段をさらに備えることを特徴とする請求項1記載のデータ圧縮装置。means,該入力コード列中の入力コードを分割して新たなコードを生成し、該新たなコードを出力する符号化手段とを備えることを特徴とするデータ圧縮装置。前記入力データの一部が前記付加コードでないとき、該入力データを登録コードとみなして、該入力データに対応するコード列を出力するコード列復元手段とを備えることを特徴とするデータ復元装置。前記単位入力手段は、データを2バイト単位で入力し、前記除去手段は、入力データから1バイトの付加コードを除去して、1バイトのデータを生成することを特徴とする請求項7記載のデータ復元装置。最初の付加コードなしのデータが入力されるまで、付加コードを含むデータを前記除去手段に入力しないことを特徴とする請求項7記載のデータ復元装置。入力データが付加コードを含んでおり、該復元開始位置の入力データから意味のあるコードが生成されなければ、前記除去手段は、該復元開始位置の入力データから生成されたデータを出力しないことを特徴とする請求項7記載のデータ復元装置。入力データから生成されたデータを待避させ、待避させたデータが意味のあるコードを生成するかどうかを判別し、該待避させたデータを出力するかどうかを決定することを特徴とする請求項10記載のデータ復元装置。検索結果を出力する出力手段とを備えることを特徴とする検索装置。前記圧縮手段は、前記検索キーをコード単位で入力するコード入力手段と、1つ以上のコードからなるコード列と、該コード列に対応する登録コードを保持する辞書手段と、入力コード列が前記辞書手段に保持されているとき、該入力コード列に対応する登録コードを出力する登録コード出力手段と、入力コード列が前記辞書手段に保持されていないとき、該入力コード列中の入力コードに付加コードを付加して新たなコードを生成し、該新たなコードを出力する符号化手段とを含むことを特徴とする請求項12記載の検索装置。入力コード列が前記辞書に登録されていないとき、該入力コード列中の入力コードに付加コードを付加して新たなコードを生成し、該新たなコードを出力するステップとを含む処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。入力データの一部が前記付加コードでないとき、該入力データを登録コードとみなして、該入力データに対応して辞書に登録されたコード列を出力するステップとを含む処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。入力コード列が前記辞書に登録されていないとき、該入力コード列中の入力コードに付加コードを付加して新たなコードを生成して、該新たなコードを出力することを特徴とするデータ圧縮方法。入力データの一部が前記付加コードでないとき、該入力データを登録コードとみなして、該入力データに対応して辞書に登録されたコード列を出力することを特徴とするデータ復元方法。