JP2017194803A - 符号化プログラム、符号化装置および符号化方法 - Google Patents

符号化プログラム、符号化装置および符号化方法 Download PDF

Info

Publication number
JP2017194803A
JP2017194803A JP2016083964A JP2016083964A JP2017194803A JP 2017194803 A JP2017194803 A JP 2017194803A JP 2016083964 A JP2016083964 A JP 2016083964A JP 2016083964 A JP2016083964 A JP 2016083964A JP 2017194803 A JP2017194803 A JP 2017194803A
Authority
JP
Japan
Prior art keywords
word
dictionary
code
encoding
dynamic
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
JP2016083964A
Other languages
English (en)
Other versions
JP6648620B2 (ja
Inventor
片岡 正弘
Masahiro Kataoka
正弘 片岡
量 松村
Ryo Matsumura
量 松村
葉月 阿部
Hazuki Abe
葉月 阿部
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 JP2016083964A priority Critical patent/JP6648620B2/ja
Priority to US15/489,029 priority patent/US9793920B1/en
Publication of JP2017194803A publication Critical patent/JP2017194803A/ja
Application granted granted Critical
Publication of JP6648620B2 publication Critical patent/JP6648620B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を容易に生成する。
【解決手段】符号化装置100は、対象ファイルを静的辞書部121および動的辞書部122を用いて符号化する際に、動的辞書部122に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書部221に含まれる単語を抽出し、該抽出される単語の外部辞書部221における符号と、動的に割り当てられる動的符号とを対応付け、動的辞書部122に登録する。
【選択図】図6

Description

本発明は、符号化プログラムなどに関する。
単一のファイルの圧縮においては、高頻度の単語に対する静的辞書と、静的辞書に含まれず、且つ、当該ファイルにおいて複数回出現する単語について生成された動的辞書とを用いた符号化が行われている(例えば、特許文献1参照)。ここでいう静的辞書は、母集団となるファイル群やデータで高頻度に出現する単語と符号とを対応づけた辞書であり、動的辞書は、圧縮対象データ中で複数回出現する単語についてその単語と符号とを対応づける辞書である。
複数のファイルの圧縮を行う際に、複数のファイルのいずれが所定の文字情報を含むかを示すインデックス情報を生成する技術が知られている(例えば、特許文献3参照)。インデックス情報は、複数のファイルのいずれが検索対象の文字情報を含むか否かを示すインデックスとして用いられる。文字情報とは、例えば、1グラムの文字コードが連接する文字列のことをいう。
一方、単語に対応付けられたポインタテーブル型のインデックス情報を生成する技術が知られている(例えば、非特許文献1参照)。かかる技術について、図1を参照して説明する。図1は、ポインタテーブル型インデックスの生成処理の参考例を示す図である。図1に示すように、かかる技術では、文書ファイルごとに単語を抽出し、文書IDと単語IDとその出現位置に対応づけられたインデックス情報を生成し、それを収集し、単語IDについてソートする。これにより、単語IDをもとに文書IDと出現位置とを対応づけた転置インデックス、すなわちポインタテーブル型インデックス情報を生成する。
特開平9−214352号公報 特開2008−278258号公報 国際公開第2013/038527号
西田圭介著「Googleを支える技術」技術評論社、2008年4月25日 関口宏司著「ApacheLucene入門」技術評論社、2006年6月25日
しかしながら、従来の技術では、動的辞書に登録される単語がある場合、複数のファイルのいずれが当該単語を含むかを示すインデックス情報を容易に生成できないという問題がある。一方、別の観点では、動的辞書に登録される単語がある場合、複数のファイルのいずれが当該単語を含むかを示すインデックス情報を複数の小規模なシステムにおいて容易に分散して生成することができないという問題がある。
例えば、複数のファイルの圧縮を行う際には、静的辞書に含まれる単語については、インデックス情報を生成することができる。ところが、動的辞書として登録された単語については、ファイルごとに符号がばらばらである場合に、複数のファイル全てに関するインデックス情報を容易に生成できない。
また、インデックス情報を生成する従来の技術では、文字情報についてのインデックス情報であり、そもそも単語についてのインデックス情報ではない。さらに、新語や流行語と呼ばれる単語は静的辞書には含まれない。したがって、インデックス情報を生成する従来の技術では、複数のファイルのいずれが当該単語を含むかを示すインデックス情報を容易に生成できない。
一方、単語に対応づけられたポインタテーブル型のインデックス情報を生成する従来の技術では、文書ファイルごとに含まれる単語が異なるので、複数の文書ファイルに含まれる単語の単語IDをもとにしたポインタテーブル型インデックスを容易に生成できない。さらに、更新や追加された文書ファイルに新語や流行語などが含まれることがあり、再度、インデックス情報の収集処理、ソート処理および転置処理が繰り返される。そうすると、かかる従来の技術では、インデックス情報の収集処理と転置処理に膨大な資源が必要であり、小規模な資源にて容易に分散してインデックス情報を生成できない。
1つの側面では、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を容易に生成することを目的とする。また、1つの側面では、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を複数の小規模なシシテムにおいても容易に分散して生成することを目的とする。
第1の案では、符号化プログラムは、コンピュータに、対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出し、該抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する、処理を実行させる。
1つの態様によれば、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を生成することができる。また、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を複数の小規模なシステムにおいて容易に分散して生成することができる。
図1は、ポインタテーブル型インデックスの生成処理の参考例を示す図である。 図2は、実施例1に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。 図3は、実施例1に係る動的辞書の一例を示す図である。 図4は、ビットマップ型インデックスの構成の一例を示す図である。 図5は、符号化ファイルの構成例を示す図である。 図6は、実施例1に係る符号化装置の構成の一例を示す機能ブロック図である。 図7は、実施例1に係る符号化処理のフローチャートの一例を示す図である。 図8は、実施例2に係るビットマップ型インデックスの階層化の一例を示す図である。 図9は、階層化されたセグメント群を用いたファイルの絞込み例を示す図である。 図10は、階層化されたセグメント群を実装したコンピュータシステムの構成例を示す図である。 図11は、コンピュータのハードウェア構成例を示す図である。 図12は、コンピュータで動作するプログラムの構成例を示す図である。 図13は、実施形態のシステムにおける装置の構成例を示す図である。
以下に、本願の開示する符号化プログラム、符号化装置および符号化方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[実施例1に係るビットマップ型インデックスの生成処理]
図2は、実施例1に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。図2に示すように、符号化装置は、特定のファイルに含まれる単語を静的辞書S0および動的辞書D0を用いて符号化する際に、特定のファイルから静的辞書に含まれない単語のうち外部辞書E0に含まれる単語を抽出する。符号化装置は、抽出される単語の外部辞書E0における符号と、動的に割り当てられる動的符号とを対応付けて動的辞書D0に登録する。これにより、符号化装置は、特定のファイルを符号化する際に動的辞書D0に登録された単語であっても、外部辞書E0に対応付けられた符号をともに登録することで、当該符号を複数のファイルで共通して用いることができる。この結果、符号化装置は、複数のファイルそれぞれの単語に関するビットマップ型インデックスを容易に生成できる。
ここでいう静的辞書S0とは、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書のことをいう。静的辞書S0には、それぞれの単語に対応する符号である静的コードがあらかじめ登録されている。
ここでいう動的辞書D0とは、静的辞書S0に登録されず、且つ、外部辞書E0に登録されている単語と、外部辞書E0における符号と、動的に付された動的コードとを対応付けた辞書である。静的辞書S0に登録されていない単語には、一例として、出現頻度の低い単語(低頻度単語)が挙げられる。かかる単語(低頻度単語)には、専門単語、新語、未知語などがある。ここでいう専門単語とは、ある特定の学問の分野や業界などの間で通用する単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。新語とは、流行語などの新しく作られた単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。未知語とは、専門単語でなく、新語でない単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。なお、動的辞書D0には、静的辞書S0に登録されていない単語の出現順に、動的コードに対応付けられた単語がバッファ部に登録される。動的辞書D0に関する詳しい説明は後述する。
ここでいう外部辞書E0とは、例えば、静的辞書S0に登録されていない単語を専門ごとに単語コードと対応付けた辞書などの、単語と符号とを対応づけた共通辞書である。外部辞書E0には、一例として、専門辞書、新語辞書および未知語辞書などがある。専門辞書には、専門単語が記憶される。新語辞書には、新語が記憶される。未知語辞書には、未知語が記憶される。低頻度単語に付される動的コードは、同一の単語であっても符号化対象のファイルごとに異なるが、外部辞書E0における単語コードは、例えば、同一の単語であれば符号化対象のファイルごとに共通化されたり、複数の符号化作業において共通化される。
符号化装置の符号化処理の一例を、以下に説明する。例えば、符号化装置は、符号化対象のファイルf3を記憶領域にロードする。なお、ファイルf3の「3」は、ファイルIDが「3」であることを示す。
符号化装置は、符号化対象のファイルf3を記憶領域から読み出し、読み出したファイルf3に対して字句解析を行う。ここでいう字句解析とは、符号化されていない状態のファイルを単語に分割することをいう。
符号化装置は、静的辞書S0と単語の文字列とを比較して、静的辞書S0に単語の文字列に対応する符号があるか否かを判定する。なお、かかる判定処理は、静的辞書S0を用いて符号化可能な単語の文字列を特定するビットフィルタと単語の文字列とを比較して、単語の文字列がビットフィルタにヒットするか否かを判定しても良い。ここでいうビットフィルタとは、静的辞書S0を用いて符号化可能な単語の文字列を特定するフィルタのことをいう。符号化装置は、静的辞書S0に単語の文字列に対応する符号がある場合には、静的辞書S0に基づいて単語の文字列を、当該単語の文字列に対応する符号(静的コード)に符号化し、静的コードを出力する。
符号化装置は、静的辞書S0に単語の文字列に対応する符号がない場合には、外部辞書E0から、単語の文字列に対応する符号(単語コード)および当該単語が登録された外部辞書E0のIDを取得する。なお、符号化装置は、外部辞書E0における符号を、自装置にて割り当てても良いし、単語コードを割り当てるマスタ装置に問い合わせても良い。実施例では、符号化装置は、外部辞書E0における符号を、マスタ装置に問い合わせる場合を説明する。
符号化装置は、単語の文字列と、外部辞書E0における符号(単語コード)と、動的に付された動的コードとを動的辞書D0に登録する。符号化装置は、動的辞書D0に基づいて、登録した単語の文字列を、当該登録した単語の文字列に対応する単語コードに符号化し、単語コードを出力する。なお、符号化装置は、単語の文字列が動的辞書D0に登録されている場合には、動的辞書D0に基づいて、当該単語の文字列を、当該単語の文字列に対応する単語コードに符号化し、単語コードを出力すれば良い。
符号化装置は、静的コードおよび動的辞書D0に基づいた単語コードそれぞれを、単語の出現順に、符号化データc3のエリアに出力する。符号化データc3のエリアは、ファイルf3に対応する符号化ファイルの符号化データのエリアである。
そして、符号化装置は、複数の単語コードそれぞれについて、ファイルf3内の存否をビットマップ型インデックスBIに設定する。
ここでいうビットマップ型インデックスBIとは、全文検索のためのインデックスであり、単語を指定するポインタと単語の各対象ファイルでの存否を示すビットを連結したビット列である。すなわち、ビットマップ型インデックスBIとは、ファイルに含まれる単語について、ファイルごとの存否をインデックス化したビットマップのことをいう。検索処理時には、このビットマップを、ビットのON・OFFに応じて検索対象の単語を含むか否かを示すインデックスとして用いることができる。単語を指定するポインタとしては、例えば、単語の符号が採用される。単語の符号は、静的コードおよび単語コードのことをいい、単語IDと同義である。なお、単語を指定するポインタは、例えば、単語そのものを用いても良い。すなわち、ビットマップ型インデックスBIは、単語を指定するポインタで示される単語ごとのビットマップを纏めたものである。図2に示すように、ビットマップ型インデックスBIのX軸はファイルIDを表し、ビットマップ型インデックスB1のY軸は単語IDを表す。つまり、ビットマップ型インデックスBIは、単語IDが示す単語の、複数のファイルIDが示すファイルごとの存否を表す。
一例として、「Baker」の単語ID「A002h」に対応するビットマップが示されている。単語ID「A002h」が示す単語「Baker」がファイルに存在する場合には、当該単語のファイルの存否としてON、すなわち2進数の「1」が設定され、当該単語がファイルに存在しない場合には、当該単語のファイルの存否としてOFF、すなわち2進数の「0」が設定される。ここでは、ファイルf3には、単語「Baker」が存在するので、「Baker」の単語ID「A002h」に対応するビットマップには、ファイルID「3」に対応するビットに「1」が設定される。
[動的辞書の一例]
図3は、実施例1に係る動的辞書の一例を示す図である。図3に示される動的辞書D0は、バッファ部D1とアドレステーブルD2とを含む。バッファ部D1は、文字列を記憶する。アドレステーブルD2は、動的コードと、格納位置と、データ長と、外部辞書IDと、単語コードとを対応付けて保持する。動的コードは、あらかじめ定められた固定長のコードであり、単語の文字列が登録された順に割り当てられる。ここでは、動的コードは、16進数「F」で始まる固定長3バイトのコードである。格納位置は、バッファ部D1に格納された文字列の位置を示す。データ長は、バッファ部D1に格納された文字列の長さ(バイト長)を示す。外部辞書IDは、単語が登録されている外部辞書のIDを示す。単語コードは、単語に割り当てられたコードであり、例えば圧縮符号である。かかる単語コードは、動的辞書D0に登録された単語であっても、同じ単語であれば、複数のファイルで共通して用いられる。
例えば、単語の文字列「Baker」に動的コードが割り当てられる場合について説明する。
符号化装置は、単語の文字列「Baker」をバッファ部D1に格納する。符号化装置は、単語の文字列を格納した格納位置および格納したデータ長をアドレステーブルD2に登録する。さらに、符号化装置は、単語の文字列「Baker」に割り当てられた単語コードおよび外部辞書IDをアドレステーブルD2に登録する。ここでは、符号化装置は、格納位置として「16」、データ長として「6」、外部辞書IDとして「53」、単語コードとして「CD0009h」をアドレステーブルD2に登録する。
符号化装置は、単語の文字列を、当該単語の文字列に対応付けられたアドレステーブルD2の単語コードに符号化する。ここでは、符号化装置は、単語の文字列「Baker」を当該単語の文字列に対応付けられた動的コード「A002h」に符号化する。
[ビットマップ型インデックスの構成の一例]
図4は、ビットマップ型インデックスの構成の一例を示す図である。図4に示すように、ビットマップ型インデックスBIは、超高頻度の単語、高頻度の単語および低頻度の単語に係る単語IDごとにビットマップを対応づける。ビットマップの各ビットが、当該ビットマップに対応する単語IDが示す単語が含まれているか否かを表す。
超高頻度の単語の単語IDおよび高頻度の単語の単語IDは、静的辞書S0に登録される。低頻度の単語の単語IDは、外部辞書E0に登録される。すなわち、低頻度の単語の単語IDは、専門辞書、新語辞書や未知語辞書により共通化される。そして、低頻度の単語の単語IDは、動的辞書D0に動的コードとともに登録される。
例えば、低頻度の単語の単語IDについて、単語IDxのビットマップが「・・・0110」となっている。ビットマップ「・・・0110」は、1ビット目に「0」が格納されているのでファイル1に単語IDxが示す単語が含まれず、2ビット目に「1」が格納されているのでファイル2に単語IDxが示す単語が含まれ、3ビット目に「1」が格納されているのでファイル3に単語IDxが示す単語が含まれることを表す。また、4ビット目に「0」が格納されているのでファイル4に単語IDxが示す単語が含まれていないことを表す。なお、ビットマップ「・・・0110」は、ファイル5以降の他の各ファイルに単語IDxが含まれるか否かについても表す。
[符号化ファイルの構成例]
図5は、符号化ファイルの構成例を示す図である。図5に示すように、符号化ファイルF2は、ヘッダ部と、符号化データと、トレーラ部とを有する。符号化データは、複数のファイルそれぞれの符号化された単語コード群を記憶する。トレーラ部は、各ファイルのアドレス、各ファイルの動的辞書D0の情報、ビットマップ型インデックスBIなどを記憶する。各ファイルのアドレスは、複数のファイルが符号化された各符号化データを格納するアドレスを示す。各ファイルのアドレスは、一例として、符号化データの先頭からの相対アドレスである。各ファイルの動的辞書D0の情報は、各ファイルについて、図3に示した動的辞書の情報に対応する。ビットマップ型インデックスBIは、複数のファイルに対応するビットマップ型インデックスを示す。ヘッダ部には、各ファイルのアドレスへのポインタやトレーラ部に格納された動的辞書D0へのポインタが格納される。符号化装置は、複数のファイルを符号化すると、符号化された結果である各符号化データを符号化ファイルF2に格納し、格納した各アドレスを各ファイルのアドレスに格納する。復号化処理では、ヘッダ部の各ファイルのアドレスへのポインタを利用して、トレーラ部の各ファイルのアドレスから復号化対象のファイルのアドレスを参照する。復号化処理は、ヘッダ部の動的辞書D0へのポインタを利用し、動的辞書D0を参照する。
[実施例1に係る符号化装置の構成]
図6は、実施例1に係る符号化装置の構成の一例を示す機能ブロック図である。図6に示すように、符号化装置100は、マスタ装置200と接続する。
マスタ装置200は、単語コード割当部211および外部辞書部221を有する。
外部辞書部221は、静的辞書部121に登録されていない単語を専門ごとに単語コードと対応付けた辞書である。外部辞書部221には、例えば、専門辞書、新語辞書および未知語辞書が含まれる。一例として、外部辞書部221は、辞書ごとに、単語の文字列および単語コードが対応付けられている。なお、外部辞書部221は、外部辞書E0に対応する。
単語コード割当部211は、符号化装置100から単語の文字列に対応する単語コードの問い合わせを受け付けると、外部辞書部221を用いて、単語の文字列に対応する単語コードを割り当てる。そして、単語コード割当部211は、割り当てた単語コードおよび単語が登録された辞書のIDを含む応答を符号化装置100に送信する。
符号化装置100は、符号化部110および記憶部120を有する。
符号化部110は、図2に示したビットマップ型インデックスの生成処理を実行する処理部である。符号化部110は、ファイルリード部111、判定部112、第1符号化部113、第2符号化部114、更新部115、インデックス設定部116およびファイルライト部117を有する。
記憶部120は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部120は、静的辞書部121、動的辞書部122およびビットマップ型インデックス部123を有する。
静的辞書部121は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。なお、静的辞書部121は、静的辞書S0に対応する。
動的辞書部122は、静的辞書部121に登録されていない単語と動的に付された動的コードおよび単語コードとを対応付けた辞書である。なお、動的辞書部122は、動的辞書D0に対応する。動的辞書部122の説明は、図3と同様であるので、その説明を省略する。
ファイルリード部111は、符号化対象のファイルF1に含まれる1つの対象ファイルを記憶領域に読み出す。ファイルリード部111は、対象ファイルを記憶領域から読み出し、読み出した対象ファイルに対して字句解析を行う。ファイルリード部111は、字句解析した結果の各単語を順次判定部112に出力する。
判定部112は、単語が静的辞書部121に登録されているか否かを判定する。例えば、判定部112は、ファイルリード部111から出力された単語の文字列が静的辞書部121のビットフィルタにヒットするか否かを判定する。判定部112は、静的辞書部121のビットフィルタにヒットしないと判定した場合には、単語の文字列を第1符号化部113に出力する。判定部112は、静的辞書部121のビットフィルタにヒットすると判定した場合には、単語の文字列を第2符号化部114に出力する。
第1符号化部113は、単語の文字列を動的辞書部122に基づいて符号化する。例えば、第1符号化部113は、単語の文字列が動的辞書部122のバッファ部D1に既に格納されているか否かを判定する。第1符号化部113は、単語の文字列が動的辞書部122のバッファ部D1に既に格納されていない場合には、当該単語の文字列に対応する単語コードをマスタ装置200に問い合わせる。第1符号化部113は、マスタ装置200から問い合わせの応答を受け付けると、当該応答に含まれる単語コードおよび単語が登録された辞書のIDを、アドレステーブルD2の新たな動的コードに対応するレコードに格納する。加えて、第1符号化部113は、単語の文字列をバッファ部D1に格納するとともに、アドレステーブルD2の新たな動的コードに対応するレコードに、当該単語の文字列を格納した格納位置および格納したデータ長を格納する。第1符号化部113は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルD2の単語コードに符号化する。第1符号化部113は、符号化された単語コードを更新部115に出力する。
第2符号化部114は、単語の文字列を静的辞書部121に基づいて符号化する。例えば、第2符号化部114は、静的辞書部121の静的辞書に基づいて、単語の文字列を、当該単語の文字列に対応する静的コード(単語コード)に符号化する。第2符号化部114は、符号化された単語コードを更新部115に出力する。
更新部115は、第1符号化部113および第2符号化部114から単語コードを取得し、取得した順に、取得した単語コードを対象ファイルに対応する符号化データの記憶領域に蓄積することで、当該記憶領域を更新する。
インデックス設定部116は、符号化された単語コードについて、対象ファイルの存否をビットマップ型インデックス部123に設定する。例えば、インデックス設定部116は、符号化された単語コードに対応するビットマップの、対象ファイルにおけるファイルIDに対応するビットに存在することを示す「1」を設定する。
ファイルライト部117は、符号化対象のファイルF1の複数の対象ファイルを全て符号化した後、記憶領域に書き込まれたそれぞれの符号化データ(単語コード)を符号化ファイルF2に格納する。ファイルライト部117は、各対象ファイルの動的辞書部122の情報、各対象ファイルを符号化した結果である各符号化データのアドレスおよびビットマップ型インデックス部123を符号化ファイルF2のトレーラ部に書き込む。
[実施例1に係る符号化処理の処理手順]
次に、図6に示した符号化部110の処理手順について、図7を参照して説明する。図7は、実施例1に係る符号化処理のフローチャートの一例を示す図である。
図7に示すように、符号化部110は、前処理を実行する(ステップS11)。例えば、符号化部110は、各種記憶領域を記憶部120に確保する。そして、符号化部110は、符号化対象のファイルF1内の複数の対象ファイルのうち1つの対象ファイルの文字列を読み出し、読出用の記憶領域に格納する(ステップS12)。
符号化部110は、読出用の記憶領域から、1つの対象ファイルの単語の文字列を読み出す(ステップS13)。例えば、符号化部110は、1つの対象ファイルに対して字句解析を行い、字句解析した結果の単語の文字列を先頭から読み出す。
符号化部110は、静的辞書部121に単語の文字列が登録済みであるか否かを判定する(ステップS14)。静的辞書部121に単語の文字列が登録済みであると判定した場合には(ステップS14;Yes)、符号化部110は、静的辞書部121に登録されている静的コード(単語コード)を出力する(ステップS15)。そして、符号化部110は、ステップS21に移行する。
一方、静的辞書部121に単語の文字列が登録済みでないと判定した場合には(ステップS14;No)、符号化部110は、動的辞書部122を参照する(ステップS16)。符号化部110は、動的辞書部122に単語の文字列が登録済みであるか否かを判定する(ステップS17)。例えば、符号化部110は、単語の文字列が動的辞書部122のバッファ部D1に既に格納されているか否かを判定する。
動的辞書部122に単語の文字列が登録済みであると判定した場合には(ステップS17;Yes)、符号化部110は、ステップS20に移行する。
一方、動的辞書部122に単語の文字列が登録済みでないと判定した場合には(ステップS17;No)、符号化部110は、当該単語に対する単語コードをマスタ装置200に問い合わせる(ステップS18)。符号化部110は、マスタ装置200からの問い合わせの応答に含まれる単語コードを動的辞書部122に登録する(ステップS19)。例えば、符号化部110は、問い合わせの応答に含まれる単語コードおよび単語が登録された辞書のIDを、アドレステーブルD2の新たな動的コードに対応するレコードに格納する。加えて、符号化部110は、単語の文字列をバッファ部D1に格納するとともに、アドレステーブルD2の新たな動的コードに対応するレコードに、当該単語の文字列を格納した格納位置および格納したデータ長を格納する。そして、符号化部110は、ステップS20に移行する。
ステップS20において、符号化部110は、動的辞書部122に登録されている動的コードを出力する(ステップS20)。例えば、符号化部110は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルD2の単語コードに符号化する。符号化部110は、符号化した単語コードを出力する。そして、符号化部110は、ステップS21に移行する。
ステップS21において、符号化部110は、出力された単語コードを、対象ファイルに対応する符号化データ用の記憶領域に書き込む(ステップS21)。符号化部110は、単語コードに対応するビットマップに「1」を書きこむ(ステップS22)。すなわち、符号化部110は、単語コードに対応するビットマップの、対象ファイルにおけるファイルIDに対応するビットに存在することを示す「1」を設定する。
符号化部110は、対象ファイルの終点か否かを判定する(ステップS23)。対象ファイルの終点でないと判定した場合には(ステップS23;No)、符号化部110は、対象ファイルの次の単語を読み出すべく、ステップS13に移行する。
一方、対象ファイルの終点であると判定した場合には(ステップS23;Yes)、符号化部110は、符号化されていない対象ファイルがあるか否かを判定する(ステップS24)。符号化されていない対象ファイルがあると判定した場合には(ステップS24;Yes)、符号化部110は、次の対象ファイルを符号化すべく、ステップS12に移行する。
符号化されていない対象ファイルがないと判定した場合には(ステップS24;No)、符号化部110は、符号化データ用の記憶領域に記憶された符号化データを符号化ファイルF2に書き込む(ステップS25)。このとき、符号化部110は、各対象ファイルの動的辞書部122の情報、各対象ファイルの符号化データのアドレスおよびビットマップ型インデックス部123を符号化ファイルF2のトレーラ部に書き込む。そして、符号化部110は、符号化処理を終了する。
これにより、符号化装置100は、符号化対象のファイルに含まれる単語を静的辞書部121および動的辞書部122を用いて符号化する際に、当該ファイルから、静的辞書部121に含まれない単語のうち外部辞書部221に含まれる単語を抽出する。符号化装置100は、外部辞書部221に、抽出される単語に対応付けられた符号を、動的に割り当てられる動的符号と対応付け、動的辞書部122に登録する。かかる構成によれば、符号化装置100は、動的辞書部122に登録された単語であっても、外部辞書部221に対応付けられた符号をともに登録することで、当該符号を複数の符号化対象のファイルで共通して用いることができる。すなわち、符号化装置100は、例えば専門用語、新語や未知語に対する符号の共通化を実現できる。この結果、符号化装置100は、複数の符号化対象のファイルそれぞれの単語ごとの存否情報を容易に生成できる。
ところで、実施例1では、符号化装置100は、符号化対象の複数のファイルそれぞれの単語ごとの存否情報を表すビットマップ型インデックスBIを1つ生成する場合を説明した。しかしながら、符号化装置100は、これに限定されず、符号化対象の複数のファイルそれぞれの単語ごとの存否情報を表すビットマップ型インデックスBIを複数生成し、ビットマップ型インデックスBIを階層化しても良い。
そこで、実施例2では、符号化装置100は、符号化対象の複数のファイルそれぞれの単語ごとの存否情報を表すビットマップ型インデックスBIを複数生成し、ビットマップ型インデックスBIを階層化する場合を説明する。
[実施例2に係るビットマップ型インデックスの階層化]
図8は、実施例2に係るビットマップ型インデックスの階層化の一例を示す図である。図8に示すように、ビットマップ型インデックスBIは、所定のファイル数n単位で分割されている。nは例えば256である。分割されたそれぞれを、セグメントと称す。
セグメントsg0(1)は、符号化対象のファイルf1〜fnまでのビットマップ型インデックスBIを有するセグメントである。セグメントsg0(2)は、ファイルf(n+1)〜f(2n)までのビットマップ型インデックスBIを有するセグメントである。セグメントsg0(3)は、ファイルf(2n+1)〜f(3n)までのビットマップ型インデックスBIを有するセグメントである。
セグメントは初期状態では、セグメントsg0(1)のみが存在し、ファイル追加によりファイル数がnを超えると、セグメントsg0(2)が生成され、ファイル数が2nを超えると、セグメントsg0(3)が生成される。
各セグメントのビットマップ型インデックスBIは、単語が同じであるビットマップを有するが、担当するファイルIDが異なる。各セグメントのビットマップ型インデックスBIにおいて担当するファイルIDは、自セグメントが保持する符号化ファイルF2のファイルIDとなる。例えば、セグメントsg0(1)のビットマップ型インデックスBIでは、各単語のビットマップについてファイルID1〜nの存否を示すビット列を有することになる。セグメントsg0(m)のビットマップ型インデックスBIでは、各単語のビットマップについてファイルID(m−1)n〜mnの存否を示すビット列を有することになる。
動的辞書D0は、静的辞書S0に登録されず、且つ、外部辞書E0に登録されている単語と、外部辞書E0における符号と、動的に付された動的コードとを対応付けた辞書である。すなわち、符号化装置は、静的辞書S0に単語の文字列に対応する符号がない場合には、外部辞書E0から、単語の文字列に対応する符号(単語コード)および当該単語コードが登録された外部辞書E0のIDを取得する。符号化装置は、単語の文字列と、外部辞書E0から取得された符号(単語コード)と、動的に付された動的コードとを動的辞書D0に登録する。なお、動的辞書D0は、実施例1ではファイル単位に生成されたが、ファイル単位に生成されても、セグメント単位に生成されても良い。図9では、動的辞書D0は、セグメント単位に生成される場合である。
ここで、セグメント数が増加すると、単語IDごとにビットマップが冗長化する。冗長化した場合、単語IDごとに、全ファイル数について存否を示すビットのON/OFFを確認する必要があるが、存在しない(OFFの)箇所について確認作業をするのは無駄である。そこで、単語IDごとに、セグメントがm+1個生成されたら、m個単位でビットマップを集約することにする。
図9では、例えば、単語xが示す単語IDxのビットマップを上位階層に集約する場合を例に挙げて説明する。なお、「sgX(Y)」のXは、階層番号を示しており、Yはセグメント番号を示している。したがって、sgX(Y)の場合は、第X階層のY番目のセグメントとなる。また、これまで説明してきたセグメントsg0(1)〜sg0(m)は、基本階層である第0階層のセグメントとなる。
まず、基本階層である第0階層から上位階層である第1階層への集約例について説明する。集約のルールとしては、対象階層のセグメントのビットマップであるビット列がオール0、すなわち、単語xがそのセグメント内の対象ファイル群に存在しない場合、上位階層のインデックスとして「0」に集約する。一方、対象階層のセグメントのビットマップであるビット列に1個でも「1」がある場合、すなわち、単語xがそのセグメント内の対象ファイル群の少なくともいずれか1つに存在する場合、上位階層のインデックスとして「1」に集約する。
例えば、セグメントsg0(1)については、「1」が存在するため、上位階層のセグメントsg1(1)には、「1」が設定される。同様に、セグメントsg0(m)については、オール0であるため、上位階層のセグメントsg1(1)には、「0」が設定される。この上位階層のセグメントsg1(1)のビットマップのビット位置は、下位のセグメントsg0(1)〜sg0(m)の位置を示している。このように、上位階層のセグメントのビットの値により下位のセグメントのビットマップの状態を特定することができる。
また、このような集約は第0階層と第1階層との間だけではなく、最上位階層のセグメント数がm個になると、新たに上位階層のセグメントが生成されることとなる。例えば、第1階層でセグメントがセグメントsg1(m)まで生成されると、第2階層のセグメントsg2(1)が生成されることとなる。なお、図9では、第2階層までの例を示したが、データの規模が増加するにしたがって、第3階層以上の階層に集約されることになる。
[階層化されたセグメント群を用いたファイルの絞込み例]
図9は、階層化されたセグメント群を用いたファイルの絞込み例を示す図である。図9では、説明を単純化するため、第0階層のセグメントのファイル数nを4とし、mを4とする。したがって、第0階層セグメントsg0(1)〜sg0(16)まで存在することになるが、図示されていないセグメントについては説明を省略する。また、図9では、最上位階層を第2階層として説明する。また、図9において、実線矢印はAND結果にしたがって下位階層のセグメントを指定していることを示しており、点線矢印は実際には指定されないが、指定されたセグメントと対比するため図示している。また、図9では、検索文字列として「Sherlock△Baker」が入力された場合とする。なお、P(s)は、単語sの単語IDを示すものとする。また、図9における削除マップは、ファイルごとに削除されたか否かを示すビットマップを示し、「1」である場合には削除されたことを示し、「0」である場合には削除されていないことを示す。なお、検索において、削除マップは反転された後に、他のビットマップとのAND演算が行われる。
(A)において、最上位階層である第2階層のセグメントsg2(1)について、単語「Sherlock」の単語IDを示すP(Sherlock)のビットマップと、単語「Baker」の単語IDを示すP(Baker)のビットマップと、集約削除マップと、のAND演算を行う。AND結果は「1100」となり、下位階層である第1階層のセグメントsg1(1)、sg1(2)に、単語「Sherlock」および「Baker」が存在する可能性があることがわかる。
また、最上位階層である第2階層のセグメントsg2(1)について、下位セグメント番号3、4についてはAND結果が「0」である。したがって、セグメントsg1(3)、sg1(4)の各AND演算を行うまでもなく、セグメントsg1(3)、sg1(4)の各AND結果がオール0になることがわかる。
(B)では、第2階層のAND結果から第1階層のセグメントsg1(1)、sg1¥(2)が指定されたため、セグメントsg1(1)、sg1(2)について、(A)と同様AND演算を実行する。これにより、セグメントsg1(1)からはセグメントsg0(1)が指定され、セグメントsg1(2)からはセグメントsg0(5)が指定されることになる。セグメントsg1(2)に着目すると、下位セグメント番号6〜8についてはAND結果が「0」である。したがって、セグメントsg0(6)〜sg0(8)の各AND演算を行うまでもなく、セグメントsg0(6)〜sg0(8)の各AND結果がオール0になることがわかる。
(C)では、第1階層のAND結果から第0階層のセグメントsg0(1)、sg0(5)が指定されたため、セグメントsg0(1)、sg0(5)について、(A)、(B)と同様AND演算を実行する。これにより、セグメントsg0(1)からはファイルID3が指定され、セグメントsg0(5)からはファイルID19が指定されることになる。したがって、ファイルf3、f19に、単語「Sherlock」および「Baker」の両方が存在することがわかる。
これにより、符号化装置は、符号化ファイルF2内の符号化データのうちファイルf3のアドレスにある符号化データを、静的辞書S0および動的辞書D0を用いて復号化することで、検索単語を有するファイルf3を取得できる。ここで言う符号化ファイルF2は、セグメントsg0(1)に対応する符号化ファイルである。ここでいう動的辞書D0は、セグメントsg0(1)に対応する動的辞書である。また、符号化装置は、符号化ファイルF2内の符号化データのうちファイルf19のアドレスにある符号化データを、静的辞書S0および動的辞書D0を用いて復号化することで、検索単語を有するファイルf19を取得できる。ここで言う符号化ファイルF2は、セグメントsg0(5)に対応する符号化ファイルである。ここでいう動的辞書D0は、セグメントsg0(5)に対応する動的辞書である。
[階層化されたセグメント群を実装したコンピュータシステムの構成例]
図10は、階層化されたセグメント群を実装したコンピュータシステムの構成例を示す図である。図10では、m個のセグメントを1アーカイブファイルとする。なお、「AX(Y)」は、アーカイブファイルの符号であり、Xは階層番号を示しており、Yはアーカイブ番号を示している。したがって、AX(Y)の場合は、第X階層のY番目のアーカイブファイルとなる。例えば、アーカイブファイルA0(1)は、第0階層のセグメントsg0(1)〜sg0(m)の集合である。
図10の例では、マスタサーバMSは、第1階層以上のアーカイブファイルを格納している。また、スレーブサーバS1、S2、・・・、S(2m+1)、・・・は、マスタサーバMSにより割り当てられた1個のアーカイブファイルを格納している。なお、個々のスレーブサーバは、例えば、それぞれ符号化装置100に対応する。図10のアーカイブファイルの割り当ては1個であり、マスタサーバMSが第1階層以上のアーカイブファイルをすべて担当する必要はなく、他のサーバに分散させても良い。また、スレーブサーバS1、S2、・・・、S(2m+1)、・・・についても1アーカイブファイルだけではなく、複数のアーカイブファイルを担当することとしても良い。
これにより、符号化装置100を含むコンピュータシステムは、例えば専門用語、新語や未知語に対する符号(単語コード)をもとに、符号化および階層化を行うことで、容易にスレーブサーバ全体のパフォーマンスを向上させることができる。すなわち、コンピュータシステムは、スケールアウトすることができる。具体的には、マスタサーバMSは、担当しているアーカイブファイル内のAND結果を参照して、負荷が均一となるように、セグメントにスレーブサーバを割り当てることができる。
[実施例に関連する他の態様]
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[情報処理装置のハードウェア構成]
下記に、上述の実施形態に用いられるハードウェア及びソフトウェアについて説明する。図11は、コンピュータ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は、ストレージエリアネットワークによりコンピュータ1と接続された記憶装置との通信の制御を行なう回路である。SANインターフェース311は、例えばホストバスアダプタ(HBA)などである。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、コンピュータ1の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307及び出力デバイス309として用いられる。また、入力デバイス307及び出力デバイス309は、コンピュータ1と一体になっていても良いし、コンピュータ1に含まれず、例えば、コンピュータ1に外部から接続する装置であっても良い。
例えば、プロセッサ301は、ROM303や記憶媒体305に記憶されたプログラムをRAM302に読み出し、読み出されたプログラムの手順に従って符号化部110の処理を行なう。その際にRAM302はプロセッサ301のワークエリアとして用いられる。記憶部120の機能は、ROM303および記憶媒体305がプログラムファイル(後述のアプリケーションプログラム24、ミドルウェア23およびOS22など)やデータファイル(例えば、静的辞書部121、動的辞書部122、ビットマップ型インデックス部123など)を記憶し、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。プロセッサ301が読み出すプログラムについては、図12を用いて説明する。
図12は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ1において、図12に示すハードウェア群HW21(301〜312)の制御を行なうOS(オペレーティング・システム)22が動作する。OS22に従った手順でプロセッサ301が動作して、ハードウェア群HW21の制御・管理が行なわれることにより、アプリケーションプログラムAP24やミドルウェアMW23に従った処理がハードウェア群21で実行される。さらに、コンピュータ1において、ミドルウェアMW23またはアプリケーションプログラムAP24が、RAM302に読み出されてプロセッサ301により実行される。
プロセッサ301が、符号化機能が呼び出された場合に、ミドルウェア23またはアプリケーションプログラム24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア群21を制御して)符号化部110の機能が実現される。符号化機能は、アプリケーションプログラム24自体に含まれても良いし、アプリケーションプログラム24に従って呼び出されることで実行されるミドルウェア23の一部であっても良い。
図13は、実施形態のシステムにおける装置の構成例を示す。図13のシステムは、コンピュータ1a、コンピュータ1b、基地局2およびネットワーク3を含む。コンピュータ1aは、無線または有線の少なくとも一方により、コンピュータ1bと接続されたネットワーク3に接続している。
図6に示す符号化装置100とマスタ装置200とは、図13に示すコンピュータ1aとコンピュータ1bとのいずれに含まれても良い。コンピュータ1bが符号化装置100の機能を含み、コンピュータ1aがマスタ装置200の機能を含んでも良いし、コンピュータ1aが符号化装置100の機能を含み、コンピュータ1bがマスタ装置200の機能を含んでも良い。また、コンピュータ1aとコンピュータ1bとの双方が、符号化装置100の機能およびマスタ装置200の機能を備えても良い。
100 符号化装置
110 符号化部
111 ファイルリード部
112 判定部
113 第1符号化部
114 第2符号化部
115 更新部
116 インデックス設定部
117 ファイルライト部
120 記憶部
121 静的辞書部
122 動的辞書部
123 ビットマップ型インデックス部
200 マスタ装置
211 単語コード割当部
221 外部辞書部

Claims (4)

  1. コンピュータに、
    対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出し、
    該抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する
    処理を行わせる符号化プログラム。
  2. 前記符号化の際に、複数のファイルのそれぞれについて複数の所定の単語がそれぞれ存在するか否かを示す存否情報に、符号化対象のファイルに該抽出される単語が存在することを示すインデックス情報を生成する
    ことを特徴とする請求項1に記載の符号化プログラム。
  3. 対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出する抽出部と、
    前記抽出部によって抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する登録部と、
    を有することを特徴とする符号化装置。
  4. コンピュータが、
    対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出し、
    該抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する
    処理を実行する符号化方法。
JP2016083964A 2016-04-19 2016-04-19 符号化プログラム、符号化装置および符号化方法 Active JP6648620B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016083964A JP6648620B2 (ja) 2016-04-19 2016-04-19 符号化プログラム、符号化装置および符号化方法
US15/489,029 US9793920B1 (en) 2016-04-19 2017-04-17 Computer-readable recording medium, encoding device, and encoding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016083964A JP6648620B2 (ja) 2016-04-19 2016-04-19 符号化プログラム、符号化装置および符号化方法

Publications (2)

Publication Number Publication Date
JP2017194803A true JP2017194803A (ja) 2017-10-26
JP6648620B2 JP6648620B2 (ja) 2020-02-14

Family

ID=60021677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016083964A Active JP6648620B2 (ja) 2016-04-19 2016-04-19 符号化プログラム、符号化装置および符号化方法

Country Status (2)

Country Link
US (1) US9793920B1 (ja)
JP (1) JP6648620B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019121861A (ja) * 2017-12-28 2019-07-22 富士通株式会社 符号化プログラム、動的辞書の生成プログラム、符号化方法、動的辞書の生成方法、符号化装置および復号化装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10263638B2 (en) * 2016-05-31 2019-04-16 Texas Instruments Incorporated Lossless compression method for graph traversal
JP6834327B2 (ja) * 2016-10-06 2021-02-24 富士通株式会社 符号化プログラム、符号化装置および符号化方法
JP6805720B2 (ja) 2016-10-21 2020-12-23 富士通株式会社 データ検索プログラム、データ検索装置およびデータ検索方法
JP7059516B2 (ja) * 2017-03-29 2022-04-26 富士通株式会社 符号化プログラム、符号化装置および符号化方法
JP7210130B2 (ja) * 2017-04-07 2023-01-23 富士通株式会社 符号化プログラム、符号化方法および符号化装置
US11387844B2 (en) * 2019-04-19 2022-07-12 Preferred Networks, Inc. Data compression method, data compression apparatus, data decompression method, data decompression apparatus and data storage system

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 データ圧縮方法および装置
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5850565A (en) * 1996-08-26 1998-12-15 Novell, Inc. Data compression method and apparatus
JP4874162B2 (ja) 2007-04-27 2012-02-15 ルネサスエレクトロニクス株式会社 データ展開装置及びデータ展開方法
US7982636B2 (en) * 2009-08-20 2011-07-19 International Business Machines Corporation Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries
US8200641B2 (en) * 2009-09-11 2012-06-12 Dell Products L.P. Dictionary for data deduplication
JP5741699B2 (ja) 2011-09-14 2015-07-01 富士通株式会社 抽出方法、抽出プログラム、抽出装置、および抽出システム
US8872677B2 (en) * 2013-03-15 2014-10-28 Dialogic Networks (Israel) Ltd. Method and apparatus for compressing data-carrying signals

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 データ圧縮方法および装置
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019121861A (ja) * 2017-12-28 2019-07-22 富士通株式会社 符号化プログラム、動的辞書の生成プログラム、符号化方法、動的辞書の生成方法、符号化装置および復号化装置
JP7159557B2 (ja) 2017-12-28 2022-10-25 富士通株式会社 動的辞書の生成プログラム、動的辞書の生成方法および復号化装置

Also Published As

Publication number Publication date
JP6648620B2 (ja) 2020-02-14
US9793920B1 (en) 2017-10-17
US20170302292A1 (en) 2017-10-19

Similar Documents

Publication Publication Date Title
JP6648620B2 (ja) 符号化プログラム、符号化装置および符号化方法
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
JP6742692B2 (ja) 符号化プログラムおよび伸長プログラム
JP6531398B2 (ja) プログラム
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
EP3236367B1 (en) Encoding program, encoding method, encoding device, retrieval program, retrieval method, and retrieval device
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
EP3306823B1 (en) Encoding program, encoding apparatus and encoding method
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
JP6032292B2 (ja) 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
CN106354746B (zh) 搜索方法和搜索设备
EP3236368A1 (en) Encoding processing program, encoding processing device, encoding processing method, decoding processing program, decoding processing device, and decoding processing method
JP7159557B2 (ja) 動的辞書の生成プログラム、動的辞書の生成方法および復号化装置
JP2018067264A (ja) データ検索プログラム、データ検索装置およびデータ検索方法
JP7210130B2 (ja) 符号化プログラム、符号化方法および符号化装置
JP7003427B2 (ja) 検索プログラム、情報処理装置および検索方法
JP6737117B2 (ja) 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
JP2016134754A (ja) 変換処理プログラム、情報処理装置および変換処理方法
JP6717153B2 (ja) インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
JP2020061641A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191211

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191230

R150 Certificate of patent or registration of utility model

Ref document number: 6648620

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150