Stemming, apa itu? Nyetem (senar) gitar itu ven ya??

Ah, bukan :|

Stemming itu proses pemotongan (pemangkasan) kata untuk mendapatkan bentuk dasar (kata dasar) dari kata tersebut. Buat yang udah pernah dapet di STKI (Sistem Temu Kembali Informasi : Information Retreival), tentunya udah ndak asing lagi (tapi sayangnya dulu aku ndak ikut kuliah ini :? ). Kalo bang wiki si bilangnya gini:

Stemming is the process for reducing inflected (or sometimes derived) words to their stem, base or root form — generally a written word form. The stem need not be identical to the morphological root of the word; it is usually sufficient that related words map to the same stem, even if this stem is not in itself a valid root.

Tu kan, intinya gimana ndapetin stem/root (inti/dasar) dari suatu kata tertulis (berimbuhan?). Jadi misal terdapat kata mempermainkan, maka dari kata tersebut bisa dipilah-pilah menjadi mem + per + main + kan. Secara ilmu bahasa, hal ini mudah dilakukan oleh manusia, karena manusia sudah punya database memori linguistik yang komplit untuk melakukan parsing komponen-komponen penyusun (ejaan : imbuhan dan kata dasar) dari suatu kata. Seperti misalnya, dari kata mengantuk, kita bisa langsung memilah-milah menjadi me(ng) + kantuk (bukan meng + antuk atau me + ngantuk). Namun bagaimana jika kita ingin melakukan automasi proses stemming ini dengan sebuah program? Mampukah program mengenali perubahan morfologi kata ini dengan tepat?

Hal ini bukanlah tidak mungkin. Proses stemming sendiri sudah cukup terkenal, bahkan seringkali kita gunakan tanpa kita sadari. Siapa si yang ndak kenal mbah Google? Proses pencariannya sekarang sudah pake Stemming loh! (pencarian kata fishing juga menghasilkan kata-kata fish, fishy, fisherman dll). Meskipun masih hanya berlaku buat pencarian dengan bahasa inggris. Trus kalo stemming Bahasa Indonesia gimana donk??

Ah, pak Agus Zainal Arifin udah pernah mbahas hal ini sejak taon 2002 lalu. Pada publikasi yang berjudul Klasifikasi Dokumen Berita Kejadian Berbahasa Indonesia dengan Algoritma Single Pass Clustering tersebut, beliau menggunakan stemming untuk mendapatkan kata dasar yang akan digunakan sebagai acuan klasifikasi.

Proses stemming yang diulas adalah sebagai berikut :

  • Pemeriksaan semua kemungkinan bentuk kata. Setiap kata diasumsikan memiliki 2 awalan (prefiks) dan 3 akhiran (sufiks). Sehingga bentuknya menjadi :
    Prefiks 1 + Prefiks 2 + Kata dasar + Sufiks 3 + Sufiks 2 + Sufiks 1

  • Pemotongan dilakukan berurutan : Awalan 1, Awalan 2, Akhiran 1, Akhiran 2, Akhiran 3 (kalau ada), dan Kata Dasar.

  • Setiap tahap pemotongan diikuti dengan pemeriksaan di kamus (berisi daftar kata dasar) apakah hasil pemotongan itu sudah berada dalam bentuk dasar. Jika pemeriksaan berhasil maka proses dinyatakan selesai dan tidak perlu melanjutkan proses pemotongan imbuhan selanjutnya.
    Contoh : kata mempermainkannya :

flowchart stemming

  • Namun jika sampai pada pemotongan Akhiran 3 masih belum juga ditemukan di kamus, maka dilakukan proses kombinasi: Kata Dasar yang dihasilkan dikombinasikan dengan imbuhan-imbuhannya dalam 12 konfigurasi berikut.

  1. Kata Dasar
  2. Kata Dasar + Akhiran 3
  3. Kata Dasar + Akhiran 3 + Akhiran 2
  4. Kata Dasar + Akhiran 3 + Akhiran 2 + Akhiran 1
  5. Awalan 1 + Awalan 2 +Kata Dasar
  6. Awalan 1 + Awalan 2 +Kata Dasar + Akhiran 3
  7. Awalan 1 + Awalan 2 +Kata Dasar + Akhiran 3 + Akhiran 2
  8. Awalan 1 + Awalan 2 +Kata Dasar + Akhiran 3 + Akhiran 1
  9. Awalan 2 + Kata Dasar
  10. Awalan 2 + Kata Dasar + Akhiran 3
  11. Awalan 2 + Kata Dasar + Akhiran 3 + Akhiran 2
  12. Awalan 2 + Kata Dasar + Akhiran 3 + Akhiran 2 + Akhiran 1

 

  • Sebenarnya kombinasi 1, 2, 3, 4, 8, dan 12 sudah diperiksa pada tahap sebelumnya, karena kombinasi ini adalah hasil pemotongan bertahap tersebut. Dengan demikian, kombinasi yang masih perlu dilakukan tinggal 6 yakni pada kombinasi-kombinasi yang belum dilakukan (5, 6, 7, 9, 10, dan 11). Tentunya bila hasil pemeriksaan suatu kombinasi adalah ‘ada’, maka pemeriksaan pada kombinasi lainnya sudah tidak diperlukan lagi.

  • Pemeriksaan 12 kombinasi ini diperlukan, karena adanya fenomena overstemming pada algoritma pemotongan imbuhan. Kelemahan ini berakibat pada pemotongan bagian kata yang sebenarnya adalah milik Kata Dasar itu sendiri yang kebetulan mirip dengan salah satu jenis imbuhan yang ada. Dengan 12 kombinasi itu, pemotongan yang sudah terlanjur tersebut dapat dikembalikan sesuai posisinya.

Ribet yak? Benernya simple kok, cuma parsing awalan dan akhiran, ambil beberapa huruf di ujung depan / blakang kata, kemudian cek apakah beberapa huruf potongan tersebut merupakan imbuhan. Jika merupakan imbuhan, potong kata tersebut dan sebutkan elemen penyusunnya (kata dasar dan imbuhan). Proses ini dilakukan sesuai dengan urutan yang disebutin di atas. Simple.

Yup, simple emang kalo cuma motong-motong imbuhan dari kata dasar. Tapi, proses tersebut jadi ndak simple babar blas sama sekali kalo ada di perubahan morfologi dari kata dasar pada kata berimbuhan bentukan dari awalan pe- dan me-. Kata wiki aturannya begini ni (tapi di sana cuma awalan me-):

Awalan me-

Pembentukan dengan awalan me- memiliki aturan sebagai berikut:

  1. tetap, jika huruf pertama kata dasar adalah l, m, n, q, r, atau w. Contoh: me- + luluh → meluluh, me- + makan → memakan.
  2. me-mem-, jika huruf pertama kata dasar adalah b, f, p*, atau v. Contoh: me- + baca → membaca, me- + pukul → memukul*, me- + vonis → memvonis, me- + fasilitas + i → memfasilitasi.
  3. me-men-, jika huruf pertama kata dasar adalah c, d, j, atau t*. Contoh: me- + datang → mendatang, me- + tiup → meniup*.
  4. me-meng-, jika huruf pertama kata dasar adalah huruf vokal, k*, g, h. Contoh: me- + kikis → mengikis*, me- + gotong → menggotong, me- + hias → menghias.
  5. me-menge-, jika kata dasar hanya satu suku kata. Contoh: me- + bom → mengebom, me- + tik → mengetik, me- + klik → mengeklik.
  6. me-meny-, jika huruf pertama adalah s*. Contoh: me- + sapu → menyapu*.

Huruf dengan tanda * memiliki sifat-sifat khusus:

  1. Dilebur jika huruf kedua kata dasar adalah huruf vokal. Contoh: me- + tipu → menipu, me- + sapu → menyapu, me- + kira → mengira.
  2. Tidak dilebur jika huruf kedua kata dasar adalah huruf konsonan. Contoh: me- + klarifikasi → mengklarifikasi.
  3. Tidak dilebur jika kata dasar merupakan kata asing yang belum diserap secara sempurna. Contoh: me- + konversi → mengkonversi.

wohohohohohoho.. yang ini baru namanya ribet :|

Ada dua solusi yang kepikiran si buat mengatasi perubahan morfologi tersebut. Solusi yang paling umum adalah melakukan pemotongan terhadap kata berimbuhan tersebut, sehingga yang tersisa adalah kata dasar yang tidak sempurna (terpotong, perubahan morfologi diabaikan). Kemudian dari kata dasar yang terpotong tersebut, di cek satu-satu dengan kombinasi huruf yang mungkin, dengan dibandingkan dengan data yang ada pada database kamus.

Contoh : mengantuk, yang dipotong menjadi meng + antuk. Perubahan morfologi kata dasar untuk awalan meng- adalah jika huruf pertama dari kata dasar merupakan huruf vokal, atau huruf konsonan k, g, dan h. Maka dari kata antuk tersebut dikombinasikan dengan kemungkinan yang ada : antuk, kantuk, gantuk, dan hantuk, yang kemudian diperiksa satu-persatu pada database kamus.

Simple, tapi memakan resource dan koneksi untuk query dan pengecekan pada database. Lha trus gimana donk??

Coba dilihat dengan cara lain: Query ke database kamus untuk mendapatkan kata dasar – kata dasar yang ‘_antuk‘ (terdapat tepat satu karakter di depan kata, bebas, a-z ataupun tanpa huruf sama sekali, namun sisanya adalah antuk), kemudian biarkan program melihat hasilnya dan membandingkan dengan kombinasi yang mungkin.

misal : kata menangani, dipotong menjadi men + angan + i. Query ke database untuk kata dasar dengan ketentuan ‘_angan‘ menghasilkan kata tangan, dan jangan. Dari bentukan kata menangani yang melebur, bisa dipastikan bahwa hasilnya adalah kata tangan. Tapi cara ini juga masih banyak kelemahan, seperti pada kata mengurus (kata dasar: kurus / urus :?: ) :?

Ah, tapi kedua cara itu blom (bener2) aku coba :roll:

Daftar Pustaka :

  • Agus Zainal Arifin dan Ari Novan Setiono, 7 Mei 2002, Klasifikasi Dokumen Berita Kejadian Berbahasa Indonesia dengan Algoritma Single Pass Clustering, Proceeding of Seminar on Intelligent Technology and Its Applications (SITIA), Teknik Elektro, Institut Teknologi Sepuluh Nopember.
  • Wikipedia, 23 Desember 2007, Stemming, <URL: http://en.wikipedia.org/wiki/Stemming>.
  • Wikipedia, 23 Desember 2007, Wikipedia:Pedoman ejaan dan penulisan kata, <URL: http://id.wikipedia.org/wiki/Wikipedia:Pedoman_ejaan>.

29 Komentar

  1. aaarrgghhh…
    sakjane ini tu TA-nya sapa seh?? :?

  2. *berkunang-kunang*

  3. aduh pen…elo ngambil mata kuliah bahasa indonesia ya?? :lol: :lol:

  4. Pend… setahuku stemming itu beda sama naturalisasi. Yang terakhir itu urusannya linguistik. Stemming itu lebih “kasar” hasilnya (bahkan untuk yang bahasa inggris). Soalnya keperluannya kan untuk bikin indeks dokumen yang banyak dan besar, asumsinya masio mbleset2 dikit kalo ada banyak kan akhirnya bener2 sendiri (ato some sort of that, aku nggak paham penjelasannya waktu itu)

    Masalah utama waktu aku mo bikin stemming pake bahasa indonesia (waktu STKI dulu) adalah stemming pake bahasa indonesia mau nggak mau ada unsur naturalisasinya – akhirnya karena memburu deadline, batasannya ditambah : khusus dokumen bhs inggris :mrgreen: -. Jadi susah. Kalo bahasa inggris kan tinggal motong es/s sama ing di belakang :D

    Dan setahuku stemming nggak pake kamus. (setidaknya yang aku buat nggak pake kamus :D )

    CMIIW….

  5. ada juga istilah prune.. sama2 mangkas, tapi untuk yg tidak sesuai treshold -itu dlm association rule yg algoritma apriori-

    *koq jadi tringat presentasi saya yang memalukan kemarin ituh…*

  6. Emang lebih mudah memparsing di otak kita… :D

  7. kalo pembaharuan gimana?
    peng+ba(ha)ru+an

    hayo…?

    (gw gak ambil kuliahnya, jadi ngetes2 aja he he he)

  8. remember your status :
    - Pembantu dosen pembimbing
    - Asisten [g tega pake vocab pembantu :p ] mahasiswa bimbingan

  9. @ manusiasuper :
    *ngipasin mansup* :mrgreen:
    aku juga awalnya berkunang2 kok, tapi kalo dah dapet pencerahan ya kunang2nya ilang sedikit demi sedikit :D

    @ cK :
    aku kan dah ndak kuliah :roll:

    @ dnial :
    masalahnya niel, ini tu buat bikin kamus, acuannya kata dasar, bukan buat klasifikasi..
    dan itu request dari dosennya, malah disuruh pake (POS) tagging juga :?
    jadi ntar tu penginnya kaya pencarian di google gitu, misal kalo nyari arti kata memakan, kluar juga yang pake kata dasar makan :roll:

    @ koecing :
    ah dea ngomongnya jorok,, :P
    komen satunya tak hapus ya :)

    @ Praditya :
    soalnya otak itu punya kecerdasan untuk melakukan proses pembelajaran..

    @ deniar :
    *cepet2 catet kasus buat batasan masalah : tanpa sisipan* :mrgreen:

    @ tiui :
    remember juga statusmu wi :
    mahasiswa culinary & housing :mrgreen:

  10. ah, capek aku mikir.
    istirahat dulu lah…
    kamu tu ga ada pikiran malah mikir yang beginian, mas. aneh..

  11. @niez…
    Ha3 abis mau gimana lagi, lingkungan kami emang beginian….
    Tapi tenang.. kami masih termasuk pria2 normal koq, dan masih romantis tentunya ha ha ha

  12. jadi keingeet pelajaran bahasa Indonesia pas skul dolo..betapa kangennya pelajaran ini dolo yah..

  13. Fiuh.. Jadi berkunang-kunang melihat postinganmu :roll:
    Aku bantu doa aja deh biar cepet selesai :p
    Eh, template mu kok ada saljunya?

  14. @ niez :
    justru karena ndak ada pikiran itu makanya suruh (mbantuin) mikir beginian :|

    @ deniar :
    pria normal yang betah nongkrongin monitor seharian, dan hidup kebalik : malam jadi siang, dan siang jadi malam. ah, jadi kangen masa2 itu :roll:

    @ andi bagus :
    lha kan ada matkul bahasa indonesia kan? dulu dosenku pak edi subali :P
    kmu blom ikut ya?

    @ alief :
    itu baru konsepnya lip, blom implementasinya, kunang2nya lebih banyak :roll:
    iya, ada saljunya, keren kan 8) itu fitur wordpress, dikasih tau chika :mrgreen:

  15. mo jadi guru bahasa Indonesia? :D

  16. @ aRuL :
    mo nggarap TA-nya orang rul :roll:

  17. :?:
    komen jorok? yg mana? perasaan d’cuma ngomen 1 itu doang.. bingung

  18. prune, treshold, association rule, apriori
    tu kan, jorok :P

  19. Wow.. keren.

    Bener kata dosenku. Everything is simple after being systematized :)

  20. Pend… yang dibilangin dea itu bahan TA-ku… Berarti beneran… itu jorok!!!

  21. saljunya keren
    trus sakjane ini TA-nya siapa?

  22. @ huda :
    ya tapi proses men-systemized-nya itu yang ndak simple :roll:

    @ dnial :
    brarti kamu orangnya jorok ya niel ya? :lol:

    @ melitong :
    saljunya cuma sampe 2 januari, kalo mau, pasang sendiri lho :p
    siapa lagi yang brani minta aku buat ngerjain TA-nya :?

  23. itu tuh ta nya Ari Novan Setiono, Teknik Informatika ITS Angkatan 97

  24. Punya tools atau source code stemming bwt B. Indonesia g?Bth nh bwt TA.tengkyu

  25. saya pengen ngambil TA ttg stemming .. terimakasih info nya di blog ini ya ..
    :D

  26. bagus banget tuch…., aq jg lagi buat skripsi ttg steming…, he he…, buka situs gue y… http://www.sunaryo.co.nr

  27. boleh minta source codenya ngga

  28. Punya paper Agus Zainal Arifin dan Ari Novan Setiono, 7 Mei 2002 tentang Klasifikasi Dokumen Berita Kejadian Berbahasa Indonesia dengan Algoritma Single Pass Clustering?

    -Terima kasih-

  29. saya memerlukan data kamusnya bisa peroleh dimana yach?
    download kata dasarnya dimana yups n makasih..


2 Lacak Balik / Ping Balik

  1. Oleh Salju VS Hujan « panggil aku “..niez” pada 28 Des 2007 jam 10:12 am

    [...] No Comments Okeyh. Pada awalnya saya bingung dan bertanya-tanya. Lihat di sini turun salju, di sana turun salju, di situ pun turun [...]

  2. Oleh Misteri Hari Sabtu « panggil aku “..niez” pada 12 Jan 2008 jam 12:50 am

    [...] mudah-mudahan misteri ini akan menghilang seiring dengan makin berkembangnya logika manusia yang semakin cerdas sehingga dapat membuktikan bahwa hal tersebut tidak lah benar adanya [...]

Tulis sebuah Komentar

*
*