(57)【要約】【課題】インデックスより元データを生成することを課題とする。【解決手段】情報処理装置は、テキストデータより生成された、テキストデータに含まれる形態素それぞれをテキストデータにおける位置と対応づけたインデックスを参照する。そして、情報処理装置は、テキストデータにおける位置の順で、インデックスで対応づけられた形態素を配置する。【選択図】図１
2019083477.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
テキストデータより生成された、前記テキストデータに含まれる形態素それぞれを前記テキストデータにおける位置と対応づけたインデックスを参照し、
前記テキストデータにおける位置の順で、前記インデックスで対応づけられた形態素を配置する、
処理を実行させることを特徴とするデータ生成プログラム。
【請求項２】
前記インデックスは、前記テキストデータに含まれる形態素それぞれを符号化した符号と、前記テキストデータにおける当該形態素を対応づけたインデックスであり、前記テキストデータにおける位置の順で、前記インデックスで対応づけられた前記符号を配置することを特徴とする請求項１に記載のデータ生成プログラム。
【請求項３】
前記インデックスは、出現頻度の少ない単語に比べて、出現頻度の高い単語により短い符号が割当てられることを特徴とする請求項２に記載のデータ生成プログラム。
【請求項４】
コンピュータが、
テキストデータより生成された、前記テキストデータに含まれる形態素それぞれを前記テキストデータにおける位置と対応づけたインデックスを参照し、
前記テキストデータにおける位置の順で、前記インデックスで対応づけられた形態素を配置する、
処理を実行することを特徴とするデータ生成方法。
【請求項５】
テキストデータより生成された、前記テキストデータに含まれる形態素それぞれを前記テキストデータにおける位置と対応づけたインデックスを参照する参照部と、
前記テキストデータにおける位置の順で、前記インデックスで対応づけられた形態素を配置する配置部と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ生成プログラム、データ生成方法および情報処理装置に関する。
【背景技術】
【０００２】
データの圧縮や伸長において、ＬＺ７７やＺＩＰなどでは、文字や最長一致文字列に対して短いビット長の符号を割り当てることで、符号化と復号化が行われる。また、Ｗｅｂ検索では、単語に対応付けた転置インデックスを利用して、全文検索を高速化する技術が知られている。
【０００３】
一方、近年では、圧縮や伸長のために、単語に対して符号を割り当てることで、符号化と復号化を行い、かつ、検索の高速化のために、単語とその出現位置に対応付けた転置インデックスを生成し、内蔵する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−０４６６０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
単語の出現順に対応付けられた圧縮符号を基に元データを復元することは容易ではある。しかしながら、インデックスが、単語の出現順では無く、単語コード（もしくは、単語を構成する文字コード）の順序で転置（並び替え）されているため、元のデータを復元することが困難である。
【０００６】
また、転置インデックスのサイズ増大を抑止するため、出現頻度の高い単語をインデックス対象より除外したり、転置インデックスの位置に関する情報の粒度を大きくしたりする等の処理が行われるため、転置インデックスを利用して元のデータを復元することはできない。
【０００７】
一つの側面では、インデックスより元データを生成することができるデータ生成プログラム、データ生成方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、データ生成プログラムは、コンピュータに、テキストデータより生成された、前記テキストデータに含まれる形態素それぞれを前記テキストデータにおける位置と対応づけたインデックスを参照する処理を実行させる。データ生成プログラムは、コンピュータに、前記テキストデータにおける位置の順で、前記インデックスで対応づけられた形態素を配置する処理を実行させる。
【発明の効果】
【０００９】
一実施形態によれば、インデックスより元データを生成することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１にかかる復元処理を説明する図である。
【図２】図２は、実施例１にかかる情報処理装置の機能構成を示す機能ブロック図である。
【図３】図３は、ビットマップ型転置インデックスに関するサイズ縮小について説明する図である。
【図４】図４は、静的辞書および動的辞書を説明する図である。
【図５】図５は、ハッシュ化ビットマップ型転置インデックスの展開について説明する図である。
【図６】図６は、ハッシュ化ビットマップ型転置インデックスのＡＮＤ演算について説明する図である。
【図７】図７は、圧縮符号の転置を説明する図である。
【図８】図８は、圧縮データの生成および元の文書データの復元を説明する図である。
【図９】図９は、処理の流れを示すフローチャートである。
【図１０】図１０は、実施例１の情報処理装置のハードウェア構成を示す図である。
【図１１】図１１は、コンピュータで動作するプログラムの構成例を示す図である。
【図１２】図１２は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示するデータ生成プログラム、データ生成方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００１２】
［全体構成］
まず、実施例１にかかる情報処理装置１０（図２を参照）が実行する処理について説明する。図１は、実施例１にかかる復元処理を説明する図である。図１に示すように、情報処理装置１０は、圧縮符号に対応するビットマップ型転置インデックス（以下では、単にビットマップまたはハッシュ化ビットマップなどと記載する場合がある）を取得し、このビットマップ型転置インデックスを用いた圧縮符号の転置バッファリング処理を実行して、転置用バッファに圧縮符号を配置する。その後、情報処理装置１０は、静的辞書および動的辞書を用いて、転置用バッファに圧縮符号を、格納されている順で変換することで、元のテキストデータを復元する。
【００１３】
ここで、ビットマップ型転置インデックスは、符号化対象の文章データから生成されたインデックスであり、文章データに登場する各単語に対応する圧縮符号と文書データにおける出現位置とを対応付けたインデックスである。また、静的辞書は、出現頻度の高い単語について、当該単語に予め割当てられた圧縮符号を記載する辞書であり、高頻度の単語と圧縮符号とを対応付けた表である。動的辞書は、出現頻度の低い単語について、当該単語に割当てられた圧縮符号を記載する辞書であり、低頻度の単語と圧縮符号とを対応付けた表である。すなわち、動的辞書は、文章データに登場する単語のうち、静的辞書に登録されていない各未登録単語に対して、文章データに登場したときに動的に割当てられる圧縮符号と未登録単語との対応付けを記憶する。また、転置用バッファは、３バイトの固定長で区切ったバッファであり、ビットマップ型転置インデックスと同じバイト数分の長さを有するバッファである。
【００１４】
このような状態において、情報処理装置１０は、文書データに出現した単語１、単語２・・・単語ｎのそれぞれに対応する圧縮符号Ａ、圧縮符号Ｂ・・・圧縮符号Ｎのそれぞれに対応する各ビットマップ型転置インデックスを取得する。続いて、情報処理装置１０は、３バイトずつで区切った転置用バッファを用意する。
【００１５】
そして、情報処理装置１０は、各単語の圧縮符号に対応する各ビットマップ型転置インデックスにしたがって、対象文章データにおける出現位置に対応する転置用バッファに、出現した単語の圧縮符号を転置する。例えば、情報処理装置１０は、単語１（圧縮符号Ａ）が１番目と３番目に出現し、単語２（圧縮符号Ｂ）が２番目に出現する場合、転置用バッファの１番目に圧縮符号Ａを格納し、２番目に圧縮符号Ｂを格納し、３番目に圧縮符号Ａを格納する。
【００１６】
その後、情報処理装置１０は、静的辞書と動的辞書とを参照して、転置用バッファに格納される順で、格納される各圧縮符号を元の単語に変換する。上記例で説明すると、情報処理装置１０は、転置バッファの１番目に格納される圧縮符号Ａを単語１に変換し、２番目に格納される圧縮符号Ｂを単語２に変換し、３番目に格納される圧縮符号Ａを単語１に変換し、これらを格納されている順で「単語１、単語２、単語１・・・」と配置することで、元の文章データを復元することができる。
【００１７】
このように、情報処理装置１０は、テキストデータである文書データ多より生成された、文書データに含まれる単語それぞれを文書データにおける位置と対応づけたインデックスを参照し、文書データにおける位置の順でインデックスで対応づけられた単語を配置する。したがって、情報処理装置１０は、ビットマップ型転置インデックスから元データを生成することができる。なお、実施例では、単語の圧縮符号に対応するビットマップ型転置インデックスを例にして説明するが、これに限定されるものではなく、文書データから得られる形態素または単語そのものに対応するビットマップ型転置インデックスであっても、同様に処理することができる。なお、その場合は、転置バッファへの格納処理の前に、静的辞書や動的辞書を用いて形態素または単語を圧縮符号へ変換する。
【００１８】
［機能構成］
図２は、実施例１にかかる情報処理装置１０の機能構成を示す機能ブロック図である。図２に示すように、情報処理装置１０は、通信部１１、記憶部１２、制御部２０を有する。
【００１９】
通信部１１は、他の装置の間の通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信部１１は、他の情報処理装置１０からビットマップ型転置インデックスなどを受信する。
【００２０】
記憶部１２は、プログラムやデータを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部１２は、転置インデックスＤＢ１３、静的辞書１４、動的辞書１５などを記憶する。
【００２１】
転置インデックスＤＢ１３は、符号化対象の文章データから生成されたインデックスであり、文章データに登場する各単語に対応する圧縮符号と文書データにおける出現位置とを対応付けた、オフセット付きのビットマップ型転置インデックスを記憶するデータベースである。
【００２２】
ここで、図３を用いて、オフセット付きのビットマップ型転置インデックスの生成例について説明する。図３は、ビットマップ型転置インデックスに関するサイズ縮小について説明する図である。なお、ここでは、ビットマップ型転置インデックスを生成する装置が、情報処理装置１０とは異なるインデックス生成装置を例にして説明するが、情報処理装置１０が生成することもできる。
【００２３】
図３を用いて、オフセット付きのビットマップ型転置インデックスの生成例について説明する。図３に示すように、オフセット付きのビットマップ型転置インデックスの生成処理は、ビットマップ型インデックスのサイズ縮小を実現するために、ビットマップ型インデックスからハッシュ化インデックスを生成する。すなわち、ビットマップ型転置インデックスは、隣接した複数のハッシュ値（底）を基に、２次元（単語の軸とファイルの軸）にハッシュ化を適用したハッシュ化インデックスを生成する。
【００２４】
ここでいうビットマップ型インデックスとは、テキストデータに含まれる単語について、ファイルごとの存否をインデックス化したビットマップのことをいう。図３に示すように、ビットマップ型インデックスのＸ軸はオフセットを表し、ビットマップ型インデックスのＹ軸は単語ＩＤを表す。すなわち、ビットマップ型インデックスは、単語ＩＤが示す単語のあるファイルにおける存否を表す。一例として、ある単語ＩＤに対応するビットマップｂｉ１が示されている。ある単語ＩＤが示す単語がファイルに存在する場合には、当該単語のファイルの存否として２進数の「１」が設定され、当該単語がファイルに存在しない場合には、当該単語のファイルの存否として２進数の「０」が設定される。
【００２５】
例えば、図３に示すように、インデックス生成装置は、単語ＩＤに対応するビットマップそれぞれについてハッシュ関数を適用した複数のハッシュ化ビットマップを生成する。ここでは、インデックス生成装置は、３２ビットレジスタを想定し、一例として２９と３１のハッシュ値（底）を基に、各ビットマップをハッシュ化する。具体的には、インデックス生成装置は、１つの底のハッシュ化ビットマップについて、単語ＩＤに対応するビットマップの各ビットの位置を底で割った余りの位置に、当該ビットマップの各ビットの値を設定する。
【００２６】
一例として、インデックス生成装置は、底２９のハッシュ化ビットマップｈ１１について、ビットマップｂｉ１の各ビットの位置を底２９で割った余りの位置に、ビットマップｂｉ１の各ビットの値を設定する。ビットマップｂｉ１の３５ビット目の位置のビット値「１」は、ハッシュ化ビットマップｈ１１の６ビット目に設定される。ビットマップｂｉ１の４２ビット目の位置のビット値「１」は、ハッシュ化ビットマップｈ１１の１３ビット目に設定される。インデックス生成装置は、底３１のハッシュ化ビットマップｈ１２について、ビットマップｂｉ１の各ビットの位置を底３１で割った余りの位置に、ビットマップｂｉ１の各ビットの値を設定する。ビットマップｂｉ１の３５ビット目の位置のビット値「１」は、ハッシュ化ビットマップｈ１２の４ビット目に設定される。ビットマップｂｉ１の４２ビット目の位置のビット値「１」は、ハッシュ化ビットマップｈ１２の１１ビット目に設定される。すなわち、インデックス生成装置は、ビットマップの０ビット目からの各ビットを順番にハッシュ化ビットマップの０ビット目から設定し、（底−１）ビット目まで設定する。そして、インデックス生成装置は、再度折り返してハッシュ化ビットマップの０ビット目から既にハッシュ化ビットマップに設定された値とＯＲ演算した値を設定する。
【００２７】
より詳細に説明すると、一例として、インデックスにビットマップ５０が含まれるものとし、かかるビットマップ５０をハッシュ化する場合について説明する。インデックス生成装置は、ビットマップ５０から、底２９のビットマップ５０ａと、底３１のビットマップ５０ｂを生成する。ビットマップ５０ａは、ビットマップ５０に対して、オフセット２９毎に区切りを設定し、設定した区切りを先頭とするフラグ「１」のオフセットを、ビットマップ５０ａのオフセット０〜２８のフラグで表現する。
【００２８】
インデックス生成装置は、ビットマップ５０のオフセット０〜２８までの情報を、ビットマップ５０ａにコピーする。インデックス生成装置は、ビットマップ５０ａの２９以降のオフセットの情報を下記の様に処理する。
【００２９】
ビットマップ５０のオフセット「３５」にフラグ「１」が立っている。オフセット「３５」は、オフセット「２８＋７」であるため、インデックス生成装置は、ビットマップ５０ａのオフセット「６」に「（１）」を立てる。なお、オフセットの１番目を０としている。ビットマップ５０のオフセット「４２」にフラグ「１」が立っている。オフセット「４２」は、オフセット「２８＋１４」であるため、インデックス生成装置は、ビットマップ５０ａのオフセット「１１」にフラグ「（１）」を立てる。
【００３０】
ビットマップ５０ｂは、ビットマップ５０に対して、オフセット３１毎に区切りを設定し、設定した区切りを先頭とするフラグ「１」のオフセットを、ビットマップ５０ｂのオフセット０〜３０のフラグで表現する。
【００３１】
ビットマップ５０のオフセット「３５」にフラグ「１」が立っている。オフセット「３５」は、オフセット「３０＋５」であるため、インデックス生成装置は、ビットマップ５０ｂのオフセット「４」に「（１）」を立てる。なお、オフセットの１番目を０としている。ビットマップ５０のオフセット「４２」にフラグ「１」が立っている。オフセット「４２」は、オフセット「３０＋１２」であるため、インデックス生成装置は、ビットマップ５０ｂのオフセット「１２」にフラグ「（１）」を立てる。
【００３２】
インデックス生成装置は、上記処理を実行することで、ビットマップ５０からビットマップ５０ａ、５０ｂを生成する。このビットマップ５０ａ、５０ｂが、ビットマップ５０をハッシュ化した結果となる。ここでは、ビットマップ５０の長さが０〜４３である場合について説明したが、ビットマップ５０の長さが４３以上になる場合でも、ビットマップ５０に設定されたフラグ「１」を、ビットマップ５０ａおよびビットマップ５０ｂで表現することができる。
【００３３】
このようにして、インデックス生成装置は、各単語について、上述した手法により生成されたハッシュ化ビットマップを生成する。そして、転置インデックスＤＢ１３は、単語ごとのハッシュ化ビットマップを記憶する。ただし、上述したように、サイズ縮小されたものではなく、通常のサイズのビットマップ型転置インデックスを用いることもできる。また、サイズ縮小の手法は、公知の手法を採用することができる。
【００３４】
図２に戻り、静的辞書１４は、出現頻度の高い単語と、当該単語に予め割当てられた圧縮符号との対応付けを記憶するデータベースなどである。動的辞書１５は、静的辞書１４に登録されていない出現頻度の低い単語であって、符号化対象の文書データに登場した単語と、当該単語に割当てられた圧縮符号との対応付けを記憶するデータベースである。
【００３５】
図４は、静的辞書１４および動的辞書１５を説明する図である。図４に示す辞書は、静的辞書１４および動的辞書１５をあわせた辞書であり、圧縮符号とビットマップ型転置インデックスのＹ軸は、１対１に対応付けられている。図４に示す横軸の「０＊ｈ」から「９＊ｈ」までが静的辞書１４に対応し、「Ａ＊ｈ」から「Ｆ＊ｈ」までが動的辞書１５に対応する。
【００３６】
図４の上部の横方向の項目は、最初の１バイト目を０〜Ｆの１６進表記で示しており、「＊」は、２バイト目を示している。例えば、「１＊ｈ」は、１バイト目が２進数表記で「０００００００１」であることを示す。左側の縦方向の項目は、２バイト目を０〜Ｆの１６進表記で示しており、「＊」は、１バイト目を示している。例えば、「＊２ｈ」は、２バイト目が２進数表記で「００００００１０」であることを示す。
【００３７】
「０＊ｈ」、「１＊ｈ」の符号については、１バイトの符号であり、各階層とも、共通の制御コードが対応付けられている。また、「２＊ｈ」〜「３＊ｈ」の符号については、１バイトの符号であり、高頻度に出現する単語の中でも特に頻度の高い超高頻度単語（英単語）が予め対応付けられており、「４＊ｈ」〜「５＊ｈ」の符号については、１バイトの符号であり、高頻度に出現する単語の中でも特に頻度の高い超高頻度単語（日本語）が予め対応付けられている。
【００３８】
また、「６＊ｈ」〜「７＊ｈ」の符号については、２バイトの符号であり、高頻度に出現する単語（英単語）が予め対応付けられており、「８＊ｈ」〜「９＊ｈ」の符号については、２バイトの符号であり、高頻度に出現する単語（日本語）が予め対応付けられている。「Ａ＊ｈ」〜「Ｆ＊ｈ」の符号については、２バイトまたは３バイトの符号であり、低頻度単語が出現した際に符号を動的に割り当てる。なお、「Ｅ＊ｈ」、「Ｆ＊ｈ」は、符号の不足に対応するため、３バイトの符号としている。
【００３９】
制御部２０は、情報処理装置１０全体を司る処理部であり、例えばプロセッサなどである。制御部２０は、取得部２１と復元部２２を実行する。なお、取得部２１と復元部２２は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【００４０】
取得部２１は、インデックス生成装置などの他のコンピュータから、オフセット付きのビットマップ型転置インデックスを取得する処理部である。具体的には、取得部２１は、図３で説明した手法で生成された上記ビットマップ型転置インデックスを取得して、転置インデックスＤＢ１３に格納する。
【００４１】
復元部２２は、転置処理部２３と復元処理部２４を有し、転置インデックスＤＢ１３に格納されるビットマップ型転置インデックスから、元の文書データの復元を実行する処理部である。具体的には、復元部２２によって、ハッシュ化されているビットマップ型転置インデックスを復元した後、転置処理部２３と復元処理部２４を用いて、元の文書データの復元が実行される。
【００４２】
ここで、図５と図６を用いて、ハッシュ化されているビットマップ型転置インデックスの復元について説明する。図５は、ハッシュ化ビットマップ型転置インデックスの展開について説明する図であり、図６は、ハッシュ化ビットマップ型転置インデックスのＡＮＤ演算について説明する図である。ここでは一例として、ビットマップ５０ａとビットマップ５０ｂとを基にして、ビットマップ５０を復元する処理について説明する。ビットマップ５０、５０ａ、５０ｂは、図３で説明したものに対応する。
【００４３】
図５に示すように、復元部２２は、底２９のビットマップ５０ａを基にして、ビットマップ５１ａを生成する。ビットマップ５１ａのオフセット０〜２８のフラグの情報は、ビットマップ５０ａのオフセット０〜２８のフラグの情報と同様となる。ビットマップ５１ａのオフセット２９以降のフラグの情報は、ビットマップ５０ａのオフセット０〜２８のフラグの情報の繰り返しとなる。
【００４４】
同様に、復元部２２は、底３１のビットマップ５０ｂを基にして、ビットマップ５１ｂを生成する。ビットマップ５１ｂのオフセット０〜３０のフラグの情報は、ビットマップ５０ｂのオフセット０〜３０のフラグの情報と同様となる。ビットマップ５１ｂのオフセット３１以降のフラグの情報は、ビットマップ５０ｂのオフセット０〜３０のフラグの情報の繰り返しとなる。
【００４５】
その後、図６に示すように、復元部２２は、ビットマップ５１ａとビットマップ５１ｂとのＡＮＤ演算を実行することで、ビットマップ５０を生成する。図６に示す例では、オフセット「０、５、１１、１８、２５、３５、４２」において、ビットマップ５１ａおよびビットマップ５１ｂのフラグが「１」となっている。このため、ビットマップ５０のオフセット「０、５、１１、１８、２５、３５、４２」のフラグが「１」となる。このビットマップ５０が、復元されたビットマップとなる。復元部２２は、他のビットマップについても同様の処理を繰り返し実行することで、各ビットマップを復元し、インデックスを生成する。
【００４６】
転置処理部２３は、該当の単語の圧縮符号を、ビットマップ型転置インデックスのビットマップをもとに、転置バッファに転置する処理部である。転置処理部２３は、動的辞書１５で管理される符号の最大バイト数である３バイトで区切った転置バッファをメモリ等に確保し、単語が出現した位置に対応する転置バッファに、該当単語の圧縮符号を格納する。
【００４７】
図７は、圧縮符号の転置を説明する図である。図７に示すように、転置処理部２３は、圧縮符号「２０ｈ」のオフセット（位置）が０と５に「１」が格納されているので、転置バッファの先頭である（０）と６番目である（５）に圧縮符号「２０ｈ」を格納する。なお、圧縮符号「２０ｈ」が格納された領域内で、使用されていない領域はＮＵＬＬとなる。同様に、転置処理部２３は、圧縮符号「Ａ０００ｈ」のオフセット（位置）が１と６に「１」が格納されているので、転置バッファの２番目である（１）と７番目である（６）に圧縮符号「Ａ０００ｈ」を格納する。なお、圧縮符号「Ａ０００ｈ」が格納された領域内で、使用されていない領域はＮＵＬＬとなる。
【００４８】
このようにして、転置処理部２３は、各圧縮符号のビットマップ型転置インデックスに基づいて、３バイト区切りの転置バッファの先頭から順に、文書データ内の出現順で該当単語の圧縮符号を格納することができる。そして、転置処理部２３は、圧縮符号が格納された転置バッファを復元処理部２４に出力する。
【００４９】
復元処理部２４は、圧縮符号が格納された転置バッファから、元の文書データを復元する処理部である。具体的には、復元処理部２４は、転置バッファ内のＮＵＬＬを削除して、圧縮符号だけを抽出した圧縮データを生成する。その後、復元処理部２４は、各圧縮符号を、静的辞書１４または動的辞書１５を用いて元の単語に復元することで、文書データの復元を実行する。なお、圧縮データにＮＵＬＬを挿入して、転置バッファの状態を復元することもできる。
【００５０】
図８は、圧縮データの生成および元の文書データの復元を説明する図である。図８に示すように、復元処理部２４は、転置バッファの先頭である（０）のバッファから順に（ｎ）のバッファまで、「ＮＵＬＬ」を削除して、圧縮符号「２０ｈ」、「Ａ０００ｈ」、「「Ｂ０００ｈ」・・・を順に抽出する。そして、復元処理部２４は、抽出した圧縮符号を連結させた圧縮データ「２０ｈ，Ａ０００ｈ，Ｂ０００ｈ，・・・」を生成する。
【００５１】
その後、復元処理部２４は、静的辞書１４および動的辞書１５を参照して、圧縮データ「２０ｈ，Ａ０００ｈ，Ｂ０００ｈ，・・・」内の各圧縮符号に対応する単語を特定し、圧縮データを単語に変換した「単語１、単語２、単語３・・・」を生成する。そして、復元処理部２４は、変換して得られた単語１、単語２、単語３・・を連結させて、元の文書データを復元する。
【００５２】
［処理の流れ］
図９は、処理の流れを示すフローチャートである。ここでは、静的辞書と動的辞書は、すでに記憶されているものとする。
【００５３】
図９に示すように、情報処理装置１０の取得部２１は、処理開始時が指示されると（Ｓ１０１：Ｙｅｓ）、単語ごとのビットマップ型転置インデックスを取得する（Ｓ１０２）。ここで、復元部２２は、各ビットマップ型転置インデックスがハッシュ化されてサイズ縮小されている場合は、元のサイズに復元する。
【００５４】
続いて、転置処理部２３は、圧縮符号の転置用バッファを確保する（Ｓ１０３）。そして、復元処理部２４は、取得されたビットマップ型転置インデックスを１つ選択し（Ｓ１０４）、当該ビットマップ型転置インデックスに格納されている情報にしたがって、転置用バッファに圧縮符号を格納する（Ｓ１０５）。
【００５５】
ここで、転置処理部２３は、未処理のビットマップ型転置インデックスが存在する場合（Ｓ１０６：Ｙｅｓ）、Ｓ１０４に戻って以降の処理を繰り返す。一方で、未処理のビットマップ型転置インデックスが存在しない場合（Ｓ１０６：Ｎｏ）、復元処理部２４は、転置用バッファのＮＵＬＬを削除して、圧縮データを生成する（Ｓ１０７）。
【００５６】
そして、復元処理部２４は、各辞書を用いて、圧縮データ内の各圧縮符号を単語に復元し（Ｓ１０８）、復元された各単語を用いて、元の文書データを復元する（Ｓ１０９）。
【００５７】
［効果］
上述したように、情報処理装置１０は、オフセット付きのビットマップ型転置インデックスをもとに、圧縮符号の転置と置換、およびテキストを復元する。具体的には、情報処理装置１０は、オフセット付きのビットマップ型転置インデックスのビット列の１ビットと圧縮符号のバイト列の固定３バイトを対応付け、全単語の圧縮符号の転置を繰り返す。続いて、情報処理装置１０は、各圧縮符号のＮＵＬＬバイトをサプレスする。その後、情報処理装置１０は、固定３バイトの圧縮符号のバイト列をもとに、静的辞書と動的辞書を用いて、テキスト（文書データ）を復元する。したがって、情報処理装置１０は、オフセット付きのビットマップ型転置インデックスをもとに、圧縮符号を生成し、テキストを復元することができる。
【実施例２】
【００５８】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００５９】
［システム］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６０】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６１】
［ハードウェア構成］
図１０は、実施例１の情報処理装置１０のハードウェア構成を示す図である。図１０の例に示すように、コンピュータ４００は、各種演算処理を実行するＣＰＵ４０１と、ユーザからのデータ入力を受け付ける入力装置４０２と、モニタ４０３とを有する。また、コンピュータ４００は、記憶媒体からプログラム等を読み取る媒体読取装置４０４と、他の装置と接続するためのインターフェース装置４０５と、他の装置と無線により接続するための無線通信装置４０６とを有する。また、コンピュータ４００は、各種情報を一時記憶するＲＡＭ４０７と、ハードディスク装置４０８とを有する。また、各装置４０１〜４０８は、バス４０９に接続される。
【００６２】
ハードディスク装置４０８には、例えば図２に示した取得部２１と復元部２２の各処理部と同様の機能を有する情報処理プログラムが記憶される。また、ハードディスク装置４０８には、情報処理プログラムを実現するための各種データが記憶される。
【００６３】
ＣＰＵ４０１は、ハードディスク装置４０８に記憶された各プログラムを読み出して、ＲＡＭ４０７に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ４００を、例えば図２に示した取得部２１と復元部２２として機能させることができる。
【００６４】
なお、上記の情報処理プログラムは、必ずしもハードディスク装置４０８に記憶されている必要はない。例えば、コンピュータ４００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ４００が読み出して実行するようにしてもよい。コンピュータ４００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ４００がこれらからプログラムを読み出して実行するようにしてもよい。
【００６５】
図１１は、コンピュータ４００で動作するプログラムの構成例を示す図である。コンピュータ４００において、図１０に示すハードウェア群２６（４０１〜４０９）の制御を行なうＯＳ（オペレーティング・システム）２７が動作する。ＯＳ２７に従った手順でＣＰＵ４０１が動作して、ハードウェア群２６の制御・管理が行なわれることにより、アプリケーションプログラム２９やミドルウェア２８に従った処理がハードウェア群２６で実行される。さらに、コンピュータ４００において、ミドルウェア２８またはアプリケーションプログラム２９が、ＲＡＭ４０７に読み出されてＣＰＵ４０１により実行される。
【００６６】
ＣＰＵ４０１により検索機能が呼び出された場合、ミドルウェア２８またはアプリケーションプログラム２９の少なくとも一部に基づく処理を行なうことで、（それらの処理をＯＳ２７に基づいてハードウェア群２６を制御して）、取得部２１と復元部２２の機能が実現される。取得部２１と復元部２２の各機能は、それぞれアプリケーションプログラム２９自体に含まれてもよいし、アプリケーションプログラム２９に従って呼び出されることで実行されるミドルウェア２８の一部であってもよい。
【００６７】
図１２は、実施形態のシステムにおける装置の構成例を示す図である。図１２のシステムは、コンピュータ４００ａ、コンピュータ４００ｂ、基地局３０およびネットワーク４０を含む。コンピュータ４００ａは、無線または有線の少なくとも一方により、コンピュータ４００ｂと接続されたネットワーク４０に接続している。
【符号の説明】
【００６８】
１０  情報処理装置
１１  通信部
１２  記憶部
１３  転置インデックスＤＢ
１４  静的辞書
１５  動的辞書
２０  制御部
２１  取得部
２２  復元部
２３  転置処理部
２４  復元処理部
【図１】
2019083477.tif 000003
【図２】
2019083477.tif 000004
【図３】
2019083477.tif 000005
【図４】
2019083477.tif 000006
【図５】
2019083477.tif 000007
【図６】
2019083477.tif 000008
【図７】
2019083477.tif 000009
【図８】
2019083477.tif 000010
【図９】
2019083477.tif 000011
【図１０】
2019083477.tif 000012
【図１１】
2019083477.tif 000013
【図１２】
2019083477.tif 000014