Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit...

35
Temu-Kembali Informasi 2019 02C: Membangun Inverted Index Husni Husni.trunojoyo.ac.id Pekan 04

Transcript of Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit...

Page 1: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Temu-Kembali Informasi 201902C: Membangun Inverted Index

Husni

Husni.trunojoyo.ac.id

Pekan 04

Page 2: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Abstraksi Arsitektur Search Engine

User

RankerIndexer

Doc Analyzer

Index results

Crawler

Doc Representation Query Rep

(Query)

EvaluationFeedback

Indexed corpus

Ranking procedure

2

Page 3: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Rekap: Hukum Zipf

Gambaran frekuensi kata dalam Wikipedia (Nov 27, 2006)

Fre

kue

nsi

Kat

a

Peringkat Kata berdasarkan Frekuensi

3

Page 4: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Rekap: Indexing Teks OtomatisHapus kata tidak informatif

Hapus kata sangat jarang

4

Hapus yang 1

Hapus yang 0

Page 5: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Rekap: Abstraksi Arsitektur Search Engine

Doc Analyzer

Crawler

Doc Representation

5

Indexed corpus1. Visiting strategy2. Avoid duplicated visit3. Re-visit policy

1. HTML parsing2. Tokenization3. Stemming/normalization4. Stopword/controlled vocabulary filter

BagOfWordrepresentation!

Page 6: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Apa yang telah Dipahami?

• Dokumen telah…

– Dihimpun (crawl) dari Web (Internet)

– Ditokenisasi dan dinormalkan

– Dinyatakan (representasi) sebagai Bag-of-Words (tas berisi kata-kata)

• Saatkan melakukan pencarian!

– Query: “information retrieval”

information retrieval retrieved is helpful for you everyone

Doc1 1 1 0 1 1 1 0 1

Doc2 1 0 1 1 1 1 1 0

6

Page 7: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Analisis Kompleksitas

• Analisis kompleksitas ruang (space)

– 𝑂(𝐷 ∗ 𝑉)

• D adalah jumlah total dokumen dan V adalah ukuran vocabulary (kosakata)

– Hukum Zipf: setiap dokumen hanya mempunyai sekitar 10% darikosakata yang teramati di dalamnya

• 90% ruang terbuang sia-sia!

– Efisiensi ruang dapat sangat ditingkatkan dengan hanya menyimpan kata-kata yang muncul.

Solusi: linked list (daftar tertaut) untuk setiap dokumen.

7

Page 8: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Analisis Kompleksitas

• Analisis kompleksitas waktu (time)

– 𝑂( 𝑞 ∗ 𝐷 ∗ |𝐷|)

• 𝑞 adalah panjang dari query, |𝐷| adalah panjang dari suatu dokumen

doclist = []for (wi in q) {

for (d in D) {for (wj in d) {

if (wi == wj) {doclist += [d];break;

} }

}}return doclist;

Bottleneck, karenakebanyakan dari merekatidak akan cocok!

8

Page 9: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Solusi: inverted index

• Buat tabel pencarian untuk setiap kata dalam kosakata

– Dari kata ke dokumen!

information

retrieval

retrieved

is

helpful

for

you

everyone

Doc1 Doc2

Doc1

Doc2

Doc1 Doc2

Doc1 Doc2

Doc1 Doc2

Doc2

Doc1

Query:informationretrieval

Kompleksitas waktu:• 𝑂( 𝑞 ∗ |𝐿|), |𝐿| adalah rata-rata

panjang posting list• Berdasarkan hokum Zipf, 𝐿 ≪ 𝐷

Dictionary Postings

9

Page 10: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Struktur Inverted Index

• Dictionary: ukuran sedang (biasa)– Membutuhkan akses acak yang cepat

– Berdiam dalam memory• Hash table, B-tree, trie, …

• Postings: besar sekali– Diletakkan pada disk

– Diharapkan akses berurutan

– Mengandung docID, frekuensi term, posisi term, …

– Kompresi diperlukan.

“Struktur data utama yang mendasariIR modern”

- Christopher D. Manning

10

Page 11: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Konstruksi Inverted Index Berbasis Sorting

Term Lexicon:1 the2 cold3 days4 a...

DocIDLexicon:1 doc12 doc23 doc3...

...

doc1

doc2

doc300

<1,1,3><2,1,2><3,1,1>... <1,2,2><3,2,3><4,2,5>…

<1,300,3><3,300,1>...

Sort by docId

Parse & Count

<1,1,3><1,2,2><2,1,2><2,4,3>...<1,5,3><1,6,2>…

<1,299,3><1,300,1>...

Sort by termId

“Local” sort

<1,1,3><1,2,2><1,5,2><1,6,3>...<1,300,3><2,1,2>…

<5000,299,1><5000,300,1>...

Merge sort

All info about term 1

<Tuple>: <termID, docID, count>

11

Page 12: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Inverted Index Berbasis Sorting

• Tantangan

– Ukuran dokumen melebihi batas memori

• Langkah-langkah kunci

– Local sort: urut berdasarkan termID

• Untuk pengurutan global merge nantinya

– Global merge sort

• Menjaga urutan docID: untuk gabungan posting list kemudian.

Can index large corpus with a single machine!Also suitable for MapReduce!

12

Page 13: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Lebih Dekat dengan Inverted Index

information

retrieval

retrieved

is

helpful

for

you

everyone

Doc1 Doc2

Doc1

Doc2

Doc1 Doc2

Doc1 Doc2

Doc1 Doc2

Doc2

Doc1

Dictionary Postings

Pencarian perkiraan:mis., query salah eja, query wildcard

Pencarian kedekatan:mis., query frase

Kompresi indeks

Update indeks dinamis

13

Page 14: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Update Indeks Dinamis

• Membangun ulang indeks secara berkala

– Dapat diterima jika perubahan kecil dari waktu ke waktu dan kerugian karena kehilangan dokumen baru dapat diabaikan

• Indeks bantuan

– Jaga indeks untuk dokumen baru di memori

– Gabungkan ke indeks ketika ukuran melebihi ambang batas

• Meningkatkan operasi I/O

• Solusi: beberapa indeks tambahan pada disk, penggabungan logaritmik

14

Page 15: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Kompresi Indeks

• Keuntungan

– Menghemat ruang penyimpanan

– Meningkatkan efisiensi cache

– Meningkatkan kecepatan transfer disk-memori

• Target

– File Postings

15

Page 16: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Dasar Teori Coding

• Panjang kode yang diharapkan

Event P(X) Code

a 0.25 00

b 0.25 01

c 0.25 10

d 0.25 11

𝑬 𝑳 =

𝒊

𝒑 𝒙𝒊 × 𝒍𝒊

𝑬 𝑳 = 𝟐

Event P(X) Code

a 0.75 00

b 0.10 01

c 0.10 10

d 0.05 11

𝑬 𝑳 = 𝟐

Event P(X) Code

a 0.75 0

b 0.10 10

c 0.10 111

d 0.05 110

𝑬 𝑳 = 𝟏. 𝟒

16

Page 17: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Kompresi Indeks

• Pengamatan dari file-file posting

– Alih-alih menyimpan docID dalam postingan, kita menyimpan gap di antara docID, karena sudah diurutkan

– Hukum Zipf lagi:

• Semakin sering sebuah kata, semakin kecil jaraknya

• Semakin jarang kata, semakin pendek daftar postingnya

– Distribusi yang sangat berat sebelah memberi kita peluang besaruntuk kompresi!

Teori informasi: entropi mengukur kesulitan kompresi.

17

Page 18: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Kompresi Indeks

• Solusi

– Lebih sedikit bit untuk mengkodekan bilangan bulat kecil (frekuensitinggi)

– Coding Panjang variabel

• Unary: x1 dikodekan sebagai x-1 bit 1 diikuti dengan 0, mis., 3=> 110; 5=>11110

• -code: x=> kode uner untuk 1+log x diikuti dengan kode uniform untuk x-2 log x dalam log x bit, mis., 3=>101, 5=>11001

• -code: sama dengan -code ,tetap ganti unary prefix dengan -code. mis., 3=>1001, 5=>10101

18

Page 19: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Rekap: Inverted Index

• Membuat tabel pencarian untuk setiap kata dalam kosa kata

– Dari kata ke dokumen!

information

retrieval

retrieved

is

helpful

for

you

everyone

Doc1 Doc2

Doc1

Doc2

Doc1 Doc2

Doc1 Doc2

Doc1 Doc2

Doc2

Doc1

Query:informationretrieval

Kompleksitas waktu:• 𝑂( 𝑞 ∗ |𝐿|), |𝐿| adalah

rerata panjang posting list• Berdasarkan hukum Zipf,

𝐿 ≪ 𝐷

Dictionary Postings

19

Page 20: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Rekap: Konstruksi Inverted Index Berbasis Sorting

Term Lexicon:1 the2 cold3 days4 a...

DocIDLexicon:1 doc12 doc23 doc3...

...

doc1

doc2

doc300

<1,1,3><2,1,2><3,1,1>... <1,2,2><3,2,3><4,2,5>…

<1,300,3><3,300,1>...

Sort by docId

Parse & Count

<1,1,3><1,2,2><2,1,2><2,4,3>...<1,5,3><1,6,2>…

<1,299,3><1,300,1>...

Sort by termId

“Local” sort

<1,1,3><1,2,2><1,5,2><1,6,3>...<1,300,3><2,1,2>…

<5000,299,1><5000,300,1>...

Merge sort

All info about term 1

<Tuple>: <termID, docID, count>

20

Page 21: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Rekap: Kompresi Index

• Pengamatan dari file posting

– Tidak menyimpan docID dalam postingan, tetapi menyimpan gap di antara docID, karena adanya pengurutan

– Lagi, hukum Zipf:

• Semakin sering sebuah kata, semakin kecil jaraknya

• Semakin jarang kata, semakin pendek daftar postingnya

– Distribusi yang sangat tidak seimbang memberikan peluang besarbagi kompresi!

Teori informasi: entropi mengukur kesulitan kompresi.

21

Page 22: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Kompresi Index

• Contoh

Strukut Data Ukuran (MB)

Koleksi Teks 960.0

Dictionary 11.2

Postings, Tidak-dikompres 400.0

Postings -coded 101.0Compression rate: (101+11.2)/960 = 11.7%

Tabel 1: Kompresi index dan dictionary untuk korpusReuters-RCV1. (Manning et al. Introduction to Information Retrieval)

22

Page 23: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Pencarian dalam Inverted Index

• Pemrosesan Query

– Uraikan (parse) sintaks query

• Mis. Barack AND Obama, orange OR apple

– Laksanakan prosedur pemrosesan yang sama seperti pada dokumenterhadap query yang dimasukkan

• Tokenization->normalization->stemming->stopwords removal

23

Page 24: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Pencarian dalam Inverted Index

• Prosedur

– Mencari term query di dalam dictionary

– Mengambil posting lists

– Operasi

• AND: intersect the posting lists

• OR: union the posting list

• NOT: diff the posting list

24

Page 25: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Pencarian dalam Inverted Index

• Contoh: Operasi AND

Term1

Term2

1282 4 8 16 32 64

341 2 3 5 8 13 21

memindai posting

Kompleksitas waktu: 𝑂( 𝐿1 + |𝐿2|)

Trik meningkatkan kecepatan: saat melakukanmulti-way join, mulailah dari term dengan frekuensiterendah menuju frekuensi tinggi

25

Page 26: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Query Frase

• “computer science”

– “He uses his computer to study science problems” tidaklah cocok!

– Kita membutuhkan frase untuk dicocokkan secara tepat dalam dokumen

– N-grams umumnya tidak berfungsi untuk ini

• Ukuran kamus besar, bagaimana memecah frasa panjang menjadi N-gram?

– Kami membutuhkan posisi term di dalam dokumen

• Kami dapat menyimpannya dalam indeks terbalik.

26

Page 27: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Phrase query

• Pencocokan posting secara umum

– Pemeriksaan kondisi kesetaraan dengan persyaratan pola posisi antara dua term query

• Mis., T2.pos-T1.pos = 1 (T1 harus langsung sebelum T2 dalam dokumen yang cocok)

– Query kedekatan: |T2.pos-T1.pos| ≤ k

128

34

2 4 8 16 32 64

1 2 3 5 8 13 21

Term1

Term2

Memindai postings

27

Page 28: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Semakin banyak yang dimasukkan ke dalam indeks

• Struktur dokumen

– Title, abstract, body, bullets, anchor

• Anotasi entitas

– Menjadi bagian dari nama seseorang, nama lokasi, dll.

28

Page 29: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Koreksi Ejaan

• Toleransi terhadap Query yang salah eja

– “barck obama” -> “barack obama”

• Prinsip penting

– Dari berbagai alternatif ejaan yang benar dari Query yang salah eja, pilih yang terdekat

– Dari berbagai alternatif ejaan yang benar dari Query yang salah eja, pilih yang paling umum

29

Page 30: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Koreksi Ejaan

• Kedekatan antara term-term Query

– Jarak Edit

• Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string lain

• Insert, delete, replace

• Trik untuk mempercepat– Betulkan panjang awalan (kesalahan tidak terjadi pada huruf pertama)

– Buat indeks terbalik level karakter, mis. Untuk panjang 3 karakter

– Pertimbangkan tata letak keyboard

» Mis. ‘u’ lebih cenderung diketik sebagai ‘y’ daripada ‘z’

30

Page 31: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Koreksi Ejaan

• Kedekatan antara term-term Query

– Konteks Query

• “flew form IAD” -> “flew from IAD”

– Solusi

• Hitung alternatif untuk semua term query

• Heuristik harus diberlakukan untuk mengurangi ruang pencarian

31

Page 32: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Koreksi Ejaan

• Kedektan antara term-term query

– Kesamaan fonetik

• “herman” -> “Hermann”

– Solusi

• Phonetic hashing – term yang mirip hash dengan nilai yang sama

32

Page 33: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Apa yang Sebaiknya Anda ketahui?

• Indeks terbalik untuk pengambilan informasi modern

– Konstruksi indeks berbasis Sorting

– Kompresi indeks

• Pencarian dalam indeks terbalik

– Query frase

– Koreksi ejaan Query

33

Page 34: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

Bacaan hari ini

• Introduction to Information Retrieval

– Bab 2: The term vocabulary and postings lists

• Bagian 2.3, Faster postings list intersection via skip pointers

• Bagian 2.4, Positional postings and phrase queries

– Bab 4: Index construction

– Bab 5: Index compression

• Bagian 5.2, Dictionary compression

• Bagian 5.3, Postings file compression

34

Page 35: Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit •Jumlah minimum operasi edit yang diperlukan untuk mengubah satu string ke string

PERTANYAAN?

Terimakasih!

35