Focused Crawler Untuk Mengoptimalkan Pencarian Jurnal Menggunakan Metode Porter Stemmer
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¤tActivity =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¤tActivity =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> ';
} } ?>