Aplikasi pendeteksi plagiarisme dalam karya tulis ilmiah dengan algoritma rabin KARP

(1)

i

APLIKASI PENDETEKSI PLAGIARISME DALAM KARYA TULIS ILMIAH DENGAN ALGORITMA RABIN KARP

SKRIPSI

Diajukan untuk memenuhi salah satu syarat

memperoleh gelar Sarjana Teknik Informatika (S.Kom.)

Program Studi Teknik Informatika

Disusun Oleh:

AGUSTINUS PILIPUS TRIYUNIANTA ARUM SURYA

125314083

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA


(2)

ii

PLAGIARISM DETECTION APPLICATION IN SCIENTIFIC WORKS

USING RABIN KARP ALGORITHM

THESIS

Presented as partial fulfillment of the requirements

to obtain the Bachelor Degree of Computer (S.Kom.)

in Informatics Engineering

Written by:

AGUSTINUS PILIPUS TRIYUNIANTA ARUM SURYA

125314083

DEPARTMENT OF INFORMATICS ENGINEERING

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA


(3)

iii

HALAMAN PERSETUJUAN


(4)

iv


(5)

v

HALAMAN MOTTO

“ Tuhan tahu apa yang kita butuhkan,

tidak perlu meminta,

b

ersyukurlah ”

Some people dream of success while others wake up and work hard

at it


(6)

vi


(7)

vii

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI


(8)

viii ABSTRAK

Berkembangnya teknologi informasi dan komunikasi yang semakin pesat menyebabkan pencarian data dan informasi semakin mudah dan cepat. Namun perkembangan teknologi informasi ini justru menimbulkan berbagai macam dampak negatif, salah satunya adalah penjiplakan karya atau sering disebut plagiat.

Penelitian ini bertujuan untuk membuat suatu sistem untuk mengantisipasi tindak plagiarisme yang semakin banyak. Salah satu algoritma yang diusulkan untuk mendeteksi plagiarisme adalah dengan algoritma Rabin Karp. Algoritma Rabin karp akan mencari kesamaan dua dokumen yang diuji dengan menampilkan presentase kesamaan dua dokumen tersebut.

Pengujian sistem ini dilakukan dengan melakukan alpha test dan beta test. Berdasarkan pengujian dengan alpha test yaitu dengan membandingkan keluaran sistem dengan perhitungan manual menghasilkan rata-rata selisih 1,63 %. Sedangkan pengujian dengan beta test yaitu kuisioner dengan 15 responden menghasilkan nilai rata-rata 3.86 skala 1-5 untuk kaitannya dengan kegunaan (perceived of usefulness) dan nilai rata-rata 4.14 skala 1-5 untuk kaitannya dengan kemudahan (perceived ease of use).


(9)

ix ABSTRACT

The development of information and communication technology that increasingly rapidly led to the search for information more easily and quickly. But the development of information technology is actually causing a variety of

negative impacts, one of which is plagiarism works.

This research aims to create a system to anticipate the acts of plagiarism that more and more. One of the proposed algorithms for detecting plagiarism is with Rabin Karp's algorithm. The Rabin karp algorithm will look for the similarity of two documents tested by presenting the equivalent percentage of the two documents.

Testing this system is done by doing alpha test and beta test. Based on the test with alpha test that is by comparing the output of the system with manual calculations yield average of 1.63% difference. While the test with the beta test is a questionnaire with 15 respondents produce an average value of 3.86 scale 1-5 for its relation with the usefulness (perceived of usefulness) and the average value of 4.14 scale 1-5 for perceived ease of use.


(10)

x

KATA PENGANTAR

Puji Syukur kehadirat Tuhan Yang Maha Esa yang telah melimpahkan rahmat-Nya, sehingga penelitian ini dapat berhasil dan selesai.

Penelitian ini dapat berjalan dari awal sampai akhir berkat adanya bimbingan, doa, dan dukungan yang diberikan oleh banyak pihak. Dalam penyelesaian penelitian ini, penulis ingin mengucapkan terima kasih kepada pihak-pihak tersebut, antara lain:

1. Sudi Mungkasi,S.Si.,M.Math.Sc.,Ph.D selaku Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.

2. Dr. Anastasia Rita selaku Ketua Program Studi Teknik Informatika Universitas Sanata Dharma Yogyakarta.

3. Ibu Agnes Maria Polina, S.Kom., M.Sc selaku dosen pembimbing penelitian yang dengan sabar memberikan kritik dan saran kepada penulis. 4. Keluarga yang tercinta, Bapak Antonius Suwondo, Ibu Sutini, Mas Sigit,

Mbak Fitri, Gabriel “Biel” yang selalu memberikan dukungan terbaik.

5. Florentina Anggraeni yang selalu mendampingi, membimbing, dan menemani penulis selama menyelesaikan penelitian ini.

6. Koh Eric yang telah membimbing dan memberikan bantuan selama menyelesaikan penelitian ini

7. Teman-teman Teknik Informatika 2012 yang selalu mendukung dan memberi motivasi.

Penulis menyadari bahwa penelitian ini masih jauh dari kata sempurna. Oleh sebab itu penulis mengharapkan adanya kritik dan saran untuk penelitian di masa mendatang.

Yogyakarta, ………


(11)

xi DAFTAR ISI

HALAMAN COVER ...i

HALAMAN COVER ... ii

HALAMAN PERSETUJUAN ... iii

SKRIPSI ... iii

HALAMAN PENGESAHAN SKRIPSI ...iv

HALAMAN MOTTO ... v

PERNYATAAN KEASLIAN KARYA ...vi

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI... vii

KARYA ILMIAH ... vii

ABSTRAK ... vii

ABSTRACT...ix

KATA PENGANTAR ... x

DAFTAR ISI...xi

DAFTAR GAMBAR ... xiv

DAFTAR TABEL ... xvi

BAB I ... 1

PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 1

1.3 Batasan Masalah ... 2

1.4 Tujuan Penelitian... 2

1.5 Metodologi Penelitian ... 2

1.6 Sistematika Penulisan ... 4

BAB II ... 5

STUDI PUSTAKA ... 5

2.1 Plagiarisme ... 5

2.2 Text Preprocessing ... 6

2.2.3 Stemming ... 6

2.2.4 Tokenizing ... 10

2.3 Algoritma String Matching... 10


(12)

xii

2.4 Rabin Karp ... 13

2.4.1 Hashing ... 14

2.4.2 Similarity ... 17

2.5 Metode Waterfall... 18

2.5.1 Definisi Waterfall ... 18

2.5.2 Tahapan Pengembangan Metode Waterfall ... 18

BAB III ... 20

PERANCANGAN SISTEM ... 20

3.1 Tahap Requirement Analysis... 20

3.1.1 Gambaran Umum Sistem... 20

3.1.2 Analisis Kebutuhan ... 20

3.1.3 Use Case ... 21

3.1.4 Flowchart... 21

3.1.5 Pemodelan Proses ... 22

3.2 Perancangan Sistem ... 25

3.2.1 Perancangan Basis Data... 25

3.2.2 Perancangan Antarmuka ... 27

4.1 Deskripsi Alat... 31

4.2 Algoritma Rabin Karp ... 31

4.3 Implementasi Basis Data ... 40

4.3.1 Table Login ... 40

4.3.2 Tabel Dokumen ... 40

4.3.3 Tabel Rootword_ina ... 41

4.3.4 Tabel Stopword_ina ... 41

4.4 Implementasi Sistem ... 41

4.4.1 Halaman Login ... 41

4.4.2 Halaman Utama ... 42

4.4.3 Halaman Deteksi dua Dokumen ... 43

4.4.4 Halaman Deteksi Dokumen di Database ... 46

4.4.5 Halaman Karya Tulis Tersimpan ... 49

4.4.6 Halaman Tambah Pengguna ... 50

BAB V ... 52


(13)

xiii

5.1 Analisa Hasil Uji Coba Sistem (Pengujian Alpha) ... 52

5.1.1 Ujicoba dokumen dengan sistem ... 52

5.1.2 Ujicoba dokumen secara manual ... 56

5.2 Analisa Hasil Uji Coba Pengguna (Pengujian Beta) ... 59

5.2.1 Hasil dan Pembahasan ... 59

BAB VI ... 73

KESIMPULAN ... 73

6.1 Kesimpulan ... 73

6.2 Saran ... 74

DAFTAR PUSTAKA ... 75


(14)

xiv

DAFTAR GAMBAR

Gambar 2.1 Waterfall menurut Pressman... 18

Gambar 3.1 Use Case aplikasi pendeteksi plagiarisme ... 21

Gambar 3.2 Flowchart aplikasi pendeteksi plagiarisme ... 22

Gambar 3.3 Data Flow Diagram level 0 ... 22

Gambar 3.4 Data Flow Diagram level 1 ... 23

Gambar 3.5 Data Flow Diagram level 2 proses 1 ... 23

Gambar 3.6 Data Flow Diagram level 2 proses 2 ... 24

Gambar 3.7 Data Flow Diagram level 2 proses 3 ... 24

Gambar 3.8 Data Flow Diagram level 2 proses 4 ... 25

Gambar 3.9 Perancangan ER Diagram ... 26

Gambar 3.10 Perancangan logikal basis data ... 26

Gambar 3.11 Perancangan halaman login ... 28

Gambar 3.12 Perancangan halaman utama aplikasi ... 29

Gambar 3.13 Perancangan halaman proses dua dokumen ... 29

Gambar 3.14 Perancangan halaman proses dokumen di database ... 30

Gambar 3.15 Perancangan halaman karya tulis tersimpan ... 30

Gambar 3.16 Perancangan halaman pengguna ... 31

Gambar 4.1 Halaman login ... 42

Gambar 4.2 Halaman utama ... 43

Gambar 4.3 Halaman deteksi dua dokumen ... 44

Gambar 4.4 Halaman deteksi dokumen di database ... 47

Gambar 4.5 Halaman karya tulis tersimpan ... 50

Gambar 4.6 Halaman pengguna ... 52

Gambar 5.1 Hasil keluaran sistem untuk pengujian 1 ... 54

Gambar 5.2 Hasil keluaran sistem untuk pengujian 2 ... 54

Gambar 5.3 Hasil keluaran sistem untuk pengujian 3 ... 55

Gambar 5.4 Hasil keluaran sistem untuk pengujian 4 ... 56

Gambar 5.5 Hasil keluaran sistem untuk pengujian 5 ... 56

Gambar 5.6 Grafik kegunaan pernyataan 1 ... 61

Gambar 5.7 Grafik kegunaan pernyataan 2 ... 62

Gambar 5.8 Grafik kegunaan pernyataan 3 ... 63


(15)

xv

Gambar 5.10 Grafik kegunaan pernyataan 5 ... 65

Gambar 5.11 Grafik kegunaan pernyataan 6 ... 67

Gambar 5.12 Grafik kemudahan pernyataan 1 ... 69

Gambar 5.13 Grafik kemudahan pernyataan 2 ... 69

Gambar 5.14 Grafik kemudahan pernyataan 3 ... 70

Gambar 5.15 Grafik kemudahan pernyataan 4 ... 71

Gambar 5.16 Grafik kemudahan pernyataan 5 ... 72


(16)

xvi

DAFTAR TABEL

Tabel 2.1 Tabel kombinasi awalan dan akhiran yang tidak diijinkan ... 7

Tabel 2.2 Tabel aturan penghapusan awalan, untuk awalan “me-“ ... 9

Tabel 2.3 Tabel aturan penghapusan awalan, untuk awalan “pe-“ ... 9

Tabel 2.4 Tabel aturan penghapusan awalan, untuk awalan “ber-“ ... 9

Tabel 2.5 Tabel aturan penghapusan awalan, untuk awalan “ter-“ ... 10

Tabel 2.6 Tabel ASCII ... 13

Tabel 3.1 Tabel login ... 27

Tabel 3.2 Tabel dokumen ... 27

Tabel 3.3 Tabel rootword_ina ... 28

Tabel 3.4 Tabel stopword ... 28

Tabel 4.1 Dua buah dokumen yang terindikasi terjadi plagiarisme ... 33

Tabel 4.2 Dua buah dokumen setelah melalui langkah case folding ... 33

Tabel 4.3 Dua buah dokumen setelah melalui langkah filtering ... 34

Tabel 4.4 Dua buah dokumen setelah melalui langkah stemming ... 35

Tabel 4.5 Dua buah dokumen setelah melalui langkah parsing kgram ... 36

Tabel 4.6 Dua buah dokumen setelah melalui langkah hashing ... 34

Tabel 4.7 Hash yang sama dalam dua buah dokumen ... 34

Tabel 4.6 Dua buah dokumen setelah melalui langkah hashing ... 34

Tabel 5.1 Pengujian dokumen dengan sistem... 57

Tabel 5.2 Pengujian dokumen secara manual... 60

Tabel 5.3 Tabel hasil kuisioner kegunaan pernyataan 1 ... 61

Tabel 5.4 Tabel hasil kuisioner kegunaan pernyataan 2 ... 62

Tabel 5.5 Tabel hasil kuisioner kegunaan pernyataan 3 ... 63

Tabel 5.6 Tabel hasil kuisioner kegunaan pernyataan 4 ... 64

Tabel 5.7 Tabel hasil kuisioner kegunaan pernyataan 5 ... 65

Tabel 5.8 Tabel hasil kuisioner kegunaan pernyataan 6 ... 66

Tabel 5.9 Tabel hasil kuisioner kemudahan pernyataan 1 ... 67

Tabel 5.10 Tabel hasil kuisioner kemudahan pernyataan 2 ... 68

Tabel 5.11 Tabel hasil kuisioner kemudahan pernyataan 3 ... 69

Tabel 5.12 Tabel hasil kuisioner kemudahan pernyataan 4 ... 70

Tabel 5.13 Tabel hasil kuisioner kemudahan pernyataan 5 ... 71


(17)

1 BAB I

PENDAHULUAN

1.1 Latar Belakang

Berkembangnya teknologi informasi dan komunikasi yang semakin pesat menyebabkan pencarian data dan informasi melalui internet menjadi semakin mudah dan cepat. Namun perkembangan teknologi informasi ini justru menimbulkan berbagai macam dampak negatif, salah satunya adalah penjiplakan karya atau sering disebut plagiat.

Plagiarisme sering dijumpai dalam sektor akademis maupun non akademis. Dalam sektor akademis, plagiarisme dianggap sebagai tindak pidana serius karena dianggap pengambilan karangan, pendapat, ide, dan gagasan orang lain. Plagiarisme secara tidak sengaja juga dapat terjadi jika dalam pembuatan karya tulis lalai dalam mencantumkan sumber pustaka dengan lengkap dan cermat. Plagiarisme belum cukup dikenali dan dipahami khususnya di kalangan mahasiswa sehingga tingkat kejadiannya cukup tinggi dan sulit dipantau.

. Kemiripan dokumen karya tulis ilmiah tidak dikataan plagiat jika menggunakan informasi yang berupa fakta umum, menuliskan kembali (dengan mengubah kalimat atau parafrase) opini orang lain dengan memberikan sumber jelas, mengutip secukupnya tulisan orang lain dengan memberikan tanda batas jelas bagian kutipan dan menuliskan sumbernya.

Tindakan plagiarisme dalam instansi, sektor akademis, maupun non akademis secara perlahan harus dicegah dan dihilangkan dengan melakukan pendeteksian plagiat secara manual maupun dengan memanfaatkan metode pencocokan string. Namun pendeteksian secara manual memiliki masalah yang cukup besar yaitu sangat tidak memungkinkan melalukan pendeteksian dokumen dengan membandingkannya dengan dokumen lain yang berjumlah ratusan bahkan sampai ribuan. Dengan demikian melakukan pendeteksian plagiarisme secara manual sangat tidak efektif.


(18)

1

Metode kedua adalah dengan melakukan pembandingan dengan sumber dokumen asli atau yang disebut dengan metode pencocokan string. Dengan metode pencocokan string dapat dikembangkan untuk merancang sebuah aplikasi pendeteksi plagiarisme. Metode pencocokan string bermacam-macam antara lain Brute Force, Boyer-Morre, Knuth-Morris-Pratt, Rabin-Karp, dan lain-lain.

Penelitian untuk pendeteksian plagiarisme sudah banyak dilakukan dengan berbagai macam algoritma, tetapi beberapa penelitian tidak mengikut sertakan proses preprocessing atau pengolahan kata terlebih dahulu dan hanya dapat melalukan proses pendeteksian untuk dua dokumen saja, hal tersebut membuat proses pendeteksian plagiarisme menjadi kurang akurat dan kurang efisien.

Dari latar belakang tersebut, penulis tertarik untuk membangun sebuah aplikasi pendeteksian plagiarisme karya tulis ilmiah dalam instansi dinas pendidikan dengan menggunakan algoritma Rabin-Karp yang dapat melakukan proses pendeteksian plagiarism lebih dari dua dokumen dan dengan melakukan proses preprocessing terlebih dahulu. Algoritma tersebut dipilih karena Rabin-Karp adalah algoritma multiple patterns search yang sangat efesien untuk pencarian string dengan pola yang banyak sehingga waktu dan keakuratan pencarian string menjadi lebih baik.

1.2 Rumusan Masalah

Berdasarkan latar belakang diatas dapat diuraikan rumusan masalah sebagai berikut:

1. Bagaimana mendesain dan membangun aplikasi pendeteksi plagiarisme dalam karya tulis ilmiah dengan metode Rabin Karp agar dapat mendeteksi tingkat kesamaan yang terdapat pada dua dokumen karya tulis ilmiah?

2. Seberapa akurat aplikasi pendeteksi plagiarisme dalam karya tulis ilmiah dengan metode Rabin Karp ini untuk mendeteksi file plagiat?


(19)

2

3. Apakah aplikasi pendeteksian plagiarism dalam karya tulis ilmiah dengan motode Rabin Karp ini bermanfaat (perceived of usefulness) dan mudah digunakan (perceived ease of use) dalam melakukan pendeteskian file?

1.3 Batasan Masalah

Terdapat beberapa batasan masalah pada penelitian ini, yaitu:

1. Membandingkan dua buah dokumen teks dengan tipe .doc dan .docx 2. Data yang diuji menggunakan Bahasa Indonesia.

3. Tidak memperhatikan sinonim atau persamaan kata pada dokumen teks. 4. Tidak meperhatikan parafrase atau kutipan dengan atau tidak

menggunakan sumber terkait

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah:

1. Mendesain dan membangun Apakah aplikasi pendeteksi plagiarisme dalam karya tulis ilmiah dengan metode Rabin Karp.

2. Mendeteksi tingkat kesamaan dua buah dokumen dengan metode Rabin Karp.

1.5 Metodologi Penelitian

Metodologi penelitian yang dilakukan penulis untuk menyelesaikan masalah adalah sebagai berikut:

a. Survei awal

Dilakukan wawancara dengan pihak terkait yang dipergunakan untuk mendesain sistem yang akan dibangun.

b. Studi pustaka

Studi pustaka dilakukan dengan mencari informasi tentang metode

Rabin Karp serta penggunaannya dalam kaitannya dengan pendeteksian plagiat dari beberapa sumber berupa buku, jurnal, maupun website.


(20)

3

c. Pengembangan Aplikasi Pendeteksi Plagiarisme

Pengembangan aplikasi pendeteksi plagiarisme menggunakan metode

Waterfall. Tahap-tahap dalam metode ini adalah: 1. Requirement Analisis

Merupakan tahap awal dalam pengembangan sistem. Pada tahap ini harus mendapatkan beberapa hal yang dianggap menunjang penelitian yang dilakukan, seperti mencari permasalahan yang ada, mengumpulkan data, wawancara dan lain-lain.

2. System Design

Tahap desain sistem membantu dalam menentukan perangkat keras, tampilan, alur kerja sistem, pengoperasian sistem, dan lain-lain yang disesuaikan dengan analisis kebutuhan tahap awal.

3. Implementation

Pada tahap ini, sistem pertama kali dikembangkan untuk menghasilkan aplikasi yang telah di desain pada tahap sebelumnya. 4. Integration & Testing

Dalam tahap ini, dilakukan pengujian sistem, sehingga akan dapat diketahui seperti apa hasil kinerja sistem yang baru ini dibandingkan dengan sistem yang lama, kemudian dapat diketahui pula apakan dalam sistem yang baru ini masih ada kelemahan yang kemudian akan dikembangkan oleh peneliti berikutnya.

5. Operation & Maintenance

Tahap akhir dalam model waterfall adalah melakukan pemeliharaan sistem. Pemeliharaan termasuk dalam memperbaiki kesalahan yang tidak ditemukan pada langkah sebelumnya


(21)

4 1.6 Sistematika Penulisan

BAB 1 : PENDAHULUAN

Bab ini berisi tentang latar belakang masalah, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian dan sistematika penulisan.

BAB II : STUDI PUSTAKA

Bab ini berisi tentang sumber acuan, penjelasan dan uraian singkat mengenai teori-teori yang berkaitan dengan topik dari tugas akhir ini.

BAB III : PERANCANGAN SISTEM

Bab ini berisi tentang proses-proses perancangan aplikasi dengan teori yang berkaitan, perancangan alur kerja aplikasi, antar muka pemakai, dan perancangan penelitian.

BAB IV : IMPLEMENTASI SISTEM

Bab ini berisi tentang implementasi basis data dan implementasi dari sistem yang akan dibuat, pembahasan sistem dan implementasi antarmuka.

BAB V : ANALISA HASIL

Bab ini berisi tentang hasil implementasi aplikasi, serta analisa hasil pengujian.

BAB V1 : PENUTUP

Bab ini berisi kesimpulan yang diambil dari analisa, desain, dan implementasi serta uji coba yang telah dilakukan. Selain itu bab ini juga berisi saran yang bermanfaat dalam pengembangan aplikasi di waktu yang akan datang.


(22)

5 BAB II

STUDI PUSTAKA

Pada bab studi pustaka ini berisi tentang sumber acuan, penjelasan dan uraian singkat mengenai teori-teori yang berkaitan dengan topik.

2.1 Plagiarisme

Plagiarisme atau sering disebut plagiat adalah penjiplakan atau pengambilan karangan, pendapat, dan sebagainya dari orang lain dan menjadikannya seolah karangan dan pendapat sendiri (KBBI, 1997).

“Plagiarisme adalah bentuk penyalahgunaan hak kekayaan intelektual milik

orang lain, yang mana karya tersebut dipresentasikan dan diakui secara tidak sah sebagai hasil karya pribadi” (Sulianta, 2007).

Dalam buku Bahasa Indonesia: Sebuah Pengantar Penulisan Ilmiah, (Utorodewo,2007) menggolongkan hal-hal berikut sebagai tindakan plagiarisme:

1. Mengakui tulisan orang lain sebagai tulisan sendiri, 2. Mengakui gagasan orang lain sebagai pemikiran sendiri, 3. Mengakui temuan orang lain sebagai kepunyaan sendiri,

4. Mengakui karya kelompok sebagai kepunyaan atau hasil sendiri, 5. Menyajikan tulisan yang sama dalam kesempatan yang berbeda tanpa

menyebutkan asal usulnya,

6. Meringkas dan memparafrasekan (mengutip tak langsung) tanpa menyebutkan sumbernya, dan

7. Meringkas dan memparafrasekan dengan menyebut sumbernya, tetapi rangkaian kalimat dan pilihan katanya masih terlalu sama dengan sumbernya.


(23)

6 2.2 Text Preprocessing

Preprocessing merupakan tahapan awal dalam mengolah data input sebelum memasuki proses selanjutnya. Preprocessing terdiri dari beberapa tahapan, yaitu: case folding, tokenizing, filtering, dan stemming. Berikut penjelasan empat tahapan dalam proses preprocessing.

2.2.1 Case Folding

Proses case folding adalah menghilangkan tanda baca maupun karakter yang ada pada kata di dalam dokumen tersebut dan semua huruf menjadi huruf kecil. (Manning, 2008).

2.2.2 Stopword Filtering

Stopword filtering merupakan salah satu dari empat tahapan dalam

preprocessing untuk menghilangkan kata yang tidak berguna dan sering muncul dalam dokumen. Stopword perlu dieliminasi untuk mengurangi waktu eksekusi query dengan cara menghindari proses

list yang panjang (Buttcher, 2010). Contoh stopword filtering dalam Bahasa Indonesia adalah dengan menghilangkan konjungsi, kata ganti orang, dan kata lainnya.

2.2.3 Stemming

Stemming merupakan bagian yang tidak terpisahkan dalam

Information Retrieval (IR). Stemming adalah salah satu cara yang digunakan untuk meningkatkan performa IR dengan cara mentransformasi kata-kata dalam sebuah dokumen teks ke bentuk kata dasarnya.

2.2.3.1 Algoritma Nazief-Adriani

Algoritma Stemming Nazief – Adriani diperkenalkan oleh Nazief dan Adriani (1996) dengan tahapan sebagai berikut: 1. Cari kata yang akan diistem dalam basis data kata dasar. Jika ditemukan maka diasumsikan kata adalah root word. Maka algoritma berhenti.

2. Selanjutnya adalah pembuangan Inflection Suffixes (“


(24)

7

particles (“-lah”, “-kah”, “-tah” atau “-pun”) dan terdapat Possesive Pronouns (“-ku”, “-mu”, atau “

-nya”), maka langkah ini diulangi lagi untuk menghapus

Possesive Pronouns.

3. Hapus Derivation Suffixes (“-i”, “-an” atau “-kan”). Jika kata ditemukan di kamus, maka algoritma berhenti. Jika tidak maka ke langkah 3a berikut ini :

a. Jika “-an” telah dihapus dan huruf terakhir dari kata

tersebut adalah “-k”, maka “-k” juga ikut dihapus. Jika kata tersebut ditemukan dalam kamus maka algoritma berhenti. Jika tidak ditemukan maka lakukan langkah 3b.

b. Akhiran yang dihapus (“-i”, “-an” atau “-kan”) dikembalikan, lanjut ke langkah 4.

4. Hapus Derivation Prefix. Jika pada langkah 3 ada sufiks yang dihapus maka pergi ke langkah 4a, jika tidak pergi ke langkah 4b.

a. Periksa tabel kombinasi awalan-akhiran yang tidak diijinkan pada Tabel 2.1. Jika ditemukan maka algoritma berhenti, jika tidak, pergi ke langkah 4b. Tabel kombinasi awalan-akhiran yang tidak diijinkan ditampilkan pada tabel berikut ini :

Awalan Akhiran yang tidak diizinkan

be- -i

di- -an

ke- -i, -kan

me- -an

se- -i, -kan

Tabel 2.1. Tabel kombinasi awalan dan akhiran yang tidak diijinkan


(25)

8

b. Tentukan tipe awalan kemudian hapus awalan. Jika awalan kedua sama dengan awalan pertama

algoritma berhenti.

c. Jika root word belum juga ditemukan lakukan langkah 5, jika sudah maka algoritma berhenti. 5. Jika semua langkah telah selesai tetapi tidak juga

berhasil maka kata awal diasumsikan sebagai root word. Proses selesai.

Tipe awalan ditentukan melalui langkah-langkah berikut: 1. Jika awalannya adalah: “di-”, “ke-”, atau “se-” maka

tipe awalannya secara berturut-turut adalah “di-”, “ke-”,

atau “se-”.

2. Jika awalannya adalah “te-”, “me-”, “be-”, atau “pe-” maka dibutuhkan sebuah proses tambahan untuk menentukan tipe awalannya.

3. Jika dua karakter pertama bukan “di-”, “ke-”, “se-”,

“te-”, “be-”, “me-”, atau“pe-” maka berhenti. Berikut adalah aturan untuk melakukan penghapusan awalan. Dengan keterangan C adalah huruf konsonan, V adalah huruf hidup, A adalah semua huruf, dan P adalah

karakter tertentu, misal ‘er’.

Aturan Kontruksi Prefix yang dihapus

1 me{l|r|w|y}V… me- 2 mem{b|f|v}… mem-

3 mempe… mem-pe

4 mem{rV|V}… me-m, me-p 5 men{c|d|j|s|z}… men-{ c|d|j|s|z }…


(26)

9

6 mengV… meng-V… | meng-kV… |(mengV-…

ifV=’e’)

7 meng{g|h|q|k}… meng-

8 mengV… meng-

9 menyV… mensy-s

10 mempA… mem-pA… dimana A!=’e’

Tabel 2.2. Tabel aturan penghapusan awalan, untuk awalan

“me-“

Aturan Kontruksi Prefix yang dihapus

1 pe{w|y}V… pe-{w|y}V... 2 perV… per-V... | pe-rV...

3 perCAP per-CAP... dimana C!= ‘r’ dan

P!= “er”

4 per CAerV… per-CAerV... dimana C!= ‘r’ 5 pem{b|f|V}… pem-{b|f|V}...

6 pem{rV|V}… pe-m{rV|V}... | pe-p{rV|V}... 7 pen{c|d|j|z}… pen-{c|d|j|z}...

8 penV… pe-nV... | pe-tV... 9 pengC… peng-C...

Tabel 2.3. Tabel aturan penghapusan awalan, untuk awalan

“pe-“

Aturan Kontruksi Prefix yang dihapus

1 berV... ber-V... | be-rV...

2 berCAP... ber-CAP... dimana C!= ‘r’ danP!= “er”

3 berCAerV... ber-CaerV... dimana C!= ‘r’

4 belajar bel-ajar

5 beC1erC2 be-C1erC2... dimana C1!={ ‘r’|‘l’}

Tabel 2.4. Tabel aturan penghapusan awalan, untuk awalan


(27)

10

Aturan Kontruksi Prefix yang dihapus

1 terV... ter-V... | te-rV...

2 terCerV... ter-CerV... dimana C!= ‘r’

3 terCP... ter-CP... dimana C!= ‘r’ danP!= ‘er’

4 teC1erC2 te-C1erC2… dimana C1=’r’

Tabel 2.5. Tabel aturan penghapusan awalan, untuk awalan

“ter-“ 2.2.4 Tokenizing

Tokenizing adalah proses pemisahan kata berdasarkan tiap kata yang menyusunnya. Pada prinsipnya proses ini adalah memisahkan setiap kata yang menyusun setiap dokumen sehingga menghasilkan suatu kata yang berdiri sendiri, baik dalam bentuk perulangan maupun tunggal (Manning, 2008). Metode tokenizing yang digunakan dalam penelitian ini adalah metode k-gram, yaitu membentuk pola kata dalam sebuah teks dengan memecah kata menjadi potongan-potongan dimana setiap potongan-potongan mengandung karakter sebanyak k. Penentuan nilai k adalah dengan melihat banyaknya banyaknya kata yang akan diolah atau di hitung nilai hashnya, semakin banyak kata yang diolah maka pemotongan kata (k) yang dipilih dapat semakin besar (Mujahidin, 2013). Hasil yang paling bagus pada pengujian adalah dengan menentukan nilai k-gram dan basis bilangan yang tidak terlalu kecil dan tidak terlalu besar.

2.3 Algoritma String Matching

Algoritma string matching atau sering disebut juga dengan algoritma pencocokan string adalah algoritma untuk melakukan pencarian semua kemunculan string dengan pendek dan panjang, untuk string pendek yang disebut pattern dan string yang lebih panjang yang disebut teks.


(28)

11

Persoalan pencarian string dirumuskan sebagai berikut (Munir, 2004) :

1. teks (text), yaitu (long) string yang panjangnya n karakter

2. pattern, yaitu string dengan panjang m karakter (m < n) yang akan dicari di dalam teks.

Cara kerjanya adalah mencari lokasi pertama di dalam teks yang bersesuaian dengan pattern. Diberikan contoh seperti dibawah:

Pattern : for

Teks : Teknik Informatika

Target

Algoritma pencarian string ini dapat juga diklasifikasikan menjadi tiga bagian menurut arah pencariannya.

1. Dari kiri ke kanan, algoritma yang termasuk kategori ini adalah: a. Algoritma Brute Force.

b. Algoritma dari Morris dan Pratt, yang kemudian dikembangkan oleh Knuth, Morris, dan Pratt.

c. Algoritma Rabin Karp

2. Dari arah kanan ke kiri, algoritma yang termasuk kategori ini adalah: a. Algoritma dari Boyer dan Moore, yang kemudian banyak

dikembangkan, menjadi Algoritma turbo Boyer-Moore, Algoritma tuned Boyer-Moore, dan Algoritma Zhu-Takaoka. 3. Dari arah yang ditentukan secara spesifik oleh algoritma yang dipakai,

algoritma yang termasuk kategori ini adalah: a. Algoritma Colussi


(29)

12

2.3.1 ASCII (American Standard Code for Information Interchange) Kode Standar Amerika untuk Pertukaran Informasi atau ASCII (American Standard Code for Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal, contohnya 124 adalah untuk karakter "|". Ia selalu digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks. Kode ASCII sebenarnya memiliki komposisi bilangan biner sebanyak 7 bit. Namun, ASCII disimpan sebagai sandi 8 bit dengan menambakan satu angka 0 sebagai bit significant paling tinggi.

Jumlah kode ASCII adalah 255 kode. Kode ASCII 0..127 merupakan kode ASCII untuk manipulasi teks; sedangkan kode ASCII 128..255 merupakan kode ASCII untuk manipulasi grafik. Kode ASCII sendiri dapat dikelompokkan lagi kedalam beberapa bagian:

1. Kode yang tidak terlihat simbolnya seperti Kode

10(Line Feed), 13(Carriage Return), 8(Tab), 32(Space).

2. Kode yang terlihat simbolnya seperti abjad (A..Z), numerik (0..9), karakter khusus

(~!@#$%^&*()_+?:”{}).

3. Kode yang tidak ada di keyboard namun dapat ditampilkan. Kode ini umumnya untuk kode-kode grafik.


(30)

13

Tabel 2.6 Tabel ASCII.

2.4 Rabin Karp

Algoritma Rabin Karp dibuat oleh Michael O. Rabin dan Richard M. Karp pada tahun 1987 dengan memanfaatkan metode hashing dalam pengoperasiannya untuk mekukan pencarian kata yang mecari pola berupa substring. Algoritma Rabin Karp efektif dalam melakukan pencocokan kata dengan pola yang banyak. Dengan menggunakan metode hashing, kecepatan pencarian pola dapat dilakukan secara lebih cepat.

Menurut (Abdeen, 2011) pada prinsipnya algoritma Rabin-Karp menghitung sebuah fungsi hash untuk mencari pola didalam sebuah teks yang diberikan. Setiap karakter M subsequence dari pada teks akan dikomparasi, jika nilai hash tidak sama algoritma akan menghitung nilai

hash untuk karakter M subsequence berikutnya. Dan jika nilai hash sama maka algoritma akan melakukan perbandingan secara brute-force antara


(31)

14

pola dan karakter M subsequence, dengan cara ini hanya akan ada satu perbandingan per teks subsequence dan brute-force hanya dibutuhkan jika nilai hash cocok atau sama. (Jain, et., al, 2012).

Algoritma Rabin Karp adalah algoritma pencocokan string yang menggunakan fungsi hash sebagai pembanding antara string yang dicari (m) dengan substring pada teks (n). Apabila nilai hash keduanya sama maka akan dilakukan perbandingan sekali lagi terhadap karakter-karakternya. Apabila hasil keduanya tidak sama, maka substring akan bergeser ke kanan. Pergeseran dilakukan sebanyak (n-m) kali. Perhitungan nilai hash yang efisien pada saat pergeseran akan mempengaruhi performa dari algoritma ini. (David Indra Lesmana, 2012).

Langkah-langkah dalam algortima Rabin Karp :

1. Menghilangkan tanda baca dan mengubah ke teks sumber dan kata yang ingin dicari menjadi kata-kata tanpa huruf.

2. Membagi teks kedalam gram-gram yang ditentukan nilai k-gramnya 3. Mencari nilai hash dengan fungsi hash dari tiap kata yang terbentuk 4. Mencari nilai hash yang sama antara dua teks.

2.4.1 Hashing

Fungsi hash adalah sebuah fungsi untuk mengubah setiap

string menjadi bilangan yang disebut hash value. Sebuah string

diubah menjadi suatu nilai yang unik dengan panjang tertentu ( fixed-length)yang berfungsi sebagai penanda string tersebut. Pada sistem ini proses hashing memanfaatkan tabel ascii dengan rumus Hash

(Mitra, 2003):

�� = � ∗ � �− + � ∗ � �− + ⋯ + �


(32)

15

Keterangan :

I = Nilai hash

p = Nilai ascii karakter (desimal)

m = Banyak karakter (indeks karakter)

d = Basis Bilangan (nilai dari basis bilangan harus

bilangan prima)

Fungsi hash dengan basis yang biasanya memanfaatkan bilangan prima disebut dengan rolling hash. Untuk penentuan basis bilangan adalah dengan memilih bilangan prima karena dapat

memperkecil terjadinya collision (Zeil, 2014)

.

Berikut ini adalah contoh penggunaan fungsi hash atau

rolling hash dengan basis. Menggunakan string “informasi” sebagai

sumber string dan “for” sebagai string polayang dicari.

1. Dengan menggunakan b = 2 lalu panjang string

“informasi” sebagai n = 8 dan string “for” untuk pola

yang dicari sebagai k = 3.

2. Selanjutnya ubah pola yang dicari dengan fungsi hash

atau rolling hash dengan persamaan diatas. 3. Nilai hash dari “for” adalah 744 yang didapat dari:

(nilai ascii f = 102, o = 111, r = 114) I = 102*22 + 111*21 + 114*20

= 408 + 222 + 114 = 744

4. Percobaan pencocokan pola dilakukan berawal dari indeks ke 0 sampai ke 7 dari string “informasi” dengan

pola string “for”.

a. Percobaan pertama 0 1 2 3 4 5 6 7 8

i n f o r m a s i f o r


(33)

16

Hash(for) = 744

Hash(y[0..2]) = 105*22 + 110*21 + 102*20 = 420 + 220 +102

= 724

Nilai hash dari indeks 0 sampai 2 tidak cocok, maka dilakukan percobaan selanjutnya dengan bergeser ke indeks 1 sampai 3.

b. Percobaan kedua 0 1 2 3 4 5 6 7 8

i n f o r m a s i f o r

Hash(for) = 744

Hash(y[1..3]) = 110*22 + 102*21 + 111*20 = 440 + 204 +111

= 755

Nilai hash dari indeks 1 sampai 3 tidak cocok, maka dilakukan percobaan selanjutnya dengan bergeser ke indeks 2 sampai 4.

c. Percobaan ketiga 0 1 2 3 4 5 6 7 8

i n f o r m a s i f o r

Hash(for) = 744

Hash(y[2..4]) = 102*22 + 111*21 + 114*20 = 408 + 222 + 114

= 744

Nilai hash dari indeks 2 sampai 4 terjadi kecocokan, maka algoritma akan menandai lokasi penemuan kecocokan pola dan dilakukan percobaan selanjutnya


(34)

17

sampai percobaan keenam atau sampai karakter pada sumber string habis.

2.4.2 Similarity

Fungsi kemiripan atau similarity adalah menghitung kesamaan dan ketidaksamaan antara dua objek yang diobservasi. Objek yang dimaksud disini adalah komunitas yang saling berbeda. Ludwig & Reynolds (1988) menyatakan bahwa kemiripan suatu komunitas dengan komunitas lain dapat dinyatakan dengan similarity coefficients. Similarity coefficients memiliki nilai yang bervariasi antara 0 (jika kedua komunitas benar-benar berbeda) hingga 1 (jika kedua komunitas identik).

Pada sistem pendeteksian plagiarisme ini digunakan indeks Sørensen atau disebut juga dengan Dice's coefficient dengan persamaan:

� = � + � ��

Keterangan:

S : Similaritas indeks Sørensen

� : Jumlah nilai hash komunitas x

� : Jumlah nilai hash komunitas y

�� : Jumlah hash yang sama dari komunitas x dan y

Kisaran nilai indeks Sørensen adalah antara 0 sampai 1, dimana semakin mendekati angka 0 maka indeks disimilaritas tidak ada perbedaan dan indeks similaritas kecil, sedangkan semakin mendekati nilai 1, menunjukkan disimilaritas yang berbeda dan similaritas besar.


(35)

18

2.5 Metode Waterfall

2.5.1 Definisi Waterfall

Metode waterfall pertama kali diperkenalkan oleh Windows W. Royce pada tahun 1970. Walaupun sering dianggap kuno, metode ini paling banyak dipakai dalam Software Engineering (SE) karena metode ini melakukan pendekatan yang sistematis dan berurutan. Metode ini disebut waterfall karena tahap demi tahap yang dilalui harus menunggu tahap sebelumnya selesai dan berjalan berurutan Menurut (Pressman, 2010), model waterfall adalah model klasik yang bersifat sistematis, berurutan dalam membangun software.

Gambar 2.1 Waterfall menurut Pressman

2.5.2 Tahapan Pengembangan Metode Waterfall

Langkah-langkah yang dilakukan dalam pengembangan waterfall

adalah:

1. Requirement Analisis

Merupakan tahap awal dalam pengembangan sistem. Pada tahap ini harus mendapatkan beberapa hal yang dianggap menunjang penelitian yang dilakukan, seperti mencari permasalahan yang ada, mengumpulkan data, wawancara dan lain-lain.

2. System Design

Tahap desain sistem membantu dalam menentukan perangkat keras, tampilan, alur kerja sistem, pengoperasian sistem, dan


(36)

19

lain-lain yang disesuaikan dengan analisis kebutuhan tahap awal.

3. Implementation

Pada tahap ini, sistem pertama kali dikembangkan untuk menghasilkan aplikasi yang telah di desain pada tahap sebelumnya.

4. Integration & Testing

Tahap ini merupakan tahap pengujian sistem yang artinya sistem yang telah dibuat dari hasil analisis masalah yang telah melalui tahap desain dan implementasi kemudian masuk kedalam pengujian sistem, sehingga akan dapat diketahui seperti apa hasil kinerja sistem yang baru ini dibandingkan dengan sistem yang lama, kemudian dapat diketahui pula apakan dalam sistem yang baru ini masih ada kelemahan yang kemudian akan dikembangkan oleh peneliti berikutnya.

5. Operation & Maintenance

Tahap akhir dalam model waterfall adalah

melakukan pemeliharaan sistem. Pemeliharaan termasuk dalam memperbaiki kesalahan yang tidak ditemukan pada langkah sebelumnya

Ada 3 alasan perlunya pemeliharaan sistem, yaitu:

a. Untuk membenarkan kesalahan atau kelemahan sistem yang tidak terdeteksi pada saat pengujian.

b. Untuk membuat sistem up to date.


(37)

20 BAB III

PERANCANGAN SISTEM

Pada bab perancangan sistem ini berisi tentang penjelasan rancangan, proses kerja sistem, dan perancangan antarmuka pengguna yang akan dibangun oleh penulis.

3.1 Tahap Requirement Analysis

3.1.1 Gambaran Umum Sistem

Sistem pendeteksi plagiat yang akan dibangun merupakan sistem yang akan mendeteksi tingkat kesamaan dua dokumen teks. Masukan sistem diperoleh dari dokumen teks yang akan diunggah oleh pengguna. Selanjutnya dokumen akan melewati tahap

preprocessing menggunakan text mining. Padatahap

preprocessing, dilakukan case folding (mengubah isi dokumen menjadi huruf kecil), filtering (membuang kata yang tidak penting), stemming (mengubah kata kedalam bentuk aslinya atau kata dasar), dan tokenizing (pembentukan rangkaian k-gram). Setelah melakukan preprocessing, dokumen akan masuk ke dalam proses pencocokan kata dengan menggunakan algoritma Rabin Karp. Hasil pencocokan dokumen kemudian dihitung similarity

dengan indeks Sorensen dengan nilai 0 sampai 1. Jika similarity

yang dihasilkan mendekati angka 1, maka disimpulkan bahwa tingkat plagiarisme dalam dokumen tersebut semakin besar.

3.1.2 Analisis Kebutuhan

Analisis kebutuhan digunakan untuk mengidentifikasi terhadap kebutuhan sistem. Kebutuhan sistem meliputi analisis kebutuhan pengguna atau admin sebagai berikut:

1. Mengolah data file dokumen untuk dideteksi tingkat kemiripannya.


(38)

21 3.1.3 Use Case

Gambar 3.1 Use Case aplikasi pendeteksi plagiarisme.

3.1.4 Flowchart

Gambar 3.2 Flowchart aplikasi pendeteksi plagiarisme. Lihat tutorial

Input file

Lihat similarity

Simpan file

CRUD karya tulis tersimpan

user Lihat plagiat

Login


(39)

22

3.1.5 Pemodelan Proses

3.1.5.1 Data Flow Diagram Level 0

Gambar 3.3 Data Flow Diagram Level 0

3.1.5.2 Data Flow Diagram Level 1


(40)

23

3.1.5.3 Data Flow Diagram Level 2 Proses 1

Gambar 3.5 Data Flow Diagram Level 2 proses 1

3.1.5.4 Data Flow Diagram Level 2 Proses 2


(41)

24

3.1.5.5 Data Flow Diagram Level 2 Proses 3

Gambar 3.7 Data Flow Diagram Level 2 proses 3

3.1.5.6 Data Flow Diagram Level 2 Proses 4


(42)

25

3.2 Perancangan Sistem

3.2.1 Perancangan Basis Data

Perancangan basis data pada sistem meliputi pembuatan tabel-tabel basis data.

3.2.1.1 Perancangan Basis Data Konseptual (ERD)

Gambar 3.9 Perancangan ER Diagram

3.2.1.2 Perancangan Basis Data Logikal

Gambar 3.10 Perancangan logikal basis data

Login Dokumen Stopword_ina Rootword_ina

*Id Nama Username Password

*Id Path Judul Penulis

Tahun

*Id Stopword

*Id Rootword


(43)

26

3.2.1.3 Perancangan Basis Data Fisikal

3.2.1.3.1 Tabel Login

Tabel untuk menyimpan data admin seperti id, nama, username, dan password yang digunakan untuk keperluan login sebelum masuk ke sistem.

Tabel 3.1 Tabel Login

Field Tipe Keterangan

Id Int (10) Primary key table login

Nama Varchar (50) Nama admin

Username Varchar (50) Username admin

Password Varchar (50) Password admin

3.2.1.3.2 Tabel Dokumen

Tabel untuk menyimpan data dokumen seperti id, path, judul, penulis, dan tahun.

Tabel 3.2 Tabel Dokumen

Field Tipe Keterangan

Id Int (10) Primary key table ini

Path Varchar (100) Path dokumen terkait

Judul Varchar (100) Judul dokumen terkait

Penulis Varchar (100) Penulis dokumen terkait

Tahun Int (5) Tahun penulisan


(44)

27

3.2.1.3.3 Tabel Rootword_ina

Tabel untuk menyimpan kamus kata dasar yang digunakan untuk stemming dokumen.

Tabel 3.3 Tabel Rootword_ina

Field Tipe Keterangan

Id Int (10) Primary key tabel ini

Rootword Varchar (50) Daftar kata rootword (dasar)

3.2.1.3.4 Tabel Stopword_ina

Tabel untuk menyimpan kamus kata tidak penting padadokumen.

Tabel 3.4 Tabel Stopword_ina

Field Tipe Keterangan

Id Int (10) Primary key tabel ini

Stopword Varchar (50) Daftar kata stopword (tidak penting)

3.2.2 Perancangan Antarmuka

3.2.2.1 Halaman Login

Rancangan antarmuka untuk halaman login. Pada halaman ini pengguna akan mengisi username dan

password untuk bisa masuk ke sistem. Dapat dilihat pada gambar 3.11.


(45)

28

Gambar 3.11 Perancangan halaman login

3.2.2.2 Halaman Utama

Rancangan antarmuka untuk halaman utama sistem. Halaman utama sistem ini terdiri dari empat buah menu yaitu menu untuk mendeteksi dua dokumen, menu untuk mendeteksi dokumen dengan dokumen yang sudah tersimpan di database, menu karya tulis tersimpan, dan menu pengguna. Dapat dilihat pada gambar 3.12.

Gambar 3.12 Perancangan halaman utama aplikasi

3.2.2.3 Halaman Deteksi dua Dokumen

Rancangan antarmuka untuk halaman deteksi dua dokumen. Pada halaman ini dua buah dokumen akan di proses untuk dilihat presentase kemiripannya. Dapat dilihat pada gambar 3.13.

Aplikasi Pendeteksi Plagiat

Username Password

Login

Aplikasi Pendeteksi Plagiat

Deteksi dua Dokumen

Karya Tulis Tersimpan

X ?

Deteksi Dokumen di

Database


(46)

29

Gambar 3.13 Perancangan halaman proses dua dokumen

3.2.2.4 Halaman Deteksi Dokumen di Database

Rancangan antarmuka untuk halaman deteksi dokumen di database. Pada halaman ini dokumen yang akan diuji akan dibandingkan dengan beberapa dokumen yang sudah tersimpan di database. Dapat dilihat pada gambar 3.14.

Gambar 3.14 Perancangan halaman proses dokumen di database

3.2.2.5 Halaman Karya Tulis Tersimpan

Rancangan antarmuka untuk halaman karya tulis tersimpan. Pada halaman ini path dari karya tulis yang tersimpan di komputer akan disimpan di database. Dapat dilihat pada gambar 3.15.

Aplikasi Pendeteksi Plagiat

Dokumen 1

X

Dokumen 2

Aplikasi Pendeteksi Plagiat

X Dokumen 1

upload

upload

Proses

Kembali

?

upload

Proses

Karya Tulis Ilmiah tersimpan

?


(47)

30

Gambar 3.14 Halaman karya tulis tersimpan

Gambar 3.15 Perancangan halaman karya tulis tersimpan

3.2.2.6 Halaman Pengguna

Rancangan antarmuka halaman pengguna. Halaman ini merupakan proses pengelolaan pengguna. Dapat dilihat pada gambar 3.16.

Gambar 3.16 Perancangan halaman pengguna

Aplikasi Pendeteksi Plagiat

? X

Tabel Pengguna

NIP Nama Password

Simpan

Aplikasi Pendeteksi Plagiat

Tabel Karya Tulis Tersimpan


(48)

31 BAB IV

IMPLEMENTASI SISTEM

Pada bab implementasi sistem berisi tentang implementasi dari sistem yang akan dibuat, pembahasan sistem, implementasi antarmuka, dan hasil implementasi aplikasi.

4.1 Deskripsi Alat

Pada implementasi sistem, penulis menggunakan komputer pribadi dengan spesifikasi sebagai berikut:

1. Processor : AMD A8-5550M

2. RAM : 4 GB

3. Kapasitas Penyimpanan : 500 GB

Sedangkan perangkat lunak yang penulis gunakan adalah:

1. Sistem Operasi : Windows 10

2. Bahasa Pemrograman : Java

3. Tools Perancang : Netbeans IDE 8.0.2

4.2 Algoritma Rabin Karp

Dalam pembuatan aplikasi pendeteksi plagiat, penulis memilih algoritma Rabin Karp karena memungkinkan melakukan pencarian pola tulisan dari substring-substring pada sebuah teks dalam dokumen. Algoritma Rabin Karp tidak melakukan pergeseran yang rumit untuk menyelesaikan masalah, algoritma ini mempercepat pengecekan kata pada suatu teks dengan menggunakan fungsi hash.

Contoh perbandingan dua buah dokumen yang terindikasi merupakan hasil plagiat dengan dokumen aslinya.


(49)

32

Tabel 4.1 Dua buah dokumen yang terindikasi terjadi plagiarisme.

Dokumen 1

Dalam The 100 Greatest Disasters of All Time karya Stephen J Spignesi, dua bencana di Indonesia berada di peringkat ke-22 dan ke-30. Pertama, letusan Gunung Tambora di Sumbawa (1815) yang merenggut 150.000 jiwa dan menurunkan suhu bumi. Kedua, letusan Gunung Krakatau (1883) yang menelan 36.000 nyawa.

Dokumen 2

Dalam buku The 100 Greatest Disasters of AllTime karya Stephen J Spignesi, dua bencana di Indonesia masuk peringkat ke-22 dan 30. Letusan Gunung Tambora di Sumbawa tahun 1815 merenggut 150.000 jiwa dan menurunkan suhu Bumi. Adapun letusan Gunung Krakatau tahun 1883 menelan 36.000 nyawa.

Dari table 4.1 diatas, dapat dilihat kemiripan dokumen sangat terlihat. Namun untuk mengetahui tingkat kemiripan atau similarity antara dua buah dokumen digunakan algoritma Rabin Karp.

Langkah pertama adalah dengan melakukan preprocessing

dokumen, yaitu:

1. Case folding

Proses ini adalah dengan mengubah semua huruf menjadi huruf kecil.

Tabel 4.2 Dua buah dokumen setelah melalui langkah case folding.

Dokumen 1

dalam the 100 greatest disasters of all time karya stephen j spignesi, dua bencana di indonesia berada di peringkat ke-22 dan ke-30. pertama, letusan gunung tambora di sumbawa (1815) yang merenggut 150.000


(50)

33

jiwa dan menurunkan suhu bumi. kedua, letusan gunung krakatau (1883) yang menelan 36.000 nyawa.

Dokumen 2

dalam buku the 100 greatest disasters of alltime karya stephen j spignesi, dua bencana di indonesia masuk peringkat ke-22 dan 30. letusan gunung tambora di sumbawa tahun 1815 merenggut 150.000 jiwa dan menurunkan suhu bumi. adapun letusan gunung krakatau tahun 1883 menelan 36.000 nyawa.

2. Filtering

Langkah yang kedua adalah menghilangkan kata-kata yang kurang penting. Pada proses filtering, kata-kata yang akan dihapus meliputi kata-kata yang kurang penting atau kata

sambung seperti kata “dari”, “dan”, dan kata sambung lainnya.

Pada proses ini tanda baca juga dihilangkan.

Tabel 4.3 Dua buah dokumen setelah melalui langkah case filtering.

Dokumen 1

100greatest disasters all time karya stephen j spignesi dua bencana indonesia berada peringkat 22 30 pertama letusan gunung tambora sumbawa 1815 merenggut 150000 jiwa menurunkan suhu bumi kedua letusan gunung krakatau 1883 menelan 36000 nyawa

Dokumen 2

buku 100 greatest disasters alltime karya stephen j spignesi dua bencana indonesia masuk peringkat 22 30 letusan gunung tambora sumbawa tahun 1815 merenggut 150000 jiwa menurunkan suhu bumi letusan gunung krakatau tahun 1883 menelan 36000 nyawa


(51)

34

3. Stemming

Langkah ketiga adalah dengan melakukan stemming, yaitu mengubah kata kedalam bentuk aslinya atau dengan kata lain mengubah ke bentuk kata dasar. Dalam penelitian ini, kata yang diubah ke bentuk kata dasar hanya kata dalam Bahasa Indonesia saja.

Tabel 4.4 Dua buah dokumen setelah melalui langkah stemming.

Dokumen 1

100greatest disasters all time karya stephen j spignesi dua bencana indonesia ada tingkat 22 30 pertama letus gunung tambora sumbawa 1815 renggut 150000 jiwa turun suhu bumi dua letus gunung krakatau 1883 telan 36000 nyawa

Dokumen 2

buku 100 greatest disasters all time karya stephen j spignesi dua

bencana indonesia masuk tingkat 22 30 letus gunung tambora sumbawa tahun 1815 renggut 150000 jiwa turun suhu bumi letus gunung krakatau tahun 1883 telan 36000 nyawa

4. Tokenizing

Langkah terakhir dalam proses preprocessing adalah proses pemotongan string input berdasarkan tiap kata penyusunnya dan pembentukan pola kata dalam rangkaian k-gram. Langkah

tokenizing dibagi menjadi dua proses, yaitu :

a. Proses parsing k-gram

Merupakan pemotongan kata sebanyak k = 5. Penentuan nilai k adalah dengan melihat banyaknya banyaknya kata yang akan diolah atau di hitung nilai hashnya.


(52)

35

Tabel 4.5 Dua buah dokumen setelah melalui langkah parsing k-gram

dalam tokenizing.

Dokumen 1

{100 g}{00 gr}{0 gre}{ grea}{great}{reate}{eates} {atest}{testd} {estdi}{stdis} {tdisa}{disas}{isast}{saste}{aster}{sters}{ters }{ers a}{rs al}{s all}{ all }{all t}{ll th}{l the}{ the }{the t}{he ti}{e tim}{ time}{time }{ime k}{me ka}{e kar}{ kary} {karya}{arya }{rya s}{ya st}{a ste}{ step}{steph}{tephe}{ephen}{phen }{hen j}{en j }{n j s}{ j sp}{j spi}{ spig}{spign}{pigne}{ignes}{gnesi} {nesi }{esi d}{si du}{i dua}{ dua }{dua b}{ua be}{a ben}{ benc}{benca}{encan}{ncana}{cana }{ana i}{na in}{a ind}{ indo} {indon}{ndone}{dones} {onesi} {nesia}{esia }{sia a}{ia ad}{a ada}{ ada }{ada t}{da ti}{a tin} { ting} {tingk} {ingka}{ngkat}{gkat }{kat 2}{at 22}{t 22 }{ 22 3}{22 30}{2 30 }{ 30 p}{30 pe}{0 per}{ pert} {perta}

{ertam}{rtama}{tama }{ama l}{ma le}{a let}{ letu} {letus}{etus }{tus g}{us gu}{s gun}{ gunu} {gunun}{unung}{nung }{ung t}{ng ta}{g tam}{ tamb}

{tambo}{ambor} {mbora}{bora }{ora s}{ra su}{a sum}{ sumb} {sumba} {umbaw} {mbawa}{bawa }{awa 1}{wa 18}{a 181}{ 1815}{1815 }{815 r} {15 re}{5 ren}{ reng}{rengg} {enggu}{nggut}{ggut } {gut 1}{ut 15}{t 150}{ 1500} {15000} {50000}{0000 } {000 j}{00 ji}{0 jiw}{ jiwa} {jiwa }{iwa t}{wa tu} {a tur} { turu}{turun}{urun }{run s}{un su}{n suh}{ suhu}{suhu }{uhu b}{hu bu}{u bum}{ bumi}{bumi }{umi d}{mi du}{i dua}{ dua } {dua l}{ua le}{a let}{

letu}{letus}{etusa} {tusan{usan }{san g}{an gu}{n gun}{ gunu}{gunun}{unung} {nung }{ung k}{ng kr}{g kra}{ krak}{kraka} {rakat}{akata}{katau}{atau }{tau 1}{au 18}{u 188}{ 1883}{1883 } {883 t}{83 te}{3 tel}{ tela}{telan}{elan }{lan 3}{an 36}{n 360}{ 3600} {36000} {6000 }{000 n}{00 ny}{0 nya}{ nyaw} {nyawa} Dokumen 2

{buku }{uku 1}{ku 10}{u 100}{ 100 }{100 g}{00 gr} {0 gre}{ grea}{great}{reate} {eates}{atest}{test }{est d}{st di}{t dis}{ disa}{disas}{isast}{saste}{aster}{sters} {ters }{ers a}{rs al}{s all}{ all }{all t}{ll ti}{l tim}{ time}{time }{ime k}{me ka}{e kar}{ kary}{karya}{arya }{rya s}{ya st}{a ste}{ step}{steph} {tephe}{ephen}{phen }{hen j}{en j }{n j s} { j sp}{j spi}{ spig} {spign}{pigne}{ignes}{gnesi}{nesi }{esi d}{si du}{i dua}{ dua }{dua b}{ua be}{a ben}{ benc}{benca}{encan}{ncana}{cana }{ana i}{na in}{a ind}{ indo}{indon}{ndone}{dones} {onesi} {nesia}{esia }{sia m}{ia ma}{a mas}{ masu}{masuk}{asuk }{suk t}{uk ti}{k tin}{ ting}{tingk} {ingka}{ngkat}{gkat }{kat 2}{at 22}{t 22 }{ 22 3}{22 30}{2 30 }{ 30 l}{30 le}{0 let}{ letu}{letus}{etus }{tus g}{us gu}{s gun}{ gunu} {gunun} {unung}{nung }{ung


(53)

36

t}{ng ta}{g tam}{ tamb}{tambo} {ambor}{mbora}{bora }{ora s}{ra su}{a sum}{ sumb}{sumba} {umbaw}{mbawa}{bawa }{awa t}{wa ta}{a tah}{ tahu}{tahun} {ahun }{hun 1}{un 18}{n 181}{ 1815}{1815 }{815 r}{15 re} {5 ren}{

reng}{rengg}{enggu}{nggut}{ggut }{gut 1}{ut 15}{t 150}{

1500}{15000}{50000}{0000 }{000 j}{00 ji}{0 jiw}{ jiwa}{jiwa }{iwa t}{wa tu} {a tur}{ turu} {turun}{urun }{run s}{un su}{n suh}{ suhu}{suhu }{uhu b}{hu bu} {u bum}{ bumi} {bumi }{umi l}{mi le}{i let}{ letu}{letus}{etus }{tus g}{us gu} {s gun}{ gunu}{gunun} {unung}{nung }{ung k}{ng kr}{g kra}{

krak}{kraka}{rakat}{akata}{katau}{atau }{tau t}{au ta}{u tah}{ tahu}{tahun}{ahun }{hun 1}{un 18}{n 188}{ 1883}{1883 }{883 t}{83 te}{3 tel}{ tela}{telan}{elan } {lan 3}{an 36} {n 360}{ 3600}{36000}{6000 }{000 n}{00 ny}{0 nya}{

nyaw}{nyawa}

b. Proses hashing

Proses yang kedua adalah mengubah setiap string

menjadi angka. Dengan menggunakan persamaan:

�� = � ∗ � �− + � ∗ � �− + ⋯ + �

�− ∗ � + ��− ∗ �

Maka kedua dokumen yang telah diproses sampai ke tahap tokenizing dapat dihitung nilai hash nya dengan basis bilangan (d) = 7. Untuk penentuan basis bilangan adalah dengan memilih bilangan prima karena dapat memperkecil terjadinya collision.

Tabel 4.6 Dua buah dokumen setelah melalui langkah hashing dalam

tokenizing. Dokumen 1 1367 92 1341 15 1321 70 1185 51 2921 49 3140 23 2822 78 2785 55 3197 06 2884 35 3216 53 3188 63 2825 44 2972 24 3159 34 2788 47 3217 65 3195 82 2875 59 3155 14 2927 08 1161 83 2755 73 2988 36 2767 97 1224 55 3194 77 2868 32 2600 05 1226 29


(54)

37 3206 11 2947 72 2987 66 2595 13 1192 05 2967 08 2786 39 3203 09 3262 81 2504 21 1227 80 3217 40 3194 76 2868 30 3103 35 2900 67 2825 73 2806 19 1156 75 2720 06 1226 03 3205 07 3108 45 2936 46 2908 92 3051 55 2874 15 3145 15 2688 97 1175 76 2853 06 3165 43 2494 92 1162 64 2761 21 2858 71 3036 87 2770 71 2757 10 2998 01 2499 37 1193 91 2980 23 3047 20 2843 85 3101 00 3052 20 2878 02 3172 05 2877 31 2494 96 1162 90 2763 06 2871 53 3125 96 2722 86 2758 24 2501 82 1211 00 3099 86 2876 21 3159 47 2957 28 3054 77 2896 01 2961 36 2746 53 2923 24 9670 7 1391 73 1338 93 9701 3 9334 8 1325 33 1211 11 3100 50 2880 75 3191 15 3178 39 2753 69 2974 05 2499 88 1197 54 3005 69 2889 24 3250 71 3259 17 3151 03 2730 33 2810 62 1187 81 2937 53 3252 53 3103 84 3240 34 3019 16 2647 51 1222 34 3179 25 2759 77 2968 55 2796 68 3107 05 3094 75 2504 36 1228 71 3223 70 3239 04 3010 06 2751 11 2787 40 3209 57 2467 15 9677 9 1396 61 1541 93 1382 60 1443 91 1200 67 3027 55 2874 25 3145 71 2861 16 3954 21 2892 09 2933 91 3226 69 2923 12 9662 0 1385 64 1464 53 1344 32 1343 94 1321 27 1322 71 1192 68 2970 14 2976 64 3190 21 2500 31 1200 55 3026 75 2868 79 3107 56 3266 29 3200 81 3246 79 3063 66 2959 07 2731 17 2816 44 1365 75 4182 33 3226 44 2922 06 2976 23 1170 47 2815 37 3237 80 3001 42 2691 31 1192 99 2973 66 2832 45 2853 16 3166 13 2499 88 1197 54 3005 69 2889 24 3250 71 3259 17 3151 03 2730 33 2810 62 1187 81 2937 53 3252 53 3103 84 3240 25 3018 70 2644 17 1199 05 3016 08 3130 23 2752 60 2966 58 2782 89 3177 93 2749 95 2947 42 9682 6 1399 90 1564 96 1543 81 1395 85 1200 39 3025 57 2860 33 3048 34 2851 00 2982 44 2726 06 2780 11 9735 5 1437 06 1488 38 1343 98 1341 71 1325 58 1212 89 3112 96

Jumlah hashing = 242 Dokumen 2 2815 23 3236 24 2989 97 2946 78 9635 9 1367 92 1341 15 1321 70 1185 51 2921 49 3140 23 2822 78 2785 55 3196 38 2879 54 3182 76 2952 42 1171 79 2825 44 2872 24


(55)

38 3159 34 2788 47 3217 65 3195 82 2875 59 3155 14 2927 08 1161 83 2755 73 2988 37 2768 12 1226 29 3206 11 2947 72 2987 66 2595 13 1192 05 2967 08 2786 39 3203 09 3262 81 2504 21 1227 80 3217 40 3194 76 2868 30 3193 35 2900 67 2825 73 2806 19 1156 75 2720 06 1226 03 3205 07 3108 45 1936 46 2908 92 3051 55 2874 15 3145 15 2688 97 1175 76 2853 09 3265 43 2494 92 1162 64 2761 21 2858 71 3036 87 2770 71 2757 09 2997 94 2498 88 1190 48 2956 22 3047 20 2843 85 3101 00 3052 20 2878 02 3172 16 2878 04 2500 08 1198 94 3015 41 2788 56 3218 25 3200 71 2741 92 1211 00 3099 86 2876 25 3159 65 2958 75 3064 08 2961 36 2746 53 2923 24 9670 7 1391 73 1338 93 9700 9 1414 40 1323 39 1197 54 3005 69 2889 24 3250 71 3259 17 3151 03 2730 33 2810 62 1187 81 2937 53 3252 53 3193 84 3240 34 3019 16 2647 51 1222 34 3179 25 2759 77 3016 57 2796 68 3107 05 3094 75 2504 36 1228 71 3223 70 3239 04 3010 06 2751 11 2788 07 3214 67 2503 40 1222 18 3178 12 2751 04 2954 98 3206 14 2779 28 9677 9 1396 61 1541 93 1383 50 1443 91 1200 67 3027 55 2874 25 3145 71 2861 16 3054 21 2892 09 2933 91 3226 69 2923 12 9662 0 1385 64 1464 53 1344 32 1343 94 1341 27 1322 72 1192 65 2970 65 2980 08 3214 22 2500 31 1200 55 3026 75 2868 79 3107 56 3266 29 3200 81 3246 79 3063 66 2959 07 2731 17 2816 44 1228 55 3221 93 3226 44 2922 07 2976 23 1170 47 2815 37 3237 81 3001 49 2691 96 1197 54 3005 69 2889 24 3250 71 3259 17 3151 03 2730 33 2570 52 1187 81 2937 53 3252 53 3103 84 3240 25 3018 70 2644 17 1199 05 3016 08 3130 23 2752 60 2966 58 2782 89 3178 60 2755 05 2983 60 1222 18 3178 12 2751 04 2954 98 3206 14 2779 35 9682 6 1399 90 1564 96 1543 81 1395 85 1200 39 3025 57 2860 33 3048 34 2851 00 2982 44 2726 06 2780 11 9735 5 1437 04 1488 38 1343 98 1341 71 1325 58 1212 89 3112 96

Jumlah hashing = 240

Dari proses hashing fedua dokumen diatas, dapat diketahui jumlah hash yang sama dalam table berikut:


(56)

39

Tabel 4.7 Hash yang sama dalam dua buah dokumen setelah melalui langkah hashing dalam tokenizing.

Dokumen 1 dan Dokumen 2

1341 15 1321 70 1185 51 2921 49 3140 23 2822 78 2785 55 2825 44 3159 34 2788 47 3217 65 3195 82 2875 59 3155 14 1161 83 2755 73 1226 29 2947 72 2987 66 2595 13 1192 05 2967 08 2786 39 3203 09 3262 81 2504 21 3217 40 3194 76 2868 30 2900 67 2825 73 2806 19 1156 75 2720 06 3205 07 3108 45 2908 92 3051 55 2874 15 3145 15 2688 97 1175 76 2494 92 1162 64 2761 21 2858 71 3036 87 2770 71 3047 20 2843 85 3101 00 3052 20 2878 02 1211 00 3099 86 2961 36 2746 53 2923 24 9670 7 1391 73 1197 54 3005 69 2889 24 3250 71 3259 17 3151 03 2730 33 2810 62 1187 81 2937 53 3252 53 3240 34 3019 16 2647 51 1222 34 3179 25 2759 77 2796 68 3107 05 3094 75 2504 36 1228 71 3223 70 3239 04 3010 06 2751 11 1222 18 3178 12 2751 04 2954 98 3206 14 9677 9 1396 61 1541 93 1443 91 1200 67 3027 55 3145 71 2861 16 2892 09 2933 91 3226 69 2923 12 9662 0 1385 64 1344 32 1343 94 2500 31 3026 75 2868 79 3107 56 3266 29 3200 81 3246 79 3063 66 2959 07 2731 17 3226 44 2976 23 1170 47 2815 37 1197 54 3005 69 2889 24 3250 71 3259 17 3151 03 2730 33 1187 81 2937 53 3252 53 3103 84 3240 25 2644 17 1199 05 3016 08 3130 23 2752 60 2966 58 2782 89 1222 18 3178 12 2751 04 2954 98 3206 14 9682 6 1399 90 1564 96 1543 81 1395 85 1200 39 3025 57 2860 33 3048 34 2982 44 2726 06 2780 11 9735 5 1488 38 1343 98 1341 71 1325 58 3112 96

Jumlah hashing = 163

Setelah jumlah hash diketahui, yaitu hash pada dokumen pertama sebanyak 242, hash dokumen uji sebanyak 240 dan hash

yang sama sebanyak 163, proses selanjutnya adalah menghitung


(57)

40

Langkah selanjutnya dalam algoritma Rabin Karp adalah melakukan uji similarity. Uji similarity menggunakan indeks Sørensen dengan persamaan:

� = � + � ��

� = ∗+ = .

Diketahui similary antar dua buah dokumen sebesar 0.67634 yang artinya kedua dokumen memiliki similarity yang besar dan dapat dikatakan plagiarisme.

4.3 Implementasi Basis Data

Pada tahap ini dilakukan pembangunan database untuk menunjang sistem yang dibangun. Berikut query untuk membuat database dan tabel-tabel yangada di dalamnya.

4.3.1 Table Login create table login( nip int(10) primary key, nama varchar(50), username varchar(50), password varchar(50));

4.3.2 Tabel Dokumen

create table dokumen( id int 10 primary key, path varchar(100), judul varchar(100), penulis varchar(100), tahun int(5));


(58)

41

4.3.3 Tabel Rootword_ina

create table rootword_ina( id int(10) primary key, rootword varchar(50));

4.3.4 Tabel Stopword_ina

create table stopword_ina( id int(10) primary key, stopword varchar(50));

4.4 Implementasi Sistem

Pada tahap ini dilakukan pembangunan sistem sesuai dengan rancangan yang dibuat pada bab sebelumnya.

4.4.1 Halaman Login

Pada halaman login ini, pengguna harus memasukkan

username dan passwordlalu menekan tombol “Login” untuk masuk ke

halaman utama sistem. Dapat dilihat pada gambar 4.1.


(59)

42

Berikut adalah potongan listing program bagian tombol “Login”.

4.4.2 Halaman Utama

Halaman utama adalah halaman yang muncul saat pengguna sudah login ke sistem. Pada halaman ini terdapat tiga menu utama yaitu deteksi dua dokumen, deteksi dokumen di database, dan karya tulis tersimpan serta terdapat menu tambahan yaitu menu edit pengguna. Dapat dilihat pada gambar 4.2.

Gambar 4.2 Halaman utama

try {

Connection conn = new Database().connect();

String sql = "select * from LOGIN where USERNAME='"+ jTextFieldUsername.getText() +"' and PASSWORD='" + jPasswordField.getText()+ "'";

PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery();

if(rs.next()){ this.dispose();

HalamanUtama i = new HalamanUtama(); i.setVisible(true);

} else{

JOptionPane.showMessageDialog(null, "Maaf Username dan Password Salah");} } catch (SQLException ex) {}


(60)

43

4.4.3 Halaman Deteksi dua Dokumen

Halaman Deteksi dua dokumen merupakan halaman yang digunakan dalam proses pendeteksian dua dokumen yang terindikasi plagiat. Pada halaman ini pengguna akan memilih dokumen asli dan dokumen uji kemudian penguna bisa memilih batas toleransi plagiarisme dengan memilih pada combobox presentase, dan untuk

memulai proses pengujian adalah dengan menekan tombol “proses”.

Setelah proses selesai, hasil akan ditampilkan pada panel sebelah kanan halaman ini. Dapat dilihat pada gambar 4.3.

Gambar 4.3 Halaman deteksi dua dokumen

Berikut adalah beberapa potongan listing program untuk proses pendeteksian dua dokumen.

1. Listing program case folding

private String deleteDelimiter(String isiDoc){ String [] delimiter =

{"0","1","2","3","4","5","6","7","8","9","`","~","!","@","#","$","%","%","^","&","*","(",") ","-","_","=","+","{","}","[","]",":",";","'",",","<",".",">","?","/"};

for (String delimiter1 : delimiter) {

isiDoc = isiDoc.replace(delimiter1, "").toLowerCase();} return isiDoc;


(61)

44

2. Listing program filtering

3. Listing program stemming

4. Listing program parsing k-gram

5. Listing program hashing public String removeStopWord(String words) { String[] wordArray = words.split("\\s+"); String newSentence = "";

for (String word : wordArray) { boolean inList = false;

try {

inList = isInList(word); } catch (SQLException ex) {

Logger.getLogger(StopWordRemover.class.getName()).log(Level.SEVERE, null, ex);} if(!inList && !containNumeric(word))

newSentence = newSentence + word + " ";}} return newSentence;}

private String Stem(String isiDoc){ StringBuilder result = new StringBuilder(); if (isiDoc!=null && isiDoc.trim().length()>0){ StringReader tReader = new StringReader(isiDoc);

IndonesianAnalyzer analyzer = new IndonesianAnalyzer(Version.LUCENE_34); org.apache.lucene.analysis.TokenStream tStream = analyzer.tokenStream("contents", tReader);

TermAttribute term = tStream.addAttribute(TermAttribute.class); try {

while (tStream.incrementToken()){ result.append(term.term()); result.append(" ");} } catch (IOException ioe){

System.out.println("Error: "+ioe.getMessage());}} if (result.length()==0)

result.append(isiDoc);

return result.toString().trim();}}

private void parsingKgram(String pattern, String teks, int jumKgram) for (int i = 0; i < jumKgram; i++) {

int nextKgram = Kgram + i;

matching(pattern.substring(i, nextKgram), teks);}}

private int hash(String pattern) {//fungsi hash int h = 0;

for (int i = 0; i < pattern.length(); i++) {

h += pattern.charAt(i) * Math.pow(basis, pattern.length() - i - 1);} return h;}


(62)

45

6. Listing program Rabin-Karp

7. Listing program similarity

8. Listing program tombol “Start” private void matching(String pattern, String teks) {//rabin karp int panjangPattern = pattern.length();

int panjangTeks = teks.length(); int i, j;

int hashPattern = hash(pattern);

int hashTeks = hash(teks.substring(0, panjangPattern)); for (i = 0; i < panjangTeks - panjangPattern; i++) { if (hashPattern == hashTeks) {

for (j = 0; j < panjangPattern; j++) {

if (teks.charAt(i + j) != pattern.charAt(j)) {break;}} if (j == panjangPattern) {

jumPatternSama++; patternSama[i] = pattern; break;}} else {

hashTeks = hash(teks.substring(i + 1, panjangPattern + i + 1));}}}

public double getSimilarity() {

DecimalFormat twoDForm = new DecimalFormat("#.##"); double A = 2*jumPatternSama;

double B = jumPatternDocAsli + jumPatternDocUji; double C = (A / B) * 100;

int decimalPlace = 2;

BigDecimal bigDecimal = new BigDecimal(C);

bigDecimal = bigDecimal.setScale(decimalPlace, BigDecimal.ROUND_UP); if (similarity == null) {

similarity = bigDecimal.doubleValue();} return similarity;}

SwingUtilities.invokeLater(() -> {

boolean p = TestPlagiat.isPlagiarism(sumberDocAsli, sumberDocUji, kgram, presentase, (rk) -> {

similarity = rk.similarity;viewDocAsli = rk.DocAsli;viewDocUji = rk.DocUji; waktuProses = rk.waktuProses;patternSama = rk.patternSama;

jLabelNilaiSimilarity.setText(": " + Double.toString(similarity) + " %"); jLabelNilaiWaktuProses.setText(": " + Long.toString(waktuProses) + " ms");}); jLabelNilaiPlagiat.setText(p ? ": Ya" : ": Tidak");


(63)

46

4.4.4 Halaman Deteksi Dokumen di Database

Halaman Deteksi dokumen di database merupakan halaman proses pengujian dokumen uji terhadap dokumen yang tesimpan di

database. Pada halaman ini terdapat dua tiga panel yaitu panel input

dokumen, panel karya tulis tersimpan, dan panel hasil pengujian. Untuk memulai proses pengujian, pengguna memilih dokumen yang akan diuji dan memilih batas toleransi plagiarisme dengan memilih pada combobox presentase. Untuk memulai poengujian pengguna

dapat menekan tompol “proses”. Hasil pengujian akan ditampilkan

pada panel hasil di sebelah bawah. Pengguna dapat menyimpan

dokumen yang sudah diuji dengan menekan tombol “simpan dokumen” Dapat dilihat pada gambar 4.4.

Gambar 4.4 Halaman deteksi dokumen di database

Berikut adalah beberapa potongan listing program untuk proses pendeteksian dokumen di database.

1. Listing program case folding

private String deleteDelimiter(String isiDoc){

String [] delimiter = {"0","1","2","3","4","5","6","7","8","9", "`","~","!","@","#","$","%","%","^","&","*","(",")","-","_", "=","+","{","}","[","]",":",";","'",",","<",".",">","?","/"}; for (String delimiter1 : delimiter) {

isiDoc = isiDoc.replace(delimiter1, "").toLowerCase();} return isiDoc;


(64)

47

2. Listing program filtering

3. Listing program stemming

4. Listing program parsing k-gram

5. Listing program hashing

public String removeStopWord(String words) { String[] wordArray = words.split("\\s+"); String newSentence = "";

for (String word : wordArray) { boolean inList = false;

try {

inList = isInList(word); } catch (SQLException ex) {

Logger.getLogger(StopWordRemover.class.getName()).log(Level.SEVERE, null, ex);} if(!inList && !containNumeric(word))

newSentence = newSentence + word + " ";}} return newSentence;}

private String Stem(String isiDoc){ StringBuilder result = new StringBuilder(); if (isiDoc!=null && isiDoc.trim().length()>0){ StringReader tReader = new StringReader(isiDoc);

IndonesianAnalyzer analyzer = new IndonesianAnalyzer(Version.LUCENE_34); org.apache.lucene.analysis.TokenStream tStream = analyzer.tokenStream("contents", tReader);

TermAttribute term = tStream.addAttribute(TermAttribute.class); try {

while (tStream.incrementToken()){ result.append(term.term()); result.append(" ");} } catch (IOException ioe){

System.out.println("Error: "+ioe.getMessage());}} if (result.length()==0)

result.append(isiDoc);

return result.toString().trim();}}

private void parsingKgram(String pattern, String teks, int jumKgram) for (int i = 0; i < jumKgram; i++) {

int nextKgram = Kgram + i;

matching(pattern.substring(i, nextKgram), teks);}}

private int hash(String pattern) {//fungsi hash int h = 0;

for (int i = 0; i < pattern.length(); i++) {

h += pattern.charAt(i) * Math.pow(basis, pattern.length() - i - 1);} return h;}


(65)

48

6. Listing program Rabin-Karp

7. Listing program similarity

8. Listing program tombol “Start” private void matching(String pattern, String teks) {//rabin karp int panjangPattern = pattern.length();

int panjangTeks = teks.length(); int i, j;

int hashPattern = hash(pattern);

int hashTeks = hash(teks.substring(0, panjangPattern)); for (i = 0; i < panjangTeks - panjangPattern; i++) { if (hashPattern == hashTeks) {

for (j = 0; j < panjangPattern; j++) { if (teks.charAt(i + j) != pattern.charAt(j)) { break;}}

if (j == panjangPattern) { jumPatternSama++; patternSama[i] = pattern; break;}} else {

hashTeks = hash(teks.substring(i + 1, panjangPattern + i + 1));}}}

public double getSimilarity() {

DecimalFormat twoDForm = new DecimalFormat("#.##"); double A = 2*jumPatternSama;

double B = jumPatternDocAsli + jumPatternDocUji; double C = (A / B) * 100;

int decimalPlace = 2;

BigDecimal bigDecimal = new BigDecimal(C);

bigDecimal = bigDecimal.setScale(decimalPlace, BigDecimal.ROUND_UP); if (similarity == null) {

similarity = bigDecimal.doubleValue();} return similarity;}

hasil = TestPlagiat.isPlagiarism(d[0], docUji, k, t, rk -> { String[] row = new String[5];

row[0] = docUji; row[1] = d[0]; row[2] = d[1];

row[3] = "" + rk.getSimilarity();

row[4] = rk.getSimilarity() > t ? "Ya" : "Tidak"; model.addRow(row);


(66)

49

4.4.5 Halaman Karya Tulis Tersimpan

Halaman karya tulis tersimpan merupakan halaman yabg digunakan untuk melakukan penyimpanan dokumen ke database. Dokumen yang disimpan hanya path nya saja, hal ini dilakukan untuk mempercepat proses yang dilakukan sistem dan tidak membebani database karena data file yang tersimpan akan mencapai ratusan atau bahkan ribuan sementara dokumen yang sebenarnya akan disimpan di filesystem. Pada halaman ini terdapat dua panel yaitu panel tambah dokumen dan panel tabel dokumen yang telah tersimpan di database. Dapat dilihat pada gambar 4.5.

Untuk menyimpan dokumen ke database, pengguna hanya perlu menuliskan judul dokumen, nama penulis, tahun penulisan, dan memasukkan path dimana dokumen tersimpan. Kemudian tekan

tombol “simpan” untuk menyimpan dokumen. Pada halaman ini

pengguna dapat menghapus dan mengupdate dokumen dengan

memilih baris di panel di bawah kemudian pilih tombol “hapus” atau “update”. Dapat dilihat pada gambar 4.5.


(67)

50

Berikut adalah beberapa potongan listing program tombol “Simpan”

di halaman karya tulis tersimpan

4.4.6 Halaman Tambah Pengguna

Halaman tambah pengguna merupakan halaman yang melakukan proses penyimpanan, penghapusan, dan update data pengguna. Pada halaman ini terdapat dua panel yaitu panel tambah pengguna dan panel data pengguna yang sudah tersimpan di

database. Dapat dilihat pada gambar 4.6.

Untuk melakukan penyimpanan data, pengguna diharuskan mengisi nip, nama, username, dan password. Kemudian setelah data disimpan maka data akan mucul pada panel di bawah. Pengguna dapat melakukan hapus dan update data pengguna dengan memilih

baris pada tabel kemudian pengguna dapat menekan tombol “hapus” atau “update”. Dapat dilihat pada gambar 4.6.

private void Simpan() throws SQLException { Connection conn = new Database().connect(); String sql = "insert into dokumen values (?,?,?,?,?)"; PreparedStatement statement;

statement = conn.prepareStatement(sql); statement.setString(1, jTextFieldId.getText()); statement.setString(2, jTextFieldDokumen.getText()); statement.setString(3, jTextFieldJudul.getText()); statement.setString(4, jTextFieldPenulis.getText()); statement.setString(5, jTextFieldTahun.getText()); statement.executeUpdate();


(68)

51

Gambar 4.6 Halaman Pengguna

Berikut adalah beberapa potongan listing program tombol “Simpan”

di halaman tambah pengguna

private void Simpan() throws SQLException { Connection conn = new Database().connect(); String sql = "insert into login values (?,?,?,?)"; PreparedStatement statement;

statement = conn.prepareStatement(sql); statement.setString(1, jTextFieldNip.getText());

statement.setString(2, jTextFieldNamaPengguna.getText()); statement.setString(3, jTextFieldUsername.getText()); statement.setString(4, jTextFieldPassword.getText()); statement.executeUpdate();

conn.commit(); conn.close();}


(69)

52 BAB V

ANALISA HASIL

Pada bab analisa hasil berisi tentang hasil implementasi aplikasi, serta analisa hasil pengujian.

5.1 Analisa Hasil Uji Coba Sistem (Pengujian Alpha)

Pengujian Alpha merupakan strategi pengujian perangkat lunakyang umum digunakan dalam pengembangan perangkat lunak dengan tujuan agar sistem yang dibuat terhindar dari cacat atau kegagalan penggunaan. Pengujian alpha terhadap Aplikasi Pendeteksi Plagiarisme dalam Karya Tulis Ilmiah dengan Metode Rabin Karp ini dengan membadingkan hasil keluaran sistem dengan perhitungan manual peneliti.

5.1.1 Ujicoba dokumen dengan sistem

Terdapat 10 buah dokumen yang akan diuji yaitu dengan pengujian sebanyak 5 kali. Berikut hasil pengujian:

Pengujian 1 Dokumen a

Dokumen b

Plagiat adalah penjiplakan atau pengambilan karangan, pendapat, dan sebagainya dari orang lain dan menjadikannya seolah karangan dan pendapat sendiri.

Plagiarisme adalah mengakui tulisan orang lain sebagai tulisan sendiri.


(70)

53

Gambar 5.1 Hasil keluaran sistem untuk pengujian Dokumen a dan Dokumen b

Pengujian 2 Dokumen c

Dokumen d

Gambar 5.2 Hasil keluaran sistem untuk pengujian Dokumen c dan Dokumen d

Dapat disimpulkan bahwa motivasi belajar adalah sebuah dorongan dari dalam atau luar diri untuk melakukan sebuah kegiatan belajar demi mencapai suatu tujuan.

Motivasi belajar merupakan dorongan melakukan sebuah kegiatan belajar demi mencapai suatu tujuan.


(71)

54 Pengujian 3

Dokumen e

Dokumen f

Gambar 5.3 Hasil keluaran sistem untuk pengujian Dokumen e dan Dokumen f

Pengujian 4 Dokumen g

Dokumen h

Media sosial memiliki pengaruh buruk terhadap perkembangan anak usia dini

Anak usia dini yang ketergantungan dengan media sosial sering mengabaikan keadaan sekitarnya

Kerusakan alam yang semakin parah diakibatkan oleh maraknya penebangan liar yang tidak terkendali.

Banyak penebangan liar yang tidak memperhatikan dampak buruk bagi lingkungan.


(72)

55

Gambar 5.4 Hasil keluaran sistem untuk pengujian Dokumen g dan Dokumen h.

Pengujian 5 Dokumen i

Dokumen j

Gambar 5.5 Hasil keluaran sistem untuk pengujian Dokumen i dan Dokumen j

Preprocessing merupakan tahapan awal dalam mengolah data input sebelum memasuki proses selanjutnya.

Sebelum memasuki proses berikutnya, data input akan diolah terlebih dahulu dengan preprocessing.


(73)

56

Tabel 5.1 Pengujian dua dokumen dengan sistem

Pengujian Dokumen Similarity

Pengujian 1 Dokumen a 8,96 %

Dokumen b

Pengujian 2 Dokumen c 87,88 %

Dokumen d

Pengujian 3 Dokumen e 33,90 %

Dokumen f

Pengujian 4 Dokumen g 19,36 %

Dokumen h

Pengujian 5 Dokumen i 55,08 %

Dokumen j

5.1.2 Ujicoba dokumen secara manual

Terdapat 10 buah dokumen yang akan diuji yaitu dengan pengujian sebanyak 5 kali. Dokumen yang diuji sama dengan dokumen yang diuji pada sub bab 5.1.3. Berikut langkah langkah dan hasil pengujian:

Pengujian 1 Dokumen a

Plagiat adalah penjiplakan atau pengambilan karangan, pendapat, dan sebagainya dari orang lain dan menjadikannya seolah karangan dan pendapat sendiri.

Preprocessing


(74)

57 Parsing k-gram

{plagi} {lagia} {agiat} {giatj} {iatji} {atjip} {tjipl} {jipla} {iplak} {plaka} {lakam} {akamb} {kambi} {ambil}{mbilk} {bilka} {ilkar} {lkara} {karan} {arang} {rangd} {angda} {ngdap} {gdapa} {dapat}{apato} {pator}{atora} {toran} {orang} {rangj} {angja} {ngjad} {gjadi} {jadik} {adika} {dikar} {ikara} {karan} {arang} {rangd} {angda} {ngdap} {gdapa} {dapat }

Hashing

Perhitungan hash adalah sebagai berikut :

�� = + +

+ ∗ + ∗ =

311535 298458 274116 288989 291907 278726 320911 296862 296559 311555 298610 275212 296310 275929 301331 277451 295185 301657 296553 277625 313196 276471 305130 287237 279654 276989 308758 279019 322964 311239 313202 276513 305412 289219 293519 273188 282151 294454 296553 277625 313196 276471 305130 287237 279654

Jumlah Hash : 45

Dokumen b

Plagiarisme adalah mengakui tulisan orang lain sebagai tulisan sendiri.


(75)

58 Preprocessing

plagiarisme tulis orang tulis

Parsing k-gram

{plagi} {lagia} {agiar} {giari} {iaris} {arism} {risme} {ismet} {smetu} {metul} {etuli} {tulis}{uliso} {lisor} {isora} {soran} {orang}{rangt} {angtu} {ngtul} {gtuli} {tulis}

Hashing

311535 298458 274164 288974 291812 278058 316228 297714 319380 319378 301946 288774 324022 301849 297884 320563 311239 313212 276603 306050 293685 324789

Jumlah Hash : 22 Menghitung Similarity

Hash yang sama dari kedua dokumen berjumlah 3

� = � + � ��

� = +∗ ∗ = %

Setelah pengujian 1 dilakukan secara manual untuk mengetahui presentase kemiripannya, pengujian 2 sampai pengujian 5 selanjutnya dilakukan dengan langkah yang sama. Data hasil lima kali pengujian adalah sebagai berikut:


(1)

74 6.2 Saran

1. Sistem dapat dikembangkan menjadi berbasis web.

2. Sistem dapat mendeteksi parafrase atau kutipan dengan atau tidak menggunakan sumber terkait.

3. Sistem diharapkan dapat mendeteksi persamaan kata atau sinonim. 4. Penelitian dilanjutkan dengan penggunaan metode yang lain untuk


(2)

75

DAFTAR PUSTAKA

Abdeen, Ali.,Rawan.(2011). An Algorithm for String Searching Based on Brute-Force Algorithm. Intenational Journal of Computer Science and Network Security, Vol.11 No.7.

Büttcher, Stefan., Clarke, L.A. Charles., Cormack, V. Gordon. (2010) Information Retrieval Implementing and Evaluating Search Engine. Massachusetts: MIT Press.

Jain, Shivani., Rao, Nersimha, A.L., Agarwal, Pankaj. A Relative Study of Pattern Matching Algorithm. Journal of Computing Technologies. Vol.2 Issue 1. KBBI. 1997: 775.

Ludwig JA, Reynold JF. (1988). Statisyical Ecology: A Primer on Methods and Computing. New York: John Wiley and Sons Inc.

Lesmana, David Indra. (2012). Sistem Penilaian Otomatis Pada Jawaban Ujian Berbentuk Esai Menggunakan Metode Rabin Karp. Tugas Akhir. Malang: Universitas Islam Negeri Maulana Malik Ibrahim Malang.

Manning, Christoper D., Raghavan, Prabhakar., Schütze, Hinrich. (2008). Introduction to Information Retrieval. New York: Cambridge University Press.

Mitra, Sushmita., Acharya, Tinku. (2003). Data Mining Multimedia, Soft

Computing, and Bioinformatics. United State of America. A John Wiley & Sons Inc.

Mujahidin, Zainal. (2013). Implementasi Metode Rabin Karp untuk Mendeteksi Tingkat Kesamaan Dua Dokumen. Tugas Akhir. Riau: Universitas Islam Negeri Sultan Syarif Kasim Pekanbaru.

Sulianta, F. (2007). Seri referensi praktis: Konten internet, 71-72. Diunduh dari http://books.google.com/books?isbn=9792717889.


(3)

76

Utorodewo, Felicia, dkk. (2007). Bahasa Indonesia: Sebuah Pengantar Penulisan Ilmiah. Jakarta. Lembaga Penerbit FEUI.

Zeil, Steven J. (2014) Hashing. https://www.cs.odu.edu/~zeil/cs361/f16 /Public/ hash/index.html. Diakses tanggal 7 Maret 2017.


(4)

77 LAMPIRAN

Form Kuisioner:

ANGKET PENDETEKSIAN PLAGIAT

Inisial:

Petunjuk:

a. Bacalah pertanyaan atau pernyataan berikut dengan teliti. Kemudian tentukan pilihan 1 sampai 5, dengan keterangan pilihan sebagai berikut:

• SS = Sangat Setuju • S = Setuju

• RR = Ragu-Ragu • TS = Tidak Setuju

• STS = Sangat Tidak Setuju

b. Berilah tanda centang (√) pada alternative jawaban yang kamu pilih di tempat yang tersedia, contoh:

Pernyataan Pilihan Jawaban

SS S RR TS STS

Aplikasi ini efektif/tepat guna sebagai alat/sarana untuk mendeteksi plagiarisme


(5)

78

No Pernyataan Jawaban

SS S RR TS STS

1 Menggunakan sistem ini dalam pekerjaan saya memungkinkan saya menyelesaikan tugas dengan lebih cepat. 2 Menggunakan sistem ini

akan meningkatkan performa kinerja saya. 3 Menggunakan sistem ini

akan meningkatkan produktivitas saya. 4 Menggunakan sistem ini

akan meningkatkan efektifitas pekerjaan saya 5 Menggunakan sistem ini

akan mempermudah pekerjaan saya

6 Saya merasa sistem ini berguna dan bermanfaat bagi pekerjaan saya


(6)

79

No Pernyataan Jawaban

SS S RR TS STS

1 Sistem ini mudah dipelajari

2 Sistem ini mudah dikendalikan

(mendeteksi, menambah, mengedit, dan

menghapus data) 3 Sistem ini jelas dan

mudah dipahami

4 Sistem ini memiliki fitur yang lengkap

5 Sistem ini memberikan kemudahan sehingga saya menjadi mahir dalam satu atau beberapa fitur yang tersedia

6 Sistem ini mudah untuk digunakan