57
BAB IV PERANCANGAN DAN IMPLEMENTASI SISTEM
4.1 Kebutuhan Sistem
Sebelum melakukan implementasi dan menjalankan aplikasi untuk pencarian pasal-pasal hukum, dibutuhkan spesifikasi perangkat keras dan
perangkat lunak dengan kondisi tertentu agar dapat berjalan dengan baik. Berikut ini adalah kebutuhan minimal perangkat keras untuk menjalankan
aplikasi untuk pencarian pasal-pasal hukum: a. Komputer dengan prosesor Pentium 4.
b. Memori minimal 1 GB. Kebutuhan perangkat lunak digunakan untuk menjalankan aplikasi untuk
pencarian pasal-pasal hukum ini adalah sebagai berikut : a. Sistem Operasi Microsoft Windows XP Profesional SP2.
b. Microsoft .NET Framework SDK versi 2.0.
4.2 Implementasi Basis Data
Pada tahap ini akan dibahas mengenai implementasi basis data dari perancangan yang telah dibahas sebelumnya. Pada pemrograman berbasis web
mengenal adanya penyimpanan data ke dalam file. Yaitu semua data yang ada dilakukan penyimpanan ke dalam basis data sesuai dengan tabel yang
bersangkutan. Implementasi basis data pada aplikasi ini menggunakan aplikasi
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
aplikasi terbuka. Aplikasi terbuka digunakan untuk melakukan proses insert dan update
. Pada perancangan yang telah dibuat sebelumnya, terdapat 2 tabel yang
akan digunakan dalam aplikasi ini, yaitu tabel pasal dan pengertian pasal. Tabel pasal ini berisi pasal-pasal yang ada dalam KUHP dan tabel pengertian pasal
berisi penjelasan-penjelasan dari tabel pasal tersebut. Proses yang berjalan pada aplikasi ini adalah suatu proses pencarian pasal hukum KUHP berdasarkan
algoritma Boyer – Moore. Untuk proses insert data pasal dilakukan proses insert query
yang dilakukan oleh admin itu sendiri. Berikut penjelasan dari script yang digunakan untuk proses insert data pasal.
? include..conn.php;
id=_GET[id]; sql1 = select isi_pasal from pasal where id_pasal=.id.;
run1 = mysql_querysql1; ifmysql_num_rowsrun10 res1 = mysql_fetch_arrayrun1;
sql2 = select isi_pengertian from pengertian where id_pasal=.id.;
run2 = mysql_querysql2; ifmysql_num_rowsrun20 res2 = mysql_fetch_arrayrun2;
ifmysql_num_rowsrun10{
echo res1[isi_pasal]..res2[isi_pengertian]; } else echo 0;
?
Gambar 4.1 Fungsi Select Dari script di atas dapat dijelaskan adanya proses koneksi ke database.
Selanjutnya proses query insert pada tabel pasal. Dilakukan eksekusi query insert pada tabel pasal. Setelah itu terdapat proses kondisi jika data pasal lebih dari 1
maka dilakukan proses query insert tabel pengertian pasal yang mana id pasal yang digunakan adalah id pasal dari tabel pasal. Dilakukan query insert tabel
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
pengertian pasal. Setelah itu hasil pengisian tabel pasal dan tabel pengertian pasaml ditampilkan pada aplikasi.
Untuk proses algoritma Boyer – Moore itu sendiri melalui beberapa tahapan, antara lain pengambilan data dari tabel pasal, kemudian dilakukan proses
stoplist , sorting dan penyimpanan ke dalam array yang dilakukan dalam suatu
query . jika dari pencarian menggunakan Boyer-Moore tidak dapat memberikan
hasil, maka dilanjutkan dengan proses stemming. Berikut penjelasan dari script- script
yang digunakan untuk implementasi proses pencarian dengan Boyer-Moore dan Stemming.
function highlightWordsstring,word{ new=str_ireplacestring,spanclass=highlight_word.string.
span, word; return the highlighted string
return new; }
Gambar 4.2 Potongan Source Code Function Highlightwords Stoplist
merupakan proses menghilangkan kata-kata umum. Misalkan dalam, dan, karena, mana, untuk dan lainnya. Dalam pembahasan ini hanya batasi
pada bahasa indonesia saja. Dalam function stoplist ini menggunakan fungsi- fungsi string yang ada, misalnya substr yaitu sebuah fungsi php yang berguna
untuk memotong atau mengambil karakter. Ltrim dan rtrim yaitu sebuah fungsi penangambilan karakter berdasarkan string yang ada. Dari function dibawah ini
dapat dijelaskan proses yang terjadi pertama kali pengenalan karakter dari kata kunci, selanjutnya dilakukan replace karakter. Selanjutnya terdapat pengkondisian
jika string pada posisi pertama bernilai spasi maka yang dilakukan adalah
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
pengambilan nilai karakter string dari kiri dan kanan. Jika tidak bernilai spasi maka dilakukan pengambilan string dari sebelah kanan. Dan hasil dari
pengkondisian IF ini akan dikembalikan. Yang mana tampak pada function dibawah ini.
function stoplistkata{ kata = preg_replace[a-zA-Z\s], , kata;
kata = str_replace , ,kata; ifsubstrkata,0,1== kata=ltrimrtrimkata;
else kata=rtrimkata; return kata;
}
Gambar 4.3 Potongan Source Code Function Stoplist
Fungsi yang digunakan dalam algoritma Boyer-Moore selain function stoplist
adalah fungsi-fungsi untuk pemotongan karakter yang memiliki imbuhan, baik di awal maupun di akhir. Pada function step1 memiliki parameter berupa
string. Dilakukan pengkondisian jika dua huruf pertama pada string adalah “di” atau “ke” atau “se” maka dilakukan pengkondisian lagi jika jumlah karakter pada
string ke dua melebihi tiga, maka dilakukan pengambilan karakter mulai karakter
kedua dari string yang ada. Yang mana tampak pada function dibawah ini.
function step1kata{ ifsubstrkata,0,2==diorsubstrkata,0,2==keorsubstr
kata,0,2==se{ ifstrlensubstrkata,23 kata = substrkata,2;
} return kata;
}
Gambar 4.4 Potongan Source Code Function Stemming Step 1
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Selanjutnya fungsi yang dilakukan pada proses awalan ini adalah pemisahan karaker-karakter yang ada berdasarkan jenisnya, seperti karakter vokal
dan karakter konsonan. Kemudian dilakukan pemotongan berdasarkan imbuhan- imbuhan yang ada dimulai dari imbuhan me dan pe, imbuhan be dan te. Pada
setiap imbuhan ini dilakukan pengkondisian IF untuk mengambilan string dasar dari string yang ada. Yang mana tampak pada function dibawah ini.
Gambar 4.5 Potongan Source Code Function Stemming Step 2
function step2kata{ vokal = arraya,i,u,e,o;
rule1 = arrayk,g,h,q; rule2 = arrayb,f,p,v;
rule3 = arrayc,d,j,s,z; rule4 = arrayl,m,n,r,y,w,x;
ifsubstrkata,0,4==meng or substrkata,0,4==peng{ ifin_arraysubstrkata,4,1,vokalorin_arraysubstrkata,4,1
,rule1{ ifsubstrkata,4,3==ert{ kata = substrkata,2;}
elseifsubstrkata,4,2==erorsubstrkata,4,3==ata{ kata = k.substrkata,4;
} else kata = substrkata,4;
} }
else ifsubstrkata,0,4==meny or substrkata,0,4==peny{ ifin_arraysubstrkata,4,1,vokal
and substrkata,4,2=ata {
kata = s.substrkata,4; }
else kata = k.substrkata,4; }
else ifsubstrkata,0,3==mem or substrkata,0,3==pem{ ifsubstrkata,3,5==idana{
kata = p.substrkata,3; }
else ifin_arraysubstrkata,3,1,rule2{ kata = substrkata,3;
} }
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
else ifsubstrkata,0,3==men or substrkata,0,3==pen or substrkata,0,3==per{
ifin_arraysubstrkata,3,1,vokalandin_arraysubstrkata,4,1, vokal{
kata = t.substrkata,3; }
else ifin_arraysubstrkata,3,1,vokal{ kata = substrkata,2;
} else kata = substrkata,3;
} else ifsubstrkata,0,2==me or substrkata,0,2==pe{
ifin_arraysubstrkata,2,1,vokalorin_arraysubstrkata,2,1,ru le4{
kata = substrkata,2; }
} ifsubstrkata,0,3==ber or substrkata,0,3==ter{
kata = substrkata,3; }
else ifsubstrkata,0,2==be or substrkata,0,2==te{ ifstrlensubstrkata,24{
kata = substrkata,2; }
}return kata;}
lanjutan Gambar 4.5 Potongan Source Code Function Stemming Step 2 Selanjutnya adalah proses untuk akhiran string yang ada. Disini juga
dibedakan karakter-karakter yang ada, yaitu karakter vokal dan karakter konsonan. Fungsi ini serupa dengan fungsi untuk pemotongan imbuhan awalan,
namun untuk fungsi ini dimulai dari belakang. Sehingga nantinya ditemukan kata dasar dari string yang ada. Yang mana tampak pada function dibawah ini.
function step3kata{ vokal = arraya,i,u,e,o;
akhir1 = arraylah,kah,pun,tah; akhir2 = arrayku,mu;
akhir3 = arraynya; ifin_arraysubstrkata,-3,akhir1 and substrkata,-5,2=ng
and substrkata,0,strlenkata-32{ kata = substrkata,0,strlenkata-3;
} ifin_arraysubstrkata,-2,akhir2or in_arraysubstrkata,-
3,akhir3 and strlenkata-32{
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
kata = substrkata,0,strlenkata-3; }
ifsubstrkata,-1==i{ ifstrlenkata4 and substrkata,0,2=ng and substrkata,-
2,1=t{ kata = substrkata,0,strlenkata-1;
} }
ifsubstrkata,-3==kan{ ifstrlensubstrkata,0,strlenkata-33 and
substrkata,0,2=ng{ kata = substrkata,0,strlenkata-3;
} }
ifsubstrkata,-2==an{ ifstrlensubstrkata,0,strlenkata-23 and substrkata,-
4,2==an{ kata = substrkata,0,strlenkata-2;
} elseifstrlensubstrkata,0,strlenkata-23 and
substrkata,-4,2=an and kata=dengan{ kata = substrkata,0,strlenkata-2;
} }
return kata; }
Gambar 4.6 Potongan Source Code Function Stemming Step 3
Proses dibawah ini menjelaskan tentang proses stemming bahasa indonesia. Dimana proses ini dibagi berdasarkan tiga step, yaitu step1 dan step2 yaitu
penghapusan imbuhan awalan dan step3 penghapusan imbuhan akhiran. Yang mana tampak pada
function stemkata{ kata = step1kata;
kata = step2kata; kata = step3kata;
return kata;}
Gambar 4.7 Potongan Source Code Function Stem
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Selanjutnya adalah function pencarian dengan menggunakan algoritma Boyer-Moore
. Function ini memiliki tiga parameter yaitu id, string dan cari. String yang ada disimpan dalam sebuah variabel word dengan menggunakan
fungsi strtolower yaitu suatu fungsi yang digunakan untuk mengubah huruf
kapital menjadi huruf kecil. Setelah itu dilakukan stoplist pada variabel word yang ada dan yang terakhir adalah membuang spasi yang ada pada variabel word.
Kemudian dilakukan proses looping untuk menghitung jumlah kata yang ada dan dilakukan proses pengindeksan yang disimpan ke dalam array. Yang mana
tampak pada function dibawah ini.
function cari_bmidx,string,cari{ word = strtolowerstring;
word = stoplistword; word = split ,word;
s=0; cari = split ,cari;
fori=0;icountcari;i++{ forj=0;jcountword;j++{
k=0;k=strlenword[j]-strlencari[i];k++{ ifcari[i]==substrword[j],k,strlencari[i]{
word_list[s]=word[j]; word_idx[s]=j; s++; }}}}
ifis_arrayword_idx { array_uniqueword_idx;
array_uniqueword_list; }
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
ifcountword_idx0 { val[id] = idx;
val[rank] = countword_idx; val[word] = word_list;
} else val = NULL;
return val; }
Gambar 4.8 Potongan Source Code Function Cari Boyer-Moore
Jika proses pencarian menggunakan algoritma Boyer-Moore tidak dapat ditemukan, maka digunakan proses pencarian dengan menggunakan proses
stemming. Stemming yang digunakan adalah stemming indonesia. Untuk alur-alur proses yang ada pada function cari_stem ini tidak jauh berbeda dengan proses
pencarian dengan algortima Boyer-Moore. Yang membedakan diantara keduanya adalah proses loop yang ada pada function cari_stem hanya satu kali loop untuk
menemukan jumlah count yang ada pada kata kunci sedangkan pada algoritma Boyer-Moore
ada dua kali proses loop. Yang mana tampak pada function dibawah ini.
function cari_stemidx,string,cari{ word = strtolowerstring;
word = stoplistword; cari = split ,cari;
word = split ,word; fori=0;icountcari;i++{
cari[i] = stemcari[i]; }
fori=0;icountword;i++{ word[i] = stemword[i];
} s=0;
Hak Cipta © milik UPN Veteran Jatim : Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
fori=0;icountcari;i++{ forj=0;jcountword;j++{
ifcari[i]==word[j]{ word_st[s]=word[j]; word_idst[s]=j; s++;
} }
} ifis_arrayword_idst {
array_uniqueword_idst; array_uniqueword_st;
} ifcountword_idst0 {
val[id] = idx; val[rank] = countword_idst;
val[word] = word_st; }
else val = NULL; return val;
}
Gambar 4.9 Potongan Source Code Function Stemming
4.3. Implementasi Antarmuka