• küçük şeylerden mutlu olmayı bilenler için bulunmaz yönetem*. yeri gelmişken orjinal algoritmayı da verelim tam olsun:
    oh, it's such a perfect day; i'm glad i spend it with you; oh, such a perfect day; you just keep me hangi... hı!?... pardon!, evet konu neydi? ha...

    harf kod değerleri:
    aeiouyhw[velistedeolmayanlar]: salla
    bfpv: 1
    cgjkqsxz: 2
    dt: 3
    l: 4
    mn: 5
    r: 6

    kurallar:
    * soldan sağa kodla.
    * ilk harfi olduğu gibi al. sonrakilerden üç haneli bir sayı oluştur. üç hane oluşunca gerisini salla.
    * kodlama üç haneden kısaysa sona kafi miktarda 0 ekle.
    * sesli ve diğer harfleri atmadan gruplama yap. acele işe şeytan karışır.
    * çift harfleri ve peş peşe gelen aynı gruptan harfleri tekmiş gibi düşün.
    * ilk harften hemen sonra gelen harf aynı gruptaysa, salla.
    * ön kısaltmaları aç***
    * aynı gruba ait harfler arasında w ya da h varsa hepsini bir say.
    bu hesaba göre bir pratik yapılır ise örneğin ek$i sozluk ne oluyor bakalım:
    * gruplayalım: e[ks]i [s]o[z]-luk
    * boşlukları ve seslileri sallayalım: e[ks][s][z]
    * tabelaya bakalım göbek atalım: e222
    coming soon: "türkçe soundex karın doyurur mu? benim işim gücüm yok mu? "

    not: yaptığım muhtelif deneyler sonucu, sesli harf değişimlerinde "belki alakalidir" listesinin de değiştiğini gözlemledim. ancak pek çok kelime için soundex hesaplaması tutuyor; bu durumda zeus alengirli bir özelleştirme, bir mandrakelik yapmış olabilir kodlarken. yahut bendenizin anlayışsızlığıdır ki bilemediğim bir şeyler var. tebrik ederim.
  • soundex, benzer duyulan (similar sounding) kelimeleri bulmak için verilen kelimeleri 4 karakterli bir stringe çevirir ve onların birbirine yakınlığına göre karar verme olanağı sağlar.

    ve fakat burada unutulmaması gereken 'similar sounding' tanımının mssqlde ingilizce için yapılmış olduğu, dolayısıyla burada türkçe karakter kullanmanın abesle iştigal etmek olacağıdır.
    zira nedir? evet, ingilizcede türkçe karakterler yoktur! garip ama gerçek...
  • dünyanın en eski fonetik algoritmalarından biridir, o kadar ki nuitarinin dedesi bile geliştirmiş olabilir.
  • algoritma sonucu iki ayni harfle ba$layan kelime icin ortaya cikan degerler iki kelimenin birbirine ne kadar yakin-uzak oldugunu verir. sozgelimi e250 olan bir kelime, e275'e oldukca yakinken (25 fark) e050 (200 fark) ve e550'ye (300 fark) gayet uzaktir.

    kelimenin solundaki sessiz harfler sagindakilere gore benzerlik icin cok daha degerlidir.

    ilk sessiz harf 100
    ikincisi sessiz harf 10
    ucuncu sessiz harf 1

    agirliga sahiptir. insanlarin kelimelerin ilk harflerini benzettigi ve sonraki harflere ilerledikce benzerligin kayboldugu du$uncesiyle hareket edilir. yani iki kelimenin ilk harflerindeki farklilik, son harflerindeki farkliliga gore cok daha onemlidir. ornek olarak "aslan ile asli", "aslan ile atlan"'a gore cok daha benzer kelimelerdir diyebiliriz.

    yolunuz soundex'e du$tuyse muhtemelen bir kelimeye en yakin kelimeleri secmek istiyorsunuzdur. eger bu i$lem icin elinizin altinda sqlserver yoksa, $oyle bir metod izlemelisiniz :

    kaynak kelimemizin soundex degerini bulun, (ornegin e250)
    sozlugunuzde kelimemizin ilk harfi ile ba$layan tum kelimelerin soundex degerlerini bulun, (bu durumda e ile ba$layan tum kelimeler)
    bu kelimelerin numerik soundex degerini kaynak kelimemizin soundex degerinden cikartin. (yani 250'den her kelimenin soundex degerini cikarin)
    ortaya arti ya da eksi degerler cikacaktir, bunlarin tek tek mutlak degerlerini alin. mutlak deger sonucu ortaya cikan deger, sozlukten sectiginiz kelimenin kaynak kelimemizden ne kadar farkli oldugunu gosterecektir. rakam ne kadar buyukse kelime o kadar farklidir. rakam 0 ise neredeyse ayni kelimeler demektir.
    dongu bittiginde elimizde kari$ik kelimeler ve kaynak kelimeye olan fark degerleri var. numerik fark degerlerini en kucukten en buyuge dogru siralayin ve listenin ilk ba$indan ihtiyaciniz kadar olani alin. (ornegin ek$i sozluk'un clairvoyance'i 5 tane seciyor)

    bu algoritma be$ tane 0 degerine ula$inca duracak bicimde optimize edilebilir belki. faydasindan cok zarari da olabilir uzerine du$unmek gerek.

    soundex ba$tan uc sessiz harfle ilgilendigi icin almanca gibi dillerde artikellerle arasi hic iyi degildir. soundex degeri hesaplatmadan once bu artikelleri kelimeden ucurmalisiniz yoksa d ile ba$layan bir cuval yanli$ hesaplanmi$ soundex'iniz olur.
  • diyelim ki verilen bir kelime ile 100bin kelimeyi karsilastirip en yakin olan kelimeleri bulmak istiyorsunuz ve bunu cok hizli yapmaniz lazim. fuzzy matching yetersiz kalacaktir. ımdadiniza soundex yetisiyor.
    100bin kelimeyi postgres de bir table'a koyup soundex ile indexliyorsunuz. sonra verdiginiz kelimeye fonetik olarak en yakin kelimeleri database'den cok hizli bir sekilde alabiliyorsunuz cunku indexlediniz. gelen liste ile ne yapmak istediginiz artik size kalmis....
  • ek$i sözlüğümüzde o an için olmayan bir konu başlığını yazıp getir'e bastığımızda, "yok boyle bi$ii??? lakin $oyle bi$iiler war belki alakalidir" ifadesinin altında çıkan listeyi görmemizi sağlayan* bir nevi fonetik hashing metodu.
    (bkz: bilgi sahibi olmadan fikir sahibi olmak)
    (bkz: fikir sahibi olmadan bilgi sahibi olmak)
    (bkz: ek$i sözlüğün şifresi)
  • ses tabanli bir uzunluk algoritmasi olup harf tabanli olani icin (bkz: levenshtein distance)
  • bir kelimeden fonetik bir kod cikarma yontemidir.. iki soundex degeri kiyaslanarak iki kelimenin birbirine ne kadar yakin okundugu cikarilabilir.
  • sql server, oracle ve mysql gibi rdbms programlari iclerinde default soundex feature barindirirlar..
  • (bkz: difference)
hesabın var mı? giriş yap