Anda di halaman 1dari 65

INVERTED INDEX

Anggota Kelompok: Basica (113081059) Cindy Mayland (113080272) Kukung Kurniawan (113081114) Tugik Rangga Pramana (113081047)

Outline
What is Inverted Index? How does it works?
Construction Compression

Implementation & Example

What is Inverted Index?


Inverted index adalah sebuah struktur data index yang dibangun untuk memudahkan 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 idj adalah ID dokumen dj yang mengandung term ti fij adalah frekuensi kemunculan term ti didokumen dj ok adalah posisi term ti di dokumen dj.

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 Algoritma Dapat Digunakan Fungsi Fuzzy Genetik Keanggotaan Learning Inverted list Id1, id3 Id1 Id1 Id2 Id1, id2 Id1, id3 Id2 Id3

Merupakan Optimasi
Pada Untuk

Id3 Id1, id2


Id2 id1

Inverted index complex


Term Algoritma Dapat Digunakan Fungsi Fuzzy Genetik Keanggotaan Learning Inverted list <Id1,1,[1]>, <id3,2,[1,4]> <Id1,1,[3]> <Id1,1,[4]> <Id2,1,[2]> <Id1,1,[7]>, <id2,1,[5]> <Id1,1,[2]>, <id3,1,[2]> <Id2,1,[3]> <Id3,1,[5]>

Merupakan Optimasi
Pada Untuk Back1 back2

<Id3,1,[3]> <Id1,1,[6]>, <id2,1,[1]>


<Id2,1,[4]> <Id1,1,[5]>

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
Jika dokumen yang diretrieve sifatnya statis Jika kapasitas memori baik pemrosesan maupun penyimpanan sifatnya terbatas

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 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 Dokumen Terms Rata-rata bytes per term

Jumlah 600.000 380.000 8

Fixed Width entries


term Aman Asik Freq 39 14 Posting pointer

Api
Atom .. Zona 15 bytes

54
7 . 26 4 bytes 4bytes .

Space yang dibutuhkan untuk menyimpan dictionary untuk skema ini: 380.000 x (15+4+4)= 8,74 MB

Dictionary as string

Dictionary compression

abrasiagrarisalasanalpukatambulanamputasianemiaantariksaargumenasimilasiatraksi

term Abrasi Agraris Alasan Alpukat

Freq 39 14 54 7

Posting pointer

Term Pointer

.. 8 bytes

. 4 bytes

. 4bytes 3bytes

Term pointer 380.000x8 =3.040.000 posisi Jadi dibutuhkan log2 (3.040.000) 22bits Atau 3 bytes.

Space yang dibutuhkan untuk menyimpan dictionary untuk skema ini: 380.000 x (8+4+4+3)= 7,22 MB

Dictionary compression (cont)


Block storage
6abrasi7agraris6alasan7alpukat7ambulan8amputasi6anemia9antariksa7argumen

term Abrasi Agraris Alasan Alpukat

Freq 39 14 54 7

Posting pointer

Term Pointer

.. Ambulan

. 11

.
..

Misal jumlah term/blok (k)=4 Berarti kita menghemat (k-1)*3bytes= 9 bytes Dikurangi dengan 4 bytes untuk menyimpan jumlah term. Sehingga kita menghemat 5 bytes per 4 term disetiap block. Atau secara keseluruhan, kita menghemat 380.000x5/4=0.475 MB space Dengan skema ini dibutuhkan 6.745 MB.

Dictionary compression (cont)


Front Coding 1 blok berisi 4 term
8otomatis7otomasi8otomotif8otoritas

Kompresi dengan front coding

8oto*matis4masi5 motif5ritas
Keterangan: * = akhiran prefix = penghapusan prefix

Posting list compression


Idenya adalah adanya gap antar posting
dan korupsi docID Gaps docID Gaps .. 23800 200 . 23093 1 24000 21 23094 1 24021 . . 23095

heliosentris

docID
Gaps

100

23000
22900

.
..

...
.

Fewer bits for short gaps

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 based on Retrieval {3} terms {1}Make anBased {2}


On {2, 3 } Terms {2}

Create {1} An {1, 2}

Inverted { 1 ,3 } Does {3} index works on information retrieval How does inverted 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

Referensi
Introduction to Information retrieval Christopher D. Manning Advances in information retrieval: 28th European Conference on IR Research, ECIR 2006, London, UK, April 1012, 2006 Scholer, Falk, et.al. Compression of Inverted Indexes For Fast Query Evaluation, RMIT University http://www.scribd.com/doc/32495423/What-is-a-Fully-Inverted-Google-StyleIndex http://infolab.stanford.edu/~backrub/google.html Sergey Brin and Lawrence Page . The Anatomy of a Large-Scale Hypertextual Web Search Engine. Stanford University http://www.theregister.co.uk/2010/09/24/google_percolator/ http://googleblog.blogspot.com/2010/06/our-new-search-index-caffeine.html http://webglimpse.net/pubs/glimpse.ps http://nlp.stanford.edu/IR-book/html/htmledition/an-example-informationretrieval-problem-1.html