Temu-Kembali Informasi 2019 · Koreksi Ejaan •Kedekatan antara term-term Query –Jarak Edit...
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