Girilen iki cümle arasında benzerlik hesabını kısmende olsa nasıl gerçekleştirileceğini anlatmak istiyorum.
Elimide bulunan iki cümleyi birbiri ile karşılaştıracağımız mini bir fonksiyon oluşturdum.
Fonksiyonumuzu inceleyelim;
function cumleKarsilastirma($cumle, $cumle2, $ayriTut = array())
{
$final = array();
$cumleParcala = explode(" ", $cumle);
$cumleParcala2 = explode(" ", $cumle2);
for ($m=0; $m < count($cumleParcala); $m++) {
for ($s=0; $s < count($cumleParcala2); $s++) {
if (strtolower($cumleParcala[$m]) == strtolower($cumleParcala2[$s])) {
$uyari = 0;
for ($n=0; $n < count($ayriTut); $n++) {
for ($b=0; $b < count($cumleParcala[$b]); $b++) {
if(strtolower($ayriTut[$n]) == strtolower($cumleParcala[$m])) {$uyari = 1;}
}
}
if($uyari == 0) {
$final[$m] = 1; break;
}
}
else {$final[$m] = 0;}
}
}
$olasilikHesaplama = array_count_values($final);
if (isset($olasilikHesaplama[1])) {
$olasilik = $olasilikHesaplama[1]/count($final)*100;
} else {
$olasilik = 0;
}
echo "<b>Cümle 1: </b>".$cumle."<br/>";
echo "<b>Cümle 2: </b>".$cumle2."<br/><br/>-> ";
if($olasilik <= 50) {
echo "Bu iki cümlenin benzer olma ihtimali düşüktür. <b>(%".$olasilik.")</b>";
} elseif($olasilik == 100) {
echo "<b>Bu iki cümle aynı kelimelerden oluşmaktadır.</b>";
} else {
echo "Toplamda ".count($final)." kelimeden <b>".$olasilikHesaplama[1]." adet kelime birebir kullanılmıştır. (%".$olasilik.")</b>";
}
}
Fonksiyon nasıl çalışıyor?
Fonksiyona 3 adet veri gönderebiliyoruz. İlk 2 parametremiz zaten cümlelerimizden oluşuyor. Birinci ve İkinci cümleyi giriyoruz. Arından 3. parametremize eğer istersek karşılaştırmada ayrı tutulacak kelimeleri giriyoruz. Aşağıdaki görseli inceleyersek olayı anlayabiliriz. Ben görsel olması açısından bir form hazırladım ve forma girilen 2 cümlede karşılaştırma fonksiyonumu kullandım.
Görüldüğü üzere fonksiyonumuz bu işe yaramaktadır. Geliştirilebilir, değiştirilebilir ve güncellenebilir. Hatta kelime kök karşılaştırılması yapılabilir (zamandan kayıp olsa da)... Nasıl bir alanda kullanacağınıza bağlı olarak geliştirebilirsiniz.
İyi çalışmalar