En şık yemek tarifi sitesi: Yemekliz!

Herkese merhabalar,

Gene her zaman ki gibi uzun bir aradan sonra yazıyorum. Bir arkadaşımın okul projesi olarak başlayan yemek tarifleri sitesini geliştirerek aktif hale getirdim. Bunu da buradan paylaşayım dedim 🙂

Yemekliz henüz yeni olduğu için çok fazla tarif yok ( hoş bu blogu takip eden kitle ne kadar ilgilenir bilmem ama, herkes yemek yiyor neticede öyle değil mi 🙂 ). Ama zamanla eklenecek, merak etmeyin. Bot ile çeşitli sitelerden çekmek yerine özgün tarifler koymayı amaçladığım için yavaş olabilir bu işlem.

Sitenin özelliklerine gelince, işte o kısımda fark yaratmaya çalıştım :). Öncelikle site diyet yapanlar için ideal. Çünkü her yemeğin kalorisi’de sitede yer alıyor. Hemde başka sitede bulamayacağınız gerçeklikte ( Burada tahmini kalori değerleriyle, yemeğin gerçek kalorisiymiş gibi bilgi verenlere taş atıyorum 🙂 ). Ek olarak elinizdeki malzemelere göre, veyahut örneğin canınız etli yemek çekiyorsa, bu soruna çözüm getiren bir öneri motoru da sitede mevcut. Bu özelliği geliştirip daha ön plana çıkarmayı planlıyorum ilerleyen zamanda, ancak şimdilik anlattığım gibi. Bunlar dışında klasik tarif sitelerinin biraz daha şık olanı diyebiliriz. Yani öyle olmasını amaçladım ama ne kadar oldu bilinmez.

İşin teknik kısımlarına gelecek olursak, Yemekliz’in arayüzünü tasarlarken genel olarak Semantic-ui ile çalıştım. Ancak grid sistemi için daha çok hoşuma giden 978 Grid System‘i kullandım. Daha sonra işler karışmasın diye şimdiden responsive hale getirdim (mobil veya tabletlerde test edip sonuç bildirirseniz sevinirim hatta 🙂 ). Arkaplanda ise düz PHP kullandım. Şu sıralar Laravel öğrenmeyi düşünüyorum, öğrenir öğrenmezde siteyi Laravel framework’ü ile tekrar kodlayacağım (bu biraz zaman alabilir).

Siteyle ilgili planlı geliştirmelere gelecek olursak, aklımda üyelik sistemi var. Tarifler üzerine bir sosyal ağa doğru evirmeyi planlıyorum kısmetse. Tabi bundan da önce, tarifler hakkında görüş bildirme / yorum yapma bölümü var ki, onu biran önce halletmeliyim. Yukarıda üstünü çizdiğim özellikte altyapı olarak hazır, ancak arayüz çalışmasını bitirmediğim için şuan yok (bir kaç güne onuda halledip bu sefer bu kısmın üstünü çizeceğim 🙂 ). Bunlar dışında aklınıza gelen, önerdiğiniz bir fikir, özellik vs var ise belirtirseniz mutlu olurum.

Sitenin işinize yaraması, ve leziz yemekler yapmanız dileğiyle.

Sosyal İşbirlikçi Filtreleme

Bu yıl üniversitede 4. yılım malum. Hal böyle olunca tez çalışması yapmak gerekti. Bende 1-2 yıl önceden belirlediğim konuda yapmaya karar verdim tezimi. O konu ise Tavsiye Sistemleri. Hem okuduğum bölüm olan istatistiği hemde ilgi alanım ve mesleğim gördüğüm yazılımı bir arada barındırıyordu. Bu yüzden seçmiştim bu konuyu. Hikayeyi bırakırsak sizlerle bu konuda öğrendiklerimin bir kısmını paylaşacağım.

Tavsiye Sistemleri ana başlığı altında kendime seçtiğim alan İşbirlikçi Filtreleme (collaborative filtering) oldu. Tavsiye sistemleri biraz daha geniş bir tanım. Öncelikle İşbirlikçi Filtreleme’yi araştırmakla başladım.

Peki nedir bu İşbirlikçi Filtreleme

İşbirlikçi Filtreleme, bazı öneri sistemlerini kullanan bir tekniktir[1]. İF  yaklaşımının altında yatan temel varsayım geçmişte kabul edilenlerin gelecekte de kabul edilebileceğidir[2]. İF genel olarak iki farklı biçimde uygulanır[3]. Bunlar

  • Öğe Bazlı (Item Based) İşbirlikçi Filtreleme
  • Kullanıcı Bazlı (User Based) İşbirlikçi Filtreleme

Kullanıcı bazlı filtrelemede kullanıcılar beğenileri ile karşılaştırılır ve kullanıcı için en yakın kullanıcı bulunarak onun diğer beğendikleri kullanıcıya önerilir. Öğe bazlı filtrelemede ise  bir öğe-öğe matrisi ile öğeler arası benzerlikler hesaplandıktan sonra o öğeyi beğenenlere benzer öğeler önerilir.

Bunu bir örnekle açıklamak gerekirse;

Öğe bazlı İşbirlikçi Filtreleme ile Kullanıcı bazlı İşbirlikçi Filtrelemenin karşılaştırılması

 

Şekildeki durumda, kullanıcı bazlı filtrelemede kullanıcılar eşleştirildiğinden 3. kullanıcıya üzüm ve portakal önerilirken öğe bazlı filtrelemede öğeler eşleştirildiğinden 3. Kullanıcıya yalnızca üzüm önerilir[4].

Genel olarak İF’nin sözel anlatımı bu kadar. Kafanızda birşeyler canlanmıştır. Birazda uygulama yapalımki iyice otursun kafalarda :).

Sosyal Ağlar yardımı ile İşbirlikçi Filtreleme

Uygulamayı anlaşılabilir olması açısından basit düzeyde tuttum. Amacımız bir kullanıcının beğendiği filmlere göre henüz beğenmediği ama beğenmesi yüksek olasılıklı filmleri önermek. Kullanıcı verileri için (örneğin kullanıcının beğendiği filmler) Facebook verilerini kullandım, bu sayede İF’nin ilk kullanıcı hakkında bilgi sahibi olmama (cold start) problemine de bir çözüm yolu getirmiş oldum. Önerilebilecek filmleri bulabilmek için ise hazır veritabanı kullanmak yerine ise gene Facebook verilerini kullandım. Önerilecek filmleri de kullanıcının arkadaşlarının beğendiği filmler üzerinden buluyor. Ayrıca bir bildiri için hazırlanan tez çalışmama da şuradan bakabilirsiniz.

Uygulamaya şu adresten ulaşabilirsiniz. Bu arada bu uygulamanın gelişmiş versiyonunu yeni projem olan Fragmanda sitesinde kullanacağım. Öğrendiklerimizi kullanmamız gerek, yoksa ne anlamı var değil mi? 🙂

Kaynaklar:

  1. http://en.wikipedia.org/wiki/Collaborative_filtering
  2. http://degiske.com/2010/10/10/isbirlikci-filtreleme
  3. http://ojs.academypublisher.com/index.php/jsw/article/viewFile/0507745752/1954
  4. http://cuihelei.blogspot.com/2012/09/the-difference-among-three.html

Ritim projesi

Bu güne kadar haberiniz olmuştur, ya da bizzat ben söylemişimdir (“baksana oğlum şurası nasıl oldu?” şeklinde), ya da belkide duymamışsınızdır (O zaman şimdi duyun!) projemi. Ritim 11 aydır ara ara (bu “ara”lar bazen bayağı uzun olabiliyor), vakit buldukça geliştirdiğim ve bugüne kadar ki en çok emek verdiğim site.

Peki nedir bu Ritim?

Ritim nedir sorusuna verdiğim cevaplar sürekli değiştiği için bu sorunun cevabını ben bile karıştırıyorum aslında bazen. “Ritim neydi?” derseniz kısaca anlatmak gerekirse görsel tarafa ağırlık verilmiş bir fizy idi en başta. Ne gerek vardı diyenler Blogspot – Tumblr kıyaslaması yapabilir. Fakat şimdi “Ritim nedir?” derseniz cevabım biraz daha komplike. Artık bir siteye benzemeyi bir kenara bıraktı, kendine özgü yapısı, işleyişi ve algoritmasıyla Ritim artık bir Ritim. Özgün yani. Şunun gibi, bunun gibi birşey diyemiyorum artık onun için.

Bu konunun biraz detayına inersek, Ritim’in sloganıyla başlayayım: “Akıllı müzik kaşifi”. Peki ne yapar bu kaşif? Bu kaşif akıllı, yani siz/sizler siteyi kullandıkça öğrenen, her geçen gün daha geniş bir arşive sahip olan, bununla birlikte daha isabetli, sevmeniz daha muhtemel şarkıları karşınıza çıkarıcak olan bir tavsiye motoru gibi birşey aslında. Çokta detay vermek istemiyorum çünki anlattıkça, paylaştıkça sanki benzeri yapılıyor. Belkide benim düşündüğümü başkalarıda düşünüyor ve benden hızlı ortaya çıkarıyordur. Ama olsun biraz paranoyaklık iyidir. Bu kadar bilgi yeter şimdilik.

Site şuanda e-posta topluyor. Açıldığında kayıt olanlara öncelik tanımak, ilk önce bu akıllı kaşifi keşfetmek için. Sizde onlardan biri olmak isterseniz yapmanız gereken basit. http://rit.im adresine girin ve e-postanızı bırakın!

Son olarak siteyle ilgili görüş, öneri ve şikayetlerinizi lütfen bildiriniz. Ben sizin görüşlerinize önem vermeseydim o site bu kadar gelişemezdi. (böyle giderse beta olarak değil direk tam sürüm açılacakta neyse)