Anda di halaman 1dari 5

BIG DATA AND

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

Sertakan atau tempelkan hasil penyelesaian Anda pada bagian ini


Berikan penjelasan mengapa nilai atau indeks yang dihasilkan mempunyai perbedaan nilai
untuk tiap-tiap metode
3/7/22, 4:12 PM Tugas Similarity - Jupyter Notebook

TUGAS SIMILARITY

Membuat Kalimat
Membuat 2 kalimat yang nanti akan diukur dengan metode Jaccard dan Cosine Similarity

In [1]:

k1 = "Film ini sangat mengesankan"


k2 = "Film ini mengesankan tapi membingungkan"

print(k1)
print(k2)

Film ini sangat mengesankan

Film ini mengesankan tapi membingungkan

In [2]:

d1 = k1.split()
d2 = k2.split()

dk1 = set(d1)
dk2 = set(d2)

print(dk1)
print(dk2)

{'sangat', 'ini', 'Film', 'mengesankan'}

{'mengesankan', 'tapi', 'ini', 'membingungkan', 'Film'}

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)

{'mengesankan', 'sangat', 'tapi', 'ini', 'membingungkan', 'Film'}

Mencari banyaknya frekuensi kata yang muncul dari setiap kalimat berdasarkan data gabungan

localhost:8888/notebooks/Tugas Similarity.ipynb 1/4


3/7/22, 4:12 PM Tugas Similarity - Jupyter Notebook

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

print("data 1 :", Kamusd1)


print("data 2 :", Kamusd2)

data 1 : {'mengesankan': 1, 'sangat': 1, 'tapi': 0, 'ini': 1, 'membingungka


n': 0, 'Film': 1}

data 2 : {'mengesankan': 1, 'sangat': 0, 'tapi': 1, 'ini': 1, 'membingungka


n': 1, 'Film': 1}

In [5]:

import pandas as pd
df = pd.DataFrame([Kamusd1,Kamusd2])
df

Out[5]:

mengesankan sangat tapi ini membingungkan Film

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)

Jaccard Similarity : 0.5

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

localhost:8888/notebooks/Tugas Similarity.ipynb 2/4


3/7/22, 4:12 PM Tugas Similarity - Jupyter Notebook

𝐶𝑜𝑠𝑖𝑛𝑒(𝐴,𝐵) = √𝐴∩𝐵
𝐴∗√𝐵
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 Coefficient : 0.6708203932499369

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)

Daftar Frekuensi k1 : [1, 1, 0, 1, 0, 1]

Daftar Frekuensi k2 : [1, 0, 1, 1, 1, 1]

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)

Cosine Similarity : 0.6708203932499369

localhost:8888/notebooks/Tugas Similarity.ipynb 3/4


3/7/22, 4:12 PM Tugas Similarity - Jupyter Notebook

In [13]:

def ComputeTF(Kamus, d):


tf = {}
dkamus = len(d)
for kata, jml in Kamus.items():
tf[kata] = jml/float(dkamus)
return(tf)

tfk1 = ComputeTF(Kamusd1, d1)


tfk2 = ComputeTF(Kamusd2, d2)

df = pd.DataFrame([tfk1, tfk2])
df

Out[13]:

mengesankan sangat tapi ini membingungkan Film

0 0.25 0.25 0.0 0.25 0.0 0.25

1 0.20 0.00 0.2 0.20 0.2 0.20

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)

Cosine Similarity : 0.6708203932499369

In [16]:

df = pd.DataFrame({
'Jaccard':[jaccard],
'Cosine Coefficient':[cosine],
'Cosine Similarity':[cos_sim1]
})
df

Out[16]:

Jaccard Cosine Coefficient Cosine Similarity

0 0.5 0.67082 0.67082

localhost:8888/notebooks/Tugas Similarity.ipynb 4/4

Anda mungkin juga menyukai