Her saniye artmakta olan sayısız kelime, fotoğraf, video ve daha niceleri... John MacCornick'in deyişiyle; "Dünyanın en büyük samanlığı", yani internet. Ve bu samanlıkta aradığımız "İğneyi" saniyenin çok daha altında sürelerde karşımıza çıkaran arama motorları.
Peki algoritma nedir? Arama motorları bunu nasıl yapıyor? Yazımızda bu soruları cevaplamaya çalışacağız, öyleyse başlayalım.
Algoritma Nedir?
Şu anda kullandığınız cep telefonunuz, bilgisayarınız, tabletiniz, arabanız, televizyonunuz, sosyal medya siteleri ve hatta muhtemelen yakın bir tarihte hayatımızın içine yerleşecek olan robotlar ve daha niceleri; bunların hepsinin altında algoritmalar yatar.
Algoritma, kabaca işlem basamaklarıdır. Belirli bir sorunu çözmek için veya belirli bir işi kolaylaştırmak için algoritmalar yazılabilir. Örnek vermek gerekirse; elinizde yüzlerce isim var ve siz bunları alfabetik sıraya göre dizmek istiyorsunuz. Bu işlemi bilgisayarınıza çok rahat şekilde yaptırabilirsiniz. Şayet liste çok uzun değilse saniyelerden daha kısa sürer. Siz bilgisayara bu işlemi yapma komutunu verdiğinizde bilgisayar arkada (Yani bunu masaüstünüzde görmezsiniz 🙄) belirli bir algoritma yürütür.
Anlaşılır olmak amacıyla örneklerimizi artırmak gerektiğini düşünüyorum. Mesela ailenizden harçlık almak istiyorsunuz ama daha 1 gece önce aldınız. Önünüzde bir sorun var. İlk önce gidip annenize durumu anlatırsınız, ondan yardım istersiniz. Annenizin cevabına göre konum alırsınız. Bu durumu algoritmalaştıralım mı? Şık olacak gibi duruyor.🤔
- Annenin iyi olduğu anı yakalamalısın. Mesela kahve içerken olabilir.
- Eğer annen olumlu karşılarsa babandan iste.
- Babanı arayıp isteme, baban sert biri. Baban işten geldikten sonra uygun anı bekle, mesela televizyon izlerken olabilir.
- Babandan uygun anda iste, eğer vermezse sessizce odana çekil; verirse ona söz verip harçlığını al.
Alın size bir algoritma! Yukarıda "Harçlık isteme algoritması" yazdık.
Gelin işleri biraz daha zorlaştıralım ve programlama derslerinde ikinci veya üçüncü haftalarda ödev verilen hesap makinesi programının algoritmasını çıkarmaya çalışalım.
- Kullanıcıya hoş geldin mesajı ver.
- Kullanıcıya yapmak istediği işlemi sor. (Toplama, çıkarma, çarpma, bölme veya üs alma olabilir.)
- İşlem yapılacak ilk sayıyı iste.
- İşlem yapılacak ikinci sayıyı iste.
- İki sayıya belirtilen işlemi yap.
- Sonucu ekrana bas.
- 1 nolu koda dön.
Bu kadar örnek verdikten sonra anlaşılır olduğumu umuyorum. Bu arada, algoritmalardan bahsetmişken daha önceden yazdığım, yine bir algoritma olan sezar algoritmasından burada bahsetmiştim.
Arama motorları ve algoritmaları
Bu bölümde anlaşılır olmak maksadıyla "İndeks" kavramından bahsetmek gerekiyor. İndeks bilgisayar bilimlerinde kullanıldığı gibi kitapların sonunda da kullanılan yaygın bir kavramdır. Okuduğunuz kitabın sonlarını incelemişseniz illa ki görmüşsünüzdür; "Dizin" bölümü vardır. Genellikle dizin bölümünde hangi kelimenin hangi sayfada geçtiği yer alır. İndeks de öyledir, arama motorumuzda arattığımız kelimelerin "Tarih notları" olduğunu düşünelim. Bu aramamızda birinci indeksimiz "Tarih" kelimesiyken ikinci kelimemiz "notları" kelimesidir.
Şimdi bu örnek üzerinden arama motorlarının bu işi nasıl yaptıklarını madde madde anlatmaya çalışalım. Aşağıda 3 farklı internet sitesi ve içeriğini görüyorsunuz. Burada yaptığımız şey işi kolaylaştırmak, koskoca İnternet dünyasında "Tarih notları" gibi bir kelimeyi aratsaydık, sanırım milyonlarca sayfa karşımıza çıkardı.
Tarih notları pdf dosyasına aşağıdaki linkten ulaşabilirsiniz. | Mehmet beyin notunda şöyle yazıyor: "Tarih özneldir, öznel değildir diyen kendini kandırmaktadır." | Tarih dersi lisede pek ilgilyle takip edilen bir ders değil, genelde not için çalışıyor öğrenciler. |
- "Tarih notları" kelimelerini internette ara.
- Kelimelerin bulunduğu sayfadaki her kelimeye indeks ver.
- "Tarih" ve "notları" kelimelerinin yakınlığını bul.
- Aradığım bilgiye yakın olma ihtimallerine göre sırala.
Arama motorumuz ilk başta kelimeleri İnternet dünyasında arıyor. Ardından bulduğu sayfalardaki her kelimeye bir indeks veriyor. İndeks verme işlemini şöyle gösterebiliriz.
TARİH KELİMESİ | NOTLARI KELİMESİ |
1-1 | 1-2 |
2-6 | 2-3 |
3-1 | 3-12 |
Yerlerini tespit ettik. "Tarih" kelimesi 1.sitede 1.kelime, 2.sitede 6.kelime, 3.sitede 1.kelime; "Notları" kelimesi 1.sitede 2.kelime, 2.sitede 3.kelime, 3.sitede 12.kelime.
Algoritma sıralamamızda 3. basamakta belirttiğimiz "Yakınlıklarını bulma" işlemi nasıl yapılıyor? Bilgisayarın bizim gibi beyni yoktur, kelimeler arasında ilişki kuramaz ve ne okuduğunu anlayamaz. Ancak arattığımız kelimelerin birbirine yakın olması bilgisayar için önemlidir. Genellikle ne kadar yakınsa aradığımız şeyle de o kadar ilintilidir. Yakınlıklarını bulma işlemini ise sitelerde tespit edilen kelimelerin indekslerinin farkının mutlak değerini bularak yapıyor. Mutlak değerini buluyoruz çünkü eksili ifadeler karşımıza çıkabilir, ama bizim işimiz uzaklıkla, bu yüzden mutlak değer kullanacağız.
1.site için |1 - 2| = 1
2.site için |6 - 3| = 3
3.site için |1-12| = 11
Bu yaptıklarımızdan sonra başarıyla bir sıralama işlemi yapabiliriz. "Tarih Notları" kelimesini internette arattığımız zaman ilk önce birinci sonra sırasıyla diğer siteler gözükecektir.
Bu arada sıralama işleminde bir diğer önemli şey de şu; arattığımız kelimelerin indekslerinin küçük olması. Kabul edersiniz ki arattığımız şeyi gerçekten bize gösterecek bir internet sayfasında, arattığımız kelimeler başlangıçta olmalıdır. Tabi bu bizim arama motoru kullanma kabiliyetimize yani ne kadar iyi anahtar kelime arattığımıza da bağlı.
Koskoca arama motorları sadece bu işlemleri mi yapıyor? Hayır. Google'ın 200'den fazla sıralama tekniği kullandığı biliniyor. Gelin bir teknikten daha bahsedelim.
Link
Linkleri tahmin ettiğimizden de fazla kullanıyoruz. Bir videoyu, yazıyı, siteyi veya herhangi bir şeyi; genellikle beğendiğimizde azımsanacak derecede azınlıkla da beğenmediğimizde paylaşıyoruz, kimi zaman mesaj olarak kimi zamansa bir tweet olarak. Linklerle arama motorlarının ilişkisi ne? Yukarıda da kalın harflerle belirttim, mesele burada beğenmek. Arama motorumuz daha fazla link verilen(aslında beğenilen) siteyi daha yukarılara taşıyor. Yine iki siteden gidelim.
HERHANGİ BİRİ Burada çok sevdiğim bir arkadaşımın ders notları var, bakın derim. | ONUR SOĞUK Burada hocalarımızın hocasının ders notları ver, bakın derim. |
Elimizde "Burada" denilerek link verilmiş iki tane site var. Farz edelim ki soldaki, yani herhangi birinin verdiği linkteki site eski bir site olsun, bu yüzden ziyaretçisi ve kullanıcısı sağda verilen siteden daha fazla, hayliyle verilen link de daha fazla. Arama motorumuz ilk başta soldaki siteyi yukarı çıkaracak gibi dursa da işler öyle yürümüyor. Sağdaki siteye herhangi biri link vermedi, Onur Soğuk(Bu arada kendisi tanınan bir öğretmendir.) verdi! Sağdaki site daha önce çıkmalı o zaman? Evet, ama nasıl? Arama motorumuz nasıl Onur Soğuk'un bu işte yetkin bir isim olduğuna ve onun verdiği linkteki siteyi daha yukarıda göstermeye karar verecek? Yukarılarda da belirttiğimiz gibi bilgisayar bizim gibi zeki değildir. Ama algoritmamızın burada yaptığı bir kurnazlık daha var, Onur hocanın kendi sitesine verilen link sayısı! Onur Soğuk çok tanınan biri olduğu için onun sitesine verilen link sayısı hayli fazla, dolayısıyla onun verdiği link de yukarılarda gözüküyor, yani sağda verilen sitedeki link, kendisine link veren sitenin puanını da hanesine katıyor!
Sevgili Bilgeyik okurları, bir yazının daha sonuna geldik. Umarım bu yazıda da bir merakınızı giderebilmişimdir 😊