

"Bunu Mu Demek İstediniz?" Olayını Google Nasıl Başarıyor?
-
levenshtein algoritmasının php fonksiyonu: http://tr.php.net/manual/tr/function.levenshtein.php
-
Buremba bunu yazdı:
-----------------------------
Fuzulli bunu yazdı:
-----------------------------
Yazdığın karakterler ile daha önce den yazılmış ve db ye girişi yapılmış karakteri en büyük karakter sayısından en küçüğe karakter sayısına doğru eksilterek karşılaştırıyor ve tutan karakterler ile kendine yeni bir karakter katarı oluşturup en çok aranan ve en çok ziyarhet edilen sonuçların 0.sını sana getiriyor. Bu uygulama sen bir şeyler yazmaya başlarken 3. harften sonra aktif oluyor.
Kendim öyle yaptım
-----------------------------peki ya bir harf fazladan yazmışsa?
-----------------------------Girilen katarda öncelik en büyük sıralı uyuşma oladuğu için pek fark etmiyor.
Örn;
Aranacak asıl kelime : Cumhuriyet
Benzer kelime : Cumhurun doğuşu
Girilen kelime : Cumhuriyenin douşu
Gibi ... -
Semantik web dedigimiz Bir olay var burda db den sorgulama yerine istatistik kullanılıyor Google yapmış oldugu iş budur arkadaşım. Bunun için
RDF (Resource Description Framework) yapısı,
RDF cümleleri, RDF doğrulama,
Ontoloji,
OWL (Ontology Web Language)
Gibi işlemlerde kullanılıyor
Kısaca Sana Söyle özet geçeyim bir kitap sitesine girdiginde bir bilgisayar kitabına baktıgında yan tarafda sana bir başka bilgisayar kitabı sunarlar (Çünkü bu kitaba bakan kişiler bu kitabada bakmışlardır) işte bu olay semantik web dir. "Cumhuriyt" yazan kişiler "cumhuriyet" ile ilgili keyword taglarına yönelmişler burda adminlerin çalışması yerine sistem kendisi çalışıyor belli bir istatiktik yapıp kullanıcıya öneriyor....
Biraz karışık anlattım sanırım ama webde semantik web olarak aratırsan döküman bulabilirsin....
-
şu şekilde olabilir
mesela google aranan her kelimeyi kaydeder, ve kişilere göre gruplar
mesela ben bahribat yazdım hiçbişey çıkmadı, sonra tahribat yazdım çıktı
google hemen anlar bunu ve demekki bahribatın doğrusu tahribatmış diye databease e kaydeder.
sonra başka birisi bahribat yazınca eğer sonuç bulnamassa hemen databasedeki bu daha önce kaydedilen sonuçlarda bahribat ı arar bulursa da onun doğru şeklini bunu mu arıyorsunuz diye getirir.
arkadaşlar şöyle bi deney yapalım katılan arkadaşlar olursa;
herhes google da şunu yazsın ve arattısın hiçbi sonuç çıkmayacak;
sdsdşşıığğııuutssd
arkasından da
tahribat
yazsın arattırsın 2-3 gün deneyelim bakalım sdsdşşıığğııuutssd yazınca bunu mu denemek istediniz de tahribat çıkacak mı?
-
wm-t bunu yazdı:
-----------------------------
şu şekilde olabilir
mesela google aranan her kelimeyi kaydeder, ve kişilere göre gruplar
mesela ben bahribat yazdım hiçbişey çıkmadı, sonra tahribat yazdım çıktı
google hemen anlar bunu ve demekki bahribatın doğrusu tahribatmış diye databease e kaydeder.
sonra başka birisi bahribat yazınca eğer sonuç bulnamassa hemen databasedeki bu daha önce kaydedilen sonuçlarda bahribat ı arar bulursa da onun doğru şeklini bunu mu arıyorsunuz diye getirir.
arkadaşlar şöyle bi deney yapalım katılan arkadaşlar olursa;
herhes google da şunu yazsın ve arattısın hiçbi sonuç çıkmayacak;
sdsdşşıığğııuutssd
arkasından da
tahribat
yazsın arattırsın 2-3 gün deneyelim bakalım sdsdşşıığğııuutssd yazınca bunu mu denemek istediniz de tahribat çıkacak mı?
-----------------------------o dediğin olsa milyonlarca insan facebook u feysbuk diye arıyor ozaman biz feysbuk yazdığımızda neden direk facebook çıkmıyor ?
-
zalimadam bunu yazdı:
-----------------------------
wm-t bunu yazdı:
-----------------------------
şu şekilde olabilir
mesela google aranan her kelimeyi kaydeder, ve kişilere göre gruplar
mesela ben bahribat yazdım hiçbişey çıkmadı, sonra tahribat yazdım çıktı
google hemen anlar bunu ve demekki bahribatın doğrusu tahribatmış diye databease e kaydeder.
sonra başka birisi bahribat yazınca eğer sonuç bulnamassa hemen databasedeki bu daha önce kaydedilen sonuçlarda bahribat ı arar bulursa da onun doğru şeklini bunu mu arıyorsunuz diye getirir.
arkadaşlar şöyle bi deney yapalım katılan arkadaşlar olursa;
herhes google da şunu yazsın ve arattısın hiçbi sonuç çıkmayacak;
sdsdşşıığğııuutssd
arkasından da
tahribat
yazsın arattırsın 2-3 gün deneyelim bakalım sdsdşşıığğııuutssd yazınca bunu mu denemek istediniz de tahribat çıkacak mı?
-----------------------------o dediğin olsa milyonlarca insan facebook u feysbuk diye arıyor ozaman biz feysbuk yazdığımızda neden direk facebook çıkmıyor ?
-----------------------------feysbuk için halihazırda 561.000 sonuç olduğundan olabilir.
-
benzerlik yüzdesi veren fonksiyonlar var
-
api gibi birşey sanırım bu demi
-
Arada güzel fikirler var, bu konuda başka bilgisi olan?
-
İşe yarar bir şeyler yaptım sanırım.
levenshtein'i kullandım.
Aramaları tüm veri tabanında yapmaktansa daha önceden sonuç veren aramaları kayıt ettim. Mantık basit, sonuç veren arama doğru yazılmıştır.
http://php.net/manual/tr/function.levenshtein.php adresindeki örneği biraz değiştirdim, bendeki veriler veritabanından çekiliyor:<?php // yanlış yazılan girdi -> $q $input = $q; $sorgu = "SELECT `aranan` FROM `arananlar` WHERE 1"; if (database_querySelect($sorgu,$words )) { // en kısa mesafenin bulunamaması durumu $shortest = -1; // En kısa mesafeyi bulmak için döngü foreach ($words as $word) { // girdi ile sözcük arasındaki mesafeyi hesaplatalım $lev = levenshtein($input, $word['aranan']); // Bir eşleşme var mı bakalım if ($lev == 0) { // en yakın sözcük bu olacak (tam eşleşme) $closest = $word['aranan']; $shortest = 0; // Tam bir eşleşme bulduğumuza göre döngüden çıkalım break; } // Eğer bu mesafe bir öncekinden kısaysa // veya en kısa mesafe henüz bulunamadıysa if ($lev <= $shortest || $shortest < 0) { // en yakın eşleşmeyi ve en kısa mesafeyi tanımlayalım $closest = $word['aranan']; $shortest = $lev; } } if ($shortest == 0) { echo "Tam eşleşme bulundu: $closest\n"; } else { $url = $config_baseHREF."ara/".urlencode($closest)."/"; print "Bunu mu demek istediniz?: <b><a href='".$url."'>".$closest."</a></b>"; } } ?>Sadece doğru sonuçları kaydettiğimiz için öğrenen bir yapıya sahip. İlerleyen aşamada similar_text ve tıklanma sayılarını da işin içine katarak daha gelişmiş bir hale getirilebilir.
Birde bu kodu aramalarda sonuç bulunamayınca çağırdım, yani hiçbir zaman "tam eşleşme bulundu" demeyecek.
Çalışan örnek verelim: http://pazar.org'a girip kasperski, netbkk gibi kelimeleri yazabilirsiniz. Eğer ciddi anlamda saçmalıyorsa gerçek değeri girin ve tekrar yanlış yazarak aramayı deneyin. ;)