Penerapan Metode Cosine Similarity dan pembobotan TF-IDF
Kegiatan yang umum dilakukan oleh sebuah instansi adalah kegiatan pengarsipan dokumen, baik dokumen dalam bentuk fisik maupun elektronik. Umumnya kegiatan pengarsipan melibatkan dokumen dengan jumlah yang cukup besar, sehingga diperlukan suatu metode yang praktis dan efisien dalam pengelolaanya, seperti metode cosine similarity.
Pengklasifikasian dokumen elektronik dengan jumlah yang banyak diperlukan agar data yang terkumpul dapat diproses menjadi informasi yang tepat. Pengklasifikasian dokumen dilakukan dalam upaya memisahkan atau mengelompokkan dokumen berdasarkan ciri-ciri atau kategori tertentu. Dengan banyaknya dokumen proses pengklasifikasian tidak mungkin dilakukan secara manual karena memerlukan banyak waktu dan tenaga. Salah satu metode yang dapat digunakan adalah dengan pengklasifikasian secara otomatis dengan text mining. Banyak metode text mining yang digunakan dalam mengklasifikasikan dokumen atau teks, salah satunya adalah algoritma cosine similarity. Cosine Similarity dapat diimplementasikan untuk menghitung nilai kemiripan antar kalimat dan menjadi salah satu teknik untuk mengukur kemiripan teks yang popular.
Cosine Similarity adalah suatu metode untuk membandingkan kemiripan antar dokumen, dalam hal ini yang dibandingkan adalah query dengan dokumen latihan
Rumus Cosine Similarity
Contoh :
Berikut contoh query dan dokumen latihan. Sebelumnya saya jelaskan kembali, query merupakan kalimat yang digunakan sebagai kunci sedangkan dokumen latihan adalah dokumen yang disediakan dalam database (cara gampangnya kurang lebih begitu).
Query | MAMPU MELAKSANAKAN PEMELIHARAAN DISTRIBUSI TEGANGAN RENDAH |
D1 | ASSISTANT TECHNICIAN PEMELIHARAAN JARINGAN TEGANGAN RENDAH |
D2 | MELAKSANAKAN PROSES ADMINISTRASI PELANGGAN |
D3 | JUNIOR TECHNICIAN PENYAMBUNGAN DAN PEMUTUSAN/ JUNIOR TECHNICIAN PEMELIHARAAN DISTRIBUSI TEGANGAN RENDAH |
D4 | MELAKSANAKAN SETELMEN TRANSAKSI ENERGI LISTRIK |
D5 | ASSISTANT TECHNICIAN PEMELIHARAAN ALAT PENGUKURAN DAN PEMBATAS (APP) |
Langkah-langkah penyelasaian sebagai berikut :
1. Tahap Proses Preprocessing
Tahap preprocessing memiliki tiga tahapan, adapun tahapannya sebagai berikut :
Query dan dokumen latihan akan melewati tahapan tokenizing, filtering dan steaming untuk menghasilkan kata dasar.
l Proses Tokenizing
Proses ini, query dan dokumen latihan diubah menjadih huruf kecil semua. Sampel sebagai berikut :
Sebelum | Menjadi | Sesudah |
ASSISTANT |
| assistant |
(APP) |
| app |
PEMUTUSAN/ |
| pemutusan |
Hasil dari contoh :
assitant | junior | rendah | pengukuran |
technician | technician | melaksanakan | dan |
pemeliharaan | penyambungan | sentelemen | pembatas |
jaringan | dan | transaksi | app |
tegangan | pemutusan | energi | mampu |
rendah | junior | listrik | melaksanakan |
melaksanakan | technician | assistant | pemeliharaan |
proses | pemeliharaan | technician | distribusi |
administratsi | distribusi | pemeliharaan | tegangan |
pelanggan | tegangan | alat | rendah |
l Proses Filtering
Proses filtering adalah semua kata penghubung preposisi, konjungsi, adjectiva, interjeksi, adverbia, verb dan pronomia yang terkandung dalam kata akan dihapus. Sampel sebagai berikut :
Sebelum | Sesudah |
dan | dihapus |
pembatas | pembatas |
satu | satu |
Hasil dari contoh :
assitant | junior | melaksanakan | pembatas |
technician | technician | sentelemen | app |
pemeliharaan | penyambungan | transaksi | mampu |
jaringan | pemutusan | energi | melaksanakan |
tegangan | junior | listrik | pemeliharaan |
rendah | technician | assistant | distribusi |
melaksanakan | pemeliharaan | technician | tegangan |
proses | distribusi | pemeliharaan | rendah |
administratsi | tegangan | alat |
|
pelanggan | rendah | pengukuran |
l Proses Steaming
Proses Steaming adalah data dari hasil filtering akan diproses kembali melewati proses steaming. Di mana semua kata akan dicek, apakah kata mengandung imbuhan prefiks, infiks, sufiks dan konfiks. Jika kata mengandung imbuhan, maka imbuhan akan dipotong dan kata akan menjadi kata dasar. Sampel sebagai berikut :
Sebelum | Menjadi | Sesudah |
pengukuran |
| ukur |
pembatas |
| batas |
jaringan |
| jaring |
pembuatan |
| buat |
Hasil dari contoh :
assitant | junior | laksana | batas |
technician | technician | sentelemen | app |
pelihara | sambung | transaksi | mampu |
jaring | putus | energi | laksana |
tegang | junior | listrik | pelihara |
rendah | technician | assistant | distribusi |
laksana | pelihara | technician | tegang |
proses | distribusi | pelihara | rendah |
administrasi | tegang | alat | |
langgan | rendah | ukur |
2. Tahapan Hapus Duplikat dan TF-IDF
Setelah melalui tahap steaming, maka akan dicek apakah ada duplikat pada setiap kata. Duplikat pada setiap kata jika sudah terhapus maka akan dilanjutkan ke tahapan TF-IDF seperti pada Tabel dibawah ini :
A. Proses Term Frequency
Kata | tfq | tfd1 | tfd2 | tfd3 | tfd4 | tfd5 |
assitant | 0 | 1 | 0 | 0 | 0 | 1 |
technician | 0 | 1 | 0 | 2 | 0 | 1 |
pelihara | 1 | 1 | 0 | 1 | 0 | 1 |
jaring | 0 | 1 | 0 | 0 | 0 | 0 |
tegang | 1 | 1 | 0 | 1 | 0 | 0 |
rendah | 1 | 1 | 0 | 1 | 0 | 0 |
laksana | 1 | 0 | 1 | 0 | 1 | 0 |
proses | 0 | 0 | 1 | 0 | 0 | 0 |
administrasi | 0 | 0 | 1 | 0 | 0 | 0 |
langgan | 0 | 0 | 1 | 0 | 0 | 0 |
junior | 0 | 0 | 0 | 2 | 0 | 0 |
sambung | 0 | 0 | 0 | 1 | 0 | 0 |
putus | 0 | 0 | 0 | 1 | 0 | 0 |
distribusi | 1 | 0 | 0 | 1 | 0 | 0 |
sentelemen | 0 | 0 | 0 | 0 | 1 | 0 |
transaksi | 0 | 0 | 0 | 0 | 1 | 0 |
energi | 0 | 0 | 0 | 0 | 1 | 0 |
listrik | 0 | 0 | 0 | 0 | 1 | 0 |
alat | 0 | 0 | 0 | 0 | 0 | 1 |
ukur | 0 | 0 | 0 | 0 | 0 | 1 |
batas | 0 | 0 | 0 | 0 | 0 | 1 |
app | 0 | 0 | 0 | 0 | 0 | 1 |
mampu | 1 | 0 | 0 | 0 | 0 | 0 |
Semua duplikasi di hapus, dan setiap kata akan di lihat kemiripannya dengan query dan dokumen.
B. Dokumen Frequency
Kata | df |
assitant | 2 |
technician | 4 |
pelihara | 4 |
jaring | 1 |
tegang | 3 |
rendah | 3 |
laksana | 3 |
proses | 1 |
administrasi | 1 |
langgan | 1 |
junior | 2 |
sambung | 1 |
putus | 1 |
distribusi | 2 |
sentelemen | 1 |
transaksi | 1 |
energi | 1 |
listrik | 1 |
alat | 1 |
ukur | 1 |
batas | 1 |
app | 1 |
mampu | 1 |
Hasil semua kemiripan akan dilakukan penghitungannya seperti tabel diatas. Selanjutnya akan dihitung inverse document frequency (idf). Adapun perhitungan dengan contoh yang sudah ada sebagai berikut :
-Kata 1 : mampu
Dik : n = jumlah dokumen = 5
df = 1
Dit : idf =...?
Jawab :
Langkah 1 : n/df =5/1=5
Langkah 2 : idf = log(n/df)
= log(5)
= 0,6990
-Kata 2 : assistant
Dik : n = jumlah dokumen = 5
df = 2
Dit : idf =...?
Jawab :
Langkah 1 : n/df = 5/2 =2,5
Langkah 2 : idf = log (n/df)
= log(2,5)
= 0,3979
Berikut merupakan hasil Inverse Document Frequency :
Kata | n/df | idf=(log(n/df)) |
assitant | 2,5 | 0,3979 |
technician | 1,25 | 0,0969 |
pelihara | 1,25 | 0,0969 |
jaring | 5 | 0,6990 |
tegang | 1,6667 | 0,2218 |
rendah | 1,6667 | 0,2218 |
laksana | 1,6667 | 0,2218 |
proses | 5 | 0,6990 |
administrasi | 5 | 0,6990 |
langgan | 5 | 0,6990 |
junior | 2,5 | 0,3979 |
sambung | 5 | 0,6990 |
putus | 5 | 0,6990 |
distribusi | 2,5 | 0,3979 |
sentelemen | 5 | 0,6990 |
transaksi | 5 | 0,6990 |
energi | 5 | 0,6990 |
listrik | 5 | 0,6990 |
alat | 5 | 0,6990 |
ukur | 5 | 0,6990 |
batas | 5 | 0,6990 |
app | 5 | 0,6990 |
mampu | 5 | 0,6990 |
Setelah melewati tahapan term frequency dan inverse document frequency selanjutnya akan melewati tahapan proses bobot dokumen. Di dapat perhitungan seperti contoh dari tahapan sebelumnya sebagai berikut :
-Bobot Query : mampu
Dik : tfq = 1
idf = 0,6990
Dit : wq = tfq *idf
Wq = 1*0,69897 = 0,69897
-Bobot Dokumen : (wd1) : asistant
Dik : tfd1= 1
idf = 0,3979
Dit : wd1 = tfd1 * idf
Wd1 = 1 * 0,3979
= 0,3979
Berikut merupakan hasil perhitungan bobot dokumen :
Kata | wq= tfq*idf | wd1= tfd1*idf | wd2= tfd2*idf | wd3= tfd3*idf | wd4= tfd4*idf | wd5= tfd5*idf |
assitant | 0 | 0,3979 | 0 | 0 | 0 | 0,3979 |
technician | 0 | 0,0969 | 0 | 0,1938 | 0 | 0,0969 |
pelihara | 0,0969 | 0,0969 | 0 | 0,0969 | 0 | 0,0969 |
jaring | 0 | 0,6990 | 0 | 0 | 0 | 0 |
tegang | 0,2218 | 0,2218 | 0 | 0,2218 | 0 | 0 |
rendah | 0,2218 | 0,2218 | 0 | 0,2218 | 0 | 0 |
laksana | 0,2218 | 0 | 0,2218 | 0 | 0,2218 | 0 |
proses | 0 | 0 | 0,6990 | 0 | 0 | 0 |
administrasi | 0 | 0 | 0,6990 | 0 | 0 | 0 |
langgan | 0 | 0 | 0,6990 | 0 | 0 | 0 |
junior | 0 | 0 | 0 | 0,7959 | 0 | 0 |
sambung | 0 | 0 | 0 | 0,6990 | 0 | 0 |
putus | 0 | 0 | 0 | 0,6990 | 0 | 0 |
distribusi | 0,3979 | 0 | 0 | 0,3979 | 0 | 0 |
sentelemen | 0 | 0 | 0 | 0 | 0,6990 | 0 |
transaksi | 0 | 0 | 0 | 0 | 0,6990 | 0 |
energi | 0 | 0 | 0 | 0 | 0,6990 | 0 |
listrik | 0 | 0 | 0 | 0 | 0,6990 | 0 |
alat | 0 | 0 | 0 | 0 | 0 | 0,6990 |
ukur | 0 | 0 | 0 | 0 | 0 | 0,6990 |
batas | 0 | 0 | 0 | 0 | 0 | 0,6990 |
app | 0 | 0 | 0 | 0 | 0 | 0,6990 |
mampu | 0,6990 | 0 | 0 | 0 | 0 | 0 |
jarak query dicari setelah pencarian bobot dokumen Perhitungan jarak query dapat dilihat sebagai berikut :
- Kata 1 : mampu
Dik : wq = 0,6990
Dit : |q|=..?
Jawaban : |q| =0,6990 2 = 0,4886
- Kata 2 : assistant
Dik : wq= 0
Dit : |q| =...?
Jawaban : |q|=02= 0
Berikut merupakan hasil perhitungan jarak query :
Kata | |q| |
assitant | 0 |
technician | 0 |
pelihara | 0,0094 |
jaring | 0 |
tegang | 0,0492 |
rendah | 0,0492 |
laksana | 0,0492 |
proses | 0 |
administrasi | 0 |
langgan | 0 |
junior | 0 |
sambung | 0 |
putus | 0 |
distribusi | 0,1584 |
sentelemen | 0 |
transaksi | 0 |
energi | 0 |
listrik | 0 |
alat | 0 |
ukur | 0 |
batas | 0 |
app | 0 |
mampu | 0,4886 |
Jumlah | 0,8040 |
Akar | 0,8966 |
Setelah mendapatkan bobot dokumen, selanjutnya akan di cari jarak dokumen. Berikut adalah contoh perhitungan jarak dokumen :
- Kata 1 : mampu
Dik : wd1 = 0
Dit : |dj| =...?
Jawab : |dj| = 02 = 0
- Kata 2 : asistant
Dik : wd1 = 0,3979
Dit : |dj| =...?
Jawab = |dj| = 0,39792 = 0,1584
Berikut merupakan hasil perhitungan jarak dokumen:
Kata | wd1^2 | wd2^2 | wd3^2 | wd4^2 | wd5^2 |
assitant | 0,1584 | 0 | 0 | 0 | 0,1584 |
technician | 0,0094 | 0 | 0,0376 | 0 | 0,0094 |
pelihara | 0,0094 | 0 | 0,0094 | 0 | 0,0094 |
jaring | 0,4886 | 0 | 0 | 0 | 0 |
tegang | 0,0492 | 0 | 0,0492 | 0 | 0 |
rendah | 0,0492 | 0 | 0,0492 | 0 | 0 |
laksana | 0 | 0,0492 | 0 | 0,0492 | 0 |
proses | 0 | 0,4886 | 0 | 0 | 0 |
administrasi | 0 | 0,4886 | 0 | 0 | 0 |
langgan | 0 | 0,4886 | 0 | 0 | 0 |
junior | 0 | 0 | 0,6334 | 0 | 0 |
sambung | 0 | 0 | 0,4886 | 0 | 0 |
putus | 0 | 0 | 0,4886 | 0 | 0 |
distribusi | 0 | 0 | 0,1584 | 0 | 0 |
sentelemen | 0 | 0 | 0 | 0,4886 | 0 |
transaksi | 0 | 0 | 0 | 0,4886 | 0 |
energi | 0 | 0 | 0 | 0,4886 | 0 |
listrik | 0 | 0 | 0 | 0,4886 | 0 |
alat | 0 | 0 | 0 | 0 | 0,4886 |
ukur | 0 | 0 | 0 | 0 | 0,4886 |
batas | 0 | 0 | 0 | 0 | 0,4886 |
app | 0 | 0 | 0 | 0 | 0,4886 |
mampu | 0 | 0 | 0 | 0 | 0 |
Jumlah | 0,7641 | 1,5149 | 1,9143 | 2,0035 | 2,1314 |
Akar | 0,8741 | 1,2308 | 1,3836 | 1,4154 | 1,4599 |
Selanjutnya akan dicari jarak dokumen query sebagai berikut :
-Kata 1 : mampu
Dik : wq = 0,6990
wd1= 0
Dit : q,dj =...?
Jawab :q,dj = wq*wd1
= 0,6990 * 0 = 0
-Kata 2 : assistant
Dik : wq = 0
wd1= 0,3979
Dit : q,dj =...?
Jawab :q,dj = wq*wd1
= 0*0,3979= 0
Hasil perhitungan jarak dokumen query adalah sebagai berikut :
Kata | wq*wd1 | wq*wd2 | wq*wd3 | wq*wd4 | wq*wd5 |
assitant | 0 | 0 | 0 | 0 | 0 |
technician | 0 | 0 | 0 | 0 | 0 |
pelihara | 0,0094 | 0 | 0,0094 | 0 | 0,0094 |
jaring | 0 | 0 | 0 | 0 | 0 |
tegang | 0,0492 | 0 | 0,0492 | 0 | 0 |
rendah | 0,0492 | 0 | 0,0492 | 0 | 0 |
laksana | 0 | 0,0492 | 0 | 0,0492 | 0 |
proses | 0 | 0 | 0 | 0 | 0 |
administrasi | 0 | 0 | 0 | 0 | 0 |
langgan | 0 | 0 | 0 | 0 | 0 |
junior | 0 | 0 | 0 | 0 | 0 |
sambung | 0 | 0 | 0 | 0 | 0 |
putus | 0 | 0 | 0 | 0 | 0 |
distribusi | 0 | 0 | 0,1584 | 0 | 0 |
sentelemen | 0 | 0 | 0 | 0 | 0 |
transaksi | 0 | 0 | 0 | 0 | 0 |
energi | 0 | 0 | 0 | 0 | 0 |
listrik | 0 | 0 | 0 | 0 | 0 |
alat | 0 | 0 | 0 | 0 | 0 |
ukur | 0 | 0 | 0 | 0 | 0 |
batas | 0 | 0 | 0 | 0 | 0 |
App | 0 | 0 | 0 | 0 | 0 |
Mampu | 0 | 0 | 0 | 0 | 0 |
Jumlah | 0,1078 | 0,0492 | 0,2662 | 0,0492 | 0,0094 |
3. Cosine Similarity
Langkah terakhir adalah melakukan cosine similarity untuk mendapatkan rekomendasi tingkat kemiripan suatu dokumen dengan query. Adapun perhitungan sebagai berikut :
-Dokumen 1 (d1)
Dik : q.d1 = 0,1078
|q| = akar jarak query = 0,8966
d1 = akar jarak dokumen = 0,8741
Jawab : sim(q,d1)=
= 0,1051
Hasil perhitungan Cosine Similarity adalah sebagai berikut :
d1 | d2 | d3 | d4 | d5 |
0,1051 | 0,0675 | 0,4107 | 0,0777 | 0,0153 |
Hasil Rangking Cosine Similarity sebagai berikut :
d1 | 0,1051 | Rangking 2 |
d2 | 0,0675 | Rangking 4 |
d3 | 0,4107 | Rangking 1 |
d4 | 0,0777 | Rangking 3 |
d5 | 0,0153 | Rangking 5 |
Kesimpulan :
Apabila menggunakan querry dan 5 dokumen latihan yang telah kita gunakan diawal. Maka dokumen latihan yang lebih mendekati ke query adalah dokumen no 3.


Comments
Post a Comment