JPWO2014147672A1 - 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム - Google Patents
圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム Download PDFInfo
- Publication number
- JPWO2014147672A1 JPWO2014147672A1 JP2015506368A JP2015506368A JPWO2014147672A1 JP WO2014147672 A1 JPWO2014147672 A1 JP WO2014147672A1 JP 2015506368 A JP2015506368 A JP 2015506368A JP 2015506368 A JP2015506368 A JP 2015506368A JP WO2014147672 A1 JPWO2014147672 A1 JP WO2014147672A1
- Authority
- JP
- Japan
- Prior art keywords
- character information
- compression
- information
- code
- dictionary
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/242—Dictionaries
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Document Processing Apparatus (AREA)
Abstract
一側面によれば、表記ゆれの存在による圧縮率の低下を抑制することを目的とする。一態様によれば、圧縮装置は、互いに異なる複数の文字情報に対して割り当てられた第1の圧縮符号が、前記複数の文字情報のそれぞれに関連付けられた辞書情報を記憶する記憶部と、前記複数の文字情報のうちの第1の文字情報を取得した場合に、前記第1の文字情報と関連付けられた前記第1の圧縮符号を前記辞書情報から取得する取得部と、取得した前記第1の圧縮符号を、圧縮データを格納する格納領域に書き込む書込部と、を含む。
Description
データの圧縮技術または伸長技術の少なくとも一方に関する。
ハフマン符号化や算術圧縮などの可変長圧縮符号を用いた圧縮アルゴリズムでは、圧縮符号の割り当て対象の文字情報群に対して、文字情報群に含まれる文字情報ごとに出現頻度などの統計情報に応じた長さの圧縮符号が割り当てられる。ハフマン符号化の圧縮アルゴリズムでは、文字情報群に含まれる文字情報間の出現頻度の大小比較に基づいて圧縮符号の生成が行なわれる。算術圧縮では、文字情報群全体における各文字情報の出現割合に基づいて定められた符号長の圧縮符号が生成される。これらの圧縮アルゴリズムでは、出現頻度が高い文字情報ほど短い圧縮符号が割り当てられることで、短い圧縮符号の使用頻度が高くなるため、圧縮データ全体の圧縮率が向上する。
ハフマン符号化や算術圧縮などの圧縮アルゴリズムにおける可変長圧縮符号の割り当て対象は、文字や数字などの記号である。また、圧縮符号の割り当て対象を拡長して、記号の組み合わせである単語やタグなどの文字列に対して可変長圧縮符号を割り当てる技術がある。この場合、複数の記号の組み合わせに1つの圧縮符号が割り当てられるので、圧縮率が向上する(例えば、特許文献1参照)。
文書データは、文字や数字などの記号の組み合わせである単語やタグなどの文字列により構成される。文書データ内の各文字列は、それぞれ特定の意味や文法的な機能などの概念と対応するが、共通する概念に対応する文字列同士であっても、互いに記号の組み合わせ(表記)が異なる、いわゆる表記ゆれが存在する。表記ゆれの例として、動詞や形容詞などの活用語の活用や、同義語や類語などが挙げられる。
単語やタグなどの文字列への可変長圧縮符号の割り当てにおいては、出現頻度が高い文字情報ほど短い圧縮符号が割り当てられる。1つの概念に対して互いに表記が異なる複数の文字列(複数種類の文字列)が対応する表記ゆれが生じると、1つの概念に対して1種類の文字列が対応する表記ゆれがない場合の文字列の出現頻度よりも、複数種類の文字列それぞれの出現頻度が低くなってしまう。そのため、複数種類の文字列それぞれに割り当てられる圧縮符号が長くなり、圧縮率が低下する要因となる。
本発明の一側面によれば、表記ゆれの存在による圧縮率の低下を抑制することを目的とする。
一態様によれば、圧縮装置は、互いに異なる複数の文字情報に対して割り当てられた第1の圧縮符号が、前記複数の文字情報のそれぞれに関連付けられた辞書情報を記憶する記憶部と、前記複数の文字情報のうちの第1の文字情報を取得した場合に、前記第1の文字情報と関連付けられた前記第1の圧縮符号を前記辞書情報から取得する取得部と、取得した前記第1の圧縮符号を、圧縮データを格納する格納領域に書き込む書込部と、を含む。
一態様によれば、伸長装置は、互いに異なる複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数の文字情報に対応する第1の文字情報とを関連付けた辞書情報を記憶する記憶部と、前記第1の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第1の圧縮符号に関連付けられた前記第1の文字情報を前記辞書情報から取得する取得部と、取得した前記第1の文字情報を前記圧縮データの伸長結果を格納する格納領域に書き込む書込部と、を含む。
一態様によれば、情報処理システムは、圧縮データが記憶された記憶装置と、前記圧縮データに対する処理要求に応じた処理を実行する処理装置を含む情報処理システムであって、前記処理装置は、互いに異なる複数の文字情報に対して割り当てられた第1の圧縮符号を、前記複数の文字情報のそれぞれに関連付けた辞書情報を記憶する記憶部と、前記処理要求に応じて、前記記憶装置から前記圧縮データを読み出す読出部と、前記第1の圧縮符号を前記圧縮データから取得した場合に、前記辞書情報において前記第1の圧縮符号に関連付けられた第1の文字情報を前記辞書情報から取得する第1の取得部と、取得した前記第1の文字情報を前記圧縮データの伸長結果を格納する第1の格納領域に書き込む第1の書込部と、前記第1の格納領域に格納された伸長結果に対して前記処理要求に応じた処理を実行する処理部と、前記処理要求に応じた処理が行なわれたデータから前記第1の文字情報を取得した場合に、前記辞書情報により前記第1の文字情報と関連付けられた前記第1の圧縮符号を取得する第2の取得部と、取得した前記第1の圧縮符号を第2の格納領域に書き込む第2の書込部と、前記第2の領域に書き込まれたデータを前記記憶装置に格納する格納部と、を含む。
一態様によれば、辞書生成装置は、互いに異なる複数の文字情報に対応する1種類の共通文字情報に対して圧縮符号の割り当て処理を行なう割当部と、前記互いに異なる複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第1の圧縮符号を関連付けた辞書情報を生成する生成部と、を含む。
一態様によれば、辞書生成装置は、互いに異なる複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数種類の文字情報に対応する第1の文字情報と、を関連付ける辞書情報を生成する生成部を含む。
一側面によれば、表記ゆれの存在による圧縮率の低下を抑制することができる。
[圧縮処理および伸長処理の流れ]
図1は、圧縮処理および伸長処理の概要を示す。圧縮ファイルF2の生成は、ファイルF1と変換テーブルT1とに基づいて行なわれる。変換テーブルT1は、共通の概念に対応する複数種類の文字情報のそれぞれと、その複数種類の文字情報で共通する概念を示す共通文字情報とを対応づける。例えば、変換テーブルT1は、前述の複数種類の文字情報(互いに異なる複数の文字情報)のそれぞれに対し、複数種類の文字情報同士を識別する識別記号をさらに対応付けてもよい。
図1は、圧縮処理および伸長処理の概要を示す。圧縮ファイルF2の生成は、ファイルF1と変換テーブルT1とに基づいて行なわれる。変換テーブルT1は、共通の概念に対応する複数種類の文字情報のそれぞれと、その複数種類の文字情報で共通する概念を示す共通文字情報とを対応づける。例えば、変換テーブルT1は、前述の複数種類の文字情報(互いに異なる複数の文字情報)のそれぞれに対し、複数種類の文字情報同士を識別する識別記号をさらに対応付けてもよい。
圧縮符号を割り当てる対象の文字情報群それぞれについて、ファイルF1における頻度集計H1が、変換テーブルT1に基づいて行なわれる。頻度集計H1の処理において、変換テーブルT1に共通文字情報と対応づけられた文字情報は、共通文字情報としてカウントされる。また、頻度集計H1の処理において、識別記号と対応付けられた文字情報は、共通文字情報および識別記号の双方でカウントされてもよい。頻度集計H1の処理の集計結果は、頻度テーブルT2に格納される。
また、例えば、頻度集計H1の処理は、ファイルF1の代わりに、ファイルF1と共通の文字情報を多く含むことが見込まれるファイル(例えば、版数の異なる書籍など)に基づいて行なわれてもよい。また、頻度集計H1は、例えば、ファイルF1を含む複数のファイル(あるファイルを分割して得られる分割ファイル群(ファイルF1を含む)など)に基づいて行なわれてもよい。
頻度テーブルT2に格納された文字情報群(共通文字情報を含む、または共通文字情報と識別記号との双方を含む)に対して、それぞれの出現頻度に基づいて符号割当てH2の処理が行なわれる。例えば、ハフマン符号化のアルゴリズムによれば、文字情報同士での出現頻度の比較により各文字情報に対して圧縮符号が割り当てられる。また、例えば、算術圧縮によれば、圧縮符号を割り当てる対象の文字情報群全体における各文字情報の出現割合に応じて符号長が設定され、設定された符号長の圧縮符号が各文字情報に割り当てられる。圧縮辞書D1には、文字情報群(共通文字情報を含む、または共通文字情報と識別記号との双方を含む)それぞれについて、割り当てられた圧縮符号との対応関係が示されている。圧縮処理H3では、ファイルF1に含まれる文字情報と対応する圧縮符号が圧縮辞書D1から順次取得される。圧縮ファイルF2は、順次取得された圧縮符号による圧縮符号列(圧縮データ)、変換テーブルT1および頻度テーブルT2を含む。
上述の処理では、頻度集計H1の処理で、共通の概念に対応する複数種類の文字情報が共通文字情報に集約されるため、符号割当てH2において、圧縮符号を割り当てる対象の文字情報の種類が少なくなる。そのため、表記ゆれによる出現頻度低下が抑えられ、文字情報に割り当てられる圧縮符号の符号長が短く抑えられるので、表記ゆれを要因とする圧縮率の低下が抑制される。また、圧縮符号を割り当てる対象の文字情報の種類が少なくなることで、符号割当てH2の処理量が低減する。さらに、複数種類の文字情報のいずれについても圧縮符号が割り当てられるため、圧縮符号が割り当てられないことにより予期せずに圧縮率が低下することも抑制される。
また、頻度テーブルT2に格納された共通文字情報の出現頻度の情報は、そのままテキストマイニングに活用可能である。圧縮データを伸長しなくても、文書データ内にどのような概念がどの程度の頻度で示されているかなどの情報を頻度テーブルT2から抽出可能である。
伸長ファイルF3の生成は、圧縮ファイルF2に基づいて行なわれる。圧縮ファイルF2には、上述の通り、圧縮データ、変換テーブルT1および頻度テーブルT2が含まれる。圧縮ファイルF2から取り出された頻度テーブルT2に格納された文字情報群(共通文字情報を含む、または共通文字情報と識別記号との双方を含む)それぞれに対し、頻度テーブルT2で対応付けられた出現頻度に基づいて、符号割当てH4の処理が行なわれる。符号割当てH4の処理は、符号割当てH2の処理と同じアルゴリズムに基づいて行なわれる。伸長辞書D2は、圧縮符号と、圧縮符号が割り当てられた文字情報との対応関係を示す。伸長処理H5では、圧縮ファイルF2から取り出した圧縮符号に対応する文字情報が伸長辞書D2から取得される。伸長処理H5において、共通文字情報に対応する圧縮符号が圧縮ファイルF2から得られた場合には、圧縮符号に対応する共通文字情報が伸長辞書D2から取得される。また、識別記号に対応付けられた圧縮符号が用いられる場合には、伸長辞書D2は、共通文字情報の代わりに、圧縮ファイルF2から取り出した変換テーブルT1内の共通文字情報の格納位置(オフセット値)を含む。伸長処理H5において伸長辞書D2からオフセット値が得られた場合には、元の文字情報がオフセット値および識別記号に基づいて取得される。伸長ファイルF3は、伸長処理H5により得られた文字情報による文字情報列を含む。
圧縮ファイルF2に含まれる頻度テーブルT2においても、共通の概念に対応する複数種類の文字情報が共通文字情報に集約されているので、符号割当てH4において、圧縮符号を割り当てる対象の文字情報の種類が少なく抑えられる。
ファイルF1と伸長ファイルF3とが同一のデータであれば、圧縮処理H3および伸長処理H5は、可逆の圧縮伸長処理である。ファイルF1と伸長ファイルF3とが同一のデータでなければ、圧縮処理H3および伸長処理H5は、非可逆の圧縮伸長処理である。すなわち、共通の概念に対応する複数種類の文字情報同士が変換テーブルT1において識別記号により識別されると、伸長時に識別記号に基づいて圧縮前の文字情報を変換テーブルT1において特定可能となるため、可逆の圧縮伸長処理が行なわれる。
[表記ゆれと文字情報の出現頻度]
表記ゆれの一例として、文書データ内に同義語が存在しうる。例えば、英語では英国英語と米国英語で表記が異なる単語が存在する(例えば「pavement」と「sidewalk」など)し、そもそも複数通りに表記が認められた単語も存在する(例えば「center」と「centre」など)。また、例えば、日本語では外国語を日本語表記に置き換える際に複数通りの表記が認められている(例えば「インターフェース」と「インタフェース」など)。さらに、各言語においては、同義語と同様に、類義語が存在しうる(例えば「center」と「middle」など)。これらの同義語や類義語は概念が共通するので、共通文字情報に集約されることにより、表記ゆれによる出現頻度低下が抑えられる。これにより、文字情報に割り当てられる圧縮符号の符号長が短く抑えられるので、表記ゆれを要因とする圧縮率の低下が抑制される。また、圧縮符号の割り当て対象の文字情報が共通文字情報に集約されるので可変長圧縮符号割り当ての処理量が低減される。さらに、文字列に圧縮符号が割り当てられないことによる予期せぬ圧縮率低下が抑制される。
表記ゆれの一例として、文書データ内に同義語が存在しうる。例えば、英語では英国英語と米国英語で表記が異なる単語が存在する(例えば「pavement」と「sidewalk」など)し、そもそも複数通りに表記が認められた単語も存在する(例えば「center」と「centre」など)。また、例えば、日本語では外国語を日本語表記に置き換える際に複数通りの表記が認められている(例えば「インターフェース」と「インタフェース」など)。さらに、各言語においては、同義語と同様に、類義語が存在しうる(例えば「center」と「middle」など)。これらの同義語や類義語は概念が共通するので、共通文字情報に集約されることにより、表記ゆれによる出現頻度低下が抑えられる。これにより、文字情報に割り当てられる圧縮符号の符号長が短く抑えられるので、表記ゆれを要因とする圧縮率の低下が抑制される。また、圧縮符号の割り当て対象の文字情報が共通文字情報に集約されるので可変長圧縮符号割り当ての処理量が低減される。さらに、文字列に圧縮符号が割り当てられないことによる予期せぬ圧縮率低下が抑制される。
また、英語などの言語においては、文頭の単語の頭文字は大文字表記される。頭文字が小文字表記の単語のみを圧縮符号の割り当て対象とすると、文書データ中の文頭の単語は圧縮符号に置き換えられないので、圧縮率が向上しない要因となる。一方、頭文字が大文字表記の単語と、小文字表記の単語との双方に圧縮符号を個別に割り当てると、圧縮符号を割り当てる対象の文字情報の種類が倍になるので、圧縮符号の割り当て処理の処理量が増大する。この表記ゆれに対しても、頭文字が大文字表記の単語と小文字表記の単語との双方に対応する共通文字情報と、頭文字が大文字か小文字かを示す識別記号と、を用いることにより、圧縮率低下の抑制および圧縮符号割り当ての処理量抑制の効果が得られる。
また、特定の言語(例えば、英語、ドイツ語及び日本語など)においては、活用語が存在する。活用語とは、文法上の制約に応じて語形が変化する単語であり、例えば英語においては動詞、形容詞および副詞などである。活用語が存在する言語で記述された文書データでは、文法上の制約に応じた語形変化により異なる文字列で示される単語が存在する。例えば、英語においては、1種類の動詞について、原形、三人称単数現在形、過去形、過去分詞および現在分詞の5種類の活用形が存在する。これらは、共通の概念に対応するものの表記が異なる。そこで、例えば、活用形で表現された単語を活用語の概念に対応する共通文字情報(例えば動詞の原形)に集約して圧縮処理が行われることにより、圧縮率低下の抑制および圧縮符号割り当ての処理量抑制の効果が得られる。また、活用形を示す識別記号(例えば過去形を示す)を併用することにより、伸長時に元の活用形に戻すことができる。
文字情報の出現頻度は文書データによって異なる。そのため、出現頻度は、文字情報ごとに異なる。しかし、同義語や類語、または文頭の単語の頭文字の表記ゆれと異なり、活用語については、共通する概念に対応する複数種類の文字情報は、出現頻度の傾向が類似する。活用語で互いに異なる活用形の文字情報同士は、文書内で併用されることがある。例えば、「search data for ・・・」などを含む文のあとに、「the searched data is ・・・」などの文が続くことがある。共通文字情報に集約される文字情報同士で出現頻度の傾向が類似するので、文字情報そのものの出現頻度と整合しない符号長の圧縮符号が割り当てることが少なくなる。
また、例えば、動詞に関しては原形と過去形の出現頻度が高い一方で過去分詞の出現頻度は低いなどの、動詞全体において共通する傾向が存在する。活用形を示す識別記号に対しても出現頻度に基づいて圧縮符号が割り当てられることで、出現頻度が高い活用形には短い圧縮符号が割り当てられ、出現頻度が低い活用形には長い圧縮符号が割り当てられる。異なる活用形の単語同士で出現頻度に差がある場合でも、識別記号に割り当てられた圧縮符号により、符号長が調整される。
また、活用形を示す識別記号が用いられないと非可逆圧縮となるが、非可逆圧縮により得られた圧縮データは、例えばテキストマイニングなどの用途に用いられる。非可逆圧縮された圧縮データが伸長された場合には、動詞に関して活用形の情報が失われる。その一方で、圧縮データに基づいて、「like」や「hate」などの動詞の使用頻度や、それらの動詞と共起するキーワードの抽出などの分析は、非可逆圧縮された圧縮データに基づいて実行可能である。
[圧縮符号への変換]
図2は、圧縮符号への変換例を示す。図1には、「He spent much time for talking about his invention.」という英語例文が示される。単語や文字などの文字情報に対して割り当てられた圧縮符号を用いて、図1に示す英語例文の一部を変換した場合の例(1)〜(6)が図2に示される。例(1)〜(3)は、「talking」という文字情報に対応する圧縮符号の例である。また、例(4)〜(6)は、「spent」という文字情報に対応する圧縮符号の例である。「talking」および「spent」は、いずれも動詞の活用形である。
図2は、圧縮符号への変換例を示す。図1には、「He spent much time for talking about his invention.」という英語例文が示される。単語や文字などの文字情報に対して割り当てられた圧縮符号を用いて、図1に示す英語例文の一部を変換した場合の例(1)〜(6)が図2に示される。例(1)〜(3)は、「talking」という文字情報に対応する圧縮符号の例である。また、例(4)〜(6)は、「spent」という文字情報に対応する圧縮符号の例である。「talking」および「spent」は、いずれも動詞の活用形である。
単語に対して圧縮符号を割り当てる割り当て方法の一つとして、動詞については原形のみに対して圧縮符号を割り当てる方法がある。例えば、「talk」や「spend」などの動詞に対して、それぞれ圧縮符号c(talk)や圧縮符号c(spend)が割り当てられる。以下、圧縮符号は「c()」と示される。圧縮符号を「c()」と示す場合には、丸括弧内に圧縮符号に対応する文字情報が示される。その場合は、「talking」のうち、圧縮符号は原形の「talk」にしか割り当てられていないので、「ing」については、例えば、圧縮符号c(i)、圧縮符号c(n)および圧縮符号c(g)を組み合わせて表現される。すなわち例(1)に示される通り、「talking」は、圧縮符号列c(talk)c(i)c(n)c(g)に変換される。また、「spent」は圧縮符号が割り当てられた「spend」を含む文字列でないため、圧縮符号c(spend)が用いられない。そのため、例えば、例(4)に示されるように、「spent」は、圧縮符号列c(s)c(p)c(e)c(n)c(t)に変換される。
「talk」、「talked」および「talking」などの同じ動詞の活用形については、共通する意味を有しているものの文法上の制約により異なる表記で示される文字情報群である。その文字情報群の中の1つに圧縮符号を割り当てたとしても、他の文字情報を圧縮符号に変換する場合には、その一部または全部に対して文字単位の圧縮符号が行なわれることとなってしまう。そのため、単語単位の文字情報を複数の圧縮符号に変換することとなり、圧縮率向上の阻害要因になりうる。
また、単語に対して圧縮符号を割り当てる割り当て方法の一つとして、各動詞の各活用形に対して圧縮符号を割り当てる方法がある。例えば、「talk」という動詞に関しては「talk」、「talking」および「talked」などに対して、圧縮符号c(talk)、c(talking)および(talked)などがそれぞれ対応づけられる。また、例えば、「spend」という動詞に関しても、「spend」、「spending」および「spent」などに対して圧縮符号c(spend)、c(spending)および(spent)などがそれぞれ対応づけられる。その場合には、図2に示す英語例文中の「talking」は、例(2)に示す通り、圧縮符号c(talking)に変換される。また、英語例文中の「spent」も、例(5)に示す通り、圧縮符号c(spent)に変換される。
例(2)および例(5)によれば、各動詞自体の意味が1つであるのに対し、語形変化により例えば5種類の活用形(原形、三人称単数現在形、過去形、過去分詞および現在分詞)それぞれに対応する圧縮符号が存在することになる。そのため、圧縮符号の種類が増大してしまう。圧縮符号の種類が多いほど、圧縮辞書や伸長辞書のサイズは増大し、また、各文字列に対して割り当てる圧縮符号を生成する処理の処理量が増大する。そのため、圧縮符号の種類が多くなることにより、圧縮速度や伸長速度が遅くなってしまう。圧縮符号の割り当て処理量や圧縮辞書データ構造と、圧縮符号の種類の数との関係についてさらに後述される。
そこで、例えば、圧縮符号の割り当て方法の一つとして、共通の意味を有する複数種類の文字情報のいずれについても、その複数種類の文字情報で共通する意味を示す共通文字情報に対して割り当てた圧縮符号に変換する方法がある。例えば、「talk」、「talking」および「talked」などについては、共通する意味を示す「talk」に割り当てられた圧縮符号c(talk)に変換される。同様に、例えば、「spent」などの文字情報についても圧縮符号c(spend)に変換される。共通文字情報に対して割り当てられた圧縮符号を用いて文字情報を圧縮すると、圧縮されたデータを伸長して得られる伸長データは、前述の複数種類の文字情報で共通する意味を示す。その一方で、共通の圧縮符号が割り当てられているため、伸長データは、同一表記となってしまう。共通文字情報に対して割り当てられた圧縮符号が用いられると、圧縮されたデータを伸長した場合に共通の意味だけが再現されることとなり、上述の方法は、非可逆圧縮として用いられる。
さらに、上述の非可逆圧縮に加えて、例えば、共通の意味を有する複数の文字情報同士を識別する識別記号が用いられる。例えば、共通の「talk」という意味を有する文字情報「talking」および「talked」などが、それぞれ識別記号[−ing]および[−ed]などで識別される。以下、角括弧[]により識別記号が示される。例えば、識別記号[−ing]は、単語が現在進行形であるという文法上の機能を示す。また、例えば、識別記号[−ed]は、単語が過去形であるという文法上の機能を示す。
例えば、例(3)に示す通り、圧縮符号c(talk)および圧縮符号c([−ing])の双方を用いることにより、文字情報「talking」に対応する圧縮データが生成される。この圧縮データが伸長された場合に、伸長データに文字情報「talk」の現在進行形が存在すると判断できるので、文字情報「talking」が復元される。また、例えば、例(6)に示す通り、圧縮符号c(spend)および圧縮符号c([−ed])の双方を用いることにより、文字情報「spent」に対応する圧縮データが生成される。この圧縮データが伸長された場合に、伸長データに文字情報「spent」の過去形が存在すると判断できるので、文字情報「spent」が復元される。共通文字情報に対して割り当てられた圧縮符号と、識別記号に対して割り当てられた圧縮符号とが組み合わせて用いられることで、文字情報が復元されるため、可逆圧縮として用いられる。
例(3)や例(6)を用いて示した圧縮方法によれば、文法上の制約により表記が変化したいずれの単語についても2つの圧縮符号で表現される。そのため、例(1)や例(4)のように、圧縮符号が割り当てられた単語と同じ概念に対応するにも関わらず表記が異なることにより、圧縮符号の種類が増大するという事態が回避される。また、識別記号は、複数種類の動詞に対して共通して用いることができる。そのため、圧縮符号の種類は、共通の概念に対応する文字情報の数程度増加する。例えば、800種類の動詞に対して、例(2)や例(5)のごとく圧縮符号を割り当てると、圧縮符号の種類は、800種類の数倍に跳ね上がってしまう。その一方で、文法上の機能の種類として、例えば、原形、三人称単数現在形、過去形、過去分詞および現在分詞の5種類を識別させる場合には、動詞に関しては圧縮符号の種類の数は5種類しか増加しない。例(3)や例(6)に示す圧縮符号の割り当てを行なうことにより、圧縮符号の種類の数をほぼ増大させず、例(1)や例(4)に示す事態を生じにくくなる。
[本実施形態の構成および手順]
図3は、機能ブロックの構成例を示す。コンピュータ1は、圧縮部11、伸長部12、生成部13、生成部14および記憶部15を含む。記憶部15は、例えば、圧縮対象のファイルF1、圧縮ファイルF2、伸長ファイルF3、圧縮辞書D1や伸長辞書D2などを記憶する。また、記憶部15は、例えば圧縮辞書D1や伸長辞書D1の生成に用いられる単語リストL1を記憶する。単語リストL1は、圧縮符号を割り当てる対象の文字情報群のリストである。また、記憶部15は、変換テーブルT1を記憶する。また、記憶部15は、記憶領域A1、A2、A3およびA4などの記憶領域を設け、圧縮部11、伸長部12、生成部13および生成部14の処理のワークエリアとして用いられる。圧縮部11は、記憶部15に記憶されたファイルF1の圧縮処理を実行し、圧縮ファイルF2を生成する。伸長部12は、記憶部15に記憶された圧縮ファイルF2の伸長処理を実行し、伸長ファイルF3を生成する。生成部13は、圧縮部11の圧縮処理で用いられる圧縮辞書D1を生成する。生成部14は、伸長部12の伸長処理で用いられる伸長辞書D2を生成する。
図3は、機能ブロックの構成例を示す。コンピュータ1は、圧縮部11、伸長部12、生成部13、生成部14および記憶部15を含む。記憶部15は、例えば、圧縮対象のファイルF1、圧縮ファイルF2、伸長ファイルF3、圧縮辞書D1や伸長辞書D2などを記憶する。また、記憶部15は、例えば圧縮辞書D1や伸長辞書D1の生成に用いられる単語リストL1を記憶する。単語リストL1は、圧縮符号を割り当てる対象の文字情報群のリストである。また、記憶部15は、変換テーブルT1を記憶する。また、記憶部15は、記憶領域A1、A2、A3およびA4などの記憶領域を設け、圧縮部11、伸長部12、生成部13および生成部14の処理のワークエリアとして用いられる。圧縮部11は、記憶部15に記憶されたファイルF1の圧縮処理を実行し、圧縮ファイルF2を生成する。伸長部12は、記憶部15に記憶された圧縮ファイルF2の伸長処理を実行し、伸長ファイルF3を生成する。生成部13は、圧縮部11の圧縮処理で用いられる圧縮辞書D1を生成する。生成部14は、伸長部12の伸長処理で用いられる伸長辞書D2を生成する。
圧縮部11は、制御部111、検索部112、読出部113および書込部114を含む。制御部111は、検索部112、読出部113および書込部114の制御により、ファイルF1の圧縮処理を実行する。制御部111は、ファイルF1を記憶領域A1にロードする。読出部113は、記憶領域A1内のファイルF1からデータを読み出す。検索部112は、読出部113が読み出したデータについて、圧縮辞書D1の検索を行なう。書込部114は、検索部112の検索結果に応じた圧縮符号を記憶領域A2に書き込む。制御部111は、読出部113の読出し位置や、書込部114の書込み位置などの管理を行ない、例えば、読出部113や書込部114に、ファイルF1に含まれる文字コード列に対して順次処理を実行させる。また、制御部111は、記憶領域A2に格納された圧縮データに基づいて圧縮ファイルF2を生成し、記憶部15に圧縮ファイルF2を格納する。
伸長部12は、制御部121、検索部122、読出部123および書込部124を含む。制御部121は、検索部122、読出部123および書込部124の制御により、圧縮ファイルF2の伸長処理を実行する。制御部121は、圧縮ファイルF2を記憶領域A3にロードする。読出部123は、記憶領域A3内の圧縮ファイルF2から圧縮符号を読み出す。検索部122は、読出部123が読み出した圧縮符号について、伸長辞書D2の検索を行なう。検索部122は、伸長辞書D2から取得した伸長コードが文字情報であるか変換テーブルT1におけるオフセット値であるか判定し、オフセット値である場合にはオフセット値に基づいて文字情報を取得する。書込部124は、検索部122により取得された文字情報を記憶領域A4に書き込む。制御部121は、読出部123の読出し位置や、書込部124の書込み位置などの管理を行ない、例えば、読出部123や書込部124に、圧縮ファイルF2に含まれる圧縮符号に対して順次処理を実行させる。また、制御部121は、記憶領域A4に格納された文字情報列(伸長データ)に基づいて伸長ファイルF3を生成し、記憶部15に伸長ファイルF3を格納する。
生成部13は、制御部131、統計部132、割当部133およびソート部134を含む。生成部13は、圧縮部11からの指示に応じて、圧縮辞書D1を生成する。制御部131は、統計部132、割当部133およびソート部134の制御により、ファイルF1の圧縮に用いられる圧縮辞書D1を生成する。統計部132は、ファイルF1内に含まれる文字や単語などの文字情報ごとに出現回数をカウントして、各文字情報の出現頻度を示す頻度テーブルT2生成する。ソート部134は、統計部132が生成した出現頻度に基づいて、頻度テーブルT2内の各文字情報をソートする。割当部133は、統計部132が生成した出現頻度に基づいて、各文字情報に対応する圧縮符号を生成し、生成した圧縮符号を各文字情報に割り当てる。ソート部134は、さらに、文字情報および圧縮符号の組み合わせである各組を、各文字情報に対応する文字コードの順序(例えば文字コードの値が小さい順)でソートする。制御部131は、統計部132、割当部133およびソート部134による処理結果に基づいて圧縮辞書D1を生成し、記憶部15に圧縮辞書D1を格納する。また、制御部131は、統計部132が生成した頻度テーブルT2を記憶部15に格納する。
生成部14は、制御部141、割当部142、複製部143およびソート部144を含む。生成部14は、伸長部12からの指示に応じて、伸長辞書D2を生成する。制御部141は、割当部142、複製部143およびソート部144を制御し、圧縮ファイルF2の伸長に用いられる伸長辞書D2を生成する。割当部142は、頻度テーブルT2を用いて、頻度テーブルT2内の各文字情報に対応する圧縮符号を生成する。ソート部144は、圧縮符号が割り当てられた各文字情報を、圧縮符号の値に応じてソートする。複製部143は、ソートされた各圧縮符号の符号長に応じて、圧縮符号に対応する文字や単語を示す文字コードを複製する。制御部141は、複製部143により複製された文字コードを、割当部142により生成された圧縮符号に対応したオフセット位置に配置することにより、伸長辞書D2を生成する。制御部141は、さらに記憶部15に伸長辞書D2を格納する。
圧縮部11および生成部13によりファイルF1の圧縮が行なわれる。圧縮の処理手順は、図4、図5、図6および図10に示される。また、伸長部12および生成部14により圧縮ファイルF2の伸長が行なわれる。伸長の処理手順は、図11、図12および図14に示される。
図4は、圧縮機能の処理手順例を示す。圧縮機能が呼び出されると、制御部111は、圧縮処理の前処理を実行する(S101)。圧縮機能の呼出しは、圧縮対象のファイルF1の指定を含む。S101の前処理においては、制御部111は、記憶領域A1および記憶領域A2を確保し、単語リストL1および変換テーブルT1を記憶部15からロードし、頻度テーブルT2および圧縮辞書D1の格納領域を確保する。
S101の処理が終了すると、制御部111は、記憶領域A1にファイルF1をロードする(S102)。ファイルF1のサイズが所定のサイズよりも大きい場合には、制御部111は、ファイルF1をブロック分割し、分割して得られたブロックごとに以下の圧縮処理を行なう。続いて、制御部111は、生成部13に圧縮辞書D1の生成指示を行なう(S103)。
図5は、圧縮辞書生成の処理手順例を示す。制御部111から圧縮辞書の生成指示を受けると、制御部131は、統計部132にファイルF1に含まれる文字情報の頻度集計処理を実行させる(S201)。
図6は、頻度集計処理の処理手順例を示す。制御部131により頻度集計処理の指示を受けると、統計部132は、記憶領域A1にロードされたファイルF1について頻度集計処理を開始する。頻度集計処理の開始時において、読出し位置は記憶領域A1にロードされたファイルF1の先頭を示す。まず、統計部132は、記憶部15からロードされた単語リストL1と変換テーブルT1とに基づいて、各文字情報の出現頻度を格納するための頻度テーブルT2を生成する(S301)。具体的には、統計部132は、S101の処理で確保された記憶領域内に、頻度集計を行なう対象の文字情報を順次登録する。
図7は、変換テーブルの例を示す。変換テーブルT1は、文字情報に対し、共通文字情報および識別記号の組を対応付ける。共通文字情報は、複数種類の共通の概念に対応する文字情報のそれぞれにおいて共通の概念を示す。識別記号は、それぞれの文字情報を識別する。例えば、「talk」、「talks」、「talked」および「talking」という文字情報のそれぞれは、「talk」という共通の概念に対応する文字情報である。変換テーブルT1においては、「talk」、「talks」、「talked」および「talking」という文字情報のそれぞれに対し、「talk」という共通の概念を示す文字情報(共通文字情報)が対応付けられる。また、変換テーブルT1においては、「talk」、「talks」、「talked」および「talking」という文字情報のそれぞれを識別するために、識別記号[c1]、[c2]、[c3]および[c4]がさらに対応付けられる。識別記号[c1]は、動詞の原形であることを示す識別記号である。また、識別記号[c2]は、動詞の三人称単数形であることを示す識別記号である。また、識別記号[c3]は、動詞の過去形であることを示す識別記号である。また、識別記号[c4]は、動詞の現在分詞であることを示す識別記号である。変換テーブルT1の左側の値は、変換テーブルT1において、各文字情報に関する情報が格納されるオフセット位置を示す。識別記号[c1]、[c2]、[c3]および[c4]として、ファイルF1に使用される文字コード系における空きコードが用いられる。その他の識別記号についても同様に空きコードが用いられる。
「spend」、「spends」、「spent」および「spending」という文字情報に対しても、共通の概念を示す「spend」という共通文字情報が対応付けられる。また、「spend」、「spends」、「spent」および「spending」のそれぞれに対しては、「talk」、「talks」、「talked」および「talking」と同様に識別記号[c1]、識別記号[c2]、識別記号[c3]および識別記号[c4]が対応付けられる。また、例えば、「drunk」という文字情報については、共通文字情報「drink」および動詞の過去分詞であることを示す識別記号[c5]が対応付けられている。
また、例えば、「good」、「better」および「best」という形容詞に対し、共通する概念である「good」を示す共通文字情報が対応付けられている。「good」、「better」および「best」という形容詞のそれぞれは、形容詞の原形であることを示す識別記号[c6]、形容詞の比較級であることを示す識別記号[c7]および形容詞の最上級であることを示す識別記号[c8]のそれぞれと対応付けられる。また、例えば、「I」、「my」、「me」、「mine」および「myself」という文字情報は、共通する概念である「I」を示す共通文字情報が対応付けられている。「I」、「my」、「me」、「mine」および「myself」のそれぞれは、人称代名詞の主格を示す識別記号[c9]、人称代名詞の所有格を示す識別記号[c10]、人称代名詞の目的格を示す識別記号[c11]、所有代名詞を示す識別記号[c12]および再帰代名詞を示す識別記号[c13]が対応付けられる。
例えば、変換テーブルT1は、文字情報と、共通文字情報および識別記号による組との対応関係が予め設定されて記憶部15に記憶される。統計部132は、単語リストL1に登録された文字情報を、変換テーブルT1に登録された文字情報を除いて、頻度テーブルT2に登録する。さらに、統計部132は、変換テーブルT1内の共通文字情報および識別記号を頻度テーブルT2に登録する。
図8は、頻度テーブルT2の例を示す。頻度テーブルT2は、文字情報(共通文字情報や識別記号も含む)と、出現頻度とを対応付けるテーブルである。上述の通り、統計部132の頻度テーブルT2の生成において、変換テーブルT1に登録されている文字情報が除かれている。そのため、「talk」、「talks」、「talked」および「talking」などの共通の概念に対応する複数種類の文字情報のそれぞれは、共通文字情報「talk」と各識別記号[c1]〜[c4]とに分けられて頻度テーブルT2に登録されている。
図6に示す処理手順の説明に戻る。頻度テーブルT2に対して文字情報が登録されると、統計部132は、記憶領域A1の読出し位置から文字コードを取得する(S302)。S302の処理において、読出し位置はS302で取得された文字コード分進められる。
次に、統計部132は、S302で取得した文字コードが区切り記号であるか否かを判定する(S303)。S303の判定は、区切り記号として処理する文字コードを予め設定しておき、S302で取得した文字コードが予め設定した文字コードのいずれかに該当するか否かにより判断される。区切り記号は、例えば、スペース記号(ASCIIコード系で0x20)、エクスクラメーション(ASCIIコード系で0x21)、カンマ(ASCIIコード系で0x2C)、ピリオド(ASCIIコード系で0x2E)、コロン(ASCIIコード系で0x3A)、セミコロン(ASCIIコード系で0x3B)およびクエスチョン(ASCIIコード系で0x3F)などである。もしくは、S303の判定は、S302で取得した文字コードが、予め定めた数値範囲(例えば、ASCIIコード系で0x20〜0x3F)であるか否かにより判断されてもよい。
S302で取得した文字コードが区切り記号でない場合(S303:NO)には、統計部132は、S302で取得した文字コードをバッファに格納する(S304)。S304の処理が終了すると、S311の手順に移行する。
S302で取得した文字コードが区切り記号である場合(S303:YES)には、統計部132は、バッファに格納されている文字情報に基づき変換テーブルT1を参照する(S305)。さらに、統計部132は、S305の参照結果に基づいて、変換テーブルT1にバッファに格納されている文字情報が登録されているか否かを判定する(S306)。
バッファに格納されている文字情報が変換テーブルT1に格納されていない場合(S306:NO)には、統計部132は、バッファに格納されている文字情報についてカウントする(S307)。S307において、頻度テーブルT2に、バッファに格納されている文字情報と同じ文字情報がない場合には、統計部132は、バッファに格納されている各々の文字コードについてカウントを行なう。
バッファに格納されている文字情報が変換テーブルT1に格納されている場合(S306:YES)には、統計部132は、バッファに格納されている文字情報と変換テーブルT1により対応付けられた共通文字情報および識別記号の双方についてカウントする(S308)。例えば、統計部132は、S308において、共通文字情報と識別記号との双方について頻度テーブルT2により対応付けられたカウント値をインクリメントする。例えば、バッファに格納されている文字情報が「spent」である場合には、統計部132は、共通文字情報の「spend」と、識別記号[c3]の双方についてカウント値をインクリメントする。
S307またはS308の処理が行われると、統計部132は、S302で取得した区切り記号のカウントを行なう(S309)。S309において、統計部132は、頻度テーブルT2においてS302で取得した区切り記号に対応するカウント値をインクリメントする。さらに、統計部132は、バッファをクリアする(S310)。S309とS310の処理は互いに順序入れ替えても構わない。
S304またはS310が行なわれると、統計部132は、読出し位置が、記憶領域A1にロードしたファイルF1の終端であるか否かを判定する(S311)。S311の判定において終端でなければ(S311:NO)、統計部132は、S302の手順に移行する。またS311の判定において終端であれば(S311:YES)、統計部132は頻度集計処理を終了する。
統計部132による頻度集計処理が終了すると、制御部131は、図5の手順に戻り、ソート部134にソート処理を実行させる(S202)。例えば、ソート部134は、頻度テーブルT2に登録された文字情報(文字、記号、単語、共通文字情報および識別記号など)を、統計部132により生成された頻度情報(各文字情報についての出現回数)に基づいて並べ替える。例えば、ソート部134は出現回数が多い順か少ない順のいずれか一方で、頻度テーブルT2に登録された文字情報を並べ替える。
S202の処理が終了すると、制御部131は、割当部133に圧縮符号の割り当てを実行させる(S203)。例えば、割当部133は、S202で頻度順に並べ替えられた文字情報群に対して、ハフマン符号化や算術圧縮など、高頻度の文字情報ほど短い圧縮符号を割り当てるアルゴリズムに基づいて圧縮符号を割り当てる。
頻度テーブルT2に登録された各文字情報に圧縮符号が割り当てられると、制御部131は、共通文字情報および識別記号の組み合わせに対応する圧縮符号の組を生成する(S204)。S204において、制御部131は、変換テーブルT1に登録された共通文字情報と識別記号との組み合わせに対応する文字情報と、組み合わせられた共通文字情報および識別情報それぞれに対応する圧縮符号の組み合わせとを対応付ける。例えば、文字情報「spent」は、変換テーブルT1において対応付けられた共通文字情報「spend」および識別記号[c3]に対応する圧縮符号c(spend)および圧縮符号c([c3])の組に対応付けられる。この際、圧縮符号c([c3])が先で圧縮符号c(spend)が後である順序で圧縮符号が組み合わせられる。さらに、制御部131は、単語リストL1に登録された文字情報のそれぞれと、それぞれの文字情報に対応する圧縮符号とを対応付けた対応情報を、圧縮辞書D1を格納する領域に格納する。この対応情報において、変換テーブルT1に登録されている文字情報については、対応情報において圧縮符号の組(共通文字情報に対応する圧縮符号と識別記号に対応する圧縮符号の組)と対応付けられている。
続いて、制御部131は、ソート部134に、対応情報に含まれる各文字情報と、各文字情報に対応付けられた圧縮符号とのセットを、各文字情報の文字コードの値に基づいてソート処理させる(S205)。ソート部134は、例えば、文字情報の文字コードが小さい順に並べ替える。例えば、ソート部134は、文字情報の1文字目の文字コードの値が小さい順に並べ、1文字目の文字コードが同じ文字情報同士は、2文字目の文字コードの値が小さい順に並べる。S205の処理により並べ替えられた状態が、図9に示す圧縮辞書D1である。
S205の処理が終了すると、制御部131は、インデックスの生成処理を行なう(S206)。制御部131は、文字情報と、その文字情報がS205でソートされた文字情報群内で存在する位置を示す情報(オフセット値)とを対応付けてインデックスを生成する。図9に示す圧縮辞書D1に対して、例えば、文字「i」にオフセット値「0x0052」などが対応付けられる。圧縮符号の生成においてこのインデックスが利用されると、「i」から始まる単語に対応する圧縮符号の検索が「0x0052」から開始される。S206の処理が終了すると、生成部13は、圧縮辞書D1の生成処理を終了する。
図9は、圧縮辞書のデータ構造例を示す。図9に示される圧縮辞書D1には、文字情報と圧縮符号とが対応付けられて格納される。文字情報と圧縮符号とのセットの格納位置は、圧縮辞書D1の格納位置を始点とするオフセット値で示される。例えば、文字情報「invention」の情報は、オフセット値0x0053に格納される。S206で生成されるインデックスは、このオフセット値を利用して検索範囲の絞り込みを実現する。また、前述の通り、「c()」は、括弧内の文字情報に対応する圧縮符号であることを示す。図9の例においては、圧縮辞書D1に登録される文字情報のうち、変換テーブルT1に登録される文字情報については、複数の圧縮符号と対応付けられており、変換テーブルT2に登録されない文字情報については1つの圧縮符号と対応付けられている。
圧縮辞書D1は、生成部13により生成されたが、他の一例として、圧縮辞書D1が予め記憶部15に記憶されていることとしてもよい。この場合に、圧縮辞書D1は、例えば複数のファイルにおいて共通で用いられる。例えば、予め記憶部15に記憶される圧縮辞書D1では、例えば、過去に圧縮されたファイル(過去の版の文書ファイル)やデータベース内に存在する複数のファイルにおける文字情報の頻度情報に基づいて圧縮符号が割り当てられてもよい。
生成部13が圧縮辞書D1の生成処理を終了すると、制御部111は図4の手順に戻り、圧縮データ生成処理を実行する(S104)。
図10は、圧縮データ生成処理の処理手順例を示す。圧縮データ生成処理の開始時点において、読出し位置は記憶領域A1にロードされたファイルF1の始点にセットされ、書込み位置は記憶領域A2の所定の位置にセットされ、バッファはクリアされる。読出部113は、読出し位置から文字コードを取得する(S401)。制御部111は、S401の文字コード取得後、読出し位置を更新する。制御部111は、S401で取得した文字コードが区切り記号であるか否かを判定する(S402)。区切り記号は、S303と同様に、スペースやカンマなどの予め設定した文字コードである。
S401で取得した文字コードが区切り記号でない場合(S402:NO)には、制御部111は、読出部113がS401で取得した文字コードをバッファに格納する(S403)。S403が行なわれると、S401の手順に戻り、読出部113は、読出し位置から文字コードを取得する。
S401で取得した文字コードが区切り記号である場合(S402:YES)には、検索部112は、圧縮辞書D1をバッファ内に格納された文字コード(または文字コード列)で検索する(S404)。制御部111は、バッファ内に格納された文字コード(または文字コード列)と一致する一致文字情報が圧縮辞書D1内に存在するか否かを判定する(S405)。
一致文字情報が存在する場合(S405:YES)には、書込部114は、記憶領域A2の書込み位置に、圧縮辞書D1内で一致文字情報に対応付けられた圧縮符号を書き込む(S406)。さらに、制御部111は、書込み位置を更新する。圧縮辞書D1において、複数の圧縮符号が一致文字情報に対応付けられている場合には、書込部114は、複数の圧縮符号を書込み位置から書き込む。書込みが行われると制御部111は、書き込んだ圧縮符号長に基づいて、記憶領域A2への書き込み位置の更新を行なう。
圧縮辞書D1内に一致文字情報が存在しない場合(S405:NO)は、制御部111は、バッファ内の各文字コードに対して処理を行なう(S407〜S410)。制御部111は、各文字コードについて、検索部112に圧縮辞書D1を検索させ(S408)、検索の結果得られた圧縮符号を書込部114に書込み位置に書き込ませる(S409)。S408およびS409の処理が、バッファに格納された各文字コードに対して行なわれるS407〜S410の処理が終了する。
S406またはS410のいずれかが行われると、制御部111は、バッファに格納された文字コード(または文字コード列)を削除(クリア)する(S411)。また、書込部114は、S401で取得した区切り記号に圧縮辞書D1において対応付けられた圧縮符号を書込み位置に書き込む(S412)。S411よりも先にS412が行われても構わない。さらに、制御部111は、読出し位置が記憶領域A1にロードされたファイルF1の終端であるか否かを判定する(S413)。
読出し位置がファイルF1の終端でない場合(S413:NO)には、S401の手順に戻り、読出部113は、読出し位置から文字コードを取得する。読出し位置がファイルF1の終端である場合(S413:YES)には、制御部111は、圧縮データ生成処理を終了する。
上述の圧縮データ生成処理が終了すると、図4に示すS105に手順が戻る。制御部111は、記憶領域A2内に格納された圧縮データを用いて圧縮ファイルF2を生成し、記憶部15に格納する(S105)。圧縮ファイルF2は、例えば、ヘッダ、記憶領域A2内の圧縮データおよびトレーラ情報で構成される。ヘッダには、例えば、圧縮アルゴリズムを識別する識別情報や、ヘッダ、圧縮データおよびトレーラ情報それぞれのデータサイズなどの情報が含まれる。また、トレーラ情報には、例えば、変換テーブルT1、頻度テーブルT2などが含まれる。
S105の処理が終了すると、制御部111は、圧縮機能の呼出し先に圧縮処理が終了した旨の通知を行なう(S106)。S106の通知には、例えば、圧縮ファイルF2の格納先を示す情報が含まれる。S106の処理が終了すると、圧縮部11による圧縮処理が終了する。
図11は、伸長機能の処理手順例を示す。伸長機能が呼び出されると、制御部121は、伸長処理の前処理を実行する(S501)。伸長機能の呼出しは、伸長対象の圧縮ファイルF2の指定を含む。S501の前処理においては、制御部121は、記憶領域A3および記憶領域A4を確保し、さらに、伸長辞書D3の格納領域を確保する。
S501の処理が終了すると、制御部121は、圧縮ファイルF2を記憶領域A3にロードする(S502)。次に、制御部121は生成部14に伸長辞書を生成させる(S503)。
図12は、伸長辞書生成の処理手順例を示す。制御部141は、記憶領域A3にロードされた圧縮ファイルF2のトレーラ情報から、変換テーブルT1および頻度テーブルT2を取得する(S601)。次に、制御部141は、頻度テーブルT2に登録された各文字情報(共通文字情報および識別記号を含む)について、頻度テーブルT2に基づいて圧縮符号を割り当てる(S602)。S602の処理においては、S203と同様のアルゴリズムにより圧縮符号が割り当てられる。次に、制御部141は、圧縮符号が割り当てられた文字情報のうち、共通文字情報は、取得した変換テーブルT1内のオフセット値に変更する(S603)。このオフセット値は、変換テーブルT1において、共通文字情報に対応する文字情報が格納される位置を示す。例えば、共通文字情報「talk」については、オフセット値「0x0182」が格納される。このオフセット値「0x0182」により、「talk」、「talks」、「talked」および「talking」などの共通の概念「talk」に対応する文字情報が参照可能となる。
ソート部144は、圧縮符号が割り当てられた文字情報(S603により変更されたオフセット値を含む)を、圧縮符号の値に応じてソートする(S604)。さらに、制御部141は、圧縮符号が割り当てられた各文字情報(S603により変更されたオフセット値を含む)に対し、割り当てられた圧縮符号の符号長を関連付ける。
次に、複製部143は、文字情報に関連付けられた符号長に応じた数に、文字情報および符号長の情報を複製する(S605)。例えば、最大の圧縮符号長が12ビットと設定されている場合には、複製部143は、符号長がnの文字情報(オフセット値を含む)および符号長の情報を2の(12−n)乗個に複製する。さらに、制御部141は、複製された情報を記憶部15に確保された伸長辞書D2の格納領域内の位置であって、圧縮符号に基づいたオフセット位置に格納する(S606)。S606の結果、伸長辞書D2が生成され、手順は図11のS504に移行する。
図13は、伸長辞書のデータ構造例を示す。伸長辞書D2は、伸長コード(文字情報または変換テーブルT1のオフセット値)と符号長とを示す情報が、対応する圧縮符号に基づくオフセット位置に格納されるデータ構造を有している。図13の伸長辞書D2は、圧縮符号の最大の符号長が12ビットである場合を例示するものである。
伸長辞書D2を用いることにより、可変長の符号化が行なわれた圧縮データから固定長のデータを読み出して、読み出した固定長のデータに対応する伸長コードを取り出すことが可能である。固定長のデータを読み出すことで、1ビットずつ符号の境目を判定するよりも伸長速度の高速化が図られる。12ビットよりも短い圧縮符号については余分に圧縮データからデータを読み出してしまうので、符号長に基づいて圧縮データからの読出し位置の調整が行なわれる。伸長辞書D2はこのような伸長処理に用いられる伸長辞書であるため、伸長コードおよび符号長が同じ情報が重複して登録される。
例えば、伸長辞書D2における識別記号[c3]に対応する圧縮符号c([c3])は、「000101」という6ビットのデータであるのに対し、圧縮データから12ビットのデータでまとめて読み出される。読み出した12ビットのうち前半の6ビットが「000101」であれば、後半の6ビットがどのようなデータであっても識別記号[c3]という伸長コードが取得可能となる必要がある。そのため、後半の6ビットが取り得る値の全通りについて伸長コードおよび符号長を格納しておくことで、12ビットの固定長データのうちの後半6ビットがどのようなデータであっても、6ビットの可変長符号に対応する伸長コードなどの情報が取得される。識別記号[c3]の情報は、後半6ビットの全通り(「000000」〜「111111」)の数(64個)に複製されて、圧縮符号が「000101」に応じたオフセット位置(000101000000(0x140))に格納される。すなわち、伸長辞書のオフセット値0x140〜0x17Fまでの64個のデータは、識別記号[c3]に関する情報が格納される。
また、共通文字情報「talk」に関する情報も、制御記号[c3]と同様に、圧縮符号の符号長に応じた数に複製され、圧縮符号に応じたオフセット位置に格納される。ただし共通文字情報は、S603の処理で変換テーブルT1内のオフセット値(0x0182)に変更されている。
図14は、伸長データ生成処理の処理手順例を示す。伸長辞書D2が生成されると、制御部121は、圧縮ファイルF2に含まれる圧縮データに対応する伸長データを生成する処理を開始する。記憶領域A3からの読出し位置はファイルF2の圧縮データの始点にセットされ、記憶領域A4への書込み位置は記憶領域A4内の所定の位置にセットされる。
読出部123は記憶領域A3の読出し位置から圧縮データを読み出す(S701)。圧縮データの読出しは、前述の通り固定長(例えば、12ビット)で行なわれる。検索部122は、読み出した固定長データに基づいて伸長辞書D2を参照する(S702)。制御部121は、S702の参照により得られた伸長コードが、識別記号であるか否か判定する(S703)。
S702の参照により得られた伸長コードが、識別記号である場合(S703:YES)には、制御部121は活用フラグをONにする(S704)。活用フラグは、伸長辞書D2において圧縮符号に対応付けられた伸長コードが文字情報であるかオフセット値であるかの判定に用いられる。S704において、制御部121は、S702の参照により得られた識別記号をバッファに記憶する。
S702の参照により得られた伸長コードが、識別記号でない場合(S703:NO)には、制御部121は、活用フラグがONであるか否かを判定する(S705)。活用フラグがONである場合(S705:YES)には、検索部122は、変換テーブルT1を参照する(S706)。S706において、検索部122は、S702の参照により得られた伸長コードを変換テーブルT1のオフセット値として、オフセット値に基づいて変換テーブルT1を参照する。さらに、検索部122は、バッファに格納した識別記号と、オフセット値(伸長コード)により示される共通文字情報との組み合わせに対応する文字情報を、変換テーブルT1から取得する。制御部121は、活用フラグをOFFにし、バッファに格納された識別記号を削除する(S707)。
S705の判定で活用フラグがOFFである(S705:NO)か、S707の処理を終えると、制御部121は、記憶領域A4の書き込み位置に文字情報の書き込みを行なう(S708)。S708で書き込まれる文字情報は、S702の伸長辞書D2の参照により得られた伸長コードであるか、S706の変換テーブルT1の参照により得られた文字情報である。S708で書き込まれた文字情報の長さに応じて、制御部121は、記憶領域A4への書込み位置を更新する(S709)。
S704またはS709の処理が行なわれると、制御部121は、記憶領域A3からの読出し位置を更新する(S710)。記憶領域A3からの読出し位置は、S702の参照により得られた符号長に基づいて更新される。例えば、読出し位置は、符号長の情報示されるビット数だけ進められる。
続いて、制御部121は、記憶領域A3からの読出し位置が、圧縮ファイルF2の圧縮データの終端であるか否かを判断する(S711)。記憶領域A3からの読出し位置が圧縮データの終端でない場合(S711:NO)には手順がS701に戻り、再度読出部123が圧縮データの読出しを行なう。記憶領域A3からの読出し位置が圧縮データの終端である場合(S711:YES)には、制御部121は伸長データ生成処理を終了し、手順がS505に移行する。
他の一例として、伸長辞書D2は、伸長辞書の一例であり、同じ情報が重複して登録されていない伸長辞書が用いられてもよい。例えば、一般的なハフマン符号化の伸長辞書が用いられてもよい。その場合であっても、伸長辞書から伸長コードが取得された場合には、制御部121は、S703の判定を行ない、その判定結果に応じてS704か、S705〜S709かのいずれかの処理を行なう。
伸長データ生成処理が終了すると、制御部121は、記憶領域A4に格納された伸長データに基づいて伸長ファイルF3を生成し、生成した伸長ファイルF3を記憶部15に格納する(S505)。さらに、制御部121は、伸長機能の呼出し先に伸長処理が終了した旨の通知を行なう(S506)。S506の通知には、例えば、伸長ファイルF3の格納先を示す情報が含まれる。S506の処理が終了すると、伸長部12による伸長処理が終了する。
[圧縮符号への変換]
図2に示される例(3)および例(6)においては、識別記号に対応する圧縮符号と、共通文字情報に対応する圧縮符号との組み合わせが用いられる。この組み合わせにおいては、識別記号に対応する圧縮符号が先で、共通文字情報に対応する圧縮符号が後の順序で組み合わせられている。この順序により、識別記号が伸長辞書D1から先に読み出されるので、その後に読み出される圧縮符号に基づいて伸長辞書D1から取得される伸長コードが文字情報であるかオフセット値であるかの判定が可能となる。
図2に示される例(3)および例(6)においては、識別記号に対応する圧縮符号と、共通文字情報に対応する圧縮符号との組み合わせが用いられる。この組み合わせにおいては、識別記号に対応する圧縮符号が先で、共通文字情報に対応する圧縮符号が後の順序で組み合わせられている。この順序により、識別記号が伸長辞書D1から先に読み出されるので、その後に読み出される圧縮符号に基づいて伸長辞書D1から取得される伸長コードが文字情報であるかオフセット値であるかの判定が可能となる。
図15は、圧縮符号への変換例を示す。例(3)に示すように識別記号に対応する圧縮符号を先にしてもよいが、例(7)に示すように共通文字情報に対応する圧縮符号を先にしてもよい。例(8)も例(7)と同様に、共通文字情報に対応する圧縮符号を先にし、識別記号に対応する圧縮符号を後にした場合を例示している。
図9に示す圧縮辞書D1は、図5のS204の処理において、識別記号に対応する圧縮符号を先に、共通文字情報に対応する圧縮符号を後にする制御により生成される。図15に示す例(7)や例(8)の順序で圧縮符号を並べるには、図5のS204の処理で、共通文字情報に対応する圧縮符号を先に、識別記号に対応する圧縮符号を後にする制御が行われればよい。
図16は、圧縮辞書のデータ構造例を示す。図16に示される圧縮辞書D1aは、変換テーブルT1に登録されている文字情報に対応付けられた圧縮符号の組み合わせにおける順序を、圧縮辞書D1とは逆にしたものである。すなわち、共通文字情報に対応する圧縮符号が先で、識別記号に対応する圧縮符号が後の順序となっている。
圧縮辞書D1aは、圧縮辞書D1と同様、文字情報と圧縮符号とを対応付けている。図16においては、圧縮辞書D1aの文字情報「spend」、「spends」、「spent」および「spending」に関する部分のみについて内容が例示されている。例えば、文字情報「spent」については、圧縮符号c(spend)および圧縮符号c([c3])が、c(spend)c([c3])の順序で並んでいる。圧縮辞書D1aを用いて図10の圧縮データ生成処理が行われると、圧縮辞書D1a内の圧縮符号の順序がそのまま圧縮データに反映されるので、圧縮ファイルF2においてもc(spend)c([c3])の順序で圧縮符号が並ぶ。
図17は、伸長辞書のデータ構造例を示す。図17に示される伸長辞書D2aは、伸長コード(文字情報またはオフセット値)および符号長に加えて、さらに活用フラグが対応付けられる。伸長辞書D2aでは、共通文字情報に対応する圧縮符号に対しては、変換テーブルT1のオフセット値、圧縮符号の符号長およびONの状態の活用フラグが対応付けられる。共通文字情報に対応する圧縮符号に基づいて伸長辞書D2aが参照された場合には、活用フラグがONであることにより、伸長コードがオフセット値であることが判断可能となる。共通文字情報でない文字情報に対応する圧縮符号に対しては、文字情報、圧縮符号の符号長およびOFFの状態の活用フラグが対応付けられる。
伸長辞書D2aを用いると、伸長辞書D2aの活用フラグの参照により、共通文字情報に対応する圧縮符号であることが明らかとなるため、この次に識別記号が得られることも明らかとなる。そのため、識別記号に対応する圧縮符号と、文字情報に対応する圧縮符号とが競合することについて考慮する必要がなくなる。すなわち、図15に示す例(7)および例(8)の場合には、識別記号に対応する圧縮符号は、S203などで適用された符号割り当てのアルゴリズムによらずに、独自に割り当てても構わない。それにより、符号割り当てのアルゴリズムにより圧縮符号を割り当てる対象の文字情報の種類が少なくなる。特に、識別記号は、複数の文字情報に対して共通で用いられる(各動詞において過去形は識別記号[c3]で示される)ので、出現頻度が高い傾向にある。そのため、他の文字情報とともに可変長圧縮符号の割り当てが行なわれると、短い圧縮符号が割り当てられやすく、他の文字情報に割り当てられる圧縮符号は、長くなりやすい。そのため、識別記号に対して圧縮符号を独自に(文字情報とは別に)割り当てることにより、文字情報に割り当てられる圧縮符号の符号長が短くなる傾向にある。
また、識別記号に対して独自に短い圧縮符号を割り当てることが可能である。例えば、識別記号により8種類までの識別が行われるのであれば、3ビットの固定長符号を割り当ててもよい。この固定長割り当てについては、図19を用いて後述する。
図18は、伸長データ生成処理の処理手順例を示す。伸長辞書D2aを用いる場合には、伸長辞書D2を用いた場合と、伸長コードが文字情報であるか変換テーブルT1のオフセット値であるかを判定する仕組みが異なる。伸長辞書D2aが生成されると、制御部121は、圧縮ファイルF2に含まれる圧縮データに対応する伸長データを生成する処理を開始する。記憶領域A3からの読出し位置はファイルF2の圧縮データの始点にセットされ、記憶領域A4への書込み位置は記憶領域A4内の所定の位置にセットされる。
読出部123は記憶領域A3の読出し位置から圧縮データを読み出す(S801)。圧縮データの読出しは、前述の通り固定長(例えば、12ビット)で行なわれる。検索部122は、読み出した固定長データに基づいて伸長辞書D2aを参照する(S802)。制御部121は、記憶領域A3からの読出し位置を更新する(S803)。記憶領域A3からの読出し位置は、S802の参照により得られた符号長に基づいて更新される。
続いて、S802の参照により得られた活用フラグがONであるか否かを判定する(S804)。活用フラグがONである場合(S804:YES)には、読出部123は、記憶領域A3の読出し位置から識別記号に対応する圧縮符号を読み出す(S805)。さらに、制御部121は、読み出された圧縮符号に基づき識別記号を取得する。
検索部122は、S802の参照により得られたオフセット値と、S805で取得した識別記号とに基づいて変換テーブルT1を参照する(S806)。S806において、検索部122は、オフセット値(伸長コード)および識別記号により示される文字情報を、変換テーブルT1から取得する。制御部121は、S805で読み出した圧縮符号の符号長に応じて記憶領域A3の読出し位置を更新する(S807)。
S804の判定で活用フラグがOFFである(S804:NO)か、S807の処理を終えると、制御部121は、記憶領域A4の書き込み位置に文字情報の書き込みを行なう(S808)。S808で書き込まれる文字情報は、S802の伸長辞書D2aの参照により得られた伸長コードであるか、S806の変換テーブルT1の参照により得られた文字情報である。S808で書き込まれた文字情報の長さに応じて、制御部121は、記憶領域A4への書込み位置を更新する(S809)。
続いて、制御部121は、記憶領域A3からの読出し位置が、圧縮ファイルF2の圧縮データの終端であるか否かを判断する(S810)。記憶領域A3からの読出し位置が圧縮データの終端でない場合(S810:NO)には手順がS801に戻り、再度読出部123が圧縮データの読出しを行なう。記憶領域A3からの読出し位置が圧縮データの終端である場合(S810:YES)には、制御部121は伸長データ生成処理を終了し、手順がS505に移行する。
図7に示す変換テーブルT1によれば、識別記号[c1]〜[c5]は動詞に対して用いられ、識別記号[c6]〜[c8]は形容詞に対して用いられ、識別記号[c9]〜[c13]は代名詞に対して用いられる。例えば、識別記号[c1]が用いられる文字情報に対しては、識別記号[c6]〜[c13]は用いられない。そのため、識別記号に対して割り当てる圧縮符号が、識別記号[c6]〜[c13]のいずれかに割り当てる圧縮符号と競合しても、共通文字情報に対応する圧縮符号と識別記号[c1]に対応する圧縮符号との組み合わせにより文字情報が特定される。すなわち、識別記号[c1]〜[c5]に対しては、識別記号[c1]〜[c5]で互いに識別可能な圧縮符号が割り当てられればよい。また、識別記号[c6]〜[c8]に対しては、識別記号[c6]〜[c8]で互いに識別可能な圧縮符号が割り当てられればよい。同様に、識別記号[c9]〜[c13]に対しては、識別記号[c9]〜[c13]で互いに識別可能な圧縮符号が割り当てられればよい。
図19は、圧縮符号の割り当て例を示す。識別記号に対して固定長符号を割り当てるとすると、識別記号[c1]〜[c5](または[c9]〜[c13])の5種類を識別可能な圧縮符号が割り当てられればよい。例えば、図19の例によれば、各識別記号に対し、3ビットの固定長の圧縮符号が割り当てられる。
図19には、5種類の圧縮符号として、「000」、「001」、「010」、「011」および「100」が例示される。固定長圧縮符号「000」は、識別記号[c1]、識別記号[c6]および識別記号[c9]に対して共通で割り当てられる。固定長圧縮符号「001」は、識別記号[c2]、識別記号[c7]および識別記号[c10]に対して共通で割り当てられる。固定長圧縮符号「010」は、識別記号[c3]、識別記号[c8]および識別記号[c11]に対して共通で割り当てられる。固定長圧縮符号「011」は、識別記号[c4]および識別記号[c12]に対して共通で割り当てられる。固定長圧縮符号「100」は、識別記号[c5]および識別記号[c13]に対して共通で割り当てられる。共通で固定長符号が割り当てられた識別記号同士は、識別対象の文字情報が競合しない(品詞の種類が異なるため)ので、圧縮符号同士が競合しても伸長データ生成処理時の変換テーブルT1の参照(S706またはS806)で問題なく文字情報を取得可能となる。例えば、変換テーブルT1において、共通文字情報「spend」で識別情報の圧縮符号が「010」となる文字情報を探せば、文字情報「spent」を取得することが可能である。圧縮符号「010」は、識別記号[c3]にも識別記号[c8]にも対応するが、変換テーブルT1において、共通文字情報「spend」と関連付けられるは識別記号[c3]のみであるため、識別記号[c3]が特定される。
[規則変化する単語への対応]
上述の方法によれば、伸長処理時に変換テーブルT1を参照することにより、表記が異なる文字情報が取得された。動詞や形容詞については、不規則に語形が変化する単語が存在する一方で、語形変化のパターンが共通する場合がある。語形の変化パターンが共通する場合には、単語の基本形を語形変化のルールに従って語形変化させることにより、語形変化した単語を特定することが可能である。伸長時に共通文字情報をルールに従って語形変化させることで元の文字情報を復元できれば、変換テーブルT1の参照が不要となる。そのため、変換テーブルT1のうち、規則変化する文字情報に関する情報は、圧縮ファイルF2に含まれなくても構わない。変換テーブルT1のうち、規則変化する文字情報に関する情報を除いて圧縮ファイルF2に含めることにより、トレーラ情報のデータサイズが小さくなり、圧縮ファイルF2全体のファイルサイズが小さくなる。また、この場合には、頻度テーブルT2に登録された共通文字情報のうち、圧縮ファイルF2から取り出された変換テーブルに登録されていない共通文字情報が規則変化フラグをONにする対象となる。
上述の方法によれば、伸長処理時に変換テーブルT1を参照することにより、表記が異なる文字情報が取得された。動詞や形容詞については、不規則に語形が変化する単語が存在する一方で、語形変化のパターンが共通する場合がある。語形の変化パターンが共通する場合には、単語の基本形を語形変化のルールに従って語形変化させることにより、語形変化した単語を特定することが可能である。伸長時に共通文字情報をルールに従って語形変化させることで元の文字情報を復元できれば、変換テーブルT1の参照が不要となる。そのため、変換テーブルT1のうち、規則変化する文字情報に関する情報は、圧縮ファイルF2に含まれなくても構わない。変換テーブルT1のうち、規則変化する文字情報に関する情報を除いて圧縮ファイルF2に含めることにより、トレーラ情報のデータサイズが小さくなり、圧縮ファイルF2全体のファイルサイズが小さくなる。また、この場合には、頻度テーブルT2に登録された共通文字情報のうち、圧縮ファイルF2から取り出された変換テーブルに登録されていない共通文字情報が規則変化フラグをONにする対象となる。
図20は、伸長辞書のデータ構造例を示す。図20に示す伸長辞書D2bは、伸長コード(文字情報)と、圧縮符号の符号長、活用フラグおよび規則変化フラグが関連付けられている。規則変化フラグは、関連付けられた文字情報が規則変化する文字情報であるか否かを示す。ONの状態の規則変化フラグが関連付けられた文字情報は文法的に規則変化する文字情報(「talk」などの動詞など)である。一方、OFFの状態の規則変化フラグが関連付けられた文字情報は文法的に不規則変化する文字情報(「spend」などの動詞など)であるか、または変化しない文字情報である(一般名詞など)。例えば、規則変化フラグは、例えば、変換テーブルT1を拡長し、変換テーブルT1に登録された文字情報のそれぞれに対して設定される。伸長辞書D2bを生成する際に、変換テーブルT1から規則変化フラグが設定された文字情報を特定し、特定された文字情報について、伸長辞書D2b内の規則変化フラグがONに設定される。規則変化の文字情報に関する伸長を、テーブル参照でなくアルゴリズムで実行するために、図18に示す伸長データ生成処理が一部拡長される。
図21は、伸長データ生成処理の処理手順例を示す。S804において、活用フラグがONと判定された場合(S804:YES)には、読出部123は、識別記号に対応する圧縮符号を読み出す(S805)。さらに、制御部121は、S802の伸長辞書D2bの参照により参照される規則変化フラグがOFFであるか否かを判定する(S811)。
規則変化フラグがOFFである場合(S811:YES)には、変換テーブルT1を識別号とオフセット値に基づいて参照するS806の処理が行われる(S806)。S806が行われると、続いてS807の処理が行われる。
図22は、伸長データ生成処理の処理手順例を示す。規則変化フラグがONである場合(S811:NO)には、S805で読み出された圧縮符号に対応する識別記号が[c1]であるか否かを判定する(S812)。S812の判定で識別記号[c1]である場合(S812:YES)には、制御部121は、伸長辞書D2bからS801で読み出した圧縮データに対応する伸長コード(文字情報)を取得する(S813)。S813の処理が行われると、それに続いてS807の処理が行われる。S812の判定で識別記号[c1]でない場合(S812:NO)には、S805で読み出された圧縮符号に対応する識別記号が[c2]であるか否かを判定する(S814)。S814の判定で識別記号[c2]でない場合(S814:NO)には、S805で読み出された圧縮符号に対応する識別記号が[c3]であるか否かを判定する(S815)。S815の判定で識別記号[c3]でない場合(S815:NO)には、S805で読み出された圧縮符号に対応する識別記号が[c4]であるか否かを判定する(S816)。S816の判定で識別記号[c4]でない場合(S816:NO)には、S805で読み出された圧縮符号に対応する識別記号が[c5]であるか否かを判定する(S817)。S817の判定で識別記号[c6]である場合(S817:YES)には、制御部121は、伸長辞書D2bからS801で読み出した圧縮データに対応する伸長コード(文字情報)を取得する(S818)。S818の処理が行われると、それに続いてS807の処理が行われる。S817の判定で識別記号[c6]でない場合(S817:NO)には、S805で読み出された圧縮符号に対応する識別記号が[c7]であるか否かを判定する(S819)。
図23は、伸長データ生成処理の処理手順例を示す。S814の判定で識別記号[c2]である場合(S814:YES)には、制御部121は、伸長辞書D2bからS801で読み出した圧縮データに対応する伸長コード(文字情報)を取得する(S820)。続いて、制御部121は、S820で取得した文字情報の末尾が、「s」、「sh」、「ch」、「x」および「o」のうちのいずれかであるか否かを判定する(S821)。S821において、いずれかに該当すると判断された場合(S821:YES)には、制御部121は、S820で取得された文字情報に「es」を追加する(S822)。S822の処理が行われると、それに続いてS807の処理が行われる。
S821において、いずれにも該当しないと判断された場合(S821:NO)には、制御部121は、S820で取得された文字情報の末尾が、子音(「a」、「e」、「i」、「u」および「o」以外のアルファベット)に「y」が後続する語形であるか否かを判定する(S823)。S823において、子音に「y」が後続する語形であると判定された場合(S823:YES)には、制御部121は、S820で取得された文字情報の末尾の「y」を「ies」に変更する(S824)。S824の処理が行われると、それに続いてS807の処理が行われる。
S823において、子音に「y」が後続する語形でないと判定された場合(S823:NO)には、制御部121は、S820で取得された文字情報の末尾に「s」を追加する(S825)。S825の処理が行われると、それに続いてS807の処理が行われる。
図24は、伸長データ生成処理の処理手順例を示す。S815の判定で識別記号[c3]である場合(S815:YES)には、制御部121は、伸長辞書D2bからS801で読み出した圧縮データに対応する伸長コード(文字情報)を取得する(S826)。続いて、制御部121は、S826で取得した文字情報の末尾が「e」であるか否かを判定する(S827)。S827において、S826で取得した文字情報の末尾が「e」であると判断された場合(S827:YES)には、制御部121は、S826で取得された文字情報に「d」を追加する(S828)。S828の処理が行われると、それに続いてS807の処理が行われる。
S827において、S826で取得した文字情報の末尾が「e」でないと判断された場合(S827:NO)には、制御部121は、S826で取得された文字情報の末尾が、子音に「y」が後続する語形であるか否かを判定する(S829)。S829において、子音に「y」が後続する語形であると判定された場合(S829:YES)には、制御部121は、S826で取得された文字情報の末尾の「y」を「ied」に変更する(S830)。S830の処理が行われると、それに続いてS807の処理が行われる。
S829において、子音に「y」が後続する語形でないと判定された場合(S829:NO)には、制御部121は、S826で取得された文字情報の末尾に「ed」を追加する(S831)。S831の処理が行われると、それに続いてS807の処理が行われる。
図25は、伸長データ生成処理の処理手順例を示す。S816の判定で識別記号[c4]である場合(S816:YES)には、制御部121は、伸長辞書D2bからS801で読み出した圧縮データに対応する伸長コード(文字情報)を取得する(S832)。続いて、制御部121は、S832で取得した文字情報の末尾が「e」であるか否かを判定する(S833)。S833において、S832で取得した文字情報の末尾が「e」であると判断された場合(S833:YES)には、制御部121は、S832で取得された文字情報の末尾の「e」を「ing」に変更する(S834)。S834の処理が行われると、それに続いてS807の処理が行われる。
S833において、S832で取得した文字情報の末尾が「e」でないと判断された場合(S833:NO)には、制御部121は、S832で取得された文字情報の末尾に「ing」を追加する(S835)。S835の処理が行われると、それに続いてS807の処理が行われる。
図26は、伸長データ生成処理の処理手順例を示す。S819の判定で識別記号[c7]である場合(S819:YES)には、制御部121は、伸長辞書D2bからS801で読み出した圧縮データに対応する伸長コード(文字情報)を取得する(S836)。続いて、制御部121は、S836で取得した文字情報の末尾が「e」であるか否かを判定する(S837)。S837において、S836で取得した文字情報の末尾が「e」であると判断された場合(S837:YES)には、制御部121は、S836で取得された文字情報に「r」を追加する(S838)。S838の処理が行われると、それに続いてS807の処理が行われる。
S837において、S836で取得した文字情報の末尾が「e」でないと判断された場合(S837:NO)には、制御部121は、S836で取得された文字情報の末尾が、子音に「y」が後続する語形であるか否かを判定する(S839)。S839において、子音に「y」が後続する語形であると判定された場合(S839:YES)には、制御部121は、S836で取得された文字情報の末尾の「y」を「ier」に変更する(S840)。S840の処理が行われると、それに続いてS807の処理が行われる。
S839において、子音に「y」が後続する語形でないと判定された場合(S839:NO)には、制御部121は、S836で取得された文字情報の末尾に「er」を追加する(S841)。S841の処理が行われると、それに続いてS807の処理が行われる。
図27は、伸長データ生成処理の処理手順例を示す。図22のS819の判定で識別記号[c7]でない場合(S819:NO)には、制御部121は、伸長辞書D2bからS801で読み出した圧縮データに対応する伸長コード(文字情報)を取得する(S842)。続いて、制御部121は、S842で取得した文字情報の末尾が「e」であるか否かを判定する(S843)。S843において、S842で取得した文字情報の末尾が「e」であると判断された場合(S843:YES)には、制御部121は、S842で取得された文字情報に「st」を追加する(S844)。S844の処理が行われると、それに続いてS807の処理が行われる。
S843において、S842で取得した文字情報の末尾が「e」でないと判断された場合(S843:NO)には、制御部121は、S842で取得された文字情報の末尾が、子音に「y」が後続する語形であるか否かを判定する(S845)。S845において、子音に「y」が後続する語形であると判定された場合(S845:YES)には、制御部121は、S842で取得された文字情報の末尾の「y」を「iest」に変更する(S846)。S846の処理が行われると、それに続いてS807の処理が行われる。
S845において、子音に「y」が後続する語形でないと判定された場合(S845:NO)には、制御部121は、S842で取得された文字情報の末尾に「est」を追加する(S847)。S847の処理が行われると、それに続いてS807の処理が行われる。
[本実施形態の実現手段]
以下に、上述の圧縮処理や伸長処理を実施する構成について説明する。
以下に、上述の圧縮処理や伸長処理を実施する構成について説明する。
図28は、コンピュータ1のハードウェア構成例を示す。コンピュータ1は、例えば、プロセッサ301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、ドライブ装置304、記憶媒体305、入力インターフェース(I/F)306、入力デバイス307、出力インターフェース(I/F)308、出力デバイス309、通信インターフェース(I/F)310、SAN(Storage Area Network)インターフェース(I/F)311およびバス312などを含む。それぞれのハードウェアはバス312を介して接続されている。
RAM302は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAM以外にもフラッシュメモリなどが用いられてもよい。ROM303は、PROM(Programmable ROM)などでもよい。ドライブ装置304は、記憶媒体305に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体305は、ドライブ装置304によって書き込まれた情報を記憶する。記憶媒体305は、例えば、ハードディスク、SSD(Solid State Drive)などのフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ1は、複数種類の記憶媒体それぞれについて、ドライブ装置304及び記憶媒体305を設ける。
入力インターフェース306は、入力デバイス307と接続されており、入力デバイス307から受信した入力信号をプロセッサ301に伝達する回路である。出力インターフェース308は、出力デバイス309と接続されており、出力デバイス309に、プロセッサ301の指示に応じた出力を実行させる回路である。通信インターフェース310はネットワーク3を介した通信の制御を行なう回路である。通信インターフェース310は、例えばネットワークインターフェースカード(NIC)などである。SANインターフェース311は、ストレージエリアネットワーク4によりコンピュータ1と接続された記憶装置との通信の制御を行なう回路である。SANインターフェース311は、例えばホストバスアダプタ(HBA)などである。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、コンピュータ1の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307及び出力デバイス309として用いられる。また、入力デバイス307及び出力デバイス309は、コンピュータ1と一体になっていてもよいし、コンピュータ1に含まれず、例えば、コンピュータ1に外部から有線または無線で接続する装置であってもよい。
例えば、プロセッサ301は、ROM303や記憶媒体305に記憶されたプログラムをRAM302に読み出し、読み出されたプログラムの手順に従って圧縮部11、伸長部12、生成部13および生成部14の少なくとも1つの処理を行なう。その際にRAM302はプロセッサ301のワークエリアとして用いられる。記憶部15の機能は、ROM303および記憶媒体305がプログラムファイル(後述のアプリケーションプログラム24、ミドルウェア23およびOS22など)やデータファイル(ファイルF1、圧縮ファイルF2および伸長ファイルF3など)を記憶し、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。プロセッサ301が読み出すプログラムについては、図29を用いて説明する。
図29は、コンピュータ1で動作するプログラム構成例を示す。アプリケーションプログラム24またはミドルウェア23は、本実施形態の圧縮機能または伸長機能の処理手順が定められたプログラムである。もしくは、アプリケーションプログラム24またはミドルウェア23は、本実施形態の圧縮辞書生成または伸長辞書生成の処理手順が定められたプログラムである。
圧縮機能の処理手順が定められた圧縮プログラムと、伸長機能の処理手順が定められた伸長プログラムとが一体のプログラムでもよいし、別体のプログラムでもよい。さらに、圧縮辞書生成の手順が定められた圧縮辞書生成プログラムは、圧縮プログラムに含まれてもよいし、圧縮プログラムにより呼び出される別体のプログラムでもよい。また、伸長辞書生成の手順が定められた伸長辞書生成プログラムは、伸長プログラムに含まれてもよいし、伸長プログラムにより読み出される別体のプログラムでもよい。もしくはOS(オペレーティング・システム)22の一機能として、本実施形態の圧縮機能および伸長機能の少なくとも一方が提供されてもよい。
例えば、上述の圧縮機能および伸長機能の少なくとも一方、圧縮プログラム、伸長プログラム、圧縮辞書生成プログラムならびに伸長辞書生成プログラムの少なくとも1つは、記憶媒体に記憶される。例えば、その記憶媒体がドライブ装置304により読み取られ、インストールされることにより記憶媒体に記憶されたプログラムが実行可能な状態になる。インストールされたプログラムに定められた処理手順の各々は、OS22に基づいてハードウェア群21(301〜312)が制御されることにより実行される。
図3に示すコンピュータ1に含まれる各機能ブロックの機能は、プロセッサ301が、圧縮プログラムまたは伸長プログラムを実行することにより提供される。圧縮プログラムの各処理手順がプロセッサ301に実行されることにより圧縮部11および生成部13内に含まれる各機能ブロックの機能が提供される。また、伸長プログラムの処理手順がプロセッサ301に実行されることにより伸長部12および生成部14内に含まれる各機能ブロックの機能が提供される。
例えば、圧縮部11内の機能ブロックは、以下のようにハードウェア群21を用いて実行される。制御部111の機能は、プロセッサ301が、RAM302内へのアクセス(記憶領域の確保、ファイルのロードなど)を行ない、また、レジスタ内で処理ステータス(読出し位置や書込み位置など)を管理し、レジスタ内に保持された情報との合致判定を行なうことにより提供される。読出部113の機能は、プロセッサ301がレジスタ内の処理ステータスに応じてRAM302にアクセスすることにより提供される。検索部112の機能は、プロセッサ301がRAM302にアクセスし、アクセス結果に基づく照合判定を行なうことにより提供される。書込部114の機能は、プロセッサ301がレジスタ内の処理ステータスに応じてRAM302にアクセスすることにより提供される。
例えば、伸長部12内の機能ブロックは、以下のようにハードウェア群21を用いて実行される。制御部121の機能は、プロセッサ301が、RAM302内へのアクセス(記憶領域の確保、ファイルのロードなど)を行ない、レジスタ内で処理ステータス(読出し位置や書込み位置など)を管理し、レジスタ内に保持された情報との合致判定を行なうことにより提供される。また、読出部123の機能は、プロセッサ301がレジスタ内の処理ステータスに応じてRAM302にアクセスすることにより提供される。検索部122の機能は、プロセッサ301がRAM302にアクセスし、アクセス結果に基づく照合判定を行なうことにより提供される。書込部124の機能は、プロセッサ301がレジスタ内の処理ステータスに応じてRAM302にアクセスすることにより提供される。
例えば、生成部13内の機能ブロックは、以下のようにハードウェア群21を用いて実行される。制御部131の機能は、プロセッサ301がRAM302の領域管理およびRAM302へのアクセスを行ない、さらに、プロセッサ301がルーチンの処理結果に応じたルーチンの呼出しを行なうことにより提供される。統計部132の機能は、プロセッサ301によるRAM302へのアクセス処理およびアクセス処理の結果に応じた演算処理により提供される。ソート部134の機能は、プロセッサ301によるRAM302へのアクセスとアクセス結果に応じた演算処理により提供される。割当部133の機能は、プロセッサ301がRAM302へのアクセスに基づく演算処理を行なうことにより提供される。
例えば、生成部14内の機能ブロックは、以下のようにハードウェア群21を用いて実行される。制御部141の機能は、プロセッサ301がRAM302の領域管理およびRAM302へのアクセスを行ない、さらに、プロセッサ301がルーチンの処理結果に応じたルーチンの呼出しを行なうことにより提供される。複製部143の機能は、プロセッサ301によるRAM302へのアクセス処理により提供される。ソート部144の機能は、プロセッサ301によるRAM302へのアクセスとアクセス結果に応じた演算処理により提供される。割当部142の機能は、プロセッサ301がRAM302へのアクセスに基づく演算処理を行なうことにより提供される。
図30は、コンピュータ1を用いたシステム構成例を示す。図30に例示する情報処理システムは、基地局2、ネットワーク3、コンピュータ1aおよびコンピュータ1bを含む。コンピュータ1aは、無線または有線の少なくとも一方により、コンピュータ1bと接続されたネットワーク3に接続している。図3に示す圧縮部11、伸長部12、生成部13および生成部14が、コンピュータ1aのみに含まれてもよいし、コンピュータ1aおよびコンピュータ1bの双方に含まれてもよい。コンピュータ1aが圧縮部11および生成部13を含み、コンピュータ1bが伸長部12および生成部14を含んでもよいし、それとは逆に、コンピュータ1bが圧縮部11および生成部13を含み、コンピュータ1aが伸長部12および生成部14を含んでもよい。
例えば、コンピュータ1aで生成された圧縮ファイルF2がネットワーク3を介した通信によりコンピュータ1bに送信され、コンピュータ1bにより圧縮ファイルF2が伸長されて伸長ファイルF3が生成される。圧縮ファイルF2は無線で基地局2に送信され、基地局2からコンピュータ1bに送信されてもよい。
本実施形態の圧縮機能や伸長機能によれば圧縮率の増大が抑制されるので、通信される圧縮データの量が削減される。それにより通信処理に対する図30に例示されるシステムのハードウェアリソースの使用が抑制される。
図31は、コンピュータ1を用いたシステム構成例を示す。図31に例示する情報処理システムは、コンピュータ1、ネットワーク3、クライアント装置6、ストレージエリアネットワーク(SAN)4およびストレージ装置5を含む。例えば、コンピュータ1は、クライアント装置6からの要求に応じた情報処理を行なう。情報処理対象のデータは、例えばストレージ装置5に圧縮されて記憶されている。コンピュータ1は、クライアント装置6から要求を受けた場合に、圧縮されてストレージ装置5に記憶された情報処理対象のデータを取得して伸長する。コンピュータ1は、伸長したデータに対してクライアント装置6から要求された情報処理を実行し、さらに、情報処理後のデータを圧縮し、ストレージ装置5に格納する。情報処理は、例えば、ストレージ装置5に記憶されたデータの更新処理や、ストレージ装置5に記憶されたデータの分析・解析処理などである。
図31に例示されるシステムにおいて、圧縮処理や伸長処理の度に圧縮辞書や伸長辞書を生成しなくても、一度作成した圧縮辞書や伸長辞書を保持しておき、その圧縮辞書や伸長辞書に基づいて圧縮処理または伸長辞書が実行されてもよい。その場合、図4のS103の処理や図11のS503の処理は、単に保持されている圧縮辞書や伸長辞書をロードするのみでもよい。
図31に例示するシステムでは、情報処理の要求を受けるたびにデータの伸長が行なわれる。伸長処理に時間がかかると要求に対する応答までの時間も増大してしまう。本実施形態の圧縮機能により圧縮率が低下しにくいので、圧縮データをストレージ装置5から読み出すI/O回数の増大が抑制される。また、圧縮符号数が極端に増大しないので伸長処理にかかるメモリアクセスの回数が抑制される。また、圧縮ファイルF2のロードに確保される記憶領域も少なく抑えられる。
[圧縮符号の種類]
英和辞典などで大学教養課程程度までに必要であると分類される単語の数は約4000語となる。この4000語は、文書データにおいて使用頻度が比較的高い基礎単語である。そのうち、名詞が2000語程度であり、形容詞が700語程度であり、動詞が800語程度である。例えば、形容詞の活用形それぞれに対して圧縮符号を割り当てると、形容詞に関して圧縮符号が2100種類程度割り当てられることになる。また、例えば、動詞の活用形それぞれに対して圧縮符号を割り当てると、動詞に関して圧縮符号が3200〜4000種類程度割り当てられることになる(過去形と過去分詞が同じ表記である動詞が存在するため、各動詞について4〜5種類の活用形が存在するため)。
英和辞典などで大学教養課程程度までに必要であると分類される単語の数は約4000語となる。この4000語は、文書データにおいて使用頻度が比較的高い基礎単語である。そのうち、名詞が2000語程度であり、形容詞が700語程度であり、動詞が800語程度である。例えば、形容詞の活用形それぞれに対して圧縮符号を割り当てると、形容詞に関して圧縮符号が2100種類程度割り当てられることになる。また、例えば、動詞の活用形それぞれに対して圧縮符号を割り当てると、動詞に関して圧縮符号が3200〜4000種類程度割り当てられることになる(過去形と過去分詞が同じ表記である動詞が存在するため、各動詞について4〜5種類の活用形が存在するため)。
本実施形態で示した圧縮辞書や伸長辞書の構造でなく、一般のハフマン符号化アルゴリズムで生成される圧縮辞書や伸長辞書が本実施形態において用いられてもよい。ハフマン符号化において、伸長辞書は、圧縮符号の割り当て対象の文字情報同士の出現頻度の比較によりビットが割り当てられる。ここで、出現頻度が比較された文字情報の組に対応する節のデータが生成される。さらに、生成された節同士で出現頻度の比較が行なわれ、順次ビットが生成される。上述の手順が繰り返されて木構造のデータ(ハフマン木)が形成される。圧縮符号の割り当て対象の文字情報(葉のデータ)が2の12乗存在すると、それらの比較により2の11乗の節のデータが生成される。節同士の頻度情報の比較により、順次節のデータが生成されると、葉のデータと節のデータとを合わせて2の13乗存在することになる。節のデータには、それぞれ上位の節のデータへのポインタと、下位のポインタ(ビットが1の場合とビットが0の場合との双方)が含まれる。それぞれのポインタが2バイトであるとすると、ポインタにより3×2の14乗のハフマン木のデータ構造内の位置が特定される。
しかしながら、活用形に対して圧縮符号を割り当てることとすると、4000語の基礎単語が8000語程度になってしまう。すると、圧縮符号の割り当て対象の文字情報が2の13乗存在することとなり、結果的にハフマン木のデータ構造内の位置が2バイトで特定できなくなってしまう。すると、アーキテクチャによるが、例えば、ポインタに4バイト使用することとなってしまい、ハフマン木のデータサイズが圧縮符号の割り当て対象が倍になったことにより倍増し、ポインタのデータサイズの都合によりさらに倍増してしまう。
[変形例の説明]
以下、上述の実施形態における変形例の一部を説明する。図7に示す変換テーブルT1において、同義語や類義語が設定されてもよい。たとえば、文字情報「center」、「centre」および「middle」が共通文字情報「center」に対応付けられる。さらに、例えば、変換テーブルT1において、文字情報「center」は、共通文字情報「center」および識別記号[c1]の組み合わせと対応づけられる。また、例えば、変換テーブルT1において、文字情報「centre」は、共通文字情報「center」および識別記号[c2]の組み合わせと対応づけられる。さらに、例えば、変換テーブルT1において、文字情報「middle」は、共通文字情報「center」および識別記号[c3]の組み合わせと対応づけられる。このように同義語または類義語が設定された変換テーブルT1を上述の実施形態に適用することにより、同義語や類義語などの表記ゆれによる圧縮率低下を抑制できる。
以下、上述の実施形態における変形例の一部を説明する。図7に示す変換テーブルT1において、同義語や類義語が設定されてもよい。たとえば、文字情報「center」、「centre」および「middle」が共通文字情報「center」に対応付けられる。さらに、例えば、変換テーブルT1において、文字情報「center」は、共通文字情報「center」および識別記号[c1]の組み合わせと対応づけられる。また、例えば、変換テーブルT1において、文字情報「centre」は、共通文字情報「center」および識別記号[c2]の組み合わせと対応づけられる。さらに、例えば、変換テーブルT1において、文字情報「middle」は、共通文字情報「center」および識別記号[c3]の組み合わせと対応づけられる。このように同義語または類義語が設定された変換テーブルT1を上述の実施形態に適用することにより、同義語や類義語などの表記ゆれによる圧縮率低下を抑制できる。
図7に示す変換テーブルT1において、頭文字が大文字の単語と頭文字が小文字の単語との双方が設定されてもよい。例えば、変換テーブルT1は、文字情報「this」および「This」を共通文字情報「this」とそれぞれ対応づける。文字情報「this」は、共通文字情報「this」および識別記号[c1]の組み合わせと対応づけられる。文字情報「This」は、共通文字情報「this」および識別記号[c2]の組み合わせと対応づけられる。このように単語の頭文字が大文字である場合と小文字の場合との双方が設定された変換テーブルT1を上述の実施形態に適用することにより、文頭の単語の表記ゆれによる圧縮率低下を抑制できる。
また、圧縮処理の対象は、ファイル以外にも、システムから出力される監視メッセージなどでもよい。例えば、バッファに順次格納される監視メッセージを上述の圧縮処理により圧縮し、ログファイルとして格納するなどの処理が行なわれる。また、例えば、データベース内のページ単位に圧縮が行なわれてもよいし、複数のページをまとめた単位で圧縮が行なわれてもよい。また、圧縮辞書は複数の監視メッセージに対して共通の圧縮辞書が用いられてもよいし、複数のページに対して共通の圧縮辞書が用いられてもよい。
1 コンピュータ
1a コンピュータ
1b コンピュータ
2 基地局
3 ネットワーク
4 ストレージエリアネットワーク
5 ストレージ装置
6 クライアント装置
11 圧縮部
12 伸長部
13 生成部
14 生成部
15 記憶部
1a コンピュータ
1b コンピュータ
2 基地局
3 ネットワーク
4 ストレージエリアネットワーク
5 ストレージ装置
6 クライアント装置
11 圧縮部
12 伸長部
13 生成部
14 生成部
15 記憶部
Claims (21)
- 互いに異なる複数の文字情報対して割り当てられた第1の圧縮符号が、前記複数の文字情報のそれぞれに関連付けられた辞書情報を記憶する記憶部と、
前記複数の文字情報のうちの第1の文字情報を取得した場合に、前記第1の文字情報と関連付けられた前記第1の圧縮符号を前記辞書情報から取得する取得部と、
取得した前記第1の圧縮符号を、圧縮データを格納する格納領域に書き込む書込部と、
を含むことを特徴とする圧縮装置。 - 前記複数の文字情報は、前記複数の文字情報のそれぞれにより表される意味または文法上の機能の少なくとも一部が互いに共通し、
前記第1の圧縮符号は、前記複数の文字情報の出現頻度の合計に応じて生成される、
ことを特徴とする請求項1に記載の圧縮装置。 - 前記辞書情報は、前記第1の文字情報に、さらに、前記複数の文字情報に含まれる前記第1の文字情報以外の文字情報と前記第1の文字情報とを識別する第1の識別情報を関連付け、
前記取得部は、前記第1の圧縮符号を取得するとともに、前記第1の識別情報を取得し、
前記書込部は、前記第1の圧縮符号および前記第1の識別情報を前記格納領域に書き込む、
ことを特徴とする請求項1または請求項2に記載の圧縮装置。 - 前記第1の識別情報は、前記第1の文字情報の出現頻度に応じて生成された圧縮符号であり、
前記第1の識別情報に続いて前記第1の圧縮符号が前記格納領域に書き込まれる、
ことを特徴とする請求項3に記載の圧縮装置。 - 前記第1の識別情報は、固定長の圧縮符号であり、前記第1の圧縮符号に続いて前記格納領域に書き込まれる、
ことを特徴とする請求項3に記載の圧縮装置。 - コンピュータに、
互いに異なる複数の文字情報に対して割り当てられた第1の圧縮符号が前記複数の文字情報のそれぞれに関連付けられた辞書情報を、前記複数の文字情報のうちの第1の文字情報を取得した場合に参照して、前記辞書情報により前記第1の文字情報と関連付けられた前記第1の圧縮符号を取得し、
取得した前記第1の圧縮符号を、圧縮データを格納する格納領域に書き込む、
ことを実行させることを特徴とする圧縮方法。 - コンピュータに、
互いに異なる複数の文字情報に対して割り当てられた第1の圧縮符号が前記複数の文字情報のそれぞれに関連付けられた辞書情報を、前記複数の文字情報のうちの第1の文字情報を取得した場合に参照して、前記辞書情報により前記第1の文字情報と関連付けられた前記第1の圧縮符号を取得し、
取得した前記第1の圧縮符号を、圧縮データを格納する格納領域に書き込む、
処理を実行させることを特徴とする圧縮プログラム。 - 互いに異なる複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数の文字情報に対応する第1の文字情報とを関連付けた辞書情報を記憶する記憶部と、
前記第1の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第1の圧縮符号に関連付けられた前記第1の文字情報を前記辞書情報から取得する取得部と、
取得した前記第1の文字情報を前記圧縮データの伸張結果を格納する格納領域に書き込む書込部と、
を含むことを特徴とする伸張装置。 - 前記辞書情報は、前記第1の文字情報と、前記複数の文字情報に含まれる第2の文字情報を前記複数の文字情報に含まれる前記第2の文字情報以外の文字情報と識別する識別情報との組み合わせの格納先を示す格納先情報を、前記第1の圧縮符号に関連付けることにより、前記第1の圧縮符号と前記第1の文字情報とを関連付ける、
ことを特徴とする請求項8に記載の伸張装置。 - 前記第1の圧縮符号は、前記複数の文字情報の出現頻度の合計に応じて生成され、
前記辞書情報は、前記第1の圧縮符号に、さらに、前記第1の圧縮符号が前記複数の文字情報の出現頻度の合計に基づいて生成された旨を示すフラグ情報を対応付け、
前記取得部は、前記辞書情報において前記第1の圧縮符号に前記フラグ情報が対応付けられている場合に、前記格納先情報に基づく前記格納先へのアクセスにより前記第1の文字情報を取得する、
ことを特徴とする請求項9に記載の伸張装置。 - コンピュータに、
互いに異なる複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数の文字情報に対応する第1の文字情報とを関連付けた辞書情報を生成し、
前記第1の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第1の圧縮符号に関連付けられた前記第1の文字情報を前記辞書情報から取得し、
取得した前記第1の文字情報を前記圧縮データの伸張結果を格納する格納領域に書き込む、
ことを実行させることを特徴とする伸張方法。 - コンピュータに、
複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数の文字情報に対応する第1の文字情報とを関連付けた辞書情報を生成し、
前記第1の圧縮符号を圧縮データから取得した場合に、前記辞書情報において前記第1の圧縮符号に関連付けられた前記第1の文字情報を前記辞書情報から取得し、
取得した前記第1の文字情報を前記圧縮データの伸張結果を格納する格納領域に書き込む、
処理を実行させることを特徴とする伸張プログラム。 - 圧縮データが記憶された記憶装置と、
前記圧縮データに対する処理要求に応じた処理を実行する処理装置を含む情報処理システムであって、
前記処理装置は、
互いに異なる複数の文字情報に対して割り当てられた第1の圧縮符号を、前記複数の文字情報のそれぞれに関連付けた辞書情報を記憶する記憶部と、
前記処理要求に応じて、前記記憶装置から前記圧縮データを読み出す読出部と、
前記第1の圧縮符号を前記圧縮データから取得した場合に、前記辞書情報において前記第1の圧縮符号に関連付けられた第1の文字情報を前記辞書情報から取得する第1の取得部と、
取得した前記第1の文字情報を前記圧縮データの伸張結果を格納する第1の格納領域に書き込む第1の書込部と、
前記第1の格納領域に格納された伸張結果に対して前記処理要求に応じた処理を実行する処理部と、
前記処理要求に応じた処理が行なわれたデータから前記第1の文字情報を取得した場合に、前記辞書情報により前記第1の文字情報と関連付けられた前記第1の圧縮符号を取得する第2の取得部と、
取得した前記第1の圧縮符号を第2の格納領域に書き込む第2の書込部と、
前記第2の領域に書き込まれたデータを前記記憶装置に格納する格納部と、
を含むことを特徴とする情報処理システム。 - 互いに異なる複数の文字情報に対応する1種類の共通文字情報に対して圧縮符号の割り当て処理を行なう割当部と、
前記複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第1の圧縮符号を関連付けた辞書情報を生成する生成部と、
を含むことを特徴とする辞書生成装置。 - 前記複数の文字情報は、前記複数の文字情報のそれぞれにより表される意味または文法上の機能の少なくとも一部が互いに共通し、
前記圧縮符号は、前記複数の文字情報の出現頻度の合計に応じて生成される、
ことを特徴とする請求項14に記載の辞書生成装置。 - 前記辞書情報は、前記複数の文字情報のうちの第1の文字情報に、前記複数の文字情報に含まれる前記第1の文字情報以外の文字情報と前記第1の文字情報とを識別する第1の識別情報をさらに関連付ける、
ことを特徴とする請求項14または請求項15に記載の辞書生成装置。 - コンピュータに、
互いに異なる複数の文字情報に対応する1種類の共通文字情報に対して圧縮符号の割り当て処理を行ない、
前記複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第1の圧縮符号を関連付けた辞書情報を生成する、
ことを実行させることを辞書生成方法。 - コンピュータに、
互いに異なる複数の文字情報に対応する1種類の共通文字情報に対して圧縮符号の割り当て処理を行ない、
前記複数の文字情報のそれぞれに、前記共通文字情報に割り当てられた第1の圧縮符号を関連付けた辞書情報を生成する、
処理を実行させることを特徴とする辞書生成プログラム。 - 互いに異なる複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数の文字情報に対応する第1の文字情報と、を関連付ける辞書情報を生成する生成部、
を含むことを特徴とする辞書生成装置。 - コンピュータに、
互いに異なる複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数の文字情報に対応する第1の文字情報と、を関連付ける辞書情報を生成する、
ことを実行させることを特徴とする辞書生成方法。 - コンピュータに、
互いに異なる複数の文字情報に対して共通して割り当てられた第1の圧縮符号と、前記複数の文字情報に対応する第1の文字情報と、を関連付ける辞書情報を生成する、
処理を実行させることを特徴とする辞書生成プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/001977 WO2014147672A1 (ja) | 2013-03-22 | 2013-03-22 | 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2014147672A1 true JPWO2014147672A1 (ja) | 2017-02-16 |
Family
ID=51579414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015506368A Pending JPWO2014147672A1 (ja) | 2013-03-22 | 2013-03-22 | 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160006456A1 (ja) |
EP (1) | EP2978134A4 (ja) |
JP (1) | JPWO2014147672A1 (ja) |
KR (1) | KR20150119403A (ja) |
CN (1) | CN105052041A (ja) |
AU (1) | AU2013382911A1 (ja) |
WO (1) | WO2014147672A1 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6107513B2 (ja) * | 2013-07-29 | 2017-04-05 | 富士通株式会社 | 情報処理システム、情報処理方法、および情報処理プログラム |
CN105530011A (zh) * | 2014-09-30 | 2016-04-27 | 华东师范大学 | 一种基于三角形统计的图数据压缩方法和查询方法 |
JP6686639B2 (ja) * | 2016-03-31 | 2020-04-22 | 富士通株式会社 | 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法 |
KR20180035642A (ko) | 2016-09-29 | 2018-04-06 | 삼성전자주식회사 | 무선 셀룰라 통신 시스템에서 상향링크 제어신호 전송 방법 및 장치 |
JP6737117B2 (ja) | 2016-10-07 | 2020-08-05 | 富士通株式会社 | 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置 |
JP6784636B2 (ja) * | 2017-04-13 | 2020-11-11 | 日立オートモティブシステムズ株式会社 | 制御装置、プログラム更新システム、プログラム更新方法 |
JP6931442B2 (ja) | 2017-05-16 | 2021-09-08 | 富士通株式会社 | 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法 |
CN108268583B (zh) * | 2017-08-21 | 2022-06-14 | 阿里巴巴(中国)有限公司 | 表情符号含义展示的方法及设备 |
GB2575435B (en) * | 2018-06-29 | 2022-02-09 | Imagination Tech Ltd | Guaranteed data compression |
US11177824B2 (en) | 2018-07-23 | 2021-11-16 | International Business Machines Corporation | Dictionary embedded expansion procedure |
CN109412604A (zh) * | 2018-12-05 | 2019-03-01 | 云孚科技(北京)有限公司 | 一种基于语言模型的数据压缩方法 |
US11301474B2 (en) * | 2019-05-03 | 2022-04-12 | Microsoft Technology Licensing, Llc | Parallelized parsing of data in cloud storage |
WO2021019789A1 (ja) * | 2019-08-01 | 2021-02-04 | 富士通株式会社 | 制御方法、制御プログラムおよび情報処理装置 |
US11122095B2 (en) * | 2019-09-23 | 2021-09-14 | Netapp, Inc. | Methods for dictionary-based compression and devices thereof |
WO2021134574A1 (zh) * | 2019-12-31 | 2021-07-08 | 深圳华大智造科技有限公司 | 创建基因突变词典及利用基因突变词典压缩基因组数据的方法和装置 |
CN113138968A (zh) * | 2020-01-20 | 2021-07-20 | 普天信息技术有限公司 | 日志压缩方法及日志解压缩方法 |
US11321292B2 (en) * | 2020-08-31 | 2022-05-03 | Chicago Mercantile Exchange Inc. | Accumulation-based data object processing |
CN112437060B (zh) * | 2020-11-11 | 2022-11-18 | 平安普惠企业管理有限公司 | 一种数据传输方法、装置、计算机设备及存储介质 |
CN117171399B (zh) * | 2023-11-02 | 2024-02-20 | 云图数据科技(郑州)有限公司 | 基于云平台的新能源数据优化存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324730A (ja) * | 1992-05-27 | 1993-12-07 | Hitachi Ltd | 文書情報検索装置 |
JPH07160684A (ja) * | 1993-12-03 | 1995-06-23 | Matsushita Electric Ind Co Ltd | 文書圧縮装置および文書圧縮方法 |
JP2005242416A (ja) * | 2004-02-24 | 2005-09-08 | Shogakukan Inc | 自然言語文の検索方法および検索装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4747053A (en) * | 1985-05-20 | 1988-05-24 | Brother Kogyo Kabushiki Kaisha | Electronic dictionary |
JP3241788B2 (ja) | 1992-02-28 | 2001-12-25 | 富士通株式会社 | データ圧縮方式 |
US5590317A (en) * | 1992-05-27 | 1996-12-31 | Hitachi, Ltd. | Document information compression and retrieval system and document information registration and retrieval method |
CN101069354B (zh) * | 2004-12-07 | 2010-04-14 | 日本电信电话株式会社 | 信息压缩编码装置、其解码装置、及其方法 |
JP4456554B2 (ja) * | 2005-10-31 | 2010-04-28 | 富士通株式会社 | データ圧縮方法及び圧縮データ送信方法 |
US8635194B2 (en) * | 2006-10-19 | 2014-01-21 | Oracle International Corporation | System and method for data compression |
CN101350624B (zh) * | 2008-09-11 | 2011-05-04 | 中国科学院计算技术研究所 | 一种支持ansi编码的中文文本的压缩方法 |
JP5062131B2 (ja) | 2008-10-06 | 2012-10-31 | 富士通株式会社 | 情報処理プログラム、情報処理装置、および情報処理方法 |
CN101499094B (zh) * | 2009-03-10 | 2010-09-29 | 焦点科技股份有限公司 | 一种数据压缩存储并检索的方法及系统 |
-
2013
- 2013-03-22 CN CN201380074814.3A patent/CN105052041A/zh active Pending
- 2013-03-22 KR KR1020157025619A patent/KR20150119403A/ko not_active Application Discontinuation
- 2013-03-22 AU AU2013382911A patent/AU2013382911A1/en not_active Abandoned
- 2013-03-22 JP JP2015506368A patent/JPWO2014147672A1/ja active Pending
- 2013-03-22 EP EP13878620.7A patent/EP2978134A4/en not_active Withdrawn
- 2013-03-22 WO PCT/JP2013/001977 patent/WO2014147672A1/ja active Application Filing
-
2015
- 2015-09-17 US US14/857,683 patent/US20160006456A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324730A (ja) * | 1992-05-27 | 1993-12-07 | Hitachi Ltd | 文書情報検索装置 |
JPH07160684A (ja) * | 1993-12-03 | 1995-06-23 | Matsushita Electric Ind Co Ltd | 文書圧縮装置および文書圧縮方法 |
JP2005242416A (ja) * | 2004-02-24 | 2005-09-08 | Shogakukan Inc | 自然言語文の検索方法および検索装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20150119403A (ko) | 2015-10-23 |
WO2014147672A1 (ja) | 2014-09-25 |
CN105052041A (zh) | 2015-11-11 |
AU2013382911A1 (en) | 2015-10-15 |
EP2978134A1 (en) | 2016-01-27 |
US20160006456A1 (en) | 2016-01-07 |
EP2978134A4 (en) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2014147672A1 (ja) | 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム | |
US9509333B2 (en) | Compression device, compression method, decompression device, decompression method, information processing system, and recording medium | |
US11334609B2 (en) | Semantic structure search device and semantic structure search method | |
JPWO2020021845A1 (ja) | 文書分類装置及び学習済みモデル | |
JP2015026350A (ja) | 情報処理システム、情報処理方法、および情報処理プログラム | |
JP6467937B2 (ja) | 文書処理プログラム、情報処理装置および文書処理方法 | |
JP6252489B2 (ja) | 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム | |
JPWO2014097359A1 (ja) | 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置 | |
JP2000201080A (ja) | 付加コ―ドを用いたデ―タ圧縮/復元装置および方法 | |
EP3385860A1 (en) | Compression of text using multiple dynamic dictionaries | |
US9219497B2 (en) | Compression device, compression method, and recording medium | |
US11373040B2 (en) | Computer-readable recording medium, encoding device, index generating device, search device, encoding method, index generating method, and search method | |
US10915559B2 (en) | Data generation method, information processing device, and recording medium | |
JP6032291B2 (ja) | 圧縮プログラム、圧縮装置、伸張プログラム、伸張装置およびシステム | |
US20160210304A1 (en) | Computer-readable recording medium, information processing apparatus, and conversion process method | |
JPWO2017009958A1 (ja) | 圧縮プログラム、圧縮方法および圧縮装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20161108 |