Temu-Kembali Informasi 2017 07: Penskoran, Pembobotan Term & Model Ruang Vektor Husni Husni@Trunojoyo.ac.id Modifikasi dari slide kuliah Stanford CS276
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 MB
Kuliah Hari Ini; IIR Sub-Bab 6.2-6.4.3 Temu-kembali berperingkat Penskoran dokumen Frekuensi term Statistika koleksi Skema pembobotan Penskoran ruang vektor Ranked retrieval Scoring documents Term frequency Collection statistics Weighting schemes Vector space scoring
Ch. 6 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 Ch. 6 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
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. 6
Pesta atau Lapar: Bukan Masalah dalam Temu-Kembali Berperingkat Ch. 6 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.
Ch. 6 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.
Ch. 6 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.
Ch. 6 #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.
Ch. 6 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 A B / A B... Menggantikan A B / A B (Jaccard) untuk normalisasi panjang.
Sec. 6.2 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
Sec. 6.2 Matriks Hitungan Term-Dokumen Perhatikan jumlah kemunculan term dalam suatu dokumen: Setiap dokumen adalah suatu vektor jumlah dalam N 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
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. Untuk sekarang: model bag of words
Frekuensi Term: tf Frekuensi term tf t,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 querydokumen. 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
Sec. 6.2 Pembobotan Log-frekuensi Bobot frekuensi log dari term t dalam dokumen d adalah w t,d 1 log10 tft,d, if tft,d 0 0, otherwise 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 t q d (1 log tf t, d ) Skor bernilai 0 jika tidak ada term query yang hadir di dalam dokumen tersebut.
Sec. 6.2.1 Frekuensi 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.
Sec. 6.2.1 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.
Sec. 6.2.1 Bobot idf df t adalah frekuensi dokumen dari t: jumlah dokumen yang mengandung term t df t adalah ukuran inversi dari sifat informatif suatu term t df t N Kita definisikan idf (inverse document frequency) dari t dengan idf t log10 ( N/dft Kita gunakan log (N/df t ) sebagai ganti dari N/df t untuk menperkecil pengaruh dari idf. ) Perubahan basis log tidaklah penting
Sec. 6.2.1 Contoh idf, Anggap N = 1 juta term df t idf t calpurnia 1 animal 100 sunday 1,000 fly 10,000 under 100,000 the 1,000,000 idf log ( N/df t 10 t ) Ada satu nilai idf untuk setiap term t dalam suatu koleksi.
Pengaruh 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. 22
Sec. 6.2.1 Koleksi vs. Frekuensi Dokumen Frekuensi koleksi dari t adalah jumlah kehadiran dari t di dalam koleksi, menghitung banyaknya kemunculan. Contoh: Kata Frekuensi Koleksi Frekuensi Dokumen insurance 10440 3997 try 10422 8760 Kata mana yang merupakan term pencarian yang lebih baik (dan harus mendapatkan bobot yang lebih tinggi)?
Sec. 6.2.2 Pembobotan tf-idf Bobot tf-idf dari suatu term adalah perkalian antara bobot tf dan bobot idf-nya. w (1 log tf ) log t, d 10 ( N / df t, d t ) 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.
Sec. 6.2.2 Peringkat Akhir dari Dokumen terhadap Query Skor( q, d) tf.idf t q d t, d 25
Sec. 6.3 Biner 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
Sec. 6.3 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.
Sec. 6.3 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.
Sec. 6.3 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.
Sec. 6.3 Mengapa Jarak adalah Gagasan Kurang Baik? Euclidean distance antara q dan d 2 adalah besar padahal distribusi term dalam query q dan distribusi term dalam dokumen d 2 sangat mirip.
Sec. 6.3 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.
Sec. 6.3 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 ]
Sec. 6.3 Dari Sudut ke Kosinus Tetapi bagaimana dan mengapa kita harus menghitung kosinus?
Sec. 6.3 Normalisasi Panjang Suatu vektor dapat dinormalisasikan (panjangnya) dengan membagi setiap komponennya dengan panjangnya digunakan norma L 2 : x 2 Pembagian suatu vektor dengan norma L 2 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 x 2 i
cos(query, dokumen) V i i V i i V i i i d q q d d d q q d q d q d q 1 2 1 2 1 ), cos( Dot product Vektor satuan q i adalah bobot tf-idf dari term i di dalam query d i 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. Sec. 6.3
Kosinus Vektor dengan Panjang Ternormalisasi Untuk vektor dengan panjang ternormalisasi, kemiripan kosinus adalah dot product (atau perkalian skalar): cos( q, d) q V d i 1 q d i i untuk q, d sudah ternormalisasi panjang. 36
Ilustrasi Kemiripan Cosinus 37
Sec. 6.3 Kemiripan Kosinus Antara 3 Dokumen Seberapa mirip novel-novel: SaS: Sense and Sensibility PaP: Pride and Prejudice WH: Wuthering Heights? term SaS PaP WH affection 115 58 20 jealous 10 7 11 gossip 2 0 6 wuthering 0 0 38 Frekuensi Term (jumlah) Catatan: untuk menyederhanakan contoh ini, tidak dilakukan pembobotan idf.
Sec. 6.3 Contoh 3 Dokumen (Lanj.) Pembobotan frekuensi Log term 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 Sec. 6.3
Sec. 6.4 Varian Pembobotan tf-idf Kolom yang berjudul 'n' adalah akronim untuk skema bobot. Mengapa dasar log dalam idf tidak penting?
Sec. 6.4 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?
Sec. 6.4 Contoh tf-idf: lnc.ltc Dokumen: car insurance auto insurance Query: best car insurance 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 Latihan: Berapa N, jumlah dokumen? Panjang dokumen = 1 2 0 2 1 2 1.3 2 1.92 Skor = 0+0+0.27+0.53 = 0.8
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 Mengembalikan top K (misal K = 10) kepada pengguna
Ch. 6 Referensi Kuliah Hari Ini IIR 6.2 6.4.3 http://www.miislita.com/information-retrievaltutorial/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? Seperti apa rangking yang hasilkan?
Langkah 1: Term Frequency (TF)
Normalized TF
Python: Perhitungan Normalized TF def termfrequency(term, document): normalizedocument = document.lower().split() return normalizedocument.count(term.lower()) / float(len(normalizedocument))
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 = 2.09872620
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 3: TF * IDF
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 ) d2 = square root(d2[0] 2 + d2[1] 2 +... + d2[n] 2 )
TF*IDF Untuk Query
Cosine Similarity Query dan Document1
Cosine Similarity Q dengan Semua Dokumen
Cosine Similarity Q dengan Semua Dokumen
UTS: Ujian Tengah Semester Dokumen D 1 D 2 D 3 D 4 D 5 Isi Dokumen information retrieval students work hard hard-working information retrieval students take many classes the information retrieval workbook is well written the probabilistic model is an information retrieval paradigm the Boolean information retrieval model was the first to appear 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?