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/
No comments:
Post a Comment