Deteksi Persentase Kemiripan Teks Menggunakkan Algoritma Cosine Similarity

Analisa Masalah

Belakangan ini sering ditemukan kecurangan dalam pembuatan karya ilmiah seperti mengambil ide maupun karya ilmiah orang lain dan mengakuinya sebagai karya ilmiah buatannya. Hal ini biasanya dikenal dengan penjiplakan atau plagiarisme. Untuk mendeteksi kesamaan sebuah karya ilmiah dibutuhkan waktu yang cukup lama dan ketelitian yang tinggi yang sulit dilakukan secara manual. Terkadang orang yang melakukan penjiplakan hanya mengganti kata-kata dengan kata lain yang memiliki arti maupun makna yang sama.

Untuk memeriksa hal tersebut diperlukan waktu, ketelitian serta pemahaman akan bahasa yang digunakan. Jika pemeriksaan dilakukan secara manual juga akan memakan waktu yang cukup lama. Oleh karena itu diperlukan suatu sistem pendeteksi kesamaan dokumen teks yang dilakukan secara terkomputerisasi yang bisa mendeteksi kesamaan makna dari kata-kata yang ada

Melalui artikel ini, metode Cosine Similarity digunakan untuk mencari dokumen yang memiliki kesamaan teks terhadap dokumen lain yang ada di dalam database.


Apa itu Cosine Cosine Similarity ?

Cosine similarity berfungsi untuk membandingkan kemiripan antar dokumen, dalam hal ini yang dibandingkan adalah query dengan dokumen latih. Dalam menghitung cosine similarity, pertama yang di lakukan yaitu melakukan perkalian skalar antara query dengan dokumen kemudian dijumlahkan, setelah itu melakukan perkalian antara panjang dokumen dengan panjang query yang telah dikuadratkan, setelah itu di hitung akar pangkat dua. Selanjutnya hasil perkalian skalar tersebut di bagi dengan hasil perkalian panjang dokumen dan query.

Rumus dapat dilihat sebagai berikut.

Rumus algoritma cosine similarity


Langkah-langkah perhitungan manual algoritma Cosine Similarity.

  1. Ditentukan terlebih dahulu masing-masing query, yaitu query dari jawaban (D), query dari key jawaban (Q) dan gabungan keduanya(Queries)
  2. Ketiga query tersebut dihilangkan stoplist atau simbol-simbol yang tidak mempengaruhi penilaian, seperti tanda titik, tanda koma, tanda seru, dan sebagainya
  3. Ketiga query tersebut dihilangkan stopwords atau kata-kata umum yang lazim digunakan dalam suatu query, seperti "dan", "jika", "di", "namun", "tetapi", dan sebagainya

Tabel 1 : Sampel Query
Dokumen Term Yang Mewakili Dokumen
Q data keterangan mentah belum diolah belum bisa dijadikan acuan mengambil suatu keputusan
D1 data data mentah sekumpulan
D2 belum belum bisa data diolah fakta informasi mentah menyajikan
D3 acuan belum belum bisa data dijadikan diolah informasi keputusan mentah pengambilan

  1. Dihitung nilai term frequency query jawaban dan query key jawaban terhadap queries. Jadi perhitungan term di query jawaban dan query key jawaban merujuk pada term yang terdapat dalam queries
  2. Dihitung nilai document frequency (n) atau banyaknya file (N) yang memiliki suatu term untuk tiap term dalam queries
  3. Dihitung nilai inverse document frequency dengan rumus : log (N/n) +1

Tabel 2 : Perhitungan TF dan IDF
No. Term tf df idf
Q D1 D2 D3 Log(n/df)+1
1. acuan 1 0 0 1 2 1.30103
2. belum 2 0 2 2 3 1.12493874
3. bisa 1 0 1 1 3 1.12493874
4. data 1 2 1 1 4 1
5. dijadikan 1 0 0 1 2 1.30103
6. diolah 1 0 1 1 3 1.12493874
7. fakta 0 0 1 0 1 1.60205999
8. informasi 0 0 1 1 2 1.30103
9. keputusan 1 0 0 1 2 1.30103
10. keterangan 1 0 0 0 1 1.60205999
11. mengambil 1 0 0 0 1 1.60205999
12. mentah 1 1 1 1 4 1
13. menyajikan 0 0 1 0 1 1.60205999
14. pengambilan 0 0 0 1 1 1.60205999
15. sekumpulan 0 1 0 0 1 1.60205999
16. suatu 1 0 0 0 1 1.60205999

  1. Dikalikan nilai term frequency dengan nilai inverse document frequency tiap term dalam Q maupun D.

Tabel 3 : Perhitungan TF/IDF = tf * idf
No. Term Q D1 D2 D3
1. acuan 1.30103 0 0 1.30103
2. belum 2.24987748 0 2.24987748 2.24987748
3. bisa 1.12493874 0 1.12493874 1.12493874
4. data 1 2 1 1
5. dijadikan 1.30103 0 0 1.30103
6. diolah 1.12493874 0 1.12493874 1.12493874
7. fakta 0 0 1.60205999 0
8. informasi 0 0 1.30103 1.30103
9. keputusan 1.30103 0 0 1.30103
10. keterangan 1.60205999 0 0 0
11. mengambil 1.60205999 0 0 0
12. mentah 1 1 1 1
13. menyajikan 0 0 1.60205999 0
14. pengambilan 0 0 0 1.60205999
15. sekumpulan 0 1.60205999 0 0
16. suatu 1.60205999 0 0 0

  1. Dihitung hasil perkalian skalar masing-masing query jawaban terhadap query key jawaban. Hasil perkalian dari setiap jawaban dengan query dijumlahkan (sesuai pembilang pada rumus di atas)

Tabel 4 : Hasil Perkalian Skalar Tiap D terhadap Q
No. Term D1 D2 D3
1. acuan 0 0 1.6926790609
2. belum 0 5.0619486750112 5.0619486750112
3. bisa 0 1.2654871687528 1.2654871687528
4. data 2 1 1
5. dijadikan 0 0 1.6926790609
6. diolah 0 1.2654871687528 1.2654871687528
7. fakta 0 0 0
8. informasi 0 0 0
9. keputusan 0 0 1.6926790609
10. keterangan 0 0 0
11. mengambil 0 0 0
12. mentah 1 1 1
13. menyajikan 0 0 0
14. pengambilan 0 0 0
15. sekumpulan 0 0 0
16. suatu 0 0 0
SUM (Ji . Q) : 3 9.5929230125167 14.670960195217

  1. Dihitung hasil perkalian vektor tiap query key jawaban dan query jawaban

(TF/IDF(Q,D))2
No. Term Q D1 D2 D3
1. acuan 1.692679 0 0 1.692679
2. belum 5.061949 0 5.061949 5.061949
3. bisa 1.265487 0 1.265487 1.265487
4. data 1 4 1 1
5. dijadikan 1.692679 0 0 1.692679
6. diolah 1.265487 0 1.265487 1.265487
7. fakta 0 0 2.566596 0
8. informasi 0 0 1.692679 1.692679
9. keputusan 1.692679 0 0 1.692679
10. keterangan 2.566596 0 0 0
11. mengambil 2.566596 0 0 0
12. mentah 1 1 1 1
13. menyajikan 0 0 2.566596 0
14. pengambilan 0 0 0 2.566596
15. sekumpulan 0 2.566596 0 0
16. suatu 2.566596 0 0 0
SUM (TF/IDF(Q,D))2 : 22.370749 7.566596 16.418794 18.930235
SQRT(SUM(TF/IDF(Q,D))2) 4.729773 2.750745 4.052011 4.350889

  1. Dihitung nilai Cosine similarity ( nilai vektor beda antara D terhadap Q) dengan rumus :

    Rumus algoritma cosine similarity


No. Teks Nilai Similitary Nilai (Nilai Similitary * bobot)
1. D1 : data data mentah sekumpulan 0.23058480 23.06 %
2. D2 : belum belum bisa data diolah fakta informasi mentah menyajikan 0.50054143 50.05 %
3. D3 : acuan belum belum bisa data dijadikan diolah informasi keputusan mentah pengambilan 0.71291907 71.29 %

untuk mendapatkan nilai persentase kedekatannya dokumen tersebut, bisa melihat kembali manual perhitunganya diatas.





About PayahTidur
Jasa Konsultasi Dan Pembuatan Program. Sudah Berpengalaman Lebih Dari 10 Tahun Dalam Dunia Pemrograman. Pengerjaan Cepat dan Harga Terjangkau.



Contact : 0813 7027 3471


PayahTidur Products
Sistem Pakar
SPK (Sistem Pendukung Keputusan)
Data Minning
JST (Jaringan Syaraf Tiruan)
Images Proccesing (Pengolahan Citra)
Sistem Informasi Geografis (SIG)
E-Commerce Website
Sistem Informasi


PayahTidur Skills
PHP
Microsoft Visual Studio
Android Mobile
JST (Jaringan Syaraf Tiruan)
Maps Google
Laravel Framework / CI Framework
Matlab
Java