JP6550765B2 - 文字データ変換プログラム、文字データ変換装置および文字データ変換方法 - Google Patents

文字データ変換プログラム、文字データ変換装置および文字データ変換方法 Download PDF

Info

Publication number
JP6550765B2
JP6550765B2 JP2015014399A JP2015014399A JP6550765B2 JP 6550765 B2 JP6550765 B2 JP 6550765B2 JP 2015014399 A JP2015014399 A JP 2015014399A JP 2015014399 A JP2015014399 A JP 2015014399A JP 6550765 B2 JP6550765 B2 JP 6550765B2
Authority
JP
Japan
Prior art keywords
tag
code
unit
character data
information processing
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.)
Active
Application number
JP2015014399A
Other languages
English (en)
Other versions
JP2016139309A (ja
Inventor
片岡 正弘
正弘 片岡
幸資 田尾
幸資 田尾
将夫 出内
将夫 出内
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 JP2015014399A priority Critical patent/JP6550765B2/ja
Priority to US15/005,125 priority patent/US20160217111A1/en
Priority to EP16152927.6A priority patent/EP3051429B1/en
Publication of JP2016139309A publication Critical patent/JP2016139309A/ja
Application granted granted Critical
Publication of JP6550765B2 publication Critical patent/JP6550765B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/14Tree-structured documents
    • G06F40/146Coding or compression of tree-structured data
    • 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/14Tree-structured documents
    • 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/151Transformation
    • G06F40/157Transformation using dictionaries or tables

Landscapes

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

Description

本発明は、文字データ変換プログラム等に関する。
HTML、XML等の構造化文書は、タグと文書内容(地の文)が混在するとともに、テキスト形式で表現される。この構造化文書に用いられるタグには、参照先等の可変部分を含むタグと、可変部分を含まないタグとの双方が存在する。ここで、可変部分を含むタグには、タグ全体が同一であるタグが少なく、可変部分を含まないタグは、限られた種類にとどまる。可変部分を含まないタグの一例として、<title></title>、<body></body>が挙げられる。
このようなタグと地の文が混在する文書の圧縮では、最長一致文字列探索によって符号の割り当てを行うZIP等のLZ77系圧縮が知られている。
また、別の例では、可変部分を含まないタグを有する文書を圧縮する技術が知られている(例えば、特許文献1参照)。かかる技術では、例えば、データ圧縮装置は、文字列ストリームから識別したタグを分離してタグ情報として出力する。そして、データ圧縮装置は、タグが分離された文字列ストリームの位置に識別のためにタグ符号を配置し、配置されたタグ符号を含む文字列ストリームを符号化して符号ストリームを出力する。なお、分離されたタグ情報は、文字列ストリーム中の対応するタグ符号の位置を検索する際に用いられる。
特開2000−101442号公報
しかしながら、従来の技術では、タグと地の文が混在する文書を圧縮する場合に、地の文の圧縮率が低下するという第1の問題がある。また、別の観点では、タグと地の文が混在する文書を圧縮する場合に、タグと文字列の位置関係が維持されないという第2の問題がある。
第1の問題について説明する。例えば、ZIPの場合、文書を圧縮する装置は、スライド窓に地の文とタグを配置したうえで、最長一致文字列探索を行うため、最適な文字列がスライド窓から逸脱する。すなわち、スライド窓のサイズは予め設定されており、スライド窓内に格納されるデータがスライド窓のサイズを超えると、スライド窓内に先に格納されたデータが追い出される。したがって、タグと地の文が混在する文書におけるLZ77系圧縮では、地の文の最長一致となる範囲が狭くなってしまう。つまり、タグと地の文が混在する文書におけるLZ77系圧縮では、地の文の圧縮率が低下するという問題がある。
また、第2の問題について説明する。従来のデータ圧縮装置では、タグを符号化したタグ符号を文字列ストリームの位置に配置したうえで、タグ符号と地の文とを含む文字列ストリームを圧縮するので、タグと文字列の位置関係が維持されない。
1つの側面では、タグと地の文が混在する文書を圧縮する場合であっても、地の文の圧縮率を向上させることを目的とする。1つの側面では、タグと地の文が混在する文書を圧縮した状態で、地の文に対する、タグ付け状況を考慮した文字列の検索機能を向上させることを目的とする。
第1の案では、符号化プログラムは、コンピュータに、可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別し、前記タグ部分に含まれるタグそれぞれを、タグ内容に対応した第1の種類の符号にそれぞれ変換し、前記地の文を、少なくとも前記入力文字データにおいて前記タグにより区切られる単位で第2の種類の符号に変換し、前記第1の種類の符号それぞれ、および、前記第2の種類の符号それぞれを、前記入力文字データにおけるそれぞれの符号の変換前のタグまたは文字列の位置関係を維持した状態で出力する処理を行わせる。
1つの態様によれば、タグと地の文が混在する文書を圧縮する場合であっても、地の文の圧縮率を向上させることができる。また、タグと地の文が混在する文書を圧縮した状態で、地の文に対する、タグ付け状況を考慮した文字列の検索を行うことができる。
図1は、本実施例1に係る情報処理装置の圧縮処理の流れの一例を示す図である。 図2は、本実施例1に係る動的タグ辞書の一例を示す図である。 図3は、ビットフィルタの一例を示す図である。 図4は、圧縮ファイルのブロック構成例を示す図である。 図5は、本実施例1に係る情報処理装置の伸長処理の流れの一例を示す図である。 図6は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。 図7は、伸長用のケヤキ木のデータ構造の一例を示す図である。 図8は、本実施例1に係る圧縮部の構成の一例を示す機能ブロック図である。 図9は、本実施例1に係る伸長部の構成の一例を示す機能ブロック図である。 図10は、本実施例1に係る圧縮部の処理手順を示すフローチャートである。 図11は、本実施例1に係る伸長部の処理手順を示すフローチャートである。 図12は、本実施例2に係る情報処理装置の圧縮処理の流れの一例を示す図である。 図13は、本実施例2に係る動的タグ辞書の一例を示す図である。 図14は、本実施例2に係る情報処理装置の検索処理の流れの一例を示す図である。 図15は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。 図16は、本実施例2に係る検索部の構成の一例を示す機能ブロック図である。 図17は、本実施例2に係る検索部の処理手順を示すフローチャートである。 図18Aは、本実施例3に係る情報処理装置の圧縮処理の流れの一例を示す図(1)である。 図18Bは、本実施例3に係る情報処理装置の圧縮処理の流れの一例を示す図(2)である。 図19は、本実施例3に係る情報処理装置の検索処理の流れの一例を示す図である。 図20は、実施例1〜3の情報処理装置のハードウェア構成を示す図である。 図21は、コンピュータで動作するプログラムの構成例を示す図である。
以下に、本願の開示する文字データ変換プログラム、文字データ変換装置および文字データ変換方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[圧縮処理の流れ]
まず、図1を参照して、実施例1に係る情報処理装置の圧縮処理について説明する。図1は、実施例1に係る情報処理装置の圧縮処理の流れの一例を示す図である。図1に示すように、ファイルF1は、圧縮対象のファイルであり、タグとタグ以外の地の文の文字列とが混在した文書である。
ここで、タグとは、開始記号‘<’から始まり、終了記号‘>’で終わる文字列を指し、可変部分を含まないタグ、可変部分を含むタグが含まれる。可変部分を含まないタグの一例として、<title></title>、<body></body>が挙げられる。可変部分を含むタグの一例として、アンカー名が異なる場合や属性の指定順序が異なる場合が挙げられる。例えば、ファイルF1には、「<medical_effect type=“ac01”>・・・<side_effect type=“bf03”>発熱</side_effect>・・・」というデータが含まれる。このデータの中で、<medical_effect type=“ac01”>および<side_effect type=“bf03”>が可変部分を含むタグである。このデータの中で、「発熱」がタグ以外の地の文の文字列に対応する。
情報処理装置は、圧縮対象のファイルF1に記憶された文字データを記憶領域にロードする。情報処理装置は、記憶領域の先頭から文字列を抽出し、抽出した文字列がタグであるか否かを判定する。例えば、情報処理装置は、文字列の先頭文字がタグの開始記号‘<’であるか否かを判定する。
情報処理装置は、文字列がタグである場合には、タグ全体を纏めて動的タグ辞書T0に登録し、動的タグ辞書T0に基づいて、登録したタグに対応する圧縮符号に圧縮する。
ここで、動的タグ辞書T0は、タグと動的に付された動的コードとを対応付けた辞書である。すなわち、情報処理装置は、タグ全体の文字列を登録し、登録した順に動的に付された動的コードを圧縮符号として割り当てる。なお、動的タグ辞書T0のデータ構造の一例は、後述する。
情報処理装置は、文字列がタグでない場合には、文字列を地の文としてビットフィルタB0に出力する。情報処理装置は、ビットフィルタB0と、出力された文字列とを比較して、出力された文字列がビットフィルタB0にヒットするか否かを判定する。情報処理装置は、文字列がビットフィルタB0にヒットした場合には、静的辞書に基づいて単語の文字列に対応する圧縮符号に変換する。なお、実施例では、文字列は、ビットフィルタB0にヒットするものとする。
ここで、ビットフィルタB0は、静的辞書を用いて圧縮する単語の文字列を特定するフィルタである。静的辞書は、文書毎に、単語の頻度に基づいて単語に対して圧縮符号を対応付ける辞書のことをいう。文書の一例として、圧縮対象のファイルが挙げられる。静的辞書には、それぞれの単語に対応する圧縮符号である静的コードがあらかじめ登録されている。なお、ビットフィルタB0のデータ構造の一例は、後述する。
情報処理装置は、動的タグ辞書T0に基づいた圧縮符号それぞれ、および、ビットフィルタB0に基づいた圧縮符号それぞれを、入力文字データにおけるそれぞれの圧縮符号の変換前のタグまたは地の文の位置関係を維持した状態で圧縮ファイルF2に出力する。
情報処理装置の圧縮対象のファイルF1の文字列「<side_effect type=“bf03”>・・・」を圧縮する場合の処理について説明する。
まず、情報処理装置は、文字列の先頭文字がタグの開始記号‘<’であるか否かを判定する。図1の例では、文字列の先頭文字がタグの開始記号‘<’であると判定される。このため、情報処理装置は、タグの文字列が出現された順に、タグの文字列を新たな動的コードd1に対応付けて動的タグ辞書T0に登録する。すなわち、情報処理装置は、タグの文字列「<side_effect type=“bf03”>」を纏めて新たな動的コードd1に対応付けて動的タグ辞書T0に登録する。
また、情報処理装置は、タグの文字列に対応付けられた動的タグ辞書T0の動的コードd1を圧縮符号として割り当てる。ここでは、タグの文字列「<side_effect type=“bf03”>」の圧縮符号として「F80001h」が割り当てられる。そして、情報処理装置は、圧縮符号を、入力文字データにおける該圧縮符号の変換前のタグの位置関係を維持した状態で圧縮ファイルF2に出力する。
次に、情報処理装置が圧縮対象のファイルF1の文字列「発熱」を圧縮する場合の処理について説明する。
まず、情報処理装置は、文字列の先頭文字「発」がタグの開始記号‘<’であるか否かを判定する。図1の例では、文字列の先頭文字がタグの開始記号‘<’でないと判定される。このため、情報処理装置は、文字列「発熱」を地の文としてビットフィルタB0に出力する。情報処理装置は、ビットフィルタB0と、出力された文字列「発熱」とを比較して、出力された文字列「発熱」がビットフィルタB0にヒットするか否かを判定する。情報処理装置は、文字列がヒットフィルタB0にヒットするので、静的辞書に基づいて文字列「発熱」に対応する静的コードd2を圧縮符号として特定する。そして、情報処理装置は、ビットフィルタB0に基づいた圧縮符号の変換前の地の文の位置関係を維持した状態で圧縮ファイルF2に出力する。
[動的タグ辞書の一例]
図2は、本実施例1に係る動的タグ辞書の一例を示す図である。図2に示される動的タグ辞書T0は、タグバッファT1とアドレステーブルT2とを含む。タグバッファT1は、タグの文字列を記憶する。アドレステーブルT2は、動的コードと、格納位置と、データ長とを対応付けて保持する。動的コードは、あらかじめ定められた固定長の圧縮符号であり、タグの文字列が登録された順に割り当てられるコードである。ここでは、動的コードは、16進数「F」で始まる固定長3バイトのコードである。格納位置は、タグバッファT1に格納されたタグの文字列の位置を示す。データ長は、タグバッファT1に格納されたタグの文字列の長さ(バイト長)を示す。
例えば、タグの文字列「<side_effect type=“bf03”>」に圧縮符号が割り当てられる場合について説明する。
情報処理装置は、タグの文字列「<side_effect type=“bf03”>」を纏めてタグバッファT1に格納する。情報処理装置は、タグの文字列を格納した格納位置および格納したデータ長をアドレステーブルT2に登録する。ここでは、情報処理装置は、格納位置として「28」、データ長として「25」をアドレステーブルT2に登録する。
情報処理装置は、タグの文字列に対応付けられたアドレステーブルT2の動的コードを圧縮符号として割り当てる。ここでは、情報処理装置は、タグの文字列「<side_effect type=“bf03”>」に対応付けられた動的コード「F80001h」を圧縮符号として割り当てる。
[ビットフィルタの一例]
図3は、ビットフィルタの一例を示す図である。図3に示されるビットフィルタB0は、所定の文書の日本語一般単語のビットフィルタである。図3に示すように、ビットフィルタB0は、2グラムと、ビットマップと、ポインタと、単語文字列と、文字コード列長と、静的コードとを含んで対応付ける。
2グラムは、2文字の文字コード列を示す情報である。ビットマップは、2グラムの文字コード列に対応するビットマップを示す。例えば、「00h00h」に対応するビットマップは「0_0_0_0_0」となる。ポインタは、ビットマップに対応する単語文字列の位置を示すポインタである。
単語文字列は、静的辞書に登録された日本語の単語であり、文字コード列で表わされる。ここでは、文字コード列が括弧内に示される。文字コード列長は、単語文字列に対応する文字コード列の長さである。静的コードは、単語文字列に割り当てられた圧縮符号である。
例えば、単語文字列「発熱」に圧縮符号が割り当てられる場合について説明する。情報処理装置は、ビットフィルタB0と、単語文字列「発熱」とを比較して、単語文字列「発熱」がビットフィルタB0にヒットする、静的辞書に登録されている静的コード「C00010」を圧縮符号として特定する。
[圧縮ファイルの構成例]
図4は、圧縮ファイルのブロック構成例を示す図である。図4に示すように、圧縮ファイルF2は、ヘッダ部と、圧縮データと、トレーラ部とを有する。トレーラ部は、動的タグ辞書T0の情報を記憶する。すなわち、トレーラ部は、圧縮処理が完了した後のタグバッファT1とアドレステーブルT2の情報を記憶する。動的タグ辞書T0の情報は、図2に示した動的タグ辞書の情報に対応する。ヘッダ部には、トレーラ部に格納された動的タグ辞書T0の情報へのポインタが格納される。情報処理装置は、後述する伸長処理において、ヘッダ部の動的タグ辞書T0へのポインタを利用し、動的タグ辞書T0を参照する。
[伸長処理の流れ]
図5は、本実施例1に係る情報処理装置の伸長処理の流れの一例を示す図である。図5では、伸長処理のワークエリアとして、メモリに記憶領域A1、記憶領域A2および記憶領域A3を設ける。情報処理装置は、記憶領域A2に、図4のトレーラ部に格納された動的タグ辞書T0の情報をロードする。また、情報処理装置は、圧縮ファイルF2を記憶領域A1にロードし、順次圧縮データを読み出す。情報処理装置は、読み出した圧縮データに応じた伸長処理を行う。情報処理装置は、伸長データを記憶領域A3に格納し、記憶領域A3に格納された伸長データに基づいて伸長ファイルF3を生成する。
図5では、図1に示した圧縮データd1、d2に対する伸長処理を説明する。
情報処理装置は、圧縮データを読み出し、圧縮データが動的コードであるか否かを判定する。図5の例では、圧縮データd1は、動的コードであると判定される。このため、情報処理装置は、動的タグ辞書T0を用いて圧縮データd1を伸長する。例えば、情報処理装置は、動的タグ辞書T0のアドレステーブルT2から圧縮データd1と合致する動的コードを特定し、特定した動的コードに対応する格納位置およびデータ長を取得する。そして、情報処理装置は、タグバッファT1から、取得した格納位置およびデータ長の伸長データを特定する。ここでは、伸長データとして「<side_effect type=“bf03”>」が特定される。
また、情報処理装置は、圧縮データを読み出し、圧縮データが動的コードであるか否かを判定する。図5の例では、圧縮データd2は、動的コードでないと判定される。すなわち、圧縮データd2は、静的辞書によって符号化されたと判定される。このため、情報処理装置は、伸長用ケヤキ木を用いて圧縮データd2を伸長する。例えば、情報処理装置は、圧縮データd2と伸長用ケヤキ木とを比較して、伸長用ケヤキ木に示される伸長データへのポインタを特定する。そして、情報処理装置は、特定した伸長データへのポインタを基に、伸長データを特定する。ここでは、伸長データとして「発熱」が特定される。
また、情報処理装置は、特定した伸長データを、記憶領域A3に書き込む。また、情報処理装置は、圧縮ファイルF2の圧縮データを全て伸長した後、記憶領域A3に書き込まれた伸長データを伸長ファイルF3に書き込む。
[情報処理装置の構成]
図6は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。図6に示すように、この情報処理装置100は、圧縮部100aと、伸長部100bと、記憶部100cとを有する。
圧縮部100aは、図1に示した圧縮処理を実行する処理部である。伸長部100bは、図5に示した伸長処理を実行する処理部である。記憶部100cは、圧縮対象のファイルF1、圧縮ファイルF2および伸長ファイルF3を記憶する。圧縮ファイルF2には、動的タグ辞書T0が含まれる。また、記憶部100cは、圧縮用のケヤキ木としてのビットフィルタB0および伸長用のケヤキ木を記憶する。
図7は、伸長用のケヤキ木のデータ構造の一例を示す図である。図7に示すように、伸長用のケヤキ60は、複数の枝60−1〜60−nと、葉61−1〜60−mとを有する。各枝60−1〜60−nには、所定のビット列が割り当てられる。情報処理装置100は、圧縮データのビット列と、枝60−1〜60−nに割り当てられたビット列とを比較して、圧縮データのビット列にヒットする枝に接続される葉を特定する。葉には、圧縮データに対応する文字等の情報が格納される。
例えば、葉のデータ構造は、61に示すものとなる。例えば、葉には、葉識別情報と、圧縮符号長と、単語へのポインタとが格納される。葉識別情報は、葉を一意に識別する情報である。圧縮符号長は、各枝60−1〜60−nと比較した圧縮データのビット列の内、有効な長さを示す情報である。単語へのポインタは、圧縮符号を伸長した場合の伸長データを一意に示す情報であり、伸長データへのポインタに対応する。
[圧縮部の構成]
図8は、本実施例1に係る圧縮部の構成の一例を示す機能ブロック図である。図8に示すように、この圧縮部100aは、ファイルリード部101、タグ判定部102、タグ符号化部103、テキスト符号化部104、更新部105およびファイルライト部106を有する。
ファイルリード部101は、ファイルF1内のコンテンツ部分の文字列を読み出す。ファイルリード部101は、読み出した文字列をタグ判定部102に出力する。
タグ判定部102は、文字列がタグであるか否かを判定する。例えば、タグ判定部102は、文字列の先頭文字がタグの開始記号‘<’であるか否かを判定する。タグ判定部102は、文字列の先頭文字がタグの開始記号‘<’である場合には、タグ文字列をタグ符号化部103に出力する。タグ文字列は、開始記号‘<’から始まり、終了記号‘>’で終わる文字列である。また、タグ判定部102は、文字列の先頭文字がタグの開始記号‘<’でない場合には、文字列をテキスト符号化部104に出力する。
タグ符号化部103は、タグ文字列を符号化する。例えば、タグ符号化部103は、タグ文字列がタグバッファT1に既に格納されているか否かを判定する。タグ符号化部103は、タグ文字列がタグバッファT1に既に格納されている場合には、該タグ文字列に対応付けられたアドレステーブルT2の動的コードを圧縮データとして割り当てる。タグ符号化部103は、タグ文字列がタグバッファT1に格納されていない場合には、該タグ文字列を纏めてタグバッファT1に格納するとともに、該タグ文字列を格納した格納位置および格納したデータ長をアドレステーブルT2に登録する。タグ符号化部103は、タグ文字列に対応付けられたアドレステーブルT2の動的コードを圧縮データとして割り当てる。そして、タグ符号化部103は、割り当てられた圧縮データを更新部105に出力する。
テキスト符号化部104は、文字列を符号化する。例えば、テキスト符号化部104は、文字列を地の文としてビットフィルタB0に出力する。テキスト符号化部104は、ビットフィルタB0と、出力された文字列とを比較して、出力された文字列がビットフィルタB0にヒットするか否かを判定する。テキスト符号化部104は、出力された文字列がビットフィルタB0にヒットする場合には、静的辞書に登録されている静的コードを圧縮データとして特定する。そして、テキスト符号化部104は、特定した圧縮データを更新部105に出力する。
更新部105は、タグ符号化部103およびテキスト符号化部104から圧縮データを取得し、取得した順に、取得した圧縮データを記憶領域に蓄積することで、該記憶領域を更新する。
ファイルライト部106は、ファイルF1内のコンテンツ部分の文字列を全て圧縮した後、記憶領域に書き込まれた圧縮データを圧縮ファイルF2に書き込む。
[伸長部の構成]
図9は、本実施例1に係る伸長部の構成の一例を示す機能ブロック図である。図9に示すように、この伸長部100bは、ファイルリード部110、タグコード判定部111、タグ伸長部112、テキスト伸長部113、更新部114およびファイルライト部115を有する。
ファイルリード部110は、圧縮ファイルF2内の圧縮データを記憶領域A1に読み出す。ファイルリード部110は、記憶領域に格納された圧縮データに対する伸長処理が終了した場合に、新たな圧縮データを圧縮ファイルF2から読み出し、記憶領域A1に格納する。
タグコード判定部111は、圧縮データがタグのコードであるか否かを判定する。例えば、タグコード判定部111は、圧縮データが動的コードであるか否かを判定する。例えば、動的コードが、16進数「F」で始まる固定長3バイトのコードである場合には、タグコード判定部111は、圧縮データの先頭の4ビットが「F」であるか否かを判定し、「F」である場合には、動的コードであると判定する。すなわち、タグコード判定部111は、タグのコードであると判定し、圧縮データをタグ伸長部112に出力する。タグコード判定部111は、「F」でない場合には、動的コードでないと判定する。すなわち、タグコード判定部111は、タグのコードでないと判定し、圧縮データをテキスト伸長部113に出力する。
タグ伸長部112は、動的タグ辞書T0を用いて圧縮データを伸長する。例えば、タグ伸長部112は、動的タグ辞書T0のアドレステーブルT2から圧縮データと合致する動的コードを特定し、特定した動的コードに対応する格納位置およびデータ長を取得する。タグ伸長部112は、動的タグ辞書T0のタグバッファT1から、取得した格納位置およびデータ長の伸長データを特定する。タグ伸長部112は、特定した伸長データを更新部114に出力する。
テキスト伸長部113は、伸長用ケヤキ木を用いて圧縮データを伸長する。例えば、テキスト伸長部113は、圧縮データと伸長用ケヤキ木とを比較して、伸長用ケヤキ木に示される伸長データへのポインタを特定する。テキスト伸長部113は、特定した伸長データへのポインタを基に、伸長データを特定する。テキスト伸長部113は、特定した伸長データを更新部114に出力する。
更新部114は、タグ伸長部112およびテキスト伸長部113から伸長データを取得し、取得した順に、取得した伸長データを記憶領域A3に蓄積することで、該記憶領域を更新する。
ファイルライト部115は、圧縮ファイルF2内の圧縮データを全て伸長した後、記憶領域に書き込まれた伸長データを伸長ファイルF3に書き込む。
[圧縮部の処理手順]
次に、図8に示した圧縮部100aの処理手順について、図10を参照して説明する。図10は、本実施例1に係る圧縮部の処理手順を示すフローチャートである。
図10に示すように、圧縮部100aは、前処理を実行する(ステップS101)。例えば、圧縮部100aは、各種記憶領域を記憶部100cに確保する。そして、圧縮部100aは、圧縮対象のファイルF1の文字列を読出用の記憶領域に読み出す(ステップS102)。
圧縮部100aは、記憶領域の先頭から文字列を抽出し、文字列がタグ部分であるか否かを判定する(ステップS103)。例えば、圧縮部100aは、文字列の先頭がタグ文字列の開始記号‘<’であるか否かを判定する。
圧縮部100aは、文字列がタグ部分であると判定した場合には(ステップS103;Yes)、タグ部分がタグバッファT1に格納されているか否かを判定する(ステップS104)。圧縮部100aは、タグ部分がタグバッファT1に格納されている場合には(ステップS104;Yes)、タグ部分の動的コードを割り当てるべく、ステップS106に移行する。
一方、圧縮部100aは、タグ部分がタグバッファT1に格納されていない場合には(ステップS104;No)、タグ部分をタグバッファT1に格納するとともに、該タグ部分の格納位置と長さとをアドレステーブルT2に格納する(ステップS105)。そして、圧縮部100aは、タグ部分の動的コードを割り当てるべく、ステップS106に移行する。
ステップS106では、圧縮部100aは、アドレステーブルT2の、タグ部分に対応する動的コードを圧縮データとして割り当てる(ステップS106)。すなわち、圧縮部100aは、アドレステーブルT2に対して、タグ部分の格納位置と長さとを格納したレコードに含まれる動的コードを抽出し、抽出した動的コードを圧縮データとして割り当てる。そして、圧縮部100aは、ステップS108に移行する。
圧縮部100aは、文字列がタグ部分でないと判定した場合には(ステップS103;No)、静的辞書に登録されている静的コードを圧縮データとして割り当てる(ステップS107)。すなわち、圧縮部100aは、文字列とビットフィルタB0とを比較して、該文字列がビットフィルタB0にヒットした、静的辞書に登録されている静的コードを圧縮データとして特定する。そして、圧縮部100aは、ステップS108に移行する。
ステップS108では、圧縮部100aは、圧縮データを書込用の記憶領域に書き込む(ステップS108)。
圧縮部100aは、読出用の記憶領域に処理する文字列があるか否かを判定する(ステップS109)。圧縮部100aは、読出用の記憶領域に処理する文字列があると判定した場合には(ステップS109;Yes)、次の文字列の処理をすべく、ステップS103に移行する。
一方、圧縮部100aは、読出用の記憶領域に処理する文字列がないと判定した場合には(ステップS109;No)、圧縮処理を終了する。
[伸長部の処理手順]
次に、図9に示した伸長部100bの処理手順について、図11を参照して説明する。図11は、本実施例1に係る伸長部の処理手順を示すフローチャートである。
図11に示すように、伸長部100bは、前処理を実行する(ステップS201)。例えば、伸長部100bは、各種記憶領域を記憶部100cに確保する。そして、伸長部100bは、圧縮ファイルF2を読出用の記憶領域に読み出し(ステップS202)、動的タグ辞書T0および伸長用のケヤキ木を読み出す(ステップS203)。
伸長部100bは、読出用の記憶領域内の圧縮データを記憶領域A1に読出し、圧縮データが動的コードであるか否かを判定する(ステップS204)。例えば、動的コードが、16進数「F」で始まる固定長3バイトのコードである場合には、伸長部100bは、圧縮データの先頭の4ビットが「F」であるか否かを判定する。
伸長部100bは、圧縮データが動的コードであると判定した場合には(ステップS204;Yes)、動的タグ辞書T0の動的コードを基にして伸長データを特定する(ステップS205)。例えば、伸長部100bは、動的タグ辞書T0のアドレステーブルT2から圧縮データと合致する動的コードを特定し、特定した動的コードに対応する格納位置およびデータ長を取得する。タグ伸長部112は、動的タグ辞書T0のタグバッファT1に対して、取得された格納位置から取得されたデータ長分の伸長データを特定する。そして、伸長部100bは、ステップS208に移行する。
一方、伸長部100bは、圧縮データが動的コードでないと判定した場合には(ステップS204;No)、伸長用のケヤキ木と圧縮データとを比較して伸長データへのポインタを特定する(ステップS206)。伸長部100bは、伸長データへのポインタを基に伸長データを特定する(ステップS207)。そして、伸長部100bは、ステップS208に移行する。
ステップS208では、伸長部100bは、書込用の記憶領域に伸長データの書き込みを行う(ステップS208)。
伸長部100bは、読出用の記憶領域に処理する圧縮データがあるか否かを判定する(ステップS209)。伸長部100bは、読出用の記憶領域に処理する圧縮データがあると判定した場合には(ステップS209;Yes)、次の圧縮データを処理すべく、ステップS204に移行する。
一方、伸長部100bは、読出用の記憶領域に処理する圧縮データがないと判定した場合には(ステップS209;No)、伸長処理を終了し、圧縮ファイルF2をクローズする(ステップS210)。
このようにして、情報処理装置100は、可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別し、タグ部分に含まれるタグそれぞれを、タグ内容に対応した第1の種類の符号にそれぞれ変換する。情報処理装置100は、地の文を、少なくとも入力文字データにおいてタグにより区切られる単位で第2の種類の符号に変換する。情報処理装置100は、第1の種類の符号それぞれ、および、第2の種類の符号それぞれを、入力文字データにおけるそれぞれの符号の変換前のタグまたは文字列の位置関係を維持した状態で出力する。かかる構成によれば、情報処理装置100は、タグ部分を第1の種類の符号に変換し、地の文を第2の種類の符号に変換し、タグ部分および地の文の変換前の位置関係を維持した状態で出力するので、可変部分があるタグがあっても、入力文字データの圧縮率を向上させることができる。
具体的には、HTML等に用いられるタグには、参照先等の可変部分を含むものと、可変部分を含まないものの双方が存在する。ここで、従来、文書における文字列については、文書ごとに用いられる単語や文字の頻度が異なるものであり、文書で用いられる単語や文字の頻度に基づいて符号が割り当てられる。タグ以外の文字列である地の文については、文書ごとに用いられる単語の頻度が異なるものであり、地の文で用いられる単語の頻度に基づいて符号が割り当てられることが望ましい。タグについては、可変部分を含むタグは、タグ全体が同一であるタグが少なく、一方、可変部分を含まないタグは、限られた種類に留まっている。従来、タグを含む文書、特に、タグに可変部分を含む文書においては、上記の特性の違いに応じた圧縮を行っていないため、圧縮率が劣っていた。これに対して、実施例1に係る情報処理装置100は、タグ部分を第1の種類の符号に変換し、地の文を第2の種類の符号に変換し、タグ部分および地の文の変換前の位置関係を維持した状態で出力するので、可変部分があるタグがあっても、入力文字データの圧縮率を向上させることが可能となる。
ところで、実施例1に係る情報処理装置100は、可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別する。情報処理装置100は、タグ部分と地の文をそれぞれ異なる種類の符号に変換し、変換した符号をタグ部分および地の文の変換前の位置関係を維持した状態で出力する。しかしながら、情報処理装置100は、これに限定されず、さらに、圧縮された状態で、特定のタグ種別を有するタグで囲まれた地の文に、検索キーワードが存在するかどうかを検索するようにしても良い。例えば、薬に関する文書を例にとると、「発熱」という検索キーワードに対して、「発熱」に効く薬(薬効)を検索したい場合に、「薬効」タグで囲まれた地の文に「発熱」という検索キーワードが存在するかどうかを、文書が圧縮された状態で検索する。
そこで、実施例2では、情報処理装置100が、圧縮された状態で、特定のタグ種別を有するタグで囲まれた地の文に、検索キーワードが存在するかどうかを検索する場合について説明する。
[圧縮処理の流れ]
まず、図12を参照して、実施例2に係る情報処理装置の圧縮処理について説明する。図12は、実施例2に係る情報処理装置の圧縮処理の流れの一例を示す図である。実施例1と実施例2とが異なるところは、動的タグ辞書T0を動的タグ辞書T10に変更した点にある。
ファイルF1は、実施例1の図1と同様に、圧縮対象のファイルであり、タグとタグ以外の地の文の文字列とが混在した文書である。
情報処理装置は、圧縮対象のファイルF1に記憶された文字データを記憶領域にロードする。情報処理装置は、記憶領域の先頭から文字列を抽出し、抽出した文字列がタグであるか否かを判定する。例えば、情報処理装置は、文字列の先頭文字がタグの開始記号‘<’であるか否かを判定する。
情報処理装置は、文字列がタグである場合には、タグの種別(タグ種別)を判別する。一例として、タグが「<medical_effect type=“ac01”>」である場合には、情報処理装置は、タグに含まれる「medical_effect」に基づいて、タグ種別が「薬効」であると判別する。別の例として、タグが「<side_effect type=“bf03”>」である場合には、情報処理装置は、タグに含まれる「side_effect」に基づいて、タグ種別が「副作用」であると判別する。
情報処理装置は、タグ文字列全体を纏めて動的タグ辞書T10に格納するとともに、格納した位置(格納位置)、長さ(データ長)およびタグ種別を動的タグ辞書T10に格納する。そして、情報処理装置は、動的タグ辞書T10に基づいて、タグ文字列を、タグ文字列に対応する圧縮符号に圧縮する。なお、動的タグ辞書T10のデータ構造の一例は、後述する。
情報処理装置は、文字列がタグでない場合には、文字列を地の文としてビットフィルタB0に出力し、ビットフィルタB0に基づいて、出力した文字列を、出力した文字列に対応する圧縮符号(静的コード)に圧縮する。なお、文字列がタグでない場合の圧縮処理は、実施例1と同様であるので、詳細を省略する。
情報処理装置は、動的タグ辞書T10に基づいた圧縮符号それぞれ、および、ビットフィルタB0に基づいた圧縮符号それぞれを、入力文字データにおけるそれぞれの圧縮符号の変換前のタグまたは地の文の位置関係を維持した状態で圧縮ファイルF2に出力する。
[動的タグ辞書の一例]
図13は、本実施例2に係る動的タグ辞書の一例を示す図である。図13に示される動的タグ辞書T10は、タグバッファT11とアドレステーブルT12とを含む。タグバッファT11は、タグの文字列を記憶する。アドレステーブルT12は、動的コードと、格納位置と、データ長と、タグ種別を対応付けて保持する。動的コードと、格納位置と、データ長とは、実施例1に係る動的タグ辞書T0と同様であるので、詳細な説明を省略する。タグ種別は、タグの種別である。一例として、タグ種別が「薬効」である場合には、「薬効」に対応する「67」が設定される。タグ種別が「副作用」である場合には、「副作用」に対応する「88」が設定される。「67」や「88」は、あらかじめタグ種別に対応するタグの部分と対応付けて記憶するようにすれば良い。
ここで、タグの文字列「<side_effect type=“bf03”>」に圧縮符号が割り当てられる場合について説明する。
情報処理装置は、タグの文字列の「side_effect type」に基づいてタグ種別が「副作用」であると判別し、「side_effect type」に対応付けられた「88」を取得する。情報処理装置は、タグの文字列「<side_effect type=“bf03”>」を纏めてタグバッファT11に格納する。情報処理装置は、タグの文字列を格納した格納位置、格納したデータ長およびタグ種別をアドレステーブルT12に登録する。ここでは、情報処理装置は、格納位置として「28」、データ長として「25」、タグ種別として「88」をアドレステーブルT12に登録する。
情報処理装置は、タグの文字列に対応付けられたアドレステーブルT12の動的コードを圧縮符号として割り当てる。ここでは、情報処理装置は、タグの文字列「<side_effect type=“bf03”>」に対応付けられた動的コード「F80001h」を圧縮符号として割り当てる。
[検索処理の流れ]
図14は、本実施例2に係る情報処理装置の検索処理の流れの一例を示す図である。図14では、情報処理装置が、圧縮された状態で、検索タグのタグ種別を有するタグで囲まれた地の文に、検索キーワードが存在するかどうかを判定する。圧縮された状態の圧縮ファイルには、F21、F22が存在し、それぞれの圧縮ファイルには、それぞれの動的タグ辞書T10が登録されている。
情報処理装置は、検索キーワードおよび検索タグのタグ種別を受け付ける。図14の例では、検索キーワードは「発熱」であり、検索タグのタグ種別は「88」である。タグ種別の「88」は、「副作用」に関するタグのタグ種別である。
情報処理装置は、動的タグ辞書T10のタグ種別を基にして、検索タグのタグ種別に対応する動的コードを特定する。例えば、情報処理装置は、動的タグ辞書T10のアドレステーブルT12から検索タグのタグ種別「88」に対応する動的コードとして16進数の「F80001」を特定する。
情報処理装置は、検索キーワードを地の文として、ビットフィルタB0を基にして、検索キーワードに対応する圧縮符号(静的コード)を特定する。なお、検索キーワードの圧縮処理は、文字列がタグでない場合の圧縮処理と同様であり、実施例1と同様であるので、詳細を省略する。ここでは、検索キーワード「発熱」の静的コードは、「A」であるとする。
情報処理装置は、圧縮ファイルF21、F22に対して、検索タグのタグ種別に対応する動的コードの出現位置および検索キーワードに対応する圧縮符号の出現位置を検索する。図14の例では、圧縮ファイルF21に、動的タグ種別「88」に対応する動的コード「F80001」が検索キーワード「発熱」に対応する圧縮符号「A」の直前に出現される。ここで、実施例2では、圧縮符号は、変換前のタグまたは地の文の位置関係を維持した状態で圧縮ファイルF21、F22に出力される。したがって、情報処理装置は、検索タグのタグ種別「88」を有するタグ「side_effect type=”bf03”」とタグ「/side_effect type」に囲まれた地の文に、検索キーワード「発熱」が存在すると判定する。
これに対して、圧縮ファイルF22に、検索タグのタグ種別「88」に対応する動的コード「F80001」が検索キーワード「発熱」に対応する圧縮符号「A」の後方に出現される。ここで、実施例2では、圧縮符号は、変換前のタグまたは地の文の位置関係を維持した状態で圧縮ファイルF21、F22に出力される。したがって、情報処理装置は、検索タグのタグ種別「88」を有するタグ「side_effect type=”bf03”」とタグ「/side_effect type」に囲まれた地の文に、検索キーワード「発熱」が存在しないと判定する。
情報処理装置は、検索結果を出力する。例えば、情報処理装置は、検索条件に合致した場合には、検索結果として「OK」を出力する。加えて、情報処理装置は、動的タグ辞書T10に基づいて、検索条件に合致した圧縮部分を伸長した文字列を出力する。図14の例では、情報処理装置は、圧縮ファイルF21について、検索結果として「OK」を出力する。情報処理装置は、薬品名として「XXXXX」を出力する。加えて、情報処理装置は、「<side_effect type=”bf03”>発熱</side_effect>」を出力する。
[情報処理装置の構成]
図15は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。図15に示すように、この情報処理装置200は、圧縮部200aと、検索部200bと、伸長部200cと、記憶部200dとを有する。
圧縮部200aは、図12に示した圧縮処理を実行する処理部である。検索部200bは、図14に示した検索処理を実行する処理部である。伸長部200cは、実施例1と同様の処理であり、図5に示した伸長処理を実行する処理部である。記憶部200dは、圧縮対象のファイルF1、動的タグ辞書T10を含む圧縮ファイルF2および伸長ファイルF3を記憶する。また、記憶部200dは、圧縮用のケヤキ木としてのビットフィルタB0および伸長用のケヤキ木を記憶する。
[検索部の構成]
図16は、本実施例2に係る検索部の構成の一例を示す機能ブロック図である。図16に示すように、この検索部200bは、検索キー受付部201、検索キー位置検索部202、検索条件合致判定部203および検索結果出力部204を有する。
検索キー受付部201は、検索キーを受け付ける。例えば、検索キー受付部201は、検索キーとして、検索キーワードおよび検索タグのタグ種別を受け付ける。
検索キー位置検索部202は、圧縮ファイルF2から検索キーに対応する位置を検索する。例えば、検索キー位置検索部202は、動的タグ辞書T10に含まれるアドレステーブルT12のタグ種別を基にして、検索タグのタグ種別に対応する動的コードを特定する。検索キー位置検索部202は、検索キーワードを地の文として、ビットフィルタB0を基にして、検索キーワードに対応する圧縮符号(静的コード)を特定する。そして、検索キー位置検索部202は、圧縮ファイルF2に対して、検索タグのタグ種別に対応する動的コードの出現位置および検索キーワードに対応する圧縮符号の出現位置を検索する。
検索条件合致判定部203は、出現位置が検索条件に合致するか否かを判定する。例えば、検索条件が、検索タグのタグ種別に対応する動的コードの出現位置が検索キーワードに対応する圧縮符号(静的コード)の出現位置の直前であるという検索条件であるとする。検索条件合致判定部203は、検索タグのタグ種別に対応する動的コードの出現位置が検索キーワードに対応する圧縮符号(静的コード)の出現位置の直前であるか否かを判定する。検索条件合致判定部203は、検索タグのタグ種別に対応する動的コードの出現位置が検索キーワードに対応する圧縮符号(静的コード)の出現位置の直前であれば、検索条件に合致したと判定する。検索条件合致判定部203は、検索タグのタグ種別に対応する動的コードの出現位置が検索キーワードに対応する圧縮符号(静的コード)の出現位置の直前でなければ、検索条件に合致しないと判定する。
検索結果出力部204は、検索結果を出力する。例えば、検索結果出力部204は、出現位置が検索条件に合致したと判定された場合には、検索結果として検索条件に合致したことを示す「OK」を出力する。加えて、検索結果出力部204は、動的タグ辞書T10に基づいて、検索条件に合致した出現位置の圧縮部分を伸長した文字列を出力する。なお、検索結果出力部204は、検索条件に合致した出現位置が存在する圧縮ファイルF2の先頭部分を伸長した文字列を出力しても良い。検索結果出力部204は、検索条件に合致しないと判定された場合には、検索結果として検索条件に合致しないことを示す「NG」を出力する。
[検索部の処理手順]
次に、図16に示した検索部200bの処理手順について、図17を参照して説明する。図17は、本実施例2に係る検索部の処理手順を示すフローチャートである。
図17に示すように、検索部200bは、検索キーワードおよび検索タグのタグ種別を受け付ける(ステップS301)。そして、検索部200bは、圧縮ファイルF2を検索用の記憶領域に読み出し(ステップS302)、動的タグ辞書T10および伸長用のケヤキ木を読み出す(ステップS303)。
検索部200bは、動的タグ辞書T10のタグ種別を基にして、検索タグのタグ種別に対応する動的コードを特定する(ステップS304)。例えば、検索部200bは、動的タグ辞書T10に含まれるアドレステーブルT12から、検索タグのタグ種別と一致するタグ種別のレコードを取得する。検索部200bは、取得したレコードに含まれる動的コードを特定する。
検索部200bは、静的辞書から検索キーワードに対応する圧縮符号を特定する(ステップS305)。例えば、検索部200bは、検索キーワードを地の文として、ビットフィルタB0を基にして、検索キーワードに対応する圧縮符号(静的コード)を特定する。
続いて、検索部200bは、圧縮ファイルF2に対して、動的コードの出現位置および圧縮符号の出現位置を検索する(ステップS306)。
そして、検索部200bは、出現位置が検索条件に合致したか否かを判定する(ステップS307)。例えば、検索条件が、検索タグのタグ種別に対応する動的コードの出現位置が検索キーワードに対応する圧縮符号(静的コード)の出現位置の直前であるという検索条件であるとする。すると、検索部200bは、検索された動的コードの出現位置および検索された圧縮符号の出現位置を用いて、該動的コードの出現位置が該圧縮符号の出現位置の直前であるか否かを判定する。
検索部200bは、出現位置が検索条件に合致したと判定した場合には(ステップS307;Yes)、検索結果として「OK」を出力する(ステップS308)。加えて、検索部200bは、動的タグ辞書T10に基づいて、検索条件に合致した出現位置の圧縮部分を伸長した文字列を出力する。なお、検索部200bは、検索条件に合致した出現位置が存在する圧縮ファイルF2の先頭部分を伸長した文字列を出力しても良い。そして、検索部200bは、検索処理を終了する。
一方、検索部200bは、出現位置が検索条件に合致しなかったと判定した場合には(ステップS307;No)、検索結果として「NG」を出力する(ステップS309)。そして、検索部200bは、検索処理を終了する。
このようにして、情報処理装置200は、可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別する。情報処理装置200は、タグ内容に加えて、タグの属性に対応した種別属性情報を、第1の種類の符号に対応させて動的タグ辞書T10に登録し、タグ部分に含まれるタグそれぞれを、タグ内容に対応した第1の種類の符号にそれぞれ変換する。情報処理装置200は、地の文を、少なくとも入力文字データにおいてタグにより区切られる単位で第2の種類の符号に変換する。情報処理装置200は、第1の種類の符号それぞれ、および、第2の種類の符号それぞれを、入力文字データにおけるそれぞれの符号の変換前のタグまたは文字列の位置関係を維持した状態で出力する。かかる構成によれば、情報処理装置200は、圧縮したまま、地の文に対する、タグ付け状況を考慮した検索を行うことができる。すなわち、情報処理装置200は、タグ内容に加えて、タグの種別属性情報を、第1の種類の符号に対応させて動的タグ辞書T10に記憶する。したがって、情報処理装置200は、動的タグ辞書T10を用いることで、特定のタグの種別属性情報を有するタグで囲まれた地の文に、指定された検索キーワードが存在するかどうかを、圧縮したまま判定することができる。
ところで、実施例2に係る情報処理装置200は、タグ部分と地の文の単語をそれぞれ別々に符号化し、元のファイルF1における位置関係を維持した状態で出力する。かかる符号化の出力の実装の一例として、情報処理装置200は、地の文の単語を符号化したコードに、該コードに対応する単語に付されたタグを変換した動的コードを付加して出力するようにしても良い。
そこで、実施例3では、情報処理装置200が、地の文の単語を符号化したコードに、該コードに対応する単語に付されたタグを変換した動的コードを付加して出力する場合について説明する。
[圧縮処理の流れ]
まず、図18Aおよび図18Bを参照して、実施例3に係る情報処理装置の圧縮処理について説明する。図18Aおよび図18Bは、実施例3に係る情報処理装置の圧縮処理の流れの一例を示す図である。なお、動的タグ辞書10は、実施例2に係る動的タグ辞書と同じ内容である。ファイルF1は、実施例2の図12と同様に、圧縮対象のファイルであり、タグとタグ以外の地の文の文字列とが混在した文書である。
図18Aに示すように、情報処理装置200は、圧縮対象のファイルF1に記憶された文字データを記憶領域にロードする。情報処理装置200は、記憶領域にロードした文字データのうち、先行してタグ部分を符号化する。すなわち、情報処理装置200は、入力文字データの各タグ文字列について、タグ文字列全体を纏めて動的タグ辞書T10に格納するとともに、格納した位置(格納位置)、長さ(データ長)およびタグ種別を動的タグ辞書T10に格納する。そして、情報処理装置200は、動的タグ辞書T10に基づいて、タグ文字列を、タグ文字列に対応する圧縮符号に圧縮する。
図18Aの例では、情報処理装置200は、タグ文字列「<medical_effect type=”ac01”>」について、該タグ文字列を纏めて動的タグ辞書T10に格納するとともに、格納位置、データ長およびタグ種別を動的タグ辞書T10に格納する。そして、情報処理装置200は、動的タグ辞書T10に基づいて、タグ文字列に対応する動的コード「F80000h」を圧縮符号d1として符号化する。情報処理装置200は、タグ文字列「<side_effect type=”bf03”>」について、該タグ文字列を纏めて動的タグ辞書T10に格納するとともに、格納位置、データ長およびタグ種別を動的タグ辞書T10に格納する。そして、情報処理装置200は、動的タグ辞書T10に基づいて、タグ文字列に対応する動的コード「F80001h」を圧縮符号d1として符号化する。
情報処理装置200は、符号化した圧縮符号それぞれを、入力文字データにおけるそれぞれの圧縮符号の変換前のタグまたは地の文の位置関係を維持した状態で記憶領域F2´に出力する。
図18Bに示すように、情報処理装置200は、記憶領域F2´の文字データのうち、地の文の文字列(単語)をビットフィルタB0に出力し、ビットフィルタB0に基づいて、地の文の文字列を、該文字列に対応する圧縮符号(静的コード)に圧縮する。図18Bの例では、情報処理装置200は、地の文の文字列「発熱」について、該「発熱」の静的辞書に登録されている静的コード「A」を圧縮符号d2として符号化する。
情報処理装置200は、地の文の文字列を符号化した圧縮符号に、該圧縮符号に対応する文字列に付されたタグを符号化した動的コードを付加して圧縮ファイルF2に出力する。すなわち、情報処理装置200は、地の文の符号化の際に、地の文の文字列(単語)に対応する符号(静的コード)に加え、タグ付けしているタグの符号(動的コード)を、単語に合わせて付ける。図18Bの例では、情報処理装置200は、地の文の単語「発熱」を符号化した静的コード「A」に、地の文の単語「発熱」に付されたタグ「<side_effect type=”bf03”>」を符号化した動的コード「F80001」を付加して圧縮ファイルF2に出力する。
これにより、情報処理装置200は、地の文の単語を符号化した圧縮符号に、該圧縮符号に対応する単語に付されたタグを符号化した動的コードを付加して圧縮ファイルF2に出力するので、圧縮したまま、地の文に対する、タグ付け状況を考慮した検索を行うことができる。すなわち、情報処理装置200は、検索タグのタグ種別を有するタグで囲まれた地の文に、指定された検索キーワードが存在するかどうかを、圧縮したまま判定することができる。
[検索処理の流れ]
図19は、本実施例3に係る情報処理装置の検索処理の流れの一例を示す図である。図19では、情報処理装置200が、圧縮された状態で、検索タグのタグ種別を有するタグで囲まれた地の文に、検索キーワードが存在するかどうかを判定する。圧縮された状態の圧縮ファイルには、F21、F22が存在し、それぞれの圧縮ファイルには、それぞれの動的タグ辞書T10が登録されている。
情報処理装置200は、検索キーワードおよび検索タグのタグ種別を受け付ける。図19の例では、検索キーワードは「発熱」であり、検索タグのタグ種別は「88」である。検索タグのタグ種別の「88」は、「副作用」に関するタグのタグ種別である。
情報処理装置200は、動的タグ辞書T10のタグ種別を基にして、検索タグのタグ種別に対応する動的コードを特定する。例えば、情報処理装置200は、動的タグ辞書T10のアドレステーブルT12から検索タグのタグ種別「88」に対応する動的コードとして16進数の「F80001h」を特定する。
情報処理装置200は、検索キーワードを地の文として、ビットフィルタB0を基にして、検索キーワードに対応する圧縮符号(静的コード)を特定する。なお、検索キーワードの圧縮処理は、文字列がタグでない場合の圧縮処理と同様であり、実施例1と同様であるので、詳細を省略する。ここでは、検索キーワード「発熱」の静的コードは、「A」であるとする。
情報処理装置200は、圧縮ファイルF21、F22に対して、検索タグのタグ種別に対応する動的コードの出現位置および検索キーワードに対応する圧縮符号の出現位置を検索する。図19の例では、圧縮ファイルF21には、静的コード「B」に動的コード「F80000」が付加されている。静的コード「A」に動的コード「F80001」が付加されている。圧縮ファイルF22には、静的コード「A」に動的コード「F80000」が付加されている。静的コード「B」に動的コード「F80001」が付加されている。
このような状況の下、圧縮ファイルF21に、検索キーワード「発熱」の静的コード「A」に検索タグのタグ種別「88」に対応する動的コード「F80001」が付加されている。したがって、情報処理装置200は、圧縮された状態で、検索タグのタグ種別「88」を有するタグ「side_effect type=”bf03”」とタグ「/side_effect type」に囲まれた地の文に、検索キーワード「発熱」が存在すると判定する。
これに対して、圧縮ファイルF22に、検索キーワード「発熱」の静的コード「A」に検索タグのタグ種別「88」に対応する動的コード「F80001」が付加されていない。したがって、情報処理装置200は、圧縮された状態で、検索タグのタグ種別「88」を有するタグ「side_effect type=”bf03”」とタグ「/side_effect type」に囲まれた地の文に、検索キーワード「発熱」が存在しないと判定する。
情報処理装置200は、検索結果を出力する。図19の例では、情報処理装置200は、圧縮ファイルF21について、検索結果として「OK」を出力する。情報処理装置200は、薬品名として「XXXXX」を出力する。加えて、情報処理装置200は、「<side_effect type=”bf03”>発熱</side_effect>」を出力する。
これにより、情報処理装置200は、圧縮したまま、地の文に対する、タグ付け状況を考慮した検索を行うことができる。すなわち、情報処理装置200は、検索タグのタグ種別を有するタグで囲まれた地の文に、指定された検索キーワードが存在するかどうかを、圧縮したまま判定することができる。
[実施例1〜3に関連する他の態様]
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
また、実施例1−3では、情報処理装置100、200が、可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別し、タグ部分と地の文をそれぞれ異なる種類の符号に変換する。そして、情報処理装置100、200は、変換した符号をタグ部分および地の文の変換前の位置関係を維持した状態で出力する。しかしながら、情報処理装置100、200は、可変部分があるタグに限定せず、パスを含むファイル名やメールアドレスについて、同様の圧縮処理を行っても良い。すなわち、情報処理装置100、200は、パスを含むファイル名を含む入力文字データから、パス部分とパス部分以外の部分を識別し、パス部分とパス部分以外の部分をそれぞれ異なる種類の符号に変換する。そして、情報処理装置100、200は、変換した符号をパス部分およびパス部分以外の部分の変換前の位置関係を維持した状態で出力すれば良い。また、情報処理装置100、200は、メールアドレスを含む入力文字データから、メールアドレス部分とメールアドレス部分以外の部分を識別し、メールアドレス部分とメールアドレス部分以外の部分をそれぞれ異なる種類の符号に変換する。そして、情報処理装置100、200は、変換した符号をメールアドレス部分およびメールアドレス部分以外の部分の変換前の位置関係を維持した状態で出力すれば良い。これにより、情報処理装置100、200は、可変部分があるタグだけでなく、パス部分があっても、メールアドレス部分があっても、入力文字データの圧縮率を向上させることができる。
また、実施例1〜3に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[情報処理装置のハードウェア構成]
図20は、実施例1〜3の情報処理装置のハードウェア構成を示す図である。図20の例が示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータ入力を受け付ける入力装置402と、モニタ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る媒体読取装置404と、他の装置と接続するためのインターフェース装置405と、他の装置と無線により接続するための無線通信装置406とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM407と、ハードディスク装置408とを有する。また、各装置401〜408は、バス409に接続される。
ハードディスク装置408には、例えば図8に示したタグ判定部102、タグ符号化部103、テキスト符号化部104および更新部105の各処理部と同様の機能を有する文字データ変換プログラムが記憶される。また、ハードディスク装置408には、文字データ変換プログラムを実現するための各種データが記憶される。
CPU401は、ハードディスク装置408に記憶された各プログラムを読み出して、RAM407に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ400を、例えば図8に示したタグ判定部102、タグ符号化部103、テキスト符号化部104および更新部105として機能させることができる。
なお、上記の文字データ変換プログラムは、必ずしもハードディスク装置408に記憶されている必要はない。例えば、コンピュータ400が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ400が読み出して実行するようにしてもよい。コンピュータ400が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ400がこれらからプログラムを読み出して実行するようにしてもよい。
図21は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ400において、図20に示すハードウェア群26(401〜409)の制御を行なうOS(オペレーティング・システム)27が動作する。OS27に従った手順でCPU401が動作して、ハードウェア群26の制御・管理が行なわれることにより、アプリケーションプログラム29やミドルウェア28に従った処理がハードウェア群26で実行される。さらに、コンピュータ400において、ミドルウェア28またはアプリケーションプログラム29が、RAM407に読み出されてCPU401により実行される。
CPU401により圧縮指示を受け付けた場合、ミドルウェア28またはアプリケーションプログラム29の少なくとも一部に基づく処理を行なうことで、(それらの処理をOS27に基づいてハードウェア群26を制御して)圧縮部100aの圧縮機能が実現される。圧縮機能は、それぞれアプリケーションプログラム29自体に含まれてもよいし、アプリケーションプログラム29に従って呼び出されることで実行されるミドルウェア28の一部であってもよい。
100、200 情報処理装置
100a、200a 圧縮部
100b、200c 伸長部
100c、200d 記憶部
101 ファイルリード部
102 タグ判定部
103 タグ符号化部
104 テキスト符号化部
105 更新部
106 ファイルライト部
110 ファイルリード部
111 タグコード判定部
112 タグ伸長部
113 テキスト伸長部
114 更新部
115 ファイルライト部
200b 検索部
201 検索キー受付部
202 検索キー位置検索部
203 検索条件合致判定部
204 検索結果出力部

Claims (6)

  1. コンピュータに、
    可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別し、
    前記タグ部分に含まれるタグそれぞれをタグバッファに格納し格納したタグバッファの位置とタグのデータ長とを含むタグ内容に対応した第1の種類の符号にそれぞれ変換し、
    前記地の文を、少なくとも前記入力文字データにおいて前記タグにより区切られる単位で第2の種類の符号に変換し、
    前記第1の種類の符号それぞれ、および、前記第2の種類の符号それぞれを、前記入力文字データにおけるそれぞれの符号の変換前のタグまたは文字列の位置関係を維持した状態で出力する
    処理を行わせることを特徴とする文字データ変換プログラム。
  2. 前記第1の種類の符号に変換する処理は、前記タグ内容を、前記第1の種類の符号に対応させて所定の辞書に登録し、前記タグ内容に対応した第1の種類の符号に変換する
    処理を行わせることを特徴とする請求項1に記載の文字データ変換プログラム。
  3. 前記第1の種類の符号に変換する処理は、前記タグ内容に加えて、検索時に前記第1の種類の符号の特定に用いるタグの属性に対応した種別属性情報を、前記第1の種類の符号に対応させて所定の辞書に登録し、前記タグ内容に対応した第1の種類の符号に変換する
    処理を行わせることを特徴とする請求項1に記載の文字データ変換プログラム。
  4. 前記出力する処理は、前記地の文を符号化した前記第2の種類の符号に対し、それぞれの前記第2の種類の符号に対応する文字に付されたタグを変換した前記第1の種類の符号を付加して出力する
    処理を行わせることを特徴とする請求項3に記載の文字データ変換プログラム。
  5. 可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別する識別部と、
    前記タグ部分に含まれるタグそれぞれをタグバッファに格納し格納したタグバッファの位置とタグのデータ長とを含むタグ内容に対応した第1の種類の符号にそれぞれ変換する第1の変換部と、
    前記地の文を、少なくとも前記入力文字データにおいて前記タグにより区切られる単位で第2の種類の符号に変換する第2の変換部と、
    前記第1の種類の符号それぞれ、および、前記第2の種類の符号それぞれを、前記入力文字データにおけるそれぞれの符号の変換前のタグまたは文字列の位置関係を維持した状態で出力する出力部と、
    を有することを特徴とする文字データ変換装置。
  6. コンピュータが、
    可変部分があるタグを含む入力文字データから、タグ部分と地の文を識別し、
    前記タグ部分に含まれるタグそれぞれをタグバッファに格納し格納したタグバッファの位置とタグのデータ長とを含むタグ内容に対応した第1の種類の符号にそれぞれ変換し、
    前記地の文を、少なくとも前記入力文字データにおいて前記タグにより区切られる単位で第2の種類の符号に変換し、
    前記第1の種類の符号それぞれ、および、前記第2の種類の符号それぞれを、前記入力文字データにおけるそれぞれの符号の変換前のタグまたは文字列の位置関係を維持した状態で出力する
    各処理を実行することを特徴とする文字データ変換方法。
JP2015014399A 2015-01-28 2015-01-28 文字データ変換プログラム、文字データ変換装置および文字データ変換方法 Active JP6550765B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015014399A JP6550765B2 (ja) 2015-01-28 2015-01-28 文字データ変換プログラム、文字データ変換装置および文字データ変換方法
US15/005,125 US20160217111A1 (en) 2015-01-28 2016-01-25 Encoding device and encoding method
EP16152927.6A EP3051429B1 (en) 2015-01-28 2016-01-27 Encoding device and encoding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015014399A JP6550765B2 (ja) 2015-01-28 2015-01-28 文字データ変換プログラム、文字データ変換装置および文字データ変換方法

Publications (2)

Publication Number Publication Date
JP2016139309A JP2016139309A (ja) 2016-08-04
JP6550765B2 true JP6550765B2 (ja) 2019-07-31

Family

ID=55237567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015014399A Active JP6550765B2 (ja) 2015-01-28 2015-01-28 文字データ変換プログラム、文字データ変換装置および文字データ変換方法

Country Status (3)

Country Link
US (1) US20160217111A1 (ja)
EP (1) EP3051429B1 (ja)
JP (1) JP6550765B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503458B2 (en) * 2016-07-28 2019-12-10 Intelligent Waves Llc System, method and computer program product for generating remote views in a virtual mobile device platform using efficient macroblock comparison during display encoding, including efficient detection of unchanged macroblocks
JP6737117B2 (ja) * 2016-10-07 2020-08-05 富士通株式会社 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
JP7210130B2 (ja) * 2017-04-07 2023-01-23 富士通株式会社 符号化プログラム、符号化方法および符号化装置
US10977221B2 (en) * 2017-10-20 2021-04-13 Hewlett Packard Enterprise Development Lp Encoding of data formatted in human-readable text according to schema into binary
JP7159557B2 (ja) * 2017-12-28 2022-10-25 富士通株式会社 動的辞書の生成プログラム、動的辞書の生成方法および復号化装置
JP7006462B2 (ja) * 2018-04-02 2022-01-24 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置
CN111698165B (zh) * 2020-04-30 2023-12-26 新华三信息安全技术有限公司 一种报文传输方法、装置、设备及机器可读存储介质
CN113836866B (zh) * 2021-06-04 2024-05-24 腾讯科技(深圳)有限公司 文本编码方法、装置、计算机可读介质及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255155A (ja) * 1995-03-16 1996-10-01 Fuji Xerox Co Ltd 全文登録語検索装置および方法
JP4003854B2 (ja) * 1998-09-28 2007-11-07 富士通株式会社 データ圧縮装置及び復元装置並びにその方法
US6635088B1 (en) * 1998-11-20 2003-10-21 International Business Machines Corporation Structured document and document type definition compression
JP2001067348A (ja) * 1999-06-21 2001-03-16 Fujitsu Ltd 構造化文書の圧縮方法および圧縮装置並びに構造化文書圧縮プログラムを記録したコンピュータ読取可能な記録媒体
JP2002297568A (ja) * 2001-03-29 2002-10-11 Fujitsu Ltd 構造化文書符号化装置及び記録媒体
US7089567B2 (en) * 2001-04-09 2006-08-08 International Business Machines Corporation Efficient RPC mechanism using XML
US20060085737A1 (en) * 2004-10-18 2006-04-20 Nokia Corporation Adaptive compression scheme
US20080077606A1 (en) * 2006-09-26 2008-03-27 Motorola, Inc. Method and apparatus for facilitating efficient processing of extensible markup language documents

Also Published As

Publication number Publication date
EP3051429B1 (en) 2020-03-25
EP3051429A1 (en) 2016-08-03
US20160217111A1 (en) 2016-07-28
JP2016139309A (ja) 2016-08-04

Similar Documents

Publication Publication Date Title
JP6550765B2 (ja) 文字データ変換プログラム、文字データ変換装置および文字データ変換方法
US9425821B2 (en) Converting device and converting method
JP6742692B2 (ja) 符号化プログラムおよび伸長プログラム
US8838551B2 (en) Multi-level database compression
US9496891B2 (en) Compression device, compression method, decompression device, decompression method, and computer-readable recording medium
US9973206B2 (en) Computer-readable recording medium, encoding device, encoding method, decoding device, and decoding method
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP2017073094A (ja) 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US20220277139A1 (en) Computer-readable recording medium, encoding device, index generating device, search device, encoding method, index generating method, and search method
US9965448B2 (en) Encoding method and information processing device
EP3193260A2 (en) Encoding program, encoding method, encoding device, decoding program, decoding method, and decoding device
KR101842420B1 (ko) 정보 처리 장치 및 데이터 관리 방법
US20150248432A1 (en) Method and system
US9479195B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
JP6476618B2 (ja) 伸長方法、伸長プログラムおよび伸長装置
JP7006462B2 (ja) データ生成プログラム、データ生成方法および情報処理装置
WO2013065199A1 (ja) 照合制御プログラム、照合制御装置および照合制御方法
US11520765B2 (en) Computer-readable recording medium recording index generation program, information processing apparatus and search method
JP6693549B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP2016134754A (ja) 変換処理プログラム、情報処理装置および変換処理方法
KR20070054055A (ko) 데이터 처리 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181220

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190617

R150 Certificate of patent or registration of utility model

Ref document number: 6550765

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150