## SISTEM TEMU KEMBALI INFORMASI GAMBAR BERDASARKAN ANNOTATION PICTURE MENGGUNAKAN COSINE SIMILARITY
Herny Februariyanti * , Dwi Agus Diartono, Dewi Handayani Untari Ningsih Fakultas Teknologi Informasi dan Industri, Universitas Stikubank Semarang Email * Herny Februariyanti

## ABSTRAK
Pencarian  gambar  banyak  sekali  caranya  salah  satunya  berdasarkan  anotasi  atau keterangan dari gambar. Kata kunci yang dimasukkan ke dalam sistem sebagai acuan dalam pencarian kemudian dibandingkan dengan anotasi dari gambar. Sistem yang dibangun untuk proses pencarian gambar ini menggunakan tahapan sistem temu kembali informasi.
Metode yang diterapkan pada sistem temu kembali informasi ini menggunakan algoritma kemiripan cosine  similarity .  Metode  cosine  similarity  ini  digunakan  untuk  membandingkan kata kunci yang dimasukkan sebagai kata pencarian dibandingkan dengan anotasi dari gambar yang sebelumnya telah melalui beberapa tahapan dan yang terakhir proses stopword.
Hasil perbandingan kemiripan kata kunci dan anotasi akan menghasilkan nilai antara 0 sampai  dengan  1.  Apabila  nilai  mendekati  angka  1  maka  antara  kata  kunci  dengan  anotasi dikatakan  semakin  mirip.  Sebaliknya  semakin  mendekati  angka  0  dikatakan  semakin  tidak mirip.  Sehingga  dari  hasil  proses  penggunaan  algoritma  kemiripan  cosine  similarity  akan didapatkan daftar urutan gambar beserta anotasinya dari nilai 1 hingga yang paling kecil 0. Dan gambar akan ditampilkan secara berurutan berdasarkan urutan nilai tersebut. Artinya gambar yang ditampilkan paling atas berarti semakin sesuai dengan yang dicari oleh pengguna.
Hasil  dari  pencarian  gambar  dari  data  yang  sebelumnya  mempunyai  urutan  1,2,3,4,5, setelah  dilakukan  pencarian  berdasarkan  kemiripan  anotasi  gambar  urutan  hasil  pencarian menjadi 4,3,5,21.

## 1. P ENDAHULUAN
Perkembangan  teknologi  merubah  cara  orang  dalam  menyebarkan  dan  mencari informasi. Website merupakan sebuah domain berisi halaman-halaman web yang mengandung informasi [1]. Situs website yang menarik akan disukai oleh pengunjung.
Galeri merupakan sebuah gedung atau ruangan sebagai tempat untuk memamerkan hasil karya  seni.  Website  galeri  dimanfaatkan  untuk  menginformasikan  mengenai  suatu  produk berupa  media  gambar,  audio,  video  atau  gabungan  dari  beberapa  media  yang  dibuat  secara interaktif.
Galeri foto difungsikan untuk menampilkan foto-foto dan portofolio yang terkait dengan website.  Galeri  foto  yang  menarik  membuat  pengunjung  yakin  untuk  mengunjungi,  bukan hanya  manfaat  yang  diperhatikan  memberikan  kenyamanan  pengunjung  juga  diperlukan. Membuat judul foto harus sesuai informasi yang diinginkan pengunjung bukan isi yang lain.
Teknologi digital yang berkembang sangat pesat saat ini [2]. Fotografi berasal dari kata foto  atau  gambar  yang  berarti  cahaya  dan  grafis.    Istilah  fotografi  tersebut  pertama  kali dikenalkan oleh Sir John Herschel pada tahun 1839.
Fotografi  mempunyai  berbagai  macam  tujuan  dan  manfaat  yang  diantaranya  untuk penelitian, dokumentasi, dan sebagai media informasi. Dengan menampilkan daftar foto terkait pada sebuah website memberikan fasilitas pada user untuk menemukan halaman berikutnya. Dalam postingan deskripsi foto tersebut makan akan meningkatkan jumlah pageviews, dengan postingan menampilkan foto yang unik makan pembaca secara reflek akan tertuju pada foto tersebut.
Jaccard index, juga dikenal sebagai jaccard similarity (awalnya diciptakan koefisien de communauté  oleh  Paul  Jaccard),  keragaman  dan  kesamaan  sampel  set  dibandingkan menggunakan statistik [3].
Menampilkan  daftar  posting  artikel  foto  terkait  menggunakan  jaccard  index  di  akhir setiap isi posting akan menciptakan hasil tampilan halaman Web menarik. Bagi pengunjung website  /  blog  ketika  membaca  artikel  foto  diberikan  kemudahan  terkait  yang  masih  ada kaitanya  dengan  foto  terkait  yang  di  baca,  dan  dengan  membuat  foto  terkait  maka  akan bermanfaat untuk orang banyak.

## 2. T INJAUAN P USTAKA

## 2.1.  Rancang  Bangun  Related  Annotation  Picture  System  Pada  Website  Galeri  Foto Menggunakan Jaccard Index
Studi  ini  mengkaji  untuk  merancang  sistem  pada  website  galeri  gambar  dengan menerapkan  indeks  Jaccard.  Permasalahannya  pada  cara  membandingkan  semua  artikel gambar yang ada di website, sehingga menghasilkan link atau persamaan dari artikel tersebut, untuk  mengetahui  nilai  dari  artikel.  Kajian  ini  memudahkan  pengunjung  website  dalam membaca artikel gambar yang masih relevan terhadap artikel yang sedang dibaca, dan admin bisa  menambahkan  jumlah  halaman  yang  dilihat  oleh  pengunjung.  Pengunjung  dapat  lebih tertarik adanya website galeri foto ini untuk membaca artikel foto. Sebagai perbaikan di masa mendatang,  memoles  tampilan  dan  mengembangkannya  melalui  aplikasi  Android  adalah rencana selanjutnya [4].

## 2.2.  Anotasi  Automatis  Citra  Menggunakan  Statistical  Machine  Translation  Untuk  Temu Kembali Citra
Penerjemahan  gambar  ke  kata  mirip  dengan  menerjemahkan  dari  sebuah  bahasa  ke  bahasa lainnya. Objek terjemahan diperoleh dari sekumpulan gambar secara manual diberikan anotasi [5]. Pertama, gambar dibagi menjadi beberapa wilayah berukuran sama  dengan menerapkan partisi  grid.  Wilayah  ini  kemudian  diwakili  oleh  fitur  gambar  yang  ditentukan  sebelumnya. Kedua, semua wilayah gambar dikelompokkan berdasarkan blob yang mempunyai nilai lebih kecil  dengan menggunakan algoritma k-means. Ketiga, hubungan antara gumpalan dan kata dicari  menggunakan  algoritma  maksimalisasi  harapan.  Hubungan  yang  terbentuk  digunakan dalam  memprediksi  kata  yang  terkait  dengan  gambar  (anotasi  otomatis).  Dimensi  indeks semantik  laten  diperoleh  dari  hasil  faktorisasi  matriks  anotasi  otomatis  semua  citra  [6]. Menghitung perolehan rata-rata dan presisi  untuk  dua jenis kueri: klausa dan teks. Hasilnya menunjukkan bahwa kueri dalam bentuk klausa memberikan presisi rata-rata yang lebih tinggi daripada kueri teks. Hasil ini menjelaskan bahwa metode pengindeksan semantik laten dapat menonjolkan semantik gambar, menjadikan gambar yang diambil lebih relevan dengan kueri yang diberikan. [7].

## 3. M ETODE P ENELITIAN

## 3.1.Input Anotasi Gambar
Input  anotasi  gambar  merupakan  proses  awal  yang  dilakukan  dengan  melakukan  input  data gambar dan anotasinya melalui form input dari sistem. Data yang diinputkan berupa id, judul, gambar dan anotasi. Data akan disimpan ke dalam database dengan nama anotasi dengan nama tabel  images.  Data  yang  tersimpan  dalam  tabel  hanya  id,  judul,  nama  gambar  dan  anotasi. Sedangkan gambar dalam bentuk jpeg tersimpan tersendiri di dalam folder images.
if (isset($_POST['upload'])) { $image = $_FILES['image']['name']; $judul = mysqli_real_escape_string($db, $_POST['judul']); $anotasi = mysqli_real_escape_string($db, $_POST['anotasi']); $target = "images/".basename($image);
$sql = "INSERT INTO images (image, judul, anotasi) VALUES ('$image','$judul','$anotasi')"; // execute query mysqli_query($db, $sql);
Gambar 1. Script Input Anotasi Gambar

## Gambar 2. Data Hasil Input Anotasi Gambar

## 3.2.Input Keyword
Input keyword merupakan input untuk kata kunci yang digunakan dalam melakukan pencarian. Input kata kunci ini di simpan dalam database dengan nama anotasi dan dengan nama tabel keyword. Field yang ada di tabel keyword hanya ada satu saja yaitu keyword. Jumlah kata yang masukkan ke dalam keyword tidak ada batasan sesuai kebutuhan user untuk mencari informasi yang terkait dengan data yang terdapat dalam database.
if (isset($_POST['upload'])) { $keyword = mysqli_real_escape_string($db,$_POST['keyword']); $sql = "INSERT INTO keyword VALUES ('$keyword')"; mysqli_query($db, $sql);
Gambar 3. Script Input Keyword

## Gambar 4. Contoh Keyword

## 3.3.Tokenisasi Anotasi
Tokenisasi  anotasi  merupakan  proses  memisahkan  kata  per  kata  pada  data  anotasi  di  tabel images yang sudah diinputkan sebelumnya. Pemisahan kata tersebut berdasarkan spasi. Hasil pemisahan dimasukkan ke dalam tabel anotasi. Tabel anotasi mempunyai field id, anotasi dan frekuensi.
$query = "select id, anotasi from images"; $result = mysqli_query($koneksi,$query); $numrows = mysqli_num_rows($result); $id=1; while($row = mysqli_fetch_array($result)){ echo "<tr>"; $id1 = $row['id']; $text1 = $row['anotasi']; $string = $text1; $str = strtolower(preg_replace("/[^a-zA-Z]+/"," ",$string)); $jml = str_word_count($str); $terms = str_word_count($str, 1); $frek = array_count_values($terms); $no=1; foreach ($frek as $key => $val){ $insert = "insert into anotasi values ('$id','$key','$val');"; $insert_query  = mysqli_query($koneksi,$insert); $no++;} $id++;}
Gambar 5. Script Tokenisasi Anotasi

## Gambar 6. Tokenisasi Anotasi

## 3.4.Tokenisasi Keyword
Tokenisasi keyword merupakan proses pemisahan kata pada kata kunci yang sebelumnya telah tersimpan  dalam  tabel  keyword.  Pemisahan  kata  pada  kata  kunci  berdasarkan  spasi.  Hasil pemisahan kata pada kata kunci disimpan ke dalam database anotasi dengan nama tabel kata kunci. Field data yang terdapat pada tabel kata kunci id, kata kunci dan frekuensi.
$query = "select * from keyword"; $result = mysqli_query($koneksi,$query); $numrows = mysqli_num_rows($result); $id=0; while($row = mysqli_fetch_array($result)){ echo "<tr>"; $text1 = $row['keyword']; $string = $text1; $str = strtolower(preg_replace("/[^a-zA-Z]+/"," ",$string)); $jml = str_word_count($str); $terms = str_word_count($str, 1); $frek = array_count_values($terms); $no=1; foreach ($frek as $key => $val){ $insert = "insert into katakunci values ('$id','$key','$val');"; $insert_query  = mysqli_query($koneksi,$insert); $no++;}

## Gambar 7. Script Tokenisasi Katakunci

## Gambar 8. Data Kata Kunci

## 3.5.Lowercase Keyword
Lowercase keyword merupakan proses membuat  data kata yang ada dalam  tabel  kata kunci menjadi huruf kecil. Sehingga data kata yang tadinya terdapat huruf besar diubah menjadi huruf kecil semua.
$query = "SELECT * FROM katakunci"; $result = mysqli_query($koneksi,$query); $numrows = mysqli_num_rows($result);
$no=1; while($row = mysqli_fetch_array($result)){ echo "<tr>"; $id1 = $row['id']; $katakunci1 = $row['katakunci']; $frekuensi1 = $row['frekuensi']; $no++;}
Gambar 9. Script Lowercase Katakunci

## Gambar 10. Hasil Lowercase Katakunci

## 3.6.Lowercase Anotasi
Lowercase  anotasi  merupakan  tahapan  proses  yang  membuat  data  anotasi  yang  sudah  ada dalam  tabel  anotasi  dibuat  menjadi  huruf  kecil  semua.  Sehingga  data  anotasi  yang  tadinya terdapat huruf besar diubah menjadi huruf kecil semua.
$query = "SELECT * FROM anotasi"; $result = mysqli_query($koneksi,$query); $numrows = mysqli_num_rows($result); $no=1; while($row = mysqli_fetch_array($result)){ echo "<tr>"; $id1 = $row['id']; $anotasi1 = $row['anotasi']; $frekuensi1 = $row['frekuensi']; $no++;}
Gambar 11. Script Lowercase Katakunci

## Gambar 12. Hasil Lowercase Anotasi

## 3.7.Hapus Tanda Baca Keyword
Hapus  tanda  baca  keyword  merupakan  proses  penghapusan  tanda  baca  dari  data  kata  kunci yang sudah ada di dalam tabel katakunci. Semua tanda baca dihapus termasuk angka sehingga yang tersisa hanya karakter saja.
$query = "SELECT * FROM katakunci"; $result = mysqli_query($koneksi,$query); $numrows = mysqli_num_rows($result);
$no=1; while($row = mysqli_fetch_array($result)){ echo "<tr>"; $Id1 = $row['id']; $katakunci1 = $row['katakunci']; $frekuensi1 = $row['frekuensi']; $katakunci2 = preg_replace("/[^a-zA-Z.]+/"," ",$katakunci1); $no++;}
Gambar 13. Script Hapus Tanda Baca Katakunci
Gambar 14. Hasil Hapus Tanda Baca Katakunci

## 3.8.Hapus Tanda Baca Anotasi
$query = "SELECT * FROM anotasi"; $result = mysqli_query($koneksi,$query); $numrows = mysqli_num_rows($result); $no=1; while($row = mysqli_fetch_array($result)){ echo "<tr>"; $id1 = $row['id']; $anotasi1 = $row['anotasi']; $frekuensi1 = $row['frekuensi']; $anotasi2 = preg_replace("/[^a-zA-Z.]+/"," ",$anotasi1); $no++;}

## Gambar 15. Script Hapus Tanda Baca Anotasi

## Gambar 16. Hasil Hapus Tanda Baca Anotasi

## 3.9. Data Stopword
Data  stopword  merupakan  sebuah  daftar  kata  yang  dianggap  tidak  mempunyai  arti  dalam proses  pencarian  kata.  Daftar  kata  stopword  diambil  dari  sebuah  website  dengan  alamat https://www.kaggle.com/oswinrh/indonesian-stoplist.  Jumlah  daftar  kata  stopword  mencapai tujuh ratus lima puluh tujuh kata.

## Gambar 17. Daftar Kata Stopword

## 3.10. Stemming Keyword
Stemming  keyword  merupakan  proses  membuat  kata  yang  berimbuhan  menjadi  kata  dasar. Kata yang di stemming adalah data kata yang terdapat pada tabel kata kunci.  Sehingga hasil dari  proses  stemming  ini  menghasilkan  seluruh  kata  berupa  kata  dasar.  Proses  stemming menggunakan metode yang terdapat pada sebuah alamat website https://github.com/sastrawi/sastrawi.

## Gambar 18. Hasil Stemming Kata Kunci

## 3.11. Stemming Anotasi
Stemming  anotasi  merupakan  salah  satu  tahapan  dalam  proses  mengubah  kata  berimbuhan menjadi  kata  dasar.  Data  kata  anotasi  diambil  dari  tabel  anotasi,  sehingga  data  kata  anotasi akan  berubah  seluruhnya  menjadi  kata  dasar.  Metode  yang  digunakan  untuk  stemming menggunakan program yang terdapat pada github dengan nama sastrawi, alamat websitenya https://github.com/sastrawi/sastrawi.

## 3.12. Stopword Keyword
Stopword keyword merupakan proses menghapus data kata kunci berdasarkan daftar kata yang terdapat pada tabel stopword. Daftar kata stopword merupakan daftar kata yang dianggap tidak terlalu penting dalam proses pencarian informasi. Jumlah daftar kata stopword sampai dengan tujuh ratus lima puluh lima kata. Sehingga setelah proses stopword data kata kunci akan tinggal kata-kata yang sangat penting dalam proses pencarian informasi.
$query2 = "DELETE FROM katakunci where kata IN (SELECT * FROM stopword)"; $result2 = mysqli_query($koneksi,$query2); $query3 = "SELECT * FROM katakunci"; $result3 = mysqli_query($koneksi,$query3); $numrows = mysqli_num_rows($result3);

## Gambar 20. Script Stopword Katakunci

## Gambar 21. Hasil Stopword Katakunci

## 3.13. Stopword Anotasi
Stopword merupakan daftar kata yang dianggap tidak terlalu penting dalam proses pencarian informasi. Proses stopword anotasi merupakan suatu proses penghapusan kata yang terdapat dalam tabel anotasi berdasarkan daftar kata yang terdapat dalam tabel stopword. Jumlah daftar kata stopword mencapai tujuh ratus lima puluh lima kata. Hasil proses stopword menghasilkan data kata dari tabel anotasi yang dianggap sangat penting dalam proses pencarian.
$query2 = "DELETE FROM anotasi where kata IN (SELECT * FROM stopword)"; $result2 = mysqli_query($koneksi,$query2); $query3 = "SELECT * FROM anotasi"; $result3 = mysqli_query($koneksi,$query3); $numrows = mysqli_num_rows($result3);
Gambar 22. Script Stopword Anotasi
Gambar 23. Hasil Stopword Anotasi

## 3.14. Cosine Similarity
Cosine similarity merupakan sebuah algoritma yang digunakan untuk mencari kemiripan antar dokumen. Dalam hal ini cosine similarity digunakan untuk mencari kemiripan antara kata kunci dengan  anotasi.  Kemiripan kata kunci  dan anotasi  diberikan nilai  antara 0 hingga 1,  artinya
semakin  mendekati  angka  0  berarti  kata  kunci  dan  anotasi  semakin  tidak  mirip.  Sebaliknya semakin mendekati angka 1 kata kunci dan anotasi semakin mirip.
$query = "select id3 anotasi, id4 katakunci, A, abs(A-jmlb) B, abs(A-jmlc) C, round((A/(sqrt(power(((A+abs(A- jmlb))*(A+abs(A-jmlc))),2)))),2) cosine from (select a.id3,b.id4,jmlb,jmlc from (select id id3,count(anotasi) jmlb from anotasi group by id) as a join (select id id4,count(katakunci) jmlc from katakunci group by id) as b) as g join (select e.id,sum(A) A from (select id,frekuensi-frekuensi A from anotasi where anotasi not in (select katakunci from katakunci) group by id union select c.id1, count(anotasi) A from (select id id1,anotasi,frekuensi from anotasi) as c join (select id id2,katakunci,frekuensi from katakunci) as d on anotasi=katakunci group by c.id1 order by id) as e group by e.id) as h on g.id3=h.id order by cosine desc;"; $result = mysqli_query($koneksi,$query); $numrows = mysqli_num_rows($result);
Gambar 24. Script Cosine Similarity
Gambar 25. Hasil Cosine Similarity Katakunci dan Anotasi

## 3.15. Anotation
Proses anotation merupakan proses terakhir dari semua proses yang ada. Menghasilkan urutan gambar  berdasarkan  kemiripan  kata  kunci  dengan  anotasi.  Semakin  mirip  maka  diurutkan paling, sehingga yang paling tidak mirip terletak pada urutan paling akhir.
$db = mysqli_connect("localhost", "root", "root", "anotasi"); $result = mysqli_query($db, "select id,image,judul,anotasi from images join (select id3 idanotasi, id4 katakunci, A, abs(A-jmlb) B, abs(A-jmlc) C, round((A/(sqrt(power(((A+abs(A- jmlb))*(A+abs(A-jmlc))),2)))),2) cosine from (select a.id3,b.id4,jmlb,jmlc from (select id id3,count(anotasi) jmlb from anotasi group by id) as a join (select id id4,count(katakunci) jmlc from katakunci group by id) as b) as g join (select e.id,sum(A) A from (select id,frekuensi-frekuensi A from anotasi where anotasi not in (select katakunci from katakunci) group by id union select c.id1, count(anotasi) A from (select id id1,anotasi,frekuensi from anotasi) as c join (select id id2,katakunci,frekuensi from katakunci) as d on anotasi=katakunci group by c.id1 order by id) as e group by e.id) as h on g.id3=h.id) as x on x.idanotasi=id order by x.cosine desc;");
Gambar 26. Script Hasil Anotasi

## Gambar 27. Hasil Cosine Similarity Katakunci dan Anotasi

## 3.16. Tampilan Hasil Anotation
Tampilan  galeri  gambar  gedung  unisbank  sebelum  dilakukan  pencarian  maka  urutannya berdasarkan  urutan  input.  Setelah  dilakukan  pencarian  berdasarkan  kata  kunci,  maka  urutan gambar ditampilkan berdasarkan kemiripan kata kunci dengan anotasi.
Sebelum Sesudah
Gambar 28. Tampilan Hasil Pencarian Berdasarkan Anotasi

## 4. K ESIMPULAN
Melakukan  pencarian  gambar  berdasarkan  anotasinya  berhasil  dengan  cukup  baik. Pencarian  gambar  dengan  memasukkan  kata  kunci  kemudian  dibandingkan  kemiripannya dengan  anotasi  gambarnya  menghasilkan  tampilan  gambar  dengan  urutan  gambarnya  sudah cukup  sesuai.  Metode  yang  digunakan  untuk  membandingkan  kata  kunci  dengan  anotasi gambar menggunakan dengan algoritma Cosine Similarity. Hasil perbandingan kemiripan dari urutan terbesar ke urutan terkecil berdasarkan id-nya adalah sebagai berikut 4, 3, 5, 2, 1, dengan nilai  kemiripan  0.33,  0.25,  0.25,  0.17,  0.  Jumlah  data  gambar  yang  digunakan  berjumlah  5 dengan masing-masing gambar diberikan anotasi. Kata kunci yang dimasukkan terdiri dari 2 kata. Satu kata kunci yang terdiri dari dua kata dibandingkan dengan 5 anotasi yang terdapat pada gambar. Metode yang digunakan untuk membandingkan menggunakan Cosine Similarity. Hasil  perbandingan  menunjukkan  kemiripan  dengan  urutan  antara  0  sampai  1,  dimana  nilai yang semakin besar maka semakin mirip. Sehingga gambar dengan id 4 merupakan gambar dengan anotasinya yang dianggap paling mirip dengan kata kunci yang dimasukkan.

## DAFTAR PUSTAKA
[1] Yuhefizar,  dkk,  (2010).  Cara  Mudah  Membangun  Website  Interaktif  Menggunakan Content  Management  System  Joomla  (CMS)  Edisi  Revisi.  Jakarta  :  PT  Elex  Media Komputindo.
[2] Edi S. Mulyanta, (2007), Teknik Modern Fotografi Digital, Yogyakarta ; Andi.
[3] Tan, H, Z., Li,  Z. G., Tan, B.  (2006). Strach noodle: History, classification, materials, processing,  structure,  nutrition,  quality  evaluating  and  improving.  Food  Research International, 42 (5): 551-576.
[4] Sumawati, Sumawati (2016) Rancang Bangun Related Annotation Picture System Pada Website  Galeri  Foto  Menggunakan  Jaccard  Index.  Undergraduate  thesis,  Universitas Stikubank (Unisbank) Semarang.
[5] Setiawan, E. (no date) Kamus Besar Bahasa Indonesia (KBBI), Arti kata anotasi - Kamus Besar  Bahasa  Indonesia  (KBBI)  Online.  Available  at:  https://kbbi.web.id/anotasi (Accessed: December 11, 2022).
[6] Setiawan, E. (no date) Kamus Besar Bahasa Indonesia (KBBI), Arti kata citra - Kamus Besar  Bahasa  Indonesia  (KBBI)  Online.  Available  at:  https://kbbi.web.id/citra (Accessed: December 11, 2022).
[7] Daud,  I.A.  (2008)  ANOTASI  Automatis  citra  Menggunakan  statistical  machine translation  untuk  Temu  Kembali  citra,  IPB  Repository.  IPB  (Bogor  Agricultural University). Available at: https://repository.ipb.ac.id/handle/123456789/17688 (Accessed: December 11, 2022).