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

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

Info

Publication number
JP2017028374A
JP2017028374A JP2015142498A JP2015142498A JP2017028374A JP 2017028374 A JP2017028374 A JP 2017028374A JP 2015142498 A JP2015142498 A JP 2015142498A JP 2015142498 A JP2015142498 A JP 2015142498A JP 2017028374 A JP2017028374 A JP 2017028374A
Authority
JP
Japan
Prior art keywords
dictionary
word
registered
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
JP2015142498A
Other languages
English (en)
Other versions
JP6536243B2 (ja
Inventor
片岡 正弘
Masahiro Kataoka
正弘 片岡
量 松村
Ryo Matsumura
量 松村
崇記 小澤
Takaki Ozawa
崇記 小澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015142498A priority Critical patent/JP6536243B2/ja
Priority to US15/209,978 priority patent/US9628110B2/en
Publication of JP2017028374A publication Critical patent/JP2017028374A/ja
Application granted granted Critical
Publication of JP6536243B2 publication Critical patent/JP6536243B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables
    • 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/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
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

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)

Abstract

【課題】文字列の符号化のためのリスト照合を高速化する。
【解決手段】符号化装置100は、入力された文字データのうち、静的辞書124に含まれない文字列を、動的辞書122に順次登録する。符号化装置100は、動的辞書122に登録された文字列をそれぞれハッシュ化したハッシュ化データを、静的辞書124の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加する。符号化装置100は、入力された文字列の、静的辞書124、または、動的辞書122への登録有無を、第1のハッシュ化データを用いて判定する。符号化装置100は、判定の結果に応じて、静的辞書124、または、動的辞書122の登録内容に基づき、符号化を行う。
【選択図】図4

Description

本発明は、符号化プログラなどに関する。
LZ77の符号化(例えば、ZIP、GZIP)においては、スライド窓を利用し、最長一致文字列探索を行い、圧縮符号に最長一致文字列のアドレスと文字列長を割り当てている。例えば、GZIPでは、圧縮対象の文字列がスライド窓のいずれかの文字列と一致するかの比較を、2グラムのハッシュ表および連結リストを用いて行う。
特開平5−252049号公報 特許第3038233号公報 特開平10−261969号公報 特開平4−274557号公報
しかしながら、英文において、先頭2グラム分の文字の分布には偏りがあるため、2グラムのハッシュ表には衝突が生じ、連結リストによる表現が必要となり、この結果、処理量が大きくなり、符号の割り当て速度が低下するという問題がある。
ここで、処理量が大きくなり、符号の割り当て速度が低下するという問題を、図1を参照して説明する。図1は、ハッシュ表と連結リストの構造の参考例を示す図である。例えば、GZIPでは、図1に示すように、バッファにハッシュ表と連結リストを用いた構造を持たせている。ハッシュ値は、文字列の先頭のαシンボルから生成される。一例として、2グラムの場合には、αは2である。GZIPでは、同じハッシュ値を持つ文字列が現れた順に連結リストを用いてリスト状に連結する。ハッシュ表には、連結リストの先頭ポインタを保存する。そして、圧縮対象の文字列に対して、先頭のシンボルからハッシュ値を生成し、ハッシュ値が同値であれば、リストを辿り、同値のハッシュ値を持つバッファ内の文字列との一致をとることにより、最長一致文字列を求めることができる。最長一致文字列を求めると、最長一致文字列のアドレスと文字列長を圧縮符号として割り当てる。
ところが、2グラムの場合には、先頭2グラム分の文字の分布には偏りがあるため、文字列の先頭の2グラムから生成されるハッシュ値は、2グラムの分布に応じて衝突することがある。ハッシュ値が衝突すると、ハッシュ値に対応する連結リストの先頭ポイントから順次リストを辿って最長一致文字列を探索する。したがって、連結リストを順次辿って最長一致文字列を探索する処理の処理量が大きくなる。この結果、符号の割り当て処理の速度が低下する。
1つの側面では、文字列の符号化のためのリスト照合を高速化することを目的とする。また、1つの側面では、動的辞書を含む符号化文書の復号化において、動的辞書を参照した復号化を高速化することを目的とする。
第1の案では、符号化プログラムは、コンピュータに、入力された文字データのうち、静的辞書に含まれない文字列を、動的辞書に順次登録し、前記動的辞書に登録された文字列をそれぞれハッシュ化したハッシュ化データを、前記静的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加し、入力された文字列の、前記静的辞書、または、前記動的辞書への登録有無を、前記第1のハッシュ化データを用いて判定し、前記判定の結果に応じて、前記静的辞書、または、前記動的辞書の登録内容に基づき、符号化を行う処理を実行させる。
1つの態様によれば、文字列の符号化のためのリスト照合を高速化することができる。
図1は、ハッシュ表と連結リストの構造の参考例を示す図である。 図2Aは、実施例に係る符号化処理の流れの一例を示す図である。 図2Bは、実施例に係る符号化処理の流れの一例を示す図である。 図2Cは、実施例に係る符号化処理の流れの一例を示す図である。 図3は、実施例に係る動的辞書の一例を示す図である。 図4は、実施例に係る符号化装置の構成を示す機能ブロック図である。 図5は、静的辞書の一例を示す図である。 図6Aは、実施例に係る符号化処理のフローチャートの一例を示す図(1)である。 図6Bは、実施例に係る符号化処理のフローチャートの一例を示す図(2)である。 図7は、管理領域の移し替え処理のフローチャートの一例を示す図である。 図8は、符号化ファイルの構成例を示す図である。 図9は、実施例に係る照合処理の流れの一例を示す図である。 図10は、実施例に係る照合装置の構成を示す機能ブロック図である。 図11は、実施例に係る照合処理のフローチャートの一例を示す図である。 図12は、実施例の情報処理装置のハードウェア構成を示す図である。 図13は、コンピュータで動作するプログラムの構成例を示す図である。
以下に、本願の開示する符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[実施例に係る符号化処理]
図2A〜図2Cは、実施例に係る符号化装置の符号化処理の流れの一例を示す図である。
まず、符号化装置100は、それぞれの単語に、4ビットのヘッダと、20ビットの整数を割当て、3バイトの基本単語コードとして静的辞書に登録する。例えば、単語「accessibility」にF003BEhを割り当てる。また、高頻度な単語には、その頻度に応じて可変長の静的符号が割り当てられ、低頻度な単語には、出現順に2〜3バイトの動的符号が割り当てられる。
ここで、英和辞典の単語と20ビットの整数との関係について説明する。リーダーズ英和辞典には、約27万語の単語が収められている。オックスフォード英英辞典には、約50万語の単語が収められている。いずれの辞典も、単語の数が100万語以内である。これに対して、20ビットは最大1MB(メガバイト)であるので、100万語の単語を表すことが可能である。つまり、いずれの辞典も、20ビットの整数で単語の識別が可能である。
また、図2Aに示すように、符号化装置100は、2次元のハッシュ化マトリックスを利用して単語への符号割当てを行う。例えば、符号化装置100は、単語「accessibility(6163636573736962696C697479h)」をAハッシュするとともにBハッシュする。ここでいうAハッシュとは、単語をある素数Aで割った余りを算出することをいう。ここでいうBハッシュとは、ハッシュ化データをAハッシュで用いた素数と異なる素数Bで割った余りを算出することをいう。一例として、符号化の対象の単語数が10000語であるとすると、Aハッシュで算出される余りとBハッシュで算出される余りとから表わせる2次元の行列(マトリックス)が約10000となるように、AハッシュおよびBハッシュで用いられる素数が選択される。選択される素数は、行列の数が1000の場合、一例として、97と101である。つまり、最小公倍数が約10000となる2次元のマトリックス空間の中で、ある単語についてAハッシュおよびBハッシュで求められる余りの組は、他の単語について求められる余りの組と衝突しない(重複しない)であろうという推測に基づくものである。選択された素数97は一例としてAハッシュで用いられ、Aハッシュで算出された値は0〜96のいずれかの値となる。選択された素数101は一例としてBハッシュで用いられ、Bハッシュで算出された値は、0〜100のいずれかの値となる。なお、Aハッシュで算出される余りとBハッシュで算出される余りとから表わせる2次元のハッシュ化マトリックスのことを、以降、「2次元マトリックス」というものとする。また、Aハッシュ、Bハッシュという名称は、これに限定されず、2つのハッシュの区別がつくような名称であれば良い。
符号化装置100は、2次元にハッシュ化された余りの組を用いて、2次元マトリックス121の要素(位置)をみつける。みつけた位置には、ポインタ情報が記憶される。ここで、ポインタ情報には、次の2種類がある。1種類目は、余りの組に重複がない場合である。すなわち、余りの組が衝突しない場合である。かかる場合のポインタ情報p1は、識別フラグ「0」および動的コード(符号)を指す単語へのポインタを含む。2種類目は、余りの組に重複がある場合である。すなわち、余りの組が衝突する場合である。かかる場合のポインタ情報p2は、識別フラグ「1」および重複テーブル123へのポインタを含む。重複テーブル123とは、2次元ハッシュ化で得られた余りの組が重複する場合に、重複する余りの組に対する複数の単語について、動的コード(符号)を指す単語へのポインタを管理するテーブルである。なお、重複テーブル123に関する詳しい説明は、後述する。
図2Bに示すように、符号化装置100は、みつけた位置のポインタ情報を用いて、符号化する単語が動的辞書122に登録されているか否かを判定する。
ここで、まず、静的辞書とは、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書のことをいう。これに対して、動的辞書122とは、静的辞書に登録されていない単語と動的に付された動的コード(符号)とを対応付けた辞書である。静的辞書に登録されていない単語には、一例として、出現頻度の低い単語(低頻度単語)、未知語、数値、時刻、タグなどがある。ここでいう未知語とは、静的辞書に登録されていない単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。動的辞書122には、静的辞書に登録されていない単語の出現順に、動的コードに対応付けられた単語がバッファ部に登録されている。
例えば、符号化装置100は、みつけた位置のポインタ情報の識別フラグが「0」である場合には、ポインタ情報に含まれる単語へのポインタを辿り、符号化する単語が動的辞書122に登録されているか否かを判定する。符号化装置100は、符号化する単語が動的辞書122に登録されている場合には、当該単語を、登録されている単語に対応する動的コードに符号化する。これにより、符号化装置100は、1パスで符号化する場合であっても、連結リストを順次辿ることなく、且つ、高速に、符号化対象の単語を符号化することができる。
符号化装置100は、符号化する単語が動的辞書122に登録されていない場合には、単語を動的辞書122に登録し、動的辞書122に基づいて、当該単語を、登録した単語に対応する動的コードに符号化する。この場合、みつけた位置に重複がある場合である。かかる場合には、符号化装置100は、2次元マトリックス121のみつけた位置に、識別フラグ「1」と重複テーブル123へのポインタとを含むポインタ情報を再登録する。符号化装置100は、重複テーブル123へのポインタが指す管理領域の未使用の位置に、使用中であることを示すONと動的コード(符号)を指す単語へのポインタを設定する。ここでは、みつけた位置に重複があった2つ分の単語に対して設定される。
符号化装置100は、みつけた位置のポインタ情報の識別フラグが「1」である場合には、ポインタ情報に含まれる重複テーブル123へのポインタを辿り、辿ったポインタが指す管理領域を探索対象として、符号化する単語が動的辞書122に登録されているか否かを判定する。符号化装置100は、符号化する単語が動的辞書122に登録されている場合には、当該単語を、登録されている単語に対応する動的コードに符号化する。
符号化装置100は、符号化する単語が動的辞書122に登録されていない場合には、単語を動的辞書122に登録し、動的辞書122に基づいて、登録した単語に対応する動的コードに符号化する。この場合、みつけた位置にさらに重複がある場合である。かかる場合には、符号化装置100は、重複テーブル123へのポインタが指す管理領域の未使用の位置に、使用中であることを示す「0」(以降、ONと同義)と動的コード(符号)を指す単語へのポインタを設定する。
ここで、重複テーブル123は、4段用の管理領域、8段用の管理領域および2段用の管理領域(n:4以上の整数)を備える。個々の管理領域は、2次元マトリックス121の所定の位置に重複があった場合に、当該位置に対して割り当てられる。4段用の管理領域は、同じ位置で重複があった場合に、最大4個の単語の登録情報を管理する領域であり、複数確保されている。8段用の管理領域は、同じ位置で重複があった場合に、最大8個の単語の登録情報を管理する領域であり、複数確保されている。
図2Cに示すように、新たに同じ位置で重複があったときに、該当する4段用の管理領域が満杯であるため、溢れてしまう場合がある。すなわち、管理領域に未使用の位置がない場合である。かかる場合には、符号化装置100は、4段用の管理領域に設定された情報を、4段用の管理領域より大きい容量の8段用の管理領域に移し替える。符号化装置100は、移し替える前の管理領域を、全段分未使用であることを示す「0000」(以降、OFFと同義)に更新する。符号化装置100は、移し替えた先の重複テーブル123へのポインタを2次元マトリックスの該当するポインタ情報に再登録する。そして、符号化装置100は、新たに同じ位置で重複があった単語について、移し替えた先の管理領域の未使用の位置に、使用中であることを示すONと動的コード(符号)を指す単語へのポインタを設定する。符号化装置100は、新たに同じ位置で重複があった単語を動的コードに符号化する。これにより、符号化装置100は、管理領域が満杯となっても、管理領域の容量を変化させることで、重複テーブル123を効率的に使用することができる。
[動的辞書の一例]
図3は、実施例に係る動的辞書の一例を示す図である。図3に示される動的辞書122は、ポインタ部122aとバッファ部122bとを含む。バッファ部122bは、単語の文字列を記憶する。ポインタ部122aは、動的コードと、種別と、ポインタとを対応付けて保持する。動的コードは、あらかじめ定められた固定長のコード(符号)であり、単語がバッファ部122bに登録された順に割り当てられるコードである。種別は、登録された単語の種類を区別するために用いられるものである。種別には、例えば、低頻度単語である場合には「1」が設定され、未知語である場合には「2」が設定され、数値である場合には「3」が設定され、時刻である場合には「4」が設定され、タグである場合には「5」が設定される。ポインタは、バッファ部122bに格納された単語の先頭を指す。なお、ポインタは、格納位置およびデータ長であっても良い。格納位置は、バッファ部122bに格納された単語の先頭からの開始位置を示し、データ長は、格納された単語の文字列の長さ(バイト長)を示す。
一例として、単語「accessibility」がバッファ部122bに登録された単語である場合には、符号化装置100は、単語「accessibility」に対応するポインタにバッファ部122bの先頭を指すポインタを登録する。また、符号化装置100は、単語「accessibility」の種別として「2」(未知語)を登録する。
図3に示すように、単語「accessibility」が動的辞書122に登録されたとすると、単語「accessibility」の動的コードは「A001h」となる。この場合には、符号化装置100は、単語「accessibility」を、動的コード「A001h」に符号化する。
[符号化装置の構成]
図4は、実施例に係る符号化装置の構成を示す機能ブロック図である。図4に示すように、符号化装置100は、符号化部110および記憶部120を有する。
符号化部110は、図2A〜図2Cに示した符号化処理を実行する処理部である。符号化部110は、ファイルリード部111、単語判定部112、2次元ハッシュ化部113、識別フラグ判定部114、第1符号化部115、第2符号化部116およびファイルライト部117を有する。
記憶部120は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部120は、2次元マトリックス121、動的辞書122、重複テーブル123および静的辞書124を有する。
2次元マトリックス121は、Aハッシュで算出される余りとBハッシュで算出される余りとから表わせる2次元の行列(マトリックス)である。ここでいう2次元の行列(マトリックス)は、第1のハッシュ化データの一例である。なお、2次元マトリックス121の説明は、図2Aおよび図2Bと同様であるので、その説明を省略する。
動的辞書122は、静的辞書124に登録されていない単語と動的に付された動的コード(符号)とを対応付けた辞書である。なお、動的辞書122の説明は、図3と同様であるので、その説明を省略する。
重複テーブル123は、2次元ハッシュ化で得られた余りの組が重複する場合に、重複する余りの組に対する複数の単語について、動的コード(符号)を指す単語へのポインタを管理する。なお、重複テーブル123の説明は、図2Bおよび図2Cと同様であるので、その説明を省略する。
静的辞書124は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。ここで、静的辞書124の一例を、図5を参照して説明する。図5は、静的辞書の一例を示す図である。
図5に示すように、静的辞書124は、基礎単語と、文字列長と、出現頻度と、圧縮符号と、動的符号と、基本単語コードとを対応付ける。「基礎単語」は、静的辞書124に登録された単語である。例えば、「基礎単語」とは、辞典、テキスト群などからあらかじめ抽出された約19万語の単語である。なお、「基礎単語」として登録される単語数は、任意の語数でよい。それぞれの単語には、3バイトの「基本単語コード」が割り当てられ、登録される。
「文字列長」は、基礎単語の文字列の長さである。「出現頻度」は、頻度集計用のテキストファイル群において各基礎単語が出現した回数である。ここでいう頻度集計用のテキストファイル群とは、あらかじめ用意された各基礎単語の出現頻度を集計するための1以上のテキストファイルである。
基礎単語の出現頻度の集計について説明する。符号化装置100は、頻度集計用のテキストファイルを読み込み、頻度集計用のテキストファイル群に存在する単語を適宜抽出して静的辞書124に登録する。さらに、符号化装置100は、静的辞書124に登録された各々の基礎単語に関し、頻度集計用のテキストファイル群において出現した回数を出現頻度としてカウントする。例えば、図5の例において、静的辞書124は、基礎単語「able」が、頻度集計用のテキストファイル群において「785」回出現したことを示す。
「圧縮符号」、「動的符号」は、それぞれ各基礎単語に割り当てられる圧縮符号である。符号化装置100は、高頻度な単語には、その頻度に応じた可変長の圧縮符号を割り当てる。一方、低頻度な単語には、その出現順に2〜3バイトの動的符号(動的コード)を割り当てる。
なお、静的辞書124は、図5に示すようにフィルタ部と連関させても良い。フィルタ部とは、符号化する単語が静的辞書124に登録されているか否かを判定するフィルタである。フィルタ部は、2グラムと、ビットフィルタとを含む。「2グラム」は、各単語に含まれる連続する文字である。例えば「able」は、「ab」「bl」「le」に対応する2グラムを有する。「ビットフィルタ」は、2グラムの文字列に対応するビットフィルタを表す。例えば、「able」は、基礎単語へのポインタによって、2グラム「ab」のビットフィルタ「1_0_0_0_0」と、2グラム「bl」のビットフィルタ「0_1_0_0_0」と、2グラム「le」のビットフィルタ「0_0_1_0_0」とに対応付けられる。例えば、符号化装置100は、符号化する単語「able」を取得した場合に、2グラム「ab」のビットフィルタ「1_0_0_0_0」と、2グラム「bl」のビットフィルタ「0_1_0_0_0」と2グラム「le」のビットフィルタ「0_0_1_0_0」を用いて基礎単語「able」にアクセスする。また、静的辞書124は、2次元マトリックスと連関させることも可能である。
ファイルリード部111は、符号化対象のファイルのコンテンツ部分のデータを読み出す。ファイルリード部111は、読み出したデータに含まれる文字列を先頭から走査し、終端記号を区切りとする単語を順次抽出し、抽出した単語を単語判定部112に順次出力する。
単語判定部112は、符号化する単語が静的辞書124に登録されているか否かを判定する。例えば、単語判定部112は、単語が静的辞書124の基礎単語にヒットするか否かを判定する。単語判定部112は、単語が静的辞書124の基礎単語にヒットしないと判定した場合には、単語を2次元ハッシュ化部113に出力する。なお、単語判定部112は、単語が静的辞書124の基礎単語にヒットすると判定した場合には、当該単語を、ヒットした基礎単語に対応する単語コードに符号化する。
2次元ハッシュ化部113は、符号化する単語を2次元ハッシュ化する。
例えば、2次元ハッシュ化部113は、符号化する単語をAハッシュするとともに、当該単語をBハッシュする。具体的には、Aハッシュが、単語を素数97で割った余りを算出することであるとする。Bハッシュが、単語を素数101で割った余りを算出することであるとする。単語が「8657」(10進数)であるとする。すると、2次元ハッシュ化部113は、Aハッシュとして、8657を素数97で割った余り24を算出する。2次元ハッシュ化部113は、Bハッシュとして、8657を素数101で割った余り41を算出する。
また、2次元ハッシュ化部113は、Aハッシュで算出された余りおよびBハッシュで算出された余りの組に対応する2次元マトリックス121の行列要素(位置)をみつける。2次元ハッシュ化部113は、みつけた行列要素(位置)に設定されたポインタ情報を識別フラグ判定部114に出力する。具体的には、2次元ハッシュ化部113は、(24、41)に対応する2次元マトリックス121の位置をみつけ、この位置に設定されたポインタ情報を識別フラグ判定部114に出力する。
識別フラグ判定部114は、ポインタ情報の識別フラグを判定する。例えば、識別フラグ判定部114は、ポインタ情報の識別フラグが、余りの組に重複がないことを示す「0」であるか否かを判定する。識別フラグ判定部114は、ポインタ情報の識別フラグが、余りの組に重複がないことを示す「0」であると判定した場合には、符号化する単語およびポインタ情報を第1符号化部115に出力する。識別フラグ判定部114は、ポインタ情報の識別フラグが、余りの組に重複がないことを示す「0」でないと判定した場合には、符号化する単語およびポインタ情報を第2符号化部116に出力する。
第1符号化部115は、ポインタ情報に含まれる単語へのポインタを用いて、符号化する単語を符号化する。
例えば、第1符号化部115は、ポインタ情報に含まれる単語へのポインタを辿り、符号化する単語が動的辞書122に登録されているか否かを判定する。第1符号化部115は、符号化する単語が動的辞書122に登録されていると判定した場合には、当該単語を、登録されている単語に対応する動的コードに符号化する。
一例として、動的辞書122が図3に示す場合について説明する。符号化する単語が「accessibility」であるとする。すると、第1符号化部115は、ポインタ情報に含まれる単語へのポインタを辿り、符号化する単語「accessibility」が動的辞書122のポインタ部122aのポインタが指す単語と一致するか否かを判定する。ここでは、第1符号化部115は、一致するので、符号化する単語「accessibility」が動的辞書122に登録されていると判定する。第1符号化部115は、符号化する単語「accessibility」を、登録されている単語に対応する動的コード「A001h」に符号化する。
また、第1符号化部115は、符号化する単語が動的辞書122に登録されていないと判定した場合には、単語を動的辞書122に登録する。第1符号化部115は、動的辞書122に基づいて、当該単語を、登録した単語に対応する動的コードに符号化する。第1符号化部115は、ポインタ情報の識別フラグ「1」と重複テーブル123へのポインタとを含むポインタ情報を再登録する。第1符号化部115は、重複テーブル123へのポインタが指す管理領域の未使用の位置に、使用中であることを示すONと再登録前のポインタ情報に設定されていた動的コードを指す単語へのポインタとを設定する。第1符号化部115は、同じ管理領域の未使用の位置に、使用中であることを示すONと今回動的辞書122に登録された単語へのポインタとを設定する。
一例として、動的辞書122が図2Bに示す場合について説明する。符号化する単語が「YYYY」であるとする。符号化する単語のAハッシュの余りが3、Bハッシュの余りが1であるとする。すると、第1符号化部115は、余りの組(3、1)に対応する行列要素のポインタ情報に含まれる単語へのポインタを辿り、符号化する単語「YYYY」が動的辞書122のポインタ部122aのポインタが指す単語と一致するか否かを判定する。ここでは、第1符号化部115は、符号化する単語「YYYY」がポインタ部122aのポインタが指す単語「accessibility」と一致しないので、符号化する単語「YYYY」が動的辞書122に登録されていないと判定する。第1符号化部115は、符号化する単語「YYYY」をバッファ部122bに登録する。第1符号化部115は、動的辞書122に基づいて、単語「YYYY」を、まだ使用されていない動的コード「A002h」に符号化する。第1符号化部115は、余りの組(3、1)に対応する行列要素のポインタ情報の識別フラグ「1」と重複テーブル123へのポインタとを含むポインタ情報を再登録する。そして、第1符号化部115は、再登録した重複テーブル123へのポインタが指す管理領域の未使用の位置に、使用中であることを示すONと再登録前のポインタ情報に設定されていた動的コード(「A001h」)を指す単語へのポインタとを設定する。第1符号化部115は、同じ管理領域の未使用の位置に、使用中であることを示すONと今回動的辞書122に登録された、動的コード「A002h」を指す単語へのポインタとを設定する。
なお、第1符号化部115は、ポインタ情報に含まれる単語へのポインタが初期値である場合には、符号化する単語が動的辞書122に登録されていないので、当該単語を動的辞書122に登録する。第1符号化部115は、動的辞書122に基づいて、当該単語を、登録した単語に対応する動的コードに符号化する。第1符号化部115は、識別フラグ「0」と動的辞書122に登録された単語へのポインタとを含むポインタ情報を登録する。
第2符号化部116は、ポインタ情報に含まれる重複テーブル123へのポインタを用いて、符号化する単語を符号化する。
例えば、第2符号化部116は、ポインタ情報に含まれる重複テーブル123へのポインタを辿り、ポインタが指す管理領域を探索対象として、符号化する単語が動的辞書122に登録されているか否かを判定する。第2符号化部116は、符号化する単語が動的辞書122に登録されていると判定した場合には、当該単語を、登録されている単語に対応する動的コードに符号化する。
一例として、動的辞書122が図2Bに示す場合について説明する。符号化する単語が「XXXX」であるとする。符号化する単語のAハッシュの余りが5、Bハッシュの余りが0であるとする。すると、第2符号化部116は、余りの組(5、0)に対応する行列要素のポインタ情報に含まれる重複テーブル123へのポインタを辿り、符号化する単語「XXXX」が動的辞書122のポインタ部122aのポインタが指す単語と一致するか否かを判定する。ここでは、第2符号化部116は、ポインタが指す管理領域の1段目で一致するので、符号化する単語「XXXX」が動的辞書122に登録されていると判定する。第2符号化部116は、符号化する単語「XXXX」を、登録されている単語に対応する動的コード「A000h」に符号化する。
また、第2符号化部116は、符号化する単語が動的辞書122に登録されていないと判定した場合には、単語を動的辞書122に登録する。第2符号化部116は、動的辞書122に基づいて、当該単語を、登録した単語に対応する動的コードに符号化する。第2符号化部116は、重複テーブル123へのポインタが指す管理領域の未使用の位置に、使用中であることを示すONと今回動的辞書122に登録された単語へのポインタとを設定する。
一例として、動的辞書122が図2Bに示す場合について説明する。符号化する単語が「AAAA」であるとする。符号化する単語のAハッシュの余りが5、Bハッシュの余りが0であるとする。すると、第2符号化部116は、余りの組(5、0)に対応する行列要素のポインタ情報に含まれる重複テーブル123へのポインタを辿り、符号化する単語「AAAA」が動的辞書122のポインタ部122aのポインタが指す単語と一致するか否かを判定する。ここでは、第2符号化部116は、符号化する単語「AAAA」がポインタ部122aのポインタが指す単語と一致しないので、符号化する単語「AAAA」が動的辞書122に登録されていないと判定する。第2符号化部116は、符号化する単語「AAAA」をバッファ部122bに登録する。第2符号化部116は、動的辞書122に基づいて、単語「AAAA」を、まだ使用されていない動的コード「A002h」に符号化する。そして、第2符号化部116は、重複テーブル123へのポインタが指す管理領域の未使用の位置に、使用中であることを示すONと今回動的辞書122に登録された、動的コード「A002h」を指す単語へのポインタとを設定する。
なお、重複テーブル123へのポインタが指す管理領域に未使用の位置がない場合には、第2符号化部116は、管理領域が満杯であると判断し、管理領域に設定された情報を、現管理領域より大きい容量の管理領域に移し替えれば良い。そして、第2符号化部116は、ポインタ情報内のポインタを、移し替えた先の新たな管理領域に対する重複テーブル123へのポインタに代えて、当該ポインタ情報を再登録する。
ファイルライト部117は、第1符号化部115および第2符号化部116から符号化データを取得し、取得した符号化データを符号化ファイルに書き込む。
[符号化処理のフローチャート]
図6Aおよび図6Bは、実施例に係る符号化処理のフローチャートの一例を示す図である。
まず、符号化装置100は、符号化対象のファイルを読み出す(ステップS11)。符号化装置100は、読み出したファイルから単語を読み出す(ステップS12)。例えば、符号化装置100は、ファイルに含まれる文字列を走査し、終端記号を区切りとする単語を読み出す。
続いて、符号化装置100は、読み出した単語が静的辞書124に登録済みであるか否かを判定する(ステップS13)。例えば、符号化装置100は、読み出した単語が静的辞書124の基礎単語にヒットするか否かを判定する。
読み出した単語が静的辞書124に登録済みでないと判定した場合には(ステップS13;No)、符号化装置100は、読み出した単語を2次元にハッシュ化する(ステップS16)。例えば、符号化装置100は、読み出した単語をAハッシュするとともに、読み出した単語をBハッシュする。
続いて、符号化装置100は、2次元にハッシュ化して得られた組に対応する2次元マトリックス121の行列要素(位置)をみつける。そして、符号化装置100は、みつけた位置に設定されたポインタ情報の識別フラグが「0」(重複なし)であるか否かを判定する(ステップS17)。ポインタ情報の識別フラグが「0」であると判定した場合には(ステップS17;Yes)、符号化装置100は、ポインタ情報の単語へのポインタが初期値であるか否かを判定する(ステップS18)。
ポインタ情報の単語へのポインタが初期値であると判定した場合には(ステップS18;Yes)、符号化装置100は、読み出した単語がまだ動的辞書に122に登録されていないと判断し、当該単語を動的辞書122に登録する(ステップS19)。そして、符号化装置100は、識別フラグ「0」と、動的辞書122に登録された単語へのポインタとを含むポインタ情報を2次元マトリックス121の位置に登録する(ステップS20)。そして、符号化装置100は、単語へのポインタが示す動的コードを符号化データとして出力する(ステップS21)。
一方、ポインタ情報の単語へのポインタが初期値でないと判定した場合には(ステップS18;No)、符号化装置100は、当該単語へのポインタを基に、動的辞書122を参照する(ステップS22)。そして、符号化装置100は、読み出した単語が動的辞書122に登録されているか否かを判定する(ステップS23)。読み出した単語が動的辞書122に登録されていると判定した場合には(ステップS23;Yes)、符号化装置100は、読み出した単語を符号化すべく、ステップS21に移行する。
一方、読み出した単語が動的辞書122に登録されていないと判定した場合には(ステップS23;No)、符号化装置100は、当該単語を動的辞書122に登録する(ステップS24)。そして、符号化装置100は、識別フラグ「1」と、重複テーブル123へのポインタとを含むポインタ情報を2次元マトリックス121の位置に再登録する(ステップS25)。そして、符号化装置100は、重複テーブル123へのポインタが示す管理領域の未使用の位置にONと、再登録前のポインタ情報に設定されていた単語へのポインタとを設定する(ステップS26)。符号化装置100は、同じ管理領域の未使用の位置にONと、今回動的辞書122に登録された単語へのポインタとを設定する(ステップS27)。そして、符号化装置100は、読み出した単語を符号化すべく、ステップS21に移行する。
ステップS17において、符号化装置100は、ポインタ情報の識別フラグが「0」(重複なし)でないと判定した場合には(ステップS17;No)、符号化装置100は、重複テーブル123へのポインタが示す管理領域を基に、動的辞書122を参照する(ステップS28)。そして、符号化装置100は、読み出した単語が動的辞書122に登録されているか否かを判定する(ステップS29)。読み出した単語が動的辞書122に登録されていると判定した場合には(ステップS29;Yes)、符号化装置100は、読み出した単語を符号化すべく、ステップS21に移行する。
一方、読み出した単語が動的辞書122に登録されていないと判定した場合には(ステップS29;No)、符号化装置100は、当該単語を動的辞書122に登録する(ステップS30)。そして、符号化装置100は、管理領域の移し替え処理を実行する(ステップS31)。なお、管理領域の移し替え処理のフローチャートは、後述する。
管理領域の移し替え処理を実行後、符号化装置100は、重複テーブル123へのポインタが示す管理領域の未使用の位置にONと、今回動的辞書122に登録された単語へのポインタとを設定する(ステップS32)。そして、符号化装置100は、読み出した単語を符号化すべく、ステップS21に移行する。
そして、符号化装置100は、符号化対象のファイルの終点であるか否かを判定する(ステップS34)。符号化対象のファイルの終点でないと判定した場合には(ステップS34;No)、符号化装置100は、次の単語を読み出すべく、ステップS12に移行する。
一方、符号化対象のファイルの終点であると判定した場合には(ステップS34;Yes)、符号化装置100は、符号化処理を終了する。
なお、ステップS33において、読み出した単語が静的辞書124に登録済みであると判定した場合には(ステップS13;Yes)、符号化装置100は、静的辞書124を用いて、単語に対する単語コードを符号化データとして出力する(ステップS33)。そして、符号化装置100は、ステップS34に移行する。
図7は、管理領域の移し替え処理のフローチャートの一例を示す図である。
[移し替え処理のフローチャート]
図7に示すように、符号化装置100は、重複テーブル123へのポインタが示す管理領域に未使用の位置があるか否かを判定する(ステップS41)。
管理領域に未使用の位置がないと判定した場合には(ステップS41;No)、符号化装置100は、重複テーブル123へのポインタが示す管理領域に設定された情報を、現管理領域より大きい容量の管理領域に移し替える(ステップS42)。そして、符号化装置100は、移し替えた先の新たな管理領域に対する重複テーブル123へのポインタを2次元マトリックス121の位置に再登録する(ステップS43)。そして、符号化装置100は、管理領域の移し替え処理を終了する。
一方、管理領域に未使用の位置があると判定した場合には(ステップS41;Yes)、符号化装置100は、当該管理領域を移し替える必要がないので、管理領域の移し替え処理を終了する。
[実施例の効果]
上記実施例によれば、符号化装置100は、入力された文字データのうち、静的辞書124に含まれない文字列を、動的辞書122に順次登録する。符号化装置100は、動的辞書122に登録された文字列をハッシュ化したハッシュ化データを、静的辞書124の各登録項目の単語を2次元ハッシュ化した第1のハッシュ化データに追加する。符号化装置100は、入力された文字列の、静的辞書124、または、動的辞書122への登録有無を、第1のハッシュ化データを用いて判定する。符号化装置100は、判定結果に応じて、静的辞書124、または、動的辞書122の登録内容に基づき、符号化を行う。かかる構成によれば、符号化装置100は、1パスで符号化する場合であっても、動的辞書122を順次走査することなく、且つ、高速に、符号化対象の文字データを符号化できる。
また、上記実施例によれば、符号化装置100は、2次元ハッシュ化した第1のハッシュ化データが衝突する場合に、第1のハッシュ化データを、重複テーブル123に登録する。かかる構成によれば、符号化装置100は、第1のハッシュ化データが衝突する場合に重複テーブル123を用いることで、リストを辿ることが必要な重複テーブル123のサイズを縮小することができるとともに、高速に符号化できる。
また、上記実施例によれば、符号化装置100は、重複テーブル123が満杯となった場合に、既に登録された第1のハッシュ化データを容量の大きな重複テーブル123に移し替える。かかる構成によれば、符号化装置100は、第1のハッシュ化データが衝突した場合であっても、衝突した数に合わせて重複テーブル123の容量を変化させることで、重複テーブル123を効率的に使用することができる。
また、上記実施例によれば、符号化装置100は、重複テーブル123に関し、第1のハッシュ化データごとにデータを管理する領域を確保する。かかる構成によれば、符号化装置100は、連結リストを第1のハッシュ化データごとに分けて用いることで、該当する第1のハッシュ化データを高速に探索できるとともに、高速に符号化できる。
[実施例に関連する他の態様]
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
実施例に係る符号化装置100の2次元ハッシュ化部113は、符号化する単語に対するハッシュ化データを2次元にハッシュ化し、2次元ハッシュ化に対応する2次元マトリックス121の行列要素(位置)をみつける。2次元ハッシュ化部113は、みつけた行列位置(要素)に設定されたポインタ情報を識別フラグ判定部114に出力すると説明した。しかしながら、2次元ハッシュ化部113は、2次元に限定されず、N次元であっても良い。すなわち、2次元ハッシュ化部113は、符号化する単語に対するハッシュ化データをN次元にハッシュ化し、N次元ハッシュ化に対応するN次元マトリックスの行列要素(位置)をみつける。2次元ハッシュ化部113は、みつけた行列位置(要素)に設定されたポインタ情報を識別フラグ判定部114に出力する。かかる構成によれば、符号化装置100は、ハッシュ化データをN次元にハッシュ化し、N次元ハッシュ化をN次元マトリックスに対応させることで、符号化する単語を可能な限り一意にN次元マトリックスに紐付けることができる。この結果、符号化装置100は、N次元マトリックスを用いて高速に符号化することができる。
また、実施例に係る符号化装置100では、一例として、静的辞書124は、ビットフィルタと連関させ、ビットフィルタを用いて、符号化する単語が静的辞書124に登録されているか否かを判定すると説明した。しかしながら、符号化装置100では、これに限定されず、静的辞書124に登録されている各登録項目の単語をそれぞれ2次元ハッシュ化しても良い。そして、符号化装置100は、2次元ハッシュ化に対応する2次元マトリックス121の行列要素(位置)にそれぞれのポインタ情報をあらかじめ登録する。静的辞書124の場合のポインタ情報には、識別フラグ「0」(重複なし)および単語コード(符号)を指す単語へのポインタを含むようにすれば良い。これにより、符号化装置100は、ビットフィルタに代えて2次元マトリックス121を用いて、符号化する単語が静的辞書124に登録されているか否かを判定することができる。そして、符号化装置100は、登録されていれば、登録されている単語に対する単語コードを符号化データとして出力する。符号化装置100は、登録されていなければ、動的辞書122を用いた符号化を行う。
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、実施例に係る符号化装置100は、動的辞書122を、入力された単語と照合して、当該単語に割り当てられた動的コードを獲得することができる。以降では、動的辞書122を単語と照合する装置を、便宜上、照合装置として説明する。
[符号化ファイルの構成例]
まず、符号化ファイルの構成例を、図8を参照して説明する。図8は、符号化ファイルの構成例を示す図である。図8に示すように、符号化ファイルは、ヘッダ部と、複数の単語コードで表わされる符号化データと、トレーラ部とを有する。トレーラ部は、動的辞書122の情報を記憶する。動的辞書122の情報は、図3に示した動的辞書の情報に対応する。ヘッダ部には、トレーラ部に格納された動的辞書122の情報へのポインタおよび超高頻度の単語の頻度表が格納される。後述する照合装置は、後述する照合処理において、ヘッダ部の動的辞書122へのポインタを利用し、動的辞書122を参照する。
[実施例に係る照合処理]
図9は、実施例に係る照合装置の照合処理の流れの一例を示す図である。図9に示すように、照合装置は、照合する単語を受け付けると、符号化ファイルを照合用の記憶領域に読み出す。動的辞書122は、符号化ファイルのトレーラ部から読み出される。そして、照合装置は、動的辞書122を基に、2次元マトリックス121および重複テーブル123を生成する。
照合装置は、照合する単語を2次元にハッシュ化し、2次元にハッシュ化して得られた組を用いて、2次元マトリックス121の要素(位置)をみつける。照合装置は、みつけた位置のポインタ情報の識別フラグが「0」(重複なし)である場合には、ポインタ情報に含まれる単語へのポインタを辿り、照合する単語が動的辞書122に登録されているか否かを判定する。照合装置は、照合する単語が動的辞書122に登録されている場合には、登録されている単語に対応する動的コードを照合結果として出力する。
例えば、照合する単語が「Mickey」であるとする。2次元マトリックス121の位置が(3,1)の位置であり、ポインタ情報の識別フラグが「0」であるとする。すると、照合装置は、ポインタ情報に含まれる単語へのポインタを辿り、照合する単語「Mickey」が動的辞書122のバッファ部に登録されているので、登録されている単語「Mickey」に対応する動的コード「A001h」を照合結果として出力する。
また、照合装置は、みつけた位置のポインタ情報の識別フラグが「1」(重複あり)である場合には、ポインタ情報に含まれる重複テーブル123へのポインタを辿る。照合装置は、辿ったポインタが指す管理領域を探索対象として、照合する単語が動的辞書122に登録されているか否かを判定する。照合装置は、照合する単語が動的辞書122に登録されている場合には、登録されている単語に対応する動的コードを照合結果として出力する。これにより、照合装置は、入力された単語を照合する場合であっても、動的辞書122を順次辿ることなく、且つ、高速に、割り当てられた動的コードを獲得することができる。
例えば、照合する単語が「Minnie」であるとする。2次元マトリックス121の位置が(5,0)の位置であり、ポインタ情報の識別フラグが「1」であるとする。すると、照合装置は、ポインタ情報に含まれる重複テーブル123へのポインタを辿り、辿ったポインタが指す管理領域を探索対象とする。照合装置は、探索対象の管理領域の1番目の使用中(「0」)の欄に含まれる単語へのポインタを辿ると、照合する単語「Minnie」が動的辞書122のバッファ部に登録されていない。照合装置は、探索対象の管理領域の2番目の使用中(「0」)の欄に含まれる単語へのポインタを辿ると、照合する単語「Minnie」が動的辞書122のバッファ部に登録されているので、登録されている単語「Minnie」に対応する動的コード「A002h」を照合結果として出力する。これにより、照合装置は、入力された単語を照合する場合であっても、動的辞書122を順次辿ることなく、且つ、高速に、割り当てられた動的コードを獲得することができる。
[照合装置の構成]
図10は、実施例に係る照合装置の構成を示す機能ブロック図である。図10に示すように、照合装置200は、照合部210および記憶部220を有する。なお、記憶部220は、図4に示した記憶部120と同一の構成であるので、その重複する構成および内容の説明については省略する。
照合部210は、図9に示した照合処理を実行する処理部である。照合部210は、照合キー受付部211、単語判定部212、2次元ハッシュ化部213、識別フラグ判定部214、第1照合部215、第2照合部216および照合結果出力部217を有する。
照合キー受付部211は、照合キーを受け付ける。例えば、照合キー受付部211は、照合キーとして、照合する単語を受け付ける。
単語判定部212は、照合キーが静的辞書124に登録されているか否かを判定する。なお、単語判定部212は、図4で示した単号判定部112と同様の動作であるので、その説明を省略する。
2次元ハッシュ化部213は、照合キーを2次元ハッシュ化する。なお、2次元ハッシュ化部213は、図4で示した2次元ハッシュ化部113と同様の動作であるので、その説明を省略する。
識別フラグ判定部214は、2次元ハッシュ化して得られた、2次元マトリックス121の位置のポインタ情報の識別フラグを判定する。例えば、識別フラグ判定部214は、ポインタ情報の識別フラグが、余りの組に重複がないことを示す「0」であるか否かを判定する。識別フラグ判定部214は、ポインタ情報の識別フラグが「0」であると判定した場合には、照合キーを第1照合部215に出力する。識別フラグ判定部214は、ポインタ情報の識別フラグが、「0」でないと判定した場合には、照合キーを第2照合部216に出力する。
第1照合部215は、ポインタ情報に含まれる単語へのポインタを用いて、照合キーを動的辞書122と照合する。例えば、第1照合部215は、ポインタ情報に含まれる単語へのポインタを辿り、照合キーが動的辞書122に登録されているか否かを判定する。第1照合部215は、照合キーが動的辞書122に登録されていると判定した場合には、登録されている単語に対応する動的コードを照合結果出力部217に出力する。第1照合部215は、照合キーが動的辞書122に登録されていないと判定した場合には、照合キーが動的辞書122に登録されていないことを照合結果出力部217に出力する。なお、第1照合部215は、ポインタ情報に含まれる単語へのポインタが初期値である場合には、照合キーが動的辞書122に登録されていないので、照合キーが動的辞書122に登録されていないことを照合結果出力部217に出力する。
第2照合部216は、ポインタ情報に含まれる重複テーブル123へのポインタを用いて、照合キーを動的辞書122と照合する。例えば、第2照合部216は、ポインタ情報に含まれる重複テーブル123へのポインタを辿る。第2照合部216は、辿ったポインタが指す管理領域を探索対象として、探索対象の管理領域の使用中の欄に含まれる単語へのポインタを辿り、照合キーが動的辞書122に登録されているか否かを判定する。第2照合部216は、照合キーが動的辞書122に登録されていると判定した場合には、登録されている単語に対応する動的コードを照合結果出力部217に出力する。第2照合部216は、照合キーが動的辞書122に登録されていないと判定した場合には、探索対象の管理領域の他の使用中の欄に含まれる単語へのポインタを用いて、照合キーが動的辞書122に登録されているか否かを判定する。そして、第2照合部216は、他の使用中の欄に含まれる単語へのポインタを辿り、照合キーが動的辞書122に登録されていると判定した場合には、登録されている単語に対応する動的コードを照合結果出力部217に出力する。第2照合部216は、いずれの使用中の欄に含まれる単語へのポインタを辿っても、照合キーが動的辞書122に登録されていないと判定した場合には、照合キーが動的辞書122に登録されていないことを照合結果出力部217に出力する。
照合結果出力部217は、照合結果を出力する。例えば、照合結果出力部217は、第1照合部215または第2照合部216から動的コードを受け取ると、受け取った動的コードを照合結果として出力する。照合結果出力部217は、第1照合部215または第2照合部216から照合キーが動的辞書122に登録されていないことを受け取ると、照合キーが動的辞書122に登録されていないことを示す「NG」を照合結果として出力する。
[照合処理のフローチャート]
図11は、実施例に係る照合処理のフローチャートの一例を示す図である。
まず、照合装置200は、照合キー(照合する単語)を受け付ける(ステップS51)。すると、照合装置200は、符号化ファイルを照合用の記憶領域に読み出す(ステップS52)。そして、照合装置200は、符号化ファイルのトレーラ部に記憶された動的辞書122を基に、2次元マトリックス121および重複テーブル123を生成する(ステップS53)。
照合装置200は、照合する単語が静的辞書124に登録されているか否かを判定する(ステップS54)。例えば、照合装置200は、照合する単語が静的辞書124の基礎単語にヒットするか否かを判定する。
照合する単語が静的辞書124に登録されていると判定した場合には(ステップS54;Yes)、照合装置200は、照合する単語に対する単語コードを照合結果として出力する(ステップS55)。そして、照合装置200は、照合処理を終了する。
一方、照合する単語が静的辞書124に登録されていないと判定した場合には(ステップS54;No)、照合装置200は、照合する単語を2次元のハッシュ化する(ステップS56)。例えば、照合装置200は、符号化装置100と実施される2次元のハッシュ化と同様の2次元のハッシュ化を行う。すなわち、照合装置200は、照合する単語をAハッシュするとともに、照合する単語をBハッシュする。
続いて、照合装置200は、2次元にハッシュ化して得られた組に対応する2次元マトリックス121の行列要素(位置)をみつける。そして、照合装置200は、みつけた位置に設定されたポインタ情報の識別フラグが「0」(重複なし)であるか否かを判定する(ステップS57)。ポインタ情報の識別フラグが「0」であると判定した場合には(ステップS57;Yes)、照合装置200は、ポインタ情報の単語へのポインタが初期値であるか否かを判定する(ステップS58)。
単語へのポインタが初期値であると判定した場合には(ステップS58;Yes)、照合装置200は、「NG」を照合結果として出力する(ステップS59)。そして、照合装置200は、照合処理を終了する。
一方、単語へのポインタが初期値でないと判定した場合には(ステップS58;No)、照合装置200は、単語へのポインタを基に、照合する単語を動的辞書122と照合する(ステップS60)。例えば、照合装置200は、単語へのポインタを辿り、動的辞書122に、照合する単語が登録されているか否かを判定する。そして、照合装置200は、ステップS62に移行する。
ステップS57において、ポインタ情報の識別フラグが「0」でないと判定した場合には(ステップS57;No)、照合装置200は、重複テーブルへのポインタが示す管理領域を基に、照合する単語を動的辞書122と照合する(ステップS61)。例えば、照合装置200は、ポインタ情報に含まれる重複テーブル123へのポインタを辿る。照合装置200は、辿ったポインタが指す管理領域を探索対象として、探索対象の管理領域の使用中の欄に含まれる単語へのポインタを辿り、動的辞書122に、照合する単語が登録されているか否かを判定する。そして、照合装置200は、ステップS62に移行する。
ステップS62において、照合装置200は、照合の結果、動的辞書122に、照合する単語が登録されているか否かを判定する(ステップS62)。動的辞書122に、照合する単語が登録されていると判定した場合には(ステップS62;Yes)、照合装置200は、登録されている単語に対応する動的コードを照合結果として出力する(ステップS63)。そして、照合装置200は、照合処理を終了する。
一方、動的辞書122に、照合する単語が登録されていないと判定した場合には(ステップS62;No)、照合装置200は、「NG」を照合結果として出力する(ステップS64)。そして、照合装置200は、照合処理を終了する。
これにより、照合装置200は、入力された単語を照合する場合であっても、動的辞書122を順次辿ることなく、且つ、高速に、割り当てられた動的コードを獲得することができる。
[情報処理装置のハードウェア構成]
実施例の符号化装置100および照合装置200を含む情報処理装置のハードウェア構成を、図12を参照して説明する。図12は、実施例の情報処理装置のハードウェア構成を示す図である。図12の例が示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータ入力を受け付ける入力装置402と、モニタ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る媒体読取装置404と、他の装置と接続するためのインターフェース装置405と、他の装置と無線により接続するための無線通信装置406とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM407と、ハードディスク装置408とを有する。また、各装置401〜408は、バス409に接続される。
ハードディスク装置408には、例えば図4に示した単語判定部112、2次元ハッシュ化部113、識別フラグ判定部114、第1符号化部115および第2符号化部116の各処理部と同様の機能を有する検索プログラムが記憶される。また、ハードディスク装置408には、符号化プログラムを実現するための各種データが記憶される。
CPU401は、ハードディスク装置408に記憶された各プログラムを読み出して、RAM407に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ400を、例えば図4に示した単語判定部112、2次元ハッシュ化部113、識別フラグ判定部114、第1符号化部115および第2符号化部116として機能させることができる。
なお、上記の検索プログラムは、必ずしもハードディスク装置408に記憶されている必要はない。例えば、コンピュータ400が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ400が読み出して実行するようにしてもよい。コンピュータ400が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ400がこれらからプログラムを読み出して実行するようにしてもよい。
図13は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ400において、図13に示すハードウェア群26(401〜409)の制御を行なうOS(オペレーティング・システム)27が動作する。OS27に従った手順でCPU401が動作して、ハードウェア群26の制御・管理が行なわれることにより、アプリケーションプログラム29やミドルウェア28に従った処理がハードウェア群26で実行される。さらに、コンピュータ400において、ミドルウェア28またはアプリケーションプログラム29が、RAM407に読み出されてCPU401により実行される。
CPU401により符号化する単語を受け付けた場合、ミドルウェア28またはアプリケーションプログラム29の少なくとも一部に基づく処理を行なうことで、(それらの処理をOS27に基づいてハードウェア群26を制御して)符号化部110の符号化機能が実現される。符号化機能は、それぞれアプリケーションプログラム29自体に含まれてもよいし、アプリケーションプログラム29に従って呼び出されることで実行されるミドルウェア28の一部であってもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
入力された文字データのうち、静的辞書に含まれない文字列を、動的辞書に順次登録し、
前記動的辞書に登録された文字列をそれぞれハッシュ化したハッシュ化データを、前記静的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加し、
入力された文字列の、前記静的辞書、または、前記動的辞書への登録有無を、前記第1のハッシュ化データを用いて判定し、
前記判定の結果に応じて、前記静的辞書、または、前記動的辞書の登録内容に基づき、符号化を行う
処理を行わせる符号化プログラム。
(付記2)前記追加する処理は、前記N次元ハッシュ化した第1のハッシュ化データが衝突する場合に、前記第1のハッシュ化データを、重複テーブルに登録する
ことを特徴とする付記1に記載の符号化プログラム。
(付記3)前記重複テーブルが満杯となった場合に、既に登録された第1のハッシュ化データを容量の大きな重複テーブルに移し替える
ことを特徴とする付記2に記載の符号化プログラム。
(付記4)前記第1のハッシュ化データは、Nが2以上であるN次元ハッシュ化したハッシュ化データである
ことを特徴とする付記1から付記3のいずれか1つに記載の符号化プログラム。
(付記5)前記追加する処理は、前記重複テーブルに関し、前記第1のハッシュ化データごとにデータを管理する領域を確保する
ことを特徴とする付記2または付記3に記載の符号化プログラム。
(付記6)入力された文字データのうち、静的辞書に含まれない文字列を、動的辞書に順次登録する登録部と、
前記動的辞書に登録された文字列をそれぞれハッシュ化したハッシュ化データを、前記静的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加する追加部と、
入力された文字列の、前記静的辞書、または、前記動的辞書への登録有無を、前記第1のハッシュ化データを用いて判定する判定部と、
前記判定の結果に応じて、前記静的辞書、または、前記動的辞書の登録内容に基づき、符号化を行う符号化部と、
を有することを特徴とする符号化装置。
(付記7)コンピュータが、
入力された文字データのうち、静的辞書に含まれない文字列を、動的辞書に順次登録し、
前記動的辞書に登録された文字列をそれぞれハッシュ化したハッシュ化データを、前記静的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加し、
入力された文字列の、前記静的辞書、または、前記動的辞書への登録有無を、前記第1のハッシュ化データを用いて判定し、
前記判定の結果に応じて、前記静的辞書、または、前記動的辞書の登録内容に基づき、符号化を行う
各処理を行うことを特徴とする符号化方法。
(付記8)コンピュータに、
入力された単語をハッシュ化したハッシュ化データを算出し、
前記算出したハッシュ化データを照合キーとして、前記静的辞書および前記静的辞書に含まれない文字列を登録した動的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データを用いて、前記入力された単語の、前記静的辞書、または前記動的辞書への登録有無を判定する
処理を行わせることを特徴とする照合プログラム。
(付記9)入力された単語をハッシュ化したハッシュ化データを算出する算出部と、
前記算出部によって算出されたハッシュ化データを照合キーとして、静的辞書および前記静的辞書に含まれない文字列を登録した動的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データを用いて、前記入力された単語の、前記静的辞書、または前記動的辞書への登録有無を判定する判定部と、
を有することを特徴とする照合装置。
(付記10)コンピュータが、
入力された単語をハッシュ化したハッシュ化データを算出し、
前記算出したハッシュ化データを照合キーとして、静的辞書および前記静的辞書に含まれない文字列を登録した動的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データを用いて、前記入力された単語の、前記静的辞書、または前記動的辞書への登録有無を判定する
各処理を行うことを特徴とする照合方法。
100 符号化装置
110 符号化部
111 ファイルリード部
112 単語判定部
113 2次元ハッシュ化部
114 識別フラグ判定部
115 第1符号化部
116 第2符号化部
117 ファイルライト部
120 記憶部
121 2次元マトリックス
122 動的辞書
123 重複テーブル
124 静的辞書
200 照合装置

Claims (9)

  1. コンピュータに、
    入力された文字データのうち、静的辞書に含まれない文字列を、動的辞書に順次登録し、
    前記動的辞書に登録された文字列をそれぞれハッシュ化したハッシュ化データを、前記静的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加し、
    入力された文字列の、前記静的辞書、または、前記動的辞書への登録有無を、前記第1のハッシュ化データを用いて判定し、
    前記判定の結果に応じて、前記静的辞書、または、前記動的辞書の登録内容に基づき、符号化を行う
    処理を行わせる符号化プログラム。
  2. 前記追加する処理は、前記N次元ハッシュ化した第1のハッシュ化データが衝突する場合に、前記第1のハッシュ化データを、重複テーブルに登録する
    ことを特徴とする請求項1に記載の符号化プログラム。
  3. 前記重複テーブルが満杯となった場合に、既に登録された第1のハッシュ化データを容量の大きな重複テーブルに移し替える
    ことを特徴とする請求項2に記載の符号化プログラム。
  4. 前記第1のハッシュ化データは、Nが2以上であるN次元ハッシュ化したハッシュ化データである
    ことを特徴とする請求項1から請求項3のいずれか1つに記載の符号化プログラム。
  5. 入力された文字データのうち、静的辞書に含まれない文字列を、動的辞書に順次登録する登録部と、
    前記動的辞書に登録された文字列をそれぞれハッシュ化したハッシュ化データを、前記静的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加する追加部と、
    入力された文字列の、前記静的辞書、または、前記動的辞書への登録有無を、前記第1のハッシュ化データを用いて判定する判定部と、
    前記判定部によって判定された結果に応じて、前記静的辞書、または、前記動的辞書の登録内容に基づき、符号化を行う符号化部と、
    を有することを特徴とする符号化装置。
  6. コンピュータが、
    入力された文字データのうち、静的辞書に含まれない文字列を、動的辞書に順次登録し、
    前記動的辞書に登録された文字列をそれぞれハッシュ化したハッシュ化データを、前記静的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データに追加し、
    入力された文字列の、前記静的辞書、または、前記動的辞書への登録有無を、前記第1のハッシュ化データを用いて判定し、
    前記判定の結果に応じて、前記静的辞書、または、前記動的辞書の登録内容に基づき、符号化を行う
    各処理を行うことを特徴とする符号化方法。
  7. コンピュータに、
    入力された単語をハッシュ化したハッシュ化データを算出し、
    前記算出したハッシュ化データを照合キーとして、静的辞書および前記静的辞書に含まれない文字列を登録した動的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データを用いて、前記入力された単語の、前記静的辞書、または前記動的辞書への登録有無を判定する
    処理を行わせることを特徴とする照合プログラム。
  8. 入力された単語をハッシュ化したハッシュ化データを算出する算出部と、
    前記算出部によって算出されたハッシュ化データを照合キーとして、静的辞書および前記静的辞書に含まれない文字列を登録した動的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データを用いて、前記入力された単語の、前記静的辞書、または前記動的辞書への登録有無を判定する判定部と、
    を有することを特徴とする照合装置。
  9. コンピュータが、
    入力された単語をハッシュ化したハッシュ化データを算出し、
    前記算出したハッシュ化データを照合キーとして、静的辞書および前記静的辞書に含まれない文字列を登録した動的辞書の各登録項目の単語をN次元ハッシュ化した第1のハッシュ化データを用いて、前記入力された単語の、前記静的辞書、または前記動的辞書への登録有無を判定する
    各処理を行うことを特徴とする照合方法。
JP2015142498A 2015-07-16 2015-07-16 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法 Active JP6536243B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015142498A JP6536243B2 (ja) 2015-07-16 2015-07-16 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法
US15/209,978 US9628110B2 (en) 2015-07-16 2016-07-14 Computer-readable recording medium, encoding apparatus, encoding method, comparison apparatus, and comparison method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015142498A JP6536243B2 (ja) 2015-07-16 2015-07-16 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法

Publications (2)

Publication Number Publication Date
JP2017028374A true JP2017028374A (ja) 2017-02-02
JP6536243B2 JP6536243B2 (ja) 2019-07-03

Family

ID=57776232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015142498A Active JP6536243B2 (ja) 2015-07-16 2015-07-16 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法

Country Status (2)

Country Link
US (1) US9628110B2 (ja)
JP (1) JP6536243B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018195956A (ja) * 2017-05-16 2018-12-06 富士通株式会社 符号化プログラム、符号化装置および符号化方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6686639B2 (ja) * 2016-03-31 2020-04-22 富士通株式会社 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
JP6841322B2 (ja) * 2017-04-06 2021-03-10 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
US10897270B2 (en) * 2018-06-06 2021-01-19 Yingquan Wu Dynamic dictionary-based data symbol encoding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置
JP2000209216A (ja) * 1999-01-12 2000-07-28 Shimada Phys & Chem Ind Co Ltd アドレス管理方法及び装置、記録媒体
JP2014082762A (ja) * 2012-10-15 2014-05-08 Samsung Electronics Co Ltd データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3220865B2 (ja) 1991-02-28 2001-10-22 株式会社日立製作所 フルテキストサーチ方法
US5138669A (en) 1990-06-29 1992-08-11 Hitachi, Ltd. Range-conditional character string retrieving method and system
JP3038233B2 (ja) 1990-09-14 2000-05-08 富士通株式会社 データ圧縮及び復元装置
JPH05252049A (ja) 1992-03-05 1993-09-28 Fujitsu Ltd データ圧縮処理方式及びデータ復元処理方式
JP3277792B2 (ja) * 1996-01-31 2002-04-22 株式会社日立製作所 データ圧縮方法および装置
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
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
US8872677B2 (en) * 2013-03-15 2014-10-28 Dialogic Networks (Israel) Ltd. Method and apparatus for compressing data-carrying signals

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置
JP2000209216A (ja) * 1999-01-12 2000-07-28 Shimada Phys & Chem Ind Co Ltd アドレス管理方法及び装置、記録媒体
JP2014082762A (ja) * 2012-10-15 2014-05-08 Samsung Electronics Co Ltd データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018195956A (ja) * 2017-05-16 2018-12-06 富士通株式会社 符号化プログラム、符号化装置および符号化方法
JP7003443B2 (ja) 2017-05-16 2022-01-20 富士通株式会社 符号化プログラム、符号化装置および符号化方法

Also Published As

Publication number Publication date
US20170019126A1 (en) 2017-01-19
JP6536243B2 (ja) 2019-07-03
US9628110B2 (en) 2017-04-18

Similar Documents

Publication Publication Date Title
KR101772312B1 (ko) 기억 매체, 압축 방법, 신장 방법, 압축 장치 및 신장 장치
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
US10224957B1 (en) Hash-based data matching enhanced with backward matching for data compression
CN105808513B (zh) 转换装置和转换方法
KR20130062889A (ko) 데이터 압축 방법 및 시스템
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6648620B2 (ja) 符号化プログラム、符号化装置および符号化方法
JP6536243B2 (ja) 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法
US9973206B2 (en) Computer-readable recording medium, encoding device, encoding method, decoding device, and decoding method
US20200212932A1 (en) Reducing storage of blockchain metadata via dictionary-style compression
US11669553B2 (en) Context-dependent shared dictionaries
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US9577666B2 (en) Method and system
CN114764557A (zh) 一种数据处理方法、装置、电子设备及存储介质
US20150160876A1 (en) Character data storing method and character data stornig device
KR20170040343A (ko) 적응형 레이트 압축 해시 프로세싱 디바이스
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
WO2018055160A1 (en) System level testing of entropy encoding
US8463759B2 (en) Method and system for compressing data
JP6931442B2 (ja) 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法
JP6135788B2 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP2017195628A (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: 20190305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190416

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190520

R150 Certificate of patent or registration of utility model

Ref document number: 6536243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150