You are on page 1of 6

Boolean Retrieval Dan Kemiripan Dokumen:

Vector Space Model

Wayan Sriyasa
Departemen Ilmu Komputer, FMIPA, IPB

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:
|x| x T y ........................(3)
Sudut simpangan (θ) antara dua vektor ini (dengan dimensi yang sama) dapat kita
tentukan dengan menghitung nilai cosinus θ sbb:
xT y
cos  ........................(4)
|x||y|
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:
tf * idfd,t
Wnorm  ........................(5)
(tf * idf)2

1
Boolean Retrieval Dan Kemiripan Dokumen:
Vector Space Model

Wayan Sriyasa
Departemen Ilmu Komputer, FMIPA, IPB

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

################################################################
## 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";
}
}

Langkah 2. Perhitungan vektor space (sudut simpangan antar dokumen)

#################################################
## 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";
}

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.

2
Boolean Retrieval Dan Kemiripan Dokumen:
Vector Space Model

Wayan Sriyasa
Departemen Ilmu Komputer, FMIPA, IPB

Struktur hashtable yang digunakan untuk menyimpan index adalah sebagai berikut:

Field Keterangan
N_dok Jumlah dokumen didalalm korpus
Hash yang menyimpan frekuensi kata pada tiap
kata
dokumen
Array yang menyimpan posisi dokumen didalam
pos_dok
korpus

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

########################################################
## 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;
}
}

Hasil pencarian berupa array hasil (berisi nomor dokumen) lalu diurutkan menurut
bobot.
####################################################################
## 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;

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

##################################################
## 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";

3
Boolean Retrieval Dan Kemiripan Dokumen:
Vector Space Model

Wayan Sriyasa
Departemen Ilmu Komputer, FMIPA, IPB

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

##################################################################
## 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;
}

Hasil dan Pembahasan


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

Gambar 1. Hasil run script index.pl

4
Boolean Retrieval Dan Kemiripan Dokumen:
Vector Space Model

Wayan Sriyasa
Departemen Ilmu Komputer, FMIPA, IPB

Scrip 2. Proses pencarian dokumen dengan query interaktif dari user.


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

Gambar 2. Hasil run script cari.pl,


dengan query "flu burung"

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

Gambar 3. Hasil run script cari.pl


dengan query "google yahoo"

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
Gambar 4. Perhitungan vektor dari 4
yang lainnya.
dokumen

5
Boolean Retrieval Dan Kemiripan Dokumen:
Vector Space Model

Wayan Sriyasa
Departemen Ilmu Komputer, FMIPA, IPB

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.

You might also like