Porter Stemmer 

Stemming khusus bahasa Inggris yang ditemukan oleh Martin Porter 1980. Mekanisme algoritma dalam mencari kata dasar suatu kata berimbuhan dengan membuang imbuhan– imbuhan (atau lebih tepatnya akhiran) pada kata–kata bahasa Inggris karena dalam bahasa Inggris tidak mengenal awalan. Karena bahasa Inggris datang dari kelas yang berbeda, beberapa modifikasi telah dilakukan untuk membuat Algoritma Porter sehingga dapat digunakan sesuai dengan bahasa Indonesia
Porter StemmerBahasa Indonesia
Implementasi Porter Stemmer for Bahasa Indonesiaberdasarkan English Porter Stemmer yang dikembangkan oleh W.B. Frakes pada tahun 1992. Karena bahasa Inggris datang dari kelas yang berbeda, beberapa modifikasi telah dilakukan untuk membuat Algoritma Porter dapat digunakan sesuai dengan bahasa Indonesia. Desain dari Porter Stemmer for Bahasa Indonesia dapat dilihat pada gambar.
Desain dari Porter Stemmer for Bahasa Indonesia
Algoritma / Langkah-langka Pada Porter Stemmer
1.      Menghapus partikel seperti: -kah, -lah, -tah
2.      Mengapus kata ganti (Possesive Pronoun), seperti –ku, -mu, -nya
3.      Mengapus awalan pertama. Jika tidak ditemukan, maka lanjut ke langkah 4a, dan jika ada maka lanjut ke langkah 4b.
4.      a. Menghapus awalan kedua, dan dilanjutkan pada langkah ke 5a 
b. Menghapus akhiran, jika tidak ditemukan maka kata tersebut diasumsikan sebagai kata dasar (root word). Jika ditemukan maka lanjut ke langkah 5b.
5.      a. Menghapus akhiran dan kata akhir diasumsikan sebagai kata dasar (root word.
b. Menghapus awalan kedua dan kata akhir diasumsikan sebagai kata dasar (root word).

Aturan Algoritma Porter untuk Indonesia

Terdapat 5 aturan pada Algoritma Porter untuk Bahasa Indonesia. Aturan-aturan tersebut dapat dilihat pada tabel berikut :

Tabel 1: Kelompok rule pertama : inflectional particles
 
Tabel 2: Kelompok rule kedua :inflectional possesive pronouns
 
Tabel 3: Kelompok rule ketiga: first order of derivational prefixes
 
Tabel 4: Kelompok rule keempat: second order of derivational prefixes
 
Tabel 5: Kelompok rule kelima: derivational suffixes
 
Pemaksimalan Porter Stemmer
Untuk menangani masalah pada Porter Stemmer untuk Indonesia perlu ditambahkan beberapa aturan dalam algoritma agar memberikan hasil yang lebih maksimal dan untuk mempermudah proses stem maka dibuatlah beberapa kamus kecil,antara lain sebagai berikut :
1.      Kamus kata dasar yang dilekati partikel, untuk menyimpan kata dasar yang memiliki suku kata terakhir (partikel infleksional) serta kata tersebut tidak mendapat imbuhan apapun. Seperti : masalah
2.      Kamus kata dasar yang dilekati partikel berprefiks untuk menyimpan kata dasar yang memiliki suku kata terakhir (partikel infleksional) dan mempunyai prefiks. Seperti : menikah
3.      Kamus kata dasar yang dilekati kata ganti milik, untuk menyimpan kata dasar yang memiliki suku kata terakhir (kata ganti infleksional) serta kata dasar tersebut tidak mendapatkan imbuhan apapun. Seperti : bangku. 
4.      Kamus kata dasar yang dilekati kata ganti milik berprefiks, untuk menyimpan kata dasar yang memiliki suku kata terakhir (kata ganti infleksional) dan mempunyai prefiks. Seperti : bersuku.
5.      Kamus kata dasar yang dilekati prefiks pertama, untuk menyimpan kata dasar yang memiliki suku kata pertama (prefiks derivasional pertama) serta kata dasar tersebut tidak mendapatkan imbuhan apapun.. Seperti : median.
6.      Kamus kata dasar yang dilekati prefiks pertama bersufiks, untuk menyimpan kata dasar yang memiliki suku kata pertama (prefiks derivasional pertama) dan mempunyai sufiks derivasional. Seperti : terapan.
7.      Kamus kata dasar yang dilekati prefiks kedua, untuk menyimpan kata dasar yang memiliki suku kata pertama (prefiks derivasional kedua) serta kata dasar tersebut tidak mendapatkan imbuhan apapun. Seperti : percaya
8.      Kamus kata dasar yang dilekati prefiks kedua bersufiks, untuk menyimpan kata dasar yang memiliki suku kata pertama (prefiks derivasional) dan mempunyai sufiks derivasional. Seperti : perasaan.
9.      Kamus kata dasar yang dilekati sufiks, untuk menyimpan kata dasar yang memiliki suku kata terakhir (sufiks derivasional). Seperti : pantai

Ada banyak persoalan yang dihadapi pada proses stemming Bahasa Indonesia, di antaranya yaitu:
  • Imbuhan pada Bahasa Indonesia cukup kompleks, terdiri dari:
o    Prefiks, imbuhan di depan kata: ber-tiga
o    Suffiks, imbuhan di akhir kata: makan-an
o    Konfiks, imbuhan di depan dan di akhir kata: per-ubah-an
o    Infiks, imbuhan di tengah kata: kemilau.
o    Imbuhan dari bahasa asing: final-isasi, sosial-isasi
o    Aturan perubahan prefiks, seperti (me-) menjadi (meng-, mem-, men-, meny-)
  • Word-Sense Ambiguity (Ambiguitas Rasa Kata), yaitu satu kata dapat memiliki dua makna (seperti misalnya homonim), dan berasal dari kata dasar yang berbeda. Contohnya:
o    Berikan è Ber-ikan
o    Berikan è Beri-kan
  • Overstemming
o    Kata berikan berdasarkan aturan pemenggalan, dapat dipenggal menjadi Ber-i-kan. Menjadi kata dasar i. Untuk mencegah overstemming, algoritma membutuhkan daftar kata dasar. Jika kata yang dipenggal ada di kata dasar, hentikan proses pemenggalan.
  • Understemming
o    Mengecek -> menjadi meng-ecek, seharusnya menge-cek. Hal ini dapat disebabkan karena pada kamus kata dasar, ecek juga merupakan kata dasar.
  • Ketergantungan terhadap kamus / daftar kata dasar
o    Untuk mencegah overstemming, algoritma menjadi tergantung pada kata dasar. Adanya kekurangan atau kelebihan pada kata dasar dapat menyebabkan overstemming atau understemming.
  • Pengguna Bahasa Indonesia tidak konsisten dalam menentukan stem (secara manual)
o    Kita, manusia, juga kadang berbeda pendapat dalam menentukan stem sebuah kata. Contohnya, apakah "adalah" merupakan kata berimbuhan dari kata dasar "ada"? Apakah "bagian" adalah kata berimbuhan dari kata dasar "bagi"?
  • Kata bentuk jamak = buku-buku (kata dasar nya buku)
  • Kata serapan dari bahasa asing = mengakomodir -> meng-akomodir
  • Kesalahan penulisan = penambahanan, harusnya penambahan, sehingga tidak dapat distem.
  • Akronim = pemilu distem menjadi pe-milu.
  • Proper Noun (Nama Benda), misal nama orang, nama kota: Abdullah distem menjadi abdul, seharusnya tidak distem.



Enhanced Confix Stripping Porter ( ECSP ) Stemmer
Stemming adalah suatu proses pengembalian suatu kata berimbuhan ke bentuk dasarnya. Metode pada stemming bahasa indonesia adalah ECS ( Enhanced Confix Stripping) dan porter stemmer. ECS adalah metode stemming yang sudah teruji keakuratannya tetapi prosesnya lambat dan porter stemmer merupakan metode stemming paling cepat dalam proses data namun hasilnya tidak seakurat ECS.
Kombinasi Enhanced Confix Stripping (ECS) dan porter stemmer telah diimplikasikan dalam sebuah Stemmer pengembangan yaitu Enhanced Confix Stripping Porter (ECSP). ECSP merupakan hasil perpaduan algoritma dan rule ECS dengan Porter.

1.      Algoritma ECSP (Enhanced Confix Stripping Porter)
Aturan  pemenggalan awalan ECSP
Aturan ke-
Imbuhan
Perubahan Imbuhan
1
BerV...
BerV...|be-rV...
2
BerCAP...
Ber-CAP...dimana C!=’r’ dan P!=’er’
3
BerCAerV...
Ber-CaerV...dimana C!=’r’
4
Belajar...
Bel-ajar...
5
BeC1erC2
Be-C1erC2...dimana C1!={‘r’|’l’}
6
TerV...
Ter-V...|te-rV...
7
TerCerV
Ter-CerV...dimana C!=’r’
8
TerCP...
Ter-CP...dimana C!=’r’dan P!=’er’
9
TeClerC2...
Te-ClerC2...dimana C1!=’r’
10
Me{l|r|w|y}V...
Me-{1|r|w|y}V...
11
Mem{b|f|v}...
Mem-{b|f|v}...
12
Mempe
Mem-pe...
13
Mem{rV|V}...
Me-m{rV|V}...| Me-p{rV|V}...
14
Men{c|d|j|z|s}...
Men-{c|d|j|z|s}...
15
MenV...
Me-nV...| me-tV...
16
Meng{g|h|q|k}...
Meng-{{g|h|q|k}...
17
MengV...
Meng-V...| meng-kV...|
(mengV-...jika V=”e”)
18
MenyV...
Meny-sV...
19
MempA...
Mem-pA...dimana A!=’e’
20
Pe{w|y}V...
Pe-{w|y}V...
21
PerV...
Per-V...| pe-rV...
22
PerCAP...
Per-CAP... dimana C!=’r’ dan P!=’er’
23
PerCAerV...
Per-CAerV... dimana C!=’r’
24
Pem{b|f|v}...
Pem-{b|f|v}...
25
Pem{rV|V}...
Pem{rV|V}... | Pe-p{rV|V}...
26
Pen{c|d|j|z}...
Pen-{c|d|j|z}...
27
PenV...
Pe-nV... | pe-tV...
28
PengC
Peng-C
29
PengV...
Peng-V... | peng-kV... | (pengV-... jika V=”e”)
30
PenyV...
Peny-sV...
31
PelV...
PelV... kecuali pada kata ‘pelajar’
32
PeCerV...
Per-erV... dimana C!={r|w|y|l|m|n}
33
PeCP...
Pe-CP... dimana C!={r|w|y|l|m|n} dan P!=’er’
34
terClerC2...
Ter-ClerC2... dimana C1!=,,r”
35
peClerC2...
Pe-ClerC2... dimana C1!={r|w|y|l|m|n}

Keterangan simbol huruf:
C: huruf onsonan         
V: huruf vokal
A: huruf vokal atau konsonan
P : partikel atau fragmen dari suatu kata, misalnya “er”
Algoritma yang dikembangkan penulis untuk ECSP Stemmer adalah sebagai berikut
1.    Melakukan pengecekan jumlah karakter/huruf dalam kata inputan,jika kata yang akan di stem mempunyai jumlah karakter/huruf <6,maka kata tersebut tergolong tidak berimbuhan dan secara langsung akan di return oleh Stemmer.Algoritma ini disebut cek non affiks.
2.    Pengecekan ilegal affiks (kata imbuhan yang tidak diperbolehkan). Contoh ilegal affikspada aturan Bahasa Indonesia yaitu :ke-..-i|-kan,se-..-i|kan,peng-..-..-i|kan,tar-..-an
3.    Menghapus kata ganti kepunyaan yang berada di depan seperti: ku-,kau-,dan serapan awalan asing seperti : adi-,antar-,dwi-,eka-,infra-,maha-,manca-,multi-,nara-,pasca-,pari-,pramu-,pra-,sapta-,semi-,swa-,tri-,ultra-
4.    Menghapus inflectional particle P (-lah,-kah,-tah,-pun) dan kata ganti kepunyaan atau possessive prounon PP (-ku,-mu,-nya)
5.    Menghapus awalan
Ø  Menghapus awalan yang tidak bermofologi seperti (di-,ke-,se-).
Ø  Menghapus awalan bermofologi (be-,te-,pe-,me-). Lakukan recording sesuai dengan tabel pemenggalan imbuhan ECSP dan yang sudah dikembangkan dari aturan pemenggalan awalan ECS dan Porter Stemmer ,yaitu :
Modifikasi dan tambahan aturan pemenggalan awalan ECS yang dilakukan ECSP
Aturan ke-
Imbuhan
Perubahan imbuhan
11
Mem{b|f|v|p}
Mem-{b|f|v|p}
13
Mem{rV|V}..
Me-p{rV|V}...
14
Men{c|d|j|z|s|t}...
Men-{c|d|j|z|s|t}...
30
Peng{a|i|u|o}...
Peng-{a|i|u|o}...
37
CIPC2V...
CIP-C2V...dimana C1=C2 dan P=’e’
38
Me-mV/C...
Mem-V/C
39
PemV...
Pem-p-V...
40
Pe{c|t|s|z}
Pe-{c|t|s|z}...

Keterangan simbol huruf:
C : huruf konsonan,
P : partikel atau fragmen dari suatu kata,misalnya”er”,
V : huruf vokal .
6. Menghapus akhiran (-i,-kan,-an).
7. Menghapus akhiran serapan asing seperti (-wati,-wan,-isme,-is,-iah,-isasi,-er,-wi,-in,- logi).
8. Menghapus infik atau sisipan dengan aturan pemenggalan yaitu :



Aturan pemenggalan sisipan ECSP
Aturan ke-
Imbuhan
Perubahan imbuhan
1
{g|j|l} {el} V
{g|j|l}-{el}-V
2
{c|j|k|g} {em} V
{c|j|k|g}-{em}-V
3
{s|g|k} {er} V
{s|g|k}-{er}-V
4
{k|s|t} {in} V
{k|s|t}-{in}-V

Aturan infiks diatas terkadang dapat menimbulkan terjadinya overstemming pada kata-kata yang dianggap pola infiks. Kata-kata bentuk sisipan yng kuantitasnya sedikit,akan langsung dimasukan dalam rule hapus sisipan.
2. Tahapan ECSP (Enhanced Confix Stripping Porter)
Gambar diatas menjelaskan tahapan sistem yang digunakan untuk proses ECSP (Enhanced Confix Stripping Porter).
3.  Contoh Implementasi ECSP (Enhanced Confix Stripping Porter)
Berikut ini adalah term-term pada ECS dan Porter stemmer yang telah diperbaiki ECSP yaitu:
     1. Hasil perbaikan dengan menambahkan serapan awalan asing.
Term
ECSP
mahasiswa
siswa
paripurna
purna
antibiotik
biotik
caturtunggal
tunggal
swadaya
daya
poligami
poligam
prasangka
sangka
adipati
pati
demoralisasi
demoral




2.      Hasil perbaikan dengan menambahkan serapan akhiran asing
Term
ECSP
Honorer
honor
Manusiawi
manusia
modernisme
modern
Alamiah
alam
Relawan
rela
Mukminin
mukmin
Finalisasi
final
Standarisasi
standar
Teknologi
tekno

3.      Perbaikan dengan menambahkan dan revisi aturan ECS
Term
ECSP
ECS
pemungutan
pungut
mungut
Dedaunan
daun
dedaunan
pemadaman
padam
madam
mengurangi
kurang
urang
Menandai
tanda
tanda
Memangkas
mangkas
mangkas
mengunjungi
kunjung
unjung
Mengembangkan
kembang
Kembang

4.      Hasil perbaikan term bentuk dasar kata gabungan
Term
ECSP
ditindaklanjuti
tindaklanjut
Diujicoba
ujicoba
kewarganegaraan
warganegara
keanekaragaman
anekaragam
ditandatanganinya
tandatangan
berkerjasama
kerjasama
Berterimakasih
terimakasih
dibagihasilkan
bagihasil
dibebantugaskan
bebantugas

5.      Hasil perbaikan dengan menambahkan reduksi sisipan (infiks)
Term
ECSP
Temurun
turun
Geletar
getar
Cemerlang
cerlang
reruntuh
runtuh
leluhur
luhur
kinerja
kerja
tinambah
tambah
gelembung
gembung
telunjuk
tunjuk

6.      Hasil perbaikan dengan menambahkan reduksi pronoun depan
Term
ECSP
kubelikannya
beli
kurasakannya
rasa
kupukuli
pukul
kaudengarkannya
dengar
kuperdengarkannya
dengar




4. Kelebihan dan Kekurangan ECSP (Enhanced Confix Stripping Porter)
Kelebihan:
1.      Dapat memperbaiki kesalahan-kesalahan stemmer dalam total term yang ada.
2.      Dalam hal kecepatan, ECSP dapat mengalahkan ECS dan porter dengan hasil selisih 6,7572 detik.
3.      ECSP dapat mereduksi 67% dari total term dapat mengalahkan keakuratan Porter Stemmer yang hanya dapat mereduksi 61% dari total term.
Kekurangan:
1.      ECSP tidak menggunakan algoritma pengecekan kamus kata dasar, sehingga dapat dimungkinkan selisih keakurasian kata kurang memuaskan.


Porter Stemmer Indonesia vs ECSP
v  Porter Stemmer Indonesia
ü  Word-Sense Ambiguity (Ambiguitas Rasa Kata), yaitu satu kata dapat memiliki dua makna (seperti misalnya homonim), dan berasal dari kata dasar yang berbeda.
ü  Overstemming è Kata berikan berdasarkan aturan pemenggalan, dapat dipenggal menjadi Ber-i-kan. Menjadi kata dasar i. Untuk mencegah overstemming, algoritma membutuhkan daftar kata dasar. Jika kata yang dipenggal ada di kata dasar, hentikan proses pemenggalan.
ü  Understemming
·         Mengecek -> menjadi meng-ecek, seharusnya menge-cek. Hal ini dapat disebabkan karena pada kamus kata dasar, ecek juga merupakan kata dasar.
ü  Ketergantungan terhadap kamus / daftar kata dasar
·         Untuk mencegah overstemming, algoritma menjadi tergantung pada kata dasar. Adanya kekurangan atau kelebihan pada kata dasar dapat menyebabkan overstemming atau understemming.
ü  Pengguna Bahasa Indonesia tidak konsisten dalam menentukan stem (secara manual)
·         Kita, manusia, juga kadang berbeda pendapat dalam menentukan stem sebuah kata. Contohnya, apakah "adalah" merupakan kata berimbuhan dari kata dasar "ada"? Apakah "bagian" adalah kata berimbuhan dari kata dasar "bagi"?
·         ECSP
ü  Dapat memperbaiki kesalahan-kesalahan stemmer dalam total term yang ada.
ü  Dalam hal kecepatan, ECSP dapat mengalahkan ECS dan porter dengan hasil selisih 6,7572 detik.
ü  ECSP dapat mereduksi 67% dari total term dapat mengalahkan keakuratan Porter Stemmer yang hanya dapat mereduksi 61% dari total term.
ü  ECSP tidak menggunakan algoritma pengecekan kamus kata dasar, sehingga dapat dimungkinkan selisih keakurasian kata kurang memuaskan.


Semoga Bermanfaat ^_^