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

Post on 04-Jan-2020

0 views 0 download

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

Temu-Kembali Informasi 201902C: Membangun Inverted Index

Husni

Husni.trunojoyo.ac.id

Pekan 04

Abstraksi Arsitektur Search Engine

User

RankerIndexer

Doc Analyzer

Index results

Crawler

Doc Representation Query Rep

(Query)

EvaluationFeedback

Indexed corpus

Ranking procedure

2

Rekap: Hukum Zipf

Gambaran frekuensi kata dalam Wikipedia (Nov 27, 2006)

Fre

kue

nsi

Kat

a

Peringkat Kata berdasarkan Frekuensi

3

Rekap: Indexing Teks OtomatisHapus kata tidak informatif

Hapus kata sangat jarang

4

Hapus yang 1

Hapus yang 0

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!

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

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

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

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

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

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

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

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

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

Kompresi Indeks

• Keuntungan

– Menghemat ruang penyimpanan

– Meningkatkan efisiensi cache

– Meningkatkan kecepatan transfer disk-memori

• Target

– File Postings

15

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Koreksi Ejaan

• Kedektan antara term-term query

– Kesamaan fonetik

• “herman” -> “Hermann”

– Solusi

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

32

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

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

PERTANYAAN?

Terimakasih!

35