Implementasi Algortima Manber Pada Persamaan Makna Bahasa Indonesia dan Melayu Berbasis Android
13
BAB 2
LANDASAN TEORI
2.1
Pengertian Text Mining
Text Mining dapat juga diartikan sebagai penambangan data berupa teks yang
bersumber dari dokumen untuk mencari karta-kata yang merupakan perwakilan isi
atau pembentuk dokumen teks sehingga penganalisisan dapat dibuat. Berikut ini
merupakan tahapan umum pada proses Text Mining, yaitu (Nugroho, 2011):
1. Text Preprocessing, adalah pemrosesan pertama kali yang ditujukan untuk
membuat teks menjadi data yang siap olah pada proses berikutnya.
2. Case Folding, adalah pengubahan semua karakter yang merupakan huruf kapital
menjadi huruf kecil.
3. Filtering, adalah proses pengambilan kata-kata penting sesuai dengan kondisi yang
diinginkan.
4. Tokenizing, adalah tahapan pemecah kalimat yang di-input berdasarkan kata yang
penyusunnya, biasanya dipisah oleh karakter whitespace.
5. Text Transformation, adalah pembentukan teks yang masuk pada proses untuk
mendapatkan representasi dokumen yang sesuai.
a. Stemming, adalah proses pencarian kata dasar dari setiap kata hasil tokenizing.
b. Synonim Recognation, adalah pengubahan kata yang memiliki makna yang
sama dengan penulisan berbeda.
c. Feature Selection, adalah pengurangan dimensi teks sehingga akan
menghasilkan kata-kata yang merupakan dasar dari isi teks.
d. Pattern Discovery, adalah penemuan pola atau pengetahuan dari seluruh teks
Universitas Sumatera Utara
2.2 Algoritma Manber
Algoritma Manber merupakan salah satu dari tiga algoritma yang menggunakan
fingerprint dalam proses penyelesaian permasalahannya, selain algoritma Winowing
dan Rabin-Karp. Penggunaan fingerprint ini ditujukan agar dapat mengidentifikasi
penjiplakan termasuk bagian-bagian kecil yang mirip dalam dokumen dengan jumlah
kata yang cukup banyak (Purwaetasari, et al.2009).
Setiap algoritma memiliki penyelesaian permasalahan yang berbeda, namun
algoritma Manber dan Winowing memiliki langkah penyelesain yang hampir sama.
Adapun perbedaan algoritma Manber dan algoritma Winowing adalah sebagai berikut
(Kurniawati & Wicaksana, 2008):
1.
Jumlah langkah yang lebih sedikit sehingga waktu pemrosesan dokumen menjadi
lebih cepat.
2.
Tidak memberikan informasi dimana posisi fingerprint berada.
3.
Pemilihan fingerprint yang berbeda.
Pada Algoritma Manber, fingerprint dipilih dari setiap nilai hash yang memenuhi
persyaratan.
H mod P = 0
di mana H adalah nilai hash dan P adalah nilai pembagi yang digunakan, sementara
pada Algoritma Winowing dipilih nilai hash minimum dalam setiap window. Adapun
secara singkat, konsep dasar algoritma Manber dimulai dari tahap pencarian kata
sehingga hasil akhirnya berupa presentase adalah:
1.
Pembentukan rangkaian gram dengan panjang N karakter.
2.
Penghitungan nilai hash dari setiap gram menggunakan fungsi hash.
3.
Pemilihan beberapa nilai hash menjadi fingerprint dokumen.
4.
Menentukan presentase kemiripan antar dokumen menggunakan persamaan
Jaccard Coefficient.
Universitas Sumatera Utara
2.3
Metode N-Gram
Teknik N-Gram didasarkan pada pemisahan teks menjadi string dengan panjang
n mulai dari posisi tertentu dalam suatu teks. Posisi N-Gram berikutnya dihitung dari
posisi yang sebenarnya bergeser sesuai dengan offset yang diberikan. Nilai offset
bergantung pada pembagian yang digunakan dalam N-Gram. Pembagian N-Gram
dapat bervariasi tergantung dari pendekatan dalam membagi teks menjadi bentuk NGram. N-Gram untuk setiap string dihitung dan kemudian dibandingkan satu per
satu. N-Gram dapat berupa unigram (n=1), bigram (n=2), trigram (n=3), dan
seterusnya. Teknik N-Gram melibatkan 2 (dua) langkah, yaitu membagi string
menjadi overlapping N-Gram (suatu set substring dengan panjang n) dan
melakukan pengecekan untuk mendapatkan substring yang memiliki struktur yang
sama. Dalam memperkirakan similarity maka teknik N-Gram sering dipadukan
dengan pendekatan statistika untuk memperoleh similarity dari 2 (dua) buah sample,
seperti Sorensen-Dice Coefficient, Jaccard Coefficient, dan lainnya (Eric, 2015).
Algoritma yang menggunakan fingerprint seperti algoritma Manber memiliki
satu metode utama yaitu metode N-Gram. Metode N-Gram merupakan metode yang
berfungsi untuk memecah kata ataupun kalimat menjadi sebuah rangkaian dengan
panjang N karakter. sebagai contoh :
“ PEPAYA ”
dengan nilai N = 2, maka akan menghasilkan :
“PE”, “EP”, “PA”, “AY”, “YA”
Metode N-Gram mempunyai peranan yang sangat penting karena merupakan
langkah awal dalam memproses pembentukan fingerprint. Dengan kata lain metode
N-Gram memiliki pengaruh terbesar pertama pada hasil akhir yang dikeluarkan.
Pengaruh nilai N pada metode N-Gram yaitu semakin kecil nilai N yang
Universitas Sumatera Utara
digunakan akan semakin besar persentase yang dihasilkan nantinya. Namun tidak
selalu dengan menggunakan nilai N = 1, maka hasil yang didapatkan lebih baik.
Alasannya adalah jika kalimat terdiri dari huruf yang sama dengan kalimat
bandingnya, maka akan menghasilkan presentase kemiripan 100%. Sebagai contoh :
“ RAMAH “
: “R”, “A”, “M”, “A”, “H”
“ MARAH “
: “M”, “A”, “R”, “A”, “H”
Didapatkan 4 huruf yang sama , sehingga menghasilkan persentase sebesar
100% . Oleh karena itu, pengguna N-Gram harus disesuaikan dengan kondisi dari
teks yang akan diuji.
2.4
Nilai Hash
Hash merupakan teknik untuk mengubah string menjadi nilai unik dengan panjang
tertentu yang nantinya akan berfungsi sebagai penanda string tersebut (Pratama, et al
2012).
Hashing adalah transformasi aritmatik sebuah string dari karakter menjadi
nilai yang merepresentasikan string aslinya. Menurut bahasanya, hash berarti
memenggal dan kemudian menggabungkan. Hashing digunakan sebagai metode untuk
menyimpan data dalam sebuah array agar penyimpanan data, pencarian data,
penambahan data, dan penghapusan data dapat dilakukan dengan cepat. Ide dasarnya
adalah menghitung posisi record yang dicari dalam array, bukan membandingkan
record dengan isi pada array. Fungsi yang mengembalikan nilai atau kunci disebut
fungsi hash (hash function) dan array yang digunakan disebut tabel hash (hash table).
Hash table menggunakan struktur data array asosiatif yang mengasosiasikan record
dengan sebuah field kunci unik berupa bilangan (hash) yang merupakan representasi
dari record tersebut (Ayhodia, 2010).
Hash terdiri dari dua elemen, yaitu fungsi hash dan nilai hash. Hubungan
kedua elemen tersebut adalah rangkaian gram yang dihasilkan dari proses N-Gram
kemudian diolah dengan menggunakan fungsi hash yang nantinya akan dipilih mejadi
fingerprint dokumen (Purwaetasari, et al 2009).
Fungsi hash yang digunakan pada algoritma Manber adalah fungsi hash yang
mengubah setiap karakter pada rangkaian string kedalam bentuk kode ASCII dan
Universitas Sumatera Utara
memprosesnya kedalam persamaan (2.1) berikut:
H(C1 ….. ck + 1) = c1 * b k -1 + c2 * b k-2 * ….. + c k-1 * b + ck
(2.1)
Keterangan :
H
: nilai Hash
c
: nilai ASCII karakter
b
: basis bilangan prima
k
: banyaknya karakter
2.4.1
Macam - Macam Fungsi Hash
Fungsi Hash (dilambangkan dengan h(k)) bertugas untuk mengubah k (key) menjadi
suatu nilai dalam interval [0....X], dimana "X" adalah jumlah maksimum dari recordrecord yang dapat ditampung dalam tabel. Jumlah maksimum ini bergantung pada
ruang memori yang tersedia. Fungsi Hash yang ideal adalah mudah dihitung dan
bersifat random, agar dapat menyebarkan semua key. Dengan key yang tersebar,
berarti data dapat terdistribusi secara seragam bentrokan dapat dicegah. Sehingga
kompleksitas waktu model Hash dapat mencapai O(1), di mana kompleksitas tersebut
tidak ditemukan pada struktur model lain. Ada beberapa macam fungsi hash yang
relatif sederhana yang dapat digunakan dalam penyimpanan database:
1.
Metode Pembagian Bersisa (Division-Remainder Method)
Jumlah lokasi memori yang tersedia dihitung, kemudian jumlah tersebut digunakan
sebagai pembagi untuk membagi nilai yang asli dan menghasilkan sisa. Sisa tersebut
adalah nilai hash-nya. Secara umum, rumusnya h(k)= k mod m. Dalam hal ini m
adalah jumlah lokasi memori yang tersedia pada array. Fungsi hash tersebut
menempatkan record dengan kunci K pada suatu lokasi memori yang beralamat h(k).
Metode ini sering menghasilkan nilai hash yang sama dari dua atau lebih nilai aslinya
atau disebut dengan bentrokan. Karena itu, dibutuhkan mekanisme khusus untuk
menangani bentrokan yang disebut kebijakan resolusi bentrokan.
2.
Melipat (Folding)
Metode ini membagi nilai asli ke dalam beberapa bagian, kemudian menambahkan
Universitas Sumatera Utara
nilai-nilai tersebut, dan mengambil beberapa angka terakhir sebagai nilai hash-nya.
3.
Transformasi Radiks (Radix Transformation)
Karena nilai dalam bentuk digital, basis angka atau radiks dapat diganti sehingga
menghasilkan urutan angka-angka yang berbeda. Contohnya nilai desimal (basis 10)
bisa ditransformasikan kedalam heksadesimal (basis 16). Digit atas hasilnya bisa
dibuang agar panjang nilai hash dapat seragam.
4. Pengaturan ulang digit (Digit Rearrangement)
Metode ini mengubah urutan digit dengan pola tertentu. Contohnya mengambil digit
ke tiga sampai ke enam dari nilai aslinya, kemudian membalikan urutannya dan
menggunakan digit yang terurut terbalik itu sebagai nilai hash. Fungsi hash yang
bekerja dengan baik untuk penyimpanan pada database belum tentu bekerja dengan
baik untuk keperluan kriptografi atau pengecekan kesalahan. Ada beberapa fungsi
hash terkenal yang digunakan untuk keperluan kriptografi. Diantaranya adalah fungsi
hash message-diggest, contohnya MD2, MD4, dan MD5, digunakan untuk
menghasilkan nilai hash dari tanda tangan digital yang disebut messagediggest. Ada
pula Secure Hash Algorithm (SHA), sebuah algoritma standar yang menghasilkan
message-diggest yang lebih besar (60-bit) dan serupa dengan MD4.
5. Kebijakan resolusi bentrokan di luar tabel
Artinya tabel hash bukan lagi menjadi array of records, tetapi menjadi array of
pointers. Setiap pointer menunjuk ke senarai berkait yang berisi record tersebut.
Metode seperti ini dinamakan chaining.
Dalam bentuk sederhananya berupa senarai berkait dari record-record yang
menghasilkan nilai hash yang sama. Penambahan record dapat dilakukan dengan
menambah senarai berisi record tersebut. Untuk pencarian pada tabel, pertama-tama
dicari nilai hash terlebih dahulu, kemudian dilakukan pencarian dalam senarai berkait
yang bersangkutan. Untuk menghapus suatu record, hanya menghapus senarainya
saja. Kelebihan dari metode chaining ini adalah proses penghapusan yang relatif
mudah dan penambahan ukuran tabel hash bisa ditunda untuk waktu yang lebih lama
karena penurunan kinerjanya berbanding lurus meskipun seluruh lokasi pada tabel
sudah penuh. Bahkan, penambahan ukuran tabel bisa saja tidak perlu dilakukan sama
sekali karena penurunan kinerjanya yang linier. Misalnya, tabel yang berisi record
Universitas Sumatera Utara
sebanyak dua kali lipat kapasitas yang direkomendasikan hanya akan lebih lambat dua
kali lipat dibanding yang berisi sebanyak kapasitas yang direkomendasikan.
Kekurangan dari metode chaining ini sama dengan kekurangan dari senarai berkait.
Operasi traversal pada senarai berkait memiliki performa cache yang buruk.
Struktur data lain dapat digunakan sebagai pengganti senarai berkait. Misalnya
dengan pohon seimbang, kompleksitas waktu terburuk bisa diturunkan menjadi O(log
n) dari yang sebelumnya O(n). Namun demikian, karena setiap senarai diharapkan
untuk tidak panjang, struktur data pohon ini kurang efisien kecuali tabel hash tersebut
memang didesain untuk jumlah record yang banyak atau kemungkinan terjadi
bentrokan sangat besar yang mungkin terjadi karena masukan memang disengaja agar
terjadi bentrokan.
6. Kebijakan resolusi bentrokan di dalam tabel
Berbeda dengan kebijakan resolusi bentrokan di luar tabel, pada kebijakan resolusi di
dalam tabel data disimpan di dalam hash tabel tersebut, bukan dalam senarai berkait
yang bertambah terus menerus. Dengan demikian data yang disimpan tidak mungkin
bisa lebih banyak daripada jumlah ruang pada tabel hash. Jika suatu record akan
dimasukkan ke dalam tabel hash pada lokasi sesuai nilai hash-nya dan ternyata lokasi
tersebut sudah diisi dengan record lain maka harus dicari lokasi alternatif yang masih
belum terisi dengan cara tertentu, cara ini disebut Open Addressing.
Ada beberapa metode untuk menemukan lokasi baru yang masih kosong. Dalam
proses menemukan lokasi baru ini harus menggunakan pola tertentu agar record yang
disimpan tetap bisa dicari dengan mudah saat dibutuhkan kemudian. Metode-metode
yang sering digunakan adalah:
1.
Linear Probing
Dengan menambahkan suatu interval pada hasil yang diperoleh dari fungsi hash
sampai ditemukan lokasi yang belum terisi.
2. Quadratic Probing / Squared Probing
Hampir sama dengan linear probing, hanya saja pada quadratic probing, hasil yang
diperoleh dari fungsi hash ditambahkan dengan kuadrat dari interval yang digunakan.
3. Double Hashing
Pada metode double hashing, jika lokasi yang diperoleh dengan fungsi hash sudah
Universitas Sumatera Utara
terisi, maka dilakukan proses hash lagi sampai ditemukan lokasi yang belum terisi.
2.5
Fingerprint Dokumen
Fingerprint dokumen adalah ciri khas yang terdapat pada sebuah dokumen teks. Ciri
ini dapat dikatakan pula sebagai rangkaian pembentuk atau dasar dari dokumen
tersebut. Fingerprint berasal dari rangkaian nilai hash yang sudah memenuhi
persyaratan.
Fingerprint merupakan tujuan pertama dari algoritma yang menggunakan
fingerprint sebagai langkah penyelesaiannya. Masing-masing algoritma memilki cara
yang berbeda dalam memilih fingerprint. Pada algoritma Manber, pemilihan
fingerprint dilakukan dengan cara mengecek apabila nilai hash memenuhi persyaratan
(2.2) berikut:
H Mod P = 0
(2.2)
Dimana :
H
= Nilai Hash
Mod
= Modulo sisa bagi
P
= Nilai Pembagi
0
= Hasil pembagian sisa harus bernilai 0
Ada tiga faktor yang mempengaruhi pemilihan fingerprint, yaitu :
1.
Nilai N menggunakan N-Gram perubahan panjang yang terbentuk akan
mengubah fingerprint yang dipilih.
2.
Basis pada fungsi hash tentunya perubahan basis akan mengubah nilai hashyang
dihasilkan serta fingerprint yang dipilih.
3.
Nilai pembagi pada persamaan (2.2). Perubahan pada nilai pembagi akan
mengubah nilai hash yang akan dipilih menjadi fingerprint. Penggunaan nilai
pembagi ini harus disesuaikan dengan kondisi dokumen teks.
Universitas Sumatera Utara
2.6
Jaccard’s Similarity Coeficient
Jaccard’s Similarity Coeficient (Jacard 1912) merupakan index umum untuk variable
biner. Hal ini didefenisikan sebagai hasil bagi persimpangan dan serikat variable
dibandingkan berpasangan antara dua benda (Djafar, 2014).
Untuk menghitung kemiripan dari dua dokumen, diperlukan Jaccard’s Similarity
Coeficient, dengan rumus :
Similaritas (di, dj) =
| w(di ) ∩ w (dj)|
| w(di ) ∪ w (dj)|
x 100 %
Dimana :
| w(di ) ∪ w (dj) | = irisan fingerprint teks uji dengan teks banding.
| w(di ) ∪ w (dj)| = union fingerprint teks uji dengan teks banding.
Similaritas (di, dj) = Hasil bagi irisan dengan gabungan fingerprint yang dikalikan 100
%.
Universitas Sumatera Utara
BAB 2
LANDASAN TEORI
2.1
Pengertian Text Mining
Text Mining dapat juga diartikan sebagai penambangan data berupa teks yang
bersumber dari dokumen untuk mencari karta-kata yang merupakan perwakilan isi
atau pembentuk dokumen teks sehingga penganalisisan dapat dibuat. Berikut ini
merupakan tahapan umum pada proses Text Mining, yaitu (Nugroho, 2011):
1. Text Preprocessing, adalah pemrosesan pertama kali yang ditujukan untuk
membuat teks menjadi data yang siap olah pada proses berikutnya.
2. Case Folding, adalah pengubahan semua karakter yang merupakan huruf kapital
menjadi huruf kecil.
3. Filtering, adalah proses pengambilan kata-kata penting sesuai dengan kondisi yang
diinginkan.
4. Tokenizing, adalah tahapan pemecah kalimat yang di-input berdasarkan kata yang
penyusunnya, biasanya dipisah oleh karakter whitespace.
5. Text Transformation, adalah pembentukan teks yang masuk pada proses untuk
mendapatkan representasi dokumen yang sesuai.
a. Stemming, adalah proses pencarian kata dasar dari setiap kata hasil tokenizing.
b. Synonim Recognation, adalah pengubahan kata yang memiliki makna yang
sama dengan penulisan berbeda.
c. Feature Selection, adalah pengurangan dimensi teks sehingga akan
menghasilkan kata-kata yang merupakan dasar dari isi teks.
d. Pattern Discovery, adalah penemuan pola atau pengetahuan dari seluruh teks
Universitas Sumatera Utara
2.2 Algoritma Manber
Algoritma Manber merupakan salah satu dari tiga algoritma yang menggunakan
fingerprint dalam proses penyelesaian permasalahannya, selain algoritma Winowing
dan Rabin-Karp. Penggunaan fingerprint ini ditujukan agar dapat mengidentifikasi
penjiplakan termasuk bagian-bagian kecil yang mirip dalam dokumen dengan jumlah
kata yang cukup banyak (Purwaetasari, et al.2009).
Setiap algoritma memiliki penyelesaian permasalahan yang berbeda, namun
algoritma Manber dan Winowing memiliki langkah penyelesain yang hampir sama.
Adapun perbedaan algoritma Manber dan algoritma Winowing adalah sebagai berikut
(Kurniawati & Wicaksana, 2008):
1.
Jumlah langkah yang lebih sedikit sehingga waktu pemrosesan dokumen menjadi
lebih cepat.
2.
Tidak memberikan informasi dimana posisi fingerprint berada.
3.
Pemilihan fingerprint yang berbeda.
Pada Algoritma Manber, fingerprint dipilih dari setiap nilai hash yang memenuhi
persyaratan.
H mod P = 0
di mana H adalah nilai hash dan P adalah nilai pembagi yang digunakan, sementara
pada Algoritma Winowing dipilih nilai hash minimum dalam setiap window. Adapun
secara singkat, konsep dasar algoritma Manber dimulai dari tahap pencarian kata
sehingga hasil akhirnya berupa presentase adalah:
1.
Pembentukan rangkaian gram dengan panjang N karakter.
2.
Penghitungan nilai hash dari setiap gram menggunakan fungsi hash.
3.
Pemilihan beberapa nilai hash menjadi fingerprint dokumen.
4.
Menentukan presentase kemiripan antar dokumen menggunakan persamaan
Jaccard Coefficient.
Universitas Sumatera Utara
2.3
Metode N-Gram
Teknik N-Gram didasarkan pada pemisahan teks menjadi string dengan panjang
n mulai dari posisi tertentu dalam suatu teks. Posisi N-Gram berikutnya dihitung dari
posisi yang sebenarnya bergeser sesuai dengan offset yang diberikan. Nilai offset
bergantung pada pembagian yang digunakan dalam N-Gram. Pembagian N-Gram
dapat bervariasi tergantung dari pendekatan dalam membagi teks menjadi bentuk NGram. N-Gram untuk setiap string dihitung dan kemudian dibandingkan satu per
satu. N-Gram dapat berupa unigram (n=1), bigram (n=2), trigram (n=3), dan
seterusnya. Teknik N-Gram melibatkan 2 (dua) langkah, yaitu membagi string
menjadi overlapping N-Gram (suatu set substring dengan panjang n) dan
melakukan pengecekan untuk mendapatkan substring yang memiliki struktur yang
sama. Dalam memperkirakan similarity maka teknik N-Gram sering dipadukan
dengan pendekatan statistika untuk memperoleh similarity dari 2 (dua) buah sample,
seperti Sorensen-Dice Coefficient, Jaccard Coefficient, dan lainnya (Eric, 2015).
Algoritma yang menggunakan fingerprint seperti algoritma Manber memiliki
satu metode utama yaitu metode N-Gram. Metode N-Gram merupakan metode yang
berfungsi untuk memecah kata ataupun kalimat menjadi sebuah rangkaian dengan
panjang N karakter. sebagai contoh :
“ PEPAYA ”
dengan nilai N = 2, maka akan menghasilkan :
“PE”, “EP”, “PA”, “AY”, “YA”
Metode N-Gram mempunyai peranan yang sangat penting karena merupakan
langkah awal dalam memproses pembentukan fingerprint. Dengan kata lain metode
N-Gram memiliki pengaruh terbesar pertama pada hasil akhir yang dikeluarkan.
Pengaruh nilai N pada metode N-Gram yaitu semakin kecil nilai N yang
Universitas Sumatera Utara
digunakan akan semakin besar persentase yang dihasilkan nantinya. Namun tidak
selalu dengan menggunakan nilai N = 1, maka hasil yang didapatkan lebih baik.
Alasannya adalah jika kalimat terdiri dari huruf yang sama dengan kalimat
bandingnya, maka akan menghasilkan presentase kemiripan 100%. Sebagai contoh :
“ RAMAH “
: “R”, “A”, “M”, “A”, “H”
“ MARAH “
: “M”, “A”, “R”, “A”, “H”
Didapatkan 4 huruf yang sama , sehingga menghasilkan persentase sebesar
100% . Oleh karena itu, pengguna N-Gram harus disesuaikan dengan kondisi dari
teks yang akan diuji.
2.4
Nilai Hash
Hash merupakan teknik untuk mengubah string menjadi nilai unik dengan panjang
tertentu yang nantinya akan berfungsi sebagai penanda string tersebut (Pratama, et al
2012).
Hashing adalah transformasi aritmatik sebuah string dari karakter menjadi
nilai yang merepresentasikan string aslinya. Menurut bahasanya, hash berarti
memenggal dan kemudian menggabungkan. Hashing digunakan sebagai metode untuk
menyimpan data dalam sebuah array agar penyimpanan data, pencarian data,
penambahan data, dan penghapusan data dapat dilakukan dengan cepat. Ide dasarnya
adalah menghitung posisi record yang dicari dalam array, bukan membandingkan
record dengan isi pada array. Fungsi yang mengembalikan nilai atau kunci disebut
fungsi hash (hash function) dan array yang digunakan disebut tabel hash (hash table).
Hash table menggunakan struktur data array asosiatif yang mengasosiasikan record
dengan sebuah field kunci unik berupa bilangan (hash) yang merupakan representasi
dari record tersebut (Ayhodia, 2010).
Hash terdiri dari dua elemen, yaitu fungsi hash dan nilai hash. Hubungan
kedua elemen tersebut adalah rangkaian gram yang dihasilkan dari proses N-Gram
kemudian diolah dengan menggunakan fungsi hash yang nantinya akan dipilih mejadi
fingerprint dokumen (Purwaetasari, et al 2009).
Fungsi hash yang digunakan pada algoritma Manber adalah fungsi hash yang
mengubah setiap karakter pada rangkaian string kedalam bentuk kode ASCII dan
Universitas Sumatera Utara
memprosesnya kedalam persamaan (2.1) berikut:
H(C1 ….. ck + 1) = c1 * b k -1 + c2 * b k-2 * ….. + c k-1 * b + ck
(2.1)
Keterangan :
H
: nilai Hash
c
: nilai ASCII karakter
b
: basis bilangan prima
k
: banyaknya karakter
2.4.1
Macam - Macam Fungsi Hash
Fungsi Hash (dilambangkan dengan h(k)) bertugas untuk mengubah k (key) menjadi
suatu nilai dalam interval [0....X], dimana "X" adalah jumlah maksimum dari recordrecord yang dapat ditampung dalam tabel. Jumlah maksimum ini bergantung pada
ruang memori yang tersedia. Fungsi Hash yang ideal adalah mudah dihitung dan
bersifat random, agar dapat menyebarkan semua key. Dengan key yang tersebar,
berarti data dapat terdistribusi secara seragam bentrokan dapat dicegah. Sehingga
kompleksitas waktu model Hash dapat mencapai O(1), di mana kompleksitas tersebut
tidak ditemukan pada struktur model lain. Ada beberapa macam fungsi hash yang
relatif sederhana yang dapat digunakan dalam penyimpanan database:
1.
Metode Pembagian Bersisa (Division-Remainder Method)
Jumlah lokasi memori yang tersedia dihitung, kemudian jumlah tersebut digunakan
sebagai pembagi untuk membagi nilai yang asli dan menghasilkan sisa. Sisa tersebut
adalah nilai hash-nya. Secara umum, rumusnya h(k)= k mod m. Dalam hal ini m
adalah jumlah lokasi memori yang tersedia pada array. Fungsi hash tersebut
menempatkan record dengan kunci K pada suatu lokasi memori yang beralamat h(k).
Metode ini sering menghasilkan nilai hash yang sama dari dua atau lebih nilai aslinya
atau disebut dengan bentrokan. Karena itu, dibutuhkan mekanisme khusus untuk
menangani bentrokan yang disebut kebijakan resolusi bentrokan.
2.
Melipat (Folding)
Metode ini membagi nilai asli ke dalam beberapa bagian, kemudian menambahkan
Universitas Sumatera Utara
nilai-nilai tersebut, dan mengambil beberapa angka terakhir sebagai nilai hash-nya.
3.
Transformasi Radiks (Radix Transformation)
Karena nilai dalam bentuk digital, basis angka atau radiks dapat diganti sehingga
menghasilkan urutan angka-angka yang berbeda. Contohnya nilai desimal (basis 10)
bisa ditransformasikan kedalam heksadesimal (basis 16). Digit atas hasilnya bisa
dibuang agar panjang nilai hash dapat seragam.
4. Pengaturan ulang digit (Digit Rearrangement)
Metode ini mengubah urutan digit dengan pola tertentu. Contohnya mengambil digit
ke tiga sampai ke enam dari nilai aslinya, kemudian membalikan urutannya dan
menggunakan digit yang terurut terbalik itu sebagai nilai hash. Fungsi hash yang
bekerja dengan baik untuk penyimpanan pada database belum tentu bekerja dengan
baik untuk keperluan kriptografi atau pengecekan kesalahan. Ada beberapa fungsi
hash terkenal yang digunakan untuk keperluan kriptografi. Diantaranya adalah fungsi
hash message-diggest, contohnya MD2, MD4, dan MD5, digunakan untuk
menghasilkan nilai hash dari tanda tangan digital yang disebut messagediggest. Ada
pula Secure Hash Algorithm (SHA), sebuah algoritma standar yang menghasilkan
message-diggest yang lebih besar (60-bit) dan serupa dengan MD4.
5. Kebijakan resolusi bentrokan di luar tabel
Artinya tabel hash bukan lagi menjadi array of records, tetapi menjadi array of
pointers. Setiap pointer menunjuk ke senarai berkait yang berisi record tersebut.
Metode seperti ini dinamakan chaining.
Dalam bentuk sederhananya berupa senarai berkait dari record-record yang
menghasilkan nilai hash yang sama. Penambahan record dapat dilakukan dengan
menambah senarai berisi record tersebut. Untuk pencarian pada tabel, pertama-tama
dicari nilai hash terlebih dahulu, kemudian dilakukan pencarian dalam senarai berkait
yang bersangkutan. Untuk menghapus suatu record, hanya menghapus senarainya
saja. Kelebihan dari metode chaining ini adalah proses penghapusan yang relatif
mudah dan penambahan ukuran tabel hash bisa ditunda untuk waktu yang lebih lama
karena penurunan kinerjanya berbanding lurus meskipun seluruh lokasi pada tabel
sudah penuh. Bahkan, penambahan ukuran tabel bisa saja tidak perlu dilakukan sama
sekali karena penurunan kinerjanya yang linier. Misalnya, tabel yang berisi record
Universitas Sumatera Utara
sebanyak dua kali lipat kapasitas yang direkomendasikan hanya akan lebih lambat dua
kali lipat dibanding yang berisi sebanyak kapasitas yang direkomendasikan.
Kekurangan dari metode chaining ini sama dengan kekurangan dari senarai berkait.
Operasi traversal pada senarai berkait memiliki performa cache yang buruk.
Struktur data lain dapat digunakan sebagai pengganti senarai berkait. Misalnya
dengan pohon seimbang, kompleksitas waktu terburuk bisa diturunkan menjadi O(log
n) dari yang sebelumnya O(n). Namun demikian, karena setiap senarai diharapkan
untuk tidak panjang, struktur data pohon ini kurang efisien kecuali tabel hash tersebut
memang didesain untuk jumlah record yang banyak atau kemungkinan terjadi
bentrokan sangat besar yang mungkin terjadi karena masukan memang disengaja agar
terjadi bentrokan.
6. Kebijakan resolusi bentrokan di dalam tabel
Berbeda dengan kebijakan resolusi bentrokan di luar tabel, pada kebijakan resolusi di
dalam tabel data disimpan di dalam hash tabel tersebut, bukan dalam senarai berkait
yang bertambah terus menerus. Dengan demikian data yang disimpan tidak mungkin
bisa lebih banyak daripada jumlah ruang pada tabel hash. Jika suatu record akan
dimasukkan ke dalam tabel hash pada lokasi sesuai nilai hash-nya dan ternyata lokasi
tersebut sudah diisi dengan record lain maka harus dicari lokasi alternatif yang masih
belum terisi dengan cara tertentu, cara ini disebut Open Addressing.
Ada beberapa metode untuk menemukan lokasi baru yang masih kosong. Dalam
proses menemukan lokasi baru ini harus menggunakan pola tertentu agar record yang
disimpan tetap bisa dicari dengan mudah saat dibutuhkan kemudian. Metode-metode
yang sering digunakan adalah:
1.
Linear Probing
Dengan menambahkan suatu interval pada hasil yang diperoleh dari fungsi hash
sampai ditemukan lokasi yang belum terisi.
2. Quadratic Probing / Squared Probing
Hampir sama dengan linear probing, hanya saja pada quadratic probing, hasil yang
diperoleh dari fungsi hash ditambahkan dengan kuadrat dari interval yang digunakan.
3. Double Hashing
Pada metode double hashing, jika lokasi yang diperoleh dengan fungsi hash sudah
Universitas Sumatera Utara
terisi, maka dilakukan proses hash lagi sampai ditemukan lokasi yang belum terisi.
2.5
Fingerprint Dokumen
Fingerprint dokumen adalah ciri khas yang terdapat pada sebuah dokumen teks. Ciri
ini dapat dikatakan pula sebagai rangkaian pembentuk atau dasar dari dokumen
tersebut. Fingerprint berasal dari rangkaian nilai hash yang sudah memenuhi
persyaratan.
Fingerprint merupakan tujuan pertama dari algoritma yang menggunakan
fingerprint sebagai langkah penyelesaiannya. Masing-masing algoritma memilki cara
yang berbeda dalam memilih fingerprint. Pada algoritma Manber, pemilihan
fingerprint dilakukan dengan cara mengecek apabila nilai hash memenuhi persyaratan
(2.2) berikut:
H Mod P = 0
(2.2)
Dimana :
H
= Nilai Hash
Mod
= Modulo sisa bagi
P
= Nilai Pembagi
0
= Hasil pembagian sisa harus bernilai 0
Ada tiga faktor yang mempengaruhi pemilihan fingerprint, yaitu :
1.
Nilai N menggunakan N-Gram perubahan panjang yang terbentuk akan
mengubah fingerprint yang dipilih.
2.
Basis pada fungsi hash tentunya perubahan basis akan mengubah nilai hashyang
dihasilkan serta fingerprint yang dipilih.
3.
Nilai pembagi pada persamaan (2.2). Perubahan pada nilai pembagi akan
mengubah nilai hash yang akan dipilih menjadi fingerprint. Penggunaan nilai
pembagi ini harus disesuaikan dengan kondisi dokumen teks.
Universitas Sumatera Utara
2.6
Jaccard’s Similarity Coeficient
Jaccard’s Similarity Coeficient (Jacard 1912) merupakan index umum untuk variable
biner. Hal ini didefenisikan sebagai hasil bagi persimpangan dan serikat variable
dibandingkan berpasangan antara dua benda (Djafar, 2014).
Untuk menghitung kemiripan dari dua dokumen, diperlukan Jaccard’s Similarity
Coeficient, dengan rumus :
Similaritas (di, dj) =
| w(di ) ∩ w (dj)|
| w(di ) ∪ w (dj)|
x 100 %
Dimana :
| w(di ) ∪ w (dj) | = irisan fingerprint teks uji dengan teks banding.
| w(di ) ∪ w (dj)| = union fingerprint teks uji dengan teks banding.
Similaritas (di, dj) = Hasil bagi irisan dengan gabungan fingerprint yang dikalikan 100
%.
Universitas Sumatera Utara