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