JPH05128103A - データ圧縮方式 - Google Patents

データ圧縮方式

Info

Publication number
JPH05128103A
JPH05128103A JP3286136A JP28613691A JPH05128103A JP H05128103 A JPH05128103 A JP H05128103A JP 3286136 A JP3286136 A JP 3286136A JP 28613691 A JP28613691 A JP 28613691A JP H05128103 A JPH05128103 A JP H05128103A
Authority
JP
Japan
Prior art keywords
character string
dictionary
character
input
appearance frequency
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.)
Granted
Application number
JP3286136A
Other languages
English (en)
Other versions
JP3384813B2 (ja
Inventor
Yasuhiko Nakano
泰彦 中野
Shigeru Yoshida
茂 吉田
Yoshiyuki Okada
佳之 岡田
Hirotaka Chiba
広隆 千葉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP28613691A priority Critical patent/JP3384813B2/ja
Publication of JPH05128103A publication Critical patent/JPH05128103A/ja
Application granted granted Critical
Publication of JP3384813B2 publication Critical patent/JP3384813B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【目的】 入力された文字列を圧縮するデータ圧縮方式
に関し、辞書への登録を抑制し、符号化に要する時間を
短縮することを目的とする。 【構成】 出現頻度演算手段1は、入力された文字列を
構成する文字の出現数に基づき出現頻度を演算する。生
起確率推定手段2は、この出現頻度に基づいて、新規に
入力された新規入力文字列の生起確率を推定する。辞書
登録手段3は、この生起確率が所定の第1の基準確率値
以上となる場合は、新規入力文字列に識別番号を付して
辞書6に登録する。文字列検索手段4は、辞書6から新
規入力文字列と一致する一致文字列を検索する。符号化
手段5は、この一致文字列に付された識別番号を符号化
して出力する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ圧縮方式に関し、
特に文字の出現頻度を演算して出現頻度から一致検索処
理を制限するデータ圧縮方式に関する。
【0002】近年、著しい技術開発によって、コンピュ
ータの処理速度及び記憶容量等は飛躍的な発展を遂げつ
つある。しかし、コンピュータでベクトル情報及び画像
情報等のデータを扱うようになってからは、従来以上に
取り扱うデータ量が増加しつつある。このようなデータ
量の大幅な増加に対処するため、データの内容を損なわ
ずにデータ量を減らす方式、すなわちデータ圧縮方式が
提案された。
【0003】このデータ圧縮方式は大量のデータを扱う
場合、データに含まれる冗長な部分を省いて符号化する
ことによって、データを圧縮する方式である。データ圧
縮方式によって、データ量を減らすことができ、結果的
に記憶容量を減らすことができる。また、通信では圧縮
したデータを伝送することによって、同一内容の情報を
速く伝送することができる。
【0004】なお、「文字(Character )」及び「文字
列(Character String)」の定義はJIS−C6230
に従うほか、情報理論で用いられている呼称を踏襲し、
1ワード単位で構成されるデータを「文字」と呼び、任
意のワード単位で構成されるデータを「文字列」と呼ぶ
ことにする。
【0005】
【従来の技術】従来、上記のようなデータを圧縮する方
式としては、ユニバーサル符号化方式が提案されてい
る。ユニバーサル符号化方式の代表的な例として、LZ
(Lempel-Ziv)符号化法と算術符号化法とがある。ま
た、LZ符号化法には、ユニバーサル型と増分分解型
(Incrementalpersing )のアルゴリズムが提案されて
いる。さらに、これらのアルゴリズムを改良した符号化
法として、ユニバーサル型に属するLZSS符号化法
と、増分分解型に属するLZW(Lempel-Ziv-Welch)符
号化法とがある。
【0006】なお、LZ符号化法は、例えば、宗像清治
著「Lempel-Zivデータ圧縮法」、情報処理、pp.2〜6, V
ol.26, No.1, 1985 に詳しく掲載されている。また、L
ZSS符号化法は、T.C. Bell, "Better OPM/L Text Co
mpression", IEEE Trans.onCommu., Vol.COM-34, No.1
2, Dec.1986 に詳しく掲載されている。さらに、LZW
符号化法は、T.A. Welch, "A Technique for High-Perf
ormance Data Compression", Computer, Jun.1984 に詳
しく掲載されている。そして、増分分解型の符号化法及
びLZW符号化法は、特開昭59−231683号、米国特許N
o. 4,558,302号において開示されている。
【0007】これらの符号化法のうち、高速処理がで
き、アルゴリズムが簡単であるという利点から、一般的
にLZW符号化法が使用されてきた。LZW符号化法
は、書き換え可能な辞書をもち、以下に示す処理によっ
て符号化を行う方法である。まず、新規の入力文字列を
相異なる部分文字列に分割し、この部分文字列が辞書に
登録されてなければ、出現した順に識別番号を付して全
て辞書に登録する。同時に、現在入力している部分文字
列のうち、最長の部分文字列と一致する部分文字列を辞
書から選択し、選択した部分文字列に付されている識別
番号で符号化する。また、ある区間における圧縮率が所
定値よりも低いときは、それまで学習により蓄積してき
た部分文字列を有する辞書を破棄し、新たに辞書を構築
した。
【0008】図5は、辞書の木構造の一例を示す図であ
る。この辞書の木構造は、LZ符号化法に含まれる増分
分解型のアルゴリズムによる符号化の際に用いられる辞
書の内部構造を示したものである。図において、丸数字
は識別番号を示し、この丸数字が付されている箇所を
「ノード(node;節)」と呼ぶ。
【0009】辞書50は、ルート(root;根)51を起
点とする。このルート51には、文字は割り当てられな
い。そして、ルート51の一階層下、すなわち第1階層
52には一文字目の文字が登録される。この一文字目の
文字の登録は、相異なる文字が登録され、主に辞書50
の初期化の時に行われる。図には「a」,「b」及び
「c」の3文字が登録されているが、実際には8ビット
のデータで表現可能な256文字が登録される。
【0010】そして、第2階層53から下の階層は、情
報源から入力された文字列を学習することによって登録
される文字である。なお、一つ下の階層を有するノード
を「枝(branch)」と呼び、一つ下の階層を有するノー
ドを「葉(leaf)」と呼ぶ。したがって、図では丸数字
の25,26,13,14,27,28,16,6,・
・・,22,23,24のノードが「葉」であり、その
他のノードは「枝」である。
【0011】なお、あるノードが現在は「葉」であって
も、学習により「枝」となる可能性がある。例えば、
「acd」という文字列を辞書50に登録する場合、文
字列「ac」は第1階層52が「a」(丸数字1)、第
2階層53が「c」(丸数字6)として登録されている
ので、第2階層53の「c」の下の第3階層54に、新
たに「d」を登録することになる。このとき、丸数字6
のノードは「葉」から「枝」に変わる。
【0012】次に、この辞書50を使用した圧縮処理の
アルゴリズムについて説明する。図6は、LZW符号化
法による圧縮処理のアルゴリズムを示すフローチャート
である。図において、Sの後に続く数字はステップ番号
を示す。
【0013】〔S61〕初期化処理を行う。具体的に
は、辞書Dの初期化及び変数nの初期化を行う。辞書D
の初期化では、相異なる1文字からなる文字列を全て辞
書Dに登録する。すなわち、 D(i)=i (i=1,2,・・・,A) を行う。ここで、Aはアルファベットの大きさを表し、
通常256である。また、変数nの初期化では、辞書D
の初期化で登録した文字の種類数、すなわちアルファベ
ットの大きさAを設定する。さらに、新規に入力する文
字列の先頭に、カーソルが位置付けられるように設定す
る。
【0014】〔S62〕文字列検索処理を行う。すなわ
ち、入力ストリーム(input stream)から新規に文字列
を入力する。その後、カーソル位置に示される文字から
の文字列と一致する文字列のうち、最大長の文字列を辞
書Dから検索する。もし、入力する文字列がなければ、
圧縮処理を終了する。
【0015】〔S63〕符号化処理を行う。すなわち、
ステップS62において検索された文字列に付された識
別番号を符号化して出力ストリーム(output stream )
へ出力する。例えば、検索によって得られた文字列の識
別番号をrとすると、ビット数が〔log2r〕の2進数符
号に変換して出力する。ここで、記号〔x〕は数値x以
上の整数のうち、最小の整数を表す。以下、この意味で
記号〔x〕を用いることにする。
【0016】〔S64〕文字列処理を行う。すなわち、
カーソル位置に示される最初の文字を保存しておき、ス
テップS62で入力した現在の入力文字列につづく文字
列の先頭に、カーソルが位置付けられるように設定す
る。
【0017】〔S65〕辞書登録判別を行う。具体的に
は、変数nが辞書Dに登録可能な最大値NMAXを超え
ているか否かを判別する。もし、変数nが最大値NMA
Xを超えていなければ(YES)ステップS66に進
み、超えていれば(NO)ステップS67に進む。
【0018】〔S66〕辞書登録処理を行う。すなわ
ち、変数nを1だけ増加(以下、1だけ増加する操作を
「インクリメント」と呼ぶ。)する。その後、現在の入
力文字列にステップS64で保存した文字を付加した文
字列に、識別番号をnとして辞書Dに登録する。そし
て、次の文字列を処理するためステップS62に戻る。
【0019】〔S67〕圧縮率の悪化を判別する。すな
わち、 圧縮率=(入力文字列の全ビット数)/(符号の全ビッ
ト数) を演算し、圧縮率が低下していないかどうか判別する。
もし、圧縮率が悪化(低下)していれば(YES)ステ
ップS61に戻り、悪化していなければ(NO)ステッ
プS62に戻る。
【0020】このように、従来のLZW符号化法では、
辞書登録において辞書が一杯になった場合、すなわち辞
書の最大アドレスまで登録が行われた場合には辞書への
登録を中止した。そして、入力文字列が所定量、例えば
数 100キロバイトの単位毎に圧縮率を判別し、今回の圧
縮率が前回の圧縮率より低くなった場合は辞書を初期化
していた。この理由は、入力されるデータ(文字列)が
蓄積された辞書の統計的性質とは大きく異なるため、圧
縮率がさらに悪化すると判断したからである。
【0021】また、算術符号化法には、例えば、複数個
のシンボルの符号化に用いる多値算術符号化法がある。
多値算術符号化法は、入力文字列を〔0,1)の数直線
上の一点に対応付け、入力文字列ごとに出現した文字列
の出現確率から演算した累積出現確率によって、〔0,
1)区間を逐次に細分化する方法である。実際の多値算
術符号化法では、有限桁の固定長レジスタで種々の演算
を行うため、ビット単位に符号化することができる。な
お、多値算術符号化法は、I.H. Witten 他, "Arimetic
Coding for Data Compression", Commu. of ACM,Vol.3
0, No.6, 1987に詳しく掲載されている。ここで、上記
の〔x,y)区間とは数値がx以上y未満(xは含まれ
るが、yは含まれない)の区間のことである。
【0022】図7は、多値算術符号化法による圧縮処理
のアルゴリズムを示すフローチャートである。図におい
て、Sの後に続く数字はステップ番号を示す。 〔S71〕初期化処理を行う。具体的には、辞書Dの初
期化と変数の初期化を行う。辞書Dの初期化では、相異
なる1文字からなる文字列を全て辞書Dに登録する。す
なわち、 D(i)=i (i=1,2,・・・,A) を行う。ここで、Aはアルファベットの大きさを表し、
通常256である。また、変数nの初期化では、算術用
1次元配列I、出現頻度1次元配列freq及び累積出現頻
度1次元配列cum-freqを初期化する。すなわち、 I(i)=i (i=1,2,・・・,A) freq(i) =1 (i=1,2,・・・,A) cum-freq(i) =A−i (i=1,2,・・・,A) を行う。
【0023】〔S72〕文字入力処理を行う。すなわ
ち、入力ストリームから新規に1文字kを入力する。 〔S73〕ステップS72で新規に文字を入力したか否
かの判別を行う。もし、新規に文字を入力した(YE
S)ならばステップS74に進み、新規に文字を入力し
なかった(NO)ならば本圧縮処理を終了する。
【0024】〔S74〕多値算術符号化処理を行う。す
なわち、ステップS72で入力された文字kに対応する
算術用1次元配列Iから算術値jを得る。すなわち、 j=I(k),i=D(j) により、jを多値算術化する。また、この算出値jを符
号化して出力ストリームに出力する。このとき、出力さ
れるビット数は〔j〕である。
【0025】〔S75〕交換処理を行う。すなわち、出
現頻度1次元配列freqに示される配列から最大の出現頻
度を求め、この出現頻度に対応する配列番号rとステッ
プS72で得られた算術値jとについて、算術用1次元
配列I及び辞書D内の文字列を交換する。すなわち、I
(r)とI(j)の値、およびD(r)とD(j)の値
を交換する。
【0026】〔S76〕累積出現頻度1次元配列cum-fr
eqのソート処理を行う。具体的には、まずステップS7
5で得られた出現頻度1次元配列freqの配列番号rで示
される内容をインクリメントする。そして、配列番号r
よりも小さな配列番号について、一つ大きな配列番号の
出現頻度1次元配列freqに入っている累積出現頻度を注
目する配列番号の出現頻度1次元配列freqに代入する処
理を行う。すなわち、 cum-freq(r) =cum-freq(r)+1 cum-freq(i) =cum-freq(i+1) (i= r-1, r-2,・・・,1) を行う。そして、次の文字処理のため、ステップS72
に戻る。
【0027】さらに、他の多値算術符号化法として、多
重の履歴から条件付確率を符号化することによって、高
い圧縮率を得る方法が発表されている。この方法は、例
えば、D.M. Abramson, "An Adaptive Dependancy Sourc
e Model for Data Compression", Commu. of ACM, Vol.
30, No.6, 1987、又は J.G. Cleary 他, "Data Compre
ssion Using Adaptive Coding and Partial String Mat
ching", Commu. of ACM, Vol.30, No.6, 1987 に詳しく
掲載されている。
【0028】図8は、多重履歴に基づく多値算術符号化
法による圧縮処理のアルゴリズムを示すフローチャート
である。なお、このフローチャートには1重履歴に基づ
く多値算術符号化法による圧縮処理を示す。図におい
て、Sの後に続く数字はステップ番号を示す。
【0029】〔S81〕初期化処理を行う。具体的に
は、辞書Dの初期化と変数の初期化を行う。辞書Dの初
期化では、相異なる1文字からなる文字列を全て辞書D
に登録する。すなわち、 D(p,i)=i (p,i=1,2,・・・,A) を行う。ここで、Aはアルファベットの大きさを表し、
通常256である。また、変数の初期化では、算術用2
次元配列I、出現頻度2次元配列freq、累積出現頻度2
次元配列cum-freq及び直前文字pを初期化する。すなわ
ち、 I(p,i)=i (p,i=1,2,・・・,A) freq(p,i)=1 (p,i=1,2,・・・,A) cum-freq(i) =A−i (i=1,2,・・・,A) p=1 を行う。
【0030】〔S82〕文字入力処理を行う。すなわ
ち、入力ストリームから新規に1文字kを入力する。 〔S83〕ステップS82で新規に文字を入力したか否
かの判別を行う。もし、新規に文字を入力した(YE
S)ならばステップS84に進み、新規に文字を入力し
なかった(NO)ならば本圧縮処理を終了する。
【0031】〔S84〕多値算術符号化処理を行う。す
なわち、ステップS82で入力された文字kに対応する
算術用2次元配列Iから算術値jを得る。すなわち、 j=I(p,k),i=D(p,j) により、jを多値算術化する。また、この算出値jを符
号化して出力ストリームに出力する。このとき、出力さ
れるビット数は〔j〕である。
【0032】〔S85〕交換処理を行う。すなわち、出
現頻度2次元配列freqに示される配列から最大の出現頻
度を求め、この出現頻度に対応する配列番号rとステッ
プS82で得られた算術値jとについて、算術用2次元
配列I及び辞書D内の文字列を交換する。すなわち、I
(p,r)とI(p,j)の値、およびD(p,r)と
D(p,j)の値を交換する。
【0033】〔S86〕累積出現頻度2次元配列cum-fr
eqのソート処理を行う。ステップS85で得られた出現
頻度2次元配列freqの配列番号rの値をインクリメント
する。また、配列番号rよりも小さな配列番号につい
て、一つ大きな配列番号の出現頻度2次元配列freqに入
っている累積出現頻度を注目する配列番号の出現頻度2
次元配列freqに代入する処理を行う。すなわち、 cum-freq(r) =cum-freq(r)+1 cum-freq(i) =cum-freq(i+1) (i= r-1, r-2,・・・,1) を行う。
【0034】〔S87〕直前文字設定を行う。すなわ
ち、今回新規に入力した文字kを改めて直前文字pとし
て設定する。そして、次の文字処理のため、ステップS
82に戻る。
【0035】
【発明が解決しようとする課題】従来のLZW符号化法
では、辞書内の文字列と入力文字列とを照合して圧縮を
行うので処理速度は速い。しかし、稀にしか参照されな
い文字列でさえも辞書に登録されていたため、辞書に登
録する文字列に付される識別番号が大きくなってしま
い、この識別番号を符号化するときのビット数も増え、
圧縮効率が低下するという問題点があった。
【0036】また、辞書を破棄することによって、それ
まで学習により蓄積してきた文字列が有効に利用できな
くなるため、かえって圧縮効率が低下していた。これを
解決するため、本出願人は特願平2-275836号において開
示したように、辞書内の各文字列に、最近参照されたか
否かを示すフラグを付した。そして、このフラグによっ
て最近参照された文字列のみを区別し、再構築する辞書
に残すようにした。これによって、学習して辞書に登録
した文字列を生かすようにした。
【0037】しかし、辞書の再構築には、最近参照され
た文字列か否かを判別しなければならないため、かなり
の時間を要していた。したがって、全符号化処理が終わ
るまでには時間がかかるという問題点があった。
【0038】一方、従来の多値算術符号化法では、出現
確率に基づき文字ごとに符号化を行うので高い圧縮率が
得られるが、この符号化には複雑な算術処理を行わなけ
ればならず、複雑な算術処理のために時間がかかるとい
う問題点があった。
【0039】本発明はこのような点に鑑みてなされたも
のであり、辞書へ登録する文字列を抑えて、符号化に必
要な時間を短縮するデータ圧縮方式を提供することを目
的とする。
【0040】
【課題を解決するための手段】図1に本発明の原理説明
図を示す。出現頻度演算手段1は、入力された文字列を
構成する文字の出現数に基づき、出現頻度を演算する。
生起確率推定手段2は、この出現頻度に基づき、新規に
入力された新規入力文字列の生起確率を推定する。辞書
登録手段3は、この生起確率が所定の第1の基準確率値
以上となるときは、新規入力文字列に識別番号を付して
辞書6に登録する。文字列検索手段4は、辞書6から、
新規入力文字列と一致する一致文字列を検索する。符号
化手段5は、この一致文字列に付された識別番号を符号
化して出力する。
【0041】また、出現頻度演算手段1は、入力された
文字列を構成する文字と、文字が出現した出現数を全て
記憶し、出現数に基づき出現頻度を演算する。あるい
は、予め全文字列を入力し、全文字列を構成する文字と
文字が出現した出現数とを全て記憶し、新規に入力され
た新規入力文字列を構成する文字毎に出現数に加え、出
現数に基づき出現頻度を演算する。
【0042】さらに、生起確率推定手段2は、特定のデ
ータから始まる文字列の生起確率である条件付確率を推
定する。また、特定のデータは、特に新規入力文字列の
直前に入力された入力文字列の中の最終文字とする。
【0043】そして、文字列検索手段4は、辞書6に登
録された文字列のうち、新規入力文字列と一致する一致
文字列を検索する。あるいは、新規入力文字列を相異な
る部分文字列に分割し、辞書6に登録された文字列のう
ち、部分文字列と一致する一致文字列を検索し、一致文
字列のうち文字列長が最長である文字列を選択する。ま
た、この一致文字列は、特に生起確率が所定の第2の基
準確率値以上となる文字列とする。
【0044】それから、辞書登録手段3は、新規入力文
字列の符号化による圧縮率が悪化した場合には、辞書6
を再構成する手段を設ける。
【0045】
【作用】出現頻度演算手段1は、入力された文字列を構
成する文字の出現数に基づき、出現頻度を演算する。生
起確率推定手段2は、出現頻度に基づき、新規に入力さ
れた新規入力文字列の生起確率を推定する。辞書登録手
段3は、この生起確率が所定の第1の基準確率値以上と
なる場合は、新規入力文字列に識別番号を付して辞書6
に登録する。文字列検索手段4は、辞書6から新規入力
文字列と一致する一致文字列を検索する。符号化手段5
は、この一致文字列に付された識別番号を符号化して出
力する。したがって、辞書6への登録が抑えられるた
め、識別番号の増加も抑えられ、符号化効率を高めるこ
とができる。
【0046】また、出現頻度演算手段1は、入力された
文字列を構成する文字と文字が出現した出現数とを全て
記憶し、出現数に基づき出現頻度を演算する。あるい
は、予め全文字列を入力し、全文字列を構成する文字と
文字が出現した出現数とを全て記憶し、新規に入力され
た新規入力文字列を構成する文字毎に出現数に加え、出
現数に基づき出現頻度を演算する。これによって、出現
頻度の高い文字列のみが辞書6に登録されるため、辞書
6が極度に大きくなるのを抑えることができる。
【0047】さらに、生起確率推定手段2は、特定のデ
ータから始まる文字列の生起確率である条件付確率を推
定する。また、特定のデータは、特に新規入力文字列の
直前に入力された入力文字列の中の最終文字とすること
によって、文字のつながりの関連性が高い文字列が辞書
6に登録されるため、入力される文字列(データ)に適
した符号を出力することができる。
【0048】そして、文字列検索手段4は、辞書6に登
録された文字列のうち、新規入力文字列と一致する一致
文字列を検索する。あるいは、新規入力文字列を相異な
る部分文字列に分割し、辞書6に登録された文字列のう
ち、部分文字列と一致する一致文字列を検索し、一致文
字列のうち文字列長が最長である文字列を選択する。ま
た、この一致文字列は、特に生起確率が所定の第2の基
準確率値以上となる文字列とする。これにより、所定の
文字列に対して最適な符号化処理が行え、圧縮率を高め
ることができる。
【0049】それから、辞書登録手段3は、新規入力文
字列の符号化による圧縮率が悪化した場合には、辞書6
を再構築して、圧縮率の悪化を防ぐことができる。
【0050】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。図2は、本発明の実施例を示すフローチャート
である。この符号化処理手順は、出現頻度に以前入力し
た文字の履歴を考慮しない、いわゆる0重マルコフ・モ
デルに適応させた符号化処理手順である。図において、
Sの後に続く数字はステップ番号を示す。
【0051】〔S21〕初期化処理を行う。具体的に
は、変数の初期化として、各文字の出現の頻度を計数す
るための出現頻度1次元配列freqを初期化する。すなわ
ち、 freq(i) =1 (i=1,2,・・・,A) を行う。ここで、Aはアルファベットの大きさを表し、
通常256である。また、辞書登録数を示す変数nの初
期化では、辞書Dの初期化で登録した文字の種類数、す
なわちアルファベットの大きさAを設定する。さらに、
新規に入力する文字列の先頭にカーソルが位置付けられ
るように設定する。
【0052】〔S22〕辞書構築を行う。まず、情報源
から新規に文字列を入力しながら、文字総数T及び出現
確率1次元配列pを求める。すなわち、 T=Σfreq(i) (i=1,2,・・・,A) p(i) =freq(i) /T (i=1,2,・・・,A) を行う。そして、辞書Dの構築では、式 p(1) p(2) p(3) ・・・p(A) T≧C を満たす全ての文字列を識別番号とともに辞書Dに登録
する。ここで、定数Cは無制限に文字列を辞書Dに登録
するのを避けるための所定値である。また、入力する文
字列の先頭にカーソルが位置付けられるように、改めて
設定する。
【0053】〔S23〕文字列入力検査を行う。すなわ
ち、入力ストリームから新規に文字列を入力されるか否
かを判定する。もし、文字列が入力された(YES)な
らばステップS24に進み、文字列が入力されなかった
(NO)ならば本圧縮処理を終了する。
【0054】〔S24〕文字列検索処理を行う。具体的
には、カーソルの位置からの文字列と一致する文字列を
辞書Dから検索する。このとき、辞書Dからは、式 p(1) p(2) p(3) ・・・p(A) T≧(C+α) を満たす文字列のみを検索する。ここで、定数αは辞書
Dを新たに作る余地を確保するための所定値である。ま
た、検索された文字列のうち、最も文字数が多い文字列
を最大一致文字列Sとする。逆に、上記の式を満足する
文字列が検索されなかったならば、この文字列に新しい
識別番号を付す。
【0055】〔S25〕符号出力を行う。すなわち、最
大一致文字列S又はステップS24で検索されなかった
文字列に付されている識別番号を〔n〕ビットで符号化
して出力する。
【0056】〔S26〕出現頻度インクリメントを行
う。すなわち、ステップS25で符号化した文字列に対
応する出現頻度1次元配列freqをインクリメントする。
また、文字総数T及び出現確率1次元配列pを改めて求
める。すなわち、 T=Σfreq(i) (i=1,2,・・・,A) p(i) =freq(i) /T (i=1,2,・・・,A) を行う。
【0057】〔S27〕辞書登録を行う。すなわち、ス
テップS24で検索されなかった文字列に、前回ステッ
プS28で記憶した先頭文字kを付加して、辞書登録の
ための登録文字列を作る。そして、この登録文字列を識
別番号とともに辞書Dに登録する。また、辞書登録を行
なったときは変数nをインクリメントする。
【0058】〔S28〕カーソル位置設定を行う。具体
的には、ステップS25で符号化した文字列の先頭の文
字を先頭文字kとして記憶する。そして、次に入力する
文字列を処理するために、この文字列の次の文字に位置
付けする。
【0059】〔S29〕圧縮率の悪化を判別する。すな
わち、入力された文字列の所定量、例えば数 100キロバ
イトごとの文字列について、 圧縮率=(所定の入力文字列の全ビット数)/(符号の
全ビット数) を演算し、圧縮率が低下していないかどうか判別する。
もし、圧縮率が悪化(低下)していれば(YES)ステ
ップS22に戻り、悪化していなければ(NO)ステッ
プS23に戻る。なお、ステップS22に戻る場合は、
辞書Dが再構築される。
【0060】図3は、多重履歴に基づく辞書の木構造の
一例を示す図である。この辞書の木構造は、出現頻度に
以前入力した一文字前の履歴を考慮した、いわゆる1重
マルコフ・モデルに適応させた符号化処理の際に用いら
れる辞書の内部構造を示したものである。図において、
丸数字は識別番号を示し、この丸数字が付されている箇
所を「ノード(node;節)」と呼ぶ。
【0061】図において、辞書30は、直前文字31a
からなる部分辞書31、直前文字32aからなる部分辞
書32及び直前文字33aからなる部分辞書33から構
成される。しかし、実際には8ビットのデータで表現可
能な256の直前文字からなる部分辞書から構成され
る。これらの部分辞書31、部分辞書32及び部分辞書
33等の各部分辞書は、図5で示した木構造と同様の構
造をしている。
【0062】この辞書30を使用して、辞書登録及び検
索は次のような手順で行われる。まず、直前文字によっ
て、いずれかの部分辞書が選択される。そして、登録又
は検索する文字列について、選択された部分辞書の中か
ら登録又は検索が行われる。例えば、直前文字が「a」
として、文字列「bab」を検索する場合、まず直前文
字が「a」であることから部分辞書31が選択される。
そして、この部分辞書31について、文字列「bab」
はノードの丸数字2,7,12をたどることによって検
索される。
【0063】次に、この辞書30を使用した圧縮処理の
アルゴリズムについて説明する。図4は、本発明の他の
実施例を示すフローチャートである。この符号化処理手
順は、出現頻度に以前入力した一文字前の履歴を考慮し
た、いわゆる1重マルコフ・モデルに適応させた符号化
処理手順である。図において、Sの後に続く数字はステ
ップ番号を示す。
【0064】〔S40〕初期化処理を行う。具体的に
は、変数の初期化として、まず文字jの後に文字iが出
現する頻度を計数するための出現頻度2次元配列freqを
初期化する。すなわち、 freq(i,j) =1 (i,j=1,2,・・・,A) を行う。ここで、Aはアルファベットの大きさを表し、
通常256である。また、辞書登録数を示す変数nの初
期化では、辞書Dの初期化で登録した文字の種類数、す
なわちアルファベットの大きさAを設定する。さらに、
新規に入力する文字列の先頭にカーソルが位置付けられ
るように設定する。
【0065】〔S41〕辞書構築を行う。まず、情報源
から新規に文字列を入力しながら、文字総数T、履歴出
現確率1次元配列p(i|j)及び特定文字出現確率1次元
配列p(k) を求める。すなわち、 T=Σfreq(i,j) (i,j=1,2,・・・,A) p(i|j)=freq(i,j)/(p(j) T) (i,j=1,2,・・・,A) p(k) =Σp(k|j) (j,k=1,2,・・・,A) を行う。そして、辞書Dの構築では、式 p(k) p(1|k)p(2|1)p(3|2)・・・p(n|n-1)T≧C を満たす全ての文字列を識別番号とともに辞書Dに登録
する。ここで、定数Cは無制限に文字列を辞書Dに登録
するのを避けるための所定値である。また、入力する文
字列の先頭にカーソルが位置付けられるように、改めて
設定する。ここで、p(i|j)は特定の文字jが出現した
後に、文字iが出現する条件付確率を示す。
【0066】〔S42〕文字列入力検査を行う。すなわ
ち、入力ストリームから新規に文字列を入力されるか否
かを判定する。もし、文字列が入力された(YES)な
らばステップS43に進み、文字列が入力されなかった
(NO)ならば本圧縮処理を終了する。
【0067】〔S43〕文字列検索処理を行う。具体的
には、カーソルの位置からの文字列と一致する文字列を
辞書Dから検索する。このとき、辞書Dからは、式 p(k) p(1|k)p(2|1)p(3|2)・・・p(n|n-1)T≧(C+α) を満たす文字列のみを検索する。ここで、定数αは辞書
Dを新たに作る余地を確保するための所定値である。ま
た、検索された文字列のうち、最も文字数が多い文字列
を最大一致文字列Sとする。逆に、上記の式を満足する
文字列が検索されなかったならば、この文字列に新しい
識別番号を付す。
【0068】〔S44〕符号出力を行う。すなわち、最
大一致文字列S又はステップS45で検索されなかった
文字列に付されている識別番号を〔n〕ビットで符号化
して出力する。
【0069】〔S45〕出現頻度インクリメントを行
う。すなわち、ステップS44で符号化した文字列のう
ち、直前文字rを含む文字列に対応する出現頻度2次元
配列freqをインクリメントする。また、履歴出現確率1
次元配列p(i|j)及び特定文字出現確率1次元配列p
(k) を改めて求める。すなわち、 T=Σfreq(i,j) (i,j=1,2,・・・,A) p(i|j)=freq(i,j)/(p(j) T) (i,j=1,2,・・・,A) p(k) =Σp(k|j) (j,k=1,2,・・・,A) を行う。
【0070】〔S46〕辞書登録を行う。すなわち、ス
テップS43で検索されなかった文字列に、前回ステッ
プS47で記憶した先頭文字kを付加して、辞書登録の
ための登録文字列を作る。そして、この登録文字列を識
別番号とともに辞書Dに登録する。また、辞書登録を行
なったときは変数nをインクリメントする。
【0071】〔S47〕直前文字設定を行う。具体的に
は、ステップS44で符号化した文字列の最終の文字を
直前文字rとして記憶する。 〔S48〕カーソル位置設定を行う。具体的には、ステ
ップS44で符号化した文字列の先頭の文字を先頭文字
kとして記憶する。そして、次に入力する文字列を処理
するために、この文字列の次の文字に位置付けする。
【0072】〔S49〕圧縮率の悪化を判別する。すな
わち、入力された文字列の所定量、例えば数 100キロバ
イトごとの文字列について、 圧縮率=(所定の入力文字列の全ビット数)/(符号の
全ビット数) を演算し、圧縮率が低下していないかどうか判別する。
もし、圧縮率が悪化(低下)していれば(YES)ステ
ップS41に戻り、悪化していなければ(NO)ステッ
プS42に戻る。
【0073】上記他の実施例では、直前文字rを考慮し
ないで辞書構築(ステップS41)を行なったが、直前
文字rを考慮して、 p(1|r)p(2|1)p(3|2)・・・p(n|n-1)T≧Cr を満たす全ての文字列を識別番号とともに辞書Dr に登
録し、辞書Drからの文字列検索(ステップS43)で
は、式 p(1|r)p(2|1)p(3|2)・・・p(n|n-1)T≧(Cr +α) を満たす文字列のみを検索するようにしてもよい。ここ
で、定数Cr は無制限に文字列を辞書Dr に登録するの
を避けるための所定値である。これにより、辞書登録を
行うにあたって、より適切な文字列のみが選択されるた
め、識別番号の増加も抑えることができる。また、辞書
からの検索時間をより短縮することができ、圧縮率もよ
り高めることができる。
【0074】上記の実施例の説明では、初期化処理では
出現頻度freqを1で初期化したが、入力する文字列(デ
ータ)の性質(例えば、文字データあるいは画像データ
等)によって、統計から推定した所定の値で初期化する
ようにしてもよい。
【0075】また、識別番号を符号化する際、〔識別番
号〕のビット数からなる符号で出力したが、本出願人が
特願平3-130623号において開示したように、ビット端数
補償、Phasing in Binary Codes、あるいは多値算術符
号からなる符号で出力してもよい。
【0076】さらに、辞書の再構築は圧縮率の悪化(低
下)を判別することにより行なったが、文字の出現頻度
の計数値の悪化を判別することにより行なってもよい。
文字の出現頻度の計数値としては、例えば全文字の出現
頻度の合計値等がある。
【0077】なお、上記の各実施例は、ワークステーシ
ョン等における文字コード、ベクトル情報、画像データ
などの圧縮に応用され、記憶容量を大幅に削減すること
ができる。
【0078】また、通信回線を利用したデータ送受信に
おいても応用でき、通信時間の短縮を図ることができ
る。例えば、モデム、ファクシミリ等の通信機器に応用
できる。
【0079】
【発明の効果】以上説明したように本発明では、新規に
入力された新規入力文字列について、新規入力文字列を
構成する各文字の出現頻度に基づき演算された生起確率
が所定の基準確率値以上になる場合、この新規入力文字
列に識別番号を付して辞書に登録し、辞書に登録された
文字列のうち、別の新規入力文字列と一致する一致文字
列を検索し、検索された一致文字列に付された識別番号
を符号化して出力するように構成したので、辞書への登
録を抑えることができる。したがって、識別番号の増加
も抑制され、符号化効率を高めることができる。
【0080】また、辞書に登録される文字列が抑えられ
るため、検索が速くなり、符号化処理全体も速くなる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明の実施例を示すフローチャートである。
【図3】多重履歴に基づく辞書の木構造の一例を示す図
である。
【図4】本発明の他の実施例を示すフローチャートであ
る。
【図5】辞書の木構造の一例を示す図である。
【図6】LZW符号化法による圧縮処理のアルゴリズム
を示すフローチャートである。
【図7】多値算術符号化法による圧縮処理のアルゴリズ
ムを示すフローチャートである。
【図8】多重履歴に基づく多値算術符号化法による圧縮
処理のアルゴリズムを示すフローチャートである。
【符号の説明】
1 第1の出現頻度演算手段 2 生起確率推定手段 3 辞書登録手段 4 第1の文字列検索手段 5 符号化手段 6 辞書
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 情報源から入力された文字列を、符号化
    することにより圧縮して出力するデータ圧縮方式におい
    て、 入力された文字列を構成する文字の出現数に基づき、出
    現頻度を演算する出現頻度演算手段(1)と、 前記出現頻度に基づき、新規に入力された新規入力文字
    列の生起確率を推定する生起確率推定手段(2)と、 前記生起確率が所定の第1の基準確率値以上となる場合
    は、前記新規入力文字列に識別番号を付して辞書(6)
    に登録する辞書登録手段(3)と、 前記辞書(6)から、前記新規入力文字列と一致する一
    致文字列を検索する文字列検索手段(4)と、 前記一致文字列に付された前記識別番号を、符号化して
    出力する符号化手段(5)と、 を有することを特徴とするデータ圧縮方式。
  2. 【請求項2】 前記出現頻度演算手段(1)は、前記入
    力された文字列を構成する文字と、前記文字が出現した
    出現数とを全て記憶し、前記出現数に基づき出現頻度を
    演算するように構成したことを特徴とする請求項1記載
    のデータ圧縮方式。
  3. 【請求項3】 前記出現頻度演算手段(1)は、予め全
    文字列を入力し、前記全文字列を構成する文字と前記文
    字が出現した出現数とを全て記憶し、新規に入力された
    新規入力文字列を構成する文字毎に前記出現数に加え、
    前記出現数に基づき出現頻度を演算するように構成した
    ことを特徴とする請求項1記載のデータ圧縮方式。
  4. 【請求項4】 前記生起確率推定手段(2)は、特定の
    データから始まる文字列の生起確率である条件付確率を
    推定するように構成したことを特徴とする請求項1,
    2,又は3記載のデータ圧縮方式。
  5. 【請求項5】 前記特定のデータは、前記新規入力文字
    列の直前に入力された入力文字列の中の最終文字である
    ように構成したことを特徴とする請求項4記載のデータ
    圧縮方式。
  6. 【請求項6】 前記文字列検索手段(4)は、前記辞書
    (6)に登録された文字列のうち、前記新規入力文字列
    と一致する一致文字列を検索するように構成したことを
    特徴とする請求項1〜5のいずれか1項に記載のデータ
    圧縮方式。
  7. 【請求項7】 前記文字列検索手段(4)は、前記新規
    入力文字列を相異なる部分文字列に分割し、前記辞書
    (6)に登録された文字列のうち、前記部分文字列と一
    致する一致文字列を検索し、前記一致文字列のうち文字
    列長が最長である文字列を選択するように構成したこと
    を特徴とする請求項1〜5のいずれか1項に記載のデー
    タ圧縮方式。
  8. 【請求項8】 前記一致文字列は、生起確率が所定の第
    2の基準確率値以上となる文字列であるように構成した
    ことを特徴とする請求項6又は請求項7記載のデータ圧
    縮方式。
  9. 【請求項9】 前記辞書登録手段(3)は、前記新規入
    力文字列の符号化による圧縮率が悪化した場合には、前
    記辞書(6)を再構築するように構成したことを特徴と
    する請求項1〜8のいずれか1項に記載のデータ圧縮方
    式。
JP28613691A 1991-10-31 1991-10-31 データ圧縮方式 Expired - Fee Related JP3384813B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28613691A JP3384813B2 (ja) 1991-10-31 1991-10-31 データ圧縮方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28613691A JP3384813B2 (ja) 1991-10-31 1991-10-31 データ圧縮方式

Publications (2)

Publication Number Publication Date
JPH05128103A true JPH05128103A (ja) 1993-05-25
JP3384813B2 JP3384813B2 (ja) 2003-03-10

Family

ID=17700401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28613691A Expired - Fee Related JP3384813B2 (ja) 1991-10-31 1991-10-31 データ圧縮方式

Country Status (1)

Country Link
JP (1) JP3384813B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008078390A1 (ja) * 2006-12-26 2008-07-03 Fujitsu Limited データ圧縮装置およびデータ復元装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008078390A1 (ja) * 2006-12-26 2008-07-03 Fujitsu Limited データ圧縮装置およびデータ復元装置
JP4893750B2 (ja) * 2006-12-26 2012-03-07 富士通株式会社 データ圧縮装置およびデータ復元装置
US8705742B2 (en) 2006-12-26 2014-04-22 Fujitsu Limited Data compression apparatus and data decompression apparatus

Also Published As

Publication number Publication date
JP3384813B2 (ja) 2003-03-10

Similar Documents

Publication Publication Date Title
JP3278297B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US5652581A (en) Distributed coding and prediction by use of contexts
JP3238854B2 (ja) データ圧縮方法及びデータ圧縮装置、並びにデータ復元方法及びデータ復元装置
US20010051941A1 (en) Searching method of block sorting lossless compressed data, and encoding method suitable for searching data in block sorting lossless compressed data
US6128412A (en) Statistical data compression/decompression method
JPH06222904A (ja) n配列ストリングにおける記号確率の適応計算
US5585793A (en) Order preserving data translation
JP2001521702A (ja) 畳込み符号化データの幅優先復号におけるメトリック移動
JPS6356726B2 (ja)
JPH08167852A (ja) データ圧縮方法及び装置
JPH05241777A (ja) データ圧縮方式
Effros PPM performance with BWT complexity: A new method for lossless data compression
JP3384813B2 (ja) データ圧縮方式
JP2954749B2 (ja) データ圧縮方式
JP3241787B2 (ja) データ圧縮方式
Niemi et al. Burrows‐Wheeler post‐transformation with effective clustering and interpolative coding
JPH05241775A (ja) データ圧縮方式
JP3132774B2 (ja) データ圧縮・復元装置
JPH05152971A (ja) データ圧縮・復元方法
JPH05176187A (ja) データ圧縮・復元装置
JP3117760B2 (ja) データ復元方式
Wolff Recoding of natural language for economy of transmission or storage
JP3051501B2 (ja) データ圧縮方法
Lu et al. A Huffman-type code generator with order-N complexity
JP3100206B2 (ja) データ圧縮方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20021210

LAPS Cancellation because of no payment of annual fees