INVERTED INDEX
Anggota Anggota Kelom Kelompok pok:: Basica Basica (11308 (11308105 1059) 9) Cindy Ma Mayland yland (113080272) (113080272) Kuku Kukung ng Kurni Kurniaw awan an (11308 (11308111 1114) 4) Tugik ugik Rangg Rangga a Pram Praman ana a (113 (11308 0810 1047 47))
Outline •
What is Inverted Index?
•
How does it works?
•
–
Construction
–
Compression
Implementation & Example
Outline •
What is Inverted Index?
•
How does it works?
•
–
Construction
–
Compression
Implementation & Example
What is Inverted Index? •
•
Inver Inv ertted inde indexx ad adal alah ah se sebu buah ah str truk uktu turr da datta inde ind ex yan yang g diban dibangun gun un untuk tuk me memu mudah dahk kan query pencarian. Pada dasarnya, inverted index adalah struktur data yang memotong tiap kata (term) yang berbeda dari suatu daftar term dokumen.
•
•
•
Tujuan menggunakan index, untuk meningkatkan kecepatan dan efisiensi dalam melakukan pencarian pada sekumpulan dokumen. Tanpa semacam index, query user secara sequential discan pada kumpulan dokumen tersebut untuk menemukan dokumendokumen yang mengandung query user. Contoh : Find operation in Windows
•
Inverted index mempunyai vocabulary, yang berisi seluruh term yang berbeda pada masing-masing dokumennya, dan tiap-tiap term yang berbeda ditempatkan pada daftar inverted (inverted list)
Notasi
Artinya •
•
•
id j adalah ID dokumen d j yang mengandung term t i f ij adalah frekuensi kemunculan term t i didokumen d j ok adalah posisi term t i di dokumen d j .
Contoh inverted index Id1 : Algoritma genetik dapat digunakan untuk 1 2 3 4 5 optimasi fuzzy 6 7 Id2 : Optimasi fungsi keanggotaan pada fuzzy 1 2 3 4 5 Id3 : Algoritma genetik merupakan 1 2 3 algoritma learning 4 5 •
•
•
•
Set vocabulary :{algoritma, genetik, dapat, digunakan, untuk, optimasi, fuzzy, fungsi, keanggotaan, pada, merupakan, learning}
Inverted index sederhana Term
Inverted list
Algoritma
Id1, id3
Dapat
Id1
Digunakan
Id1
Fungsi
Id2
Fuzzy
Id1, id2
Genetik
Id1, id3
Keanggotaan
Id2
Learning
Id3
Merupakan
Id3
Optimasi
Id1, id2
Pada
Id2
Untuk
id1
Inverted index complex Term
Inverted list
Algoritma
,
Dapat
Digunakan
Fungsi
Fuzzy
,
Genetik
,
Keanggotaan
Learning
Merupakan
Optimasi
,
Pada
Untuk
Tolerant Retrieval •
•
Techniques that are robust to typographical errors in the query, as well as alternative spellings. Jenis search structure pada dictionary yaitu hashing dan search tree.
•
Hashing umum digunakan oleh berbagai search engine, tetapi pada hashing jika query yang diinputkan tidak lengkap misalnya “automat”, akan tidak mudah untuk menemukan varian dari automat (automatic, automation, automated)dan membutuhkan waktu komputasi yang lebih besar selain sulit untuk diimplementasikan.
•
•
Pada search tree khususnya binary tree yang umum dikenal, tetapi karena jumlah leaf nodenya yang selalu 2, maka jika terjadi proses insert delete, perlu dilakukan proses rebalanced. Proses rebalanced ini yang membutuhkan computasi yang besar.
•
•
Oleh karena itu digunakan B-tree, dimana leaf nodenya lebih flexible dengan interval tertentu. Interval [a,b] sehingga node cabangnya boleh sebanyak interval tersebut. Nilai a,b merupakan size of disk block
Wildcard query •
•
the user is uncertain of the spelling of a query term (e.g., Sydney vs. Sidney the user is aware of multiple variants of spelling a term and (consciously) seeks documents containing any of the variants (e.g., color vs. colour);
•
•
the user seeks documents containing variants of a term that would be caught by stemming, but is unsure whether the search engine performs stemming (e.g., judicial vs. judiciary, leading to the wildcard query judicia*) the user is uncertain of the correct rendition of a foreign word or phrase (e.g., the query Universit* Stuttgart)
•
There are 2 techniques for handling general wildcard queries : - Permuterm indexes - k-gram indexes for wildcard queries
Permuterm indexes
One disadvantage of the permuterm index is that its dictionary becomes quite large, including as it does all rotations of each term.
k-gram Indexes •
•
•
•
k-gram is a sequence of k characters
Examp : cas, ast and stl <= term castle. Each postings list points from a k-gram to all vocabulary terms containing that k-gram.
the 3-gram etr would point to vocabulary terms such as metric and retrieval.
Spelling correction •
Examp : query “carot” but means “carrot”
•
two basic spelling correction algorithms : 1. choose the “nearest” correct spellings. 2. When two correctly spelled queries are tied (or nearly tied), select the one that is more common.
Examp : query “grnt” -> grant atau grunt
Phonetic correction •
•
•
phonetic correction: misspellings that arise because the user types a query that sounds like the target term especially names of people.
Idea from : international police departments seeking to match names for wanted criminals names being spelled differently in different countries. Algorithms for phonetic correction is soundex algorithms.
Soundex Scheme 1. Retain the first letter of the term. 2. Change all occurrences of the following letters to ’0’ (zero): ’A’, E’, ’I’, ’O’, ’U’, ’H’, ’W’, ’Y’. 3. Change letters to digits as follows: B, F, P, V to 1. C, G, J, K, Q, S, X, Z to 2. D,T to 3. L to 4. M, N to 5. R to 6. 4. Repeatedly remove one out of each pair of consecutive identical digits. 5. Remove all zeros from the resulting string. Pad the resulting string with trailing zeros and return the first four positions, which will consist of a letter followed by three digits.
Index Construction
What is it? •
Merupakan proses konstruksi indeks atau pengindeksan dari sekumpulan koleksi data, disebut juga proses dari sebuah sistem atau mesin yang melakukan pengindeksan.
How do we construct an index? •
Hal perlu dilakukan sebelum melakukan contruction index adalah Riviewing hardware basics. Hal ini disebabkan : –
–
–
–
Pengaksesan data pada memori jauh lebih cepat dari pada ke hardisk Data tidak ditransfer dari disk ketika head dari disk sedang diposisikan. Disk I/O adalah block base yang berarti melakukan penulisan dan pembacaan dari keseluruhan block. Server yang digunakan dalam sistem IR umumnya hingga bebrapa GB bahkan terkadang hingga puluhaan GB.
Example Indexing Algorithms •
Blocked sort-base Indexing –
•
Sebuah algoritma single-machine efisien yang dirancang untuk koleksi statis yang dapat dilihat sebagai versi yang lebih terskala dari algoritma sortbased indexing dasar.
How it works? –
–
–
Melakukan pengumpulan susunan semua pasangan istilah dan docID yang kemudian akan di urutkan secara berpasangan dengan istilah/term sebagai dominant key . Mengatur setiap docID dan istilah ke daftar posting dan menghitung statistik seperti frekuensi dan dokumen yang berfungsi sebagai secondary key . Merepresentasikan istilah/term sebagai termID, dimana setiap termID adalah serial number yang unik.
ALGORITMA BLOCKED SORT-BASE INDEXING
link
continue
Implementation •
Reuters-RCV1 –
Terdapat lebih dari 800.000 dokumen yang dikirimkan melalui router RCV1 dalam jangka waktu kurang lebih 1 tahun namun sebagai catatan dalam kasus ini tidak disertakan dokumen multimedia karena hanya fokus pada dokumen berbasis teks saja.
SPIMI (single-pass in-memory indexing) Blocked sort-based indexing memiliki sifat skala yang
sangat baik, tetapi membutuhkan struktur data untuk pemetaan istilah untuk termIDs. Untuk koleksi yang sangat besar, struktur data ini tidak cocok/muat kedalam memori.
Algoritma SPIMI
Apa perbedaannya dengan SPIMI? •
Perbedaanya yaitu SPIMI melakukan penambahan posting secara langsung kedalam posting-list sedangkan BSBI melakukan pengumpulan pasangan termID dan docID dan mengurutkan mereka terlebih dahulu sebelum dimasukan kedalam posting list.
kelebihan yang dimiliki SPIMI dari BSBI •
•
Pemrosesan lebih cepat karena tidak adanya tahapan sorting terlebih dahulu sebelum dimasukan dalam posting list dan baru dilakukan diakhir sebelum di simpan kembali kedalam memori. Menghemat memori, karena SPIMI tetap melacak istilah-istilah(terms) pada posting-list sehingga tidak diperlukan untuk melakukan penyimpanan termID kedalam memory.
DISTRIBUTED INDEXING •
•
•
Konsep indexing dengan mebagi-bagi(split) collection dalalam berbagai mesin yang tersebar dengan menetapkan distribut index pada tiap chunk atau bongkahan collection yang ada, sehingga sesuai dengan kemampuan kapasitas yang dapat dilakukan oleh mesin tersebut. Terdapat pembaruan terms pada posting list secara berkala. Penggunaan MapReduce , yaitu berfungsi untuk memecahkan masalah komputasi besar pada mesin komoditas murah atau node yang dibangun dari bagian standar (prosesor, memori, disk) sebagai lawan pada superkomputer dengan perangkat keras khusus.
lanjutan •
•
•
Adanya key-value pair proses distributed indexing dapat melakukan proses re-assign splits oleh masternode ketika terjadi off pada mesin atau melambatan proses karena masalah hardware. Masternode mengarahkan proses untuk menempatkan dan pemindahan tugas ke node individu pekerja Adanya Mapphase(oleh parser) yang melakukan penulisan segment file yang cocok dengan nilai pada split dan ReducePhase(oleh Inverter) yang melakukan pegumpulan semua nilainilai(maksudnya adalah docsID) yang menjadi satu berdasarkan kunci yag diberikan(termID).
Struktur Distrubuted indexing
Lanjutan •
•
•
•
Parser dan inverter tersebut tidak terpisah pada mesin yang berbeda. Pada MapPhase Untuk meminimalisir waktu inverter me-reduce data, tiap parser melakukan penyimpanan segment files ke local disk. Sedangkan pada ReducePhase, master node berkomunikasi dengan inverter dimana lokasi dari relevan segment file yang dimaksud. Sehingga tiap segment file hanya membutuhkan satu kali pembacaan sekuensial, karena semua data yang relevan untuk inverter tertentu sudah dituliskan dalam segment file tertentu oleh parser
Dynamic indexing •
•
•
Kita telah mengasumsikan bahwa koleksi dokumen statis. Teknik indexing sebelumnya tepat untuk koleksi yang jarang atau tidak pernah berubah. Tapi sebagian besar dari koleksi yang dimodifikasi sering dengan dokumen yang ditambahkan, dihapus, dan diperbarui. Ini berarti bahwa istilah baru yang perlu ditambahkan ke dalam kamus, dan daftar posting perlu diperbarui untuk istilah yang ada. Cara paling sederhana untuk mencapai ini adalah dengan merekonstruksi secara berkala indeks dari awal. Ini adalah solusi yang baik jika jumlah perubahan dari waktu ke waktu kecil dan penundaan dalam membuat dokumen baru yang dicari dapat diterima – dan juga jika sumber daya yang tersedia cukup untuk membangun sebuah indeks baru, sementara sebelumnya masih tersedia untuk proses query.
Element penting dalam Dynamic Indexing •
Adanya 2 index utama : – –
•
•
•
small auxiliary index : penyimpanan dokumen baru Large main index : penyimpanan posting list yang merupakan hasil merging dari auxiliary index, ketika ukurannya semakin membesar.
Proses penghapusan disimpan dalam sebuah invalidation bit vector, yang membuat kita dapat memfilter keluar data-data yang terhapus sebelum mendapatkan hasil pencarian. Proses peng-updatean terms yang ada dilakukan melakukapenghapusan terlebih dahulu dan re-inserting mereka. Penyimpanan hasil indexing pada posting list disimpan dalam sebuah file yang besar yang merupakan konkatenasi dari semua posting list.
Pada kondisi irs seperti apa masing-masing algoritma Indexing tadi di implementasikan? •
BSBI – –
•
SPIMI – –
–
•
Jika dokumen yang diretrieve sifatnya statis Jika kapasitas memori baik pemrosesan maupun penyimpanan sifatnya terbatas Ketika sistem pengindexan IRS tidak memerlukan pengurutan terms dan mapping term menjadi termID
Distributed Indexing – –
•
Jika dokumen yang diretrieve sifatnya statis Jika kapasitas memori baik pemrosesan maupun penyimpanan sifatnya terbatas
Jika IRS melakukan pembaharuan koleksi terms secara periodik Jika penyimpanan terms yang ada dilakukan tersebar diberbagai server
Dynamic Indexing –
Jika dokumen yang diretrieve sifanya dinamis yang berarti perubahan data terms dapat terjadi kapan saja.
Index Compression
Algoritma kompresi Data A
compress
decompress
Data B
Index compression •
•
Teknik yang digunakan untuk lebih mengefisienkan indeks, baik dari kapasitas maupun performansi Information Retrieval System Index compression dapat mengurangi ukuran index dan waktu yang digunakan untuk mengevaluasi query
Manfaat 1. Compressed index membutuhkan media penyimpanan yang lebih kecil dibanding dengan uncompressed index 2. Waktu yang dibutuhkan untuk mentransfer compressed data dan kemudian melakukan dekompresi terhadapat data tersebut lebih cepat dibandingkan mentransfer data yang tidak dikompresi 3. Meningkatkan penggunaan caching, karena index yang dibutuhkan untuk mengevaluasi query telah terdapat pada cache memory, jadi tidak perlu mengakses disk
Metode Index Compression •
•
Lossy compression akan membuang beberapa informasi pada data (contoh stemming, dan stop word elimination). Lossless compression menghasilkan dokumen hasil dekompresi yang persis sama dengan data sebelum kompresi.
Index Compression •
Inverted index terdiri dari 2 komponen utama: vocabulary (dictionary) of term dan posting list.
Link
Studi Kasus Misalnya Karakteristik koleksi dokumen pada detik.com adalah sebagai berikut:
Statistik
Jumlah
Dokumen
600.000
Terms
380.000
Rata-rata bytes per term
8
Fixed Width entries term
Freq
Aman
39
Asik
14
Api
54
Atom
7
…..
….
Zona
26
15 bytes
4 bytes
Posting pointer
…….
4bytes
Space yang dibutuhkan untuk menyimpan dictionary untuk skema ini: 380.000 x (15+4+4)= 8,74 MB
Dictionary compression •
Dictionary as string abrasiagrarisalasanalpukatambulanamputasianemiaantariksaargumenasimilasiatraksi
term
Freq
Abrasi
39
Agraris
14
Alasan
54
Alpukat
7
… ..
….
8 bytes
4 bytes
Posting pointer
Term Poin Pointer ter
…….
4bytes
3bytes
Term pointer 380.000x8 =3.040.000 posisi Jadi Jadi dibu dibutu tuhk hkan an log log2 (3.040.000) ≈ 22bits Atau 3 bytes.
Space Space yang yang dibutuh dibutuhka kan n untuk untuk meny menyim impan pan dictio dictionar nary y untuk untuk skem skema a ini: ini: 380.000 x (8+4+4+3)= 7,22 MB
Dictionary compression cont •
Block storage 6abrasi7agraris6alasan7alpukat7ambulan8amputasi6anemia9antariksa7argumen
term
Freq
Abrasi
39
Agraris
14
Alasan
54
Alpukat
7
… ..
….
Ambulan
11
…………
………
Posting pointer
Term Poin Pointer ter
…….
……..
……
Misa Misall juml jumlah ah term term/b /blo lok k (k)= (k)=4 4 Berart Berartii kita kita mengh menghem emat at (k-1)*3bytes= 9 bytes Dikur Dikurang angii denga dengan n 4 bytes bytes untu untuk k men menyimp yimpan an juml jumlah ah term term.. Sehing Sehingga ga kita kita menghe menghemat mat 5 bytes bytes per 4 term term disetiap disetiap block. block. Atau Atau secara secara keselu keseluruha ruhan, n, kita kita menghemat 380.000x5/4=0.475 MB space Deng Dengan an skem skema a ini ini dibu dibutu tuhk hkan an 6.745 MB.
Dictionary compression (cont) ( cont) •
Front Coding
1 blok berisi 4 term 8otomatis7otomasi8otomotif 8otoritas
Kompres Kompresii dengan dengan front coding……
8oto*matis4◊masi5◊ motif 5◊ritas
Keterangan: * = akhir akhiran an prefi prefixx ◊ = penghap penghapusa usan n pref prefix ix
Posting list compression •
Idenya adalah adanya gap antar posting
dan
docID
….
23093 1
Gaps korupsi
docID
…..
23800
docID Gaps
Fewer bits for short gaps
100
23095
……
24021
…….
1 24000
200
21
…….
23000
…….
…...
22900
……..
…….
Gaps heliosentris
23094
Posting file compression (cont) •
Variable byte codes
Menggunakan integral number of bytes untuk melakukan encode terhadap gap. •
First bit = continuation byte
•
Last 7 bits = gap in binary
•
•
Bit pertama diset 1 jika merupakan last byte dari encoded gap. Misalnya gap 5 di-encode menjadi 10000101
ϒ codes Mengimplementasikan variable length encoding dengan mensplit gap (G) kedalam length dan offset. Offset adalah G in binary. Ex: 13 in binary= 1101, offset is 101. Length mengencode panjang offset, misal offset 13 adalah 101, maka length offset 3 bit (dlm unary code=1110), sehingga ϒ codes dari 13 adalah 1110101 •
•
ϒ codes (cont)
Inverted Index Example & Implementation
Example Building Inverted Index
How to create an inverted index … Index An How { 1, 3 } To
Inverted Index On How Make {2}
Information {3}
index {2} based on Retrieval terms … {3} {1}Make anBased
Create {1}
On {2, 3 }
An {1, 2}
Terms {2}
{3} { 1 ,3does } Does Inverted How inverted index works on information retrieval … Index { 1, 2 , 3 }
Works {3}
Index Result
How {1,3} To {1} Create {1} An {1,2} Inverted {1,3} Index {1,2,3} Makes {2} Based {2} On {2,3} Terms {2} Does {3} Works {3} Information {3} Retrieval {3}
Search term query: “How inverted index works” {1,3} ∩ {1,3} ∩ {1,2,3} ∩ {3} = 3
“An index” {1,2} ∩ {1,2,3} = {1,2}
Dimana lagi Inverted Index diimplementasikan? •
Windows
•
Search Engine
•
•
Mainframe-based DBMS (DATACOM/DB, ADABAS, Model 204) SDK (Java, Delphi, Python, dll)
•
Bagaimana inverted index di Google?
Inverted Index
Google Caffeine
Google Percolator
Caffeine takes up nearly 100 million gigabytes of storage in one database and adds new information at a rate of hundreds of thousands of gigabytes per day.
Google Percolator •
Distributed-data processing system
•
Large scale data set
•
Incrementally processing update
•
Latency problem