Mengungkap Kedekatan Teks: Contoh Soal Cosine Similarity Praktis

artikel populer di Daftar Sekolah

Pernahkah Anda bertanya-tanya bagaimana mesin bisa “memahami” seberapa mirip dua kalimat atau dokumen? Di era digital yang serba cepat ini, informasi mengalir deras dari berbagai sumber. Mulai dari berita, ulasan produk, percakapan di media sosial, hingga email pribadi, semuanya berbentuk teks. Nah, ketika kita perlu membandingkan atau mengelompokkan teks-teks ini berdasarkan kemiripan maknanya, ada satu teknik jitu yang sering digunakan: Cosine Similarity.

Cosine Similarity adalah sebuah metrik yang mengukur kemiripan kosinus antara dua vektor non-nol dalam ruang produk dalam. Dalam konteks pemrosesan bahasa alami (NLP), teks diubah menjadi vektor numerik, kemudian Cosine Similarity dihitung untuk menentukan seberapa “dekat” atau mirip kedua teks tersebut. Semakin tinggi nilai Cosine Similarity (mendekati 1), semakin mirip kedua teks tersebut. Sebaliknya, nilai yang mendekati 0 menunjukkan bahwa kedua teks tersebut sangat berbeda. Teknik ini sangat berguna untuk berbagai aplikasi, mulai dari mesin pencari, sistem rekomendasi, deteksi plagiarisme, hingga analisis sentimen.

Baca juga: Bocoran Soal PTN : Siap Taklukkan Ujianmu!

🔖 Baca juga:
Contoh Soal Asas Le Chatelier Lengkap dengan Pembahasan Biar Nggak Salah Konsep

Bagaimana Sebenarnya Teks Diubah Menjadi Angka?

Mengubah teks menjadi angka terdengar seperti sihir, tapi sebenarnya adalah proses matematis yang terstruktur. Langkah pertamanya adalah melakukan tokenization, yaitu memecah teks menjadi kata-kata atau frasa individual. Misalnya, kalimat “Saya suka makan nasi goreng” akan dipecah menjadi [“Saya”, “suka”, “makan”, “nasi”, “goreng”]. Setelah itu, kita perlu membersihkan teks dari hal-hal yang tidak relevan seperti tanda baca, huruf kapital yang tidak perlu, dan kata-kata umum yang sering muncul namun minim makna (stop words) seperti “dan”, “yang”, “di”, “ke”. Proses ini sering disebut preprocessing.

Selanjutnya, kita menggunakan metode vectorization untuk mengubah setiap kata menjadi representasi numerik. Ada beberapa cara untuk melakukan ini. Salah satu yang paling sederhana adalah metode Bag-of-Words (BoW). Dalam BoW, kita membuat sebuah kamus dari semua kata unik yang ada dalam kumpulan teks yang kita miliki. Setiap teks kemudian direpresentasikan sebagai vektor di mana setiap elemennya adalah jumlah kemunculan kata dari kamus tersebut dalam teks itu. Misalnya, jika kamus kita adalah [“saya”, “suka”, “makan”, “nasi”, “goreng”, “ayam”], maka kalimat “Saya suka makan nasi” bisa menjadi vektor [1, 1, 1, 1, 0, 0].

Metode yang lebih canggih seperti TF-IDF (Term Frequency-Inverse Document Frequency) juga sering digunakan. TF-IDF tidak hanya menghitung frekuensi kemunculan kata dalam satu dokumen, tetapi juga mempertimbangkan seberapa jarang kata tersebut muncul di seluruh kumpulan dokumen. Kata yang sering muncul dalam satu dokumen tetapi jarang di dokumen lain akan diberi bobot lebih tinggi, menandakan bahwa kata tersebut lebih spesifik dan informatif untuk dokumen tersebut. Ini membantu mengurangi pengaruh kata-kata umum dan lebih menonjolkan kata-kata kunci.

Berapa Nilai Cosine Similarity yang Dianggap Mirip?

Menentukan ambang batas nilai Cosine Similarity yang “cukup mirip” sangat bergantung pada konteks dan tujuan aplikasi Anda. Tidak ada angka ajaib yang berlaku universal. Namun, kita bisa melihat beberapa panduan umum dan cara menafsirkannya. Secara matematis, nilai Cosine Similarity berkisar antara -1 hingga 1. Dalam pemrosesan teks, karena kita biasanya menggunakan representasi vektor yang memiliki nilai positif (seperti frekuensi kata), rentang yang umum adalah antara 0 hingga 1.

Nilai 1 berarti kedua vektor (teks) identik. Ini berarti kedua teks tersebut mengandung kata-kata yang sama persis dengan proporsi yang sama. Dalam praktik nyata, jarang sekali dua teks berbeda akan menghasilkan Cosine Similarity tepat 1, kecuali jika salah satunya adalah salinan dari yang lain. Nilai yang mendekati 1, misalnya 0.8, 0.9, atau bahkan 0.95, biasanya menunjukkan tingkat kemiripan yang sangat tinggi. Ini bisa menjadi indikasi kuat adanya kesamaan topik, makna, atau bahkan potensi plagiarisme.

Sementara itu, nilai yang mendekati 0 menunjukkan bahwa kedua teks tersebut memiliki sedikit atau tidak ada kesamaan dalam hal kata-kata yang digunakan. Misalnya, teks tentang “resep masakan Padang” dan “artikel tentang fisika kuantum” kemungkinan besar akan memiliki Cosine Similarity yang sangat rendah. Rentang antara 0.2 hingga 0.6 bisa dianggap sebagai tingkat kemiripan yang moderat. Ini bisa berarti kedua teks berbicara tentang topik yang sama secara umum, tetapi dengan fokus atau detail yang berbeda. Misalnya, dua artikel berita yang melaporkan kejadian yang sama tetapi dari sudut pandang yang berbeda.

Contoh Soal Cosine Similarity: Menganalisis Perbedaan & Persamaan

Mari kita bayangkan kita memiliki dua ulasan produk sederhana.

Ulasan A: “Produk ini sangat bagus. Kualitasnya memuaskan dan harganya terjangkau.”
Ulasan B: “Saya suka sekali produk ini. Kualitasnya memang luar biasa dan harganya pas di kantong.”

Untuk menghitung Cosine Similarity, langkah pertama adalah mengubah kedua ulasan ini menjadi vektor. Kita akan melakukan tokenization dan preprocessing sederhana, lalu menggunakan metode Bag-of-Words.

Kata-kata unik (kamus) dari kedua ulasan ini adalah: [“produk”, “ini”, “sangat”, “bagus”, “kualitasnya”, “memuaskan”, “dan”, “harganya”, “terjangkau”, “saya”, “suka”, “sekali”, “memang”, “luar”, “biasa”, “pas”, “di”, “kantong”].

Mari kita sederhanakan kamus ini menjadi kata-kata yang lebih menonjol dan umum: [“produk”, “bagus”, “kualitasnya”, “memuaskan”, “harganya”, “terjangkau”, “suka”, “luar biasa”, “pas”].

Sekarang, kita ubah kedua ulasan menjadi vektor berdasarkan frekuensi kata:

Ulasan A: [“produk”: 1, “bagus”: 1, “kualitasnya”: 1, “memuaskan”: 1, “harganya”: 1, “terjangkau”: 1, “suka”: 0, “luar biasa”: 0, “pas”: 0]
Vektor A = [1, 1, 1, 1, 1, 1, 0, 0, 0]

Ulasan B: [“produk”: 1, “bagus”: 0, “kualitasnya”: 1, “memuaskan”: 0, “harganya”: 1, “terjangkau”: 0, “suka”: 1, “luar biasa”: 1, “pas”: 1]
Vektor B = [1, 0, 1, 0, 1, 0, 1, 1, 1]

Rumus Cosine Similarity adalah:
Cosine Similarity (A, B) = (A . B) / (||A|| ||B||)

Di mana:
– A . B adalah dot product (hasil perkalian setiap elemen yang sesuai, lalu dijumlahkan).
– ||A|| dan ||B|| adalah magnitudo (panjang) vektor A dan B.

Mari kita hitung dot product (A . B):
(1 1) + (1 0) + (1 1) + (1 0) + (1 1) + (1 0) + (0 1) + (0 1) + (0 1) = 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 = 3

Selanjutnya, hitung magnitudo:
||A|| = sqrt(1^2 + 1^2 + 1^2 + 1^2 + 1^2 + 1^2 + 0^2 + 0^2 + 0^2) = sqrt(6)
||B|| = sqrt(1^2 + 0^2 + 1^2 + 0^2 + 1^2 + 0^2 + 1^2 + 1^2 + 1^2) = sqrt(5)

Terakhir, hitung Cosine Similarity:
Cosine Similarity (A, B) = 3 / (sqrt(6) sqrt(5))
Cosine Similarity (A, B) = 3 / sqrt(30)
Cosine Similarity (A, B) ≈ 3 / 5.477 ≈ 0.547

Nilai sekitar 0.547 ini menunjukkan bahwa kedua ulasan memiliki tingkat kemiripan yang cukup tinggi. Kata-kata seperti “produk”, “kualitasnya”, dan “harganya” muncul di kedua ulasan, menunjukkan kesamaan topik. Meskipun ada perbedaan dalam pilihan kata untuk menggambarkan kepuasan (“memuaskan” vs “luar biasa”, “terjangkau” vs “pas di kantong”), Cosine Similarity mampu menangkap kedekatan makna dari kedua ulasan tersebut. Ini membuktikan bahwa Cosine Similarity adalah alat yang ampuh untuk mengukur kesamaan semantik antar teks, bahkan dengan variasi kata yang ada.

Baca juga: Taklukkan Ujianmu: Kumpulan Contoh Soal Super Lengkap!

Dalam dunia yang semakin terhubung secara digital, kemampuan untuk mengukur kesamaan antar teks menjadi semakin krusial. Dari sekadar menemukan informasi yang relevan hingga menjaga orisinalitas karya, Cosine Similarity menawarkan solusi matematis yang elegan dan efektif. Dengan memahami bagaimana teks diubah menjadi vektor dan bagaimana Cosine Similarity bekerja, kita bisa lebih menghargai kecanggihan di balik banyak aplikasi teknologi yang kita gunakan sehari-hari. Teknik ini membuka pintu untuk analisis data teks yang lebih mendalam, mendorong inovasi di berbagai bidang, dan membantu kita menavigasi lautan informasi digital dengan lebih cerdas.

Penulis: Wilda Juliansyah

Post Comment