Rules

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

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

na96.partikel.lah

precedence 10unverified

Partikel -lah, imbuhan infleksional. Dibuang paling awal.

pattern
^(.{2,})lah$
readings
$1
example
duduklahduduk
source
nazief1996langkah 2 — partikel

na96.partikel.kah

precedence 10unverified

Partikel -kah, imbuhan infleksional.

pattern
^(.{2,})kah$
readings
$1
example
bukukahbuku
source
nazief1996langkah 2 — partikel

na96.partikel.tah

precedence 10unverified

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

pattern
^(.{2,})tah$
readings
$1
example
apatahapa
source
nazief1996langkah 2 — partikel

Possessives

na96.milik.ku

precedence 20unverified

Kata ganti milik -ku. Dibuang setelah partikel.

pattern
^(.{2,})ku$
readings
$1
example
bukukubuku
source
nazief1996langkah 2 — kata ganti milik

na96.milik.mu

precedence 20unverified

Kata ganti milik -mu.

pattern
^(.{2,})mu$
readings
$1
example
bukumubuku
source
nazief1996langkah 2 — kata ganti milik

na96.milik.nya

precedence 20unverified

Kata ganti milik -nya.

pattern
^(.{2,})nya$
readings
$1
example
bukunyabuku
source
nazief1996langkah 2 — kata ganti milik

Derivational suffixes

na96.akhiran.kan

precedence 30unverified

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

pattern
^(.{2,})kan$
readings
$1
example
hitungkanhitung
source
nazief1996langkah 3 — akhiran derivasional

na96.akhiran.an

precedence 40unverified

Akhiran derivasional -an.

pattern
^(.{2,})an$
readings
$1
example
makananmakan
source
nazief1996langkah 3 — akhiran derivasional

na96.akhiran.i

precedence 50unverified

Akhiran derivasional -i.

pattern
^(.{2,})i$
readings
$1
example
tanamitanam
source
nazief1996langkah 3 — akhiran derivasional

Derivational prefixes

na96.awalan.di

precedence 100unverified

Awalan di-. Pembuangan langsung, tanpa peluruhan.

pattern
^di(.{2,})$
readings
$1
example
dibacabaca
source
nazief1996langkah 4 — awalan sederhana

na96.awalan.ke

precedence 101unverified

Awalan ke-. Pembuangan langsung.

pattern
^ke(.{2,})$
readings
$1
example
ketuatua
source
nazief1996langkah 4 — awalan sederhana

na96.awalan.se

precedence 102unverified

Awalan se-. Pembuangan langsung.

pattern
^se(.{2,})$
readings
$1
example
sebuahbuah
source
nazief1996langkah 4 — awalan sederhana

na96.awalan.be.berv

precedence 110unverified

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
beruanguang(bacaan lain: ruang; kata dasar beruang juga ada di kamus)beruangruang
source
asian2005aturan 1

na96.awalan.be.bercap

precedence 111unverified

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

pattern
^ber(?![a-z][a-z]er)([^aiueor].*)$
readings
$1
example
bertemutemu
source
asian2005aturan 2

na96.awalan.be.bercaerv

precedence 112unverified

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

pattern
^ber([^aiueor][a-z]er[aiueo].*)$
readings
$1
example
berdaerahdaerah
source
asian2005aturan 3

na96.awalan.be.belajar

precedence 113unverified

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

pattern
^bel(ajar.*)$
readings
$1
example
belajarajar
source
asian2005aturan 4

na96.awalan.be.becerc

precedence 114unverified

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

pattern
^be([^aiueorl]er[^aiueo].*)$
readings
$1
example
bekerjakerja
source
asian2005aturan 5

na96.awalan.te.terv

precedence 120unverified

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

pattern
^ter([aiueo].*)$
readings
$1 | r$1
example
terangkatangkatterasarasa
source
asian2005aturan 6

na96.awalan.te.tercerv

precedence 121unverified

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

pattern
^ter([^aiueor]er[aiueo].*)$
readings
$1
example
terperiksaperiksa
source
asian2005aturan 7

na96.awalan.te.tercp

precedence 122unverified

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

pattern
^ter(?![a-z]er)([^aiueor].*)$
readings
$1
example
tertutuptutup
source
asian2005aturan 8

na96.awalan.te.tecerc

precedence 123unverified

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

pattern
^te([^aiueor]er[^aiueo].*)$
readings
$1
example
teperdayaperdaya(bentuk yang jarang; dicatat apa adanya)
source
asian2005aturan 9

na96.awalan.me.melrwy

precedence 130unverified

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

pattern
^me([lrwy][aiueo].*)$
readings
$1
example
melihatlihat
source
asian2005aturan 10

na96.awalan.me.membfv

precedence 131unverified

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

pattern
^mem([bfv].*)$
readings
$1
example
membacabaca
source
asian2005aturan 11

na96.awalan.me.mempe

precedence 132unverified

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

pattern
^mem(pe.*)$
readings
$1
example
mempelajaripelajari
source
asian2005aturan 12

na96.awalan.me.recode.mem

precedence 133peluruhanunverified

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
memukulpukul(p luluh menjadi m)memukulmukul
source
asian2005aturan 13

na96.awalan.me.mencdjz

precedence 134unverified

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

pattern
^men([cdjz].*)$
readings
$1
example
mencaricari
source
asian2005aturan 14

na96.awalan.me.recode.men

precedence 135peluruhanunverified

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

pattern
^men([aiueo].*)$
readings
n$1 | t$1
example
menulistulis(t luluh menjadi n)menulisnulis
source
asian2005aturan 15

na96.awalan.me.mengghq

precedence 136unverified

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

pattern
^meng([ghqk].*)$
readings
$1
example
menghitunghitung
source
asian2005aturan 16

na96.awalan.me.recode.meng

precedence 137peluruhanunverified

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
mengupaskupas(k luluh)mengambilambil
source
asian2005aturan 17

na96.awalan.me.recode.meny

precedence 138peluruhanunverified

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

pattern
^meny([aiueo].*)$
readings
s$1
example
menyapusapu(s luluh menjadi ny)
source
asian2005aturan 18

na96.awalan.me.mempv

precedence 139unverified

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

pattern
^mem(p[aiou].*)$
readings
$1
example
mempunyaipunyai
source
asian2005aturan 19

na96.awalan.pe.pewy

precedence 150unverified

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

pattern
^pe([wy][aiueo].*)$
readings
$1
example
pewariswaris
source
asian2005aturan 20

na96.awalan.pe.perv

precedence 151unverified

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

pattern
^per([aiueo].*)$
readings
$1 | r$1
example
perusakrusakperasaasa
source
asian2005aturan 21

na96.awalan.pe.percap

precedence 152unverified

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
perdayadaya(aturan ini semula tidak ada; ketiadaannya ditemukan oleh perbandingan dengan Sastrawi)pertemuantemuan
source
asian2005aturan 22

na96.awalan.pe.pelajar

precedence 153unverified

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

pattern
^pel(ajar.*)$
readings
$1
example
pelajarajar
source
asian2005aturan 31, pengecualian

na96.awalan.pe.pelv

precedence 154unverified

pelV… → pe-lV…, kecuali pelajar.

pattern
^pe(l[aiueo].*)$
readings
$1
example
pelarilari
source
asian2005aturan 31

na96.awalan.pe.pembfv

precedence 155unverified

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

pattern
^pem([bfv].*)$
readings
$1
example
pembacabaca
source
asian2005aturan 24

na96.awalan.pe.recode.pem

precedence 156peluruhanunverified

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

pattern
^pem([aiueo].*)$
readings
m$1 | p$1
example
pemukulpukul
source
asian2005aturan 25

na96.awalan.pe.pencdjz

precedence 157unverified

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

pattern
^pen([cdjz].*)$
readings
$1
example
pencaricari
source
asian2005aturan 26

na96.awalan.pe.recode.pen

precedence 158peluruhanunverified

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

pattern
^pen([aiueo].*)$
readings
n$1 | t$1
example
penulistulis
source
asian2005aturan 27

na96.awalan.pe.pengghq

precedence 159unverified

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

pattern
^peng([ghqk].*)$
readings
$1
example
penggaligali
source
asian2005aturan 28

na96.awalan.pe.recode.peng

precedence 160peluruhanunverified

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

pattern
^peng([aiueo].*)$
readings
$1 | k$1
example
pengupaskupaspengambilambil
source
asian2005aturan 29

na96.awalan.pe.recode.peny

precedence 161peluruhanunverified

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

pattern
^peny([aiueo].*)$
readings
s$1
example
penyapusapu
source
asian2005aturan 30

na96.awalan.pe.pecp

precedence 162unverified

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
pesuruhsuruh
source
asian2005aturan 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. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)
di-Awalan di- tidak berpasangan dengan akhiran -an. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)
ke-Awalan ke- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)Awalan ke- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)
me-Awalan me- tidak berpasangan dengan akhiran -an. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)
se-Awalan se- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)Awalan se- tidak berpasangan dengan akhiran -i atau -kan. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)
te-Awalan te- tidak berpasangan dengan akhiran -an. (nazief1996tabel kombinasi awalan-akhiran yang tidak diizinkan)

Sources

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