4.2. Implementasi Antar Muka
Tampilan antar muka sistem dapat dilihat pada gambar 4.2.1. dan 4.2.2 seperti berikut:
Gambar 4. 2. 1. Antar Muka Awal
Gambar 4. 2. 2. Antar Muka Output
4.3. Implementasi Sistem
4.3.1. Implementasi Preprocessing
4.3.1.1. Implementasi Tokenisasi
Pada langkah tokenisasi ini akan dilakukan penghapusan tanda baca, pemotongan kalimat menjadi token dan mengubah huruf
menjadi lower case seperti pada list code 4.3.1.1 dibawah ini:
public void Tokenize { if tokenized {
return; }
try { FileInputStream fis = new FileInputStreamfilename;
Scanner s = new Scannerfis; if daftarKata == null {
daftarKata = new ArrayList; } else {
daftarKata.clear; }
while s.hasNext { String text = s.next;
String kata = text.replaceAll[a-zA-Z0-9[\\-]], ; daftarKata.addkata;
} tokenized = true;
} catch FileNotFoundException ex { tokenized = false;
Logger.getLoggerDokumen.class.getName.logLevel.SEVERE, null, ex;
} }
List Code 4. 3. 1. 1. Implementasi Tokenisasi
4.3.1.2. Implementasi Stopword
Pada langkah Stopword ini akan dilakukan penghapusan kata yang tidak mempengaruhi makna seperti kata penghubung dan lain
sebagainya berdasarkan kamus Stopword seperti pada list code 4.3.1.2 dibawah ini:
public void bacakamusstopwordString filename { try {
FileInputStream FIS = new FileInputStreamfilename; Scanner sc = new ScannerFIS;
kamusStopWord = new ArrayList; while sc.hasNext {
kamusStopWord.addsc.next; }
} catch FileNotFoundException ex { Logger.getLoggertampilstopword.class.getName.logLevel.SEVERE,
null, ex; }}
public void hapusstopword { if removedStopWords {
return; }
if kamusStopWord == null { throw new IllegalStateExceptionKamus stopword belum ada;
} if tokenized {
throw new IllegalStateExceptionDokumen belum di-tokenize; }
IteratorString i = daftarKata.iterator; while i.hasNext {
String token = i.next; if kamusStopWord.containstoken {
i.remove; }}
removedStopWords = true; }
List Code 4. 3. 1. 2. Implementasi Stopword
4.3.1.3. Implementasi Stemming
Pada langkah Stemming ini akan dilakukan pengembalian kata ke bentuk kata dasarnya berdasarkan kamus kata dasar seperti
pada list code 4.3.1.3 dibawah ini:
public void bacakamusString path { try {
FileInputStream fis = new FileInputStreampath; Scanner s = new Scannerfis;
kamusKataDasar = new HashSet; while s.hasNext {
kamusKataDasar.adds.next; }
} catch FileNotFoundException ex { Logger.getLoggertampilstopword.class.getName.logLevel.SEVERE,
null, ex; }}
public void stem { if stemmed {
return; }
if kamusKataDasar == null || kamusKataDasar.isEmpty { throw new IllegalStateExceptionKamus kata dasar belum ada;
} if removedStopWords {
throw new IllegalStateExceptionStopwords belum dibuang; }
Lemmatizer stemmer = new DefaultLemmatizerkamusKataDasar; for int i = 0; i daftarKata.size; i++ {
String kata = daftarKata.geti; daftarKata.seti, stemmer.lemmatizekata;
} stemmed = true;
}
List Code 4. 3. 1. 3. Implementasi Stemming
4.3.1.4. Implementasi Tf
Pada langkah Tf ini akan dilakukan penghitungan frekuensi kemunculan kata dalam sebuah dokumen seperti pada list code 4.3.1.4
dibawah ini:
public int getTermFrequencyString term, Dokumen doc { TermDocumentPair key = new TermDocumentPairterm, doc;
if tableTF.containsKeykey { return tableTF.getkey;
} else { int count = 0;
for String kata : doc.daftarKata { if kata.equalsterm {
count++; }
} tableTF.putkey, count;
return count; }
}
List Code 4. 3. 1. 4. Implementasi Tf
4.3.1.5. Implementasi Idf
Pada langkah Idf ini akan dilakukan penghitungan inverse dari banyaknya dokumen dimana suatu term tersebut muncul seperti pada
list code 4.3.1.5 dibawah ini:
public int getDocumentFrequencyString term { if tableDF.containsKeyterm {
return tableDF.getterm; } else {
int c = 0; for Dokumen d : master.documents {
if d.daftarKata.containsterm { c++;
} }
tableDF.putterm, c; return c;
} }
public double getInverseDocumentFrequencyString term { return Math.logmaster.documents.size
getDocumentFrequencyterm; }
List Code 4. 3. 1. 5. Implementasi Idf
4.3.1.6. Implementasi Pembobotan
public double getWeightString term, Dokumen doc { return getTermFrequencyterm, doc
getInverseDocumentFrequencyterm; }
public double getInnerProductString term, Dokumen doc { return getWeightterm, doc getWeightterm, docTest;
} public Matrix getPanjangVektor {
int r = allTerms.size, c = master.documents.size; Matrix m = new Matrixr, c;
String[] terms = new String[r]; allTerms.toArrayterms;
for int i = 0; i r; i++ { for int j = 0; j c; j++ {
double w = getWeightterms[i], master.documents.getj; m.seti, j, w w;
} }
return m;
}
List Code 4. 3. 1. 6. Implementasi Pembobotan
4.3.2. Implementasi Klasifikasi
4.3.2.1. Implementasi Hiitung Cosine Similarity
public MapDokumen, Double cosineSimilarities { int r = allTerms.size, c = master.documents.size;
Matrix panjangVektor = getPanjangVektor; Matrix innerProduct = new Matrixr, c;
String[] terms = new String[r]; allTerms.toArrayterms;
for int i = 0; i r; i++ { for int j = 0; j c; j++ {
innerProduct.seti, j, getInnerProductterms[i], master.documents.getj;
} }
MapDokumen, Double res = new HashMapc - 1; int docTestIdx = 0;
for int i = 0; i master.documents.size; i++ { Dokumen d = master.documents.geti;
if d == docTest { docTestIdx = i;
continue; }
double atas = innerProduct.sumColi; double bawah = Math.sqrtpanjangVektor.sumColi
panjangVektor.sumColdocTestIdx; res.putd, atas bawah;
} return res;
}
List Code 4. 3. 2. 1. Implementasi Hitung Cosine Similarity
4.3.2.2. Implementasi Hitung Label Mayoritas
public Kelas classifyint k { MapDokumen, Double matrix = cosineSimilarities;
TreeSetMap.EntryDokumen, Double asd = new TreeSetnew ComparatorMap.EntryDokumen, Double {
Override public int compareMap.EntryDokumen, Double o1,
Map.EntryDokumen, Double o2 { return Double.compareo1.getValue, o2.getValue;
} };
asd.addAllmatrix.entrySet; ListEntryDokumen, Double neighbors = new
ArrayListasd.subList0, k; int numOfClass = master.classes.size;
int[] as = new int[numOfClass]; for EntryDokumen, Double neighbor : neighbors {
for int i = 0; i as.length; i++ { Kelas kelas = master.classes.geti;
if kelas.getDaftarDokumen.containsneighbor.getKey { as[i]++;
}}} int max = maxas;
return master.classes.getmax; }
static int maxint[] arr { int max = arr[0];
for int i : arr { if i max {
max = i; }
} return max;
}
List Code 4. 3. 2. 2. Implementasi Hitung Label Mayoritas
46
BAB V HASIL DAN PEMBAHASAN
5.1. Pengujian