Focused Crawler Untuk Mengoptimalkan Pencarian Jurnal Menggunakan Metode Porter Stemmer

(1)

FOCUSED CRAWLER

UNTUK MENGOPTIMALKAN

PENCARIAN JURNAL MENGGUNAKAN

METODE PORTER

STEMMER

SKRIPSI

CYNTHIA ARILLA SEMBIRING 091402124

PROGRAM STUDI S1 TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(2)

FOCUSED CRAWLER

UNTUK MENGOPTIMALKAN

PENCARIAN JURNAL MENGGUNAKAN

METODE PORTER

STEMMER

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi

CYNTHIA ARILLA SEMBIRING 091402124

PROGRAM STUDI S1 TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGIINFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(3)

PERSETUJUAN

Judul : FOCUSED CRAWLER UNTUK

MENGOPTIMALKAN PENCARIAN JURNAL MENGGUNAKAN METODE PORTER STEMMER

Kategori : SKRIPSI

Nama : CYNTHIA ARILLA SEMBIRING

Nomor Induk Mahasiswa : 091402124

Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI

Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI (FASILKOM-TI) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, 29 Agustus 2014

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dani Gunawan, S.T., M.T. M. Andri Budiman,ST.,M.Comp.Sc., M.E.M. NIP 198209152012121002 NIP 197510082008011011

Diketahui/Disetujui oleh

Program Studi S1 Teknologi Informasi Ketua,

M. Anggia Muchtar,S.T., MM.IT. NIP 198001102008011010


(4)

PERNYATAAN

FOCUSED CRAWLER UNTUK MENGOPTIMALKAN PENCARIAN JURNAL MENGGUNAKAN

METODE PORTER STEMMER

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 29 Agustus 2014

Cynthia Arilla Sembiring 091402124


(5)

UCAPAN TERIMA KASIH

Puji dan syukur penulis sampaikan kehadirat Tuhan Yesus Kristus yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh ijazah Sarjana Teknologi Informasi, Program Studi S1 Teknologi Informasi Universitas Sumatera Utara. Untuk itu penulis mengucapkan terima kasih kepada:

1. Skripsi ini penulis persembahkan untuk kedua orang tua dan keluarga penulis yang telah memberikan dukungan dan motivasi, ayah penulis Drs. Pancaria Sembiring, M.BA dan ibu penulis Lasmaria Sitorus yang selalu sabar dalam mendidik dan membesarkan penulis. Adik penulis Yudhistira Sembiring dan Yudhawira Sembiring yang selalu memberikan dorongan dan dukungan kepada penulis.

2. Bapak M. Andri Budiman, ST., M.Comp.Sc., M.E.M. dan Bapak Dani Gunawan, S.T., M.T. selaku dosen pembimbing penulis yang telah meluangkan waktu, pikiran, saran, dan kritiknya untuk penulis dalam menyelesaikan skripsi ini.

3. Bapak Dedy Arisandi, S.T., M.Kom. dan Ibu Sarah Purnamawati, S.T., M.Sc. yang telah bersedia menjadi dosen penguji dan memberikan saran dan kritik yang membangun dalam penyelesaian skripsi ini.

4. Ketua dan Sekretaris Program Studi S1 Teknologi Informasi, Bapak M. Anggia Muchtar, S.T., MM.IT. dan Bapak Mohammad Fadly Syahputra, B.Sc., M.Sc.IT.

5. Seluruh dosen Departemen Teknologi Informasi dan Ilmu Komputer USU yang telah memberikan ilmu, dukungan, arahan dan bantuannya selama proses perkuliahan, serta Ibu Delima dan Bang Faisal, sebagai staf Tata Usaha Program Studi Teknologi Informasi Universitas Sumatera Utara.

6. Erwin Sitorus yang telah memberikan dukungan kepada penulis selama ini. 7. Sahabat-sahabat yang selalu mendukung dan memberi semangat kepada

penulis, Fida Elvi Anderia Sebayang, S.TI., Stella Maris Harefa, S.TI., Ade Chania Sion Sagala, S.TI., Riska Vinesia Butarbutar, S.TI., Jihan Meutia Fauzen, S.TI., Annifa Iqramitha, S.TI., dan semua teman angkatan 2009. 8. Sahabat penulis Yustira Sinaga, S.E., Rotua Panjaitan, S.E. dan Venta Sitorus

S.E., yang selalu mendoakan dan memberi semangat.

9. Seluruh rekan kuliah sejawat yang tidak dapat disebutkan satu persatu.

Penulis menyadari bahwa masih banyakkekurangan dalam skripsi ini, untuk itu penulis mengharapkan saran dan kritik yang bersifat membangun dari semua pihak demi kesempuranaan skripsi ini. Akhir kata penulis ucapkan terima kasih.


(6)

ABSTRAK

Maraknya perkembangan media online seperti jurnal ilmiah membuat seseorang sulit untuk menemukan jurnal yang sesuai dengan yang diinginkan. Oleh sebab itu, dibutuhkan sebuah aplikasi pencarian jurnal dengan menampilkan jurnal terkait (related post) dari jurnal yang dicari sehingga dapat mengoptimalkan pencarian jurnal. Penelitian ini menggunakan teknik focused crawler yaitu teknik untuk mengunduh url dan konten yang ada pada suatu halaman website tertentu dan algoritma Porter stemmer untuk mengubah kata berimbuhan ke bentuk kata dasar. Focused crawler juga digunakan untuk menghitung nilai bobot dan relevansi. Nilai relevansi dibutuhkan agar dapat diketahui jurnal yang memiliki nilai terdekat dengan jurnal yang lainnya (related post). Hasil Pengujian menyimpulkan bahwa semakin banyak data jurnal maka akan semakin dekat nilai relevansi masing-masing jurnal, sehingga dapat mengoptimalkan pencarian jurnal.

Kata kunci:focused crawler, crawling, Porter stemmer, relevansi, related post, search engine, jurnal.


(7)

FOCUSED CRAWLER TO OPTIMIZE SEARCHING OF JOURNAL USING PORTER STEMMER ALGORITHM

ABSTRACT

The plethora of online media such as scientific journals, can make people really get difficulties to find the appropriate journals as they need. Therefore, an application of journal searching which searching related journal or related post is needed. This research uses focused crawler technique as a technique to download url and content in certain pages of a website and the Porter stemmer algorithm to transmute the affix word to become basic words. Focused crawler technique is also used to the weight of the stemmed word and its relevancy. Relevant value is needed to know the closest journal which has the closest values to the other journals (related post). The result of the research concludes that more journals are searched the more relevant the value we get and thus the search is optimized.

Keywords: focused crawler, crawling, Porter stemmer, relevance, related post, search engine, journal.


(8)

DAFTAR ISI

Halaman

PERSETUJUAN ii

PERNYATAAN iii

UCAPAN TERIMA KASIH iv

ABSTRAK v

ABSTRACT vi

DAFTAR ISI viii

DAFTAR TABEL ix

DAFTAR GAMBAR x

BAB 1 PENDAHULUAN 1

1.1. Latar Belakang 2

1.2. Rumusan Masalah 2

1.3. Batasan Masalah 2

1.4. Tujuan Penelitian 3

1.5. Manfaat Penelitian 3

1.6. Metodologi Penelitian 3

1.7. Sistematika Penulisan 4

BAB 2 TINJAUAN PUSTAKA 5

2.1. Search Engine 5

2.1.1. Sejarah Search Engine 5

2.1.2. Prinsip Umum Search Engine 6

2.1.3. Cara Kerja Search Engine 7

2.1.4. Sifat Search Engine 8

2.1.5. Algoritma Umum dalam Search Engine 9

2.2. Focused Crawler 10

2.3. Algoritma Porter Stemmer 12

2.4. Bahasa Pemrograman PHP 17

2.5. DatabaseMySQL 18

2.6. Penelitian Terdahulu 18

BAB 3 ANALISIS DAN PERANCANGAN SISTEM 21

3.1. Analisis Data 21

3.1.1. Data Konten (Data Jurnal) 21

3.1.2. Tabel_Keyword 22

3.1.3. Tabel_Relevansi 23

3.2. Analisis Sistem 23

3.2.1. Admin 23

3.2.1.1. Text Preprocessing 25

3.2.1.2. Penghapusan Stopwords 26

3.2.1.3. StemmingPorter Stemmer 27

3.2.1.4. Focused Crawler 30

3.2.2. User 39


(9)

3.3.1. DiagramUse Case 40

3.3.2. Definisi Use Case 40

3.3.3. General Architecture 42

BAB 4 IMPLEMENTASI DAN PENGUJIAN 43

4.1. Implementasi Sistem 43

4.1.1. Spesifikasi Perangkat Keras dan 43 Perangkat Lunak yang Digunakan

4.1.2. Tampilan Halaman Utama User 43

4.1.3. Tampilan Halaman Pencarian 44

4.1.4. Tampilan Halaman Baca 45

4.1.5. Tampilan Halaman Proses Crawling 45

4.1.6. Tampilan Halaman Stemming 46

4.1.7. Tampilan Halaman Bobot dan Normalisasi 46 4.1.8. Tampilan Halaman Tabel Relevansi 47

4.2. Pengujian Sistem 47

4.2.1. Pengujian Sistem Tahap Crawling 47 4.2.2. Hasil Pengujian Proses Stemming 48 4.2.3. Hasil Pengujian Bobot dan Normalisasi 49 4.2.4. Hasil Pengujian Nilai Relevansi 49

4.2.5. Hasil Pengujian Pencarian 50

BAB 5 KESIMPULAN DAN SARAN 55

5.1. Kesimpulan 55

5.2. Saran 55


(10)

DAFTAR TABEL

Halaman

Tabel 2.1.Aturan Stemming Step 1a 13

Tabel 2.2.Aturan Stemming Step 1b 14

Tabel 2.3.Continued for –ed and –ing rules 14

Tabel 2.4.Aturan Stemming Step 1c 15

Tabel 2.5.Aturan Stemming Step 2 15

Tabel 2.6. Aturan Stemming Step 3 16

Tabel 2.7. Aturan Stemming Step 4 16

Tabel 2.8. Aturan Stemming Step 5a 17

Tabel 2.9. Aturan Stemming Step 5b 17

Tabel 2.10. Penelitian Terdahulu 20

Tabel 3.1. Tabel_Konten 21

Tabel 3.2. Tabel_Keyword 22

Tabel 3.3. Tabel_Relevansi 23

Tabel 3.4. Proses Normalisasi 32

Tabel 3.5. Tabel Menentukan Nilai relevansi 34

Tabel 3.6. Nilai Relevansi = 0 37

Tabel 3.7. Definisi Use case 41


(11)

DAFTAR GAMBAR

Halaman

Gambar 2.1. Tampilan dari Arhie 5

Gambar 2.2. Hasil Pencarian dari Archie 6

Gambar 2.3. Arsitektur Search Engine 8

Gambar 2.4. Arsitektur Focused Crawler 10

Gambar 3.1. Flowchart Sistem 24

Gambar 3.2. Flowchart Text Preprocessing 25

Gambar 3.3. Flowchart Proses Stopwords 26

Gambar 3.4. Flowchart Proses Stemming 28

Gambar 3.5. Flowchart Proses Normalisasi 31

Gambar 3.6. Flowchart Menghitung Relevansi 33

Gambar 3.7. Flowchart Pencarian 39

Gambar 3.8. Diagam Use case 40

Gambar 3.9. General Architecture 42

Gambar 4.1. Tampilan Halaman Utama User 44

Gambar 4.2. Tampilan Halaman Pencarian 44

Gambar 4.3. Tampilan Halaman Baca 45

Gambar 4.4. Tampilan Halaman Proses Crawling 45

Gambar 4.5. Tampilan Halaman Stemming 46

Gambar 4.6. Tampilan Halaman Bobot dan Normalisasi 47

Gambar 4.7. Tampilan Halaman Relevansi 47

Gambar 4.8. Database Tabel_Konten 48

Gambar 4.9. Hasil Pengujian Proses Stemming 48 Gambar 4.10. Hasil Pengujian Bobot dan Normalisasi 49 Gambar 4.11. Hasil Pengujian Nilai Relevansi 50 Gambar 4.12. Hasil Pengujian Pencarian Jurnal (1) 53 Gambar 4.13. Hasil Pengujian Pencarian Jurnal (2) 53


(12)

ABSTRAK

Maraknya perkembangan media online seperti jurnal ilmiah membuat seseorang sulit untuk menemukan jurnal yang sesuai dengan yang diinginkan. Oleh sebab itu, dibutuhkan sebuah aplikasi pencarian jurnal dengan menampilkan jurnal terkait (related post) dari jurnal yang dicari sehingga dapat mengoptimalkan pencarian jurnal. Penelitian ini menggunakan teknik focused crawler yaitu teknik untuk mengunduh url dan konten yang ada pada suatu halaman website tertentu dan algoritma Porter stemmer untuk mengubah kata berimbuhan ke bentuk kata dasar. Focused crawler juga digunakan untuk menghitung nilai bobot dan relevansi. Nilai relevansi dibutuhkan agar dapat diketahui jurnal yang memiliki nilai terdekat dengan jurnal yang lainnya (related post). Hasil Pengujian menyimpulkan bahwa semakin banyak data jurnal maka akan semakin dekat nilai relevansi masing-masing jurnal, sehingga dapat mengoptimalkan pencarian jurnal.

Kata kunci:focused crawler, crawling, Porter stemmer, relevansi, related post, search engine, jurnal.


(13)

FOCUSED CRAWLER TO OPTIMIZE SEARCHING OF JOURNAL USING PORTER STEMMER ALGORITHM

ABSTRACT

The plethora of online media such as scientific journals, can make people really get difficulties to find the appropriate journals as they need. Therefore, an application of journal searching which searching related journal or related post is needed. This research uses focused crawler technique as a technique to download url and content in certain pages of a website and the Porter stemmer algorithm to transmute the affix word to become basic words. Focused crawler technique is also used to the weight of the stemmed word and its relevancy. Relevant value is needed to know the closest journal which has the closest values to the other journals (related post). The result of the research concludes that more journals are searched the more relevant the value we get and thus the search is optimized.

Keywords: focused crawler, crawling, Porter stemmer, relevance, related post, search engine, journal.


(14)

BAB 1

PENDAHULUAN

1.1.Latar Belakang

Perkembangan teknologi internet saat ini semakin pesat.Hal ini tidak terlepas dari banyaknya ketersediaan search engine(mesin pencari) yang memungkinkan untuk melakukan penjelajahan ke dunia internet. Kebanyakan orang ketika hendak mencari informasi di internet, yang dilakukan adalah membuka situs layanan search engine (Wahana Komputer, 2009). Terdapat ratusan bahkan ribuan search engine (mesin pencari) yang ada di internet dan kapasitasnya selalu tumbuh dari waktu ke waktu (Febrian, 2007).

Perkembangan internet yang eksplosif membuat seseorang sulit untuk menemukan informasi yang sesuai dengan apa yang diinginkan. Dalam related post (postingan terkait) juga tidak jarang menyarankan informasi yang tidak sesuai dengan apa yang dicari oleh seseorang. Pada penelitian ini dilakukan penghitungan nilai relevansi pada jurnal untuk menentukan postingan terkait (related post) pada masing-masing jurnal yaitu dengan menggunakan focused crawler. Sehingga dengan adanya related post (jurnal terkait), diharapkan dapat mengoptimalkan pencarian jurnal dan membantu seseorang dalam mencari jurnal dengan mudah.

Focused crawler adalah sebuah pendekatan untuk melakukan proses crawling.Focused crawler ini berfungsi untuk mengunduhurldan konten yang ada pada suatu halaman.Urldan konten yang sudah diunduhakan otomatis masuk ke dalam database.Proses untuk mengumpulkan informasi mengenai halaman web dilakukan oleh sebuah software yang disebut crawler (wahana Komputer, 2009).

Proses crawling pada penelitian ini dilakukan dengan menggunakan algoritma Porter Stemmer.Algoritma Porter Stemmer adalah proses penghilangan akhiran morphological dan inflexional yang umumnya terdapat dalam bahasa Inggris (Porter,


(15)

1980). Proses stemming dilakukan untuk mendapatkan kata dasar dari kata berimbuhan dan bobot term dari setiap kata.

Beberapa penelitian tentang focused crawler yang pernah dibuat sebelumnya yaitu Reinforcement Learning dalam Proses Pembelajaran Penentuan Strategi Penelusuran pada Focused Crawler (Maimunah & Kuspriyanto, 2008), FocusedCrawler Optimization Using Genetic Algorithm (Yohanes et al., 2011), Concept based Focused Crawling using Ontology (Thenmalar & Geetha, 2011), Implementasi Focused Crawler dengan Menggunakan Content Similarity dan Link Structure Analysis (Rendy, 2012), Effective Focused Crawling Based on Content and Link Structure Analysis (Pal Anshika et al., 2009). Penelitian terdahulu mengenai PorterStemmer yaitu Perbandingan Algoritma Stemming Porter dengan Algoritma Nazief & Asriani untuk Stemming Dokumen Teks Bahasa Indonesia (Agusta, 2009), Algoritma Porter StemmerFor Bahasa Indonesia untuk Pre-Processing Text Mining Berbasis Metode Market Basket Analysis (Budhi et al., 2006).

1.2.Rumusan Masalah

Teknologi internet sangat memudahkan seseorang dalam mendapatkan informasi. Hal tersebut tidak terlepas dari banyaknya ketersediaan search engine yang memungkinkan untuk melakukan penjelajahan ke dunia internet. Seiring dengan perkembangan internet yang eksplosif dimana membuat seseorang sulit menemukan informasi yang sesuai dengan apa yang diinginkan. Berdasarkan hal tersebut, rumusan masalahnya yaitu bagaimana mengoptimalkan pencarian jurnal (judul dan abstrak), sehingga dapat mengakomodasi pencarian dengan 1 keyword atau lebih dengan memperhatikan nilai relevansi,

1.3.Batasan Masalah

Adapun yang menjadi batasan masalah pada tugas akhir ini, yaitu: 1. Khusus untuk pencarian jurnal yang berbahasa Inggris. 2. Bagian yang di-crwaling adalah judul jurnal dan abstrak. 3. Proses crawling bersifat online.

4. Jika ada junal terbaru, nilai relevansi dihitung ulang. 5. Terdapat 5 kategori pencarian.


(16)

1.4.Tujuan Penelitian

Tujuan dari penelitian ini yaitumengoptimalkan pencarian jurnal dengan menampilkan nilai relevansi antara jurnal menggunakan focused crawler dan algoritma Porter stemmer.

1.5.Manfaat Penelitian

Manfaat dari penelitian ini adalah memudahkan seseorang untuk mendapatkan sebuah jurnal yang sesuai dengan topik yang diinginkan.

1.6.Metodologi Penelitian

Tahapan-tahapan metodologi penelitian: 1. Studi Literatur

Studi literatur dilakukan dengan mengumpulkan bahan-bahan referensi baik daribuku, artikel, paper, jurnal, makalah, maupun situs-situs internet.

2. Analisis Sistem

Pada tahap ini dilakukan analisispendekatan focused crawler dan algoritma Porter stemmerdalam menentukan related post.

3. Perancangan dan Implementasi Sistem

Pada tahap ini dilakukan perancangan sesuai dengan hasil dari analisis sistem dan melakukan implementasi dari hasil analisis dan perancangan yang dibuat. 4. Pengujian Sistem

Pada tahap ini dilakukan proses pengujian dan percobaan terhadap sistem sesuaidengan kebutuhan yang ditentukan sebelumnya serta memastikan program yangdibuat berjalan seperti yang diharapkan.

5. Dokumentasi

Pada tahap ini dilakukan dokumentasi dan penulisan laporan mengenaiaplikasi tersebut yang bertujuan untuk menunjukkan hasil penelitian ini.


(17)

1.7.Sistematika Penulisan

Bagian utama dari sistematika penulisan skripsi ini yaitu:

BAB 1. PENDAHULUAN

Bab ini berisi tentang dasar-dasar pemikiran yang meliputi permasalahan yang melatar belakangi dibuatnya aplikasi ini, merumuskan masalah-masalah untuk mendukung dibuatnya aplikasi ini, maksud dan tujuan yang harus dicapai dari pembuatan aplikasi ini, batasan-batasan untuk untuk memfokuskan pembuatan aplikasi ini, metode-metode penelitian untuk pengumpulan data, metode-metode pembangunan perangkat lunak dan sistematika penulisan yang menjelaskan garis besar dari setiap bab nya.

BAB 2. TINJAUAN PUSTAKA

Bab ini menjelaskan tentang teori-teori yang menunjang dan berhubungan dengan pembuatan dan perancangan serta sebagai acuan dalam pembuatan sistem, sehingga perancangan tersebut sesuai dengan teori yang sudah ada.

BAB 3. ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisikan langkah-langkah penelitian yang dilakukan, serta analisis terhadap fokus permasalahan penelitian.

BAB 4. IMPLEMENTASI DAN PENGUJIAN

Bab ini berisi pembahasan tentang implementasi berdasarkan perancangan yang disusun pada bab 3 dan pengujian terhadap sistem yang dibangun.

BAB 5. KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan hasil pengujian dari perangkat lunak yang telah dibangun berdasarkan tujuan yang ingin dicapai dan saran yang dapat diberikan untuk perangkat lunak ini untuk kemudian dapat dikembangkan kembali.


(18)

BAB 2

TINJAUAN PUSTAKA

Pada bab ini akan dibahas tinjauan pustaka untuk mendukung penulisan skripsi ini. Teori yang dibahas yaitu mengenai search engine, focused crawler, stemming, Porter stemmer, bahasa pemrograman PHP dan databaseMySQL dan beberapa subpokok pembahasan lainnya yang menjadi landasan teori pada skripsi ini.

Semua dasar teori dalam tinjauan pustaka ini, diambil dari buku, jurnal, laporan dan internet.

2.1.Search Engine

Search engine (mesin pencari)merupakan fasilitas yang digunakan untuk mengeksplorasi berbagai data, informasi, dan pengetahuan yang ada di internet. Search engine adalah sebuah program yang dapat diakses melalui internet yang berfungsi untuk membantu pengguna komputer dalam mencari berbagai hal yang ingin diketahuinya (Indrajit R.E. et al.). TheAmerican Heritage Dictionary mendefinisikan search engine sebagai sebuah program perangkat lunak (software) yang menelusur, menjaring, dan menampilkan informasi dari pangkalan data.

2.1.1.Sejarah search engine

Search engine pertama kali diciptakan pada tahun 1990 oleh Emtage mahasiswa Universitas McGill di Montreal Canada. Dia menciptakan alat bantu untuk melakukan pencarian bernama Archie.Aplikasi berguna untuk mencari file saja.


(19)

Gambar 2.2 Hasil pencarian dari Archie (Sumber: archie.icm.edu.pl)

Pada tahun 1991, Mark McCahilldari Universitas Minnesota menemukan search engine yang lebih canggih.Aplikasi ini bernama Gopher dan berguna untuk mencari teks di internet.Gopher mengindeks dokumen teks yang akhirnya berkembang menjadi dunia website atau www. Kemudian diciptakan sebuah program bernama Veronica singkatan dari software bernama Very Easy Rodent Oriented Net-wide Index to Computerized Archieves.Setelah Veronica, diciptakan website yang disebut Jungheadyang merupakan singkatan dari Jony’z Universal Gopher Hierarchy Excavation and Display yang merupakan software untuk mencari teks yang tersimpan di sistem indeks dari Gopher.

Tahun 1993, munculsearch engine baru bernama wandex yang dikembangkan oleh Matthew Gray.Wandex bekerja dengan cara mengindeks dan mencari index dari halaman. Semenjak saat itu muncul search engine seperti Excite, Yahoo!, Google,Lycos, Ask.com dan yang lainnya (Wahana Komputer, 2009).

2.1.2.Prinsip umum search engine

Prinsip umum dari search engine (Febrian, 2007), yaitu: 1. Spider

Spider mirip dengan browser.Perbedaannya, browser menampilkan secara langsung informasi yang ada untuk kebutuhan manusia.Spidermemiliki kegunaanuntuk mesin bukan untuk manusia. Spider berfungsi mengambil


(20)

halaman yang dikunjungi untuk disimpan ke dalam database yang dimiliki oleh search engine.

2. Crawler

Crawler merupakan program yang dimiliki oleh search engine untuk melacak dan menemukan link yang terdapat dari setiap halaman yang ditemuinya. Crawler berfungsi untuk menentukan spider harus pergi kemana dan mengevaluasi link berdasarkan alamat yang ditentukan dari awal.

3. Indexer

Indexer berfungsi untuk melakukan aktivitas untuk menguraikan masing-masing halaman dan meneliti berbagai unsur seperti teks, header, struktur, atau fitur dari gaya penulisan, tag HTML khusus, dan yang lainnya.

4. Database

Database merupakan tempat standar untuk menyimpan data-data dari halaman yang telah dikunjungi, diunduh dan sudah dianalisis.

5. Result Engine

Result engine merupakan mesin yang melakukan penggolongan dan penentuan peringkat dari hasil pencarian pada search engine. Result engine berfungsi untuk menentukan halaman mana yang menemui kriteria terbaik dari hasil pencarian berdasarkan permintaan penggunaannya dan bagaimana bentuk penampilan yang akan ditampilkan.

6. Web Server

Web Server merupakan komputer yang melayani permintaan dan memberikan respon balik dari permintaan tersebut. Web Server menghasilkan informasi atau dokumen dalam format HTML.

2.1.3.Cara kerja search engine

Pencarian oleh Search engine dilakukan dalam database yang menyimpan text dari masing-masing halaman.Text dari halaman demi halaman disimpan ke dalam server database.Ketika melakukan pencarian, search engineakan melakukan pencarian salinan halaman yang disimpan pada database yang berisi salinan halaman pada saat terakhir dikunjungi. Ketika link yang disediakan diklik maka alamat akan diberikan dari serversearch engine. Database yang ada pada search engine dipilih dan dijaring oleh program robot yang disebut spider.


(21)

Untuk menentukan halaman potensial, mereka mengacu pada link yang terdapat pada halaman yang telah disimpan di dalam database. Jika suatu halaman web tidak pernah di-link dari halaman lainnya, maka spider dari search engine tidak akan menemukan halaman tersebut. Mereka hanya memantau dari database yang dimiliki.Seperti pada Gambar 2.3.

Gambar 2.3 Arsitektur Search Engine (Falani, 2010)

2.1.4.Sifat search engine

Ditinjau dari mekanisme kerjanya, search engine dibagi menjadi 3 tipe (Wahana Komputer, 2009), yaitu:

1. Search Engine Bersifat Crawler

Google menggunakan software agen otomatis yang disebut crawler untuk mengunjungi website, membaca, dan mengindeks website tersebut.Semua informasi yang dikumpulkan oleh crawlerakandisimpan di lokasi terpusat.Crawlerakan mengunjungi website berulang kali secara periodik dengan periode yang ditentukan oleh administratorsearch engine.

2. Search Engine dengan Campur Tangan Manusia

Search engine ini mengindeks dengan cara campur tangan manusia. Dimana, pemilik situs mengirimkan data yang akan diindeks dan setelah diindeks akan ditampilkan sebagai hasil pencarian. Contoh: Yahoo!.

3. Search Engine Hibrida

Merupakan metoda campuran antara search engine bertenaga mesin dan bertenaga manusia. Dimana, pemilik website dapat mengirimkan datanya ke search engine untuk ditampilkan ke search engine namun search engine juga


(22)

mengirimkan crawler untuk mengindeks website. Dengan menggunakan campur tangan manusia maka search engine bisa menghindari spammer.

2.1.5.Algoritma umum dalam search engine

Algoritma menentukan bagaimana prosedur pengambilan data dan pengumpulannya. Algoritma umum yang dipakai oleh search engine (Wahana Komputer, 2009), yaitu: 1. Pencarian List

Algoritma yang melakukan pencarian dengan cara mencari satu kunci, dan pencarian dilakukan secara linier. Kekurangan dari algoritma ini yaitu sangat lama karena pencariannya yang linier.Kelebihannya yaitu hasilnya sedikit sehingga lebih tersaring yang benar-benar relevan terhadap hasil pencarian. 2. Pencarian Tree

Algoritma ini mencari data dari dataset yang paling luas kemudian menyempit hingga sampai ke bagian yang lebih detail.Satu dataset bisa memiliki cabang yang lebih kecil dan menyempit.Pencarian tree lebih bagus hasilnya dari pencarian list.Kekuranganya yaitu pencariannya bertingkat sehingga untuk bisa melakukan pencarian harus dari akar, batang, dan ranting sesuai dengan ranking yang dimiliki dataset.

3. Pencarian SQL

Pencarian SQL menggunakana databasestructured query language yang memungkinkan data untuk diambil secara tidak linier. Data langsung bisa diambil dari subset dari keseluruhan dataset yang ada.

4. Pencarian Informed

Algoritma ini bertujuan mencari jawaban yang spesifik dari dataset. Pencarian ini tidak selalu jadi solusi terbaik karena umumnya yang dicari oleh pengunjung search engine adalah jawaban dari pencarian.

5. Pencarian Adversarial

Algoritma yang mencari semua solusi dari masalah. Algoritma ini kurang efektif untuk pencarian web karena jumlah solusinya akan sangat banyak di www sehingga boros sumber daya yang ada.

6. Pencarian Berdasar Batasan

Dengan algoritma ini, search engine akan memasang batasan-batasan dimana hasil yang diambil adalah yang memenuhi batasan-batasan yang ada.


(23)

2.2.Focused Crawler

Pada tahun 1999, Soumen Chakrabarti memperkenalkan focused crawler. Focused crawler berfungsi untuk menelusuri link yang mengarah pada page target dan berusaha semaksimal mungkin menghindari link yang tidak mengarah padapagetarget (Maimunah & Kuspriyanto, 2008). Focused crawler adalah teknik untuk mengunduhurldan konten dari halaman web. Pada penelitian ini url dan konten yang sudah diunduh akan secara otomatis masuk ke dalam database.

Setelah selesai proses crawling,focused crawler juga akan menghitung bobot dan relevansi. Relevansi yang didapat akan menentukan jurnal terkait masing-masing jurnal. Hal tersebut akan menghemat penggunaan waktu dan sumber daya ketika melakukan pencarian jurnal. Apabila dalam suatu halaman web terdapat kata yang sesuai dengan kata kunci, maka halaman dianggap memiliki kecocokan dengan apa yang dicari oleh user (Sulastri & Zuliarso, 2010).

Relevant Page Database Seed URL

URL Queue

Web Page Downloader

Irrelevant Table

Parser & Extractor

Relevance Calculator

Topic Filter

Topic Spesific Weight Table

Irrelevant Relevant

Internet


(24)

Keterangan :

1. SeedURLs dan URL Queue

Seed URLs (bibit URL) akan dimasukkan ke dalam antrian URL yang disebut URLQueue. Dalam antrian (URL Queue) akan dilakukan proses pengurutan berdasakan nilai link tertinggi pada URL yang didapat. URLakan dihapus jika proses crawling selesai. Proses ini berlanjut hingga URL dan URL Queue kosong. 2. Web Page Downloader

Halaman yang ada pada URL Queue akan diunduh olehweb page downloader melalui internet. Halaman tersebut akan disimpan sementara di dalam cache. 3. Parser dan Extractor

Halaman yang tersimpan dalam cache akan mengalami proses penguraian (parser) yaitu penghapusan tag html. Setelah itu dilakukan proses penghilangan imbuhan bentuk kata dasar oleh Porter Stemmer. Kata yang memiliki kata dasar yang sama kan digabungkan.

4. Topic Spesific Weight Table

Topic Spesific Weight Table berfungsi sebagai pembanding untuk mendapatkan relevansi suatu halaman.Rumus menghitung bobot stem untuk mendapatkan Topic Spesific Weight Table yaitu:

w (weight) = Bobot keyword wi= Bobot dari stem

wmax= Nilai tertinggi dari bobot stem

5. Relevance Calculator

Rumus untuk menghitung relevansi suatu halaman, yaitu:

√ √

Keterangan :


(25)

6. Topic Filter

Jika suatu halaman relevant, maka akan dimasukkan ke dalam relevant page database. Jika tidak relevant maka akan masuk ke dalam irrelevant table.

7. Relevant Page Database

Relevant Page Database berisi halaman URL yang relevant. Halaman yang relevant akan dimasukkan ke dalam URLqueue.Bobot atau nilai dari URL yaitu nilai dari relevansi halaman tersebut.

8. Irrelevant Table

Jika suatu halaman tidak relevant, maka akan dimasukkan ke dalam irrelevant table. Halaman yang tidak memiliki relevansi pada irrelevant table tidak akan melakukan proses crawling lagi.

2.3.Algoritma Porter Stemmer

Stemming adalah proses menghapus variasi kata untuk mendapatkan kata dasar yang mengacu pada morfologi kata. Stemming khusus bahasa Inggris ditemukan oleh Martin Porter pada tahun 1980.

Algoritma Porter stemmer adalah proses penghilangan akhiran morphological dan inflexional yang umumnya terdapat dalam bahasa Ingris (Porter, 1980). Algoritma ini mencari kata dasar dari suatu kata yang berimbuhan dengan membuang imbuhan-imbuhan (akhiran) pada kata-kata bahasa Inggris karena bahasa Inggris tidak mengenal awalan.

Kondisi stem (akar kata) pada algoritma Porterstemmer:

1. Ukuran (measure), dinotasikan dengan m, dari sebuah stem berdasarkan pada urutan vokal-konsonan.

m = 0, contoh : TR, EE, TREE, Y, BY

m = 1, contoh : TROUBLE, OATS, TREES, IVY m = 2, contoh : TROUBLES, PRIVATE, OATEN


(26)

2. *<X>berarti stem berakhir dengan huruf X 3. *v*berarti stem mengandung sebuah vokal 4. *d berarti stem diakhiri dengan konsonan double

5. *o berarti stem diakhiri dengan konsonan – vokal – konsonan secara berurutan dimana konsonan akhir bukan w, x, atau y.

Pada sebagian kondisi mungkin juga terdapat ekspresi dengan, and, or and not, seperti:

1. (m>1 and (*S or *T)) Pada bagian m>1 dengan berakhir di s atau t.

2. (*d and not (*L or *S or *Z))stem diakhiri dengan konsonan double, tidak akhiran L atau S atau Z

Aturan-aturan dalam proses stemming pada algoritma Porterstemmer(http://tartarus.org/martin/PorterStemmer/def.txt):

1. Langkah 1

 Langkah 1a: remove plural suffixation, yaitu mengganti atau menghapus akhiran kata berbentuk jamak hingga mendapatkan stem.

Tabel 2.1 Aturan Stemming Step 1a(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

NULL SSES SS caresses caress

NULL IES I ponies poni

ties ti NULL SS SS caress caress

NULL S NULL cats cat

 Langkah 1b: remove verbal inflection. Jika kata mengandung huruf vokalkonsonan berurutan, maka akhiran eed berubah ee. Pada akhiran ed dan -ing, kata tidak akan mengalami perubahan jika kata tersebut hanya memiliki satu huruf vokal, dan jika lebih dari satu huruf vokal, akhiran -ed dan -ing akan dihapus.


(27)

Tabel 2.2 Aturan Stemming Step

1b(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

(m>0) EED EE feed feed

agreed agree

(*v*) ED NULL plastered plaster

bled bled

(*v*) ING NULL motoring motor

singing sing

Continued for ed and ing rules, merupakan tahap selanjutnya pada akhiran -ed dan -ing. Kata yang diakhiri oleh double konsonan (tidak berakhir oleh huruf l, s, z) maka kata tersebut akan diganti dengan satu huruf konsonan saja. Suatu kata akan ditambahkan e, jika kata diakhiri oleh huruf konsonan-vokal-konsonan secara berurutan (konsonan-vokal-konsonan akhir bukan w ,x, y) dan hanya memiliki satu urutan vokal-konsonan didalamnya.

Tabel 2.3 Continued for ed and ing

rules(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

NULL AT ATE conflate(ed) conflate

NULL BL BLE trouble(ed) trouble

NULL IZ IZE size(ed) size

(*d* and not (*L or *S or *Z))

NULL Single letter hopp(ing) hop tann(ed) tan fall(ing) fall hiss(ing) hiss

fizz(ed) fizz (m=1 and *o) NULL E fail(ing) fail


(28)

 Langkah 1c: -y dan -i, jika dalam sebuah kata terdapat huruf vokal, maka akhiran y diganti dengan -i.

Tabel 2.4 Aturan Stemming Step 1c(http://tartarus.org/martin/PorterStemmer/def.txt) Conditions Suffix Replacement Examples

(*v*) Y I happy happi

sky sky

2. Langkah 2: peel one suffix off for multiple suffixes yaitu sebuah kata memiliki sebuah huruf vokal-konsonan secara berurutan.

Tabel 2.5 Aturan Stemming Step 2

(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

(m>0) ATIONAL ATE relational relate (m>0) TIONAL TION conditional condition

rational rational (m>0) ENCI ENCE valenci valence (m>0) ANCI ANCE hesitanci hesitance (m>0) IZER IZE digitizer digitize (m>0) ABLI ABLE conformabli conformable

(m>0) ALLI AL radicalli radical

(m>0) ENTLI ENT differentli different

(m>0) ELI E vileli vile

(m>0) OUSLI OUS analogousli analogous (m>0) IXATION IZE vietnamization vietnamize (m>0) ATION ATE predication predicate

(m>0) ATOR ATE operator operate

(m>0) ALISM AL feudalism feudal

(m>0) IVENESS IVE decisiveness decisive (m>0) FULNESS FUL hopefulness hopeful (m>0) OUSNESS OUS callousness callous (m>0) ALITI AL formaliti formal (m>0) IVITI IVE sensitiviti sensitive (m>0) BILITI BLE sensibiliti sensible

3. Langkah 3:kata yang memiliki akhiran -icate, -icitii atau -ical akan diubah menjadi ic, kata berakhiranative, ful, ness akan dihapus, dan kata berakhiran -alize akan menjadi -al. Dimana, kata tersebut harus memiliki sebuah vokal-konsonan secara berurutan.


(29)

Tabel 2.6 Aturan Stemming Step

3(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

(m>0) ICATE IC triplicate triplic (m>0) ATIVE NULL formative form (m>0) ALIZE AL formalize formal (m>0) ICITI IC electriciti electric (m>0) ICAL IC electrical electric (m>0) FULL NULL hopeful hope

(m>0) NESS NULL goodness good

4. Langkah 4: delete last suffix. Sebuah akhiran akan dihapus jika kata tersebut memiliki dua huruf vokal-konsonan secara berurutan.

Tabel 2.7 Aturan Stemming Step 4

(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

(m>1) AL NULL revival reviv

(m>1) ANCE NULL allowance allow

(m>1) ENCE NULL inference infer

(m>1) ER NULL airliner airlin

(m>1) IC NULL gyroscopic gyroscop

(m>1) ABLE NULL adjustable adjust (m>1) IBLE NULL defensible defens

(m>1) ANT NULL irritant irrit

(m>1) EMENT NULL replacement replac (m>1) MENT NULL adjustment adjust

(m>1) ENT NULL dependent depend

(m>1 and (*S or *T))

ION NULL adoption adopt

(m>1) ISM NULL communism commun

(m>1) OU NULL homologous homolog

Tabel 2.7 Aturan Stemming Step 4 (lanjutan) (http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

(m>1) ATE NULL activate active (m>1) ITI NULL angulariti angular


(30)

(m>1) OUS NULL homologous homolog (m>1) IVE NULL effective effect (m>1) IZE NULL bowdlerize bowdler

5. Langkah 5 :

 Langkah 5a: remove e. Akhiran –eakan dihapus jika kata tersebut memiliki dua vokal-konsonan berurutan (konsonan akhir tidak w, x, y) dan tidak diakhiri konsonan-vokal-konsonan secara berurutan.

Tabel 2.8 Aturan Stemming Step 5a

(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples

(m>1) E NULL probate probat

rate rate (m=1 and not *o) E NULL cease ceas

 Langkah 5b: reduction. Akhiran akan diganti menjadi satu huruf konsonan jika, kata memiliki sebuah vokal-konsonan berurutan dan tidak berakhir dengan double konsonan.

Tabel 2.9 Stemming Step 5b

(http://tartarus.org/martin/PorterStemmer/def.txt)

Conditions Suffix Replacement Examples (m>1 and *d an *L) NULL Single Letter controll control

roll roll

2.4.Bahasa Pemrograman PHP

PHP merupakan software open sourceyang disebarkan dan dilisensikan secara gratis serta dapat diunduhsecara bebas dari system resminya.Penggunaan PHP memungkinakan web dapat dibuat dinamis sehingga maintenance situs web tersebut menjadi lebih mudah dan efisien (Kasiman, 2006).

PHP dapat digunakan pada semua sistem operasi, yaitu Linux, Unix, Microsoft Windows, Mac OS X, RISC OS.PHP juga mendukung banyak Web Server seperti Apache, Microsoft Internet Information Server, Personal Web Server, Netscape and iPlanet servers, Oreilly Website Pro Server, audium, dan lain sebagainya.


(31)

Databaseyang dapat didukung oleh PHP, yaitu MySQL, Adabas D, d Base, Direct MS-SQL, Empress, FilePro, FrontBase, Hyperwave, IBM DB2, Informx dan lain sebagainya.

2.5.DatabaseMySQL

MySQL termasuk dalam kategori database management system, yaitu suatu database yang terstruktur dalam pengolahan dan penampilan datanya.MySQL merupakan database yang bersifat client server.MySQL dapat juga dikatakan sebagai Relational Database Management System (RDBMS), yaitu hubungan antar tabel yang berisi data-data pada suatu data-database sehinga mempercepat pencaria suatu data-data.

Kelebihan database MySQL (Sugiri dan Harris, 2008), yaitu :

1. MySQL merupakan database yang memiliki kecepatan tinggi dalam pemrosesan data, dapat diandalkan, mudah digunakan dan mudah dipelajari.

2. MySQL mendukung banyak bahasa pemrograman seperti C, C++, Perl, Phython, Java dan PHP. Bahasa pemrograman tersebut dapat digunakan untuk berinteraksi maupun berkomunikasi dengan dengan MySQL server.

3. Koneksi, kecepatan, dan keamanannya membuat MySQL sangat cocok diterapkan untuk pengaksesan database melalui internet dengan menggunakan bahasa pemrograman Perl atau PHP sebagai interfacenya.

4. MySQL dapat menangani database dengan skala sangat besar, dengan jumlah record lebih dari 50 juta, 60 ribu tabel, dan bisa menampung 5 milyar basis data. 5. Multiuser, yaitu dalam satu databaseserver pada MySQL dapat diakses oleh

beberapa user dalam waktu yang sama tanpa mengalami konflik atau crash. 6. MySQL merupakan software database yang bersifat free atau gratis.

2.6.Penelitian Terdahulu

Penelitian yang telah dilakukan oleh Maimunah & Kuspriyanto (2008) yaitu Reinforcement Learning dalam Proses Pembelajaran Penentuan Strategi Penelusuran pada Focused Crawler. Penelitian ini mengeksploitasi berbagai strategi dan knowledge base yang ada untuk dapat mengoptimalkan proses penelusuran dan memiliki kemampuan yang lebih bagus dalam mengeksplorasi jalur-jalur menuju page yang relevan.


(32)

Penelitian yang dilakukan oleh Pal Anshika et al. (2009) yaitu Effective Focused Crawler Based on Content and Link Structure Analysis.Hasil dari penelitian ini yaitu pendekatan yang diteliti memiliki kinerja yang lebih baik daripada Breadth-FirstSearch (BFS) crawler.

Focused Crawler Optimization Using Genetic Algorithm oleh Yohannes et al. (2011). Hasil dari penelitian ini menunjukkan bahwa Genetic Algorithm (GA) dalam proses crawling dapat melintasi ruang pencarian web yang lebih komprehensif dibandingkan focused crawler tradisional.

Thenmalar & Geetha (2011) melakukan penelitian mengenai Concept Based Focused Crawling Using Ontology.Pada penelitian ini, algoritma ontology memiliki kemampuan untuk memecahkan masalah utama dari proses crawling dalam menentukan relevant pages. Penggunaan dari gabungan seed concept vector untuk menentukan peringkat masing-masing dokumen.

Implementasi Focused Crawler dengan Menggunakan Content Similarity dan Link Structure Analysis oleh Herdiansyah Rendy (2012). Penelitian yang dilakukan yaitu mengimplementasikan focused crawler dengan menggunakan metode cosine similarity, link score, dantraverse irrelevant page. Hasil dari penelitian ini menunjukkan bahwa focused crawlerakan mendapatkan nilai precision rate yang optimal dengan menggunakan metode traverse irrelevant page dengan kedalaman level 0.

Agusta Ledy (2009) melakukan penelitian mengenai Perbandingan Algoritma Stemming Porter dengan Algoritma Nazief & Andriani untuk Stemming Dokumen Teks Bahasa Indonesia. Pada penelitian ini proses pembandingan algoritma Porterdengan Algoritma Nazief & Adriani dilakukan dengan membuat program sederhana yang memproses dokumen teks inputan sehingga diketahui stem, waktu proses, presisi dari hasil stemming dokumen tersebut. Hasil dari penelitian ini yaitu proses stemming dokumen teks bahasa Indonesia menggunakan Algoritma Porter membutuhkan waktu yang lebih singkat dibandingkan dengan stemming menggunakan Algoritma Nazief & Adriani, Proses stemming dokumen teks bahasa Indonesia menggunakan Algoritma Porter memiliki presentase keakuratan (presisi) lebih kecil dibandingkan dengan stemming menggunakan Algoritma Nazief & Adriani. Proses stemming menggunakan Algoritma Nazief & Adriani, kamus yang


(33)

digunakan sangat mempengaruhi hasil stemming. Semakin lengkap kamus yang digunakan maka semakin akurat pula hasil stemming.

Algoritma Porter Stemmer for bahasa Indonesia untuk Pre-ProcessingText Mining Berbasis Metode Market Basket Analysis oleh Budhi et al. (2006). Hasil dari penelitian ini yaitu algoritma Porter Stemmer for Bahasa Indonesia dapat digunakan pada proses stemmer saat merubah sebuah data teks dalam bahasa Indonesia menjadi bentuk Compact Transaction. Pada penelitian ini, hasil dari proses tidak selalu benar sehingga masih diperlukan pemeriksaan manual.

Tabel 2.10 Penelitian Terdahulu

Nama Penelitian Tahun

Maimunah & Kuspriyanto

Reinforcement Learning dalam Proses

Pembelajaran Penentuan Strategi Penelusuran pada Focused Crawler.

2008

Pal Anshika et al. Effective Focused Crawler Based on Content and Link Structure Analysis.

2009

Yohannes et al. Focused Crawler Optimization Using Genetic Algorithm.

2011

Thenmalar & Geetha

Concept Based Focused Crawling Using Ontology. 2011

HerdiansyahRendy Implementasi Focused Crawler dengan Menggunakan Content Similarity dan Link Structure Analysis.

2012

Agusta Ledy Perbandingan Algoritma Stemming Porter dengan Algoritma Nazief & Andriani untuk Stemming Dokumen Teks Bahasa Indonesia.

2009

Budhi et al Algoritma Porter Stemmer for bahasa Indonesia untuk Pre-ProcessingText Mining Berbasis Metode Market Basket Analysis.


(34)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1.Analisis Data

Dalam penelitian ini, terdapat beberapa jenis data utama yaitu data konten (data jurnal), keyword, dan relevansi.

3.1.1.Data konten (data jurnal)

Data konten (jurnal) yang digunakan diambil dari berbagai situs di internet (media online) yang akan dimasukkan ke dalam database. Jurnal yang diambil merupakan jurnal berbahasa Inggris. Dalam database data konten (data jurnal) terdapat pada tabel_konten. Seperti pada gambar Tabel 3.1.

Tabel 3.1 Tabel_Konten Id_kon

ten

url Judul Konten_html Konten_

teks

Katego ri 1 http://rss.sciencedir

ect.com/action/redi rectFile?&zone=ma in&currentActivity =Feed&usage Type=outward&url =http%3A%2... ..

Comparison of

intratumoral FDG and Cu-ATSM distributions in cancer tissue originated spheroid (CTOS) xenografts, a tumor model retaining the original tumor properties Publication date: <pubDate>Sep tember 2014</pubDat e><br><b>Sou rce... Publicati on date: Septemb er 2014 Source:N uclear Medicine ... Biology and Medica l

2 http://rss.sciencedir ect.com/action/redi rectFile?&zone=ma in&currentActivity =feed&...

Synthesis and evaluation of 2-amino-5-(4- [18F]fluorophenyl)pent-4-ynoic acid ([18F]FPhPA): A novel 18F-labeled amino... Publication date: <pubDate>Sep tember 2014</pubDat e><br>... Publicati on date: Septemb er 2014 Source:N uclear... Biology and Medica l


(35)

Jurnal yang sudah di-crwalingakan dimasukkan otomatis ke dalam databasecrawler yaitu pada tabel_konten yaitu pada Tabel 3.1. Tabel_konten memiliki 6field yaitu id_konten, url, judul, konten_html, konten_teks, dan kategori.

3.1.2.Tabel_keyword

Tabel_keyword memiliki 4 field yaitu id_keyword, id_konten, keyworddan kategori. Field keyword berisi kata dasar dari setiap jurnal yang sudah di-crwaling. Pada field keyword, “a” adalah jumlah keywordyang terdapat pada suatu jurnal. “i” adalah frekuensi term kata dan “s” adalah jumlah huruf dalam satu kata.Seperti pada Tabel 3.2.

Tabel 3.2Tabel_Keyword

Id_key word

Id_konten Keyword kategori

1 1 a:30:{s:14:"adenocarcinoma";i:9;s:4:"cell";i:9;s:3:"scc";i:8;s: 9:"xenograft";i:8;s:6:"region";i:7;s:9:"distribut";i:6;s:3:"cto"; i:5;s:3:"fdg";i:4;s:6:"cuatsm";i:4;s:6:"necrot";i:4;s:6:"origin"; i:3;s:10:"intratumor";i:3;s:4:"high";i:3;s:6:"compar";i:3;s:7:" overlap";i:3;s:7:"accumul";i:3;s:4:"live";i:3;s:5:"deriv";i:2;s: 6:"adduct";i:2;s:5:"colon";i:2;s:6:"cancer";i:2;s:8:"cucuatsm" ;i:2;s:12:"characterist";i:2;s:11:"pimonidazol";i:2;s:5:"tumor" ;i:2;s:5:"occur";i:2;s:5:"studi";i:2;s:6:"observ";i:2;s:4:"lung";i :2;s:8:"dualtrac";i:1;}

Biology and Medical

2 2 a:30:{s:6:"ffphpa";i:12;s:5:"uptak";i:10;s:5:"amino";i:8;s:4:" acid";i:8;s:9:"radiotrac";i:5;s:4:"ffet";i:4;s:4:"imag";i:4;s:5:"s tudi";i:4;s:6:"prepar";i:3;s:6:"cancer";i:3;s:3:"pet";i:3;s:3:"em t";i:3;s:6:"compar";i:3;s:3:"min";i:2;s:10:"crosscoupl";i:2;s:3: "asc";i:2;s:8:"pdmediat";i:2;s:6:"suvmin";i:2;s:7:"maximum" ;i:2;s:9:"transport";i:2;s:5:"reach";i:2;s:4:"cell";i:2;s:5:"evalu ";i:2;s:5:"small";i:2;s:4:"anim";i:2;s:8:"reaction";i:2;s:4:"high ";i:2;s:9:"radiochem";i:2;s:7:"inhibit";i:2;s:8:"cellular";i:2;}

Biology and Medical


(36)

3.1.3.Tabel_relevansi Pada tabel_relevansi terdapat 10 field yaitu id, id_topik, id_page, keyword_topik_ sama, keyword_page_sama, wkt_sama, wkp_sama, wkt, wkp, relevansi. Seperti Tabel 3.3.

Tabel 3.3Tabel_relevansi

Pada Tabel 3.3, akan dibandingkan satu halaman dengan halaman yang lainnya. Halaman yang memiliki kesamaan kata, akan ditentukan wkt (weight keyword topik) dan wkp (weight keyword page). Setelah hasil didapatkan akan ditentukan relevansinya. Sehingga diketahui seberapa besar keterkaitan halaman jurnal satu dengan yang lainnya.

3.2.Analisis Sistem

Pada penelitian ini akan dilakukan analisis sistem yaitu mencakup proses crawling dan metode Porter Stemmer. Proses dalam sistem ini dilakukan oleh admin dan user.

3.2.1.Admin

Tahapan-tahapan yang dilakukan oleh admin yaitu:

1. Memasukkan link ke dalam textbox yang ada pada halaman proses crawling. 2. Dalam proses crawling, url dan konten yang ada akan di download dan akan

masuk otomatis ke dalam tabel_konten

3. Setelah selesai proses crawling, akan dilakukan penghapusan stopword.

id id_

topik id_ page keyword_ topik_sama keyword_

page_ sama wkt_sama wkp_sama wkt wkp relevansi

1 1 2 cell=9

high=3 compar=3 cancer=2 studi=2 cell=2 high=2 compar=3 cancer=3 studi=4 2.1111111 111111 1.1666666 666667 12.2 2222 2222 222 8.66 666 666 666 67 0.023251 74825174 8

2 1 3 high=3

studi=2

high=2 studi=3

0.5555555 5555556

1 12.2

2222 2222 222

12 0.003787

87878787 88


(37)

4. Setelah penghapusan stopword, maka akan dilakukan proses stemming. Pada proses ini semua imbuhan dihapus, dan yang tinggal berupa kata dasar saja. 5. Selanjutnya akan dilakukan penghitungan bobot dan normalisasi. Pada proses ini

akan didapatkan bobot keyword.

6. Kemudian dilakukan perbandingan antara wkt (weight keyword topic) dan wkp (weight keyword page). Setelah dilakukan perbandingan, maka akan dihitung nilai relevansinya. Flowchart dapat dilihat pada Gambar 3.1.

Mulai

Input url rss

Halaman website

Get title, url, and content

Apakah feed tersedia?

Proses Text Preprocessing

Penghapusan Stopwords

Proses Stemming

Ya Tidak

Hitung bobot dan normalisasi (w = wi/wmax) Membandingkan

masing-masing jurnal Hitung Nilai

Relevansi

Selesai Nilai Relevansi


(38)

3.2.1.1. Text preprocessing

Tahapan-tahapan yang dilakukan dalam text preprocessing diantaranya yaitu :

1. Memasukkan link ke dalam halaman proses crawling dan akan dilakukan proses crawling.

2. Kemudian dilakukan penggabungan judul dan konten yang ada pada tabel_konten.

3. Lalu dilakukan pengubahan semua huruf menjadi huruf kecil. 4. Menghapus semua tanda baca.

5. Semua kata yang sudah diproses dapat ditampilkan. Seperti pada Gambar 3.2.

Mulai

Penggabungan judul dan konten

toLowerCase

Data jurnal yang sudah mengalami

proses text preprocessing

Selesai Mengahapus

tanda baca Data Jurnal


(39)

3.2.1.2. Penghapusan

Stopwords(http:/dev.mysql.com/doc/refman/5.1/en/fulltextstopwords.html) Tahapan-tahapan dalam penghilangan stopwords diantaranya yaitu :

1. Yang diproses adalah kata-kata yang telah melewati proses text preprocessing. 2. Kata diubah ke dalam bentuk array.

3. Membandingkan kata yang ada di array dengan kata pada stopwords.

4. Proses penghilangan akan dilakukan jika ditemukan kata yang sama pada array dengan yang ada di stopwords. Sedangkan penghilangan stopwords tidak dilakukan jika tidak terdapat kesamaan kata pada array dan pada stopwords. 5. Proses penghilangan stopwords selesai. Seperti pada Gambar 3.3.

Mulai

Data Jurnal yang telah melewati

proses text processing

Mengubah kata yang ada ke dalam bentuk array

Membandingkan kata yang ada di array dengan

yang ada di stopwords

Sesuai? Tidak

dihapus Hapus

Sisa kata

Selesai

tidak ya


(40)

3.2.1.3. Stemming Porter Stemmer

Pada penelitian ini algoritma yang dipakai yaitu algoritma Porter Stemmer.Adapun langkah-langkah atau aturan yang ada dalam algoritma ini yaitu (http://tartarus.org/martin/PorterStemmer/def.txt) :

1. Kata-kata yang sudah mengalami penghilangan stopwords.

2. Remove plural suffixation yaitu menghapus dan mengganti akhiran kata berbentuk jamak (-sses -> ss, -ies -> i, -ss -> ss, -s -> null) kebentuk tunggal. 3. Remove verbal inflection.

a) Mengubah kata dalam bentuk continues atau participle kebentuk dasarnya. Akhiran –eed akan berubah menjadi ee jika kata mengandung huruf vokal konsonan berurutan. Pada akhiran –ed dan –ing, kata tidak akan mengalami perubahan jika kata tersebut memiliki satu huruf vokal. Akhiran –ed dan –ing akan dihapus jika kata memiliki lebih dari satu huruf vokal.

b) Continued for –ed and –ing rules. Tahap selanjutnya untuk akhiran –ed dan – ing.

 Kata yang diakhiri oleh double letter akan diganti dengan single letter (tidak berakhir dengan huruf l, s, z).

 Jika kata diakhiri oleh huruf konsonan-vokal-konsonan secara berurutan (bukan konsonan akhir w, x, y) dan memiliki satu urutan vokal konsonan didalamnya, maka kata tersebut akan ditambahkan –e.

4. Akhiran -y diganti dengan –i jika dalam kata tersebut memiliki huruf vokal. 5. Peel one suffix off for multiple suffixes. Jika suatu kata memiliki akhiran ganda,

maka kata tersebut akan diubah dengan akhiran tunggal. Pada langkah ini, akan dilakukan penghapusan akhiran jika pada kata tersebut memiliki huruf vokal-konsonan secara berurutan. Contohnya: relational -> relate, conditional -> condition.

6. Kata yang memiliki akhiran –icate, -icitii, -ical akan diubah menjadi –ic. Kata berakhiran –alize akan diganti menjadi –al. Kata berakhiran –active, -ful, -nes akan dihapus. Kata tersebut harus memiliki vokal-konsonan secara berurutan. 7. Delete last suffix. Sebuah akhiran akan dihapus jika kata tersebut memiliki dua

huruf vokal-konsonan secara berurutan. Contohnya: allowance -> allow, adjustment -> adjust.


(41)

8. Remove –e. Jika sebuah kata memiliki dua vokal-konsonan secara berurutan (konsonan akhir bukan w, x, y) dan tidak diakhiri konsonan-vokal-konsonan secara berurutan, maka akhiran –e akan dihapus.

9. Reduction. Akhiran akan diganti menjadi satu huruf konsonan jika kata tersebut memiliki vokal-konsonan secara berurutan. Contohnya: controll -> control. Seperti pada Gambar 3.4.

Mulai

Kata yang akan di stemming

Cek term jamak (“-sses”,

“-ies”, “-ss”, “-s”) Sesuai?

Penghapusan dan mengganti term jamak ke bentuk tunggal ( -sses -> -ss , -ies -> -I, -ss ->

-s, -s -> null)

ya

Cek term dalam bentuk continues atau participle (“-eed”, “-ed”, “-ing”)

tidak

Sesuai?

Penghapusan dan mengganti term ke bentuk

dasar ( -eed -> -ed,

-ed -> null, -i g -> null)

Cek jika ada akhiran

double letter dan

pe a baha -e u tuk

beberapa suffix

tidak

ya

Ganti akhiran double letter

ke single letter dan

ta bahka -e u tuk beberapa suffix ( -at >

-ate, -bl -> -ble, -iz -> -ize) Sesuai?

tidak

P2

ya

Cek jika ada akhira

-y Sesuai? Ga ti akhira -I -y de ga

P1

tidak

ya


(42)

P1 P2

Cek kata jika memiliki akhiran ganda (huruf vokal

konsonan secara berurutan)

Sesuai?

Ganti akhiran ganda ke akhiran tunggal ( -atio al -> -ate ,

-tio al-> -tio ) ya Mengindeks huruf terakhir untuk membuang akhiran spesifik tidak Sesuai? Pemotongan imbuhan ya Mengindeks penultimate letter untuk membuang akhiran spesifik jika

memiliki (m > 1)

tidak

Sesuai? Pemotongan

imbuhan ya

Cek kata jika memiliki huruf

terakhir -e

tidak

Sesuai? Hapus huruf terakhir -e ya

Cek jika ada duplikasi huruf pada

akhir kata

tidak

Sesuai? Hapus satu huruf

terakhir ya

Kata dasar tidak

Selesai


(43)

3.2.1.4. Focused Crawler

Pada penelitian ini, focused crawler berfungsi untuk melakukan proses crawling dari sebuah halaman, menghitung bobot stem dan menghitung relevansi dari masing-masing jurnal.

Jurnal yang sudah di-crawlingakan dimasukkan ke dalam tabel konten agar dapat melewati proses selanjutnya. Setelah proses crawling selesai, maka proses selanjutnya adalah melakukan pembobotan stem seperti pada Tabel 3.2.

Pada Tabel 3.2, semua kata akan melewati proses stemming, dan akan memiliki bobot stem pada setiap kata. Contohnya, pada id_keyword nomor 1, kata „cell‟ memiliki bobot 9. Bobot stem tersebut didapat dari jurnal yang ada pada id_konten dimana kata „cell‟ dapat ditemukan sebanyak 9 kata. Kata yang ada pada keyword, diambil dari kata yang dimana memiliki bobot stem 30 tertinggi. Setelah proses pembobotan stem selesai, maka selanjutnya akan dilakukan proses normalisasi seperti pada Tabel 3.4. Flowchart proses normalisasi dapat dilihat pada Gambar 3.2.

Pada Tabel 3.4, akan dilakukan proses normalisasi untuk menentukan bobot. Bobot dapat dicari dengan rumus yaitu :

Contoh kata „cell‟ dapat dihitung :


(44)

Mulai

Kata dasar (keyword) setelah

melewati proses

Stemming

Hitung frekuensi kata (wi)

Tentukan jumlah nilai kata terbesar

(wmax)

Hitung nilai bobot kata (w=wi/wmax)

Bobot kata (keyword)

Selesai


(45)

Tabel 3.4 Proses Normalisasi

No Id Konten Normalisasi

1 1 Keyword Wi Wmax W = Wi/Wmax

adenocarcinoma cell scc xenograft region distribut cto fdg cuatsm necrot origin intratumor high compar overlap accumul live deriv adduct colon cancer cucuatsm characterist pimonidazol tumor occur studi observ lung dualtrac 9 9 8 8 7 6 5 4 4 4 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 1 0.88888888888889 0.88888888888889 0.77777777777778 0.66666666666667 0.55555555555556 0.44444444444444 0.44444444444444 0.44444444444444 0.33333333333333 0.33333333333333 0.33333333333333 0.33333333333333 0.33333333333333 0.33333333333333 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.22222222222222 0.11111111111111


(46)

Jika bobot keyword dari suatu kata sudah dihitung, maka selanjutnya akan ditentukan nilai relevansinya seperti pada tabel 3.5. Flowchart relevansi dapat dilihat pada Gambar 3.6.

Mulai

Nilai pada proses normalisasi

Membandingkan masing-masing

jurnal

Ambil kata yang sama beserta nilai

bobotnya

Hitung total bobot dari masing-masing jurnal (wkt dan wkp)

Hitung relevansi

Nilai relevansi

Selesai


(47)

Tabel 3.5 Tabel menentukan nilai relevansi

Keyword Topik 1 adenocarcinoma=9 cell=9 scc=8 xenograft=8 region=7 distribut=6 cto=5 fdg=4 cuatsm=4 necrot=4 origin=3 intratumor=3 high=3 compar=3 overlap=3 accumul=3 live=3 deriv=2 adduct=2 colon=2 cancer=2 cucuatsm=2 characterist=2 pimonidazol=2 tumor=2 occur=2 studi=2 observ=2 lung=2 dualtrac=1

Keyword Page2 Ffphpa=12 uptak=10 amino=8 acid=8 radiotrac=5 ffet=4 imag=4 studi=4 prepar=3 cancer=3 pet=3 emt=3 compar=3 min=2 crosscoupl=2 asc=2 pdmediat=2 suvmin=2 maximum=2 transport=2 reach=2 cell=2 evalu=2 small=2 anim=2 reaction=2 high=2 radiochem=2 inhibit=2 cellular=2

Keyword Topik Sama

cell=9 high=3 compar=3 cancer=2 studi=2

Keyword Page Sama

cell=2 high=2 compar=3 cancer=3 studi=4

sama 2.1111111111111

sama 1.1666666666667

12.222222222222

148.84

8.6666666666667

75.099

√ 105.7252

Relevansi 0.023251748251748

Pada Tabel 3.5, akan diketahui nilai relevansi dengan membandingkan masing-masing jurnal. Contohnya jurnal dengan id konten satu (keyword topik 1) dengan id konten dua (keyword page 2). Masing-masing jurnal akan diambil keyword yang sama yaitu:

Keyword topik sama : cell=9 high=3 compar=3 cancer=2 studi=2

Keyword page sama : cell=2 high=2 compar=3 cancer=3 studi=4

Dapat dilihat pada Tabel 3.5 masing-masing jurnal memiliki kata yang sama yaitu „cell‟, „high‟, „compar‟, „cancer‟, dan „studi‟. Setelah mendapatkan keyword


(48)

yang sama, maka akan dihitung bobot keyword topik dan bobot keyword page yang sama.

Bobot maksimal dari keyword topik yaitu 5

= 2.1111111111

Setelah diketahui weight keyword topik sama sebesar 2.1111111111, maka akan dihitung juga weight keyword page sama.

Bobot maksimal dari keyword page yaitu 12

1.16666666666667

Selanjutnya, untuk mendapatkan nilai relevansi, terlebih dahulu akan dihitung total dari weight keyword topik dengan total dari weight keyword page.

Jumlah seluruh bobot term dari keyword topik yaitu:

adenocarcinoma(9) + cell(9) +scc(8) + xenograft(8)+ region(7) + distribut(6) + cto(5) + fdg(4) + cuatsm(4) + necrot(4) + origin(3) + intratumor(3) + hight(3) + compar(3) + overlap(3) + accumul(3) + live(3) + deriv(2) + adduct(2) + colon(2) + cancer(2) + cucuatsm(2) + characterist(2) + pimonidazol(2) + tumor(2)+ occur(2) + studi(2) + observ(2) +lung(2) + dualtrac(1) = 110


(1)

3.

stemming.php

function stemming($page_word, $maks_keyword_return) {

$stop_words = array("a", "able", "about", "above", "abroad", "abst", "accordance", "according", "accordingly", "across", "act", "actually", "added", "adj", "adopted", "affected", "affecting", "affects", "after", "afterwards", "again", "against", "ago", "ah", "ahead", "ain't", "all", "allow", "allows", "almost", "alone", "along", "alongside", "already", "also", "although", "always", "am", "amid", "amidst", "among", "amongst", "amoungst", "amount", "an", "and", "announce", "another", "any", "anybody", "anyhow", "anymore", "anyone", "anything", "anyway", "anyways", "anywhere", "apart",

"apparently", "appear", "appreciate", "appropriate",

"approximately", "are", "aren", "arent", "aren't", "arise", "around", "as", "a's", "aside", "ask", "asking", "associated", "at", "auth", "available", "away", "awfully", "b", "back", "backward", "backwards", "be", "became", "because", "become", "becomes", "becoming", "been", "before", "beforehand", "begin", "beginning", "beginnings", "begins", "behind", "being",

"believe", "below", "beside", "besides", "best", "better", "between", "beyond", "bill", "biol", "both", "bottom", "brief", "briefly", "but", "by", "c", "ca", "call", "came", "can",

"cannot", "cant", "can't", "caption", "cause", "causes", "certain", "certainly", "changes", "clearly", "c'mon", "co", "co.", "com", "come", "comes", "computer", "con", "concerning", "consequently", "consider", "considering", "contain",

"containing", "contains", "corresponding", "could", "couldnt", "couldn't", "course", "cry", "c's", "currently", "d", "dare", "daren't", "date", "de", "definitely", "describe", "described", "despite", "detail", "did", "didn't", "different", "directly", "do", "does", "doesn't", "doing", "done", "don't", "down", "downwards", "due", "during", "e", "each", "ed", "edu",

"effect", "eg", "eight", "eighty", "either", "eleven", "else", "elsewhere", "empty", "end", "ending", "enough", "entirely", "especially", "et", "et-al", "etc", "even", "ever", "evermore", "every", "everybody", "everyone", "everything", "everywhere", "ex", "exactly", "example", "except", "f", "fairly", "far", "farther", "few", "fewer", "ff", "fifteen", "fifth", "fify", "fill", "find", "fire", "first", "five", "fix", "followed", "following", "follows", "for", "forever", "former", "formerly", "forth", "forty", "forward", "found", "four", "from", "front", "full", "further", "furthermore", "g", "gave", "get", "gets", "getting", "give", "given", "gives", "giving", "go", "goes", "going", "gone", "got", "gotten", "greetings", "h", "had", "hadn't", "half", "happens", "hardly", "has", "hasnt", "hasn't", "have", "haven't", "having", "he", "hed", "he'd", "he'll", "hello", "help", "hence", "her", "here", "hereafter", "hereby", "herein", "heres", "here's", "hereupon", "hers", "herse”", "herself", "hes", "he's", "hi", "hid", "him", "himse”", "himself", "his", "hither", "home", "hopefully", "how", "howbeit", "however", "how's", "hundred", "i", "id", "i'd", "ie", "if", "ignored", "i'll", "im", "i'm", "immediate", "immediately", "importance", "important", "in", "inasmuch", "inc", "inc.", "indeed", "index", "indicate", "indicated", "indicates", "information", "inner", "inside", "insofar", "instead", "interest", "into", "invention", "inward", "is", "isn't", "it", "itd", "it'd", "it'll", "its", "it's", "itse”", "itself", "i've", "j", "just", "k", "keep", "keeps", "kept", "keys", "kg", "km", "know", "known", "knows", "l", "largely",


(2)

"last", "lately", "later", "latter", "latterly", "least", "less", "lest", "let", "lets", "let's", "like", "liked", "likely", "likewise", "line", "little", "'ll", "look", "looking", "looks", "low", "lower", "ltd", "m", "made", "mainly", "make", "makes", "many", "may", "maybe", "mayn't", "me", "mean", "means", "meantime", "meanwhile", "merely", "mg", "might", "mightn't", "mill", "million", "mine", "minus",

"miss", "ml", "more", "moreover", "most", "mostly", "move", "mr", "mrs", "much", "mug", "must", "mustn't", "my", "myse”", "myself", "n", "na", "name", "namely", "nay", "nd", "near", "nearly", "necessarily", "necessary", "need", "needn't", "needs", "neither", "never", "neverf", "neverless", "nevertheless", "new", "next", "nine", "ninety", "no", "nobody", "non", "none", "nonetheless", "noone", "no-one", "nor", "normally", "nos", "not", "noted", "nothing",

"notwithstanding", "novel", "now", "nowhere", "o", "obtain", "obtained", "obviously", "of", "off", "often", "oh", "ok", "okay", "old", "omitted", "on", "once", "one", "ones", "one's", "only", "onto", "opposite", "or", "ord", "other", "others", "otherwise", "ought", "oughtn't", "our", "ours", "ours ", "ourselves", "out", "outside", "over", "overall", "owing", "own", "p", "page", "pages", "part", "particular",

"particularly", "past", "per", "perhaps", "placed", "please", "plus", "poorly", "possible", "possibly", "potentially", "pp", "predominantly", "present", "presumably", "previously",

"primarily", "probably", "promptly", "proud", "provided", "provides", "put", "q", "que", "quickly", "quite", "qv", "r", "ran", "rather", "rd", "re", "readily", "really", "reasonably", "recent", "recently", "ref", "refs", "regarding", "regardless", "regards", "related", "relatively", "research", "respectively", "resulted", "resulting", "results", "right", "round", "run", "s", "said", "same", "saw", "say", "saying", "says", "sec", "second", "secondly", "section", "see", "seeing", "seem", "seemed", "seeming", "seems", "seen", "self", "selves",

"sensible", "sent", "serious", "seriously", "seven", "several", "shall", "shan't", "she", "shed", "she'd", "she'll", "shes", "she's", "should", "shouldn't", "show", "showed", "shown", "showns", "shows", "side", "significant", "significantly", "similar", "similarly", "since", "sincere", "six", "sixty", "slightly", "so", "some", "somebody", "someday", "somehow", "someone", "somethan", "something", "sometime", "sometimes", "somewhat", "somewhere", "soon", "sorry", "specifically", "specified", "specify", "specifying", "state", "states", "still", "stop", "strongly", "sub", "substantially", "successfully", "such", "sufficiently", "suggest", "sup", "sure", "system", "t", "take", "taken", "taking", "tell", "ten", "tends", "th", "than", "thank", "thanks", "thanx", "that", "that'll", "thats", "that's", "that've", "the", "their", "theirs", "them", "themselves", "then", "thence", "there", "thereafter", "thereby", "thered", "there'd", "therefore", "therein", "there'll", "thereof", "therere", "there're", "theres", "there's", "thereto", "thereupon", "there've", "these", "they", "theyd", "they'd", "they'll", "theyre", "they're", "they've", "thick", "thin", "thing", "things", "think", "third", "thirty", "this", "thorough",

"thoroughly", "those", "thou", "though", "thoughh", "thousand", "three", "throug", "through", "throughout", "thru", "thus", "til", "till", "tip", "to", "together", "too", "took", "top", "toward", "towards", "tried", "tries", "truly", "try",


(3)

"un", "under", "underneath", "undoing", "unfortunately",

"unless", "unlike", "unlikely", "until", "unto", "up", "upon", "ups", "upwards", "us", "use", "used", "useful", "usefully", "usefulness", "uses", "using", "usually", "v", "value", "various", "'ve", "versus", "very", "via", "viz", "vol", "vols", "vs", "w", "want", "wants", "was", "wasn't", "way", "we", "wed", "we'd", "welcome", "well", "we'll", "went", "were", "we're", "weren't", "we've", "what", "whatever", "what'll", "whats", "what's", "what've", "when", "whence", "whenever", "when's", "where", "whereafter", "whereas", "whereby", "wherein", "wheres", "where's", "whereupon",

"wherever", "whether", "which", "whichever", "while", "whilst", "whim", "whither", "who", "whod", "who'd", "whoever", "whole", "who'll", "whom", "whomever", "whos", "who's", "whose", "why", "why's", "widely", "will", "willing", "wish", "with", "within", "without", "wonder", "won't", "words", "world", "would",

"wouldn't", "www", "x", "y", "yes", "yet", "you", "youd", "you'd", "you'll", "your", "youre", "you're", "yours", "yourself", "yourselves", "you've", "z", "zero"); $words = explode(" ", strtolower($page_word));

$stem_words = array(); foreach ($words as $word) {

$word = strtolower($word); $word = ambil_abjad($word); $word = hapus_2_karakter($word); if (!in_array($word, $stop_words)) {

$stem = PorterStemmer::Stem($word); /* Remove stop words */

$stem = hapus_2_karakter($stem); if (!in_array($stem, $stop_words)) {

if ($stem != "") { $stem_words[] = $stem; }

} } }

$hitung_keyword = array_count_values($stem_words); arsort($hitung_keyword);

$keyword_tertinggi = array_slice($hitung_keyword, 0, $maks_keyword_return);

return $keyword_tertinggi; }

function ambil_abjad($kata) {

return preg_replace('/[^A-Za-z]/', '', $kata); }

function hapus_2_karakter($kata) { if (strlen($kata) > 2) {

return $kata; } else {

return ""; }

}

4.

hitungrelevansi.php

<?php

include 'koneksi.php'; set_time_limit(300); error_reporting(0);


(4)

$query_topik = mysql_query("SELECT * FROM tabel_keyword") or die(mysql_error());

while ($row_topik = mysql_fetch_array($query_topik)) { $id_topik = $row_topik['id_konten'];

$keyword_topiks = unserialize($row_topik['keyword']);

$query_page = mysql_query("SELECT * FROM tabel_keyword WHERE id_konten != $id_topik ORDER BY id_konten ASC") or

die(mysql_error());

while ($row_page = mysql_fetch_array($query_page)) { $id_page = $row_page['id_konten'];

$keyword_pages = unserialize($row_page['keyword']); $wmax_topik = wmaks($keyword_topiks);

$wmax_page = wmaks($keyword_pages); $wkt_sama = 0;

$wkp_sama = 0;

$keyword_topik_sama = ""; $keyword_page_sama = ""; $keyword_topik = ""; $keyword_page = "";

foreach ($keyword_topiks as $key_topik => $jumlah_topik) { foreach ($keyword_pages as $key_page => $jumlah_page) {

if (trim($key_topik) == trim($key_page) &&

trim($key_page) != "" && trim($key_topik) != "") { $wkt_sama = ($jumlah_topik / $wmax_topik) + $wkt_sama; $wkp_sama = ($jumlah_page / $wmax_page) + $wkp_sama;

$keyword_topik_sama = $keyword_topik_sama . " " . $key_topik . "=" . $jumlah_topik;

$keyword_page_sama =$keyword_page_sama . " " . $key_page . "=" . $jumlah_page;

} }

}

//mencari total wkt $wkt = 0;

foreach ($keyword_topiks as $key_topik => $jumlah_topik) { $wkt = $wkt + ($jumlah_topik / $wmax_topik);

//untuk menampilkan keyword topik

$keyword_topik = $key_topik . "=" . $jumlah_topik . " " . $keyword_topik;

}

$wkt_pangkat = pow($wkt, 2); //mencari wkp

$wkp = 0;

foreach ($keyword_pages as $key_page => $jumlah_page) { $wkp = $wkp + ($jumlah_page / $wmax_page);

//untuk menampilkan keyword page

$keyword_page = $key_page . "=" . $jumlah_page . " " . $keyword_page; }

$wkp_pangkat = pow($wkp, 2);

$akar_wkt_pangkat_dan_wkp_pangkat = sqrt($wkt_pangkat * $wkp_pangkat);

//menghindari division by zero

if ($akar_wkt_pangkat_dan_wkp_pangkat != 0) {

$relevansi_topik_page = ($wkt_sama * $wkp_sama) / $akar_wkt_pangkat_dan_wkp_pangkat;

}

//jika nilai relevansinya ada

if (isset($relevansi_topik_page) && $relevansi_topik_page != 0) { if ($wkp_sama == 0 || $wkt_sama == 0) {


(5)

$wkt = 0; $relevansi_topik_page = 0; }

insert_relevansi($id_topik, $id_page, $keyword_topik_sama, $keyword_page_sama, $wkt_sama, $wkp_sama, $wkt, $wkp, $relevansi_topik_page);

} ?>

5.

pencarian.php

<?php

include 'crawler1/PorterStemmer.php'; @$cari = $_GET['cari'];

$array_cari = explode(" ", strtolower($cari)); $q_cari = "";

if (count($array_cari) < 1) {

$q_cari = " judul LIKE '%$array_cari[0]%' OR "." keyword LIKE '%$array_cari[0]%'";

} else {

for ($i = 0; $i < count($array_cari); $i++) {

$q_cari = $q_cari." judul LIKE '%$array_cari[0]%' OR "." konten_teks LIKE '%$array_cari[0]%'";

if($i<count($array_cari)-1){ $q_cari = $q_cari. " OR "; }

} }

@$kategori = $_GET['kategori']; $per_page = 10;

$q = "SELECT count(*) FROM tabel_konten WHERE $q_cari AND kategori='$kategori'";

$page_query = mysql_query($q) or die(mysql_error()); //echo $q;

$pages = ceil(mysql_result($page_query, 0) / $per_page); $page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1; $start = ($page - 1) * $per_page;

//$sql = mysql_query("SELECT id_konten,(SELECT judul FROM

tabel_konten WHERE tabel_konten.id_konten=tabel_keyword.id_konten AND tabel_konten.kategori='$kategori') as judul FROM tabel_keyword WHERE $q_cari LIMIT $start, $per_page") or die(mysql_error());

$sql = mysql_query("SELECT * FROM tabel_konten WHERE $q_cari LIMIT $start, $per_page") or die(mysql_error());

while ($row = mysql_fetch_array($sql)) { $id_konten = $row['id_konten'];

$qs = mysql_query("SELECT * FROM tabel_konten WHERE id_konten=" . $id_konten . " AND

kategori='$kategori'") or die(mysql_error()); if (mysql_num_rows($qs) > 0) {

$judul = ucfirst(strtolower($row['judul'])); $judul = str_replace('<h3>', '<h3><a

href="baca.php?id=' . $id_konten . '">', $judul); $judul = str_replace('</h3>', '</a></h3>', $judul);

echo "<a href='baca.php?id=$id_konten'>" . $judul . "</a/><br/>";

} } ?> <?php


(6)

for ($x = 1; $x <= $pages; $x++) {

echo ($x == $page) ? '<b><a href="?cari=' . $cari . '&kategori=' . $kategori . '&page=' . $x . '">' . $x . '</a></b>' : '<a href="?cari=' . $cari . '&kategori=' . $kategori . '&page=' . $x . '">' . $x . '</a> ';

} } ?>