Kariyer.net ARGE olarak yürüttüğümüz projelerde hep nasıl daha iyi arama sonuçları üretebilirizin cevabını, makine öğrenmesi, collabrative filtering, faceted search, semantik anlamlandırma gibi yöntemlerle -teknolojinin son haliyle- teknik açılardan arıyoruz. Aslında bu iş, aramayı yapan kişiyle beraber çift taraflı ve birbirini besleyen bir yapıda. Daha ilk adımda yani kullanıcı aramasını yaptığında ona yeterli olanağı sunamadıysak, arka tarafta dünyanın en iyi sistemini bile kursak işe %50 geriden başlıyoruz demektir. Ve bulacağımız sonuç bu değerden yukarı olamayacaktır.
Bu yüzden işin arka tarafını diğer makalelere ve konuşmalara bırakıp "arama işine" başka bir pencereden bakmak istiyorum bu yazıda. Bir nevi sesli düşüneceğim. Böylece hem kendime not olur, hem de bu yazıyı okuyanlarla fikir alış-verişi yapabiliriz diye düşünüyorum. Sizin geri bildirimlerinizle hipotezlerimizi Kariyer.net verisiyle test etmeyi sabırsızlıkla bekliyorum.
Sıralama Değil, Bir İletişim Problemi
Arama kavramını bir iletişim kurma - anlaşma problemi olarak ele alıyorum. Bir düşünelim. Kariyer.net te iş arıyorsunuz. Bu sebeple de bir çok arama gerçekleştiriyorsunuz. Basit bazı aramalarla başlayıp sonra kriterlerinizi değiştirerek en sonunda aradığınız şeye ulaşmaya çalışıyorsunuz. Ama bu arama her zaman mutlu sonla bitmeyebilir. Bir kaç aramadan sonra sıkılıp bırakabilirsiniz.
İşte o bahsettiğim iletişim aslında burada başlıyor. İnşa etmeye çalıştığımız arama motorları şu an gerçekleştirdiği arama ile değil daha önce yaptıklarıyla da ilgilenmeli. İlk adım daha önce bize söylediklerine yani yaptığı aramalara bakmak olmalı. Çünkü biz daha önce o aramaları yapıp kullanıcıya bazı sonuçlar gösterdik. Yani benzer konularda daha önce konuştuk. Burada arama motorunu bir "kütüphaneci" olarak düşünebilirsiniz. Özetle tekrar edeyim, arama tek seferlik bir etkileşim değil, bir iletişimdir ve arama motorları kullanıcıları bu konuşmaya davet
etmeliler.
Arama sonuçlarımızın ne kadar iyi olduğunu ölçmek için de artık daha fazla parametreyi göz önüne almalıyız. Kullanıcının gelen sonuç listesinde hangi sayfalarında hangi sonuçlara tıkladı, ne kadar sürede sonucu getirdik, discounted cumulative gain in hesaplanması vb. sonuçların toplanması elbette önemli ama artık daha önemli bir şey var bence. Artık günümüz web teknolojisiyle kullanıcı iletişimini sağlamak çok kolay ve bu bize arama kalitemizi değerlendirmek için yeni kriterler getiriyor. Mesela bir kullanıcının gelen arama sonucunu ne kadar anladığı, arama motorunun kullanıcıya ne kadar kontrol sağladığı ve daha fazla araştırma için kullanıcıya neler sunabildiği, ilgilenmemiz gereken bir mesele. Yani, arama kalitesini arttırmak demek şeffaflık, kontrol ve kullanıcıya rehberlik etmek demek.
Yanlış Sorulara Cevap Aramak Yerine..
doğru soruları sormasını sağlamamız lazım. Bu hem bizim sistemimiz hem de kullanıcı için daha işin başında oldukça önemli bir adım olacaktır. Basitçe yanlış yazılan harfleri otomatik düzeltme ya da yazmaya başladıktan sonra çok popüler itemları kullanıcıya önermeyle başlayabilirsiniz. Ama bunu bir adım öteye götürmek mümkün. Mesela bir kaç ay önce Kariyer.net te devreye aldığımız yazdığınız metnin ilanlarda, pozisyonlarda ve firmalarda ayrı ayrı aranması gibi. Böylece daha aramanın başında kullanıcıdan daha iyi bir arama elde edebiliyoruz.
Anahtar kelime arama sadece ne istediğinizi ve hatta nasıl isteyeceğinizi biliyorsanız işe yarar..
Ne istediğinizi bilmediğiniz ya da hangi soruyu soracağınızı bilmediğiniz zaman ise kaybederseniz.
Her ziyaretimizde en sevdiğimiz yemekleri hazırlayan annelerimiz gibi
Artık her aramada ilgili kolon veya döküman kısmında bu geçiyor mu geçiyorsa ekrana bas tarzı tek taraflı arama sistemlerini geride bırakmalıyız. Dedim ya bir iletişim problemi diye. Kişi sitemize tekrar geldiğinde arama tuşuna daha basmadan önce biz onun ne arayacağını hissediyor ve ona daha yoldayken ne istediğini belirginleştirecek şeyleri sunuyor olmalıyız.
Ne yazık ki ıskaladığımız ama çok önemli olan, bize her kullanıcının farklı hikayesi olduğunu anlatacak arama geçmişleri, aldığı sonuçlar, tekrar denemelerinde neleri yapmaya çalıştığı, nelerden verim aldığını hesaplamak ona yol gösterebileceğimiz sistemi inşa etmemize olanak sağlayacaktır. Bunları hesaplayabilmek ise emin olun öyle kolay işler değil. Çek yavrum raporu ekrana da bir bas şöyle. Heeeh. Toplantı odasında ekrana bakıp nöronlarımıza ilk nüfus eden fikirlerden ortaya karışık yapalım gibi bir mesela değil. Bu bilgiyi elde etmek için istatistikten, matematikten, araştırmalardan geçmeliyiz.
Böylece biz artık belki hiç arama yapmasına gerek kalmadan en çok istediklerini sunabileceğiniz. Ya da bulduğumuz onlarca eşleşen sonucu daha uygun biçimde sıralayabileceğiz.
Kullanıcı ve sitenin tanışmasından bahsettik. Bir websitesi sizi tanıdıktan sonra artık siz hiç bir şey yapmasınız da sizin için en uygun olanları getirebilmeli. Hiç Netflix kullandınız mı bilmiyorum ama site 1 kere girdikten sonra size sunduğu önerilerin kalitesi bir harika. Bunu da sizin oyladığınız ya da incelediğiniz filmlere bakarak yapıyor. Daniel Tunkelang (Linkedin Chief Data Scientist) in bir sunumunda gösterdiği 3 önemli ders var bu konuda kafa patlatan bizler için. Bu yöntemlerle tüm sayfa gösterimlerinin %75 ni sadece kendi sundukları önerilerle alıyorlar. Yani bir kere sizi tanıdıktan sonra o kadar iyi öneri yapıyorlar ki artık kullanıcılar arama yapmak yerine sizin önerileriniz üzerinden siteyi geziyorlar. Bu konuyla alakalı çok güzel bir çalışma yapıyoruz, sonuçları paylaşmak için ayrı makaleyi bugün yarın yazıcaz :). Merak edenler için collaborative filtering
- -Kullanıcıyı boğmadan onu tanımak için yardım isteyin. Sorular sorun.
- -Kullanıcının size ne anlatmak istediğine kulak verin. Bunu ona daha az sorarak daha fazla hareketlerinden anlamak
- -Tek seferlik değil sık sık bu değerlendirmeleri gözden geçirin
Harika Bir Projeydi! Şimdi İçkilerimizi İçip Bir Daha Asla Buraya Dönmeyelim
"Arama İyileştirme" konusu her türlü yönüyle, arayüzden ve bilgi toplamaktan query planning e, arama tool u seçmekten, ranking algoritmaları geliştirmeye kadar bir çok yelpazede incelenen bir konu. Tam da bu sebepten dolayı ne kadar başarılı ne kadar büyük olursa olsun geliştirmelerimiz, arama sisteminin "iyi" çalışması işi asla bitmeyecek bir projedir. Hep yaşayan bir sistem olan arama için gözlem ve geliştirme asla durmamalı. Bu konu üzerinde daima mesai harcayan, kafa yoran insanlar bulunmalı. Örneğin Amazon da onlarca farklı disiplindeki mühendisin bir araya gelmesiyle bir "Arama Kalitesi" departmanı bile var.
Son sözler..
Günümüz teknolojisinin geldiği noktada her geçen gün arama algoritmalarımızı, veri sistemlerimizi geliştiriyoruz. Her geçen gün biraz daha sistemlerimizi akıllandırıyoruz. Ama bütün bunları yaparken sistemin insan ve makine arasında olduğunu unutmamak gerekiyor. Yani en iyi arama motorları, kullanıcıların kendilerine yardım etmesine olanak sağlayacak olanlardır.
Umarım kafamdakileri biraz olsun yazıya dökebilmişimdir. Siz de hem bir kullanıcı olarak hem de bu sistemleri inşa eden insanlar olarak, varsa görüşleriniz dinlemek isterim.