Rules

The base confix-stripping algorithm: particles, possessives, derivational suffixes, then derivational prefixes with recoding.

Checked against the source paper

0 / 44

44 of 44 rules have not been checked against the source paper. Their citation says where to look, not that anybody has looked. Do not cite them as sourced. What is checked and in what order (GAPS.md) ↗

Particles

-lah

na96.partikel.lahprecedence 10⚠ unverified

Partikel -lah, imbuhan infleksional. Dibuang paling awal.

pattern
^(.{2,})lah$
readings
$1
example
duduklah → duduk
source
nazief1996 — langkah 2 — partikel

-kah

na96.partikel.kahprecedence 10⚠ unverified

Partikel -kah, imbuhan infleksional.

pattern
^(.{2,})kah$
readings
$1
example
bukukah → buku
source
nazief1996 — langkah 2 — partikel

-tah

na96.partikel.tahprecedence 10⚠ unverified

Partikel -tah, imbuhan infleksional. Jarang dipakai dalam bahasa modern.

pattern
^(.{2,})tah$
readings
$1
example
apatah → apa
source
nazief1996 — langkah 2 — partikel

Possessives

-ku

na96.milik.kuprecedence 20⚠ unverified

Kata ganti milik -ku. Dibuang setelah partikel.

pattern
^(.{2,})ku$
readings
$1
example
bukuku → buku
source
nazief1996 — langkah 2 — kata ganti milik

-mu

na96.milik.muprecedence 20⚠ unverified

Kata ganti milik -mu.

pattern
^(.{2,})mu$
readings
$1
example
bukumu → buku
source
nazief1996 — langkah 2 — kata ganti milik

-nya

na96.milik.nyaprecedence 20⚠ unverified

Kata ganti milik -nya.

pattern
^(.{2,})nya$
readings
$1
example
bukunya → buku
source
nazief1996 — langkah 2 — kata ganti milik

Derivational suffixes

-kan

na96.akhiran.kanprecedence 30⚠ unverified

Akhiran derivasional -kan. Diperiksa sebelum -an, karena membuang -an lebih dahulu akan menyisakan huruf k.

pattern
^(.{2,})kan$
readings
$1
example
hitungkan → hitung
source
nazief1996 — langkah 3 — akhiran derivasional

-an

na96.akhiran.anprecedence 40⚠ unverified

Akhiran derivasional -an.

pattern
^(.{2,})an$
readings
$1
example
makanan → makan
source
nazief1996 — langkah 3 — akhiran derivasional

-i

na96.akhiran.iprecedence 50⚠ unverified

Akhiran derivasional -i.

pattern
^(.{2,})i$
readings
$1
example
tanami → tanam
source
nazief1996 — langkah 3 — akhiran derivasional

Derivational prefixes

di-

na96.awalan.diprecedence 100⚠ unverified

Awalan di-. Pembuangan langsung, tanpa peluruhan.

pattern
^di(.{2,})$
readings
$1
example
dibaca → baca
source
nazief1996 — langkah 4 — awalan sederhana

ke-

na96.awalan.keprecedence 101⚠ unverified

Awalan ke-. Pembuangan langsung.

pattern
^ke(.{2,})$
readings
$1
example
ketua → tua
source
nazief1996 — langkah 4 — awalan sederhana

se-

na96.awalan.seprecedence 102⚠ unverified

Awalan se-. Pembuangan langsung.

pattern
^se(.{2,})$
readings
$1
example
sebuah → buah
source
nazief1996 — langkah 4 — awalan sederhana

berV…

na96.awalan.be.bervprecedence 110⚠ unverified

berV… → ber-V… atau be-rV…. Dua bacaan: huruf r bisa milik awalan, bisa milik kata dasar. Inilah sumber keambiguan beruang.

pattern
^ber([aiueo].*)$
readings
$1 | r$1
example
beruang → uang(bacaan lain: ruang; kata dasar beruang juga ada di kamus)beruang → ruang
source
asian2005 — aturan 1

berCAP…

na96.awalan.be.bercapprecedence 111⚠ unverified

berCAP… → ber-CAP…, dengan C bukan r dan P bukan er.

pattern
^ber(?![a-z][a-z]er)([^aiueor].*)$
readings
$1
example
bertemu → temu
source
asian2005 — aturan 2

berCAerV…

na96.awalan.be.bercaervprecedence 112⚠ unverified

berCAerV… → ber-CAerV…, dengan C bukan r.

pattern
^ber([^aiueor][a-z]er[aiueo].*)$
readings
$1
example
berdaerah → daerah
source
asian2005 — aturan 3

belajar

na96.awalan.be.belajarprecedence 113⚠ unverified

belajar → bel-ajar. Aturan khusus untuk satu kata; bel- bukan awalan produktif.

pattern
^bel(ajar.*)$
readings
$1
example
belajar → ajar
source
asian2005 — aturan 4

beC1erC2…

na96.awalan.be.becercprecedence 114⚠ unverified

beC1erC2… → be-C1erC2…, dengan C1 bukan r dan bukan l.

pattern
^be([^aiueorl]er[^aiueo].*)$
readings
$1
example
bekerja → kerja
source
asian2005 — aturan 5

terV…

na96.awalan.te.tervprecedence 120⚠ unverified

terV… → ter-V… atau te-rV…. Dua bacaan, seperti ber-.

pattern
^ter([aiueo].*)$
readings
$1 | r$1
example
terangkat → angkatterasa → rasa
source
asian2005 — aturan 6

terCerV…

na96.awalan.te.tercervprecedence 121⚠ unverified

terCerV… → ter-CerV…, dengan C bukan r.

pattern
^ter([^aiueor]er[aiueo].*)$
readings
$1
example
terperiksa → periksa
source
asian2005 — aturan 7

terCP…

na96.awalan.te.tercpprecedence 122⚠ unverified

terCP… → ter-CP…, dengan C bukan r dan P bukan er.

pattern
^ter(?![a-z]er)([^aiueor].*)$
readings
$1
example
tertutup → tutup
source
asian2005 — aturan 8

teC1erC2…

na96.awalan.te.tecercprecedence 123⚠ unverified

teC1erC2… → te-C1erC2…, dengan C1 bukan r.

pattern
^te([^aiueor]er[^aiueo].*)$
readings
$1
example
teperdaya → perdaya(bentuk yang jarang; dicatat apa adanya)
source
asian2005 — aturan 9

me{l|r|w|y}V…

na96.awalan.me.melrwyprecedence 130⚠ unverified

me{l|r|w|y}V… → me-{l|r|w|y}V…. Tanpa peluruhan.

pattern
^me([lrwy][aiueo].*)$
readings
$1
example
melihat → lihat
source
asian2005 — aturan 10

mem{b|f|v}…

na96.awalan.me.membfvprecedence 131⚠ unverified

mem{b|f|v}… → mem-{b|f|v}…. Huruf awal kata dasar tetap utuh.

pattern
^mem([bfv].*)$
readings
$1
example
membaca → baca
source
asian2005 — aturan 11

mempe…

na96.awalan.me.mempeprecedence 132⚠ unverified

mempe… → mem-pe…. Kata dasar masih berawalan pe-, jadi iterasi berikutnya yang menanganinya.

pattern
^mem(pe.*)$
readings
$1
example
mempelajari → pelajari
source
asian2005 — aturan 12

memV…

na96.awalan.me.recode.memprecedence 133peluruhan⚠ unverified

memV… → me-mV… atau me-pV…. Peluruhan: huruf p luluh menjadi m. Dua bacaan, dan kamus yang memutuskan.

pattern
^mem([aiueo].*)$
readings
m$1 | p$1
example
memukul → pukul(p luluh menjadi m)memukul → mukul
source
asian2005 — aturan 13

men{c|d|j|z}…

na96.awalan.me.mencdjzprecedence 134⚠ unverified

men{c|d|j|z}… → men-{c|d|j|z}….

pattern
^men([cdjz].*)$
readings
$1
example
mencari → cari
source
asian2005 — aturan 14

menV…

na96.awalan.me.recode.menprecedence 135peluruhan⚠ unverified

menV… → me-nV… atau me-tV…. Peluruhan: huruf t luluh menjadi n.

pattern
^men([aiueo].*)$
readings
n$1 | t$1
example
menulis → tulis(t luluh menjadi n)menulis → nulis
source
asian2005 — aturan 15

meng{g|h|q|k}…

na96.awalan.me.mengghqprecedence 136⚠ unverified

meng{g|h|q|k}… → meng-{g|h|q|k}…. Huruf awal tetap utuh.

pattern
^meng([ghqk].*)$
readings
$1
example
menghitung → hitung
source
asian2005 — aturan 16

mengV…

na96.awalan.me.recode.mengprecedence 137peluruhan⚠ unverified

mengV… → meng-V… atau meng-kV…. Peluruhan: huruf k luluh. Mengupas sendiri punya dua bacaan — upas dan kupas.

pattern
^meng([aiueo].*)$
readings
$1 | k$1
example
mengupas → kupas(k luluh)mengambil → ambil
source
asian2005 — aturan 17

menyV…

na96.awalan.me.recode.menyprecedence 138peluruhan⚠ unverified

menyV… → meny-sV…. Peluruhan: huruf s luluh menjadi ny. Hanya satu bacaan.

pattern
^meny([aiueo].*)$
readings
s$1
example
menyapu → sapu(s luluh menjadi ny)
source
asian2005 — aturan 18

mempV…

na96.awalan.me.mempvprecedence 139⚠ unverified

mempV… → mem-pV…, dengan V bukan e. Huruf p tidak luluh di sini.

pattern
^mem(p[aiou].*)$
readings
$1
example
mempunyai → punyai
source
asian2005 — aturan 19

pe{w|y}V…

na96.awalan.pe.pewyprecedence 150⚠ unverified

pe{w|y}V… → pe-{w|y}V….

pattern
^pe([wy][aiueo].*)$
readings
$1
example
pewaris → waris
source
asian2005 — aturan 20

perV…

na96.awalan.pe.pervprecedence 151⚠ unverified

perV… → per-V… atau pe-rV…. Dua bacaan.

pattern
^per([aiueo].*)$
readings
$1 | r$1
example
perusak → rusakperasa → asa
source
asian2005 — aturan 21

perCAP…

na96.awalan.pe.percapprecedence 152⚠ unverified

perCAP… → per-CAP…, dengan C bukan r dan P bukan er. Sejajar dengan aturan 2 untuk ber-.

pattern
^per(?![a-z][a-z]er)([^aiueor].*)$
readings
$1
example
perdaya → daya(aturan ini semula tidak ada; ketiadaannya ditemukan oleh perbandingan dengan Sastrawi)pertemuan → temuan
source
asian2005 — aturan 22

pelajar

na96.awalan.pe.pelajarprecedence 153⚠ unverified

pelajar → pel-ajar. Pengecualian, sepasang dengan belajar.

pattern
^pel(ajar.*)$
readings
$1
example
pelajar → ajar
source
asian2005 — aturan 31, pengecualian

pelV…

na96.awalan.pe.pelvprecedence 154⚠ unverified

pelV… → pe-lV…, kecuali pelajar.

pattern
^pe(l[aiueo].*)$
readings
$1
example
pelari → lari
source
asian2005 — aturan 31

pem{b|f|v}…

na96.awalan.pe.pembfvprecedence 155⚠ unverified

pem{b|f|v}… → pem-{b|f|v}….

pattern
^pem([bfv].*)$
readings
$1
example
pembaca → baca
source
asian2005 — aturan 24

pemV…

na96.awalan.pe.recode.pemprecedence 156peluruhan⚠ unverified

pemV… → pe-mV… atau pe-pV…. Peluruhan p menjadi m, sejajar dengan mem-.

pattern
^pem([aiueo].*)$
readings
m$1 | p$1
example
pemukul → pukul
source
asian2005 — aturan 25

pen{c|d|j|z}…

na96.awalan.pe.pencdjzprecedence 157⚠ unverified

pen{c|d|j|z}… → pen-{c|d|j|z}….

pattern
^pen([cdjz].*)$
readings
$1
example
pencari → cari
source
asian2005 — aturan 26

penV…

na96.awalan.pe.recode.penprecedence 158peluruhan⚠ unverified

penV… → pe-nV… atau pe-tV…. Peluruhan t menjadi n.

pattern
^pen([aiueo].*)$
readings
n$1 | t$1
example
penulis → tulis
source
asian2005 — aturan 27

peng{g|h|q|k}…

na96.awalan.pe.pengghqprecedence 159⚠ unverified

peng{g|h|q|k}… → peng-{g|h|q|k}….

pattern
^peng([ghqk].*)$
readings
$1
example
penggali → gali
source
asian2005 — aturan 28

pengV…

na96.awalan.pe.recode.pengprecedence 160peluruhan⚠ unverified

pengV… → peng-V… atau peng-kV…. Peluruhan k.

pattern
^peng([aiueo].*)$
readings
$1 | k$1
example
pengupas → kupaspengambil → ambil
source
asian2005 — aturan 29

penyV…

na96.awalan.pe.recode.penyprecedence 161peluruhan⚠ unverified

penyV… → peny-sV…. Peluruhan s menjadi ny.

pattern
^peny([aiueo].*)$
readings
s$1
example
penyapu → sapu
source
asian2005 — aturan 30

peCP…

na96.awalan.pe.pecpprecedence 162⚠ unverified

peCP… → pe-CP…, dengan C bukan r, w, y, l, m, n dan P bukan er.

pattern
^pe(?![a-z]er)([^aiueorwylmn].*)$
readings
$1
example
pesuruh → suruh
source
asian2005 — aturan 33

Forbidden prefix–suffix combinations

Consulted before removing a prefix — PRD §3 step 4. A match means the search stops rather than continues.
prefix ↓ / suffix →-an-i-kan
be-Awalan be- tidak berpasangan dengan akhiran -i. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠
di-Awalan di- tidak berpasangan dengan akhiran -an. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠
ke-Awalan ke- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠Awalan ke- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠
me-Awalan me- tidak berpasangan dengan akhiran -an. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠
se-Awalan se- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠Awalan se- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠
te-Awalan te- tidak berpasangan dengan akhiran -an. (nazief1996 — tabel kombinasi awalan-akhiran yang tidak diizinkan)⚠

Sources

  • nazief1996 — Bobby Nazief, Mirna Adriani (1996). Confix-Stripping: Approach to Stemming Algorithm for Bahasa Indonesia. Fakultas Ilmu Komputer, Universitas Indonesia.
  • asian2005 — Jelita Asian, Hugh E. Williams, S. M. M. Tahaghoghi (2005). Stemming Indonesian. Proceedings of the 28th Australasian Computer Science Conference.