APLIKASI STEMMING PADA KAMUS BAHASA INDONESIA ...
-
Upload
khangminh22 -
Category
Documents
-
view
4 -
download
0
Transcript of APLIKASI STEMMING PADA KAMUS BAHASA INDONESIA ...
APLIKASI STEMMING PADA KAMUS BAHASA INDONESIA
DENGAN PENDEKATAN ALGORITMA NAZIEF & ADRIANI
Oleh:
Fajrul Rahman
108091000077
PROGRAM SARJANA (S1) KOMPUTER
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI
SYARIF HIDAYATULLAH
JAKARTA
2013 M / 1434 H
iv
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-
BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN
SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI
ATAU LEMBAGA MANAPUN.
Jakarta, Juni 2013
Fajrul Rahman
108091000077
v
ABSTRAK
Fajrul Rahman – 108091000077. “Aplikasi Stemming Pada Kamus Bahasa
Indonesia Dengan Pendekatan Algoritma Nazief & Adriani” dibimbing
olehKhodijah Hulliyah, M.Sidan Herlino Nanang, MT.
Banyak cara untuk memperkaya kosakata bahasa Indonesia, salah satunya
dengan menggunakan kamus. Saat ini sudah banyak bentuk kamus yang ada,
diantaranya berupa buku, aplikasi kamus berbasis mobile, web, atau desktop.
Kamus yang sudah ada, biasanya hanya terdapat fitur terjemahan, sinonim,
antonim, dan sebagainya. Jarang sekali terdapat kamus yang menambahkan fitur
mendapatkan suatu kata dasar. Atas pengamatan tersebut, penulis tertarik
melakukan penelitian yaitu menerapkan proses stemming pada kamus. Penulis
tertarik pada algoritma nazief & adriani karena memiliki pola stemming yang unik
yaitu bersifat iteratif, sehingga algoritma ini dikenal dengan algoritma yang sangat
kuat dan agresif.. Penelitian yang penulis lakukan adalah dengan cara menerapkan
algoritma nazief & adriani pada kamus bahasa Indonesia berbasis web. Hasil dari
penerapan algoritma nazief & adriani tersebut diuji untuk dianalisa hasil
penelusuran kata dasarnya. Hasil pengujian algoritma nazief & adriani ini telah
dianalisa bahwa 98% masukkan menghasilkan keluaran yang sesuai dengan
harapan. Dengan demikian, banyak manfaat yang bisa diambil dari algoritma
stemming khususnya nazief & adriani untuk stemming pada kamus bahasa
Indonesia.
Kata kunci : stemming, Nazief & Adriani, algoritma
vi
KATA PENGANTAR
Assalamu’alaikum Wr. Wb.
Segala puji bagi Allah SWT yang telah memberikan segala nikmat-Nya
kepada penulis, sehingga penulis dapat menyelesaikan Skripsi ini yang berjudul
“Aplikasi Stemming Pada Kamus Bahasa Indonesia Dengan Pendekatan
Algoritma Nazief & Adriani”. Shalawat dan salam senantiasa tercurahkan kepada
Nabi Muhammad SAW yang telah membawa kita dari zaman kebodohan menuju
zaman yang berilmu pengetahuan.
Pada kesempatan ini, perkenankan penulis mengucapkan terima kasih
kepada :
1. Dr. Agus Salim, M.Si sebagai Dekan Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta.
2. Ibu Viva Arifin M.MSi sebagai Ketua Program Studi Teknik Informatika
Fakultas Sains dan Teknologi.
3. Ibu Khodijah Hulliyah, M.Si yang telah membimbing dan memberikan
saran kepada penulis dalam penulisan skripsi ini.
4. Bapak Herlino Nanang, MT yang telah membimbing penulis dengan
sabar.
5. Kedua Orang Tua yang telah memberikan dukungan, semangat, kasih
sayang, dan doa yang tiada hentinya.
vii
6. Seluruh teman-teman Prodi Teknik Informatika angkatan 2008 dan teman-
teman terdekat penulis yang telah memberikan semangat kepada penulis
dalam penulisan skripsi ini.
7. Seluruh orang-orang yang terlibat dalam pembuatan skripsi ini yang tidak
dapat penulis sebutkan satu per satu.
Penulis menyadari bahwa dalam penulisan Skripsi ini masih terdapat
kekurangan maupun kesalahan. Oleh karena itu, penulis mengharapkan saran dan
kritik yang bersifat membangun untuk meningkatkan manfaat dari tugas akhir ini.
Akhir kata penulis mengucapkan banyak terima kasih kepada semua pihak yang
telah membantu penyelesaiaan skripsi ini.
Wassalamu’alaikum Wr. Wb
Jakarta, Juni 2013
Fajrul Rahman
108091000077
viii
DAFTAR ISI
HALAMAN JUDUL .................................................................................. i
HALAMAN PERSETUJUAN ................................................................... ii
HALAMAN PERNYATAAN ................................................................... iv
ABSTRAK .................................................................................................. v
KATA PENGANTAR ................................................................................ vi
DAFTAR ISI .............................................................................................. viii
DAFTAR GAMBAR ................................................................................. xi
DAFTAR TABEL ...................................................................................... xii
BAB I PENDAHULUAN ........................................................................... 1
1.1 Latar belakang ................................................................................... 1
1.2 Rumusan Masalah ............................................................................. 4
1.3 Batasan Masalah ............................................................................... 4
1.4 Tujuan ............................................................................................... 5
1.5 Manfaat ............................................................................................. 5
1.6 Metodologi Penelitian ....................................................................... 6
1.6.1 Metode pengumpulan Data ...................................................... 6
1.6.2 Metode Pengembangan Sistem ................................................ 7
1.7 Sistematika Penulisan ....................................................................... 8
BAB II LANDASAN TEORI ..................................................................... 8
2.1 Pengertian Aplikasi ........................................................................... 11
2.2 Pengertian Algoritma........................................................................ 11
2.3 Pengertian Stemming ........................................................................ 14
2.4 Algoritma Nazief & Adriani ............................................................. 15
2.5 World Wide Web .............................................................................. 17
2.6 Perancangan Sistem .......................................................................... 18
ix
1.6.1 Bagan Alur (Flowchart) ........................................................... 18
2.7 Perancangan Basis Data .................................................................... 20
2.7.1 Konsep Dasar Basis Data ......................................................... 20
2.8 Perangkat Lunak ............................................................................... 20
2.8.1 Macromedia Dreamweaver ...................................................... 20
2.8.2PHP .......................................................................................... 21
2.8.3XAMPP .................................................................................... 22
2.8.4MySQL .................................................................................... 22
2.9 Imbuhan Dalam Bahasa Indonesia ....................................................22
2.9.1Awalan Dalam Bahasa Indonesia ............................................ 23
2.9.2Akhiran Dalam Bahasa Indonesia............................................. 28
2.9.3Awalan Dan Akhiran Dalam Bahasa Indonesia........................ 29
BAB III METODOLOGI PENELITIAN ..................................................... 31
3.1 Metode Pengumpulan Data ............................................................... 31
3.1.1 Studi Literatur .......................................................................... 31
3.1.2 Kuesioner ................................................................................. 32
3.2 Metode Pengembangan Sistem ......................................................... 32
3.2.1 Empiricism in Algorithm Design ............................................. 33
3.2.2 Implementation ........................................................................ 33
3.2.3 Modes of Empirical Assessment .............................................. 33
3.2.4 Experimental Setup .................................................................. 33
3.2.5Measure .................................................................................... 34
3.2.6Present And Analyze The Data ................................................ 34
3.2.7Conclusion ............................................................................... 34
3.3 Kerangka Berpikir ............................................................................. 35
BAB IV HASIL DAN PEMBAHASAN ...................................................... 36
4.1 Empiricism in Algorithm Design ...................................................... 36
x
4.2 Implementation.................................................................................. 39
4.3 Modes of Empirical Assessment........................................................ 42
4.4 Experimental Setup ........................................................................... 43
4.5 Measure.............................................................................................. 51
4.6 Present And Analyze The Data.......................................................... 52
4.7 Conclusion......................................................................................... 53
BAB V PENUTUP ....................................................................................... 54
5.1 Kesimpulan ............................................................................................. 54
5.2 Saran ....................................................................................................... 54
DAFTAR PUSTAKA ................................................................................... 55
LAMPIRAN .................................................................................................. 58
Lampiran A :Kuesioner................................................................................. 58
Lampiran B : Coding .................................................................................... 64
LampiranC : SK Pembimbing.......................................................................103
xi
DAFTAR GAMBAR
Gambar 3.1 Kerangka Berpikir ................................................................. 35
Gambar 4.1 Flowchart .............................................................................. 38
Gambar 4.2 Grafik .................................................................................... 52
xii
DAFTAR TABEL
Tabel 2.1 Awalan Akhiran Yang Tidak Diizinkan ............................... 17
Tabel 2.2 Simbol Flowchart .................................................................. 19
Tabel 3.1 Studi Literatur ....................................................................... 31
Tabel 4.1 Pengujian Algoritma Tahap Pertama .................................... 44
Tabel 4.2 Pengujian Algoritma Tahap Kedua ....................................... 46
1
BAB I
PENDAHULAN
1.1 Latar Belakang
Menurut Iridiastadi (2006: 1), zaman sekarang teknologi
berkembang sangat pesat. Kemajuan teknologi, mampu memudahkan
manusia dalam menyelesaikan pekerjaannya. Mereka memanfaatkan
perkembangan teknologi tersebut untuk membantu dalam menyelesaikan
pekerjaannya dalam segala hal.
Bahasa Indonesia adalah bahasa persatuan bangsa Indonesia. Dimana
kita dapat saling berkomunikasi dengan masyarakat lainnya walaupun
berbeda suku dengan kita. Bahasa Indonesia adalah bahasa yang terdapat
variasi imbuhan berupa awalan, akhiran, dan gabungan awalan dan akhiran.
Dalam bahasa Indonesia ketika kata dasar sudah diberi suatu imbuhan akan
menimbulkan arti baru yang sedikit berbeda dari kata dasarnya.
Bagi para pelajar hal ini membuat mereka sedikit kesulitan dalam
mencari suatu kata dasar yang telah diberikan suatu imbuhan beserta arti
dari kata dasar tersebut, karena dalam bahasa Indonesia dalam pencarian
suatu kata dasar kita harus membuang akhiran, awalan, maupun gabungan
awalan akhiran dalam menemukan suatu kata dasar yang telah diberikan
suatu imbuhan, sehingga mereka menggunakan kamus konvensional bahasa
Indonesia dalam membantu kesulitan mereka.
2
Sedangkan kamus konvensional bahasa Indonesia berisi ratusan
halaman yang membuat para pelajar sedikit kesulitan dan memerlukan
waktu untuk mencari kata dasar beserta arti dari kata dasar tersebut.
Hal inilah yang telah penulis lakukan sebelum penelitian, yaitu
memberikan kuesioner kepada 40 sampel (pelajar SMP dan SMA) seputar
kata dasar bahasa Indonesia. Dalam kuesioner ini penulis menanyakan
“Apakah sulit menerjemahkan kata dan mencari kata dasar dari kata
berimbuhan bahasa Indonesia? ”. Sebanyak60% sampel menjawab merasa
kesulitan. Kemudian penulis menanyakan lagi, “ kesulitan apa yang anda
rasakan dalam menerjemahkan bahasa Indonesia menggunakan kamus
konvensional?”. Sebanyak 85% sampel menjawab membutuhkan waktu
yang cukup lama.
Dari permasalahan tersebut, penulis mempunyai ide untuk membantu
dalam mempermudah kesulitan yang dihadapi melalui perkembangan
teknologi. Dalam hal ini teknologi mempunyai peranan untuk
mempermudah menyelesaikan pekerjaan kita, salah satu teknologi yang
dapat membantu permasalahan tersebut yaitu dengan menerapkan suatu
algoritma stemming dalam sebuah bahasa pemrograman yang nantinya
dapat menghasilkan suatu aplikasi yang akan mempermudah kita dalam
menerjemahkan kata dan mencari kata dasar dari kata berimbuhan bahasa
Indonesia.
3
Terdapat algoritma stemming untuk bahasa Indonesia, yaitu
algoritma porter dan algoritma nazief & adriani. Dalam hal ini penulis
mencoba menggunakan algoritma nazief & adriani, karena dari literatur
yang penulis dapatkan bahwa algoritma nazief & adriani lebih kuat dalam
pencarian kata dasar dibandingkan algoritma porter, sebagai contoh kata “di-
beri-kan” yang diturunkan dari kata dasar “beri”. Pada algoritma porter
proses stemming yang dilakukan adalah menghilangkan awalan (prefix)
terlebih dahulu sebelum akhiran (suffix), maka hasil kata dasar yang
dihasilkan dari algoritma porter adalah “ikan” (setelah menghilangkan
awalan “di” dan “ber”) dimana kata “ikan” merupakan kata dasar yang valid
yang terdapat dalam kamus, tetapi kata “ikan” bukan merupakan kata dasar
yang benar untuk kata turunan “diberikan”. Sedangkan pada algoritma
nazief & adriani proses stemming yang dilakukan adalah menghilangkan
akhiran (suffix) “kan” terlebih dahulu sebelum menghilangkan awalan
(prefix) “di”, maka pada proses stemming ini kita mendapatkan kata dasar
yang benar yaitu “beri”. Sesuai dengan pernyataan (Agusta, 2009), bahwa
algoritma nazief & adriani memiliki pola stemming yang lebih kuat dalam
hal pencarian kata dasar.
Dengan adanya permasalahan yang ada tersebut, diharapkan ide
penulis dapat memudahkan pengguna kamus bahasa Indonesia untuk
mencari informasi kata dasar pada bahasa Indonesia. Adapun judul yang
diangkat adalah “Aplikasi Stemming Pada Kamus Bahasa Indonesia Dengan
Pendekatan Algoritma Nazief & Adriani”.
4
1.2 Rumusan Masalah
Berdasarkan latar belakang di atas, maka didapatkan rumusan
masalah sebagai berikut :
1. Bagaimana mengimplementasikan algoritma stemming Nazief &
Adrianiuntuk mendapatkan kata dasar dari kata berimbuhan bahasa
Indonesia?
2. Bagaimana menghitung tingkat akurasi pada algoritma stemming Nazief
& Adriani jika diterapkan pada kamus bahasa Indonesia untuk proses
mendapatkan kata dasar?
1.3 Batasan Masalah
1. Algoritma yang digunakan adalah algoritma stemming Nazief & Adriani
2. Aplikasi ini dibangun menggunakan bahasa pemrograman php.
3. Kamus dibuat untuk bahasa Indonesia dengan memasukkan maksimal
sebanyak 300 kata
4. Metodologi yang digunakan adalah Algoritma dan Eksperimen.
5. Database yang digunakan adalah MySql.
6. Aplikasi ini hanya digunakan untuk stemming bahasa Indonesia dengan
hanya beberapa imbuhan.
7. Aplikasi hanya untuk memotong (stemm) kata kerja berimbuhan
menjadi kata dasar dan pencarian arti kata dasar tersebut.
8. Perancangan aplikasi ini tidak menyertakan IMK dalam perancangan
desainnya.
5
9. Stemming hanya digunakan pada input kata saja, bukan pada sebuah
dokumen.
10. Hasil penilaian akurasi hanya berkonsentrasi pada informasi kata dasar.
11. Tidak membandingkan dengan aplikasi stemming lainnya.
1.4 Tujuan
Tujuan penelitian yang penulis lakukan adalah :
1. Memudahkan para pelajar dalam mendapatkan kata dasar dari kata
berimbuhan bahasa Indonesia.
2. Meningkatkan nilai pelajar pada sub pokok bahasan yaitu kata
berimbuhan bahasa Indonesia.
3. Tidak hanya pelajar saja yang dapat menggunakan aplikasi ini tetapi
masyarakat umum juga dapat menggunakannya karena aplikasi ini
berbasis web yang dapat diakses kapan saja dan dimana saja.
1.5 Manfaat
Manfaat dari penelitian yang dilakukan ini adalah:
1. Bagi penulis
a. Menerapkan ilmu yang telah diperoleh pada waktu perkuliahan.
b. untuk meneliti dan mengetahui performance atau kemampuan
algoritma Nazief & Adriani yang diterapkan untuk mendapatkan
kata dasar.
6
c. Melatih kerja dan mengamati teknik-teknik yang diterapkan di
lapangan dalam bidang Teknik Informatika.
2. Bagi Pengguna
a. Memudahkan dalam mendapatkan kata dasar dan arti kata dari
kata berimbuhan bahasa Indonesia.
3. Bagi Universitas
a. Mengetahui kemampuan mahasiswa dalam menguasai materi
pelajaran yang diperoleh dibangku kuliah.
b. Mengetahui kemampuan mahasiswa dalam menerapkan ilmunya
dan sebagai bahan evaluasi.
1.6 Metodologi Penelitian
1.6.1 Metode Pengumpulan Data
Dalam rangka penelitian ini, diperlukan data-data informasi yang
relatif lengkap sebagai bahan yang dapat mendukung kebenaran
materi uraian pembahasan. Oleh karena itu sebelum melakukan
penelitian ini, dalam persiapannya terlebih dahulu dilakukan tahapan
pengumpulan data atau bahan materi penunjang. Adapun metode
pengumpulan data-data informasi yang dilakukan adalah sebagai
berikut :
a. Studi Literatur
Dimulai dengan studi kepustakaan yaitu mengumpulkan bahan-
bahan referensi baik dari buku, artikel, paper, jurnal, forum
7
maupun situs internet mengenai bahan yang akan disusun dalam
skripsi ini dan beberapa referensi lainnya untuk menunjang
pencapaian tujuan penelitian.
b. Kuesioner
Penulis melakukan pengumpulan data yang diperoleh dari
kuesioner. Kuesioner tersebut penulis sebarkan kepada 40 sampel
pada saat pra penelitian dan pasca penelitian.
1.6.2 Metode Pengembangan Sistem
Metode yang penulis gunakan dalam pengembangan sistem ini
adalah Algorithm and Experiments Methodology. (Moret, Saphiro,
2001).
Berikut ini adalah tahapan-tahapan yang akan dilakukan penulis :
1) Empiricism in Algorithm Design
Melakukan analisa pada algoritma yang akan diterapkan
pada penelitian. Pada tahapan ini, penulis melakukan pengamatan
pada studi literatur atau referensi mengenai algoritma stemming
khususnya algoritma Nazief & Adriani.
2) Implementation
Melakukan implementasi algoritma yang sudah ada serta
aturan bahasa Indonesia menjadi sebuah pseudocode yang akan
diterapkan pada bahasa pemrograman.
8
3) Modes of Empirical Assessment :
Pada tahapan ini penulis menentukan tujuan pada
penelitian, maksudnya adalah kesimpulan apa yang akan didapat
pada penelitian ini.
4) Experimental Setup
Tahapan dalam eksperimen, yaitu merencanakan
eksperimen, melakukan eksperimen, melakukan observasi dalam
eksperimen, mengumpulkan dan menganalisis data.
5) Measure
Tahapan ini yaitu pengukuran data. Penulis
mencantumkan rumus yang akan diterapkan.
6) Present and Analyze the Data
Menyajikan data dan menganalisa data.
7) Conclusion
Menarik kesimpulan dari eksperimen yang telah
dilakukan.
1.7 Sistematika Penulisan
Dalam penulisan skripsi ini dibagi menjadi lima bab dengan bebeapa sub
pokok bahasan. Adapun sistematika penulisan dari skripsi ini adalah sebagai
berikut :
9
BAB I PENDAHULUAN
Bab ini berisi pendahuluan yang terdiri dari latar belakang, perumusan
masalah, batasan masalah, tujuan dan manfaat, metode penelitian, dan
sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini berisi tentang penjelasan tentang teori-teori yang digunakan
dalam pembuatan program kamus Bahasa Indonesia menggunakan algoritma
stemming Nazief & Adriani.
BAB III METODOLOGI PENELITIAN
Bab ini berisi tentang penjelasan metodologi yang dilakukan dan
metode pengembangan sistem yang digunakan dalam menganalisa,
merancang, dan mengimplementasikan sistem.
BAB IV PEMBAHASAN
Bab ini berisi tentang penjelasan mengenai analisa permasalahan,
perancangan sistem yang akan digunakan dalam pemecahan masalah yang
terjadi, penjelasan mengenai cara-cara penggunaan dan pengujian sistem
yang dibuat.
10
BAB V PENUTUP
Bab ini berisi kesimpulan-kesimpulan yang didapat dari uraian bab-bab
sebelumnya dan saran-saran dari para pembaca untuk pengembangan sistem
ke arah yang lebih baik.
DAFTAR PUSTAKA
LAMPIRAN
11
BAB II
LANDASAN TEORI
2.1 Pengertian Aplikasi
Aplikasi adalah program yang dibuat oleh pemakai yang ditujukan
untuk melakukan suatu tugas khusus. (Jogiyanto, 2008).
2.2 Pengertian Algoritma
Menurut (Iskandar,2005) algoritma adalah urutan langkah-langkah
logis penyelesaian masalah yang disusun secara sistematis dan logis. Kata
Logis merupakan kata kunci dalam Algoritma. Langkah-langkah dalam
Algoritma harus logis dan harus dapat ditentukan nilai salah atau benarnya.
Ditinjau dari asal usul katanya, kata Algoritma sendiri mempunyai
sejarah yang unik. Orang hanya menemukan kata Algorism yang berarti
proses menghitung dengan angka arab. Seseorang dapat dikatakan Algorist
jika ia menghitung menggunakan Angka Arab. Para ahli bahasa berusaha
menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para
ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama
penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-
Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism. Al-
Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang
artinya “Buku pemugaran dan pengurangan” (The book of restoration and
12
reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar”
(Algebra) (Iskandar, 2005).
Perubahan kata dari Algorism menjadi Algorithm muncul karena kata
Algorism sering dikelirukan dengan Arithmetic, sehingga akhiran –sm
berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah
menjadi hal yang biasa, maka lambat laun kata Algorithm berangsu-rangsur
dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga
kehilangan makna kata aslinya. Dalam bahasa Indonesia, kata Algorithm
diserap menjadi Algoritma. Algoritma adalah jantung ilmu komputer atau
informatika. Banyak cabang ilmu komputer yang diacu dalam terminologi
algoritma. Namun, algoritma tidak selalu identik dengan ilmu komputer saja.
Dalam kehidupan sehari-hari pun banyak terdapat proses yang
dinyatakan dalam suatu algoritma. Misalnya, cara-cara membuat kue atau
masakan yang dinyatakan dalam suatu resep juga dapat disebut sebagai
algoritma. Pada setiap resep selalu ada urutan langkah-langkah membuat
masakan. Bila langkah-langkahnya tidak logis, tidak dapat dihasilkan
masakan yang diinginkan. Ibu-ibu yang mencoba suatu resep masakan akan
membaca satu per satu langkah-langkah pembuatannya lalu ia mengerjakan
proses sesuai yang ia baca. Secara umum, pihak (benda) yang mengerjakan
proses disebut pemroses (processor).
Pemroses tersebut dapat berupa manusia, komputer, robot atau alat-alat
elektronik lainnya. Pemroses melakukan suatu proses dengan melaksanakan
atau “mengeksekusi” algoritma yang menjabarkan proses tersebut,
13
Melaksanakan algoritma berarti mengerjakan langkah-langkah di dalam
algoritma tersebut. Pemroses mengerjakan proses sesuai dengan algoritma
yang diberikan kepadanya.
Juru masak membuat kue berdasarkan resep yang diberikan
kepadanya, pianis memainkan lagu berdasarkan papan not balok. Karena itu
suatu algoritma harus dinyatakan dalam bentuk yang dapat dimengerti oleh
pemroses. Jadi suatu pemroses harus:
1. Mengerti setiap langkah dalam Algoritma
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh
komputer, algoritma harus ditulis dalam notasi bahasa pemrograman sehingga
dinamakan program. Jadi program adalah perwujudan atau implementasi
teknis algoritma yang ditulis dalam bahasa pemrogaman tertentu sehingga
dapat dilaksanakan oleh komputer. Notasi algoritma dapat diterjemahkan ke
dalam berbagai bahasa pemrograman. Analoginya sama dengan resep
membuat kue. Sebuah resep dapat ditulis dalam bahasa apapun. Bahasa
Jepang, Inggris, Perancis, Indonesia, dan lain sebagainya. Apapun bahasanya,
kue yang dihasilkan tetap sama asalkan semua aturan pada resep diikuti.
Mengapa demikian? Karena setiap juru masak (sebagai pemroses) dapat
melakukan operasi dasar yang sama, seperti mengocok telur, menimbang
berat gula, dan lain sebagainya.
14
2.3 Pengertian Stemming
Menurut Pribadi, Adi. W (2003: 7), proses stemming adalah proses
pemotongan atau penghilangan imbuhan dari suatu kata.
Menurut Lovins (1968: 22), sebuah algoritma stemming adalah
prosedur komputasi yang mengurangi kata dengan akar yang sama ke
bentuk umum, biasanya dengan pengupasan setiap kata akhiran yang
derivasional dan infleksional.
Stemming adalah proses menghilangkan imbuhan pada suatu kata
(Rila Mandala, Erry Koryanti, Rinaldi Munir, dan Harlili, 2004)
Stemming adalah salah satu cara yang digunakan untuk
meningkatkan performa IR dengan cara mentransformasi kata-kata dalam
sebuah dokumen teks ke bentuk kata dasarnya. Algoritma stemming untuk
bahasa yang satu berbeda dengan algoritma stemming untuk bahasa
lainnya. Sebagai contoh bahasa Inggris memiliki morfologi yang berbeda
dengan bahasa Indonesia sehingga algoritma stemming untuk kedua
bahasa tersebut juga berbeda. Proses stemming pada teks berbahasa
Indonesia lebih rumit/kompleks karena terdapat variasi imbuhan yang
harus dibuang untuk mendapatkan root word ( kata dasar ) dari sebuah
kata. Sebagai contoh kata bersama, menyamaiakan distem ke root
wordnya yaitu “sama” (Agusta, 2009).
Menurut Hooper & Paice (2005: 1), dengan menggunakan algoritma
stemming, yaitu proses pemotongan kata berimbuhan. Database dalam
kamus hanya menggunakan kata dasar dan hasil terjemahannya.
15
2.4 Algoritma Nazief & Adriani
Algoritma Nazief & Adriani sebagai algoritma stemming untuk teks
berbahasa Indonesia yang memiliki kemampuan prosentase keakuratan
(presisi) lebih baik dari algoritma lainnya. Algoritma ini sangat dibutuhkan
dan menentukan dalam proses IR dalam dokumen Indonesia (Agusta, 2009).
Stemming adalah salah satu cara yang digunakan untuk meningkatkan
performa IR dengan cara mentransformasi kata-kata dalam sebuah dokumen
teks ke bentuk kata dasarnya. Algoritma stemming untuk bahasa yang satu
berbeda dengan algoritma stemming untuk bahasa lainnya. Sebagai contoh
bahasa Inggris memiliki morfologi yang berbeda dengan bahasa Indonesia
sehingga algoritma stemming untuk kedua bahasa tersebut juga berbeda.
Proses stemming pada teks berbahasa Indonesia lebih rumit/kompleks karena
terdapat variasi imbuhan yang harus dibuang untuk mendapatkan root word
(kata dasar) dari sebuah kata. Pada umumnya kata dasar pada bahasa
Indonesia terdiri dari kombinasi (Agusta, 2009):
Prefiks 1 + Prefiks 2 + Kata dasar + Sufiks 3 + Sufiks 2 + Sufiks 1
Algoritma Nazief & Adriani yang dibuat oleh Bobby Nazief dan
Mirna Adriani ini memiliki tahap-tahap sebagai berikut (Boby, Mirna, 1996):
1. Kata yang belum di stemming dicari pada kamus kata dasar. Jika kata itu
langsung ditemukan, berarti kata tersebut adalah kata dasar. Kata tersebut
dikembalikan dan algoritma dihentikan, akan tetapi jika tidak ditemukan
maka dilanjutkan ke tahapan selanjutnya.
16
2. Hilangkan Inflectional Suffiks terlebih dahulu yaitu partikel(“-lah”, “-
kah”, “-tah” atau “-pun”). Langkah ini dilakukan lagi untuk
menghilangkan Possesive Pronouns(“-ku”, “-mu”, atau “-nya”).
3. Derivational Suffiks kemudian dihilangkan. Lalu langkah ini dilanjutkan
lagi untuk mengecek apakah masih ada derivational suffiks yang tersisa,
jika ada maka dihilangkan. Jika tidak ada lagi maka dilanjutkan ke tahapan
selanjutnya.
4. Kemudian derivational prefiks dihilangkan. Lalu langkah ini dilanjutkan
lagi untuk mengecek apakah masih ada derivational prefiks yang tersisa,
jika ada maka dihilangkan, Jika tidak ada lagi maka proses dilanjutkan ke
tahapan selanjutnya.
5. Setelah tidak ada lagi imbuhan yang tersisa, maka algoritma ini dihentikan
kemudian kata dasar tersebut dicari pada kamus, jika kata dasar tersebut
ditemukan berarti algoritma ini berhasil tapi jika kata dasar tersebut tidak
ditemukan pada kamus, maka dilakukan Recoding.
6. Jika semua langkah telah dilakukan tetapi kata dasar tersebut tidak
ditemukan pada kamus juga, maka algoritma ini mengembalikan kata yang
asli sebelum dilakukan stemming.
17
Tabel 2.1. Kombinasi Awalan-Akhiran yang tidak diizinkan
Awalan Akhiran yang tidak diizinkan
be- -i
di- -an
ke- -i, -kan
me- -an
se- -i, -kan
2.5 World Wide Web
Internet adalah kelompok atau kumpulan dari jutaan komputer.
Penggunaan internet memungkinkan kita untuk mendapatkan informasi dari
komputer yang ada di dalam kelompok tersebut dengan asumsi bahwa
pemilik komputer memberikan izin akses. Untuk mendapatkan sebuah
informasi, sekumpulan protokol harus digunakan, yaitu sekumpulan aturan
yang menetapkan bagaimana suatu informasi dapat dikirim dan diterima.
Salah satu unsur yang paling umum digunakan dari internet selain e-
mail adalah World Wide Web. Dewasa ini WWW atau yang sering juga
disebut sebagai “Web” saja merupakan aplikasi internet yang paling populer.
Karena web begitu populer, banyak orang kemudian salah
mengidentikkannya dengan internet (Simarmata, 2010).
Secara teknis, web adalah sebuah sistem dengan informasi yang
disajikan dalam bentuk teks, gambar, suara, dan lain-lain yang tersimpan
18
dalam sebuah server web internet yang disajikan dalam bentuk hyperteks.
Informasi web dalam bentuk teks umumnya ditulis dalam format HTML
(Hypertext Markup Language). Informasi lainnya disajikan dalam bentuk
grafis (dalam format GIF, JPG, PNG), suara (dalam format AU, WAV), dan
objek multimedia lainnya (seperti MIDI, Shockwave, Quicktime Movie, 3D
World).
Web dapat diakses oleh perangkat lunak client web yang disebut
browser. Browser membaca halaman-halaman web yang tersimpan dalam
server web melalui protocol yang disebut HTTP (Hypertext Transfer
Protocol).
2.6 Perancangan Sistem
2.6.1 Bagan Alur (Flowchart)
Flowchart adalah untaian simbol gambar (chart) yang
menunjukan aliran (flow) dari proses terhadap data, simbol-simbol
untuk flowchart dapat di klasifikasikan menjadi simbol untuk
program dan simbol untuk sistem (peralatan hardware) (Ladjamudin,
2006). Bagan alir sistem digambar dengan menggunakan simbol-
simbol yang tampak pada tabel 2.2 berikut ini :
19
Tabel 2.2 simbol dan fungsi flowchart
Simbol Nama Fungsi
Proses Menunjukkan kegiatan proses
dan operasi program komputer
Dokumen Menunjukkan dokumen input
output baik untuk proses
manual, mekanik atau
komputer.
Manual Menunjukkan pekerjaan
manual.
Terminal Digunakan untuk
menunjukkan awal dan akhir
program
Simpanan Offline Menunjukkan simpanan
secara manual.
Keputusan Menunjukkan pengambilan
keputusan.
Garis Alur Menunjukkan arus dari proses.
20
2.7 Perancangan Basis Data
2.7.1 Konsep Dasar Basis Data
Basis data terdiri atas dua kata yaitu basis dan data. Basis dapat
diartikan Sebagai tempat atau gudang. Sedangkan data adalah fakta
dunia nyata yang mewakili suatu objek sepetri manusia, barang, hewan,
peristiwa, konsep, keadaan dan sebagainya, yang ditekan dalam bentuk
angka, huruf, simbol, teks, gambar, bunyi atau kombinasinya.
Menurut Fhatansyah (1992 : 2), basis data dapat diartikan Sebagai
berikut :
1. Himpunan kelompok data (arsip) yang saling berhubungan yang
diorganisasikan sedemikian rupa agar kelak dapat dimanfaatkan
kembali dengan cepat dan mudah.
2. Kumpulan data yang saling berhubungan yang disimpan secara
bersama sedemikian rupa dan tanpa pengulangan atau redudansi
yang tidak perlu, untul memenuhi berbagai kebutuhan.
3. Kumpulan file / tabel / arsip yang saling berhubungan yang
disimpan dalam media penyimpanan elektronik.
2.8 Perangkat Lunak
2.8.1 Macromedia Dreamweaver
Dreamweaver merupakan program profesional editor HTML visual
yang digunakan untuk mengelola situs dan menata layout halaman
web.. Pada versi Dreamweaver MX 2004, tampilannya mengalami
21
perubahan yang kaya akan warna dan area kerjanya menjadi lebih
ringkas dan efisien. Hal ini dapat dilihat dengan peletakan tombol-
tombol dan panel-panel yang dapat di minimize (sembunyikan) untuk
menghemat area kerja.
Disamping itu masih banyak terdapat penambahan fasilitas-fasilitas
lainnya yang membuat Dreamweaver lebih powerfull, seperti
kemampuan menangani penyuntingan kode dengan lebih baik,
menangani dokumen-dokemen baru seperti XHTML, kemampuan
validasi dan debug di browser, panel snippets yang berfungsi untuk
menyuntingdan menyimpan blok kode yang sering digunakan, serta
fasilitas penanganan berbagai database, dan masih banyak lagi. Karena
itu Dreamweaver menjadi pilihan utama yang direkomendasikan oleh
para pakar desainer web di seluruh dunia.
2.8.2 PHP
PHP (Hypertext Preprocessor) adalah skrip bersifat server-side
yang ditambahkan ke dalam HTML. PHP sendiri merupakan singkatan
dari Personal Home Page Tools. Skrip ini akan membuat suatu aplikasi
dapat diintegrasikan ke dalam HTML sehingga suatu halaman web
tidak lagi bersifat statis, namun menjadi bersifat dinamis. Sifat
serverside berarti pengerjaan skrip dilakukan di server, baru kemudian
hasilnya dikirim ke browser. Akhir-akhir ini PHP semakin banyak
digunakan dikarenakan PHP memiliki banyak keunggulan, diantaranya
22
kemudahannya untuk dipelajari, gratis, kecepatan yang dapat
diandalkan dan sebagainya.
2.8.3 XAMPP
XAMPP merupakan salah satu paket instalasi Apache, PHP dan
MySQL instan yang dapat kita gunakan untuk membantu proses
instalasi ketiga produk tersebut.
2.8.4 MySQL
MySQL adalah sebuah sistem untuk menyimpan data
(database). Pada dasarnya database adalah tempat dimana kita akan
“menyimpan” data yang dibutuhkan web kita. Dalam sistem informasi
database adalah sebuah kumpulan data yang tersusun secara sistematis
sehingga akan memudahkan pengguna untuk mengakses dan mengatur
sehingga akan menghasilkan sebuah informasi yang efektif dan efisien.
MySQL pada umumnya digunakan untuk membuat web dengan
dukungan PHP dan Web ini akan menggunakan database MySQL,
dimana MySQL terkenal dengan pengolahan data yang cepat walaupun
data record yang dimasukkan dalam jumlah yang banyak.
2.9 Imbuhan Dalam Bahasa Indonesia
Jenis imbuhan dalam bahasa Indonesia dapat dikelompokkan menjadi
(wikipedia, 2012):
1. Imbuhan sederhana; hanya terdiri dari salah satu awalan atau akhiran.
1. Awalan: me-, ber-, di-, ter-, ke-, pe-, per-, dan se-
23
2. Akhiran: -kan, -an, -i, -lah, dan -nya
2. Imbuhan gabungan; gabungan dari lebih dari satu awalan atau akhiran.
1. ber-an
2. di-kan dan di-i
3. diper-kan dan diper-i
4. ke-an dan ke-i
5. me-kan dan me-i
6. memper-kan dan memper-i
7. pe-an
8. per-an
9. se-an
10. ter-kan dan ter-i
2.9.1 Awalan dalam bahasa Indonesia
Awalan atau prefiks adalah sebuah afiks yang dibubuhkan pada
awal sebuah kata dasar. Kata "prefiks" sendiri diserap dari kata "prefix"
yang terdiri dari kata dasar "fix" yang berarti "membubuhi" dan prefiks
"pre-", yang berarti "sebelum".
Bahasa Indonesia terutama banyak menggunakan prefiks untuk
menurunkan sebuah kata. Dalam studi bahasa Semitik, sebuah prefiks
disebut dengan "preformatif", karena prefiks dapat mengubah bentuk
kata yang dibubuhinya (wikipedia, 2013). Macam-macam awalan:
24
a. Awalan di-
Berfungsi membentuk kata kerja, dan menyatakan makna pasif.
Contoh: diambil, diketik, ditulis, dijemput, dikelola
b. Awalan me-
Pembentukan dengan awalan me- memiliki aturan sebagai berikut:
1. tetap, jika huruf pertama kata dasar adalah l, m, n, q, r, atau w.
Contoh: me- + luluh → meluluh, me- + makan → memakan.
2. me- → mem-, jika huruf pertama kata dasar adalah b, f, p*, atau
v. Contoh: me- + baca → membaca, me- + pukul → memukul*,
me- + vonis → memvonis, me- + fasilitas + i → memfasilitasi.
3. me- → men-, jika huruf pertama kata dasar adalah c, d, j, atau t*.
Contoh: me- + datang → mendatang, me- + tiup → meniup*.
4. me- → meng-, jika huruf pertama kata dasar adalah huruf vokal,
k*, g, h. Contoh: me- + kikis → mengikis*, me- + gotong →
menggotong, me- + hias → menghias.
5. me- → menge-, jika kata dasar hanya satu suku kata. Contoh: me-
+ bom → mengebom, me- + tik → mengetik, me- + klik →
mengeklik.
6. me- → meny-, jika huruf pertama adalah s*. Contoh: me- + sapu
→ menyapu*.
Huruf dengan tanda * memiliki sifat-sifat khusus:
25
1. Dilebur jika huruf kedua kata dasar adalah huruf vokal. Contoh:
me- + tipu → menipu, me- + sapu → menyapu, me- + kira →
mengira.
2. Tidak dilebur jika huruf kedua kata dasar adalah huruf konsonan.
Contoh: me- + klarifikasi → mengklarifikasi.
c. Awalan ber-
Berfungsi membentuk kata kerja (biasanya dari kata benda, kata
sifat, dan kata kerja sendiri) Prefiks ini mengandung arti :
1. 'mempunyai'. Contoh: bernama, beristri, beruang, berjanggut
2. 'memakai'. Contoh: berbaju biru, berdasi, berbusana.
3. 'melakukan tindakan untuk diri sendiri (refleksif)'. Contoh:
berhias, bercukur, bersolek
4. 'berada dalam keadaan'. Contoh: bersenang-senang, bermalas-
malas, berpesta-ria, berleha-leha
5. 'saling', atau 'timbal-balik' (resiprok). Contoh: bergelut, bertinju,
bersalaman, berbalasan
d. Awalan pe-
Berfungsi membentuk kata benda dan kata kerja, kata sifat, dan kata
benda sendiri. Prefiks ini mendukung makna gramatikal:
1. 'pelaku tindakan seperti tersebut dalam kata dasar'. Contoh:
penguji, pemisah, pemirsa, penerjemah, penggubah, pengubah,
penatar, penyuruh, penambang.
26
2. 'alat untuk me...'. Contoh: perekat, pengukur, penghadang,
penggaris
3. 'orang yang gemar'. Contoh: penjudi, pemabuk, peminum,
pencuri, pecandu, pemadat.
4. 'orang yang di ...'. Contoh: petatar, pesuruh
5. 'alat untuk ...'. Contoh: perasa, penglihat, penggali
d. Awalan per-
Berfungsi membentuk kata kerja imperatif. Mengandung arti:
1. 'membuat jadi' (kausatif). Contoh: perbudak, perhamba, pertuan
2. 'membuat lebih'. Contoh: pertajam, perkecil, perbesar, perkuat
3. 'menbagi jadi'. Contoh: pertiga, persembilan
e. Awalan ter-
Berfungsi membentuk kata kerja (pasif) atau kata sifat. Arti yang
dimiliki antara lain ialah:
1. 'dalam keadaan di'. Contoh: terkunci, terikat, tertutup,
terpendam, tertumpuk, terlambat
2. 'dikenai tindakan secara tak sengaja'. Contoh: tertinju, terbawa,
terpukul
3. 'dapat di-'. Contoh: terangkat, termakan, tertampung
4. 'paling (superlatif)'. Contoh: terbaik, terjauh, terkuat, termahal,
terburuk.
27
f. Awalan ke-
Berfungsi membentuk kata bilangan tingkat dan kata bilangan
kumpulan, kata benda, dan kata kerja. Sebagai pembentuk kata
benda, prefiks ke- bermakna gramatikal 'yang di ... i', atau 'yang di ...
kan', seperti pada kata kekasih dan ketua.
g. Awalan se-
Awalan “se-“ berfungsi membentuk kata keterangan (adverbia),
sedangkan makna yang didapat sebagai hasil proses
pengimbuhannya adalah menyatakan:
1. Untuk mendapatkan makna “satu” awalan “se-“ diimbuhkan pada
kata benda (nomina) dan kata-kata yang menyatakan satuan
ukuran. Contoh: Dia memesan segelas bir dingin dan seporsi sate
kambing.(segelas, seporsi artinya satu gelas, satu porsi).
2. Untuk mendapat makna “seluruh atau segenap” awalan “se-“
diimbuhkan pada kata benda (nomina). Contoh: Menteri Dalam
Negeri membuka rapat kerja gubernur se-Indonesia. (se-
Indonesia artinya seluruh Indonesia).
3. Untuk mendapatkan makna “sebanding, sama, atau serupa”,
awalan “se-“ dimbuhkan pada kata sifat (adjektiva).
Contoh: Ombak setinggi bukit telah menenggelamkan kapal
nelayan itu. (setinggi artinya sama tinggi dengan bukit)
28
2.9.2 Akhiran dalam bahasa Indonesia
Macam-macam akhiran dalam bahasa Indonesia (wiktionary, 2011):
a. Akhiran –i
Akhiran -i pada umumnya dipakai bersama dengan awalan me-, di-,
per-, atau ter. Apabila akhiran -i dipakai pada suatu kata kerja tanpa
awalan, berarti kalimat yang dibentuk adalah kalimat perintah
(imperatif) dan kata kerjanya menjadi transitif:
1. “Awali karirmu dari bawah!”
2. “Jalani hidup ini dengan kepasrahan!”
b. Akhiran –an
Akhiran -an pada umumnya dipakai untuk:
1. Mengubah kata selain kata benda menjadi kata benda atau kata
yang dibendakan (sumbangan, tiupan, cairan, kuningan).
2. Membentuk kata benda menjadi kumpulan benda (lautan, durian).
c. Akhiran –kan
Akhiran -kan pada umumnya dipakai bersama dengan awalan ber-,
di-, me-, per-, atau ter-. Apabila akhiran -kan dipakai pada suatu kata
kerja tanpa awalan, berarti kalimat yang dibentuk adalah kalimat
perintah dan kata kerjanya menjadi transitif:
1. “Jalankan saja perintah itu dengan baik!”
2. “Sajikan nasi dengan lauk pauknya yang enak”.
29
2.9.3 Awalan dan akhiran dalam bahasa Indonesia
Macam-macam gabungan (awalan dan akhiran) atau konfiks dalam
bahasa Indonesia (wikipedia, 2011):
a. Konfiks per-an
Bentuk konfiks per-an dapat mengalami variasi bentuk berdasarkan:
1. Lingkungannya.
a. Contoh: persatuan, perjanjian, pelajaran, pekerjaan,
perambatan, dan lain-lain.
2. Dasar kata dari mana kata itu dibentuk.
a. Jika pembentukannya mempergunakan kata benda sebagai kata
dasar maka akan mengambil bentuk pe-an.
Contoh: pekuburan, pedesaan.
b. Jika pembentukannya berasal dari suatu kata kerja yang
mempergunakan awalan ber-, maka kata benda itu akan
mengambil bentuk per-an atau pe-an, sesuai dengan awalan
ber- dengan alomorfnya. Contoh: perbuatan, pelayaran.
c. Jika pembentukannya berasal dari satu kata kerja yang
mempergunakan awalan me-, maka ia akan mengambil bentuk
pe + N + an. Contoh: pembaharuan, penyatuan, penguburan,
pemburuan, dan lain-lain.
3. Menyatakan tempat.
a. Contoh: perhentian, pelabuhan, persembunyian, pengadilan,
perapian, percetakan.
30
4. Menyatakan hasil perbuatan.
a. Contoh: permainan, penyerahan, pertanyaan, pelantikan,
pertahanan, perhitungan.
b. Konfiks ke-an
Pada umumnya konfiks ke-an berfungsi untuk membentuk kata
benda.
1. Menyatakan tempat atau daerah.
Contoh: kedutaan, kesultanan, kementerian, keinderaan.
2. Menyatakan sesuatu hal atau peristiwa yang telah terjadi.
Contoh: kenyataan, kebersihan, ketuhanan, kewajiban, keindahan.
3. Kena atau menderita sesuatu hal.
Contoh: kehujanan, kepanasan, kesiangan, kekurangan.
4. Suatu perbuatan yang dilakukan tanpa sengaja.
Contoh: kelupaan, ketiduran, keguguran.
5. Menyatakan terlalu.
Contoh: kebesaran, ketinggian, kepahitan.
31
BAB III
METODOLOGI PENELITIAN
3.1 Metode Pengumpulan Data
Dalam menyelesaikan skripsi ini penulis memperoleh data yang di
inginkan melalui data-data yang dikumpulkan dengan metode pengumpulan
data. Metode pengumpulan data dilakukan sebagai berikut:
3.1.1 Studi Literatur
Studi kepustakaan dilakukan untuk menambah referensi
dengan cara mengumpulkan bahan-bahan referensi baik dari buku,
artikel, paper, jurnal, forum, milis, maupun situs internet mengenai
bahan yang akan disusun dalam skripsi ini dan beberapa referensi
lainnnya untuk menunjang pencapaian tujuan penelitian. Salah satu
referensi yang digunakan untuk membandingkan proses yang akan
terjadi akan dijelaskan pada tabel 3.1 berikut:
No Judul Kekurangan Kelebihan
1
Stemming Bahasa Inggris
Untuk Kamus Bahasa
Inggris-Indonesia.
a. Pengguna lain (selain
admin) tidak dapat
memberikan saran
untuk database.
Sehingga database
akan berkembang
sangat lambat.
a. Kecepatan aplikasi
tidak bergantung
pada koneksi
internet, karena
aplikasi ini berbasis
desktop.
b. Terdapat fitur untuk
32
b. Aplikasi berbasis
desktop, sehingga
tidak dapat digunakan
jika tidak
menginstallnya
memainkan musik
latar. Dengan
demikian pengguna
aplikasi tidak jenuh
untuk membuka
aplikasi.
2 Aplikasi pencarian kata
berimbuhan pada kamus
bahasa sunda dengan
menggunakan algoritma
stemming.
a. Pengguna lain (selain
admin) tidak dapat
memberikan saran
untuk database.
Sehingga database
akan berkembang
sangat lambat.
b. Aplikasi berbasis
desktop, sehingga
tidak dapat digunakan
jika tidak
menginstallnya.
c. Aplikasi belum bisa
dari bahasa sunda ke
bahasa Indonesia atau
sebaliknya.
a. Kecepatan aplikasi
tidak bergantung
pada koneksi
internet, karena
aplikasi ini berbasis
desktop.
b. Mudah digunakan
(user friendly).
c. Dapat melakukan
pencarian kata
berimbuhan bahasa
sunda.
33
3.1.2 Kuesioner
Kuesioner dilakukan pada pra penelitan dan pasca penelitian
kepada 40 sampel, yaitu pelajar (SMP dan SMA). Pengambilan
sampel dilakukan secara langsung, yaitu penulis mendatangi
langsung kepada 40 sampel tersebut dan membagikan kuesioner
yang sudah penulis siapkan, kemudian penulis mengumpulkan hasil
dari kuesioner tersebut dan mencatat hasil dari kuesionernya.
Adapun hasil dari kuesioner secara rinci terdapat di lampiran.
3.2 Metode Pengembangan Sistem
Pada tahapan ini adalah eksperimen terhadap implementasi algoritma
stemming Nazief & Adriani untuk mendapatkan kata dasar dari kata
berimbuhan bahasa Indonesia. Setelah melakukan pengamatan, maka
metodologi yang cocok pada penelitian ini adalah Algorithm and
Experiments Methodology. Berikut ini adalah tahapan-tahapan yang akan
dilakukan penulis sesuai dengan Algorithm and Experiments : The New (and
Old) Methodology(Moret, Saphiro, 2001).
3.2.1 Empiricism in Algorithm Design
Melakukan pengumpulan data dan analisa pada algoritma
yang akan diterapkan pada penelitian. Studi kepustakaan dilakukan
untuk menambah referensi dengan cara mengumpulkan bahan-bahan
referensi baik dari buku, artikel, paper, jurnal, forum, milis, maupun
34
situs internet mengenai algoritma stemming khususnya algoritma
Nazief & Adriani.
3.2.2 Implementation
Melakukan implementasi algoritma yang sudah dipelajari
pada bahasa pemrograman. Untuk mengimplementasi algoritma,
penulis akan merancang pseudocode pada tahapan ini, contoh
manual penjelasan kerja program dan interface aplikasinya.
3.2.3 Modes of Empirical Assessment
Pada tahapan ini penulis menentukantujuan pada penelitian,
yaitu kesimpulan apa yang akan didapat pada penelitian ini.
Penulis akan membatasi untuk melakukan perhitungan akurasi
pada hasil stemming dari algoritma Nazief & Adriani dan mencari
kelebihan dan kekurangan algoritma Nazief & Adriani.
3.2.4 Experimental Setup
Dalam tahapan eksperimen ini, penulis merencanakan
eksperimen yang akan kita kerjakan, melakukan eksperimen dari
data yang sudah disiapkan, melakukan pengamatan data yang telah
dieksperimenkan, dan hasil stemming dicatat untuk dianalisa
keakuratannya.
3.2.5 Measure
Pada tahapan ini penulis melakukan pengukuran data.
Penulis mencantumkan rumus yang akan digunakan dalam
menghitung tingkat akurasi algoritma stemming nazief & adriani
35
dalam mendapatkan kata dasar dari kata berimbuhan bahasa
Indonesia.
3.2.6 Present and Analyze the Data
Pada tahapan ini penulis melakukan penyajian data dengan
menampilkan grafik dari hasil eksperimen yang telah dilakukan
pada tahapan sebelumnya sesuai dengan tingkat akurasi yang
didapatkan oleh algoritma stemming nazief & adriani dalam
mendapatkan kata dasar yang akurat.
3.2.7 Conclusion
Pada tahapan ini penulis menarik kesimpulan dari
eksperimen yang telah dilakukan sebelumnya.
36
3.3 Kerangka Berpikir
Gambar 3.1 Kerangka Berpikir
Mulai
Pengumpulan Data
Kuesioner
Studi Literatur
Algorithms and Experiments Methodology
Empiricism in Algorithm
Design
Implementation
Modes of Empirical Assessment
Experimental Setup
Measure
Present and Analyze the Data
Conclusion
Selesai
37
BAB IV
HASIL DAN PEMBAHASAN
Dari pengumpulan data yang telah penulis lakukan, yaitu dimulai dari
kuesioner, dimana dari hasil kuesioner ini penulis mendapatkan data berupa 50
kata berimbuhan bahasa Indonesia dari sampel (Pelajar SMA dan SMP) dan
menyiapkan 200 kata berimbuhan lainnya dari Kamus Besar Bahasa Indonesia
Edisi Keempat yang nantinya dalam bab ini akan diuji dengan pendekatan
algoritma stemming Nazief & Adriani dalam bentuk aplikasi berbasis php yang
akan mendapatkan kata dasar dari kata berimbuhan dan hasil stemmingnya akan
dicatat untuk dianalisa keakuratannya.
Untuk mendapatkan kata dasar dari kata berimbuhan bahasa Indonesia,
maka penulis melakukannya dengan metodologi algoritma dan eksperimen (Moret
& Shapiro, 2001). Berikut tahapannya:
4.1 Empiricism in Algorithm Design
a. Proses algoritma Nazief & Adriani
Proses algoritma Nazief & Adriani terdiri dari beberapa langkah
utama, yaitu (Boby, Mirna, 1996):
1. Kata yang belum di stemming dicari pada kamus. Jika kata itu
langsung ditemukan, berarti kata tersebut adalah kata dasar. Kata
tersebut dikembalikan dan algoritma dihentikan, jika tidak ditemukan
maka proses dilanjutkan ke tahapan selanjutnya.
38
2. Menghilangkan Inflectional suffiks terlebih dahulu. Jika hal ini
berhasil dan suffiks adalah partikel (“-lah”, “-kah”, “-tah”, “-pun”),
kemudian langkah ini dilakukan lagi untuk menghilangkan inflectional
suffiks possesive pronoun suffiks (“-ku”, “-mu”, “-nya”).
3. Menghilangkan Derivational suffiks. Lalu langkah ini dilanjutkan lagi
untuk mengecek apakah masih ada derivational suffiks yang tersisa,
jika ada maka dihilangkan. Jika tidak ada lagi maka proses dilanjutkan
ke tahapan selanjutnya.
4. Kemudian menghilangkan derivational prefix. Lalu langkah ini
dilanjutkan lagi untuk mengecek apakah masih ada derivational prefix
yang tersisa, jika ada maka dihilangkan, Jika tidak ada lagi maka
proses dilanjutkan ke tahapan selanjutnya.
5. Setelah tidak ada lagi imbuhan yang tersisa, maka algoritma ini
dihentikan kemudian kata dasar tersebut dicari pada kamus, jika kata
dasar tersebut ditemukan berarti algoritma ini berhasil.
6. Jika semua langkah telah dilakukan tetapi kata dasar tersebut tidak
ditemukan pada kamus juga, maka algoritma ini mengembalikan kata
yang asli sebelum dilakukan stemming.
39
b. Flowchart algoritma Nazief & Adriani
Ya
Tidak
Ya
Tidak
Gambar 4.1 Flowchart Algoritma Nazief & Adriani
Mulai
Kata
Berimbuhan
Cek di kamus
Hilangkan
Inflection suffiks
Kata Dasar?
Hilangkan
Inflection suffiks
Possesive pronoun suffiks
Hilangkan semua
Derivation prefiks
Cek di kamus
Ada?
Kata
Berimbuhan
Kata dasar
Selesai
Hilangkan semua
Derivation suffiks
40
4.2 Implementation
Untuk mempermudah pengkodean algoritma Nazief & Adriani, maka
penulis merancang pseudocode algoritma Nazief & Adriani terlebih dahulu
berdasarkan pengumpulan informasi mengenai algoritma Nazief & Adriani.
Berikut ini adalah pseudocode algoritma Nazief & Adriani yang penulis
terapkan pada kamus bahasa Indonesia.
a. Pseudocode
input kata
if kata in database then
print kata
else
delete inflection suffiks (“-lah”, “-kah”, “-tah”, “-pun”)
delete inflection suffiks possesive pronoun suffiks (“-ku”, “-mu”, “-nya”)
delete all of derivation suffiks (“-i”, “-an”, “-kan”)
delete all of derivation prefiks (“di-“, “ke-“, “se-“, “te-“, “be-“, “me-“, “pe-“)
if kata2 in database then
print kata2
else
print kata
end if
end if
41
b. PHP
Setelah melakukan tahapan pseudocode, maka tahapan selanjutnya
penulis mengimplementasikan pseudocode algoritma Nazief & Adriani ke
dalam bahasa pemrograman php. Berikut ini adalah tampilan algoritma
Nazief & Adriani yang penulis terapkan dalam bahasa pemrograman php
dalam bentuk kamus bahasa Indonesia. Adapun source code program
secara rinci terdapat di lampiran.
42
c. Contoh Proses Kerja Algortima Nazief & Adriani
Selanjutnya penulis menjelaskan contoh manual proses kerja dari
algoritma Nazief & Adriani dalam proses mendapatkan kata dasar.
Dalam contoh ini kita akan mencari kata dasar dari kata berimbuhan
“memberikannya”. Berikut tahapan prosesnya:
a. Kata yang diinputkan tadi di cek di kamus, yaitu kata
“memberikannya” jika kata tersebut langsung ditemukan berarti kata
tersebut adalah kata dasar. Tetapi setelah di cek di kamus ternyata
kata tersebut tidak ditemukan, maka proses algoritma dilanjutkan ke
tahapan selanjutnya.
b. Pada tahapan ini akan menghilangkan inflectional suffiks berupa
partikel (lah, kah, tah, pun), dan menghilangkan inflectional suffiks
possesive pronoun berupa (ku, mu, nya). Pada kata yang diinputkan
tadi “memberikannya” terdapat partikel “nya”, pada tahapan ini akan
menghilangkan inflectional suffiks possesive pronoun berupa “nya”.
Setelah itu proses algoritma dilanjutkan ke tahapan selanjutnya.
c. Pada tahapan ini akan menghilangkan Derivational suffiks. Pada
proses sebelumnya kata yang diinputkan pertama kali sudah menjadi
kata “memberikan”, pada tahapan ini akan menghilangkan
derivational suffiks (akhiran) berupa “kan”. Setelah itu proses
algoritma dilanjutkan ke tahapan selanjutnya.
43
d. Pada tahapan ini akan menghilangkan Derivational prefiks. Pada
proses sebelumnya kata yang diinputkan pertama kali sudah menjadi
kata “memberi”, pada tahapan ini akan menghilangkan derivational
prefiks (awalan) berupa “mem”. Maka kata menjadi “beri”. Setelah
itu proses algoritma dilanjutkan ke tahapan selanjutnya.
e. Setelah tidak ada lagi imbuhan yang tersisa, maka proses algorima ini
dihentikan. Kemudian kata “beri” dicari pada kamus, jika kata
tersebut ditemukan berarti algoritma ini telah berhasil. Pada tahapan
ini kata “beri” berhasil ditemukan di kamus. Maka kita mendapatkan
hasil penelusuran kata dasar dari kata berimbuhan “memberikan”
yaitu “beri”.
4.3 Modes of Empirical Assessment
Selanjutnya penulis menentukan penilaian apa yang akan diperoleh
pada penelitian ini. Penulis menentukan bahwa pengukuran akan fokus pada
tingkat akurasi (performa) dari algoritma Nazief & Adriani dan
kesimpulannya akan menghasilkan kelebihan dan kekurangan dari algoritma
Nazief & Adriani dalam mendapatkan kata dasar dari kata berimbuhan
bahasa Indonesia.
44
4.4 Experimental Setup
Dalam tahapan perencanaan eksperimental, penulis membuat
langkah-langkah sebagai berikut:
a. Masukkan berupa sebuah kata berimbuhan bahasa Indonesia.
b. Melakukan proses algoritma
c. Keluaran berupa hasil kata dasar dan terjemahan kata.
d. Pengumpulan data untuk masukkan dilakukan dengan dua cara.
1. Mengumpulkan data dari sampel yang dikumpulkan dengan cara
menyebarkan kuesioner. Pada eksperimen pertama, penulis
memperoleh sebanyak 50 kata berimbuhan untuk diuji dalam
mendapatkan kata dasarnya.
2. Pada tahapan ini dilakukan eksperimen kedua dengan jumlah kata
sebanyak 200 kata berimbuhan yang diambil dari Kamus Besar
Bahasa Indonesia Edisi Keempat.
e. Dilakukannya eksperimen (proses mendapatkan kata dasar dan
terjemahan kata)pada data yang sudah terkumpul.
f. Setelah dilakukan eksperimen, penulis mencatat hasil stemming yang
diperoleh. Hasil stemming yang sudah dicatat, dianalisa keakuratannya
dengan menggunakan referensi buku Kamus Besar Bahasa Indonesia
Edisi Keempat karangan Pusat Bahasa Nasional 2008 serta dengan
memanfaatkan web http://badanbahasa.kemdiknas.go.id/kbbi/
45
g. Hasil stemming dianalisa akurasinya dengan perhitungan tingkat akurasi,
penulis merumuskannya sebagai berikut:
4.4.1 Eksperimen Pertama
Sesuai pada ketentuan eksperimen yang sudah penulis
jelaskan sebelumnya, bahwa eksperimen pertama dilakukan dengan
mengumpulkan data masukkan dari sampel.
Tabel 4.1. Pengujian Algoritma Nazief & Adriani
No Masukkan Kata Hasil Stemming Kata Dasar
Seharusnya Hasil
1. Bermain Main Main 1
2. Memberikan Beri Beri 1
3. Membantu Bantu Bantu 1
4. Membimbing Bimbing Bimbing 1
5. Membelikan Beli Beli 1
6. Memenuhi Penuh Penuh 1
7. Memudahkan Mudah Mudah 1
8. Menyulitkan Sulit Sulit 1
9. Mengharapkan Harap Harap 1
10. Mendorong Dorong Dorong 1
11. Menendang Tendang Tendang 1
12. Mengetuk Ketuk Ketuk 1
13. Menuliskan Tulis Tulis 1
14. Menyelesaikan Selesai Selesai 1
15. Menyampaikan Sampai Sampai 1
16. Berlari Lari Lari 1
17. Menanyakan Tanya Tanya 1
18. Memakai Pakai Pakai 1
19. Memukul Pukul Pukul 1
20. Menyapu Sapu Sapu 1
21. Mencuci Cuci Cuci 1
46
22. Membuatkan Buat Buat 1
23. Memiliki Milik Milik 1
24. Mengupas Kupas Kupas 1
25. Memperbaiki Baik Baik 1
26. Mendapatkan Dapat Dapat 1
27. Mengadakan Ada Ada 1
28. Memantau Pantau Pantau 1
29. Memesan Pesan Pesan 1
30. Membersihkan Bersih Bersih 1
31. Merencanakan Rencana Rencana 1
32. Mempersiapkan Siap Siap 1
33. Pelajaran Lajar Ajar 0
34. Mengembalikan Kembali Kembali 1
35. Berpikir Pikir Pikir 1
36. Mengotori Kotor Kotor 1
37. Memeriksa Periksa Periksa 1
38. Menghadapi Hadap Hadap 1
39. Menempuh Tempuh Tempuh 1
40. Menepati Tepat Tepat 1
41. Mendekati dekat Dekat 1
42. Berdasarkan Dasar Dasar 1
43. Kemampuan Mampu Mampu 1
44. Melainkan Lain Lain 1
45. Menetapkan Tetap Tetap 1
46. Berupaya Upaya Upaya 1
47. Memotong Potong Potong 1
48. Menutup Tutup Tutup 1
49. Bekerja Kerja Kerja 1
50. Membuka Buka Buka 1
Total Sukses 49
Notasi yang digunakan dalam penulisan tabel adalah sebagai
berikut:
1 = hasil stemming kata berimbuhan berhasil (akurat)
0 = hasil stemming kata berimbuhan tidak berhasil (tidak akurat)
47
4.4.2 Eksperimen Kedua
Pada tahapan ini dilakukan eksperimen kedua dengan jumlah
kata sebanyak 200 kata.
Tabel 4.2 Pengujian Algoritma Nazief & Adriani
No Masukan Hasil Stemming Kata Dasar
Seharusnya Hasil
1. Mengabdikan Abdi Abdi 1
2. Mengabsen Absen Absen 1
3. Mengadakan Ada Ada 1
4. Mengadili Adil Adil 1
5. Mengaduk Aduk Aduk 1
6. Mengakibatkan Akibat Akibat 1
7. Beralih Alih Alih 1
8. Mengambilkan Ambil Ambil 1
9. Mengancamnya Ancam Ancam 1
10. Beranggapan Anggap Anggap 1
11. Mengangkatnya Angkat Angkat 1
12. Mengantarkan Antar Antar 1
13. Antrean Antre Antre 1
14. Mengarahkan Arah Arah 1
15. Mengamalkan Amal Amal 1
16. Berarti Arti Arti 1
17. Pengasuhan Asuh Asuh 1
18. Peraturan Atur Atur 1
19. Pembabatan Babat Babat 1
20. Membacakan Baca Baca 1
21. Pembacokan Bacok Bacok 1
22. Pembahasan Bahas Bahas 1
23. Memperbaiki Baik Baik 1
24. Kebakaran Bakar Bakar 1
25. Dibalasnya Balas Balas 1
26. Kebangkrutan Bangkrut Bangkrut 1
27. Membangunkan Bangun Bangun 1
28. Membantahnya Bantah Bantah 1
29. Membantunya Bantu Bantu 1
30. Terbaring Baring Baring 1
31. Pembelajaran Pembelajaran Ajar 0
32. Memperbarui Baru Baru 1
33. Pelajaran Lajar Ajar 0
48
34. Membatalkan Batal Batal 1
35. Membawakannya Bawa Bawa 1
36. Membayarkan Bayar Bayar 1
37. Membebani Beban Beban 1
38. Terbebas Bebas Bebas 1
39. Membekap Bekap Bekap 1
40. Membelanya Bela Bela 1
41. Membelanjai Belanja Belanja 1
42. Pembelian Beli Beli 1
43. Dibentaknya Bentak Bentak 1
44. Berbentrokan Bentrok Bentrok 1
45. Benturan Bentur Bentur 1
46. Memberanikan Berani Berani 1
47. Memberikannya Beri Beri 1
48. Dibersihkannya Bersih Bersih 1
49. Memperbesar Besar Besar 1
50. Membiasakan Biasa Biasa 1
51. Membiayai Biaya Biaya 1
52. Membimbingnya Bimbing Bimbing 1
53. Membingkis Bingkis Bingkis 1
54. Pemblokiran Blokir Blokir 1
55. Membocorkannya Bocor Bocor 1
56. Dibodohinya Bodoh Bodoh 1
57. Membohongi Bohong Bohong 1
58. Pemboikotan Boikot Boikot 1
59. Memperbolehkan Boleh Boleh 1
60. Membongkar Bongkar Bongkar 1
61. Pengeboran Bor Bor 1
62. Membosankan Bosan Bosan 1
63. Membuangnya Buang Buang 1
64. Perbuatan Buat Buat 1
65. Membukakan Buka Buka 1
66. Membuktikannya Bukti Bukti 1
67. Membunuhnya Bunuh Bunuh 1
68. Berburu Buru Buru 1
69. Membutuhkan Butuh Butuh 1
70. Mencabuti Cabut Cabut 1
71. Mencalonkan Calon Calon 1
72. Dicampurnya Campur Campur 1
73. Mencangkoknya Cangkok Cangkok 1
74. Tercapai Capai Capai 1
75. Mencarikannya Cari Cari 1
76. Pencatatan Catat Catat 1
77. Pencegahan Cegah Cegah 1
49
78. Mencelakai Celaka Celaka 1
79. Berciuman Cium Cium 1
80. Percobaan Coba Coba 1
81. Pencoblosan Coblos Coblos 1
82. Pengecoran Cor Cor 1
83. Mencucikan Cuci Cuci 1
84. Pencukur Cukur Cukur 1
85. Pencuri Curi Curi 1
86. Mendagangkan Dagang Dagang 1
87. Mendatangi Datang Datang 1
88. Memperdebatkan Debat Debat 1
89. Mendekapnya Dekap Dekap 1
90. Berdekatan Dekat Dekat 1
91. Mendengarkan Dengar Dengar 1
92. Mengedepankan Depan Depan 1
93. Didesaknya Desak Desak 1
94. Mendiamkan Diam Diam 1
95. Mendidiknya Didik Didik 1
96. Mendiskusikan Diskusi Diskusi 1
97. Duduklah Duduk Duduk 1
98. Dukungan Dukung Dukung 1
99. Pengeditan Edit Edit 1
100. Memfungsikan Fungsi Fungsi 1
101. Menggadaikan Gadai Gadai 1
102. Mengagalkan Gagal Gagal 1
103. Penggalian Gali Gali 1
104. Menggambarkan Gambar Gambar 1
105. Diganggunya Ganggu Ganggu 1
106. Digantikan Ganti Ganti 1
107. Menggantungkan Gantung Gantung 1
108. Menggapai Gapai Gapai 1
109. Penggempuran Gempur Gempur 1
110. Menggigit Gigit Gigit 1
111. Menggiling Giling Giling 1
112. Golongan Golong Golong 1
113. Menggoreng Goreng Goreng 1
114. Digotongnya Gotong Gotong 1
115. Digugat Gugat Gugat 1
116. Menggugurkan Gugur Gugur 1
117. Menggunting Gunting Gunting 1
118. Menghabiskan Habis Habis 1
119. Berhadapan Hadap Hadap 1
120. Menghafalkan Hafal Hafal 1
121. Menghajarnya Hajar Hajar 1
50
122. Menghalangi Halang Halang 1
123. Dihalau Halau Halau 1
124. Hambatan Hambat Hambat 1
125. Kehancuran Hancur Hancur 1
126. Menghanguskan Hangus Hangus 1
127. Dihapusnya Hapus Hapus 1
128. Berharap Harap Harap 1
129. Menghasilkan Hasil Hasil 1
130. Dihasutnya Hasut Hasut 1
131. Mengecat Cat Cat 1
132. Dihempaskan Hempas Hempas 1
133. Menghiasi Hias Hias 1
134. Menghibur Hibur Hibur 1
135. Menghidupi Hidup Hidup 1
136. Kehilangan Hilang Hilang 1
137. Terhindar Hindar Hindar 1
138. Dihirupnya Hirup Hirup 1
139. Berhitung Hitung Hitung 1
140. Terhubung Hubung Hubung 1
141. Diikatnya Ikat Ikat 1
142. Mengikuti Ikut Ikut 1
143. Menginformasikan Informasi Informasi 1
144. Mengingatkan Ingat Ingat 1
145. Mengisyaratkan Isyarat Isyarat 1
146. Menjadikannya Jadi Jadi 1
147. Menjaga Jaga Jaga 1
148. Menjahit Jahit Jahit 1
149. Dijalankan Jalan Jalan 1
150. Dijanjikan Janji Janji 1
151. Berjatuhan Jatuh Jatuh 1
152. Menjauhi Jauh Jauh 1
153. Penjebolan Jebol Jebol 1
154. Penjelasan Jelas Jelas 1
155. Menjemputnya Jemput Jemput 1
156. Menjemurkan Jemur Jemur 1
157. Menjenguk Jenguk Jenguk 1
158. Menjualkan Jual Jual 1
159. Kejujuran Jujur Jujur 1
160. Berjumpa Jumpa Jumpa 1
161. Mengacaukan Kacau Kacau 1
162. Mengalahkan Kalah Kalah 1
163. Pengejaran Kejar Kejar 1
164. Dikelolanya Kelola Kelola 1
165. Mengeluarkan Keluar Keluar 1
51
166. Pengembalian Kembali Kembali 1
167. Mengenai Kena Kena 1
168. Terkepung Kepung Kepung 1
169. Mengerjakan Kerja Kerja 1
170. Menemukan Temu Temu 1
171. Mengibarkan Kibar Kibar 1
172. Mengotori Kotor Kotor 1
173. Menguasai Kuasa Kuasa 1
174. Mengumpulkan Kumpul Kumpul 1
175. Mengunjungi Kunjung Kunjung 1
176. Mengupas Kupas Kupas 1
177. Mengurangi Kurang Kurang 1
178. Melahirkan Lahir Lahir 1
179. Melamar Lamar Lamar 1
180. Melampirkan Lampir Lampir 1
181. Pelanggaran Langgar Langgar 1
182. Melangkahkan Langkah Langkah 1
183. Memainkan Main Main 1
184. Memajukan Maju Maju 1
185. Memandikan Mandi Mandi 1
186. Dimasukan Masuk Masuk 1
187. Menanyakan Tanya Tanya 1
188. Penulisan Tulis Tulis 1
189. Memukul Pukul Pukul 1
190. Menyapu Sapu Sapu 1
191. Menaikan Naik Naik 1
192. Memakai Pakai Pakai 1
193. Memanggilkan Panggil Panggil 1
194. Dipecahkan Pecah Pecah 1
195. Memecatnya Pecat Pecat 1
196. Memeriksa Periksa Periksa 1
197. Memperebutkan Rebut Rebut 1
198. Merencanakan Rencana Rencana 1
199. Menyulitkan Sulit Sulit 1
200. Menyimpan Simpan Simpan 1
Total Sukses 198
Notasi yang digunakan dalam penulisan tabel adalah sebagai
berikut:
1 = hasil stemming kata berimbuhan berhasil (akurat)
0 = hasil stemming kata berimbuhan tidak berhasil (tidak akurat)
52
4.5 Measure
4.5.1 Perhitungan Eksperimen Pertama
Berdasarkan eksperimen yang telah penulis lakukan, dapat
dihitung bahwa tingkat keberhasilan proses mendapatkan kata dasar
dari kata berimbuhan bahasa Indonesia pada algoritma Nazief &
Adriani adalah sebagai berikut.
%
Tingkat akurasi algoritma Nazief & Adriani yang diterapkan
pada kamus bahasa Indonesia adalah %.
4.5.2 Perhitungan Eksperimen Kedua
Berdasarkan eksperimen yang kedua yang telah penulis
lakukan, dapat dihitung bahwa tingkat keberhasilan proses
mendapatkan kata dasar dari kata berimbuhan bahasa Indonesia pada
algoritma Nazief & Adriani adalah sebagai berikut:
%
Tingkat akurasi algoritma Nazief & Adriani yang diterapkan
pada kamus bahasa Indonesia adalah %.
53
4.6 Present and Analyze the Data
Pada tahapan ini penulis melakukan penyajian data dengan
menampilkan grafik dari hasil eksperimen yang telah dilakukan pada
tahapan sebelumnya sesuai dengan tingkat akurasi yang didapatkan oleh
algoritma stemming nazief & adriani dalam mendapatkan kata dasar yang
akurat.
Berdasarkan perhitungan yang telah dilakukan bahwa tingkat
akurasi algoritma Nazief & Adriani pada eksperimen yang melibatkan
sampel pada eksperimen pertama, penulis menggambarkan grafiknya
sebagai berikut:
Gambar 4.2 Hasil Proses Mendapatkan Kata Dasar Algoritma Nazief & Adriani
Pada ekperimen pertama terdapat 50 percobaan pada algoritma
Nazief & Adriani, algoritma Nazief & Adriani dapat melakukan proses
stemming kata berimbuhan bahasa Indonesia dengan akurat sebanyak 49
0%
20%
40%
60%
80%
100%
120%
Eksperimen Pertama Eksperimen Kedua
Algoritma Nazief & Adriani
Hasil Proses Mendapatkan Kata Dasar
54
kata dari 50 percobaan (98% akurat). Sedangkan pada eksperimen kedua
terdapat 200 percobaan, dan melakukan proses stemming kata berimbuhan
bahasa Indonesia dengan akurat sebanyak 198 kata (98% akurat).
4.7 Conclusion
Berdasarkan analisa data yang telah penulis lakukan pada tahapan
sebelumnya mengenai eksperimen algorima Nazief & Adriani dalam proses
stemming kata berimbuhan bahasa Indonesia, baik eksperimen dengan data
yang disiapkan maupun data dari sampel, dan memiliki kelebihan dalam
memperhatikan kemungkinan adanya partikel-partikel yang mungkin
mengikuti suatu kata berimbuhan, serta kekurangan dalam hal Kesalahan
terjadi bila kata tidak ditemukan di database dan kemudian dianggap kata
dasar, padahal bukan.
Dapat diambil kesimpulan bahwa algoritma Nazief & Adriani
memiliki tingkat akurasi yang baik dalam mendapatkan kata dasar dari kata
berimbuhan bahasa Indonesia. Dengan demikian algoritma Nazief & Adriani
cocok untuk diterapkan pada kamus bahasa Indonesia sebagai alat bantu
proses mendapatkan kata dasar dari kata berimbuhan bahasa Indonesia.
55
BAB V
PENUTUP
5.1 Kesimpulan
1. Berdasarkan eksperimen data yang diambil dari Kamus Besar Bahasa
Indonesia Edisi Keempatdan dari hasil kuesioner, dimana dari hasil
pengujian tersebut tingkat akurasi algoritma Nazief & Adriani sebesar
98%, maka Algoritma Nazief & Adriani cocok untuk diterapkan pada
kamus bahasa Indonesia untuk proses mendapatkan kata dasar dari kata
berimbuhan bahasa Indonesia karena memiliki tingkat akurasi yang
baik.
2. Algoritma nazief & adriani memiliki tingkat akurasi yang lebih baik
dibandingkan algoritma porter, sebagai contoh kata “di-beri-kan” yang
diturunkan dari kata dasar “beri”. Pada algoritma porter proses
stemming yang dilakukan adalah menghilangkan awalan (prefix)
terlebih dahulu sebelum akhiran (suffix), maka hasil kata dasar yang
dihasilkan dari algoritma porter adalah “ikan” (setelah menghilangkan
awalan “di” dan “ber”) dimana kata “ikan” merupakan kata dasar yang
valid yang terdapat dalam kamus, tetapi kata “ikan” bukan merupakan
kata dasar yang benar untuk kata turunan “diberikan”. Sedangkan pada
algoritma nazief & adriani proses stemming yang dilakukan adalah
menghilangkan akhiran (suffix) “kan” terlebih dahulu sebelum
menghilangkan awalan (prefix) “di”, maka pada proses stemming ini
kita mendapatkan kata dasar yang benar yaitu “beri”.
56
5.2 Saran
1. Membuat aplikasi kamus untuk bahasa lainnya yang mudah digunakan
serta memberikan informasi lengkap yaitu, terjemahan, asal kata, kata
berimbuhan lainnya, sinonim, antonim, pengertian, dan sebagainya.
2. Memaksimalkan algoritma stemming untuk penelusuran kata dasar pada
berbagai bahasa dengan memperhatikan kecepatan proses penelusuran.
3. Mengembangkan aplikasi kamus dengan fitur stemming pada mobile
platform.
4. Mengembangkan atau memodifikasi algoritma-algoritma stemming untuk
proses stemming pada aplikasi kamus agar proses stemming menjadi lebih
cepat , semakin akurat dan efektif
57
DAFTAR PUSTAKA
Agusta, Ledy.2009. Perbandingan Algoritma Stemming Porter Dengan
AlgoritmaNazief & Adriani Untuk Stemming Dokumen Teks Bahasa
Indonesia.Jurnal diakses pada 4 Januari 2013 pukul 10.00 WIB. Dari
http://yudiagusta.files.wordpress.com/2009/11/196-201-knsi09-036
perbandingan-algoritma-stemming-porter-dengan-algoritma-nazief
adriani-untuk-stemming-dokumen-teks-bahasa-indonesia.pdf
Fhatansyah. 1992. Sistem Basis Data. Bandung : Informatika Bandung.
Iridiastadi, Hardianto. 2006. “Human Aspects in Computer Based-Systems”.
Artikel diakses pada 9 Maret 2012, pukul 11.21 WIB dari
http://www.itb.ac.id/news/762.xhtml.
Iskandar, Fahrizal. 2005. Implementasi Algoritma Kompresi Data Huffman
Untuk Memperkecil Ukuran File. Jurusan Teknik Informatika. UIN Syarif
Hidayatullah Jakarta.
Jogiyanto. 2008. Metodologi Penelitian Sistem Informasi. Yogyakarta :
Penerbit Andi.
Ladjamudin, Al Bahra Bin. 2006. Rekayasa Perangkat Lunak. Yogyakarta :
Graha Ilmu.
Lovins, J. (1968). Development of a Stemming Algorithm. Mechanical
Translation and Computational Linguistics. 11: 22-31Hooper, Rob&
Paice, Chris. 2005. The Lancaster Algorithm. diakses pada 5Januari 2013
pukul 21.00 WIB dari
http://www.comp.lancs.ac.uk/computing/research/stemming
58
Mandala, R, Koryanti, E, Munir, R dan Harlili. 2004. Sistem Stemming
Otomatis Untuk Kata dalam Bahasa Indonesia. Seminar Nasional Aplikasi
Teknologi Informasi 2004.Jurnal diakses pada 5 Januari 2013 pukul 20.00
WIB dari http://journal.uii.ac.id/index.php/Snati/article/view/1827/1607
.
Moret, B. M., & Shapiro, H. D. (2001). Algorithms and Experiments: The
New (and Old) Methodology. Journal of Universal Computer Science, vol.
7, no. 5 , 434-446
Nazief, Bobby dan Mirna Adriani. 1996. Confix-Stripping: Approach to
Stemming Algorithm for Bahasa Indonesia. Faculty of Computer Science
University of Indonesia.
Pribadi, Andi. W and Hasibuan, Zainal. A. 2003.Implementing inference
Networks for Information Retrieval System ini Indonesia Language.
Faculty of Computer Science University of Indonesia, Indonesia.
Pusat Bahasa Nasional. (2008). Kamus Besar Bahasa Indonesia Edisi
Keempat. Jakarta: Gramedia Pustaka.
Simarmara, Janner. 2010. Rekayasa Web Analisis dan Desain Sistem,
Rekayasa Informasi, Rekayasa Hypermedia, Interaksi Manusia dan
Komputer, Rekayasa Kebutuhan, Data Mining, Manajemen Proyek.
Yogyakarta ; Penerbit Andi.
Wardhana, R. R. (2007). Stemming Bahasa Inggris Untuk Kamus Bahasa
Inggris-Indonesia.
59
http://id.wikipedia.org/wiki/Wikipedia:Pedoman_ejaan_dan_penulisan_kata.
2012.
http://id.wikipedia.org/wiki/Prefiks. 2013
http://id.wiktionary.org/wiki/Wiktionary:Akhiran. 2011
http://id.wikipedia.org/wiki/Konfiks_dalam_bahasa_Indonesia. 2011
61
Kuesioner seputar aplikasi stemming pada kamus bahasa Indonesia dengan
pendekatan algoritma nazief & adriani
Kuesioner dibuat untuk kepentingan skripsi UIN Syarif Hidayatullah
Nama : Umur :
Email :
Jawablah pertanyaan berikut ini dengan menyilang (x) jawaban yang anda
anggap sesuai :
1. Apakah bahasa Indonesia penting untuk dipelajari?
a. Ya b. Tidak
2. Apakah sulit menerjemahkan kata dalam bahasa Indonesia?
a. Ya b. Tidak
3. Apakah sulit mencari kata dasar dari kata berimbuhan bahasa Indonesia?
a. Ya b. Tidak
4. Apa yang anda lakukan untuk menerjemahkan kata bahasa Indoensia?
a. Mencari di kamus Konvensioanl b. Mencari di internet
5. Kesulitan apa yang anda rasakan dalam menerjemahkan kata dalam bahasa
Indonesia menggunakan kamus konvensional?
a. Membutuhkan waktu yang lama b. Tidak tahu caranya
Terima kasih atas parsitipasinya.
62
Kuesioner seputar aplikasi stemming pada kamus bahasa Indonesia dengan
pendekatan algoritma nazief & adriani
Kuesioner dibuat untuk kepentingan skripsi UIN Syarif Hidayatullah
Nama : Umur :
Email :
Jawablah pertanyaan berikut ini dengan menyilang (x) jawaban yang anda
anggap sesuai :
1. Apakah aplikasi ini mudah digunakan?
a. Ya b. Tidak
2. Apakah aplikasi stemming ini membantu anda dalam pencarian kata
dasar?
a. Ya b. Tidak
3. Menurut anda, bagaimana tampilan dari aplikasi ini secara keseluruhan?
a. Bagus b. Tidak Bagus
Terima kasih atas parsitipasinya.
63
Hasil Kuesioner Pra Penelitian
1. Apakah bahasa Indonesia penting untuk dipelajari?
2.Apakah sulit menerjemahkan kata dalam bahasa Indonesia?
3. Apakah sulit mencari kata dasar dari kata berimbuhan bahasa Indonesia?
Ya (60%)
Tidak (40%)
Ya (60%)
Tidak (40%)
Ya (85%)
Tidak (15%)
64
4. Apa yang anda lakukan untuk menerjemahkan kata bahasa Indoensia?
5. Kesulitan apa yang anda rasakan dalam menerjemahkan kata dalam bahasa
Indonesia menggunakan kamus konvensional?
Mencari di kamus konvensional (50%)
Mencari di internet (50%)
Membutuhkan waktu yang lama (85%)
Tidak tahu caranya (15%)
65
Hasil kuesioner pasca penelitian
1. Apakah aplikasi ini mudah digunakan?
2. Apakah aplikasi stemming ini membantu anda dalam pencarian kata dasar?
3. Menurut anda, bagaimana tampilan dari aplikasi ini secara keseluruhan?
Ya (100%)
Tidak (0%)
Ya (100%)
Tidak (0%)
Bagus (80%)
Tidak Bagus (20%)
67
Lampiran Coding
1. index.php
<?php
session_start();
$title = 'Stemming Application';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $title;?></title>
<meta name="keywords" content="<?php echo $keyword;?>" />
<meta name="description" content="<?php echo $description;?>" />
<link href="templatemo_style.css" rel="stylesheet" type="text/css" />
<link href="paging.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="slider_styles.css" />
<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.1-
core.js"></script>
<script language="javascript" type="text/javascript" src="scripts/mootools-1.2-
more.js"></script>
<script language="javascript" type="text/javascript" src="scripts/slideitmoo-
1.1.js"></script>
<script language="javascript" type="text/javascript">
window.addEvents({
'domready': function(){
/* thumbnails example , div containers */
new SlideItMoo({
overallContainer: 'SlideItMoo_outer',
elementScrolled: 'SlideItMoo_inner',
thumbsContainer: 'SlideItMoo_items',
itemsVisible: 4,
68
elemsSlide: 2,
duration: 300,
itemsSelector: '.SlideItMoo_element',
itemWidth: 204,
showControls:1});
},
});
</script>
</head>
<body>
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
<div id="templatemo_header">
<div id="site_title"><h1><a href="http://www.templatemo.com">Free CSS
Templates</a></h1></div>
<?php include 'menu.php';?>
</div><!-- end of header -->
<div id="templatemo_main">
<div class="cbox_fw">
</div>
<div class="cbox_fw">
<div class="cbox_large float_l">
<h2>Welcome to Stemming Application</h2>
<p> Stemming Application</a> adalah sebuah aplikasi yang dapat membantu
anda </a> dalam mendapatkan suatu kata dasar dari kata berimbuhan bahasa
Indonesia.</a> Pada aplikasi ini tidak hanya mendapatkan kata dasar dari kata
berimbuhan bahasa Indonesia, tetapi juga dapat menerjemahkan dari kata dasar tersebut
dan juga kata berimbuhannya.
</p>
<div class="cleaner h20"></div>
<div class="cbox_small float_l">
<h5 class="tw_bullet">Stemming Application</h5>
<img src="images/kamus.jpeg" alt="marketing" class="image_frame" />
69
</div>
</div>
<div class="cleaner"></div>
</div>
</div><!-- end of main -->
</div>
</div>
<div id="templatemo_footer_wrapper">
<?php include 'footer.php';?>
</div>
</body>
</html>
2. login.php
<?php session_start();?>
<html>
<head>
<title>Stemming Application</title>
<link href="templatemo_style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
<div id="templatemo_header">
<div id="site_title"><h1><a href="">Free CSS Templates</a></h1></div>
<?php include 'menu.php';?>
</div><!-- end of header -->
<div id="templatemo_main">
70
<div class="cbox_fw">
<div class="cbox_large float_l">
<h2>Login</h2>
<div id="contact_form">
<form method="post" name="contact" action="ceklogin.php">
<label for="author">Username :</label><input type="text" id="katadasar"
name="username" class="required input_field" />
<div class="cleaner h10"></div>
<label for="author">Password
:</label><input type="password" id="katadasar" name="password" class="required
input_field" />
<div class="cleaner h10"></div>
<input type="submit" value="Login" id="submit" name="submit" class="submit_btn
float_l" /> </br>
</form>
</div>
<?php
require_once('koneksi.php');
require_once('AJAX_SERVER_stemming.php');
if(isset($_POST['katadasar']))
{
$teksAsli = $_POST['katadasar'];
//echo $teksAsli;
$length = strlen($teksAsli);
//echo $length;
$pattern = '[A-Za-z]';
$kata = '';
if(eregi($pattern,$teksAsli)){
$kata = $teksAsli;
$stemming = NAZIEF($kata);
71
$query = mysql_query("SELECT * FROM tb_katadasar WHERE katadasar =
'$stemming'") or die(mysql_error());
$data = mysql_fetch_array($query);
echo '<label style="border : 1px solid #000000;width : 100px; padding :10px;">
'.$stemming.'</label><br><br>Terjemahan Kata :<br><span style="border : 1px solid
#000000;width : 100px; padding :10px; display : block; width:auto; "> '.
$data['terjemahan_kata'].'</span>';
$kata = '';
}
}
?>
<div class="cleaner h20"></div>
</div>
<div class="cleaner"></div>
</div>
</div><!-- end of main -->
</div>
</div>
<div id="templatemo_footer_wrapper">
<?php include 'footer.php';?>
</div>
</body>
</html>
3. ceklogin.php
<?php
session_start();
72
if(isset($_POST['username']) && isset($_POST['password'])){
if($_POST['username']=='fajrul' && $_POST['password']=="123456"){
$_SESSION['user']='admin';
header("location:index.php");
}
}
else{
header("location:login.php");
}
?>
4. logout.php
<?php
session_start();
session_destroy();
header("location:index.php");
?>
5. stemm.php
<?php session_start();?>
<html>
<head>
<title>Stemming Application</title>
<link href="templatemo_style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
<div id="templatemo_header">
<div id="site_title"><h1><a href="">Free CSS Templates</a></h1></div>
<?php include 'menu.php';?>
73
</div><!-- end of header -->
<div id="templatemo_main">
<div class="cbox_fw">
<div class="cbox_large float_l">
<h2>Stemm</h2>
<div id="contact_form">
<form method="post" name="contact" action="stemm.php">
<label for="author">Masukkan Kata:</label><input type="text" id="katadasar"
name="katadasar" class="required input_field" />
<div class="cleaner h10"></div>
<input type="submit" value="Stemming" id="submit" name="submit" class="submit_btn
float_l" /> </br>
</form>
</div>
<div id="contact_form">
<form method="post" name="contact" action="stemm.php"></br>
<br></br><label for="author">Hasil Kata Dasar:</label><output type="text"
id="katadasar" name="katadasar" />
<div class="cleaner h10"></div>
</form>
</div>
74
<?php
require_once('koneksi.php');
require_once('AJAX_SERVER_stemming.php');
if(isset($_POST['katadasar']))
{
$teksAsli = $_POST['katadasar'];
//echo $teksAsli;
$length = strlen($teksAsli);
//echo $length;
$pattern = '[A-Za-z]';
$kata = '';
if(eregi($pattern,$teksAsli)){
$kata = $teksAsli;
$stemming = NAZIEF($kata);
$query = mysql_query("SELECT * FROM tb_katadasar WHERE katadasar =
'$stemming'") or die(mysql_error());
$data = mysql_fetch_array($query);
echo '<label style="border : 1px solid #000000;width : 100px; padding :10px; font-
weight:bold; color:#000000;"> '.$stemming.'</label><br><br>Terjemahan Kata
:<br><span style="border : 1px solid #000000;width : 100px; padding :10px; display :
block; width:auto; "> '.
$data['terjemahan_kata'].'</span>';
$kata = '';
}
}
?>
<div class="cleaner h20"></div>
</div>
75
</div>
<div class="cleaner"></div>
</div>
</div><!-- end of main -->
</div>
</div>
<div id="templatemo_footer_wrapper">
<?php include 'footer.php';?>
</div>
</body>
</html>
6. katadasar.php
<?php
session_start();
include "class_paging.php";
?>
<html>
<head>
<title>Stemming Application</title>
<link href="templatemo_style.css" rel="stylesheet" type="text/css" />
<link href="paging.css" rel="stylesheet" type="text/css" />
<script language="javascript">
function tambah(){
window.location = "formkatadasar.php";
}
</script>
</head>
<body>
76
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
<div id="templatemo_header">
<div id="site_title"><h1><a href="">Free CSS Templates</a></h1></div>
<?php include 'menu.php';?>
</div><!-- end of header -->
<div id="templatemo_main">
<div class="cbox_fw">
<div class="cbox_large float_l">
<h2>Tabel Kata Dasar</h2>
<input type="button" value="Tambah Kata
Dasar" onClick="tambah()"><br><br>
<table border="1">
<thead align="center">
<tr>
<td>Kata Dasar</td>
<td>Tipe Kata Dasar</td>
<td>Terjemahan Kata</td>
<td>Aksi</td>
</tr>
</thead>
<tbody>
<?php
require_once('koneksi.php');
$p = new Paging;
$batas = 20;
$posisi = $p->cariPosisi($batas);
$query = mysql_query("SELECT *
FROM tb_katadasar LIMIT $posisi,$batas") or die (mysql_error());
while($data =
mysql_fetch_array($query)){
?>
77
<tr>
<td><?php echo
$data['katadasar']?></td>
<td><?php echo
$data['tipe_katadasar']?></td>
<td><?php echo
$data['terjemahan_kata']?></td>
<td><a
href="formkatadasar.php?id=<?php echo $data['id_ktdasar']?>">Edit</a> | <a
href="aksikatadasar.php?aksi=hapus&id=<?php echo
$data['id_ktdasar']?>">Hapus</a></td>
</tr>
<?php
}
?>
</tbody>
</table>
<?php $jmldata = mysql_num_rows(mysql_query("SELECT * FROM
tb_katadasar"));
$jmlhalaman = $p->jumlahHalaman($jmldata,
$batas);
$linkHalaman = $p->navHalaman($_GET['hal'],
$jmlhalaman);
echo "<div class=hal>Hal: $linkHalaman </div><br /><br />";
?>
<div id="contact_form">
</div>
<div class="cleaner h20"></div>
</div>
<div class="cleaner"></div>
</div>
</div><!-- end of main -->
78
</div>
</div>
<div id="templatemo_footer_wrapper">
<?php include 'footer.php';?>
</div>
</body>
</html>
7. AJAX_SERVER_stemming.php
<?php
require_once('koneksi.php');
// fungsi-fungsi
/*
DP + DP + root word + DS + PP + P
DP : Derivation Prefix
DS : Derivation Suffix
PP : Possessive Pronoun (Inflection) [ku,mu,nya]
P : Particle (Inflection) [lah,kah,]
Affik = Imbuhan
Prefik = Awalan
Suffix = Akhiran
Infix = Sisipan
Konfix = Awalan dan Akhiran
Prefix Disallowed suffixes
be- -i
di- -an
ke- -i, -kan [kecuali: ke-tahu-i]
me- -an
79
se- -i,-kan
te- -an
Nazief and Adriani’s Algorithm
*/
function cekKamus($kata){
// cari di database
$sql = "SELECT * from tb_katadasar where katadasar ='$kata' LIMIT 1";
//echo $sql.'<br/>';
$result = mysql_query($sql) or die(pg_error());
if(mysql_num_rows($result)==1){
return true; // True jika ada
}else{
return false; // jika tidak ada FALSE
}
}
/*============= Stemming dengan Metode Nazief and Adriani’s Algorithm
===============================*/
/*
DP + DP + DP + root word + DS + PP + P
DP : Derivation Prefix
DS : Derivation Suffix
PP : Possessive Pronoun (Inflection) [ku,mu,nya]
P : Particle (Inflection) [lah,kah,]
*/
// Hapus Inflection Suffixes (“-lah”, “-kah”, “-ku”, “-mu”, atau “-nya”)
function Del_Inflection_Suffixes($kata){
$kataAsal = $kata;
if(eregi('([km]u|nya|[kl]ah|pun)$',$kata)){ // Cek Inflection Suffixes
$__kata = eregi_replace('([km]u|nya|[kl]ah|pun)$','',$kata);
if(eregi('([klt]ah|pun)$',$kata)){ // Jika berupa particles (“-lah”, “-kah”, “-
tah” atau “-pun”)
80
if(eregi('([km]u|nya)$',$__kata)){ // Hapus Possesive Pronouns
(“-ku”, “-mu”, atau “-nya”)
$__kata__ = eregi_replace('([km]u|nya)$','',$__kata);
return $__kata__;
}
}
return $__kata;
}
return $kataAsal;
}
// Cek Prefix Disallowed Sufixes (Kombinasi Awalan dan Akhiran yang tidak diizinkan)
function Cek_Prefix_Disallowed_Sufixes($kata){
if(eregi('^(be)[[:alpha:]]+(i)$',$kata)){ // be- dan -i
return true;
}
if(eregi('^(di)[[:alpha:]]+(an)$',$kata)){ // di- dan -an
return true;
}
if(eregi('^(ke)[[:alpha:]]+(i|kan)$',$kata)){ // ke- dan -i,-kan
return true;
}
if(eregi('^(me)[[:alpha:]]+(an)$',$kata)){ // me- dan -an
return true;
}
if(eregi('^(se)[[:alpha:]]+(i|kan)$',$kata)){ // se- dan -i,-kan
return true;
}
return false;
}
// Hapus Derivation Suffixes (“-i”, “-an” atau “-kan”)
function Del_Derivation_Suffixes($kata){
$kataAsal = $kata;
if(eregi('(i|an)$',$kata)){ // Cek Suffixes
81
$__kata = eregi_replace('(i|an)$','',$kata);
if(cekKamus($__kata)){ // Cek Kamus
return $__kata;
}
/*-- Jika Tidak ditemukan di kamus --*/
if(eregi('(kan)$',$kata)){ // cek -kan
$__kata__ = eregi_replace('(kan)$','',$kata);
if(cekKamus($__kata__)){ // Cek Kamus
return $__kata__;
}
}
if(Cek_Prefix_Disallowed_Sufixes($kata)){
return $kataAsal;
}
}
return $kataAsal;
}
// Hapus Derivation Prefix (“di-”, “ke-”, “se-”, “te-”, “be-”, “me-”, atau “pe-”)
function Del_Derivation_Prefix($kata){
$kataAsal = $kata;
/* ------ Tentukan Tipe Awalan ------------*/
if(eregi('^(di|[ks]e)',$kata)){ // Jika di-,ke-,se-
$__kata = eregi_replace('^(di|[ks]e)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*------------end “diper-”, ---------------------------------------------*/
if(eregi('^(diper)',$kata)){
$__kata = eregi_replace('^(diper)','',$kata);
82
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*-- Cek luluh -r ----------*/
$__kata = eregi_replace('^(diper)','r',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
/*------------end “diper-”, ---------------------------------------------*/
}
if(eregi('^([tmbp]e)',$kata)){ //Jika awalannya adalah “te-”, “me-”, “be-”, atau
“pe-”
/*------------ Awalan “te-”, ---------------------------------------------*/
if(eregi('^(te)',$kata)){ // Jika awalan “te-”,
/* Cara Menentukan Tipe Awalan Untuk Kata Yang Diawali
Dengan “te-”
Following Characters
Set 1 Set 2
Set 3 Set 4 Tipe Awalan
1. “-r-“ “-r-“
- - none
2. “-r-“ Vowel (aiueo)
- - ter-luluh
3. “-r-“ not(vowel or “-r-”)
“-er-“ vowel ter
4. “-r-“ not(vowel or “-r-”)
“-er-“ not vowel ter-
83
5. “-r-“ not(vowel or “-r-”)
not “-er-“ - ter
6. not(vowel or “-r-”) “-er-“
vowel - none
7. not(vowel or “-r-”) “-er-“
not vowel - te
*/
if(eregi('^(terr)',$kata)){ // 1.
return $kata;
}
if(eregi('^(ter)[aiueo]',$kata)){ // 2.
$__kata = eregi_replace('^(ter)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(ter[^aiueor]er[aiueo])',$kata)){ // 3.
$__kata = eregi_replace('^(ter)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(ter[^aiueor]er[^aiueo])',$kata)){ // 4.
$__kata = eregi_replace('^(ter)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
84
return $__kata__;
}
}
if(eregi('^(ter[^aiueor][^(er)])',$kata)){ // 5.
$__kata = eregi_replace('^(ter)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(te[^aiueor]er[aiueo])',$kata)){ // 6.
return $kata; // return none
}
if(eregi('^(te[^aiueor]er[^aiueo])',$kata)){ // 7.
$__kata = eregi_replace('^(te)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
}
/*------------end “te-”, ---------------------------------------------*/
/*------------ Awalan “me-”, ---------------------------------------------*/
if(eregi('^(me)',$kata)){ // Jika awalan “me-”,
/* Cara Menentukan Tipe Awalan Untuk Kata Yang Diawali
Dengan “me-”
Following Characters
Set 1 Set 2
Set 3 Set 4 Tipe Awalan
1. “-ng-“ Vowel [kghq]
- - meng-
85
2. “-ny-“ Vowel (aiueo)
- - meny-s
3. “-m-“ [bfpv]
- - mem-
4. “-n-“ [cdjsz]
- - men-
5. - -
- - me-
*/
if(eregi('^(meng)[aiueokghq]',$kata)){ // 1.
$__kata = eregi_replace('^(meng)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*--- cek luluh k- --------*/
$__kata = eregi_replace('^(meng)','k',$kata); // luluh k-
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(meny)',$kata)){ // 2.
$__kata = eregi_replace('^(meny)','s',$kata); // luluh s-
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
86
return $__kata__;
}
}
if(eregi('^(menge)',$kata)){ // 2.3
$__kata = eregi_replace('^(menge)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(mem)[bfpuaeoiv]',$kata)){ // 3.
$__kata = eregi_replace('^(mem)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*--- cek luluh p- --------*/
$__kata = eregi_replace('^(mem)','p',$kata); // luluh p-
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(men)[cdjsz]',$kata)){ // 4.
$__kata = eregi_replace('^(men)','',$kata);
87
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(me)',$kata)){ // 5.
$__kata = eregi_replace('^(me)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*--- cek luluh t- --------*/
$__kata = eregi_replace('^(men)','t',$kata); // luluh t-
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
}
/*------------end “me-”, ---------------------------------------------*/
/*------------ Awalan “be-”, ---------------------------------------------*/
if(eregi('^(be)',$kata)){ // Jika awalan “be-”,
88
/* Cara Menentukan Tipe Awalan Untuk Kata Yang Diawali
Dengan “be-”
Following Characters
Set 1 Set 2
Set 3 Set 4 Tipe Awalan
1. “-r-“ Vowel
- - ber-
2. “-r-“ Not Vowel
- - ber-
3. “-k-“ -
- - be-
*/
if(eregi('^(ber)[aiueo]',$kata)){ // 1.
$__kata = eregi_replace('^(ber)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
$__kata = eregi_replace('^(ber)','r',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
}
if(eregi('(ber)[^aiueo]',$kata)){ // 2.
$__kata = eregi_replace('(ber)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
89
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(be)[kl]',$kata)){ // 3.
$__kata = eregi_replace('^(be)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
}
/*------------end “be-”, ---------------------------------------------*/
/*------------ Awalan “pe-”, ---------------------------------------------*/
if(eregi('^(pe)',$kata)){ // Jika awalan “pe-”,
/* Cara Menentukan Tipe Awalan Untuk Kata Yang Diawali
Dengan “pe-”
Following Characters
Set 1 Set 2
Set 3 Set 4 Tipe Awalan
1. “-ng-“ Vowel [kghq]
- - peng-
2. “-ny-“ Vowel (aiueo)
- - peny-s
3. “-m-“ [bfpv]
- - pem-
4. “-n-“ [cdjsz]
- - pen-
5. “-r-“ -
- - per-
6. - -
- - pe-
*/
90
if(eregi('^(peng)[aiueokghq]',$kata)){ // 1.
$__kata = eregi_replace('^(peng)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*-- Cek luluh -k ----------*/
$__kata = eregi_replace('^(peng)','k',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(peny)',$kata)){ // 2.
$__kata = eregi_replace('^(peny)','s',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(penge)',$kata)){ // 2.3
$__kata = eregi_replace('^(penge)','',$kata);
91
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(pem)[bfpvaiueo]',$kata)){ // 3.
$__kata = eregi_replace('^(pem)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*-- Cek luluh -p ----------*/
$__kata = eregi_replace('^(pem)','p',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(pen)[cdjszaiueo]',$kata)){ // 4.
$__kata = eregi_replace('^(pen)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
92
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*-- Cek luluh -t ----------*/
$__kata = eregi_replace('^(pen)','t',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
if(eregi('^(per)',$kata)){ // 5.
$__kata = eregi_replace('^(per)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*-- Cek luluh -r ----------*/
$__kata = eregi_replace('^(per)','r',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
93
if(eregi('^(pe)',$kata)){ // 6.
$__kata = eregi_replace('^(pe)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
}
/*------------end “pe-”, ---------------------------------------------*/
/*------------ Awalan “memper-”, ---------------------------------------------*/
if(eregi('^(memper)',$kata)){
$__kata = eregi_replace('^(memper)','',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*-- Cek luluh -r ----------*/
$__kata = eregi_replace('^(memper)','r',$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
}
}
94
/* --- Cek Ada Tidaknya Prefik/Awalan (“di-”, “ke-”, “se-”, “te-”, “be-”, “me-”,
atau “pe-”) ------*/
if(eregi('^(di|[kstbmp]e)',$kata) == FALSE){
return $kataAsal;
}
return $kataAsal;
}
function NAZIEF($kata){
$kataAsal = $kata;
/* 1. Cek Kata di Kamus jika Ada SELESAI */
if(cekKamus($kata)){ // Cek Kamus
return $kata; // Jika Ada kembalikan
}
/* 2. Buang Infection suffixes (\-lah", \-kah", \-ku", \-mu", atau \-nya") */
$kata = Del_Inflection_Suffixes($kata);
/* 3. Buang Derivation suffix (\-i" or \-an") */
$kata = Del_Derivation_Suffixes($kata);
/* 4. Buang Derivation prefix */
$kata = Del_Derivation_Prefix($kata);
return $kata;
}
?>
8. menu.php
<?php
session_start();
95
require_once("koneksi.php");
$data = file("kata-dasar.txt");
function currentpage($page1, $page2){
if($page1 == $page2){
return 'current';
}
else {
return '';
}
}
?>
<div id="templatemo_menu">
<ul>
<li><a href="index.php" class="<?php echo
currentpage('/stemming/index.php',$_SERVER['REQUEST_URI'])?>">Home</a></li>
<li><a href="stemm.php" class="<?php echo
currentpage('/stemming/stemm.php',$_SERVER['REQUEST_URI'])?>">Stemm</a></li
>
<li><a href="saran.php" class="<?php echo
currentpage('/stemming/saran.php',$_SERVER['REQUEST_URI'])?>">Saran</a></li>
<?php if(isset($_SESSION['user'])){
if($_SESSION['user']=='admin'){
?>
<li><a href="katadasar.php" class="<?php echo
currentpage('/stemming/katadasar.php',$_SERVER['REQUEST_URI'])?>">Kata
Dasar</a></li>
<li><a href="logout.php" class="<?php echo
currentpage('/stemming/logout.php',$_SERVER['REQUEST_URI'])?>">Logout</a></li
>
<?php }
}else{?>
<li><a href="login.php" class="<?php echo
currentpage('/stemming/login.php',$_SERVER['REQUEST_URI'])?>">Login</a></li>
<?php }?>
</ul>
</div><!-- end of templatemo_menu -->
96
9. koneksi.php
<?php
/* --- Untuk Memproteksi halaman agar tidak bisa langsung dibuka --- */
/*if(eregi('koneksi.php',$_SERVER['PHP_SELF'])){
header('location:../');
}*/
?>
<?php
//membangun koneksi ke database
$con = mysql_connect("localhost","root","");
if (!$con) {
die('Koneksi ke database gagal: ' . mysql_error());
}
mysql_select_db("stemming", $con);
?>
10. formkatadasar.php
<?php
/* --- Untuk Memproteksi halaman agar tidak bisa langsung dibuka --- */
/*if(eregi('koneksi.php',$_SERVER['PHP_SELF'])){
header('location:../');
}*/
?>
<?php
//membangun koneksi ke database
$con = mysql_connect("localhost","root","");
if (!$con) {
die('Koneksi ke database gagal: ' . mysql_error());
}
mysql_select_db("stemming", $con);
?>
97
11. formsaran.php
<?php
session_start();
include "koneksi.php";
$id = '';
$nama = '';
$email = '';
$isi_pesan = '';
$aksi = 'tambah';
if(isset($_GET['id'])){
$id = $_GET['id'];
$query = mysql_query("SELECT * FROM tb_saran WHERE id_saran = $id")
or die(mysql_error());
$data = mysql_fetch_array($query);
$nama = $data['nama'];
$email = $data['email'];
$isi_pesan = $data['isi_pesan'];
$aksi = 'ubah';
}
?>
<html>
<head>
<title>Stemming Application</title>
<link href="templatemo_style.css" rel="stylesheet" type="text/css" />
<script src="tinymcpuk/jscripts/tiny_mce/tiny_mce.js" type="text/javascript"></script>
<script src="tinymcpuk/jscripts/tiny_mce/tiny_lokomedia.js"
type="text/javascript"></script>
</head>
<body>
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
98
<div id="templatemo_header">
<div id="site_title"><h1><a href="">Free CSS Templates</a></h1></div>
<?php include 'menu.php';?>
</div><!-- end of header -->
<div id="templatemo_main">
<div class="cbox_fw">
<div class="cbox_large float_l">
<h2>Form Kritik dan Saran</h2>
<div id="contact_form">
<form method="post" name="contact" action="aksisaran.php?aksi=<?php echo
$aksi;?>">
<input type="hidden" name="id" value="<?php echo $id;?>">
<label for="author">Nama</label><input type="text" id="katadasar" name="nama"
class="required input_field" value="<?php echo $nama;?>" />
<div class="cleaner h10"></div>
<label
for="author">Email</label><input type="text" id="tipekatadasar" name="email"
class="required input_field" value="<?php echo $email;?>" />
<div class="cleaner h10"></div>
<label for="author">Isi
Pesan</label><textarea name="isi_pesan"><?php echo $isi_pesan;?></textarea>
<div class="cleaner h10"></div>
<input type="submit" value="Kirim" id="submit" name="submit" class="submit_btn
float_l" /> </br>
</form>
</div>
<div class="cleaner h20"></div>
</div>
<div class="cleaner"></div>
</div>
99
</div><!-- end of main -->
</div>
</div>
<div id="templatemo_footer_wrapper">
<?php include 'footer.php';?>
</div>
</body>
</html>
12. footer.php
<div id="templatemo_footer">
Copyright © 2013 <a href="#">Fajrul R</a>
<div class="cleaner"></div>
</div>
13. aksikatadasar.php
<?php
include "koneksi.php";
$aksi = $_GET['aksi'];
if(isset($_GET['aksi'])){
if($aksi=='tambah'){
mysql_query("INSERT INTO tb_katadasar(
katadasar,
tipe_katadasar,
terjemahan_kata
)
VALUES (
'$_POST[katadasar]',
100
'$_POST[tipekatadasar]',
'$_POST[terjemahan]'
)
") or die(mysql_error());
header("location:katadasar.php");
}
if($aksi=='ubah'){
mysql_query("UPDATE tb_katadasar SET
katadasar= '$_POST[katadasar]',
tipe_katadasar=
'$_POST[tipekatadasar]',
terjemahan_kata= '$_POST[terjemahan]'
WHERE id_ktdasar = '$_POST[id]'") or die(mysql_error());
header("location:katadasar.php");
}
if($aksi=='hapus'){
mysql_query("DELETE FROM tb_katadasar WHERE
id_ktdasar='$_GET[id]'") or die(mysql_error());
header("location:katadasar.php");
}
}
?>
14. aksisaran.php
<?php
include "koneksi.php";
$aksi = $_GET['aksi'];
if(isset($_GET['aksi'])){
101
if($aksi=='tambah'){
mysql_query("INSERT INTO tb_saran(
nama,
email,
isi_pesan
)
VALUES (
'$_POST[nama]',
'$_POST[email]',
'$_POST[isi_pesan]'
)
") or die(mysql_error());
header("location:saran.php");
}
if($aksi=='ubah'){
mysql_query("UPDATE tb_saran SET
nama= '$_POST[nama]',
email= '$_POST[email]',
isi_pesan= '$_POST[isi_pesan]'
WHERE id_saran = '$_POST[id]'") or die(mysql_error());
header("location:saran.php");
}
if($aksi=='hapus'){
mysql_query("DELETE FROM tb_saran WHERE
id_saran='$_GET[id]'") or die(mysql_error());
header("location:saran.php");
}
}
?>
102
15. saran.php
<?php
session_start();
include "class_paging.php";
if($_SESSION['user']!='admin'){
header("location:formsaran.php");
}
?>
<html>
<head>
<title>Stemming Application</title>
<link href="templatemo_style.css" rel="stylesheet" type="text/css" />
<link href="paging.css" rel="stylesheet" type="text/css" />
<script language="javascript">
function tambah(){
window.location = "formsaran.php";
}
</script>
</head>
<body>
<div id="templatemo_body_wrapper">
<div id="templatemo_wrapper">
<div id="templatemo_header">
<div id="site_title"><h1><a href="">Free CSS Templates</a></h1></div>
<?php include 'menu.php';?>
</div><!-- end of header -->
<div id="templatemo_main">
<div class="cbox_fw">
<div class="cbox_large float_l">
<h2>Tabel Saran</h2>
103
<input type="button" value="Tambah Saran"
onClick="tambah()"><br><br>
<table border="1">
<thead align="center">
<tr>
<td>Nama</td>
<td>Email</td>
<td>Isi Psan</td>
<td>Aksi</td>
</tr>
</thead>
<tbody>
<?php
require_once('koneksi.php');
$p = new Paging;
$batas = 20;
$posisi = $p->cariPosisi($batas);
$query = mysql_query("SELECT *
FROM tb_saran LIMIT $posisi,$batas") or die (mysql_error());
while($data =
mysql_fetch_array($query)){
?>
<tr>
<td><?php echo
$data['nama']?></td>
<td><?php echo
$data['email']?></td>
<td><?php echo
$data['isi_pesan']?></td>
<td><a
href="formsaran.php?id=<?php echo $data['id_saran']?>">Edit</a> | <a
href="aksisaran.php?aksi=hapus&id=<?php echo $data['id_saran']?>">Hapus</a></td>
</tr>
<?php
}
?>
</tbody>
104
</table>
<?php $jmldata = mysql_num_rows(mysql_query("SELECT * FROM
tb_saran"));
$jmlhalaman = $p->jumlahHalaman($jmldata,
$batas);
$linkHalaman = $p->navHalaman($_GET['hal'],
$jmlhalaman);
echo "<div class=hal>Hal: $linkHalaman </div><br /><br />";
?>
<div id="contact_form">
</div>
<div class="cleaner h20"></div>
</div>
<div class="cleaner"></div>
</div>
</div><!-- end of main -->
</div>
</div>
<div id="templatemo_footer_wrapper">
<?php include 'footer.php';?>
</div>
</body>
</html>