Bab 2 Tinjauan Pustaka · 2016. 10. 17. · 6 Bab 2 Tinjauan Pustaka . 2.1 Penelitian Terdahulu ....

17
6 Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu Penelitian mengenai penggunaan metode String Matching salah satunya adalah oleh McCulloch dan Pitts pada Finite automata. Finite automata dapat dinyatakan sebagai model pengenal bahasa. Bahasa yang dikenal finite automata adalah bahasa sederhana. Ada dua macam finite automata yaitu deterministic finite automata dan non deterministic finite automata. Finite automata merupakan alat abstrak yang berguna untuk mengkomputasi suatu string. Sebagai contoh, automata dapat dipakai untuk komputasi biologi yaitu mencocokkan string DNA. Pada artikel ini akan diangkat permasalahan untuk mencocokkan string DNA pada Aves. Salah satu cara untuk mempercepat proses komputasi adalah dengan memperlakukan string sebagai vektor pada algoritma vektor yang dikerjakan oleh finite automata (Yessica Nataliani, 2007). Sedangkan penelitian tentang penggunaan algoritma Levensthein adalah oleh Dra. Sulis Janu Hartati, MT dan Soliq, ST ., M.Kom tentang Penerapan Text Mining Pada Aplikasi Penilaian Kinerja Pegawai di BKKBN. Penilaian kinerja untuk setiap pegawai sangat diperlukan oleh perusahaan. Namun masih ada permasalahan yang sering timbul dalam proses penilaian kinerja. Sering kali pegawai kurang puas dengan hasil penilaian

Transcript of Bab 2 Tinjauan Pustaka · 2016. 10. 17. · 6 Bab 2 Tinjauan Pustaka . 2.1 Penelitian Terdahulu ....

  • 6

    Bab 2

    Tinjauan Pustaka

    2.1 Penelitian Terdahulu

    Penelitian mengenai penggunaan metode String Matching

    salah satunya adalah oleh McCulloch dan Pitts pada Finite

    automata. Finite automata dapat dinyatakan sebagai model

    pengenal bahasa. Bahasa yang dikenal finite automata adalah

    bahasa sederhana. Ada dua macam finite automata yaitu

    deterministic finite automata dan non deterministic finite

    automata. Finite automata merupakan alat abstrak yang berguna

    untuk mengkomputasi suatu string. Sebagai contoh, automata

    dapat dipakai untuk komputasi biologi yaitu mencocokkan string

    DNA. Pada artikel ini akan diangkat permasalahan untuk

    mencocokkan string DNA pada Aves. Salah satu cara untuk

    mempercepat proses komputasi adalah dengan memperlakukan

    string sebagai vektor pada algoritma vektor yang dikerjakan oleh

    finite automata (Yessica Nataliani, 2007).

    Sedangkan penelitian tentang penggunaan algoritma

    Levensthein adalah oleh Dra. Sulis Janu Hartati, MT dan Soliq,

    ST ., M.Kom tentang Penerapan Text Mining Pada Aplikasi

    Penilaian Kinerja Pegawai di BKKBN. Penilaian kinerja untuk

    setiap pegawai sangat diperlukan oleh perusahaan. Namun masih

    ada permasalahan yang sering timbul dalam proses penilaian

    kinerja. Sering kali pegawai kurang puas dengan hasil penilaian

  • 7

    dari atasan. Hal tersebut disebabkan karena kurang adanya

    transparansi antara atasan dengan pegawai. Oleh karena itu,

    diperlukan adanya suatu transparansi dalam penilaian kinerja

    untuk menghindari masalah-masalah yang muncul karena

    terjadinya ketidakpuasan dalam penilaian kinerja pegawai dalam

    suatu perusahaan. Uji coba tugas akhir terhadap pegawai

    BKKBN Kabupaten Madiun dilakukan dengan memasukkan nilai

    (Free Text) berupa kalimat sederhana maupun kalimat bertingkat

    yang diperoleh dari Manager Bagian (Pejabat Penilai) kemudian

    dilakukan proses sehingga menghasilkan nilai yang berupa angka.

    Nilai angka tersebut dapat dijadikan ukuran terhadap hasil kinerja

    pegawai tiap periode di BKKBN Kabupaten Madiun (Prasetyo,

    2008).

    Pada penelitian ini menjelaskan tentang seberapa besar

    tingkat kemiripan judul dan abstract skripsi. Dengan

    menginputkan judul dan abstract maka aplikasi ini akan memberi

    saran dengan menampilkan skripsi yang serupa atau hampir sama

    dengan yang diinputkan.

    2.2 Plagiarisme

    Plagiarisme merupakan tindakan menjiplak, mencuri atau

    mengambil ide, hasil karya atau tulisan orang lain, baik seluruh,

    sebagian besar maupun sebagian kecil, untuk jadi ide atau karya

    tulisan sendiri tanpa menyebutkan nama penulis dan sumber

    aslinya.

  • 8

    Ada sejumlah pola umum atau modus operandi yang

    biasanya dilakukan seorang penulis dalam melakukan plagiasi

    terhadap karya orang lain maupun karyanya sendiri. Pertama,

    seorang penulis mengambil tulisan orang lain dan mengklaim

    sebagai tulisannya sendiri. Kedua, seorang penulis mengambil

    gagasan orang lain menjadi gagasannya sendiri. Misalnya, dalam

    suatu diskusi, peserta diskusi mengajukan sejumlah gagasan unik

    yang menarik. Dalam menulis suatu artikel, penulis yang menjadi

    narasumber atau peserta diskusi lalu menulis dan menyatakan

    gagasan itu berasal dari dirinya.

    Ketiga, mengambil hasil riset orang lain jadi temuannya

    sendiri. Keempat, mengakuisisi hasil riset atau hasil karya

    kelompok jadi hasil riset atau hasil karya sendiri. Kelima,

    menerbitkan kembali hasil tulisannya sendiri yang sudah

    diterbitkan sebelumnya dalam suatu buku atau jurnal meskipun

    menyebutkan sumbernya. Keenam, meringkas dan

    memparafrasekan (mengutip tak langsung) suatu pemikiran dari

    suatu sumber ke dalam karya tulisnya tanpa menyebutkan

    sumbernya (Lako, 2012).

    Klasifikasi mengenai plagiarisme dapat dibuat tergantung

    dari berbagai aspek pandang :

    – Dari segi substansi yang dicuri,

    – Dari segi kesengajaan,

    – Dari segi volume/proporsi

  • 9

    – Dari pola pencurian, dapat dilakukan kata demi kata,

    maupun dapat diseling dari berbagai sumber dan dengan

    kata-kata sendiri,

    – Ada pula Auto-plagiarism/self-plagiarism.

    Self-plagiarism terjadi ketika seseorang menggunakan

    ulang karya sendiri dari suatu publikasi sebelumnya tanpa

    mencantumkan referensi karya lama ke suatu publikasi yang

    baru. Jenis plagiarism ini sebenarnya dapat dianggap “ringan”,

    namun bila dimaksudkan atau di kemudian hari dimanfaatkan

    misal untuk menambah kredit akademik, maka dapat dianggap

    sebagai pelanggaran “berat” etika akademik.

    Terdapat pula jenis plagiarisme lainnya, yakni accidental

    plagiarism. Sebagai contoh, seorang ibu membacakan sebuah

    cerita kepada anaknya yang masih kecil secara berkala. Saat

    dewasa, anak itu membuat tugas atau laporan berdasarkan cerita

    ibunya tersebut. Jika beberapa orang secara independen

    menuangkan ide dan analisis yang sama maka hal ini bukan

    dikatakan sebagai plagiat.

    Sedangkan plagiarisme dalam penulisan akademik ada dua

    tipe utama yaitu:

    Plagiarisme ide adalah menggunakan ide (misalnya

    penjelasan, teori, kesimpulan, hipotesis, kiasan) secara

    keseluruhan atau sebagian, atau dengan pengubahan sedikit

    tanpa memberi kredit pada penciptanya. Pencipta ide tadi

  • 10

    tidak menuliskan idenya di media publikasi yang bisa

    dirujuk.

    Plagiarisme teks.

    2.3 Net Beans

    Pengembangan NetBeans diawali dari Xelfi, sebuah proyek

    mahasiswa tahun 1997 di bawah bimbingan Fakultas Matematika

    dan Fisika Universitas Charles, Praha. Sebuah perusahaan

    kemudian dibentuk untuk proyek tersebut dan menghasilkan versi

    komersial NetBeans IDE hingga kemudian dibeli oleh Sun

    Microsystem pada tahun 1999. Sun kemudian menjadikan

    NetBeans open source pada bulan Juni tahun 2000. Sejak itu

    komunitas NetBeans terus berkembang.

    NetBeans mengacu pada dua hal, yakni platform untuk

    pengembangan aplikasi desktop java, dan sebuah Integrated

    Development Environment (IDE) yang dibangun menggunakan

    platform NetBeans. Platform NetBeans memungkinkan aplikasi

    dibangun dari sekumpulan komponen perangkat lunak moduler

    yang disebut „modul‟. Sebuah modul adalah suatu arsip Java

    (Java archive) yang memuat kelas-kelas Java untuk berinteraksi

    dengan NetBeans Open API dan file manifestasi yang

    mengidentifikasinya sebagai modul. Karena modul dapat

    dikembangkan secara independen, aplikasi berbasis platform

    NetBeans dapat dengan mudah dikembangkan oleh pihak ketiga

    secara mudah dan powerful.

  • 11

    2.4 Bahasa Pemrograman Java

    Bahasa Java merupakan bahasa pemrograman Object

    Oriented Programming (OOP) karya Sun Microsystem Inc. Rilis

    resmi level beta dilakukan pada November 1995. Dua bulan

    berikutnya Netscape menjadi perusahaan pertama yang

    memperoleh lisensi bahasa Java dari Sun Microsystem Inc

    (Hariyanto, 2007).

    Java dirancang untuk menjadi bahasa yang memiliki

    kemampuan tinggi dalam hal portabilitas dan pemanfaatan

    jaringan tanpa mengabaikan kestabilan, keamanan, serta

    kemudahan dari sisi desain dan pemrograman aplikasi.

    Java yang semula ditujukan untuk pemprograman applet di

    web browser telah berkembang menjadi bahasa pemprograman

    pengembangan aneka ragam aplikasi, mulai dari yang berjalan di

    handheld devices seperti handphone, PDA (Personal Digital

    Assistant) sampai aplikasi tersebar skala enterprise di beragam

    komputer server. Java merupakan bahasa orientasi objek untuk

    pengembangan aplikasi mandiri, aplikasi berbasis internet,

    aplikasi untuk perangkat cerdas yang dapat berkomunikasi lewat

    internet/jaringan komunikasi. Java tidak lagi hanya bahasa untuk

    membuat applet yang memperindah halaman web tapi Java telah

    menjadi bahasa untuk pengembangan aplikasi skala enterprise

    berbasis jaringan besar (Hariyanto, 2007).

    Sebutan Java 2 diberikan untuk java versi 1.2 dan versi

    berikutnya. Java 2 terbagi dalam 3 kategori, yaitu:

  • 12

    Java 2 Standart Edition (J2SE). Kategori ini digunakan

    untuk menjalankan aplikasi Java pada level komputer

    personal.

    Java 2 Enterprise Edition (J2EE). Kategori ini

    dikhususkan untuk pengembangan aplikasi Java pada

    lingkungan enterprise/server.

    Java 2 Micro Edition (J2ME). Kategori ini digunakan

    untuk pengembangan aplikasi Java yang

    diimplementasikan pada perangkat semacam ponsel,

    Palm, PDA, dan PocketPC.

    2.5 String Matching

    Pengertian string menurut Dictionary of Algorithms and

    Data Structures, National Institute of Standards and Technology

    (NIST) adalah susunan dari karakter-karakter (angka, alfabet atau

    karakter yang lain) dan biasanya direpresentasikan sebagai

    struktur data array. String dapat berupa kata, frase, atau kalimat.

    Pencocokan string merupakan bagian penting dari sebuah

    proses pencarian string (string searching) dalam sebuah

    dokumen. Hasil dari pencarian sebuah string dalam dokumen

    tergantung dari teknik atau cara pencocokan string yang

    digunakan.

    Pencocokan string (string matching) menurut Dictionary of

    Algorithms and Data Structures, National Institute of Standards

    and Technology (NIST), diartikan sebagai sebuah permasalahan

  • 13

    untuk menemukan pola susunan karakter string di dalam string

    lain atau bagian dari isi teks.

    Pencocokan string (string matching) secara garis besar

    dapat dibedakan menjadi dua yaitu :

    1 Exact string matching, merupakan pencocokan string

    secara tepat dengan susunan karakter dalam string yang

    dicocokkan memiliki jumlah maupun urutan karakter dalam

    string yang sama. Contoh : kata step akan menunjukkan

    kecocokan hanya dengan kata step.

    2 Inexact string matching atau Fuzzy string matching,

    merupakan pencocokan string secara samar, maksudnya

    pencocokan string dimana string yang dicocokkan memiliki

    kemiripan dimana keduanya memiliki susunan karakter

    yang berbeda (mungkin jumlah atau urutannya) tetapi

    string-string tersebut memiliki kemiripan baik kemiripan

    tekstual/penulisan (approximate string matching) atau

    kemiripan ucapan (phonetic string matching). Inexact string

    matching masih dapat dibagi lagi menjadi dua yaitu :

    a. Pencocokan string berdasarkan kemiripan penulisan

    (approximate string matching) merupakan pencocokan

    string dengan dasar kemiripan dari segi penulisannya

    (jumlah karakter, susunan karakter dalam dokumen).

    Tingkat kemiripan ditentukan dengan jauh tidaknya beda

    penulisan dua buah string yang dibandingkan tersebut

    dan nilai tingkat kemiripan ini ditentukan oleh

  • 14

    pemrogram (programmer). Contoh : c mpuler dengan

    compiler, memiliki jumlah karakter yang sama tetapi ada

    dua karakter yang berbeda. Jika perbedaan dua karakter

    ini dapat ditoleransi sebagai sebuah kesalahan penulisan

    maka dua string tersebut dikatakan cocok.

    b. Pencocokan string berdasarkan kemiripan ucapan

    (phonetic string matching) merupakan pencocokan

    string dengan dasar kemiripan dari segi pengucapannya

    meskipun ada perbedaan penulisan dua string yang

    dibandingkan tersebut. Contoh step dengan steb dari

    tulisan berbeda tetapi dalam pengucapannya mirip

    sehingga dua string tersebut dianggap cocok. Contoh

    yang lain adalah step, dengan steppe, sttep, stepp, stepe.

    2.5.1 Approximate String Matching

    Dalam metode ini, dilakukan suatu penghitungan perbedaan

    antara dua string. Penghitungan tersebut meliputi tiga operasi

    string yaitu operasi penghapusan, operasi penyisipan dan operasi

    penggantian. Untuk contoh yang akan digunakan, diasumsikan S

    adalah string sumber pencarian dan T adalah string yang ingin

    dicari.

    Operasi Penghapusan

    Misalnya S = memori dan T = meri. Penghapusan dilakukan

    untuk karakter m pada lokasi ke-3 dan o pada lokasi ke-4. Dua

  • 15

    operasi penghapusan tersebut menunjukkan transformasi S ke T

    yang diilustrasikan pada Rumus 2.1.

    1 2 3 4 5 6

    T = m e - - r i

    S = m e m o r i

    Rumus 2.1 Operasi Penghapusan

    Operasi Penyisipan

    Misalnya S = brian dan T = barisan. Operasi sisip

    dilakukan dengan menyisipkan a dan s pada posisi 2 dan 5 yang

    dapat ditunjukkan pada Rumus 2.2.

    1 2 3 4 5 6 7

    T = b a r i s a n

    S = b – r i – a n

    a s

    Rumus 2.2 Operasi Penyisipan

    Operasi Penggantian

    Misalnya S = perasa dan T = pewara. String T

    ditransformasikan menjadi S dengan melakukan penggantian

    (subtitusi) pada posisi ke-3 dan ke-5. Huruf r dan s pada S

    digantikan dengan w dan r pada T. Prosesnya dapat ditunjukkan

    pada Rumus 2.3.

  • 16

    1 2 3 4 5 6

    T = p e w a r a

    S = p e r a s a

    w r

    Rumus 2.3 Operasi Penggantian

    Ketiga operasi di atas dapat digunakan dalam contoh

    berikut ini. Misalnya T = abrakadabra dan S = avrakhadabah. S

    dapat ditransformasikan menjadi T pada Rumus 2.4.

    1 2 3 4 5 6 7 8 9 10 11 12 13

    T = a b r a k - a d a b r a -

    S = a v r a k h a d a b - a h

    b r

    Rumus 2.4 Operasi Gabungan

    Operasi yang dilakukan pada Rumus 2.4 yaitu:

    mengganti v pada posisi 2

    menghapus h pada posisi 6

    menyisipkan r pada posisi 11

    menghapus h pada posisi 13

    Secara keseluruhan terdapat 4 operasi, yaitu 1 penggantian, 2

    penghapusan, dan 1 penyisipan.

  • 17

    2.6 Levenshtein Distance

    Algoritma Levenshtein, atau sering disebut dengan

    Levenshtein Distance atau Edit Distance merupakan algoritma

    pencarian jumlah perbedaan string yang ditemukan oleh Vladimir

    Levenshtein, seorang ilmuwan Rusia, pada tahun 1965.

    Algoritma ini digunakan secara luas dalam berbagai bidang,

    misalnya mesin pencari, pengecek ejaan (spell checking),

    pengenal pembicaraan (speech recognition), pengucapan dialek,

    analisis DNA, pendeteksi pemalsuan, dan lain-lain.

    Pada dasarnya, algoritma ini menghitung jumlah minimum

    pentransformasian suatu string menjadi string lain yang meliputi

    penggantian, penghapusan, dan penyisipan. Algoritma ini

    digunakan untuk mengoptimalkan pencarian tersebut karena

    sangat tidak efisien jika dilakukan pencarian setiap kombinasi

    operasi-operasi string tersebut. Oleh karena itu, algoritma ini

    tergolong program dinamis dalam pencarian nilai minimal

    tersebut.

    Dalam algoritma ini, dilakukan penyeleksian panjang kedua

    string terlebih dahulu. Jika salah satu atau kedua string

    merupakan string kosong, jalannya algoritma ini berhenti dan

    memberikan hasil edit distance yang bernilai nol atau panjang

    string yang tidak kosong.

    levDis( “”, “” ) = 0

    levDis( s , “” ) = levDis( “” , s ) = |s|

    Rumus 2.5 Edit Distance

  • 18

    Jika panjang string keduanya tidak nol, setiap string

    memiliki sebuah karakter terakhir, misalnya c1 dan c2. Misalnya

    bagian string pertama tanpa c1 adalah s1 dan bagian string kedua

    tanpa c2 adalah s2, dapat dikatakan penghitungan yang dilakukan

    adalah cara mentransformasikan s1+c1 menjadi s2+c2. Jika c1

    sama dengan c2, dapat diberikan nilai cost 0 dan nilai edit

    distance-nya adalah nilai edit distance dari pentransformasian s1

    menjadi s2. Jika c1 berbeda dengan c2, dibutuhkan pengubahan

    c1 menjadi c2 sehingga nilai cost-nya 1. Akibanya, nilai edit

    distance-nya adalah nilai edit distance dari pentransformasian s1

    menjadi s2 ditambah 1. Kemungkinan lain adalah dengan

    menghapus c1 dan merubah s1 menjadi s2+c2 sehingga nilai edit

    distance-nya dari pentransformasian s1 menjadi s2+c2 ditambah

    1. Begitu pula dengan penghapusan c2 dan merubah s1+c1

    menjadi s2. Digunakan s1 sebagai string sumber dan s2 sebagai

    string target maka implementasinya pada Java seperti pada

    Gambar 2.1.

    Gambar 2.1 Implementation Edit Distance

  • 19

    Untuk dua string, X adalah panjang dari n dan Y adalah

    panjang dari m. ditetapkan D(i,j) dengan edit distance diantara

    X[1..i] dan Y[1..j] di mana i adalah karakter pertama dari X dan j

    adalah karakter pertama dari Y. Maka edit distance diantara X

    dan Y adalah D(n,m).

    Untuk menghitung edit distance ed(x,y) diantara string x

    dan y, menyusun matrik M1...m+1,1...n+1 dimana Mi,j adalah nilai

    minimum dari operasi perubahan yang diperlukan untuk

    menyamakan x1..i ke y1..j ditunjukan pada Rumus 2.6.

    D(i,0) = i i = 1 ... M

    D(0,j) = j j = 1 ... N

    D(i-1 , j) + 1

    D(i , j) = min D(i , j-1) + 1

    D(i-1 , j-1) + 1 ; if X(i) ≠ Y(j)

    0 ; if X(i) = Y(j)

    Rumus 2.6 Min Edit Distance

    Tabel 2.1 Edit Distance

  • 20

    Dari Tabel 2.1 ditetapkan tabel untuk i adalah kata

    PENJARA dan untuk j adalah kata JARAK. Dengan

    menerapakan Rumus 2.6 maka diperoleh hasil seperti pada Tabel

    2.2.

    Tabel 2.2 Hasil Min Edit Distance

    Recurrence relation :

    For each i = 1…M

    For each j = 1…N

    D(i-1 , j) + 1 deletion

    D(i , j) = min D(i , j-1) + 1 insertion

    D(i-1 , j-1) + 1 ; if X(i) ≠ Y(j) substitution

    0 ; if X(i) = Y(j)

    LEFT deletion

    ptr(i,j) = DOWN insertion

    DIAG subtitution

    Rumus 2.7 Arah Min Edit Distance

  • 21

    Dari Tabel 2.2 diambil contoh untuk tabel distance (1,1) yaitu :

    D(1-1 , 1) + 1

    D(1,1) = min D(1 , 1-1) + 1

    D(1-1 , 1-1) + 0 →

    D(0 , 1) + 1 → 2

    D(1,1) = min D(1 , 0) + 1 → 2

    D(0 , 0) + 0 → 0

    Rumus 2.8 Nilai Minimum

    Dari Rumus 2.8 maka D(1,1) memiliki satu nilai minimum

    yaitu 0. Pada Tabel 2.2 Elemen terakhir (yang paling kanan

    bawah) adalah elemen yang nilainya menyatakan jarak kedua

    string yang dibandingkan atau disebut nilai distance, yaitu 4.

    Setelah didapatkan distance dari kedua string, maka dapat

    ditentukan formula untuk menghitung derajat plagiarisme kedua

    string.

    Rumus 2.9 Derajat Plagiarisme

    Keterangan untuk Rumus 2.9 yaitu:

    Diff = distance

    Max(CS,ST) = merupakan nilai yang paling panjang yang

    diberikan dari perbandingan CS dan ST

    +0 karena e = i dengan kondisi

    +1 if X(i) ≠ Y(j)

    +0 if X(i) = Y(j)

  • 22

    CS = PENJARA

    ST = JARAK

    Diff = 4

    Maka perhitungannya adalah sebagai berikut :

    Plagiarized Value = {1 - (4 / 7)} * 100

    = {3/7} * 100

    = 42,857

    Jadi, derajat plagiarismenya adalah 42,857%.