• Tidak ada hasil yang ditemukan

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

Dokumen terkait