Menghitung Kemiripan Dokumen dengan TF-IDF Cosine Similarity

Kali ini saya ingin sharing hasil belajar saya tentang metode TF-ID Cosine Similarity.

Metode TF-ID Cosine Similarity bisa digunakan untuk menganalisa kesamaan atau kemiripan suatu dokumen teks dengan dokumen lainnya. Hal ini bisa digunakan untuk membandingkan suatu karya tulis, apakah plagiat atau bukan. Dan seberapa persen kemiripannya dengan karya tulis yang lain.

Langkah pertama dibuat dulu contoh teks dokumen karya tulis yang akan dicari kemiripannya, misalnya :

Q = “Sistem Pakar adalah sistem informasi yang berisi dengan pengetahuan dari pakar sehingga dapat digunakan untuk konsultasi.”

Kemudian ini adalah contoh isi dokumen teks yang akan digunakan sebagai pembanding untuk dicari kemiripannya :

D1 = “Kecerdasan buatan adalah kemampuan sistem untuk menafsirkan data, belajar dari data tersebut, dan menggunakannya untuk mencapai tujuan dan tugas tertentu”
D2 = “Sistem pakar adalah suatu program komputer yang dirancang untuk memodelkan kemampuan penyelesaian masalah yang dilakukan seorang pakar.”
D3 = “Sistem pendukung keputusan yang dapat membantu dalam pemecahan masalah penentuan produk yang baik dan ideal.”

Dokumen-dokumen tersebut dikumpulkan dalam satu array dengan dokumen Q yang bisa kita sebut D0, sehingga semuanya adalah D0, D1, D2, D3. Seperti ini :

D0 (Q) = “Sistem Pakar adalah sistem informasi yang berisi dengan pengetahuan dari pakar sehingga dapat digunakan untuk konsultasi.”
D1 = “Kecerdasan buatan adalah kemampuan sistem untuk menafsirkan data, belajar dari data tersebut, dan menggunakannya untuk mencapai tujuan dan tugas tertentu”
D2 = “Sistem pakar adalah suatu program komputer yang dirancang untuk memodelkan kemampuan penyelesaian masalah yang dilakukan seorang pakar.”
D3 = “Sistem pendukung keputusan yang dapat membantu dalam pemecahan masalah penentuan produk yang baik dan ideal.”

Kemudian semua dokumen diproses tokenisasi dan stemming atau biasa disebut preprocessing, untuk menghilangkan kata sambung dan imbuhan, sehingga tersisa kata dasar saja dan tanpa tanda baca. Hasil preprocessing seperti ini :

D0(Q) = “sistem pakar sistem informasi isi tahu pakar guna konsultasi”
D1 = “cerdas buat mampu sistem tafsir data ajar data sebut guna capai tuju tugas tentu”
D2 = “sistem pakar suatu program komputer rancang model mampu selesai masalah laku orang pakar”
D3 = “sistem dukung putus bantu pecah masalah tentu produk baik ideal”

Dari semua dokumen tersebut diekstrak kata-kata yang ada di dalamnya. Hasilnya inilah daftar semua kata unik yang ada di keempat dokumen itu :

Setelah itu dicari TF (Term Frequency) yang berupa frekuensi banyaknya suatu kata muncul dalam suatu dokumen. Dihasilkan matrik TF seperti ini :

Kemudian dicari DF (Document Frequency) yang merupakan banyaknya frekuansi suatu kata muncul dalam semua dokumen :

Kemudian dicari IDF atau (Inverse Document Frequency) yang merupakan perhitungan bagaimana kata didistribusikan secara luas pada koleksi dokumen yang bersangkutan. Rumus IDF adalah :

IDF = log(n/df)+1

Dimana n adalah banyaknya dokumen. Misalnya untuk kata “Ajar” dan “Baik” :

IDF (Ajar) = log(4/1)+1 = 1.602059991
IDF (Guna) = log(4/2)+1 = 1.301029996

Hasilnya :

Kemudian dihitung nilai TF-IDF yang merupakan perkalian antara TF dan IDF. Misalnya :

TF-IDF (“Guna”, Q) = 1 * 1.301029996 = 1.301029996
TF-IDF (“Data”, D1) = 2 * 1.602059991 = 3.204119983
TF-IDF (“Ajar”, D2) = 0 * 1.602059991 = 0

Hasilnya :

Kemudian langkah terakhir mencari nilai cosine similarity dengan rumus :

Langkah mencari cosine similarity ini akan dipecah menjadi beberapa langkah, yaitu :

a. Mencari DxQ yaitu perkalian skalar TF-IDF masing D terhadap TF-IDF Q, kemudian dicari totalnya. Misalnya :

DxQ (“Guna”, D1 thd Q) = TF-IDF(D1, “Guna”) * TF-IDF(Q, “Guna”) = 1.301029996 * 1.301029996 = 1.69267905
DxQ (“Pakar”, D2 thd Q) = TF-IDF(D2, “Data”) * TF-IDF(Q, “Data”) = 2.602059991 * 2.602059991 = 6.770716198
DxQ (“Baik”, D3 thd Q) = TF-IDF(D3, “Baik”) * TF-IDF(Q, “Baik”) = 1.602059991 * 0 = 0

Hasilnya seperti ini :

b. Mencari kuadrat TF-IDF. Kemudian dicari totalnya, dan totalnya diakar kuadrat. Misalnya :

Kuadrat TF-IDF (“Guna”, Q) = 1.301029996 ^ 2 = 1.69267905
Kuadrat TF-IDF (“Data”, D1) = 3.204119983 ^ 2 = 10.26638486
Kuadrat TF-IDF (“Ajar”, D2) = 0 ^ 2 = 0

Hasilnya :

c. Mencari Hasil Cosine Similarity tiap D dari [total DxQ] tiap D dibagi perkalian antara [total akar kuadrat dari kuadrat TF-IDF] milik masing2 D dan [total akar kuadrat dari kuadrat TF-IDF] milik Q.

Cosine Similarity (D1) = 3.69267905 / (4.767575916 * 6.072659363)
Cosine Similarity (D2) = 8.770716198 / (4.767575916 * 5.629284504)
Cosine Similarity (D3) = 2 / (4.767575916 * 4.727740645)

Hasilnya :

Akhirnya didapatkan nilai kemiripan dokumen D0 (Query) terhadap semua dokumen pembanding lainnya :

D1 = 12.75%
D2 = 32.68 %
D3 =8.87%

Sehingga Dokumen yang paling mirip adalah Dokumen Kedua dengan kemiripan sebesar 32.68%

Contoh aplikasi Deteksi Kemiripan Dokumen Metode TF-IDF (Term Frequency Inverse Document Frequency) Cosine Similarity yang dibuat dengan bahasa pemrograman PHP dan Database MySQL bisa dilihat di web pada link ini

Demikian sharing hasil belajar saya. Semoga bisa bermanfaat sebagai referensi pembanding untuk anda yang sedang belajar metode Similarity semacam ini. Mohon maaf jika ada kesalahan atau kekurangan dalam pemahaman dan penjelasan metode ini. Silakan beri komentar dan masukan.

Selamat belajar :)