Jaccard benzerliği ve MinHash ile yaklaşık yinelenenleri tespit etme
(blog.nelhage.com)Benzer belgeleri bulma: Jaccard benzerliği ve MinHash
- Problem tanımı
- Büyük ölçekli belge koleksiyonlarında benzer belgelerin nasıl tanımlanacağı tartışılıyor
- Örneğin, web taraması yoluyla aynı sayfa birden fazla kez alındığında, üstveride küçük farklar veya küçük düzenlemelerden sonra oluşmuş birden fazla sürüm bulunabilir
- Bu yazı, Jaccard benzerliği ve MinHash kullanarak yaklaşık yinelenenleri kaldırma yöntemini inceliyor
Benzerlik
- Benzerlik tanımı
- İki belge arasındaki benzerliği tanımlama ve benzerlik değeri belirli bir eşik değerin üzerinde olan çiftleri bulma yöntemi
- S:U×U→[0,1] benzerlik fonksiyonu tanımlanır ve S(A,B)≥S_crit ise iki belge yaklaşık yinelenen olarak kabul edilir
Jaccard benzerliği
- Jaccard benzerliği
- İki sonlu küme arasındaki benzerliği, kesişimlerinin birleşimlerine oranı olarak ifade eden fonksiyon
- J(A,B)=∣A∩B∣/∣A∪B∣
- İki küme ne kadar benzerse, çoğu öğeyi o kadar ortak paylaşır
Jaccard benzerliğinin genişletilmesi
- Genişletme yöntemi
- Belgeleri özellik kümelerine dönüştürüp yüksek Jaccard benzerliğine sahip kümeleri arama
- Küçük bir korpusta doğrudan uygulanabilir, ancak büyük korpuslarda verimsizdir
Jaccard benzerliğini yaklaşık hesaplama
- MinHash imzası
- Jaccard benzerliğini yaklaşık hesaplamak için örnekleme kullanılır
- Her belge için sabit boyutlu bir imza önceden hesaplanarak benzerlik verimli biçimde tahmin edilir
Daha fazla hash fonksiyonu kullanma
- Çoklu hash fonksiyonları
- Her belgeyi k öğeli bir vektöre özetlemek için birden fazla hash fonksiyonu kullanılır
- Jaccard benzerliği, iki imza arasındaki eşleşen hash sayısı sayılarak yaklaşık hesaplanır
Tüm belgeleri karşılaştırma
- Belge gruplama
- Belgeler gruplanarak yalnızca benzer belgeler karşılaştırılır
- MinHash değerleri, yaklaşık yinelenenleri verimli şekilde bulmak için gruplama anahtarı olarak kullanılır
Daha esnek yinelenen tespiti
- Birden çok anahtar kullanımı
- Belgeleri birden fazla kovaya yerleştirmek ve her kova içinde karşılaştırmak için birden çok anahtar kullanılır
- Bu sayede daha düşük benzerlik değerlerinde de yinelenenler tespit edilebilir
Sonuç
- Sonuç
- MinHash gibi algoritmalarla benzer belgeler verimli şekilde bulunabilir
- Bu yazının, daha fazla mühendise bu tür algoritmaları tanıtması ve anlamayı kolaylaştırması umuluyor
Ek: Belgeleri küme olarak temsil etmek
-
n-gramlar
- Belgeler karşılaştırma için n-gramlarla temsil edilir
- Karşılaştırmanın hassasiyeti n değerine göre değişir
-
Sözcük bölütleme
- Belgeler sözcüklere veya token'lara ayrılarak özellik olarak kullanılır
- Daha gelişmiş tokenizer'lar da kullanılabilir
GN⁺ görüşü
-
Benzer belge tespitinin önemi
- Büyük veri kümelerinde yinelenenleri kaldırmak, veri kalitesini artırmak ve depolama alanından tasarruf etmek açısından önemlidir
- Özellikle web taraması veya veri toplama süreçlerinde gereklidir
-
MinHash'in avantajları
- MinHash, benzer belgeleri verimli ve ölçeklenebilir bir şekilde tespit edebilir
- Geleneksel hash tabanlı yinelenen kaldırma yöntemlerinden daha esnektir
-
Diğer benzer teknikler
- HyperLogLog gibi diğer sketch algoritmaları da benzer sorunları çözmek için kullanılabilir
- İki algoritma birleştirilerek daha güçlü bir çözüm oluşturulabilir
-
Gerçek uygulamalarda dikkat edilmesi gerekenler
- Hash fonksiyonu seçiminin önemi: Hash fonksiyonu seçimi, sonuçların doğruluğunu büyük ölçüde etkiler
- Performans ve doğruluk arasındaki denge: Daha fazla hash fonksiyonu kullanıldıkça doğruluk artar, ancak performans maliyeti de yükselir
-
Önerilen teknoloji
- Spark'ın MinHashLSH uygulaması gibi araçlarla kolayca uygulanabilir
- Büyük veri kümelerinde verimli yinelenen kaldırma için bu tekniklerin etkin biçimde kullanılması önerilir
1 yorum
Hacker News görüşleri
Jaccard benzerliği ve F1 skoru, bulanık kümelerde de aynı şekilde kullanılabilir
Python ile Fransız hükümetinin veritabanında mükerrer kayıt temizleme uyguladığım bir deneyimim oldu
datasketchtavsiye ediyorumrensaadlı yeni bir araç da varrensa, Rust ile yazılmış daha hızlı bir sürümBu, Google’ın ilk dönemlerinde mükerrer temizleme için geliştirilen bir teknolojiydi
Bir Minhash sistemi uygulama deneyimim var
Minhash ve türevlerini anlamak zor olduğu için bir görselleştirme aracı geliştiriyorum
Tekniği kod örnekleriyle anlamak daha kolay
NVIDIA ekibi GPU hızlandırmalı bulanık mükerrer temizleme algoritmaları yayınladı
Hashing veya küçük bir sinir ağı ile vektör arama motorunu birleştiren mükerrer temizleme stratejileri yaygın
Yazara bir yazım hatasını bildirdim
Postgres’te benzer haber öğelerini teke indirme problemini çözüyorum