6
Boolean Retrieval Dan Kemiripan Dokumen: Vector Space Model Wayan Sriyasa Departemen Ilmu Komputer, FMIPA, IPB 1 Boolean Retrieval dan Kesamaan Dokumen: Vector Space Model Pendahuluan Sistem temu kembali informasi dengan menggunakan model Boolean Retrieval merupakan salah satu model dimana proses pencarian informasi dari query yang diterima diperlakukan dengan ekspresi boolean. Ekspresi boolean yang dimaksud dapat berupa operator logika AND, OR dan NOT. Untuk dapat melakukan proses Booelan Retrieval , keberadaan inverted index sangat diperlukan, karena index ini akan sangat membantu dalam proses temu kembali yang efektif. Beberapa langkah yang dapat dilakukan dalam proses Booelan Retrieval ini antara lain: 1. Lakukan indexing, dalam hal ini inverted index 2. Temukan kata/term query didalam dictionary dan posting list-nya 3. Lakukan operasi dari operator logika yang diinginkan dengan mencari irisan dari posting list, (pada tulisan ini hanya dicoba untuk operator logika AND). Setelah pencarian dokumen sesuai dengan input query selesai, selanjutnya perlu dilakukan perangkingan dokumen tersebut berdasarkan pencirian oleh kata/term query oleh bobot kata/term tersebut didalam dokumen. Perangkingan ini dapat dilakukan dengan menggunakan skor tf*idft (sudah dibahas pada tugas sebelumnya), serta dengan konsep jarak kemiripan dokumen dengan menggunakan pendekatan vector space model. Didalam Vector Space Model , dokumen direpresentasikan sebagai sebuah vektor, dimana setiap elemen vektor tersebut merupakan nilai dari bobot tf*idft yang sudah dinormalisasi. Pada model ini, setiap bobot kata/term ditiap dokumen dibandingkan dan dihitung sudut kedekatannya (dalam derajat ( 0 ). Pembandingan ini dengan menggunakan sebuah operasi perkalian matrix yang disebut sebagai inner product atau dot product yang dapat dinotasikan sebagai: x T = (x1, x2, x3, x4); y T = (y1, y2, y3, y4) xy = x T y ........................(1) Sebelum dapat dihitung sudut dari vektor ini, terlebih dahulu harus dihitung panjang dari vektor tersebut. Panjang vektor dinotasikan debagai |x|dan kuadrat dari panjang vektor |x| 2 merupakan dot product-nya sendiri. |x| 2 = x T y ........................(2) sehingga panjang vektor |x| menjadi: y x x T | | ........................(3) Sudut simpangan (θ) antara dua vektor ini (dengan dimensi yang sama) dapat kita tentukan dengan menghitung nilai cosinus θ sbb: | || | cos y x y x T ........................(4) Dan untuk menghitung derajat (θ) dapat dilakukan dengan menghitung arccos dari persamaan (4). Dengan mengetahui sudut simpangan vektor, maka dapat diketahui kemiripan antar dokumen didalam korpus. Sebagai elemen vektor dapat digunakan nilai bobot tf*idft . Dengan sangat bervariasinya kemunculan kata/term pada korpus sehingga perlu dilakukan normalisasi bobot, sebagai berikut: 2 , ) * ( * idf tf idf tf W t d norm ........................(5)

Boolean Retrieval & Vectore Space Model

Embed Size (px)

DESCRIPTION

Sistem temu kembali informasi dengan menggunakan model Boolean Retrieval merupakan salah satu model dimana proses pencarian informasi dari query yang diterima diperlakukan dengan ekspresi boolean. Ekspresi boolean yang dimaksud dapat berupa operator logika AND, OR dan NOT. Setelah pencarian dokumen sesuai dengan input query selesai, selanjutnya perlu dilakukan perangkingan dokumen tersebut berdasarkan pencirian oleh kata/term query oleh bobot kata/term tersebut didalam dokumen. Perangkingan ini dapat dilakukan dengan menggunakan skor tf*idf (sudah dibahas pada tugas sebelumnya, lihat "konstruksi inverted index"), serta dengan konsep jarak kemiripan dokumen dengan menggunakan pendekatan vector space model.

Citation preview

Page 1: Boolean Retrieval & Vectore Space Model

Boolean Retrieval Dan Kemiripan Dokumen: Vector Space Model

Wayan Sriyasa

Departemen Ilmu Komputer, FMIPA, IPB

1

Boolean Retrieval dan Kesamaan Dokumen: Vector Space Model

Pendahuluan Sistem temu kembali informasi dengan menggunakan model Boolean Retrieval merupakan salah satu model dimana proses pencarian informasi dari query yang diterima diperlakukan dengan ekspresi boolean. Ekspresi boolean yang dimaksud dapat berupa operator logika AND, OR dan NOT. Untuk dapat melakukan proses Booelan Retrieval, keberadaan inverted index sangat diperlukan, karena index ini akan sangat membantu dalam proses temu kembali yang efektif. Beberapa langkah yang dapat dilakukan dalam proses Booelan Retrieval ini antara lain:

1. Lakukan indexing, dalam hal ini inverted index 2. Temukan kata/term query didalam dictionary dan posting list-nya 3. Lakukan operasi dari operator logika yang diinginkan dengan mencari irisan dari

posting list, (pada tulisan ini hanya dicoba untuk operator logika AND).

Setelah pencarian dokumen sesuai dengan input query selesai, selanjutnya perlu dilakukan perangkingan dokumen tersebut berdasarkan pencirian oleh kata/term query oleh bobot kata/term tersebut didalam dokumen. Perangkingan ini dapat dilakukan dengan menggunakan skor tf*idft (sudah dibahas pada tugas sebelumnya), serta dengan konsep jarak kemiripan dokumen dengan menggunakan pendekatan vector space model.

Didalam Vector Space Model, dokumen direpresentasikan sebagai sebuah vektor, dimana setiap elemen vektor tersebut merupakan nilai dari bobot tf*idft yang sudah dinormalisasi. Pada model ini, setiap bobot kata/term ditiap dokumen dibandingkan dan dihitung sudut kedekatannya (dalam derajat (0). Pembandingan ini dengan menggunakan sebuah operasi perkalian matrix yang disebut sebagai inner product atau dot product yang dapat dinotasikan sebagai:

xT = (x1, x2, x3, x4); yT = (y1, y2, y3, y4) x●y = xTy ........................(1)

Sebelum dapat dihitung sudut dari vektor ini, terlebih dahulu harus dihitung panjang dari vektor tersebut. Panjang vektor dinotasikan debagai |x|dan kuadrat dari panjang vektor |x|2 merupakan dot product-nya sendiri.

|x|2 = xTy ........................(2)

sehingga panjang vektor |x| menjadi: yxx T|| ........................(3)

Sudut simpangan (θ) antara dua vektor ini (dengan dimensi yang sama) dapat kita tentukan dengan menghitung nilai cosinus θ sbb:

||||

cosyx

yxT ........................(4)

Dan untuk menghitung derajat (θ) dapat dilakukan dengan menghitung arccos dari persamaan (4). Dengan mengetahui sudut simpangan vektor, maka dapat diketahui kemiripan antar dokumen didalam korpus. Sebagai elemen vektor dapat digunakan nilai bobot tf*idft. Dengan sangat bervariasinya kemunculan kata/term pada korpus sehingga perlu dilakukan normalisasi bobot, sebagai berikut:

2

,

)*(

*

idftf

idftfW tdnorm ........................(5)

Page 2: Boolean Retrieval & Vectore Space Model

Boolean Retrieval Dan Kemiripan Dokumen: Vector Space Model

Wayan Sriyasa

Departemen Ilmu Komputer, FMIPA, IPB

2

Implementasi Script yang digunakan pada tugas ini merupakan lanjutan dari script tugas sebelumnya. Cuplikan script berikut merupakan langkah yang dilakukan untuk melakukan proses boolean retrieval dan perhitungan matriks Vector Space. Langkah 1: Normalisasi bobot Langkah 2. Perhitungan vektor space (sudut simpangan antar dokumen)

Langkah 3. Pencarian dengan Boolean

Pencarian kata pada indeks dilakukan menurut tahap berikut: Setiap kata yang dicari dilakukan pencarian pada hash rec{kata}, hasil dari

pencarian ini adalah hash dok{frekuensi} dari tiap-tiap kata. Operasi AND dilakukan dengan membuat hash and{kata} dan mengisi hash

tersebut sesuai nomor dokumen yang ditemukan (kompleksitas θ(n)). Dokumen hasil adalah item pada hash yang memiliki jumlah sebanding dengan banyaknya kata yang dicari.

################################################################ ## Step 4: Normalisasi bobot ## ## unit[i]{term}=bobot[i]{term]/sqrt(sum(bobot[i]{term})^2) ## ################################################################ for $i (0..$#tf) { $len2 = 0; foreach $x (sort keys %dictio) { $len2 += $bobot[$i]{$x}**2; } $len = sqrt($len2); foreach $x (sort keys %dictio) { $unit[$i]{$x} = $bobot[$i]{$x}/$len; #print OUT4 "dokumen ke-$i, $x, $bobot[$i]{$x}, $unit[$i]{$x}\n"; } }

################################################# ## Step 5: Hitung sudut (cos) vektor ## ## Cos[i][j]=unit[i]{term}*unit[j]{term} ## ## cosinus[i][j]=acos(cos[i][j]) ## ################################################# for $i (0..$#tf) { for $j (0..$#tf) { $Jum=0; foreach $x (sort keys %dictio) { $Jum += $unit[$i]{$x} * $unit[$j]{$x}; } $cos[$i][$j] = $Jum; } } print "\n"; for $i (0..$#tf) { for $j (0..$#tf) { $cosin[$i][$j] = acos($cos[$i][$j])/pi*180; printf "%.1f ",$cosin[$i][$j]; } print "\n"; }

Page 3: Boolean Retrieval & Vectore Space Model

Boolean Retrieval Dan Kemiripan Dokumen: Vector Space Model

Wayan Sriyasa

Departemen Ilmu Komputer, FMIPA, IPB

3

Struktur hashtable yang digunakan untuk menyimpan index adalah sebagai berikut:

Field Keterangan N_dok Jumlah dokumen didalalm korpus

kata Hash yang menyimpan frekuensi kata pada tiap dokumen

pos_dok Array yang menyimpan posisi dokumen didalam korpus

berikut cuplikan script yang melakukan pencarian kata/term didalam korpus:

Hasil pencarian berupa array hasil (berisi nomor dokumen) lalu diurutkan menurut bobot.

Teks dokumen selanjutnya dibaca dari file korpus dan diambil bagian yang cukup mewakili yaitu DOCNO dan TITLE.

######################################################## ## Cari tiap-tiap kata dalam hash yang sudah disimpan ## ######################################################## foreach my $str (@ARGV) { # ambil kata yang dicari dari hash "kata" last if (!$rec->{'kata'}{lc $str}); my %hash = %{ $rec->{'kata'}{lc $str} }; my @key = keys %hash; # hitung idf per kata untuk bobot dokumen # log2(N_dok / n dok), N_dok = jumlah dokumen, n = frekuensi kata yang dicari dalam dokumen my $idf = log($rec->{'N_dok'} / scalar @key) / log(2); # hitung bobot hasil tf x idf , tf = total frekuensi kata foreach $x (@key) { $and{$x}++; $bobot{$x} += $hash{$x} * $idf; } }

#################################################################### ## Periksa banyak dokumen yang mengandung kata-ktata yang dicari ## #################################################################### my @hasil = (); foreach $x (keys %and) { push @hasil, $x if $and{$x} == scalar @ARGV ; } # stop pencarian kalo kata tidak ditemukan die("Tidak ada dokumen yang cocok...\n") if !@hasil; # urutkan temuan dokumen sesuai dengan bobotnya my @urut = sort { $bobot{$b} <=> $bobot{$a} } @hasil;

################################################## ## baca ulang korpus dan ambil id dokumen ## ## serta judulnya; record separator = </DOC> -- ## ################################################## open(IN, "korpus.txt") or die("File korpus.txt tidak ditemukan..."); $/ = "</DOC>\n"; my $nomor = 0; my $str; print "\n";

Page 4: Boolean Retrieval & Vectore Space Model

Boolean Retrieval Dan Kemiripan Dokumen: Vector Space Model

Wayan Sriyasa

Departemen Ilmu Komputer, FMIPA, IPB

4

Gambar 1. Hasil run script index.pl

Sebagai hasil akhir ditampilkan nomor, id dokumen, judul dan bobot-nya.

Hasil dan Pembahasan Berikut hasil run dari script yang telah dibuat: Script1. Proses indexing dan perhitungan vektor

################################################################## ## Ambil idDokumen dan Judul dokumen yang sesuai dengan query ## ################################################################## foreach $x (@urut) { # ambil text dari awal dokumen -- seek(IN, $rec->{'pos_dok'}[$x-1], 0); next if (!($str = <IN>)); # cetak nomor urut temuan printf "Dokumen ke-%2d: \n", ++$nomor; print "################\n"; #cetak id dokumen print "Id Dokumen: "; print "$2 " while ($str =~ m/<(DOCNO)>(.+)<\/\1>/gs); print "\n"; #cetak judul dokumen print "Judul dokumen: "; print $2 while ($str =~ m/<(TITLE)>(.+)<\/\1>/gs); #cetak bobot kata pada dokumen yang dimaksud print "\n"; printf "bobot kata yang dicari adalah %2.3f\n", $bobot{$x}; print "\n"; # cetak list hanya 5 dokumen saja last if $nomor >= 5; }

Page 5: Boolean Retrieval & Vectore Space Model

Boolean Retrieval Dan Kemiripan Dokumen: Vector Space Model

Wayan Sriyasa

Departemen Ilmu Komputer, FMIPA, IPB

5

Gambar 2. Hasil run script cari.pl, dengan query "flu burung"

Gambar 3. Hasil run script cari.pl dengan query "google yahoo"

Gambar 4. Perhitungan vektor dari 4 dokumen

Scrip 2. Proses pencarian dokumen dengan query interaktif dari user. Scenario1. Proses sukses, kata/term yang dicari ada pada korpus.

Scenario2. Proses sukses, kata/term yang dicari tidak ada pada korpus.

Implementasi perhitungan sudut simpangan vektor antar dokumen berhasil dilakukan, berikut contoh vektor sudut yang dihasilkan dengan menggunakan 4 dokumen didalam 1 korpus:

Dari hasil perhitungan ini (Gambar 4), diperoleh sebuah matrix berukuran 4x4 yang menunjukkan sudut kemiringan antar dokumen. Matrix ini adalah simetris dimana diagonalnya bernilai 0 (nol) yang memperlihatkan kemiringan terhadap dokumen itu sendiri.

Besaran sudut berbanding terbalik terhadap kemiripan sebuah dokumen terhadap dokumen lainnya. Pada contoh ini, dokumen ke-2 vs ke-3 memiliki sudut terkecil 850, ini berarti kemiripan dokumen ini lebih besar daripada dokumen yang lainnya.

Page 6: Boolean Retrieval & Vectore Space Model

Boolean Retrieval Dan Kemiripan Dokumen: Vector Space Model

Wayan Sriyasa

Departemen Ilmu Komputer, FMIPA, IPB

6

Manfaat lebih lanjut dari matrix sudut ini adalah pada aplikasi untuk peng-klasifikasian dokumen, penelusuran link web, dll.

Proses pencarian dokumen dengan query yang diberikan telah berhasil dilakukan, dimana dokumen yang ditemukan akan diurutkan berdasarkan bobotnya (gambar 2). Query diproses dengan menggunakan operator logika AND. Dokumen yang dapat ditampilkan oleh script di-set hanya 5 (bisa di-set lebih dari ini) dimana dokumen dengan rangking teratas memiliki bobot terbesar dibandingkan dengan bobot keempat dokumen lainnya. Kesimpulan Sistem temu kembali informasi dengan menggunakan model Boolean Retrieval merupakan salah satu model dimana proses pencarian informasi dari query yang diterima diperlakukan dengan ekspresi boolean. Untuk dapat melakukan proses Booelan Retrieval, keberadaan inverted index sangat diperlukan. Didalam Vector Space Model, dokumen direpresentasikan sebagai sebuah vektor, dimana setiap elemen vektor tersebut merupakan nilai dari bobot tf*idft yang sudah dinormalisasi. Setiap bobot kata/term ditiap dokumen dibandingkan dan dihitung sudut kedekatannya (dalam derajat (0) dengan sebuah operasi perkalian matrix yang disebut sebagai inner product atau dot product. Pada implementasinya, index direkonstruksi dengan menggunakan hashtable, dan logika pencarian hanya mendukung AND. Untuk setiap dokumen yang mengandung kata yang sama, dibedakan berdasarkan bobotnya. Referensi ----------------. http://nlp.stanford.edu/IR-book/html/htmledition/irbook.html

----------------. http://en.wikipedia.org/wiki/Natural_language_processing

Adisantoso, J; dan Ridha, A. 2009. Materi Kuliah: Sistem Temu Kembali Informasi. Istitut Pertanian Bogor. Indonesia.

Feldman, R; Sanger, J. 2007. THE TEXT MINING HANDBOOK: Advanced Approaches in Analyzing Unstructured Data. Cambridge University Press. USA.

Manning, C.D; Raghavan, P Dan Schutze, H. 2008. Introduction To Information Retrieval. Cambridge University Press. USA.

Rijsbergen, C.J. 2008. Information Retrieval. Department Of Computing Science, University Of Glasgow. USA.