Klasifikasi Artikel Berita Berbahasa
Indonesia Berbasis Naïve Bayes
Classifier Menggunakan Confix-stripping
Stemmer
5210100106 - Amalia Anjani A.
Dosen Pembimbing
Dosen Pembimbing I
: Prof. Ir. Arif Djunaidy, M.Sc, Ph.D
Metodologi Pengerjaan
Penentuan
tujuan dan
studi literatur
Penyiapan
data
Perancangan
desain
aplikasi
Praproses
data
klasifikasi
Latih
Pembahasan
Evaluasi
uji
klasifikasi
Uji Klasifikasi
Evaluasi
model
klasifikasi
Ya Ya Tidak TidakLatar belakang, rumusan masalah, tujuan,
batasan pengerjaan, manfaat
Latar Belakang
Berita mengalir begitu
Latar Belakang (cont)
Namun:
•
Editor harus membaca
artikel satu per satu
•
Kurang efisien
•
Berita terlambat
disampaikan
•
Aplikasi yang
membantu kategorisasi
secara mudah
•
Diharapkan:
•
Membantu kinerja editor
•
Efisien
•
Berita cepat
Latar Belakang – Metode (cont)
Klasifikasi
Dokumen
Bahasa
Indonesia
•
Naïve Bayes Classifier (NBC)
•
K-Nearest Neigbour
•
Support Vector Machines (SVM)
•
Rule Learning Algorthm
NBC
hanya butuhkan jumlah training data yang
kecil untuk menentukan estimasi parameter
yang diperlukan dalam proses klasifikasinya
Latar Belakang – Metode (cont)
Klasifikasi Dokumen
Berbahasa Indonesia
Stemming
Hilangkan awalan,
akhiran, sisipan,
dan confixes
Nazief
Stemmer
Confix-Stripping
Stemmer
Lebih baik dari:
Arifin dan Setiono,
Vega
Rumusan Masalah dan Tujuan
Rumusan Masalah
Bagaimana membangun
aplikasi pengklasifikasi
artikel berita berbahasa
Indonesia berbasis NBC
menggunakan confix-stripping
stemmer yang dapat dengan
mudah dioperasikan oleh
editor berita?
Tujuan
Membangun aplikasi
pengklasifikasi artikel berita
berbahasa Indonesia
berbasis naïve bayes classifier
menggunakan confix-stripping
stemmer untuk membantu
para editor berita dalam
pengklasifikasian artikel
berita.
Batasan Masalah
•
Data yang digunakan
merupakan artikel-artikel
berita berbahasa Indonesia
yang didapatkan dari portal
berita kompas.com.
•
Data yang digunakan pada
tahap latih dan uji merupakan
sampel artikel berita dalam
rentang waktu mulai pertama
artikel berita tersimpan di
kompas.com hingga akhir
tahun 2013.
•
Kategori yang digunakan
terbatas pada 12 kategori
yakni :
•
nasional, internasional,
olahraga, sains, edukasi,
ekonomi, tekno, entertaintment,
otomotif, health, properti, dan
travel.
•
Kategori yang digunakan
tidak bersifat hirarki atau
Manfaat
Penulis
•
Tugas akhir ini
merupakan
sumbangsih dalam
bidang ilmu klasifikasi
teks secara umum,
dengan menggunakan
metode naïve bayes
classifiers dan
confix-stripping stemmer secara
khususnya.
Pelaku Bidang Jurnalistik
•
Hasil tugas akhir ini
diharapkan mampu
membantu para pelaku
di bidang jurnalistik
dan para editor berita
khususnya dalam
pengkategorian artikel
berita sehingga
diharapkan dapat
meningkatkan efisiensi
kerja dan mampu
mempercepat
tersampaikannya berita.
Ilmu Pengetahuan dan
Teknologi
•
Hasil tugas akhir ini
diharapkan dapat
menjadi dasar bagi
pengembangan
teknologi yang
berkaitan dengan
klasifikasi teks
Dasar teori pendukung pengerjaan tugas akhir
Praproses Teks
Case Folding
Mengubah semua teks
menjadi huruf kecil
Menghilangkan karakter
selain huruf
Tokenizing
melakukan pemotongan
string masukan yakni
teks, berdasarkan tiap
kata yang menyusunnya
Stopping
Menghilangkan kosakata
yang bukan merupakan
ciri unik pada suatu
dokumen
Stemming
proses pemetaan dan
penguraian berbagai
bentuk dari suatu kata
menjadi bentuk kata
dasarnya
Nazief Stemmer
•
Algoritma stemming Nazief dan
Adriani dikembangkan
berdasarkan aturan bahasa
Indonesia
•
Kata-kata bahasa Indonesia
menggunakan berbagai imbuhan
yakni :
•
awalan (prefix),
•
sisipan (infix),
•
akhiran (suffix)
•
kombinasi awalan dan akhiran
(confixes).
•
Inflection Suffixes : kelompok
akhiran yang tidak mengubah
bentuk kata dasar.
•
Derivation Suffixes (Akhiran) :
kumpulan akhiran yang secara
langsung ditambahkan pada
kata dasar.
•
Derivation Prefixes (Awalan) :
Kumpulan awalan yang dapat
ditambahkan langsung pada
kata dasar yang sudah
mendapatkan penambahan
sampai dua awalan.
Langkah Nazief Stemmer
Kata yang belum di-stemming dicari ke dalam
kamus kata dasar. Jika ditemukan maka kata
tersebut diasumsikan sebagai kata dasar dan
tahapan berhenti. Akan tetapi jika tidak
ditemukan maka dilanjutkan pada tahap
kedua.
Hilangkan Inflectional Particle (lah', kah',
tah',pun') dan kata ganti kepunyaan (ku',
'-mu', '-nya').
Hilangkan imbuhan akhiran ('-i', '-kah', '-an')
Hilangkan imbuhan awalan ('di-, 'ke-', 'se-', 'me-',
'be-', 'pe-', 'te-') dengan iterasi maksimum adalah
tiga kali:
1. Langkah berhenti jika :
terjadi kombinasi awalan dan akhiran terlarang
seperti pada tabel 4.1
awalan yang dideteksi saat ini sama dengan
awalan yang dihilangkan sebelumnya
Tiga awalan telah dihilangkan
2. Identifikasikan tipe awalan dan hilangkan.
Awalan terbagi menjadi dua tipe:
standar = 'di-', 'ke-', 'se-' yang dapat langsung
dihilangkan dari kata.
kompleks = 'me-', 'be-', 'pe-', 'te-' merupakan tipe
awalan yang dapat bermorfologi sesuai kata
dasar yang mengikutinya. Sehingga digunakan
aturan pada tabel 4.2 untuk mendapatkan
pemenggalan yang tepat.
3. Cari kata yang telah dihilangkan awalannya
dalam kamus. Jika tidak ditemukan maka
Confix-Stripping Stemmer
Menggunakan kamus kata dasar
yang lebih lengkap
Memodifikasi dan menambahkan
aturan pemenggalan untuk tipe
awalan yang kompleks
Menambahkan aturan stemming
untuk kata ulang dan bentuk jamak
Mengubah urutan stemming untuk
beberapa kasus tertentu.
Penghilangan awalan dilakukan
terlebih dahulu kemudian diikuti oleh
penghilangan akhiran. Aturan ini
disebut rule precedence dan berlaku
jika kata memiliki kombinasi
awalan-akhiran 'be-lah', 'be-an', 'me-i', 'di-i',
'pe-i', atau 'te-i'.
Aturan Format Kata Pemenggalan
12 Mempe… Mem-pe…
16 Meng{g|h|q|k} Meng-{g|h|q|k}
Aturan Format Kata Pemenggalan
12 Mempe{r|l}… Mem-pe..
16 Meng{g|h|q}… Meng-{g|h|q}…
Aturan Format Kata Pemenggalan
34 terC1erC2… terC1erC2… dimana C1!=’r’
35 peC1erC2… peC1erC2… dimana
Naïve Bayes Classifier (NBC)
•
Algoritma yang digunakan untuk
mencari nilai probabilitas
tertinggi untuk mengklasifikasi
data uji pada kategori yang
paling tepat.
Dua tahap dalam proses
Pelatihan
dilakukan proses analisis
terhadap sampel dokumen
berupa pemilihan kosa kata dan
penentuan probabilitas prior
bagi tiap kategori berdasarkan
sampel dokumen.
Klasifikasi /Pengujian
ditentukan nilai kategori dari
suatu dokumen berdasarkan term
yang muncul dalam dokumen
yang diklasifikasi
Tahap Pelatihan
Nilai P(v
j
) ditentukan pada saat
pelatihan
Dimana :
|doc j| = banyak dokumen (dalam
hal ini artikel berita) yang memiliki
kategori j dalam pelatihan
|contoh| = banyak dokumen
(dalam hal ini artikel berita) dalam
contoh yang digunakan untuk
pelatihan.
𝑃 𝑤
𝑘
𝑣
𝑗
) =
𝑛 + |𝑘𝑘𝑘𝑘𝑘𝑘𝑘𝑘|
𝑛
𝑘
+ 1
Dimana:
P(w
k
| v
j
)= probabilitas kata w
k
dalam kategori j
n
k
= frekuensi munculnya kata w
k
dalam dokumen yang berkategori v
j
n = banyaknya seluruh kata dalam
dokumen berkategori v
j
|kosakata| = banyaknya kata
dalam contoh pelatihan
Tahap Pengujian
Pada saat klasifikasi algoritma akan mencari probabilitas
tertinggi dari semua kategori dokumen yang diujikan
(V
MAP
)
setiap dokumen direpresentasikan dengan pasangan
atribut “a
1
, a
2
, a
3
,.. a
n
” dimana a
1
adalah kata
pertama, a
2
adalah kata kedua dan seterusnya.
Sampel Data
Penentuan Besar Sampel
Rumus Slovin
Pengambilan Sampel
Systematic random sampling
Tetapkan interval
pengambilan satu sampel
𝑘 =
𝑁
𝑛
Pilih secara acak sebuah
angka yang menjadi random
start : 1 < random start < k
Satuan sampel lainnya dipilih
secara sistematis sesuai
dengan intervalnya.
Data ini digunakan sebagai masukan dari
aplikasi
Penyiapan Data
Data artikel berita
Systematic random sampling
No Kategori Berita Jumlah Sampel Data Latih Jumlah Data Uji Jumlah
1 Nasional 100 70 30 2 Internasional 100 70 30 3 Olahraga 100 70 30 4 Sains 99 70 29 5 Edukasi 97 68 29 6 Ekonomi 100 70 30 7 Tekno 100 70 30 8 Entertainment 100 70 30 9 Otomotif 99 70 29 10 Health 100 70 30 11 Properti 100 70 30 12 Travel 100 70 30 TOTAL 1195 838 357
No Kategori Berita Rentang Waktu Berita
1 Nasional 4 Januari 2008 – 31 Desember 2013
2 Internasional 5 Januari 2008 – 31 Desember 2013
3 Olahraga 7 Januari 2008 – 31 Desember 2013
4 Sains 8 Januari 2008 – 31 Desember 2013
5 Edukasi 3 Januari 2011 – 31 Desember 2013
6 Ekonomi 7 Januari 2008 – 31 Desember 2013
7 Tekno 11 Februari 2008 – 31 Desember 2013
8 Entertainment 10 Januari 2008 – 31 Desember 2013
9 Otomotif 21 Januari 2008 – 31 Desember 2013
10 Health 21 Januari 2008 – 31 Desember 2013
11 Properti 1 Maret 2008 – 31 Desember 2013
Penyiapan Data (cont)
Desain basis data, diagram usecase, diagram
sekuen, diagram aktivitas, dan diagram kelas
Desain Aplikasi
Desain basis data
Diagram usecase
Artikel PK IDArtikel Tanggal Judul Artikel FK1 IDKategori Kategori PK IDKategori Kategori ArtikelUji PK IDArtikelUji Tanggal Judul ArtikelUji HasilPraproses FK1 IDKategori KataDasar PK IDKataDasar KataDasar Stopword PK IDStopword Stopword User PK Username Password
uc Use Case Model
Administrator (from Actors) Melakukan praproses data latih Melakukan latih klasifikasi dan pembuatan model Melakukan uj i klasifikasi Menambahkan data artikel berita untuk latih
klasifikasi
Menambahkan data artikel berita untuk uj i
klasifikasi Melakukan praproses data uj i PenggunaUmum (from Actors) Mengklasifikasi Artikel Berita Login
Desain Aplikasi (cont)
Diagram sekuen
Diagram aktifitas
sd Sequence Insert
Administrator Form Input Artikel Berita
Tabel Artikel
request artikel()
getArtikel()
display()
isi kolom masukan artikel()
kolomIsNotNull() kolomIsNull() showMessage() isi kolom() insertArtikel() display()
act Activ ity Diagram Insert
Administrator Sistem
Mengisi semua kolom inputan
Menekan tombol tambah artikel
Menambahkan artikel ke dalam tabel artikelUj i Memilih pilihan data
Lebih lengkap dijelaskan pada
Diagram Kelas
class Diagram Kelas Klasifikasi
Koneksi - conn: Connection - dbName: String + driver: String - pass: String - url: string - user: String + konek() : Connection Praproses - ch: char - file: File - kata: String - kataA: String - kataAStem: String - kataBStem: String - kataUlangPecah: String - lenght: int - line: String - pilihan: int - pilihanProses: int - text: char - token: String - ubah: String + cekPrecedence() : boolean + doStem(String) : string + flagCekKamus(String) : int - isVowel(char) : boolean + pilihJenis() : void + pilihProses() : void + PraProses()
+ prosesStop(String, int) : void + readFileInput() : void + readFileKamus() : void + readFileStopword() : void + ReadKataDasar(String) : void + readKataInput(String, int) : void + readKataUlang(String) : void + readStop(String) : void - removeFirstOrderPrefix() : int - removeParticle() : int - removePossessivePronoun() : int - removeSecondOrderPrefix() : int - removeSuffix() : int
+ writeOutput(String, String) : void + writeOutput() : void
Learner + classifier: FilteredClassifier - fileName: String + filter: StringT oWordVector - resT mp: String - result: String - resultDetail: String - returnVal: int + trainData: Instances + evaluate() : void + learn() : string + Learner() + loadDataset(String) : void - readFileLatih() : void + saveModel(String) : void - writeModel() : void Klasifikasi + classifier: FilteredClassifier - file: File - instances: instances - pred: double - result: string + returnVal: int + text: string + classify() : string + Klasifikasi() + load(String) : void + loadModel(String) : void + makeInstance() : void - readFileKlasifikasi() : void - writeModelKlasifikasi() : void
Insert Artikel Berita - conn: Connection - pilihan: int + rs: ResultSet - sql: String + stmt: Statement + ArtikelBerita() + pilihJenis() : void
Case folding, tokenizing, stopping, dan stemming
Praproses Data
Empat tahap : case
folding, tokenizing,
stopping, dan
stemming
sd Sequence Praproses Administrator (from Actors)HalamanPraproses Case Folding Stopwords Stemming Tabel ArtikelTabel StopwordsTabel KataDasarFileKeluaran
cekKolomIsNotNull() KolomIsNull() Pesan Error() isi kolom() requestArtikel() getArtikel() caseFolding() RequestStopwords() returnStopwords() hapusStopwords() RequestKamus() returnKamus() cariKataDasar() writeOutput() displayMessage()
Masukan : data latih yang telah melalui praproses
Keluaran : model klasifikasi
Latih Klasifikasi
sd Sequence Latih
Administrator Form Learner File Data Latih File Model
Klasifikaasi Evaluasi Data Latih Latih Model KolomIsNull() showMessageError() Isi semuaKolom() loadData() getData() ubahStringToVector() setClassifier NBC() evaluasi() displayEvaluasi() learn() writeModel() displayMessage()
Masukan : data uji yang telah melalui praproses
Keluaran : prediksi kelas
Uji Klasifikasi
sd Sequence Uj i
Administrator Form Klasifikasi File Model tempObject classifierTabel ArtikelUjiBuat instances Klasifikasi
load Model() saveModel() getArtikelUji() classify() edit Artikeluji() displayResult()
Uji Klasifikasi Pengguna Umum
act Activ ity Diagram Mengklasifikasikan Artikel BeritaUmum Sistem
Pengguna menekan tombol praproses
Melakukan praproses terhadap data uj i (diagram
aktiv itas melakukan praproses terhadap data uj i)
Menekan tombol mulai klasifikasi
Menampilkan pesan bahw a praproses selesai
Melakukan klasifikasi (diagram aktiv itas melakukan uj i klasifikasi)
Menampilkan hasil klasifikasi
Outline Uji Coba
Uji Verifikasi
Uji Verifikasi Fungsional
Aplikasi
Uji Verifikasi Hasil Uji
Keluaran
Uji Validasi
Uji Validasi Evaluasi
Model Klasifikasi
Uji Validasi Evaluasi
Uji Verifikasi Fungsional Aplikasi
Semua fungsi aplikasi
telah berjalan lancar
Tidak ditemukan error
Uji Verifikasi Hasil Uji
Aplikasi dapat
menghasilkan hasil
klasifikasi yang telah
sesuai dengan hasil
yang didapatkan
dengan WEKA dan
secara manual
Uji Validasi Model Klasifikasi
WEKA hasil lebih baik
karena menghasilkan
fitur lebih banyak
daripada aplikasi
Perbedaan tidak
signifikan
Metode evaluasi dengan
cross-validation
Uji Validasi Hasil Uji Klasifikasi
Hasil uji klasifikasi
aplikasi
pengklasifikasi
sama dengan
yang dihasilkan
oleh WEKA
Uji Validasi Hasil Uji Klasifikasi
Kesalahan terjadi karena
kata/fitur yang memiliki
nilai prediksi yang lebih
tinggi di kelas lain
daripada di kelas yang
benar
Hal ini terjadi karena fitur
yang muncul pada suatu
kategori juga muncul pada
kategori yang lain
Uji Validasi Hasil Uji Klasifikasi
Contoh 1
Nilai prediksi artikel tersebut
pada kategori :
nasional sebesar 0.115,
internasional sebesar 0.001,
edukasi sebesar 0.006,
entertainment sebesar 0.877.
Contoh 2
Nilai prediksinya pada
kategori nasional hanya
0.005 sedangkan kategori
edukasi 0.995
Kesimpulan
Aplikasi berhasil diuji cobakan pada data sampel
pada 12 kategori berita dengan total sebanyak
1195 artikel yang 70% data latih dan 30% data
uji.
Aplikasi pengklasifikasi artikel berita berhasil
mengklasifikasikan artikel berita sesuai dengan
kategori beritanya.
Aplikasi mudah digunakan sehingga
memungkinkan untuk diimplementasikan dan
digunakan untuk membantu para editor berita
dalam pengklasifikasian artikel berita berbahasa
Indonesia
Model yang dibuat oleh aplikasi WEKA sedikit
lebih tinggi daripada aplikasi pengklasifikasi
artikel berita. Karena jumlah fitur yang dihasilkan
oleh aplikasi WEKA lebih banyak daripada fitur
yang dihasilkan oleh aplikasi pengklasifikasi,
namun perbedaan tidak signifikan
Evaluasi terhadap hasil uji klasifikasi yang
dilakukan oleh aplikasi pengklasifikasi artikel
berita memiliki memiliki nilai akurasi, precission,
recall, dan f-measure sebesar 87.675%,
88.21%, 87.65%, dan 87.69%.
Hasil uji klasifikasi dengan menggunakan
aplikasi pengklasifikasi artikel berita memiliki
hasil yang sama dengan aplikasi WEKA.
Kesalahan klasifikasi terjadi karena nilai
predikasi pada kelas yang benar lebih rendah
daripada kelas yang salah.
Hal ini dikarenakan banyak fitur yang sama
Referensi
Asian, J. A. (2007). Stemming Indonesian : a confix-stripping
approach. ACM Trnsactions on Asian Language Information
Processing (TALIP), 6(4), 1-33.
Dragut, E. F. (2009). Stop word and related problems in web
interface integration. Proceedings of the VLDB Endowment, 2(1), 349-360.
Hamzah, A. (2012). Klasifikasi teks dengan Naive Bayes
Classifier (NBC) untuk pengelompokkan teks berita dan abstract akademis. Seminar Nasional Aplikasi Sains dan Teknologi Periode
III. Yogyakarta.
Jian Sheu, J. (2008). An Efficient Two-Phase Spam Filtering
Method. Sciendirect.
Joko Samodra, S. S. (2009). Klasifikasi dokumen teks berbahasa
Indonesia dengan menggunakan Naive Bayes. Seminar nasional
electrical, informatics, and it's education.
Kamus Besar Bahasa Indonesia. (n.d.). Korpus. Retrieved Maret
14, 2014, from kbbi.web.id: http://kbbi.web.id/korpus
Miller, T. (2005). Data and Tekx Mining A Business Application
Approach. New Jersey, USA: Prentice Hall.
Oracle. (n.d.). Classification. Retrieved Maret 14, 2014, from
docs.oracle.com:
http://docs.oracle.com/cd/B28359_01/datamine.111/b28129/classify .htm#i1005746
Oracle. (n.d.). Clustering. Retrieved Maret 14, 2014, from
/docs.oracle.com:
http://docs.oracle.com/cd/B28359_01/datamine.111/b28129/clusteri ng.htm#DMCON008
Pitoyo, A. (2014, Januari 15 ). Jumlah pengguna internet Indonesia capai
71,19 juta pada 2013. Retrieved Maret 14, 2014, from merdeka.com:
http://www.merdeka.com/teknologi/jumlah-pengguna-internet-indonesia-capai-7119-juta-pada-2013.html
Rijsbergen, C. (1979). Information Retrieval Glasgow. Information retrival
group, Univercity of Glasgow .
Tala, a. Z. (2003). A Study of Stemming Effects on Information Retrieval in
Bahasa Indonesia. Netherlands: Master of Logic Project. Institute for Logic,
Language and Computation, Universiteit van Amsterdam.
Tan, S. &. (2006). Introduction to Data Mining. Pearson Addison
Weasley.
Weiss, S. M. (2010). Text mining: predictive methods for analyzing