Deteksi Duplikat Mirip dengan Kemiripan Jaccard dan MinHash
(blog.nelhage.com)Menemukan dokumen mirip: Kemiripan Jaccard dan MinHash
- Definisi masalah
- Membahas cara mengidentifikasi dokumen yang mirip dalam koleksi dokumen berskala besar
- Sebagai contoh, saat mengambil halaman yang sama beberapa kali melalui web crawling, kita bisa memiliki beberapa versi dengan sedikit perbedaan metadata atau hasil edit kecil
- Artikel ini mengeksplorasi metode deduplikasi aproksimasi menggunakan kemiripan Jaccard dan MinHash
Kemiripan
- Definisi kemiripan
- Mendefinisikan kemiripan antara dua dokumen, dan cara menemukan pasangan dengan nilai kemiripan di atas ambang tertentu
- Mendefinisikan fungsi kemiripan S:U×U→[0,1], dan jika S(A,B)≥S_crit maka dua dokumen dianggap sebagai duplikat aproksimasi
Kemiripan Jaccard
- Kemiripan Jaccard
- Fungsi yang menyatakan kemiripan dua himpunan berhingga sebagai rasio antara irisan dan gabungannya
- J(A,B)=∣A∩B∣/∣A∪B∣
- Semakin mirip dua himpunan, semakin banyak elemen yang sama
Perluasan kemiripan Jaccard
- Metode perluasan
- Mengubah dokumen menjadi himpunan fitur, lalu mencari himpunan dengan kemiripan Jaccard tinggi
- Pada korpus kecil, metode ini dapat diterapkan secara langsung, tetapi pada korpus besar menjadi tidak efisien
Aproksimasi kemiripan Jaccard
- Tanda tangan MinHash
- Menggunakan sampling untuk mengaproksimasi kemiripan Jaccard
- Dengan menghitung terlebih dahulu tanda tangan berukuran tetap untuk tiap dokumen, kemiripan dapat diestimasi secara efisien
Menggunakan lebih banyak fungsi hash
- Banyak fungsi hash
- Menggunakan beberapa fungsi hash untuk merangkum tiap dokumen sebagai vektor berisi k elemen
- Dengan menghitung jumlah hash yang cocok di antara dua tanda tangan, kemiripan Jaccard dapat didekati
Membandingkan semua dokumen
- Pengelompokan dokumen
- Mengelompokkan dokumen agar hanya dokumen yang mirip saja yang dibandingkan
- Menggunakan nilai MinHash sebagai kunci pengelompokan untuk menemukan duplikat aproksimasi secara efisien
Deteksi duplikat yang lebih fleksibel
- Menggunakan banyak kunci
- Menggunakan beberapa kunci untuk menempatkan dokumen ke beberapa bucket, lalu membandingkannya di dalam tiap bucket
- Duplikat tetap bisa dideteksi bahkan pada nilai kemiripan yang lebih rendah
Kesimpulan
- Kesimpulan
- Algoritme seperti MinHash memungkinkan pencarian dokumen mirip secara efisien
- Diharapkan artikel ini dapat memperkenalkan algoritme semacam ini kepada lebih banyak engineer dan membantu pemahamannya
Lampiran: merepresentasikan dokumen sebagai himpunan
-
n-gram
- Merepresentasikan dokumen sebagai n-gram untuk dibandingkan
- Tingkat presisi perbandingan berubah tergantung nilai n
-
Segmentasi kata
- Memecah dokumen menjadi kata atau token untuk digunakan sebagai fitur
- Tokenizer yang lebih canggih juga dapat digunakan
Opini GN⁺
-
Pentingnya deteksi dokumen mirip
- Menghapus duplikasi dalam dataset besar penting untuk meningkatkan kualitas data dan menghemat ruang penyimpanan
- Ini sangat penting terutama dalam proses web crawling atau pengumpulan data
-
Kelebihan MinHash
- MinHash dapat mendeteksi dokumen mirip dengan cara yang efisien dan scalable
- Lebih fleksibel dibanding metode deduplikasi berbasis hash tradisional
-
Teknik serupa lainnya
- Algoritme sketch lain seperti HyperLogLog juga dapat digunakan untuk menyelesaikan masalah serupa
- Menggabungkan kedua algoritme tersebut dapat menghasilkan solusi yang lebih kuat
-
Hal yang perlu dipertimbangkan saat penerapan nyata
- Pentingnya pemilihan fungsi hash: pemilihan fungsi hash sangat memengaruhi akurasi hasil
- Keseimbangan antara performa dan akurasi: semakin banyak fungsi hash yang digunakan, semakin tinggi akurasinya, tetapi biaya performanya juga meningkat
-
Teknologi yang direkomendasikan
- Dapat diterapkan dengan mudah menggunakan alat seperti implementasi MinHashLSH milik Spark
- Disarankan untuk memanfaatkan teknik ini secara aktif demi deduplikasi yang efisien pada dataset berskala besar
1 komentar
Opini Hacker News
Kemiripan Jaccard dan skor F1 juga dapat digunakan dengan cara yang sama pada himpunan fuzzy
Pernah mengimplementasikan deduplikasi database pemerintah Prancis dengan Python
Ini adalah teknik yang dikembangkan pada masa awal Google untuk deduplikasi
Pernah mengimplementasikan sistem Minhash
Sedang mengembangkan alat visualisasi karena Minhash dan variannya sulit dipahami
Lebih mudah memahami teknik ini melalui contoh kode
Tim NVIDIA merilis algoritme deduplikasi fuzzy yang dipercepat GPU
Strategi deduplikasi yang menggabungkan hashing atau jaringan saraf kecil dengan mesin pencarian vektor adalah hal yang umum
Menunjukkan typo kepada penulis
Sedang menyelesaikan masalah menggabungkan item berita serupa menjadi satu di Postgres