JP3935952B2 - 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術 - Google Patents
頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術 Download PDFInfo
- Publication number
- JP3935952B2 JP3935952B2 JP50814798A JP50814798A JP3935952B2 JP 3935952 B2 JP3935952 B2 JP 3935952B2 JP 50814798 A JP50814798 A JP 50814798A JP 50814798 A JP50814798 A JP 50814798A JP 3935952 B2 JP3935952 B2 JP 3935952B2
- Authority
- JP
- Japan
- Prior art keywords
- dictionary
- character
- data compression
- data
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/93—Run-length coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Electrically Operated Instructional Devices (AREA)
- Record Information Processing For Printing (AREA)
Description
技術分野
本発明は、デジタル形式で格納したテキストデータをロスの無い方法で圧縮(compression)しかつ伸長(decompression)するための方法および装置に関する。換言すれば、オリジナルデータは最初圧縮されその後伸長処理を経て、そのオリジナルの形式に再構成される。このデータは、キャラクタのある特定セットの7または8ビット表現からなる、例えばASCIIコードの様に、予め特定された特定のアルファベットで記述されているものと仮定する。
従来技術の記載
従来技術において、異なるタイプの多くのテキスト圧縮技術が記載されている。ここに説明するテキスト圧縮技術は、LempelとZivによって開発されたテキスト圧縮技術こ基づいている。彼らはテキスト圧縮に対して2種類の、類似しているがしかし重大な相違点を有する技術を開発した。これら2種類の方法は、IEEE Transactions on Information Theory, Vol. IT 23, No. 3, pp. 337-343に記載の“A Universal Algorithm for Sequential Data Compression”と題された論文、およびIEEE Transactions on Information Theory, Vol. IT-24, No. 5, pp. 530-536に記載の“Compression of Individual Sequences via Variable-Rate Coding”と題された論文にその概略が記載され、さらに通常、それぞれLZ77およびLZ78として呼ばれる。
LZ77は、あたらしい材料を圧縮するために、固定サイズのウインドウ内に前もって圧縮された材料に対するポインタを使用する、テキスト圧縮技術である。固定サイズの“圧縮ウインドウ”は、局所性の原理、即ちそのデータが隣接のデータに最も類似していそうな事を見出すために圧縮される間、テキストデータに渡って移動させられる。以下にLZ77の一例を、図1(A)および(B)に関して説明する。
図1(A)および(B)では、説明目的のために、8キャラクタの小さなウインドウサイズを仮定している。図1(A)に示す様に、まだ圧縮されていないテキストは、このまだ圧縮されていないテキストに直接先行する圧縮されたテキストの8(までの)キャラクタを含む、8(までの)キャラクタウインドウの内容と比較される。まだ圧縮されていないテキストの最初から始まる、8キャラクタウインドウ内のシーケンスとの最も長い一致が識別される。図1(A)において、8キャラクタウインドウからの最も長い一致は、“BB”である。このシーケンス(“BB”)に対するポインタ、その長さ(2)およびイクステンション(圧縮すべきテキスト中の一致の後における、次のキャラクタ)は、データ圧縮アルゴリズムの適用に依存して、送出されあるいは圧縮されさらに局所的に格納される。しかしながら8キャラクタウインドウ内にシーケンスの一致が見いだせない場合は、そのキャラクタそのものが送出される。一旦、ポインタによって指摘されたデータブロックが圧縮されかつその圧縮に関する情報が送出されると、そのウインドウは、ポインタ(BB)プラスもし有ればイクステンションによって言及されるキャラクタ数だけ移動させられる。更に、圧縮されるテキストの領域に対するポインタは、このキャラクタ数だけ更新される。図(1B)に示すように、この処理は、シフトされたデータに対して、圧縮されるデータが空になるまで繰り返される。
LZ78は、圧縮されるデータを圧縮辞書内に書き込むためのフレーズに分解することよって、テキスト圧縮を達成する点で、LZ77と相違している。これらのフレーズまたは辞書エントリに対するポインタは、次に新しいデータを圧縮するために使用される。最初、辞書は空の列(長さがゼロのフレーズ)のみを含んでいる。各ステップにおいて圧縮すべきフレーズは、このフレーズのプレフィックスが辞書中のエントリで有るように、新しいデータのスタートの時点で最も長いフレーズである。なおこのプレフィックスは、最後のキャラクタを取り除いたフレーズとして定義される。残りのキャラクタはイクステンションと呼ばれる。このように、第1のフレーズが発見されると、この第1のフレーズは、そのフレーズの最後でかつ唯一のキャラクタに続く空の列(これは辞書において最初に見いだされる唯一のエントリである)からなる辞書エントリに対するリファレンスとして、符号化される。このキャラクタは次に辞書中に配置され(辞書が満杯でないと仮定して)、更にフレーズを識別する処理およびそのプレフィックス(そのプレフィックスに一致する辞書エントリに対するリファレンスとして)およびイクステンションを送出する処理を繰り返す。そのまだ圧縮されていないデータは、辞書エントリの両方、すなわち:空の列および既に遭遇したキャラクタからなるフレーズ、と比較される。新しいデータ中の次のキャラクタが既に圧縮されたキャラクタと一致しない場合は、次にそれもまた空の列プラス圧縮されるキャラクタとして、圧縮される。この方法では、辞書中に発見されかつ可能な限り長く選択されたプレフィックスと、入力データのプレフィックスに続くキャラクタであるイクステンションとして、データの各フレーズが圧縮される。LZ78の一例を次に図2を参照して説明する。
図2は、短いキャラクタシーケンスに対するLZ78圧縮の例を示す。図示するように、Eとして呼ばれる空の列を除いては、辞書は最初エントリを含まずにスタートし、圧縮すべきキャラクタシーケンスの開始を示すポインタは、圧縮すべきシーケンスの開始点に配置される。フレーズのプレフィックス、即ちEが辞書中の唯一のエントリであるため、プレフィックスが辞書中に存在する最も長い最初のフレーズは、1キャラクタの長さである。最初のキャラクタは従って、E及び送出されるシーケンスの第1キャラクタに対するリファレンスとして符号化される。その後、この辞書は更新されて、使用された辞書エントリおよび圧縮シーケンス中でこのエントリに続くキャラクタとの連結からなるエントリを含むようになる。現在のポインタは次に圧縮されるキャラクタの数だけ移動させられ、さらにこの処理を繰り返し、圧縮すべきデータストリームが空になるまで次のフレーズを繰り返して識別しかつその圧縮された形状を送出する。当業者であれば理解しうるように、一旦辞書が形成されると、LZ78技術は実質的により強い圧縮を提供する。LZ78テキスト圧縮技術の特定の実施に関するさらに詳細な説明が、Eastman等の米国特許第4、464、650号に示されており、一方、Lempel-Zivコード技術の一般的でかつ優れた記載は、Bell等による「テキスト圧縮」(Englewood, Cliffs, New JerseyのPrentice Hall社より1990年発行)と題された教科書において見られる。
Lempel-Zivによって記載された様に、圧縮辞書の概念を用いた多くのデータ圧縮システムが従来技術において記載されている。
例えば、Giltner等は、米国特許第4、386、416号において、テレックスまたは類似のネットワーク上でデータを送出するために使用されるシステムを記載している。Giltner等によって記載されたシステムは2種類の辞書を使用している。第1の辞書は、データ言語からの頻出ワードによってプレフィル(pre-filled)されており、一方第2の辞書は最初空であるがデータ中に遭遇しかつ第1の辞書に存在しないワードによって満たされる。データを送出する場合、ワードが第1の辞書中に発見されると、エスケープコードと第1の辞書中のワードエントリ数が送出される。ワードが第1の辞書中に発見されない場合は、Huffmanコード技術を用いて圧縮されて後の利用のために第2の辞書の中に加えられる。その結果、そのワードに再び遭遇すると、このワードは、第2の辞書中のワードエントリ番号が、第2の辞書中のワードエントリ番号の後の第2の辞書を言及する事を示すエスケープコードを送出する事によって送出される。Giltner等は、“ワード”を、予め決められた数のキャラクタまたは空白あるいは空白と句読点との組み合わせによって囲まれたキャラクタシーケンスのいずれかであると定義している。テレックスまたは類似のネットワークによって扱われる全てのタイプのメッセージに共通する小さいがしかし固定数のワードを第1の辞書中に設け、さらに追加の“ワード”を第2の辞書中に格納する。しかしながら、Giltner等は、有効ワードの限定された定義外である頻繁に発生するテキストシーケンスについて触れてはいない。その結果、Giltner等は、テキスト間の圧縮がキャラクタシーケンスのレベルでなされた場合、テキストの類似性がより大きいという事実を利用してはいない。さらに、Giltner等は、テキスト中に頻繁に発生するワードを第1の辞書に対してどのように選択しその結果送出されるテキストタイプ内で頻出する有効ワードによってその辞書が満たされるかについて、触れていない。Giltner等はまた、最も適当なテキストライブラリをいかにして識別するか、または圧縮すべきドキュメントのジャンルの識別について、教示していない。さらに、Giltner等のライブラリは固定されており、ユーザは必要に応じて彼等自身のプレフィル辞書を作る事はできない。
同様に、Wengは米国特許第4、881、075号において、2種類の辞書を用いる“適応”データ圧縮技術について記載している。第1の辞書は、圧縮または伸長を実行するために使用され、一方第2の辞書は最近に入力されたデータの局所性をうまく反映させるように再構築される。第2の辞書は次に入力データを圧縮しまたは伸長するために使用され、一方第1の辞書は直近の入力データを用いて再構築される。Wengは圧縮が完了するまで、辞書間で繰り返し切り替えを行っている。
Kato等は、米国特許第4、847、619号において、適応圧縮技術の修正版について記載しており、ここでは圧縮システムにおける圧縮度をモニタし、圧縮度がしきい値以下になった場合辞書をリセットしている。辞書が早まってリセットされる事を防ぐために、辞書が十分に満たされるまでリセットの発生は許可されない。この技術はLZ圧縮技術またはその他の適応技術に関連して使用することができる。
米国特許第5、153、591号において、ClarkはLempel-Ziv圧縮アルゴリズムに対する修正版を記載しており、ここで辞書はツリーデータ構造として格納される。これによって、米国特許第4、464、650号に記載された本来の実施形態における場合よりもさらに少ない空間で大きな辞書を格納することが可能である。さらに、これによってこれらの辞書をより簡単にまたすばやく探索することができる。
米国特許第5、243、341号において、Seroussi等は、2種類の辞書を使用するLempel-Zivの変形版を概略的に示している。第1の辞書は満杯となるまで使用され、次にこの辞書は待機辞書によって置き換えられ、この待機辞書は圧縮が続く前に最上の圧縮を与える、第1の辞書からのエントリによって満たされる。
本来のLempel-Ziv圧縮技術に対するその他の多くの修正版が、従来技術において示されている。
例えば、Welchは米国特許第4、558、302号において、Lempel-Ziv法の実行について記載している。この中では、符号化および複号化処理においてより簡単な計算しか必要とせず、そのためEastman等による特許第4、464、650号に記載された実行方法よりも早い。
Miller等は米国特許第4、814、746号においてLempel-Zivアルゴリズムに対する幾つかの修正版を示唆している。これらの修正版の第1は、圧縮を実際に始める前に辞書中に全ての可能なキャラクタを含ませる事である。その結果、次のデータがポインタよりもむしろキャラクタで有る事を示すフラッグを送出する必要が無い。さらにMiller等は、辞書が満杯になってきた場合、あまり最近では使用されないエントリの除去を容易にするために、タイムスタンプを各辞書エントリに結合している。これらの修正は、辞書を固定サイズに限定する事によって必要なメモリを減らし、辞書が圧縮するデータの現在の特性をより正確に反映する事を可能にする事によって、圧縮をより向上する事を目的としている。
Storerは、米国特許第4、876、541号において、従来のLempel-Ziv技術における困難さの幾つかを回避する圧縮技術について、記載している。特に、Miller等による米国特許第4、814、746号においてと同様に、圧縮辞書は最初アルファベット中の全てのキャラクタを含んでいるので、符号化されていないキャラクタを送出する必要がない。さらに、辞書があまり必要性のないエントリを追放する事が出来るように、最近においてほとんど使用されていないキューを維持する。Storerのシステムにおける辞書の符号化および複号化は、そのサイズが変化し、一度に数個のアクティブが存在しうる。各辞書の圧縮率がモニタされ、そして最良の圧縮を提示するものが使用される。
米国特許第4、906、991号において、Fiala等は置換スタイルのデータ圧縮技術について記載しており、これは幾分Lempel-Ziv圧縮に類似している。彼等の技術は固定キャラクタウインドウ(例えば4096キャラクタ)を探索する事によっており、このキャラクタは圧縮されるテキストがウインドウ内のある位置に対するポインタとして符号化されうるか否かを決定するために、すでに圧縮されている。圧縮されるテキストがこの方法で符号化されうるならば、スタート位置に対するポインタが、圧縮されるテキストとウインドウ内の位置間の重なりの長さと共に、生成される。もしこの方法で圧縮されるテキストが符号化できないならば、その長さのキャラクタ列後の長さとして符号化される。LZ78圧縮と同様に、ウインドウが圧縮を生じさせるために指摘されるはずの列をもたないので、この技術はドキュメントの初期においてデータを多く圧縮する事ができない。
O'Brienは、米国特許第4、988、998号において、キャラクタの繰り返しが長い列を含むデータ圧縮を強化することを可能とするLempel-Zivアルゴリズムの修正版について示唆している。Lempel-Zivアルゴリズムは、現存の辞書エントリに単一のキャラクタを添付する事によって、圧縮辞書にエントリを加えているので、このようなキャラクタ列が辞書中に発見される前に、多くの繰り返しキャラクタ列を必要とする。従ってO'Brienは、ランレングス(run-lengths)をテキスト中に挿入するランレングス符号化技術を用いて、データをプレ処理している。テキストと繰り返しキャラクタに対するランレングスとの組み合わせの結果は、次にLempel-Ziv技術を用いて圧縮される。
米国特許第5、049、881号において、Gibson等は、すでに処理されたキャラクタシーケンスから自身のポインタを生成し、データ速度と圧縮率の積を最大化することを強調する、データ圧縮システムについて記載している。このようにして、すでに入力したデータは辞書として使用され、さらに列一致テーブルを必要とすることなく、列一致のための候補を発見するために、ハッシングアルゴリズムと結合されている。
米国特許第5、058、137号において、Shahは、コードワードとデータを別々に格納するためのメモリを有するLempel-Zivデコーダについて記載している。コードワードを受信する事によって、このデコーダは、すでに受信したコードワードを格納し、新しく受信したコードワードをコードワードメモリに印加して、新しく受信したコードワードとさらにプレフィックスと関連した別のコードワードによって表現されるデータの一部である、最後のデータ要素の位置を獲得する。最新のコードワードの複号化を完了すると、複号されたワードの最初のデータ要素はその直前に受信したコードワードに添付され、その組み合わせが、すでに受信された最も高いコードワードのすぐ後のコードワードに等価なものとして、格納される。符号化および複号化の間において、少なくとも一個のメモリが共有される。
米国特許第5、087、913号において、Eastmanは、全ての先行する部分を伸長する必要なく、データの後半部分の伸長を可能とするために、探索ツリーデータベースを使用する、Lempel-Zivアルゴリズムについて記載している。探索ツリーデータベースは、予め決められた固定サイズに成長させられ、それ以降の成長は許可されない。圧縮探索ツリーデータベースが伸長に先立って形成されるという事実によって、データの先行する全体部分を伸長することなく、データの一部分を伸長する事が可能となる。
米国特許第5、140、321号において、Jungは、圧縮の減少を犠牲にして、圧縮速度を強化することを可能とした、Lempel-Ziv変形版の詳細を示している。データの圧縮部分全体において最適一致サブ列を見出すよりもむしろ、局所性原理を利用し、ファーストインファーストアウトバッファにおける最近の圧縮データを一致シーケンスを見出すために調査する。最近圧縮された列を格納するため、および一致列のすばやい検索を可能とするために、ハッシュテーブルを用いる。
米国特許第5、179、378号において、Ranganathan等は、データ記号の可変数から固定長コードワードを形成する事によって、処理能力を向上するために、プロセッサの短縮アレイを用いたLempel-Zivの実行方法について記載している。
米国特許第5、262、776号において、Kutkaは、通常の圧縮処理において必要とされる探索ステップを取り除くために、ツリーデータ構造を利用したLempel-Zivアルゴリズムの実行方法について記載している。プライマリシーケンスにおけるシーケンス要素は、エスケープシーケンスを用いて削減要素セットにおける要素に変換される。この技術は、画像の離散的コサイン変換の係数をあらわすデータを圧縮する場合に、特に適している。
特許文献に記載されているLempel-Ziv圧縮技術についての上述の変形例に加えて、その他の例が技術誌において見ることができる。
例えば、Rodeh他による「列の一致を介したデータ圧縮のための線形アルゴリズム」(“Linear Algorithm for Data Compression via String Matching”)には、ウインドウのサイズが固定されないLZ77技術が記載されている。この技術によれば、データの圧縮部分における以前の列へのポインタは長さ方向に増大し、可変長コードにエンコードされる。
Bellによる「好適なOPM/Lテキスト圧縮」(“Better OPM/L Text Compression”)には、プレフィックスと拡張の組合せを使用して圧縮していないLZSSに言及したLempel-Zivの変形例が記載されている。一方、ポインタを送出するコストが1つのキャラクタ又は一連のキャラクタを単に送出するコストよりも高いならば、1つのキャラクタ又は一連のキャラクタが送出される。この場合、2進検索ツリーが最も長い列の一致を見出すために使用される。
Welshによる「高性能データ圧縮技術」(“A Technique for High-Performance Data Comression”)には、ポインタとキャラクタとの組合せよりもむしろ以前に圧縮されたデータへのポインタのみが使用されるLZ78への修正版を開示している。列テーブルは入力されたキャラクタ列を固定長コードにマップするように構成される。テーブル上の各列に対して、そのプレフィックス列もまたテーブル上にに設けられる。列テーブルには、圧縮されたメッセージ内には以前に出現した列をも包含する。メッセージ内の列の実行サンプルで構成されるため利用可能な列はメッセージの統計を反映する。この技術はLZWとして一般に呼ばれている。この技術では、入力列では一回の通過においてキャラクタが連続的に調査され、かつ最も長く認識された入力列は各時間ごとに除外される「グレーディパーシングアルゴリズム」(“greedy”parsing algorithm:貧欲分解アルゴリズム)を使用する。そして列テーブルに加えられた列はこの解析により決定される。
Miller及びWegmanによる“Variation on a Theme by Ziv and Lemple”には、LZ78の他の変形例が記載されている。このバージョンでは、辞書は長さ1(即ち、圧縮が生じるアルファベット上の全ての文字)の全ての列により前もって埋められており、この長さ1は縮小の一助にはなるが、有用なエントリが欠落した辞書としてスタートする問題を除去していない。又、辞書が満杯された時に圧縮をリセットするよりも、最も最近使用した辞書から列を除去することを提案している。しかしながら、LZMWとして呼ばれているこのバージョンの最も大きな利点は、拡張が決して送出されないことである。むしろ、辞書は長さ1の全ての列でスタートするので、初期の辞書を使用して全てのデータをエンコードすることができる。しかしながら、これは結果的に圧縮されないことになる。一方、辞書は、以前の2つの一致の結び付きからなる辞書にエントリーを加えることにより増大する。
図3には、LZMW圧縮の例を示す。アルファベットは、図示のために3文字(A,B,C)のみ含むものとする。図示のように、圧縮辞書は初期ではアルファベット文字を含む。圧縮が開始されるキャラクタへのポインタは、圧縮される一連のテキスト最初のキャラクタに置かれる。辞書内の最も長い一致が見い出されかつこのエントリへのポインタが送出される。一方、ポインタは圧縮アルゴリズムの適用に依存して部分的に格納される。ポインタは送出されるキャラクタ数により移動される。通常、辞書は、以前に送出された2つの辞書エントリの結び付きを含むように更新されるが、しかし、以前の送出がなかった場合にはこのステップはスキップされる。処理サイクルを経て第2の繰り返しにおいて、最も大きな一致が見い出され、その辞書エントリ番号が送出され、ポインタが適当なキャラクタ数により移動され、そして送出された2つの以前の辞書エントリの結び付きが新たなエントリとて辞書に加えられる。この処理は圧縮されるべきデータが無くなるまで繰り返される。
一般に使用される圧縮アルゴリズムはLZ77及びLZ78アルゴリズムの変形例に使用する。例えば、市場で入手可能な“zip”及び無償で入手できる“gzip”に使用される圧縮アルゴリズムは、入力データにおいて写された列を見出すLZ77の変形例である。“gzip”では、2番目に出現する列はポインタにより対(距離、長さ)の形式で以前の列に置き換えられる。列が、指定された距離、例えば32Kbytes、の範囲にて、それ以前のバイト数において何処にも出現しないときは、一連の文字バイトとして送出される。文字又は一致の長さは他のツリーと共に圧縮される。ツリーは各ブロックの開始時にコンパクトな形式で格納される。ブロックは、1つのブロックに対して圧縮されたデータが利用可能なメモリに合わねばならないことを除いて、如何なるサイズをも持つことができる。“gzip”が、新たなツリーと共に他のブロックをもスタートさせるためにに有用であることを決めたときは、ブロックは送出される。写された列はハッシュテーブルを使用して見出される。長さ3の全ての列はハッシューテーブルに挿入され、ハッシュインデックスは次の3バイトに対して計算される。もしこのインデックスに対するハッシュチエン(hash chain)が空でないときは、チエンにおける全ての列は現在入力されている列と比較され、最も長い一致が選択される。ハッシュチエンは、最も最近の列のスタートと共に、最も短い距離に注目しかつハフマン(Huffman)コードの利点を得るために検索される。ハッシュチエンは単純にリンクされる。ハッシュチエンからの削除はない。アルゴリズムでは古すぎる一致は単純に放棄される。最悪の状況を回避するために、非常に長いハッシュチエンは、運用時間により任意に決定される所定の長さにおいて、任意に縮小される。その結果、“gzip”は最も長く可能な一致を常に見出すことはないが、一般に、十分に長い一致を見出す。
残念ながら、従来技術における多くの数のLempel-Zivの変形版にも係わらず、いずれも適切に問題点を見出していない。ワードの完全に欠けている辞書と共にスタートすることは、小さなファイルが全く圧縮されることを仮想的に防ぎ、かつ大きなファイルがさらに圧縮されることを防ぐ。米国特許第4,814,746号及び4,876,541号において、Miller及びWegmanは、データが複号化された文字の組において全ての文字を含む辞書と共にスタートすることによりこの問題にアドレスすることを開始している。これは、どのような後続が辞書エントリ番号ではなくキャラクタであるかを示すために、エスケープコードを送出する上で必要な問題を解消する。
しかしながら、本願の発明者は、多くの文献、特に人間の自然言語又はコンピュータプログラミング言語、例えば、英語又はC言語、で書かれた文献は、統計的に極端に頻度が高く、かつ圧縮辞書の一部とすべき少ないワード数であることを観察することによって、さらなる圧縮が得られることを見出した。Zipfは、標題“Human Behavior and the Principles of least Effort”なる文献において、言語に対してこのことが真実であることを示した。事実、英語におけるワードの頻度は、Zipfian分布として知られるようになったことに従っている。即ち、ワードのランクとその頻度の積は近似的に一定である。従って、第2の最も共通なワードは最も多発するワードと同じ回数のおおよそ半分で現れる。これは、最も共通なワードは文献上の全てのワードの全出現において大きな端数を備えることを意味する。例えば、Marcus他による“Building a Large Annotated Corpus of English:The Penn Treebank, Computational Linguistics, Vol.19, No.2, pp.313-330(199#)”に記載されたツリーバンク(treebank)プロジェクトの一部として集められたウオールストリートジャナール(Wall Street Journal)のデータにおいて、“,”,“the”,“.”,“of”,“to”,“a”,“and”,“in”,“'s”,“is”及び“that”の最初の10「ワード」は文献全体のワードの25%より僅かに多い。100個の最も多発するワードは文献全体のワードの48.1%であり、さらに、500個の最も多発するワードは63.6%である。これは、残りの80901ワードは文献全体のワードの残り37.4%であることを意味する。従って、上から500ワードに見られる平均ワードは上から500ワードに見られない平均ワードより以上の頻度のおおよそ275倍である。
従って、従来技術にて記載されたLempel-Ziv圧縮技術を、この観察の利点をとり小さな文献の重要な圧縮と同様に、大きな文献のさらなる圧縮を可能にするように、モデファイすることが望まれている。
発明の概要
本発明は従来技術におけるLempel-Zivテキスト圧縮技術を拡張するものである。特に、本発明は圧縮辞書及び/又は圧縮ウインドウを提供する。圧縮ウインドウには統計的に重要な幾つかのワードを含み、もし圧縮ソフトウェアが、圧縮されるべき文献における極端に共通なワード、文字列及びフレーズのリストを再学習する必要があったならば、それより速く、その重要な幾つかのワードは、文献内においてほぼ確実に達成されるべき圧縮を可能にする。例えば、LZ78に基づく圧縮技術を使用するときに、単一のキャラクタにより以前のエントリを拡張することによりエントリが圧縮辞書に加えられ、本発明では、極端に多発するワードが圧縮辞書に入力される以前に、その極端に多発するワードの幾つかの繰り返しをとる必要を無くさせる。これはまた本発明に従って使用された圧縮辞書は、プリフィックスがそれ自身で多発でなければ初期に辞書に存在する長く、多発するワードのプリフィックスを必然的に含まない。稀なるプリフィックスは僅かに圧縮処理を助け、LZ78における主たる利点は長いワードを圧縮辞書に入力することを可能にし、本発明の技術を使用する際に不必要なステップでは、より長い多発ワードは最初から辞書内にある。辞書から稀なプリフィックスを除外することは、他のより有用なフレーズのためにスペースを残すことになる。
一方、最も極端に多発するワードは短く、本発明の発明者等は、圧縮されたテキストの形式の知識は、前もって満たされたプレフィル辞書から大きな利点を引き出すことを認識している。もし、例えば、科学的文献のテキストが圧縮されると、同様なテキストの例が、圧縮されたテキスト形式のプロフィールを得るために使用される。科学的文献のテキストにおいては、幾つかの長いフレーズが極端に共通化されている。これらのフレーズは圧縮ソフトウェアにより学習され、それらに対する最初の参照が圧縮されたデータにおいて作られた時に使用される。例えば、もし長さ10のワード又はフレーズが共通であったならば、そのワードの最初の出現は1つの辞書参照を使用してエンコードされ、従来のLZ78のもとでは、このようなエンコードはワードの第11番目より後まで可能ではない。辞書は、頻度の高いワード又はフレーズの文脈の有用なもの以外のものであるとの理由で、このようなサブ列が圧縮過程の間に独立に加えられることがなければ、LZ78の場合であるとして頻度の高いワード又はフレーズのサブ列を含むことから防がれる。
コンピュータプログラミング言語でのテキストを圧縮するときは、本発明者は、圧縮の開始におけるゲインに潜在的に等しいかそれ以上であることを認識している。例えば、プログラミング言語である、C言語は言語の構成を示すワードの数が少ない。一方、ユーザは、変数及び関数を作成することにより多発するワードのリストに加えており、全てのCプログラムはこのワードの基本的なセット中のサブセットを使用する。その結果、圧縮の開始に先立って辞書内にこれらのワードを持つことは、特に小さなファイルに対してより良い圧縮を結果的に生じる。
従って、人間の言語におけるワードの頻度分布及びデータの他の分類の利点を得るために、本発明者は、プレフィル辞書に統計的に重要なワード及び圧縮が生じる全てのアルファベットを併合するために、標準的なLempel-Ziv圧縮アルゴリズムのモデファイされたものを提案する。ところで、重要なワードで辞書を満たす処理は種々の方法のうちのいずれかで扱われる。1つの可能性は、頻繁に使用されるワードのリストを作成するために圧縮ソフトウェアのユーザに対してである。この処理は多くの環境において不満足なものであるから、自動処理が本発明に従って好適に使用される。しかしながら、付加的なプレフィル圧縮辞書は所望の圧縮ソフトウェアのユーザにより作成される。
一方、幾つかのプレフィル圧縮辞書が圧縮されるべき文書全体の小部分集合における圧縮過程の開始において自動的にテストされ、この部分集合における最も高い圧縮を達成する辞書が文書全体を圧縮するために選択される。勿論、ユーザは希望する特定の圧縮辞書を選択する。好ましくは圧縮のために使用されたプレフィル辞書の識別が圧縮データに格納され、その結果、伸長ソフトウェアはどのプレフィル辞書を伸長の間に使用するかを識別する。
同じプレフィル辞書は、圧縮時間における圧縮装置及び伸長時間における伸長装置の両方を利用しなければならない。1つの装置から他の装置にこのような辞書を通信ネットワーク上で送出することが可能であり、必要に応じて、適切な辞書を利用させることも可能である。例えば、複数のプレフィルデータ圧縮辞書は通信サーバ上に格納され、その結果、サーバ間で共有するテキストは本発明の技術を使用して圧縮/伸長される。また、プレフィルデータ圧縮辞書は好ましくはテキストデータの種々のジャンルについて作成されかつ階層的に格納され、その結果、最適なプレフィルデータ圧縮辞書が伝送されるべきデータについて選択される。記憶空間を節約するために、複数のプレフィルデータ圧縮辞書の間でのいずれか共通エントリが各サーバ上で一度だけ格納される必要がある。一方、特定の文献を圧縮するために使用されるプレフィルデータ圧縮辞書は、他の圧縮の間に構成されるデータ特定辞書である。この方法で、複数の文献の圧縮は反復的であり、単一のオリジナルプレフィルデータ圧縮辞書に基づくものである。
当業者にて明らかなように、本発明の技術はLempel-Ziv圧縮アルゴリズムの変形版に関連して使用される。
【図面の簡単な説明】
本発明の上述した及び他の目的と利点は、以下に記載しかつ添付図面に示す本発明の好適な例示的な実施形態でより明らかになる。
図1(A)及び1(B)は、ともに従来技術としてのLZ77テキスト圧縮の例として提供する。
図2は、従来技術としてのLZ78テキスト圧縮の例である。
図3は、従来技術としてのLZMWテキスト圧縮の例である。
図4は、本発明によりモデファイされたLempel-Ziv圧縮技術を実現するサンプルハードウェア構成を例示する。
図5は、本発明により作成された圧縮データの使用のオプションを例示する。
図6は、本発明による辞書作成過程のフローチャートを例示し、辞書へのエントリについての選択されたシーケンスは圧縮を最大化するシーケンスである。
図7は、本発明の技術に従って、1つ又はそれ以上のプレフィル辞書を使用するLZ78圧縮システムの好適な実施形態を例示する。
図8は、本発明によりモデファイされたLZ78圧縮技術を例示するフローチャートである。
図9は、本発明の技術に従って、1つ又はそれ以上のプレフィル辞書を使用するLZ78伸長システムの好適な実施形態を例示する。
図10は、本発明によりモデファイされたLZ78伸長技術を例示するフローチャートである。
図11は、本発明のモデファイされたLZ78を使用するテキスト圧縮の例である。
図12は、本発明の混成LZ77/LZ78圧縮技術を例示するフローチャートである。
図13は、本発明の混成LZ77/LZ78伸長技術を例示するフローチャートである。
図14は、本発明による混成LZ77/LZ78技術の組み合わせを使用するテキスト圧縮の例である。
目下の好適な実施例の詳細な説明
本発明は、図4〜14を参照して以下に詳細に説明されるであろう。当業者は、ここで与えられる記述は説明の目的だけであることを理解し、本発明の範囲を限定することを意図してはいない。従って、発明の範囲は、添付された請求項の範囲によってのみ限定される。
本発明によるLempel-Zivアルゴリズムの拡張は、テキスト圧縮文献だけでなく特許文献に記述されているLempel-Ziv圧縮技術の周知の変形版の全部と関連して使用され得る。しかしながら、目下の好適な実施例において、本発明は、LZ77またはLZ78圧縮技術の修正版、もしくは、それ自体LZ77またはLZ78技術の修正版または拡張版であるLempel-Ziv変形版の修正版として使用される。本発明によるLempel-Zivアルゴリズムの拡張版は、好適には、ソフトウエア圧縮パッケージの一部として、または、市販のワードプロセッシングパッケージのようなデータ圧縮から利益を得る既存のソフトウエアパッケージと関連して使用されるモジュールとして実行される。1例であるシステム構成は、図4に示されている。
本発明は、好適には、ユーザのコンピュータ1のプロセッサを制御するための命令を含むソフトウエアとして実行される。好適な実施例において、Lempel-Ziv圧縮アルゴリズムを実行するソフトウエアの実行形式は、コンピュータ1のプロセッサ(CPU)3によって読み取り可能なハードディスク2のような固定されたプログラム格納装置上に格納され、それによって、Lempel-Ziv圧縮アルゴリズムを実行するためにその上に記憶される命令のプログラムは、所定のデータ圧縮を実行するためにプロセッサ3によって実行可能である。図4に示すように、CPU3は、Lempel-Ziv圧縮アルゴリズムを実行している間データを格納するためのRAM4を含んでいる。好適な実施例において、圧縮されるべきデータは、フロッピーディスク5、光ディスク5’またはCD ROM5”のようなコンピュータが読み取り可能なメディア上のディジタル形式で提供されるか、あるいは、モデム6を介して受信され、RAM4中に転送される。もちろん、データは、RAM4中に転送される前にコンピュータのハードディスク2上に記憶されてもよく、ネットワーク接続を介して直接提供されてもよい。ユーザからコンピュータ1に入力されるデータはキーボード7および/またはマウスによって提供され、関連するグラフィック画像はコンピュータビデオディスプレイ9上に表示される。
本発明によれば、プレフィル圧縮辞書が、Lempel-Ziv圧縮アルゴリズムを実行するソフトウエアの実行形式とともにハードディスク2上に格納され、Lempel-Zivデータ圧縮アルゴリズムの実行中はCPU3のRAM4中に転送される。圧縮されるべきデータは、圧縮される前にハードディスク上のファイルとして格納され、局所的に再格納され、または圧縮後に送出されてもよい。換言すると、データ圧縮が局所的な格納空間を厳格に節約するために実行されるならば、圧縮処理の結果はハードディスク2または他のローカルメモリに記録される。代替例として、入力データおよびプレフィル圧縮辞書は、フロッピーディスク5、光ディスク5’またはCD ROM5”のようなコンピュータが読み取り可能なメディア上から提供され、モデム6を介して受信され、あるいは、ネットワーク接続を介して直接提供されてもよい。一方、データ圧縮が(例えば、モデム6を介した)ポイント・ポイント間接続を介する一層高速のデータ送出を許容するために実行されるならば、CPU2はモデム6あるいは他の送出装置に接続され、圧縮されたデータはこの送出装置を介して送出される。さらに、圧縮されたデータは元のコンピュータが読み取り可能なメディア(例えば、フロッピーディスク5、光ディスク5’またはCD ROM5”)に戻されてもよい。
従って、本発明による圧縮アルゴリズムに実行中は、RAM4は、典型的には実行可能なコード、1またはそれ以上のプレフィル圧縮辞書、および、ハードディスク2、フロッピーディスク5、光ディスク5’またはCD ROM5”のような他の記憶要素、もしくはモデム接続からの入力データを受信し、圧縮されたデータは、ハードディスク2上、もしくはフロッピーディスク5、光ディスク5’またはCD ROM5”のような他の記憶要素上に再格納され、格納および/または伸長のために他のコンピュータにモデム6を介して送出される。さらに、LZ78アルゴリズム変形版が使用されたときに、RAM4はLZ78アルゴリズムおよびその変形版の動作中に従来開発された形式のデータ特定辞書のために空間を配分することが望ましい。
図5は、本発明によって生成された圧縮されたデータの使用に対するオプションを示す。図5に示すように、圧縮されるべき入力データはステップ10で入力され、好適なLempel-Zivデータ圧縮アルゴリズム変形を使用してステップ12で圧縮され、圧縮されたデータはステップ14で一時的に格納される。ステップ16で圧縮がハードディスク2、CD ROM5”等上の局所的格納空間を節約するために実行されることが決定されたならば、圧縮されたデータファイルはステップ18で局所的に格納され、このルーチンはステップ20で終了される。しかしながら、入力データが他のコンピュータへの送出をスピードアップするために圧縮されるならば、ステップ22で圧縮されたデータはモデム6のようなデータ送信装置に移され、ステップ24で新しい場所に送出される。そして、送出された圧縮データはステップ26で伸長され、ステップ28で元の伸長された形式で格納される。そして、このルーチンはステップ20で終了される。以下に記述されるように、圧縮されたデータを伸長するステップ26の間に、同じプレフィル圧縮辞書が受け側において使用されるように、圧縮されたデータと共にプレフィル圧縮辞書を送出すること、または、少なくとも圧縮に使用された辞書を識別することが必要であってもよい。もちろん、受信された圧縮データは直ちに伸長される必要はないが、それが必要になるまで受信者で圧縮された形式で格納されてもよい。
Lempel-Zivアルゴリズムにとって重要なワードで圧縮辞書をプレフィルする処理は、本発明による複数の方法のいずれによっても処理される。1つの可能性は、圧縮ソフトウエアのユーザが、しばしば使用されるワードのリストを作成することである。この処理は多くの環境において望ましくはないので、本発明においては自動処理が使用されることが望ましい。特許4,386,416におけるように、このような自動処理に対する1つの可能性は、プレフィル圧縮辞書を、一般的にワードとして参照されるもの、即ち、空白、タブまたは句読点によって範囲が定められたキャラクタのシーケンスに制限することである。しかしながら、最も多発する種々の長さのキャラクタのシーケンスを決定するために、統計がテキストの代表的なサンプルから収集されることが望ましい。各長さの辞書エントリの数は、特定の長さのエントリの使用(即ち、辞書のエントリの長さによっては変わらず、むしろ、辞書の大きさから決定される固定量である辞書エントリに対するリファレンスを送出するために要求されるビット数より少ない特定長の列を復号するために元来要求されるビット数)から結果として生じる圧縮量および使用されるテキストのサンプルの中のそのシーケンスの発見される頻度の関数によって決定され得る。
例えば、圧縮を実行するときの辞書参照が12ビット(即ち、辞書が高々212または4096のエントリを含む)と仮定し、また、ASCIIキャラクタセットの7ビット符号化を仮定すると、10キャラクタのシーケンスは圧縮なしで格納空間70ビットが必要であり、9キャラクタのシーケンスは圧縮なしで格納空間63ビットが必要である。頻度統計が導き出されるテキストの例の中で、特定長の10シーケンスが60回発生したと仮定すると、そのシーケンスが辞書の中にあれば、結果される節約は60*70=4200(生データの送出コスト)以下の60*12=720(ポインタの送出コスト)であり、3480ビットの節約となる。長さ9の列がより頻繁に、65回発生したと仮定すると、辞書中の長さ9のシーケンスの節約コストは(65*63)−(65*12)=3315の節約となる。従って、長さ10のシーケンスは長さ9のシーケンスよりも辞書のエントリとして望ましい。
プレフィル辞書の内容は、以下のように効率的に選択されてよい。プレフィル辞書がそれに基づいて学習される文献のすべてのテキストは、テキストのサブシーケンスのすべてが容易に識別されることを許容するデータ構造に中に転送されるべきである。一般的に、最大長は、計算コストがあまりに高くなることを防止するために辞書中の列に対して選択されることが必要である。10または15キャラクタの長さは多分充分であろうが、要すれば適当な最大長は経験的に決定されてもよい。しかしながら、本発明のアルゴリズムの設計において特定される適当な最大長は存在しないので、最大長の選択は辞書を構築するソフトウエアのユーザに任される。従って、選択された最大長は最適な圧縮をもたらさないかもしれない。これは圧縮とプレフィル辞書の生成コストの間にトレードオフが存在するからであり、辞書を構築するソフトウエアのユーザは、彼または彼女のコンピュータの合理的な時間内でプレフィル辞書が構築されることを許容する最大長を選択しなければならない。
各ノード(node)が1つのキャラクタ列およびカウントを含むツリーデータ構造は、頻繁に発生する列を識別するために使用される。このツリーのルート(root)は空列およびコーパス(corpus)中のキャラクタの合計数を含んでいる。各子ノード(daughter node)は、ツリーのルートからカレントノードに至る経路上のノードによって含まれるキャラクタのすべてを連結することによって生成される列をイクステンドするであろう。このように、特定長までのキャラクタシーケンスのすべては選択された最大長より深くないツリーの中に格納され得る。このツリーは、ツリーの深さの能力を上昇させるアルファベットの大きさを番号付けするツリーのリーフ(leaves)と共に非常に大きく成育し得る。しかしながら、データがまばらであるために、ツリーは実際上はより小であるべきである。当該分野の技術者にとって好ましいように、データは人間の言語の特性の結果としてまばらであり、従って、言語は可能な綴り(n-grams)のすべてを含まず、あるいは少なくとも頻繁には含まない。例えば、文字列“zqwxv”は経験的にごくまれであり、もしデータが英文の中にある場合にはデータ列中に出現しにくい。
一旦ツリーデータが満たされると、上に概説されたコスト節約公式を最大にするシーケンスが識別されるであろう。識別されたシーケンスのすべてのシーケンスは、データ構造中に辞書中に入れるために選択されたシーケンスの発生回数を減算することによって更新されるそれらのカウントを有していることが必要であるので、重複列は処理される。これは例によって図示されてもよい。データ中に10回発生するシーケンス“ABC”が辞書見出し語として選択されたとする。するとツリー中の“AB”のノードに関連するカウントは、“BC”に対するカウント、“A”に対するカウント、“B”に対するカウント、および“C”に対するカウントと同様に10減算されるであろう。シーケンス“ABC”それ自体に関連するノードでさえも10減算されるので、それは辞書からおよび辞書エントリとしての将来の考慮から削除される。
図6は本発明の望ましい実施例に従った辞書生成処理のフローチャートを例示するが、辞書へのエントリに対して選択されたシーケンスは圧縮を最大にするシーケンスである。図6に描かれているように、プレフィル圧縮辞書はステップ30においてサンプル中の特定のキャラクタシーケンスの発生数(頻度統計)を算出することによってテキストから生成され、そして、ステップ32において固定された辞書サイズ、従って、固定された辞書エントリポンタ長が与えられる各キャラクタシーケンスの圧縮を決定する。テキストサンプルは、圧縮されるべきテキストの一部、同等の文献、あるいは同一ジャンルの同等の文献の集積であるかもしれない。上の例のように、圧縮は、特定シーケンスの未符号化長と辞書のエントリポインタ長との差が乗算されたステップ30で決定されたような特定シーケンスの発生数として算出される。従って、各キャラクタシーケンスに対する結果としての圧縮は、どのシーケンスが圧縮を最大とするかを決定するために使用される。ステップ34において、圧縮を最大とするキャラクタシーケンスが選択され、圧縮辞書に加えられる。必要があるので、データツリー構造中のカウントは、上述のように更新される。そして、そのキャラクタシーケンス自身のキャラクタカウントも含んで、ステップ34において圧縮辞書に加えられたばかりのキャラクタシーケンスの全サブ列に対するキャラクタカウントは、ステップ36で修正される。列自体のキャラクタカウントをこのようにモデファイすることによって、後の同一列の圧縮辞書への包含が回避される。ステップ38で圧縮辞書が満杯でないと判断されたならば、最大圧縮をもたらすこれらのシーケンスの選択処理は、ステップ38において圧縮辞書が最大圧縮をもたらすこれらのシーケンスで満杯であると判断されるまで継続する。そして、ルーチンはステップ40で終了する。もちろん、このようにして生成された圧縮辞書は、一般的に、本質的な圧縮をもたらすのに十分な頻度で発生するより長いシーケンスはもちろん極めて頻繁に発生する短いシーケンスも含んでいる。
辞書のためのアドレス空間は分割されることが望ましく、そして、どの辞書が使用されているかを示すフラグは表立って送付される必要はまったくない。アドレス空間は、プレフィル辞書と従来のデータ定義あるいはとにかく圧縮辞書の製作者によって適合していると見做される適応辞書との間で分割され得る。また、結合された圧縮辞書の全体のサイズは、圧縮辞書の製作者によって決定され得る。しかしながら、辞書エントリ番号それ自体はバイナリ表現で符号化されるので、サイズは2の偶数乗となるであろう。
当業者は、圧縮されていないテキストのより長い代表的なサンプルが、必然的にそれぞれがそれ自身の専門用語と統計的性質を有する異なるジャンルのテキストとなる文献を含むことを理解するであろう。従って、所定のジャンルの文献は、そのジャンルを特定するより小さいテキストサンプルを構成する。このようなそれぞれのサンプルは、そのジャンル向けの別個のプレフィル圧縮辞書を生成するために使用されるかもしれない。従って、圧縮辞書を生成するための上述の技術または他の技術のいかなる結合も、英語テキスト、仏語テキスト、Cで記述されたコンピュータプログラム、パスカルで記述されたコンピュータプログラム、データベースファイル、画像等のようなデータのいくついかの異なった形式あるいはジャンルに対して適用され得る。いったんデータの各形式に対して最も多発する“ワード”が決定されると、データの各形式に対する辞書が生成され得る。従って、初期の空辞書に対して、新しい“ワード”が追加されるであろうこの辞書は、従来の技術を使用してLempel-Ziv圧縮を実行するために使用されるであろう。例えば、英語新聞テキストが圧縮された場合は、辞書は新聞記事のサンプル中に見出される最も多発する英字シーケンス、ワード、および/またはフレーズによってプレフィルされるであろう。
特定のジャンルの文献を圧縮するために、圧縮コンピュータは、まず、自動手段(例えば、キーワードまたはクラスタ化法)によってこの文献がどのジャンルに最も近いかを識別し、そのジャンルに適したプレフィル圧縮辞書を選択する。従って、選択されたプレフィル圧縮辞書を識別する情報は、圧縮されたデータファイルに追加される。伸長時は、受信されたデータの伸長時にどのプレフィル辞書を使用するかを決定するために、伸長コンピュータは追加された情報を調べる。
この方法を望み通りに動作させるために、サンプル文献の集積は、最初に複数のジャンルに区分されなければならない。これは、いくつかの方法のどの1つによってなされてもよい。例えば、1人あるいは複数人が客観的あるいは主観的判断基準に基づいて相互に区分を決定してもよい。代わりに、コンピュータが、“スペイン語テキスド”あるいは“コンパイルされたコンピュータプログラム”のような特定のジャンル中の関係を示す語あるいは統計的なつづりの正しいパターンを自動的に走査してもよい。さらに、サンプル文献の集積に対して何も知られていない場合には、文学において公知のデータクラスタ化方法を使用して、集積は合理的なジャンル群に自動的に区分されてもよい。
このようにして、必要に応じて、付加的なプレフィル辞書は、圧縮ソフトウエアのユーザによって生成され得る。共にテキストのたの形式中には普通見出されない語の頻繁な使用を伴うコンピュータマニュアルあるいはビジネス文献のようなそれ自身の標準的な語彙を有するデータをユーザが定常的に圧縮する場合には、彼または彼女は、テキストのこの形式の大きい本体に対して辞書生成処理を適用し、文献のこの形式の使用に対する特注辞書を生成することが可能である。明らかに、可能であるべき伸長に対して、伸長を実行するソフトウエアもまたこの辞書にアクセスしなければならない。同様に、データが保存目的に対しては圧縮されないが、オンライン送出のために圧縮される場合には、圧縮されたデータの受け側はこの特注の辞書に対するアクセスを有しなければならない。従って、それが多数の辞書の配付および格納を要求し、圧縮目的に対するより適当な辞書の使用という付加的な利益を削除、または少なくとも低減するので、辞書生成処理は頻繁に実行されるべきではない。
圧縮処理の間に、最も高レベルの圧縮を達成するであろうプレフィル辞書は、圧縮されるべき全文献の小さいサブセットに対して圧縮を行うことによって決定され得る。換言すると、圧縮されるべきテキストのデータの最初のN文字(Nは任意の数であり、辞書の識別が異常に多大の時間を費やさないように最大値となるように事前に選択されても、文献長の割合として算出されてもよい。)は、推定プレフィル辞書のそれぞれを使用して圧縮される。各プレフィル辞書は使用した圧縮は計算され、全テキストを圧縮するために圧縮を最大とするプレフィル辞書が選択される。このように、最適の辞書が圧縮されるべき特定のテキストに対して使用され得る。さらに、彼または彼女が圧縮されるべき文献が特定のプレフィル辞書によって表される文献の種類の典型であることをおそれるならば、ユーザは手動で辞書を選択することも可能である。これはソフトウエアが種々の圧縮辞書を試すことを防止し、圧縮処理における時間の節約をもたらす。さらに、送り側が所有するプレフィル辞書の全部を所有していない他のユーザへの文献の送出を許容するために、また、遠隔サイトのソフトウエアのように使用可能な圧縮辞書の全部を認識していないソフトウエアによって後刻文献が伸長されてもよいように保存の目的の圧縮において、手動選択は必要である。
また、圧縮されるべきデータ中の文字のサブセットの圧縮過程において、完全な空データの圧縮辞書での開始が最もよい圧縮を許容すると判断された場合には、プレフィルデータ圧縮辞書はその特定データの符号化から除去されてもよい。
伸長処理の間に、圧縮の間に構築されたデータ特定辞書に対してなされたのと同一の修正が、データ特定辞書に対してなされる。このように、圧縮されたデータ中でのデータ特定辞書の参照は、データ伸長システムによって生成される再構築されたテキスト中に適当に拡張されてもよい。圧縮のために使用されたプレフィル辞書の識別子は、伸長モジュールが伸長の間で使用されるべきプレフィル辞書を識別できるように、圧縮されたデータ中に適当に記憶される。同様にデータ圧縮を実行するために使用されたLempel-Zivアルゴリズムの変形版の指示も圧縮されたデータはもちろん圧縮中に2つの辞書中のエントリを一度に流すためにどのような思想が使用されたかの指示とともに圧縮データ中に記憶される。さらに、圧縮中に含まれた辞書に対して辞書アドレス空間がどのように割り当てられたかの指示、即ち、データ特定辞書に対する開始および終了アドレスが何であるかだけでなく、圧縮で使用された1またはそれ以上のプレフィル辞書に対する開始および終了アドレスが何であるかも圧縮データとともに記憶されてもよい。また、圧縮されたデータが遠隔サイトに伝送される場合には、遠隔サイトにおける伸長を許容するために圧縮辞書を送ることが必要になるであろう。しかしながら、時間節約が辞書の伝送に必要とされる時間よりも大きくない限り、これは圧縮の目的を打ち負かしてしまうであろう。一方、時間節約が辞書伝送のコストを超えない場合でも、この辞書を使用して圧縮された他の文献が伝送されるならば、辞書の送出は賢明となるであろう。従って、圧縮されたデータが遠隔サイトに伝送されるときは、受信サイトにおいて使用可能なプレフィル辞書だけを使用することが一般的に望ましい。
しかしながら、送り側が最適のプレフィル辞書は辞書Aであると判断したが、受け側が辞書Aを有していないために代わりに辞書Bを使用して圧縮した場合は、送り側は受け側に対して、受け側は将来の使用のために辞書Aを取得することを助言するメッセージを伝送することも可能である。いったん受け側がこのようなメッセージを取得すると、受け側はついには送り側または辞書Aが使用可能な他のサーバから辞書Aを得るであろう。そして、受け側はローカルの長期もしくは中期格納装置中に辞書Aの記号複製を配置する。
別の考えでは、受け側が辞書Aを有するかどうかを考慮せずに、送り側はプレフィル辞書Aを使うデータファイルを備えてもよい。そのときは、受け側が最初にファイルを伸長するときはいつも、辞書Aの記号複製が必要となるであろう。辞書Aが受け側に現在格納されてない場合、受け側はネットワークを介して記号複製を獲得することができるであろう。そして受け側は、辞書Aの記号複製を、ファイルを伸長するために使うのに加えて将来使うときのために、長期間又は中期間格納しておく。
一方で、例えば記録保管を目的として、一度にドキュメントの多くの集まりを圧縮したいようなことが起きるかもしれない。ドキュメントを別々に圧縮するよりはむしろ、各ドキュメント内の類似性あるいは予め選択されたコーパスに対する類似性ではない、様々なドキュメント間の類似性を利用することが望まれる。換言すれば、ドキュメントのいくつかが、ある手法において互いに関係する場合、それらの多くはさらなる圧縮に利用することができる同類の列を含むであろうということである。
例えば、ドキュメントAが、普通の英語のワードを有するプレフィル辞書Dを使って、本発明により圧縮されたと仮定する。ドキュメントAの圧縮終了時では、ドキュメントAに現れる列だけではなくDからのエントリを含む拡張された辞書D’が残る。別のドキュメントBは、開始辞書として、プレフィル辞書D(あるいは辞書Dと辞書D’とのいくつかの中間物)の代わりに辞書D’を使って圧縮されてもよい。ドキュメントBがドキュメントAと全く同様である場合、この技術は優れた圧縮を提供するものであるということがわかる。
しかし、大量のドキュメントを圧縮することが望まれるような一般的な場合では、圧縮されたどのようなドキュメントBでも、伸長時に使うために開始辞書を特定化すべきである。持ち合わせのプレフィル辞書の1つを特定化してもよいし、別の圧縮ドキュメントをドキュメントAと命名し、そしてドキュメントAの伸長の結果生じる最終辞書がドキュメントBの伸長のために開始辞書として使われるということを特定化してもよい。
どのドキュメントが他のドキュメントの最終辞書に依存しているかを判定するためにクラスタ技術を使ってもよい。互いに非常に類似するようクラスタ化することによって判定されるドキュメントは互いに圧縮辞書を使って圧縮される。どのドキュメントが互いに依存するかに関する情報は、一旦依存するドキュメント全てがそれら自身伸長されるるとき伸長ソフトウェアがドキュメントを正確に伸長できるように圧縮されるとき、ドキュメントのヘッダに特定化される。
従って一般に、それぞれが高度に特定化されたタイプのテキストに対して適合されているような非常に多くの辞書を利用可能にすることによって、あるデータに対する圧縮率を改善することができる。しかし、非常に多くの辞書を格納する、そして時には送出するということに関しては費用がかかる。異なる辞書が多くの同じ列を符号化し、そうすることによって本質的な度合いで内容が重なることを認めることによってこの費用を最小化にすることができる。辞書符号化のこの特徴を利用することができるので、複数のジャンル特定テキストサンプルに対するプレフィル辞書は、ドキュメントの単一の大きなコーパスから同時に生成することができる。この例では、複数の辞書に対して特別に結合された表現は、異なるジャンル特定辞書の全てを個別に格納するのに必要であるときよりも少ない空間を占めるであろう。つまり、メモリ空間は、それぞれ各々の辞書にエントリを個別に格納するのとちがって、1度だけ複数の辞書にある列を格納することによって節約される。
当業者は、本発明が辞書の緊密さによって圧縮効率がもたらされることをある程度理解できるであろう。これを例示するために、圧縮効率及び辞書の緊密さの相対的な重要度を示すパラメータを定義することができる。パラメータが1に設定されるとき、最大圧縮効率が得られる。換言すれば、パラメータが1であるとき、専門化された辞書が各ジャンルに対して独立に作られ、各ジャンルに対する辞書は、上述のような複製の冗長な格納を取り除くために結合されるのみである。一方で、パラメータが多少減る場合は、ジャンル辞書は全部が独立して作られるわけではない。すなわち、これらはその重なりを改善するために故意に構成されるのである。パラメータが0まで幅広く減る場合、最大の重なりは、どのジャンルに対しても同じ辞書を使うことにより得られる。従ってパラメータを0に設定することにより最も小さい結合辞書を作り出すことができるが、しかしそれはジャンルに特定の特性には全く利用することができない。現在、本発明者は、多くの専門化されたジャンルが、サンプルドキュメントに対する「デューイ十進」分類法システムに対して、2つまたは3つを1度に階層的な「スーパージャンル」アナログにグループ分けされるときに、本発明の技術は最も良く稼動するであろうと考えている。このような階層的分類技術は、必要ならば、公知の自動クラスタ技術によって達成される。
本発明の好適な実施例は、LZ78の拡張として、図7〜11を参照して説明する。好適な実施例のLZ78アルゴリズムでは、図2で示されたように、圧縮処理の間拡大されるような圧縮辞書を使って、テキストは圧縮され、そうして圧縮辞書に対するリファレンスがオリジナルテキストの代わりに送出信される。しかし、従来のLZ78と違って、本発明の使用される圧縮辞書が空の列からはスタートしない。その代わりに、空の列だけではなく、上記の手法の1つで生成される1つのプリフィル辞書あるいは数個のプリフィル辞書の内容をも得るために初期化される。プリフィル辞書はまた、圧縮が実行されるアルファベットの完全な内容を得ることができる。また、圧縮辞書は、共通アドレス空間を共有する2つの別個の辞書又は、単一のより大きな辞書のどちらとしてもみなすことができるが、それは本技術の実施例の詳細による。従って、本発明の使用される技術は、付加的なエントリが加えられる空の列のみを得る従来のデータ特定辞書はもちろん、1つのプリフィル辞書あるいは数個のプリフィル辞書からでもスタートされる。しかし、LZMWにおけるように、アルファベットの全キャラクタがプリフィル辞書に加えられている場合は、データ特定辞書は空であるに違いない(なぜなら、そのイクステンションに続く空の列を送出する必要がないからである)。
プリフィル辞書空間は、同じアドレス空間を共有する2つの別個の辞書又は、圧縮開始前の1つのより大きなプリフィル辞書を形成するために連結されるあるいは連結されないような1つないしそれより多い独立のプリフィル辞書としてみなすことができる。圧縮されるべきキャラクタのシーケンスに遭遇するとき、1つ又は複数のプリフィル辞書内、あるいはデータ特定辞書内のどれにおいても最長一致(LM)は、ルックアップテーブル内において、又はツリーデータ構造を使って見つけることができる。この一致が一旦見つかると、辞書エントリ番号及びこのシーケンスに続くキャラクタが送出される。そして、まさに送出された辞書エントリ及び送出されたキャラクタの連なりは、データ特定辞書に加えられる。この処理は、圧縮されるべきデータが消滅するまで繰り返される。
LZ78については、プリフィル辞書は固定された大きさを有するが、その大きさは、圧縮をもたらすために送出される必要のある辞書エントリ番号の大きさを決定する。一旦プリフィル辞書が満杯になると、さらなるエントリは認められない。しかし、文学において概説(outlined)される辞書操作(dictionary handling)に対してあらゆる修正版を使うことができる。例えば、least recently usedアルゴリズムは、新しいエントリが加えられる必要のあるとき、辞書エントリを処分するのに使うことができる。代替的には、実績を監視することができ、圧縮比があるしきい値以下に落ちるか又は、圧縮されているデータの先行する部分に対して達成される圧縮比から逸脱するとき、データ特定辞書をリセットすることができる。
図7及び8は、本発明によるLZ78データ圧縮を実行するための好適な実施例を例示する。図7に示されるように、圧縮されるべき入力データは、LZ78データ圧縮ソフトウェアモジュール42へ提供されるが、LZ78データ圧縮ソフトウェアモジュール42は、公知のLZ78アルゴリズムの変形版のいずれを含んでもよい。上記で注目したように、辞書44は2つの個別の辞書、すなわち、従来のLZ78データ特定辞書46及びプレフィル辞書48を含むものとみなすことができ、両者は同じ共通アドレスバス50を共有する。また、複数のプリフィル辞書52は、特定の入力データに対して最も圧縮するようなプリフィル辞書を見つけるためにも使うことができる。図7のアクティブな要素全ては、一般的には、動作中CPU3(図4)によって処理するためにRAM4にもたらされる。
図8は、本発明によるLZ78データ圧縮モジュール42におけるモデファイされたLZ78圧縮技術を実現するためのソフトウェアのフローチャートである。図に示されるように、ルーチンはステップ56でスタートし、入力データストリームが空かどうかをステップ58で検査する。空である場合、全入力データは圧縮されており、ルーチンはステップ60へ進む。しかし、データストリームが空でない場合、このことから圧縮すべき入力データがより多く存在し、ステップ62において、現ポインタに続くデータシーケンスを有する最長一致(LM)がデータ特定辞書46から検索される。見つけられた最長一致は、DSLMとしてLZ78データ圧縮モジュール42に格納される。そしてステップ64において、現ポインタに続くデータシーケンスを有する最長一致(LM)がプリフィル辞書48及び/又はプリフィル辞書52から検索される。見つけられた最長一致は、PFLMとしてLZ78データ圧縮モジュール42に格納される。そして、ステップ66において、CPU3は、データ特定辞書46で見つけられた最長一致の長さが、プリフィル辞書48(及び、1つより多くのものが使われている場合は他のプリフィル辞書52)で見つけられた最長一致の長さよりも長いかどうかを判定する。DSLMの長さがPFLMの長さよりも大きい場合は、次にステップ68において最長一致がDSLMに設定され、そうでない場合は、ステップ70において最長一致がPFLMに設定される。(DSLMとPFLMとの長さが等しい場合、フラグがトラックを維持する必要があるということを避けるために同じ長さであるとき辞書の一つを簡単に割り当てることを望むことができるにもかかわらず、あるいはどの辞書が最後に使われていようとも、前入力データシーケンスに対して使われた同じ辞書を使うことができる。)
LMがステップ66〜70において一旦判定されると、ステップ72で、LZ78データ圧縮モジュール42において、入力データストリームにおいてLMに続くキャラクタが特定されイクステンション(C)として格納される。そしてステップ74において、LMの辞書エントリ番号(及びどの辞書かについて)は所望の通りに送出/格納される。同様にステップ74において、イクステンション(C)は所望の通りに送出/格納される。そしてステップ76において、イクステンション(C)は、既に満杯となるまで、最長一致(LM)に連結されてデータ特定辞書46に格納される。もちろん、従来技術における更新技術(prior art updating techniques)もまた使うことができ、そうして、例えば最も以前にアクセスされたエントリの代わりに最新のエントリをデータ特定辞書46へ挿入することができる。そしてステップ78において、入力データに対する現ポインタを、(イクステンションに対して)最長一致プラス1の長さだけ移動させる。そして制御はステップ58に戻り、圧縮処理は、データストリームが消滅して圧縮処理が完了するまで入力データの次のシーケンスに対して繰り返される。
図8の方法を費用の節約を考慮に入れてモデファイしてもよいが、この費用の節約は、LZ78あるいはLZ77におけるウィンドウ、を有するようなデータ特定辞書を使って、又はプリフィル辞書を参照してデータシーケンスを圧縮することに関係している。LZ78においては、各やり方に対する費用はおそらく同一であろうが、しかし、LZ77を本発明によるプリフィル辞書を有するよう拡張するとき、2つのやり方を使って圧縮する費用は異なり、両方の技術を使って圧縮が可能である場合には一方の方法よりももう一方の方法を選べるので有利である。
本発明によるLZ78圧縮データシーケンスの伸長は、従来のLZ78伸長技術と実質的に同じ方法で実行される。圧縮中になされる圧縮辞書に対する全修正版は、伸長の間にも同様になされる。このことは、LZ78の場合のように多少アルゴリズムの有益性を制限する。なぜならデータの一部を伸長するということは、先行する部分をそっくりそのまま伸長することを必要とするからである。伸長を実行するとき、辞書エントリ番号及びキャラクタの組のリストを、消滅するまで1度に1組処理する。一般的に、各辞書エントリは辞書内で調べられ、その辞書エントリの示すテキストが、その辞書エントリ及びキャラクタの組におけるキャラクタに従って表示される。このやり方によって、無損失の圧縮/伸長が達成される。
図9及び10は、本発明によるLZ78データ伸長を実行するための好適な実施例を例示する。図9に示されるように、圧縮データはLZ78データ伸長ソフトウェアモジュール80へ提供され、このLZ78データ伸長ソフトウェアモジュール80は公知のLZ78アルゴリズムの変形版のいずれを含んでもよい。動作中、LZ78データ伸長モジュール80は辞書82内の入力圧縮デーダの辞書エントリを調べるが、この辞書82はプリフィル辞書84及び従来のデータ特定辞書86を有し、LMを特定する辞書エントリ番号を使う。そして、結果生じた辞書エントリは、エントリEとしてLZ78データ伸長モジュール80に格納される。そして、入力圧縮データストリームにおける辞書エントリ番号に続くキャラクタは、CとしてLZ78データ伸長モジュール80に格納される。そしてC及びEは、CPU3によって連結され、満杯になるまでデータ特定辞書86に挿入され、そして、再編成され伸長された(オリジナル)データとして出力する。連結されたデータは、圧縮中にデータ特定辞書48に挿入されたデータに対して同じ決まりを使ってデータ特定辞書86に挿入される。換言すれば、連結されたデータに割り当て又は再割り当てされた辞書コードは、割り当てられた辞書コードが圧縮中に判定されるのと同じ手法で判定される。
当業者は、辞書エントリ番号が、伸長の間、使われた圧縮の変形例に依存して異なるように割り当てられるということは理解できよう。従来のLempel-Ziv従来技術が使われる場合、割り当てられた辞書エントリ番号は、シーケンス(すなわち最初のものが0、次が1、その次が2などというように番号つけられる。)の次の1つに関連するものである。従来のLempel-Zivは辞書上であらゆる特別な機能を実行するための準備はなされていないので、辞書が満杯なとき辞書はリセットされて辞書番号が0に戻るか、あるいは辞書はさらには成長しないであろう。一方で、「least recentry used法」(LRU法)のようにより複雑なスキームが辞書を管理するために使われる場合、辞書が満たされるまで、割り当てられた辞書エントリ番号は今説明したものと同じとなろう。ちょうどその時点でLRUアルゴリズムは活動し始め、最も以前に使われた(least recently used)辞書エントリの辞書エントリ番号が割り当てられるであろう。辞書エントリ番号に以前関係していた辞書エントリは、辞書から取り除かれるであろう。
圧縮側上のプリフィル辞書48については、辞書82は、同じ共通アドレスバス88を共有する2つの個別の辞書としてみなすことができる。また、このような複数のプリフィル辞書が圧縮中に使われた場合、複数のプリフィル辞書90を、伸長の間にも使うことができる。図9のアクティブな要素全ては、一般的には、動作中CPU3(図4)によって処理するためにRAM4にもたらされる。
図10は、本発明によるモデファイされたLZ78伸長技術を実現するためのソフトウェアのフローチャートである。図に示されるように、ルーチンはステップ94でスタートし、入力圧縮データストリームが空かどうかをステップ96で検査する。空である場合、全入力データは伸長されており、ルーチンはステップ98へ進む。しかし、圧縮データストリームが空でない場合、このことから伸長すべき入力データがより多く存在し、ステップ100において、現ポインタに対応する辞書エントリは辞書エントリ番号を使って調べられる。そして、そのようにして見つけられた対応する辞書エントリは、EとしてLZ78データ伸長モジュール80に格納される。所望であれば、伸長されたデータはまたユーザに対して表示される。そしてステップ102において、現辞書エントリ番号に続く入力圧縮データストリームにおけるキャラクタは、CとしてLZ78データ伸長モジュール80に格納される。所望であれば、そのキャラクタはまたユーザに対して表示される。ステップ104において、キャラクタC及び辞書エントリEは連結され、ADDとしてLZ78データ伸長モジュール80に格納される。所望であれば、もう1回、連結された結果はまたユーザに対して表示される。そしてステップ106において、連結「ADD」は、既に満杯となるまでデータ特定辞書84へ挿入される。もちろん、従来技術における更新技術もまた使うことができ、そうして、例えば最も以前にもアクセスされた(least recently accessed)エントリの代わりに最新のエントリをデータ特定辞書80へ挿入することができる。そして最後に、ステップ108において、入力データに対する現ポインタは、入力圧縮データストリーム内の次の辞書エントリ番号のスタートへ進められる。そして制御はステップ96に戻り、伸長処理は、入力圧縮データストリームが消滅するまで入力データの次のシーケンスに対して繰り返される。そして伸長処理は完了する。
図11は、図7〜10を参照して説明された本発明のLZ78の実施例を使ったテキスト圧縮の例である。図2の例のように、アルファベットは3つのキャラクタ(A,B,C)だけを含むと仮定し、圧縮されるべきデータは、説明目的のために図2と同じである。図に示されるように、圧縮辞書は、初期において、多発シーケンス分(frequent sequences)のほかにアルファベットのキャラクタも含むが、ここで多発シーケンスは、テキストのサンプルから、以前格納された同様のテキストから、ユーザ入力から、あるいは当業者にとっては明らかであるような技術に統計的に基づく他のあらゆるものから決定されたものである。圧縮がスタートするキャラクタに対するポインタは、圧縮されているテキストのシーケンス内の最初のキャラクタに位置する。図2の例に示されるように、辞書内の最長一致が見つけられ、このエントリに対するポインタは、圧縮アルゴリズムの適用に応じて局所的に送出又は格納される。辞書内の最長一致は、プリフィル辞書に挿入されるべき列を特定するために上述のタイプのツリー構造と一致する辞書エントリ全てを含むようなツリー構造を作ることによって見つけられる。別の可能性としては、ルックアップテーブル又はハッシング機能を使う。そして、いずれにしても、ポインタは送出されるキャラクタの数によって移動させられる。
図11に示されるように、辞書は以前送出された2つの辞書エントリの連結を含むように更新される。最初のステップでは、前の送出は存在せず、よって辞書には何も加えらされない。処理サイクルによる第2の反復では、最も大きい一致が見つけられ、その辞書エントリ番号は送出され、ポインタはキャラクタの適当な数によって移動させられ、送出された2つの前辞書エントリの連結されたものは、新しいエントリとして辞書に加えられる。この場合では「A,B,C」が加えれる。そしてこの処理は第3のステップで繰り返され、新しいエントリ「ABB」は、辞書に加えれる。この処理は圧縮されるべきデータが消滅するまで繰り返されるが、この例では、同じ入力シーケンスに対して、図2の従来技術のLZ78技術において使われる6ステップに対して3つだけのステップですむ。それゆえ、本発明による多発して発生するシーケンスを含むプリフィル辞書は、従来のLZ78圧縮アルゴリズムの符号化/複合化の効率を実質的に改善することができる。
もちろん、当業者によって理解されるように、プレフィル辞書も、また、LZ77データ圧縮変形版の圧縮性能を改良する。しかしながら、本発明のプレフィル辞書がLZ77データ圧縮変形版とともにどのように使用されうるのかを理解するために、上記のLZ77圧縮技術とLZ78圧縮技術との違いを思い出さなければならない。図1について説明されたように、LZ77技術は、辞書を明瞭に構築するというよりむしろ、LZ78と同様に、ドキュメントの既に圧縮された部分の一部からなるテキストの「ウィンドウ」を保持する。各ステップにおいて、本システムは、圧縮されるべく残っているテキストのプレフィックスとして現れるウィンドウの最長のサブ列を識別する。本システムは、そのウィンドウへのポインタを送出することによってこのプレフィックスを符号化するが、そのポインタは、プレフィックスのコピーが始まるウィンドウ内位置又はプレフィックスのコピーが終わるウィンドウ内位置のいずれかをユーザの選択にて指定するものであり、次いで、本システムは、そのプレフィックスの長さとおそらくはイクステンションとを送出する。しかしながら、選択されたプレフィックスが空であれば、本システムは、エスケープコードとそれに続く圧縮されるべき次の文字キャラクタとを送出する。そのウィンドウは、新しく圧縮されたテキストを含むために更新され、圧縮は、そのプレフィックスの直後に続くドキュメントの部分について継続する。LZ77技術は、送出される各プレフィックスとともに文字キャラクタが送出されることを必要としない。結果として、LZ77技術の変形版は、LZ78技術よりも一般に効率的であり、gzip及びPKZIPのような多くの一般的な圧縮プログラムにおいて使用されている。
本発明によるプレフィル辞書は、数多くの方法のいずれにおけるLZ77技術に組み込むことができる。まず、最も単純には、多くの共通の列を含む標準テキストを作成することができ、このテキストは、任意のドキュメントの圧縮を通してウィンドウにプリペンド(prepend)された状態に維持されることができる。そのプリペンドされたテキストが、実際に圧縮され送出されるのではなく、ウィンドウ内にあるため、圧縮ソフトウェアは、最近圧縮され送出されたテキストを参照するのと同じ方法でそれを参照することができる、ということに留意すべきである。かくして、圧縮処理の初めにおいては、ウィンドウとして働くべく利用可能なテキストが他にないときには、圧縮アルゴリズムは、共通列を含むテキストへのポインタを依然として送出することができる。このことは、特に、多くの文字キャラクタ又はウィンドウ内に十分なテキストがないことによる他の短い列をLZ77技術が送出しなければならない、圧縮の始めにおいて、圧縮性能を改善する。圧縮が進むと、共通列を含むテキストは、随時、徐々に短くなって、ドキュメントからテキスト用ウィンドウ内の多くのルームが圧縮されるのを可能にする。圧縮されたテキストに対するプレフィル辞書テキストの最適比は、経験的に決定されることができ、一つのドキュメントジャンルから他のものへと一般に変化する。LZ77においては、固定サイズのウィンドウのテキストが、かかる圧縮のために一般に使用される。
他の、好適ではあるが、より複雑な技術は、圧縮アルゴリズムによって使用されるポインタのセットが、おそらく不規則に、2つのクラスに分割されるものとして扱うことを必要とする。第1のクラスのポインタは、ウィンドウ内の位置を指し、標準のLZ77におけるように、ドキュメントの既に圧縮された部分の一部からなる。第2のクラスのポインタは、頻繁に発生する列を列記する辞書におけるエントリを指す。この混成の方法は、実質的には、LZ77及びLZ78の性質のいくつかを結合する。各ステップにおいて、本システムは、2つの方法のうちの1つによって、ドキュメントの残り部分のプリフィックスを選択し、符号化し及び送出する。LZ77方法に続いて、ウィンドウ内のサブ列へのポインタ及びそれに続くこのサブ列の長さを送出してもよく、又は、必要なときには、エスケープコード及びそれに続く文字キャラクタを送出してもよい。あるいは、LZ78方法に続いて、圧縮されるべく残っているテキストのプリフィックスである最長辞書エントリへのポインタを送出してもよい。後者の方法は、かかる辞書エントリが存在する任意のステップにおいて、その方法が、LZ77方法がするよりもそのステップでより良好な圧縮(テキスト長に対する送出ビットの比によって測定される)を達成するならば、使用される。LZ77に対するこの混成方法の一つの利点は、送出される必要のある長さがなく、各辞書エントリは、辞書に永久的に格納される(又は記録される)固定長を有する。この混成の方法は、また、辞書エントリに文字キャラクタが伴わないということにおいて、LZ78よりも効率的である。
図12は、かかる混成LZ77/LZ78圧縮技術を実現するソフトウェアのフローチャートである。現在好適な実施例においては、かかるシステムは、図7のLZ78データ圧縮モジュールと、図9のLZ78データ伸長モジュール80とをそれぞれモデファイし、LZ77圧縮及び伸長ソフトウェアを含むようにすることにより、実現される。図示のように、結果としての混成ルーチンは、ステップ110でスタートし、入力データストリームが空かどうかをステップ112でチェックする。もしも空であれば、全ての入力データが圧縮され、当該ルーチンはステップ114で終了する。しかしながら、データストリームが空でなければ、従って圧縮すべき入力データがあれば、現ポインタに続くデータシーケンスを有する最長一致(LM)についてステップ116でプレフィル辞書が検索される。発見された最長一致(及び付加的にキャラクタイクステンションEXT)は、LZ77/LZ78データ圧縮モジュールにPDLM(及びEXT)として格納される。現ポインタに続くデータシーケンスを有する最長一致(LM)を求めて、テキストの前のウィンドウが、次いで、検索される。発見された最長一致は、LZ77/LZ78データ圧縮モジュールにWLMとして格納される。ステップ120では、CPU3は、次いで、ステップ118にて一致が発見されたかどうかについて判定し、もしそうであれば、圧縮(EXT)されるべきテキスト内の最長一致WLMに続くキャラクタが、ステップ122において(もしもイクステンションオプションが要望されているならば)識別される。他方、WLMにおいて一致が発見されなかったとステップ120にてCPU3が判定するならば、ステップ124では、現ポインタによって指定された一つのキャラクタ文字EXTを識別するためにポインタ及び長さの代わりにエスケープコードが使用される。
ステップ126では、辞書エントリ番号としてPDLMを送出することのコストが、ポインタ及び長さとしてWLMを、並びに付加的に一つのキャラクタイクステンションEXTを、あるいはリテラルとして送出することのコストと比較される。詳細には、ステップ126において、圧縮されていないデータを送出するのに比較してどの技術が最も節約するかが判定される。一般的には、これは、各技術に関して圧縮比を計算することによって達成される。次いで、ステップ126の結果に基づいて、PDLM及びWLMの最も多くを節約する技術が、ステップ128において(EXTとともに又はEXTなしに)要求されるように送出/格納される。最後に、ステップ130では、入力データへの現ポインタが、(イクステンションEXTが使用されるならば)最長一致の長さ又は最長一致に1を加えた長さだけ移動せしめられる。次いで、制御は、ステップ112に戻り、現ポインタでの入力データの次のシーケンスのために圧縮が繰り返され、やがては、データストリームが使い果たされ、圧縮処理が完了する。
図13は、本発明による混成LZ77/LZ78伸長技術を実現するソフトウェアのフローチャートである。図示のように、本ルーチンは、ステップ132でスタートし、ステップ134で入力圧縮データストリームが空かどうかをチェックする。もしも空であれば、全ての入力データが伸長せしめられ、本ルーチンはステップ136で終了する。しかしながら、圧縮データストリームが空でなく、従って伸長すべき入力データが存在するならば、それがPDLMであるか又はWLMであるかを判定するために、現ポインタに対応するエントリがステップ138でチェックされる。例えば、リファレンスがPDLMリファレンスであるか又はWLMリファレンスであるかは、アドレッシングされた空間がどのように分割されているかをチェックすることによって決定されうる。圧縮データストリーム内のエントリがPDLMであれば、図10に関して説明されたLZ78技術が続く。特に、現ポインタに対応するプレフィル辞書内の辞書エントリが、辞書エントリ番号を使用してステップ140において参照される。そのようにして発見された対応する辞書エントリは、次いで、EとしてLZ77/LZ78伸長モジュールに格納される。所望ならば、伸長せしめられたデータは、また、ユーザに対して表示される。ステップ142では、付加的なイクステンションEXTが(アルゴリズムを走行せしめるのに先立って決定されて)送られたならば、現辞書エントリ番号に続く入力圧縮データストリーム内のキャラクタが、次いで、LZ77/LZ78伸長モジュールにCとして格納される。要求されるならば、そのキャラクタは、また、ユーザに対して表示される。ステップ144では、キャラクタC及び辞書エントリEが、連結され、そしてLZ77/LZ78データ伸長モジュールにADDとして格納される。所望ならば、もう一度、結果の連結もユーザに対して表示される。
他方、圧縮データストリームがWLMであるとステップ138で判定されるならば、そのポインタでのエントリが、ステップ146で、そのエントリによって指定されるテキストの前のウィンドウにおけるエントリを参照するために使用される。その値は、LZ77/LZ78伸長モジュールにEとして格納される。要求されるならば、伸長データも、また、ユーザに対して表示される。ステップ148では、付加的なイクステンションEXTが(アルゴリズムを走行せしめるのに先立って決定されて)送られたならば、現エントリに続く入力圧縮データストリームが、次いで、LZ77/LZ78伸長モジュールにCとして格納される。所望ならば、そのキャラクタも、また、ユーザに対して表示される。ステップ150では、キャラクタC及び辞書エントリEが、連結され、LZ77/LZ78データ伸長モジュールにADDとして格納される。要求されるならば、もう一度、結果の連結もユーザに対して表示される。
ステップ144又はステップ150のいずれかが完了すると、入力データストリームへの現ポインタが、ステップ152において、データストリーム内の次のエントリの始めに進められる。次いで、制御は、ステップ134に戻り、伸長処理が入力データの次のシーケンスのために繰り返され、やがて入力圧縮データストリームが使い果たされる。そして、伸長処理は完了する。
図14は、図12及び図13の混成技法を使用するテキスト圧縮の例である。この例においては、アルファベットは7個のキャラクタ(A,B,C,D,E,F,G)を含み、圧縮されるべきデータは“ABCBDEFGABC”であると仮定される。図示のように、圧縮辞書は、初期において、多発シーケンス“ABC”及び“DEF”を含むが、これらの多発シーケンスは、上述の技術のいずれかを使用して、又は、当業者に明らかであるような、他の統計に基礎を置く技術から、決定されたものである。図14は、圧縮が達成された方法を示しており、3つのオプション、すなわちプレフィル辞書、LZ77リファレンス、及びLZ77文字がある。図14の例では、何らのキャラクタイクステンションも使用されない。圧縮の間、次の情報が文字であるか、又は辞書リファレンス若しくはLZ77リファレンスのいずれかであるかを示すために1ビットが使用される。後者の2つのオプションは、共通アドレス空間を共有するが、LZ77スタイルリファレンスが使用されるならば長さのみが使用される。
図14に示されるように、圧縮の開始においては、圧縮が始まるキャラクタへのポインタは、圧縮されているテキストのシーケンスにおける最初のキャラクタに置かれる。ステップ0では、圧縮辞書において最長一致が発見され、このエントリ(D0)へのポインタが、送出され、圧縮アルゴリズムの応用に依存して局所的に格納される。次いで、そのポインタが、送出されたキャラクタの数によって移動せしめられる。ステップ1では、“B”も“BD”も圧縮辞書内にないため、LZ77リファレンスが送出される。そのフラグは、LZ77リファレンス(2,1)が送られることを示すが、ここで、“2”は現ウィンドウ内の第2のエントリへのポインタであり、“1”は長さである。次いで、そのポインタは、ステップ2に先立って1キャラクタだけ移動せしめられる。ステップ2では、圧縮辞書内で最長一致が発見され、このエントリ(D1)へのポインタが、送出され、圧縮アルゴリズムの応用に依存して局所的に格納される。次いで、そのポインタは、ステップ3に先立って、送出されたキャラクタの数だけ移動せしめられる。ステップ3では、圧縮ウィンドウ又は圧縮辞書の中にキャラクタ“G”がないため、LZ77文字が送られる。次いで、ステップ4に先立って、ポインタが1キャラクタ移動せしめられる。ステップ4では、圧縮辞書内で最長一致が発見され、このエントリ(D0)へのポインタが、圧縮アルゴリズムの応用に依存して送出又は格納される。次いで、送出されたキャラクタの数だけポインタが移動せしめられる。ステップ4では、LZ77ポインタリファレンスよりも安いと仮定されたため、ウィンドウエントリの代わりに辞書エントリが使用された。圧縮されるべきテキストの終わりにポインタがあるため、符号化処理は完了する。
送出される文字、長さ、及びアドレスへの圧縮のいくつかの形式を適用すること、送出される必要がある文字がないように辞書又はウィンドウをシード(seed)すること等、LZ77への標準的な改良のいずれもが、LZ77圧縮技術のイクステンションである上述の実施例のいずれにも等しく適用されることができる。また、上述のように、種々の辞書(又はウィンドウにプリペンドする種々のテキスト)が、送出されるデータの種々のジャンルに対して使用されることができる。各メッセージの始めに送られる初期のコード番号は、次いで、どの辞書又はブリペンドされたテキストが使用されているか(例えば、英語散文用、コンピュータソフトウェア用、又はビジネス業務用のもの)を示し、あるいは、辞書又はブリペンドされたテキストが先に送出されたテキストから特別に導かれたことを示す特殊なコードが送出されるであろう。
本発明の技術の実現例においては、プレフィルされたデータ圧縮辞書のセットが、定期的に圧縮ドキュメントをそれらの間で交換する数多くのサーバに分配される。上述のように、それらの辞書は、送出コストを節約するために分配の前に結合されてもよい。周期的に、プレフィル辞書の新しいセットが、プレフィル辞書の古いセットを補うために分配される。その新しいセットは、新しいジャンルに関する辞書、及び用語の変化を反映する古いジャンルに関する、より最新の辞書を含むであろう。理想的には、新しい辞書は、古い辞書と実質的に重なるように構築され、それによって、全ての新しい辞書及び古い辞書に関する結合された表現は、古い辞書のみに関する結合された表現とあまり異ならない。次いで、プレフィル辞書の2つの表現間の変化を列記するファイルが、分配される。このファイルを受信すると、サーバの各々は、新しい辞書を加えるために結合された辞書表現をモーデファイする。古い辞書は、もはや、古いファイルを伸長するために必要となるか否かに依存して、結合された表現に保存されてもよいし、それから削除されてもよい。かかる技術は、特に同じジャンルのファイルをしばしば交換する2つのサーバ間で、実質的にデータ送出及び記憶コストの減少につながる。
例えば、本発明のシミュレーションが、データの全部の半分を使用して行われた。比較のために、“gzip”、“gzip”のシミュレーション、及び本発明によるプレフィル辞書を有する“gzip”のシミュレーションを使用して、当該データが圧縮された。本発明によるプレフィル辞書とともに使用されるように“gzip”がモデファイされねばならないため、一つのシミュレーションが使用された。“gzip”のシミュレーションがプレフィル辞書なしでテストされたが、これは、プレフィル辞書の追加の前に“gzip”の性能をそのシミュレーションが概算したことを単に証明するためである。次の結果が得られた。
gzipによる圧縮パーセンテージ: 50.6
シミュレーションによる圧縮パーセンテージ: 50.7
辞書を使用するシミュレーションによる圧縮パーセンテージ:62.8
当業者は、ファイルサイズにおける12パーセンテージポイントの減少が相当なものであることを評価するであろう。この例では、このことは、ほぼ25%のメモリ節約に達する。
本発明の多数の実施例及び本発明概念の多数の拡張が述べられてきたが、当業者は、本発明の新規な教え及び利益から実質的に逸脱することなく、当該例示的な実施例において多くの追加のモデファイが可能であることを容易に理解するであろう。
例えば、上記のように、本発明のプレフィル辞書は、任意の数多くの方法で形成されることができ、また、基本のLempel−Ziv圧縮技術についての任意の数多くの変形版とともに使用されることができる。さらに、圧縮性能は、プレフィルデータ圧縮辞書及びデータ特定圧縮辞書の圧縮性能をモニタし追跡することによって最適化されることができる。例えば、プレフィルデータ圧縮辞書がデータ特定圧縮辞書よりも良好なデータ圧縮を提供していないならば、データ特定辞書が満杯になってリセットされる必要がある場合に、プレフィルデータ圧縮辞書はデータ特定辞書によって置き換えられ、データ特定辞書はリセットされる。他方、プレフィルデータ圧縮辞書が圧縮に関しより有用であるならば、それは保持され、データ特定圧縮辞書はリセットされる。どちらの辞書が他方の辞書よりも良好な圧縮を提供しているかを決定するために、各辞書に関連する節約が、圧縮の進行中に維持される。各辞書を使用して圧縮された各列の長さがまた保持されるが、それは、各辞書にもたらされた圧縮の部分から結果として生ずるデータの量である。データ特定辞書が更に成長するのを許容する方がベターであるほど、プレフィル辞書がほとんど改良を生み出さないといわれるよりも以下のしきい値が選択される。これは、(できるかぎり圧縮されたドキュメント全体について)包括的に、及び、これらのデータのいくつかの異なるセットを維持することによって局所的に、なされる。実際には、この処理によって、プレフィルデータ圧縮辞書及びデータ特定圧縮辞書にもたらされたアドレス空間全体が、プレフィル辞書が圧縮処理に改良を提供していないときにデータ特定辞書によって利用されることが可能となる。
さらに、米国特許第4876541号でStorerが記載したタイプのleast recent used(LRU)法は、一番最近に使用されたエントリが、それがどの辞書から来たかにかかわらず、常に棄てられるため、2つの辞書を分離しておくのを不要にする。このコンテクストにおいて、「使用(used)」は、圧縮データストリームの一部としてコードをリードし又はライトすることを含むが、その列の最初の出現での辞書へのコードのエントリは、「使用」としてカウントされてもされなくてもよい。
加えて、データ特定辞書のサイズを減少せしめることを犠牲にして、多重のプレフィルデータ圧縮辞書が圧縮処理において使用されてもよい。極端なケースでは、データ特定辞書が完全に消去され、プレフィル辞書及びデータ特定辞書によって通常共有されるアドレス空間全体が、関連するプレフィル辞書によって共有される。もちろん、この場合には、圧縮されるべきテキスト内の全てのキャラクタシーケンス、ワード、及びフレーズが、1又はそれより多くのプレフィルデータ圧縮辞書内に存在する必要があるが、このことは、プレフィル辞書が、圧縮されるべきテキストにおいて発生しうるキャラクタの全ての組合せを含むのに十分なほど大きいときに、可能である。さらに、たとえプレフィルデータ圧縮辞書内でキャラクタの全ての組合せが発見されなくとも、発見されなかった組合せは圧縮されていないまま単に格納されうるか、及び/又は、プレフィル辞書はそのキャラクタ組合せを含むように圧縮中に更新されうるであろう。他方、プレフィル辞書が形成される元となるドキュメントの集合の頻度分析を行う、図6に関して説明されたソフトウェアによって作成されたプレフィルデータ圧縮辞書内にキャラクタセット全体が存在するかどうかを決定するために、一つのアルゴリズムが使用されうるであろう。キャラクタの全てが存在しない場合には、不在のキャラクタがプレフィルデータ圧縮辞書内に挿入される一方、最も発生しないコードワードが消去され、それによって、次のキャラクタが辞書にないことを示すのにエスケープキャラクタが必要でないことが保証される。
本発明の好適な実施例に対する別の修正版として、辞書エントリのコードワードアドレスが、Huffman符号化のような技術を使用して符号化され、より頻繁に使用されるアドレスがより少ないビットを使用して表されることができる。同様に、イクステンションキャラクタが、Huffman符号化のような可変長符号化を使用して符号化されることにより、性能が改善される。そのようなケースにおいては、データ特定辞書のサイズを制限する必要はなく、したがって、Lempel−Zivコードワードが正に整数であるため、データ特定辞書をさらに起動する必要はない。これらの整数は、次いで、可変長ビットシーケンスによって符号化される。さらに、これらの整数のコードワードの分配がドキュメントを通して変化することにより、その局所的エントロピーがその包括的エントロピーよりも下回るならば、適応Huffman符号化又は適応算術符号化のような、可変長符号化スキームの適応バージョンが使用されるべきである。
この技術によれば、コードワードに関する符号化を使用して送出されているコードの長さが知られ、また、辞書内のコードワードの数に基づくものとなる。最近使用されたコードワードのリストは保持されることができ、コードワードスキームの圧縮においてもたらされたコートワードの空間全体の小さなサブセットを、最近使用されたコードワードが形成するようなときにおいては、これらのコードワードの圧縮がリスタートされる。この新しい辞書は、最近使用されたコードワードが局所的に再びより使用されそうである一方、最近使用されていないものは再び使用されそうもない、という仮定で、最近使用されたコードワードから構成されることができる。
当業者は、また、特定のドキュメントの圧縮中に作成されるデータ特定圧縮辞書を、他の関連するドキュメントの圧縮に使用するプレフィルデータ圧縮辞書として、格納することを選択することができる。他方、データ特定辞書は、特定のエントリが他のプレフィルデータ圧縮辞書に含まれているかどうかを決定するために、使用されることができる。
したがって、全てのかかる修正は、次の請求の範囲に定義された、この発明の範囲に含まれるものである。
Claims (42)
- キャラクタシーケンスを包含するテキストを圧縮するためのデータ圧縮方法であって、
(a)異なるタイプおよび/またはジャンルのテキストに対して利用可能なプレフィルデータ圧縮辞書のうちのどの1つが前記キャラクタシーケンスに対して最大圧縮をもたらすかを判定し、前記テキストを圧縮するのに使われる1つのプレフィルデータ圧縮辞書選択するステップ、
(b)圧縮のため、前記キャラクタシーケンス中の最初のキャラクタにポインタを初期設定するステップ、
(c)前記ポインタからスタートするキャラクタと前記1つのプレフィルデータ圧縮辞書中に格納されたキャラクタシーケンスとを比較し、前記ポインタから始まるキャラクタと前記1つのプレフィルデータ圧縮辞書中に格納されたキャラクタシーケンスとの最長一致を決定するステップ、
(d)前記最長一致を呈する前記キャラクタの圧縮された表現として、前記最長一致への辞書ポインタを、メモリ中の前記1つのプレフィルデータ圧縮辞書中に格納するステップ、
(e)前記最長一致に続く前記キャラクタシーケンス中のキャラクタに前記ポインタを移動するステップ、及び
(f)圧縮されるべき前記キャラクタシーケンス中の全てのキャラクタについてステップc〜eを繰り返すステップ、
を備えるデータ圧縮方法。 - 請求項1に記載のデータ圧縮方法であって、
少なくとも1つのキャラクタサンプルシーケンス中のキャラクタシーケンスの発生頻度を決定するために、圧縮されるべきキャラクタシーケンスの表現である前記少なくとも1つのサンプルキャラクタシーケンス中の前記キャラクタシーケンスを解析するステップ、及び
前記所定の組合せとして、前記少なくとも1つのキャラクタサンプルシーケンス中に最も多発する、前記少なくとも1つのキャラクタサンプルシーケンス中のこれらのキャラクタシーケンスを選択するステップ、
を実行することにより、前記1つのプレフィルデータ圧縮辞書を選択するステップの前に前記1つのプレフィルデータ圧縮辞書を生成するステップを更に備えるデータ圧縮方法。 - 請求項2に記載のデータ圧縮方法であって、前記解析するステップは、前記少なくとも1つのキャラクタサンプルシーケンス中の前記キャラクタシーケンスの各々の発生数を決定するステップ、及び、各キャラクタシーケンスについて、前記各キャラクタシーケンスの発生数と、前記各キャラクタシーケンスのビット長と前記辞書ポインタのビット長の差との積を演算するステップを含むデータ圧縮方法。
- 請求項3に記載のデータ圧縮方法であって、前記所定の組合せを選択するステップは、前記1つのプレフィルデータ圧縮辞書へ格納するために、前記積を演算するステップ中で決定された最大の積を有するこれらのデータシーケンスを選択するステップを含むデータ圧縮方法。
- 請求項4に記載のデータ圧縮方法であって、更に、完全なキャラクタセットが前記1つのプレフィルデータ圧縮辞書中に存在するか否かを決定するステップ、及び、前記完全なキャラクタセット中の全てのキャラクタが、前記1つのプレフィルデータ圧縮辞書中に存在しないという場合において、新たな辞書エントリとして、前記1つのプレフィルデータ圧縮辞書に存在しない前記キャラクタセットのこれらのキャラクタを、前記積を演算するステップで決定された最小の積を有する辞書のエントリに代えて、前記1つのプレフィルデータ圧縮辞書中に挿入するステップを含むデータ圧縮方法。
- 請求項1に記載のデータ圧縮方法であって、前記1つのプレフィルデータ圧縮辞書を選択するステップは、複数の異なるプレフィルデータ圧縮辞書の内のどの1つが前記キャラクタサブセットに対して最大の圧縮をもたらすかを決定するため、前記複数の異なるプレフィルデータ圧縮辞書に対して、圧縮されるべき前記データキャラクタシーケンスのサブセットキャラクタについてステップb〜eを実行するステップ、及び、前記キャラクタシーケンスの圧縮に使用するため、前記1つのプレフィルデータ圧縮辞書として、前記1つのプレフィルデータ圧縮辞書を選択するステップを含むデータ圧縮方法。
- 請求項6に記載のデータ圧縮方法であって、前記1つのプレフィルデータ圧縮辞書を選択する前記のステップは、圧縮されるべき前記データキャラクタシーケンスの前記キャラクタサブセットについてステップb〜eを実行する間に、空のデータ圧縮辞書によるスタートが前記データキャラクタシーケンスの最大の圧縮を許可することが決定されるイベントにおいて、空のデータ圧縮辞書を選択するステップを含むデータ圧縮方法。
- 請求項1に記載のデータ圧縮方法であって、更に、(g)前記最長一致を呈する前記キャラクタの前記圧縮された表現として、受け側に前記辞書ポインタを送出するステップを含むデータ圧縮方法。
- 請求項8に記載のデータ圧縮方法であって、前記1つのプレフィルデータ圧縮辞書を選択するステップは、前記プレフィルデータ圧縮辞書がステップgの送出されたデータの受け側が利用可能であるか否かに基づいて、複数のプレフィルデータ圧縮辞書から1つのプレフィルデータ圧縮辞書を選択するステップを更に含むデータ圧縮方法。
- 請求項1に記載のデータ圧縮方法であって、前記1つのプレフィルデータ圧縮辞書を選択するステップは、圧縮されるべき前記キャラクタシーケンスの圧縮の間に使用するための複合的なプレフィルデータ圧縮辞書を選択するステップを含むデータ圧縮方法。
- 請求項1に記載のデータ圧縮方法であって、更に、前記辞書ポインタがより少ないアドレスビットを使用して表現されるように、前記辞書ポインタを符号化するステップを含むデータ圧縮方法。
- 請求項1に記載のデータ圧縮方法であって、更に、前記最長一致を呈する前記キャラクタの圧縮された表現と共に、伸長処理の間に使用されるべきプレフィルデータ圧縮辞書へ、リファレンスを格納するステップを含むデータ圧縮方法。
- 請求項1に記載のデータ圧縮方法であって、更に、テキストデータの異なるジャンルを包含する複数のプレフィルデータ圧縮辞書を格納するステップを含み、前記1つのプレフィルデータ圧縮辞書を選択するステップは、前記複数のプレフィルデータ圧縮辞書から前記1つのプレフィルデータ圧縮辞書を選択するステップを含み、それにより、選択されたプレフィルデータ圧縮辞書が、前記圧縮されるべき前記キャラクタシーケンスに最も類似するジャンルからデータを包含するデータ圧縮方法。
- 請求項13に記載のデータ圧縮方法であって、前記複数のプレフィルデータ圧縮辞書を格納する前記ステップは、対応するプレフィルデータ圧縮辞書内に包含されたテキストデータのジャンルにより、前記複数のプレフィルデータ圧縮辞書を階層的に配列するステップを含むデータ圧縮方法。
- 請求項13に記載のデータ圧縮方法であって、前記複数のプレフィルデータ圧縮辞書を格納するステップは、記憶メディア上に一度だけ前記複数のプレフィルデータ圧縮辞書の共通のエントリを格納するステップを含み、前記複数のプレフィルデータ圧縮辞書により、前記共通のエントリが割当てられるデータ圧縮方法。
- キャラクタシーケンスの圧縮された表現を伸長する方法であって、前記圧縮された表現は、ポインタからスタートし、プレフィルデータ圧縮辞書中に格納されたキャラクタシーケンスにより前記キャラクタシーケンス中の特定のキャラクタまでのキャラクタシーケンスのそれぞれの最長一致に対する辞書ポインタを具備し、前記プレフィルデータ圧縮辞書は、前記キャラクタシーケンス中に多発しそうな所定のキャラクタの組合せを収納する方法において、
利用可能なプレフィルデータ圧縮辞書のうちのどの1つが前記キャラクタシーケンスに対して最大圧縮をもたらすかを判定し、前記テキストを圧縮するのに使われる1つのプレフィルデータ圧縮辞書を選択することにより、圧縮の前に前記プレフィルデータ圧縮辞書が選択され、かつ、該方法は、
(a)前記キャラクタの前記圧縮された表現中の第1の辞書ポインタへポインタを移動するステップ、
(b)前記ポインタにより示される前記辞書ポインタを使用して前記1つのプレフィルデータ圧縮辞書から辞書エントリを検索するステップ、
(c)前記最長一致を呈するキャラクタの伸長された表現として、前記辞書エントリを格納するステップ、
(d)前記キャラクタの前記圧縮された表現中の次の辞書ポインタに前記ポインタを移動するステップ、及び
(e)前記キャラクタシーケンス中の全ての圧縮されたキャラクタが伸長されるまで、前記キャラクタの前記圧縮された表現中の全ての辞書ポインタについてステップb〜dを繰り返すステップ、
を備える方法。 - 請求項16に記載の方法であって、更に、前記キャラクタの前記圧縮された表現から、少なくとも、(1)伸長の間に使用するための前記1つのプレフィルデータ圧縮辞書の一致性、及び(2)前記キャラクタの前記圧縮された表現を伸長するために使用されるLempel-Zivアルゴリズム変形版の指示、を抽出するステップを備える方法。
- キャラクタのシーケンスの圧縮された表現を伸長する方法であって、該圧縮された表現は、(1)ウィンドウポインタ及び前記キャラクタのシーケンス内での特定のキャラクタへのポインタでスタートするキャラクタのシーケンスの、所定のサイズのキャラクタウィンドウ内のキャラクタのシーケンスとのそれぞれの最長一致の長さ、及び(2)プレフィルデータ伸長辞書内の特定のキャラクタへの前記ポインタでスタートするキャラクタのシーケンスのそれぞれの最長一致の辞書エントリ番号をそなえ、前記プレフィルデータ圧縮辞書は前記キャラクタのシーケンス内で多発しそうなキャラクタの所定の組合せを包含しており、前記伸長方法は、
(a)前記キャラクタの前記圧縮された表現内での第1のエントリへポインタを初期設定し、
(b)該ポインタによって指示された前記キャラクタの前記圧縮された表現内での現エントリが、(1)ウィンドウポインタ及び長さであるか(2)辞書エントリ番号であるかを決定し、
(c)前記現エントリがウィンドウポインタ及び長さであれば、前記ウィンドウポインタによって指示された現キャラクタウィンドウ内のキャラクタでスタートする前記長さによって決定されるキャラクタの数を検索し、
(d)前記現エントリが辞書エントリ番号であれば、該辞書エントリ番号によって特定された前記プレフィルデータ伸長辞書内の辞書エントリにおいてキャラクタを検索し、
(e)各ステップc又はdにおいて検索されたキャラクタを、現エントリについての最長一致を呈するキャラクタの伸長された表現として格納し、
(f)前記ポインタを前記キャラクタの前記圧縮された表現内での次のエントリまで移動させ、
(g)前記キャラクタのシーケンス内でのすべての圧縮されたキャラクタが伸長されるまで、前記キャラクタの前記圧縮された表現内でのすべてのエントリについて各ステップb〜fを繰返す、
各ステップをそなえている方法。 - キャラクタのシーケンスを含むテキストを圧縮するためのデータ圧縮システムであって、
前記キャラクタのシーケンス内で多発しそうなキャラクタの所定の組合せを包含する少なくとも1つのプレフィルデータ圧縮辞書、
前記テキストが圧縮された後該テキストを格納するメモリ、及び
(a)異なるタイプおよび/またはジャンルのテキストに対して利用可能なプレフィルデータ圧縮辞書のうちのどの1つが前記キャラクタシーケンスに対して最大圧縮をもたらすかを判定し、前記テキストを圧縮するのに使われる1つのプレフィルデータ圧縮辞書を選択し、(b)圧縮のための前記キャラクタのシーケンス内での第1のキャラクタにポインタを初期設定し、(c)前記ポインタでスタートするキャラクタを前記1つのプレフィルデータ圧縮辞書に格納されたキャラクタのシーケンスと比較して、前記ポインタでスタートする前記キャラクタの、前記1つのプレフィルデータ圧縮辞書に格納された前記キャラクタのシーケンスとの最長一致を決定し、(d)前記1つのプレフィルデータ圧縮辞書内の前記最長一致への辞書ポインタを、前記最長一致を呈する前記キャラクタの圧縮された表現として前記メモリ内に格納し、(e)前記最長一致に続く前記キャラクタのシーケンス内のキャラクタに前記ポインタを移動させ、(f)圧縮されるべき前記キャラクタのシーケンス内のすべてのキャラクタについて各ステップb〜dを繰返す、各ステップを実行する圧縮手段、
をそなえているデータ圧縮システム。 - 前記1つのプレフィルデータ圧縮辞書を生成するプレフィルデータ圧縮辞書生成手段であって、前記1つのプレフィルデータ圧縮辞書は、該1つのプレフィルデータ圧縮辞書に、圧縮されるべきキャラクタのシーケンスを代表する少なくとも1つのキャラクタのサンプルシーケンス内で最も多発するキャラクタの組合せを挿入するプレフィルデータ圧縮辞書生成手段を更にそなえている、請求項19に記載のシステム。
- 前記プレフィルデータ圧縮辞書生成手段は、前記1つのプレフィルデータ圧縮辞書に、圧縮されるべきキャラクタのシーケンスを代表する少なくとも1つのキャラクタのサンプルシーケンス内でのキャラクタの組合せを挿入するものであり、該圧縮されるべきキャラクタのシーケンスは、(a)前記少なくとも1つのキャラクタのサンプルシーケンスにおけるキャクラタの前記組合せの各々の発生数と、(b)各前記キャラクタの組合せのビット長及び前記辞書ポインタのビット長の差と、の最大の積を有する、請求項20に記載のシステム。
- 前記プレフィルデータ圧縮辞書生成手段は、圧縮されるべき前記キャラクタのシーケンスの全キャラクタの集合が前記1つのプレフィルデータ圧縮辞書内に存在するかどうかを決定し、前記全キャラクタの集合内でのすべてのキャラクタが圧縮されるべき前記キャラクタのシーケンス内に存在しない場合には、前記1つのプレフィルデータ圧縮辞書から欠けている前記キャラクタの集合内の各キャラクタを、前記1つのプレフィルデータ圧縮辞書内に、前記プレフィルデータ圧縮辞書生成手段によって決定される最小の積を有する辞書エントリの代りに新しい辞書エントリとして挿入する、請求項21に記載のシステム。
- 前記1つのプレフィルデータ圧縮辞書は多数のプレフィルデータ圧縮辞書の1つであり、該1つのプレフィルデータ圧縮辞書は、前記多数のプレフィルデータ圧縮辞書の残りの各々によって前記データキャラクタのシーケンスのうちの各キャラクタのサブセットに提供される圧縮より、圧縮されるべき前記データキャラクタのシーケンスのうちの各キャラクタのサブセットについてより多くの圧縮を提供する各キャラクタの組合せを包含する、請求項19に記載のシステム。
- 前記メモリは前記圧縮手段から離れた位置にあり、前記辞書ポインタを、前記最長一致を呈する前記キャラクタの前記圧縮された表現として、前記圧縮手段から前記メモリまで伝送する手段を更にそなえている、請求項19に記載のシステム。
- 前記1つのプレフィルデータ圧縮辞書は、前記離れた位置でも利用しうる多数のプレフィルデータ圧縮辞書のうちの1つである、請求項19に記載のシステム。
- 前記圧縮手段は、前記辞書ポインタがより少ないアドレスビットを用いて表現されうるように前記辞書ポインタを符号化する手段をそなえている、請求項19に記載のシステム。
- 前記圧縮手段は、前記最長一致を呈する前記キャラクタの前記圧縮された表現を用いて、前記メモリ内に、伸長処理中に使用されるべきプレフィルデータ圧縮辞書へのリファレンスを格納する、請求項19に記載のシステム。
- 前記メモリは、ハードディスク、RAM,CD ROM、フロッピーディスク(登録商標)、及び光ディスクのうちの少なくとも1つをそなえている、請求項19に記載のシステム。
- テキストデータの異なる形式を含む複数のプレフィルデータ圧縮辞書を格納する辞書メモリを更にそなえ、それによって前記テキストを圧縮するために使用されるプレフィルデータ圧縮辞書は、最も類似した形式から圧縮されるべき前記キャラクタのシーケンスまでのデータを包含する、請求項19に記載のシステム。
- 前記複数のプレフィルデータ圧縮辞書は、それぞれのプレフィルデータ圧縮辞書内に含まれるテキストデータの形式によって階層的に前記メモリ内に配列されている、請求項19に記載のシステム。
- 前記複数のプレフィルデータ圧縮辞書は、前記複数のプレフィルデータ圧縮辞書内の共通エントリが前記メモリ内に1度だけ格納されて前記複数のプレフィルデータ圧縮辞書によって共用されるように、前記メモリ内に格納されている、請求項19に記載のシステム。
- キャラクタのシーケンスを含むテキストを圧縮するためのデータ圧縮システムであって、
前記キャラクタのシーケンスにおいて多発しそうなキャラクタの所定の組合せを含むプレフィルデータ圧縮辞書、
データ特定用データ圧縮辞書、
テキストが圧縮された後該テキストを格納するメモリ、及び
(a)圧縮のための前記キャラクタのシーケンス内での第1のキャラクタにポインタを初期設定し、(b)前記ポインタでスタートするキャラクタを前記プレフィルデータ圧縮辞書及び前記データ特定用データ圧縮辞書内に格納されたキャラクタのシーケンスと比較して、前記プレフィルデータ圧縮辞書及び前記データ特定用データ圧縮辞書内に格納された前記キャラクタのシーケンスとの、前記ポインタでスタートする前記キャラクタの最長一致の辞書エントリ番号を決定し、(c)前記辞書エントリ番号及びイクステンションキャラクタを、前記最長一致を呈する前記キャラクタ及び前記イクステンションキャラクタの圧縮された表現として前記メモリ内に格納し、前記イクステンションキャラクタは前記ポインタでスタートする前記最長一致の後に発生する、圧縮されるべき前記キャラクタのシーケンス内でのキャラクタであり、(d)前記最長一致を呈する前記キャラクタ及び前記イクステンションキャラクタを新しい辞書エントリとして前記データ特定用データ圧縮辞書内に選択的に格納し、(e)前記イクステンションキャラクタに続く前記キャラクタのシーケンス内のキャラクタに前記ポインタを移動させ、(f)圧縮されるべき前記キャラクタのシーケンス内のすべてのキャラクタについて各ステップb〜eを繰返す、各ステップを実行する圧縮手段、
をそなえているデータ圧縮システム。 - 前記圧縮手段は、前記キャラクタのシーケンスを圧縮する間前記プレフィルデータ圧縮辞書及び前記データ特定データ圧縮辞書の圧縮能力をモニタする手段、前記キャラクタのシーケンスを圧縮する間に前記データ特定データ圧縮辞書が満杯になった時前記モニタ手段によって決定されたデータ圧縮辞書をより小さいデータ圧縮能力を提供するようにリセットする手段、及び前記モニタ手段によって決定されたデータ圧縮辞書をより大きいデータ圧縮能力を提供するように、圧縮されるべき前記キャラクタのシーケンス内の後続するキャラクタの圧縮のための前記プレフィルデータ圧縮辞書に置き換える手段を更にそなえている、請求項32に記載のシステム。
- 前記プレフィルデータ圧縮辞書及び前記データ特定データ圧縮辞書は共通メモリを共有し、前記データ特定データ圧縮辞書は前記キャラクタのシーケンスを圧縮する間そこに格納された新しい辞書エントリとともに、異なるテキストの異なるキャラクタのシーケンスの圧縮に使用するためのプレフィルデータ圧縮辞書の少なくとも一部として前記共通メモリに格納される、請求項32に記載のシステム。
- テキストデータの異なる形式を含む複数のプレフィルデータ圧縮辞書を格納する辞書メモリを更にそなえ、それによって前記テキストを圧縮するために使用されるプレフィルデータ圧縮辞書が、最も類似した形式から圧縮されるべき前記キャラクタのシーケンスまでのデータを包含する、請求項32に記載のシステム。
- 前記圧縮手段が、前記テキストを圧縮する間に格納されたデータ特定データ圧縮辞書エントリを前記異なるテキストを圧縮するためのプレフィルデータ圧縮辞書として用いて、前記テキストと同じ形式とは異なるテキストについて各ステップb〜eを繰返す、請求項35に記載のシステム。
- キャラクタのシーケンスを含むテキストを圧縮するためのデータ圧縮システムであって、
前記キャラクタのシーケンス内で多発しそうなキャラクタの所定の組合せを包含するプレフィルデータ圧縮辞書、
所定数のキャラクタを含むキャラクタウィンドウ、
テキストが圧縮された後該テキストを格納する圧縮されたデータメモリ、及び
(a)圧縮のための前記キャラクタのシーケンス内の第1のキャラクタにポインタを初期設定し、(b)前記ポインタでスタートするキャラクタを前記プレフィルデータ圧縮辞書及び前記キャラクタウィンドウ内のキャラクタのシーケンスと比較して、前記プレフィルデータ圧縮辞書内に格納された前記キャラクタのシーケンス及び前記キャラクタウィンドウ内のキャラクタのシーケンスとの、前記ポインタでスタートする前記キャラクタの最長一致を決定し、(c)前記ポインタでスタートする前記キャラクタを前記プレフィルデータ圧縮辞書内に格納された前記キャラクタのシーケンスとの、前記ポインタでスタートする前記キャラクタの最長一致の辞書エントリ番号として表現することによって、又は前記キャラクタウィンドウ内の前記キャラクタのシーケンスとの、前記ポインタでスタートする前記キャラクタの最長一致の長さ及びウィンドウポインタとして前記ポインタでスタートする前記キャラクタを表現することによって、より大きい圧縮がえられるかどうかを決定し、(d)ステップcにおいてより大きい圧縮が、前記キャラクタウィンドウ内の前記キャラクタのシーケンスとの、前記ウィンドウポインタでスタートする前記キャラクタの前記最長一致の前記長さ及び前記ウィンドウポインタとして前記ポインタでスタートする前記キャラクタを表現することによってえられることが決定される時、前記最長一致を呈する前記キャラクタの圧縮された表現として前記圧縮されたデータメモリ内に前記最長一致の前記長さ及び前記ウィンドウポインタを格納し、さもなければ前記プレフィルデータ圧縮辞書内に格納された前記キャラクタのシーケンスとの、前記ポインタでスタートする前記キャラクタの前記最長一致の前記辞書エントリ番号を格納し、(e)前記最長一致を呈するキャラクタを含ませるために前記キャラクタウィンドウを更新し、(f)前記最長一致に続く前記キャラクタのシーケンス内のキャラクタまで前記ポインタを移動させ、(g)圧縮されるべき前記キャラクタのシーケンス内のすべてのキャラクタについて各ステップb〜fを繰返す、各ステップを実行する圧縮手段、
をそなえているデータ圧縮システム。 - 前記圧縮されたデータメモリは前記圧縮手段から離れた位置にあり、前記キャラクタウィンドウ内の前記キャラクタのシーケンスとの、前記ウィンドウポインタでスタートする前記キャラクタの前記最長一致の前記長さ及び前記ウィンドウポインタとして前記ポインタでスタートする前記キャラクタを表現することによってより大きい圧縮がえられることがステップcにおいて前記圧縮手段によって決定される時、前記最長一致の前記長さ及び前記ウィンドウポインタを前記圧縮されたデータメモリに伝送する手段を更にそなえ、さもなければ前記プレフィルデータ圧縮辞書内に格納された前記キャラクタのシーケンスとの、前記ポインタでスタートする前記キャラクタの前記最長一致の前記辞書エントリ番号を前記圧縮されたデータメモリに伝送する、請求項37に記載のシステム。
- キャラクタのシーケンスの圧縮された表現を伸長するデータ伸長システムであって、前記圧縮された表現はプレフィルデータ圧縮辞書内に格納されたキャラクタのシーケンスとの、前記キャラクタのシーケンス内での特定のキャラクタへのポインタでスタートするキャラクタのシーケンスのそれぞれの最長一致への辞書ポインタをそなえるデータ伸長システムにおいて、
利用可能なプレフィルデータ圧縮辞書のうちのどの1つが前記キャラクタシーケンスに対して最大圧縮をもたらすかを判定し、前記テキストを圧縮するのに使われる1つのプレフィルデータ圧縮辞書を選択することにより、圧縮の前に前記プレフィルデータ圧縮辞書が選択され、かつ、該データ伸長システムは、
前記キャラクタのシーケンスの前記圧縮された表現を格納する圧縮されたデータメモリ、
伸長後前記キャラクタのシーケンスを格納する伸長されたデータメモリ、及び
(a)前記圧縮されたデータメモリ内の前記キャラクタの前記圧縮された表現内の第1の辞書ポインタへポインタを初期設定し、(b)前記ポインタによって指示された前記辞書ポインタを用いて前記1つのプレフィルデータ圧縮辞書から辞書エントリを検索し、(c)前記辞書エントリを前記最長一致を呈するキャラクタの伸長された表現として前記伸長されたデータメモリ内に格納し、(d)前記キャラクタの前記圧縮された表現内での次の辞書ポインタへ前記ポインタを移動させ、(e)前記キャラクタのシーケンス内のすべての圧縮されたキャラクタが伸長されるまで前記圧縮されたデータメモリ内での前記キャラクタの前記圧縮された表現内のすべての辞書ポインタについて各ステップb〜dを繰返す、各ステップを実行する伸長手段、
をそなえているデータ伸長システム。 - 前記伸長手段は、前記圧縮されたデータメモリ内の前記キャラクタの前記圧縮された表現から、(1)前記伸長手段による伸長の間使用するための1つのプレフィルデータ圧縮辞書の一致性、及び(2)前記圧縮されたデータメモリ内の前記キャラクタの前記圧縮された表現を伸長するために使用されるべきLempel−Zivアルゴリズム変形版の指示、のうちの少なくとも1つを抽出する手段をそなえている、請求項39に記載のシステム。
- キャラクタのシーケンスの圧縮された表現を伸長するデータ伸長システムであって、前記圧縮された表現は、プレフィルデータ圧縮辞書及びデータ特定データ圧縮辞書内に格納されたキャラクタのシーケンスとの、前記キャラクタのシーケンス内の特定のキャラクタへのポインタでスタートするキャラクタのシーケンスのそれぞれの最長一致の辞書エントリ番号及びイクステンションキャラクタをそなえ、前記イクステンションキャラクタは前記ポインタでスタートする最長一致の後に発生するキャラクタのシーケンス内のキャラクタであり、前記プレフィルデータ圧縮辞書は前記キャラクタのシーケンス内で多発しそうなキャラクタの所定の組合せを包含しており、前記データ伸長システムは、
前記キャラクタのシーケンスの前記圧縮された表現を格納する圧縮されたデータメモリ、
伸長後の前記キャラクタのシーケンスを格納する伸長されたデータメモリ、及び
(a)データ特定データ伸長辞書を初期設定し、(b)前記圧縮されたデータメモリ内での前記キャラクタの前記圧縮された表現内の第1の辞書エントリ番号へポインタを初期設定し、(c)前記ポインタによって指示された辞書エントリ番号を用いて前記プレフィルデータ圧縮辞書及び前記データ特定データ伸長辞書のうちの1つから辞書エントリ及びイクステンションキャラクタを検索し、(d)前記伸長されたデータメモリ内に前記辞書エントリを前記最長一致を呈するキャラクタの伸長された表現として格納し、(e)前記最長一致を呈する前記キャラクタ及び前記イクステンションキャラクタを前記データ特定データ伸長辞書に選択的に格納し、(f)前記圧縮されたデータメモリ内での前記キャラクタの前記圧縮された表現内の次の辞書エントリ番号へ前記ポインタを移動させ、(g)前記キャラクタのシーケンス内のすべての圧縮されたキャラクタが伸長されるまで前記キャラクタの前記圧縮された表現内のすべての辞書エントリ番号及びイクステンションキャラクタについて各ステップc〜fを繰返す、各ステップを実行する伸長手段、
をそなえているデータ伸長システム。 - キャラクタのシーケンスの圧縮された表現を伸長するデータ伸長システムであって、前記圧縮された表現は、(1)所定のサイズのキャラクタウィンドウ内のキャラクタのシーケンスとの、前記キャラクタのシーケンス内の特定のキャラクタへのポインタでスタートするキャラクタのシーケンスのそれぞれの最長一致の長さ及びウィンドウポインタ、及び(2)プレフィルデータ伸長辞書内の特定のキャラクタへの前記ポインタでスタートするキャラクタのシーケンスのそれぞれの最長一致の辞書エントリ番号であって、前記プレフィルデータ圧縮辞書は前記キャラクタのシーケンス内で多発しそうなキャラクタの所定の組合せを包含しており、前記データ伸長システムは、
前記キャラクタのシーケンスの前記圧縮された表現を格納するための圧縮されたデータメモリ、
伸長後前記キャラクタのシーケンスを格納するための伸長されたデータメモリ、及び
(a)前記圧縮されたデータメモリ内での前記キャラクタの前記圧縮された表現内の第1のエントリへポインタを初期設定し、(b)前記ポインタによって指示された前記キャラクタの前記圧縮された表現内の現エントリが、(1)ウィンドウポインタ及び長さであるか、又は(2)辞書エントリ番号であるかを決定し、(c)前記圧縮された表現内の前記現エントリがウィンドウポインタ及び長さであれば、前記ウィンドウポインタによって指示された現キャラクタウィンドウ内のキャラクタでスタートする前記長さによって決定される多数のキャラクタを検索し、(d)前記圧縮された表現内の前記現エントリが辞書エントリ番号であれば、前記辞書エントリ番号によって特定される前記プレフィルデータ伸長辞書内の辞書エントリでキャラクタを検索し、(e)現エントリについての最長一致を呈するキャラクタの伸長された表現として前記伸長されたデータメモリに各ステップc又はdにおいて検索されたキャラクタを格納し、(f)前記圧縮されたデータメモリ内での前記キャラクタの前記圧縮された表現内の次のエントリへ前記ポインタを移動させ、(g)前記キャラクタのシーケンス内のすべての圧縮されたキャラクタが伸長されるまで前記キャラクタの前記圧縮された表現内のすべてのエントリについて各ステップb〜fを繰返す、各ステップを実行するための伸長手段、
をそなえているデータ伸長システム。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/692,474 | 1996-08-06 | ||
| US08/692,474 US5951623A (en) | 1996-08-06 | 1996-08-06 | Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
| PCT/US1997/013681 WO1998006028A1 (en) | 1996-08-06 | 1997-08-04 | A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2000516058A JP2000516058A (ja) | 2000-11-28 |
| JP3935952B2 true JP3935952B2 (ja) | 2007-06-27 |
Family
ID=24780736
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP50814798A Expired - Fee Related JP3935952B2 (ja) | 1996-08-06 | 1997-08-04 | 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術 |
Country Status (9)
| Country | Link |
|---|---|
| US (2) | US5951623A (ja) |
| EP (1) | EP0970419B1 (ja) |
| JP (1) | JP3935952B2 (ja) |
| AT (1) | ATE366435T1 (ja) |
| AU (1) | AU721734B2 (ja) |
| CA (1) | CA2263453C (ja) |
| DE (1) | DE69737892T2 (ja) |
| ES (1) | ES2289762T3 (ja) |
| WO (1) | WO1998006028A1 (ja) |
Families Citing this family (169)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5758257A (en) * | 1994-11-29 | 1998-05-26 | Herz; Frederick | System and method for scheduling broadcast of and access to video programs and other data using customer profiles |
| JPH11143877A (ja) * | 1997-10-22 | 1999-05-28 | Internatl Business Mach Corp <Ibm> | 圧縮方法、辞書の見出し語インデックス・データを圧縮するための方法、及び機械翻訳システム |
| KR100448289B1 (ko) * | 1997-12-20 | 2004-11-16 | 주식회사 대우일렉트로닉스 | 스트링매칭모듈을갖는데이터압축시스템 |
| US6055526A (en) * | 1998-04-02 | 2000-04-25 | Sun Microsystems, Inc. | Data indexing technique |
| US6100824A (en) * | 1998-04-06 | 2000-08-08 | National Dispatch Center, Inc. | System and method for data compression |
| US6216175B1 (en) | 1998-06-08 | 2001-04-10 | Microsoft Corporation | Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations |
| JP4242970B2 (ja) * | 1998-07-09 | 2009-03-25 | 富士通株式会社 | データ圧縮方法及びデータ圧縮装置 |
| US6393149B2 (en) | 1998-09-17 | 2002-05-21 | Navigation Technologies Corp. | Method and system for compressing data and a geographic database formed therewith and methods for use thereof in a navigation application program |
| CH693729A5 (de) * | 1998-10-28 | 2003-12-31 | Andrei Vertel | Verfahren und Anlage zur Verarbeitung oder Uebertragung von Text. |
| US6298321B1 (en) * | 1998-11-23 | 2001-10-02 | Microsoft Corporation | Trie compression using substates and utilizing pointers to replace or merge identical, reordered states |
| US6304878B1 (en) | 1998-11-23 | 2001-10-16 | Microsoft Corporation | Method and system for improved enumeration of tries |
| US6456209B1 (en) * | 1998-12-01 | 2002-09-24 | Lucent Technologies Inc. | Method and apparatus for deriving a plurally parsable data compression dictionary |
| US6604106B1 (en) * | 1998-12-10 | 2003-08-05 | International Business Machines Corporation | Compression and delivery of web server content |
| US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
| US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
| US6604158B1 (en) | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
| US6347383B1 (en) * | 1999-03-31 | 2002-02-12 | International Business Machines Corporation | Method and system for address trace compression through loop detection and reduction |
| WO2001013237A1 (en) * | 1999-08-13 | 2001-02-22 | Fujitsu Limited | File processing method, data processing device and storage medium |
| US6675169B1 (en) | 1999-09-07 | 2004-01-06 | Microsoft Corporation | Method and system for attaching information to words of a trie |
| US6535886B1 (en) * | 1999-10-18 | 2003-03-18 | Sony Corporation | Method to compress linguistic structures |
| US20010047473A1 (en) | 2000-02-03 | 2001-11-29 | Realtime Data, Llc | Systems and methods for computer initialization |
| AU2001280818A1 (en) * | 2000-07-25 | 2002-02-05 | Peribit Networks, Inc. | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
| US6856651B2 (en) * | 2000-07-25 | 2005-02-15 | Peribit Networks, Inc. | System and method for incremental and continuous data compression |
| DE10196513T1 (de) * | 2000-08-15 | 2003-11-13 | Seagate Technology Llc | Dualmodus-Datenkompression für einen Betriebscode |
| US20030217025A1 (en) * | 2000-09-11 | 2003-11-20 | David Costantino | Textual data storage system and method |
| US6898605B2 (en) * | 2000-09-11 | 2005-05-24 | Snap-On Incorporated | Textual data storage system and method |
| US7417568B2 (en) | 2000-10-03 | 2008-08-26 | Realtime Data Llc | System and method for data feed acceleration and encryption |
| US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
| US9143546B2 (en) | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
| US6359548B1 (en) | 2000-10-16 | 2002-03-19 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings |
| US6735339B1 (en) * | 2000-10-27 | 2004-05-11 | Dolby Laboratories Licensing Corporation | Multi-stage encoding of signal components that are classified according to component value |
| US6985965B2 (en) * | 2000-11-16 | 2006-01-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Static information knowledge used with binary compression methods |
| KR100382649B1 (ko) * | 2000-12-29 | 2003-05-09 | 삼성전자주식회사 | 하드 카피 장치용 데이타 압축 및 복원 방법들 및 장치들 |
| US20020085764A1 (en) * | 2000-12-29 | 2002-07-04 | Brady Thomas S. | Enhanced data compression technique |
| US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
| US6392568B1 (en) * | 2001-03-07 | 2002-05-21 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings |
| US7155173B2 (en) * | 2001-03-14 | 2006-12-26 | Nokia Corporation | Method and system for providing a context for message compression |
| US7500017B2 (en) * | 2001-04-19 | 2009-03-03 | Microsoft Corporation | Method and system for providing an XML binary format |
| US6400286B1 (en) * | 2001-06-20 | 2002-06-04 | Unisys Corporation | Data compression method and apparatus implemented with limited length character tables |
| US20030153338A1 (en) | 2001-07-24 | 2003-08-14 | Herz Frederick S. M. | Autoband |
| US6961011B2 (en) * | 2001-08-27 | 2005-11-01 | Freescale Semiconductor, Inc. | Data compression system |
| AU2002358953A1 (en) * | 2001-12-10 | 2003-06-23 | Virtual Locality Ltd. | Apparatus and method for optimized and secured reflection of network services to remote locations |
| US6624762B1 (en) * | 2002-04-11 | 2003-09-23 | Unisys Corporation | Hardware-based, LZW data compression co-processor |
| US20030231184A1 (en) * | 2002-04-22 | 2003-12-18 | Gurney Darin V. | Directory listings white space reduction method, apparatus, and system |
| US7071854B1 (en) * | 2002-05-13 | 2006-07-04 | Unisys Corporation | Hardware-implemented LZW data decompression |
| US7269548B2 (en) * | 2002-07-03 | 2007-09-11 | Research In Motion Ltd | System and method of creating and using compact linguistic data |
| US6608570B1 (en) * | 2002-07-15 | 2003-08-19 | Unisys Corporation | Matrix implemented data compression apparatus and method |
| US6798362B2 (en) | 2002-10-30 | 2004-09-28 | International Business Machines Corporation | Polynomial-time, sequential, adaptive system and method for lossy data compression |
| EP1584023A1 (en) * | 2002-12-27 | 2005-10-12 | Nokia Corporation | Predictive text entry and data compression method for a mobile communication terminal |
| US20040139298A1 (en) * | 2003-01-09 | 2004-07-15 | International Business Machines Corporation | Method and apparatus for instruction compression and decompression in a cache memory |
| US6674374B1 (en) * | 2003-01-25 | 2004-01-06 | Unisys Corporation | Data compressor utilizing switched input coincidence elements |
| US6847315B2 (en) * | 2003-04-17 | 2005-01-25 | International Business Machines Corporation | Nonuniform compression span |
| US6756923B1 (en) * | 2003-05-30 | 2004-06-29 | Unisys Corporation | Data compressor utilizing switched input coincidence elements arranged in virtual levels |
| GB2403033A (en) * | 2003-06-18 | 2004-12-22 | Research In Motion Ltd | PDA software compression |
| US20070162957A1 (en) * | 2003-07-01 | 2007-07-12 | Andrew Bartels | Methods, systems and devices for securing supervisory control and data acquisition (SCADA) communications |
| US9614772B1 (en) | 2003-10-20 | 2017-04-04 | F5 Networks, Inc. | System and method for directing network traffic in tunneling applications |
| US7039394B2 (en) * | 2003-11-25 | 2006-05-02 | Good Technology, Inc. | Communication system and method for compressing information sent by a communication device to a target portable communication device |
| US7079054B2 (en) * | 2004-06-04 | 2006-07-18 | Broadcom Corporation | V.42bis standalone hardware accelerator and architecture of construction |
| US8954400B2 (en) * | 2004-09-13 | 2015-02-10 | International Business Machines Corporation | Method, system and program product for managing structured data |
| US8024483B1 (en) | 2004-10-01 | 2011-09-20 | F5 Networks, Inc. | Selective compression for network connections |
| US20060106870A1 (en) * | 2004-11-16 | 2006-05-18 | International Business Machines Corporation | Data compression using a nested hierarchy of fixed phrase length dictionaries |
| US8511558B2 (en) * | 2005-04-12 | 2013-08-20 | Sandisk Il Ltd. | Smartcard power management |
| US7102552B1 (en) * | 2005-06-07 | 2006-09-05 | Windspring, Inc. | Data compression with edit-in-place capability for compressed data |
| US7783781B1 (en) | 2005-08-05 | 2010-08-24 | F5 Networks, Inc. | Adaptive compression |
| US8533308B1 (en) | 2005-08-12 | 2013-09-10 | F5 Networks, Inc. | Network traffic management through protocol-configurable transaction processing |
| US7739586B2 (en) * | 2005-08-19 | 2010-06-15 | Microsoft Corporation | Encoding of markup language data |
| US8745140B2 (en) * | 2005-10-14 | 2014-06-03 | Blackberry Limited | System and method of handling messages for forwarding |
| SE530081C2 (sv) * | 2005-10-24 | 2008-02-26 | Algotrim Ab | Metod och system för datakomprimering |
| US20070124306A1 (en) * | 2005-11-09 | 2007-05-31 | Honda Motor Co., Ltd. | Method and system for transmitting data to vehicles over limited data links |
| US7307552B2 (en) * | 2005-11-16 | 2007-12-11 | Cisco Technology, Inc. | Method and apparatus for efficient hardware based deflate |
| US8275909B1 (en) | 2005-12-07 | 2012-09-25 | F5 Networks, Inc. | Adaptive compression |
| US7882084B1 (en) | 2005-12-30 | 2011-02-01 | F5 Networks, Inc. | Compression of data transmitted over a network |
| US7873065B1 (en) | 2006-02-01 | 2011-01-18 | F5 Networks, Inc. | Selectively enabling network packet concatenation based on metrics |
| US8565088B1 (en) | 2006-02-01 | 2013-10-22 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
| JP4256397B2 (ja) | 2006-02-17 | 2009-04-22 | 誠 後藤 | ファイル格納装置 |
| US7552363B2 (en) * | 2006-03-23 | 2009-06-23 | Arm Limited | Generation of trace elements within a data processing apparatus |
| US9772981B2 (en) * | 2006-03-29 | 2017-09-26 | EMC IP Holding Company LLC | Combined content indexing and data reduction |
| US20070255570A1 (en) * | 2006-04-26 | 2007-11-01 | Annaz Fawaz Y | Multi-platform visual pronunciation dictionary |
| US8868930B2 (en) | 2006-05-31 | 2014-10-21 | International Business Machines Corporation | Systems and methods for transformation of logical data objects for storage |
| US8832043B2 (en) | 2006-05-31 | 2014-09-09 | International Business Machines Corporation | Method and system for transformation of logical data objects for storage |
| US9356824B1 (en) | 2006-09-29 | 2016-05-31 | F5 Networks, Inc. | Transparently cached network resources |
| US20080120315A1 (en) * | 2006-11-21 | 2008-05-22 | Nokia Corporation | Signal message decompressor |
| US8417833B1 (en) | 2006-11-29 | 2013-04-09 | F5 Networks, Inc. | Metacodec for optimizing network data compression based on comparison of write and read rates |
| US7817630B2 (en) * | 2006-12-18 | 2010-10-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages |
| US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
| US7439887B2 (en) * | 2007-02-13 | 2008-10-21 | Seiko Epson Corporation | Method and apparatus for GIF decompression using fixed-size codeword table |
| US7439882B1 (en) * | 2007-04-05 | 2008-10-21 | Novell, Inc. | Optimized decompression using annotated back buffer |
| US8819288B2 (en) * | 2007-09-14 | 2014-08-26 | Microsoft Corporation | Optimized data stream compression using data-dependent chunking |
| US8078454B2 (en) * | 2007-09-28 | 2011-12-13 | Microsoft Corporation | Two-pass hash extraction of text strings |
| FR2926378B1 (fr) * | 2008-01-14 | 2013-07-05 | Canon Kk | Procede et dispositif de traitement pour l'encodage d'un document de donnees hierarchisees |
| US7688233B2 (en) * | 2008-02-07 | 2010-03-30 | Red Hat, Inc. | Compression for deflate algorithm |
| US8572287B2 (en) * | 2008-02-14 | 2013-10-29 | Blackberry Limited | Method and apparatus for communicating compression state information for interactive compression |
| US8166249B2 (en) * | 2008-03-10 | 2012-04-24 | International Business Machines Corporation | Performing a least recently used (LRU) algorithm for a co-processor |
| US8688654B2 (en) | 2009-10-06 | 2014-04-01 | International Business Machines Corporation | Data compression algorithm selection and tiering |
| US7953881B1 (en) * | 2008-06-12 | 2011-05-31 | Juniper Networks, Inc. | Network characteristic-based compression of network traffic |
| FR2933793B1 (fr) * | 2008-07-11 | 2013-07-05 | Canon Kk | Procedes de codage et de decodage, par referencement, de valeurs dans un document structure, et systemes associes. |
| US8108361B2 (en) * | 2008-07-31 | 2012-01-31 | Microsoft Corporation | Efficient column based data encoding for large-scale data storage |
| US7696906B2 (en) * | 2008-08-13 | 2010-04-13 | International Business Machines Corporation | LZW data compression algorithm |
| US7764202B2 (en) * | 2008-11-26 | 2010-07-27 | Red Hat, Inc. | Lossless data compression with separated index values and literal values in output stream |
| US7764201B2 (en) * | 2008-11-26 | 2010-07-27 | Red Hat, Inc. | Table management for LZW with fixed-size tables |
| US7750826B2 (en) * | 2008-11-26 | 2010-07-06 | Red Hat, Inc. | Data structure management for lossless data compression |
| US8918374B1 (en) * | 2009-02-13 | 2014-12-23 | At&T Intellectual Property I, L.P. | Compression of relational table data files |
| US8874529B2 (en) * | 2009-03-16 | 2014-10-28 | Bert A. Silich | User-determinable method and system for manipulating and displaying textual and graphical information |
| US9160611B2 (en) * | 2009-04-22 | 2015-10-13 | Webroot Inc. | System and method for performing longest common prefix strings searches |
| US8355585B2 (en) * | 2009-05-12 | 2013-01-15 | Red Hat Israel, Ltd. | Data compression of images using a shared dictionary |
| US9438413B2 (en) | 2010-01-08 | 2016-09-06 | Novell, Inc. | Generating and merging keys for grouping and differentiating volumes of files |
| US9298722B2 (en) * | 2009-07-16 | 2016-03-29 | Novell, Inc. | Optimal sequential (de)compression of digital data |
| KR101049699B1 (ko) * | 2009-07-17 | 2011-07-15 | (주)이스트소프트 | 데이터의 압축방법 |
| US7982636B2 (en) * | 2009-08-20 | 2011-07-19 | International Business Machines Corporation | Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries |
| US8832103B2 (en) | 2010-04-13 | 2014-09-09 | Novell, Inc. | Relevancy filter for new data based on underlying files |
| CN103270699B (zh) * | 2010-12-28 | 2016-08-10 | 国际商业机器公司 | 用于确定搜索起点的装置和方法 |
| JPWO2012150637A1 (ja) * | 2011-05-02 | 2014-07-28 | 富士通株式会社 | 抽出方法、情報処理方法、抽出プログラム、情報処理プログラム、抽出装置、および情報処理装置 |
| US20130018932A1 (en) | 2011-07-12 | 2013-01-17 | Hughes Network Systems, Llc | System and method for long range and short range data compression |
| US9363339B2 (en) | 2011-07-12 | 2016-06-07 | Hughes Network Systems, Llc | Staged data compression, including block level long range compression, for data streams in a communications system |
| US9479383B2 (en) | 2011-07-12 | 2016-10-25 | Hughes Network Systems, Llc | Data compression for priority based data traffic, on an aggregate traffic level, in a multi stream communications system |
| GB2496385B (en) | 2011-11-08 | 2014-03-05 | Canon Kk | Methods and network devices for communicating data packets |
| US8542135B2 (en) | 2011-11-24 | 2013-09-24 | International Business Machines Corporation | Compression algorithm incorporating automatic generation of a bank of predefined huffman dictionaries |
| US8610604B2 (en) | 2011-11-24 | 2013-12-17 | International Business Machines Corporation | Compression algorithm incorporating a feedback loop for dynamic selection of a predefined Huffman dictionary |
| US8610606B2 (en) | 2011-11-24 | 2013-12-17 | International Business Machines Corporation | Compression algorithm incorporating dynamic selection of a predefined huffman dictionary |
| US9251143B2 (en) | 2012-01-13 | 2016-02-02 | International Business Machines Corporation | Converting data into natural language form |
| US8593308B1 (en) | 2012-05-31 | 2013-11-26 | International Business Machines Corporation | Method of accelerating dynamic Huffman decompaction within the inflate algorithm |
| US8674856B2 (en) | 2012-08-16 | 2014-03-18 | International Business Machines Corporation | Data compression utilizing longest common subsequence template |
| US8791843B2 (en) | 2012-10-15 | 2014-07-29 | Lsi Corporation | Optimized bitstream encoding for compression |
| US9035809B2 (en) | 2012-10-15 | 2015-05-19 | Seagate Technology Llc | Optimizing compression engine throughput via run pre-processing |
| US9231615B2 (en) | 2012-10-24 | 2016-01-05 | Seagate Technology Llc | Method to shorten hash chains in Lempel-Ziv compression of data with repetitive symbols |
| US20140149605A1 (en) * | 2012-11-26 | 2014-05-29 | Saravana Annamalaisami | Systems and methods for dictionary based compression |
| US9087070B2 (en) * | 2013-01-31 | 2015-07-21 | Yahoo! Inc. | System and method for applying an efficient data compression scheme to URL parameters |
| US9998140B2 (en) | 2013-04-22 | 2018-06-12 | International Business Machines Corporation | Matching pattern combinations via fast array comparison |
| US8804814B1 (en) * | 2013-06-04 | 2014-08-12 | Centri Technology, Inc. | Seeding of a workspace to optimize codec operations |
| US8902087B1 (en) | 2013-08-27 | 2014-12-02 | International Business Machines Corporation | Data decompression utilizing pre-expanded dictionaries during decompression |
| US8933829B2 (en) * | 2013-09-23 | 2015-01-13 | International Business Machines Corporation | Data compression using dictionary encoding |
| JP6319740B2 (ja) * | 2014-03-25 | 2018-05-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
| US9450607B1 (en) * | 2014-07-10 | 2016-09-20 | Google Inc. | Encoding or decoding characters as word in corpus |
| US9805099B2 (en) | 2014-10-30 | 2017-10-31 | The Johns Hopkins University | Apparatus and method for efficient identification of code similarity |
| US9413386B1 (en) * | 2015-02-19 | 2016-08-09 | Qualcomm Incorporated | System, apparatus, and method for decompressing data |
| US10102215B2 (en) * | 2015-03-27 | 2018-10-16 | Intel Corporation | Apparatus for hardware implementation of lossless data compression |
| US9971704B2 (en) | 2015-03-27 | 2018-05-15 | International Business Machines Corporation | Data compression accelerator methods, apparatus and design structure with improved resource utilization |
| US9736081B2 (en) | 2015-06-04 | 2017-08-15 | At&T Intellectual Property I, L.P. | Apparatus and method to improve compression and storage data |
| JP6536243B2 (ja) * | 2015-07-16 | 2019-07-03 | 富士通株式会社 | 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法 |
| US9953058B1 (en) | 2015-07-29 | 2018-04-24 | Levyx, Inc. | Systems and methods for searching large data sets |
| US10339121B2 (en) * | 2015-08-06 | 2019-07-02 | Sap Se | Data compression |
| US9584155B1 (en) * | 2015-09-24 | 2017-02-28 | Intel Corporation | Look-ahead hash chain matching for data compression |
| US10303759B2 (en) | 2015-12-03 | 2019-05-28 | International Business Machines Corporation | Memory preserving parse tree based compression with entropy coding |
| US9513813B1 (en) | 2015-12-18 | 2016-12-06 | International Business Machines Corporation | Determining prefix codes for pseudo-dynamic data compression utilizing clusters formed based on compression ratio |
| US10509580B2 (en) * | 2016-04-01 | 2019-12-17 | Intel Corporation | Memory controller and methods for memory compression utilizing a hardware compression engine and a dictionary to indicate a zero value, full match, partial match, or no match |
| JP6648620B2 (ja) * | 2016-04-19 | 2020-02-14 | 富士通株式会社 | 符号化プログラム、符号化装置および符号化方法 |
| US10303402B2 (en) | 2016-08-02 | 2019-05-28 | Seagate Technology Llc | Data compression using partial statistics |
| US12050557B2 (en) * | 2017-05-19 | 2024-07-30 | Takashi Suzuki | Computerized systems and methods of data compression |
| US10956440B2 (en) | 2017-10-16 | 2021-03-23 | International Business Machines Corporation | Compressing a plurality of documents |
| US10224957B1 (en) * | 2017-11-27 | 2019-03-05 | Intel Corporation | Hash-based data matching enhanced with backward matching for data compression |
| US10097201B1 (en) * | 2017-11-30 | 2018-10-09 | Intel Corporation | LZ77 compression of data with data runs |
| US10128868B1 (en) * | 2017-12-29 | 2018-11-13 | Intel Corporation | Efficient dictionary for lossless compression |
| US10735025B2 (en) * | 2018-03-02 | 2020-08-04 | Microsoft Technology Licensing, Llc | Use of data prefixes to increase compression ratios |
| US20190348999A1 (en) * | 2018-05-12 | 2019-11-14 | Redpine Signals, Inc. | Method and apparatus for compression and decompression of a numerical file |
| US11509328B2 (en) * | 2018-05-31 | 2022-11-22 | Microsoft Technology Licensing, Llc | Computer data compression utilizing multiple symbol alphabets and dynamic binding of symbol alphabets |
| US10897270B2 (en) | 2018-06-06 | 2021-01-19 | Yingquan Wu | Dynamic dictionary-based data symbol encoding |
| US11387844B2 (en) | 2019-04-19 | 2022-07-12 | Preferred Networks, Inc. | Data compression method, data compression apparatus, data decompression method, data decompression apparatus and data storage system |
| US11122095B2 (en) | 2019-09-23 | 2021-09-14 | Netapp, Inc. | Methods for dictionary-based compression and devices thereof |
| DE102019220084B3 (de) * | 2019-12-18 | 2021-03-04 | Continental Automotive Gmbh | Verfahren, ein Sender und ein System zur kontinuierlichen Optimierung der Datenkomprimierung unter Verwendung häufigkeitsbasierter Wörterbuch-Nachschlagetabellen in einem Fahrzeug |
| EP4352626A4 (en) * | 2021-06-11 | 2024-07-24 | Huawei Technologies Co., Ltd. | ADAPTIVE COMPRESSION |
| US11803693B2 (en) * | 2021-06-18 | 2023-10-31 | Microsoft Technology Licensing, Llc | Text compression with predicted continuations |
| US12032524B2 (en) * | 2022-03-03 | 2024-07-09 | FotoNation Limited (Xperi Inc.) | Data decompression apparatus |
| CN115801902B (zh) * | 2023-02-09 | 2023-04-11 | 北京特立信电子技术股份有限公司 | 一种网络访问请求数据的压缩方法 |
| CN115988569B (zh) * | 2023-03-21 | 2023-06-30 | 浙江省疾病预防控制中心 | 一种蓝牙设备数据快速传输方法 |
| CN116683916B (zh) * | 2023-08-03 | 2023-10-10 | 山东五棵松电气科技有限公司 | 一种数据中心容灾系统 |
| CN117113383B (zh) * | 2023-10-19 | 2024-01-26 | 山东万世机械科技有限公司 | 一种设备本地生产数据隐私保护方法及系统 |
| CN117171118B (zh) * | 2023-11-02 | 2024-02-20 | 山东天晴生物科技股份有限公司 | 一种乡村营销数据智能管理系统 |
| CN120729323A (zh) * | 2024-03-29 | 2025-09-30 | 阿里云计算有限公司 | 数据压缩方法、数据解压方法、计算设备、存储介质及程序产品 |
| US12386754B1 (en) * | 2024-05-09 | 2025-08-12 | Dell Products L.P. | Synergistic data compression |
Family Cites Families (42)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US545576A (en) * | 1895-09-03 | Hame-tug | ||
| US4386416A (en) * | 1980-06-02 | 1983-05-31 | Mostek Corporation | Data compression, encryption, and in-line transmission system |
| US4464650A (en) * | 1981-08-10 | 1984-08-07 | Sperry Corporation | Apparatus and method for compressing data signals and restoring the compressed data signals |
| US4814746A (en) * | 1983-06-01 | 1989-03-21 | International Business Machines Corporation | Data compression method |
| US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
| US4672679A (en) * | 1983-08-16 | 1987-06-09 | Wang Laboratories, Inc. | Context redundancy text compression |
| GB2172127B (en) * | 1985-03-06 | 1988-10-12 | Ferranti Plc | Data compression system |
| US4843389A (en) * | 1986-12-04 | 1989-06-27 | International Business Machines Corp. | Text compression and expansion method and apparatus |
| US4881075A (en) * | 1987-10-15 | 1989-11-14 | Digital Equipment Corporation | Method and apparatus for adaptive data compression |
| US4876541A (en) * | 1987-10-15 | 1989-10-24 | Data Compression Corporation | Stem for dynamically compressing and decompressing electronic data |
| US4847619A (en) * | 1987-10-19 | 1989-07-11 | Hewlett-Packard Company | Performance-based reset of data compression dictionary |
| US4906991A (en) * | 1988-04-29 | 1990-03-06 | Xerox Corporation | Textual substitution data compression with finite length search windows |
| GB8815978D0 (en) * | 1988-07-05 | 1988-08-10 | British Telecomm | Method & apparatus for encoding decoding & transmitting data in compressed form |
| US5126739A (en) * | 1989-01-13 | 1992-06-30 | Stac Electronics | Data compression apparatus and method |
| US5016009A (en) * | 1989-01-13 | 1991-05-14 | Stac, Inc. | Data compression apparatus and method |
| US5003307A (en) * | 1989-01-13 | 1991-03-26 | Stac, Inc. | Data compression apparatus with shift register search means |
| DE3921646A1 (de) * | 1989-06-30 | 1991-01-03 | Siemens Ag | Verfahren zu einer codierung einer elementfolge und einrichtung zur durchfuehrung des verfahrens |
| US5058137A (en) * | 1989-07-31 | 1991-10-15 | North American Philips Corporation | Lempel-Ziv decoder |
| US4988998A (en) * | 1989-09-05 | 1991-01-29 | Storage Technology Corporation | Data compression system for successively applying at least two data compression methods to an input data stream |
| US5001478A (en) * | 1989-12-28 | 1991-03-19 | International Business Machines Corporation | Method of encoding compressed data |
| US5023610A (en) * | 1990-06-13 | 1991-06-11 | Cordell Manufacturing, Inc. | Data compression method using textual substitution |
| US5049881A (en) * | 1990-06-18 | 1991-09-17 | Intersecting Concepts, Inc. | Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique |
| US5087913A (en) * | 1990-08-27 | 1992-02-11 | Unisys Corporation | Short-record data compression and decompression system |
| US5179378A (en) * | 1991-07-30 | 1993-01-12 | University Of South Florida | Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques |
| US5140321A (en) * | 1991-09-04 | 1992-08-18 | Prime Computer, Inc. | Data compression/decompression method and apparatus |
| US5155484A (en) * | 1991-09-13 | 1992-10-13 | Salient Software, Inc. | Fast data compressor with direct lookup table indexing into history buffer |
| US5243341A (en) * | 1992-06-01 | 1993-09-07 | Hewlett Packard Company | Lempel-Ziv compression scheme with enhanced adapation |
| US5373290A (en) * | 1991-09-25 | 1994-12-13 | Hewlett-Packard Corporation | Apparatus and method for managing multiple dictionaries in content addressable memory based data compression |
| JP3241788B2 (ja) | 1992-02-28 | 2001-12-25 | 富士通株式会社 | データ圧縮方式 |
| JPH05241775A (ja) | 1992-02-28 | 1993-09-21 | Fujitsu Ltd | データ圧縮方式 |
| US5590317A (en) * | 1992-05-27 | 1996-12-31 | Hitachi, Ltd. | Document information compression and retrieval system and document information registration and retrieval method |
| US5485526A (en) * | 1992-06-02 | 1996-01-16 | Hewlett-Packard Corporation | Memory circuit for lossless data compression/decompression dictionary storage |
| JPH0628149A (ja) | 1992-07-10 | 1994-02-04 | Fujitsu Ltd | 複数種類データのデータ圧縮方法 |
| JPH06161705A (ja) | 1992-11-19 | 1994-06-10 | Fujitsu Ltd | データ符号化方式及びデータ復元方式 |
| US5455576A (en) * | 1992-12-23 | 1995-10-03 | Hewlett Packard Corporation | Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory |
| DE4244272A1 (de) | 1992-12-28 | 1994-06-30 | Daimler Benz Ag | Feldeffektgesteuertes Halbleiterbauelement |
| JP2536422B2 (ja) | 1993-08-31 | 1996-09-18 | 日本電気株式会社 | デ―タ圧縮装置及びデ―タ復元装置 |
| JP3346626B2 (ja) | 1993-11-30 | 2002-11-18 | 京セラ株式会社 | データ圧縮装置 |
| US5572206A (en) | 1994-07-06 | 1996-11-05 | Microsoft Corporation | Data compression method and system |
| US5561421A (en) * | 1994-07-28 | 1996-10-01 | International Business Machines Corporation | Access method data compression with system-built generic dictionaries |
| JPH08162874A (ja) | 1994-11-30 | 1996-06-21 | Kinseki Ltd | 水晶振動子の製造方法 |
| JP3277792B2 (ja) * | 1996-01-31 | 2002-04-22 | 株式会社日立製作所 | データ圧縮方法および装置 |
-
1996
- 1996-08-06 US US08/692,474 patent/US5951623A/en not_active Ceased
-
1997
- 1997-08-04 AT AT97938108T patent/ATE366435T1/de active
- 1997-08-04 DE DE69737892T patent/DE69737892T2/de not_active Expired - Lifetime
- 1997-08-04 JP JP50814798A patent/JP3935952B2/ja not_active Expired - Fee Related
- 1997-08-04 ES ES97938108T patent/ES2289762T3/es not_active Expired - Lifetime
- 1997-08-04 AU AU40512/97A patent/AU721734B2/en not_active Ceased
- 1997-08-04 CA CA002263453A patent/CA2263453C/en not_active Expired - Fee Related
- 1997-08-04 EP EP97938108A patent/EP0970419B1/en not_active Expired - Lifetime
- 1997-08-04 WO PCT/US1997/013681 patent/WO1998006028A1/en not_active Ceased
-
2001
- 2001-09-14 US US09/952,602 patent/USRE41152E1/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| ATE366435T1 (de) | 2007-07-15 |
| JP2000516058A (ja) | 2000-11-28 |
| WO1998006028A1 (en) | 1998-02-12 |
| EP0970419A4 (en) | 2000-05-10 |
| AU4051297A (en) | 1998-02-25 |
| EP0970419A1 (en) | 2000-01-12 |
| DE69737892D1 (de) | 2007-08-16 |
| ES2289762T3 (es) | 2008-02-01 |
| USRE41152E1 (en) | 2010-02-23 |
| US5951623A (en) | 1999-09-14 |
| EP0970419B1 (en) | 2007-07-04 |
| AU721734B2 (en) | 2000-07-13 |
| CA2263453A1 (en) | 1998-02-12 |
| CA2263453C (en) | 2004-10-05 |
| DE69737892T2 (de) | 2008-04-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3935952B2 (ja) | 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術 | |
| WO1998006028A9 (en) | A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases | |
| US4988998A (en) | Data compression system for successively applying at least two data compression methods to an input data stream | |
| US5229768A (en) | Adaptive data compression system | |
| JP3273119B2 (ja) | データ圧縮・伸長装置 | |
| US6012057A (en) | High speed data searching for information in a computer system | |
| Zobel et al. | Adding compression to a full‐text retrieval system | |
| US5532694A (en) | Data compression apparatus and method using matching string searching and Huffman encoding | |
| JP3342700B2 (ja) | ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置 | |
| JPH07104971A (ja) | ネットワークパケットに適用される小型辞書を用いた圧縮方法 | |
| US7764202B2 (en) | Lossless data compression with separated index values and literal values in output stream | |
| JP2863065B2 (ja) | マッチングストリング探索およびハフマン符号化を用いたデータ圧縮装置および方法ならびにデータ伸長装置および方法 | |
| JPH09212395A (ja) | テキスト圧縮用辞書作成装置およびテキスト圧縮装置 | |
| US5424732A (en) | Transmission compatibility using custom compression method and hardware | |
| JPS6356726B2 (ja) | ||
| US5815096A (en) | Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure | |
| JPH10261969A (ja) | データ圧縮方法および装置 | |
| Cannane et al. | A compression scheme for large databases | |
| JP3061278B2 (ja) | 可変ビット長コード語のビット長通信方法 | |
| Korodi et al. | Lossless data compression using optimal tree machines | |
| Zia et al. | Two-level dictionary-based text compression scheme | |
| US7750826B2 (en) | Data structure management for lossless data compression | |
| Ong et al. | A data compression scheme for Chinese text files using Huffman coding and a two-level dictionary | |
| Wirth | Symbol-driven compression of Burrows Wheeler transformed text | |
| Bloom | New Techniques in Context Modeling and Arithmetic Encoding. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040804 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060516 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060815 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20061002 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061116 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070220 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070322 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120330 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140330 Year of fee payment: 7 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |