TUGAS 1 Sistem Temu Kembali Informasi (A) Dosen : Ibu Diana Purwitasari, S.Kom. M.Kom “Stemming” Oleh : Kelompok 14 Yasfin Fajri Wahyu Haristya P. Evan Yofiyanto Rizki Akbar Maulana Grala Bagus A. Ahmad Fuadi 5105100074 5106100038 5106100049 5106100075 5106100093 5106100148 Teknik Informatika Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember Semester Gasal Tahun Akademik 2009-2010 BAB 1 PENDAHULUAN Pada bab ini dijelaskan hal-hal dasar yang berkaitan dengan pengerjaan tugas mata kuliah STKI ini. Adapun hal-hal dasar tersebut meliputi : latar belakang ; permasalahan ; batasan masalah ; dan tujuan dari pengerjaan tugas ini. 1.1 Latar Belakang Teknologi saat ini telah mengalami percepatan yang sangat signifikan, percepatan ini pun memberikan dampak yang signifikan pula pada aspek-aspek kehidupan manusia. Percepatan teknologi ini pun ikut merambah pada bidang penyediaan informasi. Internet sebagai media informasi menyimpan berjuta-juta dokumen/informasi digital. Hal ini membuat proses klasifikasi dokumen/informasi menjadi sedikit lebih rumit. Metode yang sering digunakan adalah metode klasifikasi dengan menggunakan steammer. Stemming merupakan suatu proses untuk menemukan kata dasar dari sebuah kata. Dengan menghilangkan semua imbuhan (affixes) baik yang terdiri dari awalan (prefixes), sisipan (infixes), akhiran (suffixes) dan confixes (kombinasi dari awalan dan akhiran) pada kata turunan. Stemming dapat digunakan pada struktur pembentukan kata dalam bahasa Indonesia untuk mengganti bentuk dari suatu kata menjadi kata dasar dari kata tersebut yang sesuai dengan struktur morfologi Bahasa Indonesia yang baik dan benar. Untuk selanjutnya dapat ditemukan kata-kata kunci ( key word ) pada corpus dokumen yang diproses. Key word ini merupakan kata dasar yang telah didapatkan dari proses stemming. 1.2 Permasalahan Permasalahan yang berusaha dipecahkan pada tugas ini adalah : a. Bagaimana stemmer ini dapat mengakomodir permasalahan infiks, sufiks, prefiks, konfiks dengan baik. b. Bagaimana mendapatkan hasil stemming yang meminimalisir kesalahan. 1.3 Batasan Masalah Pada proses pengerjaan, kami merancang suatu batasan masalah sebagai acuan dalam penyelesaian tugas ini : a. Kata-kata yang digunakan adalah kata-kata dalam bahasa Indonesia. b. Bahasa pemrograman yang digunakan adalah Java. Hal ini dilakukan untuk menyesuaikan dengan referensi yang kami miliki. BAB 2 TINJAUAN PUSTAKA 2.1 Sejarah Bahasa Indonesia Bahasa Indonesia adalah bahasa resmi Republik Indonesia sebagaimana disebutkan dalam Undang-Undang Dasar RI 1945, Pasal 36. Ia juga merupakan bahasa persatuan bangsa Indonesia sebagaimana disiratkan dalam Sumpah Pemuda 28 Oktober 1928. Meski demikian, hanya sebagian kecil dari penduduk Indonesia yang benar-benar menggunakannya sebagai bahasa ibu karena dalam percakapan sehari-hari yang tidak resmi masyarakat Indonesia lebih suka menggunakan bahasa daerahnya masing-masing sebagai bahasa ibu seperti bahasa Melayu pasar, bahasa Jawa, bahasa Sunda, dan lain sebagainya. Untuk sebagian besar masyarakat Indonesia lainnya, bahasa Indonesia adalah bahasa kedua dan untuk taraf resmi bahasa Indonesia adalah bahasa pertama. Bahasa Indonesia merupakan sebuah dialek bahasa Melayu yang menjadi bahasa resmi Republik Indonesia. Secara sejarah, bahasa Indonesia merupakan salah satu dialek temporal dari bahasa Melayu yang struktur maupun khazanahnya sebagian besar masih sama atau mirip dengan dialek-dialek temporal terdahulu seperti bahasa Melayu Klasik dan bahasa Melayu Kuno. Secara sosiologis, bolehlah kita katakan bahwa bahasa Indonesia baru dianggap "lahir" atau diterima keberadaannya pada tanggal 28 Oktober 1928. Secara yuridis, baru tanggal 18 Agustus 1945 bahasa Indonesia secara resmi diakui keberadaannya. 2.2 Serapan Dalam Bahasa Indonesia Ada empat tempo penting dari hubungan kebudayaan Indonesia dengan dunia luar yang meninggalkan jejaknya pada perbendaharaan kata Bahasa Indonesia. a. Hindu (antara abad ke-6 sampai 15 M) Sejumlah besar kata berasal dari Sanskerta Indo-Eropa. (Contoh: samudra, suami, istri, raja, putra, pura, kepala, mantra, cinta, kaca). b. Islam (dimulai dari abad ke-13 M) Pada tempo ini diambillah sejumlah besar kata dari Bahasa Arab dan Persia (Contoh: masjid, kalbu, kitab, kursi, doa, khusus, maaf, selamat, kertas). c. Kolonial Pada tempo ini ada beberapa bahasa yang diambil, di antaranya yaitu dari Portugis (contohnya: gereja, sepatu, sabun, meja, jendela) dan Belanda (contohnya: asbak, kantor, polisi, kualitas). d. Pasca-Kolonialisasi (Kemerdekaan dan seterusnya) Banyak kata yang diambil berasal dari bahasa Inggris. (Contoh: konsumen, isu). Dan ada juga Neo-Sanskerta yaitu neologisme yang didasarkan pada bahasa Sanskerta, (contoh: dasawarsa, lokakarya, tunasusila). Selain itu, Bahasa Indonesia juga menyerap perbendaharaan katanya dari bahasa Tionghoa (contoh: pisau, tauge, tahu, loteng, teko, tauke, cukong). 2.3 Morfologi Imbuhan Bahasa Indonesia Bahasa Indonesia mengenal pengelompokan kosa dalam bentuk kelas kata. Tata bahasa Indonesia banyak pendapat para mengenai jumlah dan jenis kelas kata. Kelas kata terdiri dari seperangkat kategori morfologis yang tersusun dalam kerangka sistem tertentu yang berbeda dan sistem kategori morfologis kelas kata lain. Kategori morfologis adalah sederetan kata yang memiliki bentuk gramatikal dan makna gramatikal yang sama. Setiap kategori morfologis itu terbentuk oleh prosede morfologis tertentu. Prosede morfologis adalah pembentukan kata secara sinkronis. Prosede morfologis itu ada dua macam yaitu derivasi dan intleksi. Derivasi adalah prosede morfologis yang menghasilkan kata-kata yang makna leksikalnya berbeda dari kata pangkal pembentuknya. Sebaliknya, infleksi menghasilkan kata-kata yang bentuk gramatikalnya berbeda-beda, tetapi leksemnya tetap seperti pada kata pangkalnya. Bahasa Indonesia mempunyai banyak awalan, akhiran, maupun sisipan, baik yang asli dari bahasa-bahasa Nusantara maupun dipinjam dari bahasa-bahasa asing. Hal ini menyebabkan proses stemming menjadi sedikit lebih rumit. Dibawah ini adalah aturan dasar imbuhan dalam Bahasa Indonesia. ATURAN DASAR IMBUHAN AWALAN (prefiks) Awalan adalah imbuhan yang diberikan di awal kata. Contoh : me-, ber- di-, ke-, pe-, ter Awalan me – Pemakaian awalan me- bervariasi yaitu mem-, men-, meny-, meng-, dan mengeContoh : melapor, membaca, menarik, menyanyi, menghitung, dan mengecat Awalan berPemakaian awalan ber- mempunyai kaidah sebagai berikut. Apabila diikuti kata dasar yang berhuruf (r) dan beberapa kata dasar yang suku pertamanya berakhir huruf (er), bentuk awalan ber berubah menjadi be-. Contoh : ber + rantai berantai ber + kerja bekerja Apabila awalan ber- bertemu dengan kata dasar ajar, ber- berubah menjadi belContoh : ber + ajar belajar Apabila awalan ber- diikuti kata dasar selain yang disebutkan di atas, ber- tetap tanpa perubahan. Contoh : ber + lari berlari ber + nyanyi bernyanyi Awalan diAwalan di mempunyai makna suatu perbuatan aktif. Awalan di- merupakan kebalikan dari awalan me- yang bermakna aktif. Contoh : di + siram disiram di + tanam ditanam di + beli dibeli Awalan terAwalan ter- hampir sama dengan awalan di-. Awaln ter- berfungsi untuk membentuk kata kerja pasif. Contoh : ter + tendang tertendang ter + bakar terbakar Awalan ter- ada pula yang termasuk golongan kata sifat. Contoh : ter + pandai terpandai ter + kecil terkecil AWALAN pe-(n) Pemakaian awalan pe-(n) memiliki variasi sebagaimana yang berlaku pada awalan me(n). AWALAN peUmumnya tidak bisa digunakan secara mandiri. Pemakaian awalan per- membutuhkan imbuhan lain misalnya –kan dan –an. Contoh : per-kan + kembang perkembangan per-an + usaha perusahaan AWALAN seDapat langsung menempel sebagai awalan pada kata dasar. Makna awalan se- : Menyatakan satu selembar, seribu Menyatakan seluruh sekota, sedesa Menyatakan sama sepandai, seindah Menyatakan setelah sekembali AWALAN keMakna awalan keMenyatakan kumpulan yang terdiri dari jumlah kesebelasan Menyatakan urutan kesatu, kedua, ketiga SISIPAN (infiks) Sisipan adalah imbuhan yang diberikan di tengah kata. Contoh : -el, -em, dan –er. Makna sisipan : Menyatakan internsitas atau frekuensi. Contoh : geletar, gemetar Menyatakan banyak dan bermacam-macam. Contoh : temali, gemerincing Memiliki sifat yang disebut dalam kata dasarnya. Contoh : temurun, gemilang, telunjuk, pelatuk, gelembung, telapak AKHIRAN (sufiks) Imbuhan yang diberikan di akhir kata. Contoh : -kan, -I, -an, -kah, -tah, dan –pun. Akhiran –kan Dapat langsung menempel sebagai akhiran pada kata dasar. Secara umum mengandung arti perintah. Makna yang lain adalah menyatakan sebagai alat atau membuat dengan, menyebabkan atau menjadikan sesuatu, ,menyatakan arti bahwa suatu pekerjaan dilakukan untuk orang lain, mentransitifkan kata kerja ke dinding Akhiran -i Dapat langsung menempel sebagai akhiran pada kata dasar. Akhiran –an Dapat langsung menempel sebagai akhiran pada kata dasar. Akhiran –isme dan –isasi Merupakan jenis imbuhan serapan. Makna akhiran –isme adalah paham atau ajaran komunisme, swastanisasi, animisme, liberalisme Makna akhiran –isasi adalah proses atau menjadikan sesuatu lebelisasi Akhiran – i , - iah, - is, - wi Merupakan jenis imbuhan serapan. - i berasal dari bahasa Inggris. - iah, - is, - wi berasal dari bahasa Arab Makna akhiran – i, - iah, - is, - wi adalah membentuk kata sifat. Contoh : insani : memiliki sifat keinsanian alamiah : memiliki sifat alamiah, natural agamais : menujukkan sifat orang yang taat beragama manusiawi : bersifat kemanusian AWALAN DAN AKHIRAN (konfiks) Awalan dan akhiran adalah imbuhan yang berupa gabungan dari awalan dan akhiran. Contoh : me-kan, pe-an, ber-an, se-nya, meper-kan. Awalan dan Akhiran me-kan, dan memper-kan Pada konfiks me-kan aturan peleburan awalan me- ( menjadi mem-, men-, meny-, meng-, dan menge- ) masih berlaku. Sedangkan akhiran –kan dapat ditempelkan langsung. Contoh : memesankan, menyemburkan, mengesampingkan. Awalan dan Akhiran ber - an Awalan dan akhiran ber – an dapat digunakan langsung pada kata dasar. Contoh : berdatangan, berterbangan, bergulingan, berlompatan. Awalan dan Akhiran pe – an Pada konfiks me-kan aturan peleburan awalan me- ( menjadi mem-, men-, meny-, meng-, dan menge- ) masih berlaku. Sedangkan akhiran –kan dapat ditempelkan langsung. Contoh : pendidikan, penanaman, pendaftaran, penelitian, pengakuan, penghasilan Awalan dan Akhiran per- an Awalan dan akhiran per – an dapat digunakan langsung pada kata dasar. Contoh : perhentian, perusahaan, perempatan, pertigaan, pertahanan, perbuatan. Awalan dan Akhiran se –nya Konfiks ini biasanya digunakan untuk menyertai kata ulang. Awalan dan akhiran se nya dapat digunakan langsung pada kata dasar. Contoh : sebaiknya, setinggi-tingginya, sebaik-baiknya, semerah-merahnya. 2.4 Proses Stemming Proses stemming adalah proses pemotongan pada sebuah kata untuk mendapatkan bentuk dasarnya. Dalam Bahasa Indonesia bisa dikatakan proses stemming adalah proses untuk menemukan kata dasar dari kata-kata yang berimbuhan. Sejak tahun 1995, beberapa algoritma untuk melakukan proses stemming terhadap katakata dalam Bahasa Indonesia telah dikembangkan, diantaranya: Algoritma Nazief dan Adriani Arifin and Setiono's Algorithm Vega's Algorithm Ahmad, Yusoff and Sembok's Algorithm Lily and Stephane’s Algorithm Fadillah’s Porter-like Stemmer Algorithm Secara garis besar, algoritma-algoritma diatas bisa dibagi menjadi dua kelompok, yang pertama algoritma yang menggunakan bantuan kamus, dan yang kedua algoritma yang tidak. Algoritma yang menggunakan bantuan kamus memiliki tingkat akurasi yang lebih baik, namun waktu pemrosesannya tentu saja jauh lebih lama darupada algoritma yang tidak menggunakan kamus. Walaupun banyak algoritma yang telah dikembangkan, pada dasarnya, proses stemming Bahasa Indonesia dilakukan dengan mengikuti kaedah pembentukan kata berimbuhan dalam bahasa indonesia. Dalam Bahasa Indonesia sendiri terdapat empat jenis imbuhan. Yang pertama prefix atau awalan yang didalamnya meliputi imbuhan meng-, ber-, pe-, se-, dan ter-. Yang kedua suffix atau akhiran yang dibagi menjadi tiga kelompok: particle atau kata sandang (-kah, -lah, -pun, -tah), possesive pronoun atau kata ganti milik (-ku, -mu, nya), dan suffix yang sesungguhnya (-i,-kan,-an). Yang ketiga infix atau sisipan yang frekuensi penggunaannya dalam bahasa indonesia sangat jarang, lalu yang terakhir adalah confix atau gabungan awalan dan akhiran. Selain imbuhan-imbuhan di atas, dalam bahasa indonesi juga mulai digunakan imbuhan yang berasal dari bahasa asing seperti pra-, inter-, pasca-, -isasi, -isme, dan -is. Proses stemming sendiri diperlukan untuk menghilangkan imbuhan-imbuhan tersebut dari sebuah kata sehingga hanya tersisa kata dasarnya. Yang menjadi perhatian utama dalam proses stemming Bahasa Indonesia adalah bagaimana menghilangkan awalan dari sebuah kata, karena selain pada kasus penambahan awalan tidak ada perubahan bentuk dari kata dasar yang bersangkutan. Berikut tabel aturan perubahan bentuk kata dasar ketika ditambahi awalan: Berdasarkan eksperimen yang dilakukan oleh Jelita Asian, Hugh E. Williams dan S.M.M Tahaghogi terhadap beberapa algoritma stemmer, ditemukan bahwa algoritma stemmer yang dikembangkan oleh Nazief dan Adriani memiliki performa lebih baik dibandingkan yang lain. Beberapa perbaikan juga ditambahkan oleh Jelita Asian dkk untuk meningkatkan performa algoritma tersebut. BAB 3 IMPLEMENTASI 3.1 Algoritma Stemming Implementasi dari stemmer yang digunakan di atas merujuk pada penelitian Fadillah Z Tala yang menggunakan algoritma Porter yang diadaptasi dari Algoritma Porter untuk Bahasa Inggris yang dikembangkan oleh Frakes (W. B. Frakes. Stemming Algorithms. In Frakes and Baeza [11], pages 131–160). Versi ini lebih mudah dipelajari karena Frakes membuat pemisahan yang jelas antara aturan pengganti dengan prosedur untuk melakukan tes terhadap kondisi yang dilampirkan. Karena bahasa Inggris dan Bahasa Indonesia adalah dua bahasa yang berbeda, beberapa modifikasi harus ditambahkan agar Algoritma Porter bisa digunakan dalam proses Stemming Bahasa Indonesia. Berikut adalah diagram desain dasar dari setemmer Algoritma Porter : Langkah-langkah stemmer menggunakan Algoritma Porter : 1. Dimulai dengan suatu kata, jika kata tersebut mempunyai partikel, maka langsung hilangkan partikel tersebut, misalkan partikel “-lah” pada kata “duduklah”. 2. Jika setelah penghilangan partikel tersebut masih merupakan bukan kata dasar, atau sebelumnya kata tersebut tidak terdapat partikel, maka selanjutnya dilanjutkan pengecekan akhiran kata ganti milik, seperti “-ku”. 3. Ketiga menghilangkan awalan pertama (jika terdapat banyak awalan) 4. Keempat terdapat pengkondisian : a. Jika masih terdapat akhiran, maka hilangkan akhiran tersebut, jika tidak, maka hilangkan awalan kedua dari kata tersebut. b. Jika setelah jika setelah penghilangan akhiran pada step (a) masih ada awalan kedua, maka hilangkan awalan kedua tersebut, selanjutnya kata tersebut menjadi kata dasar. Jika sudah tidak terdapat awalan, maka sudah menjadi kata dasar. c. Jika pada step (a) berlanjut pada penghilangan awalan kedua, maka tahap selanjutnya adalah menghilangkan akhiran kata tersebut, dan selanjutnya menjadi kata dasar. 3.2 Implemetasi Aplikasi TAMPILAN: FITUR: LOAD KAMUS: Penggunaan database seperti mySQL dinilai kurang efektif, karena user harus menginstall dulu jika ingin menggunakan program ini. Oleh karena itu perlu sebuah cara agar program ini bisa berjalan secara portable tanpa database. Pada program sebelumnya kami tambah fungsi load database dari teks external sehingga lebih praktis. public boolean loadKamusManual(JFrame parent) { kata.clear(); JFileChooser jf = new JFileChooser(); if (jf.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) { try { FileInputStream fis = new FileInputStream(jf.getSelectedFile()); DataInputStream dis = new DataInputStream(fis); Fungsi disamping akan membaca sebuah daftar kata dan memasukkan kata-kata tersebut ke dalam list Kata, list itu yang menjadi database untuk mengetahui kebenaran sebuah kata dasar yang ditemukan. BufferedReader br = new BufferedReader(new InputStreamReader(dis)); String strLine; while ((strLine = br.readLine()) != null) { kata.add(strLine); } } catch (Throwable t) { JOptionPane.showMessageDialog(null, t.getMessage()); return false; } } return true; } LOAD FILE UNTUK DI-STEM: Agar bisa stem banyak kata secara bersamaan tanpa harus susah-susah mengetik kata-kata tersebut maka program ditambahi fungsi load file external. Seluruh isi dari file tersebut akan di-stem untuk dicari kata dasarnya. LinkedList lc = new LinkedList(); int status = jFileChooser1.showOpenDialog(this); if(status == JFileChooser.APPROVE_OPTION) { jTextArea1.setText(""); inputWords.setText(""); try{ FileInputStream fis = new FileInputStream(jFileChooser1.getSelectedFile()); /*DataInputStream dis = new DataInputStream(fis); BufferedReader br = new BufferedReader(new InputStreamReader(dis)); String strLine; while((strLine=br.readLine())!=null){ jTextArea1.append(strLine+"\n"); }*/ int etCounter = 0; boolean isContent = false; byte b = (byte) fis.read(); while(b!=-1) { if((char)b == '@'){ etCounter++; } if(etCounter==5){ if((char)b == '-'){ isContent = true; } } lc.add((char)b); jTextArea1.append((char)b + ""); if(isContent){ if((char)b!='\n'){ inputWords.setText(inputWords.getText()+(char)b); }else{ inputWords.setText(inputWords.getText()+" "); } } b = (byte) fis.read(); } if(etCounter==0){ inputWords.setText(jTextArea1.getText()); }else{ inputWords.setText(inputWords.getText().substring(2)); //remove } doStem(); }catch(Throwable t){ JOptionPane.showMessageDialog(this, t.getMessage()); } } EXTRA ENHANCED CONFIX STRIPPING STREMMING: Pada ENHANCED CONFIX STRIPPING STREMMING ternyata masih ditemukan kata-kata yang belum ter-stem dengan sempurna. Oleh karena itu kami tambahi menjadi EXTRA ENHANCED CONFIX STRIPPING STREMMING. Perubahan terjadi pada file Kata.java dan ModelTabel.java. Perubahan yang ada diantaranya: 1. Menghilangkan tanda baca yang ada pada kata, contohnya adalah ! ? , . tanda tersebut perlu dihilangkan karena kata yang masih mengandung tanda baca tidak bisa di-stem. 2. Perubahan pada stemming kata yang mengandung lebih dari satu kemungkinan kata dasar penyusun, contohnya berpegangan terdiri dari gang, dan pegang, bersesuaian terdiri dari suai dan sesuai. Cara yang digunakan adalah mencari semua kata dasar penyusun dengan menjalankan fungsi stem tanpa break. Kata yang ditemukan ditampung ke sebuah list. Kata yang diambil adalah kata paling panjang, contohnya berpegangan (gang dan pegang) diambil pegang. KATA.JAVA private boolean found; private List bDasar; public final static int EXTRA_ENHANCED_CS_STEMMER = 4; public Kata(String label , Kamus kamus) { this.label = label.toLowerCase(); this.kamus = kamus; this.bentukDasar = ""; this.langkahStem = ""; this.found = false; this.bDasar = new List(); bDasar.removeAll(); } private void addbDasar(String kata) { this.langkahStem+="\n\n - TAMBAHKAN "+kata.toUpperCase()+"\n"; this.found = true; String[] arr = bDasar.getItems(); int jum = arr.length; if(jum==0){ this.bDasar.add(kata); }else { for (int i = 0; i < jum; i++) { if (arr[i].matches(kata)) { return; } } this.bDasar.add(kata); } } public List getbDasar(int pilihanStemmer) { this.pilihanStemmer = pilihanStemmer; doStem(); return this.bDasar; } private String replaceTanda(String kata) { String hasil = kata; boolean loop=true; do{ if(hasil.endsWith(".")) hasil = hasil.substring(0, hasil.length()-1); else if(hasil.endsWith(",")) hasil = hasil.substring(0, hasil.length()-1); else if(hasil.endsWith("\"")) hasil = hasil.substring(0, hasil.length()-1); else if(hasil.startsWith("\"")) hasil = hasil.replaceAll("\"", ""); else if(hasil.startsWith(" ")) hasil = hasil.replaceAll(" ", ""); else if(hasil.endsWith(" ")) hasil = hasil.replaceAll(" ", ""); else if(hasil.endsWith("!")) hasil = hasil.replaceAll("!", ""); else if(hasil.endsWith("?")) hasil = hasil.replaceAll("?", ""); else loop = false; }while(loop); return hasil; } // baris dibawah ini digunakan untuk melewati fungsi return, dengan demikian maka program akan dijalankan terus tanpa break sehingga menemukan semua kata penyusunnya. if(pilihanStemmer==EXTRA_ENHANCED_CS_STEMMER){ this.addbDasar(kata); } else return; MODELTABEL.JAVA public Object getValueAt(int rowIndex, int columnIndex) { if(columnIndex==0) { return String.valueOf(rowIndex+1); } else if(columnIndex==1) { Kata r = (Kata) list.get(rowIndex); return r.getLabel(); } else if(columnIndex==2) { Kata r = (Kata) list.get(rowIndex); if(this.pilihanStemmer==4){ String temp = ""; String[] arr = r.getbDasar(pilihanStemmer).getItems(); int jum = arr.length; int pj = 0; for(int i=0;i<jum;i++) { //temp += ", "+arr[i]; if(arr[i].length()>pj) temp = arr[i]; pj = arr[i].length(); } //return temp.substring(2); return temp; }else{ return r.getBentukDasar(this.pilihanStemmer); } } return ""; } TAMBAHAN: ANIMATE: Jika menu misc-animate dicentang maka pada saat windows exit akan menampilkan animasi bergerak. STYLE: Jika merasa bosan dengan tampilan GUI program yang biasa, disediakan 6 style yang bisa dicoba. BAB 4 UJI COBA & EVALUASI Pada uji coba yang kami lakukan ini, kami menggunakan 15 kata dasar dari file kamus.dic pada urutan ke 19.501-21.000 serta beberapa kata lain yang kami jadikan pembanding. 1. 5 kata yang dapat di-stemming dengan benar oleh program stemmer pre-modifikasi adalah kata : parkir, pasti, patuh, pecah, pelan. 2. 10 kata yang tidak bisa di-stemming dengan benar oleh program stemmer pra-modifikasi adalah : pecut, pegang, pelopor, pengaruh, sesuai, pilah, pakai 3. 10 kata tersebut dapat di-stemming dengan benar oleh program stemmer hasil modifikasi. DAFTAR PUSTAKA www.wikipedia.com (diakses jum’at, 11 September 2009) Balai pusat bahasa. Dasar-dasar pengenalan morfologi kata berimbuhan dalam bahasa Indonesia. F.Z. Tala. A study of stemming effects on information retrieval in bahasa Indonesia. Universiteit van Amsterdam. The Netherlands. J.Asian, H.E.Williams, S.M.M. Tahaghoghi, Stemming Indonesian. RMIT University. Melbourne, Australia.