Skip to content

Algoritma Steming: Nazief & Adriani

February 21, 2012

Algoritma Nazief & Adriani adalah algoritma stemming untuk bahasa Indonesia yang konon kabarnya adalah state of the art algoritma stemming untuk bahasa Indonesia. Algoritma Nazief & Adriani dideskripsikan pertama kali dalam unpblished technical report di Universitas Indonesia.

Stemming itu apa? Bisa dilihat di sini!

Algoritma yang dituliskan di bawah, diambil dari buku Effective Techniques for Indonesian Text Retrieval tulisan Jelita Asian. Buku ini merupakan thesis Jelita Asian untuk mencapai gelar PhD di Australia. Algoritma Nazief & Adriani dituliskan  sebagai “dasar teori” di bab 3. Versi PDF-nya bisa dilihat di sini.

Tulisan di bawah diterjemahkan agak plek sesuai di buku.

Dasar Algoritma

Algoritma ini menggunakan beberapa aturan morfologi untuk menghilangkan affiks (awalan, imbuhan, dll) dari sebuah kata dan kemudian mencocokannya dalam database akar kata (kata dasar / root word).

Jadi dasar utama algoritma ini adalah daftar akar kata. Langkah pertama yang dilakukan adalah mengumpulkan daftar akar kata dalam bahasa Indonesia. Semakin lengkap daftarnya, semakin tinggi akurasi algoritma ini.

Daftar tersebut bisa diperoleh dari Kamus Besar Bahasa Indonesia.

Detil Algoritma

Setelah menyiapkan daftar akar kata bahasa Indonesia, algoritma berikut bisa dijalankan.

  1. Pertama kali, cek kata yang ingin dicari akar katanya, ke dalam daftar akar kata. Jika ada dalam daftar, maka kata tersebut adalah adalah akar kata. Untuk setiap akhir langkah di bawah, lakukan langkah 1 ini juga.
  2. Hilangkan inflectional suffix (imbuhan infleksional). Pertama hilangkan imbuhan -kah, -lah, -tah, -pun kemudian hilangkan imbuhan -ku, -mu, -nya.
  3. Hilangkan derivational suffix (imbuhan turunan). Hilangkan imbuhan -i, -kan, -an.
  4.  Hilangkan derivational prefix (awalan turunan). Hilangkan awalan be-, di-, ke-, me-, pe-, se- dan te-.
    1. Langkah 4 ini jangan dilakukan bila:
      • kata dalam langkah 3, mempunyai gabungan awalan dan imbuhan yang tidak diperbolehkan dalam tabel di bawah.  (lihat tabel di bawah).
      • awalan yang akan dihilangkan, sama dengan awalan yang telah dihilangkan sebelumnya
      • awalan telah dihilangkan sebanyak tiga kali
    2. Identifikasi tipe awalan dan disambiguitasnya.
      Awalan mempunyai dua tipe:
      plain: awalan  di-, ke-, se- dapat dihilangkan secara langsung
      complex:  awalan be-, te-, me-, pe- harus dianalisis ambiguitasnya menggunakan tabel diambiguitas di bawah. Awalan me- bisa berubah mem- atau men- tergantung dari huruf awal akar kata (lihat tabel di bawah).
    3. Lakukan langkah 1. Bila bukan merupakan akar kata, maka ulangi langkah 4 ini secara berulang sampai menemukan akar katanya atau sampai kondisi 4a terjadi. Bila kondisi 4a tidak terjadi, tetapi belum juga memperoleh akar kata maka lanjutkan ke langkah 5.
  5. Bila dari langkah 4 di atas belum ketemu juga. Maka lakukan analisis apakah kata tersebut masuk dalam tabel diambiguitas kolom terakhir atau tidak.
  6. Bila semua proses di atas gagal, maka algoritma mengembalikan kata aslinya.

Tabel Disambiguitas

Rule Construct Return
1 berV… ber-V… | be-rV…
2 berCAP… ber-CAP… | where C!=’r’ and P!=’er’
3 berCAerV… ber-CAerV… | where C!=’r’
4 belajar… bel-ajar…
5 beC1erC2… be-C1erC2 … | where C1!={‘r’| ‘l’}
6 terV… ter-V… | te-rV…
7 terCerV… ter-CerV… | where C!=’r’
8 terCP… ter-CP… | where C!=’r’ and P!=’er’
9 teC1erC2… te-C1erC2… | where C1!=’r’
10 me{l|r|w|y}V… me-{l|r|w|y}V…
11 mem{b|f|v}… mem-{b|f|v}…
12 mempe{r|l}… mem-pe…
13 mem{rV|V}… me-m{rV|V}… | me-p{rV|V}…
14 men{c|d|j|z}… men-{c|d|j|z}…
15 menV… me-nV… | me-tV…
16 meng{g|h|q}… meng-{g|h|q}…
17 mengV… meng-V… | meng-kV…
18 menyV… meny-sV…
19 mempV… mem-pV… | where V!=’e’
20 pe{w|y}V… pe-{w|y}V…
21 perV… per-V… | pe-rV…
23 perCAP… per-CAP… | where C!=’r’ and P!=’er’
24 perCAerV… per-CAerV… | where C!=’r’
25 pem{b|f|v}… pem-{b|f|v}…
26 pem{rV|V}… pe-m{rV|V}… | pe-p{rV|V}…
27 pen{c|d|j|z}… pen-{c|d|j|z}…
28 penV… pe-nV… | pe-tV…
29 peng{g|h|q}… peng-{g|h|q}…
30 pengV… peng-V… | peng-kV…
31 penyV… peny-sV…
32 pelV… pe-lV… | Exception: for “pelajar”, return ajar
33 peCerV… per-erV… | where C!={r|w|y|l|m|n}
34 peCP… pe-CP… | where C!={r|w|y|l|m|n} and P!=’er’

V = vokal
C = konsonan
P = bagian kecil kata misal “er”

Gabungan Awalan dan Akhiran yang Tidak Diperbolehkan

Awalan Akhiran yang tidak diperbolehkan
ber- -i
di- -an
ke- -i -kan
me- -an
ter- -an
per- -an

Begitulah kira-kira algoritma Nazief  & Adriani, untuk lebih jelasnya lihat buku di atas.

From → Linguistik

Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: