(57)【特許請求の範囲】
【請求項１】
コンピュータに、
入力データから単語単位に各単語を抽出し、
抽出した単語が、所定の単語について単語と当該単語に対応する符号とを対応付けて記憶した第１の辞書であって、前記コンピュータが有する前記第１の辞書に登録されている場合、抽出した単語を前記第１の辞書に登録された当該単語に対応付けられた符号に置換し、抽出した単語が前記第１の辞書に登録されていない場合、抽出した単語に新たな符号を割り当てて、当該単語と割り当てた符号と予備情報とを対応付けて動的辞書に格納するとともに、当該単語を前記割り当てた符号に置換し、前記動的辞書に格納された単語が、前記第１の辞書に未登録の単語と当該単語に対応する符号とを対応付けて記憶した第２の辞書であって、前記コンピュータが有する前記第２の辞書に登録されている場合、前記第２の辞書の前記動的辞書に格納された単語に対応する符号を前記予備情報の領域に格納し、
置換された符号および前記動的辞書を含んだ圧縮データを生成する
処理を実行させることを特徴とする圧縮プログラム。  
【請求項２】
コンピュータが、
入力データから単語単位に各単語を抽出し、
抽出した単語が、所定の単語について単語と当該単語に対応する符号とを対応付けて記憶した第１の辞書であって、前記コンピュータが有する前記第１の辞書に登録されている場合、抽出した単語を前記第１の辞書に登録された当該単語に対応付けられた符号に置換し、抽出した単語が前記第１の辞書に登録されていない場合、抽出した単語に新たな符号を割り当てて、当該単語と割り当てた符号と予備情報とを対応付けて動的辞書に格納するとともに、当該単語を前記割り当てた符号に置換し、前記動的辞書に格納された単語が、前記第１の辞書に未登録の単語と当該単語に対応する符号とを対応付けて記憶した第２の辞書であって、前記コンピュータが有する前記第２の辞書に登録されている場合、前記第２の辞書の前記動的辞書に格納された単語に対応する符号を前記予備情報の領域に格納し、
置換された符号および前記動的辞書を含んだ圧縮データを生成する
処理を実行することを特徴とする圧縮方法。  
【請求項３】
入力データから単語単位に各単語を抽出する抽出部と、
所定の単語について単語と当該単語に対応する符号とを対応付けて記憶した第１の辞書、および、前記第１の辞書に未登録の単語と当該単語に対応する符号とを対応付けて記憶した第２の辞書を記憶する記憶部と、
前記抽出部により抽出した単語が、前記第１の辞書に登録されている場合、抽出した単語を前記第１の辞書に登録された当該単語に対応付けられた符号に置換し、抽出した単語が前記第１の辞書に登録されていない場合、抽出した単語に新たな符号を割り当てて、当該単語と割り当てた符号と予備情報とを対応付けて動的辞書に格納するとともに、当該単語を前記割り当てた符号に置換し、前記動的辞書に格納された単語が、前記第２の辞書に登録されている場合、前記第２の辞書の前記動的辞書に格納された単語に対応する符号を前記予備情報の領域に格納する置換部と、
前記置換部により置換された符号および前記動的辞書を含んだ圧縮データを生成する生成部と、
を有することを特徴とする情報処理装置。  
【請求項４】
第１のコンピュータに、
第２のコンピュータが有する第１の辞書に登録されていない文字列が第１の符号に置換され、前記文字列と前記第１の符号と予備情報とを対応付けて格納した動的辞書を含んだ圧縮データの前記動的辞書の前記文字列が、前記第１の辞書に未登録の文字列と当該文字列に対応する符号とを対応付けて記憶した第２の辞書であって、前記第１のコンピュータが有する前記第２の辞書に登録されているか判定し、
前記動的辞書の前記文字列が前記第２の辞書に登録されている場合、前記動的辞書の予備情報の領域に、前記第２の辞書の前記文字列に対応する第２の符号を格納する
処理を実行させることを特徴とする置換プログラム。  
【請求項５】
第１のコンピュータが、
第２のコンピュータが有する第１の辞書に登録されていない文字列が第１の符号に置換され、前記文字列と前記第１の符号と予備情報とを対応付けて格納した動的辞書を含んだ圧縮データの前記動的辞書の前記文字列が、前記第１の辞書に未登録の文字列と当該文字列に対応する符号とを対応付けて記憶した第２の辞書であって、前記第１のコンピュータが有する前記第２の辞書に登録されているか判定し、
前記動的辞書の前記文字列が前記第２の辞書に登録されている場合、前記動的辞書の予備情報の領域に、前記第２の辞書の前記文字列に対応する第２の符号を格納する
処理を実行することを特徴とする置換方法。  
【請求項６】
他のコンピュータが有する第１の辞書に登録されていない文字列が第１の符号に置換され、前記文字列と前記第１の符号と予備情報とを対応付けて格納した動的辞書を含んだ圧縮データの前記動的辞書の前記文字列が、前記第１の辞書に未登録の文字列と当該文字列に対応する符号とを対応付けて記憶した第２の辞書であって、記憶部に記憶された前記第２の辞書に登録されているか判定する判定部と、
前記判定部による判定の結果、前記動的辞書の前記文字列が前記第２の辞書に登録されている場合、前記動的辞書の予備情報の領域に、前記第２の辞書の前記文字列に対応する第２の符号を格納する格納部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法に関する。
【背景技術】
【０００２】
辞書を用いてテキストデータを圧縮する技術がある。例えば、圧縮処理を行うコンピュータが有する辞書に合致した単語に対しては、辞書において予め対応づけられたコードに置換する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１８１６４１号公報
【特許文献２】特開２０００−２０１０８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
まず、圧縮処理を行うコンピュータが有する辞書は、保持する単語数が有限であるため、辞書に未登録な単語が圧縮対象のテキストデータに出現する場合がある。また、コンピュータの規模によって保持する単語数が異なる場合がある。例えば、携帯電話やスマートフォンなど端末装置では、記憶容量を抑えるため、データ量の小さい辞書が用いられる。一方、クラウドシステムなどのサーバコンピュータは、例えば、データマイニングなどを行うため、多様な情報を保持した大規模な辞書が用いられる。このように、端末装置とクラウドシステムでは、辞書が保持する単語数が異なる場合がある。
【０００５】
一方、圧縮処理された圧縮データの伸長処理は、圧縮処理を行ったコンピュータと同一のコンピュータで行われるとは限らない。このため、圧縮処理に用いられる辞書は、伸長処理が可能な全てのコンピュータで利用可能な辞書に制限される。例えば、クラウドシステムでは、端末装置でも伸長可能なようにデータを圧縮する場合、大規模な辞書を利用可能な場合でも、端末装置で利用可能な辞書を用いてデータを圧縮する。これにより、圧縮された圧縮データは、端末装置でも伸長できる。しかし、大規模な辞書を有する他のコンピュータでは、このような圧縮データを有効に活用できない。
【０００６】
一つの側面では、圧縮データをより有効に活用させることができる圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、圧縮プログラムは、コンピュータに、入力データのうち、コンピュータが有する第１の辞書に登録されている第１の文字列を当該第１の文字列に対応付けられた第１の符号に置換する処理を実行させる。圧縮プログラムは、コンピュータに、入力データのうち、第１の辞書に登録されていない第２の文字列に第２の符号を割り当てて、当該第２の文字列と当該第２の符号と予備情報とを対応付けて動的辞書に格納するとともに、当該第２の文字列を前記第２の符号に置換する処理を実行させる。圧縮プログラムは、コンピュータに、置換された符号および前記動的辞書を含んだ圧縮データを生成する処理を実行させる。
【発明の効果】
【０００８】
本発明の１実施態様によれば、圧縮データをより有効に活用させることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、圧縮処理の流れを概略的に示した図である。
【図２】図２は、置換検索の流れを概略的に示した図である。
【図３】図３は、端末装置の構成の一例を示す図である。
【図４Ａ】図４Ａは、静的辞書のビットフィルタ部のデータ構成の一例を示す図である。
【図４Ｂ】図４Ｂは、静的辞書の辞書部のデータ構成の一例を示す図である。
【図４Ｃ】図４Ｃは、静的辞書のデータ構成を概念的に示した図である。
【図５】図５は、復号辞書のデータ構成の一例を示す図である。
【図６Ａ】図６Ａは、動的辞書の動的ビットフィルタ部のデータ構成の一例を示す図である。
【図６Ｂ】図６Ｂは、動的辞書のポインタ部のデータ構成の一例を示す図である。
【図６Ｃ】図６Ｃは、動的辞書のバッファ部のデータ構成の一例を示す図である。
【図７Ａ】図７Ａは、低頻度単語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。
【図７Ｂ】図７Ｂは、未知語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。
【図８Ａ】図８Ａは、高頻度単語を圧縮する流れを概略的に示した図である。
【図８Ｂ】図８Ｂは、低頻度単語を圧縮する流れを概略的に示した図である。
【図８Ｃ】図８Ｃは、未知語を圧縮する流れを概略的に示した図である。
【図９】図９は、サーバ装置の構成の一例を示す図である。
【図１０Ａ】図１０Ａは、高頻度単語を復号化する流れを概略的に示した図である。
【図１０Ｂ】図１０Ｂは、低頻度単語を復号化する流れを概略的に示した図である。
【図１０Ｃ】図１０Ｃは、未知語を復号化する流れを概略的に示した図である。
【図１１】図１１は、圧縮処理の手順の一例を示すフローチャートである。
【図１２】図１２は、置換処理の手順の一例を示すフローチャートである。
【図１３】図１３は、復号処理の手順の一例を示すフローチャートである。
【図１４】図１４は、圧縮処理の流れを概略的に示した図である。
【図１５】図１５は、圧縮プログラムを実行するコンピュータの一例を示す図である。
【図１６】図１６は、置換プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する圧縮プログラム、圧縮方法、情報処理装置、置換プログラムおよび置換方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの権利範囲が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
［圧縮処理］
最初に、図１を用いて圧縮処理の概要について説明する。図１は、圧縮処理の流れを概略的に示した図である。以下では、携帯電話やスマートフォンなど端末装置１０が圧縮処理の対象である圧縮対象ファイル３２に含まれる「…a  pen…Mickey…」を圧縮する場合を例に説明する。
【００１２】
圧縮対象ファイル３２の圧縮を行う場合、端末装置１０の圧縮部４０は、圧縮対象ファイル３２に含まれる文書から単語単位に、それぞれの単語を読み出す（図１（１））。図１の例では、「a」、「pen」、「Mickey」を読み出す。そして、圧縮部４０は、取得した単語を静的辞書３４と照合する（図１（２））。
【００１３】
静的辞書３４は、単語毎の圧縮符号を記憶した圧縮用の辞書である。静的辞書３４の詳細な構成は、後述する。静的辞書３４は、出現頻度の高い高頻度単語については圧縮符号が登録されている。例えば、一般的な文章で出現頻度の高い冠詞や動詞、名詞などの一般的な単語は、高頻度単語として静的辞書３４に登録される。一方、専門的な用語や地名、名前などの固有名詞は、出現頻度の低い未知語として静的辞書３４に登録されない。図１の例では、「a」および「pen」を高頻度単語とし、「Mickey」を未知語とする。静的辞書３４は、登録された単語には、単語を識別する一意の基本コードが定められており、高頻度単語については圧縮符号が登録されている。静的辞書３４は、「a」および「pen」の基本コードおよび圧縮符号が登録され、「Mickey」の基本コードおよび圧縮符号が未登録とする。例えば、静的辞書３４には、「a」に対応して、基本コード「A00001h」および圧縮符号「4000h」が登録され、「pen」に対応して基本コード「A02000h」および圧縮符号「4AAAh」が登録されている。基本コードおよび圧縮符号の最後に付した「h」は、コードが１６進数で表記されていることを示す符号である。
【００１４】
圧縮部４０は、照合の結果、照合した単語に対応する圧縮符号が静的辞書３４に登録されている場合、照合した単語の圧縮符号を静的辞書３４から取得する。そして、圧縮部４０は、照合した単語を圧縮符号に変換して圧縮ファイル３３に出力する（図１（３））。図１の例では、「a」は、静的辞書３４に登録されている。圧縮部４０は、「a」を圧縮符号「4000h」に変換して圧縮ファイル３３に出力する。
【００１５】
一方、圧縮部４０は、照合の結果、照合した単語に対応する圧縮符号が静的辞書３４に登録されていない場合、照合した単語に新たな圧縮符号を割り当てる。そして、圧縮部４０は、照合した単語と、割り当てた新たな圧縮符号と、予備符号を動的辞書３１に登録する（図１（４））。ここで、動的辞書３１は、ポインタ部３１Ｂと、バッファ部３１Ｃとを有する。動的辞書３１の詳細な構成は、後述する。ポインタ部３１Ｂは、圧縮符号を記憶する「圧縮符号」の領域と、ポインタを記憶する「ポインタ」の領域と、予備符号を記憶する「予備符号」の領域とを有する。登録された単語はバッファ部３１Ｃに格納される。ポインタ部３１Ｂの「圧縮符号」の領域には、割り当てられた新たな圧縮符号が格納される。「予備符号」の領域には、予備符号が格納される。「ポインタ」の領域には、バッファ部３１Ｃでの単語の記憶位置を示すポインタが格納される。図１の例では、圧縮部４０は、「Mickey」に圧縮符号「A001h」を割り当てる。圧縮部４０は、バッファ部３１Ｃに「Mickey」を格納する。また、圧縮部４０は、ポインタ部３１Ｂの「圧縮符号」の領域に「A001h」を格納し、バッファ部３１Ｃでの「Mickey」の記憶位置を示すポインタを「ポインタ」の領域に格納し、予備符号が未設定であることを示す「000000h」を「予備符号」の領域に格納する。そして、圧縮部４０は、照合した単語を割り当てた圧縮符号に変換して圧縮ファイル３３に出力する（図１（５））。図１の例では、「Mickey」を圧縮符号「A001h」に変換して圧縮ファイル３３に出力する。
【００１６】
圧縮部４０は、圧縮対象ファイル３２に含まれる文書の単語単位の圧縮が完了すると、圧縮ファイル３３のトレーラに動的辞書３１を格納する（図１（６））。
【００１７】
［置換処理］
次に、図２を用いて置換処理の概要について説明する。図２は、置換検索の流れを概略的に示した図である。以下では、クラウドシステムなどでのサーバ装置１１が受信した圧縮ファイル３３に対して予備符号の置換を行う場合を例に説明する。
【００１８】
サーバ装置１１は、単語毎の圧縮符号を記憶した大規模辞書７０を記憶する。この大規模辞書７０は、図１に示した静的辞書３４よりも多くの単語について各種の情報が登録されている。例えば、大規模辞書７０には、図１に示した静的辞書３４よりも多くの単語について基本コードが定められており、高頻度単語については圧縮符号が登録されている。また、大規模辞書７０には、各単語の品詞が登録されている。この大規模辞書７０は、１つの辞書であってもよく、複数の辞書により構成されてもよい。例えば、大規模辞書７０は、静的辞書３４を含む複数の辞書により構成されている。大規模辞書７０には、「a」に対応して基本コード「A00001h」、圧縮符号「4000h」及び品詞「冠詞」が登録されている。大規模辞書７０には、「pen」に対応して「A02000h」、圧縮符号「4AAAh」および品詞「一般名詞」が登録されている。大規模辞書７０には、「Mickey」に対応して基本コード「AFFFFFh」および品詞「固有名詞」が登録されている。
【００１９】
図２の例では、サーバ装置１１の置換部５２が、圧縮ファイル３３のトレーラから動的辞書３１を読み出す（図２（１））。置換部５２は、動的辞書３１に登録された単語を参照して、動的辞書３１に登録された単語が大規模辞書７０に登録されているか判定する（図２（２））。置換部５２は、動的辞書３１に登録された単語が大規模辞書７０に登録されている場合、動的辞書３１の単語に対応する予備符号を、大規模辞書７０の当該単語に対応する基本コードに置換する（図２（３））。図２の例では、大規模辞書７０に「Mickey」に対応して「AFFFFFh」が登録されている。置換部５２は、「Mickey」の圧縮符号「A001h」に対応する予備符号領域を「AFFFFFh」に置換する。
【００２０】
これにより、サーバ装置１１では、圧縮ファイル３３を圧縮した状態のまま、圧縮ファイル３３に含まれる未知語と大規模辞書７０を関連付けることができ、未知語が何れの単語であるかや、単語の品詞を特定できる。サーバ装置１１では、圧縮ファイル３３に圧縮された圧縮データに対して、未知語を含めてデータマイニングなど各種の処理を行うことができ、圧縮ファイル３３に圧縮された圧縮データをより有効に活用させることができる。また、圧縮ファイル３３は、未登録の文字列が登録されているため、標準辞書３０のみを有する第２の端末装置でも復号化できる。また、動的辞書３１の単語に対応する予備符号を、大規模辞書７０の当該単語に対応する基本コードに置換することにより、大規模辞書７０を有する第２のクラウドシステムでは、圧縮ファイル３３に含まれる未知語と大規模辞書７０を関連付けることができ、未知語を含めてデータマイニングなど各種の処理を行うことができる。
【００２１】
［装置構成］
次に、各装置の構成について説明する。最初に、端末装置１０の構成について説明する。図３は、端末装置の構成の一例を示す図である。端末装置１０は、圧縮対象ファイル３２の圧縮などの符号化を行う装置である。端末装置１０は、例えば、携帯電話、スマートフォン、タブレット端末、パーソナルコンピュータなどの情報処理装置である。図３に示すように、端末装置１０は、記憶部２０と、制御部２１とを有する。なお、端末装置１０は、情報処理装置が有する上記の機器以外の他の機器を有してもよい。
【００２２】
記憶部２０は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部２０は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。
【００２３】
記憶部２０は、制御部２１で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部２０は、後述する圧縮処理を行うプログラムを記憶する。さらに、記憶部２０は、制御部２１で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部２０は、標準辞書３０と、動的辞書３１と、圧縮対象ファイル３２と、圧縮ファイル３３とを記憶する。
【００２４】
標準辞書３０は、データの圧縮および復号化に用いる辞書のデータである。標準辞書３０は、静的辞書３４と、復号辞書３５とを有する。
【００２５】
静的辞書３４は、単語と圧縮符号を対応付ける変換情報を保持したデータである。静的辞書３４は、データを圧縮する際に使用される。静的辞書３４は、ビットフィルタ部３４Ａと、辞書部３４Ｂとを有する。
【００２６】
図４Ａ〜４Ｃを用いて、静的辞書３４のデータ構成について説明する。図４Ａは、静的辞書のビットフィルタ部のデータ構成の一例を示す図である。ビットフィルタ部３４Ａは、「２グラム」、「ビットマップ」、「ポインタ」の各項目を有する。
【００２７】
「２グラム」の項目は、各単語に含まれる２グラム文字を記憶する領域である。例えば、図４Ａに示すように、「able」は、「ab」「bl」「le」に対応する２グラム文字を含む。「ビットマップ」の項目は、単語内で２グラム文字が含まれる位置を表すビット列を記憶する領域である。例えば、２グラム「ab」のビットマップが「１＿０＿０＿０＿０」の場合、ビットマップは単語の先頭２文字が「ab」であることを表す。「ポインタ」は、ビットマップに該当する単語が記憶された辞書部３４Ｂの記憶位置を示すポインタを記憶する領域である。ビットマップは、ポインタによってそれぞれ単語に対応付けられる。
【００２８】
図４Ｂは、静的辞書の辞書部のデータ構成の一例を示す図である。辞書部３４Ｂは、「基礎単語」、「文字列長」、「出現回数」、「符号長」、「静的コード」、「動的コード」、「基本コード」の各項目を有する。
【００２９】
「基礎単語」の項目は、基礎単語として予め登録された単語を記憶する領域である。例えば、図４Ｂに示す静的辞書３４の辞書部３４Ｂでは、所定の母集団から抽出した各単語が、それぞれ基礎単語として登録されている。例えば、辞書などに登録された約１９万語の単語が基礎単語として登録される。「文字列長」の項目は、基礎単語として予め登録された単語の文字列の長さを示すバイト数を記憶する領域である。「出現回数」の項目は、所定の母集団での単語の出現回数を記憶する領域である。「符号長」の項目は、単語に割り当てた圧縮符号の長さを示すビット数を記憶する領域である。「静的コード」の項目は、単語に予め割り当てられた圧縮符号を記憶する領域である。
【００３０】
ここで、本実施例では、静的辞書３４の辞書部３４Ｂに登録する基礎単語を、出現頻度が相対的に高い高頻度単語と、出現頻度が相対的に低い低頻度単語とに分けている。本実施例では、出現頻度の高い順に８１９２位までの基礎単語を高頻度単語とし、８１９３位以降の基礎単語を低頻度単語としている。高頻度単語については、短い圧縮符号を予め割り当てて、割り当てた圧縮符号を「静的コード」の項目に予め記憶させる。低頻度単語については、出現した際に圧縮符号を動的に割り当てて、割り当てた圧縮符号を「動的コード」の項目に予め記憶させる。例えば、高頻度単語については、予め２バイト（１６ビット）の圧縮符号を割り当て、割り当てた圧縮符号を「静的コード」の項目に予め記憶させる。低頻度単語については、出現した際に３バイト（２４ビット）の圧縮符号を動的に割り当てて、割り当てた圧縮符号を「動的コード」の項目に予め記憶させる。すなわち、圧縮符号は、高頻度単語については予め登録され、低頻度単語については初期状態では未登録とされている。
【００３１】
図４Ｃは、静的辞書のデータ構成を概念的に示した図である。静的辞書３４は、ビットフィルタ部３４Ａと辞書部３４Ｂとがポインタによって対応付けられており、図４Ｃのようなデータ構成として示すことができる。
【００３２】
図３に戻り、復号辞書３５は、単語と、圧縮符号を対応付ける変換情報を保持したデータである。復号辞書３５は、圧縮されたデータを復号化する際に使用される。
【００３３】
図５は、復号辞書のデータ構成の一例を示す図である。復号辞書３５は、「静的コード」「文字列長」、「文字列」の各項目を有する。
【００３４】
「静的コード」の項目は、単語に予め割り当てられた圧縮符号を記憶する領域である。「文字列長」の項目は、圧縮符号に対応する単語の文字列長を記憶する領域である。「文字列」の項目は、圧縮符号に対応する単語の文字列を記憶する領域である。復号辞書３５には、高頻度単語について、割り当てられた圧縮符号が「静的コード」の項目に記憶され、単語の文字列長が「文字列長」の項目に記憶され、単語の文字列が「文字列」の項目に記憶されている。また、復号辞書３５には、低頻度単語について、基礎コードが「静的コード」の項目に記憶され、単語の文字列長が「文字列長」の項目に記憶され、単語の文字列が「文字列」の項目に記憶されている。
【００３５】
図３に戻り、動的辞書３１は、動的に割り当てられた圧縮符号に関する各種の情報を保持したデータである。本実施例では、静的辞書３４に登録された基礎単語のうち、出現頻度の低い低頻度単語と、基礎単語に無い単語や文字列などの未知語とに動的に圧縮符号が割り当てられる。動的辞書３１には、低頻度単語や未知語などの単語に動的に割り当てられた圧縮符号が記憶される。動的辞書３１は、動的ビットフィルタ部３１Ａと、ポインタ部３１Ｂと、バッファ部３１Ｃを有する。
【００３６】
図６Ａ〜６Ｃを用いて、動的辞書３１のデータ構成について説明する。図６Ａは、動的辞書の動的ビットフィルタ部のデータ構成の一例を示す図である。動的ビットフィルタ部３１Ａは、「２グラム」、「ビットマップ」、「ポインタ」の各項目を有する。
【００３７】
「２グラム」の項目は、単語に含まれる２グラム文字を記憶する領域である。「ビットマップ」の項目は、単語内で２グラム文字が含まれる位置を表すビット列を記憶する領域である。「ポインタ」は、ビットマップに該当する単語に対して割り当てられた圧縮符号が記憶されたポインタ部３１Ｂの記憶位置を示すポインタを記憶する領域である。単語は、ポインタによってそれぞれ圧縮符号に対応付けられる。
【００３８】
図６Ｂは、動的辞書のポインタ部のデータ構成の一例を示す図である。ポインタ部３１Ｂは、「動的コード」、「種別」、「ポインタ」、「長さ」、「予備符号」の各項目を有する。
【００３９】
「動的コード」の項目は、動的に割り当てられた圧縮符号を記憶する領域である。「種別」の項目は、圧縮符号が割り当てられた単語の種別を記憶する領域である。本実施例では、種別「１」を低頻度単語、種別「２」を未知語としている。「種別」の項目には、圧縮符号が割り当てられた単語が低頻度単語の場合、「１」が格納され、圧縮符号が割り当てられた単語が未知単語の場合、「２」が格納される。「ポインタ」の項目は、圧縮符号が割り当てられた単語が記憶されたバッファ部３１Ｃの記憶位置を示すポインタを記憶する領域である。圧縮符号は、ポインタによってそれぞれ圧縮符号が割り当てられた単語に対応付けられる。「長さ」の項目は、圧縮符号が割り当てられた単語の長さを記憶する領域である。「予備符号」の項目は、圧縮符号が割り当てられた単語に対応付ける予備符号を記憶する領域である。ここで、本実施例では、動的辞書３１に「予備符号」の項目を設けて、圧縮符号に対して予備符号を対応付けることを可能としている。
【００４０】
図６Ｃは、動的辞書のバッファ部のデータ構成の一例を示す図である。バッファ部３１Ｃは、動的に圧縮符号が割り当てられた単語に関する情報が記憶される。例えば、バッファ部３１Ｃには、動的に圧縮符号が割り当てられた単語が低頻度単語の場合、当該単語の基本コードが記憶され、動的に圧縮符号が割り当てられた単語が未知語の場合、未知語の文字列が記憶される。
【００４１】
ここで、単語に対して動的に割り当てられた圧縮符号を動的辞書３１に登録した状態の一例を示す。図７Ａは、低頻度単語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。図７Ａの例は、図４Ｃに示す基本コード「A0002Ch」の単語「Abject」に動的に割り当てられた圧縮符号「A000h」を登録した状態を示す。バッファ部３１Ｃには、基本コード「A0002Ch」が登録されている。ポインタ部３１Ｂには、「動的コード」の項目に、割り当てられた圧縮符号「A000h」が登録され、「種別」の項目に、種別「１」が登録され、「ポインタ」の項目に基本コード「A0002Ch」の位置を示すポインタが登録される。また、ポインタ部３１Ｂには、「長さ」の項目に、基本コード「A0002Ch」の長さ「３」バイトが登録され、「予備符号」の項目に予備符号が未登録であることを示す初期値「000000h」が登録される。
【００４２】
図７Ｂは、未知語に動的に割り当てられた圧縮符号を動的辞書に登録した状態の一例を示す図である。図７Ｂの例は、未知語である文字列「Mickey」に動的に割り当てられた圧縮符号「A001h」を登録した状態を示す。バッファ部３１Ｃには、文字列「Mickey」が登録されている。ポインタ部３１Ｂには、「動的コード」の項目に、割り当てられた圧縮符号「A001h」が登録され、「種別」の項目に、種別「２」が登録され、「ポインタ」の項目に文字列「Mickey」の位置を示すポインタが登録される。また、ポインタ部３１Ｂには、「長さ」の項目に、文字列「Mickey」の長さ「６」バイトが登録され、「予備符号」の項目に予備符号が未登録であることを示す初期値「000000h」が登録される。また、動的ビットフィルタ部３１Ａには、文字列「Mickey」に含まれる２グラム文字のレコードの「ポインタ」の項目に、圧縮符号「A001h」へのポインタが登録される。
【００４３】
図３に戻り、圧縮対象ファイル３２は、圧縮対象のテキストデータが記憶されたファイルである。圧縮ファイル３３は、圧縮対象ファイル３２を圧縮処理したデータである。
【００４４】
制御部２１は、端末装置１０を制御するデバイスである。制御部２１としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２１は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２１は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２１は、圧縮部４０を有する。
【００４５】
圧縮部４０は、圧縮対象ファイル３２から単語を抽出し、単語単位に圧縮符号を対応させた圧縮ファイル３３を生成する。圧縮部４０は、抽出部５０と、判定部５１と、置換部５２と、生成部５３とを有する。
【００４６】
抽出部５０は、圧縮対象ファイル３２の単語単位に文字列の抽出を行う。例えば、抽出部５０は、圧縮対象ファイル３２から文字列を順に読み出し、読み出した文字列から単語を抽出する。例えば、英語ように、文章の単語がスペースなどの所定の区切り文字で区切られる場合、抽出部５０は、圧縮対象ファイル３２の文字列を読み出し、文字列中の区切り文字によって文字列を単語毎に区切ることで、文字列から各単語を抽出する。一方、例えば、日本語ように、文章の単語が特定の区切り文字で区切られていない場合、抽出部５０は、圧縮対象ファイル３２の文字列を読み出を行う。そして、抽出部５０は、読み出した文字列に形態素解析、構文解析など、文章の言語に応じた自然言語処理を行うことで、文字列から各単語を抽出する。
【００４７】
判定部５１は、抽出部５０により抽出された単語に対して各種の判定を行う。例えば、判定部５１は、抽出された単語が、高頻度単語、低頻度単語、未知語の何れかであるか判定する。例えば、判定部５１は、抽出された単語を静的辞書３４と照合する。判定部５１は、照合の結果、抽出された単語が静的辞書３４の何れにも該当しない場合、抽出された単語を未知語と判定する。すなわち、判定部５１は、抽出された単語が静的辞書３４に登録されていない場合、抽出された単語を未知語と判定する。一方、判定部５１は、照合の結果、抽出された単語が静的辞書３４の何れかに該当する場合、辞書部３４Ｂから該当するレコードの「静的コード」、「動的コード」の項目のデータを取得する。判定部５１は、「静的コード」の項目に圧縮符号が格納されている場合、抽出された単語を高頻度単語と判定する。判定部５１は、「静的コード」の項目に圧縮符号が格納されていない場合、抽出された単語を低頻度単語と判定する。判定部５１は、抽出された単語が低頻度単語である場合、「動的コード」の項目のデータを確認する。判定部５１は、「動的コード」の項目に圧縮符号が格納されている場合、抽出された単語が動的辞書３１に登録済みの低頻度単語と判定する。一方、判定部５１は、「動的コード」の項目に圧縮符号が格納されていない場合、抽出された単語が動的辞書３１に未登録の低頻度単語と判定する。
【００４８】
置換部５２は、抽出部５０により抽出された単語を圧縮符号に置換する。例えば、置換部５２は、抽出された単語に対応する圧縮符号が静的辞書３４に登録されている場合、抽出された単語に対応する圧縮符号を特定する。例えば、置換部５２は、抽出された単語が高頻度単語である場合、「静的コード」の項目に格納された圧縮符号を、単語に対応する圧縮符号と特定する。また、置換部５２は、抽出された単語が動的辞書３１に登録済みの低頻度単語である場合、「動的コード」の項目に格納された圧縮符号を、抽出された単語に対応する圧縮符号と特定する。そして、置換部５２は、特定された単語に対応する圧縮符号を生成部５３へ出力する。
【００４９】
一方、置換部５２は、抽出された単語が未知語である場合、動的辞書３１と照合する。置換部５２は、動的辞書３１の動的ビットフィルタ部３１Ａと抽出された未知語を照合して該当するポインタを求め、未知語が登録されているか否かを判定する。判定部５１は、照合の結果、抽出された未知語が動的辞書３１に登録されている場合、未知語を登録済みの圧縮符号に置換する。例えば、置換部５２は、ポインタ部３１Ｂの「動的コード」の項目に格納された圧縮符号を、未知語に対応する圧縮符号と特定する。置換部５２は、特定された未知語に対応する圧縮符号を生成部５３へ出力する。
【００５０】
一方、置換部５２は、抽出された単語が動的辞書３１に未登録の未知語である場合、または、抽出された単語が動的辞書３１に未登録の低頻度単語である場合、抽出された単語に新たな圧縮符号を割り当てる。例えば、置換部５２は、所定の範囲で１ビットずつ増加させるなど、予め定められた割当規則に従い、抽出された単語に新たな圧縮符号を割り当てる。本実施例では、置換部５２は、抽出された単語に対して、新規の３バイトの圧縮符号を動的に割り当てる。そして、置換部５２は、抽出された単語を、割り当てられた圧縮符号に置換する。例えば、置換部５２は、抽出された単語に対応して割り当てられた圧縮符号を生成部５３へ出力する。また、置換部５２は、抽出された単語と、動的に割り当てた圧縮符号と、予備符号用の領域とを対応付けて動的辞書３１に格納する。例えば、抽出された単語が動的辞書３１に未登録の低頻度単語である場合、置換部５２は、図７Ａに示したように、抽出された単語の基本コードをバッファ部３１Ｃに登録する。置換部５２は、ポインタ部３１Ｂの「動的コード」の項目に、割り当てられた圧縮符号を登録し、「種別」の項目に「１」を登録し、バッファ部３１Ｃに格納した基本コードの位置を示すポインタを「ポインタ」の項目に登録する。置換部５２は、ポインタ部３１Ｂの「長さ」の項目に、基本コードの長さを登録し、「予備符号」の項目に初期値「000000h」を登録する。さらに、置換部５２は、静的辞書３４の抽出された単語のレコードの「動的コード」の項目に割り当てられた圧縮符号を登録する。一方、例えば、抽出された単語が動的辞書３１に未登録の未知語である場合、置換部５２は、図７Ｂに示したように、抽出された単語の文字列をバッファ部３１Ｃに登録する。置換部５２は、ポインタ部３１Ｂの「動的コード」の項目に、割り当てられた圧縮符号を登録し、「種別」の項目に「２」を登録し、バッファ部３１Ｃに格納した単語の文字列の位置を示すポインタを「ポインタ」の項目に登録する。置換部５２は、バッファ部３１Ｃに格納した単語の文字列の長さをポインタ部３１Ｂの「長さ」の項目に登録し、「予備符号」の項目に初期値「000000h」を登録する。置換部５２は、バッファ部３１Ｃに格納した単語の文字列に対応する動的ビットフィルタ部３１Ａに２グラム文字のレコードの「ポインタ」の項目に、割り当てられた圧縮符号へのポインタを登録する。
【００５１】
生成部５３は、置換部５２により置換された圧縮符号を用いて、圧縮対象ファイル３２を圧縮した圧縮ファイル３３を生成する。例えば、生成部５３は、圧縮対象ファイル３２から単語単位で読み出され、置換部５２から出力された圧縮符号を順に圧縮ファイル３３に順に格納し、全単語の圧縮符号の格納後に、動的辞書３１を圧縮ファイル３３に格納して圧縮ファイル３３を生成する。
【００５２】
ここで、高頻度単語、低頻度単語、未知語を圧縮する流れを説明する。図８Ａは、高頻度単語を圧縮する流れを概略的に示した図である。図８Ａの例は、抽出部５０が、圧縮対象ファイル３２から「a」を抽出した場合を示している。判定部５１は、「a」を静的辞書３４と照合し、「a」が高頻度単語、低頻度単語、未知語の何れかであるか判定する。「a」は「静的コード」の項目に圧縮符号が登録されている。このため、「a」は、高頻度単語と判定される。置換部５２は、「a」を「静的コード」の項目に圧縮符号「4000h」に置換する。生成部５３は、圧縮符号「4000h」を圧縮ファイル３３に格納する。
【００５３】
図８Ｂは、低頻度単語を圧縮する流れを概略的に示した図である。図８Ｂの例は、抽出部５０が、圧縮対象ファイル３２から「abject」を抽出した場合を示している。判定部５１は、「abject」を静的辞書３４と照合し、「abject」が高頻度単語、低頻度単語、未知語の何れかであるか判定する。「abject」は、「静的コード」の項目に圧縮符号が登録されておらず、「動的コード」の項目も圧縮符号が登録されていない。このため、「abject」は、低頻度単語と判定される。置換部５２は、「abject」に新たな圧縮符号「A000h」を割り当てる。置換部５２は、「abject」を割り当てられた圧縮符号「A000h」に置換する。また、置換部５２は、「abject」の基本コード「A0002Ch」をバッファ部３１Ｃに登録する。また、置換部５２は、ポインタ部３１Ｂの「動的コード」の項目に、割り当てられた圧縮符号「A000h」を登録し、「種別」の項目に「１」を登録し、バッファ部３１Ｃに格納した基本コード「A0002Chh」の位置を示すポインタを「ポインタ」の項目に登録する。置換部５２は、ポインタ部３１Ｂの「長さ」の項目に、基本コード「A0002Ch」の長さを登録し、「予備符号」の項目に初期値「000000h」を登録する。置換部５２は、静的辞書３４の「abject」のレコードの「動的コード」の項目に割り当てられた圧縮符号「A000h」を登録する。生成部５３は、圧縮符号「A000h」を圧縮ファイル３３に格納する。以降、動的辞書３１に登録された低頻度単語は、高頻度単語と同様に、静的辞書３４に登録された圧縮符号で置換される。
【００５４】
図８Ｃは、未知語を圧縮する流れを概略的に示した図である。図８Ｃの例は、抽出部５０が、圧縮対象ファイル３２から「Mickey」を抽出した場合を示している。判定部５１は、「Mickey」を静的辞書３４と照合し、「Mickey」が高頻度単語、低頻度単語、未知語の何れかであるか判定する。「Mickey」は、静的辞書３４に登録されていない。このため、「Mickey」は、未知語と判定される。置換部５２は、「Mickey」に新たな圧縮符号「A001h」を割り当てる。置換部５２は、「Mickey」を割り当てられた圧縮符号「A001h」に置換する。また、置換部５２は、「Mickey」をバッファ部３１Ｃに登録する。また、置換部５２は、ポインタ部３１Ｂの「動的コード」の項目に、割り当てられた圧縮符号「A001h」を登録し、「種別」の項目に「２」を登録し、バッファ部３１Ｃに格納した「Mickey」の位置を示すポインタを「ポインタ」の項目に登録する。置換部５２は、バッファ部３１Ｃに格納した「Mickey」の長さをポインタ部３１Ｂの「長さ」の項目に登録し、「予備符号」の項目に初期値「000000h」を登録する。置換部５２は、「Mickey」に対応する動的ビットフィルタ部３１Ａに２グラム文字のレコードの「ポインタ」の項目に、「A001h」へのポインタを登録する。生成部５３は、圧縮符号「A001h」を圧縮ファイル３３に格納する。以降、動的辞書３１に登録された未知語は、動的辞書３１に登録された圧縮符号で置換される。
【００５５】
生成部５３は、全単語の圧縮符号の格納後に、圧縮ファイル３３のトレーラに動的辞書３１を格納して圧縮ファイル３３を生成する。図８Ａ〜８Ｃでは、圧縮ファイル３３のトレーラに動的辞書３１格納されている。
【００５６】
次に、サーバ装置１１の構成について説明する。図９は、サーバ装置の構成の一例を示す図である。サーバ装置１１は、圧縮ファイル３３の復号などの符号化を行う装置である。サーバ装置１１は、例えば、パーソナルコンピュータ、クラウドシステムを構成するサーバコンピュータなどの情報処理装置である。図９に示すように、サーバ装置１１は、記憶部６０と、制御部６１とを有する。なお、サーバ装置１１は、情報処理装置が有する上記の機器以外の他の機器を有してもよい。
【００５７】
記憶部６０は、ハードディスク、ＳＳＤ、光ディスクなどの記憶装置である。なお、記憶部６０は、ＲＡＭ、フラッシュメモリ、ＮＶＳＲＡＭなどのデータを書き換え可能な半導体メモリであってもよい。
【００５８】
記憶部６０は、制御部６１で実行されるＯＳや各種プログラムを記憶する。例えば、記憶部６０は、後述する置換処理や復号処理を行う各種のプログラムを記憶する。さらに、記憶部６０は、制御部６１で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部６０は、標準辞書３０と、拡張辞書７１と、圧縮ファイル３３と、復号ファイル７２を記憶する。
【００５９】
標準辞書３０は、データの圧縮および復号化に用いる辞書のデータである。標準辞書３０は、端末装置１０の標準辞書３０と同様であるため、説明を省略する。
【００６０】
拡張辞書７１は、標準辞書３０に記憶された基礎単語について付加な情報や、標準辞書３０に記憶された基礎単語以外の単語について各種の情報を記憶した辞書のデータである。例えば、拡張辞書７１は、基礎単語以外の新規の単語について圧縮符号や基本コードが定められており、基礎単語および新規の単語についてそれぞれ品詞などデータマイニングに利用可能な各種の情報が記憶されている。拡張辞書７１は、１つの辞書であってもよく、複数の辞書により構成されてもよい。本実施例では、標準辞書３０と拡張辞書７１とが大規模辞書７０として機能する。例えば、大規模辞書７０は、図２に概略的に示したように、単語について基本コードが定められており、高頻度単語については圧縮符号が登録されている。また、大規模辞書７０には、各単語の品詞が登録されている。
【００６１】
圧縮ファイル３３は、端末装置１０により圧縮処理されたデータである。復号ファイル７２は、圧縮ファイル３３を復号化したデータである。
【００６２】
制御部６１は、サーバ装置１１を制御するデバイスである。制御部６１としては、ＣＰＵ、ＭＰＵ等の電子回路や、ＡＳＩＣ、ＦＰＧＡ等の集積回路を採用できる。制御部６１は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部６１は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部６１は、置換部８０と、復号部８１とを有する。
【００６３】
置換部８０は、圧縮ファイル３３のトレーラに格納された動的辞書３１に対して置換を行う。置換部８０は、判定部８２と、格納部８３とを有する。
【００６４】
判定部８２は、圧縮ファイル３３のトレーラに格納された動的辞書３１に登録された単語が大規模辞書７０に登録されているか判定する。例えば、判定部８２は、ポインタ部３１Ｂを参照して、種別「２」とされたポインタが示すバッファ部３１Ｃの位置から長さ分のデータを読み出す。これにより、動的辞書３１に登録された未知語の文字列が読み出される。判定部８２は、読み出した未知語の文字列を大規模辞書７０に登録されている単語と比較し、読み出した未知語が大規模辞書７０に登録されているか判定する。
【００６５】
格納部８３は、判定部８２による判定の結果、未知語の文字列が大規模辞書７０に登録されている場合、当該未知語の文字列に対応して大規模辞書７０に登録された符号を動的辞書３１に格納する。例えば、格納部８３は、圧縮ファイル３３のトレーラに格納された動的辞書３１のポインタ部３１Ｂの予備符号に、未知語の文字列に対応して大規模辞書７０に登録された基本コードを格納する。
【００６６】
これにより、置換部８０は、圧縮ファイル３３を圧縮した状態のまま、圧縮ファイル３３に含まれる未知語と大規模辞書７０を関連付けることができる。これにより、サーバ装置１１では、圧縮ファイル３３に圧縮された圧縮データに対して、未知語を含めてデータマイニングなど各種の処理を行うことができ、圧縮ファイル３３に圧縮された圧縮データをより有効に活用させることができる。
【００６７】
復号部８１は、圧縮ファイル３３の復号化を行う。復号部８１は、圧縮ファイル３３に格納された圧縮符号を順に読み出す。復号部８１は、標準辞書３０の復号辞書３５と圧縮ファイル３３のトレーラに格納された動的辞書３１を用いて、読み出した圧縮符号を単語の順に復号化する。
【００６８】
ここで、高頻度単語、低頻度単語、未知語を復号化する流れを説明する。図１０Ａは、高頻度単語を復号化する流れを概略的に示した図である。図１０Ａの例は、復号部８１が、圧縮ファイル３３から圧縮符号「4000h」を読み出した場合を示している。復号部８１は、圧縮符号「4000h」を復号辞書３５と照合し、「4000h」に対応する単語「a」を復号ファイル７２に格納する。
【００６９】
図１０Ｂは、低頻度単語を復号化する流れを概略的に示した図である。図１０Ｂの例は、復号部８１が、圧縮ファイル３３から圧縮符号「A000h」を読み出した場合を示している。復号部８１は、圧縮符号「A000h」をポインタ部３１Ｂと照合し、ポインタが示すバッファ部３１Ｃの位置から長さの分だけデータを読み出して、圧縮符号「A000h」に対応する基本コード「A0002Ch」を取得する。そして、復号部８１は、基本コード「A0002Ch」を復号辞書３５と照合し、「A0002Ch」に対応する単語「Abject」を復号ファイル７２に格納する。
【００７０】
図１０Ｃは、未知語を復号化する流れを概略的に示した図である。図１０Ｃの例は、復号部８１が、圧縮ファイル３３から圧縮符号「A001h」を読み出した場合を示している。復号部８１は、圧縮符号「A001h」をポインタ部３１Ｂと照合し、ポインタが示すバッファ部３１Ｃの位置から長さの分だけデータを読み出して、文字列「Mickey」を取得する。そして、復号部８１は、文字列「Mickey」を復号ファイル７２に格納する。
【００７１】
［処理の流れ］
本実施例に係る端末装置１０が圧縮対象ファイル３２を符号化して圧縮する圧縮処理の流れについて説明する。図１１は、圧縮処理の手順の一例を示すフローチャートである。この圧縮処理は、所定のタイミング、例えば、圧縮対象ファイル３２を指定して圧縮開始を指示する所定操作が行われたタイミングで実行される。
【００７２】
図１１に示すように、抽出部５０は、圧縮対象ファイル３２から単語単位に文字列を抽出する（Ｓ１０）。判定部５１は、抽出された単語を静的辞書３４と照合し、静的辞書３４に単語が登録されているか判定する（Ｓ１１）。単語が登録されていない場合（Ｓ１１否定）、置換部５２は、抽出された単語を未知語として、単語が動的辞書３１に登録されているか判定する（Ｓ１２）。抽出された単語が動的辞書３１に登録されている場合（Ｓ１２肯定）、判定部５１は、抽出された単語を動的辞書３１に登録済みの圧縮符号に置換する（Ｓ１３）。
【００７３】
一方、未知語が動的辞書３１に登録されていない場合（Ｓ１２否定）、置換部５２は、抽出された単語を動的辞書３１に未登録の未知語として、新規の３バイトの圧縮符号を動的に割り当て、抽出された単語を、割り当てられた圧縮符号に置換する（Ｓ１４）。また、置換部５２は、抽出された単語の文字列と、動的に割り当てた圧縮符号と、予備符号用の領域とを対応付けて動的辞書３１に格納する（Ｓ１５）。
【００７４】
一方、単語が登録されている場合（Ｓ１１肯定）、置換部５２は、「静的コード」の項目に圧縮符号が格納されているか判定する（Ｓ１６）。「静的コード」の項目に圧縮符号が格納されている場合（Ｓ１６肯定）、判定部５１は、抽出された単語を高頻度単語として、抽出された単語を、「静的コード」の項目に格納された圧縮符号に置換する（Ｓ１７）。
【００７５】
一方、「静的コード」の項目に圧縮符号が格納されていない場合（Ｓ１６否定）、判定部５１は、「動的コード」の項目に圧縮符号が格納されているか判定する（Ｓ１８）。「動的コード」の項目に圧縮符号が格納されていない場合（Ｓ１８否定）、判定部５１は、抽出された単語を動的辞書３１に未登録の低頻度単語として、新規の３バイトの圧縮符号を動的に割り当て、抽出された単語を、割り当てられた圧縮符号に置換する（Ｓ１９）。また、置換部５２は、抽出された単語の基本コードと、動的に割り当てた圧縮符号と、予備符号用の領域とを対応付けて動的辞書３１に格納する（Ｓ２０）。
【００７６】
一方、「動的コード」の項目に圧縮符号が格納されている場合（Ｓ１８肯定）、判定部５１は、抽出された単語を動的辞書３１に登録済みの低頻度単語として、抽出された単語を、「動的コード」の項目に圧縮符号に置換する（Ｓ２１）。
【００７７】
生成部５３は、置換された圧縮符号を圧縮ファイル３３に順に格納する（Ｓ２２）。抽出部５０は、圧縮対象ファイル３２からテキストデータに対する全単語の抽出が完了したか否かを判定する（Ｓ２３）。全単語の抽出が完了していない場合（Ｓ２３否定）、上述のＳ１０へ移行する。
【００７８】
一方、全単語の抽出が完了した場合（Ｓ２３肯定）、生成部５３は、動的辞書３１を圧縮ファイル３３に格納し（Ｓ２４）、処理を終了する。
【００７９】
次に、本実施例に係るサーバ装置１１が圧縮ファイル３３のトレーラに格納された動的辞書３１に対して置換を行う置換処理の流れについて説明する。図１２は、置換処理の手順の一例を示すフローチャートである。この置換処理は、所定のタイミング、例えば、圧縮対象ファイル３２がサーバ装置１１に格納されたタイミングで実行される。なお、置換処理は、圧縮ファイル３３を指定して置換開始を指示する所定操作が行われたタイミングで実行されてもよい。また、置換処理は、後述する復号処理の前または後など復号処理に合わせたタイミングで実行されてもよい。
【００８０】
図１２に示すように、判定部８２は、圧縮ファイル３３のトレーラに格納された動的辞書３１のポインタ部３１Ｂを参照して、種別「２」とされたポインタが示すバッファ部３１Ｃの位置から長さ分の未知語の文字列を順に読み出す（Ｓ５０）。判定部８２は、読み出した未知語の文字列を大規模辞書７０に登録されている単語と比較し、読み出した未知語が大規模辞書７０に登録されているか判定する（Ｓ５１）。読み出した未知語文字列が大規模辞書７０に登録されていない場合（Ｓ５１否定）、後述するＳ５３へ移行する。
【００８１】
一方、読み出した未知語の文字列が大規模辞書７０に登録されている場合（Ｓ５１肯定）、格納部８３は、動的辞書３１のポインタ部３１Ｂの予備符号に、未知語の文字列に対応して大規模辞書７０に登録された基本コードを格納する（Ｓ５２）。
【００８２】
判定部８２は、動的辞書３１に格納された未知語の文字列を全て読み出したか否かを判定する（Ｓ５３）。全て読み出していない場合（Ｓ５３否定）、上述のＳ５０へ移行する。一方、全て読み出した場合（Ｓ５３肯定）、処理を終了する。
【００８３】
次に、本実施例に係るサーバ装置１１が圧縮ファイル３３を復号化する復号処理の流れについて説明する。図１３は、復号処理の手順の一例を示すフローチャートである。この復号処理は、所定のタイミング、例えば、圧縮ファイル３３を指定して復号開始を指示する所定操作が行われたタイミングで実行される。
【００８４】
図１３に示すように、復号部８１は、圧縮ファイル３３に格納された圧縮符号を順に読み出す（Ｓ１００）。復号部８１は、標準辞書３０の復号辞書３５と圧縮ファイル３３のトレーラに格納された動的辞書３１を用いて、読み出した圧縮符号を単語の順に復号化する（Ｓ１０１）。復号部８１は、復号化した単語を復号ファイル７２に格納する（Ｓ１０２）。復号部８１は、圧縮ファイル３３に格納された圧縮符号を全て読み出したか否かを判定する（Ｓ１０３）。全て読み出していない場合（Ｓ１０３否定）、上述のＳ１００へ移行する。一方、全て読み出した場合（Ｓ１０３肯定）、処理を終了する。
【００８５】
［効果］
上述してきたように、本実施例に係る端末装置１０は、圧縮対象ファイル３２のうち、静的辞書３４に登録されている文字列を文字列に対応付けられた符号に置換する。端末装置１０は、圧縮対象ファイル３２のうち、静的辞書３４に登録されていない文字列に新たな圧縮符号を割り当てて、当該文字列と新たな圧縮符号と予備符号用の領域とを対応付けて動的辞書３１に格納するとともに、文字列を新たな圧縮符号に置換する。端末装置１０は、置換された圧縮符号および動的辞書３１を含んだ圧縮ファイル３３を生成する。これにより、端末装置１０は、動的辞書３１の予備符号用の領域に、文字列と圧縮符号に対応付ける情報を後から格納できるため、圧縮対象ファイル３２をより有効に活用させることができる。
【００８６】
また、本実施例に係るサーバ装置１１は、圧縮ファイル３３の動的辞書３１に圧縮符号と予備符号用の領域とを対応付けて格納された未知語の文字列が大規模辞書７０に登録されているか判定する。サーバ装置１１は、文字列が大規模辞書７０に登録されている場合、動的辞書３１の予備符号用の領域に、大規模辞書７０の未知語の文字列に対応する基本コードを格納する。これにより、サーバ装置１１は、圧縮対象ファイル３２を復号化することなく、未知語の文字列を大規模辞書７０の基本コードに対応付けることができる。
【実施例２】
【００８７】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００８８】
例えば、上記の実施例では、圧縮する際、標準辞書３０に未登録の未知語の文字列については、動的辞書３１のポインタ部３１Ｂの「予備符号」の領域に予備符号が未設定であることを示す「000000h」を格納する場合について説明したが、これに限定されない。例えば、圧縮する際、標準辞書３０に未登録でも、その他の辞書に未登録の未知語の文字列に対応する情報が登録されている場合、未登録の未知語の文字列に対応する情報を動的辞書３１のポインタ部３１Ｂの「予備符号」の領域に格納してもよい。図１４は、圧縮処理の流れを概略的に示した図である。図１４は、例えば、サーバ装置１１が圧縮対象ファイル３２に含まれる「…a  pen…Mickey…」を圧縮する場合を例に説明する。「Mickey」は、標準辞書３０では未登録であるものの、拡張辞書７１に基本コードが登録されている。このため、大規模辞書７０には「Mickey」に対応して基本コード「AFFFFFh」が登録されている。サーバ装置１１は、標準辞書３０した有さない端末装置１０でも復号化可能とするため、「Mickey」を標準辞書３０に未登録の未知語の文字列として圧縮する。しかし、サーバ装置１１は、標準辞書３０では未登録の文字列が、サーバ装置１１が有する他の辞書に登録されている場合、他の辞書の未登録の文字列に対応する符号を「予備符号」の領域に格納する。例えば、サーバ装置１１は、動的辞書３１のポインタ部３１Ｂの「予備符号」の領域に基本コード「AFFFFFh」を格納する。なお、サーバ装置１１は、動的辞書３１のポインタ部３１Ｂの「予備符号」の領域に基本コード以外に、大規模辞書７０での圧縮符号や、品詞を示す情報など、未登録の文字列に関連する情報を格納してもよい。これにより、サーバ装置１１は、大規模辞書７０の情報を用いて圧縮対象ファイル３２を圧縮でき、標準辞書３０では未登録の文字列を含めて、圧縮ファイル３３を圧縮したままデータマイニングなど各種の処理を行うことができる。また、圧縮ファイル３３は、標準辞書３０では未登録の文字列が動的辞書３１に登録されているため、標準辞書３０のみを有する端末装置１０でも復号化できる。
【００８９】
また、上記の実施例では、圧縮する際に、ポインタ部３１Ｂの「予備符号」の領域を設けた動的辞書３１を圧縮ファイル３３に格納する場合について説明したが、これに限定されない。圧縮する際に、ポインタ部３１Ｂに「予備符号」の領域を設けずに動的辞書３１を圧縮ファイル３３に格納し、後から圧縮ファイル３３の動的辞書３１のポインタ部３１Ｂに「予備符号」の領域を追加してもよい。例えば、端末装置１０は、ポインタ部３１Ｂに「予備符号」の領域を設けずに動的辞書３１を圧縮ファイル３３に格納する。サーバ装置１１は、圧縮ファイル３３を受信したタイミングや復号化するタイミングなど所定のタイミングで、圧縮ファイル３３の動的辞書３１のポインタ部３１Ｂに「予備符号」の領域がある否かをチェックする。サーバ装置１１は、圧縮ファイル３３の動的辞書３１のポインタ部３１Ｂに「予備符号」の領域が無い場合、ポインタ部３１Ｂに「予備符号」の領域を追加してもよい。
【００９０】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、端末装置１０の抽出部５０、判定部５１、置換部５２、生成部５３の各処理部が適宜統合されてもよい。また、サーバ装置１１の置換部８０（判定部８２、格納部８３）、復号部８１の各処理部が適宜統合されてもよい。端末装置１０およびサーバ装置１１の上記各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９１】
［圧縮プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。最初に、圧縮処理を行う圧縮プログラムについて説明する。図１５は、圧縮プログラムを実行するコンピュータの一例を示す図である。
【００９２】
図１５に示すように、コンピュータ４００は、ＣＰＵ（Central  Processing  Unit）４１０、ＨＤＤ（Hard  Disk  Drive）４２０、ＲＡＭ（Random  Access  Memory）４４０を有する。これら４００〜４４０の各部は、バス５００を介して接続される。
【００９３】
ＨＤＤ４２０には上記の端末装置１０の抽出部５０、判定部５１、置換部５２および生成部５３と同様の機能を発揮する圧縮プログラム４２０ａが予め記憶される。尚、圧縮プログラム４２０ａについては、適宜分離しても良い。
【００９４】
また、ＨＤＤ４２０は、各種情報を記憶する。例えば、ＨＤＤ４２０は、ＯＳや圧縮に用いる各種データを記憶する。
【００９５】
そして、ＣＰＵ４１０が、圧縮プログラム４２０ａをＨＤＤ４２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、圧縮プログラム４２０ａは、抽出部５０、判定部５１、置換部５２および生成部５３と同様の動作を実行する。
【００９６】
尚、上記した圧縮プログラム４２０ａについては、必ずしも最初からＨＤＤ４２０に記憶させることを要しない。
【００９７】
［置換プログラム］
次に、圧縮ファイル３３のトレーラに格納された動的辞書３１に対して置換を行う置換プログラムについて説明する。図１６は、置換プログラムを実行するコンピュータの一例を示す図である。なお、図１５と同一の部分については同一の符号を付して、説明を省略する。
【００９８】
図１６に示すように、ＨＤＤ４２０には上記のサーバ装置１１の置換部８０（判定部８２、格納部８３）と同様の機能を発揮する置換プログラム４２０ｂが予め記憶される。尚、置換プログラム４２０ｂについては、適宜分離しても良い。また、置換プログラム４２０ｂは、復号部８１の機能も有するものとして、復号プログラムとしてもよい。
【００９９】
また、ＨＤＤ４２０は、各種情報を記憶する。例えば、ＨＤＤ４２０は、ＯＳや置換に用いる各種データを記憶する。
【０１００】
そして、ＣＰＵ４１０が、置換プログラム４２０ｂをＨＤＤ４２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、置換プログラム４２０ｂは、置換部８０と同様の動作を実行する。
【０１０１】
尚、上記した置換プログラム４２０ｂについても、必ずしも最初からＨＤＤ４２０に記憶させることを要しない。
【０１０２】
また、例えば、圧縮プログラム４２０ａ及び置換プログラム４２０ｂは、コンピュータ４００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に記憶させても良い。そして、コンピュータ４００がこれらからプログラムを読み出して実行するようにしても良い。
【０１０３】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ４００に接続される「他のコンピュータ（又はサーバ）」などにプログラムを記憶させておく。そして、コンピュータ４００がこれらからプログラムを読み出して実行するようにしても良い。
【符号の説明】
【０１０４】
１０  端末装置
１１  サーバ装置
２０  記憶部
２１  制御部
３０  標準辞書
３１  動的辞書
３１Ａ  動的ビットフィルタ部
３１Ｂ  ポインタ部
３１Ｃ  バッファ部
３２  圧縮対象ファイル
３３  圧縮ファイル
３４  静的辞書
３４Ａ  ビットフィルタ部
３４Ｂ  辞書部
３５  復号辞書
４０  圧縮部
５０  抽出部
５１  判定部
５２  置換部
５３  生成部
６０  記憶部
６１  制御部
７０  大規模辞書
７１  拡張辞書
７２  復号ファイル
８０  置換部
８１  復号部
８２  判定部
８３  格納部
【図１】
0006613669.tif 000002
【図２】
0006613669.tif 000003
【図３】
0006613669.tif 000004
【図４Ａ】
0006613669.tif 000005
【図４Ｂ】
0006613669.tif 000006
【図４Ｃ】
0006613669.tif 000007
【図５】
0006613669.tif 000008
【図６Ａ】
0006613669.tif 000009
【図６Ｂ】
0006613669.tif 000010
【図６Ｃ】
0006613669.tif 000011
【図７Ａ】
0006613669.tif 000012
【図７Ｂ】
0006613669.tif 000013
【図８Ａ】
0006613669.tif 000014
【図８Ｂ】
0006613669.tif 000015
【図８Ｃ】
0006613669.tif 000016
【図９】
0006613669.tif 000017
【図１０Ａ】
0006613669.tif 000018
【図１０Ｂ】
0006613669.tif 000019
【図１０Ｃ】
0006613669.tif 000020
【図１１】
0006613669.tif 000021
【図１２】
0006613669.tif 000022
【図１３】
0006613669.tif 000023
【図１４】
0006613669.tif 000024
【図１５】
0006613669.tif 000025
【図１６】
0006613669.tif 000026