Stemming merupakan bagian yang tidak terpisahkan dalam Information Retrieval (IR). Tidak banyak algoritma yang dikhususkan untuk stemmingbahasa Indonesia dengan berbagai keterbatasan didalamnya. Algoritma Porter salah satunya, Algoritma ini membutuhkan waktu yang lebih singkat dibandingkan dengan stemming menggunakan Algoritma Nazief & Adriani, namun proses stemming menggunakan Algoritma Porter memiliki prosentase keakuratan (presisi) lebih kecil dibandingkan dengan stemming menggunakan Algoritma Nazief & Adriani. Algoritma Nazief & Adriani sebagai algoritma stemming untuk teks berbahasa Indonesia yang memiliki kemampuan prosentase keakuratan (presisi) lebih baik dari algoritma lainnya. Algoritma ini sangat dibutuhkan dan menentukan dalam proses IR dalam dokumen Indonesia.
Stemming adalah salah satu cara yang digunakan untuk meningkatkan performa IR dengan cara mentransformasi kata-kata dalam sebuah dokumen teks ke bentuk kata dasarnya. Algoritma stemming untuk bahasa yang satu berbeda dengan algoritma stemming untuk bahasa lainnya. Sebagai contoh bahasa Inggris memiliki morfologi yang berbeda dengan bahasa Indonesia sehingga algoritma stemming untuk kedua bahasa tersebut juga berbeda. Proses stemming pada teks berbahasa Indonesia lebih rumit/kompleks karena terdapat variasi imbuhan yang harus dibuang untuk mendapatkan root word(kata dasar) dari sebuah kata.. Pada umumnya kata dasar pada bahasa Indonesia terdiri dari kombinasi:
Prefiks 1 + Prefiks 2 + Kata dasar + Sufiks 3 + Sufiks 2 + Sufiks 1
Sehingga dapat digambarkan menggunakan flowchar sebagai berikut:
Algoritma Nazief & Adriani yang dibuat oleh Bobby Nazief dan Mirna Adriani ini memiliki tahap-tahap sebagai berikut:
Pertama cari kata yang akan diistem dalam kamus kata dasar. Jika ditemukan maka diasumsikan kata adalah root word. Maka algoritma berhenti.
Inflection Suffixes (“-lah”, “-kah”, “-ku”, “-mu”, atau “-nya”) dibuang. Jika berupa particles (“-lah”, “-kah”, “-tah” atau “-pun”) maka langkah ini diulangi lagi untuk menghapus Possesive Pronouns (“-ku”, “-mu”, atau “-nya”), jika ada.
Hapus Derivation Suffixes (“-i”, “-an” atau “-kan”). Jika kata ditemukan di kamus, maka algoritma berhenti. Jika tidak maka ke langkah 3a
Jika “-an” telah dihapus dan huruf terakhir dari kata tersebut adalah “-k”, maka “-k” juga ikut dihapus. Jika kata tersebut ditemukan dalam kamus maka algoritma berhenti. Jika tidak ditemukan maka lakukan langkah 3b.
Akhiran yang dihapus (“-i”, “-an” atau “-kan”) dikembalikan, lanjut ke langkah 4.
Hapus Derivation Prefix. Jika pada langkah 3 ada sufiks yang dihapus maka pergi ke langkah 4a, jika tidak pergi ke langkah 4b.
Periksa tabel kombinasi awalan-akhiran yang tidak diijinkan. Jika ditemukan maka algoritma berhenti, jika tidak
pergi ke langkah 4b.
For i = 1 to 3, tentukan tipe awalan kemudian hapus awalan. Jika root word belum juga ditemukan lakukan langkah 5, jika sudah maka algoritma berhenti. Catatan: jika awalan kedua sama dengan awalan pertama algoritma berhenti.
Melakukan Recoding.
Jika semua langkah telah selesai tetapi tidak juga berhasil maka kata awal diasumsikan sebagai root word. Proses selesai.
Tipe awalan ditentukan melalui langkah-langkah berikut:
Jika awalannya adalah: “di-”, “ke-”, atau “se-” maka tipe awalannya secara berturut-turut adalah “di-”, “ke-”, atau “se-”.
Jika awalannya adalah “te-”, “me-”, “be-”, atau “pe-” maka dibutuhkan sebuah proses tambahan untuk menentukan tipe awalannya.
Jika dua karakter pertama bukan “di-”, “ke-”, “se-”, “te-”, “be-”, “me-”, atau “pe-” maka berhenti.
Jika tipe awalan adalah “none” maka berhenti. Jika tipe awalan adalah bukan “none” maka awalan dapat dilihat pada Tabel 2. Hapus awalan jika ditemukan.
Tabel 1. Kombinasi Awalan Akhiran Yang Tidak Diijinkan
Awalan | Akhiran yang tidak diizinkan |
be- | -i |
di- | -an |
ke- | -i, -kan |
me- | -an |
se- | -i, -kan |
Tabel 2. Cara Menentukan Tipe Awalan Untuk awalan “te-”
Following Characters | Tipe Awalan | |||
Set 1 | Set 2 | Set 3 | Set 4 | |
“-r-“ | “-r-“ | – | – | none |
“-r-“ | – | – | ter-luluh | |
“-r-“ | not (vowel or “-r-”) | “-er-“ | vowel | ter |
“-r-“ | not (vowel or “-r-”) | “-er-“ | not vowel | ter- |
“-r-“ | not (vowel or “-r-”) | not “-er-“ | – | ter |
not (vowel or “-r-”) | “-er-“ | vowel | – | none |
not (vowel or “-r-”) | “-er-“ | not vowel | – | te |
Tabel 3. Jenis Awalan Berdasarkan Tipe Awalannya
Tipe Awalan | Awalan yang harus dihapus |
di- | di- |
ke- | ke- |
se- | se- |
te- | te- |
ter- | ter- |
ter-luluh | ter |
Untuk mengatasi keterbatasan pada algoritma di atas, maka ditambahkan aturan-aturan dibawah ini:
1. Aturan untuk reduplikasi.
Jika kedua kata yang dihubungkan oleh kata penghubung adalah kata yang sama maka root word adalah bentuk tunggalnya, contoh : “buku-buku” root word-nya adalah “buku”.
Kata lain, misalnya “bolak-balik”, “berbalas-balasan, dan ”seolah-olah”. Untuk mendapatkan root word-nya, kedua kata diartikan secara terpisah. Jika keduanya memiliki root word yang sama maka diubah menjadi bentuk tunggal, contoh: kata “berbalas-balasan”, “berbalas” dan “balasan” memiliki root word yang sama yaitu “balas”, maka root word “berbalas-balasan” adalah “balas”. Sebaliknya, pada kata “bolak-balik”, “bolak” dan “balik” memiliki root word yang berbeda, maka root word-nya adalah “bolak-balik”.
2. Tambahan bentuk awalan dan akhiran serta aturannya.
Untuk tipe awalan “mem-“, kata yang diawali dengan awalan “memp-” memiliki tipe awalan “mem-”.
Tipe awalan “meng-“, kata yang diawali dengan awalan “mengk-” memiliki tipe awalan “meng-”.
Berikut contoh-contoh aturan yang terdapat pada awalan sebagai pembentuk kata dasar.
1. Awalan SE-
Se + semua konsonan dan vokal tetap tidak berubah
Contoh :
Se + bungkus = sebungkus
Se + nasib = senasib
Se + arah = searah
Se + ekor = seekor
2. Awalan ME-
Me + vokal (a,i,u,e,o) menjadi sengau “meng”
Contoh :
Me + inap = menginap
Me + asuh = mengasuh
Me + ubah = mengubah
Me + ekor = mengekor
Me + oplos = mengoplos
Me + konsonan b menjadi “mem”
Contoh :
Me + beri = member
Me + besuk = membesuk
Me + konsonan c menjadi “men”
Contoh :
Me + cinta = mencinta
Me + cuci = mencuci
Me + konsonan d menjadi “men”
Contoh :
Me + didik = mendidik
Me + dengkur = mendengkur
Me + konsonan g dan h menjadi “meng”
Contoh :
Me + gosok = menggosok
Me + hukum = menghukum
Me + konsonan j menjadi “men”
Contoh :
Me + jepit = menjepit
Me + jemput = menjemput
Me + konsonan k menjadi “meng” (luluh)
Contoh :
Me + kukus = mengukus
Me + kupas = mengupas
Me + konsonan p menjadi “mem” (luluh)
Contoh :
Me + pesona = mempesona
Me + pukul = memukul
Me + konsonan s menjadi “meny” (luluh)
Contoh :
Me + sapu = menyapu
Me + satu = menyatu
Me + konsonan t menjadi “men” (luluh)
Contoh :
Me + tanama = menanam
Me + tukar = menukar
Me + konsonan (l,m,n,r,w) menjadi tetap “me”
Contoh :
Me + lempar = melempar
Me + masak = memasak
Me + naik = menaik
Me + rawat = merawat
Me + warna = mewarna
3. Awalan KE-
Ke + semua konsonan dan vokal tetap tidak berubah
Contoh :
Ke + bawa = kebawa
Ke + atas = keatas
4. Awalan PE-
Pe + konsonan (h,g,k) dan vokal menjadi “per”
Contoh :
Pe + hitung + an = perhitungan
Pe + gelar + an = pergelaran
Pe + kantor + = perkantoran
Pe + konsonan “t” menjadi “pen” (luluh)
Contoh :
Pe + tukar = penukar
Pe + tikam = penikam
Pe + konsonan (j,d,c,z) menjadi “pen”
Contoh :
Pe + jahit = penjahit
Pe + didik = pendidik
Pe + cuci = pencuci
Pe + zina = penzina
Pe + konsonan (b,f,v) menjadi “pem”
Contoh :
Pe + beri = pemberi
Pe + bunuh = pembunuh
Pe + konsonan “p” menjadi “pem” (luluh)
Contoh :
Pe + pikir = pemikir
Pe + potong = pemotong
Pe + konsonan “s” menjadi “peny” (luluh)
Contoh :
Pe + siram = penyiram
Pe + sabar = penyabar
Pe + konsonan (l,m,n,r,w,y) tetap tidak berubah
Contoh :
Pe + lamar = pelamar
Pe + makan = pemakan
Pe + nanti = penanti
Pe + wangi = pewangi
Penerapannya dapat dilihat pada penggalan source code berikut:
<?php
require_once(‘Algoritma_stemming.php’);
?>
<h3>STEMMING KATA DASAR</h3>
<form method=”post” action=””>
<input type=”text” name=”katadasar” id=”katadasar” size=”20″>
<input class=”btnForm” type=”submit” name=”btnSubmitAdd” value=”Submit”/>
</form>
<?php
if(isset($_POST[‘katadasar’])){
$teksAsli = $_POST[‘katadasar’];
//echo $teksAsli;
$length = strlen($teksAsli);
//echo $length;
$pattern = ‘[A-Za-z]’;
$kata = ”;
if(eregi($pattern,$teksAsli)){
$kata = $teksAsli;
$stemming = NAZIEF($kata);//Memasukkan kata ke fungsi Algoritma Nazief
echo $stemming.'<br/>’;
$kata = ”;
}
}
?>
Untuk algoritma Nazief dan Andriannya sebagai berikut:
<?php
require_once(‘koneksi.php’);//Koneksi ke database
// fungsi-fungsi
/*
DP + DP + root word + DS + PP + P
*/
function cekKamus($kata){
// cari di database
$sql = “SELECT * from tb_katadasar where katadasar =’$kata’ LIMIT 1”;
//echo $sql.'<br/>’;
$result = pg_query($sql) or die(pg_error());
if(pg_num_rows($result)==1){
return true; // True jika ada
}else{
return false; // jika tidak ada FALSE
}
}
function Del_Inflection_Suffixes($kata){
$kataAsal = $kata;
if(eregi(‘([km]u|nya|[kl]ah|pun)$’,$kata)){ // Cek Inflection Suffixes
$__kata = eregi_replace(‘([km]u|nya|[kl]ah|pun)$’,”,$kata);
.
.
.
return $__kata;
}
return $kataAsal;
}
// Cek Prefix Disallowed Sufixes (Kombinasi Awalan dan Akhiran yang tidak diizinkan)
function Cek_Prefix_Disallowed_Sufixes($kata){
if(eregi(‘^(be)[[:alpha:]]+(i)$’,$kata)){ // be- dan -i
return true;
}
.
.
.
if(eregi(‘^(se)[[:alpha:]]+(i|kan)$’,$kata)){ // se- dan -i,-kan
return true;
}
return false;
}
// Hapus Derivation Suffixes (“-i”, “-an” atau “-kan”)
function Del_Derivation_Suffixes($kata){
$kataAsal = $kata;
if(eregi(‘(i|an)$’,$kata)){ // Cek Suffixes
$__kata = eregi_replace(‘(i|an)$’,”,$kata);
if(cekKamus($__kata)){ // Cek Kamus
return $__kata;
}
/*– Jika Tidak ditemukan di kamus –*/
.
.
.
}
return $kataAsal;
}
// Hapus Derivation Prefix (“di-”, “ke-”, “se-”, “te-”, “be-”, “me-”, atau “pe-”)
function Del_Derivation_Prefix($kata){
$kataAsal = $kata;
/* —— Tentukan Tipe Awalan ————*/
if(eregi(‘^(di|[ks]e)’,$kata)){ // Jika di-,ke-,se-
$__kata = eregi_replace(‘^(di|[ks]e)’,”,$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
$__kata__ = Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return $__kata__;
}
/*————end “diper-”, ———————————————*/
if(eregi(‘^(diper)’,$kata)){
$__kata = eregi_replace(‘^(diper)’,”,$kata);
if(cekKamus($__kata)){
return $__kata; // Jika ada balik
}
.
.
.
}
/*————end “diper-”, ———————————————*/
}
if(eregi(‘^([tmbp]e)’,$kata)){ //Jika awalannya adalah “te-”, “me-”, “be-”, atau “pe-”
.
.
.
.
}
/* — Cek Ada Tidaknya Prefik/Awalan (“di-”, “ke-”, “se-”, “te-”, “be-”, “me-”, atau “pe-”) ——*/
if(eregi(‘^(di|[kstbmp]e)’,$kata) == FALSE){
return $kataAsal;
}
return $kataAsal;
}
function NAZIEF($kata){
$kataAsal = $kata;
/* 1. Cek Kata di Kamus jika Ada SELESAI */
if(cekKamus($kata)){ // Cek Kamus
return $kata; // Jika Ada kembalikan
}
/* 2. Buang Infection suffixes (\-lah”, \-kah”, \-ku”, \-mu”, atau \-nya”) */
$kata = Del_Inflection_Suffixes($kata);
/* 3. Buang Derivation suffix (\-i” or \-an”) */
$kata = Del_Derivation_Suffixes($kata);
/* 4. Buang Derivation prefix */
$kata = Del_Derivation_Prefix($kata);
return $kata;
}
?>
Pada proses stemming menggunakan Algoritma Nazief & Adriani, kamus yang digunakan sangat mempengaruhi hasil stemming. Semakin lengkap kamus yang digunakan maka semakin akurat pula hasil stemming.
Sumber: Agusta, L.2009. Perbandingan Algoritma Stemming Porter Dengan Algoritma Nazief dan Adriani Untuk Stemming Dokumen Teks Bahasa Indonesia. Konferensi Nasional Sistem dan Informatika 2009.<URL: http://yudiagusta.files.wordpress.com/2009/11/196-201-knsi09-036-perbandingan-algoritma-stemming-porter-dengan-algoritma-nazief-adriani-untuk-stemming-dokumen-teks-bahasa-indonesia.pdf >. Diakses 10 Juli 2010.
SISTEM TEMU KEMBALI INFORMASI
Stemming Nazief dan Andriani
Stemming merupakan bagian yang tidak terpisahkan dalam Information Retrieval (IR). Stemming adalah salah satu cara yang digunakan untuk meningkatkan performa IR dengan cara mentransformasi kata-kata dalam sebuah dokumen teks ke bentuk kata dasarnya.
Algoritma Nazief dan Andriani
Algoritma Nazief & Adriani adalah salah satu algoritma yang digunakan dalam tahap stemming.
Algortima Nazief & Adriani merupakan algoritma untuk mengubah kata yang memiliki sufiks, prefix dan atau konfiks menjadi bentuk kata dasar. Algoritma Nazief & Adriani digunakan dalam penelitian ini sebagai algoritma pendukung dalam proses penentuan nilai kemiripan pada dokumen teks. Terdapat beberapa metode dalam menentukan kemiripan antar dua objek. Algoritma Nazief & Adriani dapat mengenal kesamaan makna dari setiap kata, dimana kata yang memiliki sufiks, prefiks dan konfiks diubah menjadi bentuk dasar.
Algoritma stemming untuk bahasa yang satu berbeda dengan algoritma stemming untuk bahasa lainnya. Proses stemming pada teks berbahasa Indonesia lebih rumit/kompleks karena terdapat variasi imbuhan yang harus dibuang untuk mendapatkan root word (kata dasar) dari sebuah kata. Pada umumnya kata dasar pada bahasa Indonesia terdiri dari kombinasi:
Prefiks 1 + Prefiks 2 + Kata dasar + Sufiks 3 + Sufiks 2 + Sufiks 1
Konjungsi adalah Algoritma stemming Nazief dan Adriani dikembangkan berdasarkan aturan morfologi Bahasa Indonesia yang mengelompokkan imbuhan menjadi awalan (prefix), sisipan (infix), akhiran (suffix) dan gabungan awalan akhiran (confixes). Algoritma ini menggunakan kamus kata dasar dan mendukung recoding, yakni penyusunan kembali kata-kata yang mengalami proses stemming berlebih. Aturan morfologi Bahasa Indonesia mengelompokkan imbuhan ke dalam beberapa kategori sebagai berikut:
1. Inflection suffixes yakni kelompok akhiran yang tidak merubah bentuk kata dasar. Sebagai contoh, kata “duduk” yang diberikan akhiran “-lah” akan menjadi “duduklah”. Kelompok ini dapat dibagi menjadi dua:
i. Particle (P) atau partikel yakni termaksud di dalamnya “-lah”, “kah”, “tah” dan “pun”.
ii. Possessive pronoun (PP) atau kata genti kepunyaan, termaksud di dalamnya “-ku”,”-mu” dan “-nya”.
2. Derivation suffixes (DS) yakni kumpulan akhiran asli Bahasa Indonesia yang secara langsung ditambahkan pada kata dasar yaitu akhiran “-i”, “-kan”, dan “-an”.
3. Derivation prefixes (DP) yakni kumpulan awalan yang dapat langsung diberikan pada kata dasar murni, atau pada kata dasar yang sudah mendapatkan penambahan sampai dengan 2 awalan.
Termaksud di dalamnya adalah:
i. Awalan yang dapat bermorfologi (“me-“, “be-“, “pe-“ dan “te”).
ii. Awalan yang tidak bermorfologi (“di-“, “ke-“ dan “se-“).
Berdasarkan pengklasifikasi imbuhan-imbuhan di atas, maka bentuk kata berimbuhan dalam
Bahasa Indonesia dapat dimodelkan sebagai berikut:
Gambar 1 Model Kata Berimbuhan dalam Bahasa Indonesia
Keterangan :
DP : Derivation prefixes
DS : Derivation suffixes
PP : Possessive pronoun
601596072503
Dengan model bahasa Indonesia di atas serta aturan-aturan dasar morfologi Bahasa Indonesia,
aturan yang digunakan dalam proses algoritma Nazief & Adriani sebagai berikut:
1. Tidak semua kombinasi awalan dan akhiran diperbolehkan. Kombinasi-kombinasi imbuhan yang tidak diperbolehkan, yaitu “be-i”, “ke-i”, “ke-kan”, “me-an”, “se-i”, “se-kan” dan “te-an”.
2. Penggunaan imbuhan yang sama secara berulang tidak diperkenankan.
3. Jika suatu kata hanya terdiri dari satu atau dua huruf, maka proses tidak dilakukan.
4. Penambahan suatu awalan tertentu dapat mengubah bentuk asli kata dasar, ataupun awalan yang telah diberikan sebelumnya pada kata dasar bersangkutan. Sebagai contoh, awalan “me-“ dapat berubah menjadi “meng-“, “men-“, “meny-“, dan “mem-“. Oleh karena itu diperlukan suatu aturan yang mampu mengatasi masalah morfologi ini.
Tahapan Algoritma Nazief dan Andriani
Algoritma Nazief & Adriani memiliki tahap-tahap sebagai berikut:
1. Cari kata dalam kamus jika ditemukan maka diasumsikan bahwa kata tersebut adalah kata dasar. Algoritma berhenti. Jika tidak ditemukan maka lakukan langkah 2.
2. Hilangkan inflectional suffixes bila ada. Dimulai dari inflectional particle (“-lah”, “-kah”, “-tah” dan“-pun”), kemudian possessive pronoun (“-ku”, “-mu” dan “-nya”). Cari kata pada kamus jika ditemukan algoritma berhenti, jika kata tidak tidak ditemukandalam kamus lakukan langkah 3.
3. Hilangkan derivation suffixes (“-an”, “-i” dan “-kan”). Jika akhiran “-an” dihapus dan ditemukan akhiran “-k”, maka akhiran “-k” dihapus. Cari kata pada kamus jika ditemukan algoritma berhenti, jika kata tidak tidak ditemukan maka lakukan langkah 4.
4. Pada langkah 4 terdapat tiga iterasi.
1) Iterasi berhenti jika :
a. Ditemukannya kombinasi awalan yang tidak diizikan berdasarkan awalan
Awalan | Akhiran yang tidak diijinkan |
be- | -i |
di- | -an |
ke- | -i, -kan |
me- | -an |
se- | -i, kan |
Tabel 2 Kombinasi Awalan Akhiran yang Tidak Diizinkan
b. Awalan yang dideteksi saat ini sama dengan awalan yang dihilangkan sebelumnya.
c. Tiga awalan telah dihilangkan.
2) Identifikasikasikan tipe awalan dan hilangkan. Awalan terdiri dari dua tipe:
a. Standar (“di-“, “ke-“, “se-”) yang dapat langsung dihilangkan dari kata.
b. Kompleks (“me-“, “be-“, “pe-“, “te”) adalah tipe-tipe awalan yang dapat bermorfologi sesuai kata dasar yang mengikutinya. Oleh karena itu dibutuhkan aturan pada tabel 2.4 untuk mendapatkan hasil pemenggalan yang tepat.
Aturan | Format Kata | Pemenggalan |
1 | berV… | ber-V … | be-rV |
2 | berCAP… | ber-CAP… dimana C != ‘r’ & P != ‘er’ |
3 | berCAerV | ber-CaerV… dimana C != ‘r’ |
4 | Belajar | bel-ajar |
5 | berC1erC2… | 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 | teC1erC2… | Te-C1erC2… dimana 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 | mem-pe… |
13 | mem{rV|V}… | me-m{rV|V}… | me-p{rV|V} |
14 | men{c|d|j|s|z}… | men-{c|d|js|z}… |
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}… | pe-m{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… | pe-lV… kecuali “pelajar” yang menghasilkan “ajar” |
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 | terC1erC2... | ter-C1erC2... dimana C1!= ‘r’ |
35 | peC1erC2... | pe-C1erC2... dimana C1!={r|w|y|l|m|n} |
Tabel 2 Aturan Pemenggalan Awalan
Keterangan simbol huruf
C : huruf konsonan
V : huruf vocal
A : huruf vocal atau konsonan
P : partikel atau fragmen dari setiap kata, misalnya “er”
3) Cari kata yang telah dihilangkan awalannya. Apabila tidak ditemukan, maka langkah
4 diulang kembali. Apabila ditemukan, maka algoritma berhenti.
5. Apabila setelah langkah 4 kata dasar masih belum ditemukan, maka proses recording dilakukan dengan mengacu pada aturan tabel 2.4. Recording dilakukan dengan menambahkan karakter recording di awal kata yang dipenggal. Pada tabel 2.4, karakter recording adalah huruf kecil setelah tanda hubung (‘-‘) dan terkadang berada sebelum tanda kurung. Sebagai contoh, kata “menangkap” (aturan 15) pada tabel 2.4, setelah dipenggal menjadi “nangkap”. Karena tidak valid, maka recording dilakukan dan menghasilkan kata “tangkap”.
6. Jika semua langkah gagal, maka input kata yang diuji pada algoritma ini di anggap sebagai kata dasar.
Berikut contoh-contoh aturan yang terdapat pada awalan sebagai pembentuk kata dasar ;
1. Awalan SE-
Se + semua konsonan dan vokal tetap tidak berubah Contoh :
Se + bungkus = sebungkus
Se + nasib = senasib
Se + arah = searah
2. Awalan ME-
Me + vokal (a,i,u,e,o) menjadi sengau “meng” Contoh :
Me + inap = menginap
Me + asuh = mengasuh
Me + ubah = mengubah
Me + konsonan s menjadi “meny” (luluh) Contoh :
Me + sapu = menyapu
Me + satu = menyatu
Me + konsonan t menjadi “men” (luluh) Contoh :
Me + tanama = menanam
Me + tukar = menukar
Implementasi Algoritma Nazief dan Andriani
Algoritma ini mengacu pada aturan morfologi bahasa Indonesia yang mengelompokkan imbuhan, yaitu imbuhan yang diperbolehkan atau imbuhan yang tidak diperbolehkan. Pengelompokan ini termasuk imbuhan di depan (awalan), imbuhan kata di belakang (akhiran), imbuhan kata di tengah (sisipan) dan kombinasi imbuhan pada awal dan akhir kata (konfiks). Algoritma ini menggunakan kamus kata keterangan yang digunakan untuk mengetahui bahwa proses stemming telah mendapatkan kata dasar.
Kelebihan dan Kekurangan Algoritma Nazief dan Adriani
Kelebihan :
1. Memperhatikan kemungkinan adanya partikel-partikel yang mungkin mengikuti suatu kata berimbuhan.
2. Proses stemming dokumen teks berBahasa Indonesia menggunakan Algoritma Nazief dan Adriani memiliki prosentase keakuratan (presisi) lebih besar dibandingkan dengan stemming menggunakan Algoritma Porter.
Kekurangan :
1. Penyamarataan makna variasi kata
2. Jumlah database kata dan kata dasarnya harus besar. Kesalahan terjadi bila kata tidak ditemukan di database dan kemudian dianggap kata dasar, padahal bukan
3. Lamanya waktu yang diperlukan dalam proses pencarian kata di dalam kamus.
Dafar pustaka
Jurnal Teknologi Informasi, Volume 10 Nomor 1, April 2014, ISSN 1414-9999
Tahitoe, Andita Dwiyoga(tanpa tahun). “Modifikasi Enhanced Confix Stripping Stemmer Untuk Bahasa Indonesia dengan Metode Corpus Based Stemming”. Institut Teknologi Sepuluh Nopember, 1-15
Agusta, Ledy. Perbandingan Algoritma Stemming Porter Dengan Algoritma Nazief & Adriani Untuk Stemming Dokumen Teks Bahasa Indonesia ?.[Online] Tersedia:
http://yudiagusta.files.wordpress.com/2009/11/196-201-knsi09-036-perbandingan-algoritmastemming-porter-dengan-algoritma-nazief-adriani-untuk-stemming-dokumen-teks-bahasaindonesia. pdf [17 Februari 2013]
Mahendra,K.,2008, Penggunaan Algoritma Semut dan Confix Stripping Stemmer untuk Klasifikasi Dokumen Berita Berbahasa Indonesia,Tugas Akhir,Institut Teknologi Sepuluh November, Surabaya.
http://liyantanto.wordpress.com/2011/06/28/stemming-bahasa-indonesia-dengan-algoritma-nazief-dan-andriani/
0 Komentar