Implementasi Antar Muka Implementasi Sistem

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