JP2007124561A - データ圧縮方法及び圧縮データ送信方法 - Google Patents

データ圧縮方法及び圧縮データ送信方法 Download PDF

Info

Publication number
JP2007124561A
JP2007124561A JP2005317343A JP2005317343A JP2007124561A JP 2007124561 A JP2007124561 A JP 2007124561A JP 2005317343 A JP2005317343 A JP 2005317343A JP 2005317343 A JP2005317343 A JP 2005317343A JP 2007124561 A JP2007124561 A JP 2007124561A
Authority
JP
Japan
Prior art keywords
data
initial value
dictionary
character string
server
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
JP2005317343A
Other languages
English (en)
Other versions
JP4456554B2 (ja
Inventor
Junichi Odagiri
淳一 小田切
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 JP2005317343A priority Critical patent/JP4456554B2/ja
Priority to US11/343,290 priority patent/US7310055B2/en
Publication of JP2007124561A publication Critical patent/JP2007124561A/ja
Application granted granted Critical
Publication of JP4456554B2 publication Critical patent/JP4456554B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Abstract

【課題】スライド辞書に、出現頻度の高い長い文字列を初期値として登録できるようにする。
【解決手段】サンプルデータ中の文字列を先頭3文字(“ABC”)が等しい文字列同士のグループに分類する。各グループから、サンプルデータ中において最も出現頻度が高い文字列(最頻出文字列)を1個づつ抽出する。各グループから抽出した最頻出文字列を出現頻度順に初期値として辞書に登録する。
【選択図】図3

Description

本発明は、スライド辞書を利用したデータ圧縮方法に係り、特にテキスト文書やプログラムなどの圧縮に好適なデータ圧縮方法及び圧縮データ送信方法に関する。
データ圧縮方式には、ロスレスとロッシーがある。ロスレスは圧縮したデータを完全に復元可能な可逆圧縮方式であり、主にテキスト文書やプログラムなどの圧縮に利用されている。ロッシーは圧縮したデータを完全に復元できない非可逆圧縮方式であり、画像、音声、動画等の圧縮に利用されている。データ圧縮は、データ通信において送信するデータ量を削減する目的で使用される。
ロスレス圧縮手法の一つとして、スライド辞書を用いたデータ圧縮方法が知られている。このデータ圧縮手法は、過去に出現したデータ系列の中から一致する最大長の部分列を検索して、その部分列の位置と一致長を符号として出力するものであり、過去に出現したデータ系列は辞書に格納されている。この辞書の検出範囲は、圧縮中に遷移(スライド)するため、一般にスライド辞書と呼ばれている。
近年、モバイル端末の普及は目覚しい。モバイル端末のサービスでは、容量が小さいデータの通信が頻繁になされる。例えば、モバイル端末からサーバへのHTTPリクエスト(上りデータ)のデータ量は僅か1KB(キロバイト)程度である。また、モバイル端末とサーバとの間でやりとりされるデータや、RFIDタグなどによる無線通信においては、例えばヘッダ情報など、同じような内容のデータが一連のデータ送受信の間に何度もやり取りされる傾向が強い。
従来のスライド辞書を利用したデータ圧縮方法では、過去に出現した部分列を辞書に登録(学習)する。一般的に、辞書が完成するには8KB程度のデータ読み込みが必要とされている。そのため、データ量が小さいと圧縮するのに十分な登録(学習)ができないため、十分な圧縮率が得られない。
この問題を解決するために、本出願人は、以前、圧縮前に頻出文字を初期値として事前に辞書に登録しておき、辞書内の初期値と圧縮対象のデータの一致を取ることで圧縮効率を向上させるデータ圧縮方式を提案した(特開平5−24177号公報)。このデータ圧縮方式では、辞書に初期値として登録されている文字列については、初出でも圧縮できるので、圧縮効率が良くなる。
図22は、上記特開平5−24177号公報に開示されている辞書への初期値登録方法を説明する図である。
図22(a)は、初期値作成用のサンプルデータに存在する文字列の種類を木構造(tree structure)で示したものである。同図(a)に示す木構造の各ノードの文字“a”、“b”、“c”、“d”はサンプルデータ内の文字を示し、その下の矩形内の数字はそれらの文字の各文字列内での出現頻度を示す。
同図(a)の木構造を参照して、出現頻度が所定の閾値2以上の文字列を抽出すると同図(b)に示す“aaa”、“abc”、“ac”、“bb”、“cc”、“d”の5個となる。そして、これら5個の文字列を初期値として、辞書1001に登録する(同図(c)参照)。
このように、サンプルデータを基に出現頻度の高い文字列を事前に辞書に登録することによってデータの圧縮効率を向上させることが可能となる。
また、本出願人は、図21に示すようなSLC(Super Lossless Data Compression)方式のデータ圧縮方式を提案している(日本特許第3541930号、米国特許6,320,522 B1)。
SLC方式では、辞書2001としてハッシュ表を使用しており、被圧縮データ2000における既出文字列の先頭の任意数の文字(この例では3文字)をハッシュ関数2002によりハッシュ値に変換し、そのハッシュ値と既出文字列の長さ(文字列長)を辞書2001に登録する。被圧縮データ2000の文字列には先頭から1で始まるシリアル番号が出現位置として割り振られる。スライディングウィンドウ2005をスライディングして繰り返し出現する文字列を調べ、既出文字列と一致する文字列については、(出現位置、長さ)という符号に符号化する。ここで、出現位置は、辞書2001に登録されている既出文字列の出現位置であり、ハッシュ値をキーとして辞書2001から読み出す。
図21では、被圧縮データ2000が“compression&decompression…”となっており、この文字列中で2回目に出現する“compression”という文字列が(1、11)という符号に符号化される例が示されている。“compression”の先頭3文字“com”のハッシュ値はiであり、辞書2001からハッシュ値iに対応する出現位置(=1)が読み出される。
特開平5−24177号公報 日本特許第3541930号(米国特許6,320,522 B1)
図22に示す従来技術は、データを圧縮する前に辞書に頻出する文字列を初期値として登録してデータ圧縮効率の向上を図っているが、単純に、出現頻度が所定の閾値以上の出現文字列(短文)を辞書に登録するため、初期値のサイズが大きくなってしまうという問題があった。
図21に示す従来技術は、辞書に登録された既出文字列を高速に検出するために、その先頭の任意数の文字をハッシュ値に変換し、そのハッシュ値を既出文字列の出現位置と共に辞書に登録するようにしている。しかしながら、辞書(ハッシュ表)は、同一ハッシュ値については1つの出現位置情報しか登録できない構成となっている。初期値文字列の中には、異なる文字列であるにもかかわらず偶然に同じハッシュ値を取るものも存在しうる。このため、このようなハッシュ値の衝突が発生すると、辞書に登録されていた初期値は後から出現した同じハッシュ値を有する初期値によって上書きされてしまい、先に登録した初期値が生かされないという問題があった。
本発明の目的は、圧縮効率の高いスライド型辞書登録用の初期値を生成することである。本発明の他の目的は、スライド型辞書として使用するハッシュ表に初期値を登録する際に、ハッシュ値の衝突が生じない初期値を抽出できるようにすることである。
また本発明の他の目的は、上記により生成した辞書を用いた圧縮データの送信方法を提供することである。
本発明のデータ圧縮方法は、サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮方法を前提とする。
本発明のデータ圧縮方法の第1態様は、サンプルデータ内の文字列を、先頭n文字が同じである文字列同士のグループに分類し、該各グループから最頻出文字列を検出し、該最頻出文字列を辞書に初期値として登録することを特徴とする。
本発明のデータ圧縮方法の第1態様によれば、適切なサンプルデータを用意することにより、出現頻度が高く、より長い文字列を、辞書に初期値として登録できる。これにより、限られた初期値サイズの中で、圧縮効率のよい初期値を登録することができる。 本発明のデータ圧縮方法の第2態様は、サンプルデータ内の文字列を、先頭n文字のハッシュ値が同じ文字列同士のグループに分類し、該各グループから最頻出文字列を検出し、該最頻出文字列を辞書に登録することを特徴とする。
本発明のデータ圧縮方法の第2態様によれば、例えば、ハッシュ表を辞書内の文字列位置情報の検索に使用した形態の辞書に初期値を登録する際等に、先に登録した初期値が後に登録される初期値によって削除されてしまう事態を防止できる。
本発明の圧縮データ送信方法は、サーバが前記第1態様または第2態様のデータ圧縮方法により生成された辞書情報を保有し、該サーバはクライアントに上記辞書情報を送信し、前記サーバと前記クライアント間でデータの送受信を行う際には、該データを前記辞書情報により圧縮してから送受信することを特徴とする。
前記辞書情報は、例えば、辞書に登録する初期値、または該初期値と該初期値の辞書内での位置情報を格納する手段(例えば、ハッシュ表)である。
上記本発明の圧縮データ送信方法において、例えば、前記サーバは、提供するサービスの種別毎に辞書情報を保有し、クライアントにサービスを提供する際には、そのサービスに対応した辞書を用いて、クライアントに送信するデータを圧縮するようにしてもよい。
また、上記本発明の圧縮データ送信方法において、例えば、前記サーバは、請求項1または2記載のデータ圧縮方法によって生成された辞書情報を複数保有し、前記クライアントにデータを送信する際には、該データの圧縮効率が最も良い辞書情報を用いて前記データを圧縮するようにしてもよい。
本発明の圧縮データ送信方法によれば、サーバとクライアント間で、比較的小容量のデータを効率良く圧縮して送受信できる。
本発明によれば、サンプルデータ中に出現する文字列を先頭のn文字が等しい文字列のグループに分類した後、各グループから最頻出文字列を検出し、該検出した最頻出文字列を辞書に登録する初期値として選択するので、限られた初期値サイズの中で、圧縮効率のよい初期値を登録することができる。また、圧縮率を高める一致長が長い文字列を、より多く辞書に初期値として登録できるようになる。
また、サンプルデータ中に出現する文字列を先頭n文字のハッシュ値が等しい文字列のグループに分類した後、各グループから最頻出文字列を検出し、該検出した最頻出文字列を辞書(ハッシュ表)に登録する初期値とするので、辞書に登録した初期値が別の初期値によって上書きされること防止できる。また、辞書の限られたサイズの領域に、より多くの初期値を効率良く登録できるようになる。
ひいては、上記により予め初期値を登録した辞書を利用することで、比較的小さな圧縮対象データであっても、効率よく圧縮することが可能になる。
また、上記により生成した複数の辞書のうち適切な辞書を用いて送信データを圧縮することができるようになる。
以下、図面を参照しながら本発明の実施の形態について説明する。
[本発明の原理(その1)]
図1は、本発明の被圧縮データの符号化方法を説明する図である。
本発明においては、サンプルデータ中に頻出する長い文字列を初期値として事前に用意しておく。そして、該初期値が仮想的に圧縮対象文字列(被圧縮データ)の前に出現するものとみなして、該初期値を参照して被圧縮データの圧縮、復元を行う。
ところで、本明細書では、簡略化のために、スライド辞書を単に辞書と記載する場合もある。
図1に示す例では“compression”という文字列(初期値)が、圧縮対象の文字列“compression&decomptession…”の前に仮想的に出現したものとみなしている。被圧縮データの先頭位置は「1」に設定されている。また、図1では、学習済みのハッシュ表14を示している。
ハッシュ表14には、前述したSLC方式と同様に、初期値の先頭n文字(図1の例では、先頭3文字)の出現位置を登録する。図中ハッシュ表14には説明の都合上、ハッシュ値がデータと対応付けて記されているが、ハッシュ値はハッシュ表においてアクセスすべき行目を示すデータであるので、実際のハッシュ表にはハッシュ値を登録する必要はない。
図1に示す例では、最初の初期値が“compression”となっている。“compression”の先頭3文字“com”のハッシュ値は「i」であるので、“compression”の開始位置は、ハッシュ表14の「i+1」行目に登録される。この登録において、ハッシュ表14の「i+1」行目には、 “compression”の出現位置(先頭文字の位置)である「−32」が登録される。
図1に示す例では、圧縮対象文字列“compression&decomptession…”の先頭11文字が初期値“compression”と同じ文字列となっている。このため、圧縮対象文字列は、最初の11文字“compression”が、直ちに、(−32,11)の符号に符号化される。
このように、スライド辞書を用いた圧縮は、長い繰り返しを1つの符号で符号化できるため、出現頻度の高い文字列(頻出文字列)を初期値としてスライド辞書に事前に登録しておくことで、被圧縮データを高圧縮率で符号化する可能性は高くなる。
ハッシュ表を用いたスライド辞書は、初期値及び被圧縮データを符号化する際に出現する新たな文字列を登録するメモリ(以後、便宜上、辞書バッファと記載)と、該メモリに登録された文字列の開始位置を保持するハッシュ表とで構成される。ハッシュ表を用いたスライド辞書の学習は、辞書バッファへの文字列の登録とハッシュ表への辞書バッファに登録された文字列の開始位置の登録という2つの処理によってなされる。
スライド辞書に初期値を登録する際には、図2に模式的に示すように、複数のサンプルデータ21−1〜21−nの中から圧縮効率の良い文字列(長い頻出文字列)を初期値として生成し、それらの文字列を出現頻度順に辞書24に登録する必要がある。
スライド辞書では、通常、ハッシュ表に先頭文字列の出現位置のみを保持している。これは、メモリ使用量を節約するためである。本発明においても、スライド辞書のハッシュ表には初期値の先頭のn文字(nは正の整数)の出現位置のみを保持するようにする。
次に、本発明における初期値の生成・登録方法の手順を説明する。
1.複数のサンプルデータを用意し、それらのサンプルデータに出現する文字列を、先頭n文字が等しい文字列同士のグループに分類する。
2.手順1で分類した各グループから最頻出文字列(最も出現頻度が高い文字列)を検出する。
3.手順2で求めた各グループの最頻出文字列を、頻度の高い順にスライド辞書にその初期値として登録する。
以上の手順1〜3により、スライド辞書には先頭n文字が同じ文字列中の最頻出文字列が、各グループ毎にひとつずつ、頻度順に一列に並べられた初期値文字列が登録される。上記手順1〜3において、スライド辞書の初期値サイズに制限が設けられている場合には、そのサイズの上限に達するまで、スライド辞書に最頻出文字列を登録し続ける。
ところで、本明細書においては、スライド辞書を使用して被圧縮データの圧縮を開始する前に、スライド辞書に予め登録される1または複数の最頻出文字列の連なりを、便宜上、「初期値文字列」ではなく「初期値」と記載する場合もある。したがって、初期値が初期値文字列を指す場合もある。
図3は、本発明の初期値生成方法を先頭3文字が同じ文字列同士に適用した例である。
同図では、手順1によって作成される、先頭3文字が“ABC”である文字列の分類を木構造で示している。この例では、先頭3文字が“ABC”である文字列として、“ABC”に続く後続文字列が“BBBC”、“BCDC”、・・・、“CDEF”である文字列が示されている。木構造において、その各ノードに配置された文字の下の数字はその文字の出現頻度である。この例では、“ABC”の後続文字列が“BCDC”となっている文字列、すなわち、“ABCBCDC”という文字列が8回出現し、最も出現頻度が高くなっている。したがって、先頭3文字が“ABC”である文字列群の中から、“ABCBCDC”という文字列が最頻出文字列のうち最長文字列として検出される。同様にして、先頭3文字が“ABC”以外の文字列についても、最頻出文字列のうち最長の文字列を検出することができる。
このように、本発明では、同じ先頭文字列(文字数n)で始まる文字列の中から最頻出文字列のうち最長の文字列を抽出し、それら抽出した最頻出文字列を出現頻度順に辞書に初期値として事前登録する。
[本発明の原理(その2)]
辞書としてハッシュ表を使用する際、図4に示すように、ハッシュ値の位置情報を順次学習して行く過程で、既に、位置情報がハッシュ表に登録された文字列が後続する文字列中に存在すると、即ち、偶然に同じハッシュ値をとる異なる文字列が存在すると、新たに出現した文字列の位置情報により既存の位置情報が上書きされてしまう。図4の例では、“compression”の位置情報が「1」から「k」に上書きされている。
このため、本発明では、ハッシュ表に初期値を登録する段階で、あるハッシュ値に該当する文字列を登録したら、そのハッシュ値に該当する文字列を二度とハッシュ表に登録しないようにする。
また、本発明で利用するハッシュ表ではハッシュ値をハッシュ表内での行を示す値として利用しているので、即ち、ハッシュ表では1つのハッシュ値に対して1つの位置情報を登録するように構成されているため、各ハッシュ値について最頻出文字列を検出する必要がある。
ハッシュ値は、初期値として登録する先頭n文字を基に算出される。このため、本発明では、先頭n文字が同じ文字列の中から最頻出文字列を検出し、その最頻出文字列を初期値とする。
図5は、上記方法により先頭3文字が同じ文字列の中から初期値(最頻出文字列)を生成する方法を示す図である。
同図に示す木構造においては、先頭3文字が“ABC”と“XYZ”のハッシュ値が同じ値(=100)となっている。このため、先頭3文字が“ABC”または“XYZ”となっている文字列の中から最頻出文字列を検出し、それを初期値としてハッシュ表に登録する。図5に示す例では、“XYZCDEF”が8回出現しており最頻出文字列かつ最長文字列となっている。
同様にして、ハッシュ値が100以外となる先頭3文字を有する文字列についても、最頻出文字列かつ最長文字列を検出し、それを初期値としてハッシュ値に登録する。
以上のようにしてハッシュ表に初期値を順次登録していくことにより、ハッシュ表に登録された初期値の位置情報の上書きが防止される。ハッシュ表には一つのハッシュ値に対して1つの位置情報のみしか登録されないからである。
同様な方法を用いて、初期値の先頭n文字をハッシュ表に登録する場合についても、初期値の位置情報の上書きを防止できる。
[第1の実施例]
本発明の第1実施例は、初期値作成用の情報処理装置、データ圧縮側の情報処理装置及びデータ復元側の情報処理装置を備えたシステムである。
図6は、本発明のデータ圧縮方法により初期値を作成する情報処理装置のシステム構成を示すブロック図である。
初期値作成用の情報処理装置100は、圧縮プログラム110、サンプルデータ120及び初期値作成プログラム130を備えている。これらは、情報処理装置100が備えるメモリや外部記憶装置(ストレージ)に格納される。
圧縮プログラム110は、データを圧縮・復元するプログラムであり、内部にハッシュ表111、初期値(初期値文字列)112及びハッシュ関数113を備えている。ハッシュ表111は初期値として登録される文字列の先頭n文字のハッシュ値で表される表内の位置にその位置情報を格納する辞書である。ハッシュ表111のデータ構造は図1のハッシュ表14と同様である。初期値112はデータの圧縮、復元に使用される文字列であり、初期値作成プログラム130によって作成されたものである。ハッシュ関数113は初期値112の先頭3文字に対応するハッシュ値を算出する。
圧縮プログラム110は、初期値作成プログラム130から初期値112を入力・保持する。そして、その初期値112の先頭n文字のハッシュ値をハッシュ関数113により算出し、ハッシュ表111において,そのハッシュ値と同じ行に初期値112の位置情報を登録する。また、ハッシュ表111に登録されたハッシュ値を有する初期値112の位置情報を、該ハッシュ値が格納されている行に登録する。
サンプルデータ120は、No.1〜No.4の4つのサンプルデータから構成されている。No.1のサンプルデータ(以後、便宜上、サンプルデータ1と記載)は文字列“COMPRESS ”である。No.2のサンプルデータ(以後、便宜上、サンプルデータ2と記載)は文字列“DECOMPRESS ”である。No.3のサンプルデータ(以後、便宜上、サンプルデータ3と記載)は文字列“COMPRESSION ”である。No.4のサンプルデータ(以後、便宜上、サンプルデータ4と記載)は文字列“COMPARE”である。
初期値作成プログラム130は、頻度カウンタ131、後続最頻出文字保持部132及び登録チェック部133を備えている。
頻度カウンタ131は、サンプルデータ1〜4に出現する全ての文字列を、その先頭3文字が同じ文字列同士に分類し、先頭3文字が同じ文字列の中から最頻出文字列を検出するために使用される。頻度カウンタ131は、先頭3文字と頻度を格納する領域を備えており、この領域に先頭3文字が同じ文字列がポインタで連結されるような構成となっている。上記構成は、個々の先頭3文字毎に設けられる。上記リストの要素は、サンプルデータNo、文字列の開始位置及び終了位置から構成される。
後続最頻出文字保持部132は、初期値作成プログラム130が初期値112を作成する処理の過程で先頭3文字に続く後続文字を保持する。後続最頻出文字保持部132は、最終的には最頻出文字列の終了文字を格納する。
登録チェック部133は、頻度カウンタ131のリストに保持されている最頻出文字列がハッシュ表に初期値として登録されたか否かを示すステイタス情報を保持する。該ステイタス情報は、初期値として登録された場合には“TRUE”、登録されなかった場合には“FALSE”となる。ステイタス情報は、初期値作成処理の開始前には“FALSE”に初期設定される。
図7は、データ圧縮側の情報処理装置のシステム構成を示すブロック図である。
データ圧縮側の情報処理装置140は、圧縮プログラム150をメモリまたは外部記憶装置等に保持している。圧縮プログラム150は、データを圧縮、復元するプログラムであり、内部に、ハッシュ表151、初期値(初期値文字列)152及びハッシュ関数153を保持している。辞書151、初期値152、及びハッシュ関数153は、図6の情報処理装置130の圧縮プログラム110が保有するハッシュ表111、初期値112及びハッシュ関数113と同様な構成・機能を有するので、それらの詳しい説明は省略する。
図8は、データ復元側の情報処理装置のシステム構成を示すブロック図である。
データ復元側の情報処理装置160は、圧縮プログラム170をメモリまたは外部記憶装置等に保持している。圧縮プログラム170は、データを圧縮、復元するプログラムであり、内部に、辞書(ハッシュ表)171、初期値(初期値文字列)172及びハッシュ関数173を保持している。辞書171、初期値172、及びハッシュ関数173は、図6の情報処理装置130の圧縮プログラム110が保有するハッシュ表111、初期値112及びハッシュ関数113と同様な構成・機能を有するので、それらの詳しい説明は省略する。
上記3つの情報処理装置100、140、160はネットワークを介して接続されており、互いにデータの送受信が可能となっている。
図9を参照しながら、第1実施例の処理の概要を説明する。{事前処理}
データの圧縮、復元をする前に、事前処理として、初期値の生成と辞書(ハッシュ表)の学習を行う。辞書の学習とは、辞書に初期値とその位置情報を登録する処理のことである。
この後、初期値と辞書を、圧縮側の情報処理装置140と復元側の情報処理装置160にネットワークを介して配布する。情報処理装置140と情報処理装置160は、情報処理装置100から配布された初期値と辞書を外部記憶装置に格納する。
図9(a)を参照しながら、情報処理装置100により行われる上記事前処理の手順を説明する。
(1)サンプルデータから初期値を生成する(ステップS1)。
(2)生成された初期値の位置情報を辞書に学習させ、辞書を完成させる(ステップS2)。
{圧縮処理}
図9(b)を参照しながら、データ圧縮処理の手順を説明する。このデータ圧縮処理は、情報処理装置140が圧縮プログラム150を実行することによって行われる。
(1)外部記憶装置に格納されている初期値と辞書をメモリ上にロードする(ステップS3)。
(2)初期値と辞書を基に被圧縮データを圧縮して圧縮データを生成する(ステップS4)。
情報処理装置140は、圧縮データを情報処理装置160に送信する。
{復元処理}
図9(b)を参照しながら、圧縮データの復元処理を説明する。このデータ復元処理は、情報処理装置160が圧縮プログラム170を実行することによって行われる。
(1)外部記憶装置に格納されている初期値と辞書をメモリ上にロードする(ステップS5)。
(2)初期値と辞書を基に圧縮データから被圧縮データを復元する(ステップS6)。
{初期値生成処理と辞書の生成処理の詳細}
図10は、情報処理装置100が初期値作成プログラム130を実行することによって行う初期値生成処理と辞書の生成処理(辞書に学習処理)の詳細を説明するフローチャートである。図11〜図14は、図10のフローチャートに示す処理の理解を容易にするための図である。
図10〜図14を参照しながら、情報処理装置100によって行われる初期値生成処理の詳細を説明する。なおこの例は、先頭3文字が同じ文字列をグルーピングして処理を行う例となっている。
情報処理装置100は、サンプルデータ120(サンプルデータ1〜4)に存在する3文字の文字列を全て抽出する(ステップS11)。
この結果、図11に示すように“COM”、“OMP”、“MPR”、・・・、“ARE”の文字列が抽出される。
次に、頻度カウンタ131に、ステップS11で抽出した文字列(以後、便宜上、抽出文字列と記載する)を、全て、「文字列」、「頻度」、「開始位置」、「終了位置」を格納する(ステップS12)。
この結果、頻度カウンタ131の内容は図12に示すようになり、「頻度」に連結されたリストの各要素に、「サンプルデータのNo.」、「開始位置」、「終了位置」が格納される。“COM”は「頻度」が4となっており、サンプルデータ1〜4の全てに“COM”という文字列が出現している。
続いて、抽出文字列を1つづつ順次選択しながら、全ての抽出文字列についてステップS13〜S18の処理を実行する。
最初に、“COM”が選択される。
ステップS13においては、後続文字(終了位置の次の文字)の中で最頻出する文字を検出し、その最頻出文字を後続最頻出文字保持部132に格納する。
この結果、“COM”の場合には“P”が最頻出文字として後続最頻出文字保持部132に格納される(図13(a)参照)。
次に、ステップS13で検出した最頻出文字の出現数(サンプルデータ1〜4での出現数)を頻度カウンタ131の「頻度」に加算する(ステップS14)。
この結果、“COM”の場合には、“P”がサンプルデータ1〜4の全てで後続文字となっているので、「頻度」に4が加算され、「頻度」は8となる(図13(b)参照)。
次に、頻度カウンタ131に格納されている「終了位置」の次の位置の文字(後続文字)が最頻出文字であるか判別する(ステップS15)。そして、最頻出文字である場合にはステップS16に進み、そうでない場合にはステップS17に進む。
ステップS16では、ステップS15で最頻出文字と判別された文字の出現位置を新たな終了位置として頻度カウンタ131に保存(設定)する。
この結果、“COM”の場合には、頻度カウンタ131に保持された4つの文字列の「終了位置」が1文字分後方に移動する(図13(c)参照)。
ステップS17では、頻度カウンタ131のリストから後続文字が最頻出文字となっていない要素を削除する。この処理は最頻出文字列の候補外となった文字列を頻度カウンタ131から削除する処理である。
頻度カウンタ131に先頭3文字が同じ文字列が複数保持されている場合には、個々の文字列について、ステップS15での判別結果に応じて、ステップS16またはステップS17の処理のいずれかが行われる。
ステップS16またはステップS17の処理に続いて、頻度カウンタ131に保持されている文字列の後続文字が全て異なるか判別する(ステップS18)。
この判別において、後続文字が全て異なると判別された場合にはステップS19に進み、そうでない場合には更に後続の最頻出文字を探索するためにステップS13に戻る。
このように、ステップS13〜S18の処理は、ステップS18で先頭3文字が同じ文字列の後続文字が全て異なると判別されるまで繰り返し行われる。
“COM”の場合、2回目のステップS15の判別処理で、サンプルデータ4の後続文字のみが“A”であり、サンプルデータ1〜3の後続文字は全て“R”(最頻出文字)であると判別される。この結果、ステップS17で、頻度カウンタ131からサンプルデータ4の文字列“COMPA” に該当するポインタが削除されると共に、ステップS16で頻度カウンタ131の後続最頻出文字保持部132に“R”が格納される(図13(d)参照)。
以上のようにして、“COM”に関しては、ステップS13〜S18の処理が6回繰り返され、ステップS19で後続文字が無いと判別され、ステップS19に進む。
ステップS19に進む直前において、“COM”に関する頻度カウンタ131と後続最頻出文字保持部132の内容は図13(e)に示すようになっている。すなわち、後続最頻出文字保持部132には“ ”が格納され、頻度カウンタ131には、サンプルデータ1とサンプルデータ2内の文字列“COMPPRESS_”に関する開始位置と終了位置が格納され、頻度には22が格納されている。
以上のようにして、“COM”に関するステップS13〜S19の処理が終了すると、
頻度カウンタ131に保持されている次の先頭3文字“OMP”について、“COM”と同様にステップS13〜S19の処理が行われる。
このようにして、頻度カウンタ131に保持された最終の先頭3文字“ARE”の処理が終了するまで、ステップS13〜S19の処理が繰り返し行われる。
“ARE”に関してステップS13〜S19の処理が終了し、ステップS11で抽出した全ての先頭3文字についてステップS13〜S19の処理が完了すると、ステップS20に進む。
図14は、ステップS13〜S19の処理が、ステップS11で抽出された先頭3文字が異なる全種類の文字列について、ステップS13〜S19の処理が完了した時点での頻度カウンタ131と後続最頻出文字保持部132の内容を示す図である。
同図に示すように、頻度カウンタ131には、“COM”、“OMP”、“MPR”、・・・、“APR”の各先頭3文字を有する文字列のサンプルデータ120における最頻出文字列の「開始位置」と「終了位置」が格納されている。また、頻度カウンタ131の「頻度」には、サンプルデータ120中の先頭3文字に続く各後続位置での最頻出文字の出現数(頻度)の総和が格納されている。
頻度カウンタ131に保持されている(「サンプルデータNo.」、「開始位置」及び「終了位置」)の組を参照することにより、“COM”を先頭3文字とする最頻出文字列として、サンプルデータ1とサンプルデータ2に存在する“COMPRESS ”を取得することができる。また、“OMP”を先頭3文字とする最頻出文字列として、サンプルデータ1とサンプルデータ2に存在する“OMPRESS ”を取得することができる。同様に、“MPR”、・・・、“ARE”を先頭3文字とする文字列についても最頻出文字列を取得することができる。
ステップS20においては、ステップS19で取得した各先頭3文字の最頻出文字列について、頻度順に初期値として登録する。すなわち、頻度カウンタ131に保持されている各先頭3文字の「頻度」を参照し、その値が高い最頻出文字列から順に初期値として登録する。初期値として登録された最頻出文字列の各3文字に対応する登録チェック部133は“TRUE”に設定する。
この結果、初期値作成プログラム130の頻度カウンタ131、後続最頻出文字保持部132及び登録チェック部133の内容は図15に示すようになる。図15に示すように、第1実施例の場合には、サンプルデータ120に出現する全種類の先頭3文字について、その最頻出文字列が初期値として登録される。
以上のようにして登録された初期値は圧縮プログラム150に出力される。圧縮プログラム150は、初期値作成プログラム130から受け取る初期値を初期値112として保持すると共に、初期値112を基にハッシュ表111を作成する。
{初期値作成プログラムの変形例}
図16は、初期値作成プログラムの変形例の構成を示すブロック図である。
同図に示す初期値作成プログラム130は、図5に示す原理に基づいて、先頭3文字のハッシュ値が同じ文字列同士のグループに分類して、各グループの中の最頻出文字列を初期値として取得・登録する。
初期値作成プログラム140は、頻度カウンタ141、後続最頻出ハッシュ値保持部142及び登録チェック部143を備えている。
頻度カウンタ141は、「ハッシュ値」、「頻度」、及び{「サンプルデータNo.」、「開始位置」、「終了位置」}の組で構成される要素のリストを備えている。このリストは、初期値作成プログラム130のリストと同様な構成である。
後続最頻出ハッシュ値保持部142は、初期値作成プログラム130の後続最頻出文字保持部132と同様な機能を有するもので、先頭3文字に続く後続文字のハッシュ値を格納する。この後続最頻出ハッシュ値保持部142には、最終的には、各ハッシュ値のグループにおける最頻出文字列の終了文字のハッシュ値が格納される。
登録チェック部143は、初期値作成プログラム130の登録チェック部133と同等の構成・機能を有する。
初期値作成プログラム140が初期値を登録する処理は、図10のフローチャートと略同様のアルゴリズムによって実現できる。すなわち、「文字」の代わりに「ハッシュ値」を処理対象とするように図10のフローチャートを変更することにより、初期値作成プログラム140の初期値登録処理のアルゴリズムを実現できる。
[第2の実施例]
図17は、本発明のデータ圧縮方法を適用した第2の実施例のシステム構成図である。
同図に示すコンピュータシステムは、APサーバ200(APサーバ1)、APサーバ210(APサーバ2)、フロントエンドサーバ300、クライアント330を備えており、フロントエンドサーバ300とクラインアト330は、ネットワーク321により接続されている。尚、図17には示されていないが、本システムは、例えばWEBサービスやメールサービスなどのようなアプリケーションサービスを提供するサーバマシンであるAPサーバをn台備えている。以後の説明では、APサーバを説明する際に、APサーバ200、210を中心にして説明する。
APサーバ200、APサーバ210及びフロントエンドサーバ300は、LAN(Local Area Network)等の通信回線によって接続されており、例えば、サービス提供業者のデータセンター等を構成している。APサーバ200及びAPサーバ210は提供するサービスに関する処理を行うサーバマシンであり、フロントエンドサーバ300は、それらAPサーバとクライアント330との通信を仲介するサーバマシンである。
APサーバ200には「1.1.1.1.」というアドレスが割り当てられており、APサーバ210には「1.2.3.4」というアドレスが割り当てられている。これらのアドレスは、APサーバ200、210のサーバID(サーバ識別子)として、フロントエンドサーバ300及びクライアント330に利用される。サーバIDとしては、例えば、IP(Internet Protocol)アドレス、URL(Uniform Resource Locator)、ドメイン名などが使用される。
APサーバ200は、XML(Extensible Markup Language)形式のデータ251をフロントエンドサーバ300経由でクライアント330に送信するアプリケーション・サーバである。APサーバ210は、HTML(Hyper Text Markup Language)形式のデータ252をフロントエンドサーバ300経由でクライアント330に送信するアプリケーション・サーバである。
APサーバ200は、クライアント330にXMLデータ251を送信する前のいずれかのタイミングに初期値作成プログラム220を実行し、サンプルデータであるXML用サンプルデータ201を基にハッシュ表231と初期値(初期値文字列)232を作成する。そして、ハッシュ表231と初期値232をフロントエンドサーバ300経由でクライアント330に送信する。
APサーバ210は、クライアント330にHTMLデータ252を送信する前のいずれかのタイミングに初期値作成プログラム220を実行してサンプルデータであるHTMLデータ211を基にハッシュ表241と初期値(初期値文字列)242を作成する。そして、ハッシュ表241と初期値242をフロントエンドサーバ300経由でクライアント330に送信する。
初期値作成プログラム220は、第1実施例の初期値作成プログラム130と略同様のプログラムであり、不図示のストレージ等に格納され、APサーバ200とAPサーバ210に共有されている。
フロントエンドサーバ300は、クライアント330とAPサーバ200、210間の通信を仲介するサーバであり、APサーバ200、210から受信するXMLデータまたはHTMLデータを圧縮してクライアント330に送信する。フロントエンドサーバ300は、例えば、Webサーバであり、HTTP(Hyper Text Transfer Protocol)等のプロトコルによりクライアント330と通信する。
フロントエンドサーバ300は圧縮プログラム310を保有しており、この圧縮プログラム310を実行して、APサーバ200、210から受信するXMLデータ251、HTMLデータ252を圧縮する。
圧縮プログラム310は、ハッシュ表311、初期値(初期値文字列)312及び管理テーブル313を備えている。ハッシュ表311と初期値312は、APサーバ200から受信するハッシュ表231と初期値232またはAPサーバ210から受信するハッシュ表241と初期値242である。フロントエンドサーバ300は、APサーバ200、210からハッシュ表と初期値を受信するたびに、ハッシュ表311と初期値312をその受信したハッシュ表と初期値に書き換える。
登録テーブル313は、フロントエンドサーバ300がAPサーバから受信するハッシュ表と初期値の管理情報を登録しているテーブルである。登録テーブル313はn行で構成されるテーブルであり、各行には「サーバID」、「ハッシュ表名」及び「初期値名」の3項目が格納される。サーバIDは、APサーバのアドレスである。ハッシュ表名は、各ハッシュ表の名称である。初期値名は、初期値の名称である。登録テーブル313はこのような構成により、各APサーバから受け取るXMLデータまたはHTMLデータを圧縮するために使用されるハッシュ表と初期値を管理している。
クライアント330は、ネットワーク321を介してフロントエンドサーバ300と通信可能に接続されているコンピュータであれば、携帯型端末、携帯電話、パーソナルコンピュータ、RFIDタグ、車載端末など、どのようなコンピュータであっても構わない。クライアント330は圧縮プログラム340を保有しており、この圧縮プログラム340を実行して、フロントエンドサーバから受信する圧縮されたXMLデータ251、HTMLデータ252を復元する。
圧縮プログラム340は、上述したフロントエンドサーバ300が保有する圧縮プログラム310と同様な構成をしており、ハッシュ表341、初期値342及び登録テーブル343を備えている。
登録テーブル343は、の構成はフロントエンドサーバ300が保有する登録テーブル313と同様なので、その詳しい説明は省略する。
クライアント330は、フロントエンドサーバ300からXMLデータ251またはHTMLデータ252を受信する際、初期値識別情報320をフロントエンドサーバ300から受信する。
この初期値識別情報320は、フロントエンドサーバ300から受信するデータ(XMLデータ251またはHTMLデータ252)を復元する際に使用する初期値とハッシュ表を、登録テーブル343を参照して取得する際に必要となる情報である。初期値識別情報320は、例えば、サーバID、初期値名もしくはハッシュ表名、またはそれらの組み合わせで構成される。
次に、上記構成の第2実施例の動作を説明する。
図18は、APサーバ(APサーバ200、210)が初期値とハッシュ表を生成する処理を説明するフローチャートである。
APサーバは、初期値作成プログラム220を実行し、XML用サンプルデータ201またはHTML用サンプルデータ211を基に初期値(初期値232または初期値242)を生成する(ステップS101)。続いて、該生成した初期値のハッシュ値と出現位置をハッシュ表に登録して、ハッシュ値を生成する(ステップS102)。
図19は、フロントエンドサーバ300の登録テーブルに関する処理を説明するフローチャートである。
フロントエンドサーバ300は、登録テーブル313に、受信したハッシュ表の名称(ハッシュ表名)と初期値の名前(初期値名)を登録する(ステップS201)。
次に、クライアント330にネットワーク321経由で上記ハッシュ表と上記初期値を送信する(ステップS202)。
続いて、上記ハッシュ表と上記初期値に関する情報(サーバID、ハッシュ表名、初期値名)を登録テーブル313に登録する(ステップS203)。
以上の処理により、APサーバから受信したハッシュ表と初期値がクライアント330に送信されると共に、該受信したハッシュ表と初期値に関する情報が登録テーブル313に登録される。
図20は、フロントエンドサーバ300とクライアント330間で行われるデータの圧縮・復元処理を説明するフローチャートである。
同図のフローチャートにおいて、ステップS301〜303がフロントエンドサーバ300の処理であり、ステップS304、395がクライアント330の処理である。
フロントエンドサーバ300は、データ(XMLデータまたはHTMLデータ)の送信元のAPサーバに従って、該データを圧縮するために使用する初期値とハッシュ表を、登録テーブル313のサーバIDを基に選択する(ステップS301)。
次に、上記選択した初期値とハッシュ表を基に、APサーバから受信した上記データを圧縮する(ステップS302)。
そして、上記圧縮されたデータと上記データ圧縮で使用された初期値に対応する初期値識別情報320を、ネットワーク321を介してクライアント330に送信する(ステップS303)。
クライアント330は、フロントエンドサーバ300から受信した初期値識別情報320を基に登録テーブル343を検索して、フロントエンドサーバ300から受信した圧縮データを復元するために必要な初期値とハッシュ表を選択する(ステップS304)。
そして、上記選択された初期値とハッシュ表を基に、上記圧縮データを復元する(ステップS305)。
このように、第2の実施例では、APサーバ側で、提供するアプリケーション(サービス)でクライアント330に送信するデータを圧縮・復元するための初期値と辞書(ハッシュ表)を作成し、それらをフロントエンドサーバ300に送信する。フロントエンドサーバ300は、APサーバから受信した初期値と辞書を登録テーブル313により管理すると共に、それらを初期値識別情報320と共にネットワーク321を介してクライアント330に送信する。
クライアント330は、フロントエンドサーバ300から受信する初期値と辞書を登録テーブル343により管理する。そして、フロントエンドサーバ300から圧縮データと初期値識別情報320を受信すると、初期値識別情報320を基に登録テーブル343を参照して、圧縮データを復元するために必要となる初期値とハッシュ表を取得し、それらを用いて圧縮データを復元する。
ところで、圧縮データの復元は初期値のみからでも可能である。初期値を基に辞書(ハッシュ表)を生成できるからである。したがって、フロントエンドサーバ300及びクライアント330がAPサーバから初期値のみを受信するようなシステムであっても、本発明のデータ圧縮方法を用いて、データの圧縮・復元が可能である。
本発明においては、サーバまたはクライアントが複数の辞書(初期値または初期値並びにハッシュ表)を、例えばサービス毎に予め生成して保持しておき、該サービスに関しサーバとクライアントとの間で送受信される一連のデータ群については、クライアントから処理依頼を受けたサービス(アプリケーション)またはサーバが提供しようとしているサービスに応じていずれの辞書を利用するか、該サービスに関し、一番最初にデータを送信する側であるコンピュータ(サーバまたはクライアント)が決定するような構成にしてもよい。また、クライアントからサービス提供依頼を受けたサーバが、該サービス提供の一連のデータ送受信に対して適用する辞書を決定し、クライアントへの返信時にサービスに関するデータと辞書を特定するための情報または辞書情報を送信し、該サービスにおけるデータの送受信では、該決定された辞書を用いてデータ圧縮及び復元を行うような構成にしても良い。
また、サーバまたはクライアントが保持する複数の辞書は、クライアントの端末種別に応じて生成されるものでもよい。
この場合、例えば、実際に送受信されるデータである被圧縮データを、サーバまたはクライアントのいずれかが上記複数の辞書で実際に圧縮してみて、最も圧縮効率の良い辞書を圧縮用の辞書として採用し、該採用した辞書に関する情報を通信相手へ通知する構成にしてもよい。
また、クライアントがサーバにデータを送信する際に、該データを保有している辞書を用いて圧縮してからサーバに送信するような構成にしてもよい。
上記実施例の説明においては、被圧縮データとしてテキストデータを圧縮する例について説明したが、本発明は、これに限定されることなく、例えば、ソースプログラムや実行形式のプログラム(バイナリデータ)の圧縮などにも適用可能である。
(付記1)
サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮方法において、
サンプルデータ内の文字列を、先頭n文字が同じである文字列同士のグループに分類し、
該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に該初期値として登録する、
ことを特徴とするデータ圧縮方法。
(付記2)
サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮方法において、
サンプルデータ内の文字列を、先頭n文字のハッシュ値が同じ文字列同士のグループに分類し、
該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に登録する、
ことを特徴とするデータ圧縮方法。
(付記3)
付記1または2記載のデータ圧縮方法であって、
前記最頻出文字列を検出する際、前記先頭n文字に後続する各文字の出現頻度を求め、
それらの出現頻度に基づいて最頻出文字列として決定することを特徴とするデータ圧縮方法。
(付記4)
付記3記載のデータ圧縮方法であって、
前記先頭n文字に後続する各文字の出現頻度の総和が最も大きい文字列を最頻出文字列として決定することを特徴とするデータ圧縮方法。
(付記5)
サーバが付記1または2記載のデータ圧縮方法により生成された辞書情報を保有し、
該サーバはクライアントに前記辞書情報を送信し、
前記サーバと前記クライアント間でデータの送受信を行う際には、該データを前記辞書情報により圧縮してから送受信する、
ことを特徴とする圧縮データ送信方法。
(付記6)
付記5記載の圧縮データ送信方法であって、
前記サーバは、提供するサービス毎に前記辞書情報を保有することを特徴とすることを特徴とする圧縮データ送信方法。
(付記7)
付記5記載の圧縮データ送信方法であって、
前記サーバは、前記クライアントとデータの送受信を行う前に、前記辞書情報を前記クライアントに配信する。
(付記8)
付記5記載の圧縮データ送信方法であって、
前記サーバは、提供するサービスの種別毎に前記辞書情報を保有し、クライアントにサービスを提供する際には、そのサービスに対応した前記辞書情報を用いて、クライアントに送信するデータを圧縮することを特徴とする圧縮データ送信方法。
(付記9)
付記5記載の圧縮データ送信方法であって、
前記クライアントは、サーバから提供されるサービスの種別毎に前記辞書情報を保有し、サーバにデータを送信する際には、そのサービスに対応した前記辞書情報を用いて前記データを圧縮することを特徴とする圧縮データ送信方法。
(付記10)
付記5記載の圧縮データ送信方法であって、
前記サーバは、付記1または2記載のデータ圧縮方法によって生成された前記辞書情報を複数保有し、前記クライアントにデータを送信する際には、該データの圧縮効率が最も良い前記辞書情報を用いて前記データを圧縮することを特徴とする圧縮データ送信方法。
(付記11)
付記5記載の圧縮データ送信方法であって、
前記クライアントは、付記1または2記載のデータ圧縮方法によって生成された前記辞書情報を複数保有し、前記サーバにデータを送信する際には、該データの圧縮効率が最も良い辞書を用いて前記データを圧縮することを特徴とする圧縮データ送信方法。
(付記12)
サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮処理をコンピュータに実行させるプログラムであって、
サンプルデータ内の文字列を、先頭n文字が同じである文字列同士のグループに分類するステップと、
該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に該初期値として登録するステップと、
を備える処理をコンピュータに実行させるプログラム。
(付記13)
サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮処理をコンピュータに実行させるプログラムであって、
サンプルデータ内の文字列を、先頭n文字のハッシュ値が同じ文字列同士のグループに分類するステップと、
該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に登録するステップと、
を備える処理をコンピュータに実行させることを特徴とするプログラム。
(付記14)
付記12または13項記載のプログラムであって、
前記最頻出文字列を検出する際、前記先頭n文字に後続する各文字の出現頻度を求め、
それらの出現頻度に基づいて最頻出文字列として決定するステップを備える処理をコンピュータに実行させることを特徴とするプログラム。
(付記15)
サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮装置において、
サンプルデータ内の文字列を、先頭n文字が同じである文字列同士のグループに分類する手段と、
該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に該初期値として登録する手段と、
を備えることを特徴とするデータ圧縮装置。
(付記16)
サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮装置において、
サンプルデータ内の文字列を、先頭n文字のハッシュ値が同じ文字列同士のグループに分類する手段と、
該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に登録する手段と、
を備えることを特徴とするデータ圧縮装置。
(付記17)
付記15または16記載のデータ圧縮装置であって、
前記登録手段は、前記最頻出文字列を検出する際、前記先頭n文字に後続する各文字の出現頻度を求め、それらの出現頻度に基づいて最頻出文字列として決定する手段を備えることを特徴とするデータ圧縮装置。
(付記18)
付記17記載のデータ圧縮方法であって、
前記登録手段は、前記先頭n文字に後続する各文字の出現頻度の総和が最も大きい文字列を最頻出文字列として決定する手段を備えることを特徴とするデータ圧縮装置。
本発明は、モバイル端末の通信、RFID(Radio Frequency Identification)の通信、ITS(Intelligent Transportation Systems)における車間での通信等のように、比較的小容量なデータを通信するシステムにおいて送受信されるデータの圧縮に好適である。
本発明の被圧縮データの符号化方法を説明する図である。 本発明の初期値生成方法を概念的に示す図である。 本発明の初期値生成方法を、先頭3文字が同じ文字列同士に適用した例を示す図である。 辞書としてハッシュ表を使用した際に発生する初期値の位置情報の上書きを説明する図である。 ハッシュ表において上記位置情報の上書きが発生しないような初期値の生成方法を説明する図である。 第1実施例における初期値作成用の情報処理装置のシステム構成を示すブロック図である。 第1実施例におけるデータ圧縮側の情報処理装置のシステム構成を示すブロック図である。 第1実施例におけるデータ復元側の情報処理装置のシステム構成を示すブロック図である。 第1実施例における全体の処理の流れを説明する図である。 第1実施例における初期値作成・登録処理を示すフローチャートである。 図10のフローチャートの処理を説明する図(その1)である。 図10のフローチャートの処理を説明する図(その2)である。 図10のフローチャートの処理を説明する図(その3)である。 図10のフローチャートの処理を説明する図(その4)である。 図10のフローチャートの処理を説明する図(その5)である。 先頭3文字をハッシュ値で管理する頻度カウンタの構成例を示す図である。 本発明の第2実施例のシステム構成を示すブロック図である。 APサーバによる初期値生成処理とハッシュ表の生成処理を説明するフローチャートである。 フロントエンドサーバの処理を説明するフローチャートである。 フロントエンドサーバとクライアント間で行われる圧縮データの復元処理を説明するフローチャートである。 スライド辞書を用いたデータ圧縮方法を説明する図である。 従来の辞書作成方式を説明する図である。
符号の説明
14 ハッシュ表(学習済み)
21−1〜21−4 サンプルデータ
24 初期値
100 初期値作成用の情報処理装置
110 圧縮プログラム
111 ハッシュ表
112 初期値(初期値文字列)
113 ハッシュ関数
120 サンプルデータ
130 初期値作成プログラム
131 頻度カウンタ
132 後続最頻出ハッシュ値保持部
133 登録チェック部
140 圧縮側の情報処理装置
150 圧縮プログラム
151 ハッシュ表
152 初期値(初期値文字列)
153 ハッシュ関数
160 復元側のプログラム
170 圧縮プログラム
171 ハッシュ表
172 初期値(初期値文字列)
173 ハッシュ関数
200 APサーバ1
201 XML用サンプルデータ
210 APサーバ2
211 HTML用サンプルデータ
220 初期値作成プログラム
231、241 ハッシュ表
251 XMLデータ
252 HTMLデータ
300 フロントエンドサーバ
310 圧縮プログラム
311 ハッシュ表
312 初期値(初期値文字列)
313 登録テーブル
321 ネットワーク
330 クライアント
340 圧縮プログラム
341 ハッシュ表
342 初期値(初期値文字列)
343 登録テーブル

Claims (5)

  1. サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮方法において、
    サンプルデータ内の文字列を、先頭n文字が同じである文字列同士のグループに分類し、
    該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に該初期値として登録する、
    ことを特徴とするデータ圧縮方法。
  2. サンプルデータから初期値を生成し、該初期値を予め辞書に登録してから該辞書を用いてデータを符号化するデータ圧縮方法において、
    サンプルデータ内の文字列を、先頭n文字のハッシュ値が同じ文字列同士のグループに分類し、
    該各グループから最頻出文字列を検出し、該最頻出文字列を該辞書に登録する、
    ことを特徴とするデータ圧縮方法。
  3. サーバが請求項1または2記載のデータ圧縮方法により生成された辞書情報を保有し、
    該サーバはクライアントに前記辞書情報を送信し、
    前記サーバと前記クライアント間でデータの送受信を行う際には、該データを前記辞書情報により圧縮してから送受信する、
    ことを特徴とする圧縮データ送信方法。
  4. 請求項3記載の圧縮データ送信方法であって、
    前記サーバは、提供するサービスの種別毎に前記辞書情報を保有し、クライアントにサービスを提供する際には、そのサービスに対応した前記辞書情報を用いて、クライアントに送信するデータを圧縮することを特徴とする圧縮データ送信方法。
  5. 請求項3記載の圧縮データ送信方法であって、
    前記サーバは、請求項1または2記載のデータ圧縮方法によって生成された前記辞書情報を複数保有し、前記クライアントにデータを送信する際には、該データの圧縮効率が最も良い前記辞書情報を用いて前記データを圧縮することを特徴とする圧縮データ送信方法。
JP2005317343A 2005-10-31 2005-10-31 データ圧縮方法及び圧縮データ送信方法 Expired - Fee Related JP4456554B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005317343A JP4456554B2 (ja) 2005-10-31 2005-10-31 データ圧縮方法及び圧縮データ送信方法
US11/343,290 US7310055B2 (en) 2005-10-31 2006-01-31 Data compression method and compressed data transmitting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005317343A JP4456554B2 (ja) 2005-10-31 2005-10-31 データ圧縮方法及び圧縮データ送信方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006066951A Division JP4456574B2 (ja) 2006-03-13 2006-03-13 圧縮データ送信方法

Publications (2)

Publication Number Publication Date
JP2007124561A true JP2007124561A (ja) 2007-05-17
JP4456554B2 JP4456554B2 (ja) 2010-04-28

Family

ID=37995583

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005317343A Expired - Fee Related JP4456554B2 (ja) 2005-10-31 2005-10-31 データ圧縮方法及び圧縮データ送信方法

Country Status (2)

Country Link
US (1) US7310055B2 (ja)
JP (1) JP4456554B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9219497B2 (en) 2012-09-21 2015-12-22 Fujitsu Limited Compression device, compression method, and recording medium
US9496895B2 (en) 2012-12-19 2016-11-15 Fujitsu Limited Compression method and decompression method
WO2018193707A1 (ja) * 2017-04-20 2018-10-25 富士通株式会社 情報処理装置、プログラム、情報処理方法及びデータ構造

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070080481A (ko) * 2006-02-07 2007-08-10 삼성전자주식회사 노래 가사를 이용하여 하이라이트 구간을 검색하는 장치 및그 방법
WO2007118243A2 (en) * 2006-04-07 2007-10-18 Data Storage Group Data compression and storage techniques
US7770091B2 (en) * 2006-06-19 2010-08-03 Monro Donald M Data compression for use in communication systems
US7836396B2 (en) * 2007-01-05 2010-11-16 International Business Machines Corporation Automatically collecting and compressing style attributes within a web document
US7737869B2 (en) * 2007-07-12 2010-06-15 Monro Donald M Symbol based data compression
US7511638B2 (en) * 2007-07-12 2009-03-31 Monro Donald M Data compression for communication between two or more components in a system
US7511639B2 (en) * 2007-07-12 2009-03-31 Monro Donald M Data compression for communication between two or more components in a system
US8290681B2 (en) * 2007-10-29 2012-10-16 GM Global Technology Operations LLC Method and apparatus to produce a smooth input speed profile in mode for a hybrid powertrain system
US7953881B1 (en) * 2008-06-12 2011-05-31 Juniper Networks, Inc. Network characteristic-based compression of network traffic
US7868788B2 (en) * 2008-06-17 2011-01-11 The Hong Kong University Of Science And Technology System and method for encoding data based on a compression technique with security features
US7786907B2 (en) 2008-10-06 2010-08-31 Donald Martin Monro Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US7791513B2 (en) 2008-10-06 2010-09-07 Donald Martin Monro Adaptive combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US7786903B2 (en) 2008-10-06 2010-08-31 Donald Martin Monro Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US7864086B2 (en) 2008-10-06 2011-01-04 Donald Martin Monro Mode switched adaptive combinatorial coding/decoding for electrical computers and digital data processing systems
KR101049699B1 (ko) * 2009-07-17 2011-07-15 (주)이스트소프트 데이터의 압축방법
JP5234030B2 (ja) * 2010-03-15 2013-07-10 オムロン株式会社 タグ通信装置、タグ通信装置の制御方法、およびタグ通信装置制御プログラム
US8972488B2 (en) * 2010-09-28 2015-03-03 Redis Labs Ltd. System, methods, and media for providing in-memory non-relational databases
US8484170B2 (en) * 2011-09-19 2013-07-09 International Business Machines Corporation Scalable deduplication system with small blocks
JP5966673B2 (ja) * 2012-06-28 2016-08-10 富士通株式会社 符号処理のためのプログラム及びデータ構造
CN103795490B (zh) * 2012-10-30 2017-09-19 深圳中兴网信科技有限公司 一种数据传输加速的方法及系统
EP2978134A4 (en) * 2013-03-22 2016-06-15 Fujitsu Ltd COMPRESSION DEVICE, COMPRESSION METHOD, DICTIONARY GENERATION DEVICE, DICTIONARY GENERATION METHOD, EXPANSION DEVICE, EXPANSION METHOD, EXPANSION PROGRAM, AND INFORMATION PROCESSING SYSTEM
US9335987B2 (en) * 2013-12-09 2016-05-10 International Business Machines Corporation Data object with common statement series
US9435652B2 (en) * 2013-12-19 2016-09-06 Novatel Wireless, Inc. Dynamic routing intelligent vehicle enhancement system
JP2016170750A (ja) 2015-03-16 2016-09-23 富士通株式会社 データ管理プログラム、情報処理装置およびデータ管理方法
US9953058B1 (en) 2015-07-29 2018-04-24 Levyx, Inc. Systems and methods for searching large data sets
US10693495B2 (en) * 2017-10-10 2020-06-23 The Boeing Company Data collection device with efficient data compression
CN112905551B (zh) * 2019-12-04 2022-04-29 阿里巴巴集团控股有限公司 数据压缩方法、装置、电子设备及计算机可读存储介质
CN111193752A (zh) * 2020-02-28 2020-05-22 广州市百果园信息技术有限公司 一种数据压缩的方法、装置、压缩服务器和存储介质
CN111782660A (zh) * 2020-07-17 2020-10-16 支付宝(杭州)信息技术有限公司 基于键值存储的数据压缩的方法和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03247167A (ja) * 1990-02-26 1991-11-05 Fujitsu Ltd データ圧縮方式
JPH03270417A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd データ圧縮方法および圧縮データのデータ復元方法
JPH05241775A (ja) * 1992-02-28 1993-09-21 Fujitsu Ltd データ圧縮方式
JPH05241777A (ja) * 1992-02-28 1993-09-21 Fujitsu Ltd データ圧縮方式
JPH05241778A (ja) * 1992-03-03 1993-09-21 Fujitsu Ltd データ圧縮及び復元方式
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置
JPH11168390A (ja) * 1997-12-03 1999-06-22 Fujitsu Ltd データ圧縮装置及びデータ復元装置,データ圧縮方法及びデータ復元方法,データ圧縮/復元用辞書作成装置並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000269822A (ja) * 1999-03-12 2000-09-29 Fujitsu Ltd データ圧縮装置、及びデータ復元装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274805A (en) * 1990-01-19 1993-12-28 Amalgamated Software Of North America, Inc. Method of sorting and compressing data
US5254990A (en) * 1990-02-26 1993-10-19 Fujitsu Limited Method and apparatus for compression and decompression of data
JPH0554077A (ja) * 1991-08-29 1993-03-05 Nec Corp 単語辞書検索装置
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03247167A (ja) * 1990-02-26 1991-11-05 Fujitsu Ltd データ圧縮方式
JPH03270417A (ja) * 1990-03-20 1991-12-02 Fujitsu Ltd データ圧縮方法および圧縮データのデータ復元方法
JPH05241775A (ja) * 1992-02-28 1993-09-21 Fujitsu Ltd データ圧縮方式
JPH05241777A (ja) * 1992-02-28 1993-09-21 Fujitsu Ltd データ圧縮方式
JPH05241778A (ja) * 1992-03-03 1993-09-21 Fujitsu Ltd データ圧縮及び復元方式
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置
JPH11168390A (ja) * 1997-12-03 1999-06-22 Fujitsu Ltd データ圧縮装置及びデータ復元装置,データ圧縮方法及びデータ復元方法,データ圧縮/復元用辞書作成装置並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000269822A (ja) * 1999-03-12 2000-09-29 Fujitsu Ltd データ圧縮装置、及びデータ復元装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9219497B2 (en) 2012-09-21 2015-12-22 Fujitsu Limited Compression device, compression method, and recording medium
US9496895B2 (en) 2012-12-19 2016-11-15 Fujitsu Limited Compression method and decompression method
WO2018193707A1 (ja) * 2017-04-20 2018-10-25 富士通株式会社 情報処理装置、プログラム、情報処理方法及びデータ構造
JP2018181196A (ja) * 2017-04-20 2018-11-15 富士通株式会社 情報処理装置、プログラム、情報処理方法及びデータ構造
US11222068B2 (en) 2017-04-20 2022-01-11 Fujitsu Limited Information processing device, information processing method, and data structure
JP7003435B2 (ja) 2017-04-20 2022-01-20 富士通株式会社 情報処理装置、プログラム、情報処理方法及びデータ構造

Also Published As

Publication number Publication date
US7310055B2 (en) 2007-12-18
JP4456554B2 (ja) 2010-04-28
US20070096953A1 (en) 2007-05-03

Similar Documents

Publication Publication Date Title
JP4456554B2 (ja) データ圧縮方法及び圧縮データ送信方法
US20170295263A1 (en) System and method for applying an efficient data compression scheme to url parameters
CN103970793B (zh) 信息查询方法、客户端及服务器
CN106407201B (zh) 一种数据处理方法、装置及计算机可读存储介质
JP5989781B2 (ja) モバイル環境における漸進的パターンマッチングのための方法および装置
US20050027731A1 (en) Compression dictionaries
CN111262876B (zh) 基于区块链的数据处理方法、装置、设备以及存储介质
CN102594809B (zh) 一种文件快速扫描方法和系统
CN114731162A (zh) 压缩数据的部分下载
CN111259217A (zh) 一种发票的存档方法、装置及计算机可读存储介质
CN115208414A (zh) 数据压缩方法、数据压缩装置、计算机设备及存储介质
WO2013097812A1 (zh) 一种下载字库文件的方法和系统
JP4548184B2 (ja) 圧縮規則生成方法、圧縮通信装置及びプログラム
CN108563795B (zh) 一种加速压缩流量正则表达式匹配的Pairs方法
US20120110025A1 (en) Coding order-independent collections of words
JP4456574B2 (ja) 圧縮データ送信方法
CN110598057B (zh) 一种面向遥测数据的数据搜索方法及装置
CN108573069B (zh) 一种加速压缩流量正则表达式匹配的Twins方法
CN114039801B (zh) 一种短链接生成方法、解析方法和系统、设备、存储介质
CN113204683B (zh) 信息重构方法和装置、存储介质及电子设备
CN109617708A (zh) 一种埋点日志的压缩方法、设备及系统
CN109766347B (zh) 一种数据更新方法、装置、系统、计算机设备及存储介质
US9325743B2 (en) Information processing apparatus, method, and program
CN113473171A (zh) 资源处理方法及装置
WO2017027226A1 (en) On the fly statistical delta differencing engine

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100112

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: 20100202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100205

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130212

Year of fee payment: 3

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: 20140212

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees