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

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

Info

Publication number
JPH10301959A
JPH10301959A JP10011771A JP1177198A JPH10301959A JP H10301959 A JPH10301959 A JP H10301959A JP 10011771 A JP10011771 A JP 10011771A JP 1177198 A JP1177198 A JP 1177198A JP H10301959 A JPH10301959 A JP H10301959A
Authority
JP
Japan
Prior art keywords
data
document
numerical
word appearance
appearance position
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
JP10011771A
Other languages
English (en)
Other versions
JP3708318B2 (ja
Inventor
Nobuyuki Igata
伸之 井形
Isao Nanba
功 難波
Kunio Matsui
くにお 松井
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

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 データの復号化処理の速度を落とさずに、イ
ンデックス作成処理を高速化し、インデックスのサイズ
を抑えることが課題である。 【解決手段】 圧縮手段1は、元のデータ4をブロック
単位で圧縮して符号化し、格納手段2内の圧縮されたデ
ータ5の先頭部分に、そのデータ5のブロック長を表す
継続フラグ情報を生成する。復元手段3は、データ5の
継続フラグ情報から残りのデータのブロック長を決定
し、格納手段2から残りのデータを取り出して、元のデ
ータ4を復元する。

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]の文書番号“2
2”は、3番目のデータの実際の文書番号“3”と4番
目のデータの実際の文書番号“25”との差分値を表し
ている。
【0010】このような数値データに対する符号化手法
としては、8bit block(8BB)符号化、4
bit block(4BB)符号化、Unary c
oding、γ−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となっており、数値1
28、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およびδ−c
odingの説明に用いられる。いくつかの数値の例を
以下に挙げる。
【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、最大のビット数は4294
967295(232−1)となる。
【0017】また、γ−codingでは、数xの符号
を、prefix部とsuffix部に分けて表す。こ
こで、log2 xの値以下の整数のうち最大のものをI
1(x)= 外1 と書くことにすると、prefix
部は、数(1+I1(x))
【0018】
【外1】
【0019】をUnary codingで表すことで
得られ、suffix部は、値(x−2I1(x) )をI1
(x)bit分の2進数で表すことで得られる。いくつ
かの数値の例を以下に挙げる。
【0020】 表す数 prefix部 suffix部 1 0 なし (1+0ビットで0を表す) (0ビットで1−20 を表す) 2 10 0 (1+1ビットで1を表す) (1ビットで2−21 を表す) 3 10 1 (1+1ビットで1を表す) (1ビットで3−21 を表す) 4 110 00 (1+2ビットで2を表す) (2ビットで4−22 を表す) 5 110 01 (1+2ビットで2を表す) (2ビットで5−22 を表す) 6 110 10 (1+2ビットで2を表す) (2ビットで6−22 を表す) 7 110 11 (1+2ビットで2を表す) (2ビットで7−22 を表す) 8 1110 000 (1+3ビットで3を表す) (3ビットで8−23 を表す) 9 1110 001 (1+3ビットで3を表す) (3ビットで9−23 を表す) 10 1110 010 (1+3ビットで3を表す) (3ビットで10−23 を表す) 128 11111110 0000000 (1+7ビットで7を表す) (7ビットで128−27 を表す) 129 11111110 0000001 (1+7ビットで7を表す) (7ビットで129−27 を表す) 例えば、数値129の場合は、prefix部の符号
‘11111110’は8ビットであり、7つの連続す
る“1”を含んでいる。これは、I(129)=7、す
なわち、数値129のsuffix部が7ビットである
ことを表している。そして、suffix部‘0000
001’は、7ビットで129−27 を表している。こ
の方法では、1ワードで表現される数値を表す符号の最
小のビット数は1bit、最大のビット数は63bit
(=1+31+31bit)となる。
【0021】δ−codingでも、γ−coding
と同様に、数xの符号を、prefix部とsuffi
x部に分けて表す。prefix部は、数(1+I1
(x))をγ−codingで表すことで得られ、su
ffix部は、γ−codingと同様に、値(x−2
I1(x) )をI1(x)bit分の2進数で表すことで得
られる。いくつかの数値の例を以下に挙げる。
【0022】 表す数 prefix部 suffix部 1 0 なし (1のγcoding) (0ビットで1−20 を表す) 2 100 0 (2のγcoding) (1ビットで2−21 を表す) 3 100 1 (2のγcoding) (1ビットで3−21 を表す) 4 101 00 (3のγcoding) (2ビットで4−22 を表す) 5 101 01 (3のγcoding) (2ビットで5−22 を表す) 6 101 10 (3のγcoding) (2ビットで6−22 を表す) 7 101 11 (3のγcoding) (2ビットで7−22 を表す) 8 11000 000 (4のγcoding) (3ビットで8−23 を表す) 9 11000 001 (4のγcoding) (3ビットで9−23 を表す) 10 11000 010 (4のγcoding) (3ビットで10−23 を表す) 128 1110000 0000000 (8のγcoding) (7ビットで128−27 を表す) 129 1110000 0000001 (8のγcoding) (7ビットで129−27 を表す) この方法では、1ワードで表現される数値を表す符号の
最小のビット数は1bit、最大のビット数は42bi
t(=(5+1+5)+31bit)となる。
【0023】
【発明が解決しようとする課題】しかしながら、上述し
た従来の符号化手法には、次のような問題がある。例え
ば、これらの符号化手法を用いて図40のインデックス
構造を表現した場合に、必要となるbit数は図41に
示すようになる。図41においては、符号化前の元デー
タのみ10進数の値で記述され、符号化後のインデック
ス構造は、元データを表現するのに必要なビット数を用
いて記述されている。図41を見ると、圧縮を行わない
32bit符号化が最も多くのビット数を必要とし、δ
−codingが最も少ないビット数で記述できること
が分かる。
【0024】一般に、8bit block符号化、4
bit block符号化のようなブロック系の符号化
手法では、どんなに小さな数値でも、必ず1ブロック分
のビット数を必要とする。ところが、図40のように、
差分値を用いたインデックス構造においては、“1”や
“2”のような小さな数値がデータの大部分を占めるた
め、インデックスサイズがあまり小さくならないという
問題がある。また、各ブロックの先頭に継続フラグを付
加していく処理が必要なため、インデックス作成処理に
時間がかかるという問題もある。
【0025】これに対して、Unary codin
g、γ−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の圧縮手段1と復元手段3
は、後述する図2のCPU16(中央処理装置)とメイ
ンメモリ19に対応し、格納手段2はメインメモリ19
または磁気ディスク装置11に対応する。
【0037】
【発明の実施の形態】以下、図面を参照しながら、本発
明の実施の形態を詳細に説明する。本発明においては、
新たな符号化方法として、4bit block(4B
B)改符号化、84bit block(84BB)符
号化、およびB24(block24)符号化の3種類
のブロック系符号化方法を提案する。まず、これらの符
号化の概要を、それぞれ説明することにする。
【0038】4BB改符号化は、基本的には、上述の4
BB符号化を改良したものである。通常の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 significan
t bit )は、いずれの場合も最後のブロックの右端に来
るようになっている。
【0040】この方法では、1ワードで表現される数値
を表す符号の最小のビット数は4bit、最大ビット数
は44bitとなり、圧縮効率自体は4BB符号化と等
価である。しかしながら、符号化処理におけるステップ
数が4BB符号化よりも少なくなる。このため、大規模
データベース(DB)に対してインデックスを作成する
ような場合には、かなりの高速化が期待できる。
【0041】また、復号化に関しては、4BB符号化で
は、1つ1つ継続フラグを判定しながらループ処理を繰
り返し、4BB改符号化では、継続フラグを先に復号化
してから、まとめて数値を求めることになる。このよう
な違いはあるが、復号化の処理速度は、符号化と比べる
と、両者の間でそれほど変化はない。ただし、数値が大
きくなった場合には、4BB符号より4BB改符号のほ
うが速くなる。
【0042】次に、4BB改符号化と類似する84BB
符号化について説明する。4BB改符号化のブロック長
は、どんな数値に対しても4bit一定であるのに対
し、84BB符号化では、初めの1blockだけを8
bit、継続フラグによって後ろに続く各ブロックを4
bitとする。この方法では、127以下の数値は1b
itの0と7bitの数値のビットパターンで表され、
128以上の数値はいくつかの継続フラグと数値のビッ
トパターンで表現される。いくつかの数値の例を以下に
挙げる。
【0043】 ここで、数値1、2、3、4、5、6、7、8、9、1
27の場合は、後続するブロックが存在しないので先頭
のビットは0となっており、数値128、129の場合
は、2番目のブロックが存在するので、1番目のブロッ
クの先頭のビットが1となっている。この方法では、1
ワードで表現される数値を表す符号の最小のビット数は
8bit、最大のビット数は44bitとなる。
【0044】例えば、インデックスにおいて文書内単語
出現位置として扱われる数値は、文書番号(差分値)や
文書内単語出現頻度と比較して、かなり大きな値にな
る。このため、差分値を用いたとしても、通常の数値デ
ータ符号化方法ではうまく圧縮することができない。
【0045】84BB符号化は、4BB符号化や4BB
改符号化と比較した場合、最初の8bitで、1bit
分だけ大きな数値まで表現することができる。これによ
り、中くらいの大きさの数値を、他の符号化よりも少な
いビット数で表すことができ、文書内単語出現位置の符
号化に適しているといえる。
【0046】次に、B24符号化とは、数値1、2を2
bitで符号化し、数値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となるため、これらの数値を2bi
tで表すことで、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が格納される。磁気ディスク装置1
1の代わりに、光ディスク装置、光磁気ディスク装置等
を用いてもよい。
【0054】CPU16は、メインメモリ19に格納さ
れたプログラムを用いて、情報検索に必要な処理を実現
する。メモリ19は、例えばROM(read only memor
y)、RAM(random access memory)等を含む。メモ
リ19には、インデックス作成プログラム23、検索エ
ンジン(検索プログラム)24、文書表示プログラム2
5等が保持され、ワーク領域26が設けられる。
【0055】インデックス作成プログラム23は、文書
DB21からインデックス22を作成して、磁気ディス
ク装置11に格納する。このプログラム23は、4BB
改符号化、84BB符号化、あるいはB24符号化等に
基づくデータ圧縮処理を含んでいる。
【0056】検索エンジン24は、インデックス22を
用いて、文書DB21の文書を検索する。全文検索装置
の場合には、ユーザが指定した単語列を含む文書を検索
し、ランキング検索装置の場合には、ユーザが指定した
単語列に対して関連度の高い文書を検索する。この検索
エンジン24は、4BB改符号化、84BB符号化、あ
るいはB24符号化等に基づくデータ復元処理(復号化
処理)を含んでいる。
【0057】文書表示プログラム25は、検索結果から
指定された文書を切り出し、それをユーザに表示する。
ワーク領域26は、これらのプログラム23、24、2
5が処理に使用する領域である。
【0058】また、キーボード17およびポインティン
グ・デバイス18は、ユーザからの要求や指示の入力に
用いられ、プリンタ14およびディスプレイ15は、ユ
ーザへの問い合せや処理結果等の出力に用いられる。
【0059】FDD12は、フロッピーディスク13を
駆動し、その記憶内容にアクセスする。フロッピーディ
スク13に、必要なデータやプログラム23、24、2
5等を格納しておき、必要に応じて、それらをメモリ1
9にロードして使用することができる。また、フロッピ
ーディスク13以外にも、メモリカード、CD−ROM
(compact disk read only memory )、光ディスク、光
磁気ディスク等の任意のコンピュータ読み取り可能な記
録媒体を使用することができる。
【0060】ネットワーク接続装置31は、LAN(lo
cal area network)等の任意の通信ネットワークに接続
され、通信に伴うデータ変換等を行う。情報検索装置
は、ネットワーク接続装置31を介して、外部の情報提
供者の装置32(データベース等)と通信する。これに
より、必要に応じて、上述のプログラムとデータを装置
32からネットワークを介して受け取り、それらをメモ
リ19にロードして使用することができる。
【0061】次に、図3から図20までを参照しなが
ら、本発明のデータ圧縮装置/復元装置で用いる4BB
改符号化、84BB符号化、およびB24符号化につい
て、より具体的に説明する。
【0062】図3から図20において、変数Value
は、元データのビットパターンを表し、変数Bitbu
fは、符号化されたビットパターンを表す。また、‘:
=’は、右辺の値を左辺の値へ代入する操作を表し、
‘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次バッファCo
de[i]を用意し、Valueのビットパターンの下
位3ビットをCode[i]の後半に入れる(ステップ
S2)。ここで、‘Value & 0x7’は、Va
lueと0x7=‘0111’の論理積を表している。
【0065】次に、Valueを3ビット右にシフトし
(ステップS3)、Valueの値を0と比較する(ス
テップS4)。Valueが0より大きい場合、iを1
だけデクリメントし(ステップS5)、シフト後のVa
lueの下位3ビットの前にフラグの値1を付加して、
Code[i]の後半に入れる(ステップS6)。ここ
で、‘0x8 | (Value & 0x7)’は、
0x8=‘1000’とValueの下位3ビットとの
論理和を表している。そして、Valueを3ビット右
にシフトし(ステップS7)、ステップS4以降の処理
を繰り返す。
【0066】ステップS4において、Valueの値が
0になると、次に、iと12を比較する(ステップS
8)。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とし(ステップS1
3)、Bitbuf内の次の4ビットを変数tempに
読み込む(ステップS14)。
【0070】次に、Valueを3ビット左にシフトし
て、tempの下位3ビットを加算する(ステップS1
5)。これにより、tempから先頭のフラグを除いた
残りの部分がValueに付加される。そして、tem
pの値を0x7と比較する(ステップS16)。
【0071】tempが0x7より大きければステップ
S14以降の処理を繰り返し、tempが0x7以下で
あれば処理を終了する。終了時のValueのビットパ
ターンは、Bitbufに対応する元データを表してい
る。このような復号化処理のプログラムコード(C言語
で記述)は、例えば、図6に示すようになる。図6にお
いて、get xbits(Bitbuf)は、Bit
bufからxビット分のビットパターンを読み出す関数
を表す。
【0072】次に、4BB改符号化処理および4BB改
復号化処理を説明する。図7は、4BB改符号化処理の
フローチャートである。処理が開始されると、情報検索
装置は、まず、I2(Value)= 外2 を求め、
I2(Value)+1を継
【0073】
【外2】
【0074】続フラグFlagの値とする(ステップS
21)。ここで、I2(x)= 外3は、log8 xの
値以下の整数のうち最大のものを表す。
【0075】
【外3】
【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(V
alue)の値の範囲とが、あらかじめ分かっているた
めである。また、set xbits(Bitbuf,
X)は、Xからxビット分のビットパターンを読み出し
てBitbufに書き込む関数を表す。
【0079】例えば、十進法で21という数値は以下の
手順により符号化され、対応する符号‘1001010
1’が得られる。 1.I2(21)+1=2であるため、継続フラグは2
となる(ステップS21)。
【0080】2.継続フラグ2をUnaryコード‘1
0’でBitbufに入れる(ステップS22)。 3.継続フラグに続いて、Value=21のビットパ
ターン‘010101’をBitbufに入れる(ステ
ップS23)。
【0081】また、十進法で300という数値は以下の
手順により符号化され、対応する符号‘1101001
01100’が得られる。 1.I2(300)+1=3であるため、継続フラグは
3となる(ステップS21)。
【0082】2.継続フラグ3をUnaryコード‘1
10’でBitbufに入れる(ステップS22)。 3.継続フラグに続いて、Value=300のビット
パターン‘100101100’をBitbufに入れ
る(ステップS23)。
【0083】次に、図9は、4BB改復号化処理のフロ
ーチャートである。処理が開始されると、情報検索装置
は、まず、継続フラグのビット数を表す変数CFlag
を0とおき(ステップS31)、Bitbufの初めの
4ビットを変数Flagに読み込み(ステップS3
2)、その値を0x8と比較する(ステップS33)。
【0084】Flagが0x8より小さい場合は、先頭
のビットが0であり、後続するブロックが存在しないこ
とを意味する。そこで、FlagをValueに代入し
て(ステップS34)、処理を終了する。
【0085】Flagが0x8以上であれば、先頭のビ
ットが1であり、後続ブロックが1つ以上存在すること
を意味する。そこで、最初の後続ブロックが継続フラグ
に対応するかどうかを調べるために、Flagと0xf
=‘1111’を比較する(ステップS35)。
【0086】Flagが0xfであれば、さらに継続フ
ラグのブロックが続くことが分かる。そこで、CFla
gに4を加算し、Bitbuf内の次の4ビットをFl
agに読み込む(ステップS36)。そして、ステップ
S35以降の処理を繰り返す。
【0087】Flagが0xfより小さければ、そのビ
ットパターンは0を含んでおり、継続フラグが途切れる
ことが分かる。そこで、Flagの中で最初に0が現れ
た位置の順位をCFlagに加算する。また、その位置
より下のビットにマスクを掛けてそれらのビットを抽出
し、Maskに代入する(ステップS37)。
【0088】次に、今までにBitbufより読み込ん
だビット数をCFlagの4倍から減算した値をRea
dBitとする(ステップS38)。CFlagを4倍
することで、Bitbufに含まれるデータの全ビット
数が得られ、それから読み込み済みのビット数を差し引
くことで、残りのデータの全ビット数が得られる。
【0089】次に、MaskをReadBitのビット
数だけ左にシフトしてValueに代入し、Bitbu
fから、ReadBitのビット数だけの残りのデータ
を読み込んで、それをValueに加算し、処理を終了
する。これにより、継続フラグの部分を除いた元データ
のビットパターンが、Valueとして得られる。
【0090】図9を図5と比較すると、4BB改復号化
処理のステップ数は、4BB復号化処理のそれより少し
多いことが分かる。しかし、図5および図9のループ内
の処理において、4BB復号化の場合は、継続フラグと
データ部分を同時に読み込むのに対して、4BB改復号
化の場合は、継続フラグ部分のみ読み込めばよい。この
ため、1ブロックまたは2ブロック程度の符号を復号化
する場合は、4BB改復号化の処理速度は4BB復号化
処理とそれほど変わらないが、大きなブロックの復号化
では4BB改復号化の方がはるかに速くなる。
【0091】4BB改復号化処理のプログラムコード
(C言語で記述)は、例えば、図10に示すようにな
る。図10においては、実際にCFlagおよびRea
dBitの値を計算する代わりに、if−else i
fで代用している。これは、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】また、上述の符号‘1101001011
00’は以下の手順により復号化され、対応する数値3
00が得られる。 1.初めの4ビット‘1101’を読み込む(ステップ
S32)。
【0096】2.継続フラグは‘110’であり、これ
は上の3ビットに相当するため、下の1ビットにマスク
を掛け、Mask=‘1101’&0x1=‘000
1’を得る(ステップS37)。また、ReadBit
=3×4−4=8となるので、‘0001’を8ビット
左へシフトし、Valueに代入する(ステップS3
8)。これにより、Value=‘10000000
0’=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コードに変換してBitbu
fに入れ(ステップS44)、それに続いてValue
を入れて(ステップS45)、処理を終了する。
【0100】図11を図7と比較すると、84BB符号
化処理では、4BB改符号化処理より条件判定が1つ増
えるだけなので、その処理速度は4BB改符号化とほと
んど変わらない。
【0101】また、84BB符号化処理のプログラムコ
ード(C言語で記述)は、例えば、図12に示すように
なる。図12においては、4BB改符号化と同様に、実
際にI2(Value)を計算する代わりに、if−e
lse ifで代用している。
【0102】例えば、上述の300という数値は以下の
手順により符号化され、対応する符号‘1001001
01100’が得られる。 1.I2(300)=2であるため、継続フラグは2と
なる(ステップS43)。
【0103】2.継続フラグ2をUnaryコード‘1
0’でBitbufに入れる(ステップS44)。 3.継続フラグに続いて、Value=300のビット
パターン‘0100101100’をBitbufに入
れる(ステップS45)。
【0104】次に、図13は、84BB復号化処理のフ
ローチャートである。処理が開始されると、情報検索装
置は、まず、Bitbufの初めの8ビットを変数Fl
agに読み込み(ステップS51)、その値を128と
比較する(ステップS52)。Flagが128より小
さい場合は、先頭のビットが0であり、後続するブロッ
クが存在しないことを意味する。そこで、FlagをV
alueに代入して(ステップS53)、処理を終了す
る。
【0105】Flagが128以上の場合は、先頭のビ
ットが1であり、後続ブロックが1つ以上存在すること
を意味する。そこで、継続フラグのビット数を表す変数
CFlagを0とおき(ステップS54)、最初の後続
ブロックが継続フラグに対応するかどうかを調べるため
に、Flagの値を0xff=‘11111111’と
比較する(ステップS54a)。
【0106】Flagが0xffであれば、さらに継続
フラグのブロックが続くことが分かる。そこで、CFl
agに8を加算し(ステップS54b)、Bitbuf
内の次の4ビットをFlagに読み込む(ステップS5
4c)。そして、読み込んだブロックの次のブロックが
継続フラグに対応するかどうかを調べるために、Fla
gの値を0xf=‘1111’と比較する(ステップS
55)。
【0107】Flagが0xfであれば、さらに継続フ
ラグのブロックが続くことが分かる。そこで、CFla
gに4を加算し、Bitbuf内の次の4ビットをFl
agに読み込む(ステップS56)。そして、ステップ
S55以降の処理を繰り返す。
【0108】ステップS54aでFlagが0xffよ
り小さいとき、および、ステップS55でFlagが0
xfより小さいときは、そのビットパターンは0を含ん
でおり、継続フラグが途切れることが分かる。そこで、
Flagの中で最初に0が現れた位置の順位をCFla
gに加算する。また、その位置より下のビットにマスク
を掛けてそれらのビットを抽出し、Maskに代入する
(ステップS57)。
【0109】次に、今までにBitbufより読み込ん
だビット数を(CFlag+1)の4倍から減算した値
をReadBitとする(ステップS58)。次に、M
askをReadBitのビット数だけ左にシフトして
Valueに代入し、Bitbufから、ReadBi
tのビット数だけの残りのデータを読み込んで、それを
Valueに加算し、処理を終了する。これにより、継
続フラグの部分を除いた元データのビットパターンが、
Valueとして得られる。
【0110】このような84BB復号化処理のプログラ
ムコード(C言語で記述)は、例えば、図14に示すよ
うになる。図14においては、4BB改復号化と同様
に、実際にCFlagおよびReadBitの値を計算
する代わりに、if−elseifで代用している。ま
た、変数Valueを変数Flagの代わりに用いてお
り、変数Maskの代わりに、Valueとマスク用ビ
ットパターンの論理積を用いている。
【0111】例えば、上述の符号‘100100101
100’は以下の手順により復号化され、対応する数値
300が得られる。 1.初めの8ビット‘10010010’を読み込む
(ステップS51)。
【0112】2.継続フラグは‘10’であり、これは
上の2ビットに相当するため、下の6ビットにマスクを
掛け、Mask=‘10010010’&0x3f=
‘00010010’を得る(ステップS57)。ま
た、ReadBit=(2+1)×4−8=4となるの
で、‘00010010’を4ビット左へシフトし、V
alueに代入する(ステップS58)。これにより、
Value=‘100100000’=288となる。
【0113】3.次の4ビット(ReadBitのビッ
ト数)である‘1100’=12を読み込み、Valu
eに加算する(ステップS58)。こうして、Valu
e=288+12=300となる。
【0114】次に、B24符号化処理およびB24復号
化処理を説明する。図15は、B24符号化処理のフロ
ーチャートである。処理が開始されると、情報検索装置
は、まず、Valueを1と比較する(ステップS6
1)。Value=1の場合は、ビットパターン‘0
0’を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)を求め、I
2(Value)+2を変数Flagに代入する(ステ
ップS67)。そして、FlagをUnaryコードに
変換してBitbufに入れ、それに続いて(Valu
e−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−el
se ifで代用している。
【0120】例えば、上述の21という数値は以下の手
順により符号化され、対応する符号‘1100111
0’が得られる。 1.I2(21)+2=3であるため、継続フラグは3
となる(ステップS67)。
【0121】2.継続フラグ3をUnaryコード‘1
10’でBitbufに入れる(ステップS67)。 3.継続フラグに続いて、Value−7=21−7=
14のビットパターン‘01110’をBitbufに
入れる(ステップS67)。
【0122】次に、図17は、B24復号化処理のフロ
ーチャートである。処理が開始されると、情報検索装置
は、まず、Bitbufの初めの2ビットを変数Fla
gに読み込み(ステップS71)、その値を1と比較す
る(ステップS72)。
【0123】Flagが1以下の場合は、先頭のビット
が0であり、後続するビットパターンが存在しないこと
を意味する。そこで、(Flag+1)のビットパター
ンをValueに代入して(ステップS73)、処理を
終了する。
【0124】Flagが1より大きければ、先頭のビッ
トが1であり、後続するビットパターンが存在すること
を意味する。そこで、次に、その値を2と比較する(ス
テップS74)。
【0125】Flagが2であれば、後続するビットパ
ターンは2ビットであることを意味する。そこで、Bi
tbufの残りの2ビットを変数Valueに読み込
み、3を加算して(ステップS75)、処理を終了す
る。
【0126】Flagが2より大きければ、それは‘1
1’であり、後続する1つ以上のブロックが存在するこ
とを意味する。そこで、Flag=‘11’を2ビット
左へシフトし、Bitbufの次の2ビットの値を読み
込んで、Flagに加算する(ステップS76)。そし
て、継続フラグのビット数を表す変数CFlagを0と
おき、最初の後続ブロックが継続フラグに対応するかど
うかを調べるために、Flagと0xf=‘1111’
を比較する(ステップS78)。
【0127】Flagが0xfであれば、さらに継続フ
ラグのブロックが続くことが分かる。そこで、CFla
gに4を加算し、Bitbuf内の次の4ビットをFl
agに読み込む(ステップS79)。そして、ステップ
S78以降の処理を繰り返す。
【0128】Flagが0xfより小さければ、そのビ
ットパターンは0を含んでおり、継続フラグが途切れる
ことが分かる。そこで、Flagの中で最初に0が現れ
た位置の順位をCFlagに加算する。また、その位置
より下のビットにマスクを掛けてそれらのビットを抽出
し、Maskに代入する(ステップS80)。
【0129】次に、今までにBitbufより読み込ん
だビット数を(CFlag−1)の4倍から減算した値
をReadBitとする(ステップS81)。そして、
MaskをReadBitのビット数だけ左にシフトし
てValueに代入し、Bitbufから、ReadB
itのビット数だけの残りのデータを読み込んで、それ
をValueに加算する。これにより、符号から継続フ
ラグの部分を除いたビットパターンが、Valueとし
て得られる。元データを得るために、Valueにさら
に7を加算して、処理を終了する。
【0130】図17を図9と比較すると、B24復号化
処理では4BB改復号化処理よりも条件判定が1つ多い
が、処理速度はそれほど低下しない。B24復号化処理
のプログラムコード(C言語で記述)は、例えば、図1
8に示すようになる。図18においては、上述の4BB
改復号化と同様に、実際にCFlagおよびReadB
itの値を計算する代わりに、if−else ifで
代用している。また、変数Valueを変数Flagの
代わりに用いており、変数Maskの代わりに、Val
ueとマスク用ビット列の論理積を用いている。
【0131】例えば、上述の符号‘11001110’
は以下の手順により復号化され、対応する数値21が得
られる。 1.初めの2ビット‘11’をFlagに読み込む(ス
テップS71)。
【0132】2.読み込んだ値は3であるため、Fla
gを2ビット左にシフトして、さらに次の2ビット‘0
0’を読み込み(ステップS76)、継続フラグを確認
する(ステップS78)。ここで、継続フラグが‘11
0’であることが分かる。
【0133】3.継続フラグが3ビット目で途切れてい
るので、継続フラグに続く残りの1ビットにマスクを掛
け、Mask=‘1100’&0x1=‘0000’を
得る。また、ReadBit=(3−1)×4−4=4
となるので、‘0000’を4ビット左へシフトし、V
alueに代入する(ステップS81)。
【0134】4.次の4ビット(ReadBitのビッ
ト数)である‘1110’=14を読み込み、Valu
eに加算して、さらに7を加算する(ステップS8
1)。こうして、Value=14+7=21となる。
【0135】以上説明した4BB改符号化、84BB符
号化、およびB24符号化に必要な各ビット数を、4B
B符号化、γ−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に読み込み(ステップS9
1)、それをあらかじめ決められた分母値Perで除算
する(ステップS92)。
【0142】除算に用いるPerの値は、高速に実行で
きるシフト命令が利用可能な値から選択することが望ま
しい。例えば、2、4、8、16、32、64等の値が
Perとして用いられる。ここでは、得られた商の少数
点以下の端数は切り捨て、その整数部分を中間数値と
し、それを改めてnumに代入する。
【0143】次に、numの値を符号化して(ステップ
S93)、処理を終了する。ステップS93では、任意
の符号化方法を用いることができる。ただし、例えばB
24符号化のように、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コード‘1
10’で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に対応する符号‘110000
11’をB24復号化処理により復号化すると、数値1
0が得られる(ステップ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改(図2
6、組合せ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改、文書内単語出現頻度:B2
4、文書内単語出現位置:4BB改(図26、組合せ
5) 6.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置:4BB改+Per(16)
(図26、組合せ6) 7.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置:B24(図26、組合せ7) 8.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置:B24+Per(16)(図
26、組合せ8) 9.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置:4BB改(図27、組合せ
9) 10.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置:4BB改+Per(16)
(図27、組合せ10) 11.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置:B24(図27、組合せ1
1) 12.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置:B24+Per(16)(図
27、組合せ12) 13.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置:4BB改(図27、組合せ1
3) 14.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置:4BB改+Per(16)
(図27、組合せ14) 15.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置:B24(図27、組合せ1
5) 16.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置:B24+Per(16)(図
27、組合せ16) 17.文書番号:4BB改、文書内単語出現頻度:4B
B改、文書内単語出現位置:84BB(図28、組合せ
17) 18.文書番号:4BB改、文書内単語出現頻度:4B
B改、文書内単語出現位置:84BB+Per(16)
(図28、組合せ18) 19.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置:84BB(図28、組合せ1
9) 20.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置:84BB+Per(16)
(図28、組合せ20) 21.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置:84BB(図28、組合せ2
1) 22.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置:84BB+Per(16)
(図28、組合せ22) 23.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置:84BB(図28、組合せ2
3) 24.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置: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(1
6)(図29、組合せ2) 3.文書番号:4BB改、文書内単語出現位置領域数:
4BB改、文書内単語出現位置:B24(図29、組合
せ3) 4.文書番号:4BB改、文書内単語出現位置領域数:
4BB改、文書内単語出現位置:B24+Per(1
6)(図29、組合せ4) 5.文書番号:4BB改、文書内単語出現位置領域数:
B24、文書内単語出現位置:4BB改(図29、組合
せ5) 6.文書番号:4BB改、文書内単語出現位置領域数:
B24、文書内単語出現位置:4BB改+Per(1
6)(図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(1
6)(図30、組合せ10) 11.文書番号:B24、文書内単語出現位置領域数:
4BB改、文書内単語出現位置:B24(図30、組合
せ11) 12.文書番号:B24、文書内単語出現位置領域数:
4BB改、文書内単語出現位置:B24+Per(1
6)(図30、組合せ12) 13.文書番号:B24、文書内単語出現位置領域数:
B24、文書内単語出現位置:4BB改(図30、組合
せ13) 14.文書番号:B24、文書内単語出現位置領域数:
B24、文書内単語出現位置:4BB改+Per(1
6)(図30、組合せ14) 15.文書番号:B24、文書内単語出現位置領域数:
B24、文書内単語出現位置:B24(図30、組合せ
15) 16.文書番号:B24、文書内単語出現位置領域数:
B24、文書内単語出現位置:B24+Per(16)
(図30、組合せ16) 17.文書番号:4BB改、文書内単語出現位置領域
数:4BB改、文書内単語出現位置:84BB(図3
1、組合せ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(1
6)(図31、組合せ22) 23.文書番号:B24、文書内単語出現位置領域数:
B24、文書内単語出現位置:84BB(図31、組合
せ23) 24.文書番号:B24、文書内単語出現位置領域数:
B24、文書内単語出現位置:84BB+Per(1
6)(図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改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:4BB改(図33、組合せ9) 10.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:4BB改+Per(16)(図33、組合せ
10) 11.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:B24(図33、組合せ11) 12.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:B24+Per(16)(図33、組合せ1
2) 13.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:4BB改(図33、組合せ13) 14.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:4BB改+Per(16)(図33、組合せ1
4) 15.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:B24(図33、組合せ15) 16.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:B24+Per(16)(図33、組合せ1
6) 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、組合せ2
0) 21.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置領域数:B24、文書内単語出
現位置:4BB改(図34、組合せ21) 22.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置領域数:B24、文書内単語出
現位置:4BB改+Per(16)(図34、組合せ2
2) 23.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置領域数:B24、文書内単語出
現位置:B24(図34、組合せ23) 24.文書番号:B24、文書内単語出現頻度:4BB
改、文書内単語出現位置領域数:B24、文書内単語出
現位置:B24+Per(16)(図34、組合せ2
4) 25.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:4BB改(図35、組合せ25) 26.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:4BB改+Per(16)(図35、組合せ
26) 27.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:B24(図35、組合せ27) 28.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:B24+Per(16)(図35、組合せ2
8) 29.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:4BB改(図35、組合せ29) 30.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:4BB改+Per(16)(図35、組合せ3
0) 31.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:B24(図35、組合せ31) 32.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:B24+Per(16)(図35、組合せ3
2) 33.文書番号:4BB改、文書内単語出現頻度:4B
B改、文書内単語出現位置領域数:4BB改、文書内単
語出現位置:84BB(図36、組合せ33) 34.文書番号:4BB改、文書内単語出現頻度:4B
B改、文書内単語出現位置領域数:4BB改、文書内単
語出現位置:84BB+Per(16)(図36、組合
せ34) 35.文書番号:4BB改、文書内単語出現頻度:4B
B改、文書内単語出現位置領域数:B24、文書内単語
出現位置:84BB(図36、組合せ35) 36.文書番号:4BB改、文書内単語出現頻度:4B
B改、文書内単語出現位置領域数:B24、文書内単語
出現位置:84BB+Per(16)(図36、組合せ
36) 37.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:84BB(図36、組合せ37) 38.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:84BB+Per(16)(図36、組合せ
38) 39.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:84BB(図36、組合せ39) 40.文書番号:4BB改、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:84BB+Per(16)(図36、組合せ4
0) 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、組合せ4
4) 45.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:84BB(図37、組合せ45) 46.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:4BB改、文書内単語
出現位置:84BB+Per(16)(図37、組合せ
46) 47.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:84BB(図37、組合せ47) 48.文書番号:B24、文書内単語出現頻度:B2
4、文書内単語出現位置領域数:B24、文書内単語出
現位置:84BB+Per(16)(図37、組合せ4
8) 以上説明した実施形態においては、本発明のデータ圧縮
/復元装置を情報検索装置に適用しているが、このデー
タ圧縮/復元装置は、検索用インデックスのみに限ら
ず、任意のデータの圧縮/復元に用いることができる。
【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 (43)

    【特許請求の範囲】
  1. 【請求項1】 与えられたデータをブロック単位で圧縮
    し、圧縮されたデータの先頭部分に、該圧縮されたデー
    タの長さを表す継続フラグ情報を生成する圧縮手段と、 前記圧縮されたデータを格納する格納手段とを備えるこ
    とを特徴とするデータ圧縮装置。
  2. 【請求項2】 前記圧縮手段は、情報検索のためのイン
    デックス内で用いられる数値データを圧縮することを特
    徴とする請求項1記載のデータ圧縮装置。
  3. 【請求項3】 前記圧縮手段は、文書番号データ、文書
    内単語出現頻度データ、文書内単語出現位置データ、お
    よび文書内単語出現位置データの領域の大きさを表すデ
    ータのうち、少なくとも1つ以上の数値データを圧縮す
    ることを特徴とする請求項2記載のデータ圧縮装置。
  4. 【請求項4】 前記文書番号データと文書内単語出現位
    置データのうち少なくとも1つは差分情報を表すことを
    特徴とする請求項3記載のデータ圧縮装置。
  5. 【請求項5】 前記圧縮手段は、1ブロック以上の前記
    圧縮されたデータの先頭部分に、該圧縮されたデータの
    ブロック長を表す前記継続フラグ情報を生成し、該継続
    フラグ情報に続いて、前記与えられたデータを表すデー
    タを生成することを特徴とする請求項1記載のデータ圧
    縮装置。
  6. 【請求項6】 前記圧縮手段は、4ビットをブロックの
    単位として、前記与えられたデータを符号化する符号化
    手段を含むことを特徴とする請求項5記載のデータ圧縮
    装置。
  7. 【請求項7】 前記圧縮手段は、127以下の数値デー
    タが与えられたとき、与えられた数値データを8ビット
    のブロックで符号化し、128以上の数値データが与え
    られたとき、与えられた数値データを、8ビットの先頭
    ブロックと4ビットをブロックの単位とする1つ以上の
    後続ブロックとを用いて符号化する符号化手段を含むこ
    とを特徴とする請求項5記載のデータ圧縮装置。
  8. 【請求項8】 前記符号化手段は、前記127以下の数
    値データを、1ビットの0と7ビットのビットパターン
    で表すことを特徴とする請求項7記載のデータ圧縮装
    置。
  9. 【請求項9】 前記圧縮手段は、2以下の数値データが
    与えられたとき、与えられた数値データを2ビットのブ
    ロックで符号化し、3以上の数値データが与えられたと
    き、与えられた数値データを、4ビットをブロックの単
    位として符号化する符号化手段を含むことを特徴とする
    請求項5記載のデータ圧縮装置。
  10. 【請求項10】 前記符号化手段は、3以上6以下の数
    値データが与えられたとき、与えられた数値データを、
    2ビットの前記継続フラグ情報と2ビットのビットパタ
    ーンで表すことを特徴とする請求項9記載のデータ圧縮
    装置。
  11. 【請求項11】 情報検索のためのインデックス内で用
    いられる数値データの粒度を粗くして、該数値データを
    圧縮する圧縮手段と、 圧縮されたデータを格納する格納手段とを備えることを
    特徴とするデータ圧縮装置。
  12. 【請求項12】 前記圧縮手段は、前記数値データを、
    より小さな数値を表す中間数値データに変換して、圧縮
    することを特徴とする請求項11記載のデータ圧縮装
    置。
  13. 【請求項13】 前記圧縮手段は、情報検索のためのイ
    ンデックス内で用いられる文書内単語出現頻度データと
    文書内単語出現位置データのうち、少なくとも1つ以上
    の数値データを圧縮することを特徴とする請求項11記
    載のデータ圧縮装置。
  14. 【請求項14】 前記圧縮手段は、粒度の粗くなった中
    間数値データを、4ビットをブロックの単位として圧縮
    し、前記圧縮されたデータの先頭部分に、該圧縮された
    データのブロック長を表す継続フラグ情報を生成するこ
    とを特徴とする請求項11記載のデータ圧縮装置。
  15. 【請求項15】 前記圧縮手段は、粒度の粗くなった中
    間数値データが2以下の数値を表すとき、該中間数値デ
    ータを2ビットのブロックで表し、該中間数値データが
    3以上の数値を表すとき、該中間数値データを、4ビッ
    トをブロックの単位として圧縮することを特徴とする請
    求項11記載のデータ圧縮装置。
  16. 【請求項16】 前記圧縮手段は、3以上6以下の数値
    データが与えられたとき、与えられた数値データを、2
    ビットの継続フラグ情報と2ビットのビットパターンで
    表すことを特徴とする請求項15記載のデータ圧縮装
    置。
  17. 【請求項17】 情報検索のためのインデックス内で用
    いられる文書内単語出現位置データの領域の大きさを表
    す大きさデータをブロック単位で記述し、該大きさデー
    タを圧縮する圧縮手段と、 圧縮された大きさデータを格納する格納手段とを備える
    ことを特徴とするデータ圧縮装置。
  18. 【請求項18】 ブロック単位で圧縮されたデータを格
    納する格納手段と、 前記圧縮されたデータの先頭部分の継続フラグ情報に基
    づいて、該圧縮されたデータの長さを決定し、元のデー
    タを復元する復元手段とを備えることを特徴とするデー
    タ復元装置。
  19. 【請求項19】 前記復元手段は、情報検索のためのイ
    ンデックス内で用いられる数値データを復元することを
    特徴とする請求項18記載のデータ復元装置。
  20. 【請求項20】 前記復元手段は、文書番号データ、文
    書内単語出現頻度データ、文書内単語出現位置データ、
    および文書内単語出現位置データの領域の大きさを表す
    データのうち、少なくとも1つ以上の数値データを復元
    することを特徴とする請求項19記載のデータ復元装
    置。
  21. 【請求項21】 前記復元手段は、1ブロック以上の前
    記圧縮されたデータのブロック長を表す前記継続フラグ
    情報に基づいて、該継続フラグ情報に続く前記元のデー
    タを表すデータを取り出し、該元のデータを復元するこ
    とを特徴とする請求項18記載のデータ復元装置。
  22. 【請求項22】 前記復元手段は、前記圧縮されたデー
    タとして与えられた、4ビットをブロックの単位として
    記述された符号を、復号化する復号化手段を含むことを
    特徴とする請求項21記載のデータ復元装置。
  23. 【請求項23】 前記復元手段は、前記圧縮されたデー
    タとして8ビットのブロックを1つ与えられたとき、該
    ブロックを復号化して127以下の数値データを生成
    し、該圧縮されたデータとして8ビットの先頭ブロック
    と4ビットをブロックの単位とする1つ以上の後続ブロ
    ックとが与えられたとき、該先頭ブロックと後続ブロッ
    クを復号化して128以上の数値データを生成する復号
    化手段を含むことを特徴とする請求項21記載のデータ
    復元装置。
  24. 【請求項24】 前記復号化手段は、前記8ビットのブ
    ロックが1ビットの0と7ビットのビットパターンから
    成るとき、前記127以下の数値データを生成すること
    を特徴とする請求項23記載のデータ復元装置。
  25. 【請求項25】 前記復元手段は、前記圧縮されたデー
    タとして2ビットのブロックを1つ与えられたとき、該
    ブロックを復号化して2以下の数値データを生成し、該
    圧縮されたデータとして4ビットをブロックの単位とす
    る1つ以上のブロックが与えられたとき、該1つ以上の
    ブロックを復号化して3以上の数値データを生成する復
    号化手段を含むことを特徴とする請求項21記載のデー
    タ復元装置。
  26. 【請求項26】 前記復号化手段は、前記圧縮されたデ
    ータが2ビットの前記継続フラグ情報と2ビットのビッ
    トパターンから成るとき、3以上6以下の数値データを
    生成することを特徴とする請求項25記載のデータ復元
    装置。
  27. 【請求項27】 情報検索のためのインデックス内で用
    いられる数値データの粒度を粗くし、圧縮して格納する
    格納手段と、 前記数値データを復元し、復元された数値データの粒度
    を元に戻す復元手段とを備えることを特徴とするデータ
    復元装置。
  28. 【請求項28】 情報検索のためのインデックス内で用
    いられる文書内単語出現位置データの領域の大きさをブ
    ロック単位で記述した大きさデータを、圧縮して格納す
    る格納手段と、 前記大きさデータを復元する復元手段とを備えることを
    特徴とするデータ復元装置。
  29. 【請求項29】 情報検索のためのインデックス内で用
    いられる数値データをブロック単位で圧縮して格納する
    格納手段と、 圧縮されたデータの先頭部分の継続フラグ情報に基づい
    て、該圧縮されたデータの長さを決定し、元のデータを
    復元する復元手段と、 復元された元のデータを用いてデータベースを検索する
    検索手段とを備えることを特徴とする情報検索装置。
  30. 【請求項30】 情報検索のためのインデックス内で用
    いられる数値データの粒度を粗くし、圧縮して格納する
    格納手段と、 前記数値データを復元し、復元された数値データの粒度
    を元に戻す復元手段と、 復元された元のデータを用いてデータベースを検索する
    検索手段とを備えることを特徴とする情報検索装置。
  31. 【請求項31】 情報検索のためのインデックス内で用
    いられる文書内単語出現位置データの領域の大きさをブ
    ロック単位で記述した大きさデータを、圧縮して格納す
    る格納手段と、 前記大きさデータを復元する復元手段と、 復元された元のデータを用いてデータベースを検索する
    検索手段とを備えることを特徴とする情報検索装置。
  32. 【請求項32】 コンピュータのためのプログラムを記
    録した記録媒体であって、 与えられたデータをブロック単位で圧縮し、圧縮された
    データの先頭部分に、該圧縮されたデータの長さを表す
    継続フラグ情報を生成する機能を前記コンピュータに実
    現させるためのプログラムを記録したコンピュータ読み
    取り可能な記録媒体。
  33. 【請求項33】 コンピュータのためのプログラムを記
    録した記録媒体であって、 情報検索のためのインデックス内で用いられる数値デー
    タの粒度を粗くして、該数値データを圧縮する機能を前
    記コンピュータに実現させるためのプログラムを記録し
    たコンピュータ読み取り可能な記録媒体。
  34. 【請求項34】 コンピュータのためのプログラムを記
    録した記録媒体であって、 情報検索のためのインデックス内で用いられる文書内単
    語出現位置データの領域の大きさを表す大きさデータを
    ブロック単位で記述し、該大きさデータを圧縮する機能
    を前記コンピュータに実現させるためのプログラムを記
    録したコンピュータ読み取り可能な記録媒体。
  35. 【請求項35】 コンピュータのためのプログラムを記
    録した記録媒体であって、 ブロック単位で圧縮されたデータの先頭部分の継続フラ
    グ情報に基づいて、圧縮されたデータの長さを決定し、
    元のデータを復元する機能を前記コンピュータに実現さ
    せるためのプログラムを記録したコンピュータ読み取り
    可能な記録媒体。
  36. 【請求項36】 コンピュータのためのプログラムを記
    録した記録媒体であって、 情報検索のためのインデックス内で用いられる数値デー
    タの粒度を粗くして圧縮したデータを復元し、復元され
    た数値データの粒度を元に戻す機能を前記コンピュータ
    に実現させるためのプログラムを記録したコンピュータ
    読み取り可能な記録媒体。
  37. 【請求項37】 コンピュータのためのプログラムを記
    録した記録媒体であって、 情報検索のためのインデックス内で用いられる文書内単
    語出現位置データの領域の大きさをブロック単位で記述
    して圧縮したデータを復元する機能を前記コンピュータ
    に実現させるためのプログラムを記録したコンピュータ
    読み取り可能な記録媒体。
  38. 【請求項38】 与えられたデータをブロック単位で圧
    縮し、圧縮されたデータの先頭部分に、該圧縮されたデ
    ータの長さを表す継続フラグ情報を生成することを特徴
    とするデータ圧縮方法。
  39. 【請求項39】 情報検索のためのインデックス内で用
    いられる数値データの粒度を粗くして、 該数値データを圧縮することを特徴とするデータ圧縮方
    法。
  40. 【請求項40】 情報検索のためのインデックス内で用
    いられる文書内単語出現位置データの領域の大きさを表
    す大きさデータをブロック単位で記述し、 該大きさデータを圧縮することを特徴とするデータ圧縮
    方法。
  41. 【請求項41】 ブロック単位で圧縮されたデータの先
    頭部分の継続フラグ情報に基づいて、圧縮されたデータ
    の長さを決定し、 元のデータを復元することを特徴とするデータ復元方
    法。
  42. 【請求項42】 情報検索のためのインデックス内で用
    いられる数値データの粒度を粗くして圧縮したデータを
    復元し、 復元された数値データの粒度を元に戻すことを特徴とす
    るデータ復元方法。
  43. 【請求項43】 情報検索のためのインデックス内で用
    いられる文書内単語出現位置データの領域の大きさをブ
    ロック単位で記述して圧縮したデータを復元することを
    特徴とするデータ復元方法。
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 true JPH10301959A (ja) 1998-11-13
JP3708318B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012049883A1 (ja) * 2010-10-15 2012-04-19 日本電気株式会社 データ構造、インデックス作成装置、データ検索装置、インデックス作成方法、データ検索方法およびコンピュータ読み取り可能な記録媒体
CN110048725A (zh) * 2019-05-14 2019-07-23 四川九洲空管科技有限责任公司 一种基于taws系统的地形数据压缩解压缩算法

Citations (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 データ処理装置

Patent Citations (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 データ処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012049883A1 (ja) * 2010-10-15 2012-04-19 日本電気株式会社 データ構造、インデックス作成装置、データ検索装置、インデックス作成方法、データ検索方法およびコンピュータ読み取り可能な記録媒体
JP5812007B2 (ja) * 2010-10-15 2015-11-11 日本電気株式会社 インデックス作成装置、データ検索装置、インデックス作成方法、データ検索方法、インデックス作成プログラムおよびデータ検索プログラム
US9600565B2 (en) 2010-10-15 2017-03-21 Nec Corporation Data structure, index creation device, data search device, index creation method, data search method, and computer-readable recording medium
CN110048725A (zh) * 2019-05-14 2019-07-23 四川九洲空管科技有限责任公司 一种基于taws系统的地形数据压缩解压缩算法
CN110048725B (zh) * 2019-05-14 2023-07-07 四川九洲空管科技有限责任公司 一种基于taws系统的地形数据压缩解压缩算法

Also Published As

Publication number Publication date
JP3708318B2 (ja) 2005-10-19

Similar Documents

Publication Publication Date Title
KR100894002B1 (ko) 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법
Nelson et al. The data compression book 2nd edition
AU702207B2 (en) Method of and apparatus for compressing and decompressing data and data processing apparatus and network system using the same
US5999949A (en) Text file compression system utilizing word terminators
Roth et al. Database compression
JP3778087B2 (ja) データ符号化装置及びデータ復号装置
JP5831298B2 (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
US5815096A (en) Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
KR100495593B1 (ko) 파일 처리 방법, 데이터 처리 장치, 및 기억 매체
Rahman et al. A novel lossless coding technique for image compression
US6112208A (en) Data compressing method and apparatus to generate bit maps in accordance with extracted data symbols
JP3898717B2 (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP3708318B2 (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
Chung et al. Level-compressed Huffman decoding
JPH10261969A (ja) データ圧縮方法および装置
Niemi et al. Burrows‐Wheeler post‐transformation with effective clustering and interpolative coding
JP2005137015A (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP3199292B2 (ja) ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
Sadakane Text compression using recency rank with context and relation to context sorting, block sorting and PPM/sup*
JP3442105B2 (ja) データ圧縮および復元方式
Ng et al. Dynamic word based text compression
JP3083329B2 (ja) データ圧縮復元方式
JPH07282040A (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