JP3708318B2 - データ圧縮/復元装置およびデータ圧縮/復元方法 - Google Patents

データ圧縮/復元装置およびデータ圧縮/復元方法 Download PDF

Info

Publication number
JP3708318B2
JP3708318B2 JP01177198A JP1177198A JP3708318B2 JP 3708318 B2 JP3708318 B2 JP 3708318B2 JP 01177198 A JP01177198 A JP 01177198A JP 1177198 A JP1177198 A JP 1177198A JP 3708318 B2 JP3708318 B2 JP 3708318B2
Authority
JP
Japan
Prior art keywords
document
data
word appearance
bit
word
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 - Lifetime
Application number
JP01177198A
Other languages
English (en)
Other versions
JPH10301959A (ja
Inventor
伸之 井形
功 難波
くにお 松井
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 JP01177198A priority Critical patent/JP3708318B2/ja
Publication of JPH10301959A publication Critical patent/JPH10301959A/ja
Application granted granted Critical
Publication of JP3708318B2 publication Critical patent/JP3708318B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、任意のデータを符号化して圧縮するデータ圧縮装置およびその方法と、圧縮されたデータを復元するデータ復元装置およびその方法に関する。
【0002】
【従来の技術】
全文検索装置やランキング検索装置等の情報検索装置においては、検索に用いるインデックスの作成速度を高め、かつ、そのサイズを抑えることが重要である。ここで、全文検索装置とは、文書DB(データベース)内の文書の全文を対象として、ユーザにより指定された文字列(キーワード)の存在する文書を検索する装置を指し、ランキング検索装置とは、指定された文字列に対し、関連度の高い文書を検索する装置を指す。
【0003】
このような情報検索装置におけるインデックスとは、検索対象となるキーに対して、文書番号、文書内単語出現頻度、文書内単語出現位置等の情報が付加されたデータ構造である。例えば、キーワード「犬」とそれを含む文書の[文書番号,文書内単語出現頻度]の組は、図38のように表される。
【0004】
図38のインデックスは、「犬」というキーは、文書番号1の文書に1回、文書番号2の文書に1回、文書番号3の文書に2回、文書番号25の文書に3回出現していることを表している。
【0005】
この例において、仮に1つの数値データを32bit(4byte)で表すとすると、キー「犬」に対するインデックスは8つの数値を含むので、これを表すのに256bit(=32bit*8)の領域が必要となる。Gbyte単位の文書に対して、この方法による文書番号のみの格納領域の試算を行ってみると、図39に示すように、原文のサイズに対して非常に巨大なものになる。そこで、インデックスサイズを圧縮する必要が生じる。
【0006】
インデックスサイズの圧縮の基本は、1つの数値を決まったビット数(通常、32bit)で表すのではなく、できるだけ少ないビット数で表すことである。後述するように、既存の符号化手法は、小さな数値を少ないビット数で表し、大きな数値を大きなビット数で表すようになっている。
【0007】
そこで、インデックスサイズ圧縮の第一段階として、インデックス内に含まれる数値をできるだけ小さくすることが考えられる。これは、文書番号および文書内単語出現位置のそれぞれについて、連続する2つのデータの差分を取ることにより実現される。文書番号および文書内単語出現位置は、数値の小さいものから大きいものへと順に並んでいるため、各数値間の差分をとることにより、表現される数値を小さくすることができる。
【0008】
例えば、図38のインデックスに対して、各文書番号間の差分を取ると、図40のようになる。図40の最初のデータ[1,1]の文書番号“1”は、実際の文書番号そのものを表しており、2番目のデータ[1,1]の文書番号“1”は、最初のデータの文書番号“1”と2番目のデータの実際の文書番号“2”との差分値を表している。ここで、実際の文書番号とは、図38に示された、差分をとる前の文書番号を指す。
【0009】
また、3番目のデータ[1,2]の文書番号“1”は、2番目のデータの実際の文書番号“2”と3番目のデータの実際の文書番号“3”との差分値を表しており、4番目のデータ[22,3]の文書番号“22”は、3番目のデータの実際の文書番号“3”と4番目のデータの実際の文書番号“25”との差分値を表している。
【0010】
このような数値データに対する符号化手法としては、8bit block(8BB)符号化、4bit block(4BB)符号化、Unary coding、γ−coding、δ−coding等が知られている。これらの符号化手法のいずれにおいても、小さな数値は少ないbit数で表され、大きな数値は大きなbit数で表される。
【0011】
まず、8bit block符号化とは、8bit(1byte)から成る各ブロックの中の最初の1ビット(top bit)を継続フラグとし、そのフラグが立っていれば、後続する次のブロックが存在するとみなす方法である。いくつかの数値の例を以下に挙げる。
【0012】
表す数 bit
1 00000001
2 00000010
3 00000011
128 10000001 00000000
129 10000001 00000001
ここで、数値1、2、3の場合は、後続するブロックが存在しないので先頭のビットは0となっており、数値128、129の場合は、2番目のブロックが存在するので先頭のビットが1となっている。この方法では、1ワード(32bit)で表現される数値を表す符号の最小のビット数は8bit、最大のビット数は40bitとなる。
【0013】
また、4bit block符号化とは、4bitから成る各ブロックの中の最初の1ビットを継続フラグとし、そのフラグが立っていれば、後続する次のブロックが存在するとみなす方法である。いくつかの数値の例を以下に挙げる。
【0014】
表す数 bit
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1001 0000
9 1001 0001
128 1010 1000 0000
129 1010 1000 0001
ここで、数値1、2、3、4、5、6、7の場合は、後続するブロックが存在しないので先頭のビットは0となっており、数値8、9の場合は、2番目のブロックが存在するので先頭のビットが1となっている。また、数値128、129の場合は、3番目のブロックが存在するので、1番目および2番目のブロックの先頭のビットが1となっている。この方法では、1ワードで表現される数値を表す符号の最小のビット数は4bit、最大ビット数は44bitとなる。
【0015】
また、Unary codingとは、数nを、n−1個の1の連続+0で表す方法である。これは、主として、後述するγ−codingおよびδ−codingの説明に用いられる。いくつかの数値の例を以下に挙げる。
【0016】
表す数 bit
1 0
2 10
3 110
4 1110
5 11110
6 111110
128 11111・・・127個の1の連続・・・0
129 11111・・・128個の1の連続・・・0
この方法では、1ワードで表現される数値を表す符号の最小のビット数は1bit、最大のビット数は4294967295(232−1)となる。
【0017】
また、γ−codingでは、数xの符号を、prefix部とsuffix部に分けて表す。ここで、log2 xの値以下の整数のうち最大のものをI1(x)= 外1 と書くことにすると、prefix部は、数(1+I1(x))
【0018】
【外1】
Figure 0003708318
【0019】
をUnary codingで表すことで得られ、suffix部は、値(x−2I1(x) )をI1(x)bit分の2進数で表すことで得られる。いくつかの数値の例を以下に挙げる。
【0020】
Figure 0003708318
例えば、数値129の場合は、prefix部の符号‘11111110’は8ビットであり、7つの連続する“1”を含んでいる。これは、I(129)=7、すなわち、数値129のsuffix部が7ビットであることを表している。そして、suffix部‘0000001’は、7ビットで129−27 を表している。この方法では、1ワードで表現される数値を表す符号の最小のビット数は1bit、最大のビット数は63bit(=1+31+31bit)となる。
【0021】
δ−codingでも、γ−codingと同様に、数xの符号を、prefix部とsuffix部に分けて表す。prefix部は、数(1+I1(x))をγ−codingで表すことで得られ、suffix部は、γ−codingと同様に、値(x−2I1(x) )をI1(x)bit分の2進数で表すことで得られる。いくつかの数値の例を以下に挙げる。
【0022】
Figure 0003708318
この方法では、1ワードで表現される数値を表す符号の最小のビット数は1bit、最大のビット数は42bit(=(5+1+5)+31bit)となる。
【0023】
【発明が解決しようとする課題】
しかしながら、上述した従来の符号化手法には、次のような問題がある。
例えば、これらの符号化手法を用いて図40のインデックス構造を表現した場合に、必要となるbit数は図41に示すようになる。図41においては、符号化前の元データのみ10進数の値で記述され、符号化後のインデックス構造は、元データを表現するのに必要なビット数を用いて記述されている。図41を見ると、圧縮を行わない32bit符号化が最も多くのビット数を必要とし、δ−codingが最も少ないビット数で記述できることが分かる。
【0024】
一般に、8bit block符号化、4bit block符号化のようなブロック系の符号化手法では、どんなに小さな数値でも、必ず1ブロック分のビット数を必要とする。ところが、図40のように、差分値を用いたインデックス構造においては、“1”や“2”のような小さな数値がデータの大部分を占めるため、インデックスサイズがあまり小さくならないという問題がある。また、各ブロックの先頭に継続フラグを付加していく処理が必要なため、インデックス作成処理に時間がかかるという問題もある。
【0025】
これに対して、Unary coding、γ−coding、δ−codingのようなビット系の符号化手法では、“1”や“2”のような小さな数値をブロック系よりも小さなビット数で表すことができる。しかし、数値が大きくなるにつれて、ブロック系よりもはるかにビット数が多くなる傾向にあるため、必ずしもインデックスサイズが小さくなるという保証はない。また、アルゴリズムが複雑なため、インデックス作成処理および復号化処理ともに、処理時間が長くなるという問題もある。
【0026】
本発明の課題は、数値データの復号化処理の速度を落とさずに、インデックス作成処理を高速化し、インデックスのサイズを抑えることのできるデータ圧縮装置およびその方法と、データ復元装置およびその方法を提供することである。
【0027】
【課題を解決するための手段】
図1は、本発明のデータ圧縮装置およびデータ復元装置の原理図である。図1のデータ圧縮装置は圧縮手段1と格納手段2を備え、データ復元装置は格納手段2と復元手段3を備える。
【0028】
圧縮手段1は、与えられたデータ4をブロック単位で圧縮し、圧縮されたデータ5の先頭部分に、そのデータ5の長さを表す継続フラグ情報を生成する。
格納手段2は、圧縮されたデータ5を格納する。
【0029】
復元手段3は、ブロック単位で圧縮されたデータ5の先頭部分の継続フラグ情報に基づいて、そのデータ5の長さを決定し、元のデータ4を復元する。
元のデータ4がバイナリのビットパターンである場合、一般に、それが表す数値が大きいほど圧縮率は低下し、小さいほど圧縮率は向上する。圧縮手段1は、元のデータ4の値に応じて圧縮されたデータ5のブロック長を決定し、対応する継続フラグ情報を生成する。そして、その継続フラグ情報をデータ5の先頭部分に格納し、それに続いてデータ4を表すデータを格納する。
【0030】
数値が比較的小さければ、データ5はデータ4より短いビットパターンで表される。また、継続フラグ情報は、データ5から継続フラグ情報を除いた残りの部分のブロック長を表すようにしてもよい。
【0031】
このような圧縮処理によれば、従来のブロック系の符号化のように、各ブロックの先頭に1つずつ継続フラグを付加していく必要がなく、継続フラグ情報の作成処理を1回で済ませることができる。したがって、データ5の作成処理が高速化され、これを用いてインデックス作成処理を高速化することができる。
【0032】
また、データ4の値に応じてデータ5の先頭ブロックの長さを変えることができ、小さな数値の場合にこれを短くすることで、データ5の圧縮率が向上する。インデックス内で用いられる数値データには、1や2のような小さな値が多数現れるため、これはインデックスサイズの削減につながる。
【0033】
復元手段3は、圧縮されたデータ5の先頭部分から継続フラグ情報を取り出し、それを元にデータ5のブロック長を決定する。次に、その長さから継続フラグ情報のブロック長を差し引いて、データ5の残りの部分のブロック長を求め、残りのデータを取り出す。そして、取り出したデータから元のデータ4を生成する。継続フラグ情報が残りのデータのブロック長を表す場合は、それをそのまま用いて残りのデータを取り出すことができる。
【0034】
このような復元処理によれば、従来のブロック系の復号化のように、各ブロックの先頭から継続フラグを1つずつ取り出す必要がなく、継続フラグ情報の取り出しを1回で済ませることができる。したがって、比較的大きな数値の場合には、データ4の作成処理が高速化される。
【0035】
さらに、従来のビット系の符号化と比較して、圧縮処理および復元処理がより簡単であり、処理時間が短くて済む。また、大きな数値の圧縮率はより高くなると考えられる。
【0036】
本発明の別のデータ圧縮装置において、圧縮手段1は符号化手段を含む。符号化手段は、情報検索のためのインデックス内で用いられる文書内単語出現頻度データとして2以下の数値データが与えられたとき、与えられた数値データを2ビットのブロックで符号化することにより圧縮し、文書内単語出現頻度データとして3以上の数値データが与えられたとき、与えられた数値データを、4ビットをブロックの単位として符号化することにより圧縮する。圧縮手段1は、1ブロック以上の圧縮された文書内単語出現頻度データの先頭部分に、圧縮された文書内単語出現頻度データのブロック長を表す継続フラグ情報を生成し、継続フラグ情報に続いて、与えられた数値データを表すデータを生成する。格納手段2は、圧縮された文書内単語出現頻度データを格納する。
本発明の別のデータ復元装置において、格納手段2は、情報検索のためのインデックス内で用いられる文書内単語出現頻度データをブロック単位で符号化することにより圧縮して得られた、1ブロック以上の圧縮された文書内単語出現頻度データを格納する。復元手段3は復号化手段を含む。復号化手段は、圧縮された文書内単語出現頻度データとして2ビットのブロックを1つ与えられたとき、そのブロックを復号化して2以下の数値データを生成し、圧縮された文書内単語出現頻度データとして4ビットをブロックの単位とする1つ以上のブロックが与えられたとき、その1つ以上のブロックを復号化して3以上の数値データを生成する。復元手段3は、圧縮された文書内単語出現頻度データの先頭部分の継続フラグ情報に基づいて、圧縮された文書内単語出現頻度データのブロック長を決定し、継続フラグ情報に続く、元のデータを表すデータを取り出して、元のデータを復元する。
例えば、図1の圧縮手段1と復元手段3は、後述する図2のCPU16(中央処理装置)とメインメモリ19に対応し、格納手段2はメインメモリ19または磁気ディスク装置11に対応する。
【0037】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
本発明においては、新たな符号化方法として、4bit block(4BB)改符号化、84bit block(84BB)符号化、およびB24(block24)符号化の3種類のブロック系符号化方法を提案する。まず、これらの符号化の概要を、それぞれ説明することにする。
【0038】
4BB改符号化は、基本的には、上述の4BB符号化を改良したものである。通常の4BB符号化では、4bitのうちtop 1bitを継続フラグ‘1’とし、そのフラグが存在していたら次の4bitも数が存在するとみなす。これに対し、4BB改符号は、すべての継続フラグをまとめて先頭に持つ構造とする。そして、最初に現れる0より後のビットパターンを数値部分とみなす。いくつかの数値の例を以下に挙げる。
【0039】
表す数 bit
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000 1000
9 1000 1001
128 1100 1000 0000
129 1100 1000 0001
ここで、数値1、2、3、4、5、6、7の場合は、後続するブロックが存在しないので先頭のビットは0となっており、数値8、9の場合は、2番目のブロックが存在するので、1番目のブロックの先頭のビットが1となっている。また、数値128、129の場合は、3番目のブロックも存在するので、1番目のブロックの1番目および2番目のビットが1となっている。継続フラグに続く数値のビットパターンのLSB(least significant bit )は、いずれの場合も最後のブロックの右端に来るようになっている。
【0040】
この方法では、1ワードで表現される数値を表す符号の最小のビット数は4bit、最大ビット数は44bitとなり、圧縮効率自体は4BB符号化と等価である。しかしながら、符号化処理におけるステップ数が4BB符号化よりも少なくなる。このため、大規模データベース(DB)に対してインデックスを作成するような場合には、かなりの高速化が期待できる。
【0041】
また、復号化に関しては、4BB符号化では、1つ1つ継続フラグを判定しながらループ処理を繰り返し、4BB改符号化では、継続フラグを先に復号化してから、まとめて数値を求めることになる。このような違いはあるが、復号化の処理速度は、符号化と比べると、両者の間でそれほど変化はない。ただし、数値が大きくなった場合には、4BB符号より4BB改符号のほうが速くなる。
【0042】
次に、4BB改符号化と類似する84BB符号化について説明する。4BB改符号化のブロック長は、どんな数値に対しても4bit一定であるのに対し、84BB符号化では、初めの1blockだけを8bit、継続フラグによって後ろに続く各ブロックを4bitとする。この方法では、127以下の数値は1bitの0と7bitの数値のビットパターンで表され、128以上の数値はいくつかの継続フラグと数値のビットパターンで表現される。いくつかの数値の例を以下に挙げる。
【0043】
Figure 0003708318
ここで、数値1、2、3、4、5、6、7、8、9、127の場合は、後続するブロックが存在しないので先頭のビットは0となっており、数値128、129の場合は、2番目のブロックが存在するので、1番目のブロックの先頭のビットが1となっている。この方法では、1ワードで表現される数値を表す符号の最小のビット数は8bit、最大のビット数は44bitとなる。
【0044】
例えば、インデックスにおいて文書内単語出現位置として扱われる数値は、文書番号(差分値)や文書内単語出現頻度と比較して、かなり大きな値になる。このため、差分値を用いたとしても、通常の数値データ符号化方法ではうまく圧縮することができない。
【0045】
84BB符号化は、4BB符号化や4BB改符号化と比較した場合、最初の8bitで、1bit分だけ大きな数値まで表現することができる。これにより、中くらいの大きさの数値を、他の符号化よりも少ないビット数で表すことができ、文書内単語出現位置の符号化に適しているといえる。
【0046】
次に、B24符号化とは、数値1、2を2bitで符号化し、数値3〜6を4bitで符号化し、数値7以上を4BB改符号化で符号化する方法である。数値1、2は、初めの1bitを継続フラグ‘0’とする2bit符号で表し、数値3〜6は、初めの2bitを継続フラグ‘10’とする4bit符号で表す。それらより大きい数値の符号化は、4BB改符号化の処理と同様になる。
【0047】
ただし、4BB改符号化では、継続フラグの後に続く数値にはそのままの値が用いられるのに対し、B24符号化では、数値1、2の場合には1を減じた値が用いられ、数値3〜6の場合には3を減じた値が用いられ、7以上の場合には7を減じた値が用いられる。また、継続フラグは、4BB改符号より1bit多くなる。いくつかの数値の例を以下に挙げる。
【0048】
表す数 bit
1 00
2 01
3 1000
4 1001
5 1010
6 1011
7 1100 0000
8 1100 0001
9 1100 0010
39 1110 0010 0000
40 1110 0010 0001
ここで、数値1、2の場合は、先頭のビットは0となっており、その次のビットは元の数値から1を減じた値を表している。また、数値3、4、5、6の場合は、先頭の2ビットが10となっており、その次の2ビットは元の数値から3を減じた値を表している。
【0049】
また、数値7、8、9の場合は、2番目のブロックが存在するので、先頭の2ビットは11となっており、2番目のブロックは元の数値から7を減じた値を表している。また、数値39、40の場合は、3番目のブロックも存在するので、先頭の3ビットが111となっており、2番目および3番目のブロックは元の数値から7を減じた値を表している。
【0050】
この方法では、1ワードで表現される数値を表す符号の最小のビット数は2bit、最大のビット数は44bitとなり、数値1および2を表した場合に、4BB改符号化よりも2ビット節約することができる。通常のDBでは、文書内単語出現頻度のほとんどの数値が1もしくは2となるため、これらの数値を2bitで表すことで、4BB符号化および4BB改符号化よりも、実際のインデックスの圧縮率が高くなることが期待される。
【0051】
また、符号化処理自体も、4BB改符号化と比較して、それほど処理速度は低下しない。さらに、符号化する数値のほとんどが1もしくは2ならば、ステップ数は4BB改符号化よりも少なくなるため、より高速である。復号化の処理速度に関しても、符号化と同様である。
【0052】
図2は、上述した符号化方法に基づくデータ圧縮装置/復元装置を含む情報検索装置の構成図である。図2の情報検索装置は、ソフトウェアを搭載した情報処理装置(コンピュータ)により実現され、磁気ディスク装置11、フロッピーディスク駆動装置(FDD)12、プリンタ14、ディスプレイ15、CPU(中央処理装置)16、キーボード17、ポインティング・デバイス18、メインメモリ19、およびネットワーク接続装置31を備え、それらの各装置はバス20により互いに結合されている。
【0053】
磁気ディスク装置11には、文書DB21とインデックス22が格納される。磁気ディスク装置11の代わりに、光ディスク装置、光磁気ディスク装置等を用いてもよい。
【0054】
CPU16は、メインメモリ19に格納されたプログラムを用いて、情報検索に必要な処理を実現する。メモリ19は、例えばROM(read only memory)、RAM(random access memory)等を含む。メモリ19には、インデックス作成プログラム23、検索エンジン(検索プログラム)24、文書表示プログラム25等が保持され、ワーク領域26が設けられる。
【0055】
インデックス作成プログラム23は、文書DB21からインデックス22を作成して、磁気ディスク装置11に格納する。このプログラム23は、4BB改符号化、84BB符号化、あるいはB24符号化等に基づくデータ圧縮処理を含んでいる。
【0056】
検索エンジン24は、インデックス22を用いて、文書DB21の文書を検索する。全文検索装置の場合には、ユーザが指定した単語列を含む文書を検索し、ランキング検索装置の場合には、ユーザが指定した単語列に対して関連度の高い文書を検索する。この検索エンジン24は、4BB改符号化、84BB符号化、あるいはB24符号化等に基づくデータ復元処理(復号化処理)を含んでいる。
【0057】
文書表示プログラム25は、検索結果から指定された文書を切り出し、それをユーザに表示する。ワーク領域26は、これらのプログラム23、24、25が処理に使用する領域である。
【0058】
また、キーボード17およびポインティング・デバイス18は、ユーザからの要求や指示の入力に用いられ、プリンタ14およびディスプレイ15は、ユーザへの問い合せや処理結果等の出力に用いられる。
【0059】
FDD12は、フロッピーディスク13を駆動し、その記憶内容にアクセスする。フロッピーディスク13に、必要なデータやプログラム23、24、25等を格納しておき、必要に応じて、それらをメモリ19にロードして使用することができる。また、フロッピーディスク13以外にも、メモリカード、CD−ROM(compact disk read only memory )、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体を使用することができる。
【0060】
ネットワーク接続装置31は、LAN(local area network)等の任意の通信ネットワークに接続され、通信に伴うデータ変換等を行う。情報検索装置は、ネットワーク接続装置31を介して、外部の情報提供者の装置32(データベース等)と通信する。これにより、必要に応じて、上述のプログラムとデータを装置32からネットワークを介して受け取り、それらをメモリ19にロードして使用することができる。
【0061】
次に、図3から図20までを参照しながら、本発明のデータ圧縮装置/復元装置で用いる4BB改符号化、84BB符号化、およびB24符号化について、より具体的に説明する。
【0062】
図3から図20において、変数Valueは、元データのビットパターンを表し、変数Bitbufは、符号化されたビットパターンを表す。また、‘:=’は、右辺の値を左辺の値へ代入する操作を表し、‘bitcopy(第1引数,第2引数)’は、第2引数のビットパターンを第1引数の先頭にコピーする操作を表す。
【0063】
また、‘bitcat(第1引数,第2引数)’は、第2引数のビットパターンを第1引数の後に追加する操作を表し、‘read(第1引数,第2引数)’は、第1引数から第2引数の個数分のビットパターンを読み取って数値にする操作を表す。その他の記述については、C言語もしくは数学記号と同様である。
【0064】
比較のため、最初に、4BB符号化処理および4BB復号化処理の実現例を説明することにする。図3は、4BB符号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、i=11とおいて(ステップS1)、8ビットの1次バッファCode[i]を用意し、Valueのビットパターンの下位3ビットをCode[i]の後半に入れる(ステップS2)。ここで、‘Value & 0x7’は、Valueと0x7=‘0111’の論理積を表している。
【0065】
次に、Valueを3ビット右にシフトし(ステップS3)、Valueの値を0と比較する(ステップS4)。Valueが0より大きい場合、iを1だけデクリメントし(ステップS5)、シフト後のValueの下位3ビットの前にフラグの値1を付加して、Code[i]の後半に入れる(ステップS6)。ここで、‘0x8 | (Value & 0x7)’は、0x8=‘1000’とValueの下位3ビットとの論理和を表している。そして、Valueを3ビット右にシフトし(ステップS7)、ステップS4以降の処理を繰り返す。
【0066】
ステップS4において、Valueの値が0になると、次に、iと12を比較する(ステップS8)。iが12より小さければ、Code[i]の後半に格納された4ビットのデータを、Bitbufの空領域の先頭部分にコピーして(ステップS9)。iを1だけインクリメントする(ステップS10)。
【0067】
そして、ステップS8以降の処理を繰り返し、ステップS8においてiが12に達すると、処理を終了する。このような符号化処理のプログラムコード(C言語で記述)は、例えば、図4に示すようになる。
【0068】
図5は、4BB復号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、Bitbufの初めの4ビットをValueに読み込み(ステップS11)、その値を0x7と比較する(ステップS12)。Valueが0x7以下の場合は、先頭のフラグが0であり、後続ブロックが存在しないことを意味するので、そのまま処理を終了する。
【0069】
Valueが0x7より大きければ、先頭のフラグが1であり、後続ブロックが存在することを意味する。そこで、Valueのビットパターンの下位3ビットのみを改めてValueとし(ステップS13)、Bitbuf内の次の4ビットを変数tempに読み込む(ステップS14)。
【0070】
次に、Valueを3ビット左にシフトして、tempの下位3ビットを加算する(ステップS15)。これにより、tempから先頭のフラグを除いた残りの部分がValueに付加される。そして、tempの値を0x7と比較する(ステップS16)。
【0071】
tempが0x7より大きければステップS14以降の処理を繰り返し、tempが0x7以下であれば処理を終了する。終了時のValueのビットパターンは、Bitbufに対応する元データを表している。このような復号化処理のプログラムコード(C言語で記述)は、例えば、図6に示すようになる。図6において、get xbits(Bitbuf)は、Bitbufからxビット分のビットパターンを読み出す関数を表す。
【0072】
次に、4BB改符号化処理および4BB改復号化処理を説明する。図7は、4BB改符号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、I2(Value)= 外2 を求め、I2(Value)+1を継
【0073】
【外2】
Figure 0003708318
【0074】
続フラグFlagの値とする(ステップS21)。ここで、I2(x)= 外3
は、log8 xの値以下の整数のうち最大のものを表す。
【0075】
【外3】
Figure 0003708318
【0076】
次に、FlagをUnaryコードに変換してBitbufに入れ(ステップS22)、それに続いてValueを入れて(ステップS23)、処理を終了する。
【0077】
図7を図3と比較すると、4BB改符号化処理のステップ数は、4BB符号化処理のそれよりはるかに少ないことが分かる。4BB改符号化では、継続フラグを元データのビットパターンの前に付加するだけなので、このようにステップ数が少なくて済み、高速な処理が実現される。また、継続フラグの値が小さければ、そのUnaryコードは容易に求められる。
【0078】
4BB改符号化処理のプログラムコード(C言語で記述)は、例えば、図8に示すようになる。図8においては、実際にI2(Value)を計算する代わりに、if−else ifで代用している。これは、Valueの値の範囲と、それに対応するI2(Value)の値の範囲とが、あらかじめ分かっているためである。また、set xbits(Bitbuf,X)は、Xからxビット分のビットパターンを読み出してBitbufに書き込む関数を表す。
【0079】
例えば、十進法で21という数値は以下の手順により符号化され、対応する符号‘10010101’が得られる。
1.I2(21)+1=2であるため、継続フラグは2となる(ステップS21)。
【0080】
2.継続フラグ2をUnaryコード‘10’でBitbufに入れる(ステップS22)。
3.継続フラグに続いて、Value=21のビットパターン‘010101’をBitbufに入れる(ステップS23)。
【0081】
また、十進法で300という数値は以下の手順により符号化され、対応する符号‘110100101100’が得られる。
1.I2(300)+1=3であるため、継続フラグは3となる(ステップS21)。
【0082】
2.継続フラグ3をUnaryコード‘110’でBitbufに入れる(ステップS22)。
3.継続フラグに続いて、Value=300のビットパターン‘100101100’をBitbufに入れる(ステップS23)。
【0083】
次に、図9は、4BB改復号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、継続フラグのビット数を表す変数CFlagを0とおき(ステップS31)、Bitbufの初めの4ビットを変数Flagに読み込み(ステップS32)、その値を0x8と比較する(ステップS33)。
【0084】
Flagが0x8より小さい場合は、先頭のビットが0であり、後続するブロックが存在しないことを意味する。そこで、FlagをValueに代入して(ステップS34)、処理を終了する。
【0085】
Flagが0x8以上であれば、先頭のビットが1であり、後続ブロックが1つ以上存在することを意味する。そこで、最初の後続ブロックが継続フラグに対応するかどうかを調べるために、Flagと0xf=‘1111’を比較する(ステップS35)。
【0086】
Flagが0xfであれば、さらに継続フラグのブロックが続くことが分かる。そこで、CFlagに4を加算し、Bitbuf内の次の4ビットをFlagに読み込む(ステップS36)。そして、ステップS35以降の処理を繰り返す。
【0087】
Flagが0xfより小さければ、そのビットパターンは0を含んでおり、継続フラグが途切れることが分かる。そこで、Flagの中で最初に0が現れた位置の順位をCFlagに加算する。また、その位置より下のビットにマスクを掛けてそれらのビットを抽出し、Maskに代入する(ステップS37)。
【0088】
次に、今までにBitbufより読み込んだビット数をCFlagの4倍から減算した値をReadBitとする(ステップS38)。CFlagを4倍することで、Bitbufに含まれるデータの全ビット数が得られ、それから読み込み済みのビット数を差し引くことで、残りのデータの全ビット数が得られる。
【0089】
次に、MaskをReadBitのビット数だけ左にシフトしてValueに代入し、Bitbufから、ReadBitのビット数だけの残りのデータを読み込んで、それをValueに加算し、処理を終了する。これにより、継続フラグの部分を除いた元データのビットパターンが、Valueとして得られる。
【0090】
図9を図5と比較すると、4BB改復号化処理のステップ数は、4BB復号化処理のそれより少し多いことが分かる。しかし、図5および図9のループ内の処理において、4BB復号化の場合は、継続フラグとデータ部分を同時に読み込むのに対して、4BB改復号化の場合は、継続フラグ部分のみ読み込めばよい。このため、1ブロックまたは2ブロック程度の符号を復号化する場合は、4BB改復号化の処理速度は4BB復号化処理とそれほど変わらないが、大きなブロックの復号化では4BB改復号化の方がはるかに速くなる。
【0091】
4BB改復号化処理のプログラムコード(C言語で記述)は、例えば、図10に示すようになる。図10においては、実際にCFlagおよびReadBitの値を計算する代わりに、if−else ifで代用している。これは、Valueの値の範囲と、それに対応するReadBitの値の範囲とが、あらかじめ分かっているためである。また、変数Valueを変数Flagの代わりに用いており、変数Maskの代わりに、Valueとマスク用ビットパターンの論理積を用いている。
【0092】
例えば、上述の符号‘10010101’は以下の手順により復号化され、対応する数値21が得られる。
1.初めの4ビット‘1001’を読み込む(ステップS32)。
【0093】
2.継続フラグは‘10’であり、これは上の2ビットに相当するため、下の2ビットにマスクを掛け、Mask=‘1001’&0x3=‘0001’を得る(ステップS37)。また、ReadBit=2×4−4=4となるので、‘0001’を4ビット左へシフトし、Valueに代入する(ステップS38)。これにより、Value=‘10000’=16となる。
【0094】
3.次の4ビット(ReadBitのビット数)である‘0101’=5を読み込み、Valueに加算する(ステップS38)。こうして、Value=16+5=21となる。
【0095】
また、上述の符号‘110100101100’は以下の手順により復号化され、対応する数値300が得られる。
1.初めの4ビット‘1101’を読み込む(ステップS32)。
【0096】
2.継続フラグは‘110’であり、これは上の3ビットに相当するため、下の1ビットにマスクを掛け、Mask=‘1101’&0x1=‘0001’を得る(ステップS37)。また、ReadBit=3×4−4=8となるので、‘0001’を8ビット左へシフトし、Valueに代入する(ステップS38)。これにより、Value=‘100000000’=256となる。
【0097】
3.次の8ビット(ReadBitのビット数)である‘00101100’=44を読み込み、Valueに加算する(ステップS38)。こうして、Value=256+44=300となる。
【0098】
次に、84BB符号化処理および84BB復号化処理を説明する。図11は、84BB符号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、Valueの値を128と比較する(ステップS41)。そして、Valueが128より小さければ、それをBitbufにコピーして(ステップS42)、処理を終了する。
【0099】
Valueが128以上であれば、上述のI2(x)を用いてI2(Value)を求め、それを継続フラグFlagの値とする(ステップS43)。次に、FlagをUnaryコードに変換してBitbufに入れ(ステップS44)、それに続いてValueを入れて(ステップS45)、処理を終了する。
【0100】
図11を図7と比較すると、84BB符号化処理では、4BB改符号化処理より条件判定が1つ増えるだけなので、その処理速度は4BB改符号化とほとんど変わらない。
【0101】
また、84BB符号化処理のプログラムコード(C言語で記述)は、例えば、図12に示すようになる。図12においては、4BB改符号化と同様に、実際にI2(Value)を計算する代わりに、if−else ifで代用している。
【0102】
例えば、上述の300という数値は以下の手順により符号化され、対応する符号‘100100101100’が得られる。
1.I2(300)=2であるため、継続フラグは2となる(ステップS43)。
【0103】
2.継続フラグ2をUnaryコード‘10’でBitbufに入れる(ステップS44)。
3.継続フラグに続いて、Value=300のビットパターン‘0100101100’をBitbufに入れる(ステップS45)。
【0104】
次に、図13は、84BB復号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、Bitbufの初めの8ビットを変数Flagに読み込み(ステップS51)、その値を128と比較する(ステップS52)。Flagが128より小さい場合は、先頭のビットが0であり、後続するブロックが存在しないことを意味する。そこで、FlagをValueに代入して(ステップS53)、処理を終了する。
【0105】
Flagが128以上の場合は、先頭のビットが1であり、後続ブロックが1つ以上存在することを意味する。そこで、継続フラグのビット数を表す変数CFlagを0とおき(ステップS54)、最初の後続ブロックが継続フラグに対応するかどうかを調べるために、Flagの値を0xff=‘11111111’と比較する(ステップS54a)。
【0106】
Flagが0xffであれば、さらに継続フラグのブロックが続くことが分かる。そこで、CFlagに8を加算し(ステップS54b)、Bitbuf内の次の4ビットをFlagに読み込む(ステップS54c)。そして、読み込んだブロックの次のブロックが継続フラグに対応するかどうかを調べるために、Flagの値を0xf=‘1111’と比較する(ステップS55)。
【0107】
Flagが0xfであれば、さらに継続フラグのブロックが続くことが分かる。そこで、CFlagに4を加算し、Bitbuf内の次の4ビットをFlagに読み込む(ステップS56)。そして、ステップS55以降の処理を繰り返す。
【0108】
ステップS54aでFlagが0xffより小さいとき、および、ステップS55でFlagが0xfより小さいときは、そのビットパターンは0を含んでおり、継続フラグが途切れることが分かる。そこで、Flagの中で最初に0が現れた位置の順位をCFlagに加算する。また、その位置より下のビットにマスクを掛けてそれらのビットを抽出し、Maskに代入する(ステップS57)。
【0109】
次に、今までにBitbufより読み込んだビット数を(CFlag+1)の4倍から減算した値をReadBitとする(ステップS58)。次に、MaskをReadBitのビット数だけ左にシフトしてValueに代入し、Bitbufから、ReadBitのビット数だけの残りのデータを読み込んで、それをValueに加算し、処理を終了する。これにより、継続フラグの部分を除いた元データのビットパターンが、Valueとして得られる。
【0110】
このような84BB復号化処理のプログラムコード(C言語で記述)は、例えば、図14に示すようになる。図14においては、4BB改復号化と同様に、実際にCFlagおよびReadBitの値を計算する代わりに、if−elseifで代用している。また、変数Valueを変数Flagの代わりに用いており、変数Maskの代わりに、Valueとマスク用ビットパターンの論理積を用いている。
【0111】
例えば、上述の符号‘100100101100’は以下の手順により復号化され、対応する数値300が得られる。
1.初めの8ビット‘10010010’を読み込む(ステップS51)。
【0112】
2.継続フラグは‘10’であり、これは上の2ビットに相当するため、下の6ビットにマスクを掛け、Mask=‘10010010’&0x3f=‘00010010’を得る(ステップS57)。また、ReadBit=(2+1)×4−8=4となるので、‘00010010’を4ビット左へシフトし、Valueに代入する(ステップS58)。これにより、Value=‘100100000’=288となる。
【0113】
3.次の4ビット(ReadBitのビット数)である‘1100’=12を読み込み、Valueに加算する(ステップS58)。こうして、Value=288+12=300となる。
【0114】
次に、B24符号化処理およびB24復号化処理を説明する。図15は、B24符号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、Valueを1と比較する(ステップS61)。Value=1の場合は、ビットパターン‘00’をBitbufに入れて(ステップS62)、処理を終了する。
【0115】
Valueが1でなければ、次に、それを2と比較する(ステップS63)。Value=2の場合は、ビットパターン‘01’をBitbufに入れて(ステップS64)、処理を終了する。
【0116】
Valueが2でなければ、次に、それを7と比較する(ステップS65)。Valueが7より小さければ、ビットパターン‘10’を継続フラグとしてBitbufに入れ、その後に(Value−3)のビットパターンを入れて(ステップS66)、処理を終了する。
【0117】
Valueが7以上であれば、ここで、上述のI2(x)を用いてI2(Value)を求め、I2(Value)+2を変数Flagに代入する(ステップS67)。そして、FlagをUnaryコードに変換してBitbufに入れ、それに続いて(Value−7)のビットパターンを入れて、処理を終了する。
【0118】
図15を図7と比較すると、Valueが1または2であれば、B24符号化処理のステップ数は4BB改符号化処理のそれよりも少なくなり、処理速度はより速くなる。また、図15のステップS67の処理は、図7のステップS21、S22、S23の処理に対応している。したがって、Valueが7以上であっても、4BB改符号化処理と比較して条件判定が3つ追加されているだけなので、処理速度はそれほど低下しない。Valueが3〜6の場合も同様である。
【0119】
B24符号化処理のプログラムコード(C言語で記述)は、例えば、図16に示すようになる。図16においては、上述の4BB改符号化と同様に、実際にI2(Value)を計算する代わりに、if−else ifで代用している。
【0120】
例えば、上述の21という数値は以下の手順により符号化され、対応する符号‘11001110’が得られる。
1.I2(21)+2=3であるため、継続フラグは3となる(ステップS67)。
【0121】
2.継続フラグ3をUnaryコード‘110’でBitbufに入れる(ステップS67)。
3.継続フラグに続いて、Value−7=21−7=14のビットパターン‘01110’をBitbufに入れる(ステップS67)。
【0122】
次に、図17は、B24復号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、Bitbufの初めの2ビットを変数Flagに読み込み(ステップS71)、その値を1と比較する(ステップS72)。
【0123】
Flagが1以下の場合は、先頭のビットが0であり、後続するビットパターンが存在しないことを意味する。そこで、(Flag+1)のビットパターンをValueに代入して(ステップS73)、処理を終了する。
【0124】
Flagが1より大きければ、先頭のビットが1であり、後続するビットパターンが存在することを意味する。そこで、次に、その値を2と比較する(ステップS74)。
【0125】
Flagが2であれば、後続するビットパターンは2ビットであることを意味する。そこで、Bitbufの残りの2ビットを変数Valueに読み込み、3を加算して(ステップS75)、処理を終了する。
【0126】
Flagが2より大きければ、それは‘11’であり、後続する1つ以上のブロックが存在することを意味する。そこで、Flag=‘11’を2ビット左へシフトし、Bitbufの次の2ビットの値を読み込んで、Flagに加算する(ステップS76)。そして、継続フラグのビット数を表す変数CFlagを0とおき、最初の後続ブロックが継続フラグに対応するかどうかを調べるために、Flagと0xf=‘1111’を比較する(ステップS78)。
【0127】
Flagが0xfであれば、さらに継続フラグのブロックが続くことが分かる。そこで、CFlagに4を加算し、Bitbuf内の次の4ビットをFlagに読み込む(ステップS79)。そして、ステップS78以降の処理を繰り返す。
【0128】
Flagが0xfより小さければ、そのビットパターンは0を含んでおり、継続フラグが途切れることが分かる。そこで、Flagの中で最初に0が現れた位置の順位をCFlagに加算する。また、その位置より下のビットにマスクを掛けてそれらのビットを抽出し、Maskに代入する(ステップS80)。
【0129】
次に、今までにBitbufより読み込んだビット数を(CFlag−1)の4倍から減算した値をReadBitとする(ステップS81)。そして、MaskをReadBitのビット数だけ左にシフトしてValueに代入し、Bitbufから、ReadBitのビット数だけの残りのデータを読み込んで、それをValueに加算する。これにより、符号から継続フラグの部分を除いたビットパターンが、Valueとして得られる。元データを得るために、Valueにさらに7を加算して、処理を終了する。
【0130】
図17を図9と比較すると、B24復号化処理では4BB改復号化処理よりも条件判定が1つ多いが、処理速度はそれほど低下しない。
B24復号化処理のプログラムコード(C言語で記述)は、例えば、図18に示すようになる。図18においては、上述の4BB改復号化と同様に、実際にCFlagおよびReadBitの値を計算する代わりに、if−else ifで代用している。また、変数Valueを変数Flagの代わりに用いており、変数Maskの代わりに、Valueとマスク用ビット列の論理積を用いている。
【0131】
例えば、上述の符号‘11001110’は以下の手順により復号化され、対応する数値21が得られる。
1.初めの2ビット‘11’をFlagに読み込む(ステップS71)。
【0132】
2.読み込んだ値は3であるため、Flagを2ビット左にシフトして、さらに次の2ビット‘00’を読み込み(ステップS76)、継続フラグを確認する(ステップS78)。ここで、継続フラグが‘110’であることが分かる。
【0133】
3.継続フラグが3ビット目で途切れているので、継続フラグに続く残りの1ビットにマスクを掛け、Mask=‘1100’&0x1=‘0000’を得る。また、ReadBit=(3−1)×4−4=4となるので、‘0000’を4ビット左へシフトし、Valueに代入する(ステップS81)。
【0134】
4.次の4ビット(ReadBitのビット数)である‘1110’=14を読み込み、Valueに加算して、さらに7を加算する(ステップS81)。こうして、Value=14+7=21となる。
【0135】
以上説明した4BB改符号化、84BB符号化、およびB24符号化に必要な各ビット数を、4BB符号化、γ−coding、およびδ−codingに必要な各ビット数と比較すると、図19に示すようになる。
【0136】
図19において、ほとんどの符号化方法が小さい数値を少ないビット数、大きい数値を多いビット数で表していることが分かる。ある数値列が与えられた時にどの符号化が最も圧縮率が高くなるかは、その数値列中においてどの範囲の数値が多く出現しているかによって大きく異なる。
【0137】
例えば、1、2のみが多く出現する数値列に対しては、B24符号化が最も圧縮率が高いと予想され、また、512付近の値が多く出現するような数値列に対しては、84BB符号化が最も圧縮率が高いと期待できる。
【0138】
また、32ビットで表現できる最大数である4294967295を各方法で符号化すると、得られる符号のビットパターンとビット数は図20に示すようになる。
【0139】
ところで、インデックスに用いられる文書内単語出現位置は、必ずしも小さな数値とは限らず、差分情報を活用したとしてもかなり大きな数値となることが多い。このような大きな数値を扱った場合には、いずれの符号化方法を用いても圧縮効率は上がらない。
【0140】
そこで、本発明では、本来の文書内単語出現位置等の数値データを適当な整数値で除算することにより、情報の粒度を粗くし、より小さな中間数値に変換することにする。小さな数値であれば、図19から分かるように、いずれの符号化方法を用いても圧縮効率が良くなる。このような変換を用いた符号化をPer符号化と呼び、特に、除算の分母をnとする場合をPer(n)符号化と呼ぶことにする。
【0141】
図21は、Per符号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、元データを変数numに読み込み(ステップS91)、それをあらかじめ決められた分母値Perで除算する(ステップS92)。
【0142】
除算に用いるPerの値は、高速に実行できるシフト命令が利用可能な値から選択することが望ましい。例えば、2、4、8、16、32、64等の値がPerとして用いられる。ここでは、得られた商の少数点以下の端数は切り捨て、その整数部分を中間数値とし、それを改めてnumに代入する。
【0143】
次に、numの値を符号化して(ステップS93)、処理を終了する。ステップS93では、任意の符号化方法を用いることができる。ただし、例えばB24符号化のように、0を表現できない符号化方法を用いる場合には、ステップS92で得られたnumが0のとき、それに1を加算してから符号化するものとする。
【0144】
ここで、ステップS93における符号化方法としてB24符号化を用いた場合の例を説明する。ここでは、分母値を2とするPer(2)符号化により、上述の21という数値は以下の手順により符号化され、対応する符号‘11000011’が得られる。
【0145】
1.21を2で除算し、商の小数点以下は切り捨てる。これにより、num=10となる(ステップS92)。
2.I2(10)+2=3であるため、継続フラグは3となる(図15、ステップS67)。
【0146】
3.継続フラグ3をUnaryコード‘110’でBitbufに入れる(ステップS67)。
4.継続フラグに続いて、Value−7=10−7=3のビットパターン‘00011’をBitbufに入れる(ステップS67)。
【0147】
次に、図22は、Per復号化処理のフローチャートである。処理が開始されると、情報検索装置は、まず、Per符号を復号化し、得られた数値を変数numに読み込む(ステップS102)。ただし、ステップS102では、図21のステップS93で用いた符号化方法に対応する復号化方法を用いる。次に、numに上述の分母値Perを乗算し(ステップS103)、その結果を呼び出し元のプログラムへ返して(ステップS104)、処理を終了する。
【0148】
一般に、Per復号化により得られる数値データは、必ずしも元データと一致するとは限らない。例えば、上述の数値21に対応する符号‘11000011’をB24復号化処理により復号化すると、数値10が得られる(ステップS102)。しかし、この数値にPer=2を乗算すると、num=20となり(ステップS103)、元の数値には戻らない。したがって、Per符号化は、文書内単語出現位置のように、元データのおおよその値が再現されればよい場合に有効である。
【0149】
インデックスの圧縮に用いられる各符号化方法は、いずれも小さな数値を少ないビットで、大きな数値を多くのビットで表すようになっている。Per符号化によれば、大きな数値を小さな数値に変換してから符号化するので、それだけ圧縮の効果が期待できる。
【0150】
ところで、文書内単語出現位置の情報を含めたインデックス構造は、[文書番号,文書内単語出現頻度,文書内単語出現位置領域数,文書内単語出現位置,・・・,]のようになる。ここで、文書内単語出現位置領域数には、後続する文書内単語出現位置のデータ領域の大きさが記述される。
【0151】
文書番号の情報は、該当する文書番号と前の組の文書番号との差分で表すことができ、文書内単語出現位置の情報も、同一文書内における該当する位置と前の文書内単語出現位置との差分で表すことができる。しかし、文書内単語出現頻度や文書内単語出現位置領域数は、数値の小さいものから大きいものの順に並んでいないので、差分値を取ることはできない。
【0152】
通常の情報検索装置では、文書内単語出現位置領域数はビット単位で記述される。しかし、本発明の符号化方法では、最小のブロックのビット数が2ビットまたは4ビットであることから、文書内単語出現位置領域数を最小ブロック単位で記述することができる。
【0153】
例えば、あるキーの出現位置の情報を表現するのに200bit必要だったとすると、ビット単位では200という数値で表現されるのに対して、2ビット単位では100という数値で表現され、4ビット単位では50という数値で表現される。文書内単語出現位置領域数も他の数値とともに符号化されるため、より小さい数値で表現することによって、インデックスサイズの圧縮率の向上が期待できる。
【0154】
また、文書内単語出現位置領域数として文書内単語出現頻度を代用した場合のインデックス構造は、[文書番号,文書内単語出現頻度,文書内単語出現位置,・・・,]のようになる。ここで、文書内単語出現頻度は、後続する文書内単語出現位置の個数を表す。
【0155】
ただし、この場合、次の組の文書番号を取り出すためには、文書内単語出現頻度の後の文書内単語出現位置をすべて復号化しなければならない。これに対して、文書内単語出現位置領域数を付加した場合には、文書内単語出現位置を復号化する必要はなく、その領域数から計算されるビット数だけ離れた場所にアクセスすればよい。
【0156】
次に、図23から図37までを参照しながら、上述の各符号化方法を組み合わせて用いたインデックス構造の例を説明する。インデックスの構造は、その用途に応じて、以下の5つの構成を取るものとする。
【0157】
第1のインデックス構造:[文書番号]
第2のインデックス構造:[文書番号,文書内単語出現頻度]
第3のインデックス構造:[文書番号,文書内単語出現頻度,文書内単語出現位置,・・・,]
第4のインデックス構造:[文書番号,文書内単語出現位置領域数,文書内単語出現位置,・・・,]
第5のインデックス構造:[文書番号,文書内単語出現頻度,文書内単語出現位置領域数,文書内単語出現位置,・・・,]
例えば、図40のインデックス構造を第5のインデックス構造を用いて書き直すと、図23に示すように表現される。ここで、‘?’の位置には、文書内単語出現位置領域数が書き込まれる。以下に示す例では、元データとして図23の数値を用いており、それらは10進数で表されている。
【0158】
図24は、第1のインデックス構造を用いた場合の4BB改符号およびB24符号のビットパターンと、それぞれの符号の総ビット数を示している。第1のインデックス構造は文書番号のみであるので、Per符号化は用いられない。
【0159】
図25は、第2のインデックス構造を用いた場合の符号のビットパターンと総ビット数を示している。ここでは、Per(2)符号化を、文書内単語出現頻度のみに適用し、(文書内単語出現頻度/2)の整数部分を符号化している。ただし、その整数部分が0となる場合は代わりに数値1を符号化している。
【0160】
また、文書番号と文書内単語出現頻度を符号化する際、上述の各符号化方法の様々な組合せが考えられる。ここでは、以下の6通りの組合せについて、符号化の結果が示されている。
【0161】
1.文書番号:4BB改、文書内単語出現頻度:4BB改(図25、組合せ1)
2.文書番号:4BB改、文書内単語出現頻度:4BB改+Per(2)(図25、組合せ2)
3.文書番号:4BB改、文書内単語出現頻度:B24+Per(2)(図25、組合せ3)
4.文書番号:B24、文書内単語出現頻度:4BB改(図25、組合せ4)
5.文書番号:B24、文書内単語出現頻度:4BB改+Per(2)(図25、組合せ5)
6.文書番号:B24、文書内単語出現頻度:B24+Per(2)(図25、組合せ6)
図26、27、28は、第3のインデックス構造を用いた場合の符号のビットパターンと総ビット数を示している。ここでは、Per(16)符号化を、文書内単語出現位置のみに適用し、(文書内単語出現頻度/16)の整数部分を符号化している。ただし、その整数部分が0となる場合は代わりに数値1を符号化している。
【0162】
第3のインデックス構造の場合には、文書内単語出現位置の個数が文書内単語出現頻度となるため、文書内単語出現頻度のみにPer符号化を適用することはできない。そこで、以下の24通りの組合せについて、符号化の結果が示されている。
【0163】
1.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置:4BB改(図26、組合せ1)
2.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置:4BB改+Per(16)(図26、組合せ2)
3.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置:B24(図26、組合せ3)
4.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置:B24+Per(16)(図26、組合せ4)
5.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置:4BB改(図26、組合せ5)
6.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置:4BB改+Per(16)(図26、組合せ6)
7.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置:B24(図26、組合せ7)
8.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置:B24+Per(16)(図26、組合せ8)
9.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置:4BB改(図27、組合せ9)
10.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置:4BB改+Per(16)(図27、組合せ10)
11.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置:B24(図27、組合せ11)
12.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置:B24+Per(16)(図27、組合せ12)
13.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置:4BB改(図27、組合せ13)
14.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置:4BB改+Per(16)(図27、組合せ14)
15.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置:B24(図27、組合せ15)
16.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置:B24+Per(16)(図27、組合せ16)
17.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置:84BB(図28、組合せ17)
18.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置:84BB+Per(16)(図28、組合せ18)
19.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置:84BB(図28、組合せ19)
20.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置:84BB+Per(16)(図28、組合せ20)
21.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置:84BB(図28、組合せ21)
22.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置:84BB+Per(16)(図28、組合せ22)
23.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置:84BB(図28、組合せ23)
24.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置:84BB+Per(16)(図28、組合せ24)
図29、30、31は、第4のインデックス構造を用いた場合の符号のビットパターンと総ビット数を示している。ここでは、Per(16)符号化を、文書内単語出現位置のみに適用し、(文書内単語出現頻度/16)の整数部分を符号化している。ただし、その整数部分が0となる場合は代わりに数値1を符号化している。
【0164】
文書内単語出現位置を4BB改符号化で符号化した場合には、文書内単語出現位置領域数の単位は4ビットとなり、B24符号化で符号化した場合には、文書内単語出現位置領域数の単位は2ビットとなる。コード系のコラムの()内のビット数は、この単位ブロックの大きさを表し、各ビットパターンの右側の()内の数値は、そのビットパターンに対応する十進数を表す。ここでは、以下の24通りの組合せについて、符号化の結果が示されている。
【0165】
1.文書番号:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改(図29、組合せ1)
2.文書番号:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改+Per(16)(図29、組合せ2)
3.文書番号:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24(図29、組合せ3)
4.文書番号:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24+Per(16)(図29、組合せ4)
5.文書番号:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改(図29、組合せ5)
6.文書番号:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改+Per(16)(図29、組合せ6)
7.文書番号:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:B24(図29、組合せ7)
8.文書番号:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:B24+Per(16)(図29、組合せ8)
9.文書番号:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改(図30、組合せ9)
10.文書番号:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改+Per(16)(図30、組合せ10)
11.文書番号:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24(図30、組合せ11)
12.文書番号:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24+Per(16)(図30、組合せ12)
13.文書番号:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改(図30、組合せ13)
14.文書番号:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改+Per(16)(図30、組合せ14)
15.文書番号:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:B24(図30、組合せ15)
16.文書番号:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:B24+Per(16)(図30、組合せ16)
17.文書番号:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB(図31、組合せ17)
18.文書番号:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB+Per(16)(図31、組合せ18)
19.文書番号:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB(図31、組合せ19)
20.文書番号:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB+Per(16)(図31、組合せ20)
21.文書番号:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB(図31、組合せ21)
22.文書番号:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB+Per(16)(図31、組合せ22)
23.文書番号:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB(図31、組合せ23)
24.文書番号:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB+Per(16)(図31、組合せ24)
図32、33、34、35、36、37は、第5のインデックス構造を用いた場合の符号のビットパターンと総ビット数を示している。ここでは、Per(16)符号化を、文書内単語出現位置のみに適用し、(文書内単語出現頻度/16)の整数部分を符号化している。ただし、その整数部分が0となる場合は代わりに数値1を符号化している。
【0166】
コード系のコラムの()内のビット数は、文書内単語出現位置領域数の単位の大きさを表し、各ビットパターンの右側の()内の数値は、そのビットパターンに対応する十進数を表す。ここでは、以下の48通りの組合せについて、符号化の結果が示されている。
【0167】
1.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改(図32、組合せ1)
2.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改+Per(16)(図32、組合せ2)
3.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24(図32、組合せ3)
4.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24+Per(16)(図32、組合せ4)
5.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改(図32、組合せ5)
6.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改+Per(16)(図32、組合せ6)
7.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:B24(図32、組合せ7)
8.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:B24+Per(16)(図32、組合せ8)
9.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改(図33、組合せ9)
10.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改+Per(16)(図33、組合せ10)
11.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24(図33、組合せ11)
12.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24+Per(16)(図33、組合せ12)
13.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改(図33、組合せ13)
14.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改+Per(16)(図33、組合せ14)
15.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:B24(図33、組合せ15)
16.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:B24+Per(16)(図33、組合せ16)
17.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改(図34、組合せ17)
18.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改+Per(16)(図34、組合せ18)
19.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24(図34、組合せ19)
20.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24+Per(16)(図34、組合せ20)
21.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改(図34、組合せ21)
22.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改+Per(16)(図34、組合せ22)
23.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:B24(図34、組合せ23)
24.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:B24+Per(16)(図34、組合せ24)
25.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改(図35、組合せ25)
26.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:4BB改+Per(16)(図35、組合せ26)
27.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24(図35、組合せ27)
28.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:B24+Per(16)(図35、組合せ28)
29.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改(図35、組合せ29)
30.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:4BB改+Per(16)(図35、組合せ30)
31.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:B24(図35、組合せ31)
32.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:B24+Per(16)(図35、組合せ32)
33.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB(図36、組合せ33)
34.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB+Per(16)(図36、組合せ34)
35.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB(図36、組合せ35)
36.文書番号:4BB改、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB+Per(16)(図36、組合せ36)
37.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB(図36、組合せ37)
38.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB+Per(16)(図36、組合せ38)
39.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB(図36、組合せ39)
40.文書番号:4BB改、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB+Per(16)(図36、組合せ40)
41.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB(図37、組合せ41)
42.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB+Per(16)(図37、組合せ42)
43.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB(図37、組合せ43)
44.文書番号:B24、文書内単語出現頻度:4BB改、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB+Per(16)(図37、組合せ44)
45.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB(図37、組合せ45)
46.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:4BB改、文書内単語出現位置:84BB+Per(16)(図37、組合せ46)
47.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB(図37、組合せ47)
48.文書番号:B24、文書内単語出現頻度:B24、文書内単語出現位置領域数:B24、文書内単語出現位置:84BB+Per(16)(図37、組合せ48)
以上説明した実施形態においては、本発明のデータ圧縮/復元装置を情報検索装置に適用しているが、このデータ圧縮/復元装置は、検索用インデックスのみに限らず、任意のデータの圧縮/復元に用いることができる。
【0168】
【発明の効果】
本発明によれば、数値データの復号化処理の速度を落とさずに、インデックス作成処理を高速化することができ、また、インデックスの圧縮率を高めることができる。
【0169】
特に、4BB改符号化により、インデックス作成に要する時間を短縮することができ、B24符号化および84BB符号化により、それほど符号化/復号化の処理速度を落とすことなく、インデックスの圧縮率を高めることができる。また、Per符号化により、情報の精度は多少落ちるものの、インデックスの圧縮率を高めることができる。
【図面の簡単な説明】
【図1】本発明のデータ圧縮/復元装置の原理図である。
【図2】情報検索装置の構成図である。
【図3】4BB符号化処理のフローチャートである。
【図4】4BB符号化のプログラムを示す図である。
【図5】4BB復号化処理のフローチャートである。
【図6】4BB復号化のプログラムを示す図である。
【図7】4BB改符号化処理のフローチャートである。
【図8】4BB改符号化のプログラムを示す図である。
【図9】4BB改復号化処理のフローチャートである。
【図10】4BB改復号化のプログラムを示す図である。
【図11】84BB符号化処理のフローチャートである。
【図12】84BB符号化のプログラムを示す図である。
【図13】84BB復号化処理のフローチャートである。
【図14】84BB復号化のプログラムを示す図である。
【図15】B24符号化処理のフローチャートである。
【図16】B24符号化のプログラムを示す図である。
【図17】B24復号化処理のフローチャートである。
【図18】B24復号化のプログラムを示す図である。
【図19】数値表現に必要なビット数を示す図である。
【図20】32bit最大数の符号化例を示す図である。
【図21】Per符号化処理のフローチャートである。
【図22】Per復号化処理のフローチャートである。
【図23】第5のインデックス構造の例を示す図である。
【図24】第1のインデックス構造のビットパターンを示す図である。
【図25】第2のインデックス構造のビットパターンを示す図である。
【図26】第3のインデックス構造のビットパターンを示す図(その1)である。
【図27】第3のインデックス構造のビットパターンを示す図(その2)である。
【図28】第3のインデックス構造のビットパターンを示す図(その3)である。
【図29】第4のインデックス構造のビットパターンを示す図(その1)である。
【図30】第4のインデックス構造のビットパターンを示す図(その2)である。
【図31】第4のインデックス構造のビットパターンを示す図(その3)である。
【図32】第5のインデックス構造のビットパターンを示す図(その1)である。
【図33】第5のインデックス構造のビットパターンを示す図(その2)である。
【図34】第5のインデックス構造のビットパターンを示す図(その3)である。
【図35】第5のインデックス構造のビットパターンを示す図(その4)である。
【図36】第5のインデックス構造のビットパターンを示す図(その5)である。
【図37】第5のインデックス構造のビットパターンを示す図(その6)である。
【図38】キーとインデックス構造を示す図である。
【図39】圧縮のされていないインデックスのサイズを示す図である。
【図40】差分を用いたインデックス構造を示す図である。
【図41】差分値の符号化例を示す図である。
【符号の説明】
1 圧縮手段
2 格納手段
3 復元手段
4 元のデータ
5 圧縮されたデータ
11 磁気ディスク装置
12 フロッピーディスク駆動装置
13 フロッピーディスク
14 プリンタ
15 ディスプレイ
16 CPU
17 キーボード
18 ポインティング・デバイス
19 メインメモリ
20 バス
21 文書データベース
22 インデックス
23 インデックス作成プログラム
24 検索エンジン
25 文書表示プログラム
26 ワーク領域
31 ネットワーク接続装置
32 外部の装置

Claims (12)

  1. 情報検索のためのインデックス内で用いられる文書内単語出現頻度データとして2以下の数値データが与えられたとき、与えられた数値データを2ビットのブロック符号化することにより圧縮し、該文書内単語出現頻度データとして3以上の数値データが与えられたとき、与えられた数値データを、4ビットをブロックの単位として符号化することにより圧縮する符号化手段を含み、1ブロック以上の圧縮された文書内単語出現頻度データの先頭部分に、該圧縮された文書内単語出現頻度データのブロック長を表す継続フラグ情報を生成し、該継続フラグ情報に続いて、該数値データを表すデータを生成する圧縮手段と、
    前記圧縮された文書内単語出現頻度データを格納する格納手段と
    を備えることを特徴とするデータ圧縮装置。
  2. 前記符号化手段は、3以上6以下の数値データが与えられたとき、与えられた数値データを、2ビットの前記継続フラグ情報と2ビットのビットパターンで表すことを特徴とする請求項1記載のデータ圧縮装置。
  3. 前記符号化手段は、前記インデックス内で用いられる文書内単語出現位置データとして127以下の数値データが与えられたとき、与えられた数値データを8ビットのブロックで符号化することにより圧縮し、該文書内単語出現位置データとして128以上の数値データが与えられたとき、与えられた数値データを、8ビットの先頭ブロックと4ビットをブロックの単位とする1つ以上の後続ブロックとを用いて符号化することにより圧縮し、前記圧縮手段は、1ブロック以上の圧縮された文書内単語出現位置データの先頭部分に、該圧縮された文書内単語出現位置データのブロック長を表す継続フラグ情報を生成し、該継続フラグ情報に続いて、該数値データを表すデータを生成し、前記格納手段は、前記圧縮された文書内単語出現位置データを格納することを特徴とする請求項記載のデータ圧縮装置。
  4. 前記符号化手段は、前記127以下の数値データを、1ビットの0と7ビットのビットパターンで表すことを特徴とする請求項記載のデータ圧縮装置。
  5. 情報検索のためのインデックス内で用いられる文書内単語出現頻度データをブロック単位で符号化することにより圧縮して得られた、1ブロック以上の圧縮された文書内単語出現頻度データを格納する格納手段と、
    前記圧縮された文書内単語出現頻度データとして2ビットのブロックを1つ与えられたとき、該ブロックを復号化して2以下の数値データを生成し、該圧縮された文書内単語出現頻度データとして4ビットをブロックの単位とする1つ以上のブロックが与えられたとき、該1つ以上のブロックを復号化して3以上の数値データを生成する復号化手段を含み、該圧縮された文書内単語出現頻度データの先頭部分の継続フラグ情報に基づいて、該圧縮された文書内単語出現頻度データのブロック長を決定し、該継続フラグ情報に続く、元のデータを表すデータを取り出して、該元のデータを復元する復元手段と
    を備えることを特徴とするデータ復元装置。
  6. 前記復号化手段は、前記圧縮された文書内単語出現頻度データが2ビットの前記継続フラグ情報と2ビットのビットパターンから成るとき、3以上6以下の数値データを生成することを特徴とする請求項記載のデータ復元装置。
  7. 前記格納手段は、前記インデックス内で用いられる文書内単語出現位置データをブロック単位で符号化することにより圧縮して得られた、1ブロック以上の圧縮された文書内単語出現位置データをさらに格納し、前記復号化手段は、前記圧縮された文書内単語出現位置データとして8ビットのブロックを1つ与えられたとき、該ブロックを復号化して127以下の数値データを生成し、該圧縮された文書内単語出現位置データとして8ビットの先頭ブロックと4ビットをブロックの単位とする1つ以上の後続ブロックとが与えられたとき、該先頭ブロックと後続ブロックを復号化して128以上の数値データを生成し、前記復元手段は、前記圧縮された文書内単語出現位置データの先頭部分の継続フラグ情報に基づいて、該圧縮された文書内単語出現位置データのブロック長を決定し、該継続フラグ情報に続く、元のデータを表すデータを取り出して、該元のデータを復 元することを特徴とする請求項記載のデータ復元装置。
  8. 前記復号化手段は、前記8ビットのブロックが1ビットの0と7ビットのビットパターンから成るとき、前記127以下の数値データを生成することを特徴とする請求項記載のデータ復元装置。
  9. コンピュータのためのプログラムを記録した記録媒体であって、
    情報検索のためのインデックス内で用いられる文書内単語出現頻度データとして2以下の数値データが与えられたとき、与えられた数値データを2ビットのブロック符号化することにより圧縮し、該文書内単語出現頻度データとして3以上の数値データが与えられたとき、与えられた数値データを、4ビットをブロックの単位として符号化することにより圧縮する符号化手段を含み、1ブロック以上の圧縮された文書内単語出現頻度データの先頭部分に、該圧縮された文書内単語出現頻度データのブロック長を表す継続フラグ情報を生成し、該継続フラグ情報に続いて、該数値データを表すデータを生成する圧縮手段と、
    前記圧縮された文書内単語出現頻度データを格納する格納手段として、
    前記コンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  10. コンピュータのためのプログラムを記録した記録媒体であって、
    情報検索のためのインデックス内で用いられる文書内単語出現頻度データをブロック単位で符号化することにより圧縮して得られた、1ブロック以上の圧縮された文書内単語出現頻度データを格納する格納手段と、
    前記圧縮された文書内単語出現頻度データとして2ビットのブロックを1つ与えられたとき、該ブロックを復号化して2以下の数値データを生成し、該圧縮された文書内単語出現頻度データとして4ビットをブロックの単位とする1つ以上のブロックが与えられたとき、該1つ以上のブロックを復号化して3以上の数値データを生成する復号化手段を含み、該圧縮された文書内単語出現頻度データの先頭部分の継続フラグ情報に基づいて、該圧縮された文書内単語出現頻度データのブロック長を決定し、該継続フラグ情報に続く、元のデータを表すデータを取り出して、該元のデータを復元する復元手段として、
    前記コンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  11. 圧縮手段が、情報検索のためのインデックス内で用いられる文書内単語出現頻度データとして2以下の数値データが与えられたとき、与えられた数値データを2ビットのブロック符号化することにより圧縮し、該文書内単語出現頻度データとして3以上の数値データが与えられたとき、与えられた数値データを、4ビットをブロックの単位として符号化することにより圧縮し、1ブロック以上の圧縮された文書内単語出現頻度データの先頭部分に、該圧縮された文書内単語出現頻度データのブロック長を表す継続フラグ情報を生成し、該継続フラグ情報に続いて、該数値データを表すデータを生成し、
    前記圧縮手段が、前記圧縮された文書内単語出現頻度データを格納手段に格納する
    ことを特徴とするデータ圧縮方法。
  12. 復元手段が、情報検索のためのインデックス内で用いられる文書内単語出現頻度データをブロック単位で符号化することにより圧縮されて格納手段に格納された、1ブロック以上の圧縮された文書内単語出現頻度データを取り出し、該圧縮された文書内単語出現頻度データとして2ビットのブロックが1つ取り出されたとき、該ブロックを復号化して2以下の数値データを生成し、該圧縮された文書内単語出現頻度データとして4ビットをブロックの単位とする1つ以上のブロックが取り出されたとき、該1つ以上のブロックを復号化して3以上の数値データを生成し、該圧縮された文書内単語出現頻度データの先頭部分の継続フラグ情報に基づいて、該圧縮された文書内単語出現頻度データのブロック長を決定し、
    前記復元手段が、該継続フラグ情報に続く、元のデータを表すデータを前記格納手段から取り出して、該元のデータを復元する
    ことを特徴とするデータ復元方法。
JP01177198A 1997-02-28 1998-01-23 データ圧縮/復元装置およびデータ圧縮/復元方法 Expired - Lifetime JP3708318B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01177198A JP3708318B2 (ja) 1997-02-28 1998-01-23 データ圧縮/復元装置およびデータ圧縮/復元方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP9-45424 1997-02-28
JP4542497 1997-02-28
JP01177198A JP3708318B2 (ja) 1997-02-28 1998-01-23 データ圧縮/復元装置およびデータ圧縮/復元方法

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2004320949A Division JP2005137015A (ja) 1997-02-28 2004-11-04 データ圧縮/復元装置およびデータ圧縮/復元方法
JP2004320948A Division JP3898717B2 (ja) 1997-02-28 2004-11-04 データ圧縮/復元装置およびデータ圧縮/復元方法

Publications (2)

Publication Number Publication Date
JPH10301959A JPH10301959A (ja) 1998-11-13
JP3708318B2 true JP3708318B2 (ja) 2005-10-19

Family

ID=26347294

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01177198A Expired - Lifetime JP3708318B2 (ja) 1997-02-28 1998-01-23 データ圧縮/復元装置およびデータ圧縮/復元方法

Country Status (1)

Country Link
JP (1) JP3708318B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5812007B2 (ja) * 2010-10-15 2015-11-11 日本電気株式会社 インデックス作成装置、データ検索装置、インデックス作成方法、データ検索方法、インデックス作成プログラムおよびデータ検索プログラム
CN110048725B (zh) * 2019-05-14 2023-07-07 四川九洲空管科技有限责任公司 一种基于taws系统的地形数据压缩解压缩算法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257774A (ja) * 1992-03-10 1993-10-08 Fujitsu Ltd インデックス・レコード番号を圧縮・格納した情報検索装置
JPH06301514A (ja) * 1993-04-19 1994-10-28 Hitachi Ltd データ処理装置

Also Published As

Publication number Publication date
JPH10301959A (ja) 1998-11-13

Similar Documents

Publication Publication Date Title
TW312771B (ja)
US6563438B2 (en) Encoding and decoding apparatus with matching length means for symbol strings
KR100894002B1 (ko) 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법
US5325091A (en) Text-compression technique using frequency-ordered array of word-number mappers
JP3337633B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JP4261779B2 (ja) データ圧縮装置および方法
JP3778087B2 (ja) データ符号化装置及びデータ復号装置
WO2004062110A1 (ja) データ圧縮方法、プログラム及び装置
JPH0366227A (ja) 圧縮符号化方法及びシステム並びに復号方法
US6304676B1 (en) Apparatus and method for successively refined competitive compression with redundant decompression
US6057790A (en) Apparatus and method for data compression/expansion using block-based coding with top flag
Brent A linear algorithm for data compression
US5815096A (en) Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
KR100495593B1 (ko) 파일 처리 방법, 데이터 처리 장치, 및 기억 매체
US6657564B2 (en) Method and apparatus for compressing data in which dictionary sizes are reduced
US20030194012A1 (en) Variable-length encoded data decoding apparatus and decoding method
Rahman et al. A novel lossless coding technique for image compression
JP3898717B2 (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP3708318B2 (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP2005137015A (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP3199292B2 (ja) ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
JP3442105B2 (ja) データ圧縮および復元方式
JP3083329B2 (ja) データ圧縮復元方式
JP3038234B2 (ja) データ圧縮装置の辞書検索方式
JP4329493B2 (ja) 辞書データ圧縮装置、電子辞書装置及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040907

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041104

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050603

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050609

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050803

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090812

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100812

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110812

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120812

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120812

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130812

Year of fee payment: 8

EXPY Cancellation because of completion of term