sistem pemerolehan informasi karya ilmiah … · sistem pemerolehan informasi karya ilmiah berbasis...

272
SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat memperoleh gelar Sarjana Teknik Informatika (S.Kom.) Program Studi Teknik Informatika Disusun Oleh : AGUSTINUS AGRI ARDYAN NIM : 125314109 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2016 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Upload: dinhtu

Post on 06-Mar-2019

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS

CLUSTER DENGAN G-MEANS CLUSTERING

SKRIPSI

Diajukan untuk memenuhi salah satu syarat

memperoleh gelar Sarjana Teknik Informatika (S.Kom.)

Program Studi Teknik Informatika

Disusun Oleh :

AGUSTINUS AGRI ARDYAN

NIM : 125314109

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 2: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

CLUSTER BASED INFORMATION RETRIEVAL SYSTEM FOR

SCIENTIFIC PAPER RETRIEVAL USING G-MEANS CLUSTERING

THESIS

Presented as partial fulfillment of the requirements

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

In Informatics Engineering

Written by :

AGUSTINUS AGRI ARDYAN

NIM : 125314109

DEPARTMENT OF INFORMATICS ENGINEERING

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 3: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 6: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

vi

HALAMAN MOTTO

- Ad maiorem Dei gloriam -

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 7: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

vii

HALAMAN PERSEMBAHAN

Penelitian ini dipersembahkan untuk :

Allah Bapa, Putera dan Roh Kudus atas berkat dan bimbinganNya

Kedua orangtuaku, Mikael ‘Pae’ Santosa dan Fransiska ‘Ibuk’ Tasri Aryani yang

dengan sabar selalu membimbing langkahku

Adikku, Philipus ‘Bro' Agri Adhiatma, yang selalu menghibur setiap saat

Teman-teman Teknik Informatika yang selalu suportif dan memberikan banyak

sekali pengalaman dan ilmu baru.

Kepada segenap masyarakat yang terpanggil dan ikut berkontribusi dalam

kemajuan ilmu pengetahuan.

Semoga penelitian ini bisa ikut memberikan kontribusi yang baik bagi ilmu

pengetahuan. Amin.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 8: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

viii

DAFTAR ISI

SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS

CLUSTER DENGAN G-MEANS CLUSTERING ................................................. i

CLUSTER BASED INFORMATION RETRIEVAL SYSTEM FOR

SCIENTIFIC PAPER RETRIEVAL USING G-MEANS CLUSTERING ............ ii

HALAMAN PERSETUJUAN SKRIPSI .............................................................. iii

HALAMAN PENGESAHAN SKRIPSI ............................................................... iv

PERNYATAAN KEASLIAN KARYA ................................................................ v

HALAMAN MOTTO ........................................................................................... vi

HALAMAN PERSEMBAHAN .......................................................................... vii

DAFTAR ISI ....................................................................................................... viii

DAFTAR GAMBAR ........................................................................................... xii

DAFTAR TABEL ............................................................................................... xiv

DAFTAR PERSAMAAN ................................................................................. xviii

ABSTRAK .......................................................................................................... xix

ABSTRACT ......................................................................................................... xx

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI.............................. xxi

KATA PENGANTAR ....................................................................................... xxii

BAB I PENDAHULUAN ...................................................................................... 1

1.1. Latar Belakang ..................................................................................................... 1

1.2. Rumusan Masalah ............................................................................................... 2

1.3. Tujuan Penelitian ................................................................................................ 2

1.4. Batasan Masalah ................................................................................................. 3

1.5. Metodologi Penelitian ......................................................................................... 3

1.6. Sistematika Penulisan ......................................................................................... 5

BAB II LANDASAN TEORI ............................................................................... 7

2.1. Konsep Pemerolehan Informasi .......................................................................... 7

2.1.1. Operasi Teks ................................................................................................ 7

2.1.1.1. Stopword ............................................................................................. 7

2.1.1.2. Stemming ............................................................................................ 7

2.1.1.3. Tokenisasi .......................................................................................... 10

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 9: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

ix

2.1.2. Term-Document Matrix ............................................................................ 10

2.1.3. TF-IDF sebagai Metode Pembobotan ....................................................... 11

2.1.4. Evaluasi Pemerolehan Informasi ............................................................... 12

2.2. Konsep Pengelompokan Dokumen ................................................................... 12

2.2.1. Clustering dalam Pemerolehan Informasi................................................. 12

2.2.2. Hipotesis Cluster ....................................................................................... 13

2.2.3. K-Means .................................................................................................... 13

2.2.4. G-Means .................................................................................................... 15

2.2.5. Evaluasi Cluster ......................................................................................... 18

2.2.5.1. Purity ................................................................................................. 18

BAB III ANALISIS DAN PERANCANGAN SISTEM ..................................... 19

3.1. Analisis Sistem ................................................................................................... 19

3.1.1. Deskripsi Sistem ........................................................................................ 19

3.1.1.1. Sub Sistem Pengelompokan Dokumen ............................................. 19

3.1.1.2. Sub Sistem Pencarian Dokumen ....................................................... 23

3.1.2. Data yang Digunakan ................................................................................ 26

3.1.3. Analisis Kebutuhan Pengguna ................................................................... 26

3.2. Perancangan Sistem .......................................................................................... 26

3.2.1. Data Flow Diagram .................................................................................... 26

3.2.1.1. Diagram Konteks ............................................................................... 26

3.2.1.2. Overview DFD .................................................................................... 27

3.2.1.3. DFD Level 2 ........................................................................................ 28

3.2.2. Diagram Berjenjang ................................................................................... 30

3.2.3. Deskripsi Proses ........................................................................................ 30

3.2.3.1. Deskripsi Proses 1 : Pengelompokan Dokumen ................................ 30

3.2.3.2. Deskripsi Proses 2 : Pencarian Dokumen .......................................... 31

3.2.4. Rancangan Basis Data ............................................................................... 33

3.2.4.1. Desain Konseptual ............................................................................. 33

3.2.4.2. Desain Logikal .................................................................................... 33

3.2.4.3. Desain Fisikal ..................................................................................... 34

3.2.5. Rancangan Antarmuka Pengguna ............................................................. 37

3.2.5.1. Antarmuka Pengelompokan Dokumen ............................................. 37

3.2.5.2. Antarmuka Pencarian Dokumen ....................................................... 37

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 10: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

x

BAB IV IMPLEMENTASI SISTEM .................................................................. 38

4.1. Struktur Data ..................................................................................................... 38

4.2. Implementasi Basis Data ................................................................................... 39

4.3. Implementasi Pengelompokan Dokumen ......................................................... 39

4.3.1. Implementasi G-Means ............................................................................. 39

4.4. Implementasi Pencarian Dokumen ................................................................... 48

4.4.1. Implementasi Preprocessing Query .......................................................... 48

4.4.2. Implementasi Pencarian Berbasis Cluster dan Konvensional ................... 50

4.5. Implementasi Antarmuka Pengguna................................................................. 51

4.5.1. Implementasi Antarmuka Pengelompokan Dokumen .............................. 51

4.5.2. Implementasi Antarmuka Pencarian Dokumen ........................................ 52

BAB V ANALISIS HASIL PENELITIAN ......................................................... 54

5.1. Analisis Hasil Sistem .......................................................................................... 54

5.1.1. Hasil Pengelompokan Dokumen ............................................................... 54

5.1.1.1. Purity ................................................................................................. 58

5.1.2. Hasil Pengujian Pencarian Dokumen berdasar Kueri Pengguna ............... 59

5.1.2.1. Pencarian dengan query data i i g ............................................ 59

5.1.2.2. Pencarian dengan query aï e ayes ............................................ 64

5.1.2.3. Pencarian dengan query klasifikasi ................................................ 68

5.1.2.4. Pencarian dengan query siste pe duku g keputusa ................ 73

5.1.2.5. Pencarian dengan query jari ga ko puter ................................. 78

5.1.2.6. Pencarian dengan query data i i g e ggu aka k- ea s ...... 82

5.1.2.7. Pencarian dengan query kesehata a usia ................................ 86

5.1.2.8. Pencarian dengan query diag osa pe yakit .................................. 90

5.1.2.9. Pencarian dengan query t p udp ................................................... 94

5.1.2.10. Pencarian dengan query ireless .................................................. 98

5.2. Pembahasan .................................................................................................... 102

5.2.1. Rerata Interpolasi 11 Titik Recall – Precision .......................................... 102

5.2.1.1. Sistem Pemerolehan Informasi berbasis Cluster ............................ 102

5.2.1.2. Sistem Pemerolehan Informasi Konvensional ................................ 103

5.2.2. Waktu Eksekusi ....................................................................................... 105

5.3. Kelebihan dan Kekurangan Sistem .................................................................. 107

5.3.1. Kelebihan Sistem ..................................................................................... 107

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 11: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xi

5.3.2. Kekurangan Sistem .................................................................................. 107

BAB VI KESIMPULAN DAN SARAN ........................................................... 108

6.1. Kesimpulan ...................................................................................................... 108

6.2. Saran ............................................................................................................... 108

DAFTAR PUSTAKA ........................................................................................ 109

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 12: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xii

DAFTAR GAMBAR

Gambar 2.1. Visualisasi term-document matrix................................................................ 11

Gambar 2.2. Pseudocode algoritma K-Means (Manning et al, 2008) ............................... 13

Gambar 2.3. Visualisasi proses yang terjadi dalam algoritma K-Means (Manning et al,

2008) ................................................................................................................................. 14

Gambar 2.4. Visualisasi G-Means dalam suatu dataset 2 dimensi dengan 1000 point.

Algoritma G-Means mencoba mencari normalitas dalam sebaran titik pada suatu cluster

(Hamerly et al., 2004) ....................................................................................................... 15

Gambar 3.1. Alur proses pengklusteran dokumen ........................................................... 20

Gambar 3.2. Alur proses pencarian dokumen .................................................................. 24

Gambar 3.3. Sistem Pemerolehan Informasi Konvensional (Baeza, 1999)....................... 25

Gambar 3.4. Sistem Pemerolehan Informasi Berbasis Cluster ......................................... 25

Gambar 3.5. Diagram konteks dari sistem yang akan dibangun ...................................... 26

Gambar 3.6. Overview DFD dari sistem yang akan dibangun ........................................... 27

Gambar 3.7. DFD level 2 dari proses pengelompokan dokumen ..................................... 28

Gambar 3.8. DFD level 2 dari proses pencarian dokumen ............................................... 29

Gambar 3.9. Diagram berjenjang dari sistem yang akan dikembangkan ......................... 30

Gambar 3.10. ERD untuk sistem yang akan dibangun ...................................................... 33

Gambar 3.11. Model relasional untuk sistem yang akan dibangun ................................. 33

Gambar 3.12. Rancangan antarmuka pengguna untuk proses pengelompokan dokumen

.......................................................................................................................................... 37

Gambar 3.13. Rancangan antarmuka pengguna untuk proses pencarian dokumen ....... 37

Gambar 4.1 Struktur data untuk term list yang menggunakan LinkedList dan document

list yang menggunakan ArrayList ...................................................................................... 38

Gambar 4.2. Struktur data untuk master term list yang berupa HashMap ...................... 39

Gambar 4.3 Capture screen antarmuka subsistem pengelompokan dokumen (1) .......... 51

Gambar 4.4. Capture screen antarmuka subsistem pengelompokan dokumen (2) ......... 52

Gambar 4.5. Capture screen antarmuka subsistem pencarian dokumen ........................ 52

Gambar 4.6. Implementasi antarmuka pengguna subsistem pencarian dokumen berbasis

cluster ................................................................................................................................ 53

Gambar 4.7. Implementasi antarmuka pengguna subsistem pencarian dokumen berbasis

cluster ................................................................................................................................ 53

Gambar 5.1. Grafik interpolasi 11 titik recall precision terhadap query data i i g pada Sistem Pemerolehan Informasi berbasis Cluster ..................................................... 61

Gambar 5.2. Grafik interpolasi 11 titik recall precision terhadap query data i i g pada Sistem Pemerolehan Informasi Konvensional ......................................................... 64

Gambar 5.3. Grafik interpolasi 11 titik recall precision terhadap query aï e ayes pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 66

Gambar 5.4. Grafik interpolasi 11 titik recall precision terhadap query aï e ayes pada Sistem Pemerolehan Informasi Konvensional .................................................................. 68

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 13: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xiii

Gambar 5.5. Grafik interpolasi 11 titik recall precision terhadap query klasifikasi pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 70

Gambar 5.6. Grafik interpolasi 11 titik recall precision terhadap query klasifikasi pada Sistem Pemerolehan Informasi Konvensional .................................................................. 72

Gambar 5.7. Grafik interpolasi 11 titik recall precision terhadap query siste pe duku g keputusa pada “iste Pe eroleha I for asi er asis Cluster ............... 75

Gambar 5.8. Grafik interpolasi 11 titik recall precision terhadap query siste pe duku g keputusa pada “iste Pe eroleha I formasi Konvensional ................... 78

Gambar 5.9. Grafik interpolasi 11 titik recall precision terhadap query jari ga ko puter pada “iste Pe eroleha I for asi er asis Cluster ................................... 80

Gambar 5.10. Grafik interpolasi 11 titik recall precision terhadap query jari ga ko puter pada “iste Pe eroleha I for asi Ko e sio al ....................................... 82

Gambar 5.11. Grafik interpolasi 11 titik recall precision terhadap query aï e ayes pada Sistem Pemerolehan Informasi berbasis Cluster ..................................................... 84

Gambar 5.12. Grafik interpolasi 11 titik recall precision terhadap query data i i g menggunakan k- ea s pada “iste Pe eroleha I for asi Ko e sio al ................. 86

Gambar 5.13. Grafik interpolasi 11 titik recall precision terhadap query kesehata a usia pada “iste Pe eroleha I for asi er asis Cluster ..................................... 88

Gambar 5.14. Grafik interpolasi 11 titik recall precision terhadap query aï e ayes pada Sistem Pemerolehan Informasi Konvensional ......................................................... 90

Gambar 5.15. Grafik interpolasi 11 titik recall precision terhadap query diag osa pe yakit pada “iste Pe eroleha I for asi er asis Cluster ..................................... 92

Gambar 5.16. Grafik interpolasi 11 titik recall precision terhadap query diag osa pe yakit pada “iste Pe eroleha I for asi Ko e sio al ......................................... 94

Gambar 5.17. Grafik interpolasi 11 titik recall precision terhadap query t p udp pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 96

Gambar 5.18. Grafik interpolasi 11 titik recall precision terhadap query t p udp pada Sistem Pemerolehan Informasi Konvensional .................................................................. 98

Gambar 5.19. Grafik interpolasi 11 titik recall precision terhadap query ireless pada Sistem Pemerolehan Informasi berbasis Cluster ............................................................ 100

Gambar 5.20. Grafik interpolasi 11 titik recall precision terhadap query ireless pada Sistem Pemerolehan Informasi Konvensional ................................................................ 102

Gambar 5.21. Grafik rerata interpolasi 11 titik recall precision kedua jenis sistem ....... 104

Gambar 5.22 Grafik rerata waktu retrieval kedua jenis sistem (1) ................................. 106

Gambar 5.23. Grafik rerata waktu retrieval kedua jenis sistem (2) ................................ 106

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 14: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xiv

DAFTAR TABEL

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

Ta el 2.2. Cara Me e tuka Tipe A ala U tuk a ala te- .......................................... 9

Tabel 2.3. Awalan yang diijinkan dihapus berdasarkan Tipe Awalannya ......................... 10

Tabel 2.4. Perancangan term document matrix ............................................................... 10

Tabel 3.1. Kebutuhan fungsional pengguna sistem .......................................................... 26

Tabel 3.2. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Cluster ......................................................................................... 34

Tabel 3.3. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Documents .................................................................................. 34

Tabel 3.4. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Centroid ...................................................................................... 35

Tabel 3.5. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Term............................................................................................ 35

Tabel 3.6. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Term_Document ......................................................................... 36

Tabel 3.7. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Stopword_Ina ............................................................................. 36

Tabel 3.8. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Rootword_Ina ............................................................................. 36

Tabel 5.1. Hasil pengelompokan dokumen yang dilakukan oleh sistem .......................... 58

Tabel 5.2. Hasil penghitungan dokumen-dokumen yang sesuai dengan cluster yang

ditempati ........................................................................................................................... 58

Tabel 5.3. Hasil pencarian dengan query data i i g pada “iste Pe eroleha Informasi berbasis Cluster ................................................................................................. 60

Tabel 5.4. Penghitungan recall - precision terhadap query data i i g pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 60

Tabel 5.5. Interpolasi 11 titik recall precision terhadap query data i i g pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 61

Tabel 5.6. Hasil pencarian dengan query data i i g pada “iste Pe eroleha Informasi Konvensional..................................................................................................... 62

Tabel 5.7. Penghitungan recall - precision terhadap query data i i g pada “iste Pemerolehan Informasi Konvensional .............................................................................. 63

Tabel 5.8. Interpolasi 11 titik recall precision terhadap query data i i g pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 63

Tabel 5.9. Hasil pencarian dengan query aï e ayes pada “iste Pe eroleha Informasi berbasis Cluster ................................................................................................. 64

Tabel 5.10. Penghitungan recall - precision terhadap query aï e ayes pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 65

Tabel 5.11. Interpolasi 11 titik recall precision terhadap query aï e ayes pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 65

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 15: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xv

Tabel 5.12. Hasil pencarian dengan query aï e ayes pada “iste Pe eroleha Informasi Konvensional..................................................................................................... 66

Tabel 5.13. Penghitungan recall - precision terhadap query aï e ayes pada “iste Pemerolehan Informasi Konvensional .............................................................................. 67

Tabel 5.14. Interpolasi 11 titik recall precision terhadap query aï e ayes pada “iste Pemerolehan Informasi Konvensional .............................................................................. 67

Tabel 5.15. Hasil pencarian dengan query klasifikasi pada “iste Pe eroleha Informasi berbasis Cluster ................................................................................................. 69

Tabel 5.16. Penghitungan recall - precision terhadap query klasifikasi pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 69

Tabel 5.17. Interpolasi 11 titik recall precision terhadap query klasifikasi pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 69

Tabel 5.18. Hasil pencarian dengan query klasifikasi pada “iste Pe eroleha Informasi Konvensional..................................................................................................... 71

Tabel 5.19. Penghitungan recall - precision terhadap query klasifikasi pada “iste Pemerolehan Informasi Konvensional .............................................................................. 72

Tabel 5.20. Interpolasi 11 titik recall precision terhadap query “klasifikasi” pada Sistem Pemerolehan Informasi Konvensional .............................................................................. 72

Tabel 5.21. Hasil pencarian dengan query siste pe duku g keputusa pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 74

Tabel 5.22. Penghitungan recall - precision terhadap query siste pe duku g keputusa pada “iste Pe eroleha I for asi er asis Cluster .................................. 74

Tabel 5.23. Interpolasi 11 titik recall precision terhadap query siste pe duku g keputusa pada “iste Pe eroleha I for asi er asis Cluster .................................. 75

Tabel 5.24. Hasil pencarian dengan query siste pe duku g keputusa pada “iste Pemerolehan Informasi Konvensional .............................................................................. 77

Tabel 5.25. Penghitungan recall - precision terhadap query siste pe duku g keputusa pada “iste Pe eroleha I for asi Ko e sio al ...................................... 77

Tabel 5.26. Interpolasi 11 titik recall precision terhadap query siste pe duku g keputusa pada “iste Pe eroleha I for asi Ko e sio al ...................................... 78

Tabel 5.27. Hasil pencarian dengan query jari ga ko puter pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 79

Tabel 5.28. Penghitungan recall - precision terhadap query jari ga ko puter pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 79

Tabel 5.29. Interpolasi 11 titik recall precision terhadap query jari ga ko puter pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 79

Tabel 5.30. Hasil pencarian dengan query jari ga ko puter pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 81

Tabel 5.31. Penghitungan recall - precision terhadap query jari ga ko puter pada Sistem Pemerolehan Informasi Konvensional .................................................................. 81

Tabel 5.32. Interpolasi 11 titik recall precision terhadap query jari ga ko puter pada Sistem Pemerolehan Informasi Konvensional .................................................................. 82

Tabel 5.33. Hasil pencarian dengan query data i i g e ggu aka k- ea s pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 83

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 16: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xvi

Tabel 5.34. Penghitungan recall - precision terhadap query data i i g e ggu aka k-

ea s pada “iste Pe eroleha I for asi erbasis Cluster ........................................ 83

Tabel 5.35. Interpolasi 11 titik recall precision terhadap query data i i g menggunakan k- ea s pada “iste Pemerolehan Informasi berbasis Cluster ............. 83

Tabel 5.36. Hasil pencarian dengan query data i i g e ggu aka k- ea s pada Sistem Pemerolehan Informasi Konvensional .................................................................. 84

Tabel 5.37. Penghitungan recall - precision terhadap query data i i g e ggu aka k-

means pada “iste Pe eroleha I for asi Ko e sio al ............................................ 85

Tabel 5.38. Interpolasi 11 titik recall precision terhadap query data i i g menggunakan k- ea s pada “iste Pe eroleha I for asi Ko e sio al ................. 85

Tabel 5.39. Hasil pencarian dengan query kesehata a usia pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 87

Tabel 5.40. Penghitungan recall - precision terhadap query kesehata a usia pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 87

Tabel 5.41. Interpolasi 11 titik recall precision terhadap query kesehata a usia pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 87

Tabel 5.42. Hasil pencarian dengan query kesehata a usia pada “iste Pemerolehan Informasi Konvensional .............................................................................. 88

Tabel 5.43. Penghitungan recall - precision terhadap query kesehata a usia pada Sistem Pemerolehan Informasi Konvensional .................................................................. 89

Tabel 5.44. Interpolasi 11 titik recall precision terhadap query aï e ayes pada “iste Pemerolehan Informasi Konvensional .............................................................................. 89

Tabel 5.45. Hasil pencarian dengan query diag osa pe yakit pada “iste Pe eroleha Informasi berbasis Cluster ................................................................................................. 90

Tabel 5.46. Penghitungan recall - precision terhadap query diag osa pe yakit pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 91

Tabel 5.47. Interpolasi 11 titik recall precision terhadap query diag osa pe yakit pada Sistem Pemerolehan Informasi berbasis Cluster .............................................................. 91

Tabel 5.48. Hasil pencarian dengan query diag osa pe yakit pada “iste Pe eroleha Informasi Konvensional..................................................................................................... 93

Tabel 5.49. Penghitungan recall - precision terhadap query diag osa pe yakit pada Sistem Pemerolehan Informasi Konvensional .................................................................. 93

Tabel 5.50. Interpolasi 11 titik recall precision terhadap query diag osa pe yakit pada Sistem Pemerolehan Informasi Konvensional .................................................................. 93

Tabel 5.51. Hasil pencarian dengan query t p udp pada “iste Pe eroleha I for asi berbasis Cluster ................................................................................................................. 95

Tabel 5.52. Penghitungan recall - precision terhadap query t p udp pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 95

Tabel 5.53. Interpolasi 11 titik recall precision terhadap query t p udp pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 95

Tabel 5.54. Hasil pencarian dengan query t p udp pada “iste Pe eroleha I for asi Konvensional ..................................................................................................................... 96

Tabel 5.55. Penghitungan recall - precision terhadap query t p udp pada “iste Pemerolehan Informasi Konvensional .............................................................................. 97

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 17: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xvii

Tabel 5.56. Interpolasi 11 titik recall precision terhadap query t p udp pada “iste Pemerolehan Informasi Konvensional .............................................................................. 97

Tabel 5.57. Hasil pencarian dengan query ireless pada “iste Pe eroleha I for asi berbasis Cluster ................................................................................................................. 99

Tabel 5.58. Penghitungan recall - precision terhadap query ireless pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 99

Tabel 5.59. Interpolasi 11 titik recall precision terhadap query ireless pada “iste Pemerolehan Informasi berbasis Cluster .......................................................................... 99

Tabel 5.60. Hasil pencarian dengan query ireless pada “iste Pe eroleha I for asi Konvensional ................................................................................................................... 101

Tabel 5.61. Penghitungan recall - precision terhadap query ireless pada “iste Pemerolehan Informasi Konvensional ............................................................................ 101

Tabel 5.62. Interpolasi 11 titik recall precision terhadap query ireless pada “iste Pemerolehan Informasi Konvensional ............................................................................ 101

Tabel 5.63. Interpolasi 11 titik recall precision dari pengujian dengan 10 query pencarian

dengan menggunakan Sistem Pemerolehan Informasi berbasis Cluster ....................... 102

Tabel 5.64. Interpolasi 11 titik recall precision dari pengujian dengan 10 query pencarian

dengan menggunakan Sistem Pemerolehan Informasi Konvensional ........................... 103

Tabel 5.65. Rata-rata interpolasi 11 titik recall precision dari pengujian dengan 10 query

pencarian dari kedua sistem ........................................................................................... 103

Tabel 5.66. Hasil penghitungan rerata waktu eksekusi dalam satuan detik dari kedua

sistem .............................................................................................................................. 105

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 18: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xviii

DAFTAR PERSAMAAN

Persamaan 2.1. Rumus pembobotan TF-IDF (Savoy, 1993) .............................................. 11

Persamaan 2.2. Rumus penghitungan skor dan perankingan dokumen terhadap query 12

Persamaan 2.3. Rumus penghitungan nilai recall (Manning et al, 2008) ......................... 12

Persamaan 2.4. Rumus penghitungan nilai precision (Manning et al, 2008) ................... 12

Persamaan 2.5. Rumus Uji Statistik Anderson Darling ..................................................... 16

Persamaan 2.6. Rumus Uji Statistik Anderson Darling ..................................................... 17

Persamaan 2.7. Rumus mencari anak cluster (Hamerly et al., 2004) ............................... 17

Persamaan 2.8. Rumus proyeksi vektor-vektor di X ke vektor v ...................................... 17

Persamaan 2.9. Rumus penghitungan nilai purity ............................................................ 18

Persamaan 3.1. Rumus penghitungan normalisasi z-score pada suatu data ................... 22

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 19: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xix

ABSTRAK

Dalam kurun waktu terakhir, pertambahan jumlah dokumen karya ilmiah

berbahasa Indonesia meningkat sangat pesat. Tanpa ada pengubahan dalam

sistem pemerolehan informasi, volume data yang meningkat dapat mengakibatkan

turunnya performa sistem pemerolehan informasi, terutama dalam hal waktu

retrieval.

Salah satu metode yang diusulkan untuk mempersingkat waktu retrieval

adalah pengelompokan koleksi. Dalam tugas akhir ini, G-Means dipilih sebagai

algoritma pemodelan cluster. Keuntungan implementasi G-Means adalah

kemampuan algoritma ini untuk memilih jumlah cluster yang paling optimal.

Hasil pengelompokan koleksi kemudian diuji dalam lingkungan sistem

pemerolehan informasi untuk melihat seberapa baik pengelompokan koleksi

dalam mempersingkat waktu retrieval, dan seberapa besar pengaruhnya terhadap

precision.

Data yang digunakan adalah karya ilmiah berbahasa Indonesia sebanyak

100 karya. Dari hasil pengujian, ditemukan bahwa waktu retrieval lebih singkat

hingga 16,3%, dengan rerata waktu retrieval sebesar 12,88 detik dan precision

sebesar 47%.

Kata Kunci:pemerolehan informasi, clustering, g-means, dokumen karya ilmiah

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 20: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xx

ABSTRACT

In recent years, Indonesian-written scientific papers grow significantly in

term of number. Without any improvement in information retrieval systems,

increasing data volume could lead to poor system performance, especially in its

retrieval time.

One proposed method to improve retrieval time is collection clustering. G-

Means was chosen for cluster modeling algorithm, as it can determine number of

generated clusters automatically. Clustering collection results are tested in

information retrieval system to find how significant clustering can reduce

retrieval time, and whether it has impact to system’s average precision.

We use 100 Indonesian scientific papers as collection. Based from the

results, retrieval time gain 16.3% faster, with average retrieval time is about

12,88 seconds and average precision is about 47%.

Keyword: information retrieval, clustering, g-means, scientific paper

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 21: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 22: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

xxii

KATA PENGANTAR

Puji dan Syukur saya panjatkan kepada Tuhan Yang Maha Esa, atas berkat

dan kuasa-Nya yang diberikan sehingga penelitian ini dapat berhasil dan selesai.

Penelitian ini tidak mungkin diselesaikan tanpa adanya keterlibatan dan dukungan

dari banyak pihak. Dalam penyelesaian penelitian ini, saya ingin mengucapkan

terima kasih sebesar-besarnya kepada pihak-pihak tersebut, antara lain :

1. Bapak Sudi Mungkasi, S.Si, M.Sc.Math., Ph.D. selaku dekan Fakultas Sains

dan Teknologi, Universitas Sanata Dharma.

2. Ibu Dr. Anastasia Rita Widiarti selaku Ketua Program Studi Teknik

Informatika, Universitas Sanata Dharma

3. Bapak J.B. Budi Darmawan, M.Sc. selaku dosen pembimbing penelitian.

Beliau memberikan banyak masukan dan saran serta pembelajaran yang amat

sangat berharga dalam penelitian ini.

4. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T., selaku dosen penguji skripsi,

atas saran dan kritik yang diberikan untuk menunjang skripsi ini.

5. Ibu Sri Hartati Wijono, S.Si., M.Kom. selaku dosen penguji skripsi, atas saran

dan kritik yang diberikan untuk menunjang skripsi ini.

6. Keluarga yang tercinta, Bapak, Mikael Santosa, Ibu, Fransiska Tasri Aryani,

dan Adik, Philipus Agri Adhiatma yang selalu memberi dukungan terbaik dan

kasih sayang.

7. Adika Dwi Ananda Putra (Dika), yang telah berbaik hati meminjami unit

komputer untuk menyelesaikan penelitian ini.

8. Seluruh teman-teman Teknik Informatika angkatan 2012 yang sangat suportif.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 23: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 24: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

1

BAB I

PENDAHULUAN

1.1. Latar Belakang

Jumlah publikasi karya ilmiah dari Indonesia terus bertambah dari tahun

ke tahun. Dari tahun 2011 hingga 2016, prosiding KNSI menampung 1590 karya

ilmiah, SRITI menampung 51 karya ilmiah pada tahun 2016. Sementara itu,

terdapat 110 karya ilmiah dipublikasikan di JUTI, jurnal teknologi informasi ITS,

sejak 2010 hingga 2016 dan 51 karya ilmiah pada JURTEK Akprind dari tahun

2014 hingga 2016. Jumlah karya ilmiah yang tidak termasuk dalam publikasi

tersebut tentunya jauh lebih besar lagi.

Dengan pertambahan jumlah karya ilmiah yang tersebut, permasalahan

yang muncul berasal dari besarnya volume data yang ada. semakin besar suatu

koleksi dokumen, maka proses pemerolehan informasi cenderung makin

membutuhkan waktu yang lebih banyak (Grossman et al., 2004).

Untuk itu, diperlukan pengembangan dalam sistem pemerolehan

informasi. Salah satu pengembangan yang dapat dilakukan antara lain dengan

mengelompokkan koleksi dokumen yang ada. Antar dokumen dalam satu

kelompok memiliki kemiripan yang semirip-miripnya, dan antar dokumen dalam

kelompok yang berbeda memiliki ketidakmiripan yang sejauh-jauhnya. Sehingga

sistem tidak membutuhkan waktu eksekusi yang lama, karena tiap koleksi sudah

dibagi menjadi kelompok-kelompok yang seragam, atau yang disebut juga dengan

cluster.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 25: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

2

Tiap cluster direpresentasikan dengan satu centroid. Pengelompokan akan

dilakukan dengan algoritma G-Means. Keuntungan menggunakan algoritma G-

Means adalah selain melakukan pengelompokan, algoritma ini juga dapat

menghitung jumlah cluster yang optimum dengan melihat apakah suatu cluster

sudah terdistribusi normal atau belum.

Setelah terbentuk kelompok-kelompok dokumen, maka tiap query dari

user akan dicocokan dengan centroid tiap cluster saja. Kluster yang memiliki skor

paling tinggi dengan query pencarian akan dicatat, lalu isi dari cluster itulah yang

akan diberikan skor terhadap query dari pengguna, lalu kemudian ditampilkan.

1.2. Rumusan Masalah

1. Bagaimana hasil dan kualitas cluster yang dihasilkan dari proses

pengelompokan dokumen oleh sistem?

2. Bagaimana pengaruh pengelompokan dokumen dalam sistem pemerolehan

informasi berbasis cluster terhadap waktu retrieval dan dampaknya terhadap

precision?

1.3. Tujuan Penelitian

1. Mengetahui hasil evaluasi dan kualitas cluster yang dihasilkan dari proses

pengelompokan dokumen oleh sistem.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 26: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

3

2. Mengetahui seberapa baik sistem pemerolehan informasi berbasis cluster

dalam menurunkan waktu retrieval, dan seberapa besar pengaruhnya

terhadap precision.

1.4. Batasan Masalah

1. Dokumen yang digunakan sebagai korpus adalah karya ilmiah dalam bentuk

digital yang diambil dari prosiding berbagai seminar.

2. Dokumen yang digunakan sebagai korpus adalah dokumen yang

menggunakan bahasa Indonesia.

3. Dokumen yang digunakan sebagai korpus untuk penelitian ini diambil

secara acak.

4. Dokumen digital yang digunakan sebagai korpus dalam penelitian ini telah

diubah menjadi format TXT.

5. Pengelompokan dokumen dalam karya tulis ini tidak menggunakan data

training.

1.5. Metodologi Penelitian

Langkah-langkah metodologi penelitian yang dilakukan dalam penelitian ini

adalah sebagai berikut :

1. Studi Pustaka

Studi pustaka dilakukan untuk mengumpulkan teori-teori yang mendukung

penelitian ini. Teori tersebut antara lain mengenai pemerolehan informasi

(information retrieval), clustering dokumen dengan menggunakan G-Means,

dan informasi lain yang mendukung implementasian pemerolehan informasi

berbasis cluster ini.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 27: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

4

2. Pembangunan Sistem Pemerolehan Informasi berbasis Cluster

Pembangunan sistem pemerolehan informasi berbasis cluster ini

menggunakan metode Framework for the Application System Technique

(FAST) dengan tahap sebagai berikut:

a. Analisis Sistem

1) Analisis Masalah

Hal yang dilakukan dalam tahap ini adalah analisis masalah yang

dapat dipecahkan dengan pembangunan sistem.

2) Analisis Kebutuhan

Hal yang dilakukan dalam tahap ini adalah identifikasi kebutuhan

sistem dengan mengumpulkan data kebutuhan pengguna sistem yang

kemudian dimodelkan dalam diagram Use Case.

b. Desain Sistem

1) Logical Design

Hal yang dilakukan dalam tahap ini adalah penggambaran model data,

proses dan antarmuka dalam bentuk logical.

2) Physical Design and Integration

Implementasi secara teknis dengan pembuatan desain antarmuka

pengguna secara fisik dan desain basis data apabila diperlukan.

3) Construction and Testing

Pengembangan rancangan ke dalam program dengan menggunakan

bahasa pemrograman Java, dan MySQL sebagai pengelola basis

datanya.

3. Uji Coba Relevansi terhadap Pengguna

Uji coba terhadap pengguna dilakukan untuk melihat unjuk kerja sistem

yang telah dibangun. Parameter yang diberikan adalah tingkat relevansi untuk

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 28: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

5

uji relevansi. Hasil dari uji coba ini akan menjadi sumber data untuk analisis

hasil uji coba.

4. Analisis Hasil Uji Coba Relevansi

Analisis hasil uji coba dilakukan dengan melihat data yang didapatkan dari

uji coba pengguna. Tujuan dari analisis ini adalah untuk mendapatkan

kesimpulan dari tujuan penelitian.

1.6. Sistematika Penulisan

1. BAB I : PENDAHULUAN

Berisi pendahuluan berupa permasalahan yang melatarbelakangi penelitian ini,

tujuan dari penelitian ini, batasan-batasan yang ada dalam penelitian, serta

sistematika dokumen proposal ini.

2. BAB II : TINJAUAN PUSTAKA

Berisi jabaran konsep dan hasil penelitian dari peneliti lain yang berkaitan

dengan penelitian ini. Isinya antara lain konsep dasar pemerolehan informasi,

stemming, eliminasi stopword, term weighting, evaluasi hasil pemerolehan

informasi, serta konsep dasar pengelompokan teks, dan algoritma G-Means

untuk pemodelan data dan pemilihan jumlah cluster optimum.

3. BAB III : ANALISIS DAN PERANCANGAN

Bab ini berisi gambaran umum dari sistem yang akan dibangun, analisis

kebutuhan sistem dan rancangan basis data untuk sistem tersebut.

4. BAB IV : IMPLEMENTASI

Bab ini berisi jabaran dari implementasi pemodelan G-Means dalam bahasa

pemrograman Java.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 29: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

6

5. BAB V : ANALISIS HASIL PENELITIAN

Bab ini berisi hasil pengujian sistem, serta pembahasan dari hasil pengujian

tersebut.

6. DAFTAR PUSTAKA

Berisi referensi pustaka yang digunakan dalam penulisan karya ilmiah ini.

7. LAMPIRAN

Lampiran lain apabila diperlukan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 30: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

7

BAB II

LANDASAN TEORI

2.1. Konsep Pemerolehan Informasi

Pemerolehan informasi (Information Retrieval) adalah kumpulan berbagai

algoritma dan teknologi untuk melakukan pemrosesan, penyimpanan, dan temu

kembali informasi pada suatu koleksi data yang besar dan tidak terstruktur

(Manning et al, 2008).

Jenis informasi tersebut beragam, bisa berupa teks dokumen, halaman web,

maupun objek multimedia seperti foto dan video.

2.1.1. Operasi Teks

2.1.1.1. Stopword

Stopword adalah suatu kata yang sangat sering muncul dalam berbagai

dokumen adalah diskriminator yang buruk dan tidak berguna dalam temu kembali

informasi. Stopword perlu dieliminasi untuk mengurangi waktu eksekusi query

dengan cara menghindari proses list yang panjang (Butcher et al., 2010).

Pembuangan stopword ini akan mengurangi ukuran indeks, meningkatkan

efisiensi dan keefektifan dari pemerolehan informasi (Croft et al., 2010). Contoh

stopword dalam bahasa Indonesia, yaitu kata ganti orang (“aku”, “kamu”, “kita”,

dsb.), konjungsi (“dan”, “atau”, dsb.), dan beberapa kata lainnya.

2.1.1.2. Stemming

Stemming adalah proses pengenalan suatu kata. Stemming sering

melibatkan pemisahan kata dari imbuhan dan tanda baca (Göker et al, 2009).

Menurut Agusta (2010), pola suatu kata dalam bahasa Indonesia adalah

sebagai berikut :

Prefiks I + Prefiks II + kata dasar + Sufiks III + Sufiks II + Sufiks I

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 31: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

8

2.1.1.2.1. Algoritma Nazief – Adriani sebagai Algoritma Stemming

Algoritma Stemming Nazief – Adriani diperkenalkan oleh Nazief dan Adriani

(1996). Algoritma ini memiliki tahap-tahap sebagai berikut ini :

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 (“-lah”, “-kah”, “-ku”, “-

mu”, atau “-nya”). Jika berupa 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

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

dengan awalan pertama algoritma berhenti.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 32: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

9

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.

4. Dengan melihat Tabel 2.2, jika tipe awalan adalah “none” maka berhenti. Jika

tipe awalan adalah bukan “none” maka awalan dapat dilihat pada Tabel 2.4.

Hapus awalan jika ditemukan.

Tipe-tipe awalan dapat dilihat dalam tabel berikut ini :

Karakter huruf setelah awalan Tipe awalan

Set 1 Set 2 Set 3 Set 4

“-r-“ “-r-“ – – None

“-r-“ – – ter-luluh

“-r-“ not (vowel or “-r-”) “-er-“ vowel Ter

“-r-“ not (vowel or “-r-”) “-er-“ not vowel ter-

“-r-“ not (vowel or “-r-”) not “-er-“ – Ter

not (vowel or “-r-”) “-er-“ vowel – None

not (vowel or “-r-”) “-er-“ not vowel – Te Tabel 2.2. Cara Menentukan Tipe Awalan Untuk awalan “te-”

Awalan yang diijinkan dihapus berdasarkan tipe awalannya ditunjukkan

pada tabel berikut ini :

Tipe Awalan Awalan yang harus dihapus

di- di-

ke- ke-

se- se-

te- te-

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 33: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

10

ter- ter-

ter-luluh ter Tabel 2.3. Awalan yang diijinkan dihapus berdasarkan Tipe Awalannya

2.1.1.3. Tokenisasi

Tokenisasi adalah proses pemisahan kata dari kumpulannya, sehingga

menghasilkan suatu kata yang berdiri sendiri, baik dalam bentuk perulangan

maupun tunggal. Proses ini juga akan menghilangkan tanda baca maupun karakter

yang ada pada kata tersebut dan semua huruf menjadi huruf kecil. (Manning et al,

2008).

Contoh dari input dan output dari tokenisasi adalah sebagai berikut :

Input : Suatu deret angka genap

Output : suatu, deret, angka, genap

2.1.2. Term-Document Matrix

Term-document matrix adalah matriks yang memperlihatkan frekuensi

kemunculan suatu term didalam suatu dokumen. Dalam term-document matrix,

baris-baris menunjukkan term dalam suatu koleksi dan kolom menunjukkan

dokumen. (Manning et al, 2008).

Contoh perancangan matriks term-document diperlihatkan seperti berikut ini :

doc 1 doc 2 doc 3 doc 4 doc 5 doc 6

term 1 1 2 2 1 1 0

term 2 0 4 4 1 2 0

term 3 2 5 0 1 3 0

term 4 3 1 0 0 1 1

term 5 2 0 2 0 0 1

term 6 1 0 1 1 3 2

Tabel 2.4. Perancangan term document matrix

Sehingga matriks term-documentnya (matriks M) akan menjadi seperti berikut ini

:

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 34: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

11

[ ]

Gambar 2.1. Visualisasi term-document matrix

2.1.3. TF-IDF sebagai Metode Pembobotan

Terms Frequency – Inverse Documents Frequency (TF-IDF) adalah skema

pembobotan term yang paling populer dalam ranah pemerolehan informasi

(Baeza – Yates, 1999).

Rumus pembobotan TF-IDF menurut Savoy (1993) adalah sebagai berikut :

Persamaan 2.1. Rumus pembobotan TF-IDF (Savoy, 1993)

Dimana,

, dan

Keterangan :

w = bobot term (Tj) pada dokumen Di

tfij = frekuensi kemunculan term (Tj) pada dokumen Di

m = jumlah dokumen Di pada kumpulan dokumen

dfj = jumlah dokumen yang mengandung term (Tj)

idfj = invers frekuensi dokumen (inverse document frequency)

max tfi = frekuensi term terbesar dalam suatu dokumen

Dari penghitungan nilai TF-IDF ini, scoring atau penilaian terhadap query

didefinisikan sebagai berikut (Manning et al, 2008) :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 35: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

12

Persamaan 2.2. Rumus penghitungan skor dan perankingan dokumen terhadap query

2.1.4. Evaluasi Pemerolehan Informasi

Pengukuran hasil relevansi dapat dilakukan dengan penghitungan recall dan

precision. Recall digunakan untuk mengukur seberapa baik suatu sistem

melakukan pencarian terhadap dokumen yang relevan terhadap suatu query

pengguna. Sementara itu, precision digunakan untuk melihat seberapa baik sistem

pemerolehan informasi mengeliminasi dokumen yang tidak relevan (Croft et al.,

2010).

Rumus dari recall dan precision adalah sebagai berikut (Manning et al, 2008) :

∑ ∑

Persamaan 2.3. Rumus penghitungan nilai recall (Manning et al, 2008)

∑ ∑

Persamaan 2.4. Rumus penghitungan nilai precision (Manning et al, 2008)

2.2. Konsep Pengelompokan Dokumen

2.2.1. Clustering dalam Pemerolehan Informasi

Algoritma clustering mengelompokan sekumpulan dokumen ke dalam

suatu subset atau cluster. Tujuan algoritma clustering dalam pemerolehan

informasi bertujuan untuk mengelompokan sekumpulan dokumen yang koheren

secara internal, namun memiliki perbedaan jauh dengan dokumen dari cluster

yang lain. Dengan kata lain, antar dokumen di dalam satu cluster yang sama

seharusnya memiliki tingkat kemiripan yang tinggi, dan antar dokumen di dalam

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 36: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

13

cluster yang berbeda seharusnya memiliki tingkat perbedaan yang setinggi-

tingginya (Manning et al, 2008).

2.2.2. Hipotesis Cluster

Hipotesis cluster berisi tentang asumsi dasar yang dibuat ketika menerapkan

clustering dalam pemerolehan informasi. Hipotesis cluster menyebutkan bahwa

dokumen dalam cluster yang sama akan memiliki keidentikan sifat, berkenaan

dengan relevansi terhadap kebutuhan informasi (Manning et al, 2008).

2.2.3. K-Means

K-Means adalah salah satu algoritma flat clustering yang paling penting

(Manning et al, 2008). Tujuan K-Means adalah meminimalkan rata-rata kuadrat

jarak Euclidean dokumen terhadap centroid (pusat cluster) dokumen tersebut

(Manning et al, 2008).

Algoritma k-Means ditunjukkan dalam gambar berikut ini :

Gambar 2.2. Pseudocode algoritma K-Means (Manning et al, 2008)

Dalam bukunya, Manning (2008) menjabarkan langkah dari algoritma K-

Means. Pertama-tama, dilakukan pemilihan pusat cluster K secara acak dari

dokumen yang ada. Terjadi proses iteratif dimana pusat cluster bergerak terus

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 37: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

14

untuk meminimalkan RSS (residual sum of squares). Setelah itu, tiap dokumen

ditempatkan pada cluster yang memiliki centroid terdekat dengan dokumen

tersebut. Proses kembali lagi ke iterasi pergerakan pusat cluster.

Visualisasi proses yang terjadi dalam k-Means ditampilkan dalam gambar berikut

ini :

Gambar 2.3. Visualisasi proses yang terjadi dalam algoritma K-Means (Manning et al, 2008)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 38: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

15

Ada beberapa cara penghentian iterasi, antara lain :

Banyak iterasi I yang telah ditetapkan sebelumnya. Ketika iterasi telah

mencapai langkah ke-i, maka proses akan berhenti.

Penempatan dokumen dalam suatu cluster (fungsi partisi γ) tidak berubah-

ubah lagi.

Centroid µk tidak berubah lagi. Hal ini sama dengan γ tidak berubah.

Berhenti ketika nilai RSS dibawah batas yang ditentukan.

2.2.4. G-Means

Algoritma G-Means diperkenalkan oleh Greg Hamerly dan Charles Elkan

dari University of California pada tahun 2004. G-Means adalah algoritma

pengembangan dari K-Means yang memiliki fitur penghitungan jumlah cluster

yang optimum dengan menggunakan uji statistik untuk memutuskan apakah suatu

pusat cluster perlu dipecah menjadi dua pusat cluster (Hamerly et al., 2004).

Algoritma G-Means akan dimuai dari jumlah pusat cluster yang kecil,

misalnya satu atau dua. Tiap iterasi dimulai dengan pengelompokan data

menggunakan K-Means seperti biasa untuk mendapatkan himpunan anggota tiap

cluster, selanjutnya algoritma ini akan memecah pusat cluster menjadi dua apabila

suatu cluster nampak tidak terdistribusi normal.

Visualisasi G-Means dalam suatu dataset 2 dimensi dengan 1000 point

ditampilkan dalam gambar berikut ini :

Gambar 2.4. Visualisasi G-Means dalam suatu dataset 2 dimensi dengan 1000 point. Algoritma G-

Means mencoba mencari normalitas dalam sebaran titik pada suatu cluster (Hamerly et al., 2004)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 39: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

16

Algoritma G-Means dapat dilihat sebagai berikut (Hamerly et al., 2004) :

1. Pilih C sebagai sekumpulan pusat cluster (centroid) awal

2. Lakukan K-Means pada dataset X dengan C sebagai pusat-pusat clusternya.

3. xi adalah sekumpulan datapoint yang menjadi member centroid cj, dimana { xi

| class(xi) = j }

4. Gunakan uji statistik untuk melihat apakah tiap { xi | class(xi) = j } mengikuti

distribusi normal (pada suatu confidence level α).

5. Jika data terlihat terdistribusi normal, maka cj tidak berubah. Namun jika

sebaliknya, maka cj diganti menjadi dua pusat cluster

6. Ulangi langkah no. 2 hingga tidak ada lagi pusat cluster yang ditambahkan.

Terdapat dua hipotesis dalam uji statistik pada no. 4, yaitu sebagai berikut

(Hamerly et al., 2004) :

H0 : data disekitar pusat cluster terdistribusi normal

H1 : data disekitar pusat cluster tidak terdistribusi normal

Jika H0 diterima, maka pusat cluster tidak perlu dipisah lagi menjadi dua.

Sementara itu, jika H1 diterima, maka pusat cluster harus dipecah menjadi dua.

Uji statistik yang digunakan adalah adalah uji Anderson-Darling, dengan formula

sebagai berikut :

Persamaan 2.5. Rumus Uji Statistik Anderson Darling

dengan :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 40: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

17

∑ [

Persamaan 2.6. Rumus Uji Statistik Anderson Darling

X adalah subset dengan pusat cluster C. Tiap instance dari X diwakili

dengan xi, xi+1, …, xn-1, xn. Sementara itu, zi adalah hasil dari fungsi distribusi

kumulatif untuk distribusi normal baku terhadap nilai xi.

Untuk melakukan uji statistik diatas, dilakukan langkah seperti berikut ini

(Hamerly et al., 2004) :

1. Ambil suatu subset X

2. Pilih level signifikan α untuk uji.

3. Dari pusat cluster tersebut, ambil dua buah “anak” pusat cluster, dinotasikan

dengan c1 dan c2. Caranya dengan menggunakan rumus c±m, dimana m

adalah random atau dengan rumus berikut : √

Persamaan 2.7. Rumus mencari anak cluster (Hamerly et al., 2004)

Dimana,

m = vector anak

s = eigenvalue terbesar yang didapat dari data

λ = principal component utama, yaitu eigenvector dengan eigenvalue

terbesar

4. Jalankan K-Means pada X dengan dua centroid tersebut (c1 dan c2).

5. Hitung nilai vektor v dengan v = c1 – c2.

6. Proyeksikan X ke v, menjadi X’, dengan rumus sebagai berikut ‖ ‖

Persamaan 2.8. Rumus proyeksi vektor-vektor di X ke vektor v

7. Normalisasi X` sehingga memiliki rerata 0 dan varian 1.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 41: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

18

8. Hitung zi dengan rumus zi = F(xi).

9. Hitung . Apabila berada pada daerah non-kritis, maka H0

diterima. Sebaliknya apabila berada di dalam daerah kritis, maka H1

diterima dan pusat cluster yang baru adalah c1 dan c2.

2.2.5. Evaluasi Cluster

2.2.5.1. Purity

Purity adalah salah satu pengukuran dalam evaluasi cluster. Untuk

menghitung purity, tiap cluster diberikan label kelas berdasarkan label yang

paling sering muncul dalam cluster tersebut, dan kemudian akurasi cluster

dihitung dengan jumlah data yang benar dibagi dengan banyak data (Chen, 2010).

Rentang purity dari 0 hingga 1. Semakin besar nilai purity, semakin baik cluster

tersebut. Formula purity adalah sebagai berikut (Chen, 2010) :

∑ | |

Persamaan 2.9. Rumus penghitungan nilai purity

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 42: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

19

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisis Sistem

3.1.1. Deskripsi Sistem

Sistem yang akan dikembangkan dalam penelitian ini adalah sebuah sistem

pengelompokan koleksi dan pencarian dokumen berdasarkan input query

pengguna. Sistem ini terdiri dari dua sub sistem, yaitu sub sistem pengelompokan

dokumen dan sub sistem pencarian dokumen.

3.1.1.1. Sub Sistem Pengelompokan Dokumen

Sub sistem pengelompokan dokumen bertindak sebagai modul clustering

dokumen. Nantinya koleksi dokumen yang diunggah oleh User ke dalam sistem

mula-mula diproses oleh subsistem ini. Proses yang terjadi adalah tokenisasi,

eliminasi stopword, stemming, lalu dilanjutkan dengan pembangunan term-

document matrix.

Dalam penelitian ini, kolom dalam term-document matrix akan

merepresentasikan term, selanjutnya disebut atribut atau feature. Sementara baris

dalam term-document matrix akan merepresentasikan dokumen. Dari term-

document matrix inilah akan dilakukan pengelompokan koleksi.

Jumlah cluster optimum akan dicari secara otomatis oleh sistem menggunakan

algoritma G-Means, yaitu pemodelan cluster dengan memperhitungkan

kenormalan distribusi dari tiap anggota cluster terhadap pusatnya masing-masing.

Dari situ, dapat diketahui berapa jumlah cluster yang optimum.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 43: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

20

Normalitas distribusi tiap cluster akan dihitung dengan menggunakan test

statistik, dimana akan digunakan uji Anderson-Darling untuk menentukan apakah

cluster sudah terdistribusi normal atau belum. Apabila suatu cluster belum

terdistribusi normal, maka suatu cluster akan dipecah menjadi dua, dan seterusnya

hingga terdistribusi normal.

Alur subsistem ini ditunjukkan dalam gambar berikut ini :

Input dokumen karya ilmiah

Operasi tokenizing

Operasi stopword

Operasi stemming

Penghitungan tf, df dan w

Pembangunan term-document matrix

Implementasi G-Means untuk pemodelan

cluster

Pengklusteran Dokumen

Simpan data cluster dan membernya, serta

centroidnya

Feature selection

Gambar 3.1. Alur proses pengklusteran dokumen

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 44: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

21

3.1.1.1.1. Clustering dengan G-Means

Penggunaan algoritma G-Means serta parameter-parameter yang digunakan dalam

penelitian ini adalah sebagai berikut :

1. Ambil suatu subset X

Subset X pada saat ini adalah seluruh dataset yang ada. Dataset ini

dianggap sebagai satu cluster. Karena hanya terdapat satu cluster saja,

centroid dari cluster ini adalah rerata dari tiap atribut dari dataset tersebut.

2. Pilih level signifikan α untuk uji.

Level signifikan α dalam penelitian ini diinisalisasi dengan nilai 0.05.

Nilai ini nantinya akan dibandingkan dengan p-value dari hasil penghitungan

uji statistik Anderson – Darling.

3. Dari pusat cluster (centroid) yang dibentuk pada point 1 tadi, ambil dua buah

“anak” pusat cluster, dinotasikan dengan c1 dan c2. Caranya dengan

menggunakan rumus pada Persamaan 2.1.

4. Jalankan K-Means pada X dengan dua centroid tersebut (c1 dan c2).

K-Means dilakukan pada cluster yang diobservasi. Parameter jumlah

cluster (k) memiliki nilai 2, dan seed untuk centroid awal adalah c1 dan c2.

Kriteria penghentian iterasi dalam tahap ini adalah sebagai berikut :

a. Jumlah iterasi telah melewati batas iterasi yang ditentukan, yaitu 1000 kali

iterasi, atau,

b. Salah satu cluster kehilangan seluruh anggotanya (empty cluster), atau,

c. Cluster sudah konvergen, ditandai dengan centroid dan anggota cluster

tidak mengalami perubahan. Dengan kata lain, memiliki nilai dan jumlah

yang sama dengan iterasi sebelumnya.

5. Hitung nilai vektor v dengan v = c1 – c2.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 45: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

22

6. Proyeksikan X ke v, menjadi X’, dengan rumus pada Persamaan 2.8.

7. Normalisasi X` sehingga memiliki rerata 0 dan varian 1.

Normalisasi untuk mengubah X’ sehingga memiliki rerata 0 dan varian 1

dilakukan dengan menggunakan normalisasi z-score, yaitu normalisasi dengan

rumus berikut ini :

Persamaan 3.1. Rumus penghitungan normalisasi z-score pada suatu data

Dimana,

- si = nilai normalisasi di titik data ke i dalam suatu atribut

- xi = nilai awal data di titik data ke i dalam suatu atribut

- µ = nilai atribut dari atribut dimana terdapat data i

- = nilai standar deviasi dari atribut dimana terdapat data i

8. Hitung zi dengan rumus zi = F(xi).

Penghitungan Cummulative Distribution Function (CDF) menggunakan

java library yang dikhususkan untuk statistika, yaitu jdistlib.

9. Hitung . Apabila berada pada daerah non-kritis, maka H0

diterima. Sebaliknya apabila berada di dalam daerah kritis, maka H1

diterima dan pusat cluster yang baru adalah c1 dan c2.

Penghitungan p-value akan digunakan untuk mengetahui apakah nilai berada pada daerah kritis atau non-kritis. Penghitungan p-value

dilakukan dengan java library yang dikhususkan untuk statistika, yaitu jdistlib.

Apabila nilai p-value lebih besar sama dengan nilai α, maka H0 diterima, yang

artinya cluster tidak perlu dipecah menjadi dua cluster. Begitu pula

sebaliknya, maka H1 diterima, yang artinya cluster perlu dipecah menjadi dua

cluster.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 46: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

23

3.1.1.2. Sub Sistem Pencarian Dokumen

Sub sistem pencarian dokumen berfungsi untuk mencari dokumen yang

memiliki kemiripan atau relevan dengan query yang diberikan oleh pengguna

sistem. Query hanya akan dicocokkan dengan centroid tiap cluster dengan

menggunakan operator boolean AND, dengan menggunakan Persamaan 2.2 untuk

menghitung skor. Cluster yang memiliki centroid dengan skor yang tertinggi

terhadap query pencarian user akan dicatat oleh sistem. Apabila tidak ada

kecocokan dengan semua centroid, maka dicoba pencocokan dengan

menggunakan operator OR.

Apabila sudah ditemukan cluster yang sesuai, dokumen yang berada dalam

cluster tersebut akan dibobot ulang oleh sistem menggunakan TF-IDF untuk

kemudian ditampilkan urut ke pengguna berdasarkan bobot terhadap query yang

diberikan oleh pengguna. Jumlah dokumen untuk penghitungan IDF didasarkan

pada jumlah dokumen yang berada pada cluster terpilih.

Aktor yang terlibat dalam sistem ini adalah User. User adalah aktor yang

memiliki wewenang untuk melakukan pencarian dokumen dengan memberikan

input berupa query pencarian pada sistem. Selain itu, user memiliki wewenang

untuk memulai proses clustering dokumen.

Alur subsistem ini ditampilkan dalam gambar berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 47: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

24

Input query pencarian

Operasi tokenizing

Operasi stopword

Operasi stemming

Penghitungan tf, df, w

Pembangunan term-query matrix

Pembobotan cluster terhadap kueri,

dengan membandingkan centroid

terhadap kueri, dapat ditemukan bobot

yang paling besar (cluster yg paling mirip

dgn kueri)

Load document id dari cluster yang

paling mirip

Hitung ulang bobot document member

cluster tadi terhadap kueri

Tampilkan hasil pencarian ke user

Pencarian

Gambar 3.2. Alur proses pencarian dokumen

Subsistem ini memiliki dua opsi untuk retrieval, yaitu retrieval berbasis

cluster dan retrieval tanpa cluster. Retrieval berbasis cluster selanjutnya disebut

dengan Sistem Pemerolehan Informasi berbasis Cluster, sementara retrieval tanpa

cluster disebut dengan Sistem Pemerolehan Informasi Konvensional.

Perbedaan kedua jenis sistem tersebut ditampilkan dalam gambar berikut ini :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 48: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

25

Text databaseIndexIndex

Text operation

Query operation IndexingDB Manager

Module

Searching

Ranking

User interface

Inverted file

Text

Text

Logical view

Ranked docs

feedback

User need

Logical operation

query

Retrieved docs

Gambar 3.3. Sistem Pemerolehan Informasi Konvensional (Baeza, 1999)

Text database

Text operation

Query operation IndexingDB Manager

Module

Searching

Ranking

User interface

Inverted file

Text

Text

Logical view

Ranked docs

feedback

User need

Logical operation

query

Retrieved docs

Clustering

Cluster Member

(Documents)

Cluster Member

(Documents)

Cluster Index

(Centroid)

Cluster Index

(Centroid)

Gambar 3.4. Sistem Pemerolehan Informasi Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 49: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

26

3.1.2. Data yang Digunakan

Data yang digunakan dalam penelitian ini adalah 100 karya ilmiah

berbahasa Indonesia yang diambil dari berbagai prosiding dan jurnal.

3.1.3. Analisis Kebutuhan Pengguna

Kebutuhan yang dibutuhkan tiap aktor dalam sistem ini disajikan dalam tabel

berikut ini :

Pengguna Sistem Kebutuhan

User 1. Melakukan clustering dokumen

2. Melakukan pencarian dengan menggunakan

query

3. Melihat isi dokumen

Tabel 3.1. Kebutuhan fungsional pengguna sistem

3.2. Perancangan Sistem

3.2.1. Data Flow Diagram

3.2.1.1. Diagram Konteks

Diagram konteks atau diagram aliran data pada level 0 untuk sistem yang akan

dibangun, ditampilkan pada gambar berikut ini :

DokumenSistem Pemerolehan

Informasi

koleksi

cluster

User

query pencarian

list dokumen

Sistem

pemerolehan

informasi

Gambar 3.5. Diagram konteks dari sistem yang akan dibangun

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 50: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

27

3.2.1.2. Overview DFD

Overview dari diagram aliran data untuk sistem yang akan dibangun, ditampilkan

pada gambar berikut ini :

Do

ku

me

nS

iste

m P

em

ero

leh

an

Info

rma

si

ko

lek

si

clu

ste

r

1.

Pe

ng

elo

mp

ok

an

do

ku

me

n

Sis

tem

Pe

me

role

ha

n

Info

rma

siU

ser

qu

ery

pe

nca

ria

n

list

do

ku

me

n

2.

Pe

nca

ria

n

do

ku

me

n

Te

rm

Clu

ste

r

Re

cord

Ce

ntr

oid

Term li

st

Koleksi, index

cluster

cen

tro

id

Ind

ex

do

ku

me

n

cen

tro

id

Index dokumen

Do

ku

me

n

sesu

ai

ind

ex

clu

ste

r

Gambar 3.6. Overview DFD dari sistem yang akan dibangun

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 51: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

28

3.2.1.3. DFD Level 2

3.2.1.3.1. DFD Proses 1 : Pengelompokan Dokumen

Diagram aliran data pada level 2 untuk proses pengelompokan dokumen

ditampilkan pada gambar berikut :

DokumenSistem Pemerolehan

Informasi

koleksi

1.2.

pembobotan

1.3.

Pengelompokan

dokumen

1.1.

preprocessing

Term

Cluster

Record

Centroid

Token list,

koleksi

Tf,df,w,

term-document

matrix, koleksiTerm

list

Index dokumen

Koleksi, index

cluster

centroid

Gambar 3.7. DFD level 2 dari proses pengelompokan dokumen

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 52: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

29

3.2.1.3.2. DFD Proses 2 : Pencarian Dokumen

Diagram aliran data pada level 2 untuk proses pencarian dokumen ditampilkan

pada gambar berikut :

UserSistem Pemerolehan

Informasi

query

1.2.

Pembobotan query

1.3.

Pemilihan cluster

termirip

1.1.

Preprocessing query

Term

Cluster

Record

Centroid

Token list

TF-IDF query

df

Index dokumen

Dokumen sesuai index

cluster

centroid

1.4.

Perankingan dokumen

Index

cluster, TF-

IDF query

Dokumen

terurut

Gambar 3.8. DFD level 2 dari proses pencarian dokumen

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 53: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

30

3.2.2. Diagram Berjenjang

Diagram berjenjang (hierarchial chart) dari system yang akan dibangun ini

ditampilkan pada gambar berikut :

Sistem

pemerolehan

informasi

1.

Pengelompokan

dokumen

2.

Pencarian

dokumen

1.1.

preprocessing

1.2.

pembobotan

1.3.

Pengelompokan

dokumen

2.1.

Preprocessing

query

2.2.

Pembobotan

query

2.3.

Pemilihan cluster

termirip

2.4.

Perankingan

dokumen

Level 0

Level 1

Level 2

Gambar 3.9. Diagram berjenjang dari sistem yang akan dikembangkan

3.2.3. Deskripsi Proses

3.2.3.1. Deskripsi Proses 1 : Pengelompokan Dokumen

3.2.3.1.1. Deskripsi Proses 1.1 : Preprocessing

Preprocessing dilakukan untuk menghilangkan stopword dan

menyederhanakan bentuk-bentuk term dengan cara stemming. Preprocessing ini

berguna untuk mengurangi dimensi matriks term-document.

Setelah semua term diubah menjadi bentuk kata dasarnya, selanjutnya

dilakukan tokenisasi. Dalam sistem ini, token yang diambil adalah semua token

yang mengandung alfabet saja. Apabila token terdiri dari karakter alphanumeric

atau numerik, maka token akan dibuang. Setiap token akan dicatat

kemunculannya di tiap dokumen. Nilai ini menghasilkan term frequency (TF).

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 54: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

31

Selain itu, jumlah dokumen yang mengandung token tersebut akan dicatat juga.

Jumlah ini menghasilkan nilai document frequency (DF).

Hasil dari proses ini adalah TF, DF, dan token-token yang nantinya akan

dibobot oleh proses selanjutnya.

3.2.3.1.2. Deskripsi Proses 1.2 : Pembobotan

Input dari proses pembobotan adalah nilai-nilai TF tiap dokumen, DF tiap

term, serta token list. Token list selanjutnya disebut term list. Pembobotan

dilakukan dengan rumus pada Persamaan 2.1.

Metode yang digunakan untuk pembobotan ini adalah metode TF-IDF.

Hasil dari pembobotan ini kemudian dinormalisasi dengan normalisasi kosinus.

Hasil dari proses ini adalah tabel berisi bobot kata di tiap dokumen,

dengan kolom sebagai term dan baris sebagai dokumen.

3.2.3.1.3. Deskripsi Proses 1.3 : Pengelompokan Dokumen

Setelah bobot kata per dokumen diketahui, maka pengelompokan

dokumen dapat dilakukan. Algoritma yang digunakan adalah G-Means. Hasil dari

proses ini adalah term list, centroid, serta dokumen yang telah dikelompokkan.

Hasil ini kemudian disimpan dalam basis data.

3.2.3.2. Deskripsi Proses 2 : Pencarian Dokumen

3.2.3.2.1. Deskripsi Proses 2.1 : Preprocessing Query

Proses ini mirip dengan proses preprocessing dokumen. Perbedaannya adalah

preprocessing ini dilakukan hanya untuk mendapat token dalam bentuk sederhana

saja dari query dengan cara penghilangan stopword dan stemming.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 55: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

32

3.2.3.2.2. Deskripsi Proses 2.2 : Pembobotan Query

Karena DF sudah diketahui dari proses pembobotan saat pengelompokan

dokumen yang disimpan dalam basis data, maka proses pembobotan dapat

dilakukan dengan menggunakan Persamaan 2.1.

3.2.3.2.3. Deskripsi Proses 2.3 : Pemilihan Cluster Termirip

Dalam proses ini, centroid bertindak sebagai dokumen. Dengan rumus pada

Persamaan 2.2, maka dapat ditemukan cluster mana yang paling mirip dengan

query, yaitu yang memiliki skor paling tinggi.

3.2.3.2.4. Deskripsi Proses 2.4 : Perangkingan Dokumen

Dalam proses ini, dilakukan pembobotan ulang terhadap dokumen yang ada di

dalam cluster yang terpilih. Pembobotan ulang dilakukan dengan menghitung DF

dari tiap term yang ada. Hasil penghitungan DF akan digunakan untuk

menghitung ulang nilai TF-IDF. Dari hasil tersebut, rumus pada Persamaan 2.2

digunakan lagi untuk memberikan ranking pada dokumen. Hasil proses ini adalah

daftar dokumen-dokumen yang dianggap relevan oleh sistem, tersusun dari paling

relevan ke paling tidak relevan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 56: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

33

3.2.4. Rancangan Basis Data

3.2.4.1. Desain Konseptual

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level konseptual disajikan dalam gambar berikut :

Cluster

Document

Termwakil punya

Id_clusterId_cluster uuiduuid valuevalue

N N

Id_termId_term termterm

N

N

tftf valuevalue

assignassign

contentcontent topictopic

Id_documentId_document Record_idRecord_id

1

N

Stopword_Ina

Id_stopwordId_stopword stopwordstopword

Rootword_Ina

Id_rootwordId_rootword rootwordrootword

Gambar 3.10. ERD untuk sistem yang akan dibangun

3.2.4.2. Desain Logikal

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level logikal disajikan dalam gambar berikut :

Document

Id_document (PK)

Id_cluster

Record_id

Topic

content

Cluster

Id_cluster (PK)

uuid

Term

Id_term (PK)

term

Term_Document

Id_document (FK)

Id_term (FK)

Tf

w

Centroid

Id_cluster (FK)

Id_term (FK)

value

Stopword_Ina

Id_stopword

stopword

Rootword_Ina

Id_rootword

rootword

Gambar 3.11. Model relasional untuk sistem yang akan dibangun

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 57: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

34

3.2.4.3. Desain Fisikal

3.2.4.3.1. Tabel Cluster

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Cluster disajikan dalam gambar berikut :

NO Nama Field Tipe Data Ukuran Keterangan

1 idCluster INT 11 Primary key dari tabel

Cluster

2 Uuid VARCHAR 300 UUID dari tiap cluster

Tabel 3.2. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada level

fisikal untuk relasi Cluster

3.2.4.3.2. Tabel Document

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Document disajikan dalam gambar berikut :

NO Nama Field Tipe Data Ukuran Keterangan

1 Id_document INT 11 Primary key dari tabel

ClusterMember

2 Id_cluster INT 11 Foreign key tabel ini,

referensi dari tabel

Cluster

3 Record_id VARCHAR 1000 Path menuju ke

dokumen terkait

4 Content TEXT Isi dari dokumen

terkait

5 Topic TEXT Topik dari dokumen

terkait

Tabel 3.3. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada level

fisikal untuk relasi Documents

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 58: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

35

3.2.4.3.3. Tabel Centroid

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Centroid disajikan dalam gambar berikut :

NO Nama Field Tipe Data Ukuran Keterangan

1 Id_cluster INT 100 Foreign key tabel ini,

referensi dari tabel

Cluster

2 Id_term INT 11 Foreign key tabel ini,

referensi dari tabel

Term

3 Value DOUBLE Nilai bobot tiap term

di centroid

Tabel 3.4. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada level

fisikal untuk relasi Centroid

3.2.4.3.4. Tabel Term

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Term disajikan dalam gambar berikut :

NO Nama Field Tipe Data Ukuran Keterangan

1 Id_term INT 11 Primary key dari tabel

ini

2 Term VARCHAR 300 Kata yang disimpan

Tabel 3.5. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada level

fisikal untuk relasi Term

3.2.4.3.5. Tabel Term_Document

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Term_Document disajikan dalam gambar berikut :

NO Nama Field Tipe Data Ukuran Keterangan

1 Id_document INT 11 Foreign key tabel ini,

referensi dari tabel

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 59: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

36

Document

2 Id_term INT 11 Foreign key tabel ini,

referensi dari tabel

Term

3 Tf INT 11 Term frequency

4 W DOUBLE Bobot term

Tabel 3.6. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada level

fisikal untuk relasi Term_Document

3.2.4.3.6. Tabel Stopword_Ina

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Stopword_Ina disajikan dalam gambar berikut :

NO Nama Field Tipe Data Ukuran Keterangan

1 Id INT 11 Primary key dari tabel

ini

2 Stopword VARCHAR 50 Kata yang menjadi

stopword

Tabel 3.7. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada level

fisikal untuk relasi Stopword_Ina

3.2.4.3.7. Tabel Rootword_Ina

Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada

level fisikal untuk relasi Rootword_Ina disajikan dalam gambar berikut :

NO Nama Field Tipe Data Ukuran Keterangan

1 Id INT 11 Primary key dari tabel

Rootword

2 Rootword VARCHAR 50 Kata yang menjadi

rootword

Tabel 3.8. Desain basis data untuk Sistem Pemerolehan Informasi berbasis Cluster pada level

fisikal untuk relasi Rootword_Ina

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 60: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

37

3.2.5. Rancangan Antarmuka Pengguna

3.2.5.1. Antarmuka Pengelompokan Dokumen

Rancangan antarmuka pengguna untuk proses pengelompokan dokumen

ditunjukkan dalam gambar berikut ini :

Gambar 3.12. Rancangan antarmuka pengguna untuk proses pengelompokan dokumen

3.2.5.2. Antarmuka Pencarian Dokumen

Rancangan antarmuka pengguna untuk proses pencarian dokumen ditunjukkan

dalam gambar berikut ini :

Gambar 3.13. Rancangan antarmuka pengguna untuk proses pencarian dokumen

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 61: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

38

BAB IV

IMPLEMENTASI SISTEM

4.1. Struktur Data

Data berupa daftar term dan hubungannya dengan dokumen yang terkait disimpan

dalam sebuah matriks logikal. Matriks ini tersusun atas baris sebagai dokumen-

dokumen dan kolom sebagai term, selanjutnya disebut atribut.

Dokumen disimpan dalam list yang disebut document list. Struktur data yang

diimplementasikan untuk document list ini adalah ArrayList. Sementara itu, term

disimpan dalam term list. Term list menggunakan struktur data LinkedList yang

dimodifikasi, selanjutnya disebut Modified LinkedList. Modified LinkedList pada

dasarnya adalah LinkedList yang secara otomatis mengurutkan data yang masuk

ke dalamnya. Pemilihan LinkedList didasarkan pada kemampuan struktur data

tersebut dalam penyimpanan dengan ruang dinamis. Dalam sistem ini, term

digunakan sebagai basis pengurutan.

Secara ringkas, struktur data untuk menyimpan informasi hubungan dokumen

dan term ini ditampilkan dalam gambar berikut ini :

Cluster 1 Cluster 1 Cluster 1

Do

c 1D

oc 2

Term 1 Term 2

ClusterPool

Cluster

Document

Gambar 4.1 Struktur data untuk term list yang menggunakan LinkedList dan document list yang

menggunakan ArrayList

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 62: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

39

Sementara itu, HashMap digunakan untuk menyimpan master term dan

DFnya. Master term ini nantinya digunakan untuk melakukan merge term list agar

seluruh dokumen memiliki panjang term list yang sama. Dengan kata lain,

memiliki index yang sama untuk term yang sama.

Hashmap dalam penelitian ini memiliki struktur String term sebagai key dan

int DF sebagai value. Pemilihan HashMap pada kasus ini didasarkan pada

efisiensi HashMap dalam kecepatan pencarian nilai DF dibandingkan dengan

penyimpanan dalam array ataupun List.

Visualisasi HashMap yang diimplementasikan adalah sebagai berikut :

Gambar 4.2. Struktur data untuk master term list yang berupa HashMap

4.2. Implementasi Basis Data

Tabel-tabel yang digunakan dalam sistem ini terlampir dalam bentuk create

statement di bagian lampiran dokumen ini.

4.3. Implementasi Pengelompokan Dokumen

4.3.1. Implementasi G-Means

Implementasi algoritma G-Means menurut Hamerly (2004), dengan Java adalah

sebagai berikut:

1. Pilih level signifikan α untuk uji.

1. public double step1() {

2. double alpha = 0.05;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 63: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

40

3. return alpha;

4. }

Listing 4.1. Penentuan level signifikan 0.05

2. Dari pusat cluster tersebut, ambil dua buah “anak” pusat cluster, dinotasikan

dengan c1 dan c2.

1. public double[][] step2Alternate2(Cluster cs) {

2. Calculation calc = new Calculation();

3. Utility util = new Utility();

4. double[][] valueMatrix = util.convert2DPCAListToMatrix(cs);

5. double[] clusterCenter =

util.convert1DPCARecordToArray(cs.getCentroid());

6.

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

8. for (int j = 0; j < valueMatrix[i].length; j++) {

9. if (j == valueMatrix[i].length - 1) {

10. System.out.println(valueMatrix[i][j] + "");

11. } else {

12. System.out.print(valueMatrix[i][j] + ",");

13. }

14. }

15. }

16.

17. Matrix dataMatrix = new Matrix(valueMatrix);

18.

19. PCA pca = new PCA(dataMatrix, true);

20.

21. Matrix eigenvectorsMatrix = pca.getEigenvectorsMatrix();

22. double eigenval = pca.getEigenvalue(0);

23.

24. Matrix princCompMtr = eigenvectorsMatrix.getMatrix(0,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 64: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

41

eigenvectorsMatrix.getRowDimension() - 1, 0, 0);

25. double[][] array = princCompMtr.getArray();

26.

27. double[] princComp = new double[array.length];

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

29. princComp[i] = (array[i][0] * (Math.sqrt(2*eigenval/Math.PI)));

30. }

31.

32. double[] initCentroid1 = new double[clusterCenter.length];

33. double[] initCentroid2 = new double[clusterCenter.length];

34.

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

36.

37. if(Double.isNaN(princComp[i]) ||

Double.isInfinite(princComp[i])) {

38. princComp[i] = 0.0;

39. }

40.

41. initCentroid1[i] = clusterCenter[i] + princComp[i];

42. initCentroid2[i] = clusterCenter[i] - princComp[i];

43. }

44.

45. double[][] child = new double[2][initCentroid1.length];

46.

47. child[0] = initCentroid1;

48. child[1] = initCentroid2;

49.

50. return child;

51.

52. }

Listing 4.2. Pemilihan “anak cluster utama”

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 65: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

42

3. Jalankan k-Means untuk memperbaiki anak cluster

1. public Cluster[] runKMeans(Cluster cluster, double[] initCentroid1,

double[] initCentroid2) {

2.

3. Utility util = new Utility();

4. Calculation calc = new Calculation();

5.

6. int limit = 1000;

7. int index = 0;

8. Cluster activeCluster = cluster;

9.

10. double[] centroid1 = initCentroid1;

11. double[] centroid2 = initCentroid2;

12.

13. Cluster cluster1 = new Cluster();

14. Cluster cluster2 = new Cluster();

15.

16. // isi centroid awal

17. cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

18. cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

19.

20. // beri nama cluster secara random

21. cluster1.setClusterID(AutoGeneratedID.generateRandomString());

22. cluster2.setClusterID(AutoGeneratedID.generateRandomString());

23.

24. // assign ke variabel recordList (gak penting, hanya saja kadung tdk

bisa refactor rename)

25. LinkedList<Record> recordList = activeCluster.getRecordList();

26.

27. // buat list penampungan record yang telah diassign ke centroid

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 66: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

43

terdekat (sudah ditemukan clusternya)

28. LinkedList<Record> tempRecordListCluster1 = null;

29. LinkedList<Record> tempRecordListCluster2 = null;

30.

31. a : while (true) {

32.

33. tempRecordListCluster1 = new LinkedList<>();

34. tempRecordListCluster2 = new LinkedList<>();

35.

36. // assign ke centroid terdekat

37. for (int j = 0; j < recordList.size(); j++) {

38. Record rec = recordList.get(j);

39. double[] dataArray = util.convert1DPCARecordToArray(rec);

40. double distToCentroid1 = calc.euclideanDistance(dataArray,

centroid1);

41. double distToCentroid2 = calc.euclideanDistance(dataArray,

centroid2);

42.

43. if (distToCentroid1 > distToCentroid2) {

44. tempRecordListCluster2.add(rec);

45. } else {

46. tempRecordListCluster1.add(rec);

47. }

48. }

49.

50. // hitung centroid baru

51. if(tempRecordListCluster1.isEmpty() == false) {

52. centroid1 = calculateNewCentroid(tempRecordListCluster1);

53. } else {

54. System.out.println("empty cluster");

55. cluster1.setRecordList(tempRecordListCluster1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 67: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

44

56.

cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

57. cluster2.setRecordList(tempRecordListCluster2);

58.

cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

59. break a;

60. }

61.

62. if(tempRecordListCluster2.isEmpty() == false) {

63. centroid2 = calculateNewCentroid(tempRecordListCluster2);

64. } else {

65. System.out.println("empty cluster");

66. cluster1.setRecordList(tempRecordListCluster1);

67.

cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

68. cluster2.setRecordList(tempRecordListCluster2);

69.

cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

70. break a;

71. }

72.

73. // cek centroid baru thd centroid lama, apabila centroidBaru =

centroidLama, maka kmeans selesai (stop while loop)

74. boolean checkCluster1 = checkNewWithOldCentroid(centroid1,

util.convert1DPCARecordToArray(cluster1.getCentroid()));

75. boolean checkCluster2 = checkNewWithOldCentroid(centroid2,

util.convert1DPCARecordToArray(cluster2.getCentroid()));

76.

77. // pindahkan isi tempRecordListCluster ke recordList di Cluster

yang sesuai

78. cluster1.setRecordList(tempRecordListCluster1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 68: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

45

79.

cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

80. cluster2.setRecordList(tempRecordListCluster2);

81.

cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

82.

83. if(checkCluster1 && checkCluster2) {

84. break a;

85. }

86. if(index >= limit) {

87. break a;

88. }

89.

90. index++;

91. }

92.

93. Cluster[] arrayCluster = new Cluster[2];

94. arrayCluster[0] = cluster1;

95. arrayCluster[1] = cluster2;

96.

97. return arrayCluster;

98. }

Listing 4.3. Pemilihan anak cluster dengan k-means

4. Hitung nilai vektor v dengan v = c1 – c2. Lalu proyeksikan X ke v, menjadi

X’, dengan rumus sebagai berikut ‖ ‖

Setelah itu, dilakukan normalisasi X` sehingga memiliki rerata 0 dan varian 1.

1. public double[] step4(double[] centroid1, double[] centroid2, Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 69: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

46

cluster) {

2. Utility util = new Utility();

3.

4. Calculation calc = new Calculation();

5.

6. if (centroid1.length != centroid2.length) {

7. throw new IllegalArgumentException();

8. }

9.

10. double[] v = new double[centroid1.length];

11.

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

13. v[i] = centroid1[i] - centroid2[i];

14. }

15.

16. List<Record> recordList = cluster.getRecordList();

17. int recListSize = recordList.size();

18.

19. double[][] xi = new

double[recListSize][recordList.get(0).getDataList().size()];

20.

21. for (int i = 0; i < recListSize; i++) {

22. xi[i] = util.convert1DPCARecordToArray(recordList.get(i));

23. }

24.

25. double[] xiac = new double[recordList.size()];

26.

27. double dotProduct = 0;

28. double norm = 0;

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

30. dotProduct = calc.dotProduct(xi[i], v);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 70: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

47

31. norm = Math.sqrt(calc.dotProduct(v, v));

32. xiac[i] = dotProduct / norm; // hati2 disini, kita tdk tahu di paper

yg dimaksud dgn 2norm adl 2norm euclidean ataukah norm^2

(euc_norm^2), di code ini, asumsi yg dimaksud paper adalah norm^2

33. }

34.

35. double[] transform = calc.zScoreNormalization(xiac);

36.

37. // mengurutkan xiac (ORDERED xi')

38. double[] sortTransf = util.sortArray(transform);

39. double[] z = new double[sortTransf.length];

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

41. z[i] = calc.calculateCDF(sortTransf[i]);

42. }

43.

44. return z;

45. }

Listing 4.4. Penghitungan vektor arah data dan proyeksi dataset X ke vektor arah data, serta

normalisasi hasil proyeksi dengan z-score normalization

5. Hitung . Apabila berada pada daerah non-kritis, maka H0

diterima. Sebaliknya apabila berada di dalam daerah kritis, maka H1

diterima dan pusat cluster yang baru adalah c1 dan c2.

1. public boolean step5(double[] x, double alpha) {

2. boolean stat = false;

3. double ad = NormalityTest.anderson_darling_statistic(x);

4.

5. // adjustment for few datapoints -- fitur ini dicoba justru membuat

jml cluster mjd tdk akurat (mjd lebih sedikit)

6. ad = ad * (1 + (4 / x.length) - (25 / (Math.pow(x.length, 2))));

7.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 71: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

48

8. double pValue = NormalityTest.anderson_darling_pvalue(ad,

x.length);

9.

10. if (pValue >= alpha) {

11. stat = true;

12. } else {

13. stat = false;

14. }

15. return stat;

16. }

Listing 4.5. Uji statistik Anderson-Darling untuk melihat apakah cluster sudah terdistribusi normal

atau belum

Source code sub sistem pengelompokan dokumen terlampir di bagian lampiran

dokumen ini.

4.4. Implementasi Pencarian Dokumen

4.4.1. Implementasi Preprocessing Query

Preprocessing dilakukan untuk menghilangkan stopword dalam query,

menyederhanakan query ke bentuk dasar, serta membobot query dengan TF-IDF.

1. Preprocess prep = new Preprocess();

2. Utility util = new Utility();

3.

4. DatabaseRWOperation dbrw = new DatabaseRWOperation();

5.

6. DataStructuring ds = new DataStructuring();

7.

8. // ========== CLUSTER QUERYING

========================

9. String query = userQuery;

10.

11. // ambil dari db

12. ModifiedLinkedList masterLinkedList = null;

13. try {

14. masterLinkedList = dbrw.readMasterTerm();

15. } catch (SQLException ex) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 72: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

49

16.

Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null,

ex);

17. }

18.

19. prep.preprocessQuery(query);

20. String[] queryArray = prep.getContent();

21. String[] wordArray = queryArray[0].split("\\s+");

22.

23. String[] matchQuery =

util.sentenceTermContainInList(masterLinkedList, wordArray);

24. System.out.println("matchQuery length: " + matchQuery.length);

25.

26. if (util.emptyStringArray(matchQuery)) {

27. System.out.println("tidak ditemukan dokumen dengan kata kunci

tersebut");

28. return null;

29. } else {

30. System.out.println("exist");

31. }

32.

33. // UBAH QUERY KE BENTUK RECORD

34. Record recQuery = ds.tokenizeQuery(matchQuery);

35.

36. // MERGE AGAR MEMILIKI DIMENSI COLUMN YANG SAMA

DENGAN RECORD YANG LAIN

37. recQuery = ds.mergeQuery(recQuery, masterLinkedList);

38.

39. // ambil dari db

40. HashMap<String, Integer> mapPointDf = null;

41. try {

42. mapPointDf = dbrw.mapPoint();

43. } catch (SQLException ex) {

44.

Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null,

ex);

45. }

46.

47. // ambil dari db

48. int documentCount = 0;

49. try {

50. documentCount = dbrw.allDocumentCount();

51. } catch (SQLException ex) {

52.

Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null,

ex);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 73: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

50

53. }

54.

55. // HITUNG BOBOT (TF-IDF) QUERY

56. ModifiedLinkedList pointList = recQuery.getPointList();

57. Iterator<Point> iterator = pointList.iterator();

58. while (iterator.hasNext()) {

59. Point next = iterator.next();

60. String term = next.getTerm();

61. boolean containsKey = mapPointDf.containsKey(term);

62. if (containsKey) {

63. next.setDf(mapPointDf.get(term));

64. double w = next.getTf() * Math.log10(documentCount /

next.getDf());

65. next.setWNorm(w);

66. }

67. } Listing 4.6. Preprocessing terhadap query pencarian

4.4.2. Implementasi Pencarian Berbasis Cluster dan Konvensional

Perbedaan mendasar terletak pada line nomor 3, 5 dan 11. Apabila pencarian

menggunakan cluster (line 3), maka mula-mula centroid dianggap sebagai

dokumen dan diberikan skor terhadap query (line 5). Cluster yang centroidnya

memiliki skor paling besar akan diretrieve. Dokumen didalamnya akan dibobot

ulang terhadap query.

Sementara apabila menggunakan pencarian konvensional, maka seluruh koleksi

langsung diberikan skor terhadap query (line 11).

1. Cluster selectedCluster = null;

2. try {

3. if (isClusterBased) {

4. fastReadPool = clusterPool();

5. matchIndex = matchIndex(fastReadPool, recQuery, 1);

6. if(matchIndex == -1) {

7. matchIndex = matchIndex(fastReadPool, recQuery, 2);

8. }

9. selectedCluster =

dbrw.readSingleCluster(fastReadPool.getClusterAt(matchIndex));

10. } else {

11. selectedCluster = dbrw.readMultipleCluster();

12. }

13.

14. } catch (SQLException ex) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 74: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

51

15.

Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE,

null, ex);

16. }

17.

18. List<Record> documentWeighting =

documentWeighting(selectedCluster, recQuery, 1);

19. if(documentWeighting.isEmpty()) {

20. documentWeighting = documentWeighting(selectedCluster,

recQuery, 2);

21. }

22.

23. return documentWeighting; Listing 4.7. Implementasi pencarian dengan menggunakan cluster dan konvensional.

Source code sub sistem pencarian dokumen terlampir di bagian lampiran

dokumen ini.

4.5. Implementasi Antarmuka Pengguna

4.5.1. Implementasi Antarmuka Pengelompokan Dokumen

Capture screen antarmuka subsistem pengelompokan dokumen ketika pertama

kali dijalankan disajikan dalam gambar berikut ini :

Gambar 4.3 Capture screen antarmuka subsistem pengelompokan dokumen (1)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 75: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

52

Capture screen antarmuka subsistem pengelompokan dokumen ketika user telah

memilih dokumen untuk dikelompokkan disajikan dalam gambar berikut ini :

Gambar 4.4. Capture screen antarmuka subsistem pengelompokan dokumen (2)

4.5.2. Implementasi Antarmuka Pencarian Dokumen

Capture screen antarmuka subsistem pencarian dokumen ketika pertama kali

dijalankan disajikan dalam gambar berikut ini :

Gambar 4.5. Capture screen antarmuka subsistem pencarian dokumen

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 76: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

53

Capture screen antarmuka subsistem pengelompokan dokumen ketika

memunculkan hasil pencarian disajikan dalam gambar berikut ini :

Gambar 4.6. Implementasi antarmuka pengguna subsistem pencarian dokumen berbasis cluster

Gambar 4.7. Implementasi antarmuka pengguna subsistem pencarian dokumen berbasis cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 77: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

54

BAB V

ANALISIS HASIL PENELITIAN

5.1. Analisis Hasil Sistem

5.1.1. Hasil Pengelompokan Dokumen

Berikut ini disajikan hasil pengelompokan dokumen dalam bentuk tabel :

NO DOKUMEN CLUSTER

1 IMPLEMENTASI SISTEM PAKAR BERBASIS WEB UNTUK DIAGNOSIS PENYAKIT

PARU DAN SALURAN PERNAFASAN 1

2 SISTEM PAKAR UNTUK MENGETAHUI PEMENUHAN GIZI DAN DETEKSI AWAL

KESEHATAN IBU HAMIL BERBASIS WEB 1

3 SISTEM PAKAR UNTUK MENDIAGNOSA PENYAKIT DIABETES MELLITUS

BERBASIS MOBILE 1

4 SISTEM PAKAR MENDIAGNOSA PENYAKIT PADA MANUSIA DENGAN

PENALARAN BERBASIS ATURAN (RULE-BASED REASONING) 1

5 SISTEM PAKAR UNTUK MENDIAGNOSA PENYAKIT TELINGA HIDUNG

TENGGOROKAN PADA MANUSIA 1

6 SISTEM PAKAR UNTUK DIAGNOSIS KERUSAKAN MESIN MOBIL PANTHER

BERBASIS MOBILE 1

7 PERANCANGAN SISTEM PAKAR PENYAKIT PARU-PARU MENGGUNAKAN

METODE VCIRS 1

8 SISTEM PAKAR PENGOBATAN REFLEKSOLOGI 1

9 PENERAPAN METODE FORWARD CHAINING DAN TEOREMA BAYES PADA

SISTEM PAKAR DIAGNOSA PENYAKIT TULANG 1

10 SISTEM PAKAR UNTUK MENGIDENTIFIKASI PENYAKIT INFEKSI BAKTERI DAN

VIRUS 1

11 PEMODELAN SISTEM PAKAR DIAGNOSIS PENENTUAN LEVEL SAKIT ASMA

DENGAN METODE FUZZY MAMDANI 1

12 SISTEM PAKAR DIAGNOSA PENYAKIT TANAMAN PADI UNTUK

MENINGKATKAN HASIL PANEN 1

13 SISTEM PAKAR UNTUK DIAGNOSIS PENYAKIT AYAM YANG DISEBABKAN OLEH

VIRUS 1

14 APLIKASI SISTEM PAKAR DIAGNOSA PENYAKIT GINJAL DENGAN METODE

DEMPSTER-SHAFER 1

15 SISTEM PAKAR UNTUK DIAGNOSIS PENYAKIT THT BERBASIS WEB DENGAN

"E2GLITE EXPERT SYSTEM SHELL" 1

16 PERANCANGAN SISTEM PAKAR PENYAKIT PARU-PARU MENGGUNAKAN

METODE VCIRS 1

17 PERANCANGAN DAN PEMBUATAN APLIKASI SISTEM PAKAR UNTUK

PERMASALAHAN TINDAK PIDANA TERHADAP HARTA KEKAYAAN 2

18 IMPLEMENTASI SISTEM PAKAR UNTUK MENDIAGNOSIS PENYAKIT DENGAN

GEJALA DEMAM MENGGUNAKAN METODE CERTAINTY FACTOR 3

19 SISTEM PAKAR PENDIAGNOSA PENYAKIT ANAK MENGGUNAKAN CERTAINTY

FACTOR (CF) 3

20 SISTEM PENGAMBILAN KEPUTUSAN PEMBELIAN BARANG ELEKTRONIK 4

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 78: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

55

MENGGUNAKAN METODE SINGLE MOVING AVERAGE

21 PENGENALAN KARAKTER ANGKA DENGAN MENGGUNAKAN FUZZY

CLUSTERING 5

22 PENGKLASIFIKASIAN JENIS BATIK TULIS DENGAN MENGGUNAKAN METODE

NEAREST CLUSTER CLASSIFIER (NCC) 5

23 ANALISA PERBANDINGAN KLASIFIKASI DOKUMEN KARYA ILMIAH

MENGGUNAKAN K-NEAREST NEIGHBOR DAN NAIVE BAYES 5

24 CLUSTERING DATA TRANSAKSI PENJUALAN MENGGUNAKAN GENETIC K-

MEANS ALGORITHM (GKA) 5

25 KEAMANAN DATA PADA JARINGAN WIMAX MENGGUNAKAN ALGORITMA

ADVANCE ENCRYPTION STANDARD RIJNDAEL 256 BIT 5

26

ANALISIS DAN PERANCANGAN MODEL DATA OPINION MINING

MENGGUNAKAN ALGORITMA SUPPORT VECTOR MACHINE (STUDI KASUS:

DATA TWITTER DENGAN KEYWORD MAKANAN)

5

27 OPTIMASI PEMILIHAN SEEDS ALGORITMA K-MEANS PADA PENGELOMPOKAN

DOKUMEN BERBAHASA INGGRIS 5

28 SISTEM PENDUKUNG KEPUTUSAN UNTUK IDENTIFIKASI STATUS KELUARGA

MISKIN MENGGUNAKAN METODE NAIVE BAYES CLASSIFIER 5

29

PENERAPAN DATA MINING DENGAN METODE INTERPOLASI UNTUK

MEMPREDIKSI MINAT KONSUMEN ASURANSI (STUDI KASUS ASURANSI

METLIFE)

5

30 PENERAPAN ALGORITMA K-NEAREST NEIGHBOR UNTUK PENENTUAN RESIKO

KREDIT KEPEMILIKAN KENDARAAN BEMOTOR 5

31 SISTEM INFORMASI GEOGRAFIS PEMERATAAN PENDIDIKAN UNTUK WAJIB

BELAJAR 9 TAHUN DI GUNUNG KIDUL 5

32

PERENCANAAN PEMBANGUNAN SISTEM INFORMASI TERINTEGRASI DENGAN

ENTERPRISE ARCHITECTURE PLANNING (EAP) (STUDI KASUS : STIKOM

DINAMIKA BANGSA JAMBI)

6

33 SISTEM INFORMASI DATA BUKU BESAR PENERIMAAN DARI DINAS

PENGELOLA PENDAPATAN DAERAH (STUDI KASUS : KANTOR GUBSU) 6

34 ANALISA DATA DENGAN TEKNIK ASSOCIATION RULE DALAM DATA MINING 6

35 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN PROGRAM STUDI BAGI SISWA

SMA 6

36

PENERAPAN DATA MINING UNTUK MEMBANGUN E-MONEV MENGGUNAKAN

ALGORITMA C4.5 (STUDI KASUS PENERIMAAN MAHASISWA BARU UIN MALIKI

MALANG)

6

37 SISTEM INFORMASI MANAJEMEN DEMOGRAFI KABUPATEN TRENGGALEK 6

38 PENGEMBANGAN APLIKASI SISTEM INFORMASI SEKOLAH SEBAGAI SISTEM

INFORMASI EKSEKUTIF 6

39

PERANCANGAN SISTEM PENDUKUNG PENGAMBILAN KEPUTUSAN UNTUK

PENERIMAAN BEASISWA DENGAN METODE SAW (SIMPLE ADDITIVE

WEIGHTING)

6

40

PENERAPAN DATA MINING DENGAN METODE KLASIFIKASI NAIVE BAYES

UNTUK MEMPREDIKSI KELULUSAN MAHASISWA DALAM MENGIKUTI ENGLISH

PROFICIENCY TEST

6

41 DATA MINING PENGKLASIFIKASIAN PELANGGAN PEMBELI MOBIL DENGAN

METODE DECISION TREE 6

42 RANCANG BANGUN SISTEM INFORMASI MANAJEMEN JASA KONSTRUKSI

BERBASIS WEB STUDI KASUS : PT. BINTANG MAS PRATAMA 6

43 DESAIN SISTEM INFORMASI LAYANAN PELANGGAN DI PDAM TOMOHON

BERBASIS WEB 6

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 79: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

56

44 SISTEM PENDUKUNG KEPUTUSAN MENENTUKAN JENIS USAHA DI BIDANG

FOOD AND BEVERAGE 6

45 IMPLEMENTASI METODE APRIORI UNTUK MENDUKUNG REKOMENDASI

PRODUK PADA PETRA GAMING STORE 6

46 PENERAPAN DATA MINING UNTUK EVALUASI KINERJA AKADEMIK

MAHASISWA MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER 6

47 PENERAPAN DATA MINING UNTUK MEMPREDIKSI KRITERIA NASABAH KREDIT 6

48 PENERAPAN ALGORITMA KLASIFIKASI DATA MINING ID3 UNTUK

MENENTUKAN PENJURUSAN SISWA SMAN 6 SEMARANG 6

49 SISTEM INFORMASI GEOGRAFIS (GIS) PADA JALAN KOTA MEDAN BERBASIS

MOBILE 6

50 PERANCANGAN SISTEM INFORMASI GEOGRAFIS PERIKANAN DI INDONESIA 6

51

PENERAPAN DATA MINING MENGGUNAKAN ALGORITMA ASSOCIATION

RULES UNTUK MEMPREDIKSI PILIHAN PROGRAM STUDI DI SEKOLAH TINGGI

XYZ

6

52 PENERAPAN DATA MINING DALAM EMAIL FILTERING MENGGUNAKAN

METODE NAIVE BAYESIAN 6

53 IMPLEMENTASI DATA MINING PADA PENJUALAN TIKET PESAWAT

MENGGUNAKAN ALGORITMA APRIORI (Studi Kasus: Jumbo Travel Medan) 6

54 KLASIFIKASI CITRA USG MENGGUNAKAN METODE EUCLIDEAN DISTANCE

UNTUK ESTIMASI UKURAN KISTA OVARIUM 7

55 PERBANDINGAN PARTITION AROUND MEDOIDS (PAM) DAN K-MEANS

CLUSTERING UNTUK TWEETS 7

56 SISTEM PENDUKUNG KEPUTUSAN UNTUK PEMILIHAN PROGRAM STUDI

DENGAN METODE AHP 7

57 SISTEM INFORMASI PENJUALAN BARANG PADA CV. INDOGLASS 7

58 PENGENALAN POLA IMAGE KARAKTER DENGAN METODE NGUYEN WIDROW 7

59 SISTEM INFORMASI PEMANTAUAN CUACA BERBASIS JARINGAN TELEPON

SELULER 7

60 SISTEM INFORMASI GEOGRAFIS PENCARIAN RUTE OPTIMUM OBYEK WISATA

KOTA YOGYAKARTA DENGAN ALGORITMA FLOYD-WARSHALL 7

61 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MAHASISWA BERPRESTASI

JURUSAN TEKNIK INFORMATIKA MENGGUNAKAN MODEL USE CASE 7

62

ANALISIS DAN PERANCANGAN SISTEM PENDUKUNG KEPUTUSAN UNTUK

PENENTUAN JALUR KELOMPOK KEAHLIAN MENGGUNAKAN MODEL SIMPLE

ADDITIVE WEIGHTING (SAW)

7

63 PEMBANGUNAN SPAM E-MAIL FILTERING SYSTEM DENGAN METODE NAIVE

BAYESIAN 7

64

PENENTUAN MAHASISWA KEPERAWATAN PRAKTEK TERBAIK DENGAN

METODE DECI“ION TREE DAN MPE (“TUDI KA“U“: RUMAH “AKIT ‘X’ PEKANBARU)

7

65 ANALISA PERBANDINGAN METODE ROUTING DISTANCE VECTOR DAN LINK

STATE PADA JARINGAN PACKET 7

66

SISTEM PENDUKUNG KEPUTUSAN PENENTUAN KELAYAKAN CALON RINTISAN

SEKOLAH BERTARAF INTERNASIONAL DENGAN METODE FUZZY ASSOCIATIVE

MEMORY

7

67 SISTEM PENDUKUNG KEPUTUSAN DALAM PEMILIHAN ALTERNATIF ALAT

KONTRASEPSI MENGGUNAKAN SIMPLE ADDITIVE WEIGHTING 7

68 SISTEM PENDUKUNG KEPUTUSAN KELAYAKAN TKI KE LUAR NEGERI

MENGGUNAKAN FMADM 7

69 SISTEM PENUNJANG KEPUTUSAN PEMILIHAN PERANGKAT PEMROSESAN 7

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 80: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

57

DATA MENGGUNAKAN METODE ANALYTICAL HIERARCHY PROCESS (AHP)

DAN MULTI-CRITERIA DECISION MAKING (MCDM)

70

SISTEM PENDUKUNG KEPUTUSAN PENILAIAN KINERJA DOSEN

MENGGUNAKAN METODE FUZZY SAW (STUDI KASUS UNIVERSITAS POTENSI

UTAMA)

7

71 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN ANGGOTA SENAT

MAHASISWA UNIVERSITAS KLABAT MENGGUNAKAN METODE AHP 7

72 SURVEI PENERAPAN ALGORITMA GOSSIP JARINGAN AD HOC BERGERAK

MARITIM 7

73 SISTEM PENUNJANG KEPUTUSAN PENILAIAN HASIL KERJA UNTUK

PENEMPATAN SDM BERKUALITAS 7

74 PEMILIHAN SEPEDA MOTOR SECOND DENGAN METODE Analytical Hierarchy

Process (AHP) ( STUDI KASUS : PT. XYZ ) 7

75 SISTEM INFORMASI GEOGRAFIS PENILAIAN LOKASI ALTERNATIF UNTUK

PENENTUAN LOKASI WARALABA 7

76 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN KAMERA DIGITAL SINGLE-LENS

REFLEX (DSLR) 7

77 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN LOKASI GUDANG DI

PERUSAHAAN DENGAN METODE WEIGHTED PRODUCT 7

78 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN LOKASI BTS MENGGUNAKAN

METODE PROMETHEE 7

79

ANALISIS DAN PERBANDINGAN KINERJA DARI QOS MANAJEMEN PADA IP

MULTIMEDIA SUBSYSTEM (IMS): MENGGUNAKAN INTSERV DAN DIFFSERV

MODEL

8

80

PERBAIKAN PROTOKOL ROUTING AD-HOC ON DEMAND MULTIPATH

DISTANCE VECTOR (AOMDV) UNTUK MENDAPATKAN RUTE YANG STABIL

MENGGUNAKAN LINK EXPIRATION TIME

9

81 IMPLEMENTASI PROTOKOL ROUTING JARINGAN AD HOC MULTIUSER PADA

GATEWAY UNTUK SISTEM KOMUNIKASI KAPAL LAUT 9

82 ANALISIS KELAYAKAN PENGGUNAAN PROTOKOL WIRELESS UNTUK

TRANSIMISI DATA PADA WIRELESS BODY AREA NETWORK (WBAN) 10

83 PERANCANGAN PROTOTYPE JARINGAN IPv6 MENGGUNAKAN MIKROTIK

ROUTER OS PADA PTS XYZ 10

84 ANALISA QOS JARINGAN WIRELESS MODE AD HOC YANG

MENGIMPLEMENTASIKAN PROTOKOL ZRP 10

85 ANALISIS PERBANDINGAN PERFORMANSI REACTIVE ROUTING PROTOKOL

AODV DAN DSR PADA JARINGAN AD HOC 10

86

PENGEMBANGAN JARINGAN KOMPUTER UNIVERSITAS SURAKARTA

BERDASARKAN PERBANDINGAN PROTOKOL ROUTING INFORMATION

PROTOKOL (RIP) DAN PROTOKOL OPEN SHORTEST PATH FIRST (OSPF)

10

87 OPTIMASI ROUTING PADA JARINGAN MANET MENGGUNAKAN MEDSR DAN

LET 10

88 PERBANDINGAN PERFORMANCE JARINGAN IPV6 NATIVE DENGAN

TUNNELING TEREDO (6 to 4) 10

89 ONE-WAY DELAY VOIP PADA JARINGAN WIRELESS INTRANET 10

90 IMPLEMENTASI ROUTING PROTOCOL OPEN SHORTEST PATH FIRST(OSPF)

PADA MODEL TOPOLOGY RING 11

91 SISTEM INFORMASI GEOGRAFIS UNTUK PERJALANAN WISATA DI KOTA

SEMARANG 12

92 PREDIKSI EROSI LAHAN DAS BENGKULU DENGAN SISTEM INFORMASI

GEOGRAFIS (SIG) 13

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 81: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

58

93 APLIKASI SISTEM INFORMASI GEOGRAFI UNTUK MENENTUKAN DAERAH

PRIORITAS REHABILITASI DI CEKUNGAN BANDUNG 14

94 IMPLEMENTASI SISTEM INFORMASI GEOGRAFIS MENGGUNAKAN GOOGLE

MAPS API DALAM PEMETAAN ASAL MAHASISWA 14

95 SISTEM INFORMASI GEOGRAFIS PEMETAAN PEMUKIMAN DI KAWASAN

TAMAN NASIONAL KOMODO 14

96 PEMBANGUNAN SISTEM INFORMASI GEOGRAFIS USAHA MIKRO KECIL DAN

MENENGAH DI KABUPATEN KUDUS BERBASIS WEB 14

97 SISTEM INFORMASI GEOGRAFIS JARINGAN PIPA STUDI KASUS: PDAM KOTA

BANDUNG 14

98 SISTEM INFORMASI GEOGRAFIS SLTP DI KOTAMADYA JAKARTA SELATAN 14

99 ANALISA DAN PERANCANGAN INTRUSION DETECTION SYSTEM (IDS) PADA

JARINGAN NIRKABEL STIKOM DINAMIKA BANGSA 14

100 SISTEM INFORMASI GEOGRAFIS PENYEBARAN PENDUDUK BERDASARKAN

TINGKAT USIA DI KABUPATEN SLEMAN BERBASIS WEB 15

Tabel 5.1. Hasil pengelompokan dokumen yang dilakukan oleh sistem

5.1.1.1. Purity

Kemiripan di dalam cluster dihitung oleh responden sebagai dasar penentuan

purity dari hasil pengelompokan. Hasil penghitungan purity sebagai berikut ini :

CLUSTER MATCH

1 16

2 1

3 2

4 1

5 8

6 11

7 15

8 1

9 2

10 8

11 1

12 1

13 1

14 6

15 1

TOTAL 75

Tabel 5.2. Hasil penghitungan dokumen-dokumen yang sesuai dengan cluster yang ditempati

Dengan total data sebanyak 100 dokumen, dapat dihitung nilai akurasi dari

pemodelan cluster tersebut yaitu :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 82: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

59

5.1.2. Hasil Pengujian Pencarian Dokumen berdasar Kueri Pengguna

Pengujian pencarian dokumen menggunakan query sebagai berikut :

5.1.2.1. Pencarian dengan query “data mining”

Kueri : data mining

Jumlah dokumen relevan dalam koleksi : 14

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.1.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 11

Jumlah dokumen relevan yang diperoleh : 11

Waktu eksekusi : 13,3721 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1

PENERAPAN DATA MINING MENGGUNAKAN ALGORITMA

ASSOCIATION RULES UNTUK MEMPREDIKSI PILIHAN PROGRAM STUDI

DI SEKOLAH TINGGI XYZ

1

2 ANALISA DATA DENGAN TEKNIK ASSOCIATION RULE DALAM DATA

MINING 1

3 PENERAPAN DATA MINING UNTUK MEMPREDIKSI KRITERIA NASABAH

KREDIT 1

4

PENERAPAN DATA MINING UNTUK MEMBANGUN E-MONEV

MENGGUNAKAN ALGORITMA C4.5 (STUDI KASUS PENERIMAAN

MAHASISWA BARU UIN MALIKI MALANG)

1

5 PENERAPAN ALGORITMA KLASIFIKASI DATA MINING ID3 UNTUK

MENENTUKAN PENJURUSAN SISWA SMAN 6 SEMARANG 1

6 PENERAPAN DATA MINING UNTUK EVALUASI KINERJA AKADEMIK

MAHASISWA MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER 1

7

IMPLEMENTASI DATA MINING PADA PENJUALAN TIKET PESAWAT

MENGGUNAKAN ALGORITMA APRIORI (Studi Kasus: Jumbo Travel

Medan)

1

8

PENERAPAN DATA MINING DENGAN METODE KLASIFIKASI NAIVE

BAYES UNTUK MEMPREDIKSI KELULUSAN MAHASISWA DALAM

MENGIKUTI ENGLISH PROFICIENCY TEST

1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 83: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

60

9 IMPLEMENTASI METODE APRIORI UNTUK MENDUKUNG

REKOMENDASI PRODUK PADA PETRA GAMING STORE 1

10 DATA MINING PENGKLASIFIKASIAN PELANGGAN PEMBELI MOBIL

DENGAN METODE DECISION TREE 1

11 PENERAPAN DATA MINING DALAM EMAIL FILTERING MENGGUNAKAN

METODE NAIVE BAYESIAN 1

Tabel 5.3. Hasil pencarian dengan query “data mining” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

14% 100%

21% 100%

29% 100%

36% 100%

43% 100%

50% 100%

57% 100%

64% 100%

71% 100%

79% 100%

Tabel 5.4. Penghitungan recall - precision terhadap query “data mining” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.1 ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 100%

80% 0%

90% 0%

100% 0%

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 84: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

61

Tabel 5.5. Interpolasi 11 titik recall precision terhadap query “data mining” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.5 ditampilkan dalam

bentuk grafik sebagai berikut :

Gambar 5.1. Grafik interpolasi 11 titik recall precision terhadap query “data mining” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.1.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 14

Jumlah dokumen relevan yang diperoleh : 19

Waktu eksekusi : 18,5425 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 PENERAPAN DATA MINING MENGGUNAKAN ALGORITMA ASSOCIATION RULES

UNTUK MEMPREDIKSI PILIHAN PROGRAM STUDI DI SEKOLAH TINGGI XYZ 1

2 ANALISA DATA DENGAN TEKNIK ASSOCIATION RULE DALAM DATA MINING 1

3 PENERAPAN DATA MINING UNTUK MEMPREDIKSI KRITERIA NASABAH KREDIT 1

4

PENERAPAN DATA MINING UNTUK MEMBANGUN E-MONEV MENGGUNAKAN

ALGORITMA C4.5 (STUDI KASUS PENERIMAAN MAHASISWA BARU UIN MALIKI

MALANG)

1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 85: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

62

5 PENERAPAN ALGORITMA KLASIFIKASI DATA MINING ID3 UNTUK MENENTUKAN

PENJURUSAN SISWA SMAN 6 SEMARANG 1

6 PENERAPAN DATA MINING UNTUK EVALUASI KINERJA AKADEMIK MAHASISWA

MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER 1

7

PENERAPAN DATA MINING DENGAN METODE INTERPOLASI UNTUK

MEMPREDIKSI MINAT KONSUMEN ASURANSI (STUDI KASUS ASURANSI

METLIFE)

1

8 IMPLEMENTASI DATA MINING PADA PENJUALAN TIKET PESAWAT

MENGGUNAKAN ALGORITMA APRIORI (Studi Kasus: Jumbo Travel Medan) 1

9

ANALISIS DAN PERANCANGAN MODEL DATA OPINION MINING

MENGGUNAKAN ALGORITMA SUPPORT VECTOR MACHINE (STUDI KASUS:

DATA TWITTER DENGAN KEYWORD MAKANAN)

0

10

PENERAPAN DATA MINING DENGAN METODE KLASIFIKASI NAIVE BAYES

UNTUK MEMPREDIKSI KELULUSAN MAHASISWA DALAM MENGIKUTI ENGLISH

PROFICIENCY TEST

1

11 IMPLEMENTASI METODE APRIORI UNTUK MENDUKUNG REKOMENDASI

PRODUK PADA PETRA GAMING STORE 1

12 DATA MINING PENGKLASIFIKASIAN PELANGGAN PEMBELI MOBIL DENGAN

METODE DECISION TREE 1

13 PENERAPAN ALGORITMA K-NEAREST NEIGHBOR UNTUK PENENTUAN RESIKO

KREDIT KEPEMILIKAN KENDARAAN BEMOTOR 1

14 PENERAPAN DATA MINING DALAM EMAIL FILTERING MENGGUNAKAN

METODE NAIVE BAYESIAN 1

15 OPTIMASI PEMILIHAN SEEDS ALGORITMA K-MEANS PADA PENGELOMPOKAN

DOKUMEN BERBAHASA INGGRIS 0

16 PERBANDINGAN PARTITION AROUND MEDOIDS (PAM) DAN K-MEANS

CLUSTERING UNTUK TWEETS 0

17 ANALISA PERBANDINGAN KLASIFIKASI DOKUMEN KARYA ILMIAH

MENGGUNAKAN K-NEAREST NEIGHBOR DAN NAIVE BAYES 0

18 SISTEM PENDUKUNG KEPUTUSAN UNTUK IDENTIFIKASI STATUS KELUARGA

MISKIN MENGGUNAKAN METODE NAIVE BAYES CLASSIFIER 0

19 PEMBANGUNAN SPAM E-MAIL FILTERING SYSTEM DENGAN METODE NAIVE

BAYESIAN 0

Tabel 5.6. Hasil pencarian dengan query “data mining” pada Sistem Pemerolehan Informasi Konvensional

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

14% 100%

21% 100%

29% 100%

36% 100%

43% 100%

50% 100%

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 86: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

63

57% 100%

64% 90%

71% 91%

79% 92%

86% 92%

93% 93%

Tabel 5.7. Penghitungan recall - precision terhadap query “data mining” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.7. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 93%

70% 93%

80% 93%

90% 93%

100% 0%

Tabel 5.8. Interpolasi 11 titik recall precision terhadap query “data mining” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.8. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 87: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

64

Gambar 5.2. Grafik interpolasi 11 titik recall precision terhadap query “data mining” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.2. Pencarian dengan query “naïve bayes”

Kueri : naïve bayes

Jumlah dokumen relevan dalam koleksi : 5

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.2.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 1

Jumlah dokumen relevan yang diperoleh : 1

Waktu eksekusi : 13,3514 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 SISTEM PENDUKUNG KEPUTUSAN UNTUK IDENTIFIKASI STATUS KELUARGA

MISKIN MENGGUNAKAN METODE NAIVE BAYES CLASSIFIER 1

Tabel 5.9. Hasil pencarian dengan query “naïve bayes” pada Sistem Pemerolehan Informasi berbasis Cluster

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 88: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

65

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

20% 100%

Tabel 5.10. Penghitungan recall - precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.10. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 0%

40% 0%

50% 0%

60% 0%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.11. Interpolasi 11 titik recall precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.11. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 89: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

66

Gambar 5.3. Grafik interpolasi 11 titik recall precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.2.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 6

Jumlah dokumen relevan yang diperoleh : 5

Waktu eksekusi : 16,0667 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1

PENERAPAN DATA MINING DENGAN METODE KLASIFIKASI NAIVE BAYES

UNTUK MEMPREDIKSI KELULUSAN MAHASISWA DALAM MENGIKUTI ENGLISH

PROFICIENCY TEST

1

2 SISTEM PENDUKUNG KEPUTUSAN UNTUK IDENTIFIKASI STATUS KELUARGA

MISKIN MENGGUNAKAN METODE NAIVE BAYES CLASSIFIER 1

3 PENERAPAN DATA MINING UNTUK EVALUASI KINERJA AKADEMIK MAHASISWA

MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER 1

4 PEMBANGUNAN SPAM E-MAIL FILTERING SYSTEM DENGAN METODE NAIVE

BAYESIAN 1

5 PENERAPAN METODE FORWARD CHAINING DAN TEOREMA BAYES PADA

SISTEM PAKAR DIAGNOSA PENYAKIT TULANG 1

6 PEMODELAN SISTEM PAKAR DIAGNOSIS PENENTUAN LEVEL SAKIT ASMA

DENGAN METODE FUZZY MAMDANI 0

Tabel 5.12. Hasil pencarian dengan query “naïve bayes” pada Sistem Pemerolehan Informasi Konvensional

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 90: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

67

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

20% 100%

40% 100%

60% 100%

80% 100%

100% 100%

Tabel 5.13. Penghitungan recall - precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 100%

80% 100%

90% 100%

100% 100%

Tabel 5.14. Interpolasi 11 titik recall precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 91: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

68

Gambar 5.4. Grafik interpolasi 11 titik recall precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.3. Pencarian dengan query “klasifikasi”

Kueri : klasifikasi

Jumlah dokumen relevan dalam koleksi : 15

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.3.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 6

Jumlah dokumen relevan yang diperoleh : 6

Waktu eksekusi : 14,0447 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 PENGKLASIFIKASIAN JENIS BATIK TULIS DENGAN MENGGUNAKAN METODE

NEAREST CLUSTER CLASSIFIER (NCC) 1

2 PENERAPAN ALGORITMA K-NEAREST NEIGHBOR UNTUK PENENTUAN RESIKO

KREDIT KEPEMILIKAN KENDARAAN BEMOTOR 1

3 ANALISA PERBANDINGAN KLASIFIKASI DOKUMEN KARYA ILMIAH

MENGGUNAKAN K-NEAREST NEIGHBOR DAN NAIVE BAYES 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 92: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

69

4

ANALISIS DAN PERANCANGAN MODEL DATA OPINION MINING

MENGGUNAKAN ALGORITMA SUPPORT VECTOR MACHINE (STUDI KASUS:

DATA TWITTER DENGAN KEYWORD MAKANAN)

1

5 SISTEM PENDUKUNG KEPUTUSAN UNTUK IDENTIFIKASI STATUS KELUARGA

MISKIN MENGGUNAKAN METODE NAIVE BAYES CLASSIFIER 1

6 CLUSTERING DATA TRANSAKSI PENJUALAN MENGGUNAKAN GENETIC K-

MEANS ALGORITHM (GKA) 1

Tabel 5.15. Hasil pencarian dengan query “klasifikasi” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

13% 100%

20% 100%

27% 100%

33% 100%

40% 100%

Tabel 5.16. Penghitungan recall - precision terhadap query “klasifikasi” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.16. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 0%

60% 0%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.17. Interpolasi 11 titik recall precision terhadap query “klasifikasi” pada Sistem Pemerolehan Informasi berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 93: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

70

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.17. ditampilkan dalam

bentuk grafik sebagai berikut :

Gambar 5.5. Grafik interpolasi 11 titik recall precision terhadap query “klasifikasi” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.3.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 19

Jumlah dokumen relevan yang diperoleh : 10

Waktu eksekusi : 14,5661 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 PENGKLASIFIKASIAN JENIS BATIK TULIS DENGAN MENGGUNAKAN METODE

NEAREST CLUSTER CLASSIFIER (NCC) 1

2 PENERAPAN DATA MINING UNTUK EVALUASI KINERJA AKADEMIK MAHASISWA

MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER 1

3 DATA MINING PENGKLASIFIKASIAN PELANGGAN PEMBELI MOBIL DENGAN

METODE DECISION TREE 1

4 PENERAPAN ALGORITMA K-NEAREST NEIGHBOR UNTUK PENENTUAN RESIKO

KREDIT KEPEMILIKAN KENDARAAN BEMOTOR 1

5 ANALISA PERBANDINGAN KLASIFIKASI DOKUMEN KARYA ILMIAH

MENGGUNAKAN K-NEAREST NEIGHBOR DAN NAIVE BAYES 1

6 ANALISIS DAN PERANCANGAN MODEL DATA OPINION MINING 0

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 94: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

71

MENGGUNAKAN ALGORITMA SUPPORT VECTOR MACHINE (STUDI KASUS:

DATA TWITTER DENGAN KEYWORD MAKANAN)

7

PENERAPAN DATA MINING DENGAN METODE KLASIFIKASI NAIVE BAYES

UNTUK MEMPREDIKSI KELULUSAN MAHASISWA DALAM MENGIKUTI ENGLISH

PROFICIENCY TEST

1

8

PENERAPAN DATA MINING UNTUK MEMBANGUN E-MONEV MENGGUNAKAN

ALGORITMA C4.5 (STUDI KASUS PENERIMAAN MAHASISWA BARU UIN MALIKI

MALANG)

0

9 SISTEM PENDUKUNG KEPUTUSAN UNTUK IDENTIFIKASI STATUS KELUARGA

MISKIN MENGGUNAKAN METODE NAIVE BAYES CLASSIFIER 0

10 PENERAPAN ALGORITMA KLASIFIKASI DATA MINING ID3 UNTUK MENENTUKAN

PENJURUSAN SISWA SMAN 6 SEMARANG 1

11 PENERAPAN DATA MINING DALAM EMAIL FILTERING MENGGUNAKAN

METODE NAIVE BAYESIAN 1

12 PENERAPAN DATA MINING UNTUK MEMPREDIKSI KRITERIA NASABAH KREDIT 1

13 PREDIKSI EROSI LAHAN DAS BENGKULU DENGAN SISTEM INFORMASI

GEOGRAFIS (SIG) 0

14 SISTEM INFORMASI GEOGRAFIS PENILAIAN LOKASI ALTERNATIF UNTUK

PENENTUAN LOKASI WARALABA 0

15 PEMBANGUNAN SPAM E-MAIL FILTERING SYSTEM DENGAN METODE NAIVE

BAYESIAN 1

16 CLUSTERING DATA TRANSAKSI PENJUALAN MENGGUNAKAN GENETIC K-

MEANS ALGORITHM (GKA) 0

17 SISTEM INFORMASI GEOGRAFIS PEMETAAN PEMUKIMAN DI KAWASAN

TAMAN NASIONAL KOMODO 0

18 ANALISA DAN PERANCANGAN INTRUSION DETECTION SYSTEM (IDS) PADA

JARINGAN NIRKABEL STIKOM DINAMIKA BANGSA 0

19 SISTEM PAKAR UNTUK DIAGNOSIS PENYAKIT THT BERBASIS WEB DENGAN

"E2GLITE EXPERT SYSTEM SHELL" 0

Tabel 5.18. Hasil pencarian dengan query “klasifikasi” pada Sistem Pemerolehan Informasi Konvensional

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

13% 100%

20% 100%

27% 100%

33% 100%

40% 86%

47% 70%

53% 73%

60% 75%

67% 67%

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 95: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

72

Tabel 5.19. Penghitungan recall - precision terhadap query “klasifikasi” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.19. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 86%

50% 75%

60% 75%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.20. Interpolasi 11 titik recall precision terhadap query “klasifikasi” pada Sistem

Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.20. ditampilkan

dalam bentuk grafik sebagai berikut :

Gambar 5.6. Grafik interpolasi 11 titik recall precision terhadap query “klasifikasi” pada Sistem Pemerolehan Informasi Konvensional

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 96: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

73

5.1.2.4. Pencarian dengan query “sistem pendukung keputusan”

Kueri : sistem pendukung keputusan

Jumlah dokumen relevan dalam koleksi : 19

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.4.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 14

Jumlah dokumen relevan yang diperoleh : 14

Waktu eksekusi : 12,4743 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN LOKASI GUDANG DI

PERUSAHAAN DENGAN METODE WEIGHTED PRODUCT 1

2 SISTEM PENDUKUNG KEPUTUSAN DALAM PEMILIHAN ALTERNATIF ALAT

KONTRASEPSI MENGGUNAKAN SIMPLE ADDITIVE WEIGHTING 1

3 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN LOKASI BTS MENGGUNAKAN

METODE PROMETHEE 1

4 SISTEM PENDUKUNG KEPUTUSAN PENILAIAN KINERJA DOSEN MENGGUNAKAN

METODE FUZZY SAW (STUDI KASUS UNIVERSITAS POTENSI UTAMA) 1

5 SISTEM PENDUKUNG KEPUTUSAN KELAYAKAN TKI KE LUAR NEGERI

MENGGUNAKAN FMADM 1

6 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MAHASISWA BERPRESTASI

JURUSAN TEKNIK INFORMATIKA MENGGUNAKAN MODEL USE CASE 1

7 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN KAMERA DIGITAL SINGLE-LENS

REFLEX (DSLR) 1

8

SISTEM PENDUKUNG KEPUTUSAN PENENTUAN KELAYAKAN CALON RINTISAN

SEKOLAH BERTARAF INTERNASIONAL DENGAN METODE FUZZY ASSOCIATIVE

MEMORY

1

9 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN ANGGOTA SENAT

MAHASISWA UNIVERSITAS KLABAT MENGGUNAKAN METODE AHP 1

10 SISTEM PENDUKUNG KEPUTUSAN UNTUK PEMILIHAN PROGRAM STUDI

DENGAN METODE AHP 1

11

ANALISIS DAN PERANCANGAN SISTEM PENDUKUNG KEPUTUSAN UNTUK

PENENTUAN JALUR KELOMPOK KEAHLIAN MENGGUNAKAN MODEL SIMPLE

ADDITIVE WEIGHTING (SAW)

1

12 PEMILIHAN SEPEDA MOTOR SECOND DENGAN METODE Analytical Hierarchy

Process (AHP) ( STUDI KASUS : PT. XYZ ) 1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 97: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

74

13

SISTEM PENUNJANG KEPUTUSAN PEMILIHAN PERANGKAT PEMROSESAN DATA

MENGGUNAKAN METODE ANALYTICAL HIERARCHY PROCESS (AHP) DAN

MULTI-CRITERIA DECISION MAKING (MCDM)

1

14 SISTEM PENUNJANG KEPUTUSAN PENILAIAN HASIL KERJA UNTUK

PENEMPATAN SDM BERKUALITAS 1

Tabel 5.21. Hasil pencarian dengan query “sistem pendukung keputusan” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

5% 100%

11% 100%

16% 100%

21% 100%

26% 100%

32% 100%

37% 100%

42% 100%

47% 100%

53% 100%

58% 100%

63% 100%

68% 100%

74% 100%

Tabel 5.22. Penghitungan recall - precision terhadap query “sistem pendukung keputusan” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.22. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 100%

80% 0%

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 98: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

75

90% 0%

100% 0%

Tabel 5.23. Interpolasi 11 titik recall precision terhadap query “sistem pendukung keputusan” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.23. ditampilkan

dalam bentuk grafik sebagai berikut :

Gambar 5.7. Grafik interpolasi 11 titik recall precision terhadap query “sistem pendukung keputusan” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.4.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 26

Jumlah dokumen relevan yang diperoleh : 18

Waktu eksekusi : 15,4405 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN LOKASI GUDANG DI

PERUSAHAAN DENGAN METODE WEIGHTED PRODUCT 1

2 PERANCANGAN SISTEM PENDUKUNG PENGAMBILAN KEPUTUSAN UNTUK

PENERIMAAN BEASISWA DENGAN METODE SAW (SIMPLE ADDITIVE 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 99: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

76

WEIGHTING)

3 SISTEM PENDUKUNG KEPUTUSAN DALAM PEMILIHAN ALTERNATIF ALAT

KONTRASEPSI MENGGUNAKAN SIMPLE ADDITIVE WEIGHTING 1

4 SISTEM PENDUKUNG KEPUTUSAN MENENTUKAN JENIS USAHA DI BIDANG

FOOD AND BEVERAGE 1

5 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN LOKASI BTS MENGGUNAKAN

METODE PROMETHEE 1

6 SISTEM PENDUKUNG KEPUTUSAN PENILAIAN KINERJA DOSEN MENGGUNAKAN

METODE FUZZY SAW (STUDI KASUS UNIVERSITAS POTENSI UTAMA) 1

7 SISTEM PENDUKUNG KEPUTUSAN KELAYAKAN TKI KE LUAR NEGERI

MENGGUNAKAN FMADM 1

8 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MAHASISWA BERPRESTASI

JURUSAN TEKNIK INFORMATIKA MENGGUNAKAN MODEL USE CASE 1

9 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN KAMERA DIGITAL SINGLE-LENS

REFLEX (DSLR) 1

10

SISTEM PENDUKUNG KEPUTUSAN PENENTUAN KELAYAKAN CALON RINTISAN

SEKOLAH BERTARAF INTERNASIONAL DENGAN METODE FUZZY ASSOCIATIVE

MEMORY

1

11 SISTEM PENDUKUNG KEPUTUSAN UNTUK IDENTIFIKASI STATUS KELUARGA

MISKIN MENGGUNAKAN METODE NAIVE BAYES CLASSIFIER 1

12 SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN ANGGOTA SENAT

MAHASISWA UNIVERSITAS KLABAT MENGGUNAKAN METODE AHP 1

13 SISTEM PENDUKUNG KEPUTUSAN UNTUK PEMILIHAN PROGRAM STUDI

DENGAN METODE AHP 1

14

ANALISIS DAN PERANCANGAN SISTEM PENDUKUNG KEPUTUSAN UNTUK

PENENTUAN JALUR KELOMPOK KEAHLIAN MENGGUNAKAN MODEL SIMPLE

ADDITIVE WEIGHTING (SAW)

1

15 PEMILIHAN SEPEDA MOTOR SECOND DENGAN METODE Analytical Hierarchy

Process (AHP) ( STUDI KASUS : PT. XYZ ) 1

16

SISTEM PENUNJANG KEPUTUSAN PEMILIHAN PERANGKAT PEMROSESAN DATA

MENGGUNAKAN METODE ANALYTICAL HIERARCHY PROCESS (AHP) DAN

MULTI-CRITERIA DECISION MAKING (MCDM)

1

17 SISTEM PENUNJANG KEPUTUSAN PENILAIAN HASIL KERJA UNTUK

PENEMPATAN SDM BERKUALITAS 1

18 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN PROGRAM STUDI BAGI SISWA

SMA 1

19 SISTEM INFORMASI GEOGRAFIS PEMERATAAN PENDIDIKAN UNTUK WAJIB

BELAJAR 9 TAHUN DI GUNUNG KIDUL 0

20

PENERAPAN DATA MINING DENGAN METODE INTERPOLASI UNTUK

MEMPREDIKSI MINAT KONSUMEN ASURANSI (STUDI KASUS ASURANSI

METLIFE)

0

21 SISTEM INFORMASI GEOGRAFIS PENYEBARAN PENDUDUK BERDASARKAN

TINGKAT USIA DI KABUPATEN SLEMAN BERBASIS WEB 0

22 PENERAPAN DATA MINING MENGGUNAKAN ALGORITMA ASSOCIATION RULES

UNTUK MEMPREDIKSI PILIHAN PROGRAM STUDI DI SEKOLAH TINGGI XYZ 0

23 SISTEM PAKAR UNTUK MENDIAGNOSA PENYAKIT DIABETES MELLITUS

BERBASIS MOBILE 0

24 IMPLEMENTASI DATA MINING PADA PENJUALAN TIKET PESAWAT

MENGGUNAKAN ALGORITMA APRIORI (Studi Kasus: Jumbo Travel Medan) 0

25 PENGEMBANGAN APLIKASI SISTEM INFORMASI SEKOLAH SEBAGAI SISTEM

INFORMASI EKSEKUTIF 0

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 100: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

77

26 PEMODELAN SISTEM PAKAR DIAGNOSIS PENENTUAN LEVEL SAKIT ASMA

DENGAN METODE FUZZY MAMDANI 0

Tabel 5.24. Hasil pencarian dengan query “sistem pendukung keputusan” pada Sistem Pemerolehan Informasi Konvensional

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

5% 100%

11% 100%

16% 100%

21% 100%

26% 100%

32% 100%

37% 100%

42% 100%

47% 100%

53% 100%

58% 100%

63% 100%

68% 100%

74% 100%

79% 100%

84% 100%

89% 100%

95% 100%

Tabel 5.25. Penghitungan recall - precision terhadap query “sistem pendukung keputusan” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 100%

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 101: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

78

80% 100%

90% 100%

100% 0%

Tabel 5.26. Interpolasi 11 titik recall precision terhadap query “sistem pendukung keputusan” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

Gambar 5.8. Grafik interpolasi 11 titik recall precision terhadap query “sistem pendukung

keputusan” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.5. Pencarian dengan query “jaringan komputer”

Kueri : jaringan komputer

Jumlah dokumen relevan : 14

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.5.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 1

Jumlah dokumen relevan yang diperoleh : 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 102: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

79

Waktu eksekusi : 12,2814 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 IMPLEMENTASI ROUTING PROTOCOL OPEN SHORTEST PATH FIRST(OSPF) PADA

MODEL TOPOLOGY RING

1

Tabel 5.27. Hasil pencarian dengan query “jaringan komputer” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

Tabel 5.28. Penghitungan recall - precision terhadap query “jaringan komputer” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.10. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 0%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.29. Interpolasi 11 titik recall precision terhadap query “jaringan komputer” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.11. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 103: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

80

Gambar 5.9. Grafik interpolasi 11 titik recall precision terhadap query “jaringan komputer” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.5.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 15

Jumlah dokumen relevan yang diperoleh : 8

Waktu eksekusi : 14,9437 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1

PENGEMBANGAN JARINGAN KOMPUTER UNIVERSITAS SURAKARTA

BERDASARKAN PERBANDINGAN PROTOKOL ROUTING INFORMATION

PROTOKOL (RIP) DAN PROTOKOL OPEN SHORTEST PATH FIRST (OSPF)

1

2 ANALISA DAN PERANCANGAN INTRUSION DETECTION SYSTEM (IDS) PADA

JARINGAN NIRKABEL STIKOM DINAMIKA BANGSA 1

3 PERBANDINGAN PERFORMANCE JARINGAN IPV6 NATIVE DENGAN TUNNELING

TEREDO (6 to 4) 1

4 IMPLEMENTASI ROUTING PROTOCOL OPEN SHORTEST PATH FIRST(OSPF) PADA

MODEL TOPOLOGY RING 1

5 ANALISA QOS JARINGAN WIRELESS MODE AD HOC YANG

MENGIMPLEMENTASIKAN PROTOKOL ZRP 1

6 ONE-WAY DELAY VOIP PADA JARINGAN WIRELESS INTRANET 1

7 PERANCANGAN PROTOTYPE JARINGAN IPv6 MENGGUNAKAN MIKROTIK

ROUTER OS PADA PTS XYZ 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 104: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

81

8 SISTEM INFORMASI GEOGRAFIS JARINGAN PIPA STUDI KASUS: PDAM KOTA

BANDUNG 0

9 KEAMANAN DATA PADA JARINGAN WIMAX MENGGUNAKAN ALGORITMA

ADVANCE ENCRYPTION STANDARD RIJNDAEL 256 BIT 1

10 SISTEM INFORMASI PEMANTAUAN CUACA BERBASIS JARINGAN TELEPON

SELULER 0

11 SISTEM PAKAR UNTUK MENGIDENTIFIKASI PENYAKIT INFEKSI BAKTERI DAN

VIRUS 0

12 SISTEM PENDUKUNG KEPUTUSAN PENENTUAN LOKASI BTS MENGGUNAKAN

METODE PROMETHEE 0

13 SISTEM PAKAR MENDIAGNOSA PENYAKIT PADA MANUSIA DENGAN

PENALARAN BERBASIS ATURAN (RULE-BASED REASONING) 0

14

PERANCANGAN SISTEM PENDUKUNG PENGAMBILAN KEPUTUSAN UNTUK

PENERIMAAN BEASISWA DENGAN METODE SAW (SIMPLE ADDITIVE

WEIGHTING)

0

15 SISTEM INFORMASI MANAJEMEN DEMOGRAFI KABUPATEN TRENGGALEK 0

Tabel 5.30. Hasil pencarian dengan query “jaringan komputer” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

14% 100%

21% 100%

29% 100%

36% 100%

43% 100%

50% 100%

57% 89%

Tabel 5.31. Penghitungan recall - precision terhadap query “jaringan komputer” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 105: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

82

50% 100%

60% 0%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.32. Interpolasi 11 titik recall precision terhadap query “jaringan komputer” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

Gambar 5.10. Grafik interpolasi 11 titik recall precision terhadap query “jaringan komputer” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.6. Pencarian dengan query “data mining menggunakan k-means”

Kueri : data mining menggunakan

k-means

Jumlah dokumen relevan dalam koleksi : 3

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.6.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 106: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

83

Jumlah dokumen relevan yang diperoleh : 1

Waktu eksekusi : 13,5197 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 OPTIMASI PEMILIHAN SEEDS ALGORITMA K-MEANS PADA PENGELOMPOKAN

DOKUMEN BERBAHASA INGGRIS 1

Tabel 5.33. Hasil pencarian dengan query “data mining menggunakan k-means” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

33% 100%

Tabel 5.34. Penghitungan recall - precision terhadap query “data mining menggunakan k-means” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.10. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 0%

50% 0%

60% 0%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.35. Interpolasi 11 titik recall precision terhadap query “data mining menggunakan k-

means” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.11. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 107: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

84

Gambar 5.11. Grafik interpolasi 11 titik recall precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.6.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 3

Jumlah dokumen relevan yang diperoleh : 2

Waktu eksekusi : 14,7423 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 PERBANDINGAN PARTITION AROUND MEDOIDS (PAM) DAN K-MEANS

CLUSTERING UNTUK TWEETS 1

2 OPTIMASI PEMILIHAN SEEDS ALGORITMA K-MEANS PADA PENGELOMPOKAN

DOKUMEN BERBAHASA INGGRIS 1

3 PENERAPAN DATA MINING UNTUK EVALUASI KINERJA AKADEMIK MAHASISWA

MENGGUNAKAN ALGORITMA NAIVE BAYES CLASSIFIER 0

Tabel 5.36. Hasil pencarian dengan query “data mining menggunakan k-means” pada Sistem Pemerolehan Informasi Konvensional

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 108: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

85

RECALL PRECISION

0% 100%

33% 100%

67% 100%

Tabel 5.37. Penghitungan recall - precision terhadap query “data mining menggunakan k-means” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.38. Interpolasi 11 titik recall precision terhadap query “data mining menggunakan k-

means” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 109: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

86

Gambar 5.12. Grafik interpolasi 11 titik recall precision terhadap query “data mining menggunakan k-means” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.7. Pencarian dengan query “kesehatan manusia”

Kueri : kesehatan manusia

Jumlah dokumen relevan : 14

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.7.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 5

Jumlah dokumen relevan yang diperoleh : 4

Waktu eksekusi : 12,6810 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 PENERAPAN METODE FORWARD CHAINING DAN TEOREMA BAYES PADA

SISTEM PAKAR DIAGNOSA PENYAKIT TULANG 1

2 SISTEM PAKAR MENDIAGNOSA PENYAKIT PADA MANUSIA DENGAN

PENALARAN BERBASIS ATURAN (RULE-BASED REASONING) 1

3 APLIKASI SISTEM PAKAR DIAGNOSA PENYAKIT GINJAL DENGAN METODE

DEMPSTER-SHAFER 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 110: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

87

4 SISTEM PAKAR UNTUK DIAGNOSIS PENYAKIT AYAM YANG DISEBABKAN OLEH

VIRUS 0

5 SISTEM PAKAR PENGOBATAN REFLEKSOLOGI 1

Tabel 5.39. Hasil pencarian dengan query “kesehatan manusia” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

14% 100%

21% 100%

29% 80%

Tabel 5.40. Penghitungan recall - precision terhadap query “kesehatan manusia” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.10. ditampilkan pada tabel berikut ini :

RECALL PRECISION

100% 100%

100% 100%

100% 100%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

Tabel 5.41. Interpolasi 11 titik recall precision terhadap query “kesehatan manusia” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.11. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 111: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

88

Gambar 5.13. Grafik interpolasi 11 titik recall precision terhadap query “kesehatan manusia” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.7.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 5

Jumlah dokumen relevan yang diperoleh : 4

Waktu eksekusi : 14,9348 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 PENERAPAN METODE FORWARD CHAINING DAN TEOREMA BAYES PADA

SISTEM PAKAR DIAGNOSA PENYAKIT TULANG 1

2 SISTEM PAKAR MENDIAGNOSA PENYAKIT PADA MANUSIA DENGAN

PENALARAN BERBASIS ATURAN (RULE-BASED REASONING) 1

3 APLIKASI SISTEM PAKAR DIAGNOSA PENYAKIT GINJAL DENGAN METODE

DEMPSTER-SHAFER 1

4 SISTEM PAKAR UNTUK DIAGNOSIS PENYAKIT AYAM YANG DISEBABKAN OLEH

VIRUS 0

5 SISTEM PAKAR PENGOBATAN REFLEKSOLOGI 1

Tabel 5.42. Hasil pencarian dengan query “kesehatan manusia” pada Sistem Pemerolehan Informasi Konvensional

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 112: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

89

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

7% 100%

14% 100%

21% 100%

29% 80%

Tabel 5.43. Penghitungan recall - precision terhadap query “kesehatan manusia” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

100% 100%

100% 100%

100% 100%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

0% 0%

Tabel 5.44. Interpolasi 11 titik recall precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 113: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

90

Gambar 5.14. Grafik interpolasi 11 titik recall precision terhadap query “naïve bayes” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.8. Pencarian dengan query “diagnosa penyakit”

Kueri : diagnosa penyakit

Jumlah dokumen relevan : 13

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.8.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 1

Jumlah dokumen relevan yang diperoleh : 1

Waktu eksekusi : 12,2554 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 SISTEM PAKAR PENDIAGNOSA PENYAKIT ANAK MENGGUNAKAN CERTAINTY

FACTOR (CF) 1

Tabel 5.45. Hasil pencarian dengan query “diagnosa penyakit” pada Sistem Pemerolehan Informasi berbasis Cluster

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 114: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

91

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

8% 100%

Tabel 5.46. Penghitungan recall - precision terhadap query “diagnosa penyakit” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.10. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 0%

20% 0%

30% 0%

40% 0%

50% 0%

60% 0%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.47. Interpolasi 11 titik recall precision terhadap query “diagnosa penyakit” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.11. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 115: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

92

Gambar 5.15. Grafik interpolasi 11 titik recall precision terhadap query “diagnosa penyakit” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.8.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 8

Jumlah dokumen relevan yang diperoleh : 8

Waktu eksekusi :15,1375 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 APLIKASI SISTEM PAKAR DIAGNOSA PENYAKIT GINJAL DENGAN METODE

DEMPSTER-SHAFER 1

2 SISTEM PAKAR PENDIAGNOSA PENYAKIT ANAK MENGGUNAKAN CERTAINTY

FACTOR (CF) 1

3 SISTEM PAKAR UNTUK MENDIAGNOSA PENYAKIT DIABETES MELLITUS

BERBASIS MOBILE 1

4 PERANCANGAN SISTEM PAKAR PENYAKIT PARU-PARU MENGGUNAKAN

METODE VCIRS 1

5 SISTEM PAKAR DIAGNOSA PENYAKIT TANAMAN PADI UNTUK MENINGKATKAN

HASIL PANEN 1

6 SISTEM PAKAR MENDIAGNOSA PENYAKIT PADA MANUSIA DENGAN

PENALARAN BERBASIS ATURAN (RULE-BASED REASONING) 1

7 SISTEM PAKAR UNTUK MENDIAGNOSA PENYAKIT TELINGA HIDUNG

TENGGOROKAN PADA MANUSIA 1

8 PENERAPAN METODE FORWARD CHAINING DAN TEOREMA BAYES PADA 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 116: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

93

SISTEM PAKAR DIAGNOSA PENYAKIT TULANG

Tabel 5.48. Hasil pencarian dengan query “diagnosa penyakit” pada Sistem Pemerolehan Informasi Konvensional

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

8% 100%

15% 100%

23% 100%

31% 100%

38% 100%

46% 100%

54% 100%

62% 100%

Tabel 5.49. Penghitungan recall - precision terhadap query “diagnosa penyakit” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.50. Interpolasi 11 titik recall precision terhadap query “diagnosa penyakit” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 117: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

94

Gambar 5.16. Grafik interpolasi 11 titik recall precision terhadap query “diagnosa penyakit” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.9. Pencarian dengan query “tcp udp”

Kueri : tcp udp

Jumlah dokumen relevan : 2

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.9.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi berbasis

Cluster

Jumlah dokumen yang diperoleh : 4

Jumlah dokumen relevan yang diperoleh : 2

Waktu eksekusi : 12,0591 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1

PENGEMBANGAN JARINGAN KOMPUTER UNIVERSITAS SURAKARTA

BERDASARKAN PERBANDINGAN PROTOKOL ROUTING INFORMATION

PROTOKOL (RIP) DAN PROTOKOL OPEN SHORTEST PATH FIRST (OSPF)

0

2 PERBANDINGAN PERFORMANCE JARINGAN IPV6 NATIVE DENGAN TUNNELING

TEREDO (6 to 4) 1

3 PERANCANGAN PROTOTYPE JARINGAN IPv6 MENGGUNAKAN MIKROTIK 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 118: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

95

ROUTER OS PADA PTS XYZ

4 ANALISIS PERBANDINGAN PERFORMANSI REACTIVE ROUTING PROTOKOL

AODV DAN DSR PADA JARINGAN AD HOC 0

Tabel 5.51. Hasil pencarian dengan query “tcp udp” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 0%

50% 50%

100% 67%

Tabel 5.52. Penghitungan recall - precision terhadap query “tcp udp” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.10. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 67%

10% 67%

20% 67%

30% 67%

40% 67%

50% 67%

60% 67%

70% 67%

80% 67%

90% 67%

100% 67%

Tabel 5.53. Interpolasi 11 titik recall precision terhadap query “tcp udp” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.11. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 119: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

96

Gambar 5.17. Grafik interpolasi 11 titik recall precision terhadap query “tcp udp” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.9.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 4

Jumlah dokumen relevan yang diperoleh : 2

Waktu eksekusi : 14,7241 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1

PENGEMBANGAN JARINGAN KOMPUTER UNIVERSITAS SURAKARTA

BERDASARKAN PERBANDINGAN PROTOKOL ROUTING INFORMATION

PROTOKOL (RIP) DAN PROTOKOL OPEN SHORTEST PATH FIRST (OSPF)

0

2 PERBANDINGAN PERFORMANCE JARINGAN IPV6 NATIVE DENGAN TUNNELING

TEREDO (6 to 4) 1

3 PERANCANGAN PROTOTYPE JARINGAN IPv6 MENGGUNAKAN MIKROTIK

ROUTER OS PADA PTS XYZ 1

4 ANALISIS PERBANDINGAN PERFORMANSI REACTIVE ROUTING PROTOKOL

AODV DAN DSR PADA JARINGAN AD HOC 0

Tabel 5.54. Hasil pencarian dengan query “tcp udp” pada Sistem Pemerolehan Informasi Konvensional

0%

10%

20%

30%

40%

50%

60%

70%

80%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 120: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

97

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

50% 50%

100% 67%

Tabel 5.55. Penghitungan recall - precision terhadap query “tcp udp” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 67%

70% 67%

80% 67%

90% 67%

100% 67%

Tabel 5.56. Interpolasi 11 titik recall precision terhadap query “tcp udp” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 121: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

98

Gambar 5.18. Grafik interpolasi 11 titik recall precision terhadap query “tcp udp” pada Sistem Pemerolehan Informasi Konvensional

5.1.2.10. Pencarian dengan query “wireless”

Kueri : wireless

Jumlah dokumen relevan : 6

Jumlah seluruh dokumen dalam koleksi : 100

5.1.2.10.1. Hasil Pencarian dengan Sistem Pemerolehan Informasi

berbasis Cluster

Jumlah dokumen yang diperoleh : 6

Jumlah dokumen relevan yang diperoleh : 4

Waktu eksekusi : 12,7906 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 ANALISIS KELAYAKAN PENGGUNAAN PROTOKOL WIRELESS UNTUK TRANSIMISI

DATA PADA WIRELESS BODY AREA NETWORK (WBAN) 1

2 ONE-WAY DELAY VOIP PADA JARINGAN WIRELESS INTRANET 1

3 ANALISA QOS JARINGAN WIRELESS MODE AD HOC YANG

MENGIMPLEMENTASIKAN PROTOKOL ZRP 1

4 OPTIMASI ROUTING PADA JARINGAN MANET MENGGUNAKAN MEDSR DAN 1

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 122: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

99

LET

5 ANALISIS PERBANDINGAN PERFORMANSI REACTIVE ROUTING PROTOKOL

AODV DAN DSR PADA JARINGAN AD HOC 0

6 PERANCANGAN PROTOTYPE JARINGAN IPv6 MENGGUNAKAN MIKROTIK

ROUTER OS PADA PTS XYZ 0

Tabel 5.57. Hasil pencarian dengan query “wireless” pada Sistem Pemerolehan Informasi berbasis Cluster

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi berbasis cluster ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

17% 100%

33% 100%

50% 100%

67% 100%

Tabel 5.58. Penghitungan recall - precision terhadap query “wireless” pada Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.10. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 0%

80% 0%

90% 0%

100% 0%

Tabel 5.59. Interpolasi 11 titik recall precision terhadap query “wireless” pada Sistem Pemerolehan Informasi berbasis Cluster

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.11. ditampilkan dalam

bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 123: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

100

Gambar 5.19. Grafik interpolasi 11 titik recall precision terhadap query “wireless” pada Sistem Pemerolehan Informasi berbasis Cluster

5.1.2.10.2. Hasil Pencarian dengan Sistem Pemerolehan Informasi

Konvensional

Jumlah dokumen yang diperoleh : 9

Jumlah dokumen relevan yang diperoleh : 5

Waktu eksekusi : 14,4841 detik

Hasil penentuan relevansi dari dokumen yang diperoleh adalah sebagai berikut :

NO DOKUMEN REL

1 ANALISIS KELAYAKAN PENGGUNAAN PROTOKOL WIRELESS UNTUK TRANSIMISI

DATA PADA WIRELESS BODY AREA NETWORK (WBAN) 1

2 ONE-WAY DELAY VOIP PADA JARINGAN WIRELESS INTRANET 1

3 ANALISA QOS JARINGAN WIRELESS MODE AD HOC YANG

MENGIMPLEMENTASIKAN PROTOKOL ZRP 1

4 OPTIMASI ROUTING PADA JARINGAN MANET MENGGUNAKAN MEDSR DAN

LET 1

5 KEAMANAN DATA PADA JARINGAN WIMAX MENGGUNAKAN ALGORITMA

ADVANCE ENCRYPTION STANDARD RIJNDAEL 256 BIT 1

6 ANALISIS PERBANDINGAN PERFORMANSI REACTIVE ROUTING PROTOKOL

AODV DAN DSR PADA JARINGAN AD HOC 0

7 IMPLEMENTASI PROTOKOL ROUTING JARINGAN AD HOC MULTIUSER PADA

GATEWAY UNTUK SISTEM KOMUNIKASI KAPAL LAUT 0

8 ANALISIS DAN PERBANDINGAN KINERJA DARI QOS MANAJEMEN PADA IP 0

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 124: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

101

MULTIMEDIA SUBSYSTEM (IMS): MENGGUNAKAN INTSERV DAN DIFFSERV

MODEL

9 PERANCANGAN PROTOTYPE JARINGAN IPv6 MENGGUNAKAN MIKROTIK

ROUTER OS PADA PTS XYZ 0

Tabel 5.60. Hasil pencarian dengan query “wireless” pada Sistem Pemerolehan Informasi Konvensional

Dari hasil penentuan relevansi tersebut, nilai recall dan precision dari sistem

pemerolehan informasi konvensional ditentukan sebagai berikut :

RECALL PRECISION

0% 100%

17% 100%

33% 100%

50% 100%

67% 100%

83% 100%

Tabel 5.61. Penghitungan recall - precision terhadap query “wireless” pada Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari penghitungan recall – precision pada

Tabel 5.13. ditampilkan pada tabel berikut ini :

RECALL PRECISION

0% 100%

10% 100%

20% 100%

30% 100%

40% 100%

50% 100%

60% 100%

70% 100%

80% 100%

90% 0%

100% 0%

Tabel 5.62. Interpolasi 11 titik recall precision terhadap query “wireless” pada Sistem Pemerolehan Informasi Konvensional

Visualisasi interpolasi 11 titik recall precision pada Tabel 5.14. ditampilkan

dalam bentuk grafik sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 125: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

102

Gambar 5.20. Grafik interpolasi 11 titik recall precision terhadap query “wireless” pada Sistem Pemerolehan Informasi Konvensional

5.2. Pembahasan

5.2.1. Rerata Interpolasi 11 Titik Recall – Precision

Hasil percobaan tersebut diatas dapat dirangkum dalam tabel berikut ini :

5.2.1.1. Sistem Pemerolehan Informasi berbasis Cluster

Interpolasi 11 titik recall precision dari pengujian dengan 10 query pencarian

dengan menggunakan Sistem Pemerolehan Informasi berbasis Cluster disajikan

dalam tabel berikut ini :

RECALL QUERY

AVERAGE 1 2 3 4 5 6 7 8 9 10

0% 100% 100% 100% 100% 100% 100% 100% 100% 67% 100% 97%

10% 100% 100% 100% 100% 100% 100% 100% 0% 67% 100% 87%

20% 100% 100% 100% 100% 100% 100% 100% 0% 67% 100% 87%

30% 100% 0% 100% 100% 100% 100% 0% 0% 67% 100% 67%

40% 100% 0% 100% 100% 100% 0% 0% 0% 67% 100% 57%

50% 100% 0% 0% 100% 100% 0% 0% 0% 67% 100% 47%

60% 100% 0% 0% 100% 0% 0% 0% 0% 67% 100% 37%

70% 100% 0% 0% 100% 0% 0% 0% 0% 67% 0% 27%

80% 0% 0% 0% 0% 0% 0% 0% 0% 67% 0% 7%

90% 0% 0% 0% 0% 0% 0% 0% 0% 67% 0% 7%

Tabel 5.63. Interpolasi 11 titik recall precision dari pengujian dengan 10 query pencarian dengan

menggunakan Sistem Pemerolehan Informasi berbasis Cluster

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 126: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

103

5.2.1.2. Sistem Pemerolehan Informasi Konvensional

Interpolasi 11 titik recall precision dari pengujian dengan 10 query pencarian

dengan menggunakan Sistem Pemerolehan Informasi Konvensional disajikan

dalam tabel berikut ini:

RECALL QUERY

AVERAGE 1 2 3 4 5 6 7 8 9 10

0% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%

10% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%

20% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%

30% 100% 100% 100% 100% 100% 100% 0% 100% 100% 100% 90%

40% 100% 100% 86% 100% 100% 100% 0% 100% 100% 100% 89%

50% 100% 100% 75% 100% 100% 100% 0% 100% 100% 100% 88%

60% 93% 100% 75% 100% 0% 100% 0% 100% 67% 100% 74%

70% 93% 100% 0% 100% 0% 0% 0% 0% 67% 100% 46%

80% 93% 100% 0% 100% 0% 0% 0% 0% 67% 100% 46%

90% 93% 100% 0% 100% 0% 0% 0% 0% 67% 0% 36%

Tabel 5.64. Interpolasi 11 titik recall precision dari pengujian dengan 10 query pencarian dengan

menggunakan Sistem Pemerolehan Informasi Konvensional

Dari tabel tersebut, rata-rata interpolasi 11 titik recall - precision dari kedua

sistem dapat ditemukan. Hasilnya disajikan dalam tabel berikut :

RECALL BERBASIS CLUSTER KONVENSIONAL

0% 97% 100%

10% 87% 100%

20% 87% 100%

30% 67% 90%

40% 57% 89%

50% 47% 88%

60% 37% 74%

70% 27% 46%

80% 7% 46%

90% 7% 36%

100% 7% 17%

AVE 48% 71%

Tabel 5.65. Rata-rata interpolasi 11 titik recall precision dari pengujian dengan 10 query pencarian

dari kedua sistem

Dari penghitungan average precision tersebut, diketahui bahwa Sistem

Pemerolehan Informasi Konvensional memiliki precision yang lebih baik

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 127: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

104

dibandingkan dengan Sistem Pemerolehan Informasi berbasis Cluster.

Visualisasinya adalah sebagai berikut :

Gambar 5.21. Grafik rerata interpolasi 11 titik recall precision kedua jenis sistem

Dengan melihat luasan bidang dibawah grafik, dapat disimpulkan bahwa sistem

pemerolehan informasi konvensional memiliki average precision yang lebih baik.

Dalam penelitian ini, sistem pemerolehan informasi berbasis cluster memiliki

precision yang lebih rendah dibandingkan dengan sistem pemerolehan informasi

konvensional dikarenakan dua hal, yaitu :

Pemodelan cluster menggunakan jenis pemodelan hard clustering, dimana

satu dokumen hanya bisa menempati satu cluster saja dan tidak bisa menjadi

anggota cluster yang lain.

Retrieval dibatasi dengan pengambilan satu cluster saja yang paling mirip

dengan query. Hal ini menyebabkan beberapa dokumen relevan yang terdapat

pada cluster lain tidak diretrieve oleh sistem, sehingga menurunkan nilai

precision.

0%

20%

40%

60%

80%

100%

120%

0% 20% 40% 60% 80% 100% 120%

Berbasis Cluster Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 128: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

105

5.2.2. Waktu Eksekusi

Sementara itu, hasil penghitungan rerata waktu eksekusi dalam satuan detik dari

kedua sistem ditampilkan sebagai berikut :

QUERY BERBASIS CLUSTER (s) KONVENSIONAL (s)

1 13.3721 18.5425

2 13.3514 16.0667

3 14.0447 14.5661

4 12.4743 15.4405

5 12.2814 14.9437

6 13.5197 14.7423

7 12.681 14.9348

8 12.2554 15.1375

9 12.0591 14.7241

10 12.7906 14.4841

AVE 12.88297 15.35823

Tabel 5.66. Hasil penghitungan rerata waktu eksekusi dalam satuan detik dari kedua sistem

Visualisasi data waktu retrieval kedua sistem tersebut divisualisasikan dalam

kedua grafik berikut ini :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 129: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

106

Gambar 5.22 Grafik rerata waktu retrieval kedua jenis sistem (1)

Gambar 5.23. Grafik rerata waktu retrieval kedua jenis sistem (2)

- 5.0000 10.0000 15.0000 20.0000

1

2

3

4

5

6

7

8

9

10

Waktu (ms)

Qu

ery

Waktu Eksekusi

Konvensional

Berbasis Cluster

-

2.0000

4.0000

6.0000

8.0000

10.0000

12.0000

14.0000

16.0000

18.0000

20.0000

0 2 4 6 8 10 12

Wa

ktu

(m

s)

Query

Waktu Eksekusi

Berbasis Cluster Konvensional

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 130: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

107

Dari grafik tersebut, terlihat sistem pemerolehan informasi berbasis cluster

memiliki waktu eksekusi yang lebih baik dibandingkan dengan sistem

pemerolehan informasi konvensional.

Dalam penelitian ini, sistem pemerolehan informasi berbasis cluster memiliki

waktu eksekusi yang lebih singkat dibandingkan dengan sistem pemerolehan

informasi konvensional. Hal ini terjadi karena sistem tidak perlu membaca dan

memberikan bobot kepada seluruh dokumen yang terdapat dalam koleksi,

melainkan hanya pada dokumen anggota cluster yang paling mirip dengan query

pencarian.

5.3. Kelebihan dan Kekurangan Sistem

Dengan membandingkan presisi pencarian terhadap sistem pemerolehan informasi

konvensional, didapatkan beberapa kekurangan dan kelebihan dari sistem

pemerolehan informasi berbasis cluster, antara lain sebagai berikut :

5.3.1. Kelebihan Sistem

Sistem pemerolehan informasi berbasis cluster memiliki kecepatan

retrieval yang lebih cepat dibandingkan dengan sistem pemerolehan

informasi konvensional. Hal ini dimungkinkan karena sistem tidak perlu

menghitung skor seluruh dokumen koleksi terhadap query. Hanya

dokumen anggota cluster yang memiliki skor terbesar terhadap query saja

yang diperhitungkan.

5.3.2. Kekurangan Sistem

Sebagai tradeoff terhadap kecepatan retrieval yang lebih baik,

sistem pemerolehan informasi berbasis cluster memiliki precision yang

lebih rendah dibandingkan dengan sistem pemerolehan informasi

konvensional. Hal ini dikarenakan pemodelan cluster menggunakan jenis

pemodelan hard clustering, dimana satu dokumen hanya bisa menempati

satu cluster, dan retrieval pun hanya dibatasi dengan pengambilan satu

cluster saja yang paling mirip dengan query.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 131: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

108

BAB VI

KESIMPULAN DAN SARAN

6.1. Kesimpulan

1. Purity dari pengelompokan dokumen dalam sistem ini sebesar 0.75 atau

75%. Dengan melihat nilai purity tersebut, dapat disimpulkan bahwa hasil

pengelompokan dokumen yang dilakukan oleh sistem menghasilkan

kualitas cluster sedang.

2. Dalam penelitian ini, diketahui bahwa sistem pemerolehan informasi

berbasis cluster cenderung memiliki waktu retrieval yang lebih singkat

dibandingkan dengan sistem pemerolehan informasi konvensional, yaitu

16.3% lebih singkat. Sebagai tradeoff, sistem pemerolehan informasi

berbasis cluster memberikan hasil retrieval dengan nilai precision yang

lebih rendah, yaitu 47%, dibandingkan sistem pemerolehan informasi

konvensional, yaitu 71%.

6.2. Saran

1. Penggunaan pemodelan cluster dengan jenis soft clustering dapat dicoba

untuk kasus pengelompokan dokumen. Pengubahan yang dapat dilakukan

antara lain mengganti algoritma dari G-Means ke Fuzzy c-Means Clustering

(FCM).

2. Reduksi dimensi dengan feature selection juga dimungkinkan dapat

meningkatkan hasil dan kualitas cluster.

3. Untuk inisialisasi centroid awal, dapat dicoba penggunaan algoritma

inisialisasi centroid seperti k-Means++ agar menghasilkan cluster yang lebih

baik.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 132: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

109

DAFTAR PUSTAKA

Agusta, Ledy. 2009. Perbandingan Algoritma Porter dengan Algoritma Nazief &

Adriani untuk Stemming Dokumen Teks Bahasa Indonesia. Bali: KNSI

2009.

Baeza-Yates, R., Ribeiro-Neto, B. 1999. Modern Information Retrieval the

Concept and Technology Behind Search. England: ACM Press.

Booch, G., Rumbaugh, J., Jacobsen, I. 2005. The Unified Modeling Language

User Guide, 2nd

ed. Addison-Wesley.

Büttcher, Stefan., Clarke, L.A. Charles., Cormack, V. Gordon. 2010. Information

Retrieval Implementing and Evaluating Search Engine. Massachusetts: MIT

Press.

Chen, Berlin. 2010. Clustering Techniques for Information Retrieval. Taiwan:

National Taiwan Normal University.

Chen, Gengxin., Jaradat, Saied A., Banerjee, Nila., Tanaka, Tetsuya T., Ko,

Minoru S.H., Zhang, Michael Q. 2002. Evaluation and Comparison of

Clustering Algorithms in Analyzing ES Cell Gene Expression Data.

Baltimore: National Institute of Health

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 133: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

110

Connolly, Thomas., Begg, Carolyn E. 2005. Database Systems : A Practical

Aproach to Design, Implementation, and Management 4th

ed. New York:

Addison-Wesley.

Croft, Bruce W., Meltzer, Donald., Strohman, Trevor. 2010. Search Engines

Information Retrieval in Practice. Massachusetts: Amherst. Pearson

Education USA.

Göker, Ayşe., Davies, John. 2009. Information Retrieval Searching in 21st

Century. West Sussex: John Wiley & Sons.

Grossman, David A., Frieder, Ophir. 2004. Information Retrieval Algorithm and

Heuristics 2nd

ed. Dordrecht: Springer.

Hamerly, Greg., Elkan, Charles. 2004. Learning the k in k-means. Electronic

Proceeding of Advances in Neural Information Processing Systems 16

(NIPS 2004)

KOMPAS.com. 2016. Kemenristekdikti Nyatakan Indonesia Lampaui Target

Publikasi Internasional - Kompas.com. Diakses pada 7 Januari 2016, dari

http://sains.kompas.com/read/2015/10/30/16544281/Kemenristekdikti.Ny

atakan.Indonesia.Lampaui.Target.Publikasi.Internasional

Manning, Christoper D., Raghavan, Prabhakar., Schütze, Hinrich. 2008.

Introduction to Information Retrieval. New York: Cambridge University

Press.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 134: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

111

Pressman, Roger S. 2010. Software Engineering : A Practitioner’s Approach, 7th

ed. New York: McGraw-Hill.

Scimagojr.com,. 2016. SJR - International Science Ranking. Diakses pada 7

Januari 2016, dari http://scimagojr.com/countryrank.php

Yang, Yiming. Pedersen, Jan O. 1997. A Comparative Study on Feature Selection

in Text Categorization. ACM Digital Library.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 135: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

LAMPIRAN

1.1. Implementasi Basis Data

1.1.1. Tabel Cluster

1. CREATE TABLE `cluster` (

2. `id_cluster` int(11) NOT NULL AUTO_INCREMENT,

3. `uuid` varchar(100) NOT NULL,

4. PRIMARY KEY (`id_cluster`),

5. UNIQUE KEY `uuid_UNIQUE` (`uuid`)

6. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

1.1.2. Tabel Centroid

1. CREATE TABLE `centroid` (

2. `id_centroid` int(11) NOT NULL AUTO_INCREMENT,

3. `id_cluster` int(11) NOT NULL,

4. `id_term` int(11) NOT NULL,

5. `value` double NOT NULL DEFAULT '0',

6. PRIMARY KEY (`id_centroid`),

7. KEY `fk_centroid_1_idx` (`id_cluster`),

8. KEY `fk_centroid_2_idx` (`id_term`)

9. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

1.1.3. Tabel Document

1. CREATE TABLE `document` (

2. `id_document` int(11) NOT NULL AUTO_INCREMENT,

3. `id_cluster` int(11) NOT NULL,

4. `record_id` varchar(1000) NOT NULL,

5. PRIMARY KEY (`id_document`),

6. KEY `fk_document_1_idx` (`id_cluster`)

7. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

1.1.4. Tabel Term

1. CREATE TABLE `term` (

2. `id_term` int(11) NOT NULL AUTO_INCREMENT,

3. `term` varchar(512) NOT NULL,

4. PRIMARY KEY (`id_term`),

5. UNIQUE KEY `term_UNIQUE` (`term`)

6. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 136: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

1.1.5. Tabel Term_Document

1. CREATE TABLE `term_document` (

2. `id_term_document` int(11) NOT NULL AUTO_INCREMENT,

3. `id_document` int(11) NOT NULL,

4. `id_term` int(11) NOT NULL,

5. `tf` int(11) NOT NULL DEFAULT '0',

6. `w` double NOT NULL DEFAULT '0',

7. PRIMARY KEY (`id_term_document`),

8. KEY `fk_term_document_1_idx` (`id_document`),

9. KEY `fk_term_document_2_idx` (`id_term`)

10. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

1.1.6. Tabel Stopword

1. CREATE TABLE `stop_word` (

2. `id_stop_word` int(11) NOT NULL AUTO_INCREMENT,

3. `stop_word` varchar(45) DEFAULT NULL,

4. PRIMARY KEY (`id_stop_word`)

5. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

1.1.7. Tabel Rootword

1. CREATE TABLE `root_word` (

2. `word` varchar(25) NOT NULL,

3. `wordtype` varchar(20) NOT NULL,

4. `definition` text NOT NULL

5. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

1.2. Implementasi Sistem Pemerolehan Informasi Berbasis Cluster

1.2.1. Source Code

1.2.1.1. Package database

1.2.1.1.1. Kelas Connection.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package database;

7.

8. import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;

9. import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

10. import java.sql.SQLException;

11. import java.util.logging.Level;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 137: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

12. import java.util.logging.Logger;

13.

14. /**

15. *

16. * @author pacman

17. */

18. public class Connection {

19.

20. private static final String DB_USERNAME = "skripsi";

21. private static final String DB_PASSWORD = "skripsi";

22. private static final String DB_DATABASE = "skripsi";

23. private static final String DB_HOST = "localhost";

24.

25. public static java.sql.Connection getConnection() {

26. java.sql.Connection connection = null;

27. MysqlDataSource dataSource = new MysqlConnectionPoolDataSource();

28. dataSource.setURL("jdbc:mysql://" + DB_HOST + "/" + DB_DATABASE);

29. dataSource.setUser(DB_USERNAME);

30. dataSource.setPassword(DB_PASSWORD);

31.

32. try {

33. connection = dataSource.getConnection();

34. // System.err.println("Koneksi berhasil");

35. } catch (SQLException ex) {

36. // System.err.println("Koneksi gagal");

37. Logger.getLogger(Connection.class.getName()).log(Level.SEVERE, null, ex);

38. }

39.

40. return connection;

41. }

42.

43. }

1.2.1.1.2. Kelas DatabaseOperationController

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package database;

8.

9. import gmeans.ClusterPool;

10. import gmeans.ModifiedLinkedList;

11. import java.sql.SQLException;

12. import java.util.logging.Level;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 138: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

13. import java.util.logging.Logger;

14. import main.Main;

15.

16. /**

17. *

18. * @author pacman

19. */

20. public class DatabaseOperationController {

21.

22. public DatabaseOperationController() {

23. }

24.

25. public void performDBOperation(ClusterPool pool, ModifiedLinkedList masterLinkedList) {

26. DatabaseRWOperation dbrw = new DatabaseRWOperation();

27. try {

28. dbrw.truncateAllTables();

29. dbrw.write(pool, masterLinkedList);

30. } catch (SQLException ex) {

31. Logger.getLogger(DatabaseOperationController.class.getName()).log(Level.SEVERE, null,

ex);

32. }

33. }

34.

35.

36. }

1.2.1.1.3. Kelas DatabaseRWOperation.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package database;

7.

8. import gmeans.Cluster;

9. import gmeans.ClusterPool;

10. import gmeans.ModifiedLinkedList;

11. import gmeans.Point;

12. import gmeans.Record;

13. import java.io.File;

14. import java.io.IOException;

15. import java.sql.PreparedStatement;

16. import java.sql.ResultSet;

17. import java.sql.SQLException;

18. import java.sql.Statement;

19. import java.util.ArrayList;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 139: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

20. import java.util.HashMap;

21. import java.util.Iterator;

22. import java.util.LinkedList;

23. import java.util.List;

24. import java.util.logging.Level;

25. import java.util.logging.Logger;

26. import org.apache.commons.io.FileUtils;

27.

28. /**

29. *

30. * @author pacman

31. */

32. public class DatabaseRWOperation {

33.

34. public DatabaseRWOperation() {

35. }

36.

37. public void truncateAllTables() throws SQLException {

38. java.sql.Connection conn = Connection.getConnection();

39.

40. String[] tableNames = new String[]{"cluster", "centroid", "document", "term",

"term_document"};

41.

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

43. String sql = "TRUNCATE " + tableNames[i];

44. conn.setAutoCommit(false);

45.

46. PreparedStatement ps = conn.prepareStatement(sql);

47. ps.execute();

48.

49. conn.commit();

50. }

51.

52. conn.close();

53. }

54.

55. public ClusterPool fastRead() throws SQLException {

56. return fastFetchCluster();

57. }

58.

59. public Cluster readSingleCluster(Cluster cluster) throws SQLException {

60. return fetchCluster(cluster);

61. }

62.

63. public Cluster readMultipleCluster() throws SQLException {

64. return fetchMultipleCluster();

65. }

66.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 140: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

67. public HashMap<String, Integer> mapPoint() throws SQLException {

68. return fetchMapPoint();

69. }

70.

71. private HashMap<String, Integer> fetchMapPoint() throws SQLException {

72. HashMap<String, Integer> map = new HashMap<>();

73. ModifiedLinkedList fetchMasterTerm = fetchMasterTerm();

74. Iterator<Point> masterTermIterator = fetchMasterTerm.iterator();

75. while (masterTermIterator.hasNext()) {

76. Point point = masterTermIterator.next();

77. String term = point.getTerm();

78. int df = fetchDocumentFrequency(term);

79. map.put(term, df);

80. }

81. return map;

82. }

83.

84. private int fetchDocumentFrequency(String term) throws SQLException {

85. java.sql.Connection conn = Connection.getConnection();

86.

87. String sql = "SELECT COUNT(id_document) FROM skripsi.term_document WHERE id_term =

(SELECT id_term FROM term WHERE term = ?) AND tf > 0";

88. conn.setAutoCommit(false);

89.

90. PreparedStatement ps = conn.prepareStatement(sql);

91.

92. ps.setString(1, term);

93.

94. ResultSet rs = ps.executeQuery();

95.

96. conn.commit();

97. int df = 0;

98. while (rs.next()) {

99. df = rs.getInt(1);

100. }

101.

102. conn.close();

103. return df;

104. }

105.

106. public int allDocumentCount() throws SQLException {

107. return fetchAllDocumentCount();

108. }

109.

110. private int fetchAllDocumentCount() throws SQLException {

111. java.sql.Connection conn = Connection.getConnection();

112.

113. String sql = "SELECT count(id_document) FROM document";

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 141: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

114. conn.setAutoCommit(false);

115.

116. PreparedStatement ps = conn.prepareStatement(sql);

117.

118. ResultSet rs = ps.executeQuery();

119.

120. conn.commit();

121.

122. int documentCount = 0;

123. while (rs.next()) {

124. documentCount = rs.getInt(1);

125. }

126.

127. conn.close();

128. return documentCount;

129. }

130.

131. public Record readSingleRecord(Record rec) throws SQLException {

132. return fetchSingleRecord(rec.getId_document());

133. }

134.

135. public ModifiedLinkedList readMasterTerm() throws SQLException {

136. return fetchMasterTerm();

137. }

138.

139. private ModifiedLinkedList fetchMasterTerm() throws SQLException {

140. ModifiedLinkedList masterLinkedList = new

ModifiedLinkedList(ModifiedLinkedList.LIST_TYPE.MASTER);

141. java.sql.Connection conn = Connection.getConnection();

142.

143. String sql = "SELECT * FROM term ORDER BY id_term";

144. conn.setAutoCommit(false);

145.

146. PreparedStatement ps = conn.prepareStatement(sql);

147.

148. Point point = null;

149. ResultSet rs = ps.executeQuery();

150.

151. conn.commit();

152.

153. while (rs.next()) {

154.

155. String term = rs.getString(2);

156. point = new Point(term);

157.

158. masterLinkedList.add(point);

159.

160. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 142: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

161.

162. conn.close();

163.

164. return masterLinkedList;

165.

166. }

167.

168. public void write(ClusterPool pool, ModifiedLinkedList masterList) throws SQLException {

169. writeTermMaster(masterList);

170. LinkedList<Cluster> clusterList = pool.getClusterList();

171. Iterator<Cluster> iterCluster = clusterList.iterator();

172. while (iterCluster.hasNext()) {

173. Cluster cluster = iterCluster.next();

174. insertCluster(cluster, masterList);

175. }

176. }

177.

178. private Cluster fetchCluster(Cluster cluster) throws SQLException {

179. java.sql.Connection conn = Connection.getConnection();

180.

181. String sql = "SELECT * FROM cluster WHERE id_cluster = ?";

182. conn.setAutoCommit(false);

183.

184. PreparedStatement ps = conn.prepareStatement(sql);

185. ps.setInt(1, cluster.getId_cluster());

186.

187. ResultSet rs = ps.executeQuery();

188.

189. conn.commit();

190.

191. Cluster cs = null;

192.

193. while (rs.next()) {

194. int id_cluster = rs.getInt(1);

195. String uuid = rs.getString(2);

196. Record fetchCentroid = fetchCentroid(id_cluster);

197. LinkedList<Record> recordList = fetchRecord(id_cluster);

198.

199. cs = new Cluster();

200. cs.setId_cluster(id_cluster);

201. cs.setClusterID(uuid);

202. cs.setCentroid(fetchCentroid);

203. cs.setRecordList(recordList);

204. }

205.

206. conn.close();

207. return cs;

208.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 143: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

209. }

210.

211. private Cluster fetchMultipleCluster() throws SQLException {

212. java.sql.Connection conn = Connection.getConnection();

213.

214. String sql = "SELECT * FROM cluster";

215. conn.setAutoCommit(false);

216.

217. PreparedStatement ps = conn.prepareStatement(sql);

218.

219. ResultSet rs = ps.executeQuery();

220.

221. conn.commit();

222.

223. Cluster cs = null;

224.

225. LinkedList<Record> recordList = new LinkedList<>();

226.

227. while (rs.next()) {

228. int id_cluster = rs.getInt(1);

229. recordList.addAll(fetchRecord(id_cluster));

230. }

231.

232. cs = new Cluster();

233. cs.setRecordList(recordList);

234.

235. conn.close();

236. return cs;

237.

238. }

239.

240. private LinkedList<Record> fetchRecord(int idCluster) throws SQLException {

241. java.sql.Connection conn = Connection.getConnection();

242.

243. String sql = "SELECT * FROM document WHERE id_cluster = ?";

244. conn.setAutoCommit(false);

245.

246. PreparedStatement ps = conn.prepareStatement(sql);

247. ps.setInt(1, idCluster);

248.

249. ResultSet rs = ps.executeQuery();

250.

251. conn.commit();

252.

253. Record rec = null;

254. LinkedList<Record> recordList = new LinkedList<>();

255.

256. while (rs.next()) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 144: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

257. rec = new Record();

258. int idDocument = rs.getInt(1);

259. String recordId = rs.getString(3);

260. List<Double> dataList = fetchDataList(idDocument);

261.

262. rec.setId_document(idDocument);

263. rec.setRecordID(recordId);

264. rec.setDataList(dataList);

265. recordList.add(rec);

266. }

267.

268. conn.close();

269. return recordList;

270. }

271.

272. private Record fetchSingleRecord(int idDoc) throws SQLException {

273. java.sql.Connection conn = Connection.getConnection();

274.

275. String sql = "SELECT * FROM document WHERE id_document = ?";

276. conn.setAutoCommit(false);

277.

278. PreparedStatement ps = conn.prepareStatement(sql);

279. ps.setInt(1, idDoc);

280.

281. ResultSet rs = ps.executeQuery();

282.

283. conn.commit();

284.

285. Record rec = null;

286.

287. while (rs.next()) {

288. rec = new Record();

289. int idDocument = rs.getInt(1);

290. String recordId = rs.getString(3);

291. String originContent = rs.getString(4);

292. String topic = rs.getString(5);

293. List<Double> dataList = fetchDataList(idDocument);

294.

295. rec.setId_document(idDocument);

296. rec.setRecordID(recordId);

297. rec.setDataList(dataList);

298. rec.setContent(originContent);

299. rec.setTopic(topic);

300. }

301.

302. conn.close();

303. return rec;

304. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 145: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

305.

306. private List<Double> fetchDataList(int idDocument) throws SQLException {

307. java.sql.Connection conn = Connection.getConnection();

308.

309. String sql = "SELECT * FROM term_document WHERE id_document = ? ORDER BY

id_term";

310. conn.setAutoCommit(false);

311.

312. PreparedStatement ps = conn.prepareStatement(sql);

313. ps.setInt(1, idDocument);

314.

315. ResultSet rs = ps.executeQuery();

316.

317. conn.commit();

318.

319. List<Double> dataList = new ArrayList<>();

320.

321. while (rs.next()) {

322. double w = rs.getDouble(5);

323. dataList.add(w);

324. }

325.

326. conn.close();

327. return dataList;

328.

329. }

330.

331. /**

332. * Hanya membaca cluster dan centroid, tidak membaca record didalamnya.

333. * Digunakan untuk memilih kluster yg paling dekat dgn kueri pengguna

334. *

335. * @return

336. * @throws SQLException

337. */

338. private ClusterPool fastFetchCluster() throws SQLException {

339. java.sql.Connection conn = Connection.getConnection();

340.

341. String sql = "SELECT * FROM cluster";

342. conn.setAutoCommit(false);

343.

344. PreparedStatement ps = conn.prepareStatement(sql);

345.

346. ResultSet rs = ps.executeQuery();

347.

348. conn.commit();

349.

350. LinkedList<Cluster> clusterList = new LinkedList<>();

351.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 146: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

352. while (rs.next()) {

353. int id_cluster = rs.getInt(1);

354. String uuid = rs.getString(2);

355. Record fetchCentroid = fetchCentroid(id_cluster);

356. Cluster cs = new Cluster();

357. cs.setId_cluster(id_cluster);

358. cs.setClusterID(uuid);

359. cs.setCentroid(fetchCentroid);

360. clusterList.add(cs);

361. }

362.

363. ClusterPool clusterPool = new ClusterPool(clusterList);

364. conn.close();

365. return clusterPool;

366. }

367.

368. private Record fetchCentroid(int idCluster) throws SQLException {

369. java.sql.Connection conn = Connection.getConnection();

370.

371. String sql = "SELECT * FROM centroid WHERE id_cluster = ? ORDER BY id_term";

372. conn.setAutoCommit(false);

373.

374. PreparedStatement ps = conn.prepareStatement(sql);

375. ps.setInt(1, idCluster);

376.

377. ResultSet rs = ps.executeQuery();

378.

379. conn.commit();

380.

381. Record rec = new Record();

382. List<Double> dataList = new ArrayList<>();

383.

384. while (rs.next()) {

385. // centroid hanya perlu dataList, tidak perlu term, dsb. Hal ini mempercepat fetch

386. double value = rs.getDouble(4);

387. dataList.add(value);

388. }

389. rec.setDataList(dataList);

390. conn.close();

391. return rec;

392. }

393.

394. private void writeTermMaster(ModifiedLinkedList masterList) throws SQLException {

395. insertTermMaster(masterList);

396. }

397.

398. private int insertCluster(Cluster cs, ModifiedLinkedList masterList) throws SQLException {

399. java.sql.Connection conn = Connection.getConnection();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 147: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

400.

401. String sql = "INSERT INTO cluster (uuid) VALUES (?)";

402. conn.setAutoCommit(false);

403.

404. PreparedStatement ps = conn.prepareStatement(sql,

Statement.RETURN_GENERATED_KEYS);

405. ps.setString(1, cs.getClusterID());

406.

407. ps.executeUpdate();

408. conn.commit();

409. ResultSet rsKey = ps.getGeneratedKeys();

410.

411. int clusterKey = 0;

412. while (rsKey.next()) {

413. clusterKey = rsKey.getInt(1);

414. }

415.

416. conn.close();

417.

418. LinkedList<Record> recordList = cs.getRecordList();

419. Iterator<Record> iterRecord = recordList.iterator();

420. while (iterRecord.hasNext()) {

421. Record record = iterRecord.next();

422. insertDocument(clusterKey, record);

423. }

424.

425. Record centroid = cs.getCentroid();

426. List<Double> dataList = centroid.getDataList();

427.

428. for (int i = 0; i < dataList.size(); i++) {

429. Point point = new Point(masterList.get(i).getTerm());

430. point.setWNorm(dataList.get(i));

431. insertCentroid(clusterKey, point);

432. }

433.

434. return clusterKey;

435. }

436.

437. private void insertCentroid(int clusterKey, Point pointCentroid) throws SQLException {

438. java.sql.Connection conn = Connection.getConnection();

439.

440. String sql = "INSERT INTO centroid (id_cluster, id_term, value) VALUES (?,(SELECT

id_term FROM term WHERE term = ?),?)";

441. conn.setAutoCommit(false);

442.

443. PreparedStatement ps = conn.prepareStatement(sql);

444. ps.setInt(1, clusterKey);

445. ps.setString(2, pointCentroid.getTerm());

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 148: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

446. ps.setDouble(3, pointCentroid.getWNorm());

447.

448. ps.executeUpdate();

449. conn.commit();

450.

451. conn.close();

452. }

453.

454. private void insertDocument(int clusterKey, Record rec) throws SQLException {

455. java.sql.Connection conn = Connection.getConnection();

456.

457. String sql = "INSERT INTO document (id_cluster, record_id, content, topic) VALUES

(?,?,?,?)";

458. conn.setAutoCommit(false);

459.

460. PreparedStatement ps = conn.prepareStatement(sql,

Statement.RETURN_GENERATED_KEYS);

461. ps.setInt(1, clusterKey);

462. ps.setString(2, rec.getRecordID());

463. ps.setString(3, rec.getContent());

464. ps.setString(4, rec.getTopic());

465.

466. ps.executeUpdate();

467. conn.commit();

468. ResultSet rsKey = ps.getGeneratedKeys();

469.

470. int documentKey = 0;

471. while (rsKey.next()) {

472. documentKey = rsKey.getInt(1);

473. }

474.

475. conn.close();

476.

477. ModifiedLinkedList pointList = rec.getPointList();

478. Iterator<Point> iterPoint = pointList.iterator();

479. while (iterPoint.hasNext()) {

480. Point point = iterPoint.next();

481. insertTermDocument(documentKey, point);

482. }

483. }

484.

485. private void insertTermDocument(int generatedKey, Point point) throws SQLException {

486. java.sql.Connection conn = Connection.getConnection();

487.

488. String sql = "INSERT INTO term_document (id_document, id_term, tf, w) VALUES

(?,(SELECT id_term FROM term WHERE term = ?),?,?)";

489. conn.setAutoCommit(false);

490.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 149: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

491. PreparedStatement ps = conn.prepareStatement(sql);

492. ps.setInt(1, generatedKey);

493. ps.setString(2, point.getTerm());

494. ps.setDouble(3, point.getTf());

495. ps.setDouble(4, point.getWNorm());

496.

497. ps.executeUpdate();

498. conn.commit();

499. conn.close();

500. }

501.

502. private void insertTermMaster(ModifiedLinkedList masterList) throws SQLException {

503. Iterator<Point> iterator = masterList.iterator();

504. a:

505. while (iterator.hasNext()) {

506. Point point = iterator.next();

507. java.sql.Connection conn = Connection.getConnection();

508.

509. String sql = "INSERT INTO term (term) VALUES (?)";

510. conn.setAutoCommit(false);

511.

512. PreparedStatement ps = conn.prepareStatement(sql);

513. ps.setString(1, point.getTerm());

514.

515. try {

516. ps.executeUpdate();

517. } catch (SQLException ex) {

518. if (ex.getErrorCode() == 1062) {

519. continue a;

520. }

521. }

522. conn.commit();

523. conn.close();

524. }

525. }

526.

527. public String coba() throws SQLException {

528. java.sql.Connection conn = Connection.getConnection();

529.

530. String sql = "SELECT id_document, id_cluster FROM document ORDER BY id_cluster";

531. conn.setAutoCommit(false);

532.

533. PreparedStatement ps = conn.prepareStatement(sql);

534.

535. ResultSet rs = ps.executeQuery();

536.

537. conn.commit();

538.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 150: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

539. String wAll = "";

540.

541. while (rs.next()) {

542.

543. String id_document = rs.getString(1);

544. System.out.print(id_document);

545. coba2(id_document);

546. String id_cluster = rs.getString(2);

547. System.out.println("," + id_cluster);

548.

549. }

550.

551. conn.close();

552.

553. return wAll;

554. }

555.

556. private String coba2(String id_document) throws SQLException {

557. java.sql.Connection conn = Connection.getConnection();

558.

559. String sql = "SELECT w FROM term_document WHERE id_document = ?";

560. conn.setAutoCommit(false);

561.

562. PreparedStatement ps = conn.prepareStatement(sql);

563. ps.setString(1, id_document);

564.

565. ResultSet rs = ps.executeQuery();

566.

567. conn.commit();

568.

569. String wAll = "";

570.

571. while (rs.next()) {

572. double w = rs.getDouble(1);

573. System.out.print("," + w);

574. }

575.

576. conn.close();

577. return wAll;

578.

579. }

580.

581. private void insertStopwordClustering() throws IOException, SQLException {

582. // List<String> readLines = FileUtils.readLines(new File("./result/term.csv"));

583. List<String> readLines = FileUtils.readLines(new File("./result/feature_sel.csv"));

584. Iterator<String> iterator = readLines.iterator();

585. while (iterator.hasNext()) {

586. String string = iterator.next();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 151: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

587. insertStopwordClustering(string);

588. }

589. }

590.

591. private void insertStopwordClustering(String string) throws SQLException {

592. java.sql.Connection conn = Connection.getConnection();

593.

594. String sql = "INSERT INTO stopword_clustering_ina(stopword) VALUES (?)";

595. conn.setAutoCommit(false);

596.

597. PreparedStatement ps = conn.prepareStatement(sql);

598. ps.setString(1, string);

599.

600. ps.execute();

601.

602. conn.commit();

603.

604. conn.close();

605.

606. }

607.

608. private void truncateStopwordClustering() throws SQLException {

609. java.sql.Connection conn = Connection.getConnection();

610.

611. String sql = "TRUNCATE stopword_clustering_ina";

612. conn.setAutoCommit(false);

613.

614. PreparedStatement ps = conn.prepareStatement(sql);

615.

616. ps.execute();

617.

618. conn.commit();

619.

620. conn.close();

621.

622. }

623.

624. public static void main(String[] args) {

625. DatabaseRWOperation db = new DatabaseRWOperation();

626. try {

627. db.truncateStopwordClustering();

628. db.insertStopwordClustering();

629. } catch (IOException ex) {

630. Logger.getLogger(DatabaseRWOperation.class.getName()).log(Level.SEVERE, null, ex);

631. } catch (SQLException ex) {

632. Logger.getLogger(DatabaseRWOperation.class.getName()).log(Level.SEVERE, null, ex);

633. }

634. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 152: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

635.

636. }

1.2.1.2. Package gmeans

1.2.1.2.1. Kelas AutoGenerateID

44. /*

45. * To change this license header, choose License Headers in Project Properties.

46. * To change this template file, choose Tools | Templates

47. * and open the template in the editor.

48. */

49. package gmeans;

50.

51. import java.util.UUID;

52.

53. /**

54. *

55. * @author root

56. */

57. public class AutoGeneratedID {

58.

59. private static AutoGeneratedID INSTANCE;

60. private static int id;

61.

62. /**

63. * TODO: Kenapa harus singleton?

64. * @return INSTANCE singleton

65. */

66. private static AutoGeneratedID getInstance() {

67. if(INSTANCE==null) {

68. INSTANCE = new AutoGeneratedID();

69. id = 1;

70. }

71. return INSTANCE;

72. }

73.

74. public static int generateAutoIncrementID() {

75. getInstance();

76. int tempId = id;

77. id++;

78. return tempId;

79. }

80.

81. /**

82. * Menggenerate random string menggunakan kelas UUID bawaan Java

83. *

84. * usage: penamaan clusterID / labeling cluster sementara

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 153: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

85. * @return random string yang berhasil digenerate

86. */

87. public static String generateRandomString() {

88. getInstance();

89. return UUID.randomUUID().toString();

90. }

91. }

1.2.1.2.2. Kelas Calculation.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gmeans;

7.

8. import Jama.EigenvalueDecomposition;

9. import Jama.Matrix;

10. import Jama.SingularValueDecomposition;

11. import java.io.IOException;

12. import java.util.LinkedList;

13. import java.util.List;

14. import java.util.logging.Level;

15. import java.util.logging.Logger;

16. import org.apache.commons.math3.distribution.NormalDistribution;

17. import org.apache.commons.math3.stat.correlation.Covariance;

18. import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;

19.

20. /**

21. *

22. * @author pacman

23. */

24. public class Calculation {

25.

26. public Calculation() {

27. }

28.

29. public double dotProduct(double[] x, double[] y) {

30. if (x.length != y.length) {

31. throw new IllegalArgumentException();

32. }

33.

34. double sum = 0;

35.

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

37. sum += (x[i] * y[i]);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 154: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

38. }

39.

40. return sum;

41.

42. }

43.

44. public double[] zScoreNormalization(double[] data) {

45.

46. DescriptiveStatistics ds = new DescriptiveStatistics(data);

47. double mean = ds.getMean();

48. double stdev = ds.getStandardDeviation();

49.

50. double[] result = new double[data.length];

51.

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

53. result[i] = (data[i] - mean) / stdev;

54. }

55.

56. return result;

57.

58. }

59.

60. public double mean(double[] data) {

61. double mean = 0;

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

63. mean = mean + data[i];

64. }

65. mean = mean / data.length;

66. return mean;

67. }

68.

69. public double[] meanPerRow(double[][] data) {

70. double[] mean = new double[data.length];

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

72. mean[i] = mean(data[i]);

73. }

74. return mean;

75. }

76.

77. public double[] calculateVariance(double[][] initData) {

78.

79. Utility util = new Utility();

80. DescriptiveStatistics ds = null;

81. double[] res = new double[initData[0].length];

82.

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

84. double[] fetchColumnMatrix2D = util.fetchColumnMatrix2D(initData, i);

85. ds = new DescriptiveStatistics(fetchColumnMatrix2D);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 155: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

86. res[i] = ds.getVariance();

87. }

88.

89. return res;

90.

91. }

92.

93. public SingularValueDecomposition calculateSVD(double[][] data) {

94. Matrix m = new Matrix(data);

95. return m.svd();

96. }

97.

98. public void simulateCalcPCA(Cluster cs) {

99. Utility util = new Utility();

100. double[][] data = util.convert2DListToMatrix(cs);

101. double[][] originalData = util.convert2DOriginalListToMatrix(cs);

102. LinkedList<Record> recordList = cs.getRecordList();

103.

104. // REDUCED ARRAY

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

106. List<Double> dataList = recordList.get(i).getDataList();

107. for (int j = 0; j < data[i].length; j++) {

108. dataList.add(data[i][j]);

109. }

110. }

111.

112. // ORIGINAL ARRAY

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

114. List<Double> originalDataList = recordList.get(i).getOriginalDataList();

115. for (int j = 0; j < originalData[i].length; j++) {

116. originalDataList.add(originalData[i][j]);

117. }

118. }

119. }

120.

121. public void calculatePCA(Cluster cs) { // see Rm. Kun paper on Data Preprocessing

122. Utility util = new Utility();

123. double[][] data = util.convert2DListToMatrix(cs);

124. Matrix original = new Matrix(data);

125.

126. Covariance cov = new Covariance(data);

127. double[][] covariance = cov.getCovarianceMatrix().getData();

128.

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

130. for (int j = 0; j < covariance[i].length; j++) {

131. if(Double.isNaN(covariance[i][j]) || Double.isInfinite(covariance[i][j])) {

132. covariance[i][j] = 0;

133. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 156: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

134. }

135. }

136.

137. // RealMatrix covarianceMatrix = new Array2DRowRealMatrix(covariance);

138.

139. // debug

140. // try {

141. // util.writeToFile(covariance, "covar");

142. // } catch (IOException ex) {

143. // Logger.getLogger(Calculation.class.getName()).log(Level.SEVERE, null, ex);

144. // }

145.

146. System.out.println("printed");

147. System.out.println("");

148. // org.la4j.Matrix mtr = new org.la4j.matrix.dense.Basic2DMatrix(covariance);

149. // org.la4j.decomposition.EigenDecompositor eg = new

org.la4j.decomposition.EigenDecompositor(mtr);

150. // org.la4j.Matrix[] decompose = eg.decompose();

151. // EigenDecomposition ed = new EigenDecomposition(covarianceMatrix);

152.

153. Matrix m = new Matrix(covariance);

154. EigenvalueDecomposition eig = m.eig(); // STUCK HERE

155. double[][] eigenVal = eig.getD().getArray();

156. double[][] eigenVec = eig.getV().getArray();

157.

158. double minimumSignificance = 0.01;

159. int satistfyIndex = 0;

160. a: for (int i = 0; i < eigenVal[0].length; i++) {

161. if(eigenVal[i][i] > minimumSignificance) {

162. satistfyIndex = i;

163. break a;

164. }

165. }

166.

167. System.out.println("satisf: " + satistfyIndex);

168.

169. int ambilanIndex = eigenVec[0].length - 24;

170. ambilanIndex = 0;

171. Matrix eigenVector = new Matrix(eigenVec);

172. Matrix newEig = eigenVector.getMatrix(0, eigenVec.length - 1, ambilanIndex,

eigenVec[0].length - 1);

173. Matrix newEigTranspose = newEig.transpose();

174. Matrix originalTranspose = original.transpose();

175. Matrix feature = newEigTranspose.times(originalTranspose);

176. Matrix resultMatrix = feature.transpose();

177. double[][] result = resultMatrix.getArray();

178.

179. // debug

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 157: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

180. try {

181. System.out.println("satisf: " + satistfyIndex);

182. util.writeToFile(result, "pca");

183. } catch (IOException ex) {

184. Logger.getLogger(Calculation.class.getName()).log(Level.SEVERE, null, ex);

185. }

186.

187. LinkedList<Record> recordList = cs.getRecordList();

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

189. List<Double> dataList = recordList.get(i).getDataList();

190. for (int j = 0; j < result[i].length; j++) {

191. dataList.add(result[i][j]);

192. }

193. }

194.

195. try {

196. util.writePCAToFile(cs, "pca_cs");

197. } catch (IOException ex) {

198. Logger.getLogger(Calculation.class.getName()).log(Level.SEVERE, null, ex);

199. }

200. }

201.

202. /**

203. * see Erk - http://stackoverflow.com/questions/442758/which-java-library-computes-the-

cumulative-standard-normal-distribution-function

204. * @param data

205. * @return

206. */

207. public double calculateCDF(double data) {

208.

209. int neg = (data < 0d) ? 1 : 0;

210. if (neg == 1) {

211. data *= -1d;

212. }

213.

214. double k = (1d / (1d + 0.2316419 * data));

215. double y = ((((1.330274429 * k - 1.821255978) * k + 1.781477937)

216. * k - 0.356563782) * k + 0.319381530) * k;

217. y = 1.0 - 0.398942280401 * Math.exp(-0.5 * data * data) * y;

218.

219. return (1d - neg) * y + neg * (1d - y);

220.

221. // NormalDistribution n = new NormalDistribution();

222. // return n.cumulativeProbability(data);

223. }

224.

225. public double[] calculateCDF(double[] data) {

226. NormalDistribution n = new NormalDistribution();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 158: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

227. double[] result = new double[data.length];

228.

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

230. result[i] = n.cumulativeProbability(data[i]);

231. }

232.

233. return result;

234. }

235.

236. public double[] calculateChildCentroidPositive(double[] clusterCenter, double[]

eigenVector, double eigenValue) {

237. int lengthCluster = clusterCenter.length;

238. int lengthEigVec = eigenVector.length;

239.

240. double[] newEigenVector = null;

241. double[] child = null;

242.

243. if (lengthCluster == lengthEigVec) {

244.

245. newEigenVector = new double[lengthEigVec];

246. for (int i = 0; i < lengthEigVec; i++) {

247. newEigenVector[i] = eigenVector[i] * Math.sqrt((2 * eigenValue) / Math.PI);

248. }

249.

250. child = new double[lengthEigVec];

251. for (int i = 0; i < lengthCluster; i++) {

252. child[i] = clusterCenter[i] + newEigenVector[i];

253. }

254. } else {

255. throw new IllegalArgumentException();

256. }

257.

258. return child;

259. }

260.

261. public double[] calculateChildCentroidNegative(double[] clusterCenter, double[]

eigenVector, double eigenValue) {

262. int lengthCluster = clusterCenter.length;

263. int lengthEigVec = eigenVector.length;

264.

265. if (lengthCluster != lengthEigVec) {

266. throw new IllegalArgumentException();

267. }

268.

269. double[] newEigenVector = null;

270. double[] child = null;

271.

272. newEigenVector = new double[lengthEigVec];

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 159: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

273. for (int i = 0; i < lengthEigVec; i++) {

274. newEigenVector[i] = eigenVector[i] * Math.sqrt((2 * eigenValue) / Math.PI);

275. }

276.

277. child = new double[lengthEigVec];

278. for (int i = 0; i < lengthCluster; i++) {

279. child[i] = clusterCenter[i] - newEigenVector[i];

280. }

281.

282. return child;

283. }

284.

285. public double[] calculateChildCentroidPositiveB(double[] clusterCenter, double[]

eigenVector, double eigenValue) {

286. int lengthCluster = clusterCenter.length;

287. int lengthEigVec = eigenVector.length;

288.

289. double[] newEigenVector = null;

290. double[] child = null;

291.

292. if (lengthCluster == lengthEigVec) {

293. // child = new double[lengthEigVec];

294. // for (int i = 0; i < lengthCluster; i++) {

295. // child[i] = clusterCenter[i] + eigenVector[i];

296. // }

297.

298.

299. newEigenVector = new double[lengthEigVec];

300. for (int i = 0; i < lengthEigVec; i++) {

301. newEigenVector[i] = eigenVector[i] * Math.sqrt((2 * eigenValue) / Math.PI);

302. }

303.

304. child = new double[lengthEigVec];

305. for (int i = 0; i < lengthCluster; i++) {

306. child[i] = clusterCenter[i] + newEigenVector[i];

307. }

308. } else {

309. throw new IllegalArgumentException();

310. }

311.

312. return child;

313. }

314.

315. public double[] calculateChildCentroidNegativeB(double[] clusterCenter, double[]

eigenVector, double eigenValue) {

316. int lengthCluster = clusterCenter.length;

317. int lengthEigVec = eigenVector.length;

318.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 160: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

319. double[] newEigenVector = null;

320. double[] child = null;

321.

322. if (lengthCluster == lengthEigVec) {

323. // child = new double[lengthEigVec];

324. // for (int i = 0; i < lengthCluster; i++) {

325. // child[i] = clusterCenter[i] - eigenVector[i];

326. // }

327.

328.

329. newEigenVector = new double[lengthEigVec];

330. for (int i = 0; i < lengthEigVec; i++) {

331. newEigenVector[i] = eigenVector[i] * Math.sqrt((2 * eigenValue) / Math.PI);

332. }

333.

334. child = new double[lengthEigVec];

335. double tempData = 0;

336. for (int i = 0; i < lengthCluster; i++) {

337. child[i] = clusterCenter[i] - newEigenVector[i];

338. }

339. } else {

340. throw new IllegalArgumentException();

341. }

342.

343. return child;

344. }

345.

346. public double euclideanDistance(double[] data, double[] centroid) {

347. if (data.length != centroid.length) {

348. throw new IllegalArgumentException();

349. }

350.

351. double sum = 0;

352.

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

354. sum += Math.pow(data[i] - centroid[i], 2);

355. }

356.

357. return Math.sqrt(sum);

358.

359. }

360.

361. public double[] scalarProduct(double[] array1, double[] array2) {

362.

363. if (array1.length != array2.length) {

364. throw new IllegalArgumentException();

365. }

366.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 161: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

367. double[] newArray = new double[array1.length];

368.

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

370. newArray[i] = array1[i] * array2[i];

371. }

372.

373. return newArray;

374. }

375.

376. /**

377. *

378. * @param query

379. * @param centroid

380. * @param booleanOperator 1 = AND, 2 = OR

381. * @return

382. */

383. public double calculateWQD(double[] query, double[] centroid, int booleanOperator) {

384. if(query.length != centroid.length && (booleanOperator != 1 || booleanOperator != 2)) {

385. throw new IllegalArgumentException();

386. }

387.

388. double result = 0;

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

390. if(booleanOperator == 1) {

391. if (query[i] != 0.0 && centroid[i] == 0.0) {

392. return 0;

393. }

394. }

395. result = result + query[i] * centroid[i];

396. }

397. return result;

398. }

399.

400. }

1.2.1.2.3. Kelas Cluster.java

637. /*

638. * To change this license header, choose License Headers in Project Properties.

639. * To change this template file, choose Tools | Templates

640. * and open the template in the editor.

641. */

642. package gmeans;

643.

644. import java.util.LinkedList;

645.

646. /**

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 162: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

647. *

648. * @author root

649. */

650. public class Cluster {

651.

652. private int id_cluster;

653. private String clusterID;

654. private LinkedList<Record> recordList;

655. private Record centroid;

656. private boolean isStable;

657.

658. public Cluster() {

659. recordList = new LinkedList<>();

660. }

661.

662. @Override

663. public String toString() {

664. String title = "---- Cluster " + clusterID + " ----\n";

665. String subtitle = "---- centroid : ";

666. for (int i = 0; i < centroid.getDataList().size(); i++) {

667. subtitle += String.valueOf(centroid.getDataList().get(i)) + ",";

668. }

669. subtitle += "\n";

670. String content = "";

671. for (int i = 0; i < recordList.size(); i++) {

672. content += recordList.get(i).toString() + "\n";

673. }

674. return title + subtitle + content;

675. }

676.

677. // @Override

678. // public String toString() {

679. // String title = "---- Cluster " + clusterID + " ----\n";

680. // String subtitle = "---- centroid : ";

681. // for (int i = 0; i < centroid.getPointList().size(); i++) {

682. // subtitle += centroid.getPointList().get(i).toString() + ", ";

683. // }

684. // subtitle += "\n";

685. // String content = "";

686. // for (int i = 0; i < recordList.size(); i++) {

687. // content += recordList.get(i).toString() + "\n";

688. // }

689. // return title + subtitle + content;

690. // }

691. public int getId_cluster() {

692. return id_cluster;

693. }

694.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 163: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

695. public void setId_cluster(int id_cluster) {

696. this.id_cluster = id_cluster;

697. }

698.

699. public String getClusterID() {

700. return clusterID;

701. }

702.

703. public void setClusterID(String clusterID) {

704. this.clusterID = clusterID;

705. }

706.

707. public LinkedList<Record> getRecordList() {

708. return recordList;

709. }

710.

711. public void setRecordList(LinkedList<Record> recordList) {

712. this.recordList = recordList;

713. }

714.

715. public Record getCentroid() {

716. return centroid;

717. }

718.

719. public void setCentroid(Record centroid) {

720. this.centroid = centroid;

721. }

722.

723. public boolean isStable() {

724. return isStable;

725. }

726.

727. public void setIsStable(boolean isStable) {

728. this.isStable = isStable;

729. }

730. }

1.2.1.2.4. Kelas ClusterPool.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gmeans;

7.

8. import java.util.LinkedList;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 164: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

9.

10. /**

11. *

12. * @author root

13. */

14. public class ClusterPool {

15.

16. private LinkedList<Cluster> clusterList;

17.

18. public ClusterPool() {

19. this.clusterList = new LinkedList<>();

20. }

21.

22. public ClusterPool(LinkedList<Cluster> clusterList) {

23. this.clusterList = clusterList;

24. }

25.

26. public void addFirst(Cluster e) {

27. this.clusterList.addFirst(e);

28. }

29.

30. public Cluster getClusterAt(int index) throws IndexOutOfBoundsException {

31. return this.clusterList.get(index);

32.

33. }

34.

35. /**

36. * Mereplace satu slot dalam linkedlist (yang berisi Cluster) dengan dua

37. * slot (masing-masing berisi Cluster) kemudian menggeser slot lama ke kanan

38. * Misal diketahui suatu linkedlist -> a, d, g Apabila diinsert

39. * replaceOneClusterWithTwoAt(2, b, c) maka list akan menjadi -> a, b, c, g

40. *

41. * @param index index linkedlist yang akan diinsert

42. * @param cluster1 instance Cluster yang pertama

43. * @param cluster2 instance Cluster yang kedua

44. * @return index slot lama yang tergeser, apabila return -1 berarti tadi

45. * terjadi replace di ujung list

46. */

47. public int replaceOneClusterWithTwoAt(int index, Cluster cluster1, Cluster cluster2) {

48. int nextIndex = -1;

49.

50. try {

51. if (clusterList.get(index + 1) != null) {

52. nextIndex = index + 2;

53. }

54. } catch (IndexOutOfBoundsException ex) {

55. nextIndex = -1;

56. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 165: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

57.

58. replaceAt(index, cluster1);

59. insert(index + 1, cluster2);

60.

61. return nextIndex;

62. }

63.

64. private void insert(int index, Cluster e) {

65. clusterList.add(index, e);

66. }

67.

68. private void replaceAt(int index, Cluster e) {

69. clusterList.set(index, e);

70. }

71.

72. public LinkedList<Cluster> getClusterList() {

73. return clusterList;

74. }

75.

76. public void setClusterList(LinkedList<Cluster> clusterList) {

77. this.clusterList = clusterList;

78. }

79. }

1.2.1.2.5. Kelas FeatureSelection.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package gmeans;

8.

9. import database.Connection;

10. import database.DatabaseRWOperation;

11. import java.sql.PreparedStatement;

12. import java.sql.ResultSet;

13. import java.sql.SQLException;

14. import java.util.ArrayList;

15. import java.util.LinkedList;

16. import java.util.List;

17.

18. /**

19. *

20. * @author pacman

21. */

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 166: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

22. public class FeatureSelection {

23.

24. private List<String> importantWord;

25.

26. public FeatureSelection() {

27. importantWord = new ArrayList<>();

28. }

29.

30. public boolean isInImportantList(String term) {

31. term = term.trim();

32. return importantWord.contains(term);

33. }

34.

35. public Cluster featureSelection(Cluster cs) throws SQLException {

36.

37. DatabaseRWOperation dbrw = new DatabaseRWOperation();

38. ModifiedLinkedList newPointList = null;

39. loadImportantList();

40. LinkedList<Record> recordList = cs.getRecordList();

41. for (int i = 0; i < recordList.size(); i++) {

42. Record rec = recordList.get(i);

43. newPointList = new ModifiedLinkedList();

44. ModifiedLinkedList pointList = rec.getPointList();

45. for (int j = 0; j < pointList.size(); j++) {

46. Point point = pointList.get(j);

47. String term = point.getTerm();

48. boolean inImportantList = isInImportantList(term);

49. if(inImportantList) {

50. newPointList.add(point);

51. }

52. }

53. rec.setReducedPointList(newPointList);

54. }

55.

56. return cs;

57.

58. }

59.

60. public boolean loadImportantList() throws SQLException {

61.

62. java.sql.Connection conn = Connection.getConnection();

63.

64. // String sql = "SELECT stopword FROM stopword_ina WHERE stopword = ?";

65. String sql = "SELECT stopword FROM stopword_clustering_ina";

66. conn.setAutoCommit(false);

67.

68. PreparedStatement ps = conn.prepareStatement(sql);

69.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 167: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

70. ResultSet rs = ps.executeQuery();

71.

72. conn.commit();

73.

74. boolean check = false;

75.

76. while (rs.next()) {

77. this.importantWord.add(rs.getString(1));

78. }

79.

80. conn.close();

81.

82. return check;

83. }

84. }

1.2.1.2.6. Kelas GMeans.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package gmeans;

8.

9. import kmeans.InitCentroid;

10.

11. /**

12. *

13. * @author pacman

14. */

15. public class GMeans {

16.

17. public GMeans() {

18. }

19.

20. public ClusterPool performGMeans(Cluster cs) {

21. GMeansAlgorithm r = new GMeansAlgorithm();

22.

23. InitCentroid ic = new InitCentroid();

24.

25. ClusterPool pool = new ClusterPool();

26.

27. pool.getClusterList().add(cs);

28.

29. Utility util = new Utility();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 168: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

30.

31. Cluster cluster = pool.getClusterAt(0);

32.

33. double[] initCentroidFromData = ic.initCentroidWithKmeanPlusPlus(cs);

34. // double[] initCentroidFromData =

ic.initCentroidFromData(util.convert2DPCAListToMatrix(cluster));

35. // double[] initCentroidFromData =

ic.initCentroidFromData(util.convert2DListToMatrix(cluster));

36.

37. Record convert1DArrayToRecord =

util.convert1DPCAArrayToRecord(initCentroidFromData);

38. // Record convert1DArrayToRecord = util.convert1DArrayToRecord(initCentroidFromData);

39.

40. cluster.setCentroid(convert1DArrayToRecord);

41.

42. int poolIndex = 0;

43.

44. a:

45. while (true) {

46.

47. b:

48. while (true) {

49.

50. try {

51. cluster = pool.getClusterAt(poolIndex);

52. } catch (IndexOutOfBoundsException e) {

53. break a;

54. }

55.

56. if (cluster.getRecordList().isEmpty()) {

57. poolIndex = poolIndex + 1;

58. continue b;

59. }

60.

61. if (cluster.isStable()) {

62. poolIndex = poolIndex + 1;

63. continue b;

64. }

65.

66. if (cluster.getRecordList().size() == 1) {

67. poolIndex = poolIndex + 1;

68. continue b;

69. }

70.

71. System.out.println("");

72.

73. double alpha = r.step1();

74.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 169: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

75. System.out.println("--- STEP 1 DONE ---");

76.

77. double[][] initCentroidSet = r.step2Alternate2(cluster);

78. // double[][] initCentroidSet = r.step2Alternate(cluster);

79. // double[][] initCentroidSet = r.step2(cluster);

80. // double[][] initCentroidSet = r.step2B(cluster);

81.

82. System.out.println("--- STEP 2 DONE ---");

83.

84. Cluster[] clusterSet = r.step3(cluster, initCentroidSet[0], initCentroidSet[1]);

85. // Cluster[] clusterSet = r.step3B(cluster, initCentroidSet[0], initCentroidSet[1]);

86.

87. System.out.println("--- STEP 3 DONE ---");

88.

89. if(clusterSet[0].getRecordList().isEmpty()) {

90. cluster = clusterSet[0];

91. poolIndex = poolIndex + 1;

92. continue b;

93. } else if (clusterSet[1].getRecordList().isEmpty()) {

94. cluster = clusterSet[0];

95. poolIndex = poolIndex + 1;

96. continue b;

97. }

98.

99.

100. double[] centroidClusterSet0 =

util.convert1DPCARecordToArray(clusterSet[0].getCentroid());

101. // double[] centroidClusterSet0 =

util.convert1DListToArray(clusterSet[0].getCentroid());

102.

103. double[] centroidClusterSet1 =

util.convert1DPCARecordToArray(clusterSet[1].getCentroid());

104. // double[] centroidClusterSet1 =

util.convert1DListToArray(clusterSet[1].getCentroid());

105. //

106. double[] xiac = r.step4(centroidClusterSet0, centroidClusterSet1, cluster);

107. // double[] xiac = r.step4B(centroidClusterSet0, centroidClusterSet1, cluster);

108.

109. System.out.println("--- STEP 4 DONE ---");

110.

111. System.out.println("---- xiac");

112. for (double xic : xiac) {

113. System.out.print(xic + " ");

114. }

115.

116. System.out.println("");

117.

118. boolean isStable = r.step5(xiac, alpha);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 170: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

119.

120. System.out.println("--- STEP 5 DONE ---");

121.

122. if (isStable) {

123. System.out.println("not need split");

124. cluster.setIsStable(true);

125. poolIndex = poolIndex + 1;

126. } else {

127. System.out.println("need split");

128. cluster.setIsStable(false);

129. clusterSet[0].setIsStable(false);

130. clusterSet[1].setIsStable(false);

131. poolIndex = pool.replaceOneClusterWithTwoAt(poolIndex, clusterSet[0],

clusterSet[1]);

132. }

133.

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

135. Cluster c = clusterSet[i];

136.

137. String res = c.toString();

138.

139. System.out.println(res);

140. }

141.

142. if (poolIndex == -1) {

143. break b;

144. }

145.

146. }

147.

148. System.out.println("break");

149.

150. // cek cluster pool, apakah ada yg perlu displit lagi

151. boolean allStable = true;

152. c:

153. for (int i = 0; i < pool.getClusterList().size(); i++) {

154. Cluster get = pool.getClusterList().get(i);

155. if (get.isStable() == false) {

156. System.err.println("there is unstable cluster");

157. allStable = false;

158. break c;

159. }

160. }

161.

162. // jika semua sudah stable (tdk perlu split, maka hentikan loop while)

163. if (allStable) {

164. System.err.println("all stable");

165. break a;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 171: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

166. } else {

167. poolIndex = 0;

168. }

169. }

170.

171. return pool;

172. }

173.

174. }

1.2.1.2.7. Kelas GMeansAlgorithm.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gmeans;

7.

8. import Jama.EigenvalueDecomposition;

9. import Jama.Matrix;

10. import Jama.SingularValueDecomposition;

11. import java.util.List;

12. import jdistlib.disttest.NormalityTest;

13. import kmeans.KMeansAdHoc;

14. import org.apache.commons.math3.stat.correlation.Covariance;

15. import pca.PCA;

16.

17. /**

18. *

19. * @author pacman

20. */

21. public class GMeansAlgorithm {

22.

23. public GMeansAlgorithm() {

24. }

25.

26. public double step1() {

27. double alpha = 0.05;

28. return alpha;

29. }

30.

31. public double[][] step2Alternate(Cluster cs) {

32. Calculation calc = new Calculation();

33. Utility util = new Utility();

34. double[] clusterCenter = util.convert1DPCARecordToArray(cs.getCentroid());

35. double[] initCentroid1 = new double[clusterCenter.length];

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 172: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

36. double[] initCentroid2 = new double[clusterCenter.length];

37.

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

39. initCentroid1[i] = clusterCenter[i] + 0.0000001;

40. initCentroid2[i] = clusterCenter[i] - 0.0000001;

41. }

42.

43. double[][] child = new double[2][initCentroid1.length];

44.

45. child[0] = initCentroid1;

46. child[1] = initCentroid2;

47.

48. return child;

49.

50. }

51.

52. public double[][] step2Alternate2(Cluster cs) {

53. Calculation calc = new Calculation();

54. Utility util = new Utility();

55. double[][] valueMatrix = util.convert2DPCAListToMatrix(cs);

56. double[] clusterCenter = util.convert1DPCARecordToArray(cs.getCentroid());

57.

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

59. for (int j = 0; j < valueMatrix[i].length; j++) {

60. if (j == valueMatrix[i].length - 1) {

61. System.out.println(valueMatrix[i][j] + "");

62. } else {

63. System.out.print(valueMatrix[i][j] + ",");

64. }

65. }

66. }

67.

68. Matrix dataMatrix = new Matrix(valueMatrix);

69.

70. PCA pca = new PCA(dataMatrix, true);

71. // PCA pca = new PCA(dataMatrix);

72.

73. Matrix eigenvectorsMatrix = pca.getEigenvectorsMatrix();

74. double eigenval = pca.getEigenvalue(0);

75.

76. Matrix princCompMtr = eigenvectorsMatrix.getMatrix(0,

eigenvectorsMatrix.getRowDimension() - 1, 0, 0);

77. double[][] array = princCompMtr.getArray();

78.

79. double[] princComp = new double[array.length];

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

81. princComp[i] = (array[i][0] * (Math.sqrt(2*eigenval/Math.PI)));

82. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 173: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

83.

84. double[] initCentroid1 = new double[clusterCenter.length];

85. double[] initCentroid2 = new double[clusterCenter.length];

86.

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

88.

89. if(Double.isNaN(princComp[i]) || Double.isInfinite(princComp[i])) {

90. princComp[i] = 0.0;

91. }

92.

93. initCentroid1[i] = clusterCenter[i] + princComp[i];

94. initCentroid2[i] = clusterCenter[i] - princComp[i];

95. }

96.

97. double[][] child = new double[2][initCentroid1.length];

98.

99. child[0] = initCentroid1;

100. child[1] = initCentroid2;

101.

102. return child;

103.

104. }

105.

106. public double[][] step2(Cluster cluster) {

107. Utility util = new Utility();

108. Calculation calc = new Calculation();

109. double[][] valueMatrix = util.convert2DPCAListToMatrix(cluster);

110. // TODO periksa semua konversi PCA di kelas util

111. double[] clusterCenter = util.convert1DPCARecordToArray(cluster.getCentroid());

112.

113. Covariance cov = new Covariance(valueMatrix);

114. double[][] covarianceArray = cov.getCovarianceMatrix().getData();

115.

116. Matrix m = new Matrix(covarianceArray);

117. EigenvalueDecomposition eig = m.eig();

118. Matrix eigenValues = eig.getD();

119. Matrix eigenVectors = eig.getV();

120.

121. double[][] eigenValueArr = eigenValues.getArray();

122. double maxEig = 0;

123. int maxEigColIndex = 0;

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

125. if (eigenValueArr[i][i] > maxEig) {

126. maxEig = eigenValueArr[i][i];

127. maxEigColIndex = i;

128. }

129. }

130. //

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 174: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

131. double[][] eigenVectorArr = eigenVectors.getArray();

132. double[] fetchColEigenVector = util.fetchColumnMatrix2D(eigenVectorArr,

maxEigColIndex);

133.

134. double[] initCentroid1 = calc.calculateChildCentroidPositive(clusterCenter,

fetchColEigenVector, maxEig);

135. double[] initCentroid2 = calc.calculateChildCentroidNegative(clusterCenter,

fetchColEigenVector, maxEig);

136.

137. double[][] child = new double[2][initCentroid1.length];

138.

139. child[0] = initCentroid1;

140. child[1] = initCentroid2;

141.

142. return child;

143. }

144.

145. // step 2 : initialize two center (children of c)

146. public double[][] step2B(Cluster cluster) {

147. Utility util = new Utility();

148. Calculation calc = new Calculation();

149. double[][] valueMatrix = util.convert2DListToMatrix(cluster);

150. // TODO periksa semua konversi PCA di kelas util

151. double[] clusterCenter = util.convert1DRecordToArray(cluster.getCentroid());

152. SingularValueDecomposition svd = calc.calculateSVD(valueMatrix);

153. double[] singularValues = svd.getSingularValues();

154. double singularVal = 0;

155. int singularValIndex = 0;

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

157. if (singularValues[i] > singularVal) {

158. singularVal = singularValues[i];

159. singularValIndex = i;

160. }

161. }

162. double[][] vArray = svd.getV().transpose().getArray();

163. double[] fetchRightSingularVector = util.fetchColumnMatrix2D(vArray,

singularValIndex);

164.

165. double[] initCentroid1 = calc.calculateChildCentroidPositive(clusterCenter,

fetchRightSingularVector, singularVal);

166. double[] initCentroid2 = calc.calculateChildCentroidNegative(clusterCenter,

fetchRightSingularVector, singularVal);

167. double[][] child = new double[2][initCentroid1.length];

168.

169. child[0] = initCentroid1;

170. child[1] = initCentroid2;

171.

172. return child;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 175: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

173. }

174.

175. // step 3 : run k-means to get new centroid c1 and c2

176. public Cluster[] step3(Cluster cluster, double[] initCentroid1, double[] initCentroid2) {

177. KMeansAdHoc kmean = new KMeansAdHoc();

178. Cluster[] runKMeans = kmean.runKMeans(cluster, initCentroid1, initCentroid2);

179. return runKMeans;

180. }

181.

182. public Cluster[] step3B(Cluster cluster, double[] initCentroid1, double[] initCentroid2) {

183. KMeansAdHoc kmean = new KMeansAdHoc();

184. Cluster[] runKMeans = kmean.runKMeansB(cluster, initCentroid1, initCentroid2);

185. return runKMeans;

186. }

187.

188. // step 4 : let v = c1 - c2; xi' = (xi, v) / ||v||2

189. public double[] step4(double[] centroid1, double[] centroid2, Cluster cluster) {

190. Utility util = new Utility();

191.

192. Calculation calc = new Calculation();

193.

194. if (centroid1.length != centroid2.length) {

195. throw new IllegalArgumentException();

196. }

197.

198. // Matrix mtrC1 = new Matrix(centroid1, 1);

199. // Matrix mtrC2 = new Matrix(centroid2, 1);

200. //

201. // Matrix mtrV = mtrC1.minus(mtrC2);

202. //

203. // double[] v = mtrV.getArray()[0];

204.

205. double[] v = new double[centroid1.length];

206.

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

208. v[i] = centroid1[i] - centroid2[i];

209. }

210.

211. List<Record> recordList = cluster.getRecordList();

212. int recListSize = recordList.size();

213.

214. double[][] xi = new double[recListSize][recordList.get(0).getDataList().size()];

215.

216. for (int i = 0; i < recListSize; i++) {

217. xi[i] = util.convert1DPCARecordToArray(recordList.get(i));

218. }

219.

220. double[] xiac = new double[recordList.size()];

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 176: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

221.

222. double dotProduct = 0;

223. double norm = 0;

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

225. dotProduct = calc.dotProduct(xi[i], v);

226. // norm = mtrV.norm2();

227. norm = Math.sqrt(calc.dotProduct(v, v));

228. // xiac[i] = dotProduct / Math.pow(norm, 2); // hati2 disini, kita tdk tahu di paper yg

dimaksud dgn 2norm adl 2norm euclidean ataukah norm^2 (euc_norm^2), di code ini, asumsi yg

dimaksud paper adalah norm^2

229. xiac[i] = dotProduct / norm; // hati2 disini, kita tdk tahu di paper yg dimaksud dgn

2norm adl 2norm euclidean ataukah norm^2 (euc_norm^2), di code ini, asumsi yg dimaksud

paper adalah norm^2

230. }

231.

232. double[] transform = calc.zScoreNormalization(xiac);

233.

234. // mengurutkan xiac (ORDERED xi')

235. double[] sortTransf = util.sortArray(transform);

236.

237. // double[] zscore = calc.zScoreNormalization(xiac);

238. double[] z = new double[sortTransf.length];

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

240. z[i] = calc.calculateCDF(sortTransf[i]);

241. }

242.

243. return z;

244. }

245.

246. public double[] step4B(double[] centroid1, double[] centroid2, Cluster cluster) {

247. Utility util = new Utility();

248.

249. Calculation calc = new Calculation();

250.

251. Matrix mtrC1 = new Matrix(centroid1, 1);

252. Matrix mtrC2 = new Matrix(centroid2, 1);

253.

254. Matrix mtrV = mtrC1.minus(mtrC2);

255.

256. double[] v = mtrV.getArray()[0];

257.

258. List<Record> recordList = cluster.getRecordList();

259. int recListSize = recordList.size();

260.

261. double[][] xi = new double[recListSize][recordList.get(0).getPointList().size()];

262.

263. for (int i = 0; i < recListSize; i++) {

264. xi[i] = util.convert1DRecordToArray(recordList.get(i));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 177: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

265. }

266.

267. double[] xiac = new double[recordList.size()];

268.

269. double dotProduct = 0;

270. double norm = 0;

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

272. dotProduct = calc.dotProduct(xi[i], v);

273. norm = mtrV.norm2();

274. xiac[i] = dotProduct / norm; // hati2 disini, kita tdk tahu di paper yg dimaksud dgn

2norm adl 2norm euclidean ataukah norm^2 (euc_norm^2), di code ini, asumsi yg dimaksud

paper adalah norm^2

275. }

276.

277. double[] zscore = calc.zScoreNormalization(xiac);

278.

279. return zscore;

280. }

281.

282. // step 5 : compare critical value with significance level (alpha)

283. public boolean step5(double[] x, double alpha) {

284. boolean stat = false;

285. double ad = NormalityTest.anderson_darling_statistic(x);

286.

287. // adjustment for few datapoints -- fitur ini dicoba justru membuat jml cluster mjd tdk

akurat (mjd lebih sedikit)

288. ad = ad * (1 + (4 / x.length) - (25 / (Math.pow(x.length, 2))));

289.

290. double pValue = NormalityTest.anderson_darling_pvalue(ad, x.length);

291.

292. System.out.println("ad: " + ad);

293. System.out.println("alpha: " + alpha);

294. System.out.println("pval: " + pValue);

295.

296. if (pValue >= alpha) {

297. stat = true;

298. } else {

299. stat = false;

300. }

301.

302. return stat;

303.

304. }

305.

306. }

1.2.1.2.8. Kelas ModifiedLinkedList.java

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 178: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gmeans;

7.

8. import java.io.Serializable;

9. import java.util.Collection;

10. import java.util.Collections;

11. import java.util.Iterator;

12. import java.util.LinkedList;

13.

14. /**

15. *

16. * @author pacman

17. */

18. public class ModifiedLinkedList extends LinkedList<Point> {

19.

20. public enum LIST_TYPE {

21.

22. MASTER,

23. DOCUMENT,

24. OTHER

25. }

26.

27. private LIST_TYPE type;

28.

29. public ModifiedLinkedList() {

30. this.type = ModifiedLinkedList.LIST_TYPE.DOCUMENT;

31. }

32.

33. public ModifiedLinkedList(LIST_TYPE type) {

34. this.type = type;

35. }

36.

37. /**

38. * Menambah node berisi Term didalam list.

39. *

40. * @param o

41. * @return boolean status penambahan Term ke dalam list, false apabila sudah

42. * ada dan tidak perlu ditambah, true jika sebaliknya

43. */

44. public boolean addUnique(Point o) {

45. Point e = o;

46.

47. if (this.type == ModifiedLinkedList.LIST_TYPE.OTHER) {

48. return this.add(e);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 179: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

49. } else {

50. if (this.contains(e)) { // jika didalam list sudah ada term terkait, maka tidak perlu

ditambahkan ke list

51. if (this.type == ModifiedLinkedList.LIST_TYPE.DOCUMENT) { // apabila tipe list adalah

DOCUMENT, maka tambahkan tf saja. Jika tipe list adalah MASTER, maka lewati (tipe master

default tf nya 0. Jgn diubah2 utk MASTER.

52. int index = this.indexOf(e);

53. double tf = this.get(index).getTf() + 1;

54. this.get(index).setTf(tf);

55. }

56. return false;

57. } else { // jika belum ada didalam list

58. if (this.type == ModifiedLinkedList.LIST_TYPE.DOCUMENT) { // apabila tipe list adalah

DOCUMENT, maka tambahkan tf saja ke dalam objek Term yg akan dimasukkan.

59. double tf = e.getTf() + 1;

60. e.setTf(tf);

61. return this.add(e); // masukkan ke dalam list

62. } else {

63. Point a = new Point(e.getTerm(), 0);

64. return this.add(a); // masukkan ke dalam list

65. }

66.

67. }

68. }

69.

70. }

71.

72. /**

73. * Menghapus duplikasi Term dalam list, berguna utk merge list antara MASTER

74. * dan DOCUMENT

75. *

76. * @param c

77. */

78. private void deleteDuplicateData(Collection<Point> c) {

79. Iterator<Point> iter1 = this.iterator();

80.

81. while (iter1.hasNext()) {

82. Point term = iter1.next();

83.

84. Iterator<Point> iter2 = c.iterator();

85.

86. while (iter2.hasNext()) {

87. Point testTerm = iter2.next();

88.

89. if (term.compareTo(testTerm) == 0) {

90. iter2.remove();

91. }

92.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 180: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

93. }

94.

95. }

96. }

97.

98. private void sortAscending() {

99. Collections.sort(this, Collections.reverseOrder());

100. }

101.

102. /**

103. * Merge list antara list dokumen dengan list master term, sehingga semua

104. * list dokumen menjadi sinkron dengan list master term

105. *

106. * @param c Java Collection, antara lain tipe data list

107. */

108. public void mergeList(Collection<Point> c) {

109. deleteDuplicateData(c);

110. addAll(c);

111. sortAscending();

112. }

113.

114. }

1.2.1.2.9. Kelas Point.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package gmeans;

8.

9. /**

10. *

11. * @author pacman

12. */

13. public class Point implements Comparable<Point> {

14.

15. private String term;

16. private double tf;

17. private double df;

18. private double wNorm;

19.

20. public Point() {

21. }

22.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 181: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

23. public Point(String term) {

24. this.term = term;

25. }

26.

27. public Point(double w) {

28. this.wNorm = w;

29. }

30.

31. public Point(String term, double tf) {

32. this.term = term;

33. this.tf = tf;

34. }

35.

36. public Point(String term, double tf, double df) {

37. this.term = term;

38. this.tf = tf;

39. this.df = df;

40. }

41.

42. public Point(String term, double tf, double df, double wNorm) {

43. this.term = term;

44. this.tf = tf;

45. this.df = df;

46. this.wNorm = wNorm;

47. }

48.

49. @Override

50. public int compareTo(Point o) {

51. return o.term.compareTo(term);

52. }

53.

54. /**

55. * Digunakan di CustomLinkedList.contain(e)

56. * @param obj Objek yang akan dicek

57. * @return status kesamaan antar dua objek yang dibandingkan

58. */

59. @Override

60. public boolean equals(Object obj) {

61. if (obj instanceof Point) {

62. Point o = (Point) obj;

63. if (o.term.equalsIgnoreCase(term)) {

64. return true;

65. } else {

66. return false;

67. }

68. } else {

69. return false;

70. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 182: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

71.

72. }

73.

74. public String getTerm() {

75. return term;

76. }

77.

78. public void setTerm(String term) {

79. this.term = term;

80. }

81.

82. public double getTf() {

83. return tf;

84. }

85.

86. public void setTf(double tf) {

87. this.tf = tf;

88. }

89.

90. public double getDf() {

91. return df;

92. }

93.

94. public void setDf(double df) {

95. this.df = df;

96. }

97.

98. public double getWNorm() {

99. return wNorm;

100. }

101.

102. public void setWNorm(double wNorm) {

103. this.wNorm = wNorm;

104. }

105.

106. @Override

107. public String toString() {

108. String term = this.term;

109. String wNorm = String.valueOf(getWNorm());

110. return term + " => " + wNorm; //To change body of generated methods, choose Tools |

Templates.

111. }

112. }

1.2.1.2.10. Kelas Record.java

1. /*

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 183: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gmeans;

7.

8. import java.util.ArrayList;

9. import java.util.List;

10. import org.apache.commons.math3.ml.clustering.Clusterable;

11.

12. /**

13. *

14. * @author root

15. */

16. public class Record implements Clusterable {

17.

18. private int id_document;

19. private String recordID;

20. private String content;

21. private String topic;

22. private ModifiedLinkedList pointList; // act as SingleData class

23. private ModifiedLinkedList reducedPointList;

24. private List<Double> dataList; // act as SingleData class

25. private List<Double> originalDataList;

26. private String classAssigned;

27.

28. public Record() {

29. pointList = new ModifiedLinkedList();

30. reducedPointList = new ModifiedLinkedList();

31. dataList = new ArrayList<>();

32. originalDataList = new ArrayList<>();

33. }

34.

35. @Override

36. public String toString() {

37. // String title = "Record " + recordID + " : ";

38. String title = this.recordID;

39. String content = "";

40. return title + content;

41. }

42.

43. public int getId_document() {

44. return id_document;

45. }

46.

47. public void setId_document(int id_document) {

48. this.id_document = id_document;

49. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 184: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

50.

51. public String getRecordID() {

52. return recordID;

53. }

54.

55. public void setRecordID(String recordID) {

56. this.recordID = recordID;

57. }

58.

59. public ModifiedLinkedList getPointList() {

60. return pointList;

61. }

62.

63. public void setPointList(ModifiedLinkedList pointList) {

64. this.pointList = pointList;

65. }

66.

67. public ModifiedLinkedList getReducedPointList() {

68. return reducedPointList;

69. }

70.

71. public void setReducedPointList(ModifiedLinkedList reducedPointList) {

72. this.reducedPointList = reducedPointList;

73. }

74.

75. public List<Double> getDataList() {

76. return dataList;

77. }

78.

79. public void setDataList(List<Double> dataList) {

80. this.dataList = dataList;

81. }

82.

83. public List<Double> getOriginalDataList() {

84. return originalDataList;

85. }

86.

87. public void setOriginalDataList(List<Double> originalDataList) {

88. this.originalDataList = originalDataList;

89. }

90.

91. public String getClassAssigned() {

92. return classAssigned;

93. }

94.

95. public void setClassAssigned(String classAssigned) {

96. this.classAssigned = classAssigned;

97. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 185: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

98.

99. public String getContent() {

100. return content;

101. }

102.

103. public void setContent(String content) {

104. this.content = content;

105. }

106.

107. public String getTopic() {

108. return topic;

109. }

110.

111. public void setTopic(String topic) {

112. this.topic = topic;

113. }

114.

115. @Override

116. public double[] getPoint() {

117. Double[] toArray = this.dataList.toArray(new Double[this.dataList.size()]);

118. double[] arr = new double[toArray.length];

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

120. arr[i] = toArray[i];

121. }

122. return arr;

123. }

124. }

1.2.1.2.11. Kelas Utility.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gmeans;

7.

8. import Jama.Matrix;

9. import java.io.File;

10. import java.io.IOException;

11. import java.util.ArrayList;

12. import java.util.Arrays;

13. import java.util.Iterator;

14. import java.util.LinkedList;

15. import java.util.List;

16. import org.apache.commons.io.FileUtils;

17. import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 186: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

18.

19. /**

20. *

21. * @author pacman

22. */

23. public class Utility {

24.

25. public Utility() {

26. }

27.

28. /**

29. * Mengubah data dalam bentuk list ke tipe data array

30. *

31. * usages: Dikhususkan untuk list yang berada dalam kelas Cluster

32. * (recordList), karena didalam recordList terdapat list lagi (doubleList)

33. *

34. * @param cluster Obyek kelas Cluster

35. * @return Array 2d hasil konversi

36. */

37. public double[][] convert2DListToMatrix(Cluster cluster) {

38. List<Record> recordList = cluster.getRecordList();

39.

40. int rowCount = recordList.size();

41. int colCount = recordList.get(0).getReducedPointList().size();

42.

43. double[][] matrixData = new double[rowCount][colCount];

44. for (int i = 0; i < rowCount; i++) {

45. for (int j = 0; j < recordList.get(i).getReducedPointList().size(); j++) {

46. matrixData[i][j] = recordList.get(i).getReducedPointList().get(j).getWNorm();

47. }

48. }

49.

50. // for (int i = 0; i < rowCount; i++) {

51. // for (int j = 0; j < recordList.get(i).getPointList().size(); j++) {

52. // matrixData[i][j] = recordList.get(i).getPointList().get(j).getWNorm();

53. // }

54. // }

55.

56. return matrixData;

57.

58. }

59.

60. public double[][] convert2DOriginalListToMatrix(Cluster cluster) {

61. List<Record> recordList = cluster.getRecordList();

62.

63. int rowCount = recordList.size();

64. int colCount = recordList.get(0).getPointList().size();

65.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 187: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

66. double[][] matrixData = new double[rowCount][colCount];

67.

68. for (int i = 0; i < rowCount; i++) {

69. for (int j = 0; j < recordList.get(i).getPointList().size(); j++) {

70. matrixData[i][j] = recordList.get(i).getPointList().get(j).getWNorm();

71. }

72. }

73.

74. return matrixData;

75.

76. }

77.

78. public double[][] convert2DPCAListToMatrix(Cluster cluster) {

79. List<Record> recordList = cluster.getRecordList();

80.

81. int rowCount = recordList.size();

82. int colCount = recordList.get(0).getDataList().size();

83.

84. double[][] matrixData = new double[rowCount][colCount];

85.

86. for (int i = 0; i < rowCount; i++) {

87. for (int j = 0; j < recordList.get(i).getDataList().size(); j++) {

88. matrixData[i][j] = recordList.get(i).getDataList().get(j);

89. }

90. }

91.

92. return matrixData;

93.

94. }

95.

96. public double[][] convert2DListToMatrixSquare(Cluster cluster) {

97. List<Record> recordList = cluster.getRecordList();

98.

99. // int rowCount = recordList.size();

100. // int colCount = recordList.get(0).getDataList().size();

101. int rowCount = recordList.get(0).getPointList().size();

102. int colCount = recordList.get(0).getPointList().size();

103.

104. double[][] matrixData = new double[rowCount][colCount];

105.

106. for (int i = 0; i < rowCount; i++) {

107. for (int j = 0; j < recordList.get(0).getPointList().size(); j++) {

108. try {

109. matrixData[i][j] = recordList.get(i).getPointList().get(j).getWNorm();

110. } catch (IndexOutOfBoundsException ex) {

111. matrixData[i][j] = 0.0;

112. }

113. // if(recordList.get(i).getDataList() != null) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 188: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

114. //

115. // } else {

116. //

117. // }

118. }

119. }

120.

121. return matrixData;

122.

123. }

124.

125. public double[] convert1DRecordToArray(Record record) {

126. List<Point> doubleList = record.getPointList();

127. double[] arrayData = new double[doubleList.size()];

128.

129. for (int i = 0; i < doubleList.size(); i++) {

130. arrayData[i] = doubleList.get(i).getWNorm();

131. }

132.

133. return arrayData;

134. }

135.

136. public double[] convert1DPCARecordToArray(Record record) {

137. List<Double> doubleList = record.getDataList();

138. double[] arrayData = new double[doubleList.size()];

139.

140. for (int i = 0; i < doubleList.size(); i++) {

141. arrayData[i] = doubleList.get(i);

142. }

143.

144. return arrayData;

145. }

146.

147. public List<Double> convert1DPCAArrayToList(double[] array) {

148. List<Double> doubleList = new ArrayList<>();

149. for (double data : array) {

150. doubleList.add(data);

151. }

152. return doubleList;

153. }

154.

155. /**

156. * Mengkonvert array 1d ke kelas Record

157. *

158. * usages: Mengisi centroid pada kelas Cluster (centroid disana

159. * didefinisikan dlm bentuk objek Record, bukan list atau array)

160. *

161. * @param array

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 189: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

162. * @return

163. */

164. public Record convert1DArrayToRecord(double[] array) {

165. LinkedList<Point> doubleList = new LinkedList<>();

166. for (double data : array) {

167. Point point = new Point(data);

168. doubleList.add(point);

169. }

170. Record rec = new Record();

171. ModifiedLinkedList convert = convertLinkedListToModifiedLinkedList(doubleList);

172. rec.setPointList(convert);

173. return rec;

174. }

175.

176. public Record convert1DPCAArrayToRecord(double[] array) {

177. LinkedList<Double> doubleList = new LinkedList<>();

178. for (double data : array) {

179. doubleList.add(data);

180. }

181. Record rec = new Record();

182. rec.setDataList(doubleList);

183. return rec;

184. }

185.

186. /**

187. * Mengambil data dari dalam matrix berdasarkan kolom yang diminta

188. *

189. * usages: Mengambil kolom dari matrix eigenvectors

190. *

191. * @param sourceMatrix Matrix sumber yang akan difetch kolomnya

192. * @param colIndex Index kolom yang diminta

193. * @return Array 1 dimensi berisi data dalam kolom yang diminta

194. */

195. public double[] fetchColumnMatrix2D(double[][] sourceMatrix, int colIndex) {

196. int length = sourceMatrix.length;

197. double[] fetch = new double[length];

198.

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

200. fetch[i] = sourceMatrix[i][colIndex];

201. }

202.

203. return fetch;

204. }

205.

206. public ModifiedLinkedList convertLinkedListToModifiedLinkedList(LinkedList<Point> data)

{

207. Iterator<Point> iterator = data.iterator();

208. ModifiedLinkedList modifiedLinkedList = new

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 190: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

ModifiedLinkedList(ModifiedLinkedList.LIST_TYPE.OTHER);

209. while (iterator.hasNext()) {

210. Point next = iterator.next();

211. modifiedLinkedList.addUnique(next);

212. }

213. return modifiedLinkedList;

214. }

215.

216. public Matrix replicateMatrix(double[] data, int colCount) {

217. double[][] newData = new double[data.length][colCount];

218.

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

220. for (int j = 0; j < newData[i].length; j++) {

221. newData[i][j] = data[i];

222. }

223. }

224.

225. return new Matrix(newData);

226. }

227.

228. public Cluster normalizeCluster(Cluster c) {

229. Cluster cs = c;

230. double[][] convert = convert2DListToMatrix(cs);

231. double[] mean = new double[convert[0].length];

232. double[] stdev = new double[convert[0].length];

233. double[] square = new double[convert[0].length];

234.

235. for (int i = 0; i < convert[0].length; i++) {

236. double[] fetch = fetchColumnMatrix2D(convert, i);

237. DescriptiveStatistics ds = new DescriptiveStatistics(fetch);

238. mean[i] = ds.getMean();

239. stdev[i] = ds.getStandardDeviation();

240. square[i] = ds.getSumsq();

241. }

242.

243. Iterator<Record> iterator = cs.getRecordList().iterator();

244. while (iterator.hasNext()) {

245. Record record = iterator.next();

246. // ModifiedLinkedList pointList = record.getPointList();

247. ModifiedLinkedList pointList = record.getReducedPointList();

248. for (int i = 0; i < pointList.size(); i++) {

249. Point point = pointList.get(i);

250. double w = point.getWNorm();

251. // double z = (w - mean[i]) / stdev[i];

252. double z = w / Math.sqrt(square[i]);

253. Point newPoint = new Point(point.getTerm(), point.getTf(), point.getDf(), z);

254. pointList.set(i, newPoint);

255. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 191: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

256. }

257. // cs = normalizeZScore(cs);

258. return cs;

259.

260. }

261.

262. public String[] sentenceTermContainInList(ModifiedLinkedList list, String[] sentence) {

263. List<String> termPool = new ArrayList<>();

264. Iterator<Point> iterator = list.iterator();

265.

266. // CEK APAKAH ADA DI LIST, KALAU ADA MASUKKAN KE TERMPOOL

267. a:

268. for (String term : sentence) {

269. b:

270. for (int i = 0; i < list.size(); i++) {

271. Point next = list.get(i);

272. if (next.getTerm().equalsIgnoreCase(term) == true) {

273. termPool.add(term);

274. continue a;

275. }

276. }

277. }

278.

279. // UBAH LIST TERMPOOL KE BENTUK ARRAY

280. String[] result = new String[termPool.size()];

281. for (int i = 0; i < termPool.size(); i++) {

282. result[i] = termPool.get(i);

283. }

284.

285. return result;

286.

287. }

288.

289. public boolean emptyStringArray(String[] array) {

290. for (String a : array) {

291. if (a != null || a != "") {

292. return false;

293. }

294. }

295. return true;

296. }

297.

298. public Cluster normalizeZScore(Cluster c) {

299. Cluster cs = c;

300. double[][] convert = convert2DListToMatrix(cs);

301. double[] mean = new double[convert[0].length];

302. double[] stdev = new double[convert[0].length];

303.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 192: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

304. for (int i = 0; i < convert[0].length; i++) {

305. double[] fetch = fetchColumnMatrix2D(convert, i);

306. DescriptiveStatistics ds = new DescriptiveStatistics(fetch);

307. mean[i] = ds.getMean();

308. stdev[i] = ds.getStandardDeviation();

309. }

310.

311. Iterator<Record> iterator = cs.getRecordList().iterator();

312. while (iterator.hasNext()) {

313. Record record = iterator.next();

314. ModifiedLinkedList pointList = record.getPointList();

315. for (int i = 0; i < pointList.size(); i++) {

316. Point point = pointList.get(i);

317. double w = point.getWNorm();

318. double z = (w - mean[i]) / stdev[i];

319. Point newPoint = new Point(point.getTerm(), point.getTf(), point.getDf(), z);

320. pointList.set(i, newPoint);

321. }

322. }

323. return cs;

324. }

325.

326. public void writeToFile(Cluster cs, String filename) throws IOException {

327. double[][] data = convert2DListToMatrix(cs);

328. File fi = new File("./data/" + filename + ".csv");

329. String res = "";

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

331. for (int j = 0; j < data[i].length; j++) {

332. if (j + 1 == data[i].length) {

333. res = res + String.valueOf(data[i][j]) + "\n";

334. } else {

335. res = res + String.valueOf(data[i][j]) + ",";

336. }

337. }

338. }

339. FileUtils.writeStringToFile(fi, res);

340. }

341.

342. public void writeToFile(double[][] data, String filename) throws IOException {

343. File fi = new File("./data/" + filename + ".csv");

344. String res = "";

345. System.out.println("data length: " + data.length + " data[0]length: " + data[0].length);

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

347. for (int j = 0; j < data[i].length; j++) {

348. if (j == data[i].length - 1) {

349. // System.out.print(data[i][j]+"\n");

350. res = res + String.valueOf(data[i][j]) + "\n";

351. } else {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 193: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

352. // System.out.print(data[i][j]+",");

353. res = res + String.valueOf(data[i][j]) + ",";

354. }

355. }

356. }

357. System.out.println(" PRINTING ");

358. System.out.println(res);

359. FileUtils.writeStringToFile(fi, res);

360. System.out.println(" END OF PRINTING ");

361. }

362.

363. public void writePCAToFile(Cluster cs, String filename) throws IOException {

364. double[][] data = convert2DPCAListToMatrix(cs);

365. File fi = new File("./data/" + filename + ".csv");

366. String res = "";

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

368. for (int j = 0; j < data[i].length; j++) {

369. if (j + 1 == data[i].length) {

370. res = res + String.valueOf(data[i][j]) + "\n";

371. } else {

372. res = res + String.valueOf(data[i][j]) + ",";

373. }

374. }

375. }

376. FileUtils.writeStringToFile(fi, res);

377. }

378.

379. public double[] sortArray(double[] data) {

380. double[] arr = new double[data.length];

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

382. arr[i] = data[i];

383. }

384.

385. Arrays.sort(arr);

386. return arr;

387. }

388.

389. }

1.2.1.3. Package gui

1.2.1.3.1. Kelas ClusteringView.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 194: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

6.

7. package gui;

8.

9. import java.io.PrintStream;

10. import javax.swing.JFileChooser;

11. import javax.swing.JProgressBar;

12. import javax.swing.filechooser.FileNameExtensionFilter;

13. import main.Main;

14.

15. /**

16. *

17. * @author pacman

18. */

19. public class ClusteringView extends javax.swing.JFrame {

20.

21. /**

22. * Creates new form ClusteringView

23. */

24. public ClusteringView() {

25. initComponents();

26. PrintStream ps = System.out;

27. System.setOut(new PrintStream(new StreamCapturer("> ", capturePane1, ps)));

28. }

29.

30. public JProgressBar getProgressBar() {

31. return progressBar;

32. }

33.

34. /**

35. * This method is called from within the constructor to initialize the form.

36. * WARNING: Do NOT modify this code. The content of this method is always

37. * regenerated by the Form Editor.

38. */

39. @SuppressWarnings("unchecked")

40. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-

BEGIN:initComponents

41. private void initComponents() {

42.

43. jDesktopPane1 = new javax.swing.JDesktopPane();

44. jPanel1 = new javax.swing.JPanel();

45. jPanel3 = new javax.swing.JPanel();

46. jLabel1 = new javax.swing.JLabel();

47. pathDocumentTxt = new javax.swing.JTextField();

48. selectDocumentButton = new javax.swing.JButton();

49. uploadButton = new javax.swing.JButton();

50. simpanDBCB = new javax.swing.JCheckBox();

51. jPanel2 = new javax.swing.JPanel();

52. progressBar = new javax.swing.JProgressBar();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 195: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

53. jPanel4 = new javax.swing.JPanel();

54. capturePane1 = new gui.CapturePane();

55. jMenuBar1 = new javax.swing.JMenuBar();

56. jMenu1 = new javax.swing.JMenu();

57. jMenu2 = new javax.swing.JMenu();

58.

59. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

60.

61. jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());

62.

63. jLabel1.setText("Path Dokumen");

64. jLabel1.setToolTipText("");

65.

66. pathDocumentTxt.setEditable(false);

67.

68. selectDocumentButton.setText("jButton1");

69. selectDocumentButton.addActionListener(new java.awt.event.ActionListener() {

70. public void actionPerformed(java.awt.event.ActionEvent evt) {

71. selectDocumentButtonActionPerformed(evt);

72. }

73. });

74.

75. uploadButton.setText("Proses Dokumen");

76. uploadButton.addActionListener(new java.awt.event.ActionListener() {

77. public void actionPerformed(java.awt.event.ActionEvent evt) {

78. uploadButtonActionPerformed(evt);

79. }

80. });

81.

82. simpanDBCB.setText("Simpan di DB");

83.

84. javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);

85. jPanel3.setLayout(jPanel3Layout);

86. jPanel3Layout.setHorizontalGroup(

87. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

88. .addGroup(jPanel3Layout.createSequentialGroup()

89. .addContainerGap()

90. .addComponent(jLabel1)

91. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

92. .addComponent(pathDocumentTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 190,

Short.MAX_VALUE)

93. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

94. .addComponent(selectDocumentButton, javax.swing.GroupLayout.PREFERRED_SIZE, 35,

javax.swing.GroupLayout.PREFERRED_SIZE)

95. .addGap(18, 18, 18)

96. .addComponent(uploadButton)

97. .addGap(18, 18, 18)

98. .addComponent(simpanDBCB)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 196: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

99. .addContainerGap())

100. );

101. jPanel3Layout.setVerticalGroup(

102. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

103. .addGroup(jPanel3Layout.createSequentialGroup()

104. .addContainerGap()

105.

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

106. .addComponent(jLabel1)

107. .addComponent(pathDocumentTxt, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

108. .addComponent(selectDocumentButton)

109. .addComponent(uploadButton)

110. .addComponent(simpanDBCB))

111. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

112. );

113.

114. jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

115.

116. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);

117. jPanel2.setLayout(jPanel2Layout);

118. jPanel2Layout.setHorizontalGroup(

119. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

120. .addGroup(jPanel2Layout.createSequentialGroup()

121. .addContainerGap()

122. .addComponent(progressBar, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

123. .addContainerGap())

124. );

125. jPanel2Layout.setVerticalGroup(

126. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

127. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel2Layout.createSequentialGroup()

128. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

129. .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

130. .addContainerGap())

131. );

132.

133. jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Console"));

134.

135. javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);

136. jPanel4.setLayout(jPanel4Layout);

137. jPanel4Layout.setHorizontalGroup(

138. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

139. .addGroup(jPanel4Layout.createSequentialGroup()

140. .addContainerGap()

141. .addComponent(capturePane1, javax.swing.GroupLayout.DEFAULT_SIZE,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 197: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

142. .addContainerGap())

143. );

144. jPanel4Layout.setVerticalGroup(

145. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

146. .addGroup(jPanel4Layout.createSequentialGroup()

147. .addContainerGap()

148. .addComponent(capturePane1, javax.swing.GroupLayout.DEFAULT_SIZE, 341,

Short.MAX_VALUE)

149. .addContainerGap())

150. );

151.

152. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

153. jPanel1.setLayout(jPanel1Layout);

154. jPanel1Layout.setHorizontalGroup(

155. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

156. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel1Layout.createSequentialGroup()

157. .addContainerGap()

158.

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)

159. .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

160. .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE)

161. .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

162. .addContainerGap())

163. );

164. jPanel1Layout.setVerticalGroup(

165. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

166. .addGroup(jPanel1Layout.createSequentialGroup()

167. .addContainerGap()

168. .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

169. .addGap(18, 18, 18)

170. .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

171. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

172. .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

173. .addContainerGap())

174. );

175.

176. javax.swing.GroupLayout jDesktopPane1Layout = new

javax.swing.GroupLayout(jDesktopPane1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 198: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

177. jDesktopPane1.setLayout(jDesktopPane1Layout);

178. jDesktopPane1Layout.setHorizontalGroup(

179.

jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

180. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

181. );

182. jDesktopPane1Layout.setVerticalGroup(

183.

jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

184. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

185. );

186. jDesktopPane1.setLayer(jPanel1, javax.swing.JLayeredPane.DEFAULT_LAYER);

187.

188. jMenu1.setText("File");

189. jMenuBar1.add(jMenu1);

190.

191. jMenu2.setText("Edit");

192. jMenuBar1.add(jMenu2);

193.

194. setJMenuBar(jMenuBar1);

195.

196. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

197. getContentPane().setLayout(layout);

198. layout.setHorizontalGroup(

199. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

200. .addComponent(jDesktopPane1)

201. );

202. layout.setVerticalGroup(

203. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

204. .addComponent(jDesktopPane1)

205. );

206.

207. pack();

208. }// </editor-fold>//GEN-END:initComponents

209.

210. private void selectDocumentButtonActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_selectDocumentButtonActionPerformed

211. // TODO add your handling code here:

212. JFileChooser fileChooser = new JFileChooser();

213.

214. FileNameExtensionFilter extensionFilter = new FileNameExtensionFilter("TXT File",

"txt");

215. fileChooser.setFileFilter(extensionFilter);

216. int returnVal = fileChooser.showOpenDialog(this);

217. if(returnVal == JFileChooser.APPROVE_OPTION) {

218. String absolutePath = fileChooser.getSelectedFile().getAbsolutePath();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 199: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

219. pathDocumentTxt.setText(absolutePath);

220. }

221. // coba-coba

222. // progressBar.setValue(10); // max 100

223. }//GEN-LAST:event_selectDocumentButtonActionPerformed

224.

225. private void uploadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-

FIRST:event_uploadButtonActionPerformed

226. // TODO add your handling code here:

227. String path = pathDocumentTxt.getText();

228. Main m = new Main();

229. boolean saveDB = simpanDBCB.isSelected();

230. m.performDocumentClustering(this, path, saveDB);

231. System.exit(0);

232. // JOptionPane.showMessageDialog(this, "Proses clustering selesai!");

233. }//GEN-LAST:event_uploadButtonActionPerformed

234.

235. /**

236. * @param args the command line arguments

237. */

238. public static void main(String args[]) {

239. /* Set the Nimbus look and feel */

240. //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

241. /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

242. * For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

243. */

244. try {

245. for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

246. if ("Nimbus".equals(info.getName())) {

247. javax.swing.UIManager.setLookAndFeel(info.getClassName());

248. break;

249. }

250. }

251. } catch (ClassNotFoundException ex) {

252.

java.util.logging.Logger.getLogger(ClusteringView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

253. } catch (InstantiationException ex) {

254.

java.util.logging.Logger.getLogger(ClusteringView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

255. } catch (IllegalAccessException ex) {

256.

java.util.logging.Logger.getLogger(ClusteringView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

257. } catch (javax.swing.UnsupportedLookAndFeelException ex) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 200: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

258.

java.util.logging.Logger.getLogger(ClusteringView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

259. }

260. //</editor-fold>

261.

262. /* Create and display the form */

263. java.awt.EventQueue.invokeLater(new Runnable() {

264. public void run() {

265. new ClusteringView().setVisible(true);

266. }

267. });

268. }

269.

270. // Variables declaration - do not modify//GEN-BEGIN:variables

271. private gui.CapturePane capturePane1;

272. private javax.swing.JDesktopPane jDesktopPane1;

273. private javax.swing.JLabel jLabel1;

274. private javax.swing.JMenu jMenu1;

275. private javax.swing.JMenu jMenu2;

276. private javax.swing.JMenuBar jMenuBar1;

277. private javax.swing.JPanel jPanel1;

278. private javax.swing.JPanel jPanel2;

279. private javax.swing.JPanel jPanel3;

280. private javax.swing.JPanel jPanel4;

281. private javax.swing.JTextField pathDocumentTxt;

282. private javax.swing.JProgressBar progressBar;

283. private javax.swing.JButton selectDocumentButton;

284. private javax.swing.JCheckBox simpanDBCB;

285. private javax.swing.JButton uploadButton;

286. // End of variables declaration//GEN-END:variables

287. }

1.2.1.3.2. Kelas RetrievalTableModel.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gui;

7.

8. import gmeans.Record;

9. import java.util.ArrayList;

10. import java.util.List;

11. import javax.swing.table.AbstractTableModel;

12.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 201: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

13. /**

14. *

15. * @author pacman

16. */

17. public class RetrievalTableModel extends AbstractTableModel {

18.

19. private List<Record> recordList = new ArrayList<Record>();

20. private final int COLUMN_COUNT = 2;

21.

22. public RetrievalTableModel() {

23. }

24.

25. public RetrievalTableModel(List<Record> recordList) {

26. this.recordList = recordList;

27. }

28.

29. @Override

30. public int getRowCount() {

31. return recordList.size();

32. }

33.

34. @Override

35. public int getColumnCount() {

36. return COLUMN_COUNT;

37. }

38.

39. @Override

40. public Object getValueAt(int rowIndex, int columnIndex) {

41. Record rec = recordList.get(rowIndex);

42. switch (columnIndex) {

43. case 0:

44. return rowIndex + 1;

45. case 1:

46. return rec.getRecordID();

47. default:

48. return "";

49. }

50. }

51.

52. @Override

53. public String getColumnName(int column) {

54. switch (column) {

55. case 0:

56. return "NO";

57. case 1:

58. return "DOKUMEN";

59. default:

60. return "";

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 202: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

61. }

62. }

63.

64. public Record getModelClass(int rowIndex) {

65. return recordList.get(rowIndex);

66. }

67.

68. }

1.2.1.3.3. Kelas RetrievalView.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package gui;

7.

8. import database.DatabaseRWOperation;

9. import gmeans.Record;

10. import helper.NotepadPrinter;

11. import java.io.IOException;

12. import java.io.PrintStream;

13. import java.sql.SQLException;

14. import java.util.List;

15. import java.util.logging.Level;

16. import java.util.logging.Logger;

17. import javax.swing.JOptionPane;

18. import main.MainRetrieval;

19.

20. /**

21. *

22. * @author pacman

23. */

24. public class RetrievalView extends javax.swing.JFrame {

25.

26. private RetrievalTableModel retrivalTableModel;

27.

28. /**

29. * Creates new form RetrievalView

30. */

31. public RetrievalView() {

32. initComponents();

33.

34. PrintStream ps = System.out;

35. System.setOut(new PrintStream(new StreamCapturer("> ", capturePane1, ps)));

36.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 203: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

37. this.retrivalTableModel = new RetrievalTableModel();

38. this.retrievalTable.setModel(this.retrivalTableModel);

39. this.jInternalFrame1.hide();

40. }

41.

42. /**

43. * This method is called from within the constructor to initialize the form.

44. * WARNING: Do NOT modify this code. The content of this method is always

45. * regenerated by the Form Editor.

46. */

47. @SuppressWarnings("unchecked")

48. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-

BEGIN:initComponents

49. private void initComponents() {

50.

51. irTypeButtonGroup = new javax.swing.ButtonGroup();

52. jDesktopPane1 = new javax.swing.JDesktopPane();

53. jInternalFrame1 = new javax.swing.JInternalFrame();

54. jPanel5 = new javax.swing.JPanel();

55. docTitleLabel = new javax.swing.JLabel();

56. jScrollPane3 = new javax.swing.JScrollPane();

57. contentTxt = new javax.swing.JTextArea();

58. jPanel1 = new javax.swing.JPanel();

59. jPanel2 = new javax.swing.JPanel();

60. jLabel1 = new javax.swing.JLabel();

61. cariButton = new javax.swing.JButton();

62. queryTxt = new javax.swing.JTextField();

63. konvensionalRB = new javax.swing.JRadioButton();

64. clusterBasedRB = new javax.swing.JRadioButton();

65. jPanel3 = new javax.swing.JPanel();

66. jScrollPane1 = new javax.swing.JScrollPane();

67. retrievalTable = new javax.swing.JTable();

68. jPanel4 = new javax.swing.JPanel();

69. capturePane1 = new gui.CapturePane();

70. jMenuBar1 = new javax.swing.JMenuBar();

71. jMenu1 = new javax.swing.JMenu();

72. jMenu2 = new javax.swing.JMenu();

73.

74. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

75.

76. jInternalFrame1.setClosable(true);

77.

jInternalFrame1.setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);

78. jInternalFrame1.setVisible(true);

79.

80. jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());

81.

82. docTitleLabel.setText("jLabel2");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 204: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

83.

84. contentTxt.setColumns(20);

85. contentTxt.setLineWrap(true);

86. contentTxt.setRows(5);

87. contentTxt.setWrapStyleWord(true);

88. jScrollPane3.setViewportView(contentTxt);

89.

90. javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);

91. jPanel5.setLayout(jPanel5Layout);

92. jPanel5Layout.setHorizontalGroup(

93. jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

94. .addGroup(jPanel5Layout.createSequentialGroup()

95. .addContainerGap()

96.

.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

97. .addComponent(jScrollPane3)

98. .addGroup(jPanel5Layout.createSequentialGroup()

99. .addComponent(docTitleLabel)

100. .addGap(0, 395, Short.MAX_VALUE)))

101. .addContainerGap())

102. );

103. jPanel5Layout.setVerticalGroup(

104. jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

105. .addGroup(jPanel5Layout.createSequentialGroup()

106. .addContainerGap()

107. .addComponent(docTitleLabel)

108. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

109. .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 270,

Short.MAX_VALUE)

110. .addContainerGap())

111. );

112.

113. javax.swing.GroupLayout jInternalFrame1Layout = new

javax.swing.GroupLayout(jInternalFrame1.getContentPane());

114. jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);

115. jInternalFrame1Layout.setHorizontalGroup(

116.

jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

117. .addGroup(jInternalFrame1Layout.createSequentialGroup()

118. .addContainerGap()

119. .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

120. .addContainerGap())

121. );

122. jInternalFrame1Layout.setVerticalGroup(

123.

jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

124. .addGroup(jInternalFrame1Layout.createSequentialGroup()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 205: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

125. .addContainerGap()

126. .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

127. .addContainerGap())

128. );

129.

130. jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

131.

132. jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

133.

134. jLabel1.setText("Pencarian");

135.

136. cariButton.setText("Cari");

137. cariButton.addActionListener(new java.awt.event.ActionListener() {

138. public void actionPerformed(java.awt.event.ActionEvent evt) {

139. cariButtonActionPerformed(evt);

140. }

141. });

142.

143. irTypeButtonGroup.add(konvensionalRB);

144. konvensionalRB.setText("Konvensional");

145.

146. irTypeButtonGroup.add(clusterBasedRB);

147. clusterBasedRB.setSelected(true);

148. clusterBasedRB.setText("Cluster Based");

149.

150. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);

151. jPanel2.setLayout(jPanel2Layout);

152. jPanel2Layout.setHorizontalGroup(

153. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

154. .addGroup(jPanel2Layout.createSequentialGroup()

155. .addContainerGap()

156. .addComponent(jLabel1)

157. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

158. .addComponent(queryTxt, javax.swing.GroupLayout.DEFAULT_SIZE, 373,

Short.MAX_VALUE)

159. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

160. .addComponent(cariButton)

161. .addGap(18, 18, 18)

162. .addComponent(clusterBasedRB)

163. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

164. .addComponent(konvensionalRB)

165. .addContainerGap())

166. );

167. jPanel2Layout.setVerticalGroup(

168. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

169. .addGroup(jPanel2Layout.createSequentialGroup()

170. .addContainerGap()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 206: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

171.

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

172. .addComponent(jLabel1)

173. .addComponent(queryTxt, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

174. .addComponent(cariButton)

175. .addComponent(konvensionalRB)

176. .addComponent(clusterBasedRB))

177. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

178. );

179.

180. jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Hasil Pencarian"));

181.

182. retrievalTable.setModel(new javax.swing.table.DefaultTableModel(

183. new Object [][] {

184. {null, null},

185. {null, null},

186. {null, null},

187. {null, null}

188. },

189. new String [] {

190. "NO", "DOKUMEN"

191. }

192. ) {

193. boolean[] canEdit = new boolean [] {

194. false, false

195. };

196.

197. public boolean isCellEditable(int rowIndex, int columnIndex) {

198. return canEdit [columnIndex];

199. }

200. });

201. retrievalTable.getTableHeader().setReorderingAllowed(false);

202. retrievalTable.addMouseListener(new java.awt.event.MouseAdapter() {

203. public void mouseClicked(java.awt.event.MouseEvent evt) {

204. retrievalTableMouseClicked(evt);

205. }

206. });

207. jScrollPane1.setViewportView(retrievalTable);

208. if (retrievalTable.getColumnModel().getColumnCount() > 0) {

209. retrievalTable.getColumnModel().getColumn(0).setResizable(false);

210. }

211.

212. javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);

213. jPanel3.setLayout(jPanel3Layout);

214. jPanel3Layout.setHorizontalGroup(

215. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

216. .addGroup(jPanel3Layout.createSequentialGroup()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 207: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

217. .addContainerGap()

218. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 638,

Short.MAX_VALUE)

219. .addContainerGap())

220. );

221. jPanel3Layout.setVerticalGroup(

222. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

223. .addGroup(jPanel3Layout.createSequentialGroup()

224. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 257,

Short.MAX_VALUE)

225. .addContainerGap())

226. );

227.

228. jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Progress Pencarian"));

229.

230. javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);

231. jPanel4.setLayout(jPanel4Layout);

232. jPanel4Layout.setHorizontalGroup(

233. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

234. .addGroup(jPanel4Layout.createSequentialGroup()

235. .addContainerGap()

236. .addComponent(capturePane1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

237. .addContainerGap())

238. );

239. jPanel4Layout.setVerticalGroup(

240. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

241. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel4Layout.createSequentialGroup()

242. .addContainerGap()

243. .addComponent(capturePane1, javax.swing.GroupLayout.DEFAULT_SIZE, 165,

Short.MAX_VALUE)

244. .addContainerGap())

245. );

246.

247. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

248. jPanel1.setLayout(jPanel1Layout);

249. jPanel1Layout.setHorizontalGroup(

250. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

251. .addGroup(jPanel1Layout.createSequentialGroup()

252. .addContainerGap()

253.

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

254. .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

255. .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

256. .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 208: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

257. .addContainerGap())

258. );

259. jPanel1Layout.setVerticalGroup(

260. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

261. .addGroup(jPanel1Layout.createSequentialGroup()

262. .addContainerGap()

263. .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

264. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

265. .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

266. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

267. .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

268. .addContainerGap())

269. );

270.

271. javax.swing.GroupLayout jDesktopPane1Layout = new

javax.swing.GroupLayout(jDesktopPane1);

272. jDesktopPane1.setLayout(jDesktopPane1Layout);

273. jDesktopPane1Layout.setHorizontalGroup(

274.

jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

275. .addGap(0, 854, Short.MAX_VALUE)

276.

.addGroup(jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

277. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

278.

.addGroup(jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

279. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jDesktopPane1Layout.createSequentialGroup()

280. .addContainerGap(69, Short.MAX_VALUE)

281. .addComponent(jInternalFrame1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

282. .addContainerGap(123, Short.MAX_VALUE)))

283. );

284. jDesktopPane1Layout.setVerticalGroup(

285.

jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

286. .addGap(0, 526, Short.MAX_VALUE)

287.

.addGroup(jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

288. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 209: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

289.

.addGroup(jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

290. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jDesktopPane1Layout.createSequentialGroup()

291. .addContainerGap(93, Short.MAX_VALUE)

292. .addComponent(jInternalFrame1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

293. .addContainerGap(58, Short.MAX_VALUE)))

294. );

295. jDesktopPane1.setLayer(jInternalFrame1, javax.swing.JLayeredPane.DEFAULT_LAYER);

296. jDesktopPane1.setLayer(jPanel1, javax.swing.JLayeredPane.DEFAULT_LAYER);

297.

298. jMenu1.setText("File");

299. jMenuBar1.add(jMenu1);

300.

301. jMenu2.setText("Edit");

302. jMenuBar1.add(jMenu2);

303.

304. setJMenuBar(jMenuBar1);

305.

306. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

307. getContentPane().setLayout(layout);

308. layout.setHorizontalGroup(

309. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

310. .addComponent(jDesktopPane1)

311. );

312. layout.setVerticalGroup(

313. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

314. .addComponent(jDesktopPane1)

315. );

316.

317. pack();

318. }// </editor-fold>//GEN-END:initComponents

319.

320. private void cariButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-

FIRST:event_cariButtonActionPerformed

321. // TODO add your handling code here:

322. String query = queryTxt.getText();

323. MainRetrieval mainRetrieval = new MainRetrieval();

324.

325. boolean clusterBased = irTypeButtonGroup.isSelected(clusterBasedRB.getModel());

326.

327. double start = System.nanoTime();

328. List<Record> retrieve;

329. retrieve = mainRetrieval.retrieve(query, clusterBased);

330. double end = System.nanoTime();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 210: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

331. double execTime = (end - start) / 1000000000;

332. if(retrieve == null) {

333. JOptionPane.showMessageDialog(this, "Tidak ditemukan dokumen dengan kata kunci

tersebut");

334. } else {

335. int size = retrieve.size();

336. JOptionPane.showMessageDialog(this, "Ditemukan dokumen sejumlah " + size + "

dengan kata kunci tersebut\nExec time : " + execTime);

337. this.retrivalTableModel = new RetrievalTableModel(retrieve);

338. this.retrievalTable.setModel(retrivalTableModel);

339. }

340. try {

341. NotepadPrinter.print(retrieve);

342. } catch (IOException ex) {

343. Logger.getLogger(RetrievalView.class.getName()).log(Level.SEVERE, null, ex);

344. }

345. }//GEN-LAST:event_cariButtonActionPerformed

346.

347. private void retrievalTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-

FIRST:event_retrievalTableMouseClicked

348. // TODO add your handling code here:

349. jInternalFrame1.hide();

350. int selectedRow = this.retrievalTable.getSelectedRow();

351. Record modelClass = this.retrivalTableModel.getModelClass(selectedRow);

352.

353. DatabaseRWOperation dbrw = new DatabaseRWOperation();

354.

355. Record readRec = null;

356. try {

357. readRec = dbrw.readSingleRecord(modelClass);

358. } catch (SQLException ex) {

359. Logger.getLogger(RetrievalView.class.getName()).log(Level.SEVERE, null, ex);

360. }

361.

362. docTitleLabel.setText(readRec.getRecordID());

363. contentTxt.setText(readRec.getContent());

364. jInternalFrame1.show();

365.

366. }//GEN-LAST:event_retrievalTableMouseClicked

367.

368. /**

369. * @param args the command line arguments

370. */

371. public static void main(String args[]) {

372. /* Set the Nimbus look and feel */

373. //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

374. /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and

feel.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 211: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

375. * For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

376. */

377. try {

378. for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

379. if ("Nimbus".equals(info.getName())) {

380. javax.swing.UIManager.setLookAndFeel(info.getClassName());

381. break;

382. }

383. }

384. } catch (ClassNotFoundException ex) {

385.

java.util.logging.Logger.getLogger(RetrievalView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

386. } catch (InstantiationException ex) {

387.

java.util.logging.Logger.getLogger(RetrievalView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

388. } catch (IllegalAccessException ex) {

389.

java.util.logging.Logger.getLogger(RetrievalView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

390. } catch (javax.swing.UnsupportedLookAndFeelException ex) {

391.

java.util.logging.Logger.getLogger(RetrievalView.class.getName()).log(java.util.logging.Level.SEV

ERE, null, ex);

392. }

393. //</editor-fold>

394.

395. /* Create and display the form */

396. java.awt.EventQueue.invokeLater(new Runnable() {

397. public void run() {

398. new RetrievalView().setVisible(true);

399. }

400. });

401. }

402.

403. // Variables declaration - do not modify//GEN-BEGIN:variables

404. private gui.CapturePane capturePane1;

405. private javax.swing.JButton cariButton;

406. private javax.swing.JRadioButton clusterBasedRB;

407. private javax.swing.JTextArea contentTxt;

408. private javax.swing.JLabel docTitleLabel;

409. private javax.swing.ButtonGroup irTypeButtonGroup;

410. private javax.swing.JDesktopPane jDesktopPane1;

411. private javax.swing.JInternalFrame jInternalFrame1;

412. private javax.swing.JLabel jLabel1;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 212: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

413. private javax.swing.JMenu jMenu1;

414. private javax.swing.JMenu jMenu2;

415. private javax.swing.JMenuBar jMenuBar1;

416. private javax.swing.JPanel jPanel1;

417. private javax.swing.JPanel jPanel2;

418. private javax.swing.JPanel jPanel3;

419. private javax.swing.JPanel jPanel4;

420. private javax.swing.JPanel jPanel5;

421. private javax.swing.JScrollPane jScrollPane1;

422. private javax.swing.JScrollPane jScrollPane3;

423. private javax.swing.JRadioButton konvensionalRB;

424. private javax.swing.JTextField queryTxt;

425. private javax.swing.JTable retrievalTable;

426. // End of variables declaration//GEN-END:variables

427. }

1.2.1.4. Package helper

1.2.1.4.1. Kelas NotepadPrinter.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package helper;

7.

8. import database.DatabaseRWOperation;

9. import gmeans.Record;

10. import java.io.File;

11. import java.io.IOException;

12. import java.sql.SQLException;

13. import java.util.Iterator;

14. import java.util.List;

15. import java.util.logging.Level;

16. import java.util.logging.Logger;

17. import org.apache.commons.io.FileUtils;

18.

19. /**

20. *

21. * @author root

22. */

23. public class NotepadPrinter {

24.

25. public NotepadPrinter() {

26. }

27.

28. public static void print(List<Record> recList) throws IOException {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 213: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

29. String recordsTitle = "";

30. Iterator<Record> iterator = recList.iterator();

31. while (iterator.hasNext()) {

32. Record next = iterator.next();

33. recordsTitle = recordsTitle + next.getRecordID() + "\n";

34. }

35. File fi = new File("./result/recordsTitle.txt");

36. FileUtils.writeStringToFile(fi, recordsTitle);

37. }

38.

39. public static void printCSV() throws SQLException, IOException {

40. DatabaseRWOperation dbrw = new DatabaseRWOperation();

41. String coba = dbrw.coba();

42. File fi = new File("./result/clustersctr.csv");

43. FileUtils.writeStringToFile(fi, coba);

44. }

45.

46. public static void main(String[] args) {

47. try {

48. printCSV();

49. } catch (SQLException ex) {

50. Logger.getLogger(NotepadPrinter.class.getName()).log(Level.SEVERE, null, ex);

51. } catch (IOException ex) {

52. Logger.getLogger(NotepadPrinter.class.getName()).log(Level.SEVERE, null, ex);

53. }

54. }

55.

56. }

1.2.1.4.2. Kelas QuickSort.java

1. package helper;

2.

3. /*

4. * To change this license header, choose License Headers in Project Properties.

5. * To change this template file, choose Tools | Templates

6. * and open the template in the editor.

7. */

8.

9. /**

10. * Quicksort Algorithm for Sorting and Showing original index

11. *

12. * @see

13. * http://stackoverflow.com/questions/951848/java-array-sort-quick-way-to-get-a-sorted-list-of-

indices-of-an-array

14. * @author akarnokd

15. */

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 214: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

16. public class QuickSort {

17.

18. public static void main(String[] args) {

19. double[] main = new double[]{5, 2, 3, 1, 4};

20. int[] index = new int[]{1, 2, 3, 4, 5};

21. quicksort(main, index);

22.

23. System.out.println("Main Sorted");

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

25. System.out.print(main[i] + " ");

26. }

27. System.out.println("");

28. System.out.println("Index Sorted");

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

30. System.out.print(index[i] + " ");

31. }

32. }

33.

34. public static void quicksort(double[] main, int[] index) {

35. quicksort(main, index, 0, index.length - 1);

36. }

37.

38. // quicksort a[left] to a[right]

39. public static void quicksort(double[] a, int[] index, int left, int right) {

40. if (right <= left) {

41. return;

42. }

43. int i = partition(a, index, left, right);

44. quicksort(a, index, left, i - 1);

45. quicksort(a, index, i + 1, right);

46. }

47.

48. // partition a[left] to a[right], assumes left < right

49. private static int partition(double[] a, int[] index,

50. int left, int right) {

51. int i = left - 1;

52. int j = right;

53. while (true) {

54. while (more(a[++i], a[right])) // find item on left to swap

55. ; // a[right] acts as sentinel

56. while (more(a[right], a[--j])) // find item on right to swap

57. {

58. if (j == left) {

59. break; // don't go out-of-bounds

60. }

61. }

62. if (i >= j) {

63. break; // check if pointers cross

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 215: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

64. }

65. exch(a, index, i, j); // swap two elements into place

66. }

67. exch(a, index, i, right); // swap with partition element

68. return i;

69. }

70.

71. // is x > y ?

72. // Untuk sort descending, gunakan more

73. private static boolean more(double x, double y) {

74. return (x > y);

75. }

76.

77. // is x < y ?

78. // Untuk sort ascending, gunakan less

79. private static boolean less(double x, double y) {

80. return (x < y);

81. }

82.

83. // exchange a[i] and a[j]

84. private static void exch(double[] a, int[] index, int i, int j) {

85. double swap = a[i];

86. a[i] = a[j];

87. a[j] = swap;

88. int b = index[i];

89. index[i] = index[j];

90. index[j] = b;

91. }

92. }

1.2.1.5. Package ir

1.2.1.5.1. Kelas DataStructuring.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package ir;

7.

8. import gmeans.Cluster;

9. import gmeans.ModifiedLinkedList;

10. import gmeans.Point;

11. import gmeans.Record;

12. import java.util.Collections;

13. import java.util.Iterator;

14. import java.util.LinkedList;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 216: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

15. import parser.Tokenizer;

16.

17. /**

18. *

19. * @author pacman

20. */

21. public class DataStructuring {

22.

23. private Cluster cluster;

24. private ModifiedLinkedList masterLinkedList;

25.

26. public DataStructuring() {

27. }

28.

29. public void performDataStructuring(String[] parseTitle, String[] parseBody, String[]

parseOriginalBody, String[] parseOriginalTopic) {

30.

31. ModifiedLinkedList masterLinkedList = new

ModifiedLinkedList(ModifiedLinkedList.LIST_TYPE.MASTER);

32.

33. Cluster cs = new Cluster();

34.

35. LinkedList<Record> listRec = tokenize(parseTitle, parseBody, parseOriginalBody,

parseOriginalTopic, masterLinkedList);

36.

37. Collections.sort(masterLinkedList, Collections.reverseOrder());

38.

39. this.masterLinkedList = masterLinkedList;

40.

41. listRec = mergeList(listRec, masterLinkedList);

42.

43. cs.setRecordList(listRec);

44.

45. this.cluster = cs;

46.

47. }

48.

49. private LinkedList<Record> tokenize(String[] parseTitle, String[] parseBody, String[]

parseOriginalBody, String[] parseOriginalTopic, ModifiedLinkedList masterLinkedList) {

50. Tokenizer tokenizer = new Tokenizer();

51. ModifiedLinkedList documentLinkedList = null;

52.

53. Record rec = null;

54. Point point = null;

55. LinkedList<Record> listRec = new LinkedList<>();

56.

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

58. rec = new Record();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 217: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

59. rec.setRecordID(parseTitle[i]);

60. // rec.setTopic(parseOriginalTopic[i]);

61. rec.setContent(parseOriginalBody[i]);

62. String[] tokenArray = tokenizer.tokenize(parseBody[i]);

63.

64. documentLinkedList = new ModifiedLinkedList();

65. for (String token : tokenArray) {

66. point = new Point(token);

67. // point.setTerm(token);

68. masterLinkedList.addUnique(point);

69. documentLinkedList.addUnique(point);

70. }

71.

72. rec.setPointList(documentLinkedList);

73. listRec.add(rec);

74.

75. }

76. return listRec;

77. }

78.

79. public Record tokenizeQuery(String[] parseQuery) {

80. Tokenizer tokenizer = new Tokenizer();

81. ModifiedLinkedList documentLinkedList = null;

82.

83. Record rec = null;

84. Point point = null;

85. LinkedList<Record> listRec = new LinkedList<>();

86.

87. rec = new Record();

88. String[] tokenArray = parseQuery;

89.

90. documentLinkedList = new ModifiedLinkedList();

91. for (String token : tokenArray) {

92. point = new Point(token);

93. documentLinkedList.addUnique(point);

94. }

95.

96. rec.setPointList(documentLinkedList);

97. return rec;

98. }

99.

100. private LinkedList<Record> mergeList(LinkedList<Record> listRec, ModifiedLinkedList

masterLinkedList) {

101. ModifiedLinkedList tempMasterLinkedList = null;

102.

103. Iterator<Record> iterator = listRec.iterator();

104. while (iterator.hasNext()) {

105. Record next = iterator.next();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 218: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

106.

107. // copy masterlist ke tempMaster untuk menghindari mutable (java works by

reference)

108. tempMasterLinkedList = copyList(masterLinkedList);

109.

110. next.getPointList().mergeList(tempMasterLinkedList);

111.

112. }

113.

114. return listRec;

115. }

116.

117. public Record mergeQuery(Record rec, ModifiedLinkedList masterLinkedList) {

118. ModifiedLinkedList tempMasterLinkedList = null;

119. Record next = rec;

120.

121. // copy masterlist ke tempMaster untuk menghindari mutable (java works by reference)

122. tempMasterLinkedList = copyList(masterLinkedList);

123.

124. next.getPointList().mergeList(tempMasterLinkedList);

125.

126. return rec;

127. }

128.

129. public ModifiedLinkedList copyList(ModifiedLinkedList masterLinkedList) {

130. ModifiedLinkedList tempMasterLinkedList = new

ModifiedLinkedList(ModifiedLinkedList.LIST_TYPE.MASTER);

131. Iterator<Point> iterator1 = masterLinkedList.iterator();

132. while (iterator1.hasNext()) {

133. Point next1 = iterator1.next();

134. tempMasterLinkedList.add(next1);

135. }

136. return tempMasterLinkedList;

137. }

138.

139. public Cluster getCluster() {

140. return cluster;

141. }

142.

143. public ModifiedLinkedList getMasterLinkedList() {

144. return masterLinkedList;

145. }

146. }

1.2.1.5.2. Kelas Preprocess.java

1. /*

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 219: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package ir;

8.

9. import java.io.IOException;

10. import java.util.logging.Level;

11. import java.util.logging.Logger;

12. import parser.Parser;

13. import stemmer.EnhancedStemmer;

14. import stopwordremover.StopWordRemover;

15. import wordnetstemmer.Stemmer;

16.

17. /**

18. *

19. * @author pacman

20. */

21. public class Preprocess {

22.

23. private String[] identifier;

24. private String[] content;

25. private String[] originalContent;

26. private String[] originalTopic;

27.

28. private final String[] titleTag = new String[]{"<TITLE>", "</TITLE>"};

29. private final String[] topicTag = new String[]{"<TOPIC>", "</TOPIC>"};

30. private final String[] bodyTag = new String[]{"<BODY>", "</BODY>"};

31.

32. private final String queryTagOpen = "<QUERY>";

33. private final String queryTagClose = "</QUERY>";

34.

35. private final String stopWordConfigFilePath = "./resources/stopword.txt";

36. private final String stemmerConfigFilePath = "./config/jwnl_properties.xml";

37.

38. public Preprocess() {

39. }

40.

41. public void performPreprocessing(String path) {

42. String readFile = null;

43. try {

44. readFile = parseFile(path);

45. } catch (IOException ex) {

46. Logger.getLogger(Preprocess.class.getName()).log(Level.SEVERE, null, ex);

47. }

48.

49. String[] parseTitle = parseElement(readFile, titleTag[0], titleTag[1]);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 220: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

50. String[] parseTopic = parseElement(readFile, topicTag[0], topicTag[1]);

51. String[] parseBody = parseElement(readFile, bodyTag[0], bodyTag[1]);

52. String[] parseOriginalBody = parseElement(readFile, bodyTag[0], bodyTag[1]);

53.

54. // DEBUG 1-1

55. System.out.println(" --------------- SEBELUM STOPWORD ----------------");

56.

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

58. System.out.println("");

59. System.out.println(parseTitle[i]);

60. System.out.println("---------------------");

61. System.out.println(parseBody[i]);

62. }

63. System.out.println("\n --------****--------- \n");

64. // END OF DEBUG

65.

66. parseBody = removeNonNumericCharacter(parseBody);

67. parseBody = removeStopword(parseBody);

68. parseBody = stem(parseBody);

69. // parseBody = removeStopword(parseBody);

70.

71. // DEBUG

72. System.out.println(" --------------- SETELAH STOPWORD & STEM ----------------");

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

74. System.out.println("");

75. System.out.println(parseTitle[i]);

76. System.out.println("---------------------");

77. System.out.println(parseBody[i]);

78. }

79.

80. System.out.println("\n --------****--------- \n");

81. // END OF DEBUG 1-1

82.

83. this.identifier = parseTitle;

84. this.originalTopic = parseTopic;

85. this.content = parseBody;

86. this.originalContent = parseOriginalBody;

87.

88. }

89.

90. public void preprocessQuery(String query) {

91. StopWordRemover stopWordRemover = new StopWordRemover();

92. String removeNonAlphaNumeric = stopWordRemover.removeNonAlphaNumeric(query);

93. String taggedQuery = queryTagOpen + removeNonAlphaNumeric + queryTagClose ;

94. String[] queryArray = parseElement(taggedQuery, queryTagOpen, queryTagClose);

95. queryArray = removeStopword(queryArray);

96. queryArray = stem(queryArray);

97. queryArray = removeStopword(queryArray);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 221: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

98. this.content = queryArray;

99. }

100.

101. private String parseFile(String path) throws IOException {

102. Parser parser = new Parser();

103. return parser.readFileToString(path);

104. }

105.

106. private String[] parseElement(String data, String tagOpen, String tagClose) {

107. Parser parser = new Parser();

108. return parser.readBetweenTag(data, tagOpen, tagClose);

109. }

110.

111. private String[] removeNonNumericCharacter(String[] data) {

112. StopWordRemover stopWordRemover = new StopWordRemover();

113. return stopWordRemover.removeNonAlphaNumeric(data);

114. }

115.

116. private String[] removeStopword(String[] data) {

117. StopWordRemover stopWordRemover = new

StopWordRemover(stopWordConfigFilePath);

118. return stopWordRemover.removeStopWord(data);

119. }

120.

121. private String[] stem(String[] data) {

122. // Stemmer stemmer = new Stemmer(stemmerConfigFilePath);

123. EnhancedStemmer stemmer = new EnhancedStemmer();

124. return stemmer.stem(data);

125. }

126.

127. public String[] getIdentifier() {

128. return identifier;

129. }

130.

131. public String[] getContent() {

132. return content;

133. }

134.

135. public String[] getOriginalContent() {

136. return originalContent;

137. }

138.

139. public String[] getOriginalTopic() {

140. return originalTopic;

141. }

142. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 222: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

1.2.1.5.3. Kelas TfIdf.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package ir;

8.

9. import gmeans.Cluster;

10. import gmeans.Point;

11. import gmeans.Record;

12. import java.util.HashMap;

13. import java.util.Iterator;

14. import java.util.LinkedList;

15.

16. /**

17. *

18. * @author pacman

19. */

20. public class TfIdf {

21.

22. private Cluster cluster;

23. private HashMap<String, Integer> mapPointDf;

24.

25. private int documentCount;

26.

27. public TfIdf() {

28. }

29.

30. public void performWeighting(Cluster cs) {

31. LinkedList<Record> recordList = cs.getRecordList();

32. int documentCount = cs.getRecordList().size();

33.

34. HashMap<String, Integer> mapPointDf = mappingDocFreq(recordList);

35.

36. Iterator<Record> iterRecord = recordList.iterator();

37.

38. while (iterRecord.hasNext()) {

39. Record next = iterRecord.next();

40. Iterator<Point> iterPoint = next.getPointList().iterator();

41.

42. while (iterPoint.hasNext()) {

43. Point next1 = iterPoint.next();

44. boolean containsKey = mapPointDf.containsKey(next1.getTerm());

45.

46. if (containsKey) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 223: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

47. next1.setDf(mapPointDf.get(next1.getTerm()));

48. double w = next1.getTf() * Math.log10(documentCount / next1.getDf());

49. next1.setWNorm(w);

50. }

51. }

52. }

53.

54. this.cluster = cs;

55. this.mapPointDf = mapPointDf;

56. this.documentCount = documentCount;

57. }

58.

59. private HashMap<String, Integer> mappingDocFreq(LinkedList<Record> recordList) {

60. Iterator<Record> iterRecord = recordList.iterator();

61. HashMap<String, Integer> mapPointDf = new HashMap<>();

62.

63. while (iterRecord.hasNext()) {

64. Record next = iterRecord.next();

65. Iterator<Point> iterator2 = next.getPointList().iterator();

66. while (iterator2.hasNext()) {

67. Point next1 = iterator2.next();

68.

69. if (next1.getTf() > 0) {

70. boolean containsKey = mapPointDf.containsKey(next1.getTerm());

71.

72. if (containsKey) {

73. Integer get = mapPointDf.get(next1.getTerm());

74. get = get + 1;

75. mapPointDf.put(next1.getTerm(), get);

76. } else {

77. mapPointDf.put(next1.getTerm(), 1);

78. }

79. }

80. }

81. }

82.

83. return mapPointDf;

84.

85. }

86.

87. public Cluster getCluster() {

88. return cluster;

89. }

90.

91. public HashMap<String, Integer> getMapPointDf() {

92. return mapPointDf;

93. }

94.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 224: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

95. public int getDocumentCount() {

96. return documentCount;

97. }

98.

99. }

1.2.1.6. Package kmeans

1.2.1.6.1. Kelas InitCentroid.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package kmeans;

8.

9. import gmeans.Calculation;

10. import gmeans.Cluster;

11. import gmeans.Record;

12. import gmeans.Utility;

13. import java.util.Arrays;

14. import java.util.Iterator;

15. import java.util.List;

16. import org.apache.commons.math3.ml.clustering.CentroidCluster;

17. import org.apache.commons.math3.ml.clustering.KMeansPlusPlusClusterer;

18.

19. /**

20. *

21. * @author pacman

22. */

23. public class InitCentroid {

24.

25. public InitCentroid() {

26. }

27.

28. /**

29. * Mencari median dari data matrix 2d

30. * @param data matrix 2d

31. * @return matrix 1d berisi median tiap kolom

32. */

33. public double[] median(double[][] data) {

34. Utility util = new Utility();

35. double[] med = new double[data[0].length];

36.

37. for (int i = 0; i < data[0].length; i++) {

38. double[] sort = util.fetchColumnMatrix2D(data, i);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 225: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

39.

40. Arrays.sort(sort);

41. int medPoint = sort.length / 2;

42. if(sort.length%2 == 0) {

43. med[i] = (sort[medPoint - 1] + sort[medPoint]) / 2;

44. } else {

45. med[i] = sort[medPoint];

46. }

47. }

48.

49. return med;

50. }

51.

52. public double[] initCentroidFromData(double[][] data) {

53. Calculation calc = new Calculation();

54. double[] median = median(data);

55.

56. double minDist = Double.MAX_VALUE;

57. double tempDist = 0;

58. int minIndex = 0;

59.

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

61. tempDist = calc.euclideanDistance(data[i], median);

62. if(tempDist < minDist) {

63. minDist = tempDist;

64. minIndex = i;

65. }

66. }

67.

68. return data[minIndex];

69.

70. }

71.

72. public double[] initCentroidWithKmeanPlusPlus(Cluster cs) {

73. Utility util = new Utility();

74. KMeansAdHoc kmean = new KMeansAdHoc();

75. Record find = kmean.findCentroidWithKMeansPlusPlus(cs);

76. return util.convert1DPCARecordToArray(find);

77. }

78.

79. }

1.2.1.6.2. Kelas KMeansAdHoc.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 226: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

4. * and open the template in the editor.

5. */

6. package kmeans;

7.

8. import gmeans.AutoGeneratedID;

9. import gmeans.Calculation;

10. import gmeans.Cluster;

11. import gmeans.Record;

12. import gmeans.Utility;

13. import java.util.ArrayList;

14. import java.util.LinkedList;

15. import java.util.List;

16.

17. /**

18. *

19. * @author pacman

20. */

21. public class KMeansAdHoc {

22.

23. public KMeansAdHoc() {

24. }

25.

26. public Record findCentroidWithKMeansPlusPlus(Cluster cluster) {

27.

28. Utility util = new Utility();

29. Calculation calc = new Calculation();

30. InitCentroid ic = new InitCentroid();

31.

32. int limit = 1000;

33. int index = 0;

34. Cluster activeCluster = cluster;

35. int initSize = activeCluster.getRecordList().getFirst().getDataList().size();

36.

37. double[] centroid1 = ic.initCentroidFromData(util.convert2DPCAListToMatrix(cluster));

38.

39. Cluster cluster1 = new Cluster();

40.

41. // isi centroid awal

42. cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

43.

44. // assign ke variabel recordList (gak penting, hanya saja kadung tdk bisa refactor rename)

45. LinkedList<Record> recordList = activeCluster.getRecordList();

46.

47. // buat list penampungan record yang telah diassign ke centroid terdekat (sudah ditemukan

clusternya)

48. LinkedList<Record> tempRecordListCluster1 = null;

49.

50. a : while (true) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 227: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

51.

52. tempRecordListCluster1 = new LinkedList<>();

53.

54. // assign ke centroid terdekat

55. for (int j = 0; j < recordList.size(); j++) {

56. Record rec = recordList.get(j);

57. tempRecordListCluster1.add(rec);

58. }

59.

60. // hitung centroid baru

61. centroid1 = calculateNewCentroid(tempRecordListCluster1);

62.

63. // cek centroid baru thd centroid lama, apabila centroidBaru = centroidLama, maka

kmeans selesai (stop while loop)

64. boolean checkCluster1 = checkNewWithOldCentroid(centroid1,

util.convert1DPCARecordToArray(cluster1.getCentroid()));

65.

66. // pindahkan isi tempRecordListCluster ke recordList di Cluster yang sesuai

67. cluster1.setRecordList(tempRecordListCluster1);

68. cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

69.

70. if(checkCluster1 || index >= limit) {

71. break a;

72. }

73.

74. index++;

75. }

76.

77. return cluster1.getCentroid();

78.

79. }

80.

81. public Cluster[] runKMeans(Cluster cluster, double[] initCentroid1, double[] initCentroid2) {

82.

83. Utility util = new Utility();

84. Calculation calc = new Calculation();

85.

86. int limit = 1000;

87. int index = 0;

88. Cluster activeCluster = cluster;

89.

90. double[] centroid1 = initCentroid1;

91. double[] centroid2 = initCentroid2;

92.

93. Cluster cluster1 = new Cluster();

94. Cluster cluster2 = new Cluster();

95.

96. // isi centroid awal

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 228: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

97. cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

98. cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

99.

100. // beri nama cluster secara random

101. cluster1.setClusterID(AutoGeneratedID.generateRandomString());

102. cluster2.setClusterID(AutoGeneratedID.generateRandomString());

103.

104. // assign ke variabel recordList (gak penting, hanya saja kadung tdk bisa refactor

rename)

105. LinkedList<Record> recordList = activeCluster.getRecordList();

106.

107. // buat list penampungan record yang telah diassign ke centroid terdekat (sudah

ditemukan clusternya)

108. LinkedList<Record> tempRecordListCluster1 = null;

109. LinkedList<Record> tempRecordListCluster2 = null;

110.

111. a : while (true) {

112.

113. tempRecordListCluster1 = new LinkedList<>();

114. tempRecordListCluster2 = new LinkedList<>();

115.

116. // assign ke centroid terdekat

117. for (int j = 0; j < recordList.size(); j++) {

118. Record rec = recordList.get(j);

119. double[] dataArray = util.convert1DPCARecordToArray(rec);

120. double distToCentroid1 = calc.euclideanDistance(dataArray, centroid1);

121. double distToCentroid2 = calc.euclideanDistance(dataArray, centroid2);

122.

123. if (distToCentroid1 > distToCentroid2) {

124. tempRecordListCluster2.add(rec);

125. } else {

126. tempRecordListCluster1.add(rec);

127. }

128. }

129.

130. // hitung centroid baru

131. // centroid1 = calculateNewCentroid(tempRecordListCluster1);

132. // centroid2 = calculateNewCentroid(tempRecordListCluster2);

133. if(tempRecordListCluster1.isEmpty() == false) {

134. centroid1 = calculateNewCentroid(tempRecordListCluster1);

135. } else {

136. System.out.println("empty cluster");

137. cluster1.setRecordList(tempRecordListCluster1);

138. cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

139. cluster2.setRecordList(tempRecordListCluster2);

140. cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

141. break a;

142. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 229: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

143.

144. if(tempRecordListCluster2.isEmpty() == false) {

145. centroid2 = calculateNewCentroid(tempRecordListCluster2);

146. } else {

147. System.out.println("empty cluster");

148. cluster1.setRecordList(tempRecordListCluster1);

149. cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

150. cluster2.setRecordList(tempRecordListCluster2);

151. cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

152. break a;

153. }

154.

155. // cek centroid baru thd centroid lama, apabila centroidBaru = centroidLama, maka

kmeans selesai (stop while loop)

156. boolean checkCluster1 = checkNewWithOldCentroid(centroid1,

util.convert1DPCARecordToArray(cluster1.getCentroid()));

157. boolean checkCluster2 = checkNewWithOldCentroid(centroid2,

util.convert1DPCARecordToArray(cluster2.getCentroid()));

158.

159. // pindahkan isi tempRecordListCluster ke recordList di Cluster yang sesuai

160. cluster1.setRecordList(tempRecordListCluster1);

161. cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

162. cluster2.setRecordList(tempRecordListCluster2);

163. cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

164.

165. if(checkCluster1 && checkCluster2) {

166. break a;

167. }

168.

169. if(index >= limit) {

170. break a;

171. }

172.

173. index++;

174. }

175.

176. Cluster[] arrayCluster = new Cluster[2];

177. arrayCluster[0] = cluster1;

178. arrayCluster[1] = cluster2;

179.

180. return arrayCluster;

181.

182. }

183.

184. public Cluster[] runKMeansB(Cluster cluster, double[] initCentroid1, double[]

initCentroid2) {

185.

186. Utility util = new Utility();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 230: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

187. Calculation calc = new Calculation();

188.

189. int limit = 1000;

190. int index = 0;

191. Cluster activeCluster = cluster;

192.

193. double[] centroid1 = initCentroid1;

194. double[] centroid2 = initCentroid2;

195.

196. Cluster cluster1 = new Cluster();

197. Cluster cluster2 = new Cluster();

198.

199. // isi centroid awal

200. cluster1.setCentroid(util.convert1DArrayToRecord(centroid1));

201. cluster2.setCentroid(util.convert1DArrayToRecord(centroid2));

202.

203. // beri nama cluster secara random

204. cluster1.setClusterID(AutoGeneratedID.generateRandomString());

205. cluster2.setClusterID(AutoGeneratedID.generateRandomString());

206.

207. // assign ke variabel recordList (gak penting, hanya saja kadung tdk bisa refactor

rename)

208. LinkedList<Record> recordList = activeCluster.getRecordList();

209.

210. // buat list penampungan record yang telah diassign ke centroid terdekat (sudah

ditemukan clusternya)

211. LinkedList<Record> tempRecordListCluster1 = null;

212. LinkedList<Record> tempRecordListCluster2 = null;

213.

214. a : while (true) {

215.

216. tempRecordListCluster1 = new LinkedList<>();

217. tempRecordListCluster2 = new LinkedList<>();

218.

219. // assign ke centroid terdekat

220. for (int j = 0; j < recordList.size(); j++) {

221. Record rec = recordList.get(j);

222. double[] dataArray = util.convert1DRecordToArray(rec);

223. double distToCentroid1 = calc.euclideanDistance(dataArray, centroid1);

224. double distToCentroid2 = calc.euclideanDistance(dataArray, centroid2);

225.

226. if (distToCentroid1 > distToCentroid2) {

227. tempRecordListCluster2.add(rec);

228. } else {

229. tempRecordListCluster1.add(rec);

230. }

231. }

232.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 231: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

233. // hitung centroid baru

234. // centroid1 = calculateNewCentroid(tempRecordListCluster1);

235. // centroid2 = calculateNewCentroid(tempRecordListCluster2);

236. if(tempRecordListCluster1.isEmpty() == false) {

237. centroid1 = calculateNewCentroidB(tempRecordListCluster1);

238. }

239.

240. if(tempRecordListCluster2.isEmpty() == false) {

241. centroid2 = calculateNewCentroidB(tempRecordListCluster2);

242. }

243.

244. // cek centroid baru thd centroid lama, apabila centroidBaru = centroidLama, maka

kmeans selesai (stop while loop)

245. boolean checkCluster1 = checkNewWithOldCentroid(centroid1,

util.convert1DRecordToArray(cluster1.getCentroid()));

246. boolean checkCluster2 = checkNewWithOldCentroid(centroid2,

util.convert1DRecordToArray(cluster2.getCentroid()));

247.

248. // pindahkan isi tempRecordListCluster ke recordList di Cluster yang sesuai

249. cluster1.setRecordList(tempRecordListCluster1);

250. cluster1.setCentroid(util.convert1DArrayToRecord(centroid1));

251. cluster2.setRecordList(tempRecordListCluster2);

252. cluster2.setCentroid(util.convert1DArrayToRecord(centroid2));

253.

254. if(checkCluster1 && checkCluster2) {

255. break a;

256. }

257.

258. if(index >= limit) {

259. break a;

260. }

261.

262. index++;

263. }

264.

265. Cluster[] arrayCluster = new Cluster[2];

266. arrayCluster[0] = cluster1;

267. arrayCluster[1] = cluster2;

268.

269. return arrayCluster;

270.

271. }

272.

273. // public Cluster[] runKMeans(Cluster cluster, double[] initCentroid1, double[]

initCentroid2) {

274. //

275. // Utility util = new Utility();

276. // Calculation calc = new Calculation();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 232: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

277. //

278. // int limit = 1000;

279. // int index = 0;

280. // Cluster activeCluster = cluster;

281. //

282. // double[] centroid1 = initCentroid1;

283. // double[] centroid2 = initCentroid2;

284. //

285. // Cluster cluster1 = new Cluster();

286. // Cluster cluster2 = new Cluster();

287. //

288. // // isi centroid awal

289. // cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

290. // cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

291. //

292. // // beri nama cluster secara random

293. // cluster1.setClusterID(AutoGeneratedID.generateRandomString());

294. // cluster2.setClusterID(AutoGeneratedID.generateRandomString());

295. //

296. // // assign ke variabel recordList (gak penting, hanya saja kadung tdk bisa refactor

rename)

297. // LinkedList<Record> recordList = activeCluster.getRecordList();

298. //

299. // // buat list penampungan record yang telah diassign ke centroid terdekat (sudah

ditemukan clusternya)

300. // LinkedList<Record> tempRecordListCluster1 = null;

301. // LinkedList<Record> tempRecordListCluster2 = null;

302. //

303. // a : while (true) {

304. //

305. // tempRecordListCluster1 = new LinkedList<>();

306. // tempRecordListCluster2 = new LinkedList<>();

307. //

308. // // assign ke centroid terdekat

309. // for (int j = 0; j < recordList.size(); j++) {

310. // Record rec = recordList.get(j);

311. // double[] dataArray = util.convert1DPCAListToArray(rec);

312. // double distToCentroid1 = calc.euclideanDistance(dataArray, centroid1);

313. // double distToCentroid2 = calc.euclideanDistance(dataArray, centroid2);

314. //

315. // if (distToCentroid1 > distToCentroid2) {

316. // tempRecordListCluster2.add(rec);

317. // } else {

318. // tempRecordListCluster1.add(rec);

319. // }

320. // }

321. //

322. // // hitung centroid baru

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 233: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

323. //// centroid1 = calculateNewCentroid(tempRecordListCluster1);

324. //// centroid2 = calculateNewCentroid(tempRecordListCluster2);

325. // if(tempRecordListCluster1.isEmpty() == false) {

326. // centroid1 = calculateNewCentroid(tempRecordListCluster1);

327. // }

328. //

329. // if(tempRecordListCluster2.isEmpty() == false) {

330. // centroid2 = calculateNewCentroid(tempRecordListCluster2);

331. // }

332. //

333. // // cek centroid baru thd centroid lama, apabila centroidBaru = centroidLama, maka

kmeans selesai (stop while loop)

334. // boolean checkCluster1 = checkNewWithOldCentroid(centroid1,

util.convert1DPCAListToArray(cluster1.getCentroid()));

335. // boolean checkCluster2 = checkNewWithOldCentroid(centroid2,

util.convert1DPCAListToArray(cluster2.getCentroid()));

336. //

337. // // pindahkan isi tempRecordListCluster ke recordList di Cluster yang sesuai

338. // cluster1.setRecordList(tempRecordListCluster1);

339. // cluster1.setCentroid(util.convert1DPCAArrayToRecord(centroid1));

340. // cluster2.setRecordList(tempRecordListCluster2);

341. // cluster2.setCentroid(util.convert1DPCAArrayToRecord(centroid2));

342. //

343. // if(checkCluster1 && checkCluster2) {

344. // break a;

345. // }

346. //

347. // if(index >= limit) {

348. // break a;

349. // }

350. //

351. // index++;

352. // }

353. //

354. // Cluster[] arrayCluster = new Cluster[2];

355. // arrayCluster[0] = cluster1;

356. // arrayCluster[1] = cluster2;

357. //

358. // return arrayCluster;

359. //

360. // }

361.

362. public boolean checkNewWithOldCentroid(double[] newCentroid, double[] oldCentroid) {

363.

364. if (oldCentroid.length != newCentroid.length) {

365. throw new IllegalArgumentException();

366. }

367.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 234: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

368. Calculation calc = new Calculation();

369.

370. boolean stat = false;

371.

372. double dist = calc.euclideanDistance(newCentroid, oldCentroid);

373.

374. if(dist == 0) {

375. stat = true;

376. } else {

377. stat = false;

378. }

379.

380. return stat;

381. }

382.

383. // public double[] calculateNewCentroid(List<Record> recordList) {

384. // int rowCount = recordList.size();

385. // double[] colSum = new double[recordList.get(0).getDataList().size()];

386. // for (int i = 0; i < recordList.size(); i++) {

387. // for (int j = 0; j < recordList.get(i).getDataList().size(); j++) {

388. // colSum[j] += recordList.get(i).getDataList().get(j);

389. // }

390. // }

391. //

392. // double[] newCentroid = new double[colSum.length];

393. // for (int i = 0; i < colSum.length; i++) {

394. // newCentroid[i] = colSum[i] / rowCount;

395. // }

396. //

397. // return newCentroid;

398. // }

399.

400. public double[] calculateNewCentroid(List<Record> recordList) {

401. int rowCount = recordList.size();

402. double[] colSum = new double[recordList.get(0).getDataList().size()];

403. for (int i = 0; i < recordList.size(); i++) {

404. for (int j = 0; j < recordList.get(i).getDataList().size(); j++) {

405. colSum[j] = colSum[j] + recordList.get(i).getDataList().get(j);

406. }

407. }

408.

409. double[] newCentroid = new double[colSum.length];

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

411. newCentroid[i] = colSum[i] / rowCount;

412. }

413.

414. return newCentroid;

415. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 235: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

416.

417. public double[] calculateNewCentroidB(List<Record> recordList) {

418. int rowCount = recordList.size();

419. double[] colSum = new double[recordList.get(0).getPointList().size()];

420. for (int i = 0; i < recordList.size(); i++) {

421. for (int j = 0; j < recordList.get(i).getPointList().size(); j++) {

422. colSum[j] += recordList.get(i).getPointList().get(j).getWNorm();

423. }

424. }

425.

426. double[] newCentroid = new double[colSum.length];

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

428. newCentroid[i] = colSum[i] / rowCount;

429. }

430.

431. return newCentroid;

432. }

433. }

1.2.1.7. Package entry

1.2.1.7.1. Kelas Entry.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package main;

7.

8. import database.DatabaseOperationController;

9. import gmeans.AutoGeneratedID;

10. import gmeans.Calculation;

11. import gmeans.Cluster;

12. import gmeans.ClusterPool;

13. import gmeans.FeatureSelection;

14. import gmeans.GMeans;

15. import gmeans.Point;

16. import gmeans.Record;

17. import gmeans.Utility;

18. import gui.ClusteringView;

19. import ir.DataStructuring;

20. import ir.Preprocess;

21. import ir.TfIdf;

22. import java.io.File;

23. import java.io.IOException;

24. import java.sql.SQLException;

25. import java.util.ArrayList;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 236: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

26. import java.util.HashMap;

27. import java.util.Iterator;

28. import java.util.LinkedList;

29. import java.util.List;

30. import java.util.Map;

31. import java.util.logging.Level;

32. import java.util.logging.Logger;

33. import org.apache.commons.io.FileUtils;

34.

35. /**

36. *

37. * @author root

38. */

39. public class Main {

40.

41. public void performDocumentClustering(ClusteringView clusteringForm, String path, boolean

saveDB) {

42.

43. // ====================== START PARSING ===========================

44. // String path = "./data/article/ARTICLES_ALL2.txt";

45. // String path = "./data/kompas/KOMPAS_ALL.txt";

46. // String path = "./data/news/BBC_ALL.txt";

47. // String path = "./data/article/CUSTOM.txt";

48.

49. Preprocess prep = new Preprocess();

50. prep.performPreprocessing(path);

51.

52. String[] identifier = prep.getIdentifier();

53. String[] content = prep.getContent();

54. String[] originalContent = prep.getOriginalContent();

55. String[] originalTopic = prep.getOriginalTopic();

56.

57. clusteringForm.getProgressBar().setValue(10);

58. clusteringForm.getProgressBar().update(clusteringForm.getProgressBar().getGraphics());

59.

60. // ================ END OF PARSING =========================

61. // ================ START OF DATA STRUCTURING ===============

62. DataStructuring ds = new DataStructuring();

63. ds.performDataStructuring(identifier, content, originalContent, originalTopic);

64. Cluster cs = ds.getCluster();

65.

66. clusteringForm.getProgressBar().setValue(20);

67. clusteringForm.getProgressBar().update(clusteringForm.getProgressBar().getGraphics());

68.

69. // ============== END OF DATA STRUCTURING =====================

70. // ============== START OF TF - IDF =====================

71. TfIdf tfIdf = new TfIdf();

72. tfIdf.performWeighting(cs);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 237: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

73. cs = tfIdf.getCluster();

74.

75. System.out.println("");

76. HashMap<String, Integer> mapPointDf = tfIdf.getMapPointDf();

77. Iterator<Map.Entry<String, Integer>> itr = mapPointDf.entrySet().iterator();

78. while (itr.hasNext()) {

79. Map.Entry<String, Integer> entry = itr.next();

80. System.out.println(entry.getKey() + ": " + entry.getValue());

81. }

82. System.out.println("");

83.

84. clusteringForm.getProgressBar().setValue(30);

85. clusteringForm.getProgressBar().update(clusteringForm.getProgressBar().getGraphics());

86.

87. // ============== END OF TF - IDF =====================

88.

89. // ============== FEATURE SELECTION ===================

90.

91. FeatureSelection fs = new FeatureSelection();

92. try {

93. cs = fs.featureSelection(cs);

94. } catch (SQLException ex) {

95. Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);

96. }

97.

98. int s = cs.getRecordList().get(0).getReducedPointList().size();

99. System.out.println("Reduced: " + s);

100.

101. // ============== END OF FEATURE SELECTION ============

102.

103. // ============== START OF NORMALIZATION ==============

104. Utility util = new Utility();

105. cs = util.normalizeCluster(cs);

106. clusteringForm.getProgressBar().setValue(40);

107.

clusteringForm.getProgressBar().update(clusteringForm.getProgressBar().getGraphics());

108. // ============== END OF NORMALIZATION ================

109.

110. // ============== START OF PCA ========================

111. Calculation calc = new Calculation();

112. System.out.println("calc pca");

113. // calc.calculatePCA(cs);

114. // try {

115. // util.writePCAToFile(cs, "processpca.csv");

116. // } catch (IOException ex) {

117. // Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);

118. // }

119. // System.exit(0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 238: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

120. calc.simulateCalcPCA(cs);

121. System.out.println("done calc pca");

122.

123. clusteringForm.getProgressBar().setValue(50);

124.

125. // ============== START OF GMEANS =====================

126. // ============== GMEANS WITH PCA =====================

127. GMeans gMeans = new GMeans();

128. ClusterPool pool = gMeans.performGMeans(cs);

129.

130. clusteringForm.getProgressBar().setValue(80);

131.

132. // ============= END GMEANS WITH PCA ====================

133.

134. // ============= START OF EMPTY CLUSTER REMOVAL =========

135. System.out.println("\n\n");

136. System.out.println(" -------- RESULT ----------- ");

137.

138. Iterator<Cluster> iterPool = pool.getClusterList().iterator();

139.

140. while (iterPool.hasNext()) {

141. Cluster cluster1 = iterPool.next();

142. if(cluster1.getClusterID() == null) {

143. cluster1.setClusterID(AutoGeneratedID.generateRandomString());

144. }

145.

146. if (cluster1.getRecordList().isEmpty()) {

147. iterPool.remove();

148. }

149.

150. }

151.

152. int poolSize = pool.getClusterList().size();

153. for (int i = 0; i < poolSize; i++) {

154. System.out.println(pool.getClusterList().get(i).toString());

155. }

156.

157. System.out.println("--- END ---");

158.

159. System.out.println("Num of cluster : " + pool.getClusterList().size());

160.

161. if(saveDB) {

162. clusteringForm.getProgressBar().setValue(90);

163. } else {

164. clusteringForm.getProgressBar().setValue(100);

165. }

166.

167. Cluster get = pool.getClusterList().get(0);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 239: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

168. Iterator<Point> iterator = get.getRecordList().get(0).getPointList().iterator();

169. String datacsv = "";

170. while (iterator.hasNext()) {

171. Point point = iterator.next();

172. datacsv += point.getTerm() + "\n";

173. }

174.

175. try {

176. FileUtils.writeStringToFile(new File("./result/terms.csv"), datacsv);

177. } catch (IOException ex) {

178. Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);

179. }

180.

181. System.out.println("============================== LIST

=====================");

182.

183. LinkedList<Cluster> clusterList = pool.getClusterList();

184. for (int i = 0; i < clusterList.size(); i++) {

185. LinkedList<Record> recordList = clusterList.get(i).getRecordList();

186. for (int j = 0; j < recordList.size(); j++) {

187. List<Double> dataList = recordList.get(j).getDataList();

188. for (int k = 0; k < dataList.size(); k++) {

189. Double data = dataList.get(k);

190. if(k == dataList.size() - 1) {

191. System.out.println(data + "," + i);

192. } else {

193. System.out.print(data + ",");

194. }

195. }

196. }

197. }

198.

199. // ========== END OF EMPTY CLUSTER REMOVAL ===============

200. for (int i = 0; i < clusterList.size(); i++) {

201. LinkedList<Record> recordList = clusterList.get(i).getRecordList();

202. List<Double> poolOriginalDataList = new ArrayList<>();

203. for (int j = 0; j < recordList.size(); j++) {

204. List<Double> originalDataList = recordList.get(j).getOriginalDataList();

205. // BELUM SELESAI CARI CENTROID BARU (BY AVERAGE)

206. for (int k = 0; k < originalDataList.size(); k++) {

207. if (j == 0) {

208. poolOriginalDataList.add(originalDataList.get(k));

209. } else {

210. double poolData = poolOriginalDataList.get(k) + originalDataList.get(k);

211. poolOriginalDataList.set(k, poolData);

212. }

213. }

214. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 240: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

215. for (int k = 0; k < poolOriginalDataList.size(); k++) {

216. poolOriginalDataList.set(k, poolOriginalDataList.get(k) / recordList.size());

217. }

218. Record r = new Record();

219. r.setDataList(poolOriginalDataList);

220. clusterList.get(i).setCentroid(r);

221. }

222. // ========== START OF DATABASE OPERATION ===============

223. if(saveDB) {

224. DatabaseOperationController dbController = new DatabaseOperationController();

225. dbController.performDBOperation(pool, ds.getMasterLinkedList());

226. clusteringForm.getProgressBar().setValue(100);

227.

228. }

229. // ========== END OF DATABASE OPERATION ==================

230. }

231. }

1.2.1.7.2. Kelas EntryRetrieval.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package main;

8.

9. import database.DatabaseRWOperation;

10. import gmeans.Calculation;

11. import gmeans.Cluster;

12. import gmeans.ClusterPool;

13. import gmeans.ModifiedLinkedList;

14. import gmeans.Point;

15. import gmeans.Record;

16. import gmeans.Utility;

17. import helper.QuickSort;

18. import ir.DataStructuring;

19. import ir.Preprocess;

20. import ir.TfIdf;

21. import java.sql.SQLException;

22. import java.util.ArrayList;

23. import java.util.HashMap;

24. import java.util.Iterator;

25. import java.util.LinkedList;

26. import java.util.List;

27. import java.util.logging.Level;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 241: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

28. import java.util.logging.Logger;

29.

30. /**

31. *

32. * @author pacman

33. */

34. public class MainRetrieval {

35.

36. public List<Record> retrieve(String userQuery, boolean isClusterBased) {

37. Preprocess prep = new Preprocess();

38. Utility util = new Utility();

39.

40. DatabaseRWOperation dbrw = new DatabaseRWOperation();

41.

42. DataStructuring ds = new DataStructuring();

43.

44. // ========== CLUSTER QUERYING ========================

45. String query = userQuery;

46.

47. // ambil dari db

48. ModifiedLinkedList masterLinkedList = null;

49. try {

50. masterLinkedList = dbrw.readMasterTerm();

51. } catch (SQLException ex) {

52. Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null, ex);

53. }

54.

55. prep.preprocessQuery(query);

56. String[] queryArray = prep.getContent();

57. String[] wordArray = queryArray[0].split("\\s+");

58.

59. String[] matchQuery = util.sentenceTermContainInList(masterLinkedList, wordArray);

60. System.out.println("matchQuery length: " + matchQuery.length);

61.

62. if (util.emptyStringArray(matchQuery)) {

63. System.out.println("tidak ditemukan dokumen dengan kata kunci tersebut");

64. return null;

65. } else {

66. System.out.println("exist");

67. }

68.

69. // UBAH QUERY KE BENTUK RECORD

70. Record recQuery = ds.tokenizeQuery(matchQuery);

71.

72. // MERGE AGAR MEMILIKI DIMENSI COLUMN YANG SAMA DENGAN RECORD YANG LAIN

73. recQuery = ds.mergeQuery(recQuery, masterLinkedList);

74.

75. // ambil dari db

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 242: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

76. HashMap<String, Integer> mapPointDf = null;

77. try {

78. mapPointDf = dbrw.mapPoint();

79. } catch (SQLException ex) {

80. Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null, ex);

81. }

82.

83. // ambil dari db

84. int documentCount = 0;

85. try {

86. documentCount = dbrw.allDocumentCount();

87. } catch (SQLException ex) {

88. Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null, ex);

89. }

90.

91. // HITUNG BOBOT (TF-IDF) QUERY

92. ModifiedLinkedList pointList = recQuery.getPointList();

93. Iterator<Point> iterator = pointList.iterator();

94. while (iterator.hasNext()) {

95. Point next = iterator.next();

96. String term = next.getTerm();

97. boolean containsKey = mapPointDf.containsKey(term);

98. if (containsKey) {

99. next.setDf(mapPointDf.get(term));

100. double w = next.getTf() * Math.log10(documentCount / next.getDf());

101. next.setWNorm(w);

102. }

103. }

104.

105.

106. // ================ END OF CLUSTER QUERYING =========================

107.

108. // ============ START OF WEIGHTING DOC BASED ON QUERY ==============

109. System.out.println("-----");

110.

111. ClusterPool fastReadPool = null;

112. int matchIndex;

113.

114. // ambil dari db

115. Cluster selectedCluster = null;

116. try {

117. if (isClusterBased) {

118. fastReadPool = clusterPool();

119. matchIndex = matchIndex(fastReadPool, recQuery, 1);

120. if(matchIndex == -1) {

121. matchIndex = matchIndex(fastReadPool, recQuery, 2);

122. }

123. selectedCluster = dbrw.readSingleCluster(fastReadPool.getClusterAt(matchIndex));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 243: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

124. } else {

125. selectedCluster = dbrw.readMultipleCluster();

126. }

127.

128. } catch (SQLException ex) {

129. Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null, ex);

130. }

131.

132. List<Record> documentWeighting = documentWeighting(selectedCluster, recQuery, 1);

133. if(documentWeighting.isEmpty()) {

134. documentWeighting = documentWeighting(selectedCluster, recQuery, 2);

135. }

136.

137. return documentWeighting;

138.

139. }

140.

141. public List<Record> documentWeighting(Cluster selectedCluster, Record recQuery, int

booleanOperator) {

142.

143. Utility util = new Utility();

144. Calculation calc = new Calculation();

145.

146. TfIdf tfIdf = new TfIdf();

147. tfIdf.performWeighting(selectedCluster);

148. selectedCluster = tfIdf.getCluster();

149.

150. // IR konvensional mulai dari sini

151. LinkedList<Record> recordList = selectedCluster.getRecordList();

152.

153. double[] docWeight = new double[recordList.size()];

154. for (int i = 0; i < recordList.size(); i++) {

155. Record rec = recordList.get(i);

156. List<Double> dataList = rec.getDataList();

157. double[] convDataList = new double[dataList.size()];

158. for (int j = 0; j < dataList.size(); j++) {

159. convDataList[j] = dataList.get(j);

160. }

161. double[] convQuery = util.convert1DRecordToArray(recQuery);

162.

163. double calculateWQD = calc.calculateWQD(convQuery, convDataList,

booleanOperator);

164. docWeight[i] = calculateWQD;

165. }

166.

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

168. System.out.println(docWeight[i] + " ");

169. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 244: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

170.

171. // ============ END OF WEIGHTING DOC BASED ON QUERY ==============

172.

173. // ============ START OF SORTING DOC WEIGHT BASED ON QUERY ==============

174. int[] index = new int[docWeight.length];

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

176. index[i] = i;

177. }

178.

179. QuickSort.quicksort(docWeight, index);

180. System.out.println("Result");

181.

182. List<Record> sortedList = new ArrayList<>();

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

184. System.out.println(index[i]+" ");

185. String toString = recordList.get(index[i]).toString();

186. if(docWeight[i] > 0.0) {

187. sortedList.add(recordList.get(index[i]));

188. }

189. System.out.println(toString);

190. }

191.

192. return sortedList;

193. }

194.

195. public ClusterPool clusterPool() {

196. DatabaseRWOperation dbrw = new DatabaseRWOperation();

197.

198. // ambil dari db

199. ClusterPool fastReadPool = null;

200. try {

201. fastReadPool = dbrw.fastRead();

202. } catch (SQLException ex) {

203. Logger.getLogger(MainRetrieval.class.getName()).log(Level.SEVERE, null, ex);

204. }

205. return fastReadPool;

206. }

207.

208. public int matchIndex(ClusterPool fastReadPool, Record recQuery, int booleanOperator) {

209. int matchIndex = -1;

210. double maxVal = 0;

211.

212. Utility util = new Utility();

213. Calculation calc = new Calculation();

214.

215. LinkedList<Cluster> fastClusterList = fastReadPool.getClusterList();

216.

217. for (int i = 0; i < fastClusterList.size(); i++) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 245: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

218. // AMBIL CENTROID DALAM BENTUK RECORD

219. Record centroid = fastClusterList.get(i).getCentroid();

220.

221. // KONVERSI RECORD CENTROID KE BENTUK ARRAY

222. List<Double> dataList = centroid.getDataList();

223. double[] convCentroid = new double[dataList.size()];

224. for (int j = 0; j < dataList.size(); j++) {

225. convCentroid[j] = dataList.get(j);

226. }

227.

228. // KONVERSI RECORD QUERY (WNORM NYA) KE BENTUK ARRAY

229. double[] convQuery = util.convert1DRecordToArray(recQuery);

230.

231. double calculateWQD = calc.calculateWQD(convQuery, convCentroid,

booleanOperator);

232. System.out.println("wqd : " + calculateWQD);

233.

234. if (calculateWQD > maxVal) {

235. maxVal = calculateWQD;

236. matchIndex = i;

237. }

238. }

239.

240. System.out.println("match index: " + matchIndex);

241.

242. return matchIndex;

243. }

244.

245. }

1.2.1.8. Package parser

1.2.1.8.1. Kelas Parser.java

1. /*

2. * To change this template, choose Tools | Templates

3. * and open the template in the editor.

4. */

5. package parser;

6.

7. import java.io.File;

8. import java.io.IOException;

9. import org.apache.commons.io.FileUtils;

10. import org.apache.commons.lang3.StringUtils;

11.

12. /**

13. *

14. * @author basisd04

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 246: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

15. */

16. public class Parser {

17.

18. public Parser() {

19. }

20.

21. public String readFileToString(String path) throws IOException {

22. File file = new File(path);

23. return FileUtils.readFileToString(file);

24. }

25.

26. /**

27. * Baca teks diantara 2 tag (xml)

28. * @param data teks yang akan diekstrak

29. * @param tagOpen String tag pembuka

30. * @param tagClose String tag penutup

31. * @return

32. */

33. public String[] readBetweenTag(String data, String tagOpen, String tagClose) {

34. return StringUtils.substringsBetween(data, tagOpen, tagClose);

35. }

36.

37. public String replaceWhiteSpaceAndSymbol(String[] data) {

38. String all = "";

39.

40. for (String title : data) {

41. String replaceWhiteSpace = title.trim().replaceAll("\\s+", " "); // replace whitespace,

termasuk space, tab, newline

42. String replaceNonAlphaNumeric = replaceWhiteSpace.replaceAll("[\\W]|_", " ");

43. all += replaceNonAlphaNumeric;

44. }

45.

46. return all;

47. }

48.

49. public String replaceWhiteSpaceAndSymbol(String data) {

50. String all = "";

51.

52. String replaceWhiteSpace = data.trim().replaceAll("\\s+", " "); // replace whitespace,

termasuk space, tab, newline

53. String replaceNonAlphaNumeric = replaceWhiteSpace.replaceAll("[\\W]|_", " ");

54. all += replaceNonAlphaNumeric;

55.

56. return all;

57. }

58.

59. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 247: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

1.2.1.8.2. Kelas Tokenizer.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package parser;

7.

8. /**

9. *

10. * @author root

11. */

12. public class Tokenizer {

13.

14. public Tokenizer() {

15. }

16.

17. /**

18. * Mengambil tiap kata dlm suatu kalimat. Sekaligus menghilangkan tanda baca

19. * @param sentence

20. * @return

21. */

22. public String[] tokenize(String sentence) {

23. sentence = sentence.toLowerCase();

24. sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", "");

25. String[] wordArray = sentence.split("\\s+");

26.

27. return wordArray;

28. }

29.

30. }

1.2.1.9. Package stemmer

1.2.1.9.1. Kelas EnhancedStemmer.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6. package stemmer;

7.

8. import database.Connection;

9. import java.sql.PreparedStatement;

10. import java.sql.ResultSet;

11. import java.sql.SQLException;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 248: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

12. import java.util.logging.Level;

13. import java.util.logging.Logger;

14. import java.util.regex.Matcher;

15. import java.util.regex.Pattern;

16.

17. /**

18. *

19. * @author pacman

20. */

21. public class EnhancedStemmer {

22.

23. public static void main(String[] args) {

24. EnhancedStemmer m = new EnhancedStemmer();

25. String word = "diperistri";

26.

27. String stem = m.stem(word);

28.

29. System.out.println(stem);

30.

31. // String res = m.del_inflection_suffixes(word);

32. //

33. // System.out.println(res);

34. // boolean matches = Pattern.matches("([km]u|nya|[kl]ah|pun)+$", word);

35. // Matcher matcher = Pattern.compile("/(kan)+$/").matcher(word);

36. //

37. // String replaceAll = matcher.replaceAll("");

38. //

39. // System.out.println(replaceAll);

40. //

41. // boolean matches = matcher.find();

42. //

43. // System.out.println(matches);

44. }

45.

46. public String[] stem(String[] sentence) {

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

48. String[] wordArray = sentence[i].split("\\s+");

49. String newSentence = "";

50. for (int j = 0; j < wordArray.length; j++) {

51. boolean cekKamusImportantWord = cekKamusImportantWord(wordArray[j]);

52. if(!cekKamusImportantWord) {;

53. wordArray[j] = stem(wordArray[j]);

54. }

55.

56. newSentence += wordArray[j] + " ";

57. }

58. sentence[i] = newSentence;

59. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 249: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

60. return sentence;

61. }

62.

63. public String stem(String word) {

64. boolean cekKamus = cekKamus(word);

65.

66. /* 1. Cek Kata di Kamus jika Ada SELESAI */

67. if (cekKamus) {

68. return word;

69. }

70.

71. /* 2. Buang Infection suffixes (\-lah", \-kah", \-ku", \-mu", atau \-nya") */

72. word = Del_Inflection_Suffixes(word);

73.

74. /* 3. Buang Derivation suffix (\-i" or \-an") */

75. word = Del_Derivation_Suffixes(word);

76.

77. /* 4. Buang Derivation prefix */

78. word = Del_Derivation_Prefix(word);

79.

80. return word;

81. }

82.

83. public boolean cekKamusImportantWord(String word) {

84. try {

85. // TODO

86. java.sql.Connection conn = Connection.getConnection();

87. String sql = "SELECT * from stopword_clustering_ina where stopword = ?";

88. conn.setAutoCommit(false);

89.

90. PreparedStatement ps = conn.prepareStatement(sql);

91.

92. ps.setString(1, word);

93.

94. ResultSet rs = ps.executeQuery();

95.

96. conn.commit();

97.

98. int counter = 0;

99. while (rs.next()) {

100. counter++;

101. }

102.

103. conn.close();

104.

105. if (counter > 0) {

106. return true;

107. } else {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 250: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

108. return false;

109. }

110. } catch (SQLException ex) {

111. Logger.getLogger(EnhancedStemmer.class.getName()).log(Level.SEVERE, null, ex);

112. }

113. return false;

114.

115. }

116.

117. public boolean cekKamus(String word) {

118. try {

119. // TODO

120. java.sql.Connection conn = Connection.getConnection();

121. String sql = "SELECT * from rootword_ina where rootword = ? LIMIT 1";

122. conn.setAutoCommit(false);

123.

124. PreparedStatement ps = conn.prepareStatement(sql);

125.

126. ps.setString(1, word);

127.

128. ResultSet rs = ps.executeQuery();

129.

130. conn.commit();

131.

132. int counter = 0;

133. while (rs.next()) {

134. counter++;

135. }

136.

137. conn.close();

138.

139. if (counter > 0) {

140. return true;

141. } else {

142. return false;

143. }

144. } catch (SQLException ex) {

145. Logger.getLogger(EnhancedStemmer.class.getName()).log(Level.SEVERE, null, ex);

146. }

147. return false;

148.

149. }

150.

151. public String Del_Inflection_Suffixes(String kata) {

152. String kataAsal = kata;

153. if (eregi("([km]u|nya|[kl]ah|pun)+$", kata)) { // Cek Inflection Suffixes

154. String kata1 = eregi_replace("([km]u|nya|[kl]ah|pun)+$", "", kata);

155. if eregi " kl ah|pu +$", kata // Jika erupa parti les “-lah�, “-kah�,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 251: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

“-tah� atau “-pun�)

156. if eregi " k u| ya +$", kata1 // Hapus Possesi e Pro ou s “-ku�, “-

mu�, atau “-nya�)

157. String kata2 = eregi_replace("([km]u|nya)+$", "", kata1);

158. return kata2;

159. }

160. }

161. return kata1;

162. }

163. return kataAsal;

164. }

165.

166. public boolean Cek_Rule_Precedence(String word) {

167. if (eregi("^(be)[[:alpha:]]+(lah|an)+$", word)) { // be- dan -i

168. return true;

169. }

170. if (eregi("^(di|([mpt]e))[[:alpha:]]+(i)+$", word)) { // di- dan -an

171. return true;

172. }

173. return false;

174. }

175.

176. // Cek Prefix Disallowed Sufixes (Kombinasi Awalan dan Akhiran yang tidak diizinkan)

177. public boolean Cek_Prefix_Disallowed_Sufixes(String word) {

178. if (eregi("^(be)[[:alpha:]]+(i)+$", word)) { // be- dan -i

179. return true;

180. }

181. if (eregi("^(di)[[:alpha:]]+(an)+$", word)) { // di- dan -an

182. return true;

183.

184. }

185. if (eregi("^(ke)[[:alpha:]]+(i|kan)+$", word)) { // ke- dan -i,-kan

186. return true;

187. }

188. if (eregi("^(me)[[:alpha:]]+(an)+$", word)) { // me- dan -an

189. return true;

190. }

191. if (eregi("^(se)[[:alpha:]]+(i|kan)+$", word)) { // se- dan -i,-kan

192. return true;

193. }

194. return false;

195. }

196.

197. // Hapus Derivation Suffixes ("-i", "-an" atau "-kan")

198. public String Del_Derivation_Suffixes(String kata) {

199. String kataAsal = kata;

200.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 252: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

201. if (preg_match("/(kan)+$/", kata)) { // Cek Suffixes

202. String kata1 = preg_replace("/(kan)+$/", "", kata);

203. if (cekKamus(kata1)) { // Cek Kamus

204. return kata1;

205. }

206. }

207. if (preg_match("/(an|i)+$/", kata)) { // cek -kan

208. String kata2 = preg_replace("/(an|i)+$/", "", kata);

209. if (cekKamus(kata2)) { // Cek Kamus

210. return kata2;

211. }

212. }

213. if (Cek_Prefix_Disallowed_Sufixes(kata)) {

214. return kataAsal;

215. }

216. return kataAsal;

217. }

218.

219. // Hapus Derivation Prefix ("di-", "ke-", "se-", "te-", "be-", "me-", atau "pe-")

220. public String Del_Derivation_Prefix(String kata) {

221. String kataAsal = kata;

222. String kata1 = "";

223. String kata2 = "";

224. /* ------ Tentukan Tipe Awalan ------------*/

225. if (preg_match("/^(di|[ks]e)\\S{1,}/", kata)) { // Jika di-,ke-,se-

226. kata1 = preg_replace("/^(di|[ks]e)/", "", kata);

227. if (cekKamus(kata1)) {

228. return kata1; // Jika ada balik

229. }

230. kata2 = Del_Derivation_Suffixes(kata1);

231. if (cekKamus(kata2)) {

232. return kata2;

233. }

234. }

235. if (preg_match("/^([^aiueo])e\\1[aiueo]\\S{1,}/", kata)) { // aturan 37

236. kata1 = preg_replace("/^([^aiueo])e/", "", kata);

237. if (cekKamus(kata1)) {

238. return kata1; // Jika ada balik

239. }

240. kata2 = Del_Derivation_Suffixes(kata1);

241. if (cekKamus(kata2)) {

242. return kata2;

243. }

244. }

245. if (preg_match("/^([tmbp]e)\\S{1,}/", kata)) { //Jika awalannya adalah “te-�,

“me-�, “be-�, atau “pe-�

246. /*------------ A ala “ e-�, ---------------------------------------------*/

247. if (preg_match("/^(be)\\S 1, /", kata // Jika a ala “ e-�,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 253: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

248. if (preg_match("/^(ber)[aiueo]\\S{1,}/", kata)) { // aturan 1.

249. kata1 = preg_replace("/^(ber)/", "", kata);

250. if (cekKamus(kata1)) {

251. return kata1; // Jika ada balik

252. }

253. kata2 = Del_Derivation_Suffixes(kata1);

254. if (cekKamus(kata2)) {

255. return kata2;

256. }

257. kata1 = preg_replace("/^(ber)/", "r", kata);

258. if (cekKamus(kata1)) {

259. return kata1; // Jika ada balik

260. }

261. kata2 = Del_Derivation_Suffixes(kata1);

262. if (cekKamus(kata2)) {

263. return kata2;

264. }

265. }

266.

267. if (preg_match("/^(ber)[^aiueor][[:alpha:]](?!er)\\S{1,}/", kata)) { //aturan 2.

268. kata1 = preg_replace("/^(ber)/", "", kata);

269. if (cekKamus(kata1)) {

270. return kata1; // Jika ada balik

271. }

272. kata2 = Del_Derivation_Suffixes(kata1);

273. if (cekKamus(kata2)) {

274. return kata2;

275. }

276. }

277.

278. if (preg_match("/^(ber)[^aiueor][[:alpha:]]er[aiueo]\\S{1,}/", kata)) { //aturan 3.

279. kata1 = preg_replace("/^(ber)/", "", kata);

280. if (cekKamus(kata1)) {

281. return kata1; // Jika ada balik

282. }

283. kata2 = Del_Derivation_Suffixes(kata1);

284. if (cekKamus(kata2)) {

285. return kata2;

286. }

287. }

288.

289. if (preg_match("/^belajar\\S{0,}/", kata)) { //aturan 4.

290. kata1 = preg_replace("/^(bel)/", "", kata);

291. if (cekKamus(kata1)) {

292. return kata1; // Jika ada balik

293. }

294. kata2 = Del_Derivation_Suffixes(kata1);

295. if (cekKamus(kata2)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 254: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

296. return kata2;

297. }

298. }

299.

300. if (preg_match("/^(be)[^aiueolr]er[^aiueo]\\S{1,}/", kata)) { //aturan 5.

301. kata1 = preg_replace("/^(be)/", "", kata);

302. if (cekKamus(kata1)) {

303. return kata1; // Jika ada balik

304. }

305. kata2 = Del_Derivation_Suffixes(kata1);

306. if (cekKamus(kata2)) {

307. return kata2;

308. }

309. }

310. }

311. /*------------e d “ e-�, ---------------------------------------------*/

312. /*------------ A ala “te-�, ---------------------------------------------*/

313. if (preg_match("/^(te)\\S 1, /", kata // Jika a ala “te-�,

314.

315. if (preg_match("/^(terr)\\S{1,}/", kata)) {

316. return kata;

317. }

318. if (preg_match("/^(ter)[aiueo]\\S{1,}/", kata)) { // aturan 6.

319. kata1 = preg_replace("/^(ter)/", "", kata);

320. if (cekKamus(kata1)) {

321. return kata1; // Jika ada balik

322. }

323. kata2 = Del_Derivation_Suffixes(kata1);

324. if (cekKamus(kata2)) {

325. return kata2;

326. }

327. kata1 = preg_replace("/^(ter)/", "r", kata);

328. if (cekKamus(kata1)) {

329. return kata1; // Jika ada balik

330. }

331. kata2 = Del_Derivation_Suffixes(kata1);

332. if (cekKamus(kata2)) {

333. return kata2;

334. }

335. }

336.

337. if (preg_match("/^(ter)[^aiueor]er[aiueo]\\S{1,}/", kata)) { // aturan 7.

338. kata1 = preg_replace("/^(ter)/", "", kata);

339. if (cekKamus(kata1)) {

340. return kata1; // Jika ada balik

341. }

342. kata2 = Del_Derivation_Suffixes(kata1);

343. if (cekKamus(kata2)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 255: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

344. return kata2;

345. }

346. }

347. if (preg_match("/^(ter)[^aiueor](?!er)\\S{1,}/", kata)) { // aturan 8.

348. kata1 = preg_replace("/^(ter)/", "", kata);

349. if (cekKamus(kata1)) {

350. return kata1; // Jika ada balik

351. }

352. kata2 = Del_Derivation_Suffixes(kata1);

353. if (cekKamus(kata2)) {

354. return kata2;

355. }

356. }

357. if (preg_match("/^(te)[^aiueor]er[aiueo]\\S{1,}/", kata)) { // aturan 9.

358. kata1 = preg_replace("/^(te)/", "", kata);

359. if (cekKamus(kata1)) {

360. return kata1; // Jika ada balik

361. }

362. kata2 = Del_Derivation_Suffixes(kata1);

363. if (cekKamus(kata2)) {

364. return kata2;

365. }

366. }

367.

368. if (preg_match("/^(ter)[^aiueor]er[^aiueo]\\S{1,}/", kata)) { // aturan 35 belum bisa

369. kata1 = preg_replace("/^(ter)/", "", kata);

370. if (cekKamus(kata1)) {

371. return kata1; // Jika ada balik

372. }

373.

374. kata2 = Del_Derivation_Suffixes(kata1);

375. if (cekKamus(kata2)) {

376. return kata2;

377. }

378. }

379. }

380. /*------------e d “te-�, ---------------------------------------------*/

381. /*------------ A ala “ e-�, ---------------------------------------------*/

382. if (preg_match("/^(me)\\S 1, /", kata // Jika a ala “ e-�,

383.

384. if (preg_match("/^(me)[lrwyv][aiueo]/", kata)) { // aturan 10

385. kata1 = preg_replace("/^(me)/", "", kata);

386. if (cekKamus(kata1)) {

387. return kata1; // Jika ada balik

388. }

389. kata2 = Del_Derivation_Suffixes(kata1);

390. if (cekKamus(kata2)) {

391. return kata2;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 256: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

392. }

393. }

394.

395. if (preg_match("/^(mem)[bfvp]\\S{1,}/", kata)) { // aturan 11.

396. kata1 = preg_replace("/^(mem)/", "", kata);

397. if (cekKamus(kata1)) {

398. return kata1; // Jika ada balik

399. }

400. kata2 = Del_Derivation_Suffixes(kata1);

401. if (cekKamus(kata2)) {

402. return kata2;

403. }

404. }

405. /*if(preg_match("/^(mempe)\\S{1,}/",kata)){ // aturan 12

406. kata1 = preg_replace("/^(mem)/",'pe',kata);

407.

408. if(cekKamus(kata1)){

409.

410. return kata1; // Jika ada balik

411. }

412. kata2 = Del_Derivation_Suffixes(kata1);

413. if(cekKamus(kata2)){

414. return kata2;

415. }

416. }*/

417. if (preg_match("/^(mem)((r[aiueo])|[aiueo])\\S{1,}/", kata)) {//aturan 13

418. kata1 = preg_replace("/^(mem)/", "m", kata);

419. if (cekKamus(kata1)) {

420. return kata1; // Jika ada balik

421. }

422. kata2 = Del_Derivation_Suffixes(kata1);

423. if (cekKamus(kata2)) {

424. return kata2;

425. }

426. kata1 = preg_replace("/^(mem)/", "p", kata);

427. if (cekKamus(kata1)) {

428. return kata1; // Jika ada balik

429. }

430. kata2 = Del_Derivation_Suffixes(kata1);

431. if (cekKamus(kata2)) {

432. return kata2;

433. }

434. }

435.

436. if (preg_match("/^(men)[cdjszt]\\S{1,}/", kata)) { // aturan 14.

437. kata1 = preg_replace("/^(men)/", "", kata);

438. if (cekKamus(kata1)) {

439. return kata1; // Jika ada balik

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 257: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

440. }

441. kata2 = Del_Derivation_Suffixes(kata1);

442. if (cekKamus(kata2)) {

443. return kata2;

444. }

445. }

446.

447. if (preg_match("/^(men)[aiueo]\\S{1,}/", kata)) {//aturan 15

448. kata1 = preg_replace("/^(men)/", "n", kata);

449. if (cekKamus(kata1)) {

450. return kata1; // Jika ada balik

451. }

452. kata2 = Del_Derivation_Suffixes(kata1);

453. if (cekKamus(kata2)) {

454. return kata2;

455. }

456. kata1 = preg_replace("/^(men)/", "t", kata);

457. if (cekKamus(kata1)) {

458. return kata1; // Jika ada balik

459. }

460. kata2 = Del_Derivation_Suffixes(kata1);

461. if (cekKamus(kata2)) {

462. return kata2;

463. }

464. }

465.

466. if (preg_match("/^(meng)[ghqk]\\S{1,}/", kata)) { // aturan 16.

467. kata1 = preg_replace("/^(meng)/", "", kata);

468. if (cekKamus(kata1)) {

469. return kata1; // Jika ada balik

470. }

471. kata2 = Del_Derivation_Suffixes(kata1);

472. if (cekKamus(kata2)) {

473. return kata2;

474. }

475. }

476.

477. if (preg_match("/^(meng)[aiueo]\\S{1,}/", kata)) { // aturan 17

478. kata1 = preg_replace("/^(meng)/", "", kata);

479. if (cekKamus(kata1)) {

480. return kata1; // Jika ada balik

481. }

482. kata2 = Del_Derivation_Suffixes(kata1);

483. if (cekKamus(kata2)) {

484. return kata2;

485. }

486. kata1 = preg_replace("/^(meng)/", "k", kata);

487. if (cekKamus(kata1)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 258: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

488. return kata1; // Jika ada balik

489. }

490. kata2 = Del_Derivation_Suffixes(kata1);

491. if (cekKamus(kata2)) {

492. return kata2;

493. }

494. kata1 = preg_replace("/^(menge)/", "", kata);

495. if (cekKamus(kata1)) {

496. return kata1; // Jika ada balik

497. }

498. kata2 = Del_Derivation_Suffixes(kata1);

499. if (cekKamus(kata2)) {

500. return kata2;

501. }

502. }

503.

504. if (preg_match("/^(meny)[aiueo]\\S{1,}/", kata)) { // aturan 18.

505. kata1 = preg_replace("/^(meny)/", "s", kata);

506. if (cekKamus(kata1)) {

507. return kata1; // Jika ada balik

508. }

509. kata2 = Del_Derivation_Suffixes(kata1);

510. if (cekKamus(kata2)) {

511. return kata2;

512. }

513. kata1 = preg_replace("/^(me)/", "", kata);

514. if (cekKamus(kata1)) {

515. return kata1; // Jika ada balik

516. }

517. kata2 = Del_Derivation_Suffixes(kata1);

518. if (cekKamus(kata2)) {

519. return kata2;

520. }

521. }

522. }

523. /*------------e d “ e-�, ---------------------------------------------*/

524.

525. /*------------ Awalan “pe-�, ---------------------------------------------*/

526. if (preg_match("/^(pe)\\S 1, /", kata // Jika a ala “pe-�,

527.

528. if (preg_match("/^(pe)[wy]\\S{1,}/", kata)) { // aturan 20.

529. kata1 = preg_replace("/^(pe)/", "", kata);

530. if (cekKamus(kata1)) {

531. return kata1; // Jika ada balik

532. }

533. kata2 = Del_Derivation_Suffixes(kata1);

534. if (cekKamus(kata2)) {

535. return kata2;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 259: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

536. }

537. }

538.

539. if (preg_match("/^(per)[aiueo]\\S{1,}/", kata)) { // aturan 21

540. kata1 = preg_replace("/^(per)/", "", kata);

541. if (cekKamus(kata1)) {

542. return kata1; // Jika ada balik

543. }

544. kata2 = Del_Derivation_Suffixes(kata1);

545. if (cekKamus(kata2)) {

546. return kata2;

547. }

548. kata1 = preg_replace("/^(per)/", "r", kata);

549. if (cekKamus(kata1)) {

550. return kata1; // Jika ada balik

551. }

552. kata2 = Del_Derivation_Suffixes(kata1);

553. if (cekKamus(kata2)) {

554. return kata2;

555. }

556. }

557. if (preg_match("/^(per)[^aiueor][[:alpha:]](?!er)\\S{1,}/", kata)) { // aturan 23

558. kata1 = preg_replace("/^(per)/", "", kata);

559. if (cekKamus(kata1)) {

560. return kata1; // Jika ada balik

561. }

562.

563. kata2 = Del_Derivation_Suffixes(kata1);

564. if (cekKamus(kata2)) {

565. return kata2;

566. }

567. }

568.

569. if (preg_match("/^(per)[^aiueor][[:alpha:]](er)[aiueo]\\S{1,}/", kata)) { // aturan 24

570. kata1 = preg_replace("/^(per)/", "", kata);

571. if (cekKamus(kata1)) {

572. return kata1; // Jika ada balik

573. }

574.

575. kata2 = Del_Derivation_Suffixes(kata1);

576. if (cekKamus(kata2)) {

577. return kata2;

578. }

579. }

580.

581. if (preg_match("/^(pem)[bfv]\\S{1,}/", kata)) { // aturan 25

582. kata1 = preg_replace("/^(pem)/", "", kata);

583. if (cekKamus(kata1)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 260: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

584. return kata1; // Jika ada balik

585. }

586.

587. kata2 = Del_Derivation_Suffixes(kata1);

588. if (cekKamus(kata2)) {

589. return kata2;

590. }

591. }

592.

593. if (preg_match("/^(pem)(r[aiueo]|[aiueo])\\S{1,}/", kata)) { // aturan 26

594. kata1 = preg_replace("/^(pem)/", "m", kata);

595. if (cekKamus(kata1)) {

596. return kata1; // Jika ada balik

597. }

598.

599. kata2 = Del_Derivation_Suffixes(kata1);

600. if (cekKamus(kata2)) {

601. return kata2;

602. }

603. kata1 = preg_replace("/^(pem)/", "p", kata);

604. if (cekKamus(kata1)) {

605. return kata1; // Jika ada balik

606. }

607.

608. kata2 = Del_Derivation_Suffixes(kata1);

609. if (cekKamus(kata2)) {

610. return kata2;

611. }

612. }

613.

614. if (preg_match("/^(pen)[cdjzt]\\S{1,}/", kata)) { // aturan 27

615. kata1 = preg_replace("/^(pen)/", "", kata);

616. if (cekKamus(kata1)) {

617. return kata1; // Jika ada balik

618. }

619.

620. kata2 = Del_Derivation_Suffixes(kata1);

621. if (cekKamus(kata2)) {

622. return kata2;

623. }

624. }

625.

626. if (preg_match("/^(pen)[aiueo]\\S{1,}/", kata)) { // aturan 28

627. kata1 = preg_replace("/^(pen)/", "n", kata);

628. if (cekKamus(kata1)) {

629. return kata1; // Jika ada balik

630. }

631.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 261: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

632. kata2 = Del_Derivation_Suffixes(kata1);

633. if (cekKamus(kata2)) {

634. return kata2;

635. }

636. kata1 = preg_replace("/^(pen)/", "t", kata);

637. if (cekKamus(kata1)) {

638. return kata1; // Jika ada balik

639. }

640.

641. kata2 = Del_Derivation_Suffixes(kata1);

642. if (cekKamus(kata2)) {

643. return kata2;

644. }

645. }

646.

647. if (preg_match("/^(peng)[^aiueo]\\S{1,}/", kata)) { // aturan 29

648. kata1 = preg_replace("/^(peng)/", "", kata);

649. if (cekKamus(kata1)) {

650. return kata1; // Jika ada balik

651. }

652.

653. kata2 = Del_Derivation_Suffixes(kata1);

654. if (cekKamus(kata2)) {

655. return kata2;

656. }

657. }

658.

659. if (preg_match("/^(peng)[aiueo]\\S{1,}/", kata)) { // aturan 30

660. kata1 = preg_replace("/^(peng)/", "", kata);

661. if (cekKamus(kata1)) {

662. return kata1; // Jika ada balik

663. }

664.

665. kata2 = Del_Derivation_Suffixes(kata1);

666. if (cekKamus(kata2)) {

667. return kata2;

668. }

669. kata1 = preg_replace("/^(peng)/", "k", kata);

670. if (cekKamus(kata1)) {

671. return kata1; // Jika ada balik

672. }

673.

674. kata2 = Del_Derivation_Suffixes(kata1);

675. if (cekKamus(kata2)) {

676. return kata2;

677. }

678. kata1 = preg_replace("/^(penge)/", "", kata);

679. if (cekKamus(kata1)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 262: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

680. return kata1; // Jika ada balik

681. }

682.

683. kata2 = Del_Derivation_Suffixes(kata1);

684. if (cekKamus(kata2)) {

685. return kata2;

686. }

687. }

688.

689. if (preg_match("/^(peny)[aiueo]\\S{1,}/", kata)) { // aturan 31

690. kata1 = preg_replace("/^(peny)/", "s", kata);

691. if (cekKamus(kata1)) {

692. return kata1; // Jika ada balik

693. }

694.

695. kata2 = Del_Derivation_Suffixes(kata1);

696. if (cekKamus(kata2)) {

697. return kata2;

698. }

699. kata1 = preg_replace("/^(pe)/", "", kata);

700. if (cekKamus(kata1)) {

701. return kata1; // Jika ada balik

702. }

703.

704. kata2 = Del_Derivation_Suffixes(kata1);

705. if (cekKamus(kata2)) {

706. return kata2;

707. }

708. }

709.

710. if (preg_match("/^(pel)[aiueo]\\S{1,}/", kata)) { // aturan 32

711. kata1 = preg_replace("/^(pel)/", "l", kata);

712. if (cekKamus(kata1)) {

713. return kata1; // Jika ada balik

714. }

715.

716. kata2 = Del_Derivation_Suffixes(kata1);

717. if (cekKamus(kata2)) {

718. return kata2;

719. }

720. }

721.

722. if (preg_match("/^(pelajar)\\S{0,}/", kata)) {

723. kata1 = preg_replace("/^(pel)/", "", kata);

724. if (cekKamus(kata1)) {

725. return kata1; // Jika ada balik

726. }

727.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 263: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

728. kata2 = Del_Derivation_Suffixes(kata1);

729. if (cekKamus(kata2)) {

730. return kata2;

731. }

732. }

733.

734. if (preg_match("/^(pe)[^rwylmn]er[aiueo]\\S{1,}/", kata)) { // aturan 33

735. kata1 = preg_replace("/^(pe)/", "", kata);

736. if (cekKamus(kata1)) {

737. return kata1; // Jika ada balik

738. }

739.

740. kata2 = Del_Derivation_Suffixes(kata1);

741. if (cekKamus(kata2)) {

742. return kata2;

743. }

744. }

745.

746. if (preg_match("/^(pe)[^rwylmn](?!er)\\S{1,}/", kata)) { // aturan 34

747. kata1 = preg_replace("/^(pe)/", "", kata);

748. if (cekKamus(kata1)) {

749. return kata1; // Jika ada balik

750. }

751.

752. kata2 = Del_Derivation_Suffixes(kata1);

753. if (cekKamus(kata2)) {

754. return kata2;

755. }

756. }

757.

758. if (preg_match("/^(pe)[^aiueor]er[^aiueo]\\S{1,}/", kata)) { // aturan 36

759. kata1 = preg_replace("/^(pe)/", "", kata);

760. if (cekKamus(kata1)) {

761. return kata1; // Jika ada balik

762. }

763.

764. kata2 = Del_Derivation_Suffixes(kata1);

765. if (cekKamus(kata2)) {

766. return kata2;

767. }

768. }

769. }

770. }

771. /*------------e d “pe-�, ---------------------------------------------*/

772. /*------------ A ala “ e per-�, ---------------------------------------------*/

773. if (preg_match("/^(memper)\\S{1,}/", kata)) {

774. kata1 = preg_replace("/^(memper)/", "", kata);

775. if (cekKamus(kata1)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 264: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

776. return kata1; // Jika ada balik

777. }

778. kata2 = Del_Derivation_Suffixes(kata1);

779. if (cekKamus(kata2)) {

780. return kata2;

781. }

782. //*-- Cek luluh -r ----------

783. kata1 = preg_replace("/^(memper)/", "r", kata);

784. if (cekKamus(kata1)) {

785. return kata1; // Jika ada balik

786. }

787. kata2 = Del_Derivation_Suffixes(kata1);

788. if (cekKamus(kata2)) {

789. return kata2;

790. }

791. }

792. /*------------e d “ e per-�, ---------------------------------------------*/

793. /*------------ A ala “ e pel-�, ---------------------------------------------*/

794. if (preg_match("/^(mempel)\\S{1,}/", kata)) {

795. kata1 = preg_replace("/^(mempel)/", "", kata);

796. if (cekKamus(kata1)) {

797. return kata1; // Jika ada balik

798. }

799. kata2 = Del_Derivation_Suffixes(kata1);

800. if (cekKamus(kata2)) {

801. return kata2;

802. }

803. //*-- Cek luluh -r ----------

804. kata1 = preg_replace("/^(mempel)/", "l", kata);

805. if (cekKamus(kata1)) {

806. return kata1; // Jika ada balik

807. }

808. kata2 = Del_Derivation_Suffixes(kata1);

809. if (cekKamus(kata2)) {

810. return kata2;

811. }

812. }

813. /*------------e d “ e pel-�, ---------------------------------------------*/

814. /*------------a ala “ e ter-�, ---------------------------------------------*/

815. if (preg_match("/^(menter)\\S{1,}/", kata)) {

816. kata1 = preg_replace("/^(menter)/", "", kata);

817. if (cekKamus(kata1)) {

818. return kata1; // Jika ada balik

819. }

820. kata2 = Del_Derivation_Suffixes(kata1);

821. if (cekKamus(kata2)) {

822. return kata2;

823. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 265: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

824. //*-- Cek luluh -r ----------

825. kata1 = preg_replace("/^(menter)/", "r", kata);

826. if (cekKamus(kata1)) {

827. return kata1; // Jika ada balik

828. }

829. kata2 = Del_Derivation_Suffixes(kata1);

830. if (cekKamus(kata2)) {

831. return kata2;

832. }

833. }

834. /*------------e d “ e ter-�, ---------------------------------------------*/

835. /*------------a ala “ e er-�, ---------------------------------------------*/

836. if (preg_match("/^(member)\\S{1,}/", kata)) {

837. kata1 = preg_replace("/^(member)/", "", kata);

838. if (cekKamus(kata1)) {

839. return kata1; // Jika ada balik

840. }

841. kata2 = Del_Derivation_Suffixes(kata1);

842. if (cekKamus(kata2)) {

843. return kata2;

844. }

845. //*-- Cek luluh -r ----------

846. kata1 = preg_replace("/^(member)/", "r", kata);

847. if (cekKamus(kata1)) {

848. return kata1; // Jika ada balik

849. }

850. kata2 = Del_Derivation_Suffixes(kata1);

851. if (cekKamus(kata2)) {

852. return kata2;

853. }

854. }

855. /*------------end member-�, ---------------------------------------------*/

856. /*------------awalan “diper-�, ---------------------------------------------*/

857. if (preg_match("/^(diper)\\S{1,}/", kata)) {

858. kata1 = preg_replace("/^(diper)/", "", kata);

859. if (cekKamus(kata1)) {

860. return kata1; // Jika ada balik

861. }

862. kata2 = Del_Derivation_Suffixes(kata1);

863. if (cekKamus(kata2)) {

864. return kata2;

865. }

866. /*-- Cek luluh -r ----------*/

867. kata1 = preg_replace("/^(diper)/", "r", kata);

868. if (cekKamus(kata1)) {

869. return kata1; // Jika ada balik

870. }

871. kata2 = Del_Derivation_Suffixes(kata1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 266: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

872. if (cekKamus(kata2)) {

873. return kata2;

874. }

875. }

876. /*------------e d “diper-�, ---------------------------------------------*/

877. /*------------a ala “diter-�, ---------------------------------------------*/

878. if (preg_match("/^(diter)\\S{1,}/", kata)) {

879. kata1 = preg_replace("/^(diter)/", "", kata);

880. if (cekKamus(kata1)) {

881. return kata1; // Jika ada balik

882. }

883. kata2 = Del_Derivation_Suffixes(kata1);

884. if (cekKamus(kata2)) {

885. return kata2;

886. }

887. /*-- Cek luluh -r ----------*/

888. kata1 = preg_replace("/^(diter)/", "r", kata);

889. if (cekKamus(kata1)) {

890. return kata1; // Jika ada balik

891. }

892. kata2 = Del_Derivation_Suffixes(kata1);

893. if (cekKamus(kata2)) {

894. return kata2;

895. }

896. }

897. /*------------e d “diter-�, ---------------------------------------------*/

898. /*------------a ala “dipel-�, ---------------------------------------------*/

899. if (preg_match("/^(dipel)\\S{1,}/", kata)) {

900. kata1 = preg_replace("/^(dipel)/", "l", kata);

901. if (cekKamus(kata1)) {

902. return kata1; // Jika ada balik

903. }

904. kata2 = Del_Derivation_Suffixes(kata1);

905. if (cekKamus(kata2)) {

906. return kata2;

907. }

908. /*-- Cek luluh -l----------*/

909. kata1 = preg_replace("/^(dipel)/", "", kata);

910. if (cekKamus(kata1)) {

911. return kata1; // Jika ada balik

912. }

913. kata2 = Del_Derivation_Suffixes(kata1);

914. if (cekKamus(kata2)) {

915. return kata2;

916. }

917. }

918. /*------------end dipel-�, ---------------------------------------------*/

919. /*------------kata “terpelajar�(kasus khusus), ---------------------------------------------*/

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 267: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

920. if (preg_match("/terpelajar/", kata)) {

921. kata1 = preg_replace("/terpel/", "", kata);

922. if (cekKamus(kata1)) {

923. return kata1; // Jika ada balik

924. }

925. kata2 = Del_Derivation_Suffixes(kata1);

926. if (cekKamus(kata2)) {

927. return kata2;

928. }

929. }

930. /*------------e d “terpelajar�-�, ---------------------------------------------*/

931. /*------------kata seseorang(kasus khusus), ---------------------------------------------*/

932. if (preg_match("/seseorang/", kata)) {

933. kata1 = preg_replace("/^(sese)/", "", kata);

934. if (cekKamus(kata1)) {

935. return kata1; // Jika ada balik

936. }

937. }

938. /*------------end seseorang-�, ---------------------------------------------*/

939. /*------------awalan "diber-"---------------------------------------------*/

940. if (preg_match("/^(diber)\\S{1,}/", kata)) {

941. kata1 = preg_replace("/^(diber)/", "", kata);

942. if (cekKamus(kata1)) {

943. return kata1; // Jika ada balik

944. }

945. kata2 = Del_Derivation_Suffixes(kata1);

946. if (cekKamus(kata2)) {

947. return kata2;

948. }

949. /*-- Cek luluh -l----------*/

950. kata1 = preg_replace("/^(diber)/", "r", kata);

951. if (cekKamus(kata1)) {

952. return kata1; // Jika ada balik

953. }

954. kata2 = Del_Derivation_Suffixes(kata1);

955. if (cekKamus(kata2)) {

956. return kata2;

957. }

958. }

959. /*------------end "diber-"---------------------------------------------*/

960. /*------------awalan "keber-"---------------------------------------------*/

961. if (preg_match("/^(keber)\\S{1,}/", kata)) {

962. kata1 = preg_replace("/^(keber)/", "", kata);

963. if (cekKamus(kata1)) {

964. return kata1; // Jika ada balik

965. }

966. kata2 = Del_Derivation_Suffixes(kata1);

967. if (cekKamus(kata2)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 268: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

968. return kata2;

969. }

970. /*-- Cek luluh -l----------*/

971. kata1 = preg_replace("/^(keber)/", "r", kata);

972. if (cekKamus(kata1)) {

973. return kata1; // Jika ada balik

974. }

975. kata2 = Del_Derivation_Suffixes(kata1);

976. if (cekKamus(kata2)) {

977. return kata2;

978. }

979. }

980. /*------------end "keber-"---------------------------------------------*/

981. /*------------awalan "keter-"---------------------------------------------*/

982. if (preg_match("/^(keter)\\S{1,}/", kata)) {

983. kata1 = preg_replace("/^(keter)/", "", kata);

984. if (cekKamus(kata1)) {

985. return kata1; // Jika ada balik

986. }

987. kata2 = Del_Derivation_Suffixes(kata1);

988. if (cekKamus(kata2)) {

989. return kata2;

990. }

991. /*-- Cek luluh -l----------*/

992. kata1 = preg_replace("/^(keter)/", "r", kata);

993. if (cekKamus(kata1)) {

994. return kata1; // Jika ada balik

995. }

996. kata2 = Del_Derivation_Suffixes(kata1);

997. if (cekKamus(kata2)) {

998. return kata2;

999. }

1000. }

1001. /*------------end "keter-"---------------------------------------------*/

1002. /*------------awalan "berke-"---------------------------------------------*/

1003. if (preg_match("/^(berke)\\S{1,}/", kata)) {

1004. kata1 = preg_replace("/^(berke)/", "", kata);

1005. if (cekKamus(kata1)) {

1006. return kata1; // Jika ada balik

1007. }

1008. kata2 = Del_Derivation_Suffixes(kata1);

1009. if (cekKamus(kata2)) {

1010. return kata2;

1011. }

1012. }

1013. /*------------end "berke-"---------------------------------------------*/

1014. /* --- Cek Ada Tidak ya Prefik/A ala “di-�, “ke-�, “se-�, “te-�,

“be-�, “me-�, atau “pe-�) ------*/

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 269: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

1015. if (preg_match("/^(di|[kstbmp]e)\\S{1,}/", kata) == false) {

1016. return kataAsal;

1017. }

1018.

1019. return kataAsal;

1020. }

1021.

1022. public boolean eregi(String regex, String word) {

1023. // regex = regex.replace("+$", "++$");

1024. Matcher matcher = Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(word);

1025. return matcher.find();

1026. }

1027.

1028. public String eregi_replace(String regex, String replacement, String word) {

1029. // regex = regex.replace("+$", "++$");

1030. Matcher matcher = Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(word);

1031. return matcher.replaceAll(replacement);

1032. }

1033.

1034. public boolean preg_match(String regex, String word) {

1035. char[] charArray = regex.toCharArray();

1036. regex = regex.substring(1, charArray.length - 1);

1037. return eregi(regex, word);

1038. }

1039.

1040. public String preg_replace(String regex, String replacement, String word) {

1041. char[] charArray = regex.toCharArray();

1042. regex = regex.substring(1, charArray.length - 1);

1043. return eregi_replace(regex, replacement, word);

1044. }

1045.

1046. }

1.2.1.10. Package stopwordremover

1.2.1.10.1. Kelas StopWordRemover.java

1. /*

2. * To change this license header, choose License Headers in Project Properties.

3. * To change this template file, choose Tools | Templates

4. * and open the template in the editor.

5. */

6.

7. package stopwordremover;

8.

9. import database.Connection;

10. import java.io.File;

11. import java.io.IOException;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 270: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

12. import java.sql.PreparedStatement;

13. import java.sql.ResultSet;

14. import java.sql.SQLException;

15. import java.util.ArrayList;

16. import java.util.List;

17. import java.util.logging.Level;

18. import java.util.logging.Logger;

19. import org.apache.commons.io.FileUtils;

20.

21. /**

22. *

23. * @author pacman

24. */

25. public class StopWordRemover {

26.

27. private List<String> resources;

28.

29. public StopWordRemover() {

30. }

31.

32. public StopWordRemover(String path) {

33. try {

34. loadFile(path);

35. } catch (IOException ex) {

36. Logger.getLogger(StopWordRemover.class.getName()).log(Level.SEVERE, null, ex);

37. } catch (SQLException ex) {

38. Logger.getLogger(StopWordRemover.class.getName()).log(Level.SEVERE, null, ex);

39. }

40. }

41.

42. private boolean isInList(String word) throws SQLException {

43.

44. word = word.trim();

45.

46. java.sql.Connection conn = Connection.getConnection();

47.

48. String sql = "SELECT stopword FROM stopword_ina WHERE stopword = ?";

49. conn.setAutoCommit(false);

50.

51. PreparedStatement ps = conn.prepareStatement(sql);

52. ps.setString(1, word);

53.

54. ResultSet rs = ps.executeQuery();

55.

56. conn.commit();

57.

58. boolean check = false;

59.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 271: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

60. while (rs.next()) {

61. check = true;

62. break;

63. }

64.

65. conn.close();

66.

67. return check;

68. }

69.

70. public String removeStopWord(String words) {

71. String[] wordArray = words.split("\\s+");

72. String newSentence = "";

73.

74. for (String word : wordArray) {

75. boolean inList = false;

76. try {

77. inList = isInList(word);

78. } catch (SQLException ex) {

79. Logger.getLogger(StopWordRemover.class.getName()).log(Level.SEVERE, null, ex);

80. }

81.

82. if(!inList && !containNumeric(word)) { // if tidak ada di stopword list AND tidak

mengandung angka

83. newSentence = newSentence + word + " ";

84. }

85. }

86. return newSentence;

87. }

88.

89. public boolean containNumeric(String word) {

90. return word.matches(".*\\d+.*");

91. }

92.

93. public String[] removeNonAlphaNumeric(String[] sentence) {

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

95. sentence[i] = removeNonAlphaNumeric(sentence[i]);

96. }

97. return sentence;

98. }

99.

100. public String removeNonAlphaNumeric(String words) {

101. String newWords = words.replaceAll("[^a-zA-Z0-9 ]", " ");

102. return newWords;

103. }

104.

105. public String[] removeStopWord(String[] sentence) {

106.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 272: SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH … · SISTEM PEMEROLEHAN INFORMASI KARYA ILMIAH BERBASIS CLUSTER DENGAN G-MEANS CLUSTERING SKRIPSI Diajukan untuk memenuhi salah satu syarat

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

108. sentence[i] = removeStopWord(sentence[i]);

109. }

110. return sentence;

111. }

112. }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI