Eliminasi Stopwords Algoritma Turbo Boyer-Moore

Rolt 2007 mengemukakan pendapat bahwa manajemen kearsipan elektronik adalah pengelolaan berbagai jenis dokumen dalam organisasi yang menggunakan program komputer dan penyimpanan.Sebuah sistem kearsipan elektronik memungkinkan suatu organisasi dan pengguna untuk membuat dokumen, memindai hard copy dalam bentuk elektronik dan menyimpan, mengedit, mencetak, proses, dan juga mengelola dokumen.

2.5 Eliminasi Stopwords

Eliminasi stopwords merupakan penghilangan kata-kata yang frekuensinya terlalu banyak terdapat dalam dokumen.Biasanya kata-kata ini tidak memiliki arti yang lebih di dalam memenuhi kebutuhan seorang pencari di dalam mencari informasi.Eliminasi stopwords bermanfaat dengan adanya pengurangan ukuran strukur indeks Karena pengurangan ukuran indeks, beberapa kata kerja, kata sifat, dan kata keterangan lainnya dapat juga dapat dimasukkan juga ke dalam daftar stopword. Berikut ini adalah contoh stopwords dalam bahasa Indonesia : yang, juga, dari, dia, kami, kamu, aku, saya, ini, itu, atau, dan, tersebut, pada, dengan, adalah, yaitu, ke, tak, tidak, di, pada, jika, maka, ada, pun, lain, saja, hanya, namun, seperti, kemudian.

2.6 Algoritma Turbo Boyer-Moore

Algoritma Turbo Boyer-Moore adalah pengembangan dari algoritma Boyer- Moore.Algoritma Boyer-Moore adalah algoritma pencarian string yang dipublikasikan pertama kali oleh Robert S. Boyer, dan J. Strother Moore pada tahun 1977. Menurut Christian Thierry Charras dalam bukunya Handbook of Exact String Matching Algorithm mengatakan algoritma Boyer-Moore adalah algoritma yang paling efisien pada aplikasi umum.Algoritma Boyer-Moore bekerja dengan memulai pencocokan pattern dari kanan bukan dari kiri. Dengan memulai pencocokan karakter dari kanan, maka akan lebih banyak informasi yang didapat. Algoritma Turbo Boyer-Moore tidak jauh berbeda dengan algoritma pendahulunya yaitu Algoritma Boyer-Moore yang melakukan pencocokan dimulai dari karakter yang paling kanan hingga karakter paling kiri pattern. Jika terjadi ketidakcocokan antara karakter paling kanan pattern dengan karakter pada text yang dicocokkan maka, karakter pada pattern akan diperiksa satu persatu untuk mendeteksi apakah ada karakter pada teks tersebut yang sama dengan karakter pada pattern. Apabila terjadi kecocokan, maka pattern akan digeser sedemikian rupa sehingga posisi karakter yang sama antara pattern dan text terletak sejajar menggunakan dua fungsi penggeseranyaitu penggeseran good-suffix dan penggeseran bad-character. Algoritma ini tidak membutuhkan proses tambahan, hanya membutuhkan ruang tambahan untuk menyimpan faktor dari teks yang cocok dengan akhiran dari pattern selama attempt terakhir dan hanya jika penggeseran good-suffix dilakukan. Dengan demikian teknik ini memiliki dua keuntungan Charras, 2001, yaitu: 1. Teknik ini memungkinkan segmen yang diingat tadi dilewati tanpa perlu diperiksa. 2. Teknik ini mengizinkan sebuah penggeseran turbo Penggeseran bad-character dan good-suffix pada algoritma Turbo Boyer- Mooresama dengan penggeseran yang dilakukan algoritma Boyer-Moore.Cara kerja algoritma Turbo Boyer-Moore adalah sebagai berikut: 1. Inisialisasi, karena algoritma ini menggunakan penggeseran good-suffix dan penggeseran bad-characterdari algoritma Boyer-Moore maka untuk inisialisasi dijalankan prosedur preBmBc dan preBmGs seperti algoritma Boyer-Moore. 2. Melakukan proses pencocokan karakter pada pattern dengan karakter pada teks. Jika terjadi ketidakcocokan maka dilakukan penggeseran terbesar berdasarkan tabel BmBc, tabel BmGs dan turbo shift. Sebuah penggeseran turbo pada algoritma Turbo Boyer-Moore dapat terjadi bila pada attempt yang sedang dilakukan, akhiran dari pattern yang cocok dengan teks lebih pendek dari bagian dari teks yang diingat dari attempt sebelumnya. Fase inisialisasi pada algoritma ini sama dengan fase inisialisasi pada algoritma Boyer-Moore, yaitu mempunyai kompleksitas waktu dan ruang sebesar On + σ dengan σ adalah besar ruang alfabet. Sedangkan pada fase pencocokan, algoritma ini mempunyai kompleksitas waktu sebesar Om, Jumlah pencocokan karakter pada algoritma ini adalah 2m. 2.6.1 Penggeseran Bad-Character Penggeseran bad-character yang terdiri dari mensejajarkan karakter y[i+j] dengan kemunculan paling kanan karakter tersebut di pattern, penggeseran ini diilustrasikan oleh Gambar 2.2. Dan bila karakter tersebut tidak ada di pattern, maka pattern akan disejajarkan dengan y[i+n+1], seperti yang diilustrasikan oleh Gambar 2.3. Penggeseran bad-character ini akan sering terjadi pada pencocokan string dengan ruang alfabet yang besar dan dengan pattern yang pendek yang sering terjadi di praktik pada umumnya. Hal ini terjadi karena akan banyak karakter di teks yang tidak muncul di pattern. Namun, untuk file biner, ya ng mempunyai alfabet Σ ={0, 1}, penggeseran ini kemungkinan besar tidak akan membantu sama sekali. Hal ini dapat diatasi dengan membandingkan beberapa bit sekaligus Kumara,2009. Gambar 2.2 Penggeseranbad-character, b muncul pada xCharras, 2001 Gambar 2.3 Penggeseranbad-character, tidak ada kemuncul b pada x Charras, 2001 Pada tabel bad-character, setiap karakter pada pattern diberi nilai sesuai dengan ukuran jauhnya karakter tersebut dari karakter paling kanan dari pattern dan untuk karakter yang tidak terdapat pada pattern akan diberi nilai sejumlah karakter pada pattern. Procedure preBmBc input y : array[0..n-1]of char, input n : integer, inputoutput bmBc : array of integer Deklarasi i:integer Algoritma for i=0; iASIZE; ++i bmBc[i]  n endfor for i=0; i n - 1; ++i bmBc[y[i]]  n – i – 1 endfor Gambar 2.4Pseudocode Bad-CharacterCharras, 2001 2.6.2 Penggeseran Good-Suffix Asumsikan bahwa ketidak cocokan terjadi antara karakter x[i] = a pada pattern dan karakter y[i+j] = b pada teks selama attempt pada posisi j, v adalah akhiran dari pattern setelah b dan u adalah sebuah awalan dari pattern. Kemudian x[i+1 .. m-1] = y[i+j+1 .. j+m-1]= u dan x[i] ≠ y[i+j]. Penggeseran good-suffix terdiri atas mensejajarkan y[i+j+1 .. j+m-1] = x[i+1 .. m-1] dengan kemunculan paling kanan potongan tersebut pada x yang didahului oleh karakter yang berbeda dari x[i], seperti terlihat pada gambar 2.2. Namun jika tidak ada potongan seperti itu, maka algoritma akan mensejajarkan akhiran dari v dari y[i+j+1 .. j+m-1] dengan awalan u dari pattern yang sama, seperti yang terlihat pada gambar 2.5. Gambar 2.5Penggeserangood-suffix, u muncul didahului oleh karakter cCharras, 2001 Gambar 2.6Penggeserangood-suffix, hanya akhiran dari u yang muncul pada y Charras, 2001 Pada tabel Penggeserangood-suffix, nilai Penggeseran digunakan ketika ketidakcocokan ditemukan berdasarkan karakter pada posisi keberapa yang menyebabkan ketidakcocokan.Untuk menentukan nilai-nilai tersebut, lebih dahulu menghitung nilai tabel suffix yang bertujuan untuk memberi tanda adanya perulangan akhiran. Dari tabel suffix inilah tabel good-suffixakan didapat. Pada tabel suffix berisi nilai dari tiap karakter yang ada pada pattern yang menunjukkan ada atau tidaknya perulangan akhiran suffix dan dimana posisi perulangan tersebut sehingga ketika proses perhitungan tabel good-suffix dapat diketahui seberapa banyak penggeseran yang akan dilakukan untuk pencocokan selanjutnya. Nilai dari setiap karakter yang ada pada pattern bergantung terhadap ada atau tidaknya perulangan akhiransuffix v dari text pada pattern. Semakin banyak perulangan, maka akan semakin kecil nilai penggeseran. Procedure suffixes input y: array[0..n-1] of char, input n: integer, inputoutput suff: array of integer Deklarasi f, g, i : integer Algoritma suff[n-1]  n g  n-1 for i = n-2; i = 0; --i ifi g and suff[i + n – 1 - f] i-gdo suff[i]  suff[i + n – 1 - f] else ifigdo g  i endif f = i whileg = 0 and y[g] == y[g + n – 1 - f]do --g; endwhile suff[i]  f-g; endif endfor Gambar 2.7Pseudocode Good-SuffixCharras, 2001 procedure preBmGs input y: array of char, input n:integer, inputoutput bmGs: array of integer Deklarasi i, j : integer suff : array [0..YSIZE] of integer Algoritma suffixesy, n, suff for i=0; i n; ++i bmGs [i]  n endfor for i= n-1; i = -1; --1 ifi == -1 or suff[i] == i+1 forj=0; j n-1-i; ++j ifbmGs[j] == n bmGs[j]  n-1-i endif endfor endif endfor for i=0; i = n-2; ++i bmGs[n-1-suff[i]]  n-1-i endfor Gambar 2.7Pseudocode Good-Suffix lanjutan 2.6.3 Penggeseran Turbo Penggeseranturbo dapat terjadi bila pada attempt yang sedang dilakukan, akhiran dari pattern yang cocok dengan teks lebih pendek dari bagian dari teks yang diingat dari attempt sebelumnya hanya pada saat good-suffix terjadi. Pada kasus ini, anggap u adalah faktor yang diingat dari attempt sebelumnya, dan v adalah bagian dari pattern yang cocok pada attempt yang sedang dilakukan, sehingga uzv adalah akhiran dari pattern. Lalu anggap a adalah karakter di teks dan b adalah karakter dari pattern yang sedang dicocokan pada attempt tersebut. Maka av adalah akhiran dari pattern, dan juga akhiran dari u karena |v||u|.Dua karakter a dan b muncul dengan jarak p di teks, dan akhiran dari uzv dari pattern mempunyai periode p=|zv|, karena u merupakan pinggiran dari uv, sehingga tidak mungkin melewati duakemunculan karakter a dan b di teks. Penggeseran terkecil yang mungkin dilakukan adalah sebesar |u|-|v|, yang disebut sebagai penggeseran turbo dan diilustrasikan oleh Gambar 2.8. Gambar 2.8Penggeseranturbo dapat terjadi jika | v | |u |Charras, 2001 Gambar 2.9c ≠ d, maka tidak dapat disejajarkan pada karakter yang sama di vCharras, 2001 Masih dalam kasus dimana |v||u|, dan panjang dari penggeseran bad- characterlebih besar dari penggeseran good-suffix maupun penggeseran turbo.Pada kasus ini, seperti yang diilustrasikan pada Gambar 2.9, dua karakter c dan d pastilah berbeda karena disyaratkan bahwa jika u ≠0 maka penggeseran sebelumnya adalah penggeseran good-suffix. Sebagai akibatnya, jika penggeseran dengan panjang yang lebih besar dari penggeseran turbo namun lebih kecil dari |u|+1 maka c dan dakan disejajarkan dengan karakter yang sama di teks. Oleh karena itu, dalam kasus ini panjang penggeseran minimal adalah |u|+1. procedure Turbo Boyer Moore input m,n : integer, input y: array of[0..n-1] char, input x: array of[0..m-1] char, input m:integer Deklarasi i, j, u, v, shift, bmBcShift, bmGsShift, tuboShift : integer bmGs : array [0..n-1] of integer bmBc : array [0..ASIZE] of integer Gambar 2.10Pseudocode Turbo Boyer-MooreCharras, 2001 Algoritma preBmGsy, n, bmGs preBmBcy, n, bmBc i:= u:=0 shift:=n while i= m-n do j:= n-1 while j=0 n and T[i+j] = P[j] do j:= j-1 ifnotu=0 and i=m-1-shift j:=j-u endif endwhile ifj0 then ketemu[i]:=true shift:=bmGs[0] u=n-shift else v: =n-1-j turboShift:=u-v bmBcShift :=bmBc[chartointT[i+j]] – n + j + 1 bmGsShift := BmGs[j] shift:= maxbmBcShift, bmGsShift shift:= maxshift, turboShift ifshift = bmGs[i] then v1:=minm-shift, v else ifturboShift bmBcShift shift:=maxshift, u+1 endif endif endif i:= i+shift endwhile Gambar 2.10Pseudocode Turbo Boyer-Moore lanjutan 2.7 Algoritma Quick Sort Algoritma quicksort diperkenalkan pertama kali oleh C.A.R. Hoare pada tahun 1960, dan dimuat sebagai artikel di Computer Journal 5 pada April 1962.Sedgewick et al 2011 menyatakan bahwa terdapat dua bagian pada pendekatan rekursif, yaitu sort dan partisi. Partisi merupakan bagian yang melakukan tugas untuk mengelompokkan data, sedangkan sort adalah bagian yang melakukan proses rekursif. Semakin besar jumlah data, maka kompleksitas ruang suatu algoritma rekursif akan semakin besar. Chhajed et al 2013 Dalam penelitiannya menyimpulkan bahwa quicksort lebih baik dibandingan algoritma lain dalam membandingkan list acak angka dari 10000 sampai 30000. Metode pengurutan quicksort delakukan dengan cara membandingkan suatu elemen pivot dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen-elemen lain yang lebih kecil daripada pivot tersebut terletak di sebelah kirinya dan yang lebih besar daripada pivot tersebut terletak di sebelah kanan. Sehingga dengan demikian telah terbentuk dua sublist kiri dan sublist kanan dari pivot. algorithm quicksortA, lo, hi if lo hi then p := partitionA, lo, hi quicksortA, lo, p - 1 quicksortA, p + 1, hi algorithm partitionA, lo, hi pivot := A[hi] i := lo place for swapping for j := lo to hi - 1 do if A[j] ≤ pivot then swap A[i] with A[j] i := i + 1 swap A[i] with A[hi] return i Gambar 2.11Pseudocode Algoritma Quicksort Bentley, 1999 2.8 Penelitian Terdahulu Beberapa penelitian terdahulu tentang pengarsipan elektronik diantaranya adalah penelitian yang dilakukan oleh Sugiarto el al 2013 yang mengembangkan sistem kearsipan elektronik berbasis clinet-server pada kantor yayasan perguruan tinggi Kristen satya wacana. Pada penelitiannya, Sugiarto el al 2013 membangun sistem multi user dengan beberapa fitur utama yang pada dasarnya mengadopsi dari sistem kearsipan secara konvensional dan bisa diakses dari berbagai computer melalui jaringan Local Area NetworkLAN. Penelitian yang dilakukan Sugiharto 2012, Untuk mencapai tujuan penyelamatan dokumen atau arsip melalui digitalisasi harus tetap mengacu pada prinsip-prinsip preservasi dan mampu menyesuaikan dengan teknologi yang lebih baru, diantaranya adalah kemampuan menjaga efisiensi dalam digitalisasi dan proses setelah terdigitalisai sehingga lebih hemat waktu dan biaya. Andika 2011 dalam penelitiannya membangun sebuah sistem manajemen surat dan pengarsipan untuk memecahkan permasalahan surat studi kasus PT. Semen Padang. Andika menggunakan framework Code Igniter CI dengan metode Object Oriented Analysis and Design sebagai metode pengembangan sistem. Tabel 2.1 Penelitian Terdahulu tentang Sistem Pengarsipan No Judul Nama Keterangan 1 Pengembangan Sistem Kearsipan Elektronik Berbasis Cient-Server Studi pada Kantor Yayasan Perguruan Tinggi Kristen Satya Wacana Sugiarto el al 2013 Sugiarto el al membangun sistemsistem multi user dengan beberapa fitur utama yang pada dasarnya mengadopsi dari sistem kearsipan secara konvensional dan bisa diakses dari berbagai computer melalui jaringan Local Area NetworkLAN. 2 Penyelamatan Informasi DokumenArsip di Era Teknologi Digital Sugiharto 2012 Untuk mencapai tujuan penyelamatan dokumen atau arsip melalui digitalisasi harus tetap mengacu pada prinsip-prinsip preservasi dan mampu menyesuaikan dengan teknologi yang lebih baru 3 Penerapan CI Code Igniter dalam Pengembangan Sistem Informasi Manajemen Surat dan Pengarsipan Andika 2011 Andika membangun aplikasi menggunakan framework Code Igniter dengan metode Object Oriented Analysis and Design sebagai metode pengembangan sistem. Beberapa penelitian terdahulu tentang algoritma Turbo Boyer Moore diantaranya adalah Siahaan 2011,melakukan penelitian dengan membandingkan algoritma Boyer-Moore dengan variannya yaitu Turbo Boyer-Moore dalam queryMySql. Hasil yang diperoleh dari penelitian ini adalah untuk perintah query seperti LIKE, Algoritma Turbo Boyer-Moore dapat melakukan lebih perbandingan dalam penelusurannya. Perbedaan kecepatan penelusuran query kedua algoritma tersebut tidak jauh berbeda, namun karena kompleksitas waktu untuk kasus terburuk algoritma Boyer-Moore dapat dikurangi dengan menggunakan algoritma Turbo Boyer- Moore. Lesmana 2010 menerapkan algoritma pencocokan string boyer moore dan turbo boyer moore untuk keamanan computer. Dalam penelitiannya, jika sebuah file ingin dieksekusi, maka file tersebut tidak langsung diizinkan untuk dijalankan, namun akan dilakukan pengecekan terlebih dahulu. Kesimpulan yang diperoleh dalam penelitian ini adalah Algoritma Turbo Boyer-Moorelebih baik dari algoritma Boyer- Moore untuk keamanan computer dalam hal performansi karena tidak memerlukan permrosesan ekstra dan memungkinkan untuk mengingat potongan teks yang telah diperiksa sebelumnya. Rizal 2015 dalam penelitiannya juga menggunakan algoritma Turbo Boyer- Moorepermainan tebak kata Bahasa aceh. Pencocokan string yang diterapkan pada aplikasi permainan tebak kata Bahasa aceh ini menghasilkan pencocokan yang sesuai dengan harapan dengan waktu yang cepat. Kumar et al 2011 menganalisis perbandingan algoritma exact stirng matching untuk mendeteksi virus signature. Virus signature adalah urutan unik dari bit dalam kode virus yang dapat digunakan untuk mendeteksi keberadaan virus dalam sebuah file atau memori. Biasanya urutan tersebut dalam bentuk heksa. Algoritma exact string matching dan Approximate Sting Matching digunakan untuk mendeteksi kecocokan virus signature tersebut dalam sebuah file. Kesimpulan dari penelitian tersebut adalah, berdasarkan kompleksitas untuk payload text dan pola yang panjang, algoritma Boyer Moore dan variannya Turbo Boyer-Moore, BHM adalah algoritma paling efisien. Tabel 2.2 Penelitian Terdahulu tentang Algoritma Turbo Boyer-Moore No Judul Nama Keterangan 1 Perbandingan Algoritma Boyer-Moore dan Turbo BoyerMoore dalam QueryMySQL Siahaan 2011 Untuk perintah query seperti LIKE, Algoritma Turbo Boyer- Mooredapat melakukan lebih perbandingan dalam penelusurannya. Perbedaan kecepatan penelusuran query kedua algoritma tersebut tidak Tabel 2.2 Penelitian Terdahulu tentang Algoritma Turbo Boyer-Moore lanjutan No Judul Nama Keterangan jauh berbeda, namun karena kompleksitas waktu untuk kasus terburuk algoritma Boyer- Mooredapat dikurangi dengan menggunakan algoritma Turbo Boyer-Moore . 2 Penerapan Algoritma Pencocokan String Boyer-Moore untuk Keamanan Komputer Lesmana 2010 Algoritma Turbo Boyer- Moorelebih baik dari algoritma Boyer-Moore untuk keamanan computer dalam hal performansi karena tidak memerlukan permrosesan ekstra dan memungkinkan untuk mengingat potongan teks yang telah diperiksa sebelumnya. 3 A Comparative Analysis of Various Exact String- Matching Algorithms for Virus SignatureDetection Kumar et al 2011 Berdasarkan kompleksitas untuk payload text dan pola yang panjang, algoritma Boyer Moore dan variannya Turbo Boyer- Moore, BHM adalah algoritma paling efisien. 4 Permainan Tebak Kata Bahasa Aceh Menggunakan Algoritma Turbo Booyer-Moore Rizal 2015 Pencocokan string yang diterapkan pada aplikasi permainan tebak kata Bahasa aceh ini menghasilkan pencocokan yang sesuai dengan harapan dengan waktu yang cepat.

BAB 1 PENDAHULUAN