• Tidak ada hasil yang ditemukan

Pendeteksian Penjiplakan Kode Program C dengan Bisecting K-means

N/A
N/A
Protected

Academic year: 2017

Membagikan "Pendeteksian Penjiplakan Kode Program C dengan Bisecting K-means"

Copied!
37
0
0

Teks penuh

(1)

PENDETEKSIAN PENJIPLAKAN KODE PROGRAM C

DENGAN

BISECTING K-MEANS

ARIZAL NOTYASA

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

(2)
(3)

PERNYATAAN MENGENAI SKRIPSI DAN

SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA

Dengan ini saya menyatakan bahwa skripsi berjudul Pendeteksian Penjiplakan Kode Program C dengan Bisecting K-means adalah benar karya saya denganarahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini.

Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor.

Bogor, Juni 2013

Arizal Notyasa

(4)

ABSTRAK

ARIZAL NOTYASA. Pendeteksian Penjiplakan Kode Program C dengan

Bisecting K-means. Dibimbing oleh AHMAD RIDHA.

Penjiplakan tugas berupa kode program merupakan masalah yang sering dihadapi oleh berbagai institusi akademik. Pendeteksian penjiplakan secara manual memakan banyak waktu dan tenaga. Oleh sebab itu, sebuah sistem yang dapat membantu pendektesian penjiplakan kode program dibutuhkan. Pendeteksian dapat dilakukan dengan mengelompokkan kode-kode program yang mirip berdasarkan struktur kodenya. Cara ini dilakukan pada penelitian sebelumnya dengan menggunakan iterasi K-means otomatis. Iterasi K-means

otomatis ini, walau dapat menghasilkan clusters yang cukup baik, tapi membutuhkan waktu eksekusi yang lama. Tujuan penelitian ini adalah meningkatkan efisiensi waktu dan clusters hasil pendeteksian dengan menggunakan algoritme bisecting K-means. Hasil penelitian ini menunjukkan bahwa ada peningkatan efisiensi waktu yang cukup signifikan dari 11.68 detik menjadi 6.64 detik. Algoritme bisecting K-means juga menghasilkan jumlah

clusters yang lebih sedikit dengan nilai Rand Index yang lebih baik daripada iterasi K-means. Selain itu, percobaan dengan 2-gram hingga 6-gram

menunjukkan bahwa 4-gram memiliki kinerja yang paling baik.

Kata kunci: bisecting k-means, hierarchical clustering, pendeteksi penjiplakan

ABSTRACT

ARIZAL NOTYASA. C Source Code Plagiarism Detection Using Bisecting K-means. Supervised by AHMAD RIDHA.

Plagiarism of source codes assignments is a widespread problem in academic institutions. Manual plagiarism detection is time and energy consuming. Therefore, a system that can help detecting this plagiarism is needed. The detection can be done by grouping similar source codes based on their structure. This method is used in previous research by using automatic K-means iterations algorithm. That algorithm, although produced decent clusters, had a long execution time. The purpose of this research is to improve the time efficiency and clusters result quality by using bisecting K-means algorithm. The results showed a significant improvement in execution time from 11.68 seconds to 6.64 seconds. Bisecting K-means also produced fewer clusters with slightly better Rand Index than K-means iterations. Furthermore, experiments using 2-gram to 6-gram showed that 4-gram resulted in the best performance.

(5)

Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer

pada

Departemen Ilmu Komputer

PENDETEKSIAN PENJIPLAKAN KODE PROGRAM C

DENGAN

BISECTING K-MEANS

ARIZAL NOTYASA

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

(6)
(7)

Judul Skripsi : Pendeteksian Penjiplakan Kode Program C dengan Bisecting K-means

Nama : Arizal Notyasa NIM : G64070038

Disetujui oleh

Ahmad Ridha, SKom MS Pembimbing

Diketahui oleh

Dr Ir Agus Buono, MSi MKom Ketua Departemen

(8)

PRAKATA

Puji dan syukur penulis panjatkan ke hadirat Allah subhanahu wa-ta’ala

atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas akhir ini. Shalawat serta salam juga penulis sampaikan pada junjungan Nabi besar Muhammad shallallahu ‘alaihi wa sallam beserta keluarga dan sahabatnya.

Banyak pihak yang telah membantu penulis hingga terselesaikannya tugas akhir ini. Oleh sebab itu, penulis ingin mengucapkan rasa terima kasih kepada: 1 Ayahanda Listyo Sumitro dan ibunda Diah Aryati serta kakak penulis Arfika

Nurhudatiana dan Yulianto yang senantiasa mendoakan, memotivasi, dan memberikan kasih sayangnya kepada penulis.

2 Bapak Ahmad Ridha, SKom MS selaku dosen pembimbing yang telah membimbing dan mengarahkan penulis selama penelitian tugas akhir ini. 3 Bapak Sony Hartono Wijaya, SKom MKom dan Bapak Mushthofa, SKom

MSc selaku dosen penguji.

4 Seluruh teman-teman Ilkomerz 44 atas ilmu, semangat, dan dukungannya selama penulis melakukan penelitian.

5 Sahabat-sahabat di T3S: Trijaya, Wahyu, Putri, Nadea, Nina, Ikhwan, dan Adi atas segala suka dan duka yang dialami bersama.

Akhir kata, penulis mohon maaf apabila dalam tulisan ini masih terdapat banyak kekurangan. Penulis berharap semoga tulisan ini dapat bermanfaat bagi para pembaca.

Bogor, Juni 2013

(9)

DAFTAR ISI

DAFTAR TABEL v

DAFTAR GAMBAR v

DAFTAR LAMPIRAN v

PENDAHULUAN 1

Latar Belakang 1

Perumusan Masalah 2

Tujuan Penelitian 2

Manfaat Penelitian 2

Ruang Lingkup Penelitian 3

METODE 3

Pengambilan dan Pemilihan Data 3

Pengelompokan Manual 3

Praproses Data 4

Bisecting K-means 6

Validasi Hasil Clustering 8

Perbandingan dengan Penelitian Sebelumnya 9

HASIL DAN PEMBAHASAN 10

Pengambilan dan Pemilihan Data 10

Pengelompokan Manual 10

Praproses Data 11

Bisecting K-means 12

Validasi Hasil Clustering 16

Perbandingan dengan Penelitian Sebelumnya 17

Rentang Nilai i Terbaik 19

Pengaruh Ukuran N-gram terhadap Hasil Clustering 19

SIMPULAN DAN SARAN 20

Simpulan 20

Saran 21

DAFTAR PUSTAKA 21

(10)

DAFTAR TABEL

1 Contoh aturan konversi kode program 5

2 Set data awal 10

3 Set data setelah pengelompokan manual 10

4 Term frequency 12

5 Hasil percobaan clustering untuk DataSet1 13

6 Hasil percobaan clustering untuk DataSet2 13

7 Hasil percobaan clustering untuk DataSet3 14

8 Hasil percobaan clustering untuk DataSetAll 15

9 Nilai RI, jumlah clusters, jumlah dokumen, dan waktu eksekusi

clustering setiap set data 15 10 Perbandingan hasil clustering bisecting K-means dengan iterasi

K-means pada saat nilai i=0.97 17 11 Perbandingan hasil clustering bisecting K-means dengan iterasi

K-means pada saat nilai i terbaik 18

12 Nilai i terbaik untuk setiap set data 19

13 Hasil percobaan clustering dengan 2-gram hingga 6-gram untuk setiap

set data 20

DAFTAR GAMBAR

1 Tahapan penelitian 3

2 Praproses data 4

3 Ilustrasi kesamaan kosinus 7

4 False negative dokumen D42 dan D44 pada DataSet1 16 5 False positive dokumen D25 dan D59 pada DataSet1 17

DAFTAR LAMPIRAN

1 Contoh kode program dari masing-masing set data yang digunakan

dalam penelitian 22

2 Hasil pengelompokan manual untuk DataSet1 23

3 Hasil pengelompokan manual untuk DataSet2 24

4 Hasil pengelompokan manual untuk DataSet3 25

(11)

PENDAHULUAN

Latar Belakang

Penjiplakan atau plagiarisme merupakan suatu masalah yang sering dihadapi oleh institut-institut akademik. Penjiplakan pada kode program adalah penggunaan kembali struktur dan syntax bahasa pemrograman yang berasal baik dari mahasiswa ataupun sumber lainnya (Burrows 2004). Tugas akademik berupa kode program umumnya dikumpulkan dalam bentuk berkas digital. Hal ini menyebabkan tugas kode program rentan terhadap aksi penjiplakan.

Saat ini pendeteksian penjiplakan semakin sulit dilakukan. Hal ini disebabkan oleh bertambahnya jumlah mahasiswa dan semakin mudahnya mahasiswa untuk saling berbagi hasil perkerjaan mereka baik melalui internet maupun media lainnya. Pendeteksian juga semakin dipersulit dengan adanya modifikasi kode program yang dilakukan oleh mahasiswa untuk mengelabui pendeteksian. Modifikasi yang dilakukan antara lain penambahan atau penghapusan baris komentar atau pengubahan nama variabel atau fungsi. Pendeteksian penjiplakan dengan menggunakan tenaga manusia akan memakan banyak waktu dan tenaga. Oleh sebab itu, dibutuhkan suatu sistem yang dapat membantu pendeteksian penjiplakan kode program secara otomatis.

Burrows (2004) telah melakukan pendeteksian penjiplakan untuk

repositories kode program berskala besar. Pendeteksian yang dilakukan Burrows ialah dengan mengindeks semua kode program yang terkumpul kemudian melakukan query terhadap hasil indexing tersebut untuk mendapatkan kode-kode program yang mirip. Burrows menggunakan cara pendeteksian penjiplakan

structure-oriented code-based system. Sistem berorientasi struktur kode program ini membuat representasi sederhana dari kode program. Sistem ini sengaja mengabaikan elemen yang mudah dimodifikasi seperti komentar, whitespace dan nama variabel. Sistem berorientasi struktur ini juga tidak rentan terhadap penambahan kode program yang bersifat redundant. Mahasiswa harus memodifikasi sebagian besar kode program apabila ingin mengelabui pendeteksian (Bowyer dan Hall 1999, Gitchel dan Tran 1999, Prechelt et al. 2002 dalam Burrows 2004).

Gumilang (2013) menggunakan structure-oriented code-based system untuk pendeteksian penjiplakan kode program C dengan clustering. Pendeteksian yang dilakukan Gumilang ialah dengan mengelompokkan kode-kode program berdasarkan kemiripan strukturnya. Proses pengelompokan pada penelitian Gumilang dilakukan dengan menggunakan algoritme flat clustering K-means.

Flat clustering memiliki kelemahan, yaitu harus ditentukannya jumlah clusters

keluaran yang diinginkan secara manual. Hal ini pada penelitian Gumilang diatasi dengan melakukan iterasi K-means otomatis. Iterasi K-means otomatis yaitu melakukan clustering menggunakan K-means dengan nilai K bertambah secara otomatis pada setiap iterasinya. Iterasi berhenti apabila anggota-anggota clusters

hasil sudah cukup dekat dengan centroid-nya. Iterasi K-means otomatis ini membutuhkan waktu eksekusi yang lama. Hal ini dikarenakan pada setiap iterasi dilakukan proses clustering dengan jumlah dokumen yang sama dan jumlah

(12)

2

Pengelompokan tanpa perlu menentukan terlebih dahulu jumlah cluster-nya dapat dilakukan dengan menggunakan hierarchical clustering. Hierarchical clustering terbagi menjadi 2 jenis, yaitu hierarchical agglomerative clustering

(HAC) dan hierarchical divisive clustering (HDC). HAC menggunakan pendekatan bottom-up, sedangkan HDC menggunakan pendekatan top-down. HDC, dalam beberapa kasus, terbukti dapat menghasilkan hierarki clusters yang lebih akurat dibandingkan dengan HAC. Hal ini dikarenakan HDC menggunakan pendekatan top-down dan memiliki informasi penyebaran seluruh dokumen sejak awal clustering (Manning et al. 2008). HDC juga dapat berjalan lebih cepat dibandingkan dengan HAC apabila dikombinasikan dengan algoritme flat clustering efisien seperti K-means.

Pendeteksian penjiplakan pada penelitian ini dilakukan dengan menerapkan

structure-oriented code-based system dan kode-kode program yang mirip kemudian dikelompokkan dengan HDC. Algoritme HDC yang digunakan adalah

bisecting K-means. Bisecting K-means adalah algoritme HDC yang menggunakan

K-means untuk pemisahan setiap cluster-nya.

Perumusan Masalah

Perumusan masalah dalam penelitian ini adalah

1 Bagaimana mengimplementasikan structure-oriented code-based system dan algoritme HDC bisecting K-means dalam pendeteksian penjiplakan kode program C.

2 Apakah pengelompokan kode-kode program dengan menggunakan bisecting K-means membutuhkan waktu eksekusi yang lebih singkat dibandingkan dengan iterasi K-means otomatis.

3 Apakah bisecting K-means dapat menghasilkan clusters yang lebih baik dibandingkan denganiterasi K-means otomatis.

Tujuan Penelitian

Tujuan dari penelitian ini ialah mengimplementasikan structure-oriented code-based system dan algoritme HDC bisecting K-means untuk membantu pendeteksian penjiplakan pada kode program C secara otomatis, cepat, dan akurat.

Manfaat Penelitian

(13)

3 Ruang Lingkup Penelitian

Ruang lingkup penelitian ini adalah

1 Data yang digunakan adalah 233 buah kode program tugas pemrograman berbahasa C.

2 Penelitian ini mengasumsikan tidak adanya makro pada kode program sehingga preprocessor directives akan dihilangkan semua.

METODE

Secara garis besar penelitian ini memiliki 6 tahapan. Tahapan-tahapan pada penelitian ini dapat dilihat pada Gambar 1.

Pengambilan diperoleh dari Bagian Komputasi Terapan, Departemen Ilmu Komputer. Data pada penelitian ini berupa berkas digital kode program bahasa C. Kode program yang dipilih berasal dari tugas-tugas pemrograman yang memiliki tingkat kesulitan tidak terlalu mudah dan tidak terlalu susah. Hal ini dikarenakan tugas yang terlalu mudah akan memiliki variasi algoritme pemecahan yang sedikit, sedangkan tugas yang terlalu susah cenderung memiliki jumlah kode program yang sedikit karena banyak mahasiswa yang tidak mengumpulkan tugas.

Pengelompokan Manual

(14)

4

cluster tersebut diperiksa strukturnya. Kode-kode program dengan struktur dan algoritme yang secara signifikan sama dikelompokkan ke dalam cluster yang sama dan kode program yang berbeda dipisah ke dalam cluster yang berbeda.

Praproses Data

Praproses data dilakukan untuk mengubah data mentah, yaitu kode-kode program C, ke format yang dapat diproses dalam clustering, yaitu tabel term frequency. Praproses data pada penelitian ini terbagi ke dalam 4 tahapan. Gambar 2 menunjukkan alur tahapan praproses data.

Kumpulan

Tahap pertama adalah pembuangan preprocessor directives. Preprocessor directives adalah sejumlah baris di awal kode program yang diawali dengan karakter “#”. Pembuangan ini dilakukan karena pada penelitian ini diasumsikan tidak adanya penggunaan makro pada kode program.

Tokenisasi

Proses Tokenisasi dilakukan untuk mendapatkan keywords dan special characters dari kode program. Pada proses tokenisasi, karakter whitespace

dibuang semua sehingga didapat term atau string uniknya saja (Manning et al. 2008). Baris komentar pada kode program dibuang karena tidak berpengaruh terhadap output program. Karakter “;” juga dibuang karena merupakan karakter umum yang selalu digunakan di setiap akhir baris kode program C.

Penyederhanaan

Selanjutnya pada proses penyederhanaan, keywords dan special characters

kode program diubah menjadi token sederhana agar lebih ringkas dan mudah dalam pembentukan term. Kode program yang telah diubah menjadi sebuah string

(15)

5 Tabel 1 Contoh aturan konversi kode program

Keywords Token sederhana

Tabel 1 memperlihatkan contoh aturan konversi beberapa keywords dan

special characters kode program C menjadi token sederhana. ALPHANUM

adalah nama fungsi, nama variabel, atau nilai variabel. STRING adalah sederetan karakter yang diapit oleh tanda "" (kutip ganda). Berikut adalah contoh kode

program yang diubah menjadi token stream:

1 #include <stdio.h>

Tahap selanjutnya adalah proses N-gram. N-gram adalah potongan sejumlah

N karakter dari sebuah string. N-gram merupakan sebuah metode yang diaplikasikan untuk pembangkitan kata atau karakter. Pada penelitian ini metode

N-gram digunakan untuk mengambil potongan-potongan karakter huruf sejumlah

N dari suatu token stream.

(16)

6

quad-grams : _TEX, TEXT, EXT_

quint-grams : _TEXT, TEXT_

Penggunaan N-gram adalah metode yang sesuai untuk pendeteksian penjiplakan. Hal ini dikarenakan modifikasi atau perubahan pada kode program akan mempengaruhi beberapa N-gram yang berdekatan saja. Oleh sebab itu, kode program yang dimodifikasi akan tetap memiliki sebagian besar N-gram yang sama dengan kode program aslinya dan pendeteksian penjiplakan menjadi semakin mudah dilakukan (Burrows 2004). Lebih jelasnya berikut contoh 2-gram dari kata “Text” dan “Teext”:

Text : _T Te ex xt t_ Teext : _T Te ee ex xt t_

Modifikasi hanya menyebabkan perbedaan munculnya N-gram “ee” pada string

“Teext”, sedangkan N-gram sisanya sama dengan N-gram pada string“Text”.

Pada penelitian ini, proses N-gram dilakukan pada token stream dengan ukuran N=4. N dipilih 4 karena merupakan nilai N terbaik untuk pendeteksian penjiplakan kode program (Chawla 2003 dalam Burrows 2004). Pada bagian akhir penelitian ini juga akan dilakukan percobaan pendeteksian dengan menggunakan nilai N yang berbeda. Hal ini dilakukan untuk melihat pengaruh nilai N yang lebih kecil dan lebih besar terhadap hasil pendeteksian pada penelitian ini.

Selanjutnya kemunculan setiap N-gram pada masing-masing dokumen dihitung untuk memperoleh tabel term frequency. Tabel term frequency

merupakan tabel yangmenyimpan statistik kemunculan seluruh term atau N-gram

suatu koleksi dokumen. Tabel inikemudian digunakan untuk membentuk vektor-vektordokumen pada proses clustering dengan bisecting K-means.

Bisecting K-means

Bisecting K-means merupakan algoritme HDC oleh karena itu dilakukan dengan pendekatan top-down. Pertama-tama seluruh kode program dimasukkan ke dalam satu cluster besar. Kemudian algoritme bisecting K-means dilanjutkan mengikuti langkah-langkah berikut (Steinbach et al. 2000):

1 Pilih cluster yang akan dipisah.

2 Temukan 2 sub-clusters dengan menggunakan algoritme K-means. (Tahap pemisahan)

3 Ulangi langkah 2 sebanyak ITER kali dan ambil pemisahan yang menghasilkan 2 sub-clusters terbaik.

4 Ulangi langkah 1, 2, dan 3 hingga didapat jumlah clusters yang diinginkan. Pemilihan cluster

Pemilihan cluster yang akan dipisah dilakukan dengan melihat ukuran

cluster. Cluster dengan anggota terbanyak akan menjadi kandidat utama cluster

yang akan dipisah. Hal ini dikarenakan cluster dengan anggota terbanyak umumnya memiliki tingkat kemiripan anggota yang masih rendah. Apabila cluster

kandidat utama ternyata telah memiliki anggota-anggota yang sama persis, dipilih

(17)

7 K-means

Tahap pemisahan pada algoritme bisecting K-means dilakukan dengan algoritme flat clustering K-means dengan K=2. Algoritme K-means yang digunakan pada penelitian ini adalah sebagai berikut:

1 Pilih K dokumen sebagai centroid awal.

2 Tempatkan setiap dokumen ke centroid yang terdekat.

3 Hitung ulang nilai centroid setiap cluster.

4 Ulangi langkah 2 dan 3 sampai nilai centroid-nya tidak berubah.

Pemilihan 2 centroids awal pada penelitian ini dilakukan dengan cara pemilihan acak dan perhitungan jarak terjauh. Satu dokumen dipilih secara acak sebagai centroid pertama, kemudian jarak setiap dokumen ke centroid tersebut dihitung. Centroid kedua adalah dokumen dengan jarak terjauh dari centroid

pertama.

Penelitian ini menggunakan ukuran kesamaan kosinus sebagai pengukur jarak antar vektor dokumen. Kesamaan kosinus memiliki sifat semakin besar nilai persamaan kosinusnya, semakin dekat jarak kedua vektor, dan berarti semakin mirip kedua dokumen tersebut. Gambar 3 adalah ilustrasi dari ukuran kesamaan kosinus.

Gambar 3 Ilustrasi kesamaan kosinus

Perhitungan jarak antara 2 dokumen d1 dan d2 adalah dengan menghitung kesamaan kosinus dari representasi vektor dokumen � (d1) dan � (d2). Vektor dokumen merupakan term frequency yang merepresentasikan jumlah term pada tiap dokumen. Kesamaan kosinus diformulasikan sebagai berikut:

sim(d1,d2) = V d1 ∙V d2 V

d1 V d2

(18)

8

Perulangan pemisahan

Tahap pemisahan pada bisecting K-means diulang sebanyak ITER kali. Hal ini bertujuan untuk mendapatkan clusters hasil K-means yang terbaik. Penelitian ini menggunakan nilai ITER=5 (Steinbach et al. 2000). Clusters hasil pemisahan terbaik ditentukan berdasakan nilai I-nya.

Nilai I adalah rata-rata jarak setiap anggota clusters ke centroidcluster-nya. Nilai kesamaan kosinus antara centroid dan setiap dokumennya pada satu cluster

dijumlahkan semua kemudian dibagi dengan banyaknya anggota pada cluster

tersebut sehingga didapat nilai rata-rata internal cluster (� a). Selanjutnya, nilai � a

dari masing-masing cluster dijumlahkan semua dan dibagi dengan banyaknya

cluster yang dihasilkan sehingga didapat nilai rata-rata akhir (I). Semakin besar nilai I, semakin dekat rata-rata jarak dokumen di masing-masing cluster dengan

centroid cluster-nya dan berarti semakin baik hasil pemisahannya. Nilai I juga digunakan untuk menentukan kapan looping algoritme bisecting K-means akan berhenti.

Penghentian looping

Algoritme bisecting K-means akan melakukan looping terus menerus sampai tiap cluster hanya berisi satu dokumen atau tidak ada lagi cluster yang dapat dipisah. Pada pendeteksian penjiplakan hal ini tidak diharapkan. Cluster

hasil yang hanya berisi satu atau sejumlah dokumen yang sama persis tidak dapat digunakan untuk mendeteksi penjiplakan kode program yang dimodifikasi. Oleh sebab itu diperlukan suatu parameter untuk menghentikan looping pada algoritme

bisecting K-means saat clusters yang dihasilkan sudah cukup baik.

Penelitian ini menggunakan nilai i sebagai parameter pemberhenti looping

algoritme bisecting K-means. Apabila I > i maka looping dihentikan. I adalah rata-rata jarak setiap anggota clusters ke centroid cluster-nya. Nilai i adalah bilangan desimal antara 0 sampai 1. Semakin besar nilai i, semakin dekat rata-rata jarak setiap dokumen dengan centroid-nya sebelum looping dihentikan. Secara umum, semakin besar nilai i maka semakin banyak looping yang dilakukan dan berarti semakin banyak jumlah clusters yang dihasilkan.

Penentuan nilai i terbaik dilakukan dengan melakukan percobaan. Percobaan dilakukan dari nilai i=0.85 sampai i=1.00 dengan increment sebesar 0.01. Pada masing-masing nilai i tersebut dilakukan percobaan sebanyak 5 kali. Setiap percobaan i dicatat jumlah clusters, nilai akurasi Rand Index, nilai I, dan lama waktu eksekusinya.

Validasi Hasil Clustering

Validasi hasil clustering dilakukan untuk mengukur seberapa baik hasil

clustering yang didapat. Validasi dilakukan dengan membandingkan clusters hasil

(19)

9 dalam cluster yang sama dan 2 dokumen yang berbeda dipisahkan ke cluster yang berbeda. Formula RI dituliskan sebagai berikut:

RI = TP +TN TP +FP+FN+TN dengan

RI : Rand index

TP : true positive / keputusan 2 dokumen mirip berada di cluster yang sama FP : false positive / keputusan 2 dokumen berbeda berada di cluster yang sama TN : true negative / keputusan 2 dokumen berbeda berada di cluster yang berbeda FN : false negative / keputusan 2 dokumen mirip berada di cluster yang berbeda

Perbandingan dengan Penelitian Sebelumnya

Hasil dari penelitian ini kemudian dibandingkan dengan hasil penelitian sebelumnya. Variabel yang dibandingkan antara lain jumlah clusters yang dihasilkan, ukuran akurasi hasil clustering-nya, dan lama waktu clustering. Selanjutnya berdasarkan hasil perbandingan tersebut, dapat dianalisis kelebihan dan kekurangan pendeteksian penjiplakan pada penelitian ini dibandingkan dengan penelitian sebelumnya.

Alat

Perangkat keras:

Processor Intel Core i3-2328M 2.20 GHz,  Read Access Memory 2 GB, dan

Hard disk 500 GB. Perangkat lunak:

Operating system Microsoft Windows 7 Professional 64-bit,  Programming language PHP 5.3.8,

 PHP Integrated Development Environment Netbeans for PHP 7.1.2,  Server control panel XAMPP 1.7.7,

Database management system MySQL,

(20)

10

HASIL DAN PEMBAHASAN

Pengambilan dan Pemilihan Data

Data yang digunakan pada penelitian ini adalah kode-kode program tugas pemrograman berbahasa C. Jumlah data sebanyak 233 kode program yang dipilih dari 3 tugas dengan kesulitan menengah. Masing-masing tugas tersebut kemudian dijadikan set data pada penelitian ini. Tabel 2 menunjukkan komposisi set data yang digunakan pada penelitian ini. Contoh kode program dari masing-masing set data penelitian ini dapat dilihat pada Lampiran 1.

Tabel 2 Set data awal

Pengelompokan manual dilakukan dengan memeriksa nilai output program dan struktur kode programnya. Khusus untuk DatSet1, penelitian ini menggunakan hasil pengelompokan manual yang sudah dilakukan oleh Gumilang (2013). Hasil pengelompokan manual untuk DatSet1 dapat dilihat pada Lampiran 2. Pemeriksaan nilai output kode program pada DataSet2 menghasilkan 5 clusters,

sedangkan pada pemeriksaan DataSet3 menghasilkan 1 cluster. Setiap kode program pada masing-masing clusters tersebut kemudian dibandingkan strukturnya. Setelah dibandingkan, didapat DatSet2 menghasilkan 14 clusters

kode program dan DataSet3 menghasilkan 12 clusters. Namun, dari semua

clusters yang dihasilkan tersebut, terdapat clusters yang hanya berisi 1 atau 2 kode program. Clusters yang berisi terlalu sedikit dokumen tersebut kemudian dihilangkan. Tabel 3 menunjukkan set data setelah dilakukan pengelompokan manual. Hasil pengelompokan manual untuk DataSet2 dan DataSet3 dapat dilihat pada Lampiran 3 dan 4. Hasil pengelompokan manual untuk DataSetAll adalah 17

clusters gabungan hasil pengelompokan manual set data lainnya. Tabel 3 Set data setelah pengelompokan manual Set data Jumlah dokumen Clusters manual

DataSet1 92 9

DataSet2 60 2

DataSet3 60 6

(21)

11 Praproses Data

Praproses data terbagi dalam beberapa tahapan, yaitu: pembuangan

preprocessor directives, tokenisasi, penyederhanaan, dan N-gram. Pembuangan

preprocessor directives dilakukan karena pada penelitian ini diasumsikan tidak adanya penggunaan makro pada kode program. Berikut contoh kode program dari DataSet1 yang telah dihilangkan preprocessor directives-nya:

1

9 printf("%lu\n", b); //cetak hasil

10 return 0;

11 }

Proses tokenisasi dilakukan untuk mendapatkan keywords dan special characters kode program. Pada tahap ini dilakukan pembuangan whitespace, baris

comments, karakter “;”, dan pengubahan huruf uppercase menjadi lowercase

semua. Berikut contoh kode program setelah melalui proses tokenisasi: 1

Selanjutnya dilakukan proses penyederhanaan dengan mengubah keywords

dan special characters kode program menjadi deretan token sederhana yang merepresentasikan struktur kode program. Sebelum dilakukan pengubahan, dilakukan pengecekan dan penambahan spasi di awal dan akhir keywords atau

special characters. Hal ini dilakukan untuk memastikan tidak terjadi kesalahan konversi karena adanya keywords atau special characters yang berhimpitan. Pengubahan yang dilakukan pada penelitian ini mengikuti tabel aturan konversi yang dapat dilihat pada Lampiran 5. Hasil dari proses penyederhanaan adalah

string panjang token sederhana yang disebut token stream. Berikut contoh token stream hasil penyederhanaan kode program di atas:

(22)

12

Setelah token stream didapat, kemudian dilakukan proses N-gram. Proses N-gram merupakan proses pembangkitan term dengan mengambil sejumlah N huruf dari suatu string panjang. Pada penelitian ini digunakan N=4. Berikut contoh N-gram yang dihasilkan dari token stream di atas:

_Nhi NjNo oNNh iKhh Naai iNao jNiR

Selanjutnya dihitung jumlah kemunculan setiap N-gram pada masing-masing dokumen. Perhitungan jumlah kemunculan N-gram atau term dari masing-masing dokumen ini menghasilkan tabel term frequency. Tabel 4 merupakan contoh tabel term frequency dari N-gram di atas. Tabel term frequency kemudian digunakan untuk membentuk vektor-vektor dokumen pada proses clustering.

Tabel 4 Term frequency

Proses clustering pada penelitian ini menggunakan algoritme bisecting K-means. Bisecting K-means merupakan algoritme hierarchical divisive clustering. Seluruh dokumen dimasukkan ke dalam satu cluster awal kemudian dipisah-pisah berdasarkan kemiripannya. Setiap pemisahan dilakukan dengan menggunakan K-means. Nilai i digunakan untuk menghentikan pemisahan pada saat clusters yang dihasilkan sudah cukup baik.

Nilai i terbaik ditentukan dengan melakukan serangkaian percobaan

(23)

13 Tabel 5 Hasil percobaan clustering untuk DataSet1

i Clusters RI I Waktu (detik)

Tabel 5 menunjukkan hasil percobaan clustering pada DataSet1. Berdasarkan hasil percobaan tersebut, dipilih nilai i=0.94. Nilai tersebut dipilih karena memiliki rata-rata RI yang sudah cukup baik, yaitu 0.9288, dan jumlah

clusters yang tidak terlalu banyak, yaitu 10. Nilai i lebih besar dari 0.94 memiliki rata-rata RI yang sedikit lebih baik tetapi menghasilkan jumlah clusters yang lebih banyak. Jumlah clusters yang terlalu banyak memungkinkan adanya kode-kode program hasil penjiplakan yang awalnya sudah terkumpul dalam satu cluster,

terpisah ke clusters yang berbeda.

Tabel 6 Hasil percobaan clustering untuk DataSet2

(24)

14

Tabel 6 menunjukkan hasil percobaan clustering pada DataSet2. Berdasarkan hasil percobaan tersebut, dapat dilihat bahwa saat clustering baru menghasilkan 2 clusters, nilai I dan RI yang didapat sudah sangat tinggi. Hal ini menandakan bahwa DataSet2 hanya terdiri atas 2 variasi kode program dengan tiap variasinya terdiri atas kode-kode program yang hampir sama persis. Dengan demikian, nilai i terbaik dipilih saat didapat RI=1.00 yaitu saat i kurang dari 1.00.

Saat i=1.00, rata-rata RI yang dihasilkan, seperti yang terlihat pada Tabel 6, justru menurun. Hal ini mungkin terjadi karena adanya kode program hasil penjiplakan yang dimodifikasi sehingga memiliki struktur yang sedikit berbeda dari kode program aslinya. Semakin tinggi nilai i, semakin peka clustering

terhadap perbedaan-perbedaan kecil pada struktur kode program. Hal ini yang menyebabkan dipisahkannya kembali kode-kode program yang sudah mirip sehingga jumlah clusters yang dihasilkan bertambah banyak dan ukuran RI yang didapat menurun.

Tabel 7 Hasil percobaan clustering untuk DataSet3

i Clusters RI I Waktu (detik)

Tabel 7 menunjukkan hasil percobaan clustering pada DataSet3. Berdasarkan hasil percobaan tersebut dipilih nilai i=0.97. Nilai tersebut dipilih karena memiliki jumlah clusters yang tidak terlalu banyak, yaitu 5, dan rata-rata RI yang sudah cukup baik, yaitu 0.9581.

(25)

15 Tabel 8 Hasil percobaan clustering untuk DataSetAll

i Clusters RI I Waktu (detik)

Tabel 9 menunjukkan nilai RI, jumlah clusters, jumlah dokumen, dan waktu eksekusi clustering masing-masing set data pada saat i terbaiknya. Berdasarkan Tabel 9, rata-rata nilai RI untuk setiap set data pada penelitian ini sudah cukup baik, yaitu lebih dari 90%.

Tabel 9 Nilai RI, jumlah clusters, jumlah dokumen, dan waktu eksekusi clustering setiap set data

Set Data RI Clusters Dokumen Waktu (detik)

Hasil clustering DataSet2 memiliki nilai RI=1.00 yang berarti clusters hasil pengelompokan bisecting K-means sama persis dengan clusters hasil pengelompokan manualnya. Waktu yang dibutuhkan untuk mendapatkan nilai RI tersebut juga sangat singkat. Hal ini dikarenakan DataSet2 hanya terdiri atas 2

clusters kode program yang masing-masing anggotanya hampir sama persis. Dengan demikian, proses clustering menjadi mudah dan cepat dilakukan.

(26)

16

Validasi Hasil Clustering

Validasi hasil clustering pada penelititan ini dilakukan dengan menggunakan ukuran akurasi RI. Hasil clustering untuk set data selain DataSet2 menghasilkan nilai RI kurang dari 1.00. Hal ini menunjukkan bahwa masih terdapat kesalahan pada hasil pendeteksian dengan menggunakan sistem. Kesalahan yang mungkin terjadi adalah dipisahkannya 2 kode program yang mirip ke clusters yang berbeda (false negative) dan dikelompokkannya 2 kode program yang berbeda ke cluster yang sama (false positive). Contoh pasangan dokumen

false negative dan false positive pada DataSet1 saat i=0.94 ditunjukkan pada Gambar 4 dan 5.

Gambar 4 menunjukkan contoh kesalahan false negative antara dokumen D42 dan D44. Kesalahan ini disebabkan oleh adanya perbedaan pada beberapa bagian kode program sehingga mempengaruhi token stream yang dihasilkan. Perbedaan-perbedaan ini, antara lain adanya tipe data long pada baris ke-5 dokumen D44 dan adanya perbedaan antara penggunaan operator increment ++b

pada baris ke-7 dokumen D42 dengan b+=1 pada baris ke-8 dokumen D44.

1 #include <stdio.h> 1 #include <stdio.h>

2 main() { 2 main()

3 unsigned long int a,n=0; 3 {

4 int b=0; 4 unsigned long int a,n=0;

5 scanf("%lu", &a); 5 long int b=0;

6 while ((pow(10,n++))<=a) 6 scanf("%lu", &a);

7 ++b; 7 while ((pow(10,n++))<=a)

8 printf("%d\n", b); 8 b+=1;

9 return 0; 9 printf("%lu\n", b);

10 } 10 return 0; Gambar 4 False negative dokumen D42 dan D44 pada DataSet1

Gambar 5 menunjukkan false positive antara dokumen D25 dan D44. Kedua kode program ini memiliki sejumlah perbedaan, antara lain adanya 2 tipe data yaitu int dan unsigned long int pada dokumen D59 dan adanya penggunaan operator kondisi if() pada dokumen D25. Namun, kedua kode program tersebut dikelompokkan ke dalam cluster yang sama oleh sistem. Hal ini dapat disebabkan oleh adanya beberapa bagian kode program yang mirip sehingga

token stream yang dihasilkan juga masih memiliki banyak kemiripan. Kemiripan kedua kode program ini di antaranya sama-sama menggunakan fungsi while()

(27)

17

11 printf("%d", x); 11 printf("%d", digit);

12 return 0; 12 return 0;

Gambar 5 False positive dokumen D25 dan D59 pada DataSet1

Perbandingan dengan Penelitian Sebelumnya

Hasil penelitian ini dibandingkan dengan hasil pendeteksian penjiplakan kode program yang telah dilakukan oleh Gumilang (2013). Algoritme yang digunakan pada penelitian Gumilang adalah algoritme flat clustering K-means. Gumilang menggunakan iterasi K-means otomatis agar banyaknya clusters yang diinginkan tidak perlu ditentukan terlebih dahulu. Set data yang digunakan adalah DataSet1 yang berjumlah 92 kode progam. Variabel yang dibandingkan adalah rata-rata jumlah clusters, nilai RI, dan lama waktu eksekusi.

Pertama-tama dilakukan perbandingan hasil clustering saat nilai i terbaik pada penelitian Gumilang. Hasil clustering terbaik pada penelitian Gumliang didapat saat nilai i=0.97. Tabel 10 menunjukkan perbandingan hasil clustering bisecting K-means dengan iterasi K-means pada saat nilai i=0.97.

Tabel 10 Perbandingan hasil clustering bisecting K-means

dengan iterasi K-means pada saat nilai i=0.97 Variabel Bisecting K-means Iterasi K-means

Jumlah clusters 19 12

Nilai RI 0.9420 0.9063

Waktu eksekusi (detik) 8.2308 11.6826

(28)

18

manual oleh staf akademik dengan berpedoman pada hasil pendeteksian penjiplakan ini. Tabel 10 juga menunjukkan waktu eksekusi clustering yang dibutuhkan bisectingK-means lebih singkat dibandingkan dengan iterasi K-means

walau jumlah clusters yang dihasilkannya lebih banyak. Hal ini menunjukkan bahwa algoritme bisecting K-means lebih efisien dibandingkan dengan iterasi K-means.

Selanjutnya, hasil clustering saat nilai i terbaik pada penelitian ini dibandingkan dengan hasil clustering saat nilai i terbaik pada penelitian Gumilang. Pada penelitian Gumilang didapat hasil iterasi K-means terbaik adalah saat i=0.97, sedangkan pada penelitian ini, hasil clustering terbaik adalah saat i=0.94. Tabel 11 menunjukkan perbandingan hasil clustering bisecting K-means dengan iterasi K-means pada saat nilai i terbaik.

Tabel 11 Perbandingan hasil clustering bisecting K-means

dengan iterasi K-means pada saat nilai i terbaik Variabel Bisecting K-means Iterasi K-means

Nilai i terbaik 0.94 0.97

Jumlah clusters 10 12

Nilai RI 0.9288 0.9063

Waktu eksekusi (detik) 6.6439 11.6826

Berdasarkan Tabel 11 dapat dilihat bahwa bisecting K-means menghasilkan jumlah clusters yang lebih sedikit dan nilai RI yang lebih tinggi. Hal ini disebabkan oleh adanya pengulangan pemisahan sebanyak ITER kali pada algoritme bisecting K-means. Pengulangan pemisahan ini bertujuan untuk memperoleh clusters hasil pemisahan terbaik dari setiap looping algoritme

bisecting K-means. Semakin baik clusters hasil pemisahan yang didapat maka semakin sedikit looping yang perlu dilakukan dan clusters yang dihasilkan menjadi lebih optimal baik jumlah maupun kualitasnya.

Tabel 11 juga menunjukkan bahwa waktu eksekusi yang dibutuhkan oleh

bisecting K-means lebih singkat dibandingkan dengan iterasi K-means. Hal ini disebabkan oleh adanya proses pemisahan clusters menjadi 2 sub-clusters pada setiap looping algoritme bisecting K-means. Proses pemisahan pada looping

berikutnya selalu dilakukan pada sub-clusters hasil pemisahan sebelumnya. Hal ini menyebabkan jumlah dokumen yang dipisah pada suatu looping selalu lebih sedikit dibandingkan dengan jumlah dokumen pada looping sebelumnya. Semakin banyak looping yang dilakukan pada algoritme bisecting K-means, jumlah dokumen yang dipisah juga semakin sedikit. Selain itu, proses pemisahan pada setiap looping dilakukan menggunakan K-means dengan nilai K selalu 2. Pengelompokan K-means dengan nilai K yang kecil cenderung lebih mudah dan cepat dilakukan dibandingkan dengan pengelompokan K-means dengan nilai K

(29)

19 Rentang Nilai i Terbaik

Pada penelitian ini, pengelompokan secara manual telah dilakukan sebelum proses clustering dengan bisecting K-means. Dengan demikian, validasi hasil

clustering untuk mengukur sudah seberapa baik clusters yang dihasilkan dapat dilakukan dan nilai i terbaik untuk suatu set data dapat dengan mudah ditentukan. Namun, pada penggunaan sistem pendeteksian ini nantinya, pengguna tidak diharapkan untuk melakukan pengelompokan manual terlebih dahulu sehingga validasi hasil clustering tidak mungkin dilakukan. Hal ini menyebabkan penentuan nilai i terbaik akan lebih sulit dilakukan. Oleh sebab itu, pada bagian ini akan diusulkan rentang nilai i terbaik berdasarkan hasil percobaan-percobaan yang telah dilakukan. Tabel 12 menunjukkan nilai i terbaik untuk keempat set data yang digunakan pada penelitian ini.

Tabel 12 menunjukkan bahwa hasil clustering terbaik pada penelitian ini didapat saat i 0.94 hingga 0.97. Dengan demikian, rentang nilai i tersebut dapat digunakan dalam pendeteksian suatu set data baru dengan harapan dapat memberikan hasil clustering yang baik. Namun, Tabel 7 menunjukkan bahwa hasil percobaan clustering pada DataSet3 saat i=0.94 memiliki nilai RI yang masih terlalu rendah, yaitu 0.4994. Oleh sebab itu, nilai i=0.94 merupakan nilai yang belum aman untuk selalu menghasilkan clusters yang baik pada penelitian ini. Dengan demikian, pendeteksian terhadap set data baru yang belum diketahui hasil pengelompokan manualnya dapat dilakukan dengan menggunakan nilai i

antara 0.95 sampai 0.97.

Pengaruh Ukuran N-gram terhadap Hasil Clustering

Ukuran N-gram yang digunakan pada penelitian ini mengacu pada ukuran

N-gram terbaik menurut Chawla (2003), yaitu N=4. Pada bagian akhir penelitian ini dilakukan percobaan clustering dengan menggunakan ukuran N-gram kurang dan lebih dari 4 untuk melihat pengaruhnya terhadap hasil pendeteksian pada penelitian ini. Tabel 13 menunjukkan hasil percobaan clustering dengan ukuran

2-gram hingga 6-gram pada setiap set data saat i=0.95.

Tabel 13 menunjukkan bahwa ukuran N-gram yang terlalu kecil menghasilkan nilai RI yang rendah. Semakin besar nilai N, maka clusters yang dihasilkan cenderung semakin baik. Namun, semakin besar nilai N, jumlah

(30)

20

Tabel 13 Hasil percobaan clustering dengan 2-gram hingga 6-gram

untuk setiap set data

Waktu (detik) 0.66538 3.31638 7.29670 9.64294 13.69878 DataSet2

Clusters 2 2 2 2 2

RI 1.00000 1.00000 1.00000 1.00000 1.00000

Waktu (detik) 0.45738 0.61758 0.62552 0.70988 0.77162 DataSet3

Clusters 2 2 3 5 4

RI 0.65898 0.49943 0.80452 0.98022 0.82429

Waktu (detik) 0.52038 0.82234 1.97462 4.13240 4.20660 DataSetAll

Clusters 3 6 11 20 21

RI 0.77908 0.89953 0.95568 0.98388 0.98577

Waktu (detik) 2.91646 8.88326 23.89546 41.72346 60.54178 Terdapat beberapa pengecualian yang juga ditunjukkan pada Tabel 13. Hasil

clustering DataSet2 yang hanya terdiri atas 2 jenis kode program yang homogen tidak terpengaruh dengan berbagai ukuran N-gram yang dicobakan. Selain itu, DataSet3 memiliki nilai RI lebih rendah saat N=6 dibandingkan saat N=5. Hal ini menunjukkan peningkatan nilai N tidak selalu menghasilkan kualitas clusters

yang lebih baik. Dengan demikian, N=4 merupakan ukuran N-gram yang paling sesuai pada penelitian ini karena memberikan hasil clustering yang baik dan waktu eksekusi yang tidak terlalu lama.

SIMPULAN DAN SARAN

Simpulan

Algoritme HDC bisecting K-means dan structure-oriented code-based system dapat diimplementasikan untuk mendeteksi penjiplakan kode program C. Hasil dari pendeteksian ini cukup baik dengan clusters yang dihasilkan memiliki rata-rata akurasi RI lebih dari 90%. Pendeteksian dengan bisectingK-means dapat melakukan pengelompokan kode program dalam waktu yang secara signifikan lebih cepat dibandingkan pendeteksian dengan iterasi K-means otomatis.

Pendeteksian pada penelitian ini juga dapat menghasilkan jumlah clusters yang lebih sedikit dengan akurasi RI yang lebih tinggi dibandingkan dengan hasil pendeteksian dengan iterasi K-means otomatis. N=4 merupakan ukuran N-gram

(31)

21 Saran

Pendeteksian penjiplakan pada penelitian ini dilakukan hanya berorientasikan pada struktur kode program. Hal ini dapat menyebabkan terjadinya kesalahan pada pendeteksian apabila dilakukan modifikasi yang mengubah struktur kode program tanpa mengubah nilai keluarannya. Hal ini dapat diatasi pada penelitian selanjutnya dengan juga memperhatikan faktor semantik kode program pada saat pendeteksian. Pemeriksaan faktor semantik ini dapat dilakukan dengan mengecek nilai keluaran kode program terlebih dahulu sebelum dilakukan proses clustering. Saran lainnya adalah menggunakan algoritme

hierarchical agglomerative clustering dalam pendeteksian untuk mengakomodasi adanya kode program baru yang ingin dimasukkan dalam hasil clustering tanpa perlu melakukan clustering ulang kode-kode program lainnya. Selain itu, disarankan untuk menambah korpus kode program sehingga pendeteksian dapat diujikan pada berbagai macam kompleksitas kode program.

DAFTAR PUSTAKA

Bowyer K, Hall L. Experience using MOSS to detect cheating on programming assignments. Di dalam: 29th ASEE/IEEE Frontiers in Education Conference: 1999 Nov 10-13; San Juan, Puerto Rico. Champaign (US): Stipes Publishing LLC. hlm 18-22.

Burrow S. 2004. Efficient and effective plagiarism detection for large code repositories [tesis]. Melbourne (AU): RMIT University.

Cavnar WB, Trenkle JM. 1994. N-Gram-Based Text Categorization. Ann Arbor (US): Environmental Research Institute of Michigan.

Chawla M. 2003. An indexing technique for efficiently detecting plagiarism in large volume of source code [tesis]. Melbourne (AU): RMIT University.

Gitchel D, Tran N. Sim. A utility for detecting similarity in computer programs. Di dalam: 30th SIGCSE Technical Symposium: 1999 Mar 14-28; New Orleans, Louisiana. New York (US): ACM. hlm 266-270.

Gumilang AP. 2013. Pendeteksian penjiplakan kode program C dengan K-means [skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor.

Manning CD, Raghavan P, Schütze H. 2008. An Introduction to Information

Retrieval. Cambridge (UK): Cambridge University Press.

Prechelt L, Malpohl G, Philippsen M. 2002. Finding plagiarisms among a set of programs with JPlag. Universal Computer Science. 8(11):1016–1038.

(32)

22

9 printf("%lu\n", b); //cetak hasil

(33)

23 Lampiran 2 Hasil pengelompokan manual untuk DataSet1

1 2 3 4 5 6 7 8 9

D13 D1 D2 D3 D6 D9 D19 D25 D20

D16 D60 D4 D5 D18 D12 D41 D50 D59

D17 D68 D11 D7 D28 D34 D54 D66

D22 D86 D14 D8 D39 D38 D63 D71

D23 D87 D15 D10 D58 D40 D75

D24 D90 D21 D47 D64 D76

D26 D91 D29 D53 D69 D77

D27 D31 D56 D72 D88

D30 D35 D78 D92

D32 D43 D84

D33 D49

D36 D52

D37 D55

D42 D57

D44 D67

D45 D73

D46 D83

(34)

24

Lampiran 3 Hasil pengelompokan manual untuk DataSet2

1 2

D1 D32 D5

D2 D33 D25

D3 D34 D31

D4 D35 D36

D6 D37 D40

D7 D38 D52

D8 D39 D56

D9 D41 D60

D10 D42

D11 D43

D12 D44

D13 D45

D14 D46

D15 D47

D16 D48

D17 D49

D18 D50

D19 D51

D20 D53

D21 D54

D22 D55

D23 D57

D24 D58

D26 D59

(35)

25 Lampiran 4 Hasil pengelompokan manual untuk DataSet3

(36)

26

Lampiran 5 Tabel aturan konversi kode program menjadi token sederhana

Keyword / special character

Token

sederhana

Keyword / special character

Token

sederhana

+ a short E

- b long F

* c signed G

/ d unsigned H

% e if I

& f else J

| g while K

( h do L

) i for M

, j ALPHANUM N

{ k goto O

} l case P

< m break Q

> n return R

= o switch S

. p const T

! q continue U

: r sizeof W

int A struct X

float B enum Y

char C typedef Z

(37)

27

RIWAYAT HIDUP

Gambar

Gambar 1  Tahapan penelitian
Tabel term
Tabel 1  Contoh aturan konversi kode program
Tabel 3  Set data setelah pengelompokan manual
+4

Referensi

Dokumen terkait

Adapun tujuan penelitian ini adalah untuk mengetahui hubungan pengetahuan gizi, aktivitas fisik, asupan lemak dan energi dengan kejadian obesitas pada

Pada penelitian ini, ditentukan beberapa sifat terkait graf komuting dan nonkomuting dari grup dihedral meliputi kajian mengenai dimensi metrik, multiplisitas sikel, radius dan

a) Industri rumah tangga, yaitu industri yang menggunakan tenaga kerja kurang dari empat orang. Ciri industri ini memiliki modal yang sangat terbatas, tenaga kerja.. berasal

Subyek dengan laringomalasia juga perlu dipasti- kan diagnosis adanya RLF atau GERD berdasar hasil pemeriksaan laringoskopi dengan menggunakan skor RFS, komponen yang dapat

224/MEN/2003 tentang Kewajiban Pengusaha yang Mempekerjakan Pekerja/Buruh Perempuan Antara Pukul 23.00 sampai dengan 07.00, maka pengusaha Liquid Cafe Next Generation

Penelitian ini bertujuan untuk : (1) menganalisis perubahan penggunaan lahan pada periode tahun 1998 dan 2008 di Kabupaten Bandung Barat, (2) menganalisis perubahan penggunaan

Tutup celah penyelundupan narkoba, baik di pelabuhan maupun bandara, pelabuhan kecil yang ada di negara kita,&#34; kata Presiden Jokowi saat membuka Rapat Terbatas dengan