BAB IV IMPLEMENTASI DAN ANALISIS HASIL
4.1 Implementasi
4.1.2 Pengolahan Data
Data yang digunakan adalah artikel yang bersumber dari majalah
berbahasa Jawa Mekarsari, Praba, dan Djaka Lodhang yang terlebih dahulu
diubah menjadi dokumen berekstensi .txt . Data yang digunakan berjumlah 75
dokumen. Data yang diambil dibagi menjadi tiga kelompok yang diasumsikan
memiliki topik yang bervarisasi. Berikut adalah gambaran data yang digunakan
51 Gambar 4.11 Jumlah Data Dokumen yang Digunakan
52 4.1.1.1 Text Operation
Tahap awal sebelum data masuk ke pengelompokan dokumen adalah
memproses data mentah (berupa dokumen) menjadi matriks numerik berupa hasil
pembobotan. Proses ini merupakan langkah dari information retrieval. Tahap
information retrieval yang harus dilalui adalah :
1. Tokenizing
Proses information retrieval diawali dengan membaca seluruh dokumen
kemudian menyimpannya dalam sebuah matriks. Pada saat proses membaca data,
tahap tokenizing dilakukan. Hal ini bertujuan untuk memenggal dokumen menjadi
kata-kata yang berdiri sendiri. Berikut adalah implementasi dari proses tokenizing
dengan menggunakan matlab. Data dokumen dibacauntuk dipisahkan atau
dipenggal menjadi kata-kata yang mandiri. Kemudian dinormalisasi dengan
lowercase atau membuat semua huruf menjadi kecil. Setelah itu karakter (angka,
tanda baca, dll) harus dihapus. Hasil tokenizing kemudian disimpan di
dataAwal.txt. Gambar 4.13 merupakan hasil visualisasi dari proses tokenizing
for i=1:N
%baca dokumen
alamatFile=strcat('doc\',int2str(i),'.txt'); fileID = fopen(alamatFile); % Membuka file
data = textscan(fileID,'%s'); % Membaca file
fclose(fileID); % Menutup file
data=data{1}; % Memasukkan data ke dalam matriks
data=regexprep(data,'[<>.,?!"-+=\/:[];_12345678910┗]','
'); % Menghilangkan tanda baca
data=strtrim(data);
data(strcmp('',data)) = []; % Menghilangkan cell yang kosong
data=lower(data); % Mengubah huruf besar menjadi kecil
53
for row = 1:size(data,1)
fprintf(fid, repmat('%s\t',1,size(data,2)-1), data{row,1:end-1});
fprintf(fid, '%s\n', data{row,end}); end
fclose(fid);
Gambar 4.13 Hasil Tokenizing
2. Stop Word
Proses stop word merupakan langkah lanjutan dari proses Tokenizing.
proses ini membuang kata-kata yang tidak memiliki arti seperti halnya kata
hubung. Pada tahap ini juga ditambahkan metode distribusi Zipf, yaitu melakukan
pemotongan kata yang memiliki frekuensi kemunculan terlalu banyak maupun
terlalu sedikit. Hal ini dilakukan untuk mencari ciri atau key word dari suatu
dokumen. Pada penelitian ini digunakan dua buah range frekuensi kata. Range
pertama (50-150) dan range ke dua (70-90). Batasan ini dipilih karena batasan
54 adalah implementasi dari stop word dan penggunaan zipf distribution dimana hasil
dari proses tersebut dapat dilihat melalui gambar 4.14.
%cek data dengan kamus stop word
yaTdk=ismember(matrixGabungan,kamusHubung); [m,n]=size(matrixGabungan); dataTemp=[]; z=1; for j=1:m if yaTdk(j,1)==0 dataTemp{z}=matrixGabungan{j}; z=z+1; end end hasilStem=dataTemp';
%potong frekuensi kata dengan batas atas dan batas bawah %======================================================= for i=1:m if jmlPerKataUnik(i,1)>batasAwal(k,1) && jmlPerKataUnik(i,1)<batasAkhir(k,1) dataTemp2(x,1)=jmlPerKataUnik(i,1); dataTemp3{x,1}=kataUnik{i,1}; x=x+1; else dataTemp4(y,1)=jmlPerKataUnik(i,1); dataTemp5{y,1}=kataUnik{i,1}; y=y+1; end end jmlPerKataUnik= dataTemp2; kataUnik= dataTemp3;
55 3. Stemming
Berdasarkan proses stop word, didapatlah matriks yang berisi kata-kata,
namun kata-kata tersebut harus melalui sebuah tahap lagi yang dinamakan tahap
stemming. Pada tahap ini setap kata akan dicek menggunakan stemmer Bahasa
Jawa, dimana setiap imbuhan baik itu di awal, tengah, maupun akhir akan
dihilangkan sehingga dihasilkan kata dasar. Proses berikutnya adalah pengecekan
kata dasar ke kamus Bahasa Jawa, kata dasar yang tidak ada dalam kamus akan
dihilangkan. Data awal yang digunakan diambil dari dataHasil.txt yang
merupakan hasil dari proses sebelumnya. Setiap kata yang ada pada data awal
dicek untuk menemukan kata dasar dengan menggunakan algoritma stememer
bahasa Jawa yang diimplementasikan pada stemcoba.pl (terlampir pada lampiran
7). Kata dasar yang terdapat di dalam kamus disimpan dalam matriks hasilStem
untuk proses selanjutnya, yaitu pembobotan. Berikiut adalah implementasinya,
untuk lebih jelasnya bisa dilihat gambar 4.15
perl('stemcoba.pl');
fileID = fopen('Data\dataHasil.txt'); data = textscan(fileID,'%s'); fclose(fileID); hasilStem=data{1}; hasilStem=regexprep(hasilStem,'-',''); hasilStem=strtrim(hasilStem); hasilStem(strcmp('',hasilStem)) = []; matrixFIle{i} = hasilStem;
56 Gambar 4.15Hasil Stemming
4. Indexing
Data yang dihasilkan proses stemming dilanjutkan dengan proses
pembobotan. Proses ini diawali dengan menghitung frekuensi kata dari tiap kata
yang pada tiap dokumen, kemudian dilanjutkan dengan mengalikannya dengan
idf. Berdasarkan perhitungan tf dan idf , diterapkanlah rumus pembootan/weight
(tf.idf). Data hasil dari proses stemming yang telah dibobot mengasilkan sebuah
matriks, yang kemudian disebut sebagai calonData yang siap untuk digunakan di
tahap clustering. Berikut adalah implementasinya, dimana hasil dari implementasi
pembonbotan dapat dilihat pada gambar 4.16.
countKataUnik = sum(jmlPerKataUnik); [m,n]=size(jmlPerKataUnik); matrixBobot=zeros(m,n); for i=1:m matrixBobot(i)=log10(countKataUnik/jmlPerKataUnik(i)); end calonData=zeros(size(matrixBobot,1),N);
57 for i=1:N tempMatrixFile=matrixFIle{i}; [m,n]=size(tempMatrixFile); for j=1:m [row,~] = find(ismember(kataUnik,tempMatrixFile(j,1))); calonData(row, i)=matrixBobot(row,1); end end calonDataCell{k}=calonData';
Gambar 4.16Hasil Indexing
4.1.1.2 Hierarchical K Means
Tahapan yang dilakukan setelah pembobotan adalah tahap clustering atau
pengelompokan. Tahap ini menjadi dasar untuk menjawab rumusan masalah yang
sudah dipaparkan di bab pendahuluan. Implementasi yang dilakukan pada taham
ini adalah melakukan pengelompokan dokumen. Hal-hal yang harus dilakukan
58 1. K Means
Pada tahap ini, hasil dari pembobotan, data dikelompokkan dengan
menggunakan metode K Means yang implementasinya sudah terlampir
pada lampiran 4, yaitu dengan menggunakan fungsi() Kmeans1 yang ada
pada Kmeans1.m. Hal pertama yang dilakukan adalah menentukan jumlah
cluster. Jumlah cluster yang digunakan pada penelitian ini adalah tiga
buah, selanjutnya centroid harus ditentukan terlebih dahulu, pada
penelitian ini centroid K Means yang pertama dilakukan secara random
atau acak. Setiap term/kata pada setiap dokumen diukur jaraknya dengan
masing-masing centoid awal menggunakan euclidean distance. Proses ini
dilakukan sampai tidak terjadi perubahan centorid atau letak indeks dari
dokumen tidak berubah lagi. Proses K Means pertama dilakukan sampai
batas computation (c), dimana c bernilai dua dan empat. Pengulangan K
Means pada penelitian ini bertujuan untuk menghasilkan himpunan
centroid random yang nantinya menjadi data awal proses Agglomerative
Hierarchical Clustering dengan tujuan untuk mengasilkan centroid
terbaik.
2. Agglomerative Hierarchical Clustering (Single Linkage)
Proses Agglomerative Hierarchical Clustering yang dipilih adalah
single linkage. Metode ini dipilih karena penggunaannya menggunakan
himpunan centroid sebagai data awal, yang nantinya akan dikelompokkan
berdasarkan jarak dengan salah satu Agglomerative Hierarchical
59 dengan rumus euclidean distance. Berdasarkan perhitungan jarak, diambil
jarak minimum, karena metode single linkage yang digunakan, maka
perhitungan jarak minimum lah yang digunakan .
Hasil dari perhitungan jarak minimum antar centroid akan
membentuk berupa pasang-pasangan data centroid. Pasangan himpunan
centroid dapat dilihat melaui gambar dendrogram 4.17. Hasil dendrogram
dipotong sejumlah kebutuhan centroid. Pada penelitian ini hasil cluster
single linkage dilakukan pemotongan guna memperoleh jumlah centroid
yang diinginkan, yaitu tiga buah centroid. Pemotongan himpunan cluster
harus terlebih dahulu melalui perhitungan rata-rata tiap cluster centroid
untuk mendapatkan tiga titik pusat dari himpunan centroid. Hasil keluaran
dari tahap ini adalah berupa tiga buah centroid terbaik yang siap
digunakan sebagai centroid awal tahap berikutnya. Berikut adalah
implementasi yang digunakan dengan memakai variabel clusterSingle
yang memanggil fungsi linkage() yang disediakan oleh matlab linkage.m:
% Clustering Single
clusterSingle=linkage(hasilKmeans,'single','euclidean');
60
3. K Means
Pada tahap ini K Means kembali dilakukan, implementasinya
sudah terlampir pada lampiran 4, yaitu dengan menggunakan fungsi()
Kmeans1 yang ada pada Kmeans1.m, namun terdapat perbedaan proses
yang dilakukan, yaitu berkaitan dengan pemilihan centroid yang sudah
ditentukan berdasarkan hasil dari single linkage. Sama halnya dengan
proses K Means sebelumnya, iterasi K Means dilakukan sampai tidak
terjadi perubahan centorid atau letak indeks dari dokumen tidak berubah
lagi. Berikut adalah centroid hasil single linkage yang digunakan sebagai
centroid awal(gambar 4.18).
Gambar 4.18 Centroid Awal 4.1.1.3 Output
Berdasarkan data yang diolah melalui berbagai macam proses yang sudah
dipaparkan di atas, maka didapatlah hasil output berupa hasil terbaik dari
pembagian cluster beserta anggota dari pembagian cluster dari setiap dokumen
(berdasarkan jumlah computation K Means dan range pemotongan kata unik).
Perlu adanya dilakukan evaluasi dari output penelitian ini. Pada langkah
61 dapat dijelaskan diproses selanjutnya. Implementasi yang dilakukan untuk
menghasilkan ouput adalah berikut:
Untuk menghasilkan output jumlah pembagian anggota cluster maka variabel
yang digunakan untuk menampung adalah jmlObyekCls yang menampung hasil
dari proses fungsi Kmeans1(), pada pembentukanCls.m(lampiran 5) begitu juga
untuk menampilkan pembagian anggota, dibutuhkan variabel pembagianCls untuk
menampung hasil dari proses fungsi Kmeans1(), pada pembentukanCls.m. Hasil
visualisasi dari ouput Hierarchical K Means dapat dilihat pada gambar 4.19 dan
4.20 [pembagianCls,cPusat,jmlObyekCls,dist]=Kmeans1(N,calonData,3,3,1); [~,nCd]=size(calonData1); iterasi=0; for i=1:mC for j=1:nCd iterasi=iterasi+1;
set(handles.txtIterasi,'String',num2str(iterasi)); [calonData,dist,SSE,jmlObyekCls,pembagianCls,cPusat,clusterSingle] = pembentukanCls(calonData1{1,j},N,jmlCluster,c(i,1)); dataTemp=[c(i,1),batasAwal(j,1),batasAkhir(j,1),SSE,jmlObyekCls(1, 1),jmlObyekCls(2,1),jmlObyekCls(3,1)]; data=[data;dataTemp]; dataTemp=[]; nDist{iterasi,1}=dist; nPembagianCls{iterasi,1}=pembagianCls; nCPusat{iterasi,1}=cPusat; nClusterSingle{iterasi,1}=clusterSingle; nCalonData{iterasi,1}=calonData; pause(3) end end
62 Gambar 4.19 Pembagian Cluster Beserta Anggotanya
Gambar 4.20 Pembagian Anggotanya Cluster
4.1.2 Akurasi
Proses menghitung akurasi yang dilakukan pada penelitian ini dibagi
menjadi dua jenis, yaitu internal dan eksternal. Penghitungan akurasi yang
dilakukan berdasarkan percobaan berbagai jumlah computation (2 dan 4) dan
macam pemotongan range frekuensi dari kata (distribusi Zipf), sehingga
dihasilkan empat macam percobaan dilakukan.
Tahap pengecekan internal diukur dengan menghitung (Sum of Square
63 yang paling baik. Implementasi dari SSE dapat dilihat dari lampiran 6 di
hitungSSE.m.
Gambar 4.21 Pemilihan SSE Minimum
Dapat dilihat pada gambar 4.21, bahwa SSE yang minimum(diberi warna)
harapannya menghasilkan pembagian anggota cluster yang palling baik. Nilai
SSE dapat membantu dalam menentukan cluster yang baik. Apabila nilai SSE
mendekati 0, maka dapat dikatakan pembagian cluster tersebut baik.
Tahap evaluasi eksternal dilakukan pada penelitian ini adalah dengan
menggunakan confusion matrix berdasarkan nilai SSE yang minimum guna
mendapatkan akurasi eksternal terbaik dari tiap cluster, dimana data hasil
pengelompokan dihitung dengan membandingkan antara hasil pengelompokan
yang dihasilkan sistim dengan pengelompokan data yang ideal. Pengecekan
dilakukan setiap cluster hasil sistem dengan cluster ideal. Berdasarkan dari
pengecekan setiap anggota cluster antara sistem dengan ideal, terbentuklah
diagonal yang menyatakan hasil yang cocok atau sesuai. Hasil dari diagonal
dijumlahkan kemudian dibagi dengan sejumlah data. Inilah hasil dari evaluasi
internal sistem. Pada penelitian kali ini proses running dilakukan 10 kali dengan
empat macam percobaan yang berbeda, sehingga didapatkan empat akurasi yang
64 Gambar 4.22 Hasil Akurasi