INFORMATION RETRIEVAL
Job 2
Similarity Measurement
IDENTITAS
NAMA : Delvin Rasyid Pristanto
NIM : 5311420051
PRODI : Teknik Elektro
KELAS : TE 2020-3
Kompetensi
Setelah menyeleseikan tugas ini, mahasiswa mampu memahami proses dan metode
pengukuran kesamaan teks dengan menggunakan proses pembobotan biner dan dengan
menggunakan metode FT IDF
Teori Dasar
Proses pembobotan kata dengan menggunakan teori pengukuran kesmaan teks dapat dilihat
pada link berikut ini: https://youtu.be/ciGtx1FyEbI
Tugas
Implementasikan benerapa metode pengukuran kesamaan diantara adalah metode jacaard
koeffisien, cosine koefisien dan cosine similarity dengan menggunakan bahasa pemrograman
Python.
Instruksi PENYELESAIAN
a. Buatlah penyelesaian tugas diatas dengan menggunakan bahasa pemrograman
Python.
b. Text atau dokumen yang disimulasikan bisa membuat sendiri atau mengambil
contoh dari internet.
c. Kirimkan tugas Anda pada bagian Assigment yang telah disediakan di Elena.
d. Assigment akan mempunyai batas waktu CUT OFF.
PENYELESAIAN
TUGAS SIMILARITY
Membuat Kalimat
Membuat 2 kalimat yang nanti akan diukur dengan metode Jaccard dan Cosine Similarity
In [1]:
print(k1)
print(k2)
In [2]:
d1 = k1.split()
d2 = k2.split()
dk1 = set(d1)
dk2 = set(d2)
print(dk1)
print(dk2)
Mengumpulkan data dari kata-kata yang ada pada setiap kalimat dengan menggunakan rumus gabungan
himpunan seperti di bawah :
In [3]:
data = set(dk1).union(set(dk2))
print(data)
Mencari banyaknya frekuensi kata yang muncul dari setiap kalimat berdasarkan data gabungan
In [4]:
Kamusd1 = dict.fromkeys(data, 0)
for kata in dk1:
Kamusd1[kata] += 1
Kamusd2 = dict.fromkeys(data, 0)
for kata in dk2:
Kamusd2[kata] += 1
In [5]:
import pandas as pd
df = pd.DataFrame([Kamusd1,Kamusd2])
df
Out[5]:
0 1 1 0 1 0 1
1 1 0 1 1 1 1
Jaccard Similarity
Mencari nilai kesamaan 2 kalimat dengan menggunakan Jaccard Similarity dengan membagi irisan dari
data 1 2 dan gabungan dari data 1 2
𝐽𝑎𝑐𝑐𝑎𝑟𝑑(𝐴,𝐵) = 𝐴∩𝐵
𝐴∪𝐵
In [6]:
irisan = len(set(dk1).intersection(set(dk2)))
gabungan = len(set(dk1).union(set(dk2)))
jaccard = irisan/gabungan
print("Jaccard Similarity :", jaccard)
Cosine Coefficient
Mencari nilai kesamaan 2 kalimat dengan Cosine Coefficient dengan mencari panjang kedua kalimat
kemudian membagi irisan 2 kalimat dengan hasil perkalian kuadrat 2 kalimat
𝐶𝑜𝑠𝑖𝑛𝑒(𝐴,𝐵) = √𝐴∩𝐵
𝐴∗√𝐵
In [7]:
import math
P1 = len(dk1)
P2 = len(dk2)
irisan = len(set(dk1).intersection(set(dk2)))
In [8]:
cosine = irisan/(math.sqrt(P1)*math.sqrt(P2))
print("Cosine Coefficient :", cosine)
Cosine Similarity
Mencari nilai kesamaan 2 kalimat dengan Cosine Similarity, langkah pertama yaitu mengimport modul
numpy karena dalam perhitungan ini akan menghitung perkalian matriks. Rumus dari Cosine Similarity
sebagai berikut:
𝐶𝑜𝑠𝑖𝑛𝑒𝑆𝑖𝑚(𝐴,𝐵) = ||𝐴||.||𝐵||
𝐴.𝐵
Sebelum menghitung nilai dari Cosine Similarity kita harus mencari list value dari kedua data
In [9]:
WFk1 = list(Kamusd1.values())
WFk2 = list(Kamusd2.values())
print("Daftar Frekuensi k1 :", WFk1)
print("Daftar Frekuensi k2 :", WFk2)
Mencari Cosine Similarity dengan menghitung nilai Term Frequency terlebih dahulu
In [11]:
import numpy as np
In [12]:
cos_sim1 = np.dot(WFk1,WFk2)/(np.linalg.norm(WFk1)*np.linalg.norm(WFk2))
print("Cosine Similarity :", cos_sim1)
In [13]:
df = pd.DataFrame([tfk1, tfk2])
df
Out[13]:
In [14]:
Btfk1 = list(tfk1.values())
Btfk2 = list(tfk2.values())
In [15]:
cos_sim3 = np.dot(Btfk1,Btfk2)/(np.linalg.norm(Btfk1)*np.linalg.norm(Btfk2))
print("Cosine Similarity :", cos_sim3)
In [16]:
df = pd.DataFrame({
'Jaccard':[jaccard],
'Cosine Coefficient':[cosine],
'Cosine Similarity':[cos_sim1]
})
df
Out[16]: