APLIKASI STEMMING PADA KAMUS BAHASA INDONESIA ...

118
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

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

ii

iii

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

60

LAMPIRAN A

(Kuesioner)

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%)

66

LAMPIRAN B

(Coding)

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 &copy; 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>

105

LAMPIRAN C

(SK Pembimbing)

106