Pemisahan Kata Penghapusan Kata Umum Stemming

this.token = token; } public String getFileLocation { return fileLocation; } public void setFileLocationString fileLocation { this.fileLocation = fileLocation; } public List getResultToken throws SQLException, FileNotFoundException, IOException { ListString tokens = getToken; HashSet hs = new HashSet; hs.addAlltokens; tokens.clear; tokens.addAllhs; Collections.sorttokens; return tokens; } } Code 4.4 Text Operations

4.3.1 Pemisahan Kata

Proses ini memisahkan data teks menjadi daftar istilah yang disimpan sementara dalam bentuk ListString. Proses ini juga menghapus karakter khusus dan mentransformasikan setiap istilah ke dalam huruf kecil, Code 4.5 BufferedReader bufferedReader = new BufferedReadernew FileReaderfileLocation; while line = bufferedReader.readLine = null { words = words + line + \n; } StringTokenizer stringTokenizer = new StringTokenizerwords; token = new ArrayListString; int j = 0; while stringTokenizer.hasMoreTokens { String t = stringTokenizer.nextToken; token.addj, t.replaceAll[?_.�,], .toLowerCase; j++; } Code 4.5 Implementasi Teks Operations, Pemisahan Kata

4.3.2 Penghapusan Kata Umum

Proses penghapusan kata umum adalah proses yang melengkapi proses pemisahan kata sebelumnya. Proses ini memeriksa apakah pada daftar istilah sebelumnya terdapat kata umum atau tidak, jika terdapat maka akan dihapus. Hasil dari penghapusan kata ini disimpan sementara dalam bentuk ListString Code 4.6. public class RemoveStopword { private ListString listWord; private ListStopword stopwords; public RemoveStopword throws SQLException { stopwords = DatabaseController.getDatabaseController.get_stopwords; } public ListString getRemovedList throws SQLException { ListString helpers = new ArrayListString; for int i = 0; i stopwords.size; i++ { if listWord.containsstopwords.geti.getStopwords { helpers.addstopwords.geti.getStopwords; } } listWord.removeAllhelpers; return listWord; } public void setListWordListString removedList throws SQLException { this.listWord = removedList; } } Code 4.6 Implementasi Text Operations, Penghapusan Kata Umum

4.3.3 Stemming

Berikut adalah implementasi yang mentransformasikan istilah menjadi akar katanya. Algoritma stemming yang digunakan pada sistem ini adalah algoritma stemming menurut Nazief, Code 4.7. public class IndonesianStemmer { private String word; private ListString dictionaries; public IndonesianStemmer throws SQLException { dictionaries = DatabaseController.getDatabaseController.get_dictionaries; } public String getWord { delReduplikasi; delSuffiks; delPrefiks; if dictionaries.containsword { return word; } else { return null; } } public void setWordString word { this.word = word; } public String delSuffiks { Pertama cari kata yang akan diistem dalam kamus kata dasar. Jika ditemukan maka diasumsikan kata adalah root word. Maka algoritma berhenti. if dictionaries.containsword { Inflection Suffixes “-lah”, “-kah”, “-ku”, “-mu”, atau “-nya” dibuang. Jika berupa particles “-lah”, “-kah”, “-tah” atau “-pun” maka langkah ini diulangi lagi untuk menghapus Possesive Pronouns “-ku”, “-mu”, atau “-nya”, jika ada. if word.endsWithlah { word = word.substring0, word.length - 3; } else if word.endsWithkah { word = word.substring0, word.length - 3; } else if word.endsWithku { word = word.substring0, word.length - 2; } else if word.endsWithmu { word = word.substring0, word.length - 2; } else if word.endsWithnya { word = word.substring0, word.length - 3; } } if dictionaries.containsword { langkah 3 Hapus Derivation Suffixes “-i”, “-an” atau “-kan”. Jika kata ditemukan di kamus, maka algoritma berhenti. Jika tidak maka ke langkah 3a 3a. Jika “-an” telah dihapus dan huruf terakhir dari kata tersebut adalah “-k”, maka “- k” juga ikut dihapus. Jika kata tersebut ditemukan dalam kamus maka algoritma berhenti. Jika tidak ditemukan maka lakukan langkah. 3b. Akhiran yang dihapus “-i”, “-an” atau “-kan” dikembalikan, lanjut ke langkah 4. if word.endsWithi { word = word.substring0, word.length - 1; } else if word.endsWithkan { word = word.substring0, word.length - 3; } else if word.endsWithan { word = word.substring0, word.length - 2; } } return word; } public String delPrefiks { try { if dictionaries.containsword { if word.startsWithdi { word = word.substring2; } else if word.startsWithke { word = word.substring2; } else if word.startsWithse { word = word.substring2; } } if dictionaries.containsword { if word.startsWithme { if word.startsWithmeng { if dictionaries.containsk + word.substring4 { word = k + word.substring4; } else if word.substring4, 5.matches[gh] { word = word.substring4; } } else if word.startsWithmeny { if dictionaries.containss + word.substring4 { word = k + word.substring4; } } else if word.startsWithmem { if word.substring3, 4.matches[bpf] { word = word.substring3; } } else if word.startsWithmen { if word.substring3, 4.matches[cdj] { word = word.substring3; } else if dictionaries.containst + word.substring3 { word = k + word.substring3; } } else { word = word.substring2; } } else if word.startsWithte { if word.startsWithter { if dictionaries.containsr + word.substring3 { word = r + word.substring3; } else { word = word.substring3; } } } else if word.startsWithbe { if word.substring3, 5.matcheser { word = word.substring2; } else if dictionaries.containsword.substring2 { word = word.substring2; } else { word = word.substring3; } } } if dictionaries.containsword { if word.startsWithpe { if dictionaries.containsword.substring2 { word = word.substring2; } else if word.startsWithper { word = word.substring3; } else if word.startsWithpem { if word.substring3, 4.matches[bfv] { word = word.substring3; } else if dictionaries.containsp + word.substring3 { word = p + word.substring3; } } else if word.startsWithpeny { if dictionaries.containss + word.substring4 { word = s + word.substring4; } } else if word.startsWithpen { if dictionaries.containst + word.substring3 { word = t + word.substring3; } else if word.substring3, 4.matches[jdcz] { word = word.substring3; } } } } } catch StringIndexOutOfBoundsException e { return word; } return word; } public void delReduplikasi { String firstWord = null; String secondWord = null; if word.contains- { firstWord = word.substring0, word.indexOf-; secondWord = word.substringword.indexOf- + 1; if dictionaries.containssecondWord { word = secondWord; } else if dictionaries.containsfirstWord { word = firstWord; } else { word = secondWord; } } } Code 4.7 Implementasi Teks Operations, Stemming

4.4 Implementasi Indexing