Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package faiznoeris.tbitugaspraktek.temubalikinformasi;
- import android.content.res.AssetManager;
- import android.util.Log;
- import android.widget.SimpleAdapter;
- import android.widget.Toast;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * Created by Vellfire on 20/04/2017.
- */
- public class Stemming {
- List<Map<String, String>> stoplistdata = new ArrayList<>(), stoplistdata2 = new ArrayList<>();
- Map<String, String> map;
- StringBuilder sb = new StringBuilder();
- //String title,id;
- ArrayList<String> id = new ArrayList<String>(), title = new ArrayList<String>(), katadasar = new ArrayList<String>();
- int counter = 0;
- String str, hasil;
- String[] word;
- String belakang_1, belakang_2, belakang_3, depan_2, depan_3, depan_4, dasar;
- public Stemming(List<Map<String, String>> data, MainActivity mainActivity) throws IOException {
- AssetManager am = mainActivity.getAssets();
- InputStream is = am.open("kata_dasar_indo.txt");
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
- while ((str = bufferedReader.readLine()) != null) {
- katadasar.add(str);
- }
- stoplistdata = data;
- for (Map<String, String> tempmap : stoplistdata) {
- for (Map.Entry<String, String> entry : tempmap.entrySet()) {
- if (entry.getKey().equals("title") && !(entry.getValue() == null)) {
- title.add(entry.getValue());
- } else {
- id.add(entry.getValue());
- }
- }
- }
- for (int i = 0; i < data.size(); i++) {
- word = title.get(i).split(" ");
- for (int j = 0; j < word.length; j++) {
- Log.d("BAC", word[j]);
- if (word[j].length() < 4) {
- break;
- }
- belakang_1 = word[j].substring(word[j].length() - 1);
- belakang_2 = word[j].substring(word[j].length() - 2);
- belakang_3 = word[j].substring(word[j].length() - 3);
- depan_2 = word[j].substring(0, 2);
- depan_3 = word[j].substring(0, 3);
- depan_4 = word[j].substring(0, 4);
- //Langkah 1 - Penghapusan Partikel
- if(!(checkWord(word[j]))) {
- if (belakang_3.equalsIgnoreCase("kah") || belakang_3.equalsIgnoreCase("lah") || belakang_3.equalsIgnoreCase("pun")) {
- word[j] = word[j].substring(0, word[j].length() - 3);
- }
- }
- //Langkah 2 - Penghapusan Possesive Pronouns
- if(!(checkWord(word[j]))) {
- if (belakang_2.equalsIgnoreCase("ku") || belakang_2.equalsIgnoreCase("mu")) {
- word[j] = word[j].substring(0, word[j].length() - 2);
- } else if (belakang_3.equalsIgnoreCase("nya")) {
- word[j] = word[j].substring(0, word[j].length() - 3);
- }
- }
- //Langkah 3 - Hapus Awalan Pertama
- if(!(checkWord(word[j]))) {
- if (depan_4.equalsIgnoreCase("meng")) {
- if (word[j].substring(4, 5).equals("a")) {
- word[j] = "K" + word[j].substring(4, word[j].length());
- } else {
- word[j] = word[j].substring(4, word[j].length());
- }
- } else if (depan_4.equalsIgnoreCase("meny")) {
- // || word[j].substring(4).equals("usul") || word[j].substring(4).equals("usu")
- if (word[j].substring(4, 5).equalsIgnoreCase("a")) {
- word[j] = "S" + word[j].substring(4, word[j].length());
- } else if (word[j].substring(4, 5).equalsIgnoreCase("u")) {
- word[j] = "C" + word[j].substring(4, word[j].length());
- }
- } else if (depan_3.equalsIgnoreCase("men")) {
- word[j] = word[j].substring(3, word[j].length());
- } else if (depan_3.equalsIgnoreCase("mem")) {
- if (word[j].substring(3, 4).equalsIgnoreCase("a") || word[j].substring(3, 4).equalsIgnoreCase("i") || word[j].substring(3, 4).equalsIgnoreCase("u")
- || word[j].substring(3, 4).equalsIgnoreCase("e") || word[j].substring(3, 4).equalsIgnoreCase("o")) {
- word[j] = "P" + word[j].substring(3, word[j].length());
- } else {
- word[j] = word[j].substring(3, word[j].length());
- }
- } else if (depan_2.equalsIgnoreCase("me")) {
- word[j] = word[j].substring(2, word[j].length());
- } else if (depan_4.equalsIgnoreCase("peng")) {
- word[j] = word[j].substring(4, word[j].length());
- } else if (depan_4.equalsIgnoreCase("peny")) {
- word[j] = "S" + word[j].substring(4, word[j].length());
- } else if (depan_3.equalsIgnoreCase("pen")) {
- word[j] = word[j].substring(3, word[j].length());
- } else if (depan_3.equalsIgnoreCase("pem")) {
- word[j] = "P" + word[j].substring(3, word[j].length());
- } else if (depan_2.equalsIgnoreCase("di")) {
- word[j] = word[j].substring(2, word[j].length());
- } else if (depan_3.equalsIgnoreCase("ter")) {
- word[j] = word[j].substring(3, word[j].length());
- } else if (depan_2.equalsIgnoreCase("ke")) {
- word[j] = word[j].substring(2, word[j].length());
- }
- }
- /*//Langkah 4 - Hapus Awalan Kedua
- if (depan_3.equalsIgnoreCase("ber")) {
- word[j] = word[j].substring(3, word[j].length());
- } else if (depan_3.equalsIgnoreCase("bel")) {
- word[j] = word[j].substring(3, word[j].length());
- } else if (depan_2.equalsIgnoreCase("be")) {
- word[j] = word[j].substring(2, word[j].length());
- } else if (depan_3.equalsIgnoreCase("per")) {
- word[j] = word[j].substring(3, word[j].length());
- } else if (depan_3.equalsIgnoreCase("pel")) {
- word[j] = word[j].substring(3, word[j].length());
- } else if (depan_2.equalsIgnoreCase("pe")) {
- word[j] = word[j].substring(2, word[j].length());
- }
- //Langkah 5 - Hapus Akhiran
- if (belakang_3.equalsIgnoreCase("kan")) {
- word[j] = word[j].substring(0, word[j].length() - 3);
- } else if (belakang_2.equalsIgnoreCase("an")) {
- word[j] = word[j].substring(0, word[j].length() - 2);
- } else if (belakang_1.equalsIgnoreCase("i")) {
- word[j] = word[j].substring(0, word[j].length() - 1);
- }*/
- if (j == word.length - 1) {
- //Log.d("A", "hasil=0");
- hasil += word[j] + " ";
- map = new HashMap<>(2);
- map.put("id", id.get(i));
- map.put("title", hasil);
- stoplistdata2.add(map);
- hasil = "";
- } else if (!(word[j].isEmpty())) {
- hasil += word[j] + " ";
- }
- //Log.d("A", "Word length = " + String.valueOf(word.length));
- //Log.d("A", "j = " + j);
- }
- }
- //Toast.makeText(mainActivity, stoplistdata2.toString(), Toast.LENGTH_SHORT).show();
- SimpleAdapter adapter = new SimpleAdapter(mainActivity, stoplistdata2,
- R.layout.row,
- new String[]{"id", "title"},
- new int[]{R.id.tvId,
- R.id.tvJudul});
- mainActivity.setData(stoplistdata2);
- mainActivity.setLvAdapter(adapter, "stemming");
- }
- public boolean checkWord(String kata) {
- String word;
- for (int i = 0; i < katadasar.size(); i++) {
- word = katadasar.get(i);
- if (kata.equalsIgnoreCase(word)) {
- return true;
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement