Temu-Kembali Informasi
2017
07: Penskoran, Pembobotan Term & Model Ruang Vektor
Husni
Rekap Kuliah Sebelumnya
• Statistika koleksi dan kosa kata: Hukum Heaps dan Zipf • Kompresi kamus untuk indeks boolean
• String kamus, blocks dan front coding
• Kompresi postings: Gap encoding, prefix-unique codes
• Variable-Byte dan kode gamma
Koleksi (text, xml markup etc) 3,600.0
Koleksi (text) 960.0
Term-doc incidence matrix 40,000.0 postings, uncompressed (32-bit words) 400.0 postings, uncompressed (20 bits) 250.0 postings, variable byte encoded 116.0 postings, g-encoded 101.0
Kuliah Hari Ini; IIR Sub-Bab 6.2-6.4.3
• Temu-kembali berperingkat Ranked retrieval
• Penskoran dokumen Scoring documents
• Frekuensi term Term frequency
• Statistika koleksi Collection statistics
• Skema pembobotan Weighting schemes
Temu-Kembali Berperingkat
• Sejauh ini, query kita semuanya berbentuk Boolean.
• Dokumennya cocok atau tidak.
• Bagus bagi pengguna pakar dengan pemahaman ketepatan dari kebutuhan mereka dan koleksinya.
• Juga bagus bagi aplikasi: Aplikasi dapat dengan mudah mengkonsumsi ribuah hasil.
• Tidak bagus bagi mayoritas pengguna.
• Sebagian besar pengguna tidak mampu menuliskan query boolean (atau mampu tetapi berpikir itu pekerjaan yang terlalu banyak).
• Sebagian besar pengguna tidak ingin mmemriksa ribuan hasil.
• Ini terutama benar pada pencarian web.
Masalah dengan Pencarian Boolean:
Pesta atau Kelaparan
• Query boolean sering mengakibatkan terlalu sedikit (=0) atau terlalu banyak (1000) hasil.
• Query 1: “standard user dlink 650” → 200,000 hits
• Query 2: “standard user dlink 650 no card found”: 0 hits
• Diperlukan banyak keterampilan hadir Bersama dengan suatu query yang menghasilkan sejumlah hit yang dapat dikelola.
• AND memberikan terlalu sedikit; OR memberikan terlalu banyak Ch. 6
Model Temu-Kembali Berperingkat
• Daripada sehimpuan dokumen yang memenuhi suatu ekspresi query, dalam model retrieval berperingkat, sistem mengembalikan suatu
pengurutan terhadap dokumen (top) dalam koleksi yang berkaitan
dengan query
• Query teks bebas: Daripada suatu bahasa query berisi operators dan ekspresi, query pengguna hanya satu atau lebih kata dalam suatu
bahasa manusia (alami)
• Prinsipnya, ada dua pilihan terpisah di sini, tetapi praktisnya, model retrieval berperingkat normalnya telah diasosiasikan dengan query teks bebas dan sebaliknya.
Pesta atau Lapar:
Bukan Masalah dalam Temu-Kembali Berperingkat
• Ketika suatu sistem memproduksi sehimpunan hasil berperingkat, himpunan hasil yang besar bukanlah persoalan lagi
• Betul, ukuran dari himpunan hasil bukanlah suatu persoalan • Kita hanya menampilkan top k ( ≈ 10) hasil
• Kita tidak membanjari pengguna dengan dokumen hasil
• Alasan (premis): Algoritma pemeringkatan bekerja.
Penskoran: Basis Temu-Kembali Berperingkat
• We wish to return in order the documents most likely to be useful to the searcher
• How can we rank-order the documents in the collection with respect to a query?
• Berikan suatu skor: katakana dalam [0, 1] untuk setiap dokumen
• Skor ini mengukur seberapa baik dokumen dan query “cocok”.
Skor Relevansi Query-Dokumen
• Kita perlu suatu cara penentuan skor terhadap suatu paangan query/dokumen
• Mari kita mulai dengan suatu query satu term
• Jika term query tidak muncul di dalam dokumen: skor menjadi 0
• Semakin sering term query dalam dokumen, akan semakin tinggi skornya
• Kita akan melihat sejumlah alternatif untuk ini.
#1: Koefisien Jaccard
• Ingat dari Bab 3: Ukuran overlap dua himpunan A dan B yang umum digunakan
• jaccard(A,B) = |A ∩ B| / |A ∪ B| • jaccard(A,A) = 1
• jaccard(A,B) = 0 if A ∩ B = 0
• A dan B tidak harus berukuran sama. • Selalu berikan nilai antara 0 dan 1.
Koefisien Jaccard: Contoh Penskoran
• Berapakah skor kesesuaian query-dokumen yang dihitung dengan koefisien Jaccard untuk masing-masing dokumen di bawah ini?
• Query: ides of march
• Dokumen 1: caesar died in march • Dokumen 2: the long march
Persoalan dengan Penskoran Jaccard
• Tidak mempertimbangkan term frequency (berapa kali suatu term muncul di dalam suatu dokumen)
• Term yang jarang dalam koleksi lebih informatif daripada term yang sering
• Jaccard tidak melibatkan informasi ini
• Kita perlu cara lebih canggih untuk menormalisasi panjang • Dalam kuliah ini, akan digunakan
• . . . Menggantikan |A ∩ B|/|A ∪ B| (Jaccard) untuk normalisasi panjang. | B A | / | B A |
Ingat: Matrisk Biner Hubungan Term-Dokumen
Antony and Cleopatra Julius Caesar The Tempest Hamlet Othello Macbeth
Antony 1 1 0 0 0 1 Brutus 1 1 0 1 0 0 Caesar 1 1 0 1 1 1 Calpurnia 0 1 0 0 0 0 Cleopatra 1 0 0 0 0 0 mercy 1 0 1 1 1 1 worser 1 0 1 1 1 0
Setiap dokumen direpresentasikan oleh vektor biner ∈ {0,1}|V|
Matriks Hitungan Term-Dokumen
• Perhatikan jumlah kemunculan term dalam suatu dokumen:
• Setiap dokumen adalah suatu vektor jumlah dalam ℕv: kolom berikut Antony and Cleopatra Julius Caesar The Tempest Hamlet Othello Macbeth
Antony 157 73 0 0 0 0 Brutus 4 157 0 1 0 0 Caesar 232 227 0 2 1 1 Calpurnia 0 10 0 0 0 0 Cleopatra 57 0 0 0 0 0 mercy 2 0 3 5 5 1 worser 2 0 1 1 1 0 Sec. 6.2
Model Bag of Words
• Representasi vektor tidak mempertimbangkan urutan dari kata di dalam suatu dokumen
• John is quicker than Mary dan Mary is quicker than John mempunyai vektor yang sama
• Ini disebut model bag of words (tas berisi kata-kata).
• Dalam arti, ini adalah langkah mundur: Indeks berposisi telah mampu membedakan dua dokumen ini.
• Kita akan lihat “pemulihan” informasi posisi di kuliah selanjutnya.
Frekuensi Term: tf
• Frekuensi term tft,d dari term t di dalam dokumen d didefinisikan sebagai jumlah kali yang t muncul di dalam d.
• Kita akan menggunakan tf saat menghitung skor kecocokan query-dokumen. Tapi bagaimana?
• Frekuensi term mentah bukanlah apa yang diinginkan:
• Suatu dokumen dengan 10 kemunculan dari term adalah lebih relevan daripada suatu dokumen dengan 1 kemunculan dari term tersebut. • Tetapi tidak 10 kali lebih relevan.
• Relevansi tidak bertambah secara proporsional dengan frekuensi term. NB: Frekuensi = jumlah dalam IR
Pembobotan Log-frekuensi
• Bobot frekuensi log dari term t dalam dokumen d adalah
0 → 0, 1 → 1, 2 → 1.3, 10 → 2, 1000 → 4, dll.
• Skor untuk suatu pasangan dokumen-query: akumulasi term t dalam
kedua q dan d: Skor
• Skor bernilai 0 jika tidak ada term query yang hadir di dalam dokumen tersebut. otherwise 0, 0 tf if , tf log 1 10 t,d t,d t,d w
d q t(1
log
tf
t,d)
Sec. 6.2Frekuensi Dokumen
• Term yang jarang muncul sebetulnya lebih informatif daripada term yang sering
• Ingat kembali stop words
• Perhatikan suatu term dalam query yang jarang dalam koleksi (misal:
arachnocentric)
• Suatu dokumen yang mengandung term ini sangatlah besar kemungkinan relevan dengan query arachnocentric
→ Kita ingin bobot tinggi untuk term yang jarang seperti
arachnocentric.
Frekuensi Dokumen (Lanj.)
• Term yang sering muncul dalam dokumen sifatnya kurang informatif dibandingkan term yang jarang
• Perhatikan suatu term query yang sering dalam koleksi (seperti high,
increase, line)
• Suatu dokumen yang mengandung term demikian lebih mungkin relevan daripada dokumen yang tidak
• Tetapi itu bukalah indikator pasti dari relevansi.
→ Untuk term yang sering, kita ingin bobot positif tinggi untuk kata-kata seperti high, increase, dan line
• Tetapi bobot lebih rendah daripada untuk term yang jarang.
• Kita akan gunakan frekuensi dokumen (document frequency, df) untuk menangkap ini.
Bobot idf
• dft adalah frekuensi dokumen dari t: jumlah dokumen yang mengandung term t
• dft adalah ukuran inversi dari sifat informatif suatu term t • dft N
• Kita definisikan idf (inverse document frequency) dari t dengan
• Kita gunakan log (N/dft) sebagai ganti dari N/dft untuk “menperkecil” pengaruh dari idf.
)
/df
(
log
idf
t
10N
tPerubahan basis log tidaklah penting
Contoh idf, Anggap N = 1 juta
term dft idft calpurnia 1 animal 100 sunday 1,000 fly 10,000 under 100,000 the 1,000,000Ada satu nilai idf untuk setiap term t dalam suatu koleksi.
Sec. 6.2.1
)
/df
(
log
idf
t
10N
tPengaruh dari idf Terhadap Pemeringkatan
• Apakah idf mempunyaui efek pada pemeringkatan untuk
query satu term, seperti
• iPhone
• idf tidak berpengaruh pada perankingan query satu term
• idf mempengaruhi pemeringkatan dokumen untuk query dengan panjang minimal dua term
• Untuk query capricious person, pembobotan idf membuat
kemunculan capricious terhitung lebih besar dalam pemerinkatan dokumen akhir daripada kemunculan person.
Koleksi vs. Frekuensi Dokumen
• Frekuensi koleksi dari t adalah jumlah kehadiran dari t di dalam koleksi, menghitung banyaknya kemunculan.
• Contoh:
• Kata mana yang merupakan term pencarian yang lebih baik (dan harus mendapatkan bobot yang lebih tinggi)?
Kata Frekuensi Koleksi Frekuensi Dokumen
insurance 10440 3997
try 10422 8760
Pembobotan tf-idf
• Bobot tf-idf dari suatu term adalah perkalian antara bobot tf dan bobot idf-nya.
• Skema pembobotan paling terkenal dalam information retrieval • Catat: “-” dalam tf-idf adalah suatu hyphen, bukan tanda minus!
• Nama alternatif: tf.idf, tf x idf
• Meningkat mengikuti jumlah kemunculan di dalam dokumen
• Meningkat mengikuti kejarangan dari term di dalam koleksi.
)
df
/
(
log
)
tf
log
1
(
w
, 10 ,d t dN
t t
Sec. 6.2.2Peringkat Akhir dari Dokumen terhadap Query
25
d
q
t
t
d
d
q
,
)
tf.idf
,
(
Skor
Sec. 6.2.2Biner → Jumlah→ Matriks Bobot (
tf-idf
)
Antony and Cleopatra Julius Caesar The Tempest Hamlet Othello Macbeth
Antony 5.25 3.18 0 0 0 0.35 Brutus 1.21 6.1 0 1 0 0 Caesar 8.59 2.54 0 1.51 0.25 0 Calpurnia 0 1.54 0 0 0 0 Cleopatra 2.85 0 0 0 0 0 mercy 1.51 0 1.9 0.12 5.25 0.88 worser 1.37 0 0.11 4.15 0.25 1.95
Setiap dokumen sekarang direpresentasikan oleh suatu vektor dari bobot tf-idf ∈ R|V| bernilai ril
Dokumen Sebagai Vektor
• Jadi kita punya suatu ruang vektor berdimensi
|V|-• Term-term adalah sumbu dari ruang tersebut
• Dokumen adalah titik-titik atau vektor di dalam ruang ini
• Berdimensi sangat tinggi: puluhan juta dimensi saat
diterapkan pada suatu
web search engine (jutaan dokumen)
• Ini merupakan vektor yang sangat sparse (jarang): sebagian
besar entri bernilai nol.
Query juga Menjadi Vektor
• Gagasan Kunci 1: Lakukan yang sama terhadap query: representasikan sebagai vektor dalam ruang tersebut
• Gagasan Kunci 2: Ranking dokumen sesuai dengan kedekatannya terhadap query di dalam ruang ini
• Proximity (kedekatan) = kemiripan antar vektor • Proximity ≈ kebalikan dari jarak
• Ingat: Ini dilakukan karena kita ingin keluar dari model Boolean.
• Gantinya: Beri peringkat (ranking) lebih tinggi kepada dokumen yang lebih relevan, lebih rendah untuk dokumen yang kurang relevan.
Merumuskan Kedekatan dalam Ruang Vektor
• Cara pertama: jarak antara dua titik
• ( = jarak antara titik ujung dari dua vektor)
• Euclidean distance?
• Euclidean distance merupakan gagasan yang kurang bagus. . . • . . . karena Euclidean distance bernilai besar untuk vektor-vektor
dengan selisih panjang sangat jauh.
Mengapa Jarak adalah Gagasan Kurang Baik?
Euclidean distance antara
q dan d2 adalah besar padahal distribusi term dalam query q dan
distribusi term dalam
dokumen d2 sangat mirip.
Menggunakan Sudut, Bukan Jarak
• Eksperimen gagasan: ambil suatu dokumen d dan tambahkan ke dirinya. Namakan dokumen ini sebagai d′.
• “Secara semantik” d dan d′ mempunyai isi yang sama
• Euclidean distance antara dua dokumen ini menjadi sangat jauh
• Sudut antara dua dokumen ini adalah 0, sesuai dengan kemiripan maksimal.
• Gagasan kunci
:
Rankingkan dokumen-dokumen berdasarkan
sudutnya dengan query.
Dari Sudut ke Kosinus
• Dua kalimat berikut sama maknanya:
• Rankingkan dokumen dalam urutan MENURUN dari sudut antara query dan dokumen
• Rankingkan dokumen dalam urutan NAIK dari cosinus(query, dokumen)
• Kosinus adalah fungsi yang
menurun secara monoton untuk
interval [0
o, 180
o]
Dari Sudut ke Kosinus
Tetapi bagaimana – dan mengapa – kita harus menghitung kosinus?
Normalisasi Panjang
• Suatu vektor dapat dinormalisasikan (panjangnya) dengan membagi setiap komponennya dengan panjangnya – digunakan norma L2:
• Pembagian suatu vektor dengan norma L2 ini mengubahnya menjadi vektor satuan (panjang, pada permukaan dari unit hypersphere)
• Pengaruh pada dua dokumen d dan d′ (d yang ditambahkan ke dirinya dari slide sebelumnya): keduanya mempunyai vektor identic setelah normalisasi panjang.
• Sehingga dokumen panjang dan pendek mempunyai boot yang
comparable.
i ix x 2 2 Sec. 6.3cos(query, dokumen)
•
•
V i i V i i V i i id
q
d
q
d
d
q
q
d
q
d
q
d
q
1 2 1 2 1)
,
cos(
Dot product Vektor satuan
qi adalah bobot tf-idf dari term i di dalam query
di adalah bobot tf-idf dari term i di dalam dokumen
cos(q,d) adalah kemiripan cosinus dari q dan d …
atau sama dengan cosinus sudut antara q dan d.
Kosinus Vektor dengan Panjang Ternormalisasi
• Untuk vektor dengan panjang ternormalisasi, kemiripan kosinus adalah dot product (atau perkalian skalar):
untuk q, d sudah ternormalisasi panjang.
36
•
V iq
id
id
q
d
q
1)
,
cos(
Ilustrasi Kemiripan Cosinus
Kemiripan Kosinus Antara 3 Dokumen
term SaS PaP WH
affection 115 58 20
jealous 10 7 11
gossip 2 0 6
wuthering 0 0 38
Seberapa mirip novel-novel:
• SaS: Sense and Sensibility
• PaP: Pride and Prejudice
• WH: Wuthering Heights?
Frekuensi Term (jumlah)
Sec. 6.3
Catatan: untuk menyederhanakan contoh ini, tidak dilakukan pembobotan idf.
Contoh 3 Dokumen (Lanj.)
Pembobotan frekuensi Logterm SaS PaP WH
affection 3.06 2.76 2.30
jealous 2.00 1.85 2.04
gossip 1.30 0 1.78
wuthering 0 0 2.58
Setelah normalisasi panjang
term SaS PaP WH
affection 0.789 0.832 0.524 jealous 0.515 0.555 0.465 gossip 0.335 0 0.405 wuthering 0 0 0.588 cos(SaS,PaP) ≈ 0.789 × 0.832 + 0.515 × 0.555 + 0.335 × 0.0 + 0.0 × 0.0 ≈ 0.94 cos(SaS,WH) ≈ 0.79 cos(PaP,WH) ≈ 0.69
Mengapa diperoleh cos(SaS,PaP) > cos(SaS,WH)?
Menghitung Skor Kosinus
Varian Pembobotan tf-idf
Kolom yang berjudul 'n' adalah akronim untuk skema bobot.
Mengapa dasar log dalam idf tidak penting?
Pembobotan Berbeda thd. Query vs. Dokumen
• Banyak search engines membolehkan pembobotan berbeda untuk query vs. dokumen
• Notasi SMART: merupakan kombinasi yang digunakan dalam suatu engine, dengan notasi ddd.qqq, menggunakan akronim dari tabel sebelumnya
• Skema pembobotan standard: lnc.ltc
• Dokumen: logarithmic tf (l sebagai karakter pertama), no idf dan normalisasi kosinus
• Query: logarithmic tf (l dalam kolom paling kiri), idf (t dalam kolom kedua), normalisasi kosinus
Gagasan Kurang Bagus?
Contoh tf-idf:
lnc.ltc
Term Query Document Prod
tf-raw tf-wt df idf wt n’lize tf-raw tf-wt wt n’lize
auto 0 0 5000 2.3 0 0 1 1 1 0.52 0
best 1 1 50000 1.3 1.3 0.34 0 0 0 0 0
car 1 1 10000 2.0 2.0 0.52 1 1 1 0.52 0.27
insurance 1 1 1000 3.0 3.0 0.78 2 1.3 1.3 0.68 0.53
Dokumen: car insurance auto insurance
Query: best car insurance
Latihan: Berapa N, jumlah dokumen?
Skor = 0+0+0.27+0.53 = 0.8
Panjang dokumen =
12 02 12 1.32 1.92
Rangkuman:
Pemeringkatan Ruang Vektor
• Merepresentasikan query sebagai suatu vector tf-idf berbobot
• Merepresentasikan setiap dokumen sebagai vector tf-idf berbobot
• Menghitung skor kemiripan kosinus antara vektor query dan setiap vektor dokumen
• Meranking (memeringkatkan) dokumen-dokumen sesuai dengan skornya terhadap query
Referensi Kuliah Hari Ini
• IIR 6.2 – 6.4.3
•
http://www.miislita.com/information-retrieval-tutorial/cosine-similarity-tutorial.html
• Tutorial pembobotan term dan kemiripan cosinus!
Latihan
• Ada 3 dokumen dalam koleksi:
• Document 1: The game of life is a game of everlasting learning • Document 2: The unexamined life is not worth living
• Document 3: Never stop learning
• Dan terdapat query:
• Query: life learning
• Berapa dekat Q dengan D1, D2 dan D3 jika dihitung dengan cosine similarity?
Python: Perhitungan Normalized TF
def termFrequency(term, document):
normalizeDocument = document.lower().split()
Langkah 2: Inverse Document Frequency (IDF)
• IDF(game) = 1 + log
e(Jumlah total dokumen / Jumlah
dokumen dengan term game di dalamnya)
• Total ada 3 dokumen =
Document1, Document2, Document3
• Term game hadir dalam Document1
IDF(game) = 1 + log
e(3 / 1)
= 1 + 1.098726209
Python: Perhitungan IDF
def inverseDocumentFrequency(term, allDocuments):numDocumentsWithThisTerm = 0 for doc in allDocuments:
if term.lower() in allDocuments[doc].lower().split(): numDocumentsWithThisTerm = numDocumentsWithThisTerm + 1 if numDocumentsWithThisTerm > 0: return 1.0 + log(float(len(allDocuments)) / numDocumentsWithThisTerm) else: return 1.0
Langkah 4: Cosine Similarity dalam VSM
Cosine Similarity (d1, d2) = Dot product(d1, d2) / ||d1|| * ||d2|| Dot product (d1,d2) = d1[0] * d2[0] + d1[1] * d2[1] * … * d1[n] * d2[n] | |d1|| = square root(d1[0]2+ d1[1]2+ ... + d1[n]2) |
UTS: Ujian Tengah Semester
1. Buat matriks kemunculan term dari 5 dokumen tersebut
2. Buat inverted index dari 5 dokumen tersebut. Struktur datanya harus
mencantumkan frekuensi dokumen dan posisinya dalam dokumen tersebut 3. Jika ada Query: ‘working in information retrieval’, seperti apa rangking yang
dikembalikan oleh perhitungan cosine similarity?
Dokumen Isi Dokumen
D1 information retrieval students work hard
D2 hard-working information retrieval students take many classes D3 the information retrieval workbook is well written
D4 the probabilistic model is an information retrieval paradigm