Advertisement
faizN

NEW

Apr 30th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.72 KB | None | 0 0
  1. package faiznoeris.tbitugaspraktek.temubalikinformasi;
  2.  
  3. import android.content.res.AssetManager;
  4. import android.util.Log;
  5. import android.widget.SimpleAdapter;
  6. import android.widget.Toast;
  7.  
  8. import java.io.BufferedReader;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.io.InputStreamReader;
  12. import java.util.ArrayList;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16.  
  17. /**
  18.  * Created by Vellfire on 20/04/2017.
  19.  */
  20.  
  21. public class Stemming {
  22.     List<Map<String, String>> stoplistdata = new ArrayList<>(), stoplistdata2 = new ArrayList<>();
  23.     Map<String, String> map;
  24.     StringBuilder sb = new StringBuilder();
  25.     //String title,id;
  26.     ArrayList<String> id = new ArrayList<String>(), title = new ArrayList<String>(), katadasar = new ArrayList<String>();
  27.     int counter = 0;
  28.     String str, hasil;
  29.     String[] word;
  30.     String belakang_1, belakang_2, belakang_3, depan_2, depan_3, depan_4, dasar;
  31.  
  32.     public Stemming(List<Map<String, String>> data, MainActivity mainActivity) throws IOException {
  33.         AssetManager am = mainActivity.getAssets();
  34.         InputStream is = am.open("kata_dasar_indo.txt");
  35.         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
  36.  
  37.         while ((str = bufferedReader.readLine()) != null) {
  38.             katadasar.add(str);
  39.         }
  40.  
  41.         stoplistdata = data;
  42.         for (Map<String, String> tempmap : stoplistdata) {
  43.             for (Map.Entry<String, String> entry : tempmap.entrySet()) {
  44.                 if (entry.getKey().equals("title") && !(entry.getValue() == null)) {
  45.                     title.add(entry.getValue());
  46.                 } else {
  47.                     id.add(entry.getValue());
  48.                 }
  49.             }
  50.         }
  51.  
  52.         for (int i = 0; i < data.size(); i++) {
  53.             word = title.get(i).split(" ");
  54.             for (int j = 0; j < word.length; j++) {
  55.                 Log.d("BAC", word[j]);
  56.                 if (word[j].length() < 4) {
  57.                     break;
  58.                 }
  59.  
  60.                 belakang_1 = word[j].substring(word[j].length() - 1);
  61.                 belakang_2 = word[j].substring(word[j].length() - 2);
  62.                 belakang_3 = word[j].substring(word[j].length() - 3);
  63.                 depan_2 = word[j].substring(0, 2);
  64.                 depan_3 = word[j].substring(0, 3);
  65.                 depan_4 = word[j].substring(0, 4);
  66.  
  67.  
  68.                 //Langkah 1 - Penghapusan Partikel
  69.                 if(!(checkWord(word[j]))) {
  70.                     if (belakang_3.equalsIgnoreCase("kah") || belakang_3.equalsIgnoreCase("lah") || belakang_3.equalsIgnoreCase("pun")) {
  71.                         word[j] = word[j].substring(0, word[j].length() - 3);
  72.                     }
  73.                 }
  74.  
  75.  
  76.  
  77.                 //Langkah 2 - Penghapusan Possesive Pronouns
  78.                 if(!(checkWord(word[j]))) {
  79.                     if (belakang_2.equalsIgnoreCase("ku") || belakang_2.equalsIgnoreCase("mu")) {
  80.                         word[j] = word[j].substring(0, word[j].length() - 2);
  81.                     } else if (belakang_3.equalsIgnoreCase("nya")) {
  82.                         word[j] = word[j].substring(0, word[j].length() - 3);
  83.                     }
  84.                 }
  85.  
  86.  
  87.                 //Langkah 3 - Hapus Awalan Pertama
  88.                 if(!(checkWord(word[j]))) {
  89.                     if (depan_4.equalsIgnoreCase("meng")) {
  90.                         if (word[j].substring(4, 5).equals("a")) {
  91.                             word[j] = "K" + word[j].substring(4, word[j].length());
  92.                         } else {
  93.                             word[j] = word[j].substring(4, word[j].length());
  94.                         }
  95.                     } else if (depan_4.equalsIgnoreCase("meny")) {
  96.                         // || word[j].substring(4).equals("usul") || word[j].substring(4).equals("usu")
  97.                         if (word[j].substring(4, 5).equalsIgnoreCase("a")) {
  98.                             word[j] = "S" + word[j].substring(4, word[j].length());
  99.                         } else if (word[j].substring(4, 5).equalsIgnoreCase("u")) {
  100.                             word[j] = "C" + word[j].substring(4, word[j].length());
  101.                         }
  102.                     } else if (depan_3.equalsIgnoreCase("men")) {
  103.                         word[j] = word[j].substring(3, word[j].length());
  104.                     } else if (depan_3.equalsIgnoreCase("mem")) {
  105.                         if (word[j].substring(3, 4).equalsIgnoreCase("a") || word[j].substring(3, 4).equalsIgnoreCase("i") || word[j].substring(3, 4).equalsIgnoreCase("u")
  106.                                 || word[j].substring(3, 4).equalsIgnoreCase("e") || word[j].substring(3, 4).equalsIgnoreCase("o")) {
  107.                             word[j] = "P" + word[j].substring(3, word[j].length());
  108.                         } else {
  109.                             word[j] = word[j].substring(3, word[j].length());
  110.                         }
  111.                     } else if (depan_2.equalsIgnoreCase("me")) {
  112.                         word[j] = word[j].substring(2, word[j].length());
  113.                     } else if (depan_4.equalsIgnoreCase("peng")) {
  114.                         word[j] = word[j].substring(4, word[j].length());
  115.                     } else if (depan_4.equalsIgnoreCase("peny")) {
  116.                         word[j] = "S" + word[j].substring(4, word[j].length());
  117.                     } else if (depan_3.equalsIgnoreCase("pen")) {
  118.                         word[j] = word[j].substring(3, word[j].length());
  119.                     } else if (depan_3.equalsIgnoreCase("pem")) {
  120.                         word[j] = "P" + word[j].substring(3, word[j].length());
  121.                     } else if (depan_2.equalsIgnoreCase("di")) {
  122.                         word[j] = word[j].substring(2, word[j].length());
  123.                     } else if (depan_3.equalsIgnoreCase("ter")) {
  124.                         word[j] = word[j].substring(3, word[j].length());
  125.                     } else if (depan_2.equalsIgnoreCase("ke")) {
  126.                         word[j] = word[j].substring(2, word[j].length());
  127.                     }
  128.                 }
  129.  
  130.  
  131.                 /*//Langkah 4 - Hapus Awalan Kedua
  132.                 if (depan_3.equalsIgnoreCase("ber")) {
  133.                     word[j] = word[j].substring(3, word[j].length());
  134.                 } else if (depan_3.equalsIgnoreCase("bel")) {
  135.                     word[j] = word[j].substring(3, word[j].length());
  136.                 } else if (depan_2.equalsIgnoreCase("be")) {
  137.                     word[j] = word[j].substring(2, word[j].length());
  138.                 } else if (depan_3.equalsIgnoreCase("per")) {
  139.                     word[j] = word[j].substring(3, word[j].length());
  140.                 } else if (depan_3.equalsIgnoreCase("pel")) {
  141.                     word[j] = word[j].substring(3, word[j].length());
  142.                 } else if (depan_2.equalsIgnoreCase("pe")) {
  143.                     word[j] = word[j].substring(2, word[j].length());
  144.                 }
  145.  
  146.  
  147.  
  148.                 //Langkah 5 - Hapus Akhiran
  149.                 if (belakang_3.equalsIgnoreCase("kan")) {
  150.                     word[j] = word[j].substring(0, word[j].length() - 3);
  151.                 } else if (belakang_2.equalsIgnoreCase("an")) {
  152.                     word[j] = word[j].substring(0, word[j].length() - 2);
  153.                 } else if (belakang_1.equalsIgnoreCase("i")) {
  154.                     word[j] = word[j].substring(0, word[j].length() - 1);
  155.                 }*/
  156.  
  157.  
  158.                 if (j == word.length - 1) {
  159.                     //Log.d("A", "hasil=0");
  160.                     hasil += word[j] + " ";
  161.                     map = new HashMap<>(2);
  162.                     map.put("id", id.get(i));
  163.                     map.put("title", hasil);
  164.                     stoplistdata2.add(map);
  165.                     hasil = "";
  166.                 } else if (!(word[j].isEmpty())) {
  167.                     hasil += word[j] + " ";
  168.                 }
  169.                 //Log.d("A", "Word length = " + String.valueOf(word.length));
  170.                 //Log.d("A", "j = " + j);
  171.             }
  172.         }
  173.         //Toast.makeText(mainActivity, stoplistdata2.toString(), Toast.LENGTH_SHORT).show();
  174.         SimpleAdapter adapter = new SimpleAdapter(mainActivity, stoplistdata2,
  175.                 R.layout.row,
  176.                 new String[]{"id", "title"},
  177.                 new int[]{R.id.tvId,
  178.                         R.id.tvJudul});
  179.  
  180.         mainActivity.setData(stoplistdata2);
  181.         mainActivity.setLvAdapter(adapter, "stemming");
  182.     }
  183.  
  184.     public boolean checkWord(String kata) {
  185.         String word;
  186.         for (int i = 0; i < katadasar.size(); i++) {
  187.             word = katadasar.get(i);
  188.             if (kata.equalsIgnoreCase(word)) {
  189.                 return true;
  190.             }
  191.         }
  192.         return false;
  193.     }
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement