[論文レビュー] Self-Index based on LZ77 (thesis)
本学位論文は、高頻度に繰り返されるテキストを対象とした、LZ77に基づく自己索引の初の実装を提示している。新規のLZ-Endパーシング変種を用いることで、効率的なランダムな部分文字列抽出を可能にした。圧縮性能が優れており、RLCSAの2倍まで向上(最高2倍)し、構築時間がRLCSAの35%、メモリ使用量が60%にまで削減された。短いパターンの検索においても、繰り返しデータ処理分野の最先端技術を上回る性能を発揮した。
Domains like bioinformatics, version control systems, collaborative editing systems (wiki), and others, are producing huge data collections that are very repetitive. That is, there are few differences between the elements of the collection. This fact makes the compressibility of the collection extremely high. For example, a collection with all different versions of a Wikipedia article can be compressed up to the 0.1% of its original space, using the Lempel-Ziv 1977 (LZ77) compression scheme. Many of these repetitive collections handle huge amounts of text data. For that reason, we require a method to store them efficiently, while providing the ability to operate on them. The most common operations are the extraction of random portions of the collection and the search for all the occurrences of a given pattern inside the whole collection. A self-index is a data structure that stores a text in compressed form and allows to find the occurrences of a pattern efficiently. On the other hand, self-indexes can extract any substring of the collection, hence they are able to replace the original text. One of the main goals when using these indexes is to store them within main memory. In this thesis we present a scheme for random text extraction from text compressed with a Lempel-Ziv parsing. Additionally, we present a variant of LZ77, called LZ-End, that efficiently extracts text using space close to that of LZ77. The main contribution of this thesis is the first self-index based on LZ77/LZ-End and oriented to repetitive texts, which outperforms the state of the art (the RLCSA self-index) in many aspects. Finally, we present a corpus of repetitive texts, coming from several application domains. We aim at providing a standard set of texts for research and experimentation, hence this corpus is publicly available.
研究の動機と目的
- バージョン管理ドキュメント、DNA配列、ウィキなど、高頻度に繰り返されるテキストコレクションにおける効率的な保存とランダムアクセスのニーズに対応すること。
- 従来の自己索引が固定コンテキスト予測に依存しており、繰り返しデータにおける長距離の繰り返しを捉えられないという限界を克服すること。
- ランダムな部分文字列抽出とパターン検索を両立できるLZ77に基づく自己索引を設計し、圧縮済みテキストのサイズに近いメモリ使用量を実現すること。
- LZ77圧縮テキストに対する高速かつ空間効率の良いランダムアクセスを可能にするため、LZ-Endと呼ばれる新しいパーシング方式を開発すること。
- 今後の研究の基準を定めるために、繰り返しテキストの標準化された公開コロナを整備すること。
提案手法
- LZ-Endを導入し、パーサーがフレーズの終了位置のみを格納することで、部分文字列抽出のためのバックワードトラバーサルを効率化する。
- LZ-Endパーシングに基づく自己索引構造を設計し、ワイルドカードツリーと圧縮ビットマップを用いて、バックワードサーチおよびランク/セレクト操作をサポートする。
- 繰り返しデータの可逆性を活用し、RLCSAに比べて60%のメモリ使用量、35%の構築時間でインデックス構築プロセスを最適化する。
- LCP配列の深さに沿ったワイルドカードツリーを実装し、効率的な範囲クエリおよび場所特定操作を可能にする。
- 空間オーバーヘッドを抑えつつ性能を損なわずに、圧縮ビットマップ(例:RRR圧縮)をワイルドカードツリーのコンponentsに適用する。
- インクリメンタル構築を可能にし、理論的には動的更新に対応できる新しいパーシングアルゴリズムとインデックスを統合する。
実験結果
リサーチクエスチョン
- RQ1LZ77は本質的にランダムアクセスをサポートしないが、LZ77ベースの自己索引をランダムアクセスおよびパターン検索に実用的に行えるか?
- RQ2LZ-Endと呼ばれるLZ77の新規変種を設計することで、空間効率を保ちながら1文字あたり定数時間で抽出を実現できるか?
- RQ3DNAおよびWikipediaコレクションにおいて、LZ77ベースの自己索引は、最先端技術であるRLCSAと比べて圧縮性能、構築時間、クエリパフォーマンスで優れているか?
- RQ4特に高頻度に繰り返されるデータに対して、既存のLZベースのインデックスよりも自己索引の空間オーバーヘッドを低減できるか?
- RQ5今後の研究の基準となる、標準化された公開可能な繰り返しテキストコロナを整備できるか?
主な発見
- 提案されたLZ-Endパーシングにより、1秒間に200万文字以上の部分文字列抽出が可能となり、標準LZ77の2倍以上の速度を達成した。
- LZ-Endに基づく自己索引は、DNAおよびWikipediaコレクションにおいて、RLCSAに比べて最大2倍の圧縮性能を発揮し、圧縮済みテキストサイズに近いメモリ使用量を実現した。
- インデックス構築はRLCSAの35%の時間で完了し、使用メモリも60%にまで削減され、大規模な繰り返しテキストコレクションに非常に効率的であることが判明した。
- 短いパターン(≤10文字)の検索においてはRLCSAを上回り、長めのパターンに対しても空間/時間のトレードオフが有利に働く。
- 『存在するか』のクエリを除き、すべての主要な指標でRLCSAを上回った。特に存在しないパターンの検索では、RLCSAが依然として速かった。
- バイオインフォマティクス、バージョン管理、ウィキからなる繰り返しテキストの公開コロナを、http://pizzachili.dcc.uchile.cl/repcorpus.html にて提供し、ベンチマークの標準化を実現した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。