IMPLEMENTASI METODE BAYES PADA PROSES EMAIL FILTERING
oleh AHMAD FADHIL JATMIKA M0103015
SKRIPSI Ditulis dan diajukan untuk memenuhi sebagian persyaratan Memperoleh Gelar Sarjana Sains Matematika
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET SURAKARTA 2010
13
14
SKRIPSI IMPLEMENTASI METODE BAYES PADA PROSES EMAIL FILTERING yang disampaikan dan disusun oleh AHMAD FADHIL JATMIKA M0103015 Dibimbing oleh Pembimbing I,
Pembimbing II,
Irwan Susanto, DEA NIP. 19710511 199512 1 001
Winita Sulandari, M.Si NIP. 19780814 200501 2 002
telah dipertahankan di depan dewan penguji pada hari selasa, tanggal 25 Januari 2010 dan dinyatakan telah memenuhi syarat. Anggota Tim Penguji
Tanda Tangan
1. Drs. Pangadi, M.Si NIP. 19571012 199103 1 001
1. ..........................................
2. Drs. Sugiyanto, M.Si NIP. 19611224 199203 1 003
2. ..........................................
3. Bowo Winarno, S.Si, M.Kom NIP. 19810430 200812 1 001
3. ..........................................
Disahkan oleh Fakultas Matematika dan Ilmu Pengetahuan Alam
Dekan,
Ketua Jurusan Matematika,
Prof. Drs. Sutarno, M.Sc, Ph.D NIP. 19600809 198612 1 001
Drs. Sutrima, M.Si NIP. 19661007 199302 1 001
15
ABSTRAK
Ahmad Fadhil Jatmika, 2010. IMPLEMENTASI METODE BAYES PADA PROSES EMAIL FILTERING. Fakultas Matematika Dan Ilmu Pengetahuan Alam Universitas Sebelas Maret Surakarta. Spam adalah unsolicited email (email yang tidak diminta) yang berisi promosi produk, pornografi, virus dan content-content yang tidak penting, yang dikirim ke banyak orang. Masalah spam dapat diatasi dengan adanya aplikasi email filtering, yaitu aplikasi yang secara otomatis mendeteksi sebuah email, apakah email tersebut spam atau bukan. Bayesian filtering merupakan metode email filtering terbaru. Metode ini memanfaatkan teorema probabilitas yaitu teorema Bayes, dengan memprediksi probabilitas di masa depan berdasarkan informasi di masa sebelumnya. Tujuan dalam penulisan skripsi ini adalah mengkaji penerapan metode Bayes pada proses email filtering yang mengacu pada pendekatan yang dilakukan oleh Paul Graham (Graham, 2002) dan menganalisis tingkat keakuratan dari Bayesian filtering dalam memfilter email. Hasil pengujian aplikasi terhadap 50 email yang terdiri dari 30 email spam dan 20 legitimate email, didapatkan akurasi tertinggi yang dicapai adalah 94 % dengan mengambil data training yang terdiri dari 500 email spam dan 500 legitimate email. Kata kunci : spam, email filtering, metode Bayes.
16
ABSTRACT
Ahmad Fadhil Jatmika, 2010. IMPLEMENTATION OF BAYESIAN METHOD IN EMAIL FILTERING PROCESS. The Faculty of Mathematics and Natural Sciences, Sebelas Maret University. Spam is unsolicited email (unwanted email) which contains promotional products, pornography, viruses and content-content that is not important that sent to many people. Spam problem can be overcome by email filtering applications, ie applications that automatically detect an email, whether an email is spam or not. Bayesian filtering is the latest method of email filtering. This methods use probability theorem that is Bayesian theorem, to predict the probability in the future based on the information in the past. The purpose of this thesis is to examine the implementation of Bayesian method which refers to the approach taken by Paul Graham (Graham, 2002) and analyze the accuracy of Bayesian filtering in the process of email filtering. From the results of application testing against 50 email consisting of 30 spam email and 20 legitimate email, obtained the highest accuracy achieved is 94% by taking the training data that consist of 500 spam email and 500 legitimate email. Key word : spam, email filtering, Bayesian method.
17
MOTTO
Hanya mereka yang berani gagal dapat meraih keberhasilan (Robert F. Kenedy) Selesaikan apa yang telah kamu mulai (Penulis) Sesungguhnya Allah beserta orang-orang yang sabar (QS. Al-Anfaal, 46)
18
PERSEMBAHAN
Kupersembahkan karya sederhana ini untuk : ·
Bapak dan ibu yang sudah begitu banyak melimpahkan kasih sayang, do’a, pengorbanan serta motivasi dan dorongan kepada penulis pengorbanan yang tidak akan pernah terbayar sampai kapan pun. ·
Kakak-kakak dan teman-teman yang selalu setia memberi motivasi.
19
KATA PENGANTAR
Segala puji bagi Allah Ta’ala. Penulis memuji, memohon pertolongan dan ampunan-Nya, serta penulis berlindung kepada Allah Ta’ala dari kejahatan diri dan keburukan amal. Rasa syukur Penulis kepada Allah Ta’ala yang telah memberikan kesempatan kepada Penulis untuk bisa menyelesaikan skripsi ini. Maksud dari penulisan dan pengajuan skripsi ini adalah dalam rangka memenuhi sebagian persyaratan memperoleh gelar Sarjana Sains Matematika. Penulis sadar akan keterbatasan yang dimiliki dalam penulisan skripsi ini, terutama keterbatasan kemampuan dan pengetahuan, sehingga hasil skripsi ini masih jauh dari sempurna. Penulis mengucapkan terima kasih kepada pribadipribadi berikut yang telah membantu dalam proses penyelesaian skripsi ini. 1. Bapak Irwan Susanto, DEA selaku dosen pembimbing I dan Ibu Winita Sulandari, M.Si selaku dosen pembimbing II , yang telah dengan sabar membimbing dan memberi motivasi kepada penulis dalam penulisan skripsi ini. 2. Bapak Drs. Santoso Budi W, M.Si selaku pembimbing akademik. 3. Teman-teman Gundhu Community yang selalu mengingatkan dan memberi motivasi kepada penulis. 4. Semua pihak yang telah membantu kelancaran penyusunan skripsi Penulis menyerahkan semuanya hanya kepada Allah Ta’ala dan Penulis berharap skripsi ini dapat bermanfaat bagi semua pihak yang berkepentingan.
Surakarta, 11 Januari 2009
Penulis
20
DAFTAR ISI
JUDUL ………………………………………………………………………..
i
PENGESAHAN ………………………………………………………………
ii
ABSTRAK ……………………………………………………………………
iii
ABSTRACT ………………………………………………………………….. iv MOTTO ………………………………………………………………………
v
PERSEMBAHAN ……………………………………………………………
vi
KATA PENGANTAR ………………………………………………………..
vii
DAFTAR ISI …………………………………………………………………. viii DAFTAR TABEL ……………………………………………………………. x DAFTAR GAMBAR …………………………………………………………
xi
DAFTAR LAMPIRAN ………………………………………………………
xii
BAB I PENDAHULUAN …………………………………………………...
1
1.1. Latar Belakang Masalah …………………………………………….
1
1.2. Perumusan Masalah …………………………………………………
2
1.3. Batasan Masalah …………………………………………………….
2
1.4. Tujuan Penulisan ……………………………………………………. 3 1.5. Manfaat Penulisan …………………………………………………... 3 BAB II LANDASAN TEORI ……………………………………………….
4
2.1. Tinjauan Pustaka ……………………………………………………. 4 2.1.1. Surat Elektronik (e-mail) ……………………………………
4
2.1.2. Spam ………………………………………………………… 4 2.1.3. Email Filtering……………………………………………….
5
2.1.4. Klasifikasi (Classification)…………………………………..
6
2.1.5. Bayesian (Statistical) Filtering ……………………………..
7
2.1.6. Perhitungan Probabilitas Berdasarkan Bayesian Filtering ….
8
2.2. Kerangka Pemikiran ………………………………………………… 10 BAB III METODE PENELITIAN ………………………………………….
11
21
BAB IV PEMBAHASAN ……………………………………………………. 13 4.1 Pembuatan Database Email ………………………………………...
13
4.2 Perancangan Bayesian Filtering Dengan Netbeans IDE …………...
13
4.2.1 Proses Tokenizing …………………………………………… 14 4.2.2 Proses Pemberian Nilai Pada Token (Scoring)………………
15
4.2.3 Proses Combining …………………………………………...
17
4.3 Aplikasi Bayesian Filtering ………………………………………...
18
4.4 Uji Coba Aplikasi Bayesian Filtering ……………………………… 29 BAB V PENUTUP …………………………………………………………..
31
5.1. Kesimpulan …………………………………………………………
31
5.2. Saran ………………………………………………………………..
31
DAFTAR PUSTAKA ………………………………………………………..
32
LAMPIRAN ………………………………………………………………….
33
22
BAB I PENDAHULUAN
1.1
Latar Belakang Masalah
Penggunaan internet telah menjadi kebutuhan yang penting dalam kehidupan berkomunikasi. Dari sekian banyak fasilitas di internet, salah satunya adalah surat elektronik atau yang lebih dikenal sebagai email. Electronic mail (email) merupakan media komunikasi di internet seperti untuk berdiskusi (maillist), transfer informasi berupa file (mail attachment) bahkan dapat digunakan untuk media iklan suatu perusahaan. Mengingat fasilitas email yang murah dan kemudahan untuk mengirimkan ke berapapun jumlah penerimanya maka beberapa pihak tertentu memanfaatkannya dengan mengirimkan email berisi promosi produk atau jasa, pornografi, virus, dan content-content yang tidak penting ke ribuan pengguna email. Email-email inilah yang biasanya disebut dengan spam. Dewasa ini, spam telah menjadi masalah besar di internet. Dalam jumlah sedikit, spam sebenarnya bukan masalah yang terlalu serius bagi pengguna email. Tetapi sebaliknya, spam tersebut akan menjadi masalah yang merepotkan bagi pengguna email apabila masuk ke inbox dalam jumlah yang banyak dan setiap hari. Hal ini akan mengakibatkan banyaknya waktu yang terbuang hanya untuk menghapus sekian banyak spam tersebut secara manual. Masalah tersebut dapat diatasi dengan adanya aplikasi email filtering. Tetapi meskipun berbagai perangkat lunak email filtering banyak tersedia, masalah spam juga semakin berkembang, sehingga melahirkan beberapa metode email filtering. Salah satu metode email filtering yang paling populer yaitu metode Bayes (Bayesian filtering). Metode ini memanfaatkan teorema probabilitas yaitu teorema Bayes, dengan memprediksi probabilitas di masa depan berdasarkan informasi di masa sebelumnya. Metode email filtering dengan metode Bayes ini pertama kali diajukan oleh M. Sahami, dkk pada 1998 (Sahami, 1998). Namun metode ini baru mendapat perhatian pada 2002 ketika diulas oleh Paul Graham dalam sebuah
23
paper tentang email filtering (Graham, 2002). Selanjutnya, Bayesian filtering mulai populer sebagai sebuah metode untuk membedakan spam dengan legitimate email. Bayesian filtering ini mengenali spam berdasarkan kata-kata (token) yang terkandung pada sebuah email. Metode ini pertama kali perlu dilatih menggunakan dua koleksi email, satu koleksi merupakan spam, dan koleksi yang lain merupakan legitimate email. Dengan cara seperti ini, pada setiap email baru yang diterima, Bayesian filtering dapat memperkirakan probabilitas spam berdasarkan kata-kata yang sering muncul pada koleksi spam atau pada koleksi legitimate email. Bayesian filtering efektif untuk memblok spam karena metode ini dapat secara otomatis mengkategorikan spam atau legitimate email. Pada skripsi ini, penulis mencoba mengkaji penerapan metode Bayes pada proses email filtering dan kemudian menganalisis tingkat akurasi dari Bayesian filtering tersebut.
1.2
Perumusan Masalah
Berdasarkan latar belakang masalah, dibuat perumusan masalah yaitu, bagaimana cara kerja dan tingkat keakuratan Bayesian filtering dalam memfilter email, jika jumlah data training untuk melatih metode tersebut dibuat berbeda.
1.3
Batasan Masalah
Batasan masalah yang digunakan dalam penulisan skripsi ini adalah. 1. Proses email filtering pada skripsi ini mengacu pada pendekatan yang dilakukan oleh Paul Graham. 2. Bayesian filtering pada skripsi ini dibangun menggunakan bahasa pemrograman Java dengan bantuan Netbeans 6. 3. Aplikasi yang dibangun hanya bersifat simulasi (tanpa email client) yang menjelaskan tentang proses email filtering dengan menggunakan metode Bayes. 4. Email yang akan digunakan dibatasi pada email yang berupa teks saja dan berbahasa inggris, sesuai dengan ketersediaan data.
24
1.4
Tujuan Penelitian
Tujuan dari penulisan skripsi ini adalah. 1. Untuk mengetahui cara kerja email filtering dengan metode Bayes. 2. Menganalisis tingkat keakuratan dari Bayesian filtering dalam memfilter email, jika jumlah data training untuk melatih metode tersebut dibuat berbeda.
1.5
Manfaat Penelitian
Manfaat penelitian dari skripsi ini adalah. 1. Dapat mengetahui kelebihan dan kekurangan dari metode Bayes dalam memfilter email dan dapat mengetahui cara kerja dan kinerja dari Bayesian filtering. 2. Dapat menambah wawasan bagi pembaca khususnya software developer sehingga dalam pengembangannya dapat dibangun aplikasi yang lebih efektif dalam memerangi spam.
25
BAB II LANDASAN TEORI
2.1
Tinjauan Pustaka
2.1.1 Surat Elektronik (e-mail) Surat elektronik (disingkat ratel atau surel atau surat-e) atau pos elektronik (disingkat pos-el) atau nama umumnya dalam bahasa Inggris adalah "e-mail atau email" (ejaan Indonesia: imel) adalah sarana kirim mengirim surat melalui jalur Internet. Email merupakan salah satu layanan internet yang paling banyak digunakan serta media komunikasi yang murah, cepat dan mudah penggunaannya.
2.1.2
Spam
Spam atau junk mail adalah penyalahgunaan dalam pengiriman berita elektronik untuk menampilkan berita iklan dan keperluan lainnya yang mengakibatkan ketidaknyamanan bagi para pengguna web. Menurut Rahardjo (2006), spam adalah unsolicited email (email yang tidak diminta) yang dikirim ke banyak orang. Berikut ini definisi dari spam menurut Lambert (2003). 1. Isi atau konten dari email tidak relevan dengan minat penerima. 2. Penerima tidak dapat menolak datangnya email yang tidak diminta tersebut dengan cara-cara lazim. 3. Dari sisi penerima, pengiriman dan penerimaan pesan tersebut memberikan keuntungan bagi pengirimnya. Bentuk berita spam yang umum dikenal meliputi: spam pos-el, spam pesan instan, spam usenet news-group, spam mesin pencari informasi web (web search engine spam), spam blog, spam berita pada telepon genggam, spam forum internet, dan lain lain. Spam ini biasanya datang bertubi-tubi tanpa diminta dan sering kali tidak dikehendaki oleh penerimanya. Menurut Rahardjo (2006), spam terjadi akibat murahnya biaya untuk mengirimkan spam. Biaya untuk mengirimkan satu email sama dengan seribu email, atau bahkan satu juta email.
26
Spam dapat dikategorikan sebagai berikut. 1. Junk mail yaitu email yang dikirimkan secara besar-besaran dari suatu perusahaan bisnis, yang sebenarnya tidak kita inginkan. 2. Non-commercial spam, misalnya surat berantai atau cerita humor yang dikirimkan secara masal tanpa tujuan komersial tertentu. 3. Pornographic spam yaitu email yang dikirimkan secara masal untuk mengirimkan gambar-gambar pornografi. 4. Virus spam yaitu email yang dikirimkan secara massal, dan mengandung virus atau Trojans.
2.1.3
Email Filtering
Email filtering adalah suatu proses yang otomatis akan mendeteksi sebuah email, apakah email tersebut sebuah spam atau bukan (legitimate email). Beberapa metode yang dapat digunakan untuk email filtering antara lain Keyword filtering, Black listing dan White listing, Signature-Based filtering, Naive Bayesian (statistical) filtering. Beberapa karakteristik email filtering yaitu. 1. Binary class email filtering hanya mengklasifikasikan email ke dalam kelas spam dan legitimate email. 2. Prediksi email filtering mampu melakukan prediksi kelas dari suatu email. 3. Komputasi mudah mengingat sifat data email yang memiliki dimensi tinggi maka dibutuhkan sebuah email filter yang mampu melakukan komputasi dengan mudah. 4. Learning mampu melakukan learning dari email-email yang sudah ada sebelumnya. 5. Kinerja yang bagus memiliki akurasi yang tinggi, meminimalkan nilai false positive dan mentolerir nilai false negative yang cukup tinggi.
27
2.1.4
Klasifikasi (classification)
Klasifikasi adalah proses pencarian sekumpulan model atau fungsi yang menggambarkan dan membedakan kelas data dengan tujuan agar model tersebut dapat digunakan untuk memprediksi kelas dari suatu obyek yang belum diketahui kelasnya. Klasifikasi memiliki dua proses yaitu membangun model klasifikasi dari sekumpulan kelas data yang sudah didefinisikan sebelumnya (training data) dan menggunakan model tersebut untuk klasifikasi data uji serta mengukur akurasi dari model. Model klasifikasi dapat disajikan dalam berbagai macam model klasifikasi
seperti
decision
trees,
bayesian
classification,
k-nearest-
neighbourhood classifier, neural network, classification (IF-THEN) rule, dll. Klasifikasi dapat dimanfaatkan dalam berbagai aplikasi seperti diagnosa medis, selective marketing, pengajuan kredit perbankan dan email. Menurut Zdziarski (2005), klasifikasi teks adalah sebuah proses pengidentifikasian kategori dari sebuah teks yang dimasukkan. Klasifikasi teks mempunyai dua unsur penting yaitu pembelajaran dan pengambilan keputusan. Klasifikasi terdiri dari tiga komponen penting, yaitu sebagai berikut. 1. Data training merupakan database yang berisi email yang digunakan sebagai proses pembelajaran dari filter. 2. Tokenizer tokenizer bertanggung jawab pada terjadinya proses tokenizing yaitu proses pembacaan email dan memecah-mecahnya menjadi beberapa elemen yang lebih kecil (token). 3. Analysis engine analysis engine bertanggung jawab pada terjadinya proses analisis terhadap token yang telah dihasilkan pada proses tokenizing, selanjutnya akan diambil keputusan apakah email tersebut spam atau bukan.
28
2.1.5
Bayesian (Statistical) Filtering
Bayesian filtering merupakan metode filter anti spam yang terbaru. Metode memanfaatkan teori probabilitas yang dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi probabilitas di masa depan berdasarkan pengalaman di masa sebelumnya. Bayesian filtering mendeteksi spam dengan cara menghitung probabilitas dari suatu pesan (email) berdasarkan isinya. Probabilitas ini dapat dihitung dengan terlebih dahulu membuat suatu database spam dan database non spam. Kemudian dengan proses training, Bayesian filtering dapat dilatih untuk melihat kata-kata yang sering digunakan pada spam, sehingga pada akhirnya dihasilkan filter anti spam yang akurat dengan sesedikit mungkin false positives. False positives adalah email legal yang ditujukan kepada penerima, tetapi karena kesalahan dari filter anti spam, dikategorikan menjadi spam. Pada dasarnya, metode Bayesian filtering merupakan merupakan pengembangan dari metode penilaian pesan (scoring content-based filter, hampir sama dengan keywords filtering) yaitu filter mencari karakteristik kata-kata yang banyak digunakan pada spam, kata-kata ini diberi nilai individual, dan nilai spam secara keseluruhan dihitung dari nilai individual tersebut (Satterfield, 2005). Tetapi metode ini memiliki kelemahan yaitu karakteristik kata-kata pada spam dan legitimate email akan berbeda-beda untuk setiap individu. Kata “business” misalnya yang untuk sebagian orang akan termasuk pada karakteristik kata-kata pada spam, tetapi untuk perusahaan tertentu yang bergerak di bidang itu, kata “business” tersebut akan termasuk pada legitimate email. Dapat dikatakan bahwa algoritma scoring content-based filter ini tidak kompatibel. Lain halnya dengan scoring content-based filter, Bayesian filtering akan membuat daftar karakteristik kata-kata spam dan legitimate email secara otomatis. Tentunya terlebih dahulu, kita harus mengklasifikasikan email-email mana saja yang termasuk spam dan mana yang termasuk legitimate email. Bayesian filtering akan menghitung probabilitas dari kata-kata yang umum digunakan pada spam berdasarkan klasifikasi ini. Karakteristik dari spam yang dapat diidentifikasi
29
antara lain berdasarkan kata-kata pada body message, header message, dan juga kode HTML (seperti pemberian background warna).
2.1.6
Perhitungan Probabilitas Berdasarkan Bayesian Filtering
Pada awalnya, Bayesian filtering ini harus di-training terlebih dahulu menggunakan sejumlah spam dan sejumlah legitimate email. Bayesian filtering akan menghitung probabilitas dari suatu token, misalnya kata “adult”, untuk muncul di kelompok spam. Probabilitas ini dapat dirumuskan sebagai berikut
dimana
Pr莠 |
Pr莠 |
Pr莠 | · Pr莠
· Pr莠 Pr莠 |
莠1
· Pr莠
Pr莠 |
adalah probabilitas suatu email adalah spam dengan diketahui terdapat
Pr莠 |
adalah probabilitas munculnya kata misal “w” dalam email spam,
suatu kata misal “w”, Pr莠 | Pr莠
Pr 莠
adalah probabilitas munculnya kata misal “w” dalam legitimate email,
adalah probabilitas suatu email adalah spam, adalah probabilitas suatu email adalah legitimate email, Data statistik terbaru menunjukkan bahwa probabilitas suatu email
merupakan spam adalah 80%, sehingga Pr莠
0.8 dan Pr莠
0.2. Bayesian
filtering dalam penulisan ini menggunakan asumsi bahwa peluang suatu email
yang masuk untuk dikategorikan sebagai spam adalah sama dengan peluang email tersebut dikategorikan sebagai legitimate email yaitu 0.5 (Wikipedia, 2009), maka persamaan (1) diatas dapat disederhanakan menjadi Pr莠 |
Pr莠 | Pr莠 | Pr莠 |
莠2
Rumus (2) oleh Graham (2002) dimodifikasi dengan menggandakan probabilitas kata yang muncul dalam legitimate email. Tujuan dari penggandaan probabilitas kata yang muncul dalam legitimate email ini adalah untuk mengurangi false positive. Sehingga rumus (2) diatas menjadi Pr莠 |
Pr莠 | Pr莠 | 2 · Pr莠 |
莠3
30
Bayesian filtering menggunakan asumsi bahwa masing-masing kata dalam email adalah independen satu sama lain (Wikipedia, 2009). Probabilitas dari masing-masing kata tersebut kemudian menggunakan aturan rantai (chain rule) Bayes untuk menentukan probabilitas dari suatu email adalah spam berdasarkan kata-kata (token) yang terkandung didalamnya. Bayesian chain rule dirumuskan sebagai berikut 章
dimana,
莠1
章
莠4
章 莠1
a adalah probabilitas suatu email dikategorikan sebagai spam dengan adanya token misal “w1”, b adalah probabilitas suatu email dikategorikan sebagai spam dengan adanya token misal “w2”. Pada pendekatan yang dilakukan oleh Graham (2002), diambil 15 kata (token) yang mempunyai nilai probabilitas spam tertinggi. Sehingga rumus (4) diatas dapat dituliskan menjadi
dimana
1 · 2 · 3 · … · 15
1 · 2 · 3 · … · 15 莠1 1 · 莠1 2 · 莠1
adalah probabilitas bahwa email yang masuk adalah spam,
3 · … · 莠1
15
1 adalah probabilitas suatu email adalah spam dengan diketahui terdapat suatu
kata “w1” didalamnya,
2 adalah probabilitas suatu email adalah spam dengan diketahui terdapat suatu
kata “w2” didalamnya,
dan seterusnya, sampai dengan 15. Hasil perhitungan
akan dibandingkan dengan suatu nilai threshold
tertentu yaitu 0.9 (Graham, 2002), jika
kurang dari atau sama dengan threshold
maka email tersebut akan dianggap legitimate email. Sebaliknya jika dari threshold maka email akan dianggap sebagai spam.
lebih besar
31
2.2
Kerangka Pemikiran
Berdasarkan pendahuluan dan mengacu pada tinjauan pustaka, dapat disusun suatu kerangka pemikiran sebagai tuntunan dalam penulisan skripsi ini. Spam telah menjadi masalah yang serius dalam era internet saat ini. Solusi untuk melawan spam yaitu dengan menggunakan email filtering. Metode email filtering paling efektif saat ini adalah dengan Bayesian filtering, yaitu menggunakan pendekatan statistik dalam hal ini yaitu probabilitas, dengan memanfaatkan teorema Bayes. Bayesian filtering ini membutuhkan tahapan awal (learning) untuk dapat mengambil keputusan (decision making). Dengan tahapan awal yang berbeda, akan dibandingkan tingkat akurasi dari Bayesian filtering dalam memfilter email.
32
BAB III METODE PENELITIAN
Penulisan skripsi ini menggunakan metode studi literatur, yaitu metode penulisan dengan semua bahan diambil dari buku referensi, jurnal, dan artikel. Definisi dan teorema yang terdapat di dalam jurnal dan buku referensi digunakan dalam pembahasan. Semua email yang digunakan dalam penulisan skripsi ini didapat dari TREC 2007 Spam Track Public Corpora. Langkah-langkah yang dilakukan untuk mencapai tujuan skripsi ini adalah sebagai berikut. 1. Melakukan studi literatur tentang email, terutama spam dan metode yang digunakan untuk mengatasi spam, terutama metode Bayesian. 2. Mempelajari tentang cara kerja metode Bayesian yang digunakan untuk proses klasifikasi email. 3. Mengumpulkan data-data yaitu berupa email, yang akan digunakan sebagai training database dan sebagai email yang akan diujikan. 4. Untuk email yang akan digunakan sebagai training database, terlebih dahulu harus diklasifikasikan menjadi 2 kategori, yaitu spam dan legitimate email. 5. Pembuatan program dengan menggunakan bahasa pemrograman Java untuk menggambarkan proses filtering dengan metode Bayesian. 6. Dilakukan ujicoba dan analisis program yang telah dibuat disertai dengan pengambilan kesimpulan. Dalam proses pembuatan aplikasi Bayesian filtering ini, penulis menggunakan perangkat keras dan perangkat lunak berikut ini : 1. Perangkat keras perangkat keras yang penulis gunakan berupa seperangkat komputer personal (PC) yang memiliki spesifikasi seperti pada Tabel 3.1.
33
Tabel 3.1. spesifikasi perangkat keras Jenis perangkat
Spesifikasi
Prosesor
Intel Pentium 4 CPU 3.40GHz
Memori
1 Gb RAM
Harddisk
Seagate Barracuda 40Gb
Kartu vga
Nvidia gforce 7100 GS
Monitor
Samsung SyncMaster 551v
2. Perangkat lunak perangkat lunak yang penulis gunakan diberikan pada Tabel 4.2. Tabel 3.2. spesifikasi perangkat lunak Jenis perangkat
Spesifikasi
System operasi
Windows XP Professional Edition Service Pack 3
Teks editor
TextPad
Java GUI builder
NetBeans IDE 6.1
34
BAB IV PEMBAHASAN
Pada bab ini akan dijelaskan tahap-tahap pembuatan aplikasi Bayesian filtering yang terdiri dari. 1. Pembuatan database email yang terdiri dari data training dan data testing. 2. Perancangan Bayesian filtering dengan netbeans IDE. dan selanjutnya akan dilakukan pengujian dari aplikasi Bayesian filtering yang telah dibuat.
4.1. Pembuatan Database Email Untuk pembuatan database email ini, penulis menggunakan kumpulan email (corpus) dari TREC 2007 Spam Track Public Corpora. Dalam email corpus ini terdapat 37.822 email yang terdiri dari 12.910 email yang merupakan legitimate email dan 24.912 email yang merupakan spam, tetapi tidak digunakan semua dikhawatirkan akan memboroskan memori pada saat digunakan dalam aplikasi. Dari email corpus ini, kemudian akan dipisahkan menjadi dua, yaitu corpus untuk data training dan corpus untuk data testing. Pada training corpus terlebih akan dipisahkan menjadi dua corpus, yaitu spam dan legitimate email. Langkah selanjutnya adalah membuat file teks untuk masing-masing corpus dengan TextPad, yaitu spam.txt dan ham.txt, yang selanjutnya file ini akan digunakan pada proses training dari aplikasi Bayesian filtering.
4.2. Perancangan Bayesian Filtering Dengan Netbeans IDE Sebelum masuk pada tahap pembuatan form aplikasi Bayesian filtering, terlebih dulu akan dijelaskan secara singkat mengenai proses-proses yang ada pada aplikasi Bayesian filtering, proses-proses tersebut adalah sebagai berikut. 1. Proses tokenizing. 2. Proses pemberian nilai pada token. 3. Proses combining.
35
Diagram alir sistem secara keseluruhan dapat dilihat pada Gambar 4.1 sebagai berikut START
input training corpus
PROSES TRAINING
tokenizing
scoring
input testing email
tokenizing
combining
ya 章
tidak
0.9
email adalah spam
email adalah legitimate email
END Gambar 4.1. Diagram alir sistem 4.2.1. Proses Tokenizing Pada proses tokenizing, training email dan testing email akan dibaca dan dipecah-pecah menjadi beberapa komponen yang lebih kecil (token). Proses tokenizing akan membaca seluruh teks pada email, termasuk header message, body message, kode-kode html dan javascript (Graham, 2002).
36
Berikut akan diberikan contoh bagaimana proses tokenizing pada suatu email. Seperti contoh email dibawah ini From: "Julie Ellison"
Subject: Dont Pay For Name Brand Drugs Date: Sun, 11 Apr 2045 10:21:05 +0600 CANADIAN GENERICS NOW HAS VALIUM Order Some HERE
akan dihasilkan beberapa token sebagai berikut from julie ellison gcgbswamlgqy sbcglobal net subject dont pay for name brand drugs date sun 11 apr 2045 10 21 05 0600 canadian generics now has valium order some here
semua token yang dihasilkan akan ditempatkan dalam Tabel hash. Tabel ini memetakan token dengan jumlah kemunculan dari token. 4.2.2. Proses Pemberian Nilai Pada Token (Scoring) Setelah email yang diterima dipisahkan menjadi beberapa token, maka setiap token akan diberi nilai atau disebut juga dengan metode scoring. Metode ini memberikan nilai (score) pada setiap token yang telah diproses dengan metode tokenizing. Langkah-langkah pada proses scoring adalah sebagai berikut. 1. Untuk tiap-tiap token yang dihasilkan, akan dilihat dalam tabel hash untuk mengetahui jumlah kemunculan dari token. 2. Dihitung nilai probabilitas token dengan rumus (3). 3. Jika perhitungan nilai probabilitas token menghasilkan nilai lebih besar dari 0.99, maka probabilitas token diset menjadi 0.99. 4. Jika perhitungan nilai probabilitas token menghasilkan nilai lebih kecil dari 0.01, maka probabilitas token diset menjadi 0.01. 5. Untuk token yang tidak terdapat dalam tabel atau belum pernah muncul sebelumnya, nilai probabilitas token diset menjadi 0.4. Diagram alir untuk proses scoring dapat dilihat seperti pada Gambar 4.2 berikut ini Scoring
Token ada dalam tabel
tidak
ya
Pr莠 |
Pr莠 | Pr莠 | 2 · Pr莠 |
return Gambar 4.2. Diagram alir proses scoring.
i
nilai token di-set menjadi 0.4
ii
Sebagai contoh, misalkan token “the” muncul 96 kali pada spam corpus dan muncul 48 kali pada legitimate corpus. Dengan jumlah total token, 224 pada email spam dan 112 pada legitimate email, akan didapatkan nilai probabilitas spam dari token “the” tersebut sebagai berikut P莠 |
P莠 |
96
莠 | 2 · P莠 |
96
224
0.3333
224 2 · 48 112
Hasil dari perhitungan ini adalah nilai probabilitas antara 0.0 dan 1.0, dengan 0.5 adalah nilai netral. Nilai netral disini berarti bahwa token tersebut tidak akan dipakai oleh filter untuk proses combining, karena bukan merupakan interesting token. Interesting token adalah token yang mempunyai suatu nilai yang dianggap dapat mempengaruhi filter dalam proses pengambilan keputusan apakah email yang diujikan merupakan spam atau tidak. Semakin dekat nilai probabilitas suatu token dengan 1.0, semakin tinggi tingkat spam token tersebut. Setelah proses tokenizing dan pemberian nilai token, selanjutnya dapat dibuat suatu database token, dimana dalam aplikasi Bayesian filtering ini berupa dua buah tabel hash masing-masing untuk spam corpus dan legitimate corpus. Tabel hash ini memetakan token ke dalam nilai probabilitasnya (Graham, 2002). 4.2.3. Proses Combining Proses combining terjadi pada saat filter melakukan analisis terhadap email yang diuji (testing email) untuk menentukan apakah email, yang diuji merupakan spam atau legitimate email. Proses ini mengambil 15 token yang memiliki nilai terjauh dari nilai netral (0.5). Langkah-langkah yang dilakukan oleh filter adalah sebagai berikut. 1. Dihitung nilai interesting berdasarkan seberapa besar nilai probabilitas token dari nilai netral (0.5), dengan rumus sebagai berikut
ii
|0.5
|.
iii
2. Nilai tersebut kemudian diurutkan secara descending dan diambil 15 token teratas. 3. Dari 15 interesting token akan dihitung total probabilitas dengan rumus
4. Jika nilai
·
·
莠1
·…·
·
· ·…· · 莠1
· 莠1
· … · 莠1
0.9, maka email tersebut adalah spam, sebaliknya jika
maka email tersebut adalah legitimate email.
0.9,
Diagram alir untuk proses combining dapat dilihat seperti pada Gambar 4.3 berikut ini Combining
Ambil 15 interesting token
Hitung probabilitas email menggunakan rumus combining
return Gambar 4.3. Diagram alir untuk proses combining. 4.3. Aplikasi Bayesian Filtering Berdasarkan proses-proses yang telah dijelaskan sebelumnya, dibuat aplikasi Bayesian filtering menggunakan bahasa pemrograman java dengan bantuan Netbeans IDE 6.1. Tahap-tahapnya adalah sebagai berikut. 1. Membuat sebuah kelas untuk mendeskripsikan token. Berikut ini adalah kode program dari kelas word. public class Word { private String word; private int countBad; private int countGood; private float rBad; private float rGood; private float pSpam; public Word(String s) {
iii
iv
word = s; countBad = 0; countGood = 0; rBad = 0.0f; rGood = 0.0f; pSpam = 0.0f; } public void countBad() { countBad++; } public void countGood() { countGood++; } public void calcBadProb(int total) { if (total > 0) rBad = countBad / (float) total; } public void calcGoodProb(int total) { if (total > 0) rGood = 2*countGood / (float) total; } public void finalizeProb() { if (rGood + rBad > 0) pSpam = rBad / (rBad + rGood); if (pSpam < 0.01f) pSpam = 0.01f; else if (pSpam > 0.99f) pSpam = 0.99f; } public float interesting() { return Math.abs(0.5f - pSpam); } public float getPGood() { return rGood; } public float getPBad() { return rBad; } public float getPSpam() { return pSpam; } public void setPSpam(float f) { pSpam = f; } public String getWord() { return word; } }
Fungsi kelas word diatas adalah untuk mendeskripsikan token yang telah ditokenizing yaitu berupa string token, total kemunculan pada spam corpus, total kemunculan
pada legitimate corpus dan nilai spam dari token. Pada
perhitungan nilai spam dari token, jika nilainya kurang dari 0.01, maka nilai spam dari token tersebut akan di-set menjadi 0.01 dan jika nilai lebih besar 0.99, maka akan di-set menjadi 0.99. 2. Membuat tampilan form aplikasi Bayesian filtering. iv
v
Form Bayesian filtering ini terdapat empat panel, yaitu panel training, panel analizing, panel interesting word dan panel statistical result. Dalam panel training terdapat tiga tombol, yaitu tombol browse untuk mencari file spam corpus, tombol browse untuk mencari file legitimate corpus dan tombol proses untuk menjalankan proses training. Dalam panel analizing terdapat dua tombol, yaitu tombol open untuk mencari file testing corpus dan tombol analize untuk menjalankan proses analisis dari filter. Dalam panel interesting word terdapat tabel yang akan memperlihatkan interesting token yang dihasilkan dari proses analisis filter, dan terakhir adalah panel statistical result yang akan menampilkan hasil analisis filter berupa nilai probabilitas spam dari email corpus yang diuji. Untuk lebih jelasnya tampilan form dari Bayesian filtering seperti pada Gambar 4.4.
Gambar 4.4. Form tampilan dari aplikasi Bayesian filtering. 3. Menambahkan action listener untuk tiap tombol. i. Tombol browse untuk spam corpus. Kode action listener-nya adalah sebagai berikut.
v
vi
if ( evt.getSource ( ) == jButtonBrowse1 ){ JFileChooser fileChooser = new JFileChooser ( ) ; FileNameExtensionFilter TXTFilter = new FileNameExtensionFilter("TXT File","txt"); fileChooser.addChoosableFileFilter(TXTFilter); int ret = fileChooser.showOpenDialog ( this ) ; if ( ret == JFileChooser.APPROVE_OPTION ){ File nama = fileChooser.getSelectedFile ( ); jTextFieldSpam.setText(nama.getPath()); }
}
ii. Tombol browse untuk legitimate corpus. Kode action listener-nya adalah sebagai berikut. if ( evt.getSource ( ) == jButtonBrowse2 ){ JFileChooser fileChooser = new JFileChooser ( ) ; FileNameExtensionFilter TXTFilter = new FileNameExtensionFilter("TXT File","txt"); fileChooser.addChoosableFileFilter(TXTFilter); int ret = fileChooser.showOpenDialog ( this ) ; if ( ret == JFileChooser.APPROVE_OPTION ){ File nama = fileChooser.getSelectedFile ( ); jTextFieldGood.setText(nama.getPath()); } }
Saat memulai proses training, dibutuhkan dua email corpus yaitu spam corpus dan legitimate corpus. Pada saat tombol browse dieksekusi, aplikasi akan mencari masing-masing file tersebut. iii. Tombol proses untuk memulai proses training. Kode action listener-nya adalah sebagai berikut. Task task1 = new Task(); task1.execute();
dimana kode ini akan mengeksekusi class task berikut ini.
vi
vii
public class Task extends SwingWorker{ @Override protected Object doInBackground() throws Exception { boolean count = true; int percent = 0; int wordcountSpam = 0; int wordcountGood = 0; String fileSpam = jTextFieldSpam.getText(); String fileGood = jTextFieldGood.getText(); try { A2ZFileReader frSpam = new A2ZFileReader(fileSpam); String content = frSpam.getContent(); String[] tokensSpam = content.split(splitregex); int spamTotal = 0; for (int i = 0; i < tokensSpam.length; i++) { String word = tokensSpam[i].toLowerCase(); Matcher m = wordregex.matcher(word); if (m.matches()) { spamTotal++; if (words.containsKey(word)) { Word w = (Word) words.get(word); w.countBad(); } else { Word w = new Word(word); w.countBad(); words.put(word,w); } } } jLabel4.setText(" "+ spamTotal); Iterator iterator = words.values().iterator(); while (iterator.hasNext()) { Word word = (Word) iterator.next(); word.calcBadProb(spamTotal); } }
vii
viii
catch (IOException ex) { Logger.getLogger(SpamBayes.class.getName()).log(Level.SEVER E, null, ex); } try { A2ZFileReader frGood = new A2ZFileReader(fileGood); String content = frGood.getContent(); String[] tokensGood = content.split(splitregex); int goodTotal = 0; for (int i = 0; i < tokensGood.length; i++) { String word = tokensGood[i].toLowerCase(); Matcher m = wordregex.matcher(word); if (m.matches()) { goodTotal++; if (words.containsKey(word)) { Word w = (Word) words.get(word); w.countGood(); } else { Word w = new Word(word); w.countGood(); words.put(word,w); } } } jLabel5.setText(" "+ goodTotal); Iterator iterator = words.values().iterator(); while (iterator.hasNext()) { Word word = (Word) iterator.next(); word.calcGoodProb(goodTotal); } } catch (IOException ex) { Logger.getLogger(SpamBayes.class.getName()).log(Level.SEVER E, null, ex); }
viii
ix
Iterator iterator = words.values().iterator(); while (iterator.hasNext()) { Word word = (Word) iterator.next(); word.finalizeProb(); } while (percent <= 100) { if (count) { jProgressBar1.setValue(percent); jProgressBar2.setValue(percent); jLabel9.setText(" " + wordcountSpam ); jLabel10.setText(" " + wordcountGood ); Thread.sleep(100); percent += 1; wordcountSpam += 2143; wordcountGood += 3417; } } return null; } @Override protected void done() { String spamcount = jLabel4.getText(); String goodcount = jLabel5.getText(); jProgressBar1.setValue(100); jLabel9.setText(spamcount); jProgressBar2.setValue(100); jLabel10.setText(goodcount); jButtonProses.setEnabled(false); } }
Setelah file corpus dimasukkan, dilanjutkan dengan menekan tombol proses untuk memulai proses training dari aplikasi Bayesian filtering. Proses
training
dianimasikan
dengan
dua
progress
bar,
yaitu
jProgressBar1 dan jProgressBar2. Gambar 4.5 adalah tampilan aplikasi pada saat proses training.
ix
x
Gambar 4.5. Tampilan aplikasi pada saat proses training.
iv. Tombol open untuk menginput email yang akan diuji. Kode action listener-nya adalah sebagai berikut. if ( evt.getSource ( ) == jButtonOpen ){ JFileChooser fileChooser = new JFileChooser ( ) ; FileNameExtensionFilter JPEGFilter = new FileNameExtensionFilter("TXT File","txt"); fileChooser.addChoosableFileFilter(JPEGFilter); int ret = fileChooser.showOpenDialog ( this ) ; if ( ret == JFileChooser.APPROVE_OPTION ){ File nama = fileChooser.getSelectedFile ( ); jTextFieldFile.setText(nama.getPath()); try { FileReader fr = new FileReader(nama.getPath()); BufferedReader reader = new BufferedReader (fr) ; String temp = null ; jTextArea.setText ( "" ) ; while ( ( temp = reader.readLine ( ) ) != null ) jTextArea.append ( temp + "\n" ) ;
x
xi
reader.close ( ) ; } catch(IOException ex) { Logger.getLogger(SpamBayes.class.getName()).log(Level.SEVER E, null, ex); } } }
Saat tombol open dieksekusi aplikasi akan mencari file dari email yang akan dianalisis. Selanjutnya akan ditampilkan seluruh teks dari email tersebut dalam text area. Gambar 4.6 tampilan aplikasi pada saat membaca email yang masuk.
Gambar 4.6 Tampilan aplikasi saat membaca email yang masuk. v. Tombol analize untuk memulai proses analisis. Kode action listener-nya adalah sebagai berikut. ArrayList interesting = new ArrayList(); try { String file = jTextFieldFile.getText();
xi
xii
A2ZFileReader fr = new A2ZFileReader(file); String stuff = fr.getContent(); String[] tokens = stuff.split(splitregex); for (int i = 0; i < tokens.length; i++) { String s = tokens[i].toLowerCase(); Matcher m = wordregex.matcher(s); if (m.matches()) { Word w; if (words.containsKey(s)) { w = (Word) words.get(s); } else { w = new Word(s); w.setPSpam(0.4f); } int limit = 15; if (interesting.isEmpty()) { interesting.add(w); } else { for (int j = 0; j < interesting.size(); j++) { Word nw = (Word) interesting.get(j); if (w.getWord().equals(nw.getWord())) { break; } else if (w.interesting() > nw.interesting()) { interesting.add(j,w); break; } else if (j == interesting.size()-1) { interesting.add(w); } } } while (interesting.size() > limit) interesting.remove(interesting.size()-1); } } float pposproduct = 1.0f;
xii
xiii
float pnegproduct = 1.0f; for (int i = 0; i < interesting.size(); i++) { Word w = (Word) interesting.get(i); pposproduct *= w.getPSpam(); pnegproduct *= (1.0f - w.getPSpam()); } float pspam = pposproduct / (pposproduct + pnegproduct); String titles[] = new String [] {"Word", "Spam Probability"}; Object[][] results = new Object[interesting.size()][titles.length]; for (int i = 0; i < interesting.size(); i++) { Word w = (Word) interesting.get(i); results[i][0] = w.getWord(); results[i][1] = w.getPSpam(); } jTable1.setModel(new DefaultTableModel(results, titles)); jLabel14.setText(" "+ pspam); if (pspam > 0.9f) jLabel15.setText(" SPAM DETECTED "); else jLabel15.setText(" NO SPAM DETECTED "); } catch (IOException ex) { Logger.getLogger(SpamBayes.class.getName()).log(Level.SEVER E, null, ex); } }
Proses analisis filter dimulai dengan menekan tombol analize, yang kemudian akan menghasilkan lima belas interesting token pada tabel yang berada pada panel interesting word, seperti pada Gambar 4.7.
xiii
xiv
Gambar 4.7. Tampilan pada saat proses analisis filter. 4.4. Uji Coba Aplikasi Bayesian filtering. Tujuan dari uji coba aplikasi Bayesian filtering ini adalah untuk menguji tingkat akurasi dari aplikasi yang telah dibuat dengan menggunakan data training (training corpus) yang berbeda-beda. Proses uji coba ini terdiri dari lima tahap. Berikut adalah tahap-tahap pengujian dari aplikasi Bayesian filtering. 1. Tahap pertama. Pengujian dengan perbandingan jumlah data training email spam lebih banyak daripada legitimate email. 2. Tahap kedua. Pengujian dengan perbandingan jumlah data training email spam lebih sedikit daripada legitimate email. 3. Tahap ketiga. Pengujian dengan perbandingan jumlah data training email spam dan legitimate email adalah sama.
xiv
xv
Data uji (testing corpus) untuk tiap pengujian adalah sama yaitu 50 email terdiri dari 30 email spam dan 20 legitimate email. Setelah dilakukan proses uji coba sesuai dengan tahap-tahap diatas, didapatkan hasil sebagai berikut. 1. Tahap pertama. Hasil pengujian tahap pertama diberikan pada tabel 4.3 berikut ini. Tabel 4.3. hasil pengujian tahap pertama. training spam
legitimate
100 200 300 500
50 100 200 300
benar (spam) 14 15 23 24
Salah (spam) 16 15 7 6
testing Benar (legitimate) 20 20 20 20
Salah (legitimate) 0 0 0 0
akurasi 68.00% 70.00% 86.00% 88.00%
2. Tahap kedua. Hasil pengujian tahap kedua diberikan pada tabel 4.4 berikut ini.
Tabel 4.4. hasil pengujian tahap kedua. training spam 50 100 200 300
legitimate 100 200 300 500
Benar (spam) 3 5 8 20
Salah (spam) 27 25 22 10
testing Benar (legitimate) 20 20 20 20
Salah (legitimate) 0 0 0 0
akurasi 46.00% 50.00% 56.00% 80.00%
3. Tahap ketiga. Hasil pengujian tahap ketiga diberikan pada tabel 4.5 berikut ini. Tabel 4.5. hasil pengujian tahap ketiga. training spam 50 100 200
legitimate 50 100 200
Benar (spam) 8 7 9
Salah (spam) 22 23 21
xv
testing Benar (legitimate) 20 20 20
Salah (legitimate) 0 0 0
akurasi 56.00% 54.00% 58.00%
xvi
300 500
300 500
18 27
12 3
20 20
0 0
76.00% 94.00%
Dari hasil pengujian, diperoleh bahwa aplikasi Bayesian filtering mempunyai nilai akurasi paling tinggi 94% dengan mengambil data training 500 email spam dan 500 legitimate email. Dan pada saat proses pengujian ini, tidak dijumpai false positive yaitu legitimate email yang salah terklasifikasi menjadi spam.
xvi
xvii
BAB V PENUTUP
5.1. Kesimpulan Berdasarkan hasil pembahasan, diperoleh kesimpulan bahwa klasifikasi Bayesian filtering pendekatan Paul Graham dapat digunakan dengan baik dalam aplikasi email filtering. Semakin banyak jumlah data training yang digunakan maka semakin tinggi keakuratannya, hal ini terlihat pada saat uji coba aplikasi, nilai akurasi tertinggi yaitu 94% berhasil dicapai dengan data training paling banyak. Aplikasi Bayesian filtering mempunyai false positive yang rendah, meskipun data training untuk legitimate email berjumlah sedikit.
5.2. Saran Dari hasil pembahasan, saran yang dapat diberikan penulis adalah sebagai berikut. 1. Aplikasi dapat dikembangkan lebih lanjut sehingga mampu melakukan analisis terhadap body email bertipe html atau mime dan attachment yang dianalisa dari contentnya. 2. Aplikasi dapat juga dikembangkan lebih lanjut dengan menambahkan metode whitelist atau blacklist untuk menganalisa header email. 3. Untuk proses tokenizing dapat dikembangkan lebih lanjut agar dapat mengenali token yang berupa nomor IP, sehingga tanda titik (.) dalam nomor IP bukan dianggap sebagai token separator.
xvii
xviii
DAFTAR PUSTAKA Graham, P., A Plan for Spam, http://www.paulgraham.com/spam.html, 2002. (diakses 19 Agustus 2008)
Graham, P., Better Bayesian filtering, http://www.paulgraham.com/better.html, 2003. (diakses 21 Agustus 2008) Hakim, R. dan Sutarto., Mastering Java, PT Elex Media Komputindo, 2009. Hartati, G. S., Suharto, B. H. dan Wijono, M. S., pemrograman GUI Swing Java dengan Netbeans 5, ANDI Yogyakarta, 2007. Lambert, A., Analysis of SPAM, Master's thesis, Department of Computer Science, University of Dublin, Trinity College, 2003. Sahami, M., Dumais, S., Heckerman, D. dan Horvitz, E., A Bayesian Approach to Filtering Junk E-Mail, Computer Science Department, Stanford University, Stanford, 1998. Rahardjo, B., Spam! Definisi, bahaya, penanggulangan, http://budi.insan.co.id, 2006. (diakses 7 Juli 2008) Satterfield, B., Ten Spam-Filtering Methods Explained: Learn how different spam-fighting techniques work, http://www.techsoup.org/learningcenter/ page6028.cfm.htm, 2006. (diakses 7 Juli 2008) Shiffman, D., Bayesian Filtering, http://www.shiffman.net/teaching/a2z/bayesian, 2005. (diakses 19 Agustus 2008) TREC 2007 Spam Track Public Corpora, http://plg.uwaterloo.ca/~gvcormac/ treccorpus07/about.html, 2007. (diakses 25 Agustus 2009) Wikipedia, Bayesian Spam Filtering, http://www.wikipedia.com/ Bayesian_spam_filtering.htm, 2009. (diakses 15 September 2009) Wikipedia, Spam, http://www.wikipedia.com/Spam.htm, 2009. (diakses 26 Maret 2009 Zdziarski, J., Ending Spam: Bayesian Content Filtering and the Art of Statistical Language Classification, No Starch Press, 2005.
xviii
xix
xix