TINJAUAN PUSTAKA Sedangkan untuk algoritme breadth first dapat dilihat pada Gambar 3. Temu Kembali Informasi Temu kembali informasi (information retrieval) yaitu mencari bahan (biasanya dokumen) yang bersifat tidak terstruktur (biasanya teks) untuk memenuhi kebutuhan informasi dari dalam koleksi dokumen yang besar (tersimpan dalam komputer) (Manning et al. 2009). 1 2 Breadth-First(starting_urls) { for each link (starting_urls){ 3 enqueue(frontier, link); 4 } 5 while (visited < MAX_PAGES ){ 6 start_time; 7 link = dequeue_link(frontier); 8 page = fetch(link); Web Crawling 9 visited = visited + 1; Web crawling adalah suatu proses untuk mengumpulkan halaman web, kemudian dilakukan pengindeksan untuk mendukung sebuah mesin pencari. Tujuan dari web crawling adalah mengumpulkan halaman web dengan cepat dan efisien, bersamaan dengan struktur link yang terhubung antar halaman web tersebut (Manning et al. 2009). 10 enqueue(frontier, 11 end_time; Komponen pendukung mesin pencari salah satunya yaitu web crawler dapat dilihat pada Gambar 1. extract_links(page)); 12 } 13 } Gambar 3 Algoritme Breadth First. 2. Breadth First with Time Constraint Breadth first with time constraint merupakan perluasan dari algoritme breadth first. Algoritme ini didasarkan pada gagasan tidak mengakses server yang sama selama jangka waktu tertentu dengan tujuan agar tidak membebani server. Dengan demikian, halaman diambil jika dan hanya jika batas waktu tertentu telah berlalu sejak terakhir akses ke server (Romero 2006). Algoritme breadth first with time constraint dapat dilihat pada Gambar 4. Gambar 1 Komponen mesin pencari. Algoritme Web Crawler 1 Breadth-First(starting_urls) { 2 for each link (starting_urls){ 3 enqueue(frontier, link); 4 } Algoritme web crawler yang dianalisis dan dievaluasi yaitu : 5 url = first(frontier); 6 while (visited < MAX_PAGES){ 1. Breadth First 7 Algoritme breadth first merupakan strategi sederhana untuk mengumpulkan halaman web. Algoritme ini tidak menggunakan pendekatan heuristik untuk menentukan Uniform Resource Locator (URL) berikutnya yang akan dikunjungi. Proses pengambilan URL dari frontier hanya menggunakan First In First Out (FIFO) Queue (Romero 2006). Ilustrasi breadth first crawler dapat dilihat pada Gambar 2. if(Now()-timeLastAccessToServer(url) > timeThereshld){ 8 start_time; 9 page = fetch(url); 10 visited = visited + 1; 11 enqueue(frontier, 12 url = first(frontier); extract_links(page)); 13 end_time; 14 }else{ 15 url = nextElement(frontier); 16 17 18 } } } Gambar 4 Algoritme Breadth First with Time Constraint. Gambar 2 Breadth First Crawler. 2 3. Best First Ide dasar dari algoritme ini memberikan nilai estimasi pada setiap link di frontier, dimana nilai estimasi terbaik akan digunakan sebagai dasar untuk menjelajahi setiap link pada frontier. Untuk mendapatkan nilai estimasi tersebut dengan cara menghitung kesamaan antara halaman web dengan kata kunci yang diinginkan (Romero 2006). Ilustrasi best first crawler dapat dilihat pada Gambar 5. halaman tersebut. Pendekatan tersebut digunakan, sehingga page rank dari link masuk (inbound link) tidak langsung didistribusikan ke halaman yang dituju, melainkan dibagi dengan jumlah link keluar (outbound link) yang ada pada halaman tersebut. Sebuah halaman web akan semakin populer, jika semakin banyak halaman web lain yang meletakan link yang mengarah ke halaman web tersebut. Sedangkan sebuah halaman web akan semakin penting jika halaman lain yang memiliki nilai page rank tinggi mengacu ke halaman web tersebut, dengan asumsi isi dari halaman web tersebut lebih penting dari halaman web yang lain. Proses perhitungan nilai page rank dilakukan secara rekursif sampai konvergen. Sebuah rangking halaman web akan ditentukan oleh rangking halaman web lain yang memiliki link ke halaman web tersebut. Gambar 5 Best First Crawler. Terdapat dua persamaan page rank yaitu: Sedangkan untuk Algoritme best first dapat dilihat pada Gambar 6. 1 Best-First(keyword,starting_urls){ 2 for each link (starting_urls){ 3 enqueue(frontier,link, 1); 4 } 5 while (visited < MAX_PAGES){ 6 start_time; 7 link=dequeue_top_link(frontier); 8 page = fetch(link); 9 score = sim(keyword, page); 10 visited = visited + 1; 11 enqueue(frontier, 12 end_time; extract_links(page),score); 13 } 14 } (1) N (2) dengan PR(p) adalah page rank halaman p, PR(d) adalah page rank halaman d yang mengacu ke p, in(p) adalah kumpulan halaman yang menunjuk ke p, out(d) adalah kumpulan link yang keluar dari d, dan N adalah jumlah dokumen. Nilai γ (damping factor) merupakan peluang bahwa random surfer meminta halaman lain secara acak, nilai konstanta γ kurang dari satu (umumnya digunakan nilai 0.85). Page rank diperkenalkan oleh Sergey Brin dan Larry Page, merupakan model probabilitas dari prilaku surfing pengguna. Skor halaman web tergantung secara rekursif dari skor halaman web yang mengarah ke halaman web tersebut (Romero 2006). Penentuan nilai page rank halaman p tidak langsung diberikan, tetapi sebelumnya dibagi dengan jumlah link yang ada pada halaman d (outbound link), nilai page rank tersebut akan dibagi rata ke setiap link yang ada pada halaman tersebut. Setelah semua nilai page rank didapat dari halaman lain yang mengacu ke halaman p dijumlahkan, nilai itu kemudian dikalikan dengan konstanta γ. Hal ini dilakukan agar tidak keseluruhan nilai page rank halaman d didistribusikan ke halaman p. Page rank menggunakan konsep random surfer model, merupakan pendekatan yang menggambarkan seorang pengunjung di depan sebuah halaman web. Hal ini berarti peluang seseorang mengklik sebuah link sebanding dengan jumlah link yang ada pada Perbedaan antara kedua persamaan tersebut yaitu persamaan pertama jumlah page rank sama dengan satu, sedangkan persamaan ke dua jumlah page rank sama dengan jumlah halaman web. Menurut Brin dan Page (1998) mengatakan bahwa page rank membentuk Gambar 6 Algoritme Best First. 4. Page Rank 3 distribusi peluang, jadi jumlah semua nilai page rank halaman web sama dengan satu. Berdasarkan penjelasan tersebut maka persamaan satu lebih direkomendasikan, karena page rank berbasis peluang. Berdasarkan dua persamaan tersebut dapat dilihat bahwa page rank ditentukan untuk setiap halaman, bukan keseluruhan website. Ilustrasi link antar halaman dapat dilihat pada Gambar 7. A 1 PageRank (keyword,starting_url){ 2 for each link (starting_urls){ 3 enqueue(frontier, link, 1); 4 } 5 while (visited < MAX_PAGES){ 6 start_time; 7 if(multiplies-X (visited)){ 8 for each link (frontier){ 9 PR(link) = compute_score_PR; 10 } 11 } 12 link = dequeue_max_PR(frontier); 13 if(link not found){ 14 B C link = dequeue_top_link(frontier); 15 } 16 page = fetch(link); 17 score = sim(keyword, page); Gambar 7 Ilustrasi link. Proses perhitungan page rank dari ilustrasi pada Gambar 7 sebagai berikut : 18 visited = visited + 1; 19 enqueue(frontier, 20 end_time; misal nilai γ = 0.5 21 22 PR (A) = 0.5/3 + 0.5 PR(C) PR (B) = 0.5/3 + 0.5 ( PR(A) / 2 ) PR (C) = 0.5/3 + 0.5 ( PR(A) / 2 + PR(B)) Tabel 1 menujukkan proses iterasi perhitungan nilai page rank sampai dengan iterasi ke empat, terlihat bahwa halaman C lebih populer dibandingkan dengan halaman A dan halaman B, karena memiliki page rank yang lebih besar. Halaman A lebih populer dibandingkan dengan halaman B walaupun jumlah inbound link sama, karena halaman A diacu oleh halaman C yang memiliki page rank yang besar. Tabel 1 Proses perhitungan page rank sampai iterasi ke empat. Iterasi 0 1 2 3 4 PR(A) 0 0,167 0,250 0,313 0,333 PR(B) 0 0,167 0,208 0,229 0,245 PR (C) 0 0,167 0,292 0,333 0,359 Algoritme web crawler menggunakan page rank dapat dilihat pada Gambar 8. extract_links(page),score); } } Gambar 8 Algoritme Page Rank. Web crawler dengan menggunakan page rank merupakan varian dari best first crawler. Berbeda pada evaluasi link yang dikunjungi berikutnya menggunakan dua pendekatan, yaitu nilai page rank dan cosine similarity (Menczer et al. 2004). Analisis Algoritme Secara informal, algoritme adalah prosedur komputasional yang didefinisikan dengan jelas untuk mengambil beberapa nilai atau satu set nilai sebagai input, dan menghasilkan beberapa nilai atau satu set nilai sebagai output. Algoritme adalah urutan langkah komputasi yang mengubah input menjadi output (Cormen et al. 2002). Analisis algoritme dibutuhkan untuk memprediksi sumber daya yang dibutuhkan oleh suatu algoritme. Sumber daya komputer seperti memori, bandwidth, atau perangkat keras komputer lainnya menjadi perhatian utama dalam menganalisis algoritme, tetapi umumnya yang diukur adalah waktu komputasi suatu algoritme. Metode matematika secara efektif dapat digunakan, untuk memprediksi banyaknya ruang dan waktu yang diperlukan oleh suatu algoritme, tanpa harus mengimplementasikan dalam bahasa pemrograman tertentu (Cormen et al. 2002). 4 Cosine Similarity Cosine Similiarity digunakan oleh web crawler untuk mendapatkan nilai estimasi antara kata kunci dengan setiap halaman web yang dikunjungi. Nilai estimasi ini akan dijadikan nilai kesamaan untuk setiap link yang didapat dari web yang dikunjungi. Perhitungan cosine similarity dapat dilihat pada persamaan : METODE PENELITIAN Kajian Literatur Kajian literatur pada penelitian ini yaitu mengkaji beberapa algoritme web crawler, strategi web crawler, serta teknik yang berkaitan dengan web crawler. Literatur yang digunakan diambil dari buku, jurnal, dan artikel-artikel dari internet. Analisis dan Implementasi Crawling dengan q merupakan topik, p adalah halaman, Vq dan Vp merupakan vektor term frequency dari p dan q, dan || Vq || & || Vp || merupakan panjang vektor Vp dan Vq. Stop Words Hasil dari kajian literatur didapat beberapa algoritme seperti yang telah dijelaskan pada tinjauan pustaka. Beberapa algoritme web crawler tersebut dianalisis kemudian diimplementasikan. Tahapan implementasi dapat dilihat pada Gambar 9. Terkadang kata-kata yang sering muncul dan umum merupakan kata-kata yang kurang bermakna jika dijadikan penciri sebuah dokumen. Kata-kata tersebut akan dibuang dari himpunan kata yang akan diindeks dan katakata tersebut termasuk dalam stop words (Manning et al. 2009). Kata-kata yang akan dibuang akan disimpan dalam sebuah daftar kata yang disebut stop list. Stop list akan berbeda-beda tergantung bahasa yang digunakan, dalam konteks bahasa indonesia beberapa kata yang termasuk dalam stop list di antaranya ‘yang’, ‘sehingga’ dan ‘dengan’. Pembobotan Term Frequency (TF) Menurut Manning (2009) term frequency adalah frekuensi kemunculan kata pada dokumen. Untuk menghitung skor antar kueri dengan dokumen, pendekatan sederhana dengan menghitung frekuensi kata pada kueri dengan dokumen. Nilai frekuensi tersebut adalah bobot dari dokumen, yang memiliki bobot terbesar merupakan dokumen yang paling dekat dengan kueri. Evaluasi Algoritme Romero (2006) menjelaskan bahwa untuk mengukur kinerja algoritme web crawler menggunakan nilai precision, yaitu membandingkan antara jumlah halaman relevan yang dikunjungi dengan total halaman yang dikunjungi. Persamaan untuk menghitung nilai precision yaitu : Jumlah halaman relevan dikunjungi precision = Total halaman dikunjungi Start Inisialisasi (kata kunci dan starting URL) Memasukan links ke frontier End Pemberhentian crawling Mengambil link dari frontier berdasarkan algoritme crawler Fetch Parsing Pengindeksan Memasukan links ke frontier Gambar 9 Tahapan implementasi. Berikut ini penjelasan untuk setiap tahapan dari Gambar 9 : 1. Inisialisasi (kata kunci dan starting URL) Starting URL adalah link yang pertama kali menjadi acuan untuk dikunjungi, link ini dianggap sebagai link yang paling mewakili isi halaman web yang diinginkan untuk dikumpulkan. Penentuan starting URL sangat penting karena menentukan links 5