(57)【要約】【課題】構造化文書における圧縮処理であっても、テキストの圧縮率を向上させる。【解決手段】情報処理装置１００は、タグを含む文字データ列を入力する。情報処理装置１００は、入力した文字データ列に対するスライド窓を用いた変換処理を行う際に、変換処理の対象文字列がタグであるか否かを判定する。情報処理装置１００は、変換処理の対象文字列がタグを含まない場合は、変換処理の対象文字列にスライド窓を用いた変換処理を行い、変換処理の対象文字列をスライド窓の領域に移動する。情報処理装置１００は、変換処理の対象文字列がタグを含む場合は、当該タグに対し、スライド窓を用いた変換処理とは異なる変換処理を行う。【選択図】図９
2016134754.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
タグを含む文字データ列を入力し、
前記入力した文字データ列に対するスライド窓を用いた変換処理を行う際に、前記変換処理の対象文字列がタグであるか否かを判定し、
前記変換処理の対象文字列がタグを含まない場合は、前記変換処理の対象文字列にスライド窓を用いた変換処理を行い、前記変換処理の対象文字列を前記スライド窓の領域に移動し、
前記変換処理の対象文字列がタグを含む場合は、当該タグに対し、前記スライド窓を用いた変換処理とは異なる変換処理を行う
処理を実行させることを特徴とする変換処理プログラム。
【請求項２】
前記異なる変換処理は、さらに、前記タグを前記スライド窓の領域と異なるタグ領域に移動する処理を含むことを特徴とする請求項１に記載の変換処理プログラム。
【請求項３】
前記タグは、タグであることを識別する記号、タグの属性を示す文字列、および、前記タグの属性を示す文字列に対応した可変部情報を含むことを特徴とする請求項１または請求項２に記載の変換処理プログラム。
【請求項４】
タグを含む文字データ列を入力する入力部と、
前記入力部によって入力された前記文字データ列に対するスライド窓を用いた変換処理を行う際に、前記変換処理の対象文字列がタグであるか否かを判定する判定部と、
前記判定部によって前記変換処理の対象文字列がタグを含まない場合は、前記変換処理の対象文字列にスライド窓を用いた変換処理を行い、前記変換処理の対象文字列を前記スライド窓の領域に移動する第１の変換処理部と、
前記判定部によって前記変換処理の対象文字列がタグを含む場合は、当該タグに対し、前記スライド窓を用いた変換処理とは異なる変換処理を行う第２の変換処理部と、
を有することを特徴とする情報処理装置。
【請求項５】
コンピュータが、
タグを含む文字データ列を入力し、
前記入力した文字データ列に対するスライド窓を用いた変換処理を行う際に、前記変換処理の対象文字列がタグであるか否かを判定し、
前記変換処理の対象文字列がタグを含まない場合は、前記変換処理の対象文字列にスライド窓を用いた変換処理を行い、前記変換処理の対象文字列を前記スライド窓の領域に移動し、
前記変換処理の対象文字列がタグを含む場合は、当該タグに対し、前記スライド窓を用いた変換処理とは異なる変換処理を行う
処理を実行することを特徴とする変換処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変換処理プログラムなどに関する。
【背景技術】
【０００２】
ＸＭＬ、ＨＴＭＬ等の構造化文書は、タグと文書内容（本文テキスト）とともに、テキスト形式で表現される。この構造化文書は、スキーマと呼ばれる構造定義に従って記述されるため、一般のテキストのみのテキスト文書とは異なり、記述の自由度が低く、同じような文字列が出現しやすいという特徴がある。この特徴は、特にタグにおいて顕著である。タグの一例として、ＸＭＬでは、‘＜’で始まり、‘＞’で終わる文字列がある。
【０００３】
これにより、構造化文書の圧縮では、最長一致探索によって符号の割り当てを行うＺＩＰ等のＬＺ７７系圧縮と相性が良く、一般のテキスト文書よりも高い圧縮率を得ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１０１４４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＬＺ７７系圧縮では、一般に、タグはタグ、本文テキストは本文テキストと最長一致しやすいことが知られている。このため、タグと本文テキストが混在したまま参照部に流しているＬＺ７７系圧縮では、圧縮処理が行われたタグの内容は、順次スライド窓に流されるので、スライド窓から本文テキストの最長一致の文字列が追い出されてしまうことがある。すなわち、スライド窓のサイズは予め設定されており、スライド窓内に格納されるデータがスライド窓のサイズを超えると、スライド窓内に先に格納されたデータが追い出される。したがって、構造化文書におけるＬＺ７７系圧縮では、本文テキストの最長一致となる範囲が狭くなってしまう。つまり、構造化文書におけるＬＺ７７系圧縮では、本文テキストの圧縮率が低下するという問題がある。
【０００６】
ここで、本文テキストの圧縮率が低下するという問題について、図１を参照して説明する。図１は、ＬＺ７７系を利用した圧縮処理を示す図である。図１上図は、タグがないテキストの場合の圧縮処理であり、図１下図は、タグがあるテキストの場合の圧縮処理である。図１に示すように、記憶領域Ａ１および記憶領域Ａ２が、例えば、それぞれメモリ内に確保される。記憶領域Ａ１は、例えば符号化部と呼ばれる。記憶領域Ａ２は、スライド窓に対応し、例えば参照部と呼ばれる。
【０００７】
圧縮処理は、図示しない圧縮対象ファイルが記憶領域Ａ１にロードされる。そして、圧縮処理は、記憶領域Ａ２に含まれるデータのうち、記憶領域Ａ１のデータと最も長く一致するデータ列（最長一致データ列）に基づいて圧縮符号を生成する。圧縮符号は、記憶領域Ａ２内の最長一致データ列の一致長および記憶領域Ａ２内の位置を組み合わせた情報である。
【０００８】
図１上図のタグがないテキストの場合、圧縮処理は、記憶領域Ａ２に含まれる文字列のうち、記憶領域Ａ１の圧縮処理対象の“by  James  Joyce・・・”と、最長一致していた文字列“by  James  Joyce”を１符号に割り当てる。
【０００９】
図１下図のタグがあるテキストの場合、記憶領域Ａ２には、圧縮処理が行われたタグの内容が記憶領域Ａ２に流されたので、“by  James  Joyce”が追い出されている。記憶領域Ａ１の圧縮処理対象の“by  James  Joyce・・・”の最長一致となる文字列が、記憶領域Ａ２から追い出されている。すなわち、記憶領域Ａ２にタグの内容が多く含まれると、記憶領域Ａ２から本文テキストが早期に追い出されることとなり、本文テキストの最長一致となる範囲が狭くなってしまう。つまり、タグのないテキストと比較して、本文テキストの圧縮率が低下してしまう。
【００１０】
１つの側面では、タグ等がテキスト中に含まれる構造化文書における圧縮処理において、圧縮率を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、コンピュータに、下記の処理を実行させる。コンピュータに、タグを含む文字データ列を入力する処理を実行させる。コンピュータに、前記入力した文字データ列に対するスライド窓を用いた変換処理を行う際に、前記変換処理の対象文字列がタグであるか否かを判定する処理を実行させる。コンピュータに、前記変換処理の対象文字列がタグを含まない場合は、前記変換処理の対象文字列にスライド窓を用いた変換処理を行い、前記変換処理の対象文字列を前記スライド窓の領域に移動する処理を実行させる。コンピュータに、前記変換処理の対象文字列がタグを含む場合は、当該タグに対し、前記スライド窓を用いた変換処理とは異なる変換処理を行う処理を実行させる。
【発明の効果】
【００１２】
本発明の１実施態様によれば、タグ等がテキスト中に含まれる構造化文書における圧縮処理において、圧縮率を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、ＬＺ７７系を利用した圧縮処理を示す図である。
【図２】図２は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図（１）である。
【図３】図３は、動的辞書部の一例を示す図である。
【図４】図４は、圧縮データの一例を示す図である。
【図５】図５は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図（２）である。
【図６】図６は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図（３）である。
【図７】図７は、本実施例に係る情報処理装置の伸長処理の流れの一例を示す図である。
【図８】図８は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【図９】図９は、本実施例に係る圧縮部の構成の一例を示す機能ブロック図である。
【図１０】図１０は、本実施例に係る伸長部の構成の一例を示す機能ブロック図である。
【図１１】図１１は、本実施例に係る圧縮部の処理手順を示すフローチャートである。
【図１２】図１２は、本実施例に係る伸長部の処理手順を示すフローチャートである。
【図１３】図１３は、コンピュータのハードウェア構成例を示す図である。
【図１４】図１４は、コンピュータで動作するプログラムの構成例を示す図である。
【図１５】図１５は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する変換処理プログラム、情報処理装置および変換処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１５】
図２は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図（１）である。情報処理装置は、圧縮処理のワークエリアとして、メモリに記憶領域Ａ１、記憶領域Ａ２、記憶領域Ａ３、記憶領域Ａ４を設ける。以下の説明では適宜、記憶領域Ａ１、記憶領域Ａ２、記憶領域Ａ３をそれぞれ、符号化部、参照部、動的辞書部と呼ぶ。
【００１６】
情報処理装置は、圧縮対象のファイルＦ１内のコンテンツ部分の文字列を記憶領域Ａ１にロードする。ファイルＦ１は、タグとタグ以外の文字列とが混在したマークアップ文書であり、タグを用いて文書構造の規定や文字列に対する注釈等のマークアップ指定が行われる。ここで、タグとは、マークアップ指定に用いられる文字列であり、たとえば、開始記号‘＜’から始まり、終了記号‘＞’で終わる文字列を指す。例えば、ファイルＦ１には、「・・・This  is  a  Pen.・・・<a  href＝“001.html”>・・・」という文字列が含まれる。この文字列の中で「<a  href＝“001.html”>」がタグである。この文字列の中で「This  is  a  Pen.」がタグ以外の文字列である。「・・・」は不特定な文字列に対応する。
【００１７】
情報処理装置は、記憶領域Ａ１の先頭から文字列を抽出し、文字列がタグであるか否かを判定する。例えば、情報処理装置は、文字列の先頭文字がタグの開始記号‘＜’であるか否かを判定する。
【００１８】
情報処理装置は、文字列がタグを含まない場合には、文字列に対して記憶領域Ａ２内で最長一致文字列を探索する。また、情報処理装置は、文字列を、探索した最長一致文字列に対応する圧縮符号に圧縮する。そして、情報処理装置は、圧縮処理が行われた文字列分、スライド窓をシフトする。すなわち、情報処理装置は、圧縮処理が行われた文字列を、記憶領域Ａ１から記憶領域Ａ２にコピーするとともに、記憶領域Ａ２内の文字列を、圧縮処理が行われた文字列分左シフトすることで、記憶領域Ａ２を更新する。
【００１９】
情報処理装置は、文字列がタグを含む場合には、タグ全体を纏めて動的辞書に登録し、動的辞書に基づいて文字列に対応する圧縮符号に圧縮する。なお、情報処理装置は、文字列がタグである場合には、スライド窓をシフトしない。
【００２０】
ここで、動的辞書は、タグの文字列を登録し、動的辞書に登録した文字列の登録番号を、文字列の圧縮符号に割り当てる辞書である。なお、動的辞書のデータ構造は、後述する。
【００２１】
情報処理装置が圧縮対象のファイルＦ１の文字列「This  is  a  Pen.・・・」を圧縮する場合の処理について説明する。
【００２２】
まず、情報処理装置は、文字列の先頭文字「Ｔ」がタグの開始記号‘＜’であるか否かを判定する。図２の例では、文字列の先頭文字「Ｔ」がタグの開始記号‘＜’でないと判定される。このため、情報処理装置は、記憶領域Ａ２内の文字列と「This  is  a  Pen.・・・」とを照合し、最長一致文字列を探索する。図２の例では、「This  is  a  」が、記憶領域Ａ２内で最長一致文字列であるため、最長一致文字列の記憶領域Ａ２内での位置と、最長一致文字列のデータの長さに基づき、ＬＺ７７の圧縮符号を含む圧縮データｄ２０が生成される。ＬＺ７７の圧縮符号には、最長一致文字列に基づく圧縮データである旨を示す識別子（図示しない「１」）が含まれる。また、圧縮データｄ２０には、タグでない文字列の圧縮データである旨を示す識別子（図２の例において、「１」）が含まれる。
【００２３】
そして、情報処理装置は、圧縮処理が行われた文字列「This  is  a  」を記憶領域Ａ１から記憶領域Ａ２にコピーするととともに、記憶領域Ａ２内の文字列を、圧縮処理が行われた文字列分左シフトすることで、記憶領域Ａ２を更新する。
【００２４】
また、図２の例では、「This  is  a  」に後続する圧縮対象「Pen.・・・」は、以下のように処理される。「Pen.・・・」が、記憶領域Ａ２内で最長一致文字列でない場合には、先頭の文字コードそのものを含むＬＺ７７の圧縮データｄ２０が生成される。圧縮データとして文字コードそのものを用いることは、一例であり、ハフマン符号化／復号化アルゴリズムにより復号化して得られるハフマン符号が用いられても良いし、他の圧縮アルゴリズムが用いられても良い。ＬＺ７７の圧縮符号には、最長一致文字列に基づく圧縮データでない旨を示す識別子（図示しない「０」）が含まれる。また、圧縮データｄ２０には、タグでない文字列の圧縮データである旨を示す識別子（図２の例において、「１」）が含まれる。
【００２５】
そして、情報処理装置は、圧縮処理が行われた文字「Ｐ」を記憶領域Ａ１から記憶領域Ａ２にコピーするとともに、記憶領域Ａ２内の文字列を、圧縮処理が行われた文字列分左シフトすることで、記憶領域Ａ２を更新する。「Ｐ」に後続する圧縮対象「en.・・・」も、「Ｐ」と同様に処理されるので、説明を省略する。
【００２６】
次に、情報処理装置が圧縮対象のファイルＦ１の文字列「<a  href＝“001.html”>」を圧縮する場合の処理について説明する。
【００２７】
まず、情報処理装置は、文字列の先頭文字がタグの開始記号‘＜’であるか否かを判定する。図２の例では、文字列の先頭文字「＜」がタグの開始記号‘＜’であると判定される。このため、情報処理装置は、記憶領域Ａ３内の文字列と「<a  href＝“001.html”>」とを照合し、一致するか否かを判定する。図２の例では、情報処理装置は、「<a  href＝“001.html”>」が、記憶領域Ａ３に存在しないため、タグの文字列を新たな登録番号に対応付けて動的辞書に登録する。すなわち、情報処理装置は、「<a  href＝“001.html”>」を纏めて新たな登録番号に対応付けて動的辞書に登録する。
【００２８】
また、情報処理装置は、動的辞書に登録した登録番号を圧縮符号とする圧縮データｄ１０を生成する。圧縮データｄ１０には、タグである文字列の圧縮データである旨を示す識別子（図２の例において、「０」）が最前列に含まれる。また、圧縮データｄ１０には、圧縮データに可変部情報があるか否かの識別子（図２の例において、「０」）が最後列に含まれるが、この識別子（「可変部識別子」という）については、後述する。なお、情報処理装置は、文字列がタグであるので、圧縮処理が行われたタグの文字列を記憶領域Ａ１から記憶領域Ａ２にコピーせず、記憶領域Ａ２を更新しない。これにより、情報処理装置は、文字列がタグである場合を、文字列がタグでない場合と別の処理で圧縮することで、タグでない文字列の最長一致可能な文字列をタグによって記憶領域Ａ２から追い出さないので、タグでない文字列の圧縮率を向上させることができる。
【００２９】
図３は、動的辞書部の一例を示す図である。図３に示される動的辞書部は、記憶領域Ａ３と動的辞書Ｔ１とを含む。記憶領域Ａ３は、タグの文字列を記憶する。動的辞書Ｔ１は、記憶領域Ａ３に含まれ、登録番号と、タグ名と、属性部分の文字列とを対応付けて保持する。登録番号は、例えば、記憶領域Ａ３に登録されたタグの文字列が、何番目に登録されたデータであるかを示す情報である。
【００３０】
タグ名は、タグの名称を示す情報である。属性部分の文字列は、タグ内のタグ名以降に記述される情報である。すなわち、動的辞書Ｔ１には、タグ名が異なるタグは新たな登録番号で登録され、タグ名が同じタグは原則として同じ登録番号で登録される。なお、タグ名が同じタグであっても、属性部分の文字列の一部の内容が一致しない場合がある。このような場合であっても、タグ名が同じであるので、同じ登録番号で登録される。但し、圧縮データに、一致しない部分の内容の情報を後述する可変部情報として付加するようにすれば良い。
【００３１】
例えば、動的辞書部Ａ３にタグを示す「<a  href＝“001.html”>」が登録される場合について説明する。「<a  href＝“001.html”>」のうち「ａ」がタグ名を示す情報である。「<a  href＝“001.html”>」のうち「href＝“001.html”」が属性部分の文字列を示す情報である。情報処理装置は、登録番号として「００３」、タグ名として「ａ」、属性部分の文字列として「href＝“001.html”」を動的辞書Ｔ１に登録する。
【００３２】
図４は、圧縮データの一例を示す図である。図４に示すように、圧縮データには、タグ識別子と、圧縮符号と、可変部識別子と、可変部情報とが含まれる。タグ識別子は、圧縮データがタグのものか否かを識別する情報である。一例として、「０」は、タグである文字列の圧縮データである旨を示し、「１」は、タグでない文字列の圧縮データである旨を示す。圧縮符号は、タグ識別子に応じた圧縮符号を示す情報である。一例として、タグ識別子が「０」である場合には、圧縮符号には、タグが動的辞書に登録された登録番号を示す情報が設定される。圧縮符号のサイズは、例えば固定長の２バイトである。タグ識別子が「１」である場合には、圧縮符号には、ＬＺ７７の圧縮符号が設定される。圧縮符号のサイズは、最長一致文字列である場合には位置とデータの長さを含む固定長の３バイトであり、最長一致文字列でない場合には固定長の１バイトに文字数を乗じて得たバイト数である。
【００３３】
可変部識別子は、圧縮データに可変部情報があるか否かの識別子を示す情報である。一例として、「０」は、圧縮データに可変部情報がないことを示し、「１」は、圧縮データに可変部情報があることを示す。可変部情報は、動的辞書に登録されている登録番号に対応する属性部分の文字列のうち不一致部分の内容を示す情報である。可変部情報には、可変部開始位置、可変部の長さ、置換文字列の長さおよび置換文字列が含まれる。可変部開始位置は、圧縮符号に示された登録番号に対応する属性部分の文字列のうち不一致部分（可変部）の開始位置を示す情報である。可変部開始位置のサイズは、例えば固定長の１バイトである。可変部の長さは、可変部開始位置から不一致部分の長さを示す情報である。可変部の長さのサイズは、例えば固定長の１バイトである。置換文字列の長さは、可変部に置換する文字列（置換文字列）の長さを示す情報である。置換文字列の長さのサイズは、例えば固定長の１バイトである。置換文字列は、可変部に置換する文字列を示す情報である。置換文字列のサイズは、例えば固定長の１バイトに置換文字数を乗じて得たバイト数である。圧縮データに可変部情報が設けられることにより、情報処理装置は、同じタグ名であれば同じ登録番号を圧縮符号に設定でき、属性部分の文字列の差分を可変部情報として付加することで、圧縮率を向上させることが可能となる。
【００３４】
図５は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図（２）である。情報処理装置は、圧縮対象のファイルＦ１内のコンテンツ部分の文字列を記憶領域Ａ１にロードする。例えばファイルＦ１には、「・・・This  is  a  Pen.・・・<a  href＝“001.html”>・・・」という文字列が含まれる。また、記憶領域Ａ３には、動的辞書Ｔ１が格納されている。
【００３５】
情報処理装置は、記憶領域Ａ１の先頭から文字列を抽出し、文字列がタグであるか否かを判定する。情報処理装置が、文字列がタグを含まない場合には、図２に示した処理と同様であるため、説明を省略する。
【００３６】
情報処理装置が、文字列がタグを含む場合の処理について説明する。まず、情報処理装置が、文字列「<a  href＝“001.html”>」の圧縮データを生成する場合の処理について説明する。
【００３７】
情報処理装置は、文字列「<a  href＝“001.html”>」の先頭文字がタグの開始記号‘＜’であるため、文字列がタグであると判定し、以下の処理を実行する。情報処理装置は、タグ文字列「<a  href＝“001.html”>」と記憶領域Ａ３とを照合し、タグ文字列に含まれるタグ名が動的辞書Ｔ１に登録されているか否かを判定する。
【００３８】
例えば、図５の１段目に示すように、動的辞書Ｔ１にタグ名「ａ」が格納されていない場合には、情報処理装置は、タグ文字列「<a  href＝“001.html”>」の内容を動的辞書Ｔ１に登録する。動的辞書Ｔ１には、タグ名として「ａ」、属性部分の文字列として「href＝“001.html」、登録番号として「３」が格納される。そして、情報処理装置は、タグ文字列「<a  href＝“001.html”>」を、動的辞書Ｔ１によって符号化する。すなわち、情報処理装置は、タグ文字列を、動的辞書Ｔ１に登録された登録番号「３」に圧縮符号化することで、圧縮データｄ１０を生成する。情報処理装置は、圧縮データｄ１０を記憶領域Ａ４に書き込む。圧縮データｄ１０は、タグ識別子としてタグ文字列の圧縮データである旨を示す「０」、圧縮符号として登録番号を示す「３」、可変部識別子として圧縮データに可変部情報がないことを示す「０」を有する。
【００３９】
例えば、図５の２，３段目に示すように、動的辞書Ｔ１にタグ名「ａ」が格納されている場合には、情報処理装置は、タグ文字列および動的辞書Ｔ１のそれぞれの属性部分の文字列が完全一致するか否かを判定する。動的辞書Ｔ１には、タグ名として「ａ」、属性部分の文字列として「href＝“001.html」、登録番号として「３」が格納されているものとする。
【００４０】
図５の２段目に示すように、記憶領域Ａ１のタグ文字列が「<a  href＝“001.html”>」である場合とする。タグ文字列および動的辞書Ｔ１のそれぞれの属性部分の文字列が完全一致する場合には、情報処理装置は、タグ文字列を、動的辞書Ｔ１によって符号化する。すなわち、情報処理装置は、タグ文字列を、動的辞書Ｔ１に既に登録されている登録番号「３」に圧縮符号化することで、圧縮データｄ１０を生成する。情報処理装置は、圧縮データｄ１０を記憶領域Ａ４に書き込む。圧縮データｄ１０は、タグ識別子としてタグ文字列の圧縮データである旨を示す「０」、圧縮符号として登録番号を示す「３」、可変部識別子として圧縮データに可変部情報がないことを示す「０」を有する。
【００４１】
図５の３段目に示すように、記憶領域Ａ１のタグ文字列が「<a  href＝“0002.html”>」である場合とする。タグ文字列および動的辞書Ｔ１のそれぞれの属性部分の文字列が完全一致しない場合には、情報処理装置は、属性部分の文字列の中間部分が不一致であるか否かを判定する。属性部分の文字列の中間部分が不一致であることは、例えば、前方一致および後方一致により判定される。図５の３段目の例では、符号ｚ１で示される「１」の部分と符号ｚ２で示される「０２」の部分とが不一致である。属性部分の文字列の中間部分が不一致である場合には、情報処理装置は、タグ文字列を、動的辞書Ｔ１によって符号化する。すなわち、情報処理装置は、動的辞書Ｔ１に登録されている登録番号「３」の末尾に可変部情報を付加することで、圧縮データｄ１０を生成する。情報処理装置は、圧縮データｄ１０を記憶領域Ａ４に書き込む。圧縮データｄ１０は、タグ識別子としてタグ文字列の圧縮データである旨を示す「０」、圧縮符号として登録番号を示す「３」、可変部識別子として圧縮データに可変部情報があることを示す「１」を有する。さらに、圧縮データｄ１０は、可変部開始位置を示す「９」、可変部の長さを示す「１」、置換文字列の長さを示す「２」、置換文字列を示す「０２」を含む可変部情報を有する。
【００４２】
情報処理装置は、記憶領域Ａ４に格納された圧縮データを、圧縮ファイルＦ２に格納する。
【００４３】
ここで、属性部分の文字列が不一致であるが、中間部分が不一致でない場合の符号化を、図６を参照して説明する。図６は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図（３）である。属性部分の文字列の中間部分が不一致でない場合として、属性の順序が入れ替わっている場合とする。動的辞書Ｔ１には、タグ名として「meta」、属性部分の文字列として「Content=”text/css”  http-eguiv=”Content-Style=type”」、登録番号として「４」が格納されているものとする。
【００４４】
記憶領域Ａ１のタグ文字列が、「<meta  http-eguiv=”Content-Style=type”  Content=”text/css”>」である場合とする。つまり、動的辞書Ｔ１のタグ名「meta」に対応する属性部分の文字列内の属性の順序が入れ替わっている場合である。このような状況の下、動的辞書Ｔ１にタグ名「meta」が格納されているので、情報処理装置は、タグ文字列および動的辞書Ｔ１のそれぞれの属性部分の文字列が完全一致するか否かを判定する。タグ文字列および動的辞書Ｔ１のそれぞれの属性部分の文字列が完全一致しないので、情報処理装置は、属性部分の文字列の中間部分が不一致であるか否かを判定する。
【００４５】
属性部分の文字列の中間部分が不一致であることは、例えば、前方一致および後方一致により判定される。図６の例では、属性部分の文字列内の属性が入れ替わっている場合であるので、前方一致および後方一致せず、属性部分の文字列の中間部分が不一致でない。そこで、情報処理装置は、タグ文字列「<meta  http-eguiv=”Content-Style=type”  Content=”text/css”>」の内容を、新たに動的辞書Ｔ１に登録する。動的辞書Ｔ１には、タグ名として「meta」、属性部分の文字列として「http-eguiv=”Content-Style=type”  Content=”text/css”」、新たな登録番号として「５」が格納される。そして、情報処理装置は、タグ文字列を、動的辞書Ｔ１によって符号化する。すなわち、情報処理装置は、タグ文字列を、動的辞書Ｔ１に登録された登録番号「５」に圧縮符号化することで、圧縮データｄ１０を生成する。情報処理装置は、圧縮データｄ１０を記憶領域Ａ４に書き込む。圧縮データｄ１０は、タグ識別子としてタグ文字列の圧縮データである旨を示す「０」、圧縮符号として登録番号を示す「５」、可変部識別子として圧縮データに可変部情報がないことを示す「０」を有する。
【００４６】
図７は、本実施例に係る情報処理装置の伸長処理の流れの一例を示す図である。情報処理装置は、伸長処理のワークエリアとして、メモリに記憶領域Ｂ１、記憶領域Ｂ２および記憶領域Ｂ３を設ける。情報処理装置は、圧縮ファイルＦ２を記憶領域Ｂ１にロードし、順次圧縮データを読み出す。情報処理装置は、読み出した圧縮データに基づいて、伸長データの生成を行う。
【００４７】
情報処理装置は、圧縮データに含まれるタグ識別子に応じた伸長処理を行う。情報処理装置は、生成した伸長データを記憶領域Ｂ４に格納し、記憶領域Ｂ４に格納された伸長データに基づいて伸長ファイルＦ４が生成される。以下の説明では適宜、記憶領域Ｂ１を符号化部と呼び、記憶領域Ｂ２を参照部と呼び、記憶領域Ｂ３を動的辞書部と呼ぶ。図２に示した圧縮データｄ１０，ｄ２０に対する伸長処理を説明する。なお、タグ文字列「<a  href＝“001.html”>」について、動的辞書Ｔ１に記憶されている登録番号は「３」であるとする。
【００４８】
情報処理装置は、圧縮データｄ１０を読み出し、圧縮データｄ１０のタグ識別子を判定する。
【００４９】
情報処理装置は、圧縮データｄ１０のタグ識別子が「０」である場合には、圧縮データｄ１０が、タグが符号化されたと判定する。情報処理装置は、圧縮データｄ１０内の圧縮符号および可変部識別子に基づいて、記憶領域Ｂ３を参照し、伸長データを生成する。
【００５０】
例えば、情報処理装置は、可変部識別子が「０」である場合には、圧縮データｄ１０に可変部情報がないと判定する。そして、情報処理装置は、圧縮データｄ１０に含まれる登録番号と、記憶領域Ｂ３の動的辞書Ｔ１とを比較して、タグ名および属性部分の文字列を特定する。そして、情報処理装置は、タグ名および属性部分の文字列を連結して、伸長データを生成する。ここでは、圧縮データｄ１０内の登録番号「３」は、動的辞書Ｔ１内のタグ名「ａ」および属性部分の文字列「href=“001.html”」を示すため、伸長データとして、「<a  href=“001.html”>」の文字列が生成される。
【００５１】
なお、情報処理装置は、可変部識別子が「１」である場合には、圧縮データｄ１０に可変部情報があると判定し、以下のように処理すれば良い。情報処理装置は、圧縮データｄ１０に含まれる登録番号と、記憶領域Ｂ３の動的辞書Ｔ１とを比較して、タグ名および属性部分の文字列を特定する。そして、情報処理装置は、タグ名および属性部分の文字列を、圧縮データｄ１０に含まれる可変部情報によって変換して得られた伸長データを生成する。一例として、可変部情報が、可変部開始位置を示す「９」、可変部の長さを示す「１」、置換文字列の長さを示す「２」、置換文字列を示す「０２」であるとする。すると、伸長データとして、「<a  href=“0002.html”>」の文字列が生成される。
【００５２】
また、情報処理装置は、伸長データを、記憶領域Ｂ４に書き込む。
【００５３】
情報処理装置は、圧縮データｄ２０のタグ識別子が「１」である場合には、圧縮データｄ２０が、タグでない文字列が符号化されたと判定する。情報処理装置は、圧縮データｄ２０内の圧縮符号に基づいて、記憶領域Ｂ２を参照し、伸長データを生成する。
【００５４】
例えば、情報処理装置は、圧縮データｄ２０に含まれるＬＺ７７の圧縮符号が最長一致文字列に基づく圧縮データである旨を示す識別子（図示しない「１」）を含む場合、以下の処理を行う。情報処理装置は、ＬＺ７７の圧縮符号に含まれる、記憶領域Ｂ２内での位置と最長一致文字列のデータ長を特定する。情報処理装置は、位置と最長一致文字列のデータ長に対応する文字列を、記憶領域Ｂ２から読み出し、読み出した文字列を伸長データとする。一例として、伸長データとして、「This  is  a  」の文字列が生成される。
【００５５】
また、情報処理装置は、圧縮データｄ２０に含まれるＬＺ７７の圧縮符号が最長一致文字列に基づく圧縮データでない旨を示す識別子（図示しない「０」）を含む場合、以下の処理を行う。情報処理装置は、ＬＺ７７の圧縮符号に含まれる文字コードを伸長データとする。一例として、伸長データとして、「Ｐ」が生成される。また、後続する圧縮データｄ２０によって伸長データとして、「ｅ」、「ｎ」が生成される。
【００５６】
また、情報処理装置は、伸長データを、記憶領域Ｂ４に書き込む。
【００５７】
図８は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。図８に示すように、この情報処理装置１００は、圧縮部１００ａと、伸長部１００ｂと、記憶部１００ｃとを有する。
【００５８】
圧縮部１００ａは、図２、図５、図６に示した圧縮処理を実行する処理部である。伸長部１００ｂは、図７に示した伸長処理を実行する処理部である。情報処理装置１００は、図２、図５、図６などに示した記憶領域Ａ１〜Ａ４、Ｂ１〜Ｂ４を、記憶部１００ｃに設定する。
【００５９】
図９は、本実施例に係る圧縮部の構成の一例を示す機能ブロック図である。図９に示すように、この圧縮部１００ａは、ファイルリード部１０１、タグ判定部１０２、タグ符号化部１０３、テキスト符号化部１０４、更新部１０５およびファイルライト部１０６を有する。なお、タグ判定部１０２は、判定部の一例である。タグ符号化部１０３は、第２の変換処理部の一例である。テキスト符号化部１０４は、第１の変換処理部の一例である。
【００６０】
ファイルリード部１０１は、ファイルＦ１内のコンテンツ部分の文字列を記憶領域Ａ１に読み出す。ファイルリード部１０１は、記憶領域Ａ１に読み出された文字列を抽出し、抽出した文字列を判定部１０２に出力する。
【００６１】
タグ判定部１０２は、文字列がタグであるか否かを判定する。例えば、タグ判定部１０２は、文字列の先頭文字がタグの開始記号‘＜’であるか否かを判定する。タグ判定部１０２は、文字列の先頭文字がタグの開始記号‘＜’である場合には、タグ文字列をタグ符号化部１０３に出力する。タグ文字列は、開始記号‘＜’から始まり、終了記号‘＞’で終わる文字列である。また、タグ判定部１０２は、文字列の先頭文字がタグの開始記号‘＜’でない場合には、文字列をテキスト符号化部１０４に出力する。
【００６２】
タグ符号化部１０３は、タグ文字列を符号化する。タグ符号化部１０３は、タグ文字列比較部１０３ａ、第１タグ符号化部１０３ｂおよび第２タグ符号化部１０３ｃを有する。
【００６３】
タグ文字列比較部１０３ａは、タグ文字列と記憶領域Ａ３内の動的辞書Ｔ１とを照合し、タグ文字列に含まれるタグ名が動的辞書Ｔ１に登録されているか否かを判定する。タグ文字列比較部１０３ａは、タグ文字列に含まれるタグ名が動的辞書Ｔ１に登録されていない場合には、タグ文字列を第１タグ符号化部１０３ｂに出力する。タグ文字列比較部１０３ａは、タグ文字列に含まれるタグ名が動的辞書Ｔ１に登録されている場合には、タグ文字列を第２タグ符号化部１０３ｃに出力する。
【００６４】
第１タグ符号化部１０３ｂは、タグ文字列の内容を動的辞書Ｔ１に登録し、新規登録した登録番号を圧縮符号とする圧縮データを生成する。一例として、動的辞書Ｔ１には、登録番号として新たな登録番号、タグ名としてタグ文字列に含まれるタグ名、属性部分の文字列としてタグ文字列に含まれる属性部分の文字列が登録される。圧縮データには、タグ識別子として「０」、圧縮符号として新規登録した登録番号、可変部識別子として「０」が設定される。
【００６５】
また、第１タグ符号化部１０３ｂは、圧縮データをファイルライト部１０６に出力する。
【００６６】
第２タグ符号化部１０３ｃは、タグ文字列の属性部分の文字列と、動的辞書Ｔ１の属性部分の文字列とが完全一致するか否かを判定する。第２タグ符号化部１０３ｃは、完全一致する場合には、タグ文字列のタグ名と同じタグ名に対応する登録番号を圧縮符号とする圧縮データを生成する。一例として、圧縮データには、タグ識別子として「０」、圧縮符号として該当する登録番号、可変部識別子として「０」が設定される。
【００６７】
また、第２タグ符号化部１０３ｃは、完全一致しない場合には、タグ文字列における属性部分の文字列の中間部分が不一致であるか否かを判定する。例えば、第２タグ符号化部１０３ｃは、動的辞書Ｔ１の属性部分の文字列とタグ文字列における属性部分の文字列とを前方一致検索する。第２タグ符号化部１０３ｃは、動的辞書Ｔ１の属性部分の文字列とタグ文字列における属性部分の文字列とを後方一致検索する。第２タグ符号化部１０３ｃは、前方一致の文字列および後方一致の文字列があれば、タグ文字列における属性部分の文字列の中間部分が不一致であると判定する。第２タグ符号化部１０３は、前方一致の文字列および後方一致の文字列のいずれか一方がなければ、タグ文字列における属性部分の文字列の中間部分が不一致でないと判定する。
【００６８】
また、第２タグ符号化部１０３ｃは、タグ文字列における属性部分の文字列の中間部分が不一致である場合には、タグ文字列のタグ名と同じタグ名に対応する登録番号を圧縮符号とする圧縮データを生成する。加えて、第２タグ符号化部１０３ｃは、登録番号の末尾に不一致部分の情報を可変部情報として付加する。一例として、圧縮データには、タグ識別子として「０」、圧縮符号として該当する登録番号、可変部識別子として「１」が設定される。また、圧縮データには、可変部開始位置、可変部の長さ、置換文字列の長さ、置換文字列を含む可変部情報が付加される。
【００６９】
また、第２タグ符号化部１０３ｃは、タグ文字列における属性部分の文字列の中間部分が不一致でない場合には、タグ文字列を第１タグ符号化部１０３ｂに出力する。これは、タグ文字列の内容を動的辞書Ｔ１に新たに登録するためである。
【００７０】
また、第２タグ符号化部１０３ｃは、圧縮データをファイルライト部１０６に出力する。
【００７１】
テキスト符号化部１０４は、タグ以外の文字列（テキスト）を符号化する。テキスト符号化部１０４は、文字列が参照部の文字列と最長一致するか否かを判定する。テキスト符号化部１０４は、文字列が参照部の文字列と最長一致する場合には、最長一致文字列の記憶領域Ａ２内での位置とデータ長に基づき、ＬＺ７７の圧縮符号を含む圧縮データを生成する。一例として、圧縮データには、タグ識別子として「１」が設定される。圧縮符号として最長一致文字列に基づく圧縮データである旨を示す識別子（例えば「１」）および最長一致文字列の記憶領域Ａ２内での位置とデータ長が設定される。
【００７２】
また、テキスト符号化部１０４は、文字列が記憶領域Ａ２の文字列と最長一致しない場合には、先頭の文字コードそのものを含むＬＺ７７の圧縮符号を含む圧縮データを生成する。一例として、圧縮データには、タグ識別子として「１」が設定される。圧縮符号として最長一致文字列に基づく圧縮データでない旨を示す識別子（例えば「０」）および文字コードそのものが設定される。
【００７３】
また、テキスト符号化部１０４は、圧縮データをファイルライト部１０６に出力する。
【００７４】
更新部１０５は、テキスト符号化部１０４によって、タグ以外の文字列の符号化が完了した後に、符号化した文字列分、スライド窓をシフトする。すなわち、更新部１０５は、記憶領域Ａ１の符号化した文字列を、記憶領域Ａ２に格納するとともに、記憶領域Ａ２内の文字列を、符号化した文字列分左シフトすることで、記憶領域Ａ２を更新する。更新部１０５は、テキスト符号化部１０４によるタグ以外の文字列の符号化が完了するたびに、スライド窓をシフトする。なお、更新部１０５は、タグ符号化部１０３によって、タグの符号化が完了した後に、スライド窓をシフトしない。これにより、タグの文字列が記憶領域Ａ２に流されないので、タグ以外の文字列の最長一致文字列が記憶領域Ａ２から追い出されにくいこととなり、タグ以外の文字列の圧縮率が向上する。つまり、タグ以外の文字列は、１文字ずつ符号化されないので、圧縮率が向上する。
【００７５】
ファイルライト部１０６は、タグ符号化部１０３およびテキスト符号化部１０４から圧縮データを取得し、取得した圧縮データを記憶領域Ａ４に書き込む。ファイルライト部１０６は、記憶領域Ａ４に格納された圧縮データおよび動的辞書Ｔ１を、圧縮ファイルＦ２に格納する。
【００７６】
図１０は、本実施例に係る伸長部の構成の一例を示す機能ブロック図である。図１０に示すように、この伸長部１００ｂは、ファイルリード部１１０、タグ識別子判定部１１１、タグ伸長部１１２、テキスト伸長部１１３、更新部１１４およびファイルライト部１１５を有する。
【００７７】
ファイルリード部１１０は、圧縮ファイルＦ２内の圧縮データを記憶領域Ｂ１に読み出す。ファイルリード部１１０は、記憶領域Ｂ１に格納された圧縮データに対する処理が終了した場合に、新たな圧縮データを圧縮ファイルＦ２から読み出し、記憶領域Ｂ１に格納された圧縮データを更新する。
【００７８】
タグ識別子判定部１１１は、記憶領域Ｂ１に格納された圧縮データのタグ識別子を読み出し、タグ識別子が「０」であるか「１」であるかを判定する。タグ識別子は、圧縮データの先頭ビットに対応する。タグ識別子が「０」である場合には、圧縮データが、タグ文字列が符号化されたことを示す。タグ識別子が「１」である場合には、圧縮データが、タグ以外の文字列（テキスト）が符号化されたことを示す。タグ識別子判定部１１１は、圧縮データのタグ識別子が「０」である場合には、圧縮データをタグ伸長部１１２に出力する。タグ識別子判定部１１１は、圧縮データのタグ識別子が「１」である場合には、圧縮データをテキスト伸長部１１３に出力する。
【００７９】
タグ伸長部１１２は、圧縮データ内の圧縮符号および可変部識別子に基づいて、記憶領域Ｂ３を参照し、伸長データを生成する。可変部識別子が「０」である場合には、圧縮データに可変部情報がないことを示す。可変部識別子が「１」である場合には、圧縮データに可変部情報があることを示す。
【００８０】
例えば、タグ伸長部１１２は、可変部識別子が「０」である場合には、圧縮データに含まれる登録番号と、記憶領域Ｂ３の動的辞書Ｔ１とを比較して、登録番号に対応するタグ名および属性部分の文字列を特定する。タグ伸長部１１２は、タグ名および属性部分の文字列を連結して、伸長データを生成する。
【００８１】
また、タグ伸長部１１２は、可変部識別子が「１」である場合には、圧縮データに含まれる登録番号と、記憶領域Ｂ３の動的辞書Ｔ１とを比較して、登録番号に対応するタグ名および属性部分の文字列を特定する。加えて、タグ伸長部１１２は、属性部分の文字列を可変部情報によって変換する。タグ伸長部１１２は、タグ名および変換して得られた文字列を連結して、伸長データを生成する。
【００８２】
また、タグ伸長部１１２は、生成した伸長データをファイルライト部１１５に出力する。
【００８３】
テキスト伸長部１１３は、圧縮データ内のＬＺ７７の圧縮符号に基づいて、記憶領域Ｂ２を参照し、伸長データを生成する。
【００８４】
例えば、テキスト伸長部１１３は、圧縮符号が最長一致文字列に基づく圧縮データである旨を示す識別子（例えば「１」）を含む場合には、圧縮符号に含まれる、最長一致文字列の位置とデータ長を特定する。テキスト伸長部１１３は、位置とデータ長に対応する文字列を記憶領域Ｂ２から読み出し、読み出した文字列を伸長データとして生成する。
【００８５】
また、テキスト伸長部１１３は、圧縮符号が最長一致文字列に基づく圧縮データでない旨を示す識別子（例えば「０」）を含む場合には、圧縮符号に含まれる文字コードそのものを伸長データとして生成する。
【００８６】
また、テキスト伸長部１１３は、生成した伸長データをファイルライト部１１５に出力する。
【００８７】
更新部１１４は、タグ伸長部１１２によって伸長された圧縮データを記憶領域Ｂ１から削除する。更新部１１４は、テキスト伸長部１１３によって伸長された圧縮データを記憶領域Ｂ１から削除するとともに、伸長データの文字列分記憶領域Ｂ２を左シフトし、伸長データを記憶領域Ｂ２に書き込む。
【００８８】
ファイルライト部１１５は、タグ伸長部１１２およびテキスト伸長部１１３から伸長データを取得し、取得した伸長データを記憶領域Ｂ４に書き込む。
【００８９】
次に、図１１および図１２に示した圧縮部１００ａおよび伸長部１００ｂの処理手順について説明する。
【００９０】
図１１は、本実施例に係る圧縮部の処理手順を示すフローチャートである。図１１に示すように、圧縮部１００ａは、前処理を実行する（ステップＳ１０１）。ステップＳ１０１の前処理において、圧縮部１００ａは、記憶領域Ａ１〜Ａ４を記憶部１００ｃに確保する。そして、圧縮部１００ａは、圧縮対象のファイルＦ１の文字列を記憶領域Ａ１に読み出す（ステップＳ１０２）。
【００９１】
そして、圧縮部１００ａは、記憶領域Ａ１の先頭から文字列を抽出し、文字列の先頭がタグ文字列の開始記号‘＜’であるか否かを判定する（ステップＳ１０３）。
【００９２】
圧縮部１００ａは、文字列の先頭がタグ文字列の開始記号‘＜’である場合には（ステップＳ１０３；Ｙｅｓ）、以下のように、タグ符号化処理を行う。圧縮部１００ａは、タグ文字列に含まれるタグ名が動的辞書Ｔ１に登録済みであるか否かを判定する（ステップＳ１０４）。
【００９３】
圧縮部１００ａは、タグ文字列に含まれるタグ名が動的辞書Ｔ１に登録済みでない場合には（ステップＳ１０４；Ｎｏ）、タグ文字列を動的辞書Ｔ１に新規登録する（ステップＳ１０５）。そして、圧縮部１００ａは、タグ識別子として「０」および圧縮符号として新規登録した登録番号を含む圧縮データを出力する（ステップＳ１０６）。圧縮データには、可変部識別子として「０」が設定される。そして、圧縮部１００ａは、ステップＳ１１２に移行する。
【００９４】
一方、圧縮部１００ａは、タグ文字列に含まれるタグ名が動的辞書Ｔ１に登録済みである場合には（ステップＳ１０４；Ｙｅｓ）、属性部分の文字列が完全一致するか否かを判定する（ステップＳ１０７）。例えば、圧縮部１００ａは、タグ文字列に含まれる属性部分の文字列と、動的辞書Ｔ１の該当する属性部分の文字列とが完全一致するか否かを判定する。
【００９５】
圧縮部１００ａは、属性部分の文字列が完全一致しない場合には（ステップＳ１０７；Ｎｏ）、属性部分の文字列の中間部分が不一致であるか否かを判定する（ステップＳ１０８）。圧縮部１００ａは、属性部分の文字列の中間部分が不一致でない場合には（ステップＳ１０８；Ｎｏ）、タグ文字列を新規に動的辞書Ｔ１に登録すべく、ステップＳ１０５に移行する。一例として、属性部分の文字列内の属性の順序が入れ替わっている場合である。
【００９６】
一方、圧縮部１００ａは、属性部分の文字列の中間部分が不一致である場合には（ステップＳ１０８；Ｙｅｓ）、タグ識別子として「０」および圧縮符号としてタグ文字列のタグ名と同じタグ名に対応する登録番号を含む圧縮データを生成する（ステップＳ１０９）。そして、圧縮部１００ａは、生成した圧縮データに可変部情報を付加して得られた圧縮データを出力する（ステップＳ１１０）。圧縮データには、可変部識別子として「１」が設定され、可変部情報には、不一致部分の情報が設定される。そして、圧縮部１００ａは、ステップＳ１１２に移行する。
【００９７】
ステップＳ１０７では、圧縮部１００ａは、属性部分の文字列が完全一致する場合には（ステップＳ１０７；Ｙｅｓ）、タグ識別子として「０」および圧縮符号としてタグ文字列のタグ名と同じタグ名に対応する登録番号を含む圧縮データを出力する（ステップＳ１１１）。圧縮データには、可変部識別子として「０」が設定される。そして、圧縮部１００ａは、ステップＳ１１２に移行する。
【００９８】
ステップＳ１１２では、圧縮部１００ａは、圧縮データを記憶領域Ａ４に書き込み（ステップＳ１１２）、記憶領域Ａ１に処理する文字列があるか否かを判定する（ステップＳ１１３）。圧縮部１００ａは、記憶領域Ａ１に処理する文字列がある場合には（ステップＳ１１３；Ｙｅｓ）、ステップＳ１０３に移行する。一方、圧縮部１００ａは、記憶領域Ａ１に処理する文字列がない場合には（ステップＳ１１３；Ｎｏ）、圧縮処理を終了する。
【００９９】
ところで、圧縮部１００ａは、ステップＳ１０３において、文字列の先頭がタグ文字列の開始記号‘＜’でない場合には（ステップＳ１０３；Ｎｏ）、以下のように、ＬＺ７７におけるテキスト符号化処理を行う。圧縮部１００ａは、文字列が記憶領域Ａ２の文字列と最長一致するか否かを判定する（ステップＳ１１４）。
【０１００】
圧縮部１００ａは、文字列が記憶領域Ａ２の文字列と最長一致する場合には（ステップＳ１１４；Ｙｅｓ）、タグ識別子として「１」および圧縮符号として最長一致文字列の位置と長さを含む圧縮データを出力する（ステップＳ１１５）。そして、圧縮部１００ａは、ステップＳ１１７に移行する。
【０１０１】
一方、圧縮部１００ａは、文字列が記憶領域Ａ２の文字列と最長一致しない場合には（ステップＳ１１４；Ｎｏ）、タグ識別子として「１」および圧縮符号として文字コードそのものを含む圧縮データを出力する（ステップＳ１１６）。そして、圧縮部１００ａは、ステップＳ１１７に移行する。
【０１０２】
ステップＳ１１７では、圧縮部１００ａは、圧縮データに符号化した文字列分、スライド窓をシフトする（ステップＳ１１７）。すなわち、圧縮部１００ａは、記憶領域Ａ１の符号化した文字列を、記憶領域Ａ２に格納するとともに、記憶領域Ａ２内の文字列を、符号化した文字列分左シフトすることで、記憶領域Ａ２を更新する。そして、圧縮部１００ａは、ステップＳ１１２に移行する。
【０１０３】
図１２は、本実施例に係る伸長部の処理手順を示すフローチャートである。図１２に示すように、伸長部１００ｂは、前処理を実行する（ステップＳ２０１）。ステップＳ２０１の前処理において、伸長部１００ｂは、記憶領域Ｂ１〜Ｂ４を記憶部１００ｃに確保する。
【０１０４】
伸長部１００ｂは、圧縮ファイルＦ２を読み出し（ステップＳ２０２）、動的辞書を読み出す（ステップＳ２０３）。
【０１０５】
伸長部１００ｂは、圧縮データのタグ識別子が「０」であるか否かを判定する（ステップＳ２０４）。伸長部１００ｂは、タグ識別子が「０」である場合には（ステップＳ２０４；Ｙｅｓ）、圧縮データの可変部識別子が「０」であるか否かを判定する（ステップＳ２０５）。
【０１０６】
伸長部１００ｂは、圧縮データの可変部識別子が「０」である場合には（ステップＳ２０５；Ｙｅｓ）、圧縮データに可変部情報がないと判断し、登録番号を基にして伸長データを生成する（ステップＳ２０６）。例えば、伸長部１００ｂは、圧縮データに含まれる登録番号と、記憶領域Ｂ３の動的辞書Ｔ１とを比較して、登録番号に対応するタグ名および属性部分の文字列を特定する。伸長部１００ｂは、タグ名および属性部分の文字列を連結して、伸長データを生成する。そして、伸長部１００ｂは、ステップＳ２０８に移行する。
【０１０７】
一方、伸長部１００ｂは、圧縮データの可変部識別子が「０」でない場合には（ステップＳ２０５；Ｎｏ）、圧縮データに可変部情報があると判断し、登録番号と可変部情報を基にして伸長データを生成する（ステップＳ２０７）。例えば、伸長部１００ｂは、圧縮データに含まれる登録番号と、記憶領域Ｂ３の動的辞書Ｔ１とを比較して、登録番号に対応するタグ名および属性部分の文字列を特定する。そして、伸長部１００ｂは、属性部分の文字列を圧縮データに含まれる可変部情報によって変換する。そして、伸長部１００ｂは、タグ名および変換して得られた文字列を連結して、伸長データを生成する。そして、伸長部１００ｂは、ステップＳ２０８に移行する。
【０１０８】
ステップＳ２０８では、伸長部１００ｂは、記憶領域Ｂ４に伸長データの書き込みを行う（ステップＳ２０８）。
【０１０９】
伸長部１００ｂは、記憶領域Ｂ１に処理する圧縮データがあるか否かを判定する（ステップＳ２０９）。伸長部１００ｂは、記憶領域Ｂ１に処理する圧縮データがある場合には（ステップＳ２０９；Ｙｅｓ）、ステップＳ２０４に移行する。一方、伸長部１００ｂは、記憶領域Ｂ１に処理する圧縮データがない場合には（ステップＳ２０９；Ｎｏ）、伸長処理を終了する。
【０１１０】
ところで、伸長部１００ｂは、タグ識別子が「０」でない場合には（ステップＳ２０４；Ｎｏ）、圧縮符号が最長一致文字列に基づく圧縮データである旨を示す識別子（例えば「１」）を含むか否かを判定する（ステップＳ２１０）。伸長部１００ｂは、圧縮符号が最長一致文字列に基づく圧縮データである旨を示す識別子を含む場合には（ステップＳ２１０；Ｙｅｓ）、最長一致文字列の位置と長さを基にして伸長データを生成する（ステップＳ２１１）。例えば、伸長部１００ｂは、圧縮符号に含まれる、最長一致文字列の位置と長さを特定する。そして、伸長部１００ｂは、位置と長さに対応する文字列を記憶領域Ｂ２から読み出し、読み出した文字列を伸長データとして生成する。そして、伸長部１００ｂは、ステップＳ２１２Ａに移行する。
【０１１１】
一方、伸長部１００ｂは、圧縮符号が最長一致文字列に基づく圧縮データでない旨を示す識別子を含む場合には（ステップＳ２１０；Ｎｏ）、文字コードを伸長データとして特定する（ステップＳ２１２）。例えば、伸長部１００ｂは、圧縮符号に含まれる、文字コードそのものを伸長データとして特定する。そして、伸長部１００ｂは、ステップＳ２１２Ａに移行する。
【０１１２】
ステップＳ２１２Ａにおいて、伸長部１００ｂは、記憶領域Ｂ２を更新する（ステップＳ２１２Ａ）。例えば、伸長部１００ｂは、伸長された圧縮データを記憶領域Ｂ１から削除するとともに、伸長データの文字列分記憶領域Ｂ２を左シフトし、伸長データを記憶領域Ｂ２に書き込む。そして、伸長部１００ｂは、ステップＳ２０８に移行する。
【０１１３】
次に、本実施例に係る情報処理装置１００の効果について説明する。情報処理装置１００は、タグを含む文字データ列を入力する。情報処理装置１００は、入力した文字データ列に対するスライド窓を用いた圧縮処理を行う際に、圧縮処理の対象文字列がタグであるか否かを判定する。情報処理装置１００は、圧縮処理の対象文字列がタグを含まない場合は、圧縮処理の対象文字列にスライド窓を用いた圧縮処理を行い、圧縮処理の対象文字列をスライド窓の領域に移動する。情報処理装置１００は、圧縮処理の対象文字列がタグを含む場合は、当該タグに対し、スライド窓を用いた圧縮処理とは異なる圧縮処理を行う。かかる構成によれば、情報処理装置１００は、圧縮処理の対象文字列がタグを含む場合には、スライド窓を用いた圧縮処理とは異なる圧縮処理を行うので、スライド窓を用いた圧縮処理の処理対象の、タグを含まない文字列の圧縮率を向上させることが可能となる。
【０１１４】
また、本実施例に係る情報処理装置１００によれば、異なる圧縮処理を行う際に、さらに、タグの文字列をスライド窓の領域と異なる領域であるタグ領域に移動する。かかる構成によれば、情報処理装置１００は、タグの文字列をスライド窓の領域に移動しないので、タグを含まない文字列の圧縮率を向上させることができる。
【０１１５】
また、本実施例に係る情報処理装置１００によれば、別の圧縮処理を行う際に、タグ全体の内容を纏めて１つの登録番号と対応付けて動的辞書Ｔ１に登録し、登録番号に基づく情報に、圧縮対象の文字列を圧縮する。かかる構成によれば、情報処理装置１００は、タグ全体の内容を纏めて１つの登録番号と対応付けて動的辞書Ｔ１に登録し、タグ全体を１つの登録番号に基づく情報に圧縮する。この結果、情報処理装置１００は、１つのタグ全体が分断されて複数の圧縮符号に割り当てられることを防止でき、圧縮率を向上させることができる。つまり、情報処理装置１００は、タグ全体の泣き別れを防止できる。
【０１１６】
また、本実施例に係る情報処理装置１００によれば、別の圧縮処理を行う際に、タグの内容が動的辞書Ｔ１に記憶されたタグの内容と完全一致するか否かを判定する。情報処理装置１００は、完全一致する場合には、完全一致するタグの内容に対応付けられた登録番号に圧縮対象の文字列を圧縮する。かかる構成によれば、情報処理装置１００は、既に登録された登録番号に圧縮対象の文字列を圧縮することで、圧縮率が向上するとともに、圧縮速度も向上することができる。
【０１１７】
また、本実施例に係る情報処理装置１００によれば、完全一致しない場合には、タグの内容のうちタグの名称が一致し、且つタグの名称以外の内容が部分一致であれば、タグの内容に対応付けられた登録番号に不一致部分の内容を付加した情報に圧縮対象の文字列を圧縮する。かかる構成によれば、情報処理装置１００は、タグに関して最長一致文字列探索をする場合と比較して、圧縮率を向上させることが可能となる。また、情報処理装置１００は、動的辞書Ｔ１に要する記憶容量を軽減することが可能となる。
【０１１８】
ここで、圧縮率を向上させることが可能となることについて、図５の３段目を参照して説明する。記憶領域Ａ１のタグ文字列が「<a  href＝“0002.html”>」である場合に、動的辞書Ｔ１に記憶されているタグの内容について、符号ｚ１で示される「１」の部分と符号ｚ２で示される「０２」の部分とが不一致である。仮に、最長一致文字列探索をする場合、前半部分と後半部分が、最長一致文字列となり、中間の不一致部分が、最長一致文字列とならない。最長一致文字列探索をする場合の圧縮データのサイズは、前半部分では位置と長さを示す３バイト、後半部分では位置と長さを示す３バイト、中間の不一致部分が不一致文字数を示す２バイトを加算して得られる約８バイトとなる。一方、実施例に係る圧縮データのサイズは、登録番号を示す２バイト、可変部情報として可変部開始位置を示す１バイト、可変部の長さを示す１バイト、置換文字列の長さを示す１バイト、置換文字列を示す２バイトを加算して得られる約７バイトとなる。したがって、実施例に係る圧縮データのサイズの方が、最長一致文字列探索をする場合の圧縮データのサイズより短くなる。よって、情報処理装置１００は、最長一致文字列探索をする場合と比較して、圧縮率を向上させることが可能となる。
【０１１９】
下記に、本実施形態に用いられるハードウェア及びソフトウェアについて説明する。図１３は、コンピュータ１のハードウェア構成例を示す図である。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【０１２０】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【０１２１】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク３を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワークによりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【０１２２】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１と一体になっていてもよいし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であってもよい。
【０１２３】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って圧縮部１００ａの処理または伸張部１００ｂの処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１００ｃの機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（圧縮対象のファイルＦ１、圧縮ファイルＦ２など）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１４を用いて説明する。
【０１２４】
図１４は、コンピュータ１で動作するプログラムの構成例を示す図である。コンピュータ１において、図１３に示すハードウェア群２１（３０１〜３１２）の制御を行なうＯＳ（オペレーティング・システム）２２が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ハードウェア群２１の制御・管理が行なわれることにより、アプリケーションプログラム２４やミドルウェア２３に従った処理がハードウェア群２１で実行される。さらに、コンピュータ１において、ミドルウェア２３またはアプリケーションプログラム２４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【０１２５】
プロセッサ３０１が、圧縮機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）圧縮部１００ａの機能が実現される。また、プロセッサ３０１が、伸張機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）伸張部１００ｂの機能が実現される。圧縮機能および伸張機能は、それぞれアプリケーションプログラム２４自体に含まれてもよいし、アプリケーションプログラム２４に従って呼び出されることで実行されるミドルウェア２３の一部であってもよい。
【０１２６】
図１５は、実施形態のシステムにおける装置の構成例を示す。図１５のシステムは、コンピュータ１ａ、コンピュータ１ｂ、基地局２およびネットワーク３を含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。
【０１２７】
図８に示す圧縮部１００ａと伸張部１００ｂとは、図１５に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれてもよい。コンピュータ１ｂが圧縮部１００ａを含み、コンピュータ１ａが伸張部１００ｂを含んでもよいし、コンピュータ１ｂが圧縮部１００ａを含み、コンピュータ１ａが伸張部１００ｂを含んでもよい。また、コンピュータ１ａとコンピュータ１ｂとの双方が、圧縮部１００ａおよび伸張部１００ｂを備えてもよい。
【０１２８】
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。圧縮処理の対象は、ファイル内のデータ以外にも、システムから出力される監視メッセージなどでもよい。例えば、バッファに順次格納される監視メッセージを上述の圧縮処理により圧縮し、ログファイルとして格納するなどの処理が行なわれる。また、例えば、データベース内のページ単位に圧縮が行なわれてもよいし、複数のページをまとめた単位で圧縮が行なわれてもよい。
【０１２９】
また、本実施例では、タグとは、開始記号‘＜’から始まり、終了記号‘＞’で終わる文字列を指すと説明したが、これに限定されず、構造化文書の中でタグと同様の役割を持つ記号であれば良い。
【０１３０】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１３１】
（付記１）コンピュータに、
タグを含む文字データ列を入力し、
前記入力した文字データ列に対するスライド窓を用いた変換処理を行う際に、前記変換処理の対象文字列がタグであるか否かを判定し、
前記変換処理の対象文字列がタグを含まない場合は、前記変換処理の対象文字列にスライド窓を用いた変換処理を行い、前記変換処理の対象文字列を前記スライド窓の領域に移動し、
前記変換処理の対象文字列がタグを含む場合は、当該タグに対し、前記スライド窓を用いた変換処理とは異なる変換処理を行う
処理を実行させることを特徴とする変換処理プログラム。
【０１３２】
（付記２）前記異なる変換処理は、さらに、前記タグを前記スライド窓の領域と異なるタグ領域に移動する処理を含むことを特徴とする付記１に記載の変換処理プログラム。
【０１３３】
（付記３）前記異なる変換処理は、前記タグの文字列を纏めて１つの登録番号と対応付けて辞書に登録し、前記登録番号に基づく情報に、前記タグの文字列を変換することを特徴とする付記１に記載の変換処理プログラム。
【０１３４】
（付記４）前記異なる変換処理は、前記タグの文字列が前記辞書に記憶されたタグの文字列と完全一致するか否かを判定し、完全一致する場合には、完全一致するタグの文字列に対応付けられた登録番号に、前記タグの文字列を変換することを特徴とする付記３に記載の変換処理プログラム。
【０１３５】
（付記５）前記異なる変換処理は、完全一致しない場合には、前記タグの文字列のうち前記タグの名称に対応する文字列が一致し、且つ前記タグの名称以外の文字列が部分一致であれば、前記タグの文字列に対応付けられた登録番号に不一致部分の文字列を付加した情報に、前記タグの文字列を変換することを特徴とする付記４に記載の変換処理プログラム。
【０１３６】
（付記６）前記タグは、タグであることを識別する記号、タグの属性を示す文字列、および、前記タグの属性を示す文字列に対応した可変部情報を含むことを特徴とする付記１から付記５までのいずれか１つに記載の変換処理プログラム。
【０１３７】
（付記７）タグを含む文字データ列を入力する入力部と、
前記入力部によって入力された前記文字データ列に対するスライド窓を用いた変換処理を行う際に、前記変換処理の対象文字列がタグであるか否かを判定する判定部と、
前記判定部によって前記変換処理の対象文字列がタグを含まない場合は、前記変換処理の対象文字列にスライド窓を用いた変換処理を行い、前記変換処理の対象文字列を前記スライド窓の領域に移動する第１の変換処理部と、
前記判定部によって前記変換処理の対象文字列がタグを含む場合は、当該タグに対し、前記スライド窓を用いた変換処理とは異なる変換処理を行う第２の変換処理部と、
を有することを特徴とする情報処理装置。
【０１３８】
（付記８）コンピュータが、
タグを含む文字データ列を入力し、
前記入力した文字データ列に対するスライド窓を用いた変換処理を行う際に、前記変換処理の対象文字列がタグであるか否かを判定し、
前記変換処理の対象文字列がタグを含まない場合は、前記変換処理の対象文字列にスライド窓を用いた変換処理を行い、前記変換処理の対象文字列を前記スライド窓の領域に移動し、
前記変換処理の対象文字列がタグを含む場合は、当該タグに対し、前記スライド窓を用いた変換処理とは異なる変換処理を行う
処理を実行することを特徴とする変換処理方法。
【符号の説明】
【０１３９】
１００  情報処理装置
１００ａ  圧縮部
１００ｂ  伸長部
１００ｃ  記憶部
【図１】
2016134754.tif 000003
【図２】
2016134754.tif 000004
【図３】
2016134754.tif 000005
【図４】
2016134754.tif 000006
【図５】
2016134754.tif 000007
【図６】
2016134754.tif 000008
【図７】
2016134754.tif 000009
【図８】
2016134754.tif 000010
【図９】
2016134754.tif 000011
【図１０】
2016134754.tif 000012
【図１１】
2016134754.tif 000013
【図１２】
2016134754.tif 000014
【図１３】
2016134754.tif 000015
【図１４】
2016134754.tif 000016
【図１５】
2016134754.tif 000017