Fonetik Eşleştirme Algoritmaları

Jan 03 2023
Makine öğrenimi algoritmalarını kullanarak ad eşleştirme denemesi Sözcükleri/adları telaffuzlarına göre sıralamanızı gerektiren bir proje oluşturduğunuzu varsayalım. Dize eşleştirmeyi kullanabilirsiniz, ancak herkesin Aakash olarak adlandırılmasını ister misiniz? Doğru değil.

Makine öğrenimi algoritmalarını kullanarak ad eşleştirme denemesi

Resim Kredisi: bdtechtalks.com

Kelimeleri/isimleri telaffuzlarına göre sıralamanızı gerektiren bir proje oluşturduğunuzu varsayalım. Dize eşleştirmeyi kullanabilirsiniz, ancak herkesin Aakash olarak adlandırılmasını ister misiniz? Doğru değil. Fonetik algoritmaların devreye girdiği yer burasıdır. Fonetik algoritmalar, kelimeleri telaffuzlarına göre sıralamanın bir yoludur. Çeşitli tiplerdedirler ve farklı amaçlar için kullanılırlar. Bununla birlikte, kişi veya yer adlarında en iyi şekilde çalıştıkları kabul edilir çünkü telaffuzla ilgili problem en çok burada ortaya çıkar.

Dize Eşleştirme

Dize eşleştirme, fonetik algoritma kategorisine girmez, ancak burada ne yapmayı amaçladığımız hakkında bir fikir edinmek için burada bahsetmekte fayda var. Dizi eşlemede T ile de gösterilen bir metin (aranacak kelime) ve T ile de gösterilen bir örüntü (aramayı amaçladığımız terim) verilir. Eşleşmeye göre; algoritma 0 ile 1 arasında bir puan döndürür. 1 en yüksek ve 0 en düşük. Naive String Matching, KMP, vb. gibi bunu yapmanın pek çok yolu var ama biz bu konunun çok derinine inmeyeceğiz.

Soundex

Bu algoritma, bir kelimenin yazımından ziyade telaffuzuna dayanır, bu nedenle fonetik algoritmalar kategorisine girer. Soundex, telaffuzlarına göre dört karakterlik bir kod oluşturur. Kodlar daha sonra kelimelerin kulağa benzer olup olmadığını belirlemek için karşılaştırılabilir. Küçük yazım hataları ve kulağa benzer gelen kelimeler (farklı yazım) daha etkili bir şekilde sıralanabilir. SQL ürünlerinin kitaplık işlevlerinde genellikle Soundex algoritmalarına sahip olması çok yaygındır.
Bir veritabanında bir soyadı ararken, "Goyal" deyin, hem "Goel" hem de "Goyal" sesleri benzer oldukları için bulunacak ve bu nedenle aynı Soundex koduna sahip olacaklardır.

metafon

Metaphone, Soundex'in geliştirilmiş bir versiyonudur. Metaphone, Soundex'in sabit uzunluklu anahtarına kıyasla daha geniş bir telaffuz kuralları yelpazesine ve farklı uzunluklarda tuşlara sahiptir.

Double Metaphone, bir birincil ve bir ikincil anahtar döndürerek bunu daha da geliştirir . İngilizceye ek olarak, Yunanca, Fransızca, İtalyanca, İspanyolca ve Çince gibi diğer kökenlerin telaffuzlarını da kapsamaya çalışır.

Ayrıca, İngilizce kelimeler için %99'luk bir doğruluk oranı veren üçüncü bir sürüm olan Metaphone 3 de vardır.

NYSIIS (New York Eyalet Bilgi ve İstihbarat Sistemi)

NYSIIS, aynı kod altında daha az sonuç döndürdüğü için daha doğru sonuçlar vermesi dışında Soundex ve Metaphone ile aynı fikre dayanmaktadır. Eşleştirme, belirli sesler için belirli indeksler atayarak gerçekleşir.

Mağara telefonu

Bu algoritma, Soundex ve Metaphone'un Caversham veri seti (Yeni Zelanda'da yürütülen bir araştırmadan elde edilen bir veri seti) için uygun bulunmaması nedeniyle oluşturulmuştur. Çalışma alanında (Yeni Zelanda) Metaphone'a benzer şekilde tasarlanmış, özelleştirilmiş bir fonetik kodlama modeli geliştirilmiştir.

Benzerlik Fonksiyonları

Levenshtein Mesafesi

İki kelime verildiğinde, iki kelimenin ne kadar benzer olduğunu sorabiliriz. Bu soruyu iki cümle veya dizi dizisi için de sorabiliriz. Benzerliği ölçmek için bir ölçüme ihtiyacımız var. Levenshtein Mesafesi böyle bir ölçüdür. Basit işlemleri kullanarak (ekleme, silme ve yerine koyma gibi), bir kelimeyi veya sekansı diğer kelime veya sekansa nasıl dönüştüreceğimizi belirleyebiliriz. Bunu başarmanın birçok yolu olabilir. Levenshtein Mesafesi, iki girişi eşitlemek için gereken minimum işlem sayısıdır. Sayı ne kadar düşükse, karşılaştırılan iki girdi o kadar benzerdir.

Jaro Winkler Mesafesi

Jaro-Winkler, diziler arasındaki mesafeyi (bir benzerlik ölçüsü) hesaplar. Ölçüm ölçeği 0,0 ila 1,0'dır; burada 0,0 en düşük olasılıktır ve 1,0 pozitif bir eşleşmedir.

kosinüs benzerliği

Kosinüs benzerliği, iki çok boyutlu vektör arasındaki açının kosinüsünü ölçer. Açı ne kadar küçük olursa, kosinüs benzerliği o kadar yüksek olur.

ÇÖZÜM

Benzerlik işlevleriyle birleştirildiğinde, fonetik algoritmalar, siber güvenlik durumlarında veya genel olarak veritabanlarında kullanılabilecek iki kelime/isim arasındaki benzerlik derecesini söylemede son derece yardımcı olabilir.