JP2017022666A - 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法 - Google Patents

圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法 Download PDF

Info

Publication number
JP2017022666A
JP2017022666A JP2015140880A JP2015140880A JP2017022666A JP 2017022666 A JP2017022666 A JP 2017022666A JP 2015140880 A JP2015140880 A JP 2015140880A JP 2015140880 A JP2015140880 A JP 2015140880A JP 2017022666 A JP2017022666 A JP 2017022666A
Authority
JP
Japan
Prior art keywords
dictionary
code
compression
character string
registered
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
JP2015140880A
Other languages
English (en)
Other versions
JP6613669B2 (ja
Inventor
片岡 正弘
Masahiro Kataoka
正弘 片岡
泰裕 鈴木
Yasuhiro Suzuki
泰裕 鈴木
達博 佐藤
Tatsuhiro Sato
達博 佐藤
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 JP2015140880A priority Critical patent/JP6613669B2/ja
Priority to EP16179063.9A priority patent/EP3119002B1/en
Priority to US15/209,055 priority patent/US9965448B2/en
Publication of JP2017022666A publication Critical patent/JP2017022666A/ja
Application granted granted Critical
Publication of JP6613669B2 publication Critical patent/JP6613669B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/123Storage facilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries
    • 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
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • 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
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6052Synchronisation of encoder and decoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Document Processing Apparatus (AREA)
  • Machine Translation (AREA)

Abstract

【課題】圧縮データをより有効に活用させることができる圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法を提供する。【解決手段】端末装置は、圧縮対象ファイル32のうち、静的辞書34に登録されている文字列を文字列に対応付けられた符号に置換する。端末装置は、圧縮対象ファイル32のうち、静的辞書34に登録されていない文字列に新たな圧縮符号を割り当てて、当該文字列と新たな圧縮符号と予備符号用の領域とを対応付けて動的辞書31に格納するとともに、文字列を新たな圧縮符号に置換する。端末装置は、置換された圧縮符号および動的辞書31を含んだ圧縮ファイル33を生成する。【選択図】図1

Description

本発明は、圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法に関する。
辞書を用いてテキストデータを圧縮する技術がある。例えば、圧縮処理を行うコンピュータが有する辞書に合致した単語に対しては、辞書において予め対応づけられたコードに置換する。
特開平5−181641号公報 特開2000−201080号公報
まず、圧縮処理を行うコンピュータが有する辞書は、保持する単語数が有限であるため、辞書に未登録な単語が圧縮対象のテキストデータに出現する場合がある。また、コンピュータの規模によって保持する単語数が異なる場合がある。例えば、携帯電話やスマートフォンなど端末装置では、記憶容量を抑えるため、データ量の小さい辞書が用いられる。一方、クラウドシステムなどのサーバコンピュータは、例えば、データマイニングなどを行うため、多様な情報を保持した大規模な辞書が用いられる。このように、端末装置とクラウドシステムでは、辞書が保持する単語数が異なる場合がある。
一方、圧縮処理された圧縮データの伸長処理は、圧縮処理を行ったコンピュータと同一のコンピュータで行われるとは限らない。このため、圧縮処理に用いられる辞書は、伸長処理が可能な全てのコンピュータで利用可能な辞書に制限される。例えば、クラウドシステムでは、端末装置でも伸長可能なようにデータを圧縮する場合、大規模な辞書を利用可能な場合でも、端末装置で利用可能な辞書を用いてデータを圧縮する。これにより、圧縮された圧縮データは、端末装置でも伸長できる。しかし、大規模な辞書を有する他のコンピュータでは、このような圧縮データを有効に活用できない。
一つの側面では、圧縮データをより有効に活用させることができる圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法を提供することを目的とする。
第1の案では、圧縮プログラムは、コンピュータに、入力データのうち、コンピュータが有する第1の辞書に登録されている第1の文字列を当該第1の文字列に対応付けられた第1の符号に置換する処理を実行させる。圧縮プログラムは、コンピュータに、入力データのうち、第1の辞書に登録されていない第2の文字列に第2の符号を割り当てて、当該第2の文字列と当該第2の符号と予備情報とを対応付けて動的辞書に格納するとともに、当該第2の文字列を前記第2の符号に置換する処理を実行させる。圧縮プログラムは、コンピュータに、置換された符号および前記動的辞書を含んだ圧縮データを生成する処理を実行させる。
本発明の1実施態様によれば、圧縮データをより有効に活用させることができるという効果を奏する。
図1は、圧縮処理の流れを概略的に示した図である。 図2は、置換検索の流れを概略的に示した図である。 図3は、端末装置の構成の一例を示す図である。 図4Aは、静的辞書のビットフィルタ部のデータ構成の一例を示す図である。 図4Bは、静的辞書の辞書部のデータ構成の一例を示す図である。 図4Cは、静的辞書のデータ構成を概念的に示した図である。 図5は、復号辞書のデータ構成の一例を示す図である。 図6Aは、動的辞書の動的ビットフィルタ部のデータ構成の一例を示す図である。 図6Bは、動的辞書のポインタ部のデータ構成の一例を示す図である。 図6Cは、動的辞書のバッファ部のデータ構成の一例を示す図である。 図7Aは、低頻度単語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。 図7Bは、未知語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。 図8Aは、高頻度単語を圧縮する流れを概略的に示した図である。 図8Bは、低頻度単語を圧縮する流れを概略的に示した図である。 図8Cは、未知語を圧縮する流れを概略的に示した図である。 図9は、サーバ装置の構成の一例を示す図である。 図10Aは、高頻度単語を復号化する流れを概略的に示した図である。 図10Bは、低頻度単語を復号化する流れを概略的に示した図である。 図10Cは、未知語を復号化する流れを概略的に示した図である。 図11は、圧縮処理の手順の一例を示すフローチャートである。 図12は、置換処理の手順の一例を示すフローチャートである。 図13は、復号処理の手順の一例を示すフローチャートである。 図14は、圧縮処理の流れを概略的に示した図である。 図15は、圧縮プログラムを実行するコンピュータの一例を示す図である。 図16は、置換プログラムを実行するコンピュータを示す図である。
以下に、本願の開示する圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの権利範囲が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[圧縮処理]
最初に、図1を用いて圧縮処理の概要について説明する。図1は、圧縮処理の流れを概略的に示した図である。以下では、携帯電話やスマートフォンなど端末装置10が圧縮処理の対象である圧縮対象ファイル32に含まれる「…a pen…Mickey…」を圧縮する場合を例に説明する。
圧縮対象ファイル32の圧縮を行う場合、端末装置10の圧縮部40は、圧縮対象ファイル32に含まれる文書から単語単位に、それぞれの単語を読み出す(図1(1))。図1の例では、「a」、「pen」、「Mickey」を読み出す。そして、圧縮部40は、取得した単語を静的辞書34と照合する(図1(2))。
静的辞書34は、単語毎の圧縮符号を記憶した圧縮用の辞書である。静的辞書34の詳細な構成は、後述する。静的辞書34は、出現頻度の高い高頻度単語については圧縮符号が登録されている。例えば、一般的な文章で出現頻度の高い冠詞や動詞、名詞などの一般的な単語は、高頻度単語として静的辞書34に登録される。一方、専門的な用語や地名、名前などの固有名詞は、出現頻度の低い未知語として静的辞書34に登録されない。図1の例では、「a」および「pen」を高頻度単語とし、「Mickey」を未知語とする。静的辞書34は、登録された単語には、単語を識別する一意の基本コードが定められており、高頻度単語については圧縮符号が登録されている。静的辞書34は、「a」および「pen」の基本コードおよび圧縮符号が登録され、「Mickey」の基本コードおよび圧縮符号が未登録とする。例えば、静的辞書34には、「a」に対応して、基本コード「A00001h」および圧縮符号「4000h」が登録され、「pen」に対応して基本コード「A02000h」および圧縮符号「4AAAh」が登録されている。基本コードおよび圧縮符号の最後に付した「h」は、コードが16進数で表記されていることを示す符号である。
圧縮部40は、照合の結果、照合した単語に対応する圧縮符号が静的辞書34に登録されている場合、照合した単語の圧縮符号を静的辞書34から取得する。そして、圧縮部40は、照合した単語を圧縮符号に変換して圧縮ファイル33に出力する(図1(3))。図1の例では、「a」は、静的辞書34に登録されている。圧縮部40は、「a」を圧縮符号「4000h」に変換して圧縮ファイル33に出力する。
一方、圧縮部40は、照合の結果、照合した単語に対応する圧縮符号が静的辞書34に登録されていない場合、照合した単語に新たな圧縮符号を割り当てる。そして、圧縮部40は、照合した単語と、割り当てた新たな圧縮符号と、予備符号を動的辞書31に登録する(図1(4))。ここで、動的辞書31は、ポインタ部31Bと、バッファ部31Cとを有する。動的辞書31の詳細な構成は、後述する。ポインタ部31Bは、圧縮符号を記憶する「圧縮符号」の領域と、ポインタを記憶する「ポインタ」の領域と、予備符号を記憶する「予備符号」の領域とを有する。登録された単語はバッファ部31Cに格納される。ポインタ部31Bの「圧縮符号」の領域には、割り当てられた新たな圧縮符号が格納される。「予備符号」の領域には、予備符号が格納される。「ポインタ」の領域には、バッファ部31Cでの単語の記憶位置を示すポインタが格納される。図1の例では、圧縮部40は、「Mickey」に圧縮符号「A001h」を割り当てる。圧縮部40は、バッファ部31Cに「Mickey」を格納する。また、圧縮部40は、ポインタ部31Bの「圧縮符号」の領域に「A001h」を格納し、バッファ部31Cでの「Mickey」の記憶位置を示すポインタを「ポインタ」の領域に格納し、予備符号が未設定であることを示す「000000h」を「予備符号」の領域に格納する。そして、圧縮部40は、照合した単語を割り当てた圧縮符号に変換して圧縮ファイル33に出力する(図1(5))。図1の例では、「Mickey」を圧縮符号「A001h」に変換して圧縮ファイル33に出力する。
圧縮部40は、圧縮対象ファイル32に含まれる文書の単語単位の圧縮が完了すると、圧縮ファイル33のトレーラに動的辞書31を格納する(図1(6))。
[置換処理]
次に、図2を用いて置換処理の概要について説明する。図2は、置換検索の流れを概略的に示した図である。以下では、クラウドシステムなどでのサーバ装置11が受信した圧縮ファイル33に対して予備符号の置換を行う場合を例に説明する。
サーバ装置11は、単語毎の圧縮符号を記憶した大規模辞書70を記憶する。この大規模辞書70は、図1に示した静的辞書34よりも多くの単語について各種の情報が登録されている。例えば、大規模辞書70には、図1に示した静的辞書34よりも多くの単語について基本コードが定められており、高頻度単語については圧縮符号が登録されている。また、大規模辞書70には、各単語の品詞が登録されている。この大規模辞書70は、1つの辞書であってもよく、複数の辞書により構成されてもよい。例えば、大規模辞書70は、静的辞書34を含む複数の辞書により構成されている。大規模辞書70には、「a」に対応して基本コード「A00001h」、圧縮符号「4000h」及び品詞「冠詞」が登録されている。大規模辞書70には、「pen」に対応して「A02000h」、圧縮符号「4AAAh」および品詞「一般名詞」が登録されている。大規模辞書70には、「Mickey」に対応して基本コード「AFFFFFh」および品詞「固有名詞」が登録されている。
図2の例では、サーバ装置11の置換部52が、圧縮ファイル33のトレーラから動的辞書31を読み出す(図2(1))。置換部52は、動的辞書31に登録された単語を参照して、動的辞書31に登録された単語が大規模辞書70に登録されているか判定する(図2(2))。置換部52は、動的辞書31に登録された単語が大規模辞書70に登録されている場合、動的辞書31の単語に対応する予備符号を、大規模辞書70の当該単語に対応する基本コードに置換する(図2(3))。図2の例では、大規模辞書70に「Mickey」に対応して「AFFFFFh」が登録されている。置換部52は、「Mickey」の圧縮符号「A001h」に対応する予備符号領域を「AFFFFFh」に置換する。
これにより、サーバ装置11では、圧縮ファイル33を圧縮した状態のまま、圧縮ファイル33に含まれる未知語と大規模辞書70を関連付けることができ、未知語が何れの単語であるかや、単語の品詞を特定できる。サーバ装置11では、圧縮ファイル33に圧縮された圧縮データに対して、未知語を含めてデータマイニングなど各種の処理を行うことができ、圧縮ファイル33に圧縮された圧縮データをより有効に活用させることができる。また、圧縮ファイル33は、未登録の文字列が登録されているため、標準辞書30のみを有する第2の端末装置でも復号化できる。また、動的辞書31の単語に対応する予備符号を、大規模辞書70の当該単語に対応する基本コードに置換することにより、大規模辞書70を有する第2のクラウドシステムでは、圧縮ファイル33に含まれる未知語と大規模辞書70を関連付けることができ、未知語を含めてデータマイニングなど各種の処理を行うことができる。
[装置構成]
次に、各装置の構成について説明する。最初に、端末装置10の構成について説明する。図3は、端末装置の構成の一例を示す図である。端末装置10は、圧縮対象ファイル32の圧縮などの符号化を行う装置である。端末装置10は、例えば、携帯電話、スマートフォン、タブレット端末、パーソナルコンピュータなどの情報処理装置である。図3に示すように、端末装置10は、記憶部20と、制御部21とを有する。なお、端末装置10は、情報処理装置が有する上記の機器以外の他の機器を有してもよい。
記憶部20は、ハードディスク、SSD(Solid State Drive)、光ディスクなどの記憶装置である。なお、記憶部20は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)などのデータを書き換え可能な半導体メモリであってもよい。
記憶部20は、制御部21で実行されるOS(Operating System)や各種プログラムを記憶する。例えば、記憶部20は、後述する圧縮処理を行うプログラムを記憶する。さらに、記憶部20は、制御部21で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部20は、標準辞書30と、動的辞書31と、圧縮対象ファイル32と、圧縮ファイル33とを記憶する。
標準辞書30は、データの圧縮および復号化に用いる辞書のデータである。標準辞書30は、静的辞書34と、復号辞書35とを有する。
静的辞書34は、単語と圧縮符号を対応付ける変換情報を保持したデータである。静的辞書34は、データを圧縮する際に使用される。静的辞書34は、ビットフィルタ部34Aと、辞書部34Bとを有する。
図4A〜4Cを用いて、静的辞書34のデータ構成について説明する。図4Aは、静的辞書のビットフィルタ部のデータ構成の一例を示す図である。ビットフィルタ部34Aは、「2グラム」、「ビットマップ」、「ポインタ」の各項目を有する。
「2グラム」の項目は、各単語に含まれる2グラム文字を記憶する領域である。例えば、図4Aに示すように、「able」は、「ab」「bl」「le」に対応する2グラム文字を含む。「ビットマップ」の項目は、単語内で2グラム文字が含まれる位置を表すビット列を記憶する領域である。例えば、2グラム「ab」のビットマップが「1_0_0_0_0」の場合、ビットマップは単語の先頭2文字が「ab」であることを表す。「ポインタ」は、ビットマップに該当する単語が記憶された辞書部34Bの記憶位置を示すポインタを記憶する領域である。ビットマップは、ポインタによってそれぞれ単語に対応付けられる。
図4Bは、静的辞書の辞書部のデータ構成の一例を示す図である。辞書部34Bは、「基礎単語」、「文字列長」、「出現回数」、「符号長」、「静的コード」、「動的コード」、「基本コード」の各項目を有する。
「基礎単語」の項目は、基礎単語として予め登録された単語を記憶する領域である。例えば、図4Bに示す静的辞書34の辞書部34Bでは、所定の母集団から抽出した各単語が、それぞれ基礎単語として登録されている。例えば、辞書などに登録された約19万語の単語が基礎単語として登録される。「文字列長」の項目は、基礎単語として予め登録された単語の文字列の長さを示すバイト数を記憶する領域である。「出現回数」の項目は、所定の母集団での単語の出現回数を記憶する領域である。「符号長」の項目は、単語に割り当てた圧縮符号の長さを示すビット数を記憶する領域である。「静的コード」の項目は、単語に予め割り当てられた圧縮符号を記憶する領域である。
ここで、本実施例では、静的辞書34の辞書部34Bに登録する基礎単語を、出現頻度が相対的に高い高頻度単語と、出現頻度が相対的に低い低頻度単語とに分けている。本実施例では、出現頻度の高い順に8192位までの基礎単語を高頻度単語とし、8193位以降の基礎単語を低頻度単語としている。高頻度単語については、短い圧縮符号を予め割り当てて、割り当てた圧縮符号を「静的コード」の項目に予め記憶させる。低頻度単語については、出現した際に圧縮符号を動的に割り当てて、割り当てた圧縮符号を「動的コード」の項目に予め記憶させる。例えば、高頻度単語については、予め2バイト(16ビット)の圧縮符号を割り当て、割り当てた圧縮符号を「静的コード」の項目に予め記憶させる。低頻度単語については、出現した際に3バイト(24ビット)の圧縮符号を動的に割り当てて、割り当てた圧縮符号を「動的コード」の項目に予め記憶させる。すなわち、圧縮符号は、高頻度単語については予め登録され、低頻度単語については初期状態では未登録とされている。
図4Cは、静的辞書のデータ構成を概念的に示した図である。静的辞書34は、ビットフィルタ部34Aと辞書部34Bとがポインタによって対応付けられており、図4Cのようなデータ構成として示すことができる。
図3に戻り、復号辞書35は、単語と、圧縮符号を対応付ける変換情報を保持したデータである。復号辞書35は、圧縮されたデータを復号化する際に使用される。
図5は、復号辞書のデータ構成の一例を示す図である。復号辞書35は、「静的コード」「文字列長」、「文字列」の各項目を有する。
「静的コード」の項目は、単語に予め割り当てられた圧縮符号を記憶する領域である。「文字列長」の項目は、圧縮符号に対応する単語の文字列長を記憶する領域である。「文字列」の項目は、圧縮符号に対応する単語の文字列を記憶する領域である。復号辞書35には、高頻度単語について、割り当てられた圧縮符号が「静的コード」の項目に記憶され、単語の文字列長が「文字列長」の項目に記憶され、単語の文字列が「文字列」の項目に記憶されている。また、復号辞書35には、低頻度単語について、基礎コードが「静的コード」の項目に記憶され、単語の文字列長が「文字列長」の項目に記憶され、単語の文字列が「文字列」の項目に記憶されている。
図3に戻り、動的辞書31は、動的に割り当てられた圧縮符号に関する各種の情報を保持したデータである。本実施例では、静的辞書34に登録された基礎単語のうち、出現頻度の低い低頻度単語と、基礎単語に無い単語や文字列などの未知語とに動的に圧縮符号が割り当てられる。動的辞書31には、低頻度単語や未知語などの単語に動的に割り当てられた圧縮符号が記憶される。動的辞書31は、動的ビットフィルタ部31Aと、ポインタ部31Bと、バッファ部31Cを有する。
図6A〜6Cを用いて、動的辞書31のデータ構成について説明する。図6Aは、動的辞書の動的ビットフィルタ部のデータ構成の一例を示す図である。動的ビットフィルタ部31Aは、「2グラム」、「ビットマップ」、「ポインタ」の各項目を有する。
「2グラム」の項目は、単語に含まれる2グラム文字を記憶する領域である。「ビットマップ」の項目は、単語内で2グラム文字が含まれる位置を表すビット列を記憶する領域である。「ポインタ」は、ビットマップに該当する単語に対して割り当てられた圧縮符号が記憶されたポインタ部31Bの記憶位置を示すポインタを記憶する領域である。単語は、ポインタによってそれぞれ圧縮符号に対応付けられる。
図6Bは、動的辞書のポインタ部のデータ構成の一例を示す図である。ポインタ部31Bは、「動的コード」、「種別」、「ポインタ」、「長さ」、「予備符号」の各項目を有する。
「動的コード」の項目は、動的に割り当てられた圧縮符号を記憶する領域である。「種別」の項目は、圧縮符号が割り当てられた単語の種別を記憶する領域である。本実施例では、種別「1」を低頻度単語、種別「2」を未知語としている。「種別」の項目には、圧縮符号が割り当てられた単語が低頻度単語の場合、「1」が格納され、圧縮符号が割り当てられた単語が未知単語の場合、「2」が格納される。「ポインタ」の項目は、圧縮符号が割り当てられた単語が記憶されたバッファ部31Cの記憶位置を示すポインタを記憶する領域である。圧縮符号は、ポインタによってそれぞれ圧縮符号が割り当てられた単語に対応付けられる。「長さ」の項目は、圧縮符号が割り当てられた単語の長さを記憶する領域である。「予備符号」の項目は、圧縮符号が割り当てられた単語に対応付ける予備符号を記憶する領域である。ここで、本実施例では、動的辞書31に「予備符号」の項目を設けて、圧縮符号に対して予備符号を対応付けることを可能としている。
図6Cは、動的辞書のバッファ部のデータ構成の一例を示す図である。バッファ部31Cは、動的に圧縮符号が割り当てられた単語に関する情報が記憶される。例えば、バッファ部31Cには、動的に圧縮符号が割り当てられた単語が低頻度単語の場合、当該単語の基本コードが記憶され、動的に圧縮符号が割り当てられた単語が未知語の場合、未知語の文字列が記憶される。
ここで、単語に対して動的に割り当てられた圧縮符号を動的辞書31に登録した状態の一例を示す。図7Aは、低頻度単語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。図7Aの例は、図4Cに示す基本コード「A0002Ch」の単語「Abject」に動的に割り当てられた圧縮符号「A000h」を登録した状態を示す。バッファ部31Cには、基本コード「A0002Ch」が登録されている。ポインタ部31Bには、「動的コード」の項目に、割り当てられた圧縮符号「A000h」が登録され、「種別」の項目に、種別「1」が登録され、「ポインタ」の項目に基本コード「A0002Ch」の位置を示すポインタが登録される。また、ポインタ部31Bには、「長さ」の項目に、基本コード「A0002Ch」の長さ「3」バイトが登録され、「予備符号」の項目に予備符号が未登録であることを示す初期値「000000h」が登録される。
図7Bは、未知語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。図7Bの例は、未知語である文字列「Mickey」に動的に割り当てられた圧縮符号「A001h」を登録した状態を示す。バッファ部31Cには、文字列「Mickey」が登録されている。ポインタ部31Bには、「動的コード」の項目に、割り当てられた圧縮符号「A001h」が登録され、「種別」の項目に、種別「2」が登録され、「ポインタ」の項目に文字列「Mickey」の位置を示すポインタが登録される。また、ポインタ部31Bには、「長さ」の項目に、文字列「Mickey」の長さ「6」バイトが登録され、「予備符号」の項目に予備符号が未登録であることを示す初期値「000000h」が登録される。また、動的ビットフィルタ部31Aには、文字列「Mickey」に含まれる2グラム文字のレコードの「ポインタ」の項目に、圧縮符号「A001h」へのポインタが登録される。
図3に戻り、圧縮対象ファイル32は、圧縮対象のテキストデータが記憶されたファイルである。圧縮ファイル33は、圧縮対象ファイル32を圧縮処理したデータである。
制御部21は、端末装置10を制御するデバイスである。制御部21としては、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路を採用できる。制御部21は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部21は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部21は、圧縮部40を有する。
圧縮部40は、圧縮対象ファイル32から単語を抽出し、単語単位に圧縮符号を対応させた圧縮ファイル33を生成する。圧縮部40は、抽出部50と、判定部51と、置換部52と、生成部53とを有する。
抽出部50は、圧縮対象ファイル32の単語単位に文字列の抽出を行う。例えば、抽出部50は、圧縮対象ファイル32から文字列を順に読み出し、読み出した文字列から単語を抽出する。例えば、英語ように、文章の単語がスペースなどの所定の区切り文字で区切られる場合、抽出部50は、圧縮対象ファイル32の文字列を読み出し、文字列中の区切り文字によって文字列を単語毎に区切ることで、文字列から各単語を抽出する。一方、例えば、日本語ように、文章の単語が特定の区切り文字で区切られていない場合、抽出部50は、圧縮対象ファイル32の文字列を読み出を行う。そして、抽出部50は、読み出した文字列に形態素解析、構文解析など、文章の言語に応じた自然言語処理を行うことで、文字列から各単語を抽出する。
判定部51は、抽出部50により抽出された単語に対して各種の判定を行う。例えば、判定部51は、抽出された単語が、高頻度単語、低頻度単語、未知語の何れかであるか判定する。例えば、判定部51は、抽出された単語を静的辞書34と照合する。判定部51は、照合の結果、抽出された単語が静的辞書34の何れにも該当しない場合、抽出された単語を未知語と判定する。すなわち、判定部51は、抽出された単語が静的辞書34に登録されていない場合、抽出された単語を未知語と判定する。一方、判定部51は、照合の結果、抽出された単語が静的辞書34の何れかに該当する場合、辞書部34Bから該当するレコードの「静的コード」、「動的コード」の項目のデータを取得する。判定部51は、「静的コード」の項目に圧縮符号が格納されている場合、抽出された単語を高頻度単語と判定する。判定部51は、「静的コード」の項目に圧縮符号が格納されていない場合、抽出された単語を低頻度単語と判定する。判定部51は、抽出された単語が低頻度単語である場合、「動的コード」の項目のデータを確認する。判定部51は、「動的コード」の項目に圧縮符号が格納されている場合、抽出された単語が動的辞書31に登録済みの低頻度単語と判定する。一方、判定部51は、「動的コード」の項目に圧縮符号が格納されていない場合、抽出された単語が動的辞書31に未登録の低頻度単語と判定する。
置換部52は、抽出部50により抽出された単語を圧縮符号に置換する。例えば、置換部52は、抽出された単語に対応する圧縮符号が静的辞書34に登録されている場合、抽出された単語に対応する圧縮符号を特定する。例えば、置換部52は、抽出された単語が高頻度単語である場合、「静的コード」の項目に格納された圧縮符号を、単語に対応する圧縮符号と特定する。また、置換部52は、抽出された単語が動的辞書31に登録済みの低頻度単語である場合、「動的コード」の項目に格納された圧縮符号を、抽出された単語に対応する圧縮符号と特定する。そして、置換部52は、特定された単語に対応する圧縮符号を生成部53へ出力する。
一方、置換部52は、抽出された単語が未知語である場合、動的辞書31と照合する。置換部52は、動的辞書31の動的ビットフィルタ部31Aと抽出された未知語を照合して該当するポインタを求め、未知語が登録されているか否かを判定する。判定部51は、照合の結果、抽出された未知語が動的辞書31に登録されている場合、未知語を登録済みの圧縮符号に置換する。例えば、置換部52は、ポインタ部31Bの「動的コード」の項目に格納された圧縮符号を、未知語に対応する圧縮符号と特定する。置換部52は、特定された未知語に対応する圧縮符号を生成部53へ出力する。
一方、置換部52は、抽出された単語が動的辞書31に未登録の未知語である場合、または、抽出された単語が動的辞書31に未登録の低頻度単語である場合、抽出された単語に新たな圧縮符号を割り当てる。例えば、置換部52は、所定の範囲で1ビットずつ増加させるなど、予め定められた割当規則に従い、抽出された単語に新たな圧縮符号を割り当てる。本実施例では、置換部52は、抽出された単語に対して、新規の3バイトの圧縮符号を動的に割り当てる。そして、置換部52は、抽出された単語を、割り当てられた圧縮符号に置換する。例えば、置換部52は、抽出された単語に対応して割り当てられた圧縮符号を生成部53へ出力する。また、置換部52は、抽出された単語と、動的に割り当てた圧縮符号と、予備符号用の領域とを対応付けて動的辞書31に格納する。例えば、抽出された単語が動的辞書31に未登録の低頻度単語である場合、置換部52は、図7Aに示したように、抽出された単語の基本コードをバッファ部31Cに登録する。置換部52は、ポインタ部31Bの「動的コード」の項目に、割り当てられた圧縮符号を登録し、「種別」の項目に「1」を登録し、バッファ部31Cに格納した基本コードの位置を示すポインタを「ポインタ」の項目に登録する。置換部52は、ポインタ部31Bの「長さ」の項目に、基本コードの長さを登録し、「予備符号」の項目に初期値「000000h」を登録する。さらに、置換部52は、静的辞書34の抽出された単語のレコードの「動的コード」の項目に割り当てられた圧縮符号を登録する。一方、例えば、抽出された単語が動的辞書31に未登録の未知語である場合、置換部52は、図7Bに示したように、抽出された単語の文字列をバッファ部31Cに登録する。置換部52は、ポインタ部31Bの「動的コード」の項目に、割り当てられた圧縮符号を登録し、「種別」の項目に「2」を登録し、バッファ部31Cに格納した単語の文字列の位置を示すポインタを「ポインタ」の項目に登録する。置換部52は、バッファ部31Cに格納した単語の文字列の長さをポインタ部31Bの「長さ」の項目に登録し、「予備符号」の項目に初期値「000000h」を登録する。置換部52は、バッファ部31Cに格納した単語の文字列に対応する動的ビットフィルタ部31Aに2グラム文字のレコードの「ポインタ」の項目に、割り当てられた圧縮符号へのポインタを登録する。
生成部53は、置換部52により置換された圧縮符号を用いて、圧縮対象ファイル32を圧縮した圧縮ファイル33を生成する。例えば、生成部53は、圧縮対象ファイル32から単語単位で読み出され、置換部52から出力された圧縮符号を順に圧縮ファイル33に順に格納し、全単語の圧縮符号の格納後に、動的辞書31を圧縮ファイル33に格納して圧縮ファイル33を生成する。
ここで、高頻度単語、低頻度単語、未知語を圧縮する流れを説明する。図8Aは、高頻度単語を圧縮する流れを概略的に示した図である。図8Aの例は、抽出部50が、圧縮対象ファイル32から「a」を抽出した場合を示している。判定部51は、「a」を静的辞書34と照合し、「a」が高頻度単語、低頻度単語、未知語の何れかであるか判定する。「a」は「静的コード」の項目に圧縮符号が登録されている。このため、「a」は、高頻度単語と判定される。置換部52は、「a」を「静的コード」の項目に圧縮符号「4000h」に置換する。生成部53は、圧縮符号「4000h」を圧縮ファイル33に格納する。
図8Bは、低頻度単語を圧縮する流れを概略的に示した図である。図8Bの例は、抽出部50が、圧縮対象ファイル32から「abject」を抽出した場合を示している。判定部51は、「abject」を静的辞書34と照合し、「abject」が高頻度単語、低頻度単語、未知語の何れかであるか判定する。「abject」は、「静的コード」の項目に圧縮符号が登録されておらず、「動的コード」の項目も圧縮符号が登録されていない。このため、「abject」は、低頻度単語と判定される。置換部52は、「abject」に新たな圧縮符号「A000h」を割り当てる。置換部52は、「abject」を割り当てられた圧縮符号「A000h」に置換する。また、置換部52は、「abject」の基本コード「A0002Ch」をバッファ部31Cに登録する。また、置換部52は、ポインタ部31Bの「動的コード」の項目に、割り当てられた圧縮符号「A000h」を登録し、「種別」の項目に「1」を登録し、バッファ部31Cに格納した基本コード「A0002Chh」の位置を示すポインタを「ポインタ」の項目に登録する。置換部52は、ポインタ部31Bの「長さ」の項目に、基本コード「A0002Ch」の長さを登録し、「予備符号」の項目に初期値「000000h」を登録する。置換部52は、静的辞書34の「abject」のレコードの「動的コード」の項目に割り当てられた圧縮符号「A000h」を登録する。生成部53は、圧縮符号「A000h」を圧縮ファイル33に格納する。以降、動的辞書31に登録された低頻度単語は、高頻度単語と同様に、静的辞書34に登録された圧縮符号で置換される。
図8Cは、未知語を圧縮する流れを概略的に示した図である。図8Cの例は、抽出部50が、圧縮対象ファイル32から「Mickey」を抽出した場合を示している。判定部51は、「Mickey」を静的辞書34と照合し、「Mickey」が高頻度単語、低頻度単語、未知語の何れかであるか判定する。「Mickey」は、静的辞書34に登録されていない。このため、「Mickey」は、未知語と判定される。置換部52は、「Mickey」に新たな圧縮符号「A001h」を割り当てる。置換部52は、「Mickey」を割り当てられた圧縮符号「A001h」に置換する。また、置換部52は、「Mickey」をバッファ部31Cに登録する。また、置換部52は、ポインタ部31Bの「動的コード」の項目に、割り当てられた圧縮符号「A001h」を登録し、「種別」の項目に「2」を登録し、バッファ部31Cに格納した「Mickey」の位置を示すポインタを「ポインタ」の項目に登録する。置換部52は、バッファ部31Cに格納した「Mickey」の長さをポインタ部31Bの「長さ」の項目に登録し、「予備符号」の項目に初期値「000000h」を登録する。置換部52は、「Mickey」に対応する動的ビットフィルタ部31Aに2グラム文字のレコードの「ポインタ」の項目に、「A001h」へのポインタを登録する。生成部53は、圧縮符号「A001h」を圧縮ファイル33に格納する。以降、動的辞書31に登録された未知語は、動的辞書31に登録された圧縮符号で置換される。
生成部53は、全単語の圧縮符号の格納後に、圧縮ファイル33のトレーラに動的辞書31を格納して圧縮ファイル33を生成する。図8A〜8Cでは、圧縮ファイル33のトレーラに動的辞書31格納されている。
次に、サーバ装置11の構成について説明する。図9は、サーバ装置の構成の一例を示す図である。サーバ装置11は、圧縮ファイル33の復号などの符号化を行う装置である。サーバ装置11は、例えば、パーソナルコンピュータ、クラウドシステムを構成するサーバコンピュータなどの情報処理装置である。図9に示すように、サーバ装置11は、記憶部60と、制御部61とを有する。なお、サーバ装置11は、情報処理装置が有する上記の機器以外の他の機器を有してもよい。
記憶部60は、ハードディスク、SSD、光ディスクなどの記憶装置である。なお、記憶部60は、RAM、フラッシュメモリ、NVSRAMなどのデータを書き換え可能な半導体メモリであってもよい。
記憶部60は、制御部61で実行されるOSや各種プログラムを記憶する。例えば、記憶部60は、後述する置換処理や復号処理を行う各種のプログラムを記憶する。さらに、記憶部60は、制御部61で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部60は、標準辞書30と、拡張辞書71と、圧縮ファイル33と、復号ファイル72を記憶する。
標準辞書30は、データの圧縮および復号化に用いる辞書のデータである。標準辞書30は、端末装置10の標準辞書30と同様であるため、説明を省略する。
拡張辞書71は、標準辞書30に記憶された基礎単語について付加な情報や、標準辞書30に記憶された基礎単語以外の単語について各種の情報を記憶した辞書のデータである。例えば、拡張辞書71は、基礎単語以外の新規の単語について圧縮符号や基本コードが定められており、基礎単語および新規の単語についてそれぞれ品詞などデータマイニングに利用可能な各種の情報が記憶されている。拡張辞書71は、1つの辞書であってもよく、複数の辞書により構成されてもよい。本実施例では、標準辞書30と拡張辞書71とが大規模辞書70として機能する。例えば、大規模辞書70は、図2に概略的に示したように、単語について基本コードが定められており、高頻度単語については圧縮符号が登録されている。また、大規模辞書70には、各単語の品詞が登録されている。
圧縮ファイル33は、端末装置10により圧縮処理されたデータである。復号ファイル72は、圧縮ファイル33を復号化したデータである。
制御部61は、サーバ装置11を制御するデバイスである。制御部61としては、CPU、MPU等の電子回路や、ASIC、FPGA等の集積回路を採用できる。制御部61は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部61は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部61は、置換部80と、復号部81とを有する。
置換部80は、圧縮ファイル33のトレーラに格納された動的辞書31に対して置換を行う。置換部80は、判定部82と、格納部83とを有する。
判定部82は、圧縮ファイル33のトレーラに格納された動的辞書31に登録された単語が大規模辞書70に登録されているか判定する。例えば、判定部82は、ポインタ部31Bを参照して、種別「2」とされたポインタが示すバッファ部31Cの位置から長さ分のデータを読み出す。これにより、動的辞書31に登録された未知語の文字列が読み出される。判定部82は、読み出した未知語の文字列を大規模辞書70に登録されている単語と比較し、読み出した未知語が大規模辞書70に登録されているか判定する。
格納部83は、判定部82による判定の結果、未知語の文字列が大規模辞書70に登録されている場合、当該未知語の文字列に対応して大規模辞書70に登録された符号を動的辞書31に格納する。例えば、格納部83は、圧縮ファイル33のトレーラに格納された動的辞書31のポインタ部31Bの予備符号に、未知語の文字列に対応して大規模辞書70に登録された基本コードを格納する。
これにより、置換部80は、圧縮ファイル33を圧縮した状態のまま、圧縮ファイル33に含まれる未知語と大規模辞書70を関連付けることができる。これにより、サーバ装置11では、圧縮ファイル33に圧縮された圧縮データに対して、未知語を含めてデータマイニングなど各種の処理を行うことができ、圧縮ファイル33に圧縮された圧縮データをより有効に活用させることができる。
復号部81は、圧縮ファイル33の復号化を行う。復号部81は、圧縮ファイル33に格納された圧縮符号を順に読み出す。復号部81は、標準辞書30の復号辞書35と圧縮ファイル33のトレーラに格納された動的辞書31を用いて、読み出した圧縮符号を単語の順に復号化する。
ここで、高頻度単語、低頻度単語、未知語を復号化する流れを説明する。図10Aは、高頻度単語を復号化する流れを概略的に示した図である。図10Aの例は、復号部81が、圧縮ファイル33から圧縮符号「4000h」を読み出した場合を示している。復号部81は、圧縮符号「4000h」を復号辞書35と照合し、「4000h」に対応する単語「a」を復号ファイル72に格納する。
図10Bは、低頻度単語を復号化する流れを概略的に示した図である。図10Bの例は、復号部81が、圧縮ファイル33から圧縮符号「A000h」を読み出した場合を示している。復号部81は、圧縮符号「A000h」をポインタ部31Bと照合し、ポインタが示すバッファ部31Cの位置から長さの分だけデータを読み出して、圧縮符号「A000h」に対応する基本コード「A0002Ch」を取得する。そして、復号部81は、基本コード「A0002Ch」を復号辞書35と照合し、「A0002Ch」に対応する単語「Abject」を復号ファイル72に格納する。
図10Cは、未知語を復号化する流れを概略的に示した図である。図10Cの例は、復号部81が、圧縮ファイル33から圧縮符号「A001h」を読み出した場合を示している。復号部81は、圧縮符号「A001h」をポインタ部31Bと照合し、ポインタが示すバッファ部31Cの位置から長さの分だけデータを読み出して、文字列「Mickey」を取得する。そして、復号部81は、文字列「Mickey」を復号ファイル72に格納する。
[処理の流れ]
本実施例に係る端末装置10が圧縮対象ファイル32を符号化して圧縮する圧縮処理の流れについて説明する。図11は、圧縮処理の手順の一例を示すフローチャートである。この圧縮処理は、所定のタイミング、例えば、圧縮対象ファイル32を指定して圧縮開始を指示する所定操作が行われたタイミングで実行される。
図11に示すように、抽出部50は、圧縮対象ファイル32から単語単位に文字列を抽出する(S10)。判定部51は、抽出された単語を静的辞書34と照合し、静的辞書34に単語が登録されているか判定する(S11)。単語が登録されていない場合(S11否定)、置換部52は、抽出された単語を未知語として、単語が動的辞書31に登録されているか判定する(S12)。抽出された単語が動的辞書31に登録されている場合(S12肯定)、判定部51は、抽出された単語を動的辞書31に登録済みの圧縮符号に置換する(S13)。
一方、未知語が動的辞書31に登録されていない場合(S12否定)、置換部52は、抽出された単語を動的辞書31に未登録の未知語として、新規の3バイトの圧縮符号を動的に割り当て、抽出された単語を、割り当てられた圧縮符号に置換する(S14)。また、置換部52は、抽出された単語の文字列と、動的に割り当てた圧縮符号と、予備符号用の領域とを対応付けて動的辞書31に格納する(S15)。
一方、単語が登録されている場合(S11肯定)、置換部52は、「静的コード」の項目に圧縮符号が格納されているか判定する(S16)。「静的コード」の項目に圧縮符号が格納されている場合(S16肯定)、判定部51は、抽出された単語を高頻度単語として、抽出された単語を、「静的コード」の項目に格納された圧縮符号に置換する(S17)。
一方、「静的コード」の項目に圧縮符号が格納されていない場合(S16否定)、判定部51は、「動的コード」の項目に圧縮符号が格納されているか判定する(S18)。「動的コード」の項目に圧縮符号が格納されていない場合(S18否定)、判定部51は、抽出された単語を動的辞書31に未登録の低頻度単語として、新規の3バイトの圧縮符号を動的に割り当て、抽出された単語を、割り当てられた圧縮符号に置換する(S19)。また、置換部52は、抽出された単語の基本コードと、動的に割り当てた圧縮符号と、予備符号用の領域とを対応付けて動的辞書31に格納する(S20)。
一方、「動的コード」の項目に圧縮符号が格納されている場合(S18肯定)、判定部51は、抽出された単語を動的辞書31に登録済みの低頻度単語として、抽出された単語を、「動的コード」の項目に圧縮符号に置換する(S21)。
生成部53は、置換された圧縮符号を圧縮ファイル33に順に格納する(S22)。抽出部50は、圧縮対象ファイル32からテキストデータに対する全単語の抽出が完了したか否かを判定する(S23)。全単語の抽出が完了していない場合(S23否定)、上述のS10へ移行する。
一方、全単語の抽出が完了した場合(S23肯定)、生成部53は、動的辞書31を圧縮ファイル33に格納し(S24)、処理を終了する。
次に、本実施例に係るサーバ装置11が圧縮ファイル33のトレーラに格納された動的辞書31に対して置換を行う置換処理の流れについて説明する。図12は、置換処理の手順の一例を示すフローチャートである。この置換処理は、所定のタイミング、例えば、圧縮対象ファイル32がサーバ装置11に格納されたタイミングで実行される。なお、置換処理は、圧縮ファイル33を指定して置換開始を指示する所定操作が行われたタイミングで実行されてもよい。また、置換処理は、後述する復号処理の前または後など復号処理に合わせたタイミングで実行されてもよい。
図12に示すように、判定部82は、圧縮ファイル33のトレーラに格納された動的辞書31のポインタ部31Bを参照して、種別「2」とされたポインタが示すバッファ部31Cの位置から長さ分の未知語の文字列を順に読み出す(S50)。判定部82は、読み出した未知語の文字列を大規模辞書70に登録されている単語と比較し、読み出した未知語が大規模辞書70に登録されているか判定する(S51)。読み出した未知語文字列が大規模辞書70に登録されていない場合(S51否定)、後述するS53へ移行する。
一方、読み出した未知語の文字列が大規模辞書70に登録されている場合(S51肯定)、格納部83は、動的辞書31のポインタ部31Bの予備符号に、未知語の文字列に対応して大規模辞書70に登録された基本コードを格納する(S52)。
判定部82は、動的辞書31に格納された未知語の文字列を全て読み出したか否かを判定する(S53)。全て読み出していない場合(S53否定)、上述のS50へ移行する。一方、全て読み出した場合(S53肯定)、処理を終了する。
次に、本実施例に係るサーバ装置11が圧縮ファイル33を復号化する復号処理の流れについて説明する。図13は、復号処理の手順の一例を示すフローチャートである。この復号処理は、所定のタイミング、例えば、圧縮ファイル33を指定して復号開始を指示する所定操作が行われたタイミングで実行される。
図13に示すように、復号部81は、圧縮ファイル33に格納された圧縮符号を順に読み出す(S100)。復号部81は、標準辞書30の復号辞書35と圧縮ファイル33のトレーラに格納された動的辞書31を用いて、読み出した圧縮符号を単語の順に復号化する(S101)。復号部81は、復号化した単語を復号ファイル72に格納する(S102)。復号部81は、圧縮ファイル33に格納された圧縮符号を全て読み出したか否かを判定する(S103)。全て読み出していない場合(S103否定)、上述のS100へ移行する。一方、全て読み出した場合(S103肯定)、処理を終了する。
[効果]
上述してきたように、本実施例に係る端末装置10は、圧縮対象ファイル32のうち、静的辞書34に登録されている文字列を文字列に対応付けられた符号に置換する。端末装置10は、圧縮対象ファイル32のうち、静的辞書34に登録されていない文字列に新たな圧縮符号を割り当てて、当該文字列と新たな圧縮符号と予備符号用の領域とを対応付けて動的辞書31に格納するとともに、文字列を新たな圧縮符号に置換する。端末装置10は、置換された圧縮符号および動的辞書31を含んだ圧縮ファイル33を生成する。これにより、端末装置10は、動的辞書31の予備符号用の領域に、文字列と圧縮符号に対応付ける情報を後から格納できるため、圧縮対象ファイル32をより有効に活用させることができる。
また、本実施例に係るサーバ装置11は、圧縮ファイル33の動的辞書31に圧縮符号と予備符号用の領域とを対応付けて格納された未知語の文字列が大規模辞書70に登録されているか判定する。サーバ装置11は、文字列が大規模辞書70に登録されている場合、動的辞書31の予備符号用の領域に、大規模辞書70の未知語の文字列に対応する基本コードを格納する。これにより、サーバ装置11は、圧縮対象ファイル32を復号化することなく、未知語の文字列を大規模辞書70の基本コードに対応付けることができる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、上記の実施例では、圧縮する際、標準辞書30に未登録の未知語の文字列については、動的辞書31のポインタ部31Bの「予備符号」の領域に予備符号が未設定であることを示す「000000h」を格納する場合について説明したが、これに限定されない。例えば、圧縮する際、標準辞書30に未登録でも、その他の辞書に未登録の未知語の文字列に対応する情報が登録されている場合、未登録の未知語の文字列に対応する情報を動的辞書31のポインタ部31Bの「予備符号」の領域に格納してもよい。図14は、圧縮処理の流れを概略的に示した図である。図14は、例えば、サーバ装置11が圧縮対象ファイル32に含まれる「…a pen…Mickey…」を圧縮する場合を例に説明する。「Mickey」は、標準辞書30では未登録であるものの、拡張辞書71に基本コードが登録されている。このため、大規模辞書70には「Mickey」に対応して基本コード「AFFFFFh」が登録されている。サーバ装置11は、標準辞書30した有さない端末装置10でも復号化可能とするため、「Mickey」を標準辞書30に未登録の未知語の文字列として圧縮する。しかし、サーバ装置11は、標準辞書30では未登録の文字列が、サーバ装置11が有する他の辞書に登録されている場合、他の辞書の未登録の文字列に対応する符号を「予備符号」の領域に格納する。例えば、サーバ装置11は、動的辞書31のポインタ部31Bの「予備符号」の領域に基本コード「AFFFFFh」を格納する。なお、サーバ装置11は、動的辞書31のポインタ部31Bの「予備符号」の領域に基本コード以外に、大規模辞書70での圧縮符号や、品詞を示す情報など、未登録の文字列に関連する情報を格納してもよい。これにより、サーバ装置11は、大規模辞書70の情報を用いて圧縮対象ファイル32を圧縮でき、標準辞書30では未登録の文字列を含めて、圧縮ファイル33を圧縮したままデータマイニングなど各種の処理を行うことができる。また、圧縮ファイル33は、標準辞書30では未登録の文字列が動的辞書31に登録されているため、標準辞書30のみを有する端末装置10でも復号化できる。
また、上記の実施例では、圧縮する際に、ポインタ部31Bの「予備符号」の領域を設けた動的辞書31を圧縮ファイル33に格納する場合について説明したが、これに限定されない。圧縮する際に、ポインタ部31Bに「予備符号」の領域を設けずに動的辞書31を圧縮ファイル33に格納し、後から圧縮ファイル33の動的辞書31のポインタ部31Bに「予備符号」の領域を追加してもよい。例えば、端末装置10は、ポインタ部31Bに「予備符号」の領域を設けずに動的辞書31を圧縮ファイル33に格納する。サーバ装置11は、圧縮ファイル33を受信したタイミングや復号化するタイミングなど所定のタイミングで、圧縮ファイル33の動的辞書31のポインタ部31Bに「予備符号」の領域がある否かをチェックする。サーバ装置11は、圧縮ファイル33の動的辞書31のポインタ部31Bに「予備符号」の領域が無い場合、ポインタ部31Bに「予備符号」の領域を追加してもよい。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、端末装置10の抽出部50、判定部51、置換部52、生成部53の各処理部が適宜統合されてもよい。また、サーバ装置11の置換部80(判定部82、格納部83)、復号部81の各処理部が適宜統合されてもよい。端末装置10およびサーバ装置11の上記各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[圧縮プログラム]
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。最初に、圧縮処理を行う圧縮プログラムについて説明する。図15は、圧縮プログラムを実行するコンピュータの一例を示す図である。
図15に示すように、コンピュータ400は、CPU(Central Processing Unit)410、HDD(Hard Disk Drive)420、RAM(Random Access Memory)440を有する。これら400〜440の各部は、バス500を介して接続される。
HDD420には上記の端末装置10の抽出部50、判定部51、置換部52および生成部53と同様の機能を発揮する圧縮プログラム420aが予め記憶される。尚、圧縮プログラム420aについては、適宜分離しても良い。
また、HDD420は、各種情報を記憶する。例えば、HDD420は、OSや圧縮に用いる各種データを記憶する。
そして、CPU410が、圧縮プログラム420aをHDD420から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、圧縮プログラム420aは、抽出部50、判定部51、置換部52および生成部53と同様の動作を実行する。
尚、上記した圧縮プログラム420aについては、必ずしも最初からHDD420に記憶させることを要しない。
[置換プログラム]
次に、圧縮ファイル33のトレーラに格納された動的辞書31に対して置換を行う置換プログラムについて説明する。図16は、置換プログラムを実行するコンピュータの一例を示す図である。なお、図15と同一の部分については同一の符号を付して、説明を省略する。
図16に示すように、HDD420には上記のサーバ装置11の置換部80(判定部82、格納部83)と同様の機能を発揮する置換プログラム420bが予め記憶される。尚、置換プログラム420bについては、適宜分離しても良い。また、置換プログラム420bは、復号部81の機能も有するものとして、復号プログラムとしてもよい。
また、HDD420は、各種情報を記憶する。例えば、HDD420は、OSや置換に用いる各種データを記憶する。
そして、CPU410が、置換プログラム420bをHDD420から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、置換プログラム420bは、置換部80と同様の動作を実行する。
尚、上記した置換プログラム420bについても、必ずしも最初からHDD420に記憶させることを要しない。
また、例えば、圧縮プログラム420a及び置換プログラム420bは、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に記憶させても良い。そして、コンピュータ400がこれらからプログラムを読み出して実行するようにしても良い。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ400に接続される「他のコンピュータ(又はサーバ)」などにプログラムを記憶させておく。そして、コンピュータ400がこれらからプログラムを読み出して実行するようにしても良い。
10 端末装置
11 サーバ装置
20 記憶部
21 制御部
30 標準辞書
31 動的辞書
31A 動的ビットフィルタ部
31B ポインタ部
31C バッファ部
32 圧縮対象ファイル
33 圧縮ファイル
34 静的辞書
34A ビットフィルタ部
34B 辞書部
35 復号辞書
40 圧縮部
50 抽出部
51 判定部
52 置換部
53 生成部
60 記憶部
61 制御部
70 大規模辞書
71 拡張辞書
72 復号ファイル
80 置換部
81 復号部
82 判定部
83 格納部

Claims (7)

  1. コンピュータに、
    入力データのうち、前記コンピュータが有する第1の辞書に登録されている第1の文字列を当該第1の文字列に対応付けられた第1の符号に置換し、前記第1の辞書に登録されていない第2の文字列に第2の符号を割り当てて、当該第2の文字列と当該第2の符号と予備情報とを対応付けて動的辞書に格納するとともに、当該第2の文字列を前記第2の符号に置換し、
    置換された符号および前記動的辞書を含んだ圧縮データを生成する
    処理を実行させることを特徴とする圧縮プログラム。
  2. 前記置換する処理は、前記第2の文字列が、前記コンピュータが有する第2の辞書に登録されている場合、前記第2の辞書の前記第2の文字列に対応する第3の符号を前記予備情報の領域に格納する
    ことを特徴とする請求項1に記載の圧縮プログラム。
  3. コンピュータが、
    入力データのうち、前記コンピュータが有する第1の辞書に登録されている第1の文字列を当該第1の文字列に対応付けられた第1の符号に置換し、前記第1の辞書に登録されていない第2の文字列に第2の符号を割り当てて、当該第2の文字列と当該第2の符号と予備情報とを対応付けて動的辞書に格納するとともに、当該第2の文字列を前記第2の符号に置換し、
    置換された符号および前記動的辞書を含んだ圧縮データを生成する
    処理を実行することを特徴とする圧縮方法。
  4. 入力データのうち、前記コンピュータが有する第1の辞書に登録されている第1の文字列を当該第1の文字列に対応付けられた第1の符号に置換し、前記第1の辞書に登録されていない第2の文字列に第2の符号を割り当てて、当該第2の文字列と当該第2の符号と予備情報とを対応付けて動的辞書に格納するとともに、当該第2の文字列を前記第2の符号に置換する置換部と、
    前記置換部により置換された符号および前記動的辞書を含んだ圧縮データを生成する生成部と、
    を有することを特徴とする情報処理装置。
  5. コンピュータに、
    他のコンピュータが有する第1の辞書に登録されていない文字列が第1の符号に置換され、前記文字列と前記第1の符号と予備情報とを対応付けて格納した動的辞書を含んだ圧縮データの前記動的辞書の前記文字列が、前記コンピュータが有する第2の辞書に登録されているか判定し、
    前記文字列が前記第2の辞書に登録されている場合、前記動的辞書の予備情報の領域に、前記第2の辞書の前記文字列に対応する第2の符号を格納する
    処理を実行させることを特徴とする置換プログラム。
  6. コンピュータが、
    他のコンピュータが有する第1の辞書に登録されていない文字列が第1の符号に置換され、前記文字列と前記第1の符号と予備情報とを対応付けて格納した動的辞書を含んだ圧縮データの前記動的辞書の前記文字列が、前記コンピュータが有する第2の辞書に登録されているか判定し、
    前記文字列が前記第2の辞書に登録されている場合、前記動的辞書の予備情報の領域に、前記第2の辞書の前記文字列に対応する第2の符号を格納する
    処理を実行することを特徴とする置換方法。
  7. 他のコンピュータが有する第1の辞書に登録されていない文字列が第1の符号に置換され、前記文字列と前記第1の符号と予備情報とを対応付けて格納した動的辞書を含んだ圧縮データの前記動的辞書の前記文字列が、前記コンピュータが有する第2の辞書に登録されているか判定する判定部と、
    前記判定部による判定の結果、前記文字列が前記第2の辞書に登録されている場合、前記動的辞書の予備情報の領域に、前記第2の辞書の前記文字列に対応する第2の符号を格納する格納部と、
    を有することを特徴とする情報処理装置。
JP2015140880A 2015-07-14 2015-07-14 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法 Expired - Fee Related JP6613669B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015140880A JP6613669B2 (ja) 2015-07-14 2015-07-14 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法
EP16179063.9A EP3119002B1 (en) 2015-07-14 2016-07-12 Encoding program, encoding method, information processsing device, replacement program, and replacement method
US15/209,055 US9965448B2 (en) 2015-07-14 2016-07-13 Encoding method and information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015140880A JP6613669B2 (ja) 2015-07-14 2015-07-14 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法

Publications (2)

Publication Number Publication Date
JP2017022666A true JP2017022666A (ja) 2017-01-26
JP6613669B2 JP6613669B2 (ja) 2019-12-04

Family

ID=56683721

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015140880A Expired - Fee Related JP6613669B2 (ja) 2015-07-14 2015-07-14 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法

Country Status (3)

Country Link
US (1) US9965448B2 (ja)
EP (1) EP3119002B1 (ja)
JP (1) JP6613669B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018182466A (ja) * 2017-04-07 2018-11-15 富士通株式会社 符号化プログラム、符号化方法および符号化装置
JP2019120780A (ja) * 2018-01-04 2019-07-22 富士通株式会社 ファイル生成プログラム、ファイル生成方法及びファイル生成装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6834327B2 (ja) * 2016-10-06 2021-02-24 富士通株式会社 符号化プログラム、符号化装置および符号化方法
JP2021145281A (ja) * 2020-03-13 2021-09-24 キオクシア株式会社 圧縮装置、伸張装置及び方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09214352A (ja) * 1996-01-31 1997-08-15 Hitachi Ltd データ圧縮方法および装置
JP2014093612A (ja) * 2012-11-01 2014-05-19 Canon Inc 符号化装置及びその制御方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814746A (en) * 1983-06-01 1989-03-21 International Business Machines Corporation Data compression method
JP3132774B2 (ja) 1991-12-27 2001-02-05 富士通株式会社 データ圧縮・復元装置
US5590317A (en) * 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
JP3408291B2 (ja) * 1993-09-20 2003-05-19 株式会社東芝 辞書作成支援装置
JP3986098B2 (ja) * 1994-08-16 2007-10-03 富士通株式会社 文字列検索方法及び文字列検索装置
US5663721A (en) * 1995-03-20 1997-09-02 Compaq Computer Corporation Method and apparatus using code values and length fields for compressing computer data
JP3566441B2 (ja) * 1996-01-30 2004-09-15 シャープ株式会社 テキスト圧縮用辞書作成装置
JP2840589B2 (ja) * 1996-02-09 1998-12-24 富士通株式会社 データ圧縮装置及びデータ復元装置
US6012062A (en) * 1996-03-04 2000-01-04 Lucent Technologies Inc. System for compression and buffering of a data stream with data extraction requirements
US5963893A (en) * 1996-06-28 1999-10-05 Microsoft Corporation Identification of words in Japanese text by a computer system
JP3368157B2 (ja) * 1996-11-18 2003-01-20 キヤノン株式会社 データ圧縮装置、方法及びシステム
JPH11143877A (ja) * 1997-10-22 1999-05-28 Internatl Business Mach Corp <Ibm> 圧縮方法、辞書の見出し語インデックス・データを圧縮するための方法、及び機械翻訳システム
US6100824A (en) * 1998-04-06 2000-08-08 National Dispatch Center, Inc. System and method for data compression
JP2000201080A (ja) 1999-01-07 2000-07-18 Fujitsu Ltd 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
US7026962B1 (en) * 2000-07-27 2006-04-11 Motorola, Inc Text compression method and apparatus
US20020152219A1 (en) * 2001-04-16 2002-10-17 Singh Monmohan L. Data interexchange protocol
US9087038B1 (en) * 2010-07-21 2015-07-21 Sprint Communications Company L.P. Messaging with shortcut character strings

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09214352A (ja) * 1996-01-31 1997-08-15 Hitachi Ltd データ圧縮方法および装置
JP2014093612A (ja) * 2012-11-01 2014-05-19 Canon Inc 符号化装置及びその制御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018182466A (ja) * 2017-04-07 2018-11-15 富士通株式会社 符号化プログラム、符号化方法および符号化装置
US11323132B2 (en) 2017-04-07 2022-05-03 Fujitsu Limited Encoding method and encoding apparatus
JP2019120780A (ja) * 2018-01-04 2019-07-22 富士通株式会社 ファイル生成プログラム、ファイル生成方法及びファイル生成装置
US11062082B2 (en) 2018-01-04 2021-07-13 Fujitsu Limited File generation method, file generation apparatus, and non-transitory computer-readable storage medium for storing program

Also Published As

Publication number Publication date
US20170017619A1 (en) 2017-01-19
JP6613669B2 (ja) 2019-12-04
EP3119002A1 (en) 2017-01-18
EP3119002B1 (en) 2022-01-19
US9965448B2 (en) 2018-05-08

Similar Documents

Publication Publication Date Title
US9509334B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device and decompression device
JP6613669B2 (ja) 圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法
US9973206B2 (en) Computer-readable recording medium, encoding device, encoding method, decoding device, and decoding method
WO2017017738A1 (ja) 符号化プログラム、符号化装置、及び符号化方法
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US20160210508A1 (en) Encoding apparatus and encoding method
US9628110B2 (en) Computer-readable recording medium, encoding apparatus, encoding method, comparison apparatus, and comparison method
US20170199849A1 (en) Encoding method, encoding device, decoding method, decoding device, and computer-readable recording medium
US9479195B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
US9779071B2 (en) Non-transitory computer-readable recording medium, encoding method, encoding apparatus, decoding method, and decoding apparatus
JP6805720B2 (ja) データ検索プログラム、データ検索装置およびデータ検索方法
US10380240B2 (en) Apparatus and method for data compression extension
JP2016143200A (ja) 符号化プログラム、符号化方法および符号化装置
US11062082B2 (en) File generation method, file generation apparatus, and non-transitory computer-readable storage medium for storing program
US20200004784A1 (en) Index generation method, data retrieval method, apparatus of index generation
JP6931442B2 (ja) 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法
JP6512294B2 (ja) 圧縮プログラム、圧縮方法および圧縮装置
US10915559B2 (en) Data generation method, information processing device, and recording medium
US10803243B2 (en) Method, device, and medium for restoring text using index which associates coded text and positions thereof in text data
JP6838471B2 (ja) インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法
JP2016134808A (ja) データ圧縮プログラム、データ復元プログラム、データ圧縮装置、及びデータ復元装置
JP6540306B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US20190220502A1 (en) Validation device, validation method, and computer-readable recording medium
WO2018069999A1 (ja) 出力プログラム、出力方法および出力システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190509

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190910

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20190918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191021

R150 Certificate of patent or registration of utility model

Ref document number: 6613669

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees