Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Google Bunu mu Demek İstediniz Algoritması

Google'ın kullandığı bunu mu demek istediniz algoritması gibi bir algoritma yapmak isterseniz levenshtein algoritmasını kullanmanız gerekecek. Bu algoritma birçok programlama ve script dilinde kendi adıyla fonksiyon olarak kullanılmaktadır.

Algoritmayı bulan Vladimir Levenshtein’ın adıyla anılmaktadır. Bu algoritmaları bulan bilim adamlarına fazlasıyla saygı duyuyorum. Bu algoritmanın amacı iki farklı kelime veya cümleyi birbirine eşitlemek için(bir harf çıkarma, bir harf ekleme, harflerin yerini değiştirme, yan yana olan iki harfin sırasını değiştirme) yapılacak en az işlem sayısını bulmaktır.

PHP’de Levenshtein fonksiyonu iki kelime arasındaki karakter farkı kadar değer döndürür. Örneğin Masa ve Musa kelimeleri arasında ki karakter farkı sadece 2.harflerinde ki farklılık olduğundan dolayı(a≠u) Levenshtein fonksiyonu bizlere 1 değerini döndürecektir.

Şimdi bir örnekle bu öğrendiklerimizi pekiştirelim:

$kelime1='Masa';
$kelime2='Musa';
 
$fark=levenshtein($kelime1,$kelime2);
echo 'fark:'.$fark; //1 değeri dönecek

Yukarıda ki kodların kısaca anlamı şudur: Masa kelimesinde yapılacak 1 işlem sonucu Musa kelimesi elde edilebilir. Aradığınız şey tam olarak böyle bir değer olmayabilir fakat bu değer yardımıyla kullanıcılara "did you mean" olarak sonuç bir kelime gösterebileceğiz. Fakat aranan kelime ile karşılaştırma yapabileceğimiz elimizde başka kelimeler olmalı. Kelimeleri şimdi bir dizi içinde tuttuğumuzu varsayarak örnek kodlarımızı yazalım:

<?php
// kullanıcının aradığı kelime
$aranan_kelime = 'karra';

// karşılaştırma yapılacak kelimeler
$kelimeler  = array('siyah','araba','sahra','portakal',
                'bardak','insan','bilgisayar','kara','mavi');


$enyakin = -1;

// kelimeleri sırayla inceliyoruz
foreach ($kelimeler as $kelime) {

    //iki kelime arasında ki fark değeri hesaplanıyor
    $lev = levenshtein($aranan_kelime, $kelime);

    // eğer tam eşleşme varsa 
    if ($lev == 0) {

        //aranan kelime ile tam eşleşen bir kelime bulundu
        $benzer = $kelime;
        $enyakin = 0;

        // aranan kelime bulununca burada döngü sonlanacak
        break;
    }

    
    if ($lev <= $enyakin || $enyakin < 0) {
        
        $benzer  = $kelime;
        $enyakin = $lev;
    }
}

echo "Aranan Kelime: $aranan_kelime\n";
if ($enyakin == 0) {
    echo "Tam Eşleşme: $benzer\n";
} else {
    echo "Did you mean: $benzer?\n";
}

?>

Şimdi, Google gibi, yanlış yazılan kelimelere karşı doğru kelimeleri nasıl önerebileceğimize kısaca bakalım.

İki stringin dizilimini benzerlik açısından derecelendiren bir algoritmadır. Algoritma, Rus bilim adamı Vladimir Levenshtein tarafından 1965 yılında geliştirilmiştir.

levenshtein(string1,string2,insert,replace,delete)

Örnek bir kod parçası:

<?php
echo levenshtein("Hello World","ello World");//1
echo "<br>";
echo levenshtein("Hello World","ello World",10,20,30);//30
?>

Kodlarımız bu kadar, hoşçakalın…

https://www.buraksenyurt.com/post/Levenshtein-Distance-Algoritmasi
google bunu mu demek istediniz levenshtein distance algoritması İki string benzerlik oranı karşılaştırması levenshtein Vladimir Levenshtein Mesafe Algoritması Levenshtein Distance Algoritması
0 Beğeni
PHP
Önceki Yazı

Yii2 Framework Dosya İndirme Fonksiyonu

18 Ekim 2020 tarihinde yayınlandı.
Sonraki Yazı

SEO Uyumlu Tanıtım Yazısı Nasıl Olmalı?

18 Ekim 2020 tarihinde yayınlandı.
arrow