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

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

Info

Publication number
JP2016046602A
JP2016046602A JP2014167895A JP2014167895A JP2016046602A JP 2016046602 A JP2016046602 A JP 2016046602A JP 2014167895 A JP2014167895 A JP 2014167895A JP 2014167895 A JP2014167895 A JP 2014167895A JP 2016046602 A JP2016046602 A JP 2016046602A
Authority
JP
Japan
Prior art keywords
code
character string
compression
numerical
compressed
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
JP2014167895A
Other languages
English (en)
Other versions
JP6476647B2 (ja
Inventor
片岡 正弘
Masahiro Kataoka
正弘 片岡
東 秀人
Hideto Azuma
秀人 東
崇記 小澤
Takaki Ozawa
崇記 小澤
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 JP2014167895A priority Critical patent/JP6476647B2/ja
Priority to US14/804,392 priority patent/US9496891B2/en
Publication of JP2016046602A publication Critical patent/JP2016046602A/ja
Application granted granted Critical
Publication of JP6476647B2 publication Critical patent/JP6476647B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】数値文字列を圧縮する場合の圧縮率を向上させる。
【解決手段】ファイルリード部111は、対象ファイルを読みだして、単語および数値文字列を抽出する。圧縮符号付与部112は、ビットフィルタ121において抽出した数値文字列に圧縮符号が対応付けられてない場合、ビットフィルタ121から数値文字列に対応する単語コードを取得する。圧縮符号付与部112は、動的辞書122への登録順に付与される圧縮符号を動的辞書122に登録する。圧縮符号付与部112は、ビットフィルタ121に動的辞書122に登録した圧縮符号を登録する。ファイルライト部113は、対象ファイルに含まれる単語または数値文字列を圧縮符号に変換し、圧縮ファイルに出力する。
【選択図】図6

Description

本発明は、圧縮プログラムおよび伸長プログラム等に関する。
圧縮対象のテキストファイルから数値を抽出し、抽出した数値を数字単位で圧縮する技術が存在する。かかる技術では、0〜9までの各数字に圧縮符号を割り当て、圧縮対象のテキストファイルから抽出した数値に含まれる各数字を圧縮符号に変換する。さらに、変換された圧縮符号に、例えば全角または半角の指定、カンマの有無、小数点の有無、有効桁数等の数値に関する情報を表す符号を付加することで数値を圧縮符号に変換する。
国際公開第2008/047432号 特開2013−150041号公報 特開平05−174064号公報
しかしながら、数値を数字単位で圧縮すると、桁数分の数字に対応した圧縮符号が必要となり、数値全体の圧縮符号が長くなるため、圧縮率が低下する場合がある。
一つの側面では、数値を圧縮する場合の圧縮率を向上させる圧縮プログラムおよび伸長プログラム等を提供することを目的とする。
第1の案では、圧縮プログラムは、コンピュータに、入力されたデータから、数値を示す、少なくとも1つの数字を含む数値文字列を抽出する。圧縮プログラムは、コンピュータに、数値文字列と圧縮符号とを対応付けて記憶する辞書を参照し、抽出された数値文字列に対応する圧縮符号に変換する処理を実行させる。
本発明の1実施態様によれば、圧縮処理時に数値に割り当てる符号長を短くできるという効果を奏する。
図1は、実施例1の数値の圧縮処理を説明するための図である。 図2は、実施例1の圧縮処理の全体の流れについて説明するための図である。 図3Aは、参考例1の符号長を説明するための図である。 図3Bは、実施例1の符号長を説明するための図である。 図4は、参考例1および実施例1の符号長の比較を説明するための図である。 図5は、情報処理装置のシステム構成の例を説明するための図である。 図6は、実施例1の圧縮処理に係るシステム構成の例を示す図である。 図7は、ビットフィルタの数値部の第1の例を示す図である。 図8は、数値文字列に割り当てられる単語コードのデータ構造の例を示す図である。 図9は、ビットフィルタの単語部の例を示す図である。 図10は、動的辞書の一例を示す図である。 図11は、ビットフィルタの数値部の第2の例を示す図である。 図12は、実施例1の圧縮処理の流れの例を示す図である。 図13は、実施例2の圧縮処理に係るシステム構成の例を示す図である。 図14は、ビットマップ型全文インデックスの一例を示す図である。 図15は、実施例2の圧縮処理の流れを示す図である。 図16は、実施例3の大小比較処理に係るシステム構成の一例を示す図である。 図17は、圧縮ファイル選択の処理の流れの例を示す第1の図である。 図18は、圧縮ファイル選択の処理の流れの例を示す第2の図である。 図19は、伸長辞書の構造を説明するための図である。 図20は、数値文字列の大小比較を説明するための図である。 図21は、実施例3の大小比較処理の全体の流れを示す図である。 図22は、実施例3の圧縮ファイル選択処理の流れを示す図である。 図23は、実施例3の数値文字列の単語コード抽出処理の流れを示す図である。 図24は、実施例1〜3の情報処理装置のハードウェア構成を示す図である。 図25は、コンピュータで動作するプログラムの構成例を示す図である。 図26は、実施形態のシステムにおける装置の構成例を示す図である。
以下に、本願の開示する圧縮プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの権利範囲が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
(実施例1の圧縮処理)
図1を用いて、実施例1の情報処理装置100による圧縮処理について説明する。図1は、実施例1の数値の圧縮処理を説明するための図である。図1の例のように、情報処理装置100は、圧縮処理の対象である対象ファイル10に含まれる「He pays 1,200 yen ・・・」を「He」「pays」「1,200」「yen」のように数値または単語ごとに区切り、各数値または各単語を取得する。以下、1以上の数字を有する数値を数値文字列と呼ぶ。数値文字列は、数字以外にプラス・マイナス、カンマおよび小数点等の符号を含んでもよい。情報処理装置100は、取得した単語のうち数値文字列「1,200」を抽出してビットフィルタの数値部121aに出力する。ビットフィルタの数値部121aは、各数値文字列に対して単語コードと、圧縮符号とを対応付ける辞書である。ビットフィルタの数値部121aは、それぞれの数値文字列に対応する単語コード11があらかじめ登録されている。例えば、ビットフィルタの数値部121aには、整数「0」「1」「2」「3」「4」…に対応する単語コード「B00000h」「B00010h」「B00020h」「B00030h」「B00040h」…が順番にあらかじめ登録されている。ビットフィルタの数値部121aのデータ構造に関する詳細は後述する。
なお、数値文字列以外の「He」「pays」「yen」等の単語は、後述するようにビットフィルタの単語部121bに出力される。また、以降、ビットフィルタの数値部121aをビットフィルタ121aと表記する場合があり、ビットフィルタの単語部121bをビットフィルタ121bと表記する。ビットフィルタ121aおよびビットフィルタ121bの詳細は後述する。
次いで、情報処理装置100は、ビットフィルタ121aから数値文字列「1,200」に対応する単語コード「B04B01h」を取得する。次いで、情報処理装置100は、取得した単語コード「B04B01h」と、動的辞書122に登録した順に動的に付される圧縮符号「A005h」とを対応づけて動的辞書122に登録する。なお、圧縮符号単語コード「B04B01h」および「A005h」等の末尾に示す「h」は、16進数で表記されていることを示す符号である。
次いで、情報処理装置100は、動的辞書122において動的に付された圧縮符号「A005h」を、数値文字列「1,200」および単語コード「B04B01h」に対応づけてビットフィルタ121aに登録する。そして、情報処理装置100は、ビットフィルタ121aを基にして数値文字列「1,200」に対応する圧縮符号「A005h」を取得し、圧縮ファイル12に出力する。
また、情報処理装置100は、次回、対象ファイル10に数値文字列「1,200」が出現した場合、既にビットフィルタ121aに登録されている圧縮符号「A005h」を取得し、圧縮ファイル12に出力する。
図2を用いて実施例1の圧縮処理全体の流れについて説明する。図2は、実施例1の圧縮処理の全体の流れについて説明するための図である。図2の例のように、情報処理装置100は、対象ファイル10から単語または数値文字列を抽出する。例えば、情報処理装置100は、対象ファイル10から単語「pays」を抽出した場合、単語「pays」を符号化部1Aに格納する。情報処理装置100は、ビットフィルタ(単語部)121bから「pays」の圧縮符号を取得し、記憶領域1Bに格納する。
一方、情報処理装置100は、対象ファイルから数値文字列「1,200」を抽出した場合、数値文字列「1,200」を符号化部2Aに格納する。情報処理装置100は、ビットフィルタ(数値部)121aから数値文字列「1,200」の圧縮符号を取得し、記憶領域2Bに格納する。情報処理装置100は、記憶領域1Bおよび記憶領域2Bに格納した圧縮符号を圧縮ファイル12に出力する。
このように、情報処理装置100は、対象ファイル10から単語を抽出した場合はビットフィルタ121bを用いて単語を圧縮符号に変換し、数値文字列を抽出した場合はビットフィルタ121aを用いて数値文字列を圧縮符号に変換する。
(参考例1および実施例1の比較)
上述したように実施例1では、数値文字列全体を一つの単位として圧縮する。一方、参考例1では、数値文字列に含まれる個々の数字を一つの単位として圧縮するものとする。参考例1のように数値文字列を数字単位で圧縮すると、ヘッダ、カンマの有無、小数点の有無等の付加情報を圧縮符号に加えることになる。また、参考例1では、数値文字列が大きくなると数値文字列の桁数に比例して圧縮符号の符号長が長くなる。これに対して、実施例1のように数値文字列単位で圧縮すれば、数値の桁数に関係なく、固定長の圧縮符号が付与され、参考例1と比べて安定して圧縮符号の符号長を短くすることができる。
また、実施例1では、情報処理装置100は、カンマの有無や小数点の有無等によって、同じ大きさの数値文字列に異なる圧縮符号を付与してもよい。例えば、情報処理装置100は、カンマが付与されていない「1200」と、カンマが付与された「1,200」とで異なる圧縮符号を付与してもよい。
図3A、図3Bおよび図4を用いて、参考例1および実施例1で割り当てられる符号長の比較を説明する。図3Aは、参考例1の符号長を説明するための図である。図3Aの例のように、数値文字列1α「1,200」を参考例1のように数字単位で圧縮する場合、圧縮符号1βは情報部と数字部とを有する。情報部は、6ビットのヘッダ情報、1ビットのカンマの有無情報、6ビットの有効桁数情報を有する。一方、数字部は、数値文字列の各桁に圧縮符号が割り当てられ、6ビット×数値文字列の桁数がビット数となる。例えば、数値文字列が4桁の場合、数字部のビット数が24ビットとなる。したがって、圧縮符号1βの符号長は、数値文字列が4桁の場合、情報部と数値部を合わせると37ビットとなる。
図3Bは、実施例1の符号長を説明するための図である。実施例1に係る情報処理装置100は、例えば、対象ファイルから数値文字列を抽出し、抽出した数値文字列に対して16ビットの圧縮符号を割当てる。すなわち、情報処理装置100は、対象のファイルから抽出した数値文字列に対し、抽出した順番に16ビットの圧縮符号「A000h」「A001h」「A002h」「A003h」…を割当てる。
実施例1においては、対象のファイルから抽出した数値文字列が圧縮符号の符号長が16ビットの固定長となる。このため、実施例1に係る情報処理装置100は、参考例1と比べて安定して短い符号長の圧縮符号を割当てることができる。
例えば、図3Bの例のように、数値文字列1α「1,200」を実施例1のように数値単位で圧縮する場合、情報処理装置100は、数値文字列1α「1,200」に圧縮符号2βとして16ビットの固定長の圧縮符号「1010000000000101」(A005h)を付与する。
図4は、参考例1および実施例1の符号長の比較を説明するための図である。表1γは、数値文字列の桁数に対応する符号長を示す図である。例えば、圧縮する数値文字列が1桁の場合に、実施例1のように数値文字列単位で圧縮すると符号長が16ビットとなり、参考例1のように数字単位で圧縮すると、情報部が13ビットで数字部が6ビットとなり符号長が全体で19ビットとなる。例えば、圧縮する数値文字列が3桁の場合に、実施例1のように数値文字列単位で圧縮すると符号長が16ビットとなり、参考例1のように数字単位で圧縮すると、情報部が13ビットで数字部が18ビットとなり符号長が全体で31ビットとなる。また、数値文字列が5桁の場合に、数値文字列単位で圧縮すると符号長が16ビットとなり、数字文字列単位で圧縮すると符号長が43ビットとなる。なお、参考例1において数字1桁に割り当てられる符号長は6ビットであるものとする。
このように、参考例1のように数字単位で圧縮する場合、ヘッダ情報等を有する情報部がある分、圧縮符号の符号長が長くなる。また、数値文字列の桁数が大きくなると、各桁に所定長の圧縮符号が割り当てられ、さらに圧縮符号全体の符号長が長くなる。これに対して、実施例1のように数値文字列単位で圧縮する場合、例えば、対象ファイルに出現した順番に昇順に16ビットの固定長の圧縮符号を割当てるので、数値の桁数に関係なく数値文字列に割当てる符号長を安定して短く設定することができる。
(実施例1の圧縮処理に関する処理部の構成)
図5を用いて、情報処理装置100の圧縮部と記憶部との関係について説明する。図5は、情報処理装置のシステム構成の例を説明するための図である。図5の例に示すように、情報処理装置100の記憶部120は、圧縮部110と処理部150とに接続される。記憶部120は例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリなどの半導体メモリ素子、ハードディスクや光ディスクなどの記憶装置に対応する。
また、情報処理装置100は、圧縮部110と、処理部150とを有する。圧縮部110および処理部150の機能は例えば、CPU(Central Processing Unit)が所定のプログラムを実行することで実現することができる。また、圧縮部110および処理部150の機能は例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路により実現することができる。
圧縮部110は、入力されたデータから、数値を示す、少なくとも1つの数字を含む数値文字列を抽出する。圧縮部110は、数値文字列と圧縮符号とを対応付けて記憶する辞書を参照し、抽出された数値文字列に対応する圧縮符号に変換する。
辞書は、所定の複数の数値文字列を予め記憶する第1の辞書と、第1の辞書に登録されている数値文字列を記憶する第2の辞書とである。圧縮部110は、抽出された数値文字列が、第1の辞書に登録されており、かつ、該数値文字列に対応する圧縮符号が第1の辞書に登録されていない場合、該数値文字列に圧縮符号を付与して第1の辞書における該数値文字列に対応付けて該圧縮符号を登録する。なお、第1の辞書は、例えば、ビットフィルタであり、第2辞書は、例えば、動的辞書である。
第1の辞書は、抽出され得る数値文字列とともに、数値の大きさの順番に応じて割り当てられるコードがさらに対応付けて記憶された辞書である。
図6を用いて、実施例1の圧縮処理に係るシステム構成について説明する。図6は、実施例1の圧縮処理に係るシステム構成の一例を示す図である。図6の例に示されるように、情報処理装置100は、圧縮部110と、記憶部120とを有する。圧縮部110は、ファイルリード部111、圧縮符号付与部112およびファイルライト部113を有する。記憶部120は、ビットフィルタ121および動的辞書122を有する。ビットフィルタ121は、数値部121aおよび単語部121bを有する。以下、実施例1の圧縮部110および記憶部120の構成について詳細に説明する。
(記憶部の各構成)
ビットフィルタの数値部121aについて説明する。ビットフィルタ121aは、数値文字列に単語コードおよび圧縮符号を対応付けた辞書である。図7は、ビットフィルタの数値部の第1の例を示す図である。図7の例のように、ビットフィルタ121aは、2グラムと、ビットマップと、数値文字列と、文字列長と、単語コードと、登録番号と、圧縮符号とを対応付ける。「2グラム」は、各単語に含まれる連数字である。例えば「115」は、「11」「15」に対応する2グラムを有する。
「ビットマップ」は、2グラムの文字列に対応するビットマップを表す。例えば、「115」は、数値文字列へのポインタによって、2グラム「11」のビットマップ「0_1_0_0_0」と、2グラム「15」のビットマップ「0_0_1_0_0」とに対応付けられる。例えば、情報処理装置100は、対象ファイルから「115」を取得した場合に、2グラム「11」のビットマップ「0_1_0_0_0」と、2グラム「15」のビットマップ「0_0_1_0_0」とを用いて数値文字列「115」にアクセスする。
「数値文字列」は、ビットフィルタ121aに登録された数値文字列である。「数値文字列」は、「0」「1」「2」…「100」「101」…「999」「1000」…のように数値文字列が連番で登録される。また、「数値文字列」は、3桁ごとにカンマ「,」を有する数値文字列を含んでもよい。例えば、図4の例のようにビットフィルタ121aは、カンマを有する文字列として「1,000」「1,001」「1,002」…を有する。なお、「数値文字列」は、負の値や小数点以下の値を有してもよい。「文字列長」は、各数値文字列の桁数である。
「単語コード」は、各数値文字列に割り当てるコードである。「単語コード」は、数値の大きさの順に、昇順に割当てられる。例えば、「単語コード」は、昇順に列挙された数値文字列「0」「1」「2」「3」「4」…に対して、単語コード「B00000h」「B00010h」「B00020h」「B00030h」…を昇順にそれぞれ割り当てられる。なお、6桁の16進数で表される単語コードの末尾1桁は、半角/全角の別、カンマの有無、小数点の有無、正の値/負の値の別などを示す情報ビットである。単語コードの下2桁以上の領域が数値文字列に対応する。このように、各数値文字列に対して昇順に数値文字列の単語コードを割当てることで、各数値文字列に対して、数値文字列の大きさに応じた単語コードが割り当てられる。
また、「単語コード」は、ビットフィルタ121aがカンマ、負の値、小数点以下の値を有する数値文字列を含む場合、それぞれに別々の単語コードが割り当てられる。例えば、図7の例のように、「1000」に対して単語コード「B03E80h」が付され、「1,000」に対して単語コード「B03E81h」が割り当てられる。なお、図7の例では、各項目のデータがレコードとして関連づけられて記憶されている例を示したが、上記説明において互いに関連づけられた項目どうしの関係が保たれれば、データは他の記憶のされ方をしても構わない。後述する図9〜11に示されるビットフィルタおよび動的辞書に関しても同様である。また、「登録番号」「圧縮符号」に関する詳細は後述する。
各数値文字列に割り当てられる単語コードの例に関して説明する。図8は、数値文字列に割り当てられる単語コードのデータ構造の例を示す図である。ビットフィルタ121aにおいて、あらかじめ各数値文字列に対して、3バイト、4バイトまたは5バイトの単語コードが割り当てられる。図8の例には、3バイト、4バイトおよび5バイトの単語コードのコード体系が示される。
図8の例のように、単語コードc1は、3バイトコードで「B0000h〜B3FFFh」までのコード領域を有する。単語コードc1は、c1−1領域、c1−2領域およびc1−3領域を有する。c1−1領域は、3バイトコードであることを示す「101100」の固定ビットを有する。c1−2領域は、0から16,383までの整数に対応するビットを有する。c1−3の「****」は、半角/全角の別、カンマの有無、小数点の有無、正の値/負の値の別などを示す情報ビットである。例えば、c1−3の最後の1ビットが「0」の場合、数値文字列にカンマが含まれないことを示し、c1−3の最後の1ビットが「1」の場合、数値文字列にカンマが含まれることを示す。c2−3およびc3−3においても同様である。
単語コードc2は、4バイトコードで「B400000h〜B7FFFFFh」までのコード領域を有する。単語コードc2は、c2−1領域、c2−2領域およびc2−3領域を有する。c2−1領域は、4バイトコードであることを示す「101101」の固定ビットを有する。c2−2領域は、16,384から1,048,575までの整数に対応するビットを有する。c2−3の「****」は、c1−3と同様に情報ビットである。単語コードc3は、5バイトコードで「B800000h〜BBFFFFFh」までのコード領域を有する。c3−1領域は、5バイトコードであることを示す「101001」の固定ビットを有する。c3−2領域は、1,048,576から1,073,741,823までの整数に対応するビットを有する。c3−3の「****」は、c1−3と同様に情報ビットである。なお、3バイトコード、4バイトコード、5バイトコードは、整数以外に小数点を有する数値、負の数値、カンマを有する数値等を含んでもよい。
次に、ビットフィルタ121の単語部121bについて説明する。ビットフィルタ121の単語部121bは、基礎単語に単語コードおよび圧縮符号を対応付けた辞書である。図9は、ビットフィルタの単語部の例を示す図である。図9の例のように、ビットフィルタ121bは、2グラムと、ビットマップと、基礎単語と、文字列長と、出現頻度と、圧縮符号と、単語コードと、登録番号とを対応付ける。「2グラム」「ビットマップ」に関しては、ビットフィルタ121aと同じであるので説明を省略する。「基礎単語」は、ビットフィルタ121bに登録された単語である。例えば、「基礎単語」とは、辞典、テキスト群等からあらかじめ抽出された約19万語の単語である。なお、「基礎単語」として登録される単語数は、任意の語数でよい。
「文字列長」は、基礎単語の文字列の長さである。「出現頻度」は、頻度集計用のテキストファイル群において各基礎単語が出現した回数である。ここで、頻度集計用のテキストファイル群とは、対象ファイルとは別に用意された各基礎単語の出現頻度を集計するための1以上のテキストファイルである。
基礎単語の出現頻度の集計について説明する。情報処理装置100は、頻度集計用のテキストファイルを読込み、頻度集計用のテキストファイル群に存在する単語を適宜抽出してビットフィルタ121bに登録する。さらに、情報処理装置100は、ビットフィルタ121bに登録された各々の基礎単語に関し、頻度集計用のテキストファイル群において出現した回数を出現頻度としてカウントする。例えば、図9の例において、ビットフィルタ121bは、基礎単語「able」が、頻度集計用のテキストファイル群において「785」回出現したことを示す。
「圧縮符号」は、各基礎単語に割り当てられた圧縮符号である。情報処理装置100は、出現頻度が高い基礎単語に対してより短い符号長を有する圧縮符号を割り当てる。「単語コード」は、各単語に割り当てるコードである。「登録番号」は、後述する動的辞書122に圧縮符号が登録された際に、圧縮符号に一意に付される番号である。「登録番号」は、例えば、動的辞書122に登録された順番を示す。
次に、動的辞書122について説明する。動的辞書122は、単語コードと、単語コードに付与された圧縮符号とを対応付ける辞書である。図10は、動的辞書の一例を示す図である。図10の例のように、動的辞書122は、圧縮符号とコードとを対応付ける。「コード」は、ビットフィルタ121aまたはビットフィルタ121bで取得された単語コードである。「圧縮符号」は、例えば動的辞書122に単語コードが登録された順番に単語コードに昇順に付与される固定長の圧縮符号である。
例えば、情報処理装置100が、対象ファイルから「order」「box」「1000」「him」…の順番に単語および数値文字列を抽出した場合、各々の単語および数値文字列の単語コードに対して、圧縮符号「A000h」「A001h」「A002h」「A003h」…を割当てる。そして、情報処理装置100は、各々の単語および数値文字列に対して割り当てた圧縮符号を動的辞書122に登録する。例えば、情報処理装置100は、オフセット「0x0000h」の位置に圧縮符号「A000h」と「order」の単語コードとを対応付ける。また、情報処理装置100は、オフセット「0x0001h」の位置に圧縮符号「A001h」と「box」の単語コードとを対応付ける。また、情報処理装置100は、オフセット「0x0002h」の位置に圧縮符号「A002h」と「1000」の単語コードとを対応付ける。なお、図10において「c(単語)」の表記は、カッコ内の数値文字列または単語に対応する単語コードを表す。例えば、「c(order)」は、「order」の単語コードを表す。
(圧縮部の各構成)
圧縮部110の各構成について説明する。ファイルリード部111は、対象ファイルを読みだして、対象ファイルから単語および数値文字列を抽出する処理部である。ファイルリード部111は、対象ファイルの文字列中の空白文字によって文字列を単語または数値文字列ごとに区切り、対象ファイルから各単語および各数値文字列を抽出する。ファイルリード部111は、抽出した単語および数値文字列を圧縮符号付与部112に出力する。
圧縮符号付与部112は、対象ファイルから抽出された単語および数値文字列に圧縮符号を付与する処理部である。圧縮符号付与部112は、ファイルリード部111から数値文字列を受け付けると、ビットフィルタ121aに登録されている「数値文字列」にアクセスする。
圧縮符号付与部112は、アクセスした「数値文字列」に対応する圧縮符号がビットフィルタ121aに既に登録されていた場合、ビットフィルタ121aから数値文字列に対応する圧縮符号を取得してファイルライト部113に出力する。
一方、圧縮符号付与部112は、アクセスした数値文字列に対応する圧縮符号がビットフィルタ121aに登録されていない場合、ビットフィルタ121aから数値文字列に対応する単語コードを取得する。次いで、圧縮符号付与部112は、ビットフィルタ121aから取得した単語コードを、動的辞書122への登録順に付与される圧縮符号に対応付けて動的辞書122に登録する。
図10を用いて、動的辞書122への圧縮符号の登録の具体例について説明する。図10の例のように圧縮符号付与部112は、3番目に登録された「1000」の単語コードに圧縮符号「A002h」を対応づけて動的辞書122に登録する。また、圧縮符号付与部112は、6番目に登録された「1,200」の単語コードに圧縮符号「A005h」を対応づけて動的辞書122に登録する。このように、圧縮符号付与部112は、各数値文字列の単語コードに対して動的辞書122へ登録された順番に対応する圧縮符号を付与し、数値文字列の単語コードと、付与された圧縮符号とを対応付けて動的辞書122に登録する。
次いで、圧縮符号付与部112は、動的辞書122に登録した圧縮符号を、単語コードに対応付けてビットフィルタ121aに登録する。さらに、圧縮符号付与部112は、登録した圧縮符号に登録番号を付与し、登録番号を圧縮符号に対応付けて動的辞書122に登録する。なお、登録番号とは、動的辞書122に登録された順番を表す番号である。
図11を用いて、登録番号および圧縮符号が登録された後のビットフィルタ121aの具体例について説明する。図11は、ビットフィルタの数値部の第2の例を示す図である。図11の例のように、ビットフィルタ121aに登録番号および圧縮符号が登録される。ビットフィルタ121aにおいて、「登録番号」は、単語コードが動的辞書122に登録された順番を表す番号である。「圧縮符号」は、数値文字列に対応する圧縮符号である。例えば、ビットフィルタ121aにおいて数値文字列「115」に対応する登録番号「15」は、数値文字列「115」に係る圧縮符号「A017」が15番目に動的辞書122に登録されたことを表す。ビットフィルタ121aには、数値文字列「115」に付与された圧縮符号「A017h」が登録される。また、ビットフィルタ121aにおいて数値文字列「121」に対応する登録番号「12」は、数値文字列「121」に係る圧縮符号「A00E」が12番目に動的辞書122に登録されたことを表す。ビットフィルタ121aには、数値文字列「121」に付与された圧縮符号「A00Eh」が登録される。
そして、圧縮符号付与部112は、ビットフィルタ121aに登録した圧縮符号をファイルライト部113に出力する。
ファイルライト部113は、圧縮符号付与部122から出力された圧縮符号を基に圧縮ファイルを生成する処理部である。ファイルライト部113は、例えば圧縮符号付与部122から出力された数値文字列または単語の各圧縮符号を、それぞれバッファに格納して圧縮データを生成する。ファイルライト部113は、バッファに生成された圧縮データを基に圧縮ファイルを生成する。
(実施例1の圧縮処理の流れ)
次に、実施例1の圧縮処理の流れについて説明する。図12は、実施例1の圧縮処理の流れを説明するための図である。図12の例のように、情報処理装置100は、前処理をおこなう(ステップS10)。例えば、情報処理装置100は、前処理においてビットフィルタ121を保持する領域や、動的辞書122を作成する作業領域を確保する。ファイルリード部111は、対象ファイルを読み出し(ステップS11)、対象ファイルから数値文字列を抽出する(ステップS12)。
圧縮符号付与部112は、対象ファイルから抽出された数値文字列に対応する圧縮符号がビットフィルタ121aに登録されているか否かを判定する(ステップS13)。圧縮符号付与部112は、ビットフィルタ121aに圧縮符号が登録されている場合(ステップS13Yes)、ステップS18の処理に移行する。
一方、圧縮符号付与部112は、ビットフィルタ121aに圧縮符号が登録されていない場合(ステップS13No)、ビットフィルタ121aから単語コードを取得する(ステップS14)。次いで、圧縮符号付与部112は、ビットフィルタ121aから取得した単語コードと、動的辞書122に単語コードを登録する順に付与される圧縮符号とを対応付けて動的辞書122に登録する(ステップS15)。例えば、圧縮符号付与部112は、単語コードが動的辞書122に登録される順番に、単語コードに圧縮符号「A000h」「A001h」「A002h」「A003h」「A004h」「A005h」・・・を付与する。圧縮符号付与部112は、動的辞書122から登録された圧縮符号を取得する(ステップS16)。次いで、圧縮符号付与部112は、動的辞書122から取得された圧縮符号を、単語コードに対応づけてビットフィルタ121aに登録する(ステップS17)。
圧縮符号付与部112は、ビットフィルタ121aから数値文字列に対応する圧縮符号を取得する(ステップS18)。ファイルライト部113は、ビットフィルタ121aから取得された圧縮符号を圧縮ファイルに書き込む(ステップS19)。
ファイルリード部111は、ファイルの読み出し位置がファイルの終端であるか否かを判定する(ステップS20)。ファイルリード部111は、読み出し位置がファイルの終端である場合(ステップS20Yes)、処理を終了させる。一方、ファイルリード部111は、読み出し位置がファイルの途中である場合(ステップS20No)、ステップS11の処理に戻る。
以上のように実施例1の情報処理装置100は、対象ファイルに含まれる各数値文字列に圧縮符号を割り当てるので圧縮処理時に数値文字列に割り当てる符号長を短くできる。
(実施例1の効果)
圧縮部110は、入力されたデータから、数値を示す、少なくとも1つの数字を含む数値文字列を抽出する。圧縮部110は、数値文字列と圧縮符号とを対応付けて記憶する辞書を参照し、抽出された数値文字列に対応する圧縮符号に変換する。これにより、圧縮処理時に数値文字列に割り当てる符号長を短くできる。
辞書は、所定の複数の数値文字列を予め記憶する第1の辞書と、第1の辞書に登録されている数値文字列を記憶する第2の辞書とである。圧縮部110は、抽出された数値文字列が、第1の辞書に登録されており、かつ、該数値文字列に対応する圧縮符号が第1の辞書に登録されていない場合、該数値文字列に圧縮符号を付与して第1の辞書における該数値文字列に対応付けて該圧縮符号を登録する。これにより、入力された数値にだけ動的に圧縮符号を付与しつつ圧縮することができ、抽出され得るすべての数値に予め圧縮符号を割当てる場合に比較して、圧縮符号の長さを短くすることができる。
第1の辞書は、抽出され得る数値文字列とともに、数値の大きさの順番に応じて割り当てられるコードがさらに対応付けて記憶された辞書である。これにより、コードの状態で数値の大きさを比較できる。
図13を用いて、実施例2の圧縮処理に係るシステム構成について説明する。図13は、実施例2の圧縮処理に係るシステム構成の例を示す図である。図13の例に示されるように、情報処理装置200は、圧縮部210と、記憶部220とを有する。圧縮部210は、ファイルリード部211、圧縮符号付与部212およびファイルライト部213を有する。記憶部220は、ビットフィルタ221、動的辞書222およびビットマップ型全文インデックス223を有する。ビットフィルタ221は、数値部221aおよび単語部221bを有する。なお、実施例1と同じ構成に関しては、番号の下2桁を同一にして適宜説明を省略する。
圧縮部210は、抽出する処理で数値文字列が抽出された際に、複数の圧縮ファイルのうち数値文字列が含まれる圧縮ファイルを示す情報ビット列を数値文字列ごとに対応付けて保持するインデックスを更新する。以下、実施例2の圧縮部210および記憶部220の構成について詳細に説明する。
実施例2の情報処理装置200は、記憶部220がビットマップ型全文インデックス223を有する点で、実施例1の情報処理装置100と異なる。図14を用いてビットマップ型全文インデックス223のデータ構造について説明する。図14は、ビットマップ型全文インデックスの一例を示す図である。図14の例のように、ビットマップ型全文インデックス223は、静的単語および動的単語に係る圧縮付号ごとにビットマップを対応付ける。ビットマップとは、静的単語および動的単語がいずれの圧縮ファイルに含まれるかを表す符号ビット列である。ビットマップの各ビットが、各圧縮ファイルに静的単語または動的単語が含まれているか否かを表す。
ビットマップ型全文インデックス223は、例えば、8000種類の静的単語ごと、および24000種類の動的単語ごとにビットマップを対応付ける。静的単語とは、出現頻度集計用のテキストファイル群において各単語の出現頻度を集計した場合に、出現頻度の高い単語を表す。例えば、静的単語は、頻度集計用のテキストファイル群での出現頻度が上位8000位までの単語である。また、動的単語とは、頻度集計用のテキストファイル群での出現頻度の順位が8000位未満であって、対象ファイルから抽出された数値文字列または単語である。
例えば、ビットマップ型全文インデックス223の有効行1行目は、圧縮符号「0001h」に対応する「a」のビットマップが「1011110110…」となっている。ビットマップ型全文インデックスの有効行1行目のビットマップは、「a」の圧縮符号が含まれるファイルを表す。ビットマップ「1011110110…」は、1ビット目に「1」が格納されているのでファイル1に「a」が含まれ、2ビット目に「0」が格納されているのでファイル2に「a」が含まれず、3ビット目に「1」が格納されているのでファイル3に「a」が含まれることを表す。また、ビットマップ「1011110110…」は、4ビット目に「1」が格納されているのでファイル4に「a」が含まれ、5ビット目に「1」が格納されているのでファイル5に「a」が含まれていることを表す。なお、ビットマップ「1011110110…」は、ファイル6以降の他の各ファイルに「a」が含まれるか否かについても表す。
次に、ビットマップ型全文インデックス223の更新について説明する。ファイルライト部213は、圧縮符号付与部212から受け付けた圧縮符号がビットマップ型全文インデックス223に登録されているか否かを判定する。ファイルライト部213は、ビットマップ型全文インデックス223に、受け付けた圧縮符号に対応するビットマップが登録されている場合、受け付けた圧縮符号に対応するビットマップを参照する。ファイルライト部213は、参照したビットマップのうち、対象ファイルに対応するビットが「0」の場合、ビットを「1」に更新する。なお、ファイルライト部213は、対象ファイルに対応するビットが「1」の場合、ビットマップを更新しない。
一方、ファイルライト部213は、受け付けた圧縮符号に対応するビットマップがビットマップ型全文インデックス223に、登録されていない場合、ビットマップ型全文インデックス223に新しくビットマップを登録する。
具体的には、ファイルライト部213は、圧縮符号付与部212が対象ファイル中の単語または数値文字列を動的辞書222に登録した場合に、単語または数値文字列に付与された圧縮符号を取得する。かかる場合において、ファイルライト部213は、取得した圧縮符号に係るビットマップをビットマップ型全文インデックス223に登録する。このビットマップには、対象ファイルの数分のビット「0」が含まれる。さらに、ファイルライト部213は、登録したビットマップのビットのうち、対象ファイルに対応するビットを「1」に更新する。すなわち、ファイルライト部213は、対象ファイルにおいて初出の単語または数値文字列を動的辞書222に登録した際に、ビットマップ型全文インデックス223に登録された単語または数値文字列に対応するビットマップを登録する。このようにしてビットマップ型全文インデックス223を生成する。
(実施例2の圧縮処理の流れ)
次に、実施例2の圧縮処理の流れについて説明する。図15は、実施例2の圧縮処理の流れを説明するための図である。図15の例のように、情報処理装置200は、前処理をおこなう(ステップS30)。例えば、情報処理装置200は、前処理としてビットマップ型全文インデックス223を生成するための作業領域を確保する。ファイルリード部211は、対象ファイルを読み出し(ステップS31)、対象ファイルから数値文字列を抽出する(ステップS32)。
圧縮符号付与部212は、ビットフィルタ221aに、対象ファイルから抽出した数値文字列に対応する圧縮符号が登録されている場合(ステップS33Yes)、ステップS38の処理に移行する。
一方、圧縮符号付与部212は、ビットフィルタ221aに、対象ファイルから抽出した数値文字列に対応する圧縮符号が登録されていない場合(ステップS33No)、ビットフィルタ221aから数値文字列の単語コードを取得する(ステップS34)。圧縮符号付与部212は、取得した単語コードと、動的辞書222へ登録する順番に付与される圧縮符号とを対応付けて動的辞書222に登録する(ステップS35)。圧縮符号付与部212は、動的辞書222に登録された圧縮符号を取得する(ステップS36)。圧縮符号付与部212は、動的辞書222から取得した圧縮符号をビットフィルタ221aに登録する(ステップS37)。圧縮符号付与部212は、ビットフィルタ221aから圧縮符号を取得する(ステップS38)。
ファイルライト部213は、圧縮符号付与部212が取得した圧縮符号を基にしてビットマップ型全文インデックス223を更新する(ステップS39)。例えば、ファイルライト部213は、ビットマップ型全文インデックス223に圧縮符号に対応するビットマップが登録されている場合、ビットマップに含まれるビットのうち、対象ファイルに対応するビットを「1」に更新する。一方、ファイルライト部213は、ビットマップ型全文インデックス223に圧縮符号に対応するビットマップが登録されていない場合、ビットマップ型全文インデックス223に新しく圧縮符号に対応するビットマップを登録する。
ファイルライト部213は、圧縮符号付与部212が取得した圧縮符号を圧縮ファイルに書き込む(ステップS40)。
ファイルリード部211は、ファイルの読み出し位置がファイルの終端であるか否かを判定する(ステップS41)。ファイルリード部211は、読み出し位置がファイルの終端である場合(ステップS41Yes)、処理を終了させる。一方、ファイルリード部211は、読み出し位置がファイルの途中である場合(ステップS41No)、ステップS31の処理に戻る。
以上のように実施例2の情報処理装置200は、ファイル圧縮を行う際にビットマップ型全文インデックス223を生成する。これにより、情報処理装置200は、複数の圧縮ファイルを基に数値文字列検索をおこなう際に、検索対象の数値文字列を有するファイルを特定でき、オープンする圧縮ファイルを絞り込むことができるので数値文字列検索を高速化することができる。
(実施例2の効果)
圧縮部210は、抽出する処理で数値文字列が抽出された際に、複数の圧縮ファイルのうち数値文字列が含まれる圧縮ファイルを示す情報ビット列を数値文字列ごとに対応付けて保持するインデックスを更新する。これにより、複数の圧縮ファイルを基に数値文字列検索をおこなう際に、検索対象の数値文字列を有するファイルを特定でき、オープンする圧縮ファイルを絞り込むことができるので数値文字列検索を高速化することができる。
数値を数字単位で圧縮された状態で大小比較が可能となるように圧縮すると、出現頻度の高い0、1等と、出現頻度の低い8、9等を同等の長さの符号長で圧縮する必要があり、出現頻度が低い数字に短い符号を割当てることになるから、圧縮ファイル全体として圧縮率が低下する。
例えば、0〜9までの各数字に対して4ビットの符号長を割当てる場合、出現頻度が「0.0625」の文字又は単語と同等の符号長が割当てられることになり、出現頻度の低い8、9等の数字が、出現頻度の高い文字または単語と同等に取り扱われる。このため、他の文字または単語に係る圧縮符号の領域が狭められ、他の文字又は単語に割当てる符号長が長く補正されることになるので、圧縮ファイル全体として圧縮率が低下するという問題がある。
図16を用いて、実施例3の大小比較処理に係るシステム構成について説明する。図16は、実施例3の大小比較処理に係るシステム構成の一例を示す図である。図16の例に示されるように、情報処理装置300は、処理部330と、記憶部320とを有する。処理部330は、検索範囲受付部331、ファイル選択部332、伸長辞書生成部333、ファイルリード部334、比較部335およびファイルライト部336を有する。記憶部320は、ビットマップ型全文インデックス323および伸長辞書324を有する。
記憶部320は例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子、ハードディスクや光ディスクなどの記憶装置に対応する。また、処理部330の機能は例えば、CPUが所定のプログラムを実行することで実現することができる。また、処理部330の機能は例えば、ASICやFPGAなどの集積回路により実現することができる。ビットマップ型全文インデックス323のデータ構造に関しては、実施例1または実施例2と同じであるので説明を省略する。
処理部330は、数値を示す、少なくとも1つの数字を含む数値文字列とともに数値の大きさの順番に応じて割り当てられるコードと圧縮符号とを対応付けて記憶する辞書を用いて、圧縮ファイルから抽出した圧縮符号をコードに変換する。処理部330は、変換したコードと、数値文字列の検索範囲に対応する1以上のコードとを比較することで、変換したコードが検索範囲内に含まれるか否かを判定する。処理部330は、検索範囲内に含まれると判定した場合に、変換したコードを数値文字列に伸長して表示する。
また、処理部330は、各数値文字列を含む圧縮ファイルに関する情報を有するインデックスを用いて、検索範囲内の数値文字列を含む圧縮ファイルを特定する。以下、実施例3の処理部330および記憶部320の構成について詳細に説明する。
検索範囲受付部331は、ユーザによって入力された数値文字列検索の範囲を受け付ける処理部である。検索範囲受付部331は、例えば、入力用フォーマットに入力された検索範囲の最大値および最小値を取得することで数値文字列検索の範囲を受け付ける。検索範囲とは、指定された最大値および最小値に属する数値文字列の範囲である。検索範囲受付部331は、受け付けた最大値および最小値を検索範囲としてファイル選択部332および比較部335に出力する。
ファイル選択部332は、ビットマップ型全文インデックス323を用いて、検索範囲内の数値文字列を有する圧縮ファイルを選択する処理部である。ファイル選択部332は、ビットマップ型全文インデックス323から、検索範囲内の圧縮符号に対応する1以上のビットマップを抽出する。次いで、ファイル選択部332は、抽出した1以上のビットマップ同士でor演算することで選択結果マップを生成する。選択結果マップとは、検索範囲内の数値文字列を1つ以上含む圧縮ファイルを示すビットマップである。ファイル選択部332は、選択結果マップをファイルリード部334に出力する。
次に、図17を用いて選択結果マップを生成する処理の流れを説明する。図17は、圧縮ファイル選択の処理の流れの例を示す第1の図である。図17の例には、ビットマップ型全文インデックス323の動的単語に対応する部分が示される。図17の例のように、ファイル選択部332は、例えば検索範囲が110〜125であった場合、検索範囲内に属する「115」のビットマップと、「121」のビットマップとを抽出する。次いで、ファイル選択部332は、「115」のビットマップ「1011011000…」と、「121」のビットマップ「1001010101…」とでor演算を行い、選択結果マップ「1011011101…」を生成する。ファイル選択部332によって生成された選択結果マップ「1011011101…」は、数値文字列「115」および「121」のいずれか一方または両方を含むそれぞれの圧縮ファイルを示す。
なお、ビットマップ型全文インデックス323に、検索範囲内に属するビットマップが3以上のある場合、ファイル選択部332は、各ビットマップに対してor演算を実行して選択結果マップを生成する。例えば、ファイル選択部332は、検索範囲内にビットマップA、ビットマップB、ビットマップCが属する場合、条件式(A or B) or Cを算出することで、選択結果マップを生成する。
なお、ファイル選択部332は、ビットマップ型全文インデックス323のうち検索範囲内に該当するビットマップを特定する際に、後述する大小比較の方法を用いてもよい。
次に、図18を用いて圧縮ファイルを選択する処理の流れを説明する。図18は、圧縮ファイル選択の処理の流れの例を示す第2の図である。図18の例のように、帳票フォルダ51には、複数の圧縮ファイル52a、52b、52c等が含まれる。ファイル選択部332は、選択結果マップ50が「1011011101…」となっているので、帳票フォルダ51に含まれるファイルのうち、1番目の圧縮ファイル52aと3番目の圧縮ファイル52cとをオープンする。なお、ファイル選択部332は、他にも4番目、6〜8番目、10番目のファイルをオープンする。ファイル選択部332によってオープンされた圧縮ファイル52aには、例えば検索範囲110〜125に属する数値文字列に係る圧縮符号として「115(円)」に係る圧縮符号が格納されている。
伸長辞書生成部333は、伸長辞書324を生成する処理部である。伸長辞書生成部333は、圧縮ファイルに含まれる圧縮データに基づいて伸長辞書324を生成する。図19は、伸長辞書の構造を説明するための図である。図19の例のように、伸長辞書324は根324aと、枝324b(1)〜324b(4)、葉324c(1)〜324c(4)を有する。
枝324b(1)〜324b(4)は、それぞれ324c(1)〜324c(4)に格納された数値文字列に対応する圧縮符号が含まれる。情報処理装置300は、例えば、圧縮ファイルから圧縮符号を読み込んだ際に、読み込んだ圧縮符号と、枝324b(1)〜324b(4)に含まれる圧縮符号とを比較することで、読み込んだ圧縮符号に対応する葉324cを特定する。
葉324c(1)〜324c(4)に対応する葉の構造体は、例えば葉の構造体324Cに表される。葉の構造体324Cは、葉識別情報、圧縮符号長、文字コードまたは数値テーブルへのポインタ等を有する。「葉識別情報」は、葉を一意に識別する情報である。「圧縮符号長」は、後述するファイルリード部334によって取得された圧縮データのビット列のうち、有効な長さを示す情報である。例えば、各数値文字列には、16ビットの固定長符号が割り当てられるので、数値文字列に対応する圧縮符号長には、「16」ビットが格納される。「文字コード」は、例えばアスキーコード等の文字コードを示す。「数値テーブルへのポインタ」は、複数の数値文字列の単語コードを格納する数値テーブルにおいて、取得された圧縮符号に対応する数値文字列の単語コードが格納されている位置を示すポインタである。なお、葉の構造体324Cには、文字コードまたは数値テーブルへのポインタのいずれか一方を有する。
数値テーブル324dについて説明する。数値テーブル324dは、ビットフィルタ121においてそれぞれの数値文字列に割り当てられた全ての単語コードを有する。例えば、数値テーブル324dは、「110」の単語コード324d(1)「B006E0h」、「115」の単語コード324d(2)「B00730h」、「125」の単語コード324d(3)「B007D0h」を有する。葉324c(1)〜324c(4)はそれぞれ、数値テーブルへのポインタによって数値テーブル324dに含まれる数値文字列の単語コードに対応付けられる。例えば、数値文字列「110」に対応する葉の構造体324Cに係る数値テーブルのポインタには、領域324d(1)の先頭アドレスに対応するオフセットが格納されている。また、数値文字列「115」に対応する葉の構造体324Cに係る数値テーブルのポインタには、領域324d(2)の先頭アドレスに対応するオフセットが格納されている。
ファイルリード部334は、圧縮ファイルを読み込む処理部である。ファイルリード部334は、圧縮ファイルから圧縮符号を取得する。ファイルリード部334は、圧縮ファイルから取得した圧縮符号を伸長辞書324と照らし合わせる。すなわち、ファイルリード部334は、圧縮ファイルから取得した圧縮符号と、葉324c(1)〜324c(4)とを比較し、圧縮ファイルから取得した圧縮符号に対応する葉の構造体324Cを特定する。ファイルリード部334は、圧縮符号に対応する葉の構造体324Cにアクセスする。ファイルリード部334は、アクセスした葉の構造体324Cに数値テーブルへのポインタが含まれる場合、数値テーブルへのポインタに基づいて数値テーブル324dから単語コードを取得する。
例えば、ファイルリード部334は、取得した圧縮符号「1010000000010111」が枝324b(1)にヒットする場合、葉324c(1)にアクセスする。ファイルリード部334は、葉324c(1)の葉の構造体324Cに数値テーブルへのポインタが格納されていた場合、数値テーブルへのポインタを取得する。ファイルリード部334は、数値テーブルへのポインタに基づいて、数値テーブル324d内の領域324d(2)の物理アドレスを特定する。ファイルリード部334は、領域324d(2)から数値文字列「115」に対応する単語コード「B00730h」を取得する。そして、ファイルリード部334は、取得した数値文字列「115」に対応する単語コード「B00730h」を比較部335に出力する。
比較部335は、検索範囲に対応する単語コードと、ファイルリード部334によって取得された各単語コードとを比較する処理部である。比較部335は、検索範囲の最大値と最小値とに対応する単語コードを取得する。比較部335は、伸長辞書324から検索範囲の最大値と最小値とに対応する単語コードを取得してもよい。次いで、ファイルリード部334は、圧縮ファイルを読込み、適宜、圧縮ファイルから数値文字列の単語コードを取得し、取得した数値文字列の単語コードを比較部335に出力する。比較部335は、検索範囲の最大値と最小値とに対応する単語コードと、ファイルリード部334によって取得された単語コードとを比較する。比較部335は、ファイルリード部334によって取得された単語コードが検索範囲内に該当するか否かを判定する。そして、比較部335は、比較対象の数値文字列が検索範囲内であると判定した場合に、比較対象の数値文字列に対応する単語コードをファイルライト部336に出力する。
ここで、数値文字列に割り当てられる単語コードについて説明する。図8の例を用いて説明したように、0から16,383までの整数に対して3バイトの単語コードが割り当てられ、16,384から1,048,575までの整数に対して4バイトの単語コードが割り当てられる。さらに、1,048,576から1,073,741,823までの整数に対して5バイトの単語コードが割り当てられる。図8の例に示すc1−3、c2−3およびc3−3は、半角/全角の別、カンマの有無、小数点の有無、正の値/負の値の別などを示す情報ビットである。すなわち、単語コードの末尾4ビットが情報ビットに該当する。
例えば、整数「0」「1」「2」「3」「4」「5」…に対して、それぞれ3バイトの単語コード「B00000h」「B00010h」「B00020h」「B00030h」「B00040h」…が割り当てられる。すなわち、若い整数から順番に単語コードを割当てる場合、各整数に対して「B00000h」から昇順に単語コードが割り当てられる。これにより、単語コードの状態で数値文字列同士を大小比較することができる。例えば、比較部335は、整数「1」に割当てられた単語コード「B00010h」と、整数「3」に割当てられた単語コード「B00030h」とを比較することで、整数「3」の方が大きいと判定することができる。
半角/全角の別、カンマの有無等の表記形式の異なる数値文字列同士の比較について説明する。例えば、数値文字列「1200」には、単語コード「B04B00h」が割当てられ、数値文字列「1,200」には、単語コード「B04B01h」が割当てられ、それぞれ異なる単語コードが割当てられるが、これらは同じ大きさの数値文字列である。比較部335は、表記形式の異なる数値文字列に係る単語コード同士を比較するためにマスク処理を実行する。
マスク処理の具体例について説明する。比較部335は、数値文字列「1200」の単語コード「B04B00h」と数値文字列「1,200」の単語コード「B04B01h」とを比較する場合、それぞれの単語コードにマスク処理用のビット列を乗算する。すなわち、比較部335は、数値文字列「1200」の単語コード(2進数)「1011 0000 0100 1011 0000 0000」に対して、マスク処理用のビット列「1111 1111 1111 1111 1111 0000」を乗算し、ビット列「1011 0000 0100 1011 0000 0000」を取得する。また、比較部335は、数値文字列「1,200」の単語コード(2進数)「1011 0000 0100 1011 0000 0001」に対して、マスク処理用のビット列「1111 1111 1111 1111 1111 0000」を乗算し、ビット列「1011 0000 0100 1011 0000 0000」を取得する。そして、比較部335は、取得したビット列同士を比較し、数値文字列「1200」の単語コード「B04B00h」と数値文字列「1,200」の単語コード「B04B01h」とが等しいと判定する。
このように、比較部335は、比較対象の各数値文字列に対し、末尾4ビットが「0」となっているマスク処理用のビット列を乗算することで、表記形式の異なる数値文字列に係る単語コード同士を比較することができる。
図20を用いて、比較部335でなされる大小比較処理の具体例について説明する。図20は、数値文字列の大小比較を説明するための図である。表D1は、検索範囲の最大値および最小値に対応する単語コードを表す。一方、表D2は、比較対象の数値文字列に対応する単語コードを表す。なお、比較対象の数値文字列とは、ファイルリード部334によって圧縮ファイルから取得された圧縮符号に係る各単語コードである。
比較部335は、検索範囲の最小値「110」に対応する単語コード「B006E0h」と、比較対象の数値文字列「115」に対応する単語コード「B00730h」とを比較する。比較部335は、16進数で表記される単語コードを2進数に置き換える。すなわち、比較部335は、検索範囲の最小値「110」に対応する単語コード「B006E0h」を、「1011」「0000」「0000」「0110」「1111」「0000」に置き換える。また、比較部335は、比較対象の数値文字列「115」に対応する単語コード「B00730h」を、「1011」「0000」「0000」「0111」「0011」「0000」に置き換える。そして、比較部335は、2進数に置き換えられた単語コードを4ビット毎に比較し、比較対象の数値文字列「115」が検索範囲の最小値よりも大きいと判定する。
比較部335は、検索範囲の最大値「125」に対応する単語コード「B007D0h」と、比較対象の数値文字列「115」に対応する単語コード「B00730h」とを比較する。比較部335は、検索範囲の最大値「125」に対応する単語コード「B007D0h」を、「1011」「0000」「0000」「1000」「0010」「0000」に置き換える。そして、比較部335は、2進数に置き換えられた4ビット毎に比較し、比較対象の数値文字列「115」が検索範囲の最大値よりも小さいと判定する。
比較部335は、比較対象の数値文字列が検索範囲の最小値よりも大きく、検索範囲の最大値よりも小さいので、比較対象の数値文字列が検索範囲内に含まれると判定する。次いで、比較部335は、比較対象の数値文字列「115」に対応する単語コード「B00730h」をファイルライト部336に出力する。
ファイルライト部336は、検索範囲内の数値文字列の単語コードを数値文字列に変換し、検索結果として出力する処理部である。ファイルライト部336は、比較部335から出力された単語コード「B00730h」を数値文字列「115」に変換して、所定の形式でモニタ、プリンタ等の出力媒体に表示する。例えば、ファイルライト部336は、数値文字列「115」と共に、数値文字列「115」が含まれるファイル名、数値文字列「115」が含まれるページ数および行数を出力媒体に表示する。
(実施例3の大小比較処理の全体の流れ)
次に、実施例3の大小比較処理の全体の流れについて説明する。図21は、実施例3の大小比較処理の全体の流れを示す図である。図21の例のように、情報処理装置300は、前処理をおこなう(ステップS50)。例えば、情報処理装置300は、前処理として大小比較処理を行うための作業領域を確保する。ファイル選択部332は、ビットマップ型全文インデックス323の情報に基づいてオープンする圧縮ファイルを選択する(ステップS51)。比較部335は、ファイル選択部332によって選択された圧縮ファイルから検索範囲内に含まれる単語コードを抽出する(ステップS52)。ファイルライト部336は、検索範囲内に含まれる各単語コードをそれぞれ数値文字列に変換し、変換された各数値文字列を所定の形式で表示媒体に出力することで比較結果を表示する(ステップS53)。なお、表示媒体は、例えば、モニタ、プリンタ等である。
(実施例3の圧縮ファイル選択処理の流れ)
次に、実施例3の圧縮ファイル選択処理の流れについて説明する。図22は、実施例3の圧縮ファイル選択処理の流れを示す図である。図22に示される処理は、ステップS51に対応する。図22の例のように、情報処理装置100は、前処理をおこなう(ステップS60)。例えば、情報処理装置100は、前処理として選択結果マップを生成するための作業領域を確保する。
ファイル選択部332は、検索範囲受付部331が受け付けた検索範囲の最大値および最小値に対応する単語コードを取得する(ステップS61)。ファイル選択部332は、取得した検索範囲の最大値および最小値に対応する単語コードに基づいて、検索範囲内に属するビットマップをビットマップ型全文インデックス323から抽出する(ステップS62)。ファイル選択部332は、ビットマップ型全文インデックス323から抽出した複数のビットマップ間でOR演算をおこなうことで選択結果マップを生成する(ステップS63)。ファイル選択部332は、生成された選択結果マップに基づいてオープンする圧縮ファイルを選択する。
(実施例3の数値文字列の単語コード抽出処理の流れ)
次に、実施例3の数値文字列の単語コード抽出処理の流れについて説明する。図23は、実施例3の数値文字列の単語コード抽出処理の流れを示す図である。図23に示される処理は、ステップS52に対応する。図23の例のように、情報処理装置300は、前処理をおこなう(ステップS70)。例えば、情報処理装置300は、前処理として、伸長辞書324を記憶するための領域や大小比較処理を行うための作業領域を確保する。
伸長辞書生成部333は、伸長辞書を生成する(ステップS71)。比較部335は、検索範囲の最大値および最小値に対応する数値文字列の単語コードを取得する(ステップS72)。例えば、比較部335は、伸長辞書324から検索範囲の最大値および最小値に対応する数値文字列の単語コードを取得する。ファイルリード部334は、選択結果マップに基づいて選択された圧縮ファイルを読み出す(ステップS73)。ファイルリード部334は、選択された圧縮ファイルから順次16ビットの数値文字列に係る圧縮符号を取得する(ステップS74)。比較部335は、圧縮ファイルから取得した圧縮符号に対応する数値文字列の単語コードを伸長辞書324から取得する(ステップS75)。
比較部335は、数値文字列の単語コードが検索範囲内に該当するか否かを判定する(ステップS76)。比較部335は、数値文字列の単語コードが検索範囲内に該当する場合(ステップS76Yes)、数値文字列の単語コードを伸長文字(数値文字列)に変換し(ステップS77)、比較結果として伸長文字をモニタ等の表示媒体に出力する(ステップS78)。一方、比較部335は、数値文字列の単語コードが検索範囲内に該当しない場合(ステップS76No)、ステップS79の処理に移行する。
ファイルリード部334は、ファイルの終端まで至ったか否かを判定する(ステップS79)。ファイルリード部334は、ファイルの終端まで至った場合(ステップS79Yes)、処理を終了させる。一方、ファイルリード部334は、ファイルの途中である場合(ステップS79No)、ステップS74の処理に戻る。
(実施例3の効果)
処理部330は、数値を示す、少なくとも1つの数字を含む数値文字列とともに数値の大きさの順番に応じて割り当てられるコードと圧縮符号とを対応付けて記憶する辞書を用いて、圧縮ファイルから抽出した圧縮符号をコードに変換する。処理部330は、変換したコードと、数値文字列の検索範囲に対応する1以上のコードとを比較することで、変換したコードが検索範囲内に含まれるか否かを判定する。処理部330は、検索範囲内に含まれると判定した場合に、変換したコードを数値文字列に伸長して表示する。これにより、処理部330は、全ての単語コードを数値文字列に伸長しなくても、検索範囲に含まれる単語コードのみを数値文字列に伸長すればよいので、数値文字列の検索を高速化できる。
処理部330は、各数値文字列を含む圧縮ファイルに関する情報を有するインデックスを用いて、検索範囲内の数値文字列を含む圧縮ファイルを特定する。これにより、検索範囲内の数値文字列を有する圧縮ファイルを特定し、オープンする圧縮ファイルを絞り込むので、複数の圧縮ファイルがある場合でも数値文字列検索を高速化できる。
(実施例1〜3に関連する他の態様)
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
また、圧縮処理の対象は、ファイル内のデータ以外にも、システムから出力される監視メッセージなどでもよい。例えば、バッファに順次格納される監視メッセージを上述の圧縮処理により圧縮し、ログファイルとして格納するなどの処理が行なわれる。また、例えば、データベース内のページ単位に圧縮が行なわれてもよいし、複数のページをまとめた単位で圧縮が行なわれてもよい。
また、実施例1に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(情報処理装置のハードウェア構成)
図24は、実施例1〜3の情報処理装置のハードウェア構成を示す図である。図24の例が示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータ入力を受け付ける入力装置402と、モニタ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る媒体読取装置404と、他の装置と接続するためのインターフェース装置405と、他の装置と無線により接続するための無線通信装置406とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM407と、ハードディスク装置408とを有する。また、各装置401〜408は、バス409に接続される。
ハードディスク装置408には、例えば図6に示したファイルリード部111、圧縮符号付与部112およびファイルライト部113の各処理部と同様の機能を有する情報処理プログラムが記憶される。さらに、ハードディスク装置408には、ファイルリード部111、圧縮符号付与部112およびファイルライト部113の各処理部と同様の機能を有する情報処理プログラムが記憶される。また、ハードディスク装置408には、情報処理プログラムを実現するための各種データが記憶される。
CPU401は、ハードディスク装置408に記憶された各プログラムを読み出して、RAM407に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ400を、例えば図6に示したファイルリード部111、圧縮符号付与部112およびファイルライト部113として機能させることができる。さらに、これらのプログラムは、コンピュータ400を、ファイルリード部111、圧縮符号付与部112およびファイルライト部113として機能させることができる。
なお、上記の情報処理プログラムは、必ずしもハードディスク装置408に記憶されている必要はない。例えば、コンピュータ400が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ400が読み出して実行するようにしてもよい。コンピュータ400が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ400がこれらからプログラムを読み出して実行するようにしてもよい。
図25は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ400において、図24に示すハードウェア群26(401〜409)の制御を行なうOS(オペレーティング・システム)27が動作する。OS27に従った手順でCPU401が動作して、ハードウェア群26の制御・管理が行なわれることにより、アプリケーションプログラム29やミドルウェア28に従った処理がハードウェア群26で実行される。さらに、コンピュータ400において、ミドルウェア28またはアプリケーションプログラム29が、RAM407に読み出されてCPU401により実行される。
CPU401により圧縮機能が呼び出された場合、ミドルウェア28またはアプリケーションプログラム29の少なくとも一部に基づく処理を行なうことで、(それらの処理をOS27に基づいてハードウェア群26を制御して)圧縮部110の機能が実現される。圧縮機能は、それぞれアプリケーションプログラム29自体に含まれてもよいし、アプリケーションプログラム29に従って呼び出されることで実行されるミドルウェア28の一部であってもよい。
アプリケーションプログラム29(またはミドルウェア28)の圧縮機能により得られる圧縮ファイルは、部分的に伸張することも可能である。圧縮ファイルの途中を伸張する場合には、伸張対象の部分までの圧縮データの伸張処理が抑制されるため、CPU401の負荷が抑制される。また、伸張対象の圧縮データを部分的にRAM407上に展開するので、ワークエリアも削減される。
図26は、実施形態のシステムにおける装置の構成例を示す図である。図26のシステムは、コンピュータ400a、コンピュータ400b、基地局30およびネットワーク40を含む。コンピュータ400aは、無線または有線の少なくとも一方により、コンピュータ400bと接続されたネットワーク40に接続している。
100 情報処理装置
110 圧縮部
111 ファイルリード部
112 圧縮符号付与部
120 記憶部
121 ビットフィルタ
121a 数値部
121b 単語部
122 動的辞書

Claims (10)

  1. コンピュータに、
    入力されたデータから、数値を示す、少なくとも1つの数字を含む数値文字列を抽出し、
    数値文字列と圧縮符号とを対応付けて記憶する辞書を参照し、前記抽出された数値文字列に対応する圧縮符号に変換する
    処理を実行させることを特徴とする圧縮プログラム。
  2. 前記辞書は、所定の複数の数値文字列を予め記憶する第1の辞書と、前記第1の辞書に登録されている数値文字列を記憶する第2の辞書とであり、
    前記抽出された数値文字列が、前記第1の辞書に登録されており、かつ、該数値文字列に対応する圧縮符号が前記第1の辞書に登録されていない場合、該数値文字列に圧縮符号を付与して前記第1の辞書における該数値文字列に対応付けて該圧縮符号を登録する、
    ことを特徴とする請求項1に記載の圧縮プログラム。
  3. 前記第1の辞書は、抽出され得る数値文字列とともに、数値の大きさの順番に応じて割り当てられるコードがさらに対応付けて記憶された辞書であることを特徴とする請求項2に記載の圧縮プログラム。
  4. 前記抽出する処理で数値文字列が抽出された際に、複数の圧縮ファイルのうち数値文字列が含まれる圧縮ファイルを示す情報ビット列を前記数値文字列ごとに対応付けて保持するインデックスを更新する処理をさらにコンピュータに実行させることを特徴とする請求項1〜3のいずれか一に記載の圧縮プログラム。
  5. 入力されたデータから、数値を示す、少なくとも1つの数字を含む数値文字列を抽出する抽出部と、
    数値文字列と圧縮符号とを対応付けて記憶する辞書を参照し、前記抽出された数値文字列に対応する圧縮符号に変換する変換部と
    を有することを特徴とする圧縮装置。
  6. コンピュータが、
    入力されたデータから、数値を示す、少なくとも1つの数字を含む数値文字列を抽出し、
    数値文字列と圧縮符号とを対応付けて記憶する辞書を参照し、前記抽出された数値文字列に対応する圧縮符号に変換する
    処理を実行することを特徴とする圧縮方法。
  7. コンピュータに、
    数値を示す、少なくとも1つの数字を含む数値文字列とともに数値の大きさの順番に応じて割り当てられるコードと圧縮符号とを対応付けて記憶する辞書を用いて、圧縮ファイルから抽出した圧縮符号をコードに変換し、
    前記変換したコードと、数値文字列の検索範囲に対応する1以上のコードとを比較することで、前記変換したコードが前記検索範囲内に含まれるか否かを判定し、
    前記検索範囲内に含まれると判定した場合に、前記変換したコードを数値文字列に伸長して表示する
    処理を実行させることを特徴とする伸長プログラム。
  8. 各数値文字列を含む圧縮ファイルに関する情報を有するインデックスを用いて、前記検索範囲内の数値文字列を含む圧縮ファイルを特定する処理をさらに実行することを特徴とする請求項7に記載の伸長プログラム。
  9. 数値を示す、少なくとも1つの数字を含む数値文字列の大きさの順番に応じて割り当てられるコードと圧縮符号とを対応付けて記憶する辞書を用いて、圧縮ファイルから抽出した圧縮符号をコードに変換する変換部と、
    前記変換したコードと、数値文字列の検索範囲に対応する1以上のコードとを比較することで、前記変換したコードが前記検索範囲内に含まれるか否かを判定する判定部と、
    前記検索範囲内に含まれると判定した場合に、前記変換したコードを数値文字列に伸長して表示する伸長部と
    を有することを特徴とする伸長装置。
  10. コンピュータが、
    数値を示す、少なくとも1つの数字を含む数値文字列の大きさの順番に応じて割り当てられるコードと圧縮符号とを対応付けて記憶する辞書を用いて、圧縮ファイルから抽出した圧縮符号をコードに変換し、
    前記変換したコードと、数値文字列の検索範囲に対応する1以上のコードとを比較することで、前記変換したコードが前記検索範囲内に含まれるか否かを判定し、
    前記検索範囲内に含まれると判定した場合に、前記変換したコードを数値文字列に伸長して表示する処理を実行することを特徴とする伸長方法。
JP2014167895A 2014-08-20 2014-08-20 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法 Active JP6476647B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014167895A JP6476647B2 (ja) 2014-08-20 2014-08-20 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法
US14/804,392 US9496891B2 (en) 2014-08-20 2015-07-21 Compression device, compression method, decompression device, decompression method, and computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014167895A JP6476647B2 (ja) 2014-08-20 2014-08-20 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法

Publications (2)

Publication Number Publication Date
JP2016046602A true JP2016046602A (ja) 2016-04-04
JP6476647B2 JP6476647B2 (ja) 2019-03-06

Family

ID=55349192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014167895A Active JP6476647B2 (ja) 2014-08-20 2014-08-20 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法

Country Status (2)

Country Link
US (1) US9496891B2 (ja)
JP (1) JP6476647B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017208644A (ja) * 2016-05-17 2017-11-24 富士通株式会社 復号化プログラム、復号化方法および復号化装置
JP2018195956A (ja) * 2017-05-16 2018-12-06 富士通株式会社 符号化プログラム、符号化装置および符号化方法
US10803243B2 (en) 2018-04-02 2020-10-13 Fujitsu Limited Method, device, and medium for restoring text using index which associates coded text and positions thereof in text data
US10915559B2 (en) 2017-10-31 2021-02-09 Fujitsu Limited Data generation method, information processing device, and recording medium
JP2023050192A (ja) * 2021-09-29 2023-04-10 敦 黒川 情報処理装置、プログラム、データ構造、及び情報処理方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6720664B2 (ja) * 2016-04-18 2020-07-08 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
JP6662169B2 (ja) * 2016-04-18 2020-03-11 富士通株式会社 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置
JP6834327B2 (ja) * 2016-10-06 2021-02-24 富士通株式会社 符号化プログラム、符号化装置および符号化方法
JP6737117B2 (ja) * 2016-10-07 2020-08-05 富士通株式会社 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
US11050436B2 (en) * 2019-06-21 2021-06-29 Sap Se Advanced database compression

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120358A (ja) * 1991-10-29 1993-05-18 Hitachi Ltd 画像情報処理システム
WO2008047432A1 (fr) * 2006-10-19 2008-04-24 Fujitsu Limited Programme de recherche d'informations, supports d'enregistrement comprenant un tel programme enregistré, procédé de recherche d'informations, dispositif de recherche d'informations
JP2008287412A (ja) * 2007-05-16 2008-11-27 Kddi Corp 文書データの符号化方法、符号化システム及びそのプログラム
JP2011019011A (ja) * 2009-07-07 2011-01-27 Fujifilm Corp データ符号化装置、データ符号化方法、およびデータ符号化プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3263963B2 (ja) 1991-12-25 2002-03-11 株式会社日立製作所 文書検索方法及び装置
US5590317A (en) * 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
US5499293A (en) * 1995-01-24 1996-03-12 University Of Maryland Privacy protected information medium using a data compression method
US5867114A (en) * 1996-02-29 1999-02-02 Mitel Corporation Method and apparatus for performing data compression
JP2000201080A (ja) * 1999-01-07 2000-07-18 Fujitsu Ltd 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
US6307488B1 (en) * 2000-05-04 2001-10-23 Unisys Corporation LZW data compression and decompression apparatus and method using grouped data characters to reduce dictionary accesses
JP5895545B2 (ja) 2012-01-17 2016-03-30 富士通株式会社 プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120358A (ja) * 1991-10-29 1993-05-18 Hitachi Ltd 画像情報処理システム
WO2008047432A1 (fr) * 2006-10-19 2008-04-24 Fujitsu Limited Programme de recherche d'informations, supports d'enregistrement comprenant un tel programme enregistré, procédé de recherche d'informations, dispositif de recherche d'informations
JP2008287412A (ja) * 2007-05-16 2008-11-27 Kddi Corp 文書データの符号化方法、符号化システム及びそのプログラム
JP2011019011A (ja) * 2009-07-07 2011-01-27 Fujifilm Corp データ符号化装置、データ符号化方法、およびデータ符号化プログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017208644A (ja) * 2016-05-17 2017-11-24 富士通株式会社 復号化プログラム、復号化方法および復号化装置
JP2018195956A (ja) * 2017-05-16 2018-12-06 富士通株式会社 符号化プログラム、符号化装置および符号化方法
JP7003443B2 (ja) 2017-05-16 2022-01-20 富士通株式会社 符号化プログラム、符号化装置および符号化方法
US10915559B2 (en) 2017-10-31 2021-02-09 Fujitsu Limited Data generation method, information processing device, and recording medium
US10803243B2 (en) 2018-04-02 2020-10-13 Fujitsu Limited Method, device, and medium for restoring text using index which associates coded text and positions thereof in text data
JP2023050192A (ja) * 2021-09-29 2023-04-10 敦 黒川 情報処理装置、プログラム、データ構造、及び情報処理方法
JP7457403B2 (ja) 2021-09-29 2024-03-28 敦 黒川 情報処理装置、プログラム、データ構造、及び情報処理方法

Also Published As

Publication number Publication date
US20160056839A1 (en) 2016-02-25
US9496891B2 (en) 2016-11-15
JP6476647B2 (ja) 2019-03-06

Similar Documents

Publication Publication Date Title
JP6476647B2 (ja) 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法
US20160321282A1 (en) Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus
CN105808513B (zh) 转换装置和转换方法
US20220277139A1 (en) Computer-readable recording medium, encoding device, index generating device, search device, encoding method, index generating method, and search method
JP2016110587A (ja) 圧縮プログラムおよび検索プログラム
US9397696B2 (en) Compression method, compression device, and computer-readable recording medium
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6507682B2 (ja) 符号化プログラム、符号化方法および符号化装置
EP3119002A1 (en) Encoding program, encoding method, information processsing device, replacement program, and replacement method
EP3236368A1 (en) Encoding processing program, encoding processing device, encoding processing method, decoding processing program, decoding processing device, and decoding processing method
US9479195B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
US7167115B1 (en) Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
JP6645013B2 (ja) 符号化プログラム、符号化方法、符号化装置および伸長方法
JP7003443B2 (ja) 符号化プログラム、符号化装置および符号化方法
US20220199202A1 (en) Method and apparatus for compressing fastq data through character frequency-based sequence reordering
EP3385860A1 (en) Compression of text using multiple dynamic dictionaries
US20150193462A1 (en) Control method and control device
JP5939259B2 (ja) 照合制御プログラム、照合制御装置および照合制御方法
CN115525728A (zh) 汉字排序、汉字检索和汉字插入的方法和装置
JP7006462B2 (ja) データ生成プログラム、データ生成方法および情報処理装置
JP2002007104A (ja) 文字データ圧縮表示装置
JP6512294B2 (ja) 圧縮プログラム、圧縮方法および圧縮装置
JP2019083477A (ja) データ生成プログラム、データ生成方法および情報処理装置
JP6589317B2 (ja) 書換装置、処理方法とそのプログラム、および、情報処理装置
CN110287147B (zh) 一种字符串排序方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180528

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181205

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20181212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190121

R150 Certificate of patent or registration of utility model

Ref document number: 6476647

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150