• Tidak ada hasil yang ditemukan

Implementasi Algoritma Enhanced Confix Stripping Stemmer Pada Kamus Sistem Bahasa Isyarat Indonesia

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Enhanced Confix Stripping Stemmer Pada Kamus Sistem Bahasa Isyarat Indonesia"

Copied!
71
0
0

Teks penuh

(1)

LAMPIRAN A: Listing Program

<?php /**

* APA YANG BARU dari class Enhanced_CS? * 1. penambahan variable

* $prefix = variable ini untuk menyimpan prefix * $suffix = variable ini untuk menyimpan suffix

* $inflec = variable ini untuk menyimpan inflection suffix * $prefin = variable ini untuk menyimpan inflection prefix * 2. penambahan&$matches pada fungsi preg_match * dasar opsi preg_match

* int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

*3. Penambahan aturan untuk mengecek kata “pemrograman”

* fungsi CekKamus, Pemenggalan Inflection Suffixes, Pemenggalan Inflection Prefix, *Pemenggalan Awalan, dan Pemenggalan Akhiran diambil dari sumber :

*http://4shared.com/rar/124o08qi/stbi.html */

Coding Untuk Menampilkan Gambar

for ($k = 0; $k < count($arrayKataDasar); $k++) { if ($arrayKataDasar[$k] != "") {

$sql = "SELECT kata,gambar FROM kata WHERE kata = '$arrayKataDasar[$k]'"; $result = mysql_query($sql);

if (mysql_num_rows($result) > 0) { $tampil = mysql_fetch_row($result);

echo "<td align='center' width=20px height= 30px><img src='gambar/$tampil[1]' alt=''><align='center'><font size = 25>$tampil[0]</font></align></td>";

echo "<td align='center' width=20px height= 30px><img src='gambar/$tampil[0]' alt='' width=200px height=

250px><align='center'>$kataNotFoundInDB[$j]</align></td>"; }

} } }

Proses Parsing Kalimat Dan Stemming Kata if (!empty($_POST[text])){

$stemmer = new Enhanced_CS(); $teks = strtolower($_POST['text']);

$tokenKarakter=array('’','—','

(2)

$teks= str_replace($tokenKarakter,' ',$teks); $tok = strtok($teks, "\n\t");

while ($tok !== false) { $teks = $tok;

$tok = strtok(" \n\t"); }

$split = explode(' ',$teks);

echo "<font size =5><b>Kata/Kalimat:</b><i>".$teks.'</i></font><br>'; echo "<tr><table align = center border=1>";

foreach($split as $key=>$kata){ $kataAwal = trim($kata); if($kataAwal!=""){

$kataDasar = $stemmer->generate(trim($kata)); $suff = $stemmer->suffix;

$pref = $stemmer->prefix; $inflec = $stemmer->inflec; $prefin = $stemmer->prefin;

if(is_array($pref)){ $pref = null;

}else if(!empty($pref)){ $pref .= " ";} if(is_array($suff)){

$suff = null;

}else if(!empty($suff)){ $suff = " ".$suff;} if(is_array($inflec)){

$inflec = null;

}else if(!empty($inflec)){ $suff .= " ".$inflec;} if(is_array($prefin)){

$prefin = null;

}else if(!empty($prefin)){ $pref = $prefin.$pref;}

$hasil = $pref.$kataDasar.$suff; echo '</n>';

$stemmer->suffix = null; $stemmer->prefix = null; $stemmer->inflec = null; $stemmer->prefin = null; $suff = null;

$pref = null; $inflec = null; $prefin = null;

$arrayKataDasar = explode(" ", $hasil);

class Enhanced_CS{ var $prefix; var $suffix; var $inflec; var $prefin;

(3)

public function cekKamus($kata){ // cari di database

$sql = "SELECT * from kata where kata ='$kata' LIMIT 1"; //echo $sql.'<br/>';

$result = mysql_query($sql) or die(mysql_error()); if(mysql_num_rows($result)==1){

return TRUE; // TRUE jika ada } else{

return FALSE; // jika tidak ada FALSE }

}

Function Pemenggalan Inflection Suffixes public function Hapus_partikel($kata){

$kataAsal = $kata;

$kata = $this->Hapus_awalan($kata); if($this->cekKamus($kata)){ // Cek Kamus

return $kataAsal; }else{

if(preg_match('/([km]u|nya|[kl]ah|pun)$/',$kata,$this->inflec)){ $kata_stem1 = preg_replace('/([km]u|nya|[kl]ah|pun)$/','',$kata); $inflec = $this->inflec[count($this->inflec)-1];

if($this->cekKamus($kata_stem1)){ // Cek Kamus $inflec = $this->inflec;

$this->inflec = $this->inflec[count($this->inflec)-1]; return $kata_stem1;

}

if(preg_match('/([klt]ah|pun)$/',$kata,$this->inflec)){

if(preg_match('/([km]u|nya)$/',$kata_stem1,$this->inflec)){ $kata_stem2 = preg_replace('/([km]u|nya)$/','',$kata_stem1); if($inflec == $this->inflec[count($this->inflec)-1] ) $inflec = ""; $this->inflec = $this->inflec[count($this->inflec)-1].$inflec; return $kata_stem2;

} else{

$this->inflec = $inflec; }

} else{

$this->inflec = $inflec; }

if($this->cekKamus($kata_stem1,$db)->found){ return $kata_stem1;

}else{

$kata_stem2 = $this->Hapus_awalan($kata_stem1); if($this->cekKamus($kata_stem2)){ // Cek Kamus

return $kata_stem1; }else{

(4)

}

Function Untuk Pemenggalan Inflection Prefix public function Hapus_awalanku($kata){

$kataAsal = $kata;

if(preg_match('/^(ku)\S{1,}/',$kata,$this->prefin)){ $kata_stem1 = preg_replace('/^(ku)/','',$kata);

$this->prefin = $this->prefin[count($this->prefin)-1]; return $kata_stem1;

}

return $kataAsal; }

Function Untuk Kombinasi Awalan dan Akhiran yang tidak diizinkan public function Cek_awalan_dilarang($kata){

if(preg_match('/^(be)[[:alpha:]]+(i)$/',$kata)){ // be- dan -i return TRUE;

}

if(preg_match('/^(di)[[:alpha:]]+(an)$/',$kata)){ // di- dan -an return TRUE;

}

if(preg_match('/^(ke)[[:alpha:]]+(i|kan)$/',$kata)){ // ke- dan -i,-kan return TRUE;

}

if(preg_match('/^(me)[[:alpha:]]+(an)$/',$kata)){ // me- dan -an return TRUE;

}

if(preg_match('/^(se)[[:alpha:]]+(i|kan)$/',$kata)){ // se- dan -i,-kan return TRUE;

}

return FALSE; }

Function Untuk Pemenggalan Akhiran public function Hapus_akhiran($kata){

$kataAsal = $kata;

if(preg_match('/(kan)$/',$kata,$this->suffix)){ // Cek Suffixes if(!preg_match('/^(eret)|(ret)(a)(kan)$/',$kata)){

$kata_stem1 = preg_replace('/(kan)$/','',$kata); if($this->cekKamus($kata_stem1)){ // Cek Kamus

$this->suffix = $this->suffix[count($this->suffix)-1]; return $kata_stem1;

(5)

}

if(preg_match('/(an|i)$/',$kata,$this->suffix)){ // cek -kan $kata_stem2 = preg_replace('/(an|i)$/','',$kata); if($this->cekKamus($kata_stem2)){ // Cek Kamus

$this->suffix = $this->suffix[count($this->suffix)-1]; return $kata_stem2;

Function Untuk Pemenggalan Awalan

public function Hapus_awalan($kata){ $kataAsal = $kata;

/* --- Tentukan Tipe Awalan ---*/

if(preg_match('/^(di|[ks]e)\S{1,}/',$kata,$this->prefix)){ // Jika di-,ke-,se- $kata_stem1 = preg_replace('/^(di|[ks]e)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2; if(preg_match('/^(be)\S{1,}/',$kata,$this->prefix)){ // Jika awalan “be-”,

if(preg_match('/^(ber)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 1. $kata_stem1 = preg_replace('/^(ber)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(ber)/','r',$kata); if($this->cekKamus($kata_stem1)){

(6)

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(ber)[^aiueor][[:alpha:]](?!er)\S{1,}/',$kata,$this->prefix)){ //aturan 2.

$kata_stem1 = preg_replace('/^(ber)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2; }

}

if(preg_match('/^(ber)[^aiueor][[:alpha:]]er[aiueo]\S{1,}/',$kata,$this->prefix)){ //aturan 3.

$kata_stem1 = preg_replace('/^(ber)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^belajar\S{0,}/',$kata,$this->prefix)){ //aturan 4. $kata_stem1 = preg_replace('/^(bel)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(be)[^aiueolr]er[^aiueo]\S{1,}/',$kata,$this->prefix)){ //aturan 5.

$kata_stem1 = preg_replace('/^(be)/','',$kata); if($this->cekKamus($kata_stem1)){

(7)

return $kata_stem1; }

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2; if(preg_match('/^(te)\S{1,}/',$kata,$this->prefix)){ // Jika awalan “te-”,

if(preg_match('/^(terr)\S{1,}/',$kata,$this->prefix)){ return $kata;

}

if(preg_match('/^(ter)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 6. $kata_stem1 = preg_replace('/^(ter)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(ter)/','r',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(ter)[^aiueor]er[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 7.

$kata_stem1 = preg_replace('/^(ter)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

(8)

$kata_stem1 = preg_replace('/^(ter)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(te)[^aiueor]er[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 9.

$kata_stem1 = preg_replace('/^(te)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

if(preg_match('/^(me)/'/*'/^(me)\S{1,}/'*/,$kata,$this->prefix)){ // Jika awalan

“me-”,

if(preg_match('/^(me)[lrwyv][aiueo]/',$kata,$this->prefix)){ // aturan 10 $kata_stem1 = preg_replace('/^(me)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(mem)[bfvp]/',$kata,$this->prefix)){ // aturan 11. /*--- cek luluh p- ---*/

$kata_stem1 = preg_replace('/^(mem)/','p',$kata); // luluh p- if($this->cekKamus($kata_stem1)){

return $kata_stem1; }

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

(9)

$kata_stem1 = preg_replace('/^(mem)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

/*if(preg_match('/^(mempe)\S{1,}/',$kata,$this->prefix)){ // aturan 12 $kata_stem1 = preg_replace('/^(mem)/','pe',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2; }

}*/

if (preg_match('/^(mem)((r[aiueo])|[aiueo])\S{1,}/', $kata,$this->prefix)){//aturan 13

$kata_stem1 = preg_replace('/^(mem)/','p',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(mem)/','m',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(men)[cdjzt]\S{1,}/',$kata,$this->prefix)){ // aturan 14. $kata_stem1 = preg_replace('/^(men)/','',$kata);

(10)

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if (preg_match('/^(men)[aiueo]\S{1,}/',$kata,$this->prefix)){//aturan 15 $kata_stem1 = preg_replace('/^(men)/','n',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(men)/','t',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(meng)[ghqk]\S{1,}/',$kata,$this->prefix)){ // aturan 16. $kata_stem1 = preg_replace('/^(meng)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(meng)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 17 $kata_stem1 = preg_replace('/^(meng)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

(11)

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(meng)/','k',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(menge)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1];

return $kata_stem1; }

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(meny)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 18. $kata_stem1 = preg_replace('/^(meny)/','s',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(me)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(me)/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(me)/','',$kata); if($this->cekKamus($kata_stem1)){

(12)

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

/*--- cek luluh t- ---*/

$kata_stem1 = preg_replace('/^(men)/','t',$kata); // luluh t-

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2; if(preg_match('/^(pe)\S{1,}/',$kata,$this->prefix)){ // Jika awalan “pe-”,

if(preg_match('/^(pe)[wy]\S{1,}/',$kata)){ // aturan 20. if(preg_match('/^(pe)[wyr]\S{1,}/',$kata,$this->prefix)){

$kata_stem1 = preg_replace('/^(pe)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} } }

if(preg_match('/^(per)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 21 $kata_stem1 = preg_replace('/^(per)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

(13)

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(per)[^aiueor][[:alpha:]](?!er)\S{1,}/',$kata,$this->prefix)){ // aturan 23

$kata_stem1 = preg_replace('/^(per)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(per)[^aiueor][[:alpha:]](er)[aiueo]\S{1,}/',$kata,$this->prefix)){ //aturan24

$kata_stem1 = preg_replace('/^(per)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(pem)[bfv]\S{1,}/',$kata,$this->prefix)){ // aturan 25 $kata_stem1 = preg_replace('/^(pem)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

(14)

$kata_stem1 = preg_replace('/^(pem)/','p',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(pem)(r[aiueo]|[aiueo])\S{1,}/',$kata,$this->prefix)){ // aturan 26

$kata_stem1 = preg_replace('/^(pem)/','m',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(pem)/','p',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(pen)[cdjzt]\S{1,}/',$kata,$this->prefix)){ // aturan 27 $kata_stem1 = preg_replace('/^(pen)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

break; }else{

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

(15)

if(preg_match('/^(pen)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 28 $kata_stem1 = preg_replace('/^(pen)/','n',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(pen)/','t',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(peng)[^aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 29 $kata_stem1 = preg_replace('/^(peng)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(peng)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 30 $kata_stem1 = preg_replace('/^(peng)/','',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

(16)

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(penge)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(peny)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 31 $kata_stem1 = preg_replace('/^(peny)/','s',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

}

$kata_stem1 = preg_replace('/^(pe)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(pel)[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 32 $kata_stem1 = preg_replace('/^(pel)/','l',$kata);

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

(17)

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if (preg_match('/^(pelajar)\S{0,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(pel)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(pe)[^rwylmn]er[aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 33

$kata_stem1 = preg_replace('/^(pe)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(pe)[^rwylmn](?!er)\S{1,}/',$kata,$this->prefix)){ // aturan 34

$kata_stem1 = preg_replace('/^(pe)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(pe)[^aiueor]er[^aiueo]\S{1,}/',$kata,$this->prefix)){ // aturan 36

(18)

if($this->cekKamus($kata_stem1)){ $this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

$kata_stem1 = preg_replace('/^(memper)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem2;

}

//*-- Cek luluh -r ---

$kata_stem1 = preg_replace('/^(memper)/','r',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(mempel)\S{1,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(mempel)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem2;

}

(19)

$kata_stem1 = preg_replace('/^(mempel)/','l',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(menter)\S{1,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(menter)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3);

return $kata_stem1; }

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem2;

}

//*-- Cek luluh -r ---

$kata_stem1 = preg_replace('/^(menter)/','r',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(member)\S{1,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(member)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem2;

}

//*-- Cek luluh -r ---

$kata_stem1 = preg_replace('/^(member)/','r',$kata); if($this->cekKamus($kata_stem1)){

(20)

return $kata_stem1; }

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

/*---end “diper-”, ---*/ if(preg_match('/^(diper)\S{1,}/',$kata,$this->prefix)){

$kata_stem1 = preg_replace('/^(diper)/','',$kata); if($this->cekKamus($kata_stem1)){

$prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem2;

}

/*-- Cek luluh -r ---*/

$kata_stem1 = preg_replace('/^(diper)','r',$kata); if($this->cekKamus($kata_stem1)){

$prefix = $this->prefix;

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$prefix = $this->prefix;

$this->prefix = $this->prefix[1]; return $kata_stem2;

$kata_stem1 = preg_replace('/^(diter)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem2;

}

/*-- Cek luluh -r ---*/

(21)

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

$kata_stem1 = preg_replace('/^(dipel)/','l',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem2;

}

/*-- Cek luluh -l---*/

$kata_stem1 = preg_replace('/^(dipel)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

/*---end “dipel-”, ---*/

/*---kata “terpelajar”(kasus khusus), --- ----*/

if(preg_match('/terpelajar/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/terpel/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

/*---end “terpelajar”-”, ---*/

(22)

if(preg_match('/seseorang/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(sese)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = 'suatu';//$this->prefix[1]; return $kata_stem1; }

}

/*---end seseorang-”, ---*/ if(preg_match('/^(diber)\S{1,}/',$kata,$this->prefix)){

$kata_stem1 = preg_replace('/^(diber)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem2;

}

/*-- Cek luluh -l---*/

$kata_stem1 = preg_replace('/^(diber)/','r',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(keber)\S{1,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(keber)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem2;

}

/*-- Cek luluh -l---*/

$kata_stem1 = preg_replace('/^(keber)/','r',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

(23)

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(keter)\S{1,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(keter)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2);

return $kata_stem1; }

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,2)." ".substr($this->prefix[1],2); return $kata_stem2;

}

/*-- Cek luluh -l---*/

$kata_stem1 = preg_replace('/^(keter)/','r',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix[1]; return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix[1]; return $kata_stem2;

} }

if(preg_match('/^(berke)\S{1,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(berke)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem1;

}

$kata_stem2 = $this->Hapus_akhiran($kata_stem1); if($this->cekKamus($kata_stem2)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem2;

} }

if(preg_match('/^(berpeng)\S{1,}/',$kata,$this->prefix)){ $kata_stem1 = preg_replace('/^(berpeng)/','',$kata); if($this->cekKamus($kata_stem1)){

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem1;

}

(24)

$this->prefix = $this->prefix;

$this->prefix = substr($this->prefix[1],0,3)." ".substr($this->prefix[1],3); return $kata_stem2;

} }

/*---end "berke-"---*/

/* --- Cek Ada Tidaknya Prefik/Awalan (“di-”, “ke-”, “se-”, “te-”, “be-”, “me-”, atau

“pe-”) ---*/

if(preg_match('/^(di|[kstbmp]e)\S{1,}/',$kata,$this->prefix) == FALSE){ return $kataAsal;

}

(25)

DAFTAR PUSTAKA

Adriani, M., Asian, J., Nazief, B., Tahaghoghi, S.M.M., dan Williams, H.E. 2007. Stemming Indonesian: A Confix-Stripping Approach. Transaction on Asian Language Information Processing. Vol. 6, No. 4, Articel 13. Association for Computing Machinery: New York .

Agusta, Ledy. 2009. Perbandingan Algoritma Stemming Porter Dengan Algoritma Nazief & Adriani Untuk Stemming Dokumen Teks Bahasa Indonesia. Bali:

Proceeding Konferensi Nasional Sistem dan Informatika.

Anonim. 2012. Stbi.rar. http://www.4shared.com/rar/124o0Xqi/stbi.htm. 30-04-2013.

Asian, Jelita, 2007. “Effective Techniques for Indonesian Text Retrieval”. PhD thesis

School of Computer Science and Information Technology RMIT University Australia.

Budhi G. S., Gunawan I., dan Yuwono F. 2006. Algoritma Porter Stemmer For Bahsa Indonesia Untuk Pre-processing Text Mining Berbasis Metode Market Basket Analysis. Skripsi. Universitas Kristen Petra: Jakarta.

Darmawan, H. A., Wurijanto, T., dan Masturi A. 2011. Rancang Bangun Aplikasi Search Engine Tafsir Al-Qur’an Menggunakan Teknik Text Mining Dengan Algoritma VSM (Vector Space Model). Skripsi. STIKOM: Surabaya.

Hakim, L., Samino, et al. Kamus Sistem Bahasa Isyarat Indonesia. 2008. Departemen Pendidikan Nasional: Jakarta.

Kadir, Abdul. 2001. Dasar Pemrograman Web Dinamis Menggunakan PHP. Yogyakarta: ANDI.

(26)

Mahendra, I. P. A. K., Arifin, A. Z., dan Ciptaningtyas , H. T. 2008. Penggunaan Algoritma Semut dan Confix Stripping Stemmer Untuk Klasifikasi Dokumen Berita Berbahasa Indonesia. Skripsi. Institut Teknologi Sepuluh Nopember: Surabaya.

Nazief, B. dan Adriani, M. 1996. Confix Stripping: Approach to Stemming Algorithm for Bahasa Indonesia. University of Indonesia: Jakarta.

Nugroho, B., 2008. Latihan Membuat Aplikasi Web PHP dan MYSQL dengan Deamweaver MX (6, 7, 2008) dan 8. Yogyakarta: Gava Media.

Sholihin, A., Solihin F., dan Rachman, F. H. 2013.Penerapan Modifikasi Metode Enhanced Confix Stripping Stemmer Pada Teks Berbahasa Madura. Jurnal

Sarjana Teknik Informatika Vol. 1 No. 1. Hal 1-4.

Sutarman. 2007. Membangun Aplikasi Web Dengan PHP dan MySQL. Yogyakarta: Graha Ilmu.

Tahitoe, A. D. dan Purwitasari, D. 2010. Implementasi Modifikasi Enhaced Confix Stripping Stemmer Untuk Bahasa Indonesia Dengan Metode Corpus Based

Stemming. Skripsi. Institut Teknologi Sepuluh Nopember: Surabaya.

(27)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini, akan dibahas beberapa hal diantaranya data yang digunakan, penerapan algoritma dan analisa perancangan sistem dalam mengimplementasikan algoritmaconfix stripping stemmer pada proses stemming untuk penerjemahan bahasa Indonesia ke dalam bentuk bahasa isyarat Indonesia.

3.1 Data Yang Digunakan

Data yang digunakan merujuk pada buku Yaquti (2005) dimana kata-kata tersebut sering digunakan masyarakat dalam percakapan sehari-hari dan untuk kata dalam bahasa isyarat Indonesianya merujuk kepada kamus dari Departemen Pendidikan Nasional (2008).

3.2 Algoritma Enhanced Confix StrippingStemmer (ECS)

Algoritma enhanced confix stripping stemmer adalah algoritma stemming yang akurat untuk mencari kata dasar dari suatu kata dalam bentuk bahasa Indonesia (Sholihin, 2013). Penerapan algoritma ECS dinilai efektif (Sholihin, 2013) karena struktur kata bahasa isyarat Indonesia mengacu pada tata bahasa Indonesia yang memiliki sedikit perbedaan pada kata yang berbentuk imbuhan di mana imbuhan yang ditemukan pada proses stemming tidak mengalami peluruhan melainkan disimpan sehingga hasil stemming yang akan didapat berupa kata imbuhan dan kata dasarnya.

Pada tahap pertama dilakukan proses parsing terhadap kalimat yang diinputkan oleh user. Kemudian tiap kata hasil parsing yang tersimpan di dalam array akan di-stemming menggunakan algoritma ECS yang sudah dimodifikasi. Jika kata tersebut

(28)

Proses penerjemahan bahasa Indonesia ke dalam bentuk bahasa isyarat Indonesia dapat direpresentasikan dengan diagram pada gambar 3.1 berikut ini :

Kalimat di-parsing menjadi kata per

kata

Kata yang telah diparsing

di-stemming menggunakan algoritma ECS

Kata yang telah di-stemming, di-parsing

kembali

Kata yang tidak terdapat pada database

diurai menjadi huruf per huruf Input kalimat oleh

user

Menampilkan kata sesuai dengan gambar yang ada

pada database

Gambar 3.1 Diagram Sistem

Diagram tersebut juga dapat dijelaskan dengan contoh sebagai berikut: 1. Input kalimat : Ayah membaca koran

2. Kalimat diparsing menjadi :[ayah][membaca][koran]

3. Kata yang telah diparsing, di-stemming menggunakan algoritma ECS (Enhanced Confix stripping)

- jika [ayah] pada saat di-stemming, ditemukan ada pada kamus kata maka [ayah] dikembalikan sebagai kata dasar

- jika [membaca] pada saat di-stemming mengalami tahap berikut

1) kata yang di-stemming dicari di kamus, karena tidak dtemukan maka lakukan langkah 2.

2) Cek kombinasi awalan dan akhiran yang dilarang sesuai Tabel 2.1 (pasangan awalan dan akhiran yang tidak diperbolehkan), karena bernilai salah, maka algoritma berjalan normal sesuai langkah 3, 4, 5, 6, 7.

3) Hilangkan partikel (“-lah”, “-kah”, “-tah” atau “-pun”)

(29)

5) Hilangkan derivation suffixes (akhiran) (“-i”, “-kan”, “-an”, “-man”, “ -wati”, “-wan”).

6) Hilangkan derivation prefixes (awalan) (“me-“, “ber-“, “di-“, “ke-“, “pe-“, “ter-“, dan “se-“). Pemenggalan awalan sesuai dengan Tabel 2.2 dimana mem{baca} menjadi mem-baca.

7) Kata baca dicari di kamus kata, karena ditemukan maka hasil stemming adalah mem sebagai awalan dan baca sebagai kata dasar.

- untuk [koran] karena tidak terdapat pada kamus kata dan setelah mengalami proses stemming dikembalikan sebagaimana bentuk semula, maka [koran] dianggap sebagai kata dasar.

4. Kata yang telah di-stemming akan diparsing kembali. - untuk [ayah] menjadi [ayah]

- untuk [mem-baca] menjadi [mem][baca]

5. Untuk [koran] harus mengalami proses penguraian menjadi huruf per huruf karena tidak dapat di-stemming dan tidak terdapat di dalam kamus kata. Maka [koran] menjadi [k][o][r][a][n].

6. Hasil gambar yang ditampilkan adalah sebagai berikut

ayah me(m) baca k o r a n

(30)

Mulai

Input kalimat oleh user

Kalimat di-parsing menjadi kata per

kata

Kata yang telah diparsing

di-stemming

Kata yang telah di-stemming, di-parsing

kembali

Menampilkan kata sesuai

dengan gambar yang

ada pada database

Sesuai Membandingkan kata hasil parsing dengan kata yang ada pada database

Kata diurai menjadi huruf per huruf

Tabel kata

Ya

Tidak

Selesai

P1

P2

Cari gambar pada database yang sesuai

dengan huruf

Tabel kata

(31)

Pada penelitian ini algoritma ECS perlu dimodifikasi agar sesuai dengan aturan tata bahasa isyarat Indonesia. Pada penelitian ini, aturan mereduksi imbuhan akan diganti dengan aturan menyimpan imbuhan. Berikut adalah algoritma ECS yang telah dimodifikasi untuk tata bahasa isyarat Indonesia.

1. Kata yang di-stemming dicari di kamus, jika ada maka algoritma berhenti, jika tidak maka lakukan langkah 2.

2. Cek rule precedence sesuai Tabel 2.1 (pasangan awalan dan akhiran yang tidak diperbolehkan), apabila bernilai benar maka lakukan langkah 6, 5, 7. Apabila bernilai salah, maka algoritma berjalan normal sesuai langkah 3, 4, 5, 6, 7.

3. Hilangkan partikel (“-lah”, “-kah”, “-tah” atau “-pun”)

4. Hilangkan kata ganti kepemilikan (possessive pronoun) (“-ku”, “-mu”, “-nya”) 5. Hilangkan derivation suffixes (akhiran) (“-i”, “-kan”, “-an”, “-man”, “-wati”, “

-wan”)

6. Hilangkan derivation prefixes (awalan) (“me-“, “ber-“, “di-“, “ke-“, “pe-“, “ter-“, dan “se-“)

a. langkah 5 berhenti jika:

(i) terjadi imbuhan terlarang (rule precedence)

(ii) awalan yang terdeteksi saat ini sama dengan yang dihilangkan sebelumnya. (iii) tiga awalan telah dihilangkan

b. identifikasikan tipe awalan dan hilangkan, awalan ada 2 tipe: (i) standar yang dapat langsung dihilangkan

(ii) kompleks adalah tipe-tipe awalan yang dapat bermorfologi sesuai kata dasar yang mengikutinya. Gunakan tabel aturan pemenggalan awalan (Tabel 2.2).

(iii) cari kata yang telah dihilangkan awalannya ini dalam kamus. Jika tidak ada maka ulangi langkah 5 ini.

7. Jika setelah 6 langkah sebelumnya dilakukan tetapi kata dasar tidak ditemukan pada database, maka kata awal yang dimasukkan dalam proses stemming dianggap sebagai kata dasar.

(32)

Cek database

Cek kombinasi awalan dan akhiran

yang tidak diperbolehkan

Hapus awalan Cek database Tidak ada

ganti kepunyaan Cek database

Kata mengandung

akhiran

Hapus

akhiran Cek database Tidak Tidak ada

Tidak

Tidak ada

Hapus awalan Cek database Kata dasar

(33)

3.3 Analisis Sistem

Analisis sistem merupakan tahap awal untuk mengidentifikasi dan menjelaskan sistem yang akan dikembangkan. Pada tahap ini akan dipaparkan kebutuhan sistem yang sesuai dengan permasalahan, analisa use case dan pemodelan proses yang terjadi di dalam sistem.

3.3.1 System Requirement

System dibangun sebagai media pembelajaran untuk berkomunikasi dengan bahasa isyarat Indonesia. User dapat menginputkan kalimat yang ingin diterjemahkannya ke dalam bentuk bahasa isyarat. Kalimat inputan tersebut akan diparsing menjadi kata per kata. Hasil parsing tersebut akan di-stemming dan apabila kata mengandung imbuhan, maka imbuhan dan kata dasarnya akan diparsing kembali. Setiap kata yang telah diparsing akan dicocokkan dengan database kata yang telah disediakan. Apabila kata yang dimaksudkan tidak terdapat dalam kamus bahasa isyarat, maka kata tersebut akan diurai menjadi huruf per huruf, sehingga system akan menampilkan gambar isyarat tiap huruf yang telah diurai.

3.3.2 Process Modeling

Process model merepresentasikan bagaimana sistem diproses yang menggambarkan proses atau aktivitas dan perpindahan data yang berlangsung didalamnya. Pemodelan proses tersebut menggunakan teknik data flow diagram (DFD).

DFD adalah sebuah teknik grafis yang menggambarkan aliran informasi dan transformasi yang diaplikasikan pada saat bergerak dari input menjadi output. DFD sistem untuk menyelesaikan permasalahan flow shop adalah sebagai berikut :

a. Context Diagram

Context diagram adalah DFD tingkat atas yang menggambarkan secara umum aliran

(34)

User kata Input kalimat

Hasil terjemahan

1.0 Penerjemahan

kata

Gambar 3.4 Context Diagram

Context diagram pada gambar 3.4 memiliki satu entity yakni user. User akan

memberikan input kepada sistem berupa kalimat yang ingin diterjemahkan. Selanjutnya diproses dalam sistem dan sistem memberikan hasil akhir kepada user.

b. DFD level n

Diagram level n digunakan untuk merepresentasikan diagram fisik maupun logis. Pada diagram inilah digambarkan aliran data secara lebih detail yang merupakan pengembangan dari context diagram sehingga disebut top-down partitioning.

Context diagram pada gambar 3.4 dapat dipartisi atau dibagi menjadi beberapa

level yang lebih detail. DFD level 1 yang merupakan representasi detail dari context diagram dapat digambarkan seperti pada gambar 3.5 berikut ini.

(35)
(36)

3.3Rancangan Sistem

Rancangan sistem menggambarkan dan menjelaskan arsitektur dan rancangan antar muka yang dibuat untuk sistem ini.Arsitektur sistem meliputi kebutuhan spesifikasi hardware dan software yang dibutuhkan sebelum atau sesudah pembuatan sistem.

Rancangan antarmuka manggambarkan dan menjelaskan proses input ke dalam proses sehingga menghasilkan sebuah output yang diharapkan dan dapat dipahami oleh pengguna.

3.3.3 Kebutuhan Hardware

Perancangan dan pembuatan sistem yang membantu dalam menyelesaikan permasalahan dalam penelitian ini membutuhkan spesifikasi hardware sebagai berikut:

1. Processor Intel Core 2 Duo 2,1GHz 2. RAM 2.00 GB

Spesifikasi hardware tersebut selanjutnya digunakan juga untuk menjalankan sistem setelah perancangan dan pembuatan dilakukan.

3.3.4 Kebutuhan Software

Perancangan dan pembuatan sistem untuk menyelesaikan masalah flow shop scheduling membutuhkan spesifikasi software sebagai berikut :

1. XAMPP For Windows 2. Browser Mozilla Firefox

3. Operating system Windows 7 Ultimate 3.3.5 Antarmuka Sistem

Perancangan tampilan antarmuka digunakan untuk menggambarkan tampilan antarmuka sebelumnya. Beberapa rancangan tampilan antarmuka yang digunakan dalam skripsi ini sebagai berikut :

1. Rancangan Halaman Utama

(37)

Gambar 3.6 Rancangan halaman utama

2. Rancangan Halaman Output

Rancangan tampilan halaman output menampilkan gambar hasil dari penerjemahan ke bentuk bahasa isyarat beserta kata yang bersesuaian dengan gambar yang ditampilkan. Rancangan halaman output dapat dilihat pada gambar 3.7.

(38)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

Pada bab ini, akan dibahas hasil implementasi algoritma ECS pada system pembelajaran bahasa isyarat Indonesia.

4.1 Implementasi

Tampilan antarmuka sistem adalah sebagai berikut:

4.1.1 Tampilan Halaman Utama

Pada halaman yang ditunjukkan pada Gambar 4.1 terdapat header yang menjelaskan maksud dan kegunaan website ini.

Gambar 4.1 Halaman Utama

4.1.2 Tampilan Halaman Input

(39)

Gambar 4.2 Halaman Input

4.1.3 Tampilan Halaman Output

Halaman output yang ditunjukkan Gambar 4.3 menampilkan kata yang telah diterjemahkan ke dalam bahasa isyarat yang berupa gambar dan penjelasan kata yang bersesuaian di bawah gambar. Hasil yang ditampilkan berupa ayah.jpg, mem.jpg, baca.jpg, Koran.jpg.

Gambar 4.3 Halaman Output

4.1.4 Tabel Kata Pada Database Kata

(40)

adat dengan ekstensi .jpg. Contoh kata yang diinputkan dapat dilihat pada Gambar 4.4 berikut.

Gambar 4.4 Database Kata

4.2 Pengujian

Dalam bahasa isyarat Indonesia, hanya terdapat satu gerakan untuk awalan me- yang dapat mewakili awalan mem-, meng-, dan menge-. Begitu juga dengan awalan pe- yang dapat mewakili awalan pem-, pe-, dan penge-.

Untuk mengisyaratkan nama diri, singkatan, nama daerah, dan kata yang belum ada isyaratnya, sistem akan menampilkan isyarat jari yaitu isyarat yang dibentuk dengan jari-jari tangan untuk mengeja huruf dan angka sesuai dengan ketentuan dalam aturan bahasa isyarat Indonesia

Data yang di-input-kan ke database hanya 600 kata yang dirujuk pada (Yaquti, 2005) sedangkan di dalam kamus kata bahasa isyarat Indonesia (Hakim et al, 2008) terdapat sekitar 8000 kata. Namun, kata yang belum di-input-kan ke dalam database tetap dapat diproses untuk diterjemahkan dengan isyarat abjad jari dimana kata tersebut akan dieja huruf per huruf dengan isyarat jari.

Contoh kalimat yang diinputkan untuk pengujian, misalnya “Ayah membaca koran Tribun dan ibu pergi membeli ikan ke pasar.” Proses stemming dari kalimat tersebut dapat dilihat pada Tabel 4.1 berikut dengan output yang dihasilkan berupa gambar.

Tabel 4.1 Output Sistem dari input-an kalimat “Ayah membaca koran Tribun dan ibu pergi membeli ikan ke pasar.”

Kata Hasil Stemming Gambar

(41)

Tabel 4.1 Output Sistem dari input-an kalimat “Ayah membaca koran Tribun dan ibu pergi membeli ikan ke pasar.” (Lanjutan)

Kata Hasil Stemming Gambar

Membaca Mem

Baca

Koran Koran

Tribun T

R

I

B

U

N

(42)

Tabel 4.1 Output Sistem dari input-an kalimat “Ayah membaca koran Tribun dan ibu pergi membeli ikan ke pasar.” (Lanjutan)

Kata Hasil Stemming Gambar

Ibu Ibu

Pergi Pergi

membeli Mem

Beli

ikan Ikan

ke Ke

(43)

BAB 5

KESIMPULAN DAN SARAN

Pada bab ini diuraikan kesimpulan yang didapat dari pengimplementasian algoritma confix stripping stemmer pada pembelajaran bahasa isyarat Indonesia, beserta

saran-saran yang dapat digunakan sebagai bahan pertimbangan untuk pengembangan atau riset selanjutnya.

5.1 Kesimpulan

Algoritma Confix stripping Stemmer dapat diterapkan dalam sistem pembelajaran bahasa isyarat. Algoritma ini mampu memenggal kata dengan kombinasi Prefiks 1 + Prefiks 2 + Kata dasar + Sufiks 3 + Sufiks 2 + Sufiks 1 dimana Sufiks 3 = akhiran, Sufiks 2 = kata ganti kepunyaan, dan Sufiks 1 = partikel. Namun, untuk kata bersisipan tidak dapat dilakukan proses stemming karena di dalam bahasa isyarat Indonesia tidak ada aturan yang menjelaskan tentang sisipan sedangkan untuk kata berhomonim di dalam bahasa isyarat tidak memiliki perbedaan bentuk, seperti bisa ular dengan bisa kulakukan.

5.2 Saran

Sistem ini belum dapat membedakan antara awalan ke- dan kata depan ke, begitu juga dengan awalan di- dengan kata depan di, sehingga diharapkan pada penelitian selanjutnya dapat mengatasi kekurangan ini.

(44)

BAB 2

TINJAUAN PUSTAKA

Pada bab ini, akan dibahas landasan teori, penelitian terdahulu, dan kerangka pikir yang mendasari penyelesaian permasalahan stemming dengan menggunakan algoritma enhanced confix stripping stemmer.

2.1Kamus Sistem Bahasa Isyarat Indonesia

Sistem Isyarat Bahasa Indonesia (SIBI) yang telah dibakukan merupakan salah satu media yang membantu komunikasi sesama kaum tunarungu di dalam masyarakat yang lebih luas.Wujudnya adalah tataan yang sistematis tentang seperangkat isyarat jari, tangan, dan berbagai gerak yang melambangkan kosa kata bahasa Indonesia. Di dalam upaya pembakuan tersebut, dipertimbangkan beberapa tolak ukur yang mencakup segi kemudahan, keindahan, dan ketepatan pengungkapan makna atau struktur kata, di samping beberapa segi yang lain.

Berdasarkan pembentukannya, isyarat dapat dibedakan menjadi tiga macam : 1. Isyarat pokok, yaitu isyarat yang melambangkan sebuah kata atau konsep.

Isyarat ini dibentuk dengan berbagai macam penampil, tempat, arah, dan frekuensi sebagaimana telah diuraikan di atas.

2. Isyarat tambahan, yaitu isyarat yang melambangkan awalan, akhiran, dan partikel.

a. Isyarat awalan

Isyarat ini dibentuk dengan tangan kanan sebagai penampil utama dan tangan kiri sebagai penampil pendamping.Isyarat walan dibentuksebelum isyarat pokok.Seluruhnya ada tujuh buah isyarat awalan yang meliputi isyarat awalan me-, ber-, di-, ke-, pe-, ter-, dan se-.

(45)

Gambar 2.1 Contoh kata melempar

b. Isyarat akhiran dan partikel

Isyarat ini dibentuk sesudah isyarat pokok dengan tangan kanan sebagai penampil, bertempat di depan dada dan digerakkan mendatar ke kanan. Isyarat ini terdiri atas isyarat akhiran i, kan,an, man, -wati,-wan, dan partikel lah, -kah, dan –pun.

Contohnya dapat dilihat pada Gambar 2.2 dengan kata alirkan.

Gambar 2.2 Contoh kata alirkan

c. Isyarat bentukan

Isyarat ini dibentuk dengan menggabungkan isyarat pokok dengan isyarat imbuhan dan dengan menggabungkan dua isyarat pokok atau lebih.

(46)

Contohnya dapat dilihat pada Gambar 2.3 dengan kata berlompatan.

Gambar 2.3 Contoh kata berlompatan

3. Abjad jari

Abjad jari adalah isyarat yang dibentuk dengan jari-jari tangan (kanan atau kiri) untuk mengeja huruf dan angka.

Bentuk isyarat bagi huruf dan angka di dalam Sistem Isyarat Bahasa Indonesia serupa dengan International Manual Alphabet (dengan perubahan-perubahan).

Abjad jari digunakan untuk : a. Mengisyaratkan nama diri;

b. Mengisyaratkan singkatan atau akronim; dan c. Mengisyaratkan kata yang belum ada isyaratnya.

2.2Proses Stemming

Stemming merupakan suatu proses yang terdapat dalam sistem IR (Information

Retrieval) untuk mengolah kata-kata yang terdapat dalam suatu dokumen dengan menggunakan aturan-aturan tertentu sehingga didapatkan kata dasarnya (root word). Sebagai contoh, kata bersama, kebersamaan, menyamai, akan distem ke root word-nya yaitu “sama” (Mahendra et al, 2008).

Algoritma stemming untuk bahasa yang satu berbeda dengan algoritma stemming untuk bahasa lainnya. Sebagai contoh bahasa Inggris memiliki morfologi

(47)

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

Algoritma confix-stripping stemmer adalah algoritma yang akurat dalam stemming bahasa Indonesia karena sesuai dengan aturan morfologi bahasa Indonesia (Adriani et al, 2007).

Dalam menyelesaikan permasalahan untuk melakukan proses stemming secara tepat, para peneliti telah banyak menggunakan algoritma-algoritma yang dapat memberikan hasil yang sesuai harapan.

Mahendra et al (2008) mengembangkan enhanced confix stripping stemmer, sebagai perbaikan dari algoritma confix strippingstemmeruntuk stemmingdokumen berita berbahasa Indonesia. Hasil uji coba membuktikan bahwa enhanced confix stripping stemmerberhasil mengatasi kesalahan-kesalahan confix stripping stemmer

dan mampu mereduksi jumlah term hingga 32.66%, sedangkan confix stripping stemmer hanya mampu mereduksi 30.95% jumlah term.

Tahitoe dan Purwitasari (2006) pada penelitiannya mengimplementasikan metode corpus based stemming untuk memperbaiki kesalahan stemming dari algoritma ECS. Dari hasil uji coba, perbaikan yang dilakukan dapat memperbaiki seluruh kesalahan stemming yang dilakukan oleh algoritma ECS Stemmer.

Budhi et al (2006) menggunakan algoritma Porter Stemmer for Bahasa Indonesia untuk proses stemming pada langkah pre-processing yang mengubah sebuah teks dalam bahasa Indonesia menjadi bentuk Compact Transaction. Compact Transaction digunakan sebagai masukan untuk proses Keyword-Based Association

Analysis, sebuah metode Text Mining yang dikembangkan dari metode Market Basket

Analysis, digunakan untuk membentuk rule-rule asosiasi dari data teks. Dari hasil uji

coba didapatkan bahwakesalahan proses 'stem' kata secara otomatis cukup kecil, yaitu 2% sehingga dapat diatasi dengan cepat menggunkan pemeriksaan kembali secara manual terhadap hasil stemmer.

(48)

Berdasarkan penelitian-penelitian terdahulu maka penulis dalam penelitian ini menggunakan enhanced confix stripping stemmer dalam menyelesaikan permasalahan stemming agar sesuai dengan aturan morfologi pada bahasa isyarat Indonesia.

2.3Algoritma Enhanced confix strippingStemmer

Enhanced confix stripping stemmer merupakan salah satu algoritma yang dapat

mengatasi proses stemming yang spesifik untuk Bahasa Indonesia. Pemilihan algoritma enhanced confix stripping stemmer merujuk pada penelitian Mahendra (2008). Pada dasarnya, algoritma enhanced confix stripping stemmer merupakan modifikasi dari algoritma confix stripping stemmer (Asian, 2007) yang dikembangkan dari algoritma stemming yang dibuat oleh Nazief dan Adriani (1996) dengan beberapa penambahan aturan tertentu yang telah terbukti mampu meningkatkan kinerja stemmer tersebut. Algoritma stemming Nazief dan Adriani dikembangkan berdasarkan pada aturan morfologi Bahasa Indonesia yang mengelompokkan dan mengenkapsulasi imbuhan-imbuhan, termasuk di dalamnya adalah awalan (prefix), sisipan (infix), akhiran (suffix) dan gabungan awalan-akhiran (confixes). Algoritma enhanced confix stripping stemmer menambahkan penggunaan kamus kata dasar dan mendukung

recoding, yakni penyusunan kembali kata-kata yang mengalami proses stemming

berlebih.

Tabel 2.1 Kombinasi Awalan-Akhiran yang dilarang Awalan

(prefix)

Akhiran (suffix) yang

tidak diperbolehkan

be- -i

di- -an

ke- -i, -kan

me- -an

se- -i, -kan

te- -an

Algoritma enhanced confix stripping stemmer (Mahendra, 2008) adalah sebagai berikut:

(49)

2. Lakukan recoding apabila diperlukan. 3. Lakukan loopPengembalianAkhiran.

4. Cek apakah terdapat tanda hubung (‘-’) yang menandakan bahwa input kata tersebut adalah kata ulang atau bentuk jamak. Jika ada, maka lakukan stemming pada sub-kata di sebelah kiri dan kanan tanda hubung tersebut.

Apabila stemming memberikan hasil yang sama, maka kata dasar kata ulang tersebut adalah hasil stemming yang didapatkan.

5. Jika proses-proses di atas gagal, maka input kata yang distemming dianggap sebagai kata dasar.

Pada setiap langkah, dilakukan proses pengecekan output stemming ke kamus. Apabila ditemukan, maka proses ini berhenti. Berikut adalah contoh proses stemming pada kata “perpolitikan” dengan menggunakan enhanced confix stripping stemmer:

1. Cek kombinasi awalan dan akhiran yang dilarang: salah. Hilangkan akhiran terlebih dahulu.Penghilangan akhiran menyisakan kata “perpoliti”.

2. Penghilangan awalan menyisakan kata “politi” (sesuai aturan 23 pada Tabel 2.2).

3. Karena aturan 23 pada Tabel 2.2 tidak mendefinisikan karakter recoding, maka proses recoding tidak dilakukan.

4. Kata “politi” tidak ada di kamus, oleh karena itu dilakukan loopPengembalianAkhiran:

 Awalan-awalan yang telah dihilangkan, dikembalikan lagi. Langkah ini menghasilkan kata “perpoliti”.

 Akhiran-akhiran dikembalikan. Karena akhiran yang sebelumnya dihilangkan adalah “-kan”, maka karakter ’k’ saja yang dikembalikan terlebih dahulu. Proses ini menghasilkan kata “perpolitik”.

 Karena “perpolitik” tidak ada di kamus, maka proses penghilangan awalan dilakukan. Proses ini menghasilkan kata “politik”.

 Karena “politik” ditemukan dalam kamus, proses loopPengembalianAkhiran ini berhenti. Kata dasar “perpolitikan” adalah “politik”.

(50)

Tabel 2.2 Aturan Pemenggalan Awalan Stemmer Nazief dan Adriani yang sudah dimodifikasi

Aturan Format Kata

Pemenggalan Contoh

1 berV... ber-V... | be-rV... Ber-air

2 berCAP.

..

ber-CAP... dimana

C!= ‘r’ & P!= ‘er’ Bersamalah

3 berCAer

V...

ber-CaerV... dimana C!= ‘r’

4 belajar bel-ajar

5 beC1erC

2...

be-C1erC2... dimana C1!={‘r’|‘l’}

6 terV... ter-V... | te-rV... Terajarkan 7 terCerV.

..

ter-CerV... dimana C!= ‘r’

8 terCP... ter-CP... dimana

C!=‘r’ dan P!=‘er’ Terbukalah

9 teC1erC

2...

te-C1erC2... dimana C1!=‘r’

10 me{l|r|w |y}V...

me-{l|r|w|y}V... Me-rampok, me-lahirkan, me-warnai, me-yakinkan 11 mem{b|f

|v}...

mem-{b|f|v}... Mem-baca, mem-filmkan

12 mempe

… mem-pe... Mem-pelopori

13 mem{rV

men-{c|d|j|z}... Men-cintai, men-datangkan, men-jumpai,

15 menV... me-nV... | me-tV Me-nikmati | me-tarik 16 meng{g|

h|q|k}...

meng-{g|h|q}... Meng-gugurkan, meng-hidangkan

17 mengV.. .

meng-V... |meng-kV...| (mengV-... jika V=’e’)

Meng-ajarkan. Meng-eja, meng-kejutkan

18 menyV.. .

meny-sV... Meny-sekolahkan

19 mempA.

pe-{w|y}V... Pe-waris 21 perV... per-V... | pe-rV... Per-anakan 23 perCAP per-CAP... dimana

C!=‘r’ dan P!=‘er’ 24 perCAer

V...

per-CAerV... dimana C!=‘r’

25 pem{b|f| V}...

(51)

Tabel 2.2 Aturan Pemenggalan Awalan Stemmer Nazief dan Adriani yang sudah dimodifikasi (Lanjutan)

Aturan Format Kata

Pemenggalan Contoh

26 pem{rV|

pen-{c|d|j|z}... Pencucian, pendapatan, penjaga

28 penV... pe-nV... | pe-tV... Penikmat | penarik 29 pengC... peng-C... Penggajian, 30 pengV... peng-V... | peng-kV...|

(pengV-... jika V=’e’)

Pengajaran, pengejutan, pengeja

per-erV... dimana C!={r|w|y|l|m|n}

ter-C1erC2... dimana C1!= ‘r’

36 peC1erC 2...

pe-C1erC2... dimana C1!={r|w|y|l|m|n}

Pada bahasa isyarat Indonesia tidak terdapat aturan mengenai sisipan, sehingga untuk kata awal yang di-input-kan memiliki sisipan akan dianggap sebagai kata dasar.

(52)

Start

(filterTerm[index] == token)

Cek

Sudah melakukan proses reduksiAwalan()

False

Proses loopPengembalianAkhiran()

Cek apakah term merupakan kata ulang

Proses ambil sub kata di sebelah kanan dan kiri setelah

tanda “-”

Lakukan proses stemming pada dua sub

kata

(Index > filterTerm.size())

Proses simpan term ke variabel

stemTerm

Sama ?

Proses pengembalian kata ulang sebelum proses

stemming

Gambar

gambar yang ada sesuai dengan pada database
kata hasil parsing dengan kata yang ada pada databaseTabel kata
Gambar 3.3 Flowchart Proses Stemming
Gambar 3.4 Context Diagram
+7

Referensi

Dokumen terkait

Rancangan halaman output pada Gamabr 3.8 juga terdapat enam komponen penting pada interface , yaitu textarea (1) yang menampilkan input yang telah diberikan pengunjung,

Tanda hubung (-) digunakan untuk tanda kata atau data yang tidak ada sinonim atau antonimnya dalam bahasa Melayu

Stemming digunakan untuk mengganti bentuk dari suatu kata menjadi kata dasar dari kata tersebut yang sesuai dengan struktur morfologi bahasa jawa yang benar.. Imbuhan (affixes) pada

APLIKASI STEMMING KATA BERIMBUHAN BAHASA INDONESIA MENGGUNAKAN ALGORITMA ECSP (ENHANCED CONFIX STRIPPING PORTER) STEMMER..

 Saat terbentuk 2 kelas stem oleh algoritma ECS Stemmer, dan salah satu term dari salah satu kelas tersebut salah di-stem oleh ECS Stemmer,. algoritma connected component tidak

Halaman pencarian adalah halaman yang menampilkan semua hasil dari satu kata yang di- input-kan dan hasil yang muncul adalah semua kata-kata yang terkandung dari

Knuth-Morris-Pratt, metode ini mencari kehadiran sebuah kata dalam teks dengan melakukan observasi awal (preprocessing) dengan cara mengecek ulang kata

Tahapan Algoritma Stemming Tahap Proses Kata Asal Hasil Potong Kata Akhir 1 Cek Database Memperlihatkan - Memperlihatkan 2 Buang Partikel -kan Memperlihatkan Memperlihat Memperlihat