IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7210130符号化プログラム、符号化方法および符号化装置
<>
  • 特許-符号化プログラム、符号化方法および符号化装置 図1
  • 特許-符号化プログラム、符号化方法および符号化装置 図2
  • 特許-符号化プログラム、符号化方法および符号化装置 図3
  • 特許-符号化プログラム、符号化方法および符号化装置 図4
  • 特許-符号化プログラム、符号化方法および符号化装置 図5
  • 特許-符号化プログラム、符号化方法および符号化装置 図6
  • 特許-符号化プログラム、符号化方法および符号化装置 図7
  • 特許-符号化プログラム、符号化方法および符号化装置 図8
  • 特許-符号化プログラム、符号化方法および符号化装置 図9
  • 特許-符号化プログラム、符号化方法および符号化装置 図10
  • 特許-符号化プログラム、符号化方法および符号化装置 図11
  • 特許-符号化プログラム、符号化方法および符号化装置 図12
  • 特許-符号化プログラム、符号化方法および符号化装置 図13
  • 特許-符号化プログラム、符号化方法および符号化装置 図14
  • 特許-符号化プログラム、符号化方法および符号化装置 図15
  • 特許-符号化プログラム、符号化方法および符号化装置 図16
  • 特許-符号化プログラム、符号化方法および符号化装置 図17
  • 特許-符号化プログラム、符号化方法および符号化装置 図18
  • 特許-符号化プログラム、符号化方法および符号化装置 図19
  • 特許-符号化プログラム、符号化方法および符号化装置 図20
  • 特許-符号化プログラム、符号化方法および符号化装置 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-13
(45)【発行日】2023-01-23
(54)【発明の名称】符号化プログラム、符号化方法および符号化装置
(51)【国際特許分類】
   H03M 7/42 20060101AFI20230116BHJP
【FI】
H03M7/42
【請求項の数】 5
(21)【出願番号】P 2017077041
(22)【出願日】2017-04-07
(65)【公開番号】P2018182466
(43)【公開日】2018-11-15
【審査請求日】2020-01-15
【審判番号】
【審判請求日】2021-12-28
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】片岡 正弘
(72)【発明者】
【氏名】袴田 隼毅
【合議体】
【審判長】角田 慎治
【審判官】山中 実
【審判官】土居 仁士
(56)【参考文献】
【文献】特開2017-22666(JP,A)
【文献】特開2014-186457(JP,A)
【文献】特表2011-530234(JP,A)
【文献】米国特許第7769729(US,B2)
【文献】米国特許出願公開第2006/0085737(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H03M 7/00-9/00
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
テキストデータを複数の動的辞書であって、先頭に登録される動的符号がそれぞれ異なる前記複数の動的辞書を用いて符号化する際に、前記テキストデータに含まれる単語に対し、前記テキストデータに含まれる特定の単語の種別情報と、前記種別情報に対応する特定の単語の符号化に用いる動的辞書の位置情報とを対応付けた属性情報に基づき前記複数の動的辞書から第1の動的辞書を特定し、
前記単語および前記単語に対応して生成された動的符号であって、前記第1の動的辞書に登録されていない動的符号を前記第1の動的辞書に登録し、
前記単語を前記動的符号を用いて符号化する
処理を実行させる符号化プログラム。
【請求項2】
前記テキストデータは階層構造を有する文書であり、前記位置情報は前記階層構造における位置情報であることを特徴とする請求項1に記載の符号化プログラム。
【請求項3】
前記テキストデータはデリミタで複数の列に区切られており、前記位置情報は、複数の列の内、単語の位置する列情報であることを特徴とする請求項1に記載の符号化プログラム。
【請求項4】
コンピュータが実行する符号化方法であって、
テキストデータを複数の動的辞書であって、先頭に登録される動的符号がそれぞれ異なる前記複数の動的辞書を用いて符号化する際に、前記テキストデータに含まれる単語に対し、前記テキストデータに含まれる特定の単語の種別情報と、前記種別情報に対応する特定の単語の符号化に用いる動的辞書の位置情報とを対応付けた属性情報に基づき前記複数の動的辞書から第1の動的辞書を特定し、
前記単語および前記単語に対応して生成された動的符号であって、前記第1の動的辞書に登録されていない動的符号を前記第1の動的辞書に登録し、
前記単語を前記動的符号を用いて符号化する
処理を実行する符号化方法。
【請求項5】
テキストデータを複数の動的辞書であって、先頭に登録される動的符号がそれぞれ異なる前記複数の動的辞書を用いて符号化する際に、前記テキストデータに含まれる単語に対し、前記テキストデータに含まれる特定の単語の種別情報と、前記種別情報に対応する特定の単語の符号化に用いる動的辞書の位置情報とを対応付けた属性情報に基づき前記複数の動的辞書から第1の動的辞書を特定し、前記単語および前記単語に対応して生成された動的符号であって、前記第1の動的辞書に登録されていない動的符号を前記第1の動的辞書に登録する登録部と、
前記単語を前記動的符号を用いて符号化する符号化部と
を有する符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、符号化プログラム等に関する。
【背景技術】
【0002】
近年、データの符号化を行う場合に、単語単位で符号化を行う技術がある。単語単位の符号化では、ZIPによる圧縮と異なり、複数の単語をまたがった符号化を行わない。単語単位の符号化を行うことで、符号化データの一部を、符号化されたままの状態で抽出し、再利用することができる。
【0003】
ここで、単語単位で符号化を行う場合には、静的辞書と動的辞書とを用いて符号化を行っている。静的辞書は、出現頻度の高い単語に符号を対応付けた情報である。符号化の対象となる単語が、静的辞書に存在しない場合には、かかる単語を動的辞書に登録して、動的符号を割り当てることで、符号化を行う。例えば、動的符号は、単語の出現順序に応じて、動的符号が割り当てられる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2013-150041号公報
【文献】特開平9-214352号公報
【文献】特開平11-284517号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した従来技術では、動的辞書を効率的に利用することができないという問題がある。
【0006】
動的辞書を利用する場合に単語に割り当てる動的符号は、単語の出現順序に応じて割り当てられている。また、符号化対象をテキストからXMLデータなどに拡大すると、出現頻度の低い単語や未知語に加え、数値やタグやパスリストなど、多種・多量の数字列や文字列を単語として動的辞書に登録することになる。このため、符号化データの一部を抽出し再利用する場合に、動的辞書全体を走査し各種別を判定することになる。動的辞書のサイズが大きい場合には、処理時間が長くなり、動的辞書を効率的に利用できていない。
【0007】
1つの側面では、本発明は、動的辞書を効率的に利用することができる符号化プログラム、符号化方法および符号化装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
第1の案では、コンピュータに下記の処理を実行させる。コンピュータは、テキストデータを複数の動的辞書を用いて符号化する際に、テキストデータに含まれる単語に対し、当該単語の属性情報に基づき前記複数の動的辞書から第1の動的辞書を特定する。コンピュータは、単語および単語に対応して生成された動的符号を第1の動的辞書に登録する。コンピュータは、単語を動的符号を用いて符号化する。
【発明の効果】
【0009】
動的辞書を効率的に利用することができる。
【図面の簡単な説明】
【0010】
図1図1は、本実施例1に係る情報処理装置の符号化処理の一例を示す図である。
図2図2は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。
図3図3は、本実施例1に係る符号化部の構成の一例を示す機能ブロック図である。
図4図4は、静的辞書情報のデータ構造の一例を示す図である。
図5図5は、動的辞書情報のデータ構造の一例を示す図である。
図6図6は、種別テーブルのデータ構造の一例を示す図である。
図7図7は、本実施例1に係る伸長部の構成の一例を示す機能ブロック図である。
図8図8は、本実施例1に係る符号化部の処理手順の一例を示すフローチャートである。
図9図9は、本実施例1に係る伸長部の処理手順を示すフローチャートである。
図10図10は、本実施例2に係る情報処理装置の符号化処理の一例を示す図である。
図11図11は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。
図12図12は、本実施例2に係る符号化部の構成の一例を示す機能ブロック図である。
図13図13は、動的辞書情報のデータ構造の一例を示す図である。
図14図14は、種別テーブルのデータ構造の一例を示す図である。
図15図15は、本実施例2に係る伸長部の構成の一例を示す機能ブロック図である。
図16図16は、本実施例2に係る符号化部の処理手順を示すフローチャートである。
図17図17は、本実施例2に係る伸長部の処理手順を示すフローチャートである。
図18図18は、符号化部のその他の処理を説明するための図である。
図19図19は、コンピュータのハードウェア構成例を示す図である。
図20図20は、コンピュータで動作するプログラムの構成例を示す図である。
図21図21は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【0011】
以下に、本願の開示する符号化プログラム、符号化方法および符号化装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0012】
図1は、本実施例1に係る情報処理装置の符号化処理の一例を示す図である。情報処理装置は、符号化装置の一例である。情報処理装置は、符号化対象のテキストファイルF1を読み出し、静的辞書による静的符号化または動的辞書による動的符号化を行うことで、符号化ファイルF2を生成する。静的辞書は、出現頻度の高い単語と静的符号とを対応付けた情報である。
【0013】
情報処理装置は、テキストファイルF1から単語を読み出し、静的辞書にヒットする単語については、静的符号に置き換える処理を実行する。例えば、テキストファイルF1に含まれる単語は、スペースによって区切られているものとする。本実施例では一例として、スペースを「△」で表す。テキストファイルF1のコンテンツ部分は[STX]と[ETX]とで挟まれた部分となる。
【0014】
例えば、テキストファイルF1に含まれる単語「This△」、「is△」、「a△」、「pen△」はそれぞれ、静的辞書にヒットする単語であるとする。情報処理装置は、各単語「This△」、「is△」、「a△」、「pen△」を静的符号に変換する。図1に示す例では、各単語「This△」、「is△」、「a△」、「pen△」に対応する静的符号の図示を省略する。
【0015】
情報処理装置は、テキストファイルF1から単語を読み出し、静的辞書にヒットしない単語については、単語の属性情報に対応する動的辞書を複数の動的辞書から判定し、判定した動的辞書を用いて、動的符号化を行う。情報処理装置は、単語の属性情報に対応する動的辞書に単語を登録して、動的符号を割り振り、単語を動的符号に置き換える。
【0016】
図1に示す例では、各属性情報に対応する動的辞書10~13が存在する。図1では、動的辞書10~13を示すが、他の属性情報に対応する動的辞書が存在していても良い。動的辞書10は、「低頻度単語」を動的符号化する場合に用いる動的辞書である。例えば、動的辞書10には「A000h~A0FFh」の動的符号が割り当てられる。動的辞書11は、「未知語」を動的符号化する場合に用いる動的辞書である。例えば、動的辞書11には「A100h~A1FFh」の動的符号が割り当てられる。
【0017】
動的辞書12は「数値」を動的符号化する場合に用いる動的辞書である。例えば、動的辞書12には「A200h~A2FFh」の動的符号が割り当てられる。動的辞書13は「タグ」を動的符号化する場合に用いる動的辞書である。例えば、動的辞書13には「A300h~A3FFh」の動的符号が割り当てられる。
【0018】
情報処理装置が、単語の属性情報を判定する一例について説明する。情報処理装置は、低頻度単語を定義した外部辞書を利用し、単語が外部辞書にヒットする場合には、単語の属性情報を「低頻度単語」と判定する。情報処理装置は、単語に所定のタグ「<、>」が含まれている場合には、単語の属性情報を「タグ」と判定する。情報処理装置は、単語が「1~9」の数値で構成される場合には、単語の属性情報を「数値」と判定する。情報処理装置は、単語の属性情報が「低頻度単語、タグ、数値」に対応しない場合に、単語の属性情報を「未知語」と判定する。
【0019】
情報処理装置は、種別テーブル20を用いて、属性情報に対応する動的辞書を判定する。種別テーブル20は、属性情報とポインタとを対応付ける。ポインタは、属性情報に対応する動的辞書を示す情報である。例えば、属性情報が「低頻度単語」の場合には、ポインタは動的辞書10の位置を示す。属性情報が「未知語」の場合には、ポインタは動的辞書11の位置を示す。属性情報が「数値」の場合には、ポインタは動的辞書12の位置を示す。属性情報が「タグ」の場合には、ポインタは動的辞書13の位置を示す。
【0020】
テキストファイルF1に含まれる単語「Mickey△」は静的辞書にヒットしない単語であり、属性情報を「未知語」とする。情報処理装置は、単語「Mickey△」の属性情報「未知語」に対応する動的辞書11を、動的辞書10~13から判定する。情報処理装置は、単語「Mickey△」に動的符号「A100h」を割り当てることで、動的符号化を行う。
【0021】
テキストファイルF1に含まれる単語「12345△」は静的辞書にヒットしない単語であり、属性情報を「数値」とする。情報処理装置は、単語「12345△」の属性情報「数値」に対応する動的辞書12を、動的辞書10~13から判定する。情報処理装置は、単語「12345△」に動的符号「A200h」を割り当てることで、動的符号化を行う。
【0022】
テキストファイルF1に含まれる単語「<a href="#link2H_4_00002">△」は静的辞書にヒットしない単語であり、属性情報を「タグ」とする。情報処理装置は、単語「<a href="#link2H_4_00002">△」の属性情報「タグ」に対応する動的辞書13を、動的辞書10~13から判定する。情報処理装置は、単語「<a href="#link2H_4_00002">△」に動的符号「A300h」を割り当てることで、動的符号化を行う。
【0023】
情報処理装置は、上記の処理を実行することで、テキストファイルF1を符号化ファイルF2に符号化する。符号化ファイルF2には、ヘッダ部1aと、符号化データ部1bと、トレーラ部1cとが含まれる。ヘッダ部1aには、単語の出現頻度の情報等が含まれる。符号化データ部1bには、情報処理装置が生成した符号化データが格納される。トレーラ部1cには、動的辞書10~13の情報等が含まれる。
【0024】
本実施例1に係る情報処理装置は、テキストファイルF1に含まれる単語の属性情報に対応する動的辞書を判定し、判定した動的辞書を用いて動的符号化を行う。これにより、単語と動的符号とを対応付けた動的辞書が、単語の属性情報により区別可能になるため、動的辞書を効率的に利用することができる。
【0025】
図2は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。図2に示すように、この情報処理装置100は、符号化部100aと、伸長部100bと、記憶部100cとを有する。符号化部100aは、登録部および符号化部の一例である。
【0026】
符号化部100aは、図1に示した符号化処理を実行する処理部である。伸長部100bは、符号化部100aによって符号化された符号化ファイルを伸長(復号化)する処理部である。記憶部100cは、符号化対象のテキストファイルF1、符号化処理により得られる符号化ファイルF2、符号化ファイルF2を伸長することにより得られる伸長ファイルF3等を格納する記憶部である。記憶部100cは、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
【0027】
図3は、本実施例1に係る符号化部の構成の一例を示す機能ブロック図である。図3に示すように、この符号化部100aは、ファイルリード部101と、静的辞書情報102と、静的符号化部103とを有する。符号化部100aは、動的辞書情報104と、種別テーブル105と、動的符号化部106と、ファイルライト部107とを有する。
【0028】
ファイルリード部101は、記憶部100cに格納された符号化対象となるテキストファイルF1のコンテンツ部分のデータを読み出す処理部である。ファイルリード部101は、読み出したデータを、静的符号化部103に出力する。
【0029】
図4は、静的辞書情報のデータ構造の一例を示す図である。静的辞書情報102は、出現頻度が閾値以上となる単語に対する静的符号を定義した静的辞書C2の情報を含む。図4に示すように、この静的辞書情報102は、2グラム、ビットマップ、ポインタ、基礎単語、静的符号を有する。このうち、2グラム、ビットマップ、ポインタ、基礎単語は、ビットフィルタC1に対応する。また、基礎単語、静的符号は、静的辞書C2に対応する。
【0030】
2グラムは、2文字の文字列(あるいは単語)を示す情報である。ビットマップは、2グラムの文字列に対応するビットマップを示す。例えば、「aa」に対応するビットマップは「0_0_0_0_0」となる。ポインタは、ビットマップに対応する基礎単語の位置を示すポインタである。
【0031】
基礎単語は、例えば、静的辞書C2に登録された高頻度の単語である。静的符号は、基礎単語に割り当てられた符号化データである。なお、静的辞書C2には、基礎単語、静的符号に加えて、文字列長、単語の出現頻度等の情報が含まれていても良い。
【0032】
静的符号化部103は、ファイルリード部101のテキストファイルF1のコンテンツのデータと、静的辞書情報102のビットフィルタC1とを比較して、ビットフィルタC1にヒットした単語を静的符号に置換する処理部である。静的符号化部103は、単語に対応する静的符号を、ファイルライト部107に出力する。
【0033】
ここで、単語がビットフィルタC1にヒットするか否かを判定する静的符号化部103の処理の一例について説明する。例えば、静的符号化部103は、単語が「able△」である場合には、2グラム「ab」、「bl」、「le」、「e△」に対応するビットマップをそれぞれ組み合わせる。静的符号化部103は、ビットマップの各桁において、すべてのビットマップの値が0となっている場合には、組み合わせたビットマップの該当する桁を「0」とする。これに対して、静的符号化部103は、「1」が一つでも含まれる場合には該当する桁を「1」に設定することで、ビットマップを組み合わせる。
【0034】
例えば、「ab」のビットマップが「1_0_0_0_0」、「bl」のビットマップが「0_1_0_0_0」、「le」のビットマップが「0_0_1_0_0」、「e△」のビットマップが「0_0_0_1_0」とする。この場合には、各ビットマップを組み合わせたビットマップは「1_1_1_1_0」となる。
【0035】
静的符号化部103は、組み合わせたビットマップと、ビットフィルタC1のポインタとを比較して、ビットマップに対応するポインタが示す位置の基礎単語を特定する。静的符号化部103は、特定した基礎単語から順に、単語に対応する基礎単語を検索する。静的符号化部103は、単語と同一の基礎単語が存在する場合には、単語がビットフィルタC1にヒットしたと判定する。
【0036】
図5は、動的辞書情報のデータ構造の一例を示す図である。動的辞書情報104は、図1に示した動的辞書に関する情報を含む。図5に示すように、この動的辞書情報104は、動的ビットフィルタD1と、動的辞書部D2と、バッファD3とを有する。
【0037】
動的ビットフィルタD1は、2グラムと、ビットマップと、第1ポインタとを有する。動的辞書部D2は、動的辞書10~13を有する。各動的辞書10~13は、動的符号と、第2ポインタと、連鎖領域とを対応付ける。バッファD3は、動的符号により符号化される前の単語を格納する。
【0038】
動的ビットフィルタD1の2グラムは、2文字の文字列(あるいは2つの単語)を示す情報である。ビットマップは、2グラムの文字列に対応するビットマップを示す。例えば、「aa」に対応するビットマップは「0_0_0_0_0」となる。第1ポインタは、ビットマップに対応する動的符号の位置を示すポインタである。ビットマップおよび第1ポインタに関するその他の説明は、図4に示したビットマップおよびポインタの説明と同様である。
【0039】
動的辞書部D2の動的符号は、バッファD3に格納された単語に割り当てられた符号である。第2ポインタは、動的符号に対応する単語が格納されたバッファD3の位置を示す情報である。例えば、動的符号「A100h」に対応する第2ポインタは、バッファD3に格納された「Mickey」の先頭位置を示す。すなわち、単語「Mickey」は、動的符号「A100h」に動的符号化されていることを意味する。
【0040】
動的辞書部D2の連鎖領域は、該当する文字列等がビットフィルタのポインタから連鎖しているか否かを示す情報である。該当する文字列等が連鎖していない場合には、連鎖領域に「NULL」が設定される。
【0041】
図6は、種別テーブルのデータ構造の一例を示す図である。図6に示すように、この種別テーブル105は、テーブル105aと、コード割当ポインタ105bと、管理情報105cとを有する。テーブル105aは、アドレスと、属性情報と、ポインタとを対応付ける。アドレスは、該当の属性情報に対応する動的辞書に割り当てられたアドレスを示すものである。属性情報は、上述した単語の属性情報を示すものである。ポインタは、属性情報に対応する動的辞書の位置を示すものである。
【0042】
コード割当ポインタ105bは、各動的辞書について、動的辞書に割り当てられた動的符号のうち、未使用の動的符号の先頭を示すポインタである。例えば、図5に示した動的辞書11に関して説明を行う。動的辞書11には、動的符号「A100h~A1FFh」が割り当てられ、このうち、動的符号「A100h」が、「Mickey」の動的符号に割り当てられているものとする。この場合には、コード割当ポインタ105bには、動的符号「A101h」が設定される。他の動的辞書についても同様に、動的辞書に割り当てられた動的符号のうち、未使用の動的符号の先頭を示すポインタが設定される。
【0043】
管理情報105cは、各動的辞書について、動的辞書に割り当てられる単語の残りの数を管理する情報である。本実施例1に示す例では、各動的辞書に「256個」単位で符号領域を割り当て、単語を登録するものとする。また、管理情報105cは、動的辞書に割り当てられていない動的符号の位置(未使用の位置)を示すポインタの情報を有する。
【0044】
図3の説明に戻る。動的符号化部106は、静的符号化部103により静的符号が割り当てられなかった単語に対して動的符号を割り振り、動的符号化を行う処理部である。動的符号化部106は、単語に対応する動的符号を、ファイルライト部107に出力する。以下において、動的符号化部106の処理の一例について説明する。
【0045】
まず、動的符号化部106が、動的辞書情報104に登録されていない単語を動的符号化する場合について説明する。動的符号化部106は、静的符号化部103から単語を取得すると、単語の属性情報と、種別テーブル105とを比較して、単語の属性情報に対応する動的辞書の位置を判定する。動的符号化部106は、判定した動的辞書に割り振られた動的符号のうち、他の単語に割り当てていない先頭の動的符号を、単語に割り当てる。また、動的符号化部106は、単語をバッファD3に格納し、単語を格納した位置に、第2ポインタを設定する。また、動的符号化部106は、動的ビットフィルタD1の第1ポインタを、単語に対応する動的符号の位置に合わせて更新する。
【0046】
例えば、動的符号化部106が、動的辞書情報104に登録されていない単語「Mickey」を動的符号化する場合について説明する。動的符号化部106は、単語「Mickey」の属性情報「未知語」と、図6に示した種別テーブル105とを比較して、属性情報「未知語」に対応する動的辞書11の位置を判定する。
【0047】
動的符号化部106は、動的辞書11に割り当てられた動的符号「A100h~A1FFh」のうち、他の単語が割り当てられていない先頭の動的符号を単語「Mickey」に割り当てる。図5に示す例では、動的符号化部106は、単語「Mickey」に動的符号「A100h」を割り当てる。動的符号化部106は、バッファD3に単語「Mickey」を格納し、格納した位置に、動的符号「A100h」に対応する第2ポインタを指定する。また、動的符号化部106は、動的ビットフィルタD1を更新する。動的符号化部106は、単語「Mickey」に割り当てられた動的符号「A100h」を、ファイルライト部107に出力する。
【0048】
続いて、動的符号化部106が、動的辞書情報104に登録されている単語を動的符号化する場合について説明する。例えば、動的符号化部106は、下記の処理を行うことで、動的辞書情報104に、動的符号化の対象となる単語が登録されているか否かを判定する。動的符号化部106は、動的符号化の対象となる単語と、動的ビットフィルタD1とを比較して、第1ポインタに示される動的辞書部D2の位置を特定する。動的符号化部106は、特定した位置に該当する第2ポインタに示されるバッファD3の位置に、動的符号化の対象となる単語と同一の単語が格納されている場合に、動的辞書情報104に、動的符号化の対象となる単語が登録されているか否かを判定する。一方、動的符号化部106は、動的符号化の対象となる単語と同一の単語が格納されていない場合には、動的符号化の対象となる単語が登録されていないため、上記の処理を実行する。
【0049】
例えば、動的符号化部106が、動的辞書情報104に登録されている単語「Mickey」を動的符号化する場合について説明する。動的符号化部106は、単語「Mickey」と、動的ビットフィルタD1とを比較して、動的符号「A100h」の第2ポインタに示されるバッファD3の位置を参照すると、「Mickey」が格納されており、単語が一致する。このため、動的符号化部106は、「Mickey」に割り当てられた動的符号「A100h」を、ファイルライト部107に出力する。
【0050】
ファイルライト部107は、単語に対応する静的符号および動的符号を取得し、取得した静的符号および動的符号を、符号化ファイルF2の符号化データ部1bに書き込む処理部である。また、ファイルライト部107は、ヘッダ部1aに、単語の出現頻度の情報を格納する。ファイルライト部107は、トレーラ部1cに、動的辞書情報104等を格納する。
【0051】
図7は、本実施例1に係る伸長部の構成の一例を示す機能ブロック図である。図7に示すように、この伸長部100bは、ファイルリード部201と、オートマトン生成部202と、伸長処理部204と、ファイルライト部205とを有する。また、伸長部100bは、例えば、第1オートマトン203a、第2オートマトン203b、第3オートマトン203c、第4オートマトン203d、第5オートマトン203eを有する。
【0052】
ファイルリード部201は、符号化ファイルF2の符号化データ部1bに格納された符号を読み出す処理部である。ファイルリード部201は、読み出した符号を、伸長処理部204に出力する。また、ファイルリード部201は、ヘッダ部1aに格納された単語の出現頻度の情報を読み出し、オートマトン生成部202に出力する。ファイルリード部201は、トレーラ部1cに格納された動的辞書情報104を読み出し、オートマトン生成部202に出力する。
【0053】
オートマトン生成部202は、単語の出現頻度の情報を基にして、静的符号を単語に変換する第1オートマトン203aを生成する。また、オートマトン生成部202は、動的辞書情報104を基にして、動的符号を単語に変換する第2オートマトン203b~第5オートマトン203eを生成する。
【0054】
第1オートマトン203aは、静的符号と単語(高頻度の単語)とを対応付けるオートマトンである。例えば、符号の先頭4ビットが「0h(0000)~9h(1001)」に含まれる場合には、第1オートマトン203aと、符号との比較により、単語が特定される。
【0055】
第2オートマトン203bは、動的符号と単語(低頻度単語)とを対応付けるオートマトンである。第2オートマトン203bは、属性情報「低頻度単語」に対応する動的辞書10に対応して生成される。例えば、符号の先頭の16ビットが「A000h~A0FFh」に含まれる場合には、第2オートマトン203bと、符号との比較により、単語(低頻度単語)が特定される。
【0056】
第3オートマトン203cは、動的符号と単語(未知語)とを対応付けるオートマトンである。第3オートマトン203cは、属性情報「未知語」に対応する動的辞書11に対応して生成される。例えば、符号の先頭の16ビットが「A100h~A1FFh」に含まれる場合には、第3オートマトン203cと、符号との比較により、単語(未知語)が特定される。
【0057】
第4オートマトン203dは、動的符号と単語(数値)とを対応付けるオートマトンである。第4オートマトン203dは、属性情報「数値」に対応する動的辞書12に対応して生成される。例えば、符号の先頭の16ビットが「A200h~A2FFh」に含まれる場合には、第4オートマトン203dと、符号との比較により、単語(数値)が特定される。
【0058】
第5オートマトン203eは、動的符号と単語(タグ)とを対応付けるオートマトンである。第5オートマトン203eは、属性情報「タグ」に対応する動的辞書13に対応して生成される。例えば、符号の先頭の16ビットが「A300h~A3FFh」に含まれる場合には、第5オートマトン203eと、符号との比較により、単語(タグ)が特定される。
【0059】
伸長処理部204は、ファイルリード部201から取得する符号と、第1オートマトン203a~第5オートマトン203eとを基にして、符号に対応する単語を特定する処理部である。例えば、伸長処理部204は、符号の先頭4ビットが「0h(0000)~9h(1001)」に含まれる場合には、第1オートマトン203aと、符号との比較により、符号に対応する単語を特定する。
【0060】
伸長処理部204は、符号の先頭の16ビットが「A000h~A0FFh」に含まれる場合には、第2オートマトン203bと、符号との比較により、単語(低頻度単語)を特定する。
【0061】
伸長処理部204は、符号の先頭の16ビットが「A100h~A1FFh」に含まれる場合には、第3オートマトン203cと、符号との比較により、単語(未知語)を特定する。
【0062】
伸長処理部204は、符号の先頭の16ビットが「A200h~A2FFh」に含まれる場合には、第4オートマトン203dと、符号との比較により、単語(数値)を特定する。
【0063】
伸長処理部204は、符号の先頭の16ビットが「A300h~A3FFh」に含まれる場合には、第5オートマトン203eと、符号との比較により、単語(タグ)を特定する。
【0064】
伸長処理部204は、ファイルリード部201から読み出された符号に対して上記の処理を繰り返し実行することで、符号に対応する単語を順次特定し、特定した単語をファイルライト部205に出力する。
【0065】
ファイルライト部205は、伸長処理部204から取得する復号化された単語を、伸長ファイルF3に格納する処理部である。
【0066】
次に、本実施例1に係る符号化部100aの処理手順について説明する。図8は、本実施例1に係る符号化部の処理手順を示すフローチャートである。図8に示すように、符号化部100aのファイルリード部101は、符号化対象のテキストファイルF1を、単語単位にリードする(ステップS101)。
【0067】
符号化部100aの静的符号化部103は、単語が高頻度の単語であるか否かを判定する(ステップS102)。例えば、ステップS102において、静的符号化部103は、単語が静的辞書C2にヒットする場合には、単語が高頻度の単語であると判定する。
【0068】
静的符号化部103は、単語が高頻度の単語である場合には(ステップS102,Yes)、静的辞書C2による符号化を行う(ステップS103)。静的符号化部103は、単語に対応する静的符号をファイルライト部107に出力し(ステップS104)、ステップS109に移行する。一方、静的符号化部103は、単語が高頻度の単語でない場合には(ステップS102,No)、ステップS105に移行する。
【0069】
符号化部100aの動的符号化部106は、種別テーブル105を基にして、単語の属性情報に対応する動的辞書を、複数の動的辞書から判定する(ステップS105)。動的符号化部106は、判定した動的辞書の領域に単語を登録し、動的符号を割り当てる(ステップS106)。動的符号化部106は、動的辞書による符号化を行い(ステップS107)、単語に対応する動的符号をファイルライト部107に出力する(ステップS108)。
【0070】
ファイルライト部107は、符号(静的符号または動的符号)を符号化ファイルF2の符号化データ部1bに書き込む(ステップS109)。符号化部100aは、テキストファイルF1の終点であるか否かを判定する(ステップS110)。符号化部100aは、テキストファイルF1の終点でない場合には(ステップS110,No)、ステップS101に移行する。
【0071】
ファイルライト部107は、テキストファイルF1の終点である場合には(ステップS110,Yes)、符号化ファイルF2のヘッダ部1aに単語の出現頻度の情報を格納し、トレーラ部1cに動的辞書情報104を格納する(ステップS111)。
【0072】
次に、本実施例1に係る伸長部100bの処理手順について説明する。図9は、本実施例1に係る伸長部の処理手順を示すフローチャートである。図9に示すように、伸長部100bのオートマトン生成部202は、第1オートマトン203a~第5オートマトン203eを生成する(ステップS201)。ファイルリード部201は、符号化ファイルF2をリードする(ステップS202)。
【0073】
伸長部100bの伸長処理部204は、符号を取得し(ステップS203)、符号の先頭4ビットの値と、第1オートマトン203aとを比較する(ステップS204)。伸長処理部204は、第1オートマトン203aにヒットした場合には(ステップS205,Yes)、第1オートマトン203aを選択する(ステップS206)。伸長処理部204は、第1オートマトン203aに基づいて、符号を単語に変換し(ステップS207)、ステップS210に移行する。
【0074】
一方、伸長処理部204は、第1オートマトン203aにヒットしない場合には(ステップS205,No)、ステップS208に移行する。伸長処理部204は、符号の先頭から16ビット目までの値と各オートマトンとを比較し、第2~第5オートマトン203b~203eのうち、対応するオートマトンを選択する(ステップS208)。
【0075】
伸長処理部204は、選択したオートマトンに基づいて、符号を単語に変換する(ステップS209)。伸長処理部204は、符号化ファイルF2の復号化が終了したか否かを判定する(ステップS210)。伸長処理部204は、符号化ファイルF2の復号化が終了していない場合には(ステップS210,No)、ステップS203に移行する。
【0076】
伸長処理部204は、符号化ファイルF2の復号化が終了した場合には(ステップS210,Yes)、復号化したデータを伸長ファイルF3に書き込む(ステップS211)。
【0077】
次に、本実施例1に係る符号化部100aの効果について説明する。符号化部100aは、テキストファイルF1に含まれる単語の属性情報に対応する動的辞書を判定し、判定した動的辞書を用いて動的符号化を行う。これにより、単語と動的符号とを対応付けた動的辞書が、単語の属性情報により区別可能になるため、動的辞書を効率的に利用することができる。例えば、単語の属性情報により、動的符号に対応する単語が、各動的辞書に区別されて登録されるため、復号化を行う場合に、該当の動的辞書に対応したオートマトンを利用することで復号化を行うことができる。
【実施例2】
【0078】
図10は、本実施例2に係る情報処理装置の符号化処理の一例を示す図である。情報処理装置は、符号化装置の一例である。情報処理装置は、符号化対象のファイルF4を読み出し、静的辞書による静的符号化または動的辞書による動的符号化を行うことで、符号化ファイルF5を生成する。静的辞書は、出現頻度の高い単語と静的符号とを対応付けた情報である。
【0079】
本実施例2で説明するファイルF4は、複数の単語がデリミタで複数の列(カラム)に区切られたファイルである。図10に示す例では、ファイルF4には、カラム20a,21a,22aが含まれる。カラム20aには、単語「商品番号」、「1242」、「2342」、「3324」が含まれる。カラム21aには、単語「キャラクター名」「Mickey」、「Alice」、「Becky」が含まれる。カラム22aには、単語「単価」、「50」、「500」、「450」が含まれる。
【0080】
情報処理装置は、ファイルF4から単語を読み出し、静的辞書にヒットする単語については、静的符号に置き換える処理を実行する。ファイルF4に含まれる単語は、スペースによって区切られているものとする。ファイルF4に含まれる単語「商品番号」、「キャラクター名」、「単価」はそれぞれ、静的辞書にヒットする単語であるとする。情報処理装置は、各単語を静的符号に変換する。ここでは説明の便宜上、単語「商品番号」、「キャラクター名」、「単価」に対応する静的符号をそれぞれ「(商品番号)」「(キャラクター名)」、「(単価)」と表記する。
【0081】
情報処理装置は、ファイルF4から単語を読み出し、静的辞書にヒットしない単語については、単語の属性情報に対応する動的辞書を複数の動的辞書から判定し、判定した動的辞書を用いて、動的符号化を行う。情報処理装置は、単語の属性情報に対応する動的辞書に単語を登録して、動的符号を割り振り、単語を動的符号に置き換える。
【0082】
図10に示す例では、各属性情報に対応する動的辞書20~22が存在する。図10では、動的辞書20~22を示すが、他の属性情報に対応する動的辞書が存在していても良い。動的辞書20は、「カラム20aの単語」を動的符号化する場合に用いる動的辞書である。例えば、動的辞書20には「A000h~A0FFh」の動的符号が割り当てられる。動的辞書21は、「カラム21aの単語」を動的符号化する場合に用いる動的辞書である。例えば、動的辞書21には「A100h~A1FFh」の動的符号が割り当てられる。動的辞書22は「カラム22aの単語」を動的符号化する場合に用いる動的辞書である。例えば、動的辞書22には「A200h~A2FFh」の動的符号が割り当てられる。
【0083】
情報処理装置は、種別テーブル25を用いて、属性情報に対応する動的辞書を判定する。種別テーブル25は、属性情報とポインタとを対応付ける。ポインタは、属性情報に対応する動的辞書を示す情報である。例えば、属性情報が「カラム20aの単語」の場合には、ポインタは動的辞書20の位置を示す。属性情報が「カラム21aの単語」の場合には、ポインタは動的辞書21の位置を示す。属性情報が「カラム22aの単語」の場合には、ポインタは動的辞書22の位置を示す。
【0084】
ファイルF4のカラム20aに含まれる各単語「1242」、「2342」、「3324」を静的辞書にヒットしない単語とする。情報処理装置は、属性情報「カラム20aの単語」に対応する動的辞書20を、動的辞書20~22から判定する。情報処理装置は、各単語「1242」、「2342」、「3324」に各動的符号「A000h」、「A001h」、「A002h」をそれぞれ割り当てることで、動的符号化を行う。
【0085】
ファイルF4のカラム21aに含まれる各単語「Mickey」、「Alice」、「Becky」を静的辞書にヒットしない単語とする。情報処理装置は、属性情報「カラム21aの単語」に対応する動的辞書21を、動的辞書20~22から判定する。情報処理装置は、各単語「Mickey」、「Alice」、「Becky」に各動的符号「A100h」、「A101h」、「A102h」をそれぞれ割り当てることで、動的符号化を行う。
【0086】
ファイルF4のカラム22aに含まれる各単語「50」、「500」、「450」を静的辞書にヒットしない単語とする。情報処理装置は、属性情報「カラム22aの単語」に対応する動的辞書22を、動的辞書20~22から判定する。情報処理装置は、各単語「50」、「500」、「450」に各動的符号「A200h」、「A201h」、「A202h」をそれぞれ割り当てることで、動的符号化を行う。
【0087】
情報処理装置は、上記の処理を実行することで、ファイルF4を符号化ファイルF5に符号化する。符号化ファイルF5には、ヘッダ部2aと、符号化データ部2bと、トレーラ部2cとが含まれる。ヘッダ部2aには、単語の出現頻度の情報等が含まれる。符号化データ部2bには、情報処理装置が生成した符号化データが格納される。トレーラ部2cには、動的辞書20~22の情報等が含まれる。
【0088】
本実施例2に係る情報処理装置は、ファイルF4に含まれる単語の属性情報(カラムの位置)に対応する動的辞書を判定し、判定した動的辞書を用いて動的符号化を行う。これにより、単語と動的符号とを対応付けた動的辞書が、単語の属性情報により区別可能になるため、動的辞書を効率的に利用することができる。
【0089】
図11は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。図11に示すように、この情報処理装置300は、符号化部300aと、伸長部300bと、記憶部300cとを有する。符号化部300aは、登録部および符号化部の一例である。
【0090】
符号化部300aは、図10に示した符号化処理を実行する処理部である。伸長部300bは、符号化部300aによって符号化された符号化ファイルを伸長(復号化)する処理部である。記憶部300cは、符号化対象のファイルF4、符号化処理により得られる符号化ファイルF5、符号化ファイルF5を伸長することにより得られる伸長ファイルF6等を格納する記憶部である。記憶部300cは、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
【0091】
図12は、本実施例2に係る符号化部の構成の一例を示す機能ブロック図である。図12に示すように、この符号化部300aは、ファイルリード部301と、静的辞書情報302と、静的符号化部303とを有する。符号化部300aは、動的辞書情報304と、種別テーブル305と、動的符号化部306と、ファイルライト部307とを有する。
【0092】
ファイルリード部301は、記憶部300cに格納された符号化対象となるファイルF4のコンテンツ部分のデータを読み出す処理部である。ファイルリード部301は、読み出したデータを、静的符号化部303に出力する。
【0093】
静的辞書情報302は、出現頻度の高い単語と静的符号とを対応付けた情報である。静的辞書情報302に関する説明は、実施例1で説明した静的辞書情報102に関する説明と同様である。
【0094】
静的符号化部303は、ファイルリード部301のファイルF4のコンテンツのデータと、静的辞書情報302のビットフィルタC1とを比較して、ビットフィルタC1にヒットした単語を静的符号に置換する処理部である。静的符号化部303は、単語に対応する静的符号を、ファイルライト部307に出力する。その他の静的符号化部303に関する説明は、静的符号化部103に関する説明と同様である。
【0095】
図13は、動的辞書情報のデータ構造の一例を示す図である。動的辞書情報304は、図10に示した動的辞書に関する情報を含む。図13に示すように、この動的辞書情報304は、動的ビットフィルタD1と、動的辞書部D2と、バッファD3とを有する。
【0096】
動的ビットフィルタD1は、2グラムと、ビットマップと、第1ポインタとを有する。動的辞書部D2は、動的辞書20~22を有する。各動的辞書20~22は、動的符号と、第2ポインタと、連鎖領域とを対応付ける。バッファD3は、動的符号により符号化される前の単語を格納する。
【0097】
動的ビットフィルタD1の2グラムは、2文字の文字列(あるいは2つの単語)を示す情報である。ビットマップは、2グラムの文字列に対応するビットマップを示す。例えば、「aa」に対応するビットマップは「0_0_0_0_0」となる。第1ポインタは、ビットマップに対応する動的符号の位置を示すポインタである。ビットマップおよび第1ポインタに関するその他の説明は、図4に示したビットマップおよびポインタの説明と同様である。
【0098】
動的辞書部D2の動的符号は、バッファD3に格納された単語に割り当てられた符号である。第2ポインタは、動的符号に対応する単語が格納されたバッファD3の位置を示す情報である。例えば、動的符号「A000h」に対応する第2ポインタは、バッファD3に格納された「1242」の先頭位置を示す。すなわち、単語「1242」は、動的符号「A000h」に動的符号化されていることを意味する。
【0099】
動的辞書部D2の連鎖領域は、該当する文字列等がビットフィルタのポインタから連鎖しているか否かを示す情報である。該当する文字列等が連鎖していない場合には、連鎖領域に「NULL」が設定される。
【0100】
図14は、種別テーブルのデータ構造の一例を示す図である。図14に示すように、この種別テーブル305は、テーブル305aと、コード割当ポインタ305bと、管理情報305cとを有する。テーブル305aは、アドレスと、属性情報と、ポインタとを対応付ける。アドレスは、該当の属性情報に対応する動的辞書に割り当てられたアドレスを示すものである。属性情報は、上述した単語の属性情報を示すものである。ポインタは、属性情報に対応する動的辞書の位置を示すものである。
【0101】
コード割当ポインタ305bは、各動的辞書について、動的辞書に割り当てられた動的符号のうち、未使用の動的符号の先頭を示すポインタである。例えば、図13に示した動的辞書20に関して説明を行う。動的辞書20には、動的符号「A000h~A0FFh」が割り当てられ、このうち、動的符号「A000h」、「A001h」、「A002h」が、「1242」、「2342」、「3324」の動的符号に割り当てられているものとする。この場合には、コード割当ポインタ305bには、動的符号「A003h」が設定される。他の動的辞書についても同様に、動的辞書に割り当てられた動的符号のうち、未使用の動的符号の先頭を示すポインタが設定される。
【0102】
管理情報305cは、各動的辞書について、動的辞書に割り当てられる単語の残りの数を管理する情報である。本実施例2に示す例では、各動的辞書に最大で「256個」の単語を登録するものとする。また、管理情報305cは、動的辞書に割り当てられていない動的符号の位置(未使用の位置)を示すポインタの情報を有する。
【0103】
図12の説明に戻る。動的符号化部306は、静的符号化部303により静的符号が割り当てられなかった単語に対して動的符号を割り振り、動的符号化を行う処理部である。動的符号化部306は、単語に対応する動的符号を、ファイルライト部307に出力する。以下において、動的符号化部306の処理の一例について説明する。
【0104】
まず、動的符号化部306が、動的辞書情報304に登録されていない単語を動的符号化する場合について説明する。動的符号化部306は、静的符号化部303から単語を取得すると、単語の属性情報と、種別テーブル305とを比較して、単語の属性情報に対応する動的辞書の位置を判定する。動的符号化部306は、判定した動的辞書に割り振られた動的符号のうち、他の単語に割り当てていない先頭の動的符号を、単語に割り当てる。また、動的符号化部306は、単語をバッファD3に格納し、単語を格納した位置に、第2ポインタを設定する。また、動的符号化部306は、動的ビットフィルタD1の第1ポインタを、単語に対応する動的符号の位置に合わせて更新する。
【0105】
例えば、動的符号化部306が、動的辞書情報304に登録されていない単語「1242」を動的符号化する場合について説明する。動的符号化部306は、単語「1242」の属性情報「カラム20aの単語」と、図14に示した種別テーブル305とを比較して、属性情報「カラム20aの単語」に対応する動的辞書20の位置を判定する。
【0106】
動的符号化部306は、動的辞書20に割り当てられた動的符号「A000h~A0FFh」のうち、他の単語が割り当てられていない先頭の動的符号を単語「1242」に割り当てる。図13に示す例では、動的符号化部306は、単語「1242」に動的符号「A000h」を割り当てる。動的符号化部306は、バッファD3に単語「1242」を格納し、格納した位置に、動的符号「A000h」に対応する第2ポインタを指定する。また、動的符号化部306は、動的ビットフィルタD1を更新する。動的符号化部306は、単語「1242」に割り当てられた動的符号「A000h」を、ファイルライト部307に出力する。
【0107】
続いて、動的符号化部306が、動的辞書情報304に登録されている単語を動的符号化する場合について説明する。例えば、動的符号化部306は、下記の処理を行うことで、動的辞書情報304に、動的符号化の対象となる単語が登録されているか否かを判定する。動的符号化部306は、動的符号化の対象となる単語と、動的ビットフィルタD1とを比較して、第1ポインタに示される動的辞書部D2の位置を特定する。動的符号化部306は、特定した位置に該当する第2ポインタに示されるバッファD3の位置に、動的符号化の対象となる単語と同一の単語が格納されている場合に、動的辞書情報304に、動的符号化の対象となる単語が登録されているか否かを判定する。一方、動的符号化部306は、動的符号化の対象となる単語と同一の単語が格納されていない場合には、動的符号化の対象となる単語が登録されていないため、上記の処理を実行する。
【0108】
例えば、動的符号化部306が、動的辞書情報304に登録されている単語「1242」を動的符号化する場合について説明する。動的符号化部306は、単語「1242」と、動的ビットフィルタD1とを比較して、動的符号「A000h」の第2ポインタに示されるバッファD3の位置を参照すると、「1242」が格納されており、単語が一致する。このため、動的符号化部306は、「1242」に割り当てられた動的符号「A000h」を、ファイルライト部307に出力する。
【0109】
ファイルライト部307は、単語に対応する静的符号および動的符号を取得し、取得した静的符号および動的符号を、符号化ファイルF5の符号化データ部2bに書き込む処理部である。また、ファイルライト部307は、ヘッダ部2aに、単語の出現頻度の情報を格納する。ファイルライト部307は、トレーラ部2cに、動的辞書情報304等を格納する。
【0110】
図15は、本実施例2に係る伸長部の構成の一例を示す機能ブロック図である。図15に示すように、この伸長部300bは、ファイルリード部401と、オートマトン生成部402と、伸長処理部404と、ファイルライト部405とを有する。また、伸長部300bは、例えば、第1オートマトン403a、第2オートマトン403b、第3オートマトン403c、第4オートマトン403dを有する。
【0111】
ファイルリード部401は、符号化ファイルF5の符号化データ部2bに格納された符号を読み出す処理部である。ファイルリード部401は、読み出した符号を、伸長処理部404に出力する。また、ファイルリード部401は、ヘッダ部2aに格納された単語の出現頻度の情報を読み出し、オートマトン生成部402に出力する。ファイルリード部401は、トレーラ部2cに格納された動的辞書情報304を読み出し、オートマトン生成部402に出力する。
【0112】
オートマトン生成部402は、単語の出現頻度の情報を基にして、静的符号を単語に変換する第1オートマトン403aを生成する。また、オートマトン生成部402は、動的辞書情報304を基にして、動的符号を単語に変換する第2オートマトン403b~第4オートマトン403dを生成する。
【0113】
第1オートマトン403aは、静的符号と単語(高頻度の単語)とを対応付けるオートマトンである。例えば、符号の先頭4ビットが「0h(0000)~9h(1001)」に含まれる場合には、第1オートマトン403aと、符号との比較により、単語が特定される。
【0114】
第2オートマトン403bは、動的符号と単語(カラム20aの単語)とを対応付けるオートマトンである。第2オートマトン403bは、属性情報「カラム20aの単語」に対応する動的辞書20に対応して生成される。例えば、符号の先頭の16ビットが「A000h~A0FFh」に含まれる場合には、第2オートマトン403bと、符号との比較により、単語(カラム20aの単語)が特定される。
【0115】
第3オートマトン403cは、動的符号と単語(カラム21aの単語)とを対応付けるオートマトンである。第3オートマトン403cは、属性情報「カラム21aの単語」に対応する動的辞書21に対応して生成される。例えば、符号の先頭の16ビットが「A100h~A1FFh」に含まれる場合には、第3オートマトン403cと、符号との比較により、単語(カラム21aの単語)が特定される。
【0116】
第4オートマトン403dは、動的符号と単語(カラム22aの単語)とを対応付けるオートマトンである。第4オートマトン403dは、属性情報「カラム22aの単語」に対応する動的辞書22に対応して生成される。例えば、符号の先頭の16ビットが「A200h~A2FFh」に含まれる場合には、第4オートマトン403dと、符号との比較により、単語(カラム22aの単語)が特定される。
【0117】
伸長処理部404は、ファイルリード部401から取得する符号と、第1オートマトン403a~第4オートマトン403dとを基にして、符号に対応する単語を特定する処理部である。例えば、伸長処理部404は、符号の先頭4ビットが「0h(0000)~9h(1001)」に含まれる場合には、第1オートマトン403aと、符号との比較により、符号に対応する単語を特定する。
【0118】
伸長処理部404は、符号の先頭の16ビットが「A000h~A0FFh」に含まれる場合には、第2オートマトン403bと、符号との比較により、単語(カラム20aの単語)を特定する。
【0119】
伸長処理部404は、符号の先頭の16ビットが「A100h~A1FFh」に含まれる場合には、第3オートマトン403cと、符号との比較により、単語(カラム21aの単語)を特定する。
【0120】
伸長処理部404は、符号の先頭の16ビットが「A200h~A2FFh」に含まれる場合には、第4オートマトン403dと、符号との比較により、単語(カラム22aの単語)を特定する。
【0121】
伸長処理部404は、ファイルリード部401から読み出された符号に対して上記の処理を繰り返し実行することで、符号に対応する単語を順次特定し、特定した単語をファイルライト部405に出力する。
【0122】
ファイルライト部405は、伸長処理部404から取得する復号化された単語を、伸長ファイルF6に格納する処理部である。
【0123】
次に、本実施例2に係る符号化部300aの処理手順について説明する。図16は、本実施例2に係る符号化部の処理手順を示すフローチャートである。図16に示すように、符号化部300aのファイルリード部301は、符号化対象のファイルF4を、単語単位にリードする(ステップS301)。
【0124】
符号化部300aの静的符号化部303は、単語が高頻度の単語であるか否かを判定する(ステップS302)。例えば、ステップS302において、静的符号化部303は、単語が静的辞書C2にヒットする場合には、単語が高頻度の単語であると判定する。
【0125】
静的符号化部303は、単語が高頻度の単語である場合には(ステップS302,Yes)、静的辞書C2による符号化を行う(ステップS303)。静的符号化部303は、単語に対応する静的符号をファイルライト部307に出力し(ステップS304)、ステップS309に移行する。一方、静的符号化部303は、単語が高頻度の単語でない場合には(ステップS302,No)、ステップS305に移行する。
【0126】
符号化部300aの動的符号化部306は、種別テーブル305を基にして、単語の属性情報に対応する動的辞書を、複数の動的辞書から判定する(ステップS305)。動的符号化部306は、判定した動的辞書の領域に単語を登録し、動的符号を割り当てる(ステップS306)。動的符号化部306は、動的辞書による符号化を行い(ステップS307)、単語に対応する動的符号をファイルライト部307に出力する(ステップS308)。
【0127】
ファイルライト部307は、符号(静的符号または動的符号)を符号化ファイルF5の符号化データ部2bに書き込む(ステップS309)。符号化部300aは、ファイルF4の終点であるか否かを判定する(ステップS310)。符号化部300aは、ファイルF4の終点でない場合には(ステップS310,No)、ステップS301に移行する。
【0128】
ファイルライト部307は、ファイルF4の終点である場合には(ステップS310,Yes)、符号化ファイルF5のヘッダ部2aに単語の出現頻度の情報を格納し、トレーラ部2cに動的辞書情報304を格納する(ステップS311)。
【0129】
次に、本実施例2に係る伸長部300bの処理手順について説明する。図17は、本実施例2に係る伸長部の処理手順を示すフローチャートである。図17に示すように、伸長部300bのオートマトン生成部202は、第1オートマトン403a~第4オートマトン403dを生成する(ステップS401)。ファイルリード部401は、符号化ファイルF2をリードする(ステップS402)。
【0130】
伸長部300bの伸長処理部404は、符号を取得し(ステップS403)、符号の先頭4ビットの値と、第1オートマトン403aとを比較する(ステップS404)。伸長処理部404は、第1オートマトン403aにヒットした場合には(ステップS405,Yes)、第1オートマトン403aを選択する(ステップS406)。伸長処理部404は、第1オートマトン403aに基づいて、符号を単語に変換し(ステップS407)、ステップS410に移行する。
【0131】
一方、伸長処理部404は、第1オートマトン403aにヒットしない場合には(ステップS405,No)、ステップS408に移行する。伸長処理部404は、符号の先頭から16ビット目までの値と各オートマトンとを比較し、第2~第4オートマトン403b~403dのうち、対応するオートマトンを選択する(ステップS408)。
【0132】
伸長処理部404は、選択したオートマトンに基づいて、符号を単語に変換する(ステップS409)。伸長処理部404は、符号化ファイルF5の復号化が終了したか否かを判定する(ステップS410)。伸長処理部404は、符号化ファイルF5の復号化が終了していない場合には(ステップS410,No)、ステップS403に移行する。
【0133】
伸長処理部404は、符号化ファイルF5の復号化が終了した場合には(ステップS410,Yes)、復号化したデータを伸長ファイルF6に書き込む(ステップS411)。
【0134】
次に、本実施例2に係る符号化部300aの効果について説明する。符号化部300aは、ファイルF4に含まれる単語の属性情報(単語の含まれるカラム)に対応する動的辞書を判定し、判定した動的辞書を用いて動的符号化を行う。これにより、単語と動的符号とを対応付けた動的辞書が、単語の属性情報により区別可能になるため、動的辞書を効率的に利用することができる。例えば、単語の属性情報により、動的符号に対応する単語が、各動的辞書に区別されて登録されるため、復号化を行う場合に、該当の動的辞書に対応したオートマトンを利用することで復号化を行うことができる。
【0135】
また、本実施例2に係る符号化部300aは、符号化対象となる単語のカラムを属性情報として、属性情報に対応する動的辞書を判定していたがこれに限定されるものではない。例えば、符号化部300aは、階層構造を有するテキストデータを符号化する場合に、単語の属する階層の位置を属性情報として利用しても良い。
【0136】
例えば、第1~第3の階層を有するテキストデータを符号化する場合の符号化部300aの処理の一例について説明する。符号化部300aは、第1の階層に属する単語を動的符号化する場合には、動的辞書20に単語を登録し、動的符号を割り当てる。符号化部300aは、第2の階層に属する単語を動的符号化する場合には、動的辞書21に単語を登録し、動的符号を割り当てる。符号化部300aは、第3の階層に属する単語を動的符号化する場合には、動的辞書22に単語を登録し、動的符号を割り当てる。
【0137】
上記のように、符号化部300aは、階層構造を有するテキストデータに含まれる単語の属性情報(単語の位置する階層)に対応する動的辞書を判定し、判定した動的辞書を用いて動的符号化を行う。これにより、単語と動的符号とを対応付けた動的辞書が、単語の属性情報により区別可能になるため、動的辞書を効率的に利用することができる。
【0138】
ところで、上述した符号化部100a(300a)は、単語の動的符号化を行う場合に、下記の処理を実行することで、バッファD3に格納されるデータ量を削減することができる。
【0139】
図18は、符号化部のその他の処理を説明するための図である。図18に示す例では、符号化部100aは、符号化対象のテキストファイルF1を読み出し、静的辞書による静的符号化または動的辞書による動的符号化を行うことで、符号化ファイルF2を生成する。ここで、符号化部100aは、動的符号化を行う場合に、バッファD3に格納された各単語に対して、最長一致文字列を検索し、最長一致文字列に動的符号を割り当てることで、データ量を削減する。
【0140】
図18で説明する例では、動的辞書31および動的辞書32を用いて説明する。動的辞書31は属性情報「タグ」の単語を動的符号化する場合に用いる動的辞書である。動的辞書32は「最長一致文字列」を動的符号化する場合に用いる動的辞書である。
【0141】
符号化部100aは、テキストファイルF1から単語「<a href="#link01">」を読み出し、単語の属性情報「タグ」に対応する動的辞書31を選択する。符号化部100aは、動的符号「A100h」を割り当て、単語「<a href="#link01">」をバッファD31に格納する。符号化部100aは、動的符号「A100h」に対応する第2ポインタを、バッファD31に格納された「<a href="#link01">」の先頭位置に設定する。符号化部100aは、動的符号「A100h」を符号化ファイルF2の符号化データ部1bに格納する。
【0142】
符号化部100aは、テキストファイルF1から単語「<a href="#link012">」を読み出し、単語の属性情報「タグ」に対応する動的辞書31を選択する。符号化部100aは、動的符号「A101h」を割り当て、単語「<a href="#link012">」をバッファ31に格納する。符号化部100aは、動的符号「A101h」に対応する第2ポインタを、バッファD31に格納された「<a href="#link012">」の先頭位置に設定する。符号化部100aは、動的符号「A101h」を符号化ファイルF2の符号化データ部1bに格納する。
【0143】
続いて、符号化部100aは、バッファD31に格納された文字列「<a href="#link0"1><a href="#link012">」について最長一致文字列を検索する。そうすると、「<a href="#link01」が最長一致文字列となる。
【0144】
符号化部100aは、動的辞書32を用いて、最長一致文字列「<a href="#link01」に動的符号を割り当てる。例えば、符号化部100aは、最長一致文字列「<a href="#link01」に動的符号「A200h」を割り当てる。符号化部100aは、動的符号を用いて、バッファD31に格納された文字列を「<a href="#link01">A2OOh2">」に更新する。例えば、符号化部100aは、バッファD31に登録された文字列に含まれる同一の最長一致文字列のうち、2番目以降の最長一致文字列を、動的符号に変換する。
【0145】
符号化部100aは、バッファD32に最長一致文字列「<a href="#link01」を格納し、動的符号「A200h」に対応する第2ポインタを、バッファD32に格納された「<a href="#link01>」の先頭位置に設定する。
【0146】
上記のように、符号化部100aは、動的符号化を行う場合に、バッファD31に格納された各単語に対して、最長一致文字列を検索し、最長一致文字列に動的符号を割り当てることで、データ量を削減することができる。
【0147】
下記に、本実施形態に用いられるハードウェア及びソフトウェアについて説明する。図19は、コンピュータのハードウェア構成例を示す図である。コンピュータ400は、例えば、プロセッサ401、RAM(Random Access Memory)402、ROM(Read Only Memory)403、ドライブ装置404、記憶媒体405、入力インターフェース(I/F)406、入力デバイス407、出力インターフェース(I/F)408、出力デバイス409、通信インターフェース(I/F)410、SAN(Storage Area Network)インターフェース(I/F)411およびバス412などを含む。それぞれのハードウェアはバス412を介して接続されている。
【0148】
RAM402は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAMでなくてもフラッシュメモリなどが用いられる。ROM403は、PROM(Programmable ROM)なども含む。ドライブ装置404は、記憶媒体405に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体405は、ドライブ装置404によって書き込まれた情報を記憶する。記憶媒体405は、例えば、ハードディスク、SSD(Solid State Drive)などのフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ400は、複数種類の記憶媒体それぞれについて、ドライブ装置404及び記憶媒体405を設ける。
【0149】
入力インターフェース406は、入力デバイス407と接続されており、入力デバイス407から受信した入力信号をプロセッサ401に伝達する回路である。出力インターフェース408は、出力デバイス409と接続されており、出力デバイス409に、プロセッサ401の指示に応じた出力を実行させる回路である。通信インターフェース410はネットワーク413を介した通信の制御を行なう回路である。通信インターフェース410は、例えばネットワークインターフェースカード(NIC)などである。SANインターフェース411は、ストレージエリアネットワークによりコンピュータ400と接続された記憶装置との通信の制御を行なう回路である。SANインターフェース411は、例えばホストバスアダプタ(HBA)などである。
【0150】
入力デバイス407は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ400の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス409は、コンピュータ400の制御に応じて情報を出力する装置である。出力デバイス409は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス407及び出力デバイス409として用いられる。また、入力デバイス407及び出力デバイス409は、コンピュータ400と一体になっていてもよいし、コンピュータ400に含まれず、例えば、コンピュータ400に外部から接続する装置であってもよい。
【0151】
例えば、プロセッサ401は、ROM403や記憶媒体405に記憶されたプログラムをRAM402に読み出し、読み出されたプログラムの手順に従って符号化部100a(300a)の処理または伸張部100b(300b)の処理を行なう。その際にRAM402はプロセッサ401のワークエリアとして用いられる。記憶部100cの機能は、ROM403および記憶媒体405がプログラムファイル(後述のアプリケーションプログラム54、ミドルウェア53およびOS52など)やデータファイル(圧縮対象のファイルF1、圧縮された符号化ファイルF2など)を記憶し、RAM402がプロセッサ401のワークエリアとして用いられることによって実現される。プロセッサ401が読み出すプログラムについては、図20を用いて説明する。
【0152】
図20は、コンピュータで動作するプログラムの構成例を示す。コンピュータ400において、図19に示すハードウェア群41(401~411)の制御を行なうOS(オペレーティング・システム)52が動作する。OS52に従った手順でプロセッサ401が動作して、ハードウェア群51の制御・管理が行なわれることにより、アプリケーションプログラム54やミドルウェア53に従った処理がハードウェア群51で実行される。さらに、コンピュータ400において、ミドルウェア53またはアプリケーションプログラム54が、RAM402に読み出されてプロセッサ401により実行される。
【0153】
プロセッサ401が、符号化処理機能が呼び出された場合に、ミドルウェア53またはアプリケーションプログラム54の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS52に基づいてハードウェア群51を制御して)符号化部100a(300a)の機能が実現される。また、プロセッサ401が、伸張機能が呼び出された場合に、ミドルウェア53またはアプリケーションプログラム54の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS52に基づいてハードウェア群51を制御して)伸張部100b(300b)の機能が実現される。符号化処理機能および伸張機能は、それぞれアプリケーションプログラム54自体に含まれてもよいし、アプリケーションプログラム54に従って呼び出されることで実行されるミドルウェア53の一部であってもよい。
【0154】
図21は、実施形態のシステムにおける装置の構成例を示す図である。図21のシステムは、コンピュータ50a、コンピュータ50b、基地局60およびネットワーク413を含む。コンピュータ50aは、無線または有線の少なくとも一方により、コンピュータ50bと接続されたネットワーク413に接続している。
【0155】
図2に示す符号化部100aと伸張部100bとは、図21に示すコンピュータ50aとコンピュータ50bとのいずれに含まれてもよい。コンピュータ50bが符号化部100aを含み、コンピュータ50aが伸張部100bを含んでもよいし、コンピュータ50aが符号化部100aを含み、コンピュータ50bが伸張部100bを含んでもよい。また、コンピュータ50aとコンピュータ50bとの双方が、符号化部100aおよび伸張部100bを備えてもよい。
【0156】
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。符号化処理の対象は、ファイル内のデータ以外にも、システムから出力される監視メッセージなどでもよい。例えば、バッファに順次格納される監視メッセージを上述の符号化処理により符号化し、ログファイルとして格納するなどの処理が行なわれる。また、例えば、データベース内のページ単位に符号化が行なわれてもよいし、複数のページをまとめた単位で符号化が行なわれてもよい。
【0157】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0158】
(付記1)コンピュータに、
テキストデータを複数の動的辞書を用いて符号化する際に、前記テキストデータに含まれる単語に対し、当該単語の属性情報に基づき前記複数の動的辞書から第1の動的辞書を特定し、
前記単語および前記単語に対応して生成された動的符号を前記第1の動的辞書に登録し、
前記単語を前記動的符号を用いて符号化する
処理を実行させる符号化プログラム。
【0159】
(付記2)前記属性情報は、前記テキストデータに含まれる単語の位置情報であることを特徴とする付記1に記載の符号化プログラム。
【0160】
(付記3)前記テキストデータは階層構造を有する文書であり、前記位置情報は前記階層構造における位置情報であることを特徴とする付記2に記載の符号化プログラム。
【0161】
(付記4)前記属性情報は、前記テキストデータに用いられる言語における、特定の単語の種別情報であることを特徴とする付記1に記載の符号化プログラム。
【0162】
(付記5)前記テキストデータはデリミタで複数の列に区切られており、前記位置情報は、複数の列の内、単語の位置する列情報であることを特徴とする付記2に記載の符号化プログラム。
【0163】
(付記6)コンピュータが実行する符号化方法であって、
テキストデータを複数の動的辞書を用いて符号化する際に、前記テキストデータに含まれる単語に対し、当該単語の属性情報に基づき前記複数の動的辞書から第1の動的辞書を特定し、
前記単語および前記単語に対応して生成された動的符号を前記第1の動的辞書に登録し、
前記単語を前記動的符号を用いて符号化する
処理を実行する符号化方法。
【0164】
(付記7)前記属性情報は、前記テキストデータに含まれる単語の位置情報であることを特徴とする付記6に記載の符号化方法。
【0165】
(付記8)前記テキストデータは階層構造を有する文書であり、前記位置情報は前記階層構造における位置情報であることを特徴とする付記7に記載の符号化方法。
【0166】
(付記9)前記属性情報は、前記テキストデータに用いられる言語における、特定の単語の種別情報であることを特徴とする付記6に記載の符号化方法。
【0167】
(付記10)前記テキストデータはデリミタで複数の列に区切られており、前記位置情報は、複数の列の内、単語の位置する列情報であることを特徴とする付記7に記載の符号化方法。
【0168】
(付記11)テキストデータを複数の動的辞書を用いて符号化する際に、前記テキストデータに含まれる単語に対し、当該単語の属性情報に基づき前記複数の動的辞書から第1の動的辞書を特定し、前記単語および前記単語に対応して生成された動的符号を前記第1の動的辞書に登録する登録部と、
前記単語を前記動的符号を用いて符号化する符号化部と
を有することを特徴とする符号化装置。
【0169】
(付記12)前記属性情報は、前記テキストデータに含まれる単語の位置情報であることを特徴とする付記11に記載の符号化装置。
【0170】
(付記13)前記テキストデータは階層構造を有する文書であり、前記位置情報は前記階層構造における位置情報であることを特徴とする付記12に記載の符号化装置。
【0171】
(付記14)前記属性情報は、前記テキストデータに用いられる言語における、特定の単語の種別情報であることを特徴とする付記11に記載の符号化装置。
【0172】
(付記15)前記テキストデータはデリミタで複数の列に区切られており、前記位置情報は、複数の列の内、単語の位置する列情報であることを特徴とする付記12に記載の符号化装置。
【符号の説明】
【0173】
100,300 情報処理装置
100a,300a 符号化部
100b,300b 伸長部
100c,300c 記憶部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21