(57)【特許請求の範囲】
【請求項１】
デジタルプロセッサにおいて実施される、所定の符号化体系に基づいてテキスト圧縮駆動部を構築する方法であって、
テキストデータベースに対応するテキスト列を受け入れる段階と、
テキストストリングを部分列トークンの順番列に分解する段階と、
そのように分解したデータベースにおけるトークン発生の相対頻度に基づいてトークンのランク順リストを生成する段階と、
Ｎ個の語−数マッパー（ＷＮＭ）の順序付けされた集合を構成する段階であって、各ＷＮＭは１からＮまでの範囲の順序表示のＷＮＭ数ｉおよびＷＮＭサイズＳ（ｉ）により特徴づけられ、ＷＮＭサイズはＷＮＭ数の非増加関数であり、またその関数は所定の符号化体系により求められるようにした段階と、
各トークン型を特定のＷＮＭへ割当て、かつ各トークン型をそのトークン型の割当てられたＷＮＭ内の固有の数へ割当てる段階であって、その割当てにより各トークン型は関連する一対の数を有することになり、第１の数は割当てられたＷＮＭのＷＮＭ数に対応し、第２の数は割当てられたＷＮＭにおける割当てられた数に対応するようにした段階と、
を有し、
トークン型が前記第１の数ｊ及び第２の数ｋにより特徴付けられるトークンは、前記所定の符号化体系に基づいて符号化される場合、ｎビット・コードの数字をｊ含み、
（ａ）コードの数字各々の専用ビットは、所与の符号化トークンを含むコードの数字のストリングの各々の該専用ビットをテストすることにより、該所与の符号化トークンのコードの数字の数を判断する情報を提供するために使用され、
（ｂ）ｊのコードの数字の残りの（ｎ−１）＊ｊビットは数ｋを２進数で表現するために使用される、
テキスト圧縮駆動部構築方法。
【請求項２】
Ｓ（１）の最も頻繁に発生するトークンは第１のＷＮＭへ割当てられ、またＳ（２）の次に頻繁に発生するトークンは第２のＷＮＭへ割当てられる、請求項１に記載の方法。
【請求項３】
序数ｉを有する前記ＷＮＭの最大サイズは２(n-1)*iである請求項１に記載の方法。
【請求項４】
デジタルプロセッサにおいて実施される、ｎビット・コードの数字を用いて、入力テキスト列を圧縮する方法であって、
Ｎ個の語−数マッパー（ＷＮＭ）の順序付けられた集合を提供する段階であって、各ＷＮＭは１からＮまでの範囲の順序表示のＷＮＭ数ｉ及びＷＮＭサイズＳ（ｉ）により特徴付けられ、序数ｉを有する前記ＷＮＭの最大サイズは２(n-1)*iである段階と、
ＷＮＭの集合は、トークン型の集合毎に固有の数対を提供し、第１の数はＷＮＭ数に対応し、第２の数はＷＮＭ内の数に対応するものであり、
入力テキスト列を部分列トークンの順番列に分解する段階と、
そのように分解された各トークンについて、そのトークン型のための数対を求める段階と、
そのように分解された各トークンについて、前記数対を求めることができる場合に、該数対を求められたトークンの各々について、符号化トークンがｎビット・コードの数字をｊ含み、（ａ）所与の符号化トークンを含むコードの数字のストリングの各々の専用ビットをテストすることにより、該所与の符号化トークンのコードの数字の数を求める情報を提供するように、コードの数字の各々の該専用ビットが使用され、（ｂ）ｊのコードの数字の残りの（ｎ−１）＊ｊビットは数ｋを２進数で示すためにに使用される、ように、前記数対に従ってそのトークンを符号化する、段階と、
を有する、入力テキスト列圧縮方法。
【請求項５】
Ｓ（１）の最も頻繁に発生するトークンは第１のＷＮＭへ割当てられ、またＳ（２）の次に最も頻繁に発生するトークンは第２のＷＮＭへ割当てられる、請求項４に記載の方法。
【請求項６】
序数ｉを有する前記ＷＮＭの最大サイズは２(n-1)*iである請求項４に記載の方法。
【請求項７】
分解されたトークンの各々について、前記数対を求めることができない場合には、該トークンを一連のサブ・ワード・トークンに分解し、該サブ・ワード・トークンの各々について、前記数対を求め、符号化する処理を行う、請求項４に記載の方法。
【請求項８】
デジタルプロセッサにおいて実施される、入力テキスト列を圧縮する方法であって、
Ｎ個の語−数マッパー（ＷＮＭ）の順序付けられた集合を提供する段階であって、各ＷＮＭは１からＮまでの範囲の順序表示のＷＮＭ数ｉおよびＷＮＭサイズＳ（ｉ）により特徴付けられ、序数ｉを有する前記ＷＮＭの最大サイズは２(n-1)*iである段階と、
ＷＮＭの集合は、トークン型の集合毎に固有の数対を提供し、第１の数はＷＮＭ数に対応し、第２の数はＷＮＭ内の数に対応するものであり、
入力テキスト列を部分列トークンの順番列に分解する段階と、
分解された各トークンについて、該トークン型のための数対を求める段階と、
分解された各トークンについて、該トークンの数対に基づき、所定の符号化体系に従って該トークンを符号化する段階と、
を有し、
前記ＷＮＭの集合に存在しない少なくとも個別の文字を含むトークンの追加の集合を該ＷＮＭの集合に提供し、
前記トークンを符号化する段階において、該トークンが前記ＷＮＭの集合に存在しない場合には、該トークンを断片に分解し、
前記断片に分解されたトークンが前記ＷＮＭの集合に存在する場合には、該断片に分解されたトークンの数対に基づき、所定の符号化体系に従って該断片に分解されたトークンを符号化し、
前記断片に分解されたトークンが前記ＷＮＭの集合に存在しない場合には、該断片に分解されたトークンをさらに分解する、
入力テキスト列圧縮方法。
【請求項９】
Ｓ（１）の最も頻繁に発生するトークンは第１のＷＮＭへ割当てられ、またＳ（２）の次に最も頻繁に発生するトークンは第２のＷＮＭへ割当てられる、請求項８に記載の方法。
【請求項１０】
序数ｉを有する前記ＷＮＭの最大サイズは２(n-1)*iである請求項８に記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データ圧縮技法に一般に関し、特に多数の各種の語を有するテキストデータベースの圧縮に適切なテキスト圧縮技法に関する。
【０００２】
【従来の技術】
コンピュータユーザは、手元で多量のテキストデータベースを扱うようになり、この傾向は、携帯用および手持ち式コンピュータ化装置が一層普及するにつれて続くものと思われる。圧縮比が主な問題である。というのは、入手する対象である参照作業の多くは時間がかかるからである。別の問題は、特定の列（ストリング）を探索するためにテキストを圧縮解除すべきかどうかという点である。多くの技法は、圧縮比に関しては効率的であるが、文脈に依存する（  すなわち、テキストを探索すると圧縮解除が必要となり、一部分を圧縮解除すると他の無関係な部分の圧縮解除が必要となる）  。この余分な圧縮解除段階は探索プロセスを受入れできない程度までスローダウンすることがあるので、より高速（  より高価）  のハードウエアコンポーネントの使用が必要となる。
【０００３】
かなり有望なことが判明しており、かつここ数年、多くの商用製品に使用されている１つの技法は、語−数マッパー（  「ＷＮＭ」）  と呼ばれるデータ構造を使用している。このＷＮＭは、データベースにおいてトークンと呼ばれる、各個別の語と句読記号が割当てられる固有の数を有する表と、概念的にみなすことができる。かくして、この表は固有で双方向の語−数マッピングを提供する。実際のＷＮＭは、高度に圧縮したデータ構造として実現される。
【０００４】
データベースの圧縮は、下記のように一般に生じる。先ずテキストは、交互に生じる語と句読記号のトークンの順番列に分解され、そのトークンは蓄積されて表を構築する。この表は、たとえトークン型がテキストデータベースにおいて頻繁に生じても、各トークン型について１つだけのエントリを含む。第２のパスにおいてテキストはトークンに再び分解され、また各トークンは表中のその固有の数により符号化される。１つの体系において大部分のトークンは２バイト数として符号化されるが、一部は単一バイトとして符号化される。特定の例として、聖書は約１３，０００の異なるトークン型を有することが分かったし、一方、救済者の聖職の引照は約２５，０００の異なるトークン型を有することが分かった。
【０００５】
圧縮解除は圧縮に対する逆のプロセスである。圧縮された列における数値コードは、最初にテキストの圧縮に使用された同一のＷＮＭを使用して、対応する未圧縮のトークンに変換される。数値コードの列が圧縮プロセスで格納される仕方を考慮しなければならない。
【０００６】
【発明が解決しようとする課題】
本発明は、比較的高度の圧縮比（  より一般的な２．５：１に対して４：１のオーダー）  により特徴づけられるテキスト圧縮技法を提供する。この技法は、テキストデータベースが非常に多数の別個のトークン型を含む場合に特に有用であり、また別個のトークン型数が特定のサイズコードにおいて符号化できる最大数を越えたならば幾つかの従来技術の技法は使用不能になったであろうという認識に部分的に基づいている。
【０００７】
【課題を解決するための手段】
要するに本発明は、頻度で整列した階層構造において複数の語−数マッパーを利用する。ＷＮＭの集合の特定の構造は、特定の符号化体系により決まるが、下記のように要約できる。その集合における各ＷＮＭは、順序表示のＷＮＭ数と一般にＷＮＭ数の非増加関数であるＷＮＭサイズ（  トークンの最大数）  とにより特徴づけらる。一定のトークンには数対が割り当てられ、第１の数はＷＮＭ数の１つであり、第２の数はそのＷＮＭにおけるトークン位置すなわちトークン数である。一般的に、最も頻繁に生じるトークンは、小さい番号が付けられたＷＮＭでマップされる。つまり、それらのトークンは短いコード（  より少ないビット）  により表すことができる。
【０００８】
ＷＮＭの集合は、圧縮されるデータベースを通る第１のパス上に生成される。そのデータベースはトークンに分解され、また発生頻度に基づくランク順リストが生成される。このリストはＷＮＭの集合を規定するように区分され、特定の細部は特定の符号化体系により決まる。特定の実施例において符号化はニブル（４ビット）  ベースで実施され、一定のコードは可変数のニブルを有する。特定のコードの長さを求めることができるように対策が講じられる。その特定の実施例においてビットの１つは、そのニブルが多分、多（マルチ）ニブルコードでの最後のニブルであるかどうかを示すのに使用される。
【０００９】
この特定の符号化体系の文脈において、８個の最も頻繁に生じるトークン型には、３ビット数が割り当てられ、また単一ニブルで符号化される。これらのトークンは第１の８個のトークンＷＮＭを規定する。６４個の次に最も頻繁に生じるトークン型には、６ビット数が割り当てられ、また２つのニブルで符号化される。これらのトークンは、第２の６４個のトークンＷＮＭを規定する。５１２個の次に最も頻繁に生じるトークン型には、９ビット数が割り当てられ、また３つのニブルで符号化される。より低い発生頻度に基づく増加する長さのコードにおけるこの符号化は、全てのトークン型に数対が割り当てられまで継続する。
【００１０】
データベースの実際の圧縮は、第１のパス上に生成されるＷＮＭの集合を使用して第２のパス上に生じる。データベースはトークンに分解され、また各トークン毎に、ＷＮＭの集合はトークンを見出すために探索される。一旦トークンが見出されると、それは該当する数対が割り当てられ、ついで符号化される。これは、全体のデータベースが圧縮されるまで継続する。
【００１１】
特定の列の探索（サーチ）は圧縮を必要としない。むしろ、ユーザが入力した目標列は、１つ以上のニブルの列を生成するために、同一の体系に従って圧縮され、また適切な部分列探索アルゴリズムが採用される。一旦その圧縮された探索列が圧縮されたデータベースにおいて見出されると、適切な量の周囲テキスト（  例えば、探索列を含むパラグラフ）  は圧縮される。その探索列を含む全体パラグラフを表示したいならば、直前のパラグラフと直後のパラグラフとの区切りを見出すために、見出した探索列から前後にテキストを探索できる。
【００１２】
本発明の別の態様は、ＷＮＭの集合を生成するのに使用されたデータベースと異なるデータベースで使用するように本発明は適合できるということである。圧縮されるデータベースが異なるとき、当初のデータベースを使用して構成されたＷＮＭの集合が、新しいデータベースにおける全てのトークンを含むことは保証されない。事実、ＷＮＭの集合から脱落している幾つかの新しいトークンがある可能性は非常に高い。
【００１３】
本発明のこの態様によれば、固有の数対はＷＮＭの構成中に各可能な個別の文字に割り当てられる。圧縮中にトークンがＷＮＭに存在していないことが判明したとき、補助体系が使用される。１つのそのような体系において、トークンは複数の個別文字コードとして符号化される。これによって、各可能列を符号化する機能が保証される。これは、トークンのコード化された表現を、その当初の（  例えばＡＳＣＩＩ）表現よりも長くする傾向があるが、この機能により、通常の検索と圧縮手順を修正なしに実施できる。そのようなＷＮＭの集合により、脱落するトークンを、ＷＮＭに既に含まれる多文字組合わせを包含する断片へ分解することもできる。また数対を共通語区分の収集へ割り当てることもできるので、ＷＮＭに存在していない語は語区分、個別文字、および存在する既知の文字の連結として符号化できる。これにより、未知のトークンは、その当初の表現よりも少ないビットで表すことができる。
【００１４】
本発明の一態様は、デジタルプロセッサにおいて実施される、所定の符号化体系に基づいてテキスト圧縮駆動部を構築する方法であって、テキストデータベースに対応するテキスト列を受け入れる段階と、テキストストリングを部分列トークンの順番列に分解する段階と、そのように分解したデータベースにおけるトークン発生の相対頻度に基づいてトークンのランク順リストを生成する段階と、Ｎ個の語−数マッパー（ＷＮＭ）の順序付けされた集合を構成する段階であって、各ＷＮＭは１からＮまでの範囲の順序表示のＷＮＭ数ｉおよびＷＮＭサイズＳ（ｉ）により特徴づけられ、ＷＮＭサイズはＷＮＭ数の非増加関数であり、またその関数は所定の符号化体系により求められるようにした段階と、各トークン型を特定のＷＮＭへ割当て、かつ各トークンをそのトークンの割当てられたＷＮＭ内の固有の数へ割当てる段階であって、その割当てにより各トークン型は関連する一対の数を有することになり、第１の数は割当てられたＷＮＭのＷＮＭ数に対応し、第２の数は割当てられたＷＮＭにおける割当てられた数に対応するようした段階と、から成る、テキスト圧縮駆動部構築方法である。
本発明の別の態様は、デジタルプロセッサにおいて実施される、入力テキスト列を圧縮する方法であって、Ｎ個の語−数マッパー（ＷＮＭ）の順序付けられた集合を提供する段階であって、各ＷＮＭは１からＮまでの範囲の順序表示のＷＮＭ数ｉおよびＷＮＭサイズＳ（ｉ）により特徴づけられ、ＷＮＭサイズはＷＮＭ数の非増加関数であり、またその関数は所定の符号化体系により求められるようにした段階と、ＷＮＭの集合は、トークン型の集合毎に固有の数対を提供し、第１の数はＷＮＭ数に対応し、第２の数はＷＮＭ内の数に対応するものであり、入力テキスト列を部分列トークンの順番列に分解する段階と、そのように分解された各トークンについて、そのトークン型のための数対を求める段階と、そのように分解された各トークンについて、そのトークンの数対に基づき、所定の符号化体系に従ってそのトークンを符号化する段階と、から成る、入力テキスト列圧縮方法である。
【００１５】
【実施例】
概要
本発明は、付随する探索と圧縮解除技法を有するテキスト圧縮技法に関する。起点は、辞書、百科辞典または小説などの生テキストデータベースであり、それらはＡＳＣＩＩまたは他の書式（フォーマット）のものでよい。２つの段階の第１の段階において、テキストデータベースは解析され、ついで幾つかのデータベース依存データ構造が生成される。ついでデータ構造は、データベースの圧縮に使用される。本発明においてデータ構造は、語−数マッパー（  「ＷＮＭ」）  の集合を含む。第２の段階において、圧縮データベースおよびデータ構造の関連する部分を提供されたエンドユーザは、特定の目標列の探索に多分応答して、テキストの選定された部分を圧縮解除できる。
【００１６】
したがって、ソフトウエアルーチンを開発および試験し、かつ未圧縮のテキストを処理するコンピュータのシステムまたはシステム群は、ハイエンドのパソコンまたはワークステーションのように、かなり強力なマシンであるように思われる。エンドユーザマシンは、これらの１つであることもできるが、特定のテキストの探索と圧縮解除を専用とする小型手持ち式装置であることもできる。
【００１７】
図１（Ａ）は、圧縮データベースとデータ構造の生成に使用される代表的な汎用コンピュータシステム１０のブロック線図である。この実際のコンピュータのアーキテクチャは、バスサブシステム１３を介して幾つかの周辺装置と通信するプロセッサ１２を備える標準的なものである。周辺装置は一般的に、ユーザ入力用のキーボード１５、入力エコーと視覚出力用の表示装置１７、データ処理用のＲＡＭ１８を含むメモリ、ならびにＷＮＭ２２と圧縮データベース２５と適切なプログラム２７と多分、生テキストデータベース２８とを格納するディスケット記憶装置２０を含む。コンピュータは、図示されないＩ／Ｏポートおよび他の周辺装置を多分備えるであろう。
【００１８】
図１（Ｂ）は、ユーザをデータベースにアクセスさせる手持ち式装置において具体化される代表的なコンピュータ１０’  のブロック線図である。主要な参照数字は、図１（Ａ）のものに機能的に対応するエレメントに使用される。このコンピュータは、プロセッサ１２’  、キーボードまたは他の入力装置１５’  、表示装置１７’  、ＲＡＭ１８’  、ならびにＷＮＭ２２と圧縮データベース２５’  と未圧縮形での圧縮データベースの所要の部分をアクセスかつ表示するのに必要なルーチン２７’  とを格納するＲＯＭ３０を含む。
ＷＮＭの生成
図２は、ＷＮＭを生成する技法を図示する流れ図である。先ず、当初のデータベースは、一度に１つのトークンがアクセスされ、ついでトークンのランク順リストが生成される（  段階４０）  。この目的のために、テキストは、交互に生じる語と句読記号の部分列トークンの順番列に分解される。例えば、テキスト列の“Ａｃｔｕａｌｌｙ，  ｔｈｅ  ｑｕｉｃｋ  ｂｒｏｗｎ  ｄｏｇ  ｊｕｍｐｅｄ  ｏｖｅｒ  ｔｈｅ  ｌａｚｙ  ｆｏｘ．”  は以下のように順番列に分解されるであろう。“Ａｃｔｕａｌｌｙ”  “，”  “ｔｈｅ”  “  ”  “ｑｕｉｃｋ”  “  ”  “ｂｒｏｗｎ”  “”  “ｄｏｇ”  “  ”  “ｊｕｍｐｅｄ”  “  ”  “ｏｖｅｒ”  “  ”  “ｔｈｅ”  “  ”  “ｌａｚｙ”  “  ”  “ｆｏｘ”  “．”
最も通常生じる句読順番列は、一般に単一スペースであるが、省略時分離文字と定義される。別途示される特定の記号（  例えば ）  がない限り、省略時分離文字はトークンの各対間に存在すると想定されることを理解した上で、そのトークンの全ての発生は除去される。この取り決めに従うと、このサンプルテキストは以下のようになる。“Ａｃｔｕａｌｌｙ”  “ ，”  “ｔｈｅ”  “ｑｕｉｃｋ”  “ｂｒｏｗｎ”  “ｄｏｇ”  “ｊｕｍｐｅｄ”  “ｏｖｅｒ”  “ｔｈｅ”  “ｌａｚｙ”  “ｆｏｘ”  “  ．   ”
トークンは頻度発生の順で記載（リスト）され、また各トークンは一回だけ記載される。
【００１９】
ついでトークンのランク順リストは細別され、またＷＮＭの整列した（順序付けられた）集合が構成される（  段階４２）  。このリストは、特定のコード化体系により決まる仕方で区分化される。この特定の実施例において、コード数字は４ビットのニブルであり、またトークンは１つ以上のコード数字から成ることができる。図３は、１つ、２つおよび３つのニブルをそれぞれ有する符号化されたトークン４５（１）  、４５（２）および４５（３）を示す。文字Ａ〜Ｊは、予想されるビット値（１または０）を意味する。各コード数字における１つのビット（  上位ビット）  は継続ビットとして確保され、その数字が特定のコード化トークンを構成する全ての数字の最後の数字であるかどうかを示す。
【００２０】
コード数字が、継続ビットとしての１つのビットを含むｎ個のビットである一般的な場合、ｉ個の数字で符号化できる２（ｎ−１）＊ｉ  個の予想される別個のトークンがある。この特定の場合、８個の予想される単一ニブルコード、６４個の予想される２ニブルコード、および５１２個の予想される３ニブルコードなどがある。８個の最も通常のトークンは、単一ニブルとして表され、継続ビットは「１」に設定されて、そのニブルがコード化トークンにおける最後の（  かつ唯一の）  ニブルであることを示す。６４個の次に最も頻繁に生じるトークンは２つのニブルで符号化され、第２のニブルは「０」に設定された継続ビットを有し、また第２のニブルは「１」に設定された継続ビットを有する。
【００２１】
各ＷＮＭは、順序表示のＷＮＭ数と、ＷＮＭについてのトークンの最大数であるＷＮＭサイズとにより特徴づけられる。第１のＷＮＭは０と７との間の固有数を８個の最も頻繁に生じるトークンに割当て、第２のＷＮＭは０と６３との間の固有数を６４個の次に最も頻繁に生じるトークンに割当て、第３のＷＮＭは０と５１１との間の固有数を５１２個の次に最も頻繁に生じるトークンに割当てるなどして、以下同様に割当てる。このようにして各トークン型は、関連する固有の数対を有し、すなわちトークンが格納されるＷＮＭの数と、そのＷＮＭにおけるトークンの数すなわち位置との数対を有する。ＷＮＭは、有限状態マシン（  「ＦＳＭ」）  技術を使用して構成され、得られたデータ構造は各語について僅か約１ビットだけを必要とする。
【００２２】
付録Ａは、代表的なデータベース（  ランダムハウス百科辞典）  についての第１の３つのＷＮＭのトークンリストを示す。下線文字は無スペース標識であり、垂直上向き矢印は次に来る文字が全て大文字であることを示し、２つの上向き矢印は次に来る語が全て大文字であることを示し、垂直線はキャリッジ復帰を示し、２  つのバックラッシュはタブを示し、左右の丸めた括弧は相互参照の始めと終わりを示し、また他の特殊の文字は特殊の文字またはフォーマット情報を表す。トークンが中に生じるリストは頻度の指標であるが、一定のリスト内のトークンの順序は指標ではない。
圧縮、圧縮解除および探索
図４は、テキストデータベースを圧縮する技法を図示する流れ図である。この未圧縮テキスト列は、読み込まれて、上述したようにトークンに分解され、また次のトークン（  第１の例では第１のトークン）  は抽出される（  段階５０）  。このトークンはＷＮＭ集合に伝達され、そのＷＮＭ集合は、そのトークンに関連する固有の語−数の対を生成する（  段階５２）  。その数対に基づいて、トークンは図３に示されるように符号化される（  段階５５）  。一般に、使用されるニブル数は順序表示のＷＮＭ数により決められる。１つのニブルから集合内にＷＮＭがあるように多くのニブルまでのもので表される符号化されたトークンは、挿入のために圧縮データベースに出力される（  段階５７）  。符号化されていないデータベース内にさらにトークンが存在するかどうかを判断する検査がなされる（  段階６０）  。もし存在するならば、次のトークンが得られる段階５０へ分岐し、そうでなければ、圧縮が完了したものとみなされる。上述のシーケンスは、入力列における全てのトークンが符号化されまで繰り返される。
【００２３】
図５は、圧縮されたテキストの列を圧縮解除する技法を図示する流れ図である。この技法は、基本的には上述の圧縮技法の逆のものである。次のトークン境界（  第１の例では第１のトークン境界）  が見出され（段階７０）  、ついで数対は符号化されたトークンから抽出される（段階７２）  。上述したようにトークン境界は、その上位ビット集合を有するニブルにより決められる。数対における第１の数は符号化されたトークン内のニブル数により決められ、また第２の数はニブルのデータ部分を連結することにより生成される。これは、データビットの各種トリオをけた送りし、かつその論理和をとることにより、または他の適切な技法により実施される。この変形およびその逆は、図６に概略的に示される。そのように生成された数は該当する番号付けされたＷＮＭへ伝達され、また復号合されたトークンは出力されて（  段階７５）  、圧縮解除されたテキスト列の一部になる。その列にさらにトークンが存在するかどうかを判断する検査がなされる（  段階７７）  。もし存在するならば、次のトークンが得られる段階７２へ分岐し、そうでなければ、圧縮解除が完了したものとみなされる。
【００２４】
圧縮データベースにおける目標列の探索は、単純な仕方で実施され、また圧縮解除を必要としない。ユーザが入力する目標列は、当初のデータベースの圧縮に使用した同一の体系に従って圧縮される。圧縮データベースにおける圧縮された目標列の探索は、効率的な部分列探索アルゴリズム、例えば周知のＢｏｙｅｒ  −Ｍｏｏｒｅ  アルゴリズム（  および導かん数）  およびＫｎｕｔｈ  −Ｍｏｒｒｉｓ−Ｐｒａｔｔ  アルゴリズムにより実施できる。例えば、Ｄａｎｉｅｌ  Ｍ．  Ｓｕｎｄａｙの「超高速の部分列探索アルゴリズム」、Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ＡＣＭ、１９９０年８月、Ｖｏｌ．３３、Ｎｏ．  ８、ｐｐ．  ３２−１４２を参照のこと。
【００２５】
一致が見出されたとき、一致した列が他の語を符号化するコード数字のより長い列の接尾部でないことを確認するために簡単な試験が実施される。特に、直前のコード数字の継続ビットが「１」へ設定されたかどうかが判断される。そうであれば、一致する列は所要のものであり、そうでなければ、探索が継続される。
【００２６】
一旦、目標列が見出されると、それは圧縮解除される。幾つかの例では、周囲テキストの若干の量も圧縮解除される。これは、何を望むかによるが、各方向におけるトークンの一定数を圧縮解除することにより、または両方向におけるパラグラフ区切りを探索し、かつ介入するトークンを圧縮解除することにより実施される。
脱落したトークンを有するデータベース
図７は、圧縮されるデータベースがＷＮＭ表の作成に使用されたデータベースと異なる場合に状態に順応するための、上述した圧縮技法の適合を図示する流れ図である。上記では、各トークンはＷＮＭの集合内に存在すると仮定したが、ここで検討する状態は、入力テキスト流中の幾つかのトークンはＷＮＭに存在しないということである。これらのトークンは脱落トークンと呼ぶことができる。以下に述べる適合は、単一ＷＮＭを使用する従来技術の圧縮技法にも適用できる。
【００２７】
この基本的技法は、以下の２つの変更を伴う。第１の変更として、ＷＮＭには、データベースに既に存在しない少なくとも個別の文字を含むトークンの追加の集合が提供される。例えば、「ａ」および「Ｉ」は、通常の語であるのでデータベースに存在すると思われが、「ｂ」および「ｔ」は存在すると思われない。したがって、一つの可能性は、単一文字用の３ニブル範囲（５１２個のトークンＷＮＭ）  でトークンを確保することである。トークンのこの追加の集合は、接尾部および接頭部などの通常の語断片も含むことができる。例として、「ｕｎ」、「ｎｏｎ  −」、「ｍｅｎｔ」、および「ｉｎｇ  」があろう。断片トークンは、「無スペース」文字により境界が定められるであろう。
第２の変更は、トークンがＷＮＭに見出されない場合に、補助符号化体系が設けられるということである。好ましい体系において、脱落トークンは断片に分解され、その断片は、当初のデータベースに存在した語であるか、または上述した追加のトークンでもよい。これらの断片は、他のトークンが符号化される仕方と同一の仕方で符号化される。
【００２８】
基本的流れは、一般的には図４に関連して上述した通りであり、また対応する参照数字は、該当する所に使用される。この変更には、入力のトークンがＷＮＭに見出されたかどうかの検査（  段階８０）  が含まれる。含まれたならば、トークンの符号化と圧縮データベースへの出力が生じる（  段階５５と５７）  。含まれなかったならば、脱落トークンを断片に分解するために分岐が行われる（  段階８２）  。その断片は段階５０において入力流れとして利用でき、また処理が継続する。段階８２において、断片がＷＮＭに存在しているとは一般的に仮定されないので、各断片は、それが脱落していることが分かる（  かつ２文字以上長い）  ならば、さらに断片化が行われる。
【００２９】
脱落トークンを断片化する多くの予想される戦略があり、また正確な流れは、選定された特定の戦略により決まるであろう。例えば、脱落トークンは単一の文字に分解でき、各文字は符号化される。この単純な体系により、各断片が見出されることになる。一層正確な体系は、見出される大きい断片を生成しようとするであろう。例えば、１つの予想される体系は、最大の予想される断片（  例えば、脱落トークンの最後の文字以外の全て）  を送り、またその断片が脱落していることが分かったならば、次に最大の断片（  例えば、脱落トークンの最後の２文字以外の全て）  が送られるであろう。このプロセスは、あるサイズの断片が脱落していないこと分かるまで繰り返されるであろう。この時点において残りの断片が送られ、また脱落していることが分かったならば、引き続いて、より小さい断片が送られるであろう。脱落トークンが少なくとも幾つかの多文字トークンから成るならば、正味の結果は、当初のＡＳＣＩＩよりもかなり短いことになる。明らかに、圧縮時間と圧縮比との間に適当な折り合いがある。実際問題として、全体の結果は、脱落トークン数はトークンの全体数の低いパーセントを占めると思われるので、著しくは劣化しないであろう。
【００３０】
脱落語を補うために連結されるエレメントは全て、介入スペース無しに接続しなければならない。これは、取消し分離文字（  無スペース）  トークンを各断片間に置くことにより実施できるであろうが、これは、ある代替の方法に比べて短縮のサイズを増加するかもしれない。その代替の方法において、特殊な列の小さい集合が断片に使用される目的だけのためにデータベースに加えられる。したがって、これらの特殊な列は、取消し分離文字記号を片側または反対側に含ませることができる。「 」が取消し分離文字記号であるならば、我々は列“ａ ”  、“ｂ ”  、“ｃ ”  を、文字だけでなく、全ての他の予想されるバイトコードについても加える。ついで脱落語、例えば“ａａｒｄｖａｒｋ”は、トークン“ａ ”  “ａ ”  “ｒ ”  “ｄ ”  “ｖ ”  “ａ ”  “ｒ ”  “ｋ ”  の順序列として符号化できる。
【００３１】
この次に当初のテキストのスペースが続くならば、他のトークンを末端に加えて、最終の取消し分離文字を取消さなければならない。トークン“  ”（空列）  はこの目的に役立つ。すなわち、このトークン前に通常現れるスペースは“ｋ ”  により抑制され、通常後に現れるスペースだけを残す。この種類の列により、それぞれの予想される列は、僅かＮ＋１のトークンで符号化できる。そこでＮは列の長さである。
【００３２】
接頭部および接尾部などの長い語の断片も、この戦略に従って符号化できる。通常の接頭部は、取消し分離文字を必ずその末端へ取り付けるので、接頭部はルート語で右へ連結でき、一方通常の接尾部は取消し記号を左へ有することになる。このようにして、“ｕｎｔａｌｋａｔｉｖｅ”  は“ｕｎ   ”  “ｔａｌｋ”  “ ａｔｉｖｅ”として符号化できるであろう。
【００３３】
これらの追加トークンは、脱落列を符号化する際に、どのように使用されるかの直観的な予測に従って、異なるＷＮＭに分布できる。代わりに、断片のＷＮＭへの一層正確な割当ては、以下の仕方で実施できる。このシステムが一般的に適用されるテキストの分類のかなり大きい全集が集められる。その全集は無作為に２つの半分に分割され、１つの半分は既知のトークンのリスト構成に使用される。ついで、このトークンリストは第２の半分のトークン化に使用されるが、ただし断片は、第１の半分のリストに既に存在しない語のトークン化に使用される。ついでＷＮＭは、このようにして全集の第２の半分をトークン化して得られたランクリストから構成される。
結論
要するに、本発明は特に効果的な圧縮技法を提供することが分かる。この技法は、多数の別個のトークンを有するデータベースに容易に適合でき、さらに未知のデータベースに使用できる。
【００３４】
上記は本発明の特定の実施例を十分に説明したものであるが、代案も可能である。例えば、符号化は異なる体系により実施できるであろう。また例えば、８ビットのコード数字であれば、７ビットが正確であろう。すなわち低いパーセントのビットがオーバヘッドに充てられる（  継続ビット）  。しかしながら最も頻繁に生じる８個の語は、その圧縮形でのビット数の２倍を必要とするであろう。頻度分布の急勾配度により、どの数字の符号化が最も有利であるかが判断される。単一トークンで変化する長さの数字を有することができるが（  例えば、４−４−８−８）、そのような符号化体系は、逆方向の探索を不可能にする。
【００３５】
以下は付録Ａを示す
【００３６】
【外１】
0003553106.tif 000002
【００３７】
【外２】
0003553106.tif 000003
【００３８】
【外３】
0003553106.tif 000004
【００３９】
【外４】
0003553106.tif 000005
【００４０】
【外５】
0003553106.tif 000006
【００４１】
【外６】
0003553106.tif 000007
【００４２】
【外７】
0003553106.tif 000008
【００４３】
【外８】
0003553106.tif 000009
【００４４】
【外９】
0003553106.tif 000010
【００４５】
【外１０】
0003553106.tif 000011
【００４６】
【外１１】
0003553106.tif 000012
【図面の簡単な説明】
【図１】（Ａ）は本発明を具体化する汎用コンピュータシステムのブロック線図であり、（Ｂ）はエンドユーザにとり適切なコンピュータのブロック線図である。
【図２】本発明に従うテキスト圧縮の第１の段階の流れ図である。
【図３】トークンの可変長さ符号化を概略的に図示する。
【図４】本発明に従うテキスト圧縮の第２の段階を図示する流れ図である。
【図５】本発明に従うテキスト圧縮解除の流れ図である。
【図６】符号化データからの数対の抽出、および数対から符号化データの抽出を概略的に図示する。
【図７】予想される脱落トークンを有するテキスト圧縮の流れ図である。
【図１】
0003553106.tif 000013
【図２】
0003553106.tif 000014
【図３】
0003553106.tif 000015
【図４】
0003553106.tif 000016
【図５】
0003553106.tif 000017
【図６】
0003553106.tif 000018
【図７】
0003553106.tif 000019