BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini akan membahas tahap implementasi dan pengujian sistem. Tahap implementasi merupakan tahap pelaksanaan atau penerapan dari perancangan. Sedangkan pengujian adalah sebuah tahap yang dilakukan untuk menguji apakah aplikasi yang dibuat sudah sesuai dengan analisis dan perancangan sistem sebelumnya. 4.1
Implementasi
4.1.1 Implementasi Aplikasi Implementasi aplikasi merupakan hasil implementasi dari perancangan sistem dan desain interface. Berikut ini hasil implementasi aplikasi yang dibuat untuk membandingkan kemiripan dua buah teks. Aplikasi ini dibuat sesederhana mungkin untuk mempermudah pengguna dalam menggunakan aplikasi. Lihat Gambar 4.1 untuk tampilan awal dan Gambar 4.2 untuk tampilan hasil.
Gambar 4.1 Gambar Tampilan Awal
37
38
Gambar 4.2 Gambar Aplikasi Menampilkan Hasil Kemiripan Kedua Teks
4.1.2 Implementasi Algoritma Fungsi gram adalah sebuah fungsi untuk menentukan nilai k-gram. Hal yang dilakukan untuk menentukan k-gram adalah melakukan explode, yaitu memecah string menjadi sub string dengan spasi. Dari explode ini akan terbagi kedalam beberapa bagian. Setelah melakukan explode, dilakukan lagi penghitungan dari jumlah kata yang sudah di explode tersebut. Hasil penghitungan dari count akan dibagi dengan hasil dari explode sebelumnya. Maka hasil pembagian inilah yang akan menjadi sebuah nilai k-gram. Lihat Kode 4.1. Kode 4.1 Fungsi gram function gram($teks){ $explode = explode(" ", $teks); $count = count($explode); $nilai = 0; $round = 0; for ($i=0; $i<=$count-1; $i++) { $nilai = $nilai + strlen($explode[$i]); } $round = round ($nilai/$count); return $count; }
39
Fungsi hitung adalah sebuah fungsi yang digunakan untuk menghitung dan melakukan pembersihan teks. Hal yang dilakukan dalam pembersihan teks adalah menjadikan inputan teks sebagai huruf kecil dan menghilangkan karakter huruf, spasi dan tanda baca yang ada pada inputan teks. Setelah melakukan pembersihan teks, akan melakukan pembentukkan rangkaian gram (array) sesuai dengan nilai k-gram yang sudah ditentukan dalam bentuk array. Melakukan penghitungan atas array yang sudah dibentuk pada proses sebelumnya. Menentukan nilai bilangan prima untuk digunakan pada proses selanjutnya, yaitu fungsi rolling hash. Lihat Kode 4.2. Kode 4.2. Fungsi hitung function hitung($teks, $round , $window, $h){ $teks = strtolower($teks); $teks = str_replace(" ", "", $teks); $teks = preg_replace("/[^A-Za-z0-9 ]/", '', $teks); $jmlhrf = strlen($teks); for ($i=1; $i<=$jmlhrf-$round+1; $i++) { $gram[$i-1]=substr ($teks, $i-1, $round); } $value = ""; $result = ""; foreach ($gram as $value) { $result .= $value. " "; } $nhash = rhash($gram, $round, $window, $h); $fprint = fingerprint($nhash[0], $window); $results = array($result, $nhash[1],$nhash[2], $fprint,"yellow"); return $results; }
Fungsi rhash merupakan sebuah fungsi rolling hash, dimana rolling hash merubah bentuk huruf kedalam bentuk nilai ascii. Proses ini dilakukan dengan menggunakan rumus rolling hash, dimana rumus ini adalah mengalikan nilai ascii dengan bilangan prima yang sudah ditentukan yang berpangkat k-gram. Perubahan huruf kedalam bentuk ascii dilakukan dengan menggunakan fungsi
40
ord, sedangkan untuk melakukan pemangkatan menggunakan fungsi pow. Lihat Kode 4.3. Kode 4.3. Fungsi rhash function rhash($value, $round, $window, $h) { $f = sizeof($value); $result[$f] = 0; $nilaihash = ""; $nilaiwindow = ""; for($j=0; $j<$f; $j++) { $g = 0; for ($i=0; $i<$round; $i++) { $char = substr($value[$j], $i, $i+1); $g = $g + (ord($char) * pow($h, $round-($i+1))); } $nilaihash .= " ".$g; $result[$j] = $g; } for($j=0; $j<$f; $j++) { $end = $result[$f - 1]; for ($i=0; $i<$window; $i++) { $value = $result[$i+$j]; $nilaiwindow .= $value. " "; } if ($value == $end) break; $nilaiwindow .= "
"; } return array($result,$nilaihash,$nilaiwindow);
}
Fungsi
fingerprint
masih
termasuk
kedalam
rangkaian
algortima
Winnowing. Fungsi ini digunakan untuk memilih nilai minimum atau nilai terkecil dari rangkaian hash yang sudah terbentuk pada proses fungsi rolling hash. Lihat Kode 4.4.
41
Kode 4.4. Fungsi fingerprint function fingerprint($value, $window) { $result = "" ; $f = sizeof($value); $prevPrint = 0; for($j=0; $j<$f; $j++) { $kecil = 0; $start = $value[$j]; for($i=$j+1; $i<$window+$j; $i++) { $ci = count($value); if($kecil == 0){ if(!isset ($value[$i])){ $value[$i] = null; } if($start > $value[$i]) { $kecil = $value[$i]; } else { continue; } } else { if($kecil > $value[$i]) { $kecil = $value[$i]; } else { continue; } } } if($prevPrint == 0 || $prevPrint != $kecil){ $prevPrint = $kecil; if($kecil != 0 || $kecil != "" ) $result .=$kecil." "; } else if ($prevPrint == $kecil) { continue; } } return $result; }
Fungsi yang terakhir adalah fungsi persentase kemiripan, dimana fungsi ini tidak termasuk kedalam rangkaian algoritma Winnowing. Karena fungsi ini hanya menentukan besarnya nilai kemiripan dari proses algoritma Winnowing. Nilai kemiripan bisa ditentukan dengan cara membagi nilai hash yang sama dengan
42
jumlah nilai hash 1 dengan hash 2 yang dikurangi nilai hash yang sama kemudian dilakukan perkalian dengan angka 100 untuk mendapatkan hasil dalam bentuk persentase. Lihat Kode 4.5. Kode 4.5. Fungsi persentase. function persentase($value, $window) { $ns = 0; $prevPrint = 0; $a=explode(" ",$value); $b=explode(" ",$window); $f = count($a)-1; $g = count($b)-1; for($i=0; $i<$f; $i++) { if($a[$i]<>""){ $n=$a[$i]; if (strpos($window,$n) !== false) { $ns = $ns+1; } } } $persen = ($ns/($f+$g-$ns)) * 100; $bagi =$f+$g-$ns; return $ns."/".$bagi." x 100% = ".round($persen) ." %"; }
4.2
Pengujian Tahapan pengujian dilakukan untuk mengetahui apakah aplikasi berjalan
sesuai dengan apa yang telah ditetapkan pada tahapan perancangan sebelumnya. Dalam hal pengujian ini, dilakukan perbandingan antara algoritma Winnowing dengan fungsi similar_text dan melakukan pengujian dengan menggunakan
43
metode pengujian black box dan kuesioner. Metode pengujian black box terdiri atas skenario pengujian, hasil pengujian dan analisa hasil pengujian. Pengujian dilakukan dengan menggunakan berbagai 3 paragraph teks yang berbeda. Teks yang digunakan adalah teks cerita daerah dari Indonesia, yaitu cerita daerah tentang Sungai Kawat. Cerita ini berasal dari daerah Kalimantan Barat. Contoh teks 1 yang digunakan dapat dilihat di artikel 4.1. Pada zaman dahulu kala, di salah satu anak sungai dari sungai kapuas yaitu sungai kawat, ada seorang nelayan yang pergi memancing di sungai kawat. Namun setelah lama menunggu, ia tidak mendapat satupun tangkapan ikan. Lalu saat ia hampir putus asa, alat pancingnya ditarik. Ia mengira ini ikan besar, tapi ternyata saat ia mengangkatnya ternyata itu kawat emas, karena senang ia menariknya dengan sekuat tenaga. Lalu tiba-tiba ada suara entah dari mana yang mengatakan bahwa "Jika kau menginginkan itu potonglah kawat itu lalu bawa ke tepian, lalu kau tarik kembali". Namun ia tidak menghiraukannya. Karena kawat itu sangat berat, akhirnya kapal, kawat emas dan nelayan itu tenggelam di sungai kawat itu.
Artikel 4.1 Teks 1 Contoh teks 2 yang digunakan dapat dilihat di artikel 4.2. Pada zaman dahulu kala, ada salah satu anak sungai dari sungai Kapuas yaitu sungai kawat. Suatu hari, ada seorang nelayan yang pergi memancing di sungai tersebut. Setelah lama ia menunggu, ia tidak mendapat satupun tangkapan ikan. Ketika ia hampir putus asa, ia mendapati alat pancingnya yang terkait, kemudian segera mungkin alat pancingnya ia tarik sekuat tenaga. Ia mengira akan mendapat ikan besar, tapi ketika ia mengangkatnya ternyata ia mendapatkan kawat emas. Karena sangat senang mendapatkan emas, ia langsung menariknya dengan sekuat tenaga. Lalu tiba-tiba ada suara yang mengatakan, "Jika kau menginginkan kawat itu, potonglah kawat itu lalu kau bawa ke tepian. Kemudian kau tarik kembali". Ia pun berhenti sejenak untuk mencari sumber dari suara tersebut. Namun, ia tidak juga menemukan sumber suaranya. Akhirnya, ia pun tidak menghiraukan isi nasihat dari suara tersebut dan tetap menarik kawat itu. Dikarenakan kawat itu sangat berat, akhirnya kapal, kawat emas dan nelayan itu tenggelam di sungai tersebut. Setelah terjadinya peristiwa tersebut, maka disebutlah sungai itu dengan sebutan sungai kawat.
Artikel 4.2 Teks 2
44
Contoh teks 2 yang digunakan dapat dilihat di artikel 4.3. Pada zaman dahulu kala, ada salah satu anak sungai dari sungai Kapuas yaitu sungai kawat. Suatu hari, ada tiga orang nelayan yang pergi memancing di sungai tersebut. Setelah lama mereka menunggu, mereka tidak mendapat satupun tangkapan ikan. Ketika mereka hampir putus asa, mereka mendapati alat pancingnya yang terkait, kemudian segera mungkin alat pancingnya mereka tarik sekuat tenaga. Mereka mengira akan mendapat ikan besar, tapi ketika mereka mengangkatnya ternyata mereka mendapatkan kawat emas. Karena sangat senang mendapatkan emas, mereka langsung menariknya dengan sekuat tenaga. Lalu tiba-tiba ada suara yang mengatakan, "Jika kalian menginginkan kawat itu, potonglah kawat itu lalu kalian bawa ke tepian. Kemudian kalian tarik kembali". Mereka pun berhenti sejenak untuk mencari sumber dari suara tersebut. Namun, mereka tidak juga menemukan sumber suaranya. Akhirnya, mereka pun tidak menghiraukan isi nasihat dari suara tersebut dan tetap menarik kawat itu. Dikarenakan kawat itu sangat berat, akhirnya kapal, kawat emas dan para nelayan itu tenggelam di sungai tersebut. Setelah terjadinya peristiwa tersebut, maka disebutlah sungai itu dengan sebutan sungai kawat.
Artikel 4.3 Teks 3 4.2.1 Lingkungan Pengujian Aplikasi berbasis web untuk membandingkan kemiripan dua buah teks ini dibangun dan diimplementasikan pada seperangkat komputer pribadi (Personal Computer) dengan spesifikasi masing-masing kebutuhan sistem sebagai berikut: 1.
Perangkat keras (hardware) yang digunakan dalam pembuatan aplikasi ini adalah:
Processor
: Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz 3.20 GHz
Harddisk
: 500 GB
Memori
: 4 GB
2.
Perangkat lunak (software) yang digunakan dalam pembuatan aplikasi ini adalah:
Sistem operasi yang digunakan adalah Mirosoft Windows 7 32 bit
Editor Notepad++
45
Browser google chrome
XAMPP Control Panel Versi 3.2.1
4.2.2 Pengujian Black Box Pengujian dengan menggunakan black box digunakan untuk menentukan langkah-langkah dalam penggunaan aplikasi dan untuk memeriksa apakah buttonbutton yang ada pada aplikasi berjalan dengan sesuai pada fungsinya. Berikut ini tabel hasil dari pengujian menggunakan black box. Lihat Tabel 4.1. Tabel 4.1 Tabel Hasil Pengujian dengan Menggunakan Metode Black Box No.
1.
2.
Skenario
Pengujian input teks
Pengujian nilai gram
3.
Pengujian nilai window
4.
Pengujian mengecek kemiripan
5.
Pengujian hasil persentase
Bagian interface yang diuji
Cara pengujian
Hasil yang diinginkan
Input teks 1 dan teks 2
User memasukkan teks 1 dan teks 2 (lihat artikel 4.1, artikel 4.2 dan artikel 4.3)
Menampilkan hasil inputan teks 1 dan teks 2
Sesuai
Input teks gram
User memasukkan teks 1 dan 2, maka sistem akan membaca nilai gram secara otomatis
Menampilkan nilai gram dari teks 1 dan teks 2
Sesuai
Input window
User memasukkan teks 1 dan 2, maka sistem akan membaca nilai window secara otomatis
Menampilkan nilai window dari teks 1 dan teks 2
Sesuai
Button Cek
User bisa memulai proses pengecekkan kemiripan teks dengan menekan button “Cek”
Melakukan proses pengecekkan.
Sesuai
Textarea persentase kemiripan
Setelah menekan button cek, user bisa melihat hasil persentase di textarea persentase kemiripan
Menampilkan hasil persentase kemiripan dari kedua teks
Sesuai
teks
Hasil pengujian
46
4.2.3 Hasil Pengujian 1.
Hasil pengujian dengan fungsi similar_text Berikut ini hasil pengujian menggunakan fungsi similar_text. Pengujian ini
menggunakan 3 buah artikel teks yang berbeda. Hasil pengujian teks 1 dan teks 2 menggunakan fungsi similar_text mempunyai kemiripan sebesar 69.44 %. Hasil tersebut dapat di lihat pada Gambar 4.3.
Gambar 4.3 Pengujian teks 1 dan teks 2 menggunakan fungsi similar_text
Hasil pengujian teks 1 dan teks 3 menggunakan fungsi similar_text mempunyai kemiripan sebesar 65.96 %. Hasil tersebut dapat di lihat pada Gambar 4.4.
47
Gambar 4.4 perbandingan antara teks 1 dan teks 3 dengan menggunakan fungsi similar_text
Hasil pengujian teks 2 dan teks 3 menggunakan fungsi similar_text dapat di lihat pada Gambar 4.5.
Gambar 4.5 perbandingan antara teks 2 dan teks 3 dengan menggunakan fungsi similar_text
48
Berikut adalah tabel hasil pengujian dari ketiga teks menggunakan fungsi similar_text. Lihat Tabel 4.2. Tabel 4.2 Hasil pengujian menggunakan fungsi similar_text
2.
Teks
Kemiripan
1 dan 2
69.441401971522 %
1 dan 3
65.961945031712 %
2 dan 3
95.670995670996 %
Pengujian Kuesioner Pengujian kuesioner merupakan pengujian yang dilakukan untuk melihat
hasil perbandingan kemiripan dua buah teks secara manual. Pengujian kuesioner ini dilakukan dengan membagikan lembar kuesioner kepada 20 orang responden. Sample data yang digunakan dalam evaluasi ini berupa 3 teks yang dibandingkan, teks 1 dengan teks 2, teks 1 dengan teks 3, dan teks 2 dengan teks 3. Kuesioner ini disebar kepada 20 responden ahli bahasa atau mahasiswa jurusan bahasa dan sastra atau mahasiswa-mahasiswi yang mempunyai nilai mata kuliah bahasa Indonesia A dan B+. Kuesioner ini berisikan 3 buah teks cerita yang berbeda. Responden diminta untuk memberikan pendapat tentang berapa persen tingkat kemiripan dari ketiga teks tersebut. Perbandingan ketiga teks tersebut dikelompokkan menjadi ketiga kategori, yaitu teks 1 dengan teks 2, teks 1 dengan teks 3 dan teks 2 dengan teks 3 dengan tingkat kemiripan dari 0 sampai dengan 4. Dimana 0=Tidak Mirip, 1=Agak Mirip, 2=Cukup Mirip, 3=Mirip, 4=Sangat Mirip. Hasil dari evaluasi perbandingan ini memberikan kalkulasi rentang perbandingan keakuratan dalam mencari kemiripan dua teks antara program aplikasi dengan responden.
49
Berikut hasil perbandingan evaluasi yang kami dapatkan dari 10 responden dan aplikasi yang telah dibuat. Lihat Tabel 4.3. Tabel 4.3 Tabel Hasil Kuesioner Responden Responden
Skala Tingkat Kemiripan Teks 1 dengan Teks 2
Teks 1 dengan Teks 3
Teks 2 dengan Teks 3
1
3
0
1
2
2
1
0
3
1
0
1
4
1
1
2
5
3
2
4
6
0
0
3
7
2
1
2
8
1
0
3
9
2
1
3
10
0
0
1
11
1
0
1
12
1
1
3
13
1
1
3
14
3
3
4
15
2
2
3
16
1
0
2
17
0
0
1
18
2
0
0
19
3
1
2
20
0
0
0
Jumlah ( Ʃ )
29
14
39
50
Berdasarkan hasil dari kuesioner yang sudah dijabarkan pada Tabel 4.3, jumlah kemiripan teks 1 dan teks 2 dari 20 orang responden mempunyai jumlah 29, sedangkan kemiripan teks antara teks 1 dengan teks 3 mempunyai jumlah 14, dan kemiripan teks antara teks 2 dengan teks 3 mempunyai jumlah 39.
Pengolahan Hasil Pengujian Kuesioner Hasil pengujian kuesioner akan diolah untuk mendapatkan nilai persentase
dari perbandingan ketiga teks tersebut. Untuk mendapatkan nilai persentase dari pengujian kuesioner, menggunakan rumus: Ʃ Max * R
x 100 %
Keterangan: Ʃ
= Jumlah nilai hasil kuesioner antar teks
Max
= Nilai maksimum dari skala tingkat kemiripan kuesioner
R
= Jumlah responden
Jumlah nilai hasil kuesioner antar teks dibagi dengan (nilai maksimum dari skala tingkat kemiripan dikali dengan jumlah responden) dan dikalikan dengan 100% untuk mendapatkan nilai dalam bentuk persentase. Dari rumus tersebut maka di dapatkan hasil persentase kemiripan dari ketiga teks yang dimasukkan kedalam tabel. Lihat Tabel 4.4. Tabel 4.4 Tabel Hasil Pengolahan Kuesioner Teks
Ʃ
Max
R
Hasil
1 dan 2
29
4
20
36.25 %
1 dan 3
14
4
20
17.5 %
2 dan 3
39
4
20
48.75 %
51
3.
Pengujian Aplikasi Menggunakan Algoritma Winnowing Pengujian aplikasi berbasis web untuk membandingkan kemiripan dua buah
teks ini dilakukan dengan menggunakan ketiga artikel yang sama dengan yang dilakukan pengujian similar_text. Pengujian ini dilakukan untuk mengetahui besarnya nilai persentase dari kemiripan antar teks. Berikut ini hasil pengujian aplikasi yang sudah dibuat. Pengujian teks 1 dan teks 2 menggunakan aplikasi yang sudah dibuat mendapat nilai persentase 40%. Lihat Gambar 4.6.
Gambar 4.6 Hasil pengujian aplikasi teks 1 dengan teks 2.
Pengujian teks 1 dan teks 3 menggunakan aplikasi yang sudah dibuat mendapat nilai persentase 35%. Lihat Gambar 4.7.
52
Gambar 4.7 Hasil pengujian aplikasi teks 1 dengan teks 3.
Pengujian teks 2 dan teks 3 menggunakan aplikasi yang sudah dibuat mendapat nilai persentase 77%. Lihat Gambar 4.8.
Gambar 4.8 hasil pengujian aplikasi teks 2 dengan teks 3
53
Berikut adalah tabel hasil pengujian dari ketiga teks menggunakan aplikasi yang telah dibuat. Lihat Tabel 4.5. Tabel 4.5 Tabel Hasil Evaluasi Kemiripan Dua Teks dari Aplikasi Teks
Hasil Persentase Aplikasi
1 dan 2
40 %
1 dan 3
35 %
2 dan 3
77 %
4.2.4 Analisis Hasil Ketiga Pengujian Analisis hasil dari ketiga pengujian yang dilakukan pada aplikasi ini adalah untuk membandingkan kemiripan dua buah teks yang telah dibuat menggunakan algoritma Winnowing. Setelah melakukan pengujian, hasil yang diperoleh mempunyai range nilai yang tidak terlalu jauh dengan hasil pengujian dari kuesioner. Perbandingan hasil dari ketiga pengujian yang dilakukan dapat dilihat pada Tabel 4.6. Tabel 4.6 Tabel Hasil Pengujian Aplikasi, Similar_text, dan Kuesioner Hasil Persentase Teks
Aplikasi menggunakan Algoritma Winnowing
Aplikasi menggunakan Similar_text
Kuesioner
1 dan 2
40 %
69.44 %
36.25 %
1 dan 3
35 %
68.96 %
17.5 %
2 dan 3
77 %
95.67 %
48.75 %
Hal ini dikarenakan terdapat perbedaan proses antara proses yang ada pada algoritma Winnowing dengan proses yang ada pada fungsi similar_text. Perbedaan ini terletak pada proses filtering (pembersihan karakter) dan proses whitespace insensitivity (ketidakpekaan spasi). Filtering meliputi karakter pada huruf, tanda baca, dan huruf kapital. Proses filtering dan proses whitespace
54
insensitivity ini bertujuan untuk menghilangkan spasi, tanda baca, karakter huruf dan huruf kapital. Pada fungsi similar_text tidak melakukan proses filtering dan proses whitespace insensitivity, fungsi ini hanya langsung membandingkan dari kedua teks yang telah di input. Sehingga spasi, tanda baca, karakter huruf, dan huruf kapital dapat mempengaruhi jumlah persentase kemiripan dua buah teks. Sedangkan pada algoritma Winnowing melakukan proses filtering dan proses
whitespace
insensitivity,
yaitu
melakukan
pembersihan
teks
(menghilangkan tanda baca, karakter pada huruf, spasi, dan menjadikan huruf kapital menjadi lowercase). Sehingga spasi, tanda baca, karakter huruf, dan huruf kapital tidak dapat mempengaruhi jumlah persentase kemiripan dua buah teks. Hal ini membuktikan bahwa aplikasi berbasis web untuk membandingkan kemiripan dua buah teks menggunakan algoritma Winnowing lebih baik dibandingkan dengan menggunakan fungsi similar_text.