Google, Bunu mu demek istediniz? Algoritması Nasıl Çalışıyor?

Bugün herkesin aşina olduğu ve oldukça işimizi kolaylaştıran ve çoğu zaman çok komik hatalarımızı düzelten Google amcanın Bunu mu demek istediniz? arama algoritmasından bahsedeceğim. Çok basit ifadeyle başlayıp mümkün olduğu kadar teknik ifadeleri sadeleştirip altyapıya doğru ilerlemek istiyorum.

Did you mean? yani bunu mu demek istediniz? algoritması, Google’a göre, arama özelliği önceden belirlenmiş bir işlemi izliyor şöyle ki, bir sorgu başlatılıyor, web sayfası bir sayfadan diğerine (web crawling adı verilen bir işlem) yönlendiriliyor, uygulanabilir sayfalar bir dizi ölçüt ve dizin kullanılarak sıralanıyor ve arama ile ilgili en uygun sonuçları kullanıcıya gösteriyor. Bununla birlikte, eğer yazım hatası varsa, arama özelliği de “Bunu mu demek istediniz?” seçeneğini veren bir öneri kutusunu kullanıcıya gösteriyor. Bu öneriler, genellikle, arama alanınızı veya bağlam içinde farklı yazım denetimi seçeneklerini genişletmenize veya tek bir kelimeye erişmenize olanak tanıyan önerilen arama seçenekleri oluyor.

Genel olarak bakarsak, Google’ın algoritması web üzerinden gezinirken, kelimenin kullanıldığı en yaygın cümleleri tarayarak bağlam içindeki en olası ve doğru kelimenin sürümünü çıkarıp bizlere sunuyor.

“Bunu mu demek istediniz” Özelliğinin Uygulamasında Kullanılan ALGORİTMALAR

Anadilimiz her ne olursa olsun aynı ana dilini konuştuğumuz insanlarla konuşurken ya da yazışırken yaygın olarak yanlış kullanılmış ya da yazılmış birçok sözcük kullanıyoruz. Birçok faktöre bağlı olarak, Google’da bir şeyler aratırken seçtiğimiz kelimeleri ya da aratmak istediğimiz şeyi aslında yanlış yazıyoruz tabii bunu kimi zaman bilinçsiz kimi zaman ise bilinçli yapıyoruz. Bazen arattığımız şeyin halk dilinde ki yazım kullanımı toplum tarafından o kadar özümsenmiştir ki yazım kurallarına uymadan kullanılmaktadır. Örneğin; Eşortman/Eşofman, Acenta/Acente, Kat sayı/Katsayı(Daha fazlası için) İşte tam da burada google amca devreye giriyor ve bu durumu kullanıcının lehine çevirebilmek için belirli teknikler kullanıyor. Eğer bu algoritma tam anlamıyla yazım kurallarına uysaydı eşortman yazdığımızda bize istediğimiz bilgiyi veremiyor olacaktı.

Yazım denetiminin bir algoritma tarafından denetlendiği yaygın olarak iki yol vardır. Algoritma dilerse yazının ‘en yakın’ anlama gelebilecek sürümünü seçebilir veya iki yazım denetimi seçeneğinin bulunduğu yerde en popüler sürümü(en çok aratılan kelime) seçip kullanıcıya gösterebilir.

K-GRAM INDEX

K-Gram Index, bir algoritmanın, benzer olduğunu tespit ettiği başka bir kelimeyi bağlam içinde bir kelime ile önermesini sağlıyor. (Daha teknik bilgi isteyenler buraya tıklayarak ulaşabilir.)

İnsanlar genellikle ulaşmak istediği bilgiyle alakalı aratılmasına karar verdiği en düzgün anahtar kelimeleri yanlış yazdığından veya yanlış bir kelime biçimini kullandığından, algoritma, doğru sözcüğü bulma ve yazım hatalarını anlamak için bu hatalı yazılan kelimeleri taramak üzerine bir özelliğe sahiptir. Hatalı yazılan kelimelerin tespit edilip düzeltilmesi için K-gram index yapısı, hesaplanan anahtar kelimelerin benzerliğinin tespit edilmesinde oldukça yardımcı olur. Önceden belirlenmiş bir eşik değerinden daha düşük bir Jaccard katsayısına sahip olan anahtar kelimeler otomatik olarak elimine edilirken, arama sonuçları daha sonra ağırlık derecelendirme fonksiyonuna göre sıralanır.

Konuyla alakalı Columbia George Universitesinin anlatımı aşağıdadır.

 

LEVENSHTEIN MESAFESİ

Bir algoritmanın anahtarlar arasındaki mesafeyi göz önüne alarak bir kelimeyi düzeltmek için yapması gereken düzenlemelerin en az sayısını hesaplar. Evet biraz teknik bir açıklama oldu ancak hemen örneklendiriyorum.

 

 

 

Mesela, yanlış yazılmış kelime ‘korsy‘ olsun. Bir QWERTY klavyesindeki yanlış yazılan harf burada ‘s‘ ve ‘s‘ harfine en yakın olan tuşlar w,e,d,x,z ve a harfleridir. Yanlış ‘s‘ harfinin yerini alması için bariz seçim imlaya göre bu örnekte ‘a‘, yani’ koray olmalıdır. Şimdi daha iyi anlaşılmıştır galiba 🙂

Bir google çalışanının python diliyle örneklendirdiği yazım düzelticisi(Spelling Corrector) yazısına buraya tıklayarak ulaşabilirsiniz.

Levenshtein kelime düzenlemede doğru kelimeyi bulmaya çalışırken, kelimeden bir harf silme (harf kaldırma), iç içe aktarma (bitişik harfleri değiştirme), bir değişiklik (bir harfi değiştirme) veya bir ekleme (harf eklemek) gibi farklı senaryolar anahtar kelimeye uygulanabilir.

 

THE WEIGHTED EDIT DISTANCE (Türkçesine tam karşılık bulamadım ancak Ağırlık Verilecek Düzenleme Mesafesi olarak çevirebilirim.)

Damerau-Levenshtein mesafesi olarak da bilinir. İngilizce dilinde diğerlerine oranla daha sıklıkla yanlış yazılmış birtakım harflerin bulunduğunu göz önüne alır. Tabii algoritma genel olarak ingilizce dili merkezli çalıştığından ki bence yanlış yazılmaya en müsait dil çünkü okunuş ve yazılış oldukça farklı aşağıda vereceğim örneği de buna göre veriyorum daha iyi anlaşılabilmesi için aynı durumu Türkçe’de de düşünebilirsiniz. Örneğin, ingilizcede ‘o’ sıklıkla ‘u’ şeklinde yanlış girilir. Bu durumda, algoritma hangi harflerin en çok yanlış yazılmış olduğunu ve kelimenin doğru yazılma şekliyle ilgili bir öneride bulunur, yani biri ‘yuu’ yazdığında, algoritma, kelimenin hatalı yazılmış olmasına rağmen, ilk ‘u’ büyük olasılıkla ‘o’ olduğunu belirler (olasılık yasasına göre) ve ‘you’ olarak doğru yazmayı kullanıcıya önerir. Bu durumda, yukarıda yazdığım Levenshtein Mesafe algoritmasının aksine, doğru harfler doğrudan yanlış girilen tuşun yanında, altında ya da üzerinde değil, çok daha uzaktaki birkaç harf olabilir.

Richard Minerich bu algoritmanın teknik olarak nasıl oluşturulduğuna dair bir yazı paylaşmış. Bu linke tıklyarak öğrenebilirsiniz.

 

PROBABILITY(OLASILIK)

Bu bölümde ise algoritma başlıktan da tahmin edilebileceği üzere olasılıkları değerlendirmek üzere bir mantıkla ilerliyor. Bir yazım hatasında yanlış yerleştirilmiş harfler varsa algoritma, kelimenin doğru biçimini bulmaya çalışacaktır:

 

 

Örneğin; Fenerbahçe Veleybol Şampiyonlukları – Fenerbahçe Voleybol Şampiyonlukları. Burada en doğru ve yaygın olarak VOLEYBOL kullanıldığı için doğru tercih olarak kullanıcıya sunulacaktır.

Tabii sadece Türkçe ya da İngilizce olarak değil de genel düşürsek, bu algoritma, dünyadaki milyonlarca kullanıcı tarafından yanlış yazılmış farklı dildeki kelimeleri bulmak üzere programlanmıştır. Bunu yaparken veriyi toplar, taşır ve genel ve doğruluğa en yakın tahminleri yapar. Bu, yaygın olarak istatistiksel makine öğrenmesi olarak bilinen bir süreçtir. İşte burada Google translator devreye giriyor. Google’ın çeviri yeteneği bu işlemi globalize etmeyi oldukça mümkün kılıyor.

 

HIDDEN MARKOV MODELİ

Basitçe açıklamak gerekirse, Hidden Markov Modeli, kullanıcının gördüğü şeyi, yani ‘görülenleri’ temel alır ve bunu ‘gizlenmiş’, diğer bir deyişle ‘anlamlandırılabilen’ haline getirir. Bu algoritmanın başarılı olması için kullanıcının anahtarı en az %60’lık bir oranla doğru yazması gerekir.

 

 

Örneğin; Teknıloki –> Teknoloji ya da Gogle –> Goggle, Google, Goggles, Googled ya da Hayecin –> Heyecan gibi

Göreceğiniz üzere bu algoritma, muhtemel anlam üzerinde bir varyasyon veya varyasyon üzerinden yeni bir varyasyon yaparak olasılık üzerinden çalışır.

 

ÖZETLERSEK EĞER;

Google’ın algoritması, kullanılan en yaygın cümleleri web’den ayıklayarak bir kelimenin bağlamında en doğru ve olası doğru versiyonunu önermeye olanak tanır.

Google’ın ‘bunu mu demek istediniz’ algoritması hakkında internette bir çok yazı mevcut ve hemen hemen hepsi bir tahmin yapmış olmasına rağmen yaygın olarak, sürekli olarak eklenen yeni benzersiz programlarla önceden tasarlanmış özelliklerin bir kombinasyonunu kullandığına inanılmaktadır. Algoritmayı genel olarak tanımlarsak, sürekli değişen, gelişen ve genişleyen melezleştirilmiş bir algoritma olarak tanımlayabiliriz.

 

1 yorum

  1. Görkem CAN

    16 Şubat 2018 at 16:32

    İbretlik paylaşım. Teşekkür ederim.

Yorum Yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.