Perancangan Sistem 1. Data Flow Diagram

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 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 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 Term wakil punya Id_cluster Id_cluster uuid uuid value value N N Id_term Id_term term term N N tf tf value value assign assign content content topic topic Id_document Id_document Record_id Record_id 1 N Stopword_Ina Id_stopword Id_stopword stopword stopword Rootword_Ina Id_rootword Id_rootword rootword rootword 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 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 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 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 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 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 D o c 1 D o c 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 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 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[][] step2Alternate2Cluster cs { 2. Calculation calc = new Calculation; 3. Utility util = new Utility; 4. double[][] valueMatrix = util.convert2DPCAListToMatrixcs; 5. double[] clusterCenter = util.convert1DPCARecordToArraycs.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.printlnvalueMatrix[i][j] + ; 11. } else { 12. System.out.printvalueMatrix[i][j] + ,; 13. } 14. } 15. } 16. 17. Matrix dataMatrix = new MatrixvalueMatrix; 18. 19. PCA pca = new PCAdataMatrix, true; 20. 21. Matrix eigenvectorsMatrix = pca.getEigenvectorsMatrix; 22. double eigenval = pca.getEigenvalue0; 23. 24. Matrix princCompMtr = eigenvectorsMatrix.getMatrix0, PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 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.sqrt2eigenvalMath.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. ifDouble.isNaNprincComp[i] || Double.isInfiniteprincComp[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” 42 3. Jalankan k-Means untuk memperbaiki anak cluster 1. public Cluster[] runKMeansCluster 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.setCentroidutil.convert1DPCAArrayToRecordcentroid1; 18. cluster2.setCentroidutil.convert1DPCAArrayToRecordcentroid2; 19. 20. beri nama cluster secara random 21. cluster1.setClusterIDAutoGeneratedID.generateRandomString; 22. cluster2.setClusterIDAutoGeneratedID.generateRandomString; 23. 24. assign ke variabel recordList gak penting, hanya saja kadung tdk bisa refactor rename 25. LinkedListRecord recordList = activeCluster.getRecordList; 26. 27. buat list penampungan record yang telah diassign ke centroid 43 terdekat sudah ditemukan clusternya 28. LinkedListRecord tempRecordListCluster1 = null; 29. LinkedListRecord 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.getj; 39. double[] dataArray = util.convert1DPCARecordToArrayrec; 40. double distToCentroid1 = calc.euclideanDistancedataArray, centroid1; 41. double distToCentroid2 = calc.euclideanDistancedataArray, centroid2; 42. 43. if distToCentroid1 distToCentroid2 { 44. tempRecordListCluster2.addrec; 45. } else { 46. tempRecordListCluster1.addrec; 47. } 48. } 49. 50. hitung centroid baru 51. iftempRecordListCluster1.isEmpty == false { 52. centroid1 = calculateNewCentroidtempRecordListCluster1; 53. } else { 54. System.out.printlnempty cluster; 55. cluster1.setRecordListtempRecordListCluster1; PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI