JP6512294B2 - 圧縮プログラム、圧縮方法および圧縮装置 - Google Patents

圧縮プログラム、圧縮方法および圧縮装置 Download PDF

Info

Publication number
JP6512294B2
JP6512294B2 JP2017528061A JP2017528061A JP6512294B2 JP 6512294 B2 JP6512294 B2 JP 6512294B2 JP 2017528061 A JP2017528061 A JP 2017528061A JP 2017528061 A JP2017528061 A JP 2017528061A JP 6512294 B2 JP6512294 B2 JP 6512294B2
Authority
JP
Japan
Prior art keywords
bit
word
compression
unit
index
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.)
Active
Application number
JP2017528061A
Other languages
English (en)
Other versions
JPWO2017009958A1 (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
Publication of JPWO2017009958A1 publication Critical patent/JPWO2017009958A1/ja
Application granted granted Critical
Publication of JP6512294B2 publication Critical patent/JP6512294B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures

Description

本発明は、圧縮プログラム、圧縮方法および圧縮装置に関する。
複数のファイルから検索対象の文字列との関連度が高いファイルを検索する技術がある。かかる技術では、インデックスを用いて検索対象の文字列中の単語を含むファイルを特定する。そして、特定されたファイル内を検索して検索対象の文字列中の単語の出現回数を求め、出現頻度に基づいて関連度が高いファイルを特定する。インデックスとは、各単語が含まれるファイルを示したデータである。例えば、インデックスは、単語およびファイルに1つのビットが対応付けられており、ビットの値により、当該ビットに対応付けられたファイルが単語を含むか否かを記憶する。
インデックスは、単語ごとに、ファイルに対して1ビットを対応させた場合、ファイル数が多くなると、データサイズが大きくなる。そこで、互いに異なる関数を用いて、複数のビットを1つのビットに対応付けることにより、インデックスのデータサイズを小さく圧縮する技術が存在する。例えば、インデックスの単語ごとの各ファイルに対応付けたビット配列Aを、互いに異なる2つのハッシュ関数を用いて複数のビットを1つのビットに対応付けることにより、ビット配列Xとビット配列Yに変換する。ビット配列Xとビット配列Yは、互いに異なるハッシュ関数を用いて変換されている。このため、例えば、ビット配列Xにおいて同じビットに対応付けられた複数のファイルがビット配列Yでは異なるビットに対応付けられる。これにより、ビット配列Xおよびビット配列Yでファイルに対応付けられたビットが単語を含むことを示す場合、ファイルは、単語を含むと特定する。
国際公開第2013/175537号
しかし、テキストマイニングの分野において、従来技術では、単語や関連する類語の出現回数を集計し、それをもとにスコア演算を行う必要がある。このように、従来の技術では、インデックスにより単語を含むと特定されたファイル内の単語の出現回数を集計するため、処理に時間がかかる場合がある。
そこで、インデックスを各ファイルにおける単語の出現回数の情報を保持するカウントマップ型のインデックスとする案も考えられる。例えば、テキストファイルの文字列の各単語に符号を割当てて圧縮するのと並行して、インデックスに、単語およびファイルに対応付けて、出現回数をそれぞれ複数ビットで記憶させる。このように、単語およびファイルに対してそれぞれ複数ビットを対応付けた場合、インデックスのデータサイズが大きくなる。そこで、従来技術のように、互いに異なる関数を用いてインデックスのデータサイズを小さく圧縮する案も考えられる。ビットマップ型インデックスと同様に、出現回数を複数ビットで記憶させたカウントマップ型のインデックスも、ハッシュ関数でのビットの衝突が発生しやすいため、圧縮したデータを復元した際にノイズが多く発生する場合がある。
一つの側面では、復元した際にノイズの発生を抑えてインデックスを圧縮できる圧縮プログラム、圧縮方法および圧縮装置を提供することを目的とする。
第1の案では、圧縮プログラムは、コンピュータに、処理対象のファイルから単語を抽出する処理を実行させる。圧縮プログラムは、コンピュータに、抽出された単語ごとに出現回数を計数する処理を実行させる。圧縮プログラムは、コンピュータに、出現回数が複数ビットで表現されたビット列を、単語およびファイルに対応付けてインデックスに登録する処理を実行させる。圧縮プログラムは、コンピュータに、単語およびファイルに対応付けてインデックスに登録された複数のビット列のうち、第1のビット列と第2のビット列に含まれるビットをそれぞれビット列内で異なる順に並び替える処理を実行させる。圧縮プログラムは、コンピュータに、ビットが並べ替えられたインデックスを互いに異なる関数を用いて圧縮する処理を実行させる。
本発明の1実施態様によれば、インデックスのデータサイズを抑えることができるという効果を奏する。
図1は、ファイルを圧縮する圧縮処理の流れを概略的に示した図である。 図2は、ビット列のビットごとの「0」と「1」の頻度の偏りを説明する図である。 図3は、インデックスの圧縮の一例を示す図である。 図4は、ビット列の各ビットの並べ替えを説明する図である。 図5は、圧縮装置の構成の一例を示す図である。 図6は、類語データベースのデータ構造の一例を示す図である。 図7は、静的辞書の一例を示す図である。 図8は、動的辞書のデータ構造の一例を示す図である。 図9は、インデックスのデータ構造の一例を示す図である。 図10は、インデックスに出現回数を登録する流れを概略的に示した図である。 図11は、圧縮処理の手順の一例を示すフローチャートである。 図12は、インデックスのデータ構造の他の一例を示す図である。 図13は、圧縮プログラムを実行するコンピュータの一例を示す図である。
以下に、本願の開示する圧縮プログラム、圧縮方法および圧縮装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの権利範囲が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[インデックス生成]
最初に、図1を用いて、実施例1に係る圧縮装置10がインデックスを生成する処理について説明する。圧縮装置10は、ファイルを圧縮する際に、インデックス34を生成する処理を行う。図1は、ファイルを圧縮する圧縮処理の流れを概略的に示した図である。図1には、圧縮を行う圧縮対象ファイル30に含まれる文章「・・・this is a ball・・・」を圧縮し、インデックス34を生成する例が示されている。圧縮装置10の圧縮部40は、圧縮対象ファイル30に含まれる文書から単語単位に、それぞれの単語を抽出する(図1(1))。図1の例では、「this」、「is」、「a」、「ball」を抽出する。そして、圧縮部40は、単語の単位に圧縮符号を割り当て、圧縮対象ファイル30に含まれる文書を圧縮する(図1(2))。また、圧縮部40は、圧縮対象ファイル30に含まれる文書に含まれる単語ごとに出現回数を計数し、出現回数をインデックス34に登録する(図1(3))。
インデックス34は、各ファイルにおける単語の出現回数の情報を保持したデータである。例えば、インデックス34は、単語およびファイルに対応付けて、複数ビットのビット列が設けられ、単語およびファイルに対応付けて、ビット列に出現回数を記憶する。例えば、圧縮対象ファイル30には、それぞれ順にファイル番号が対応付けられる。図1の例では、インデックス34は、単語およびファイル番号ごとに、それぞれ4ビットのビット列が対応付けられており、出現した単語の出現回数を4ビットで表現したビット列を記憶する。図1の例では、出現回数を記録するビット列を4ビットとしているが、ビット列のビット数はこれに限定されるものではない。また、ビット列には、離散的に出現回数を対応させてもよい。例えば、ビット列には、出現回数「0」に対して「0000」、出現回数「1」に対して「0001」、出現回数「4」に対して「0010」、出現回数「8」に対して「0011」などと、ビット列の値に対して指数的に出現回数を対応させて登録してもよい。インデックス34は、単語およびファイルに対応付けて、複数ビットのビット列を設けた場合、データサイズが大きくなる。また、圧縮対象ファイル30に含まれる文章によって出現する単語は、偏りがあり、出現回数にも偏りがある。例えば、多くの単語は、出現しないため、出現回数が0となる。また、出現した単語も多くは、出現回数が少ない。このため、出現回数を登録した4ビットのビット列には、ビットごとに「0」と「1」の頻度に偏りがある。
そこで、圧縮部40は、インデックス34の単語およびファイルに対応付けて設けられた各ビット列に含まれるビットを当該ビット列内で並べ替える(図1(4))。例えば、圧縮部40は、複数の単語間で異なる所定ビット数を用いて、ビット列の各ビットを回転させることでビットを並べ替える。例えば、圧縮部40は、単語ごとに、ビットを回転させる回転ビット数を0〜3の中で順に変えて、単語ごとに各ファイルの出現回数が登録されたビット列の各ビットを当該ビット列内で回転ビット数だけローテーションさせてビットを並べ替える。ローテーションでは、ビット列内で各ビットを上位側へ移動させ、ビット列内の最上位のビットをビット列内の最下位のビットへ移動させる。図1の例では、単語「is」は、ビット列の各ビットを1ビット、ローテーションさせている。このため、単語「is」では、ファイル番号「1」のビット列「0011」が「0110」へと変化し、ファイル番号「3」のビット列「0101」が「1010」へと変化し、ファイル番号「α」のビット列「0001」が「0010」へと変化している。また、図1の例では、単語「this」は、ビット列の各ビットを3ビット、ローテーションさせている。このため、単語「this」では、ファイル番号「1」のビット列「0011」が「1001」へと変化し、ファイル番号「2」、「α」のビット列「0001」が「1000」へと変化し、ファイル番号「3」のビット列「0100」が「0010」へと変化している。これにより、インデックス34は、ビット列のビットごとの「0」と「1」の偏りが抑制されて平準化される。
圧縮部40は、互いに異なる複数のハッシュ関数を用いて、複数のビットを1つのビットに対応付けることにより、インデックス34のデータサイズを小さく圧縮する(図1(5))。例えば、インデックス34の単語ごとの各ファイルのビット列が並んだ各ビット配列Aを、互いに異なる2つのハッシュ関数を用いて複数のビットを1つのビットに対応付けることにより、2つのビット配列に変換する。インデックス34の圧縮の詳細については、後述する。図1の例では、単語「a」のビット配列Aがビット配列X1とビット配列Y1に変換されて圧縮されている。また、単語「is」のビット配列Aがビット配列X2とビット配列Y2に変換されて圧縮されている。また、単語「this」のビット配列Aがビット配列Xとビット配列Yに変換されて圧縮されている。この結果、圧縮装置10では、インデックス34のデータサイズを抑えることができる。
次に、出現回数を登録したビット列のビットごとの「0」と「1」の頻度の偏りについて説明する。図2は、ビット列のビットごとの「0」と「1」の頻度の偏りを説明する図である。図2には、インデックス34が示されている。上述したように、圧縮対象ファイル30に含まれる文章によって出現する単語は、偏りがあり、出現回数にも偏りがある。多くの単語は、出現回数が少ない。このため、インデックス34のビット列は、下位ビットほど「1」となる頻度が高く、上位ビットほど「1」となる頻度が低い。図2の例では、最上位ビット60と最下位ビット61を示している。図2に示すように、最下位ビット61は、「1」となる頻度が高い。一方、最上位ビット60は、「1」となる頻度が低い。図2には、ビット列の各ビットで「1」が出現する頻度の一例が示されている。図2に示すように、下位の1ビット目は、「1」となる頻度が高い。一方、上位の4ビット目は「1」となる頻度が低い。
インデックス34は、ビットごとに「0」と「1」の頻度に偏りがあると、互いに異なる複数のハッシュ関数を用いて圧縮した場合、ハッシュ関数でのビットの衝突が発生しやすく、圧縮したデータを復元した際にノイズが多く発生する場合がある。
ここで、インデックス34の圧縮について説明する。図3は、インデックスの圧縮の一例を示す図である。図3には、単語の各ファイルでの出現回数を登録したビット列が並んだビット配列の一例が示されている。ビット配列Aは、ファイル番号αまでのファイルについて、それぞれ4ビットのビット列で単語の出現回数が記録されており、ビット数が4αとされている。圧縮部40は、ビット配列Aを互いに異なる複数のハッシュ関数を用いて、複数のビットを1つのビットに対応付けることにより、インデックス34のデータサイズを小さく圧縮する。例えば、圧縮部40は、ビット数が4αよりも小さいmビットのビット配列Xと、nビットのビット配列Yに圧縮する。ビット配列Xは、要素番号が0〜m−1のmビットの配列とする。ビット配列Yは、要素番号が0〜n−1のnビットの配列とする。nとmは、互いに異なる素数とし、好ましくは隣接する素数とする。nとmは、nとmの乗算値が4αよりも小さい値とする。例えば、α=2500として、4α=10000とした場合、nとmは、「97」と「101」とする。
ハッシュ関数は、ビット配列Aの各ビットを圧縮後のビット配列X、Yの各ビットに対応付ける。例えば、ハッシュ関数は、ビット配列Aの各ビットのビット数を、圧縮後のビット配列のビット数で割った余りを求める関数とする。圧縮部40は、ハッシュ関数により求まる余りが同じ複数のビットを1つのビットに対応付けることにより、ビット列を圧縮する。
例えば、図3の例では、第1のハッシュ関数を、ビット配列Aの各ビットのビット数をそれぞれmで割った余りを求める関数とする。第1のハッシュ関数は、ビット配列Aの各ビットに対して0〜m−1の値を出力する。圧縮部40は、第1のハッシュ関数により求まる余りが同じ複数のビットを1つのビットに対応付けることにより、ビット配列Aをビット配列Xに変換して圧縮する。図3の例では、ビット配列Aにおいてmで割った余りが0となるビット数が「0」、「m」のビットがビット配列Xの要素番号「0」のビットに対応付けられる。また、図3の例では、ビット配列Aにおいてmで割った余りがm−1となるビット数が「m−1」、「2m−1」、「mn−1」のビットがビット配列Xの要素番号「m−1」のビットに対応付けられる。
また、図3の例では、第2のハッシュ関数を、ビット配列Aの各ビットのビット数をそれぞれnで割った余りを求める関数とする。第2のハッシュ関数は、ビット配列Aの各ビットに対して0〜n−1の値を出力する。圧縮部40は、第2のハッシュ関数により求まる余りが同じ複数のビットを1つのビットに対応付けることにより、ビット配列Aをビット配列Yに変換して圧縮する。図3の例では、ビット配列Aにおいてnで割った余りが0となるビット数が「0」、「n」のビットがビット配列Yの要素番号「0」のビットに対応付けられる。また、図3の例では、ビット配列Aにおいてnで割った余りがn−1となるビット数が「n−1」、「2n−1」、「mn−1」のビットがビット配列Yの要素番号「n−1」のビットに対応付けられる。
圧縮部40は、余りが同じ何れかのビットが「1」の場合、圧縮後のビット配列の要素番号が余りの値のビットに「1」を登録する。また、圧縮部40は、余りが同じ複数のビットが全て「0」の場合、圧縮後のビット配列の要素番号が余りの値のビットに「0」を登録する。図3の例では、ビット配列Aのビット数が「2m−1」、「mn−1」のビットが「1」のため、ビット配列Xの要素番号「m−1」のビットは、「1」が登録されている。また、ビット配列Aのビット数が「mn−1」のビットが「1」のため、ビット配列Yの要素番号「n」のビットは、「1」が登録されている。
ビット配列Aの復元は、例えば、次にように行う。ビット配列Aのビットごとに、ビット配列Xとビット配列Yそれぞれの対応付けられたビットを確認する。対応付けられたビットがともに「1」の場合、「1」と復元し、対応付けられたビットがともに「1」ではない場合、「0」と復元する。
ところで、一般的に、圧縮対象ファイル30に含まれる文章によって出現する単語は、偏りがあり、出現回数にも偏りがある。例えば、多くの単語は、出現しない。また、出現した単語も多くは、出現回数が少ない。このため、出現回数を登録した4ビットのビット列には、ビットごとに「0」と「1」の頻度に偏りがある。
インデックス34は、ビットごとに「0」と「1」の頻度に偏りがあると、互いに異なる複数のハッシュ関数を用いて圧縮した場合、ハッシュ関数でのビットの衝突が発生しやすく、圧縮したデータを復元した際にノイズが多く発生する場合がある。
そこで、本実施例では、インデックス34の単語およびファイルに対応付けて設けられた各ビット列に含まれるビットを当該ビット列内で並べ替える。図4は、ビット列の各ビットの並べ替えを説明する図である。図4には、図2に示したインデックス34のビット列の各ビットを並べ替えた結果が示されている。図4の例では、単語「is」は、ビット列の各ビットを1ビットだけローテーションさせている。単語「this」は、ビット列の各ビットを3ビットだけローテーションさせている。また、図4の例では、図2に示したビット列の最上位ビット60と最下位ビット61が示されている。図4の下部には、ビット列の各ビットで「1」が出現する頻度の一例が示されている。ビット列内でビットの並べ替えをした場合、各ビットの頻度が平準化される。
インデックス34は、ビットごとに「0」と「1」の頻度に平準化されると、互いに異なる複数のハッシュ関数を用いて圧縮した場合、ハッシュ関数でのビットの衝突が発生し難くなる。このため、インデックス34を圧縮したデータを復元した際のノイズの発生が抑制される。
[装置構成]
次に、圧縮装置10の構成について説明する。図5は、圧縮装置の構成の一例を示す図である。圧縮装置10は、圧縮対象ファイル30の圧縮などの符号化を行う装置である。圧縮装置10は、例えば、パーソナルコンピュータ、サーバコンピュータなどのコンピュータや、タブレット端末、スマートフォンなどの情報処理装置である。圧縮装置10は、1台のコンピュータとして実装してもよく、また、複数台のコンピュータによるクラウドとして実装することもできる。なお、本実施例では、圧縮装置10を1台のコンピュータとした場合を例として説明する。図5に示すように、圧縮装置10は、記憶部20と、制御部21とを有する。なお、圧縮装置10は、コンピュータや情報処理装置が有する上記の機器以外の他の機器を有してもよい。
記憶部20は、ハードディスク、SSD(Solid State Drive)、光ディスクなどの記憶装置である。なお、記憶部20は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)などのデータを書き換え可能な半導体メモリであってもよい。
記憶部20は、制御部21で実行されるOS(Operating System)や各種プログラムを記憶する。例えば、記憶部20は、後述する圧縮および検索に用いる各種のプログラムを記憶する。さらに、記憶部20は、制御部21で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部20は、圧縮対象ファイル30と、類語データベース31と、静的辞書32と、動的辞書33と、インデックス34と、圧縮ファイル35とを記憶する。
圧縮対象ファイル30は、圧縮対象の文章のデータを記憶したファイルである。
類語データベース31は、類似する単語に関する情報を記憶したデータである。例えば、類語データベース31には、類似する単語の群ごとに、類似する単語が登録されている。
図6を用いて、類語データベース31について説明する。図6は、類語データベースのデータ構造の一例を示す図である。図6の例のように類語データベース31は、「類語番号」、「類似単語」の各項目を有する。「類語番号」の項目は、類似語の種類を識別するために定められた識別情報である。「類語番号」の項目には、後述する基本コードと重複しないように付与された類語番号のコードが格納される。「類似単語」の項目は、互いに類似する単語である。「類似単語」の項目には、例えば、シソーラスを基に、類似する複数の単語が格納される。例えば、シソーラスには、類似語として約1600種類がある。図6の例では、類語データベース31には、類語番号「F00011h」に対応付けて、「mouse」、「rat」、「cavy」、・・・が登録されている。なお、類語番号や、後述する基本コードおよび圧縮符号の最後に付した「h」は、コードが16進数で表記されていることを示す符号である。
図5に戻り、静的辞書32は、単語と圧縮符号を対応付ける変換情報を保持したデータである。
図7を用いて、静的辞書32について説明する。図7は、静的辞書の一例を示す図である。図7の例のように静的辞書32は、「2グラム」、「ビットマップ」、「ポインタ」、「基礎単語」、「文字列長」、「出現頻度」、「符号長」、「静的コード」、「動的コード」、「基本コード」、「類語番号」の各項目を有する。
「2グラム」の項目は、各単語に含まれる2グラム文字を記憶する領域である。例えば、図7に示すように、「able」は、「ab」「bl」「le」に対応する2グラム文字を含む。「ビットマップ」の項目は、2グラム文字が含まれる基礎単語の位置を表すビット列を記憶する領域である。例えば、2グラム「ab」のビットマップが「1_0_0_0_0」の場合、ビットマップは基礎単語の先頭2文字が「ab」であることを表す。ビットマップは、ポインタによってそれぞれ基礎単語に対応付けられる。例えば、2グラム「ab」のビットマップ「1_0_0_0_0」は、「able」および「above」に対応付けられる。
「基礎単語」の項目は、基礎単語として予め登録された単語を記憶する領域である。例えば、図7に示す静的辞書32では、所定の母集団から抽出した各単語が、それぞれ基礎単語として登録されている。例えば、辞書などに登録された約19万語の単語が基礎単語として登録される。「文字列長」の項目は、基礎単語として予め登録された単語の文字列の長さを示すバイト数を記憶する領域である。「出現頻度」の項目は、所定の母集団での単語の出現回数を記憶する領域である。「符号長」の項目は、単語に割り当てた圧縮符号の長さを示すビット数を記憶する領域である。「静的コード」の項目は、単語に予め割り当てられた圧縮符号を記憶する領域である。「動的コード」の項目は、単語に動的に割り当てられた圧縮符号を記憶する領域である。「基本コード」の項目は、各基礎単語に一意に割り当てられる基本コードを記憶する領域である。「類語番号」の項目は、単語に類似語がある場合、単語が属する類似語の種類を示す類語番号を記憶する領域である。
ここで、本実施例では、静的辞書32に登録する基礎単語を、出現頻度が相対的に高い高頻度単語と、出現頻度が相対的に低い低頻度単語とに分けている。本実施例では、出現頻度の高い順に8000位までの基礎単語を高頻度単語とし、8001位以降の基礎単語を低頻度単語としている。高頻度単語については、短い圧縮符号を予め割り当てて、割り当てた圧縮符号を「静的コード」の項目に予め記憶させる。低頻度単語については、出現した際に圧縮符号を動的に割り当てて、割り当てた圧縮符号を「動的コード」の項目に予め記憶させる。すなわち、圧縮符号は、高頻度単語については予め登録され、低頻度単語については初期状態では未登録とされている。例えば、図7に示す静的辞書32では、単語「first」は、静的コードに圧縮符号「4123h」が登録とされていることから、高頻度単語であることを示す。また、例えば、単語「cavy」は、静的コードに圧縮符号が未登録であることから、低頻度単語であることを示す。また、単語「cavy」は、類似語を有するため、類語番号に「F00011h」が格納されている。また、例えば、単語「abject」は、静的コードに圧縮符号が未登録であることから、低頻度単語であることを示す。また、単語「abject」は、動的コードに圧縮符号「A003h」が登録済みであることから、圧縮符号を割り当て済みであることを示す。
図5に戻り、動的辞書33は、基礎単語に動的に割り当てられた圧縮符号を記憶する。図8は、動的辞書のデータ構造の一例を示す図である。図8の例のように、動的辞書33は、「基本コード」、「圧縮符号」の各項目を有する。
「基本コード」の項目は、動的辞書33に登録された単語の基本コードを記憶する領域である。「圧縮符号」の項目は、単語に動的に割り当てられた圧縮符号を記憶する領域である。図8の例では、図7に示した単語「abject」の基本コード「A0002Ch」と圧縮符号「A003h」が記憶されている。
図5に戻り、インデックス34は、各ファイルにおける単語の出現回数の情報を保持したデータである。例えば、インデックス34は、単語およびファイルに対応付けて、複数ビットのビット列が設けられ、単語およびファイルに対応付けて、ビット列に出現回数を記憶する。
図9は、インデックスのデータ構造の一例を示す図である。インデックス34には、高頻度単語がファイルに出現した回数を記憶する第1記憶領域34aと、低頻度単語がファイルに出現した回数を記憶する第2記憶領域34bとが設けられている。また、インデックス34には、出現した単語に関する類似語がファイルに出現した回数を記憶する第3記憶領域34cが設けられている。第1記憶領域34aおよび第2記憶領域34bには、単語の基本コードごとに、各ファイルのファイル番号に対応付けて、出現回数を記憶するための4ビットのビット列が設けられている。また、第3記憶領域34cには、類似番号ごとに、各ファイルのファイル番号に対応付けて、出現回数を記憶するための4ビットのビット列が設けられている。
第1記憶領域34aは、各高頻度単語が圧縮対象ファイル30に出現した回数か否かを記憶するため、予め設けられる。すなわち、第1記憶領域34aは、高頻度単語の分だけ記憶領域が予め確保される。例えば、図9の例では、第1記憶領域34aに、α個のファイルに、それぞれの高頻度単語が出現した回数を記憶するビット列のレコードが予め設けられている。第2記憶領域34bは、圧縮対象ファイル30に低頻度単語が出現した際に、出現した低頻度単語がファイルに出現した回数を記憶するビット列のレコードが追加で設けられる。すなわち、第2記憶領域34bは、圧縮対象ファイル30に新たな低頻度単語が出現するごとに、記憶領域が確保される。第3記憶領域34cは、類似語の種類ごとに、圧縮対象ファイル30に出現した出現回数を記憶するため、予め設けられる。すなわち、第3記憶領域34cは、類似語の種類の数だけ記憶領域が予め確保される。インデックス34には、ファイル番号のファイルに出現した単語の出現回数が記録される。
図5に戻り、圧縮ファイル35は、圧縮対象ファイル30を圧縮したデータである。
制御部21は、圧縮装置10を制御するデバイスである。制御部21としては、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路を採用できる。制御部21は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部21は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部21は、圧縮部40と、検索部50とを有する。
圧縮部40は、圧縮対象ファイル30から単語を抽出し、抽出した単語の単位に圧縮符号を対応させた圧縮ファイル35を生成する。圧縮部40は、抽出部41と、計数部42と、判定部43と、置換部44と、生成部45と、登録部46と、入替部47と、インデックス圧縮部48とを有する。以下、圧縮部40の各構成について詳細に説明する。
抽出部41は、圧縮対象ファイル30の単語単位に文字列の抽出を行う。例えば、抽出部41は、圧縮対象ファイル30から文字列を順に読み出し、読み出した文字列から単語を抽出する。例えば、英語ように、文章の単語がスペースなどの所定の区切り文字で区切られる場合、抽出部41は、圧縮対象ファイル30の文字列を読み出し、文字列中の区切り文字によって文字列を単語ごとに区切ることで、文字列から各単語を抽出する。一方、例えば、日本語ように、文章の単語が特定の区切り文字で区切られていない場合、抽出部41は、圧縮対象ファイル30の文字列の読み出を行う。そして、抽出部41は、読み出した文字列に形態素解析、構文解析など、文章の言語に応じた自然言語処理を行うことで、文字列から各単語を抽出する。
計数部42は、単語ごとの出現回数を計数する。例えば、計数部42は、圧縮対象ファイル30別に、抽出部41により抽出された単語ごとの出現回数を計数する。
判定部43は、抽出部41により抽出された単語に対して各種の判定を行う。例えば、判定部43は、抽出された単語が、高頻度単語、低頻度単語の何れかであるか判定する。例えば、判定部43は、抽出された単語を静的辞書32と照合し、該当するレコードの「静的コード」、「動的コード」の項目のデータを取得する。判定部43は、「静的コード」の項目に圧縮符号が格納されている場合、抽出された単語を高頻度単語と判定する。判定部43は、「静的コード」の項目に圧縮符号が格納されていない場合、抽出された単語を低頻度単語と判定する。判定部43は、抽出された単語が低頻度単語である場合、「動的コード」の項目のデータを確認する。判定部43は、「動的コード」の項目に圧縮符号が格納されている場合、抽出された単語が動的辞書33に登録済みの低頻度単語と判定する。一方、判定部43は、「動的コード」の項目に圧縮符号が格納されていない場合、抽出された単語が動的辞書33に未登録の低頻度単語と判定する。
置換部44は、抽出部41により抽出された単語を圧縮符号に置換する。例えば、置換部44は、抽出された単語に対応する圧縮符号が静的辞書32に登録されている場合、抽出された単語に対応する圧縮符号を特定する。例えば、置換部44は、抽出された単語が高頻度単語である場合、「静的コード」の項目に格納された圧縮符号を、単語に対応する圧縮符号と特定する。また、置換部44は、抽出された単語が動的辞書33に登録済みの低頻度単語である場合、「動的コード」の項目に格納された圧縮符号を、抽出された単語に対応する圧縮符号と特定する。そして、置換部44は、特定された単語に対応する圧縮符号を生成部45へ出力する。
一方、置換部44は、抽出された単語が動的辞書33に未登録の低頻度単語である場合、抽出された単語に新たな圧縮符号を割り当てる。例えば、置換部44は、所定の範囲で1ビットずつ増加させるなど、予め定められた割当規則に従い、抽出された単語に新規の圧縮符号を割り当てる。そして、置換部44は、抽出された単語を、割り当てられた圧縮符号に置換する。例えば、置換部44は、抽出された単語に対応して割り当てられた圧縮符号を生成部45へ出力する。また、置換部44は、抽出された単語の基本コードと、動的に割り当てた圧縮符号とを対応付けて動的辞書33に格納する。また、置換部44は、動的に割り当てた圧縮符号を静的辞書32の抽出された単語の「動的コード」の項目に格納する。
生成部45は、置換部44により置換された圧縮符号を用いて、圧縮対象ファイル30を圧縮した圧縮ファイル35を生成する。例えば、生成部45は、圧縮対象ファイル30から単語単位で読み出され、置換部44から出力された圧縮符号を順に圧縮ファイル35に順に格納する。そして、生成部45は、全単語の圧縮符号の格納後に、動的辞書33を圧縮ファイル35に格納して圧縮ファイル35を生成する。この圧縮ファイル35を復元する場合、低頻度単語については、圧縮ファイル35に含まれる動的辞書33に基づいて復元される。高頻度単語については、復元先に記憶された静的辞書32を用いて圧縮符号に対応する単語を求めて復元される。
登録部46は、計数部42により計数された各単語の出現回数をインデックス34に登録する。例えば、登録部46は、出現した単語ごとに、当該単語の出現回数を複数ビットで表現されたビット列を、当該単語および圧縮対象ファイル30のファイル番号に対応付けてインデックス34に登録する。また、登録部46は、出現した単語が含まれる類似語がある場合、単語を含んだ類似語の類語番号に出現回数を第3記憶領域34cに登録する。例えば、登録部46は、出現した単語に対して、静的辞書32に類語番号の項目に類語番号が格納されている場合、当該類語番号および圧縮対象ファイル30のファイル番号に対応付けて出現回数を第3記憶領域34cに登録する。
ここで、インデックス34に出現回数を登録する流れを説明する。図10は、インデックスに出現回数を登録する流れを概略的に示した図である。図10は、圧縮対象ファイル30に含まれる文章「first cavy was・・・」に含まれる単語の出現回数を登録する例が示されている。圧縮装置10は、圧縮対象ファイル30に含まれる文書から単語単位に、それぞれの単語を抽出する。図10の例では、「first」、「cavy」、「was」を抽出する。圧縮装置10は、単語ごとに出現回数を計数する。圧縮装置10は、取得した単語を静的辞書32と照合して単語が高頻度単語か、低頻度単語かを判定する。そして、圧縮装置10は、単語ごとに出現回数をインデックス34に登録する。例えば、圧縮装置10は、単語が高頻度単語である場合、単語の出現回数を第1記憶領域34aに登録し、単語が低頻度単語である場合、単語の出現回数を第2記憶領域34bに登録する。また、圧縮装置10は、単語が含まれる類似語がある場合、単語を含んだ類似語の類語番号に出現回数を第3記憶領域34cに登録する。
図5に戻り、入替部47は、各種の入れ替えを行う。例えば、入替部47は、インデックス34の単語およびファイルに対応付けて設けられた各ビット列ごとに、ビット列内の各ビットを入れ替えることにより、当該ビット列内の各ビットの並べ替えを行う。例えば、入替部47は、インデックス34の複数の単語間で異なる所定ビット数を用いて、ビット列の各ビットを回転させることでビットを並べ替える。例えば、入替部47は、インデックス34の各単語に対して順に、0〜3の中で順に回転ビット数を定める。そして、入替部47は、単語ごとに各ビットを当該ビット列内で回転ビット数だけローテーションさせてビットを並べ替える。
インデックス圧縮部48は、入替部47によりビットが並べ替えられたインデックス34を互いに異なる関数を用いて圧縮する。例えば、インデックス圧縮部48は、インデックス34の単語ごとの各ファイルのビット列が並んだ各ビット配列を、互いに異なる2つのハッシュ関数を用いて複数のビットを1つのビットに対応付けることにより、2つのビット配列に変換する。この結果、インデックス34は、データサイズが小さく圧縮される。
検索部50は、検索対象の文字列との類似度が高い圧縮対象のファイルを検索する。検索部50は、受付部51と、インデックス復元部52と、特定部53とを有する。以下、検索部50の各構成について詳細に説明する。
受付部51は、検索対象の文字列を受け付ける処理部である。受付部51は、検索対象の文字列を受け付ける入力インタフェースを提供しており、検索対象の文字列を受け付ける。
インデックス復元部52は、インデックス34を復元する。例えば、インデックス復元部52は、静的辞書32を参照して、検索対象の文字列に含まれる単語の基本コードを特定する。そして、インデックス復元部52は、インデックス34から、特定した基本コードに対応したビット配列X、Yを読み出す。インデックス復元部52は、ビット配列X、Yを用いてビット配列Aを復元する。例えば、インデックス復元部52は、ビット配列Aのビットごとに、ビット配列Xとビット配列Yの対応付けられたビットを確認する。インデックス復元部52は、対応付けられたビットがともに「1」の場合、「1」と復元し、対応付けられたビットがともに「1」ではない場合、「0」と復元する。インデックス復元部52は、復元したビット配列の各ビット列を圧縮時とは逆の並べ替えを行って、ビット列のビットの順序を復元する。例えば、インデックス34が各単語に対して順に、0〜3の中で順に回転ビット数を定めてローテーションされた場合、インデックス復元部52は、インデックス34内での単語の順番から回転ビット数を求める。そして、インデックス復元部52は、復元したビット配列の各ビット列を回転ビット数、逆にローテーションさせてビット列のビットの順序を復元する。
また、インデックス復元部52は、検索対象の文字列に含まれる単語が類似語を有する場合、静的辞書32を参照して、検索対象の文字列に含まれる単語の類語番号を特定する。インデックス復元部52は、インデックス34から、特定した類語番号に対応したビット配列X、Yを読み出し、ビット配列Aを復元する。そして、インデックス復元部52は、復元したビット配列の各ビット列を圧縮時とは逆に並べ替えて、ビット列のビットの順序を復元する。
特定部53は、検索対象の文字列と類似度の高い文字列を含んだファイルを特定する。特定部53は、インデックス34の復元されたビット配列に記憶された、検索対象の文字列に含まれる単語の出現回数および類似語の出現回数に基づいて、検索対象の文字列との類似度が高い圧縮対象のファイルを特定する。例えば、特定部53は、ファイルごとに、検索対象の文字列に含まれる単語の出現回数および類似語の出現回数を重み付け演算してスコアを算出する。例えば、特定部53は、単語が抽出された回数に対して大きい重み値を乗算し、類似語の出現回数に対して小さい重み値を乗算し、乗算結果を全て加算してスコアを算出する。このスコアは、単語が抽出された回数、類似語が抽出された回数が多いほど値が大きくなる。特定部53は、スコアに基づいて、検索対象の文字列と類似度の高い文字列を含んだファイルを特定する。例えば、特定部53は、スコアが上位所定位以上、あるいは、スコアが所定のしきい値以上のファイルを、類似度の高いファイルと特定する。特定部53は、特定したファイルを検索結果として出力する。なお、上記のスコアの算出方法は、一例であり、これに限定されるものではない。検索対象の文字列に含まれる単語の出現回数、類似語の出現回数が多いファイルほどスコアを高く算出できれば、何れの算出方法を用いてもよい。
このように、圧縮装置10は、インデックス34の出現回数が複数ビットで表現されたビット列をビット列内で並べ替えて、互いに異なる関数を用いて圧縮することにより、復元した際にノイズの発生を抑えてインデックス34を圧縮できる。また、圧縮装置10は、インデックス34を、単語ごとに、当該単語がファイルに含まれるかを記録したカウントマップ型のインデックスとしたことにより、圧縮されたファイル内を復元して検索することなく、類似度の高いファイルを速やかに検索できる。
[処理の流れ]
本実施例に係る圧縮装置10が実行する各種の処理について説明する。最初に、本実施例に係る圧縮装置10が圧縮対象ファイル30を符号化して圧縮する圧縮処理の流れについて説明する。図11は、圧縮処理の手順の一例を示すフローチャートである。この圧縮処理は、所定のタイミング、例えば、圧縮対象ファイル30を指定して圧縮開始を指示する所定操作が行われたタイミングで実行される。
図11に示すように、抽出部41は、圧縮対象ファイル30から文字列を順に読み出し、読み出した文字列から単語を抽出する(S10)。計数部42は、単語ごとの出現回数を計数する(S11)。判定部43は、抽出された単語を静的辞書32と照合して「静的コード」、「動的コード」の項目を取得する(S12)。
判定部43は、「静的コード」の項目に圧縮符号が格納されているか判定する(S13)。「静的コード」の項目に圧縮符号が格納されている場合(S13肯定)、置換部44は、抽出された単語を高頻度単語として、抽出された単語を、「静的コード」の項目に格納された圧縮符号に置換する(S14)。
一方、「静的コード」の項目に圧縮符号が格納されていない場合(S13否定)、判定部43は、「動的コード」の項目に圧縮符号が格納されているか判定する(S15)。「動的コード」の項目に圧縮符号が格納されていない場合(S15否定)、置換部44は、抽出された単語を動的辞書33に未登録の低頻度単語として、新規の圧縮符号を動的に割り当て、抽出された単語を、割り当てられた圧縮符号に置換する(S16)。また、置換部44は、抽出された単語の基本コードと、動的に割り当てた圧縮符号と対応付けて動的辞書33に格納する(S17)。また、置換部44は、動的に割り当てた圧縮符号を静的辞書32の抽出された単語の「動的コード」の項目に格納する(S18)。
一方、「動的コード」の項目に圧縮符号が格納されている場合(S15肯定)、置換部44は、抽出された単語を動的辞書33に登録済みの低頻度単語として、抽出された単語を、「動的コード」の項目に圧縮符号に置換する(S19)。
生成部45は、置換された圧縮符号を圧縮ファイル35に順に格納する(S20)。抽出部41は、圧縮対象ファイル30からテキストデータに対する全単語の抽出が完了したか否かを判定する(S21)。全単語の抽出が完了していない場合(S21否定)、上述のS10へ移行する。
一方、全単語の抽出が完了した場合(S21肯定)、登録部46は、計数された各単語の出現回数をインデックス34に登録する(S22)。例えば、登録部46は、出現した単語ごとに、当該単語の出現回数を複数ビットで表現されたビット列を、当該単語および圧縮対象ファイル30のファイル番号に対応付けてインデックス34に登録する。
入替部47は、インデックス34の単語およびファイルに対応付けて設けられた各ビット列の各ビットの並べ替えを行う(S23)。インデックス圧縮部48は、ビットが並べ替えられたインデックス34を互いに異なる関数を用いて圧縮し(S24)、処理を終了する。
[効果]
上述してきたように、本実施例に係る圧縮装置10は、圧縮対象ファイル30から単語を抽出する。圧縮装置10は、抽出された単語ごとに出現回数を計数する。圧縮装置10は、出現回数が複数ビットで表現されたビット列を、単語およびファイルに対応付けてインデックス34に登録する。圧縮装置10は、インデックス34に登録されたビット列に含まれるビットを当該ビット列内で並べ替える。圧縮装置10は、ビットが並べ替えられたインデックス34を互いに異なる関数を用いて圧縮する。これにより、圧縮装置10は、復元した際にノイズの発生を抑えてインデックス34を圧縮できる。
また、本実施例に係る圧縮装置10は、複数の単語間で異なる所定ビット数を用いて、ビット列の各ビットを回転させることでビットを並べ替える。これにより、圧縮装置10は、インデックス34のビット列のビットごとに「0」と「1」の頻度の偏りを抑制できる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、上記の実施例では、入替部47は、インデックス34の各単語に対して順に回転ビット数を定めて、ビット列を回転ビット数だけローテーションさせる場合について説明したが、これに限定されない。例えば、入替部47は、インデックス34のファイル番号に対して順に回転ビット数を定めて、ビット列を回転ビット数だけローテーションさせてもよい。例えば、入替部47は、インデックス34の各ファイル番号に対して順に、0〜3の中で順に回転ビット数を定め、ファイル番号ごとにビット例の各ビットをビット列内で回転ビット数だけローテーションさせてもよい。また、入替部47は、インデックス34の各単語とファイル番号に基づいて、回転ビット数を定めて、単語とファイル番号に対応するビット列を回転ビット数だけローテーションさせてもよい。また、入替部47は、回転ビット数を複数単語や複数ファイルごとに変えてもよい。また、入替部47は、回転ビット数を所定数の単語おきや、所定数のファイルおきなど、所定の間隔でビット列を並べ替えてもよい。すなわち、入替部47は、回転ビット数をインデックス34の複数のビット列に対して、異なる回転ビット数を設定できれば何れの設定規則を用いてもよい。
また、上記の実施例では、入替部47は、ビット列を回転ビット数だけローテーションさせる場合について説明したが、これに限定されない。例えば、入替部47は、ビット列内の各ビットを並べ替えるものであれば、何れの規則を用いてもよい。例えば、入替部47は、ビット例の4ビットを1ビット目→3ビット目→2ビット目→4ビット目→1ビット目と並べ替えてもよく、1ビット目→4ビット目→2ビット目→3ビット目→1ビット目と並べ替えてもよい。また、入替部47は、所定の規則で選択したビット例の一部または全部のビットの「0」と「1」を反転させる並べ替えを行ってもよい。例えば、入替部47は、所定数の単語おきや、所定数のファイルおきなど、所定の間隔でビット列を選択し、選択したビット例の一部または全部のビットを反転させる並べ替えを行ってもよい。
また、上記の実施例では、高頻度単語についてはインデックス34の第1記憶領域34aにビット配列を予め設け、低頻度単語については出現した順にインデックス34の第2記憶領域34bにビット配列を設ける場合について説明したが、これに限定されない。例えば、インデックス34は、各基礎単語のビット配列が予め設けられていてもよい。
例えば、上記の実施例では、類似語についてはインデックス34の第3記憶領域34cに類似番号ごとに、出現回数を記憶する場合について説明したが、これに限定されない。例えば、類似語については、類似語に含まれる各単語に出現回数を記憶してもよい。図12は、インデックスのデータ構造の他の一例を示す図である。インデックス34には、基礎単語の基本コードごとに、各ファイルのファイル番号に対応付けて、出現回数を記憶するための4ビットのビット列が設けられている。図12の例では、類似語に含まれる各単語には、連続した基本コードが付与されている。図12の例では、類似語である「mouse」、「rat」、「cavy」について連続した基本コードが付与されており、何れかが出現した際に類似語である他の単語にも出現回数が登録される。図12の例では、ファイル番号「1」のファイルに「cavy」が1回出現したことにより、「mouse」、「rat」、「cavy」に「0001」が登録されている。この場合、類似する単語は、出現回数が近い値になる。そこで、入替部47は、互いに類似する複数の単語間で異なる所定ビット数を用いて、ビット列の各ビットを回転させることでビットを並べ替える。例えば、入替部47は、インデックス34の各単語に対して順に、0〜3の中で順に回転ビット数を定め、単語ごとに各ビットを当該ビット列内で回転ビット数だけローテーションさせてビットを並べ替える。これにより、類似する複数の単語間で出現回数が近い値になり、ビット列のビットごとに「0」と「1」の偏りが発生する場合でも、ビットごとに「0」と「1」の頻度を平準化できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、圧縮部40の各処理部(抽出部41、計数部42、判定部43、置換部44、生成部45、登録部46、入替部47、インデックス圧縮部48)や、検索部50の各処理部(受付部51、インデックス復元部52、特定部53)が適宜統合されてもよい。また、圧縮部40および検索部50の各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[圧縮プログラム]
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。最初に、圧縮処理を行う圧縮プログラムについて説明する。図13は、圧縮プログラムを実行するコンピュータの一例を示す図である。
図13に示すように、コンピュータ400は、CPU(Central Processing Unit)410、HDD(Hard Disk Drive)420、RAM(Random Access Memory)440を有する。これら400〜440の各部は、バス500を介して接続される。
HDD420には上記抽出部41、計数部42、判定部43、置換部44、生成部45、登録部46、入替部47およびインデックス圧縮部48と同様の機能を発揮する圧縮プログラム420aが予め記憶される。尚、圧縮プログラム420aについては、適宜分離しても良い。
また、HDD420は、各種情報を記憶する。例えば、HDD420は、OSや圧縮に用いる各種データを記憶する。
そして、CPU410が、圧縮プログラム420aをHDD420から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、圧縮プログラム420aは、抽出部41、計数部42、判定部43、置換部44、生成部45、登録部46、入替部47およびインデックス圧縮部48と同様の動作を実行する。
尚、上記した圧縮プログラム420aについては、必ずしも最初からHDD420に記憶させることを要しない。
また、例えば、圧縮プログラム420aは、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に記憶させても良い。そして、コンピュータ400がこれらからプログラムを読み出して実行するようにしても良い。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ400に接続される「他のコンピュータ(又はサーバ)」などにプログラムを記憶させておく。そして、コンピュータ400がこれらからプログラムを読み出して実行するようにしても良い。
10 圧縮装置
20 記憶部
21 制御部
30 圧縮対象ファイル
31 類語データベース
32 静的辞書
33 動的辞書
34 インデックス
35 圧縮ファイル
40 圧縮部
41 抽出部
42 計数部
43 判定部
44 置換部
45 生成部
46 登録部
47 入替部
48 インデックス圧縮部
50 検索部
51 受付部
52 インデックス復元部
53 特定部

Claims (5)

  1. コンピュータに、
    処理対象のファイルから単語を抽出し、
    抽出された単語ごとに出現回数を計数し、
    前記出現回数が複数ビットで表現されたビット列を、単語およびファイルに対応付けてインデックスに登録し、
    単語およびファイルに対応付けて前記インデックスに登録された複数のビット列のうち、第1のビット列と第2のビット列に含まれるビットをそれぞれビット列内で異なる順に並び替え、
    前記ビットが並べ替えられたインデックスを互いに異なる関数を用いて圧縮する
    処理を実行させることを特徴とする圧縮プログラム。
  2. 前記並べ替える処理は、複数の単語間で異なる所定ビット数を用いて、前記ビット列の各ビットを回転させることでビットを並べ替える
    ことを特徴とする請求項1に記載の圧縮プログラム。
  3. 前記インデックスは、抽出された単語に類似する単語も登録されるものであり、
    前記並べ替える処理は、互いに類似する複数の単語間で異なる所定ビット数を用いて、前記ビット列の各ビットを回転させることでビットを並べ替える
    ことを特徴とする請求項1または2に記載の圧縮プログラム。
  4. コンピュータが、
    処理対象のファイルから単語を抽出し、
    抽出された単語ごとに出現回数を計数し、
    前記出現回数が複数ビットで表現されたビット列を、単語およびファイルに対応付けてインデックスに登録し、
    単語およびファイルに対応付けて前記インデックスに登録された複数のビット列のうち、第1のビット列と第2のビット列に含まれるビットをそれぞれビット列内で異なる順に並び替え、
    前記ビットが並べ替えられたインデックスを互いに異なる関数を用いて圧縮する
    処理を実行することを特徴とする圧縮方法。
  5. 処理対象のファイルから単語を抽出する抽出部と、
    前記抽出部により抽出された単語ごとに出現回数を計数する計数部と、
    前記計数部により計数された前記出現回数が複数ビットで表現されたビット列を、単語およびファイルに対応付けてインデックスに登録する登録部と、
    単語およびファイルに対応付けて前記インデックスに登録された複数のビット列のうち、第1のビット列と第2のビット列に含まれるビットをそれぞれビット列内で異なる順に並び替える入替部と、
    前記入替部により前記ビットが並べ替えられたインデックスを互いに異なる関数を用いて圧縮する圧縮部と
    を有することを特徴とする圧縮装置。
JP2017528061A 2015-07-14 2015-07-14 圧縮プログラム、圧縮方法および圧縮装置 Active JP6512294B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/070190 WO2017009958A1 (ja) 2015-07-14 2015-07-14 圧縮プログラム、圧縮方法および圧縮装置

Publications (2)

Publication Number Publication Date
JPWO2017009958A1 JPWO2017009958A1 (ja) 2018-04-26
JP6512294B2 true JP6512294B2 (ja) 2019-05-15

Family

ID=57758081

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017528061A Active JP6512294B2 (ja) 2015-07-14 2015-07-14 圧縮プログラム、圧縮方法および圧縮装置

Country Status (3)

Country Link
US (1) US10747725B2 (ja)
JP (1) JP6512294B2 (ja)
WO (1) WO2017009958A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6931442B2 (ja) * 2017-05-16 2021-09-08 富士通株式会社 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774588A (en) 1995-06-07 1998-06-30 United Parcel Service Of America, Inc. Method and system for comparing strings with entries of a lexicon
JP3639424B2 (ja) 1998-01-30 2005-04-20 三洋電機株式会社 アドレス発生回路
JPH11306203A (ja) * 1998-04-20 1999-11-05 Intec Inc インデックス作成方法及び文書検索処理方法
US6804767B1 (en) * 1999-11-26 2004-10-12 Hewlett-Packard Development Company, L.P. Method and system for automatic address table reshuffling in network multiplexers
DE60208012D1 (de) * 2002-07-03 2006-01-19 St Microelectronics Srl Verfahren, System und Computerprogram zur Kode-Kompression
US7756877B2 (en) 2006-08-04 2010-07-13 Apple Inc. Index compression
US8321485B2 (en) * 2006-11-08 2012-11-27 Hitachi, Ltd. Device and method for constructing inverted indexes
WO2010143573A1 (ja) * 2009-06-10 2010-12-16 公立大学法人大阪府立大学 物体認識用画像データベースの作成方法、作成装置および作成処理プログラム
JP2012038239A (ja) 2010-08-11 2012-02-23 Sony Corp 情報処理装置、情報処理方法、及び、プログラム
JP5605288B2 (ja) 2011-03-31 2014-10-15 富士通株式会社 出現マップ生成方法、ファイル抽出方法、出現マップ生成プログラム、ファイル抽出プログラム、出現マップ生成装置、およびファイル抽出装置
WO2013175537A1 (ja) 2012-05-24 2013-11-28 富士通株式会社 検索プログラム、検索方法、検索装置、記憶プログラム、記憶方法及び記憶装置

Also Published As

Publication number Publication date
WO2017009958A1 (ja) 2017-01-19
US10747725B2 (en) 2020-08-18
US20180129678A1 (en) 2018-05-10
JPWO2017009958A1 (ja) 2018-04-26

Similar Documents

Publication Publication Date Title
US9390098B2 (en) Fast approximation to optimal compression of digital data
TWI676903B (zh) 藉由從駐存在內容相關篩中之主要資料元件取得資料的資料之無損縮減
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
US20160006456A1 (en) Compression device, compression method, dictionary generation device, dictionary generation method, decompression device, decompression method, information processing system, and recording medium
US20160188623A1 (en) Scan optimization using bloom filter synopsis
JP6543922B2 (ja) インデックス生成プログラム
JP5812188B2 (ja) プログラム、圧縮データ生成方法、伸張方法、情報処理装置、および記録媒体
US9509333B2 (en) Compression device, compression method, decompression device, decompression method, information processing system, and recording medium
TW201640832A (zh) 利用預先霍夫曼編碼決定對匹配字串或背向指標執行霍夫曼編碼程序之硬體資料壓縮器
CN108475508B (zh) 音频数据和保存在块处理存储系统中的数据的简化
US9137336B1 (en) Data compression techniques
US20220277139A1 (en) Computer-readable recording medium, encoding device, index generating device, search device, encoding method, index generating method, and search method
US9397696B2 (en) Compression method, compression device, and computer-readable recording medium
US9965448B2 (en) Encoding method and information processing device
US9628110B2 (en) Computer-readable recording medium, encoding apparatus, encoding method, comparison apparatus, and comparison method
JP6507682B2 (ja) 符号化プログラム、符号化方法および符号化装置
JP6512294B2 (ja) 圧縮プログラム、圧縮方法および圧縮装置
US9219497B2 (en) Compression device, compression method, and recording medium
JP6645013B2 (ja) 符号化プログラム、符号化方法、符号化装置および伸長方法
US20160226516A1 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
US8463759B2 (en) Method and system for compressing data
JP2016170750A (ja) データ管理プログラム、情報処理装置およびデータ管理方法
KR20190139227A (ko) K-부정합 검색을 위한 필터를 생성하는 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190325

R150 Certificate of patent or registration of utility model

Ref document number: 6512294

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150