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\ ,int2stri,
.txt ;
fileID = fopenalamatFile; Membuka file
data = textscanfileID, s
; Membaca file
fclosefileID; Menutup file
data=data{1}; Memasukkan data ke dalam matriks
data=regexprepdata, [.,?-+=\
:[];_12345678910┗] ,
; Menghilangkan tanda baca
data=strtrimdata; datastrcmp
,data = []; Menghilangkan cell yang kosong
data=lowerdata; Mengubah huruf besar menjadi kecil
fid = fopen Data\dataAwal.txt
, w
;
53
for row = 1:sizedata,1
fprintffid, repmat s\t
,1,sizedata,2-1, data{row,1:end-1};
fprintffid, s\n
, data{row,end}; end
fclosefid;
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 tersebut paling optimum berdasarkan ujicoba yang telah dilakukan. Berikut
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=ismembermatrixGabungan,kamusHubung;
[m,n]=sizematrixGabungan; dataTemp=[];
z=1; for
j=1:m if
yaTdkj,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 jmlPerKataUniki,1batasAwalk,1
jmlPerKataUniki,1batasAkhirk,1 dataTemp2x,1=jmlPerKataUniki,1;
dataTemp3{x,1}=kataUnik{i,1}; x=x+1;
else dataTemp4y,1=jmlPerKataUniki,1;
dataTemp5{y,1}=kataUnik{i,1}; y=y+1;
end end
jmlPerKataUnik= dataTemp2; kataUnik= dataTemp3;
Gambar 4.14 Hasil Stop Word
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 = textscanfileID, s
; fclosefileID;
hasilStem=data{1}; hasilStem=regexprephasilStem,
- ,
; hasilStem=strtrimhasilStem;
hasilStemstrcmp ,hasilStem = [];
matrixFIle{i} = hasilStem;
56 Gambar 4.15
Hasil 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 pembootanweight
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 = sumjmlPerKataUnik; [m,n]=sizejmlPerKataUnik;
matrixBobot=zerosm,n; for
i=1:m matrixBoboti=log10countKataUnikjmlPerKataUniki;
end calonData=zerossizematrixBobot,1,N;
57
for i=1:N
tempMatrixFile=matrixFIle{i}; [m,n]=sizetempMatrixFile;
for j=1:m
[row,~] = findismemberkataUnik,tempMatrixFilej,1; calonDatarow, i=matrixBobotrow,1;
end end
calonDataCell{k}=calonData;
Gambar 4.16 Hasil Indexing
4.1.1.2 Hierarchical K Means