IIR輪講復習 #5 Index compression

Slides:



Advertisements
Similar presentations
FxUG in Toyama # Presented by wacky. 最近 AMF 3 の Encode/Decode を実装してみました。 そこで得た知識を共有したいと思います! 30分後には … AMF の基本構造が分かっている AMF の得手不得手が分かっている BlazeDS.
Advertisements

早稲田大学大学院 理工学研究科情報科学専攻 後藤研究室 修士 焦 江霞
透過的データ圧縮 Transparent Data Compression
Today’s Paper Hao Yan, Shuai Ding and Torsten Suel
【事例演習5】  字句解析     解 説  “ハッシュを用いた字句解析の方法”.
IIR輪講復習 #2 The term vocabulary and postings lists
情報理工学系研究科 コンピュータ科学専攻 上嶋裕樹
Webプロキシサーバにおける 動的資源管理方式の提案と実装
富山大学 公開講座 2008 「QRコードを作ろう!」 ~ QRコードを作ろう! ~.
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
Lexical Permutation Sorting Algorithm
情報処理演習C2 ファイル操作について (2).
Java I 第2回 (4/18)
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
全体ミーティング (4/25) 村田雅之.
基礎プログラミングおよび演習 第9回
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
1. アルゴリズムと計算量.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
Paper from PVLDB vol.7 (To appear in VLDB 2014)
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2011年6月13日
東京大学大学院情報理工学系研究科 数理情報学専攻 定兼 邦彦 2016年4月7日
2012年度 情報数理 ~ QRコードを作ろう!(1) ~.
2008年度 情報数理 ~ QRコードを作ろう!(1) ~.
日本大学 文理学部 情報システム解析学科 谷研究室 益田真太郎
1.コンピュータと情報処理 p.14 第1章第1節 1.わたしたちの生活と情報技術 情報機器の発展 情報機器は,アナログデータから
経済学のための情報処理入門 電子メールの送返信,添付書類.
コンテンツ配信 エンコード (符号化) CBR (Constant Bit Rate) VBR (Variable Bit Rate)
2010年度 情報数理 ~ QRコードを作ろう!(1) ~.
市場調査の手順 問題の設定 調査方法の決定 データ収集方法の決定 データ収集の実行 データ分析と解釈 データ入力 データ分析 報告書の作成.
データ構造とプログラミング技法 (第10回) ー文字列照合(KMP法、BM法)ー.
IIR輪講復習 #4 Index construction
大規模ソースコード集合を対象とした 類似関数集合群の抽出
IIR輪講復習 #1 Boolean retrieval
k 個のミスマッチを許した点集合マッチング・アルゴリズム
IIR輪講復習 #10 XML retrieval
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
Proceedings of the Third South American Workshop on String Processing.
画像処理プログラムの説明.
IIR輪講復習 #17 Hierarchical clustering
IIR輪講復習 #3 Dictionaries and tolerant retrieval (前半)
2章 暗号技術 FM15002 友池 絲子.
半構造化テキストに対する 文字列照合アルゴリズム
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
Practical Minimal Perfect Hash Function
データ圧縮技術による文字列照合処理の高速化に関する研究
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミング 4 探索と計算量.
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
情報論理工学 研究室 研究テーマ 並列アルゴリズム.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
統計ソフトウエアRの基礎.
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
構造的類似性を持つ半構造化文書における頻度分析
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとデータ構造1 2009年6月15日
プログラミング論 相関
データの圧縮.
ソフトウェア理解支援を目的とした 辞書の作成法
アルゴリズムとデータ構造 2010年6月17日
7月13日の演習問題・解答例 について ネットワーク長が 18、22、26、28 の場合の
MAUI Project 2009 インターネットにおける近接性
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
識別子の読解を目的とした名詞辞書の作成方法の一試案
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

IIR輪講復習 #5 Index compression

お知らせ たつをさんによる補足情報 復習資料おきば http://chalow.net/clsearch.cgi?cat=IIR http://bloghackers.net/~naoya/iir/ppt/

参考 http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html 本資料は書籍の輪読会に向けたサマリ 資料内で一部上記ドキュメントからの引用あり

5章のテーマ インデックスの圧縮 辞書 (dictionary) の圧縮 posting files の圧縮

インデックスの圧縮 利点 留意点 キャッシュヒット率上昇 ディスクからの転送時間を短縮 あくまで速度向上のため。圧縮率が高くても速度が遅いアルゴリズムは考慮しない。

前処理による圧縮率 "lossy" な圧縮 (5章で扱うのは lossless) 各処理(行)でどこ(列)が小さくなるかに着目 stop words の効果は圧縮と被る 言語によっては効果の高い操作が異なる

Heap's Law 単語数 T に対する vocabulary (distinct terms) M の数 ( M = uniq(T) ) の統計

Heap's Law から分かること 対数対数で線形 辞書 (dictionary) の圧縮は重要 辞書サイズは term が増えると増加し続ける ドキュメントが増えると辞書が大きくなる 大きな collection にはそれに見合うだけの大きな辞書が絶対に必要 辞書 (dictionary) の圧縮は重要

Zipf's law i 番目に大きい要素が全体に占める割合が 1 / i に比例する経験則 (ja.wikipedia.org) 冪乗法則

辞書 (dictionary) の圧縮

dictionary storage を圧縮する メモリに載せたい postings storage に比べると小さい、載る 大規模環境では分散して保持 ディスクの seek を減らしたい 携帯端末など

代表的な dictionary storage の構造 dictionary, fixed-width storage dictionary-as-a-string storage blocked storage blocked storage with front-coding minimal perfect hash

fixed-width array な辞書 M * (20 + 4 + 4) = 400,000 * 28 = 11.2mb 平均的な英単語 8bytes ... 12bytes 無駄 20bytes 以上の単語を保持できない

Dictionary-as-a-string 単語平均 8 bytes 400,000 * 8 = 3.2 * 10^6箇所 = 22bits or 3bytes long. 単語を全部つなげて境界のポインタを保持 バイナリサーチ可能 単語文字数分のみ = 無駄な 12bytes を削減 400,000 * (4 + 4 + 3 + 8) = 7.6mb 11.2mb → 7.6mb

Blocked storage ポインタを k 語ごとにして間を省略 string側に文字列の長さを保持 k = 4 の場合 0.5mb の節約 ポインタを省略した分で (k - 1) * 3 bytes 節約 k 毎に長さ(int 4bytes)を保存 400,000 * ¼ * 5 = 0.5 mb

ただし k を増やしすぎると... 間隔が長すぎると二分探索に悪影響

front coding "Extreme Compression" 共通した prefix をまとめる 更に 1.2mb 節約

dictionary 圧縮の結果

posting files の圧縮

Reuters-RCV 1 800,000 documents 200 tokens / document 6 characters / token 100,000,000 postings

圧縮しない場合 docID に必要なビット数 ... 32bits postings files の合計サイズ 100,000,000 * 32/8 = 400mb

32bits → 20bits docID に必要なビット数 ... 20bits postings files の合計サイズ ドキュメント総数 800,000 → log2 800,000 postings files の合計サイズ 100,000,000 * 20/8 = 250mb

"gap" で表現して短くする docID は 20 bit、これをもっと小さく 実際に必要なのは "gap" Brutus: 33, 47, 154, 159, 202 ... gap は 20bit より小さい bitで表現できる 17

Variable byte codes (byteレベル) 768 + 56 5 214577 8bit → continuation bit (1) + payload (7) 数値が可変長なので最小で済む 250 mb → 116mb (50% 減!) VB encoding / decoding の方法 → Figure 5.8

γ codes (bit レベル) gap G を <length, offset> ペアで表現 length は unary codes log2G +1 offset = G - 2log2G in binary.

γ codes の例: 13 00001101 1101 → 1101 (offset length = 3) unary(3) ... 1110 <1110, 101> デコード 1110101 0発見 → unary で 111 = 3bit 読む 且つ, 暗黙の4bit目1 を考慮 = 1101 = 13

γ codes の例 13 = <1110, 101> 9 = <1110, 001> 13 = <1110, 101> 9 = <1110, 001> 2 = <10, 1> postings [ 2, 9, 13] → 10111100011110101

γ codes が何故良いか zipf's law

postings 圧縮の効果

まとめ インデックスの圧縮、と一言に行ってもインデックスの何を圧縮するかで手法が異なる dictionary の圧縮はデータ構造の工夫 postings file の圧縮は数値表現の工夫 汎用的な手法から、ドメイン特化したものまで 圧縮重要