Rabu, 24 Juli 2013

implementasi algoritma K Nearest Neighbor



BAB I
PENDAHULUAN

1.1         Latar Belakang
Perkembangan teknologi informasi yang up to date memungkinkan ketersediaan informasi diinternet yang sangat melimpah. Informasi tersebut terus bertambah setiap waktu dengan adanya tuntutan arus informasi cepat yang dibutuhkan oleh masyarakat. Salah satu informasi yang tersedia dalam internet adalah informasi dalam bentuk dokumen teks. Dokumen ini dapat berupa artikel berita, materi pelajaran dan email.
Semakin banyak dokumen tersedia  maka akan dibutuhkan waktu yang tidak sedikit bagi pengguna internet untuk mencari dokumen yang relevan sesuai dengan kebutuhan. Hal tersebut dikarenakan belum terorganisasinya dokumen tersebut sesuai dengan kategori masing-masing. Oleh karena itu diperlukan suatu metode untuk menyusun dokumen tersebut agar terorganisasi sesuai dengan kategorinya. 
Kategorisasi teks merupakan solusi yang tepat untuk mengelola informasi yang saat ini berkembang dengan sangat cepat dan melimpah. Kategorisasi teks membuat pengelolaan informasi tersebut menjadi efektif dan efisien. Dengan menggunakan kategorisasi teks, dapat dilakukan penyusunan dokumen menurut kategorinya, penyaringan terhadap email spam, melakukan penggalian opini (opinion mining) dan analisis sentimen. Algoritma kategorisasi teks saat ini telah banyak berkembang, antara lain: Support Vector Machines (SVM), Naive Bayessian (NB), pohon keputusan, K-Nearest Neighbour (KNN).
K-Nearest Neighbor adalah salah satu algoritma klasifikasi yang mudah diimplementasikan. Pada penelitian tugas akhir ini akan diimplementasika algoritma K-Nearest Neighbor untuk mengkategorisasikan dokumen teks bahasa Indonesia sehingga dapat diketahui kelebihan dan kelemahan algoritma tersebut dalam melakukan kotegorisasi dokumen.

1.2         Rumusan Masalah
Berdasarkan latar belakang masalah yang telah diuraikan, maka rumusan masalah dalam penulisan tugas akhir ini adalah : “Seberapa besar akurasi algoritma K-Nearest Neighbor terhadap kategorisasi dokumen teks bahasa Indonesia”.

1.3         Maksud dan Tujuan Penelitian
Maksud dari penulisan tugas akhir ini adalah untuk membangun aplikasi pengklasifikasian berdasarkan pengenalan teks (teks mining) menggunakan algoritma K-Nearest Neighbor.
Adapun tujuan yang ingin dicapai dalam penelitian ini yaitu :
1.    Mempercepat proses klasifikasi.
2.    Menghasilkan kategori dokumen yang akurat.
3.    Mempermudah proses pencarian yang berdasarkan kategori.


1.4         Batasan Masalah
Dalam implementasi tugas akhir ini dibatasi oleh beberapa hal, sebagai berikut:
1.    Dataset yang digunakan adalah artikel berita berbahasa Indonesia yang didapatkan dari web dan bersifat offline dan disimpan dalam file berekstensi .txt.
2.    Dokumen teks bahasa Indonesia yang digunakan didapat dari hasil riset research group Laboratorium Data Mining Centre (DMC).
3.    Proses kategorisasi dilakukan dengan menggunakan metode K-Nearest Neighbor.
4.    Feature hanya berupa kata bukan frase.

1.5         Metodologi Penelitian
Metodologi yang dilakukan untuk menyelesaikan permasalahan adalah sebagai berikut:
1.5.1   Metode Pengembangan Sistem
Metode pengembangan perangkat lunak yang akan saya gunakan adalah model prototype. Metode ini memiliki 3 unsur yang perlu diperhatikan di dalam pengembangan perangkat lunak yaitu kebutuhan pelanggan, pembuatan pasar atau market dan uji coba kebutuhan pasar. Secara garis besar dapat terlihat pada gambar berikut ini

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1fo0HYU0qxFIjRbvCJQF7AzY45z84BbyCt7Ot3NT_dUvlRhV0_ZVYSre3HhU7AGXfYyPXH8cOQI-q3dwZHUpbGSFxMAPaxZIUz3nUUr7ulgrL7npgWppsFuvp2iOOME_F6aHoJ0sI2to/s1600/metode-pengembangan-perangkat-lunak-prototype.JPG
Gambar 1.1 Metode Prototype
Metode Prototype merupakan metode pengembangan perangkat lunak yang memodelkan dari sistem kerja suatu perangkat lunak yang belum lengkap dari pihak user. Para pengembang perangkat lunak melakukan koordinasi dan pertemuan-pertemuan yang secara intensif dengan user guna menampung informasi yang akan dijadikan dasar dalam perancangan perangkat lunak.
Metode pengembangan perangkat lunak ini dimulai dengan pengumpulan kebutuhan. Pendekatan prototyping model digunakan jika pemakai hanya mendefenisikan secara umum dari perangkat lunak tanpa merinci kebutuhan input, pemrosesan dan outputnya, sementara pengembang tidak begitu yakin akan efisiensi algoritma, adaptasi sistem operasi, atau bentuk antarmuka manusia-mesin yang harus diambil. Cakupan aktivitas dari prototyping model terdiri dari :
1.    Mendefinisikan objektif secara keseluruhan dan mengidentifikasi kebutuhan yang sudah diketahui.
2.    Melakukan perancangan secara cepat sebagai dasar untuk membuat prototype.
3.    Menguji coba dan mengevaluasi prototype dan kemudian melakukan penambahan dan perbaikan-perbaikan terhadap prototype yang sudah dibuat.
1.5.2   Metode Pengumpulan Data
a.    Studi litelatur
Melakukan pencarian informasi dan pembelajaran khususnya mengenai algoritma k-nearest neighbor dan stemming porter yang nantinya digunakan sebagai referensi tugas akhir.
b.    Pengumpulan data
Melakukan pencarian dan pengumpulan data, data yang akan digunakan berupa artikel berita bahasa Indonesia yang diambil dari lab DMC (Data Mining Center).
c.    Analisa kebutuhan dan implementasi
Tahap ini dilakukan dengan menganalisa dan merancang kebutuhan perangkat lunak yang dibangun.Sedangkan implementasi dilakukan terhadap hasil analisa dan perancangan kebutuhan perangkat lunak.
d.    Pengujian
Pada tahap ini dilakukan pengujian dan analisa terhadap perangkat lunak yang telah dibangun menggunakan dataset yang telah disediakan, kemudian dilakukan kategorisasi menggunakan tools data mining untuk mengukur performansi yang dihasilkan.
e.    Kesimpulan dan penyusunan laporan.

1.5.3   Teknik Data Mining

1.      Data cleaning (untuk menghilangkan noise data yang tidak konsisten) Data integration (di mana sumber data yang terpecah dapat disatukan)
2.      Data selection (di mana data yang relevan dengan tugas analisis
dikembalikan ke dalam database)
3.      Data transformation (di mana data berubah atau bersatu menjadi bentuk
yang tepat untuk menambang dengan ringkasan performa atau operasi
agresi)
4.      Data mining (proses esensial di mana metode yang intelejen digunakan
untuk mengekstrak pola data)
5.      Pattern evolution (untuk mengidentifikasi pola yang benar-benar menarik
yang mewakili pengetahuan berdasarkan atas beberapa tindakan yang
menarik)
6.      Knowledge presentation (di mana gambaran teknik visualisasi dan
pengetahuan digunakan untuk memberikan pengetahuan yang telah
ditambang kpada user).

1.6         Sistematika Penelitian
Laporan Tugas Akhir ini disusun dengan sistematika sebagai berikut :
BAB  I  PENDAHULUAN
Pada bab ini dibahas mengenai latar belakang, perumusan, batasan, dan tujuan penelitian, metode penelitian yang dipakai serta sistematika penulisan laporan.
BAB  II  LANDASAN TEORI
Menjelaskan teori-teori yang relevan dengan masalah yang diteliti, yaitu: dasar teori text mining, text preprocessing, kategorisasi dokumen teks, dan algoritma k-nearest neighbor.
BAB III  ANALISIS DAN PERANCANGAN
Menjelaskan mengenai perancangan sistem, spesifikasi kebutuhan sistem, dan perancangan subsistem.
BAB IV EVALUASI HASIL
Menjelaskan tentang struktur program aplikasi, pengujian program dan hasil yang dicapai
BAB V KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan yang diambil dari hasil penelitian serta  saran-saran untuk pengembangan lebih lanjut.




Selasa, 22 Januari 2013



Tugas Kelompok Pemrograman Berorientasi Objek
Nama : 1. Agam Praditya Anggawira
             2. Dadan Ramdani



Cd.java
class Cd //superclass
Definisi variabel bertipe protected, artinya variabel tidak dapat diakses secara bebas oleh kelas lain, tapi hanya dapat diakses oleh kelas turunannya.
 
{
protected String judul; 
protected String publiser;
protected String kategori;
protected int stok;
}

CdFilm.java
class CdFilm extends Cd // kelas CdFilm merupakan turunan kelas Cd
Definisi variabel bertipe private, artinya hanya dapat diakses untuk kelas CdFilm
 
{
private String pemain;
private String sutradra;

public CdFilm(String j,String pemain,String sutradra,String p,String k,int s)
{
super.judul = j;
this.pemain = pemain;
this.sutradra = sutradra;
super.publiser = p;
super.kategori = k;
super.stok = s;
}

public String toString()
{
return ("Judul : " + super.judul + "\nPemain : " + pemain + "\nSutradara : "
+ sutradra + "\nPubliser : " + super.publiser + "\nKategori : " + super.kategori + "\nStok :" + stok);
}

}

CdMusik.java 
class CdMusik extends Cd  //kelas CdMusik merupakan turunan kelas Cd
Definisi variabel bertipe private, artinya hanya dapat diakses untuk kelas CdMusik
 
{
private String penyanyi;
private String produser;
private String topHits;

public CdMusik(String j,String penyanyi,String produser,String p,String topHits,String k,int s)
{
super.judul = j;
this.penyanyi = penyanyi;
this.produser = produser;
super.publiser = publiser;
this.topHits = topHits;
super.kategori = k;
super.stok = s;
}
public String toString()
{
return ("Judul :" + super.judul + "\nPenyanyi : " + penyanyi + "\nProduser : " + produser + "\nPubliser : " + super.publiser +
"\nTopHits : " + topHits + "\nKategori : " + super.kategori + "\nStok : " + super.stok);
}
}

DemoExtends.java
import java.io.*;
class DemoExtends
{
public static void main(String[]args)throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

for(int i=0; i<2;);
{

System.out.println("1. CdFilm");
System.out.println("2. CdMusik");
System.out.println("3. Keluar");
System.out.print("pilihan ?? ");
int pil= Integer.parseInt(br.readLine());

if(pil==1)
{
CdFilm cf = new CdFilm("Ada Apa Dengan Cinta","Dian Sastro","Rudi","label Film","Remaja",200);
System.out.println("\n" + cf.toString() + "\n");
}
else if(pil==2)
{
CdMusik cm = new CdMusik("Dilema Cinta","UNGU","Rampa","Label Rekaman","Demi waktu","Pop",290);
System.out.println("\n" + cm.toString() + "\n");
}
else if(pil==3)
{
System.exit(0);
}
}
}
}

Rabu, 16 Januari 2013

biodata.java

import java.awt.event.*;
import javax.swing.*;

public class latihan extends JFrame implements ActionListener
{
//private JFrame frame;
private JLabel lbNIM, lbNama, lbTLahir, lbTglLahir, lbJKel, lbAgama, lbAlamat, lbNoHP, lbEmail, lbHobi;
private JTextField tfNIM, tfNama, tfTLahir, tfAlamat, tfNoHP, tfEmail, tfTahun;
private JComboBox cbTanggal, cbBulan, cbAgama;
private JRadioButton rbLakilaki, rbPerempuan;
private JCheckBox chMembaca, chBerenang, chMemancing, chGame, chMemasak;
private JButton btBatal, btSimpan;

public latihan()
{
setTitle("Form Biodata");
setSize(600,600);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);

lbNIM = new JLabel("NIM");
lbNIM.setBounds(20,20,100,25);
add(lbNIM);
lbNama = new JLabel("Nama");
lbNama.setBounds(20,60,100,25);
add(lbNama);
lbTLahir = new JLabel("Tempat Lahir");
lbTLahir.setBounds(20,100,100,25);
add(lbTLahir);
lbTglLahir = new JLabel("Tanggal Lahir");
lbTglLahir.setBounds(20,140,100,25);
add(lbTglLahir);
lbJKel = new JLabel("Jenis Kelamin");
lbJKel.setBounds(20,180,100,25);
add(lbJKel);
lbAgama = new JLabel("Agama");
lbAgama.setBounds(20,220,100,25);
add(lbAgama);
lbAlamat = new JLabel("Alamat");
lbAlamat.setBounds(20,260,100,25);
add(lbAlamat);
lbNoHP = new JLabel("No HP");
lbNoHP.setBounds(20,300,100,25);
add(lbNoHP);
lbEmail = new JLabel("Email");
lbEmail.setBounds(20,340,100,25);
add(lbEmail);
lbHobi = new JLabel("Hobi");
lbHobi.setBounds(20,380,100,25);
add(lbHobi);

tfNIM = new JTextField(20);
tfNIM.setBounds(120,20,100,25);
add(tfNIM);
tfNama = new JTextField(20);
tfNama.setBounds(120,60,200,25);
add(tfNama);
tfTLahir = new JTextField(20);
tfTLahir.setBounds(120,100,150,25);
add(tfTLahir);
tfTahun = new JTextField("Tahun",20);
tfTahun.setBounds(360,140,100,25);
add(tfTahun);
tfAlamat = new JTextField(20);
tfAlamat.setBounds(120,260,275,25);
add(tfAlamat);
tfNoHP = new JTextField(20);
tfNoHP.setBounds(120,300,150,25);
add(tfNoHP);
tfEmail = new JTextField(20);
tfEmail.setBounds(120,340,150,25);
add(tfEmail);

cbTanggal = new JComboBox();
cbTanggal.setBounds(120,140,125,25);
add(cbTanggal);
cbTanggal.addItem("Tanggal");
for (int n =1 ; n<=31; n++)
{
cbTanggal.addItem(new String().valueOf(n));
}
cbBulan = new JComboBox();
cbBulan.setBounds(250,140,100,25);
add(cbBulan);
String[]bulan = {"Bulan","Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"};
for(int m=0;m<bulan.length;m++)
{
cbBulan.addItem(bulan[m]);
}
cbAgama = new JComboBox();
cbAgama.setBounds(120,220,100,25);
add(cbAgama);
String[]agama = {"Islam","Kristen","Katholik","Hindu","Budha","Konghucu"};
for( int j = 0; j<agama.length; j++)
{
cbAgama.addItem(agama[j]);
}
rbLakilaki = new JRadioButton("Laki-laki");
rbLakilaki.setBounds(120,180,150,25);
rbLakilaki.setSize(rbLakilaki.getPreferredSize());
add(rbLakilaki);
rbPerempuan = new JRadioButton("Perempuan");
rbPerempuan.setBounds(200,180,150,25);
rbPerempuan.setSize(rbPerempuan.getPreferredSize());
add(rbPerempuan);

ButtonGroup group = new ButtonGroup();
group.add(rbLakilaki);
group.add(rbPerempuan);

chMembaca = new JCheckBox("Membaca",false);
chMembaca.setBounds(120,380,150,25);
add(chMembaca);
chBerenang = new JCheckBox("Berenang",false);
chBerenang.setBounds(120,400,150,25);
add(chBerenang);
chMemancing = new JCheckBox("Memancing",false);
chMemancing.setBounds(120,420,150,25);
add(chMemancing);
chGame = new JCheckBox("Game",false);
chGame.setBounds(120,440,150,25);
add(chGame);
chMemasak = new JCheckBox("Memasak",false);
chMemasak.setBounds(120,460,150,25);
add(chMemasak);

btBatal = new JButton("Batal");
btBatal.setBounds(20,520,100,25);
add(btBatal);
btBatal.addActionListener(this);
btSimpan = new JButton("Simpan");
btSimpan.setBounds(420,520,100,25);
add(btSimpan);
btSimpan.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==btBatal)
{
tfNIM.setText("");
tfNama.setText("");
tfTLahir.setText("");
tfAlamat.setText("");
tfNoHP.setText("");
tfEmail.setText("");
tfTahun.setText("Tahun");

cbTanggal.setSelectedItem("Tanggal");
cbBulan.setSelectedIndex(0);
cbAgama.setSelectedIndex(0);

rbLakilaki.setSelected(false);
rbPerempuan.setSelected(true);

chMembaca.setSelected(false);
chBerenang.setSelected(false);
chMemancing.setSelected(false);
chGame.setSelected(false);
chMemasak.setSelected(false);
}
}
public static void main(String[]args)
{
latihan fb = new latihan();
fb.setVisible(true);
}
}