Abdullah AKAY Lisans Bitirme Raporu
Transkript
Abdullah AKAY Lisans Bitirme Raporu
T.C. GEBZE YÜKSEK TEKNOLOJĠ ENSTĠTÜSÜ Bilgisayar Mühendisliği Bölümü Mobil KiĢisel Asistan M.Kemal EFENDĠOĞLU DanıĢman Dr. Hidayet Takçı Haziran, 2011 Gebze, KOCAELĠ i T.C. GEBZE YÜKSEK TEKNOLOJĠ ENSTĠTÜSÜ Bilgisayar Mühendisliği Bölümü Mobil KiĢisel Asistan M.Kemal EFENDĠOĞLU DanıĢman Dr. Hidayet Takçı Haziran, 2011 Gebze, KOCAELĠ ii Bu çalıĢma 08/06/2011 tarihinde aĢağıdaki jüri tarafından Bilgisayar Mühendisliği Bölümünde Lisans Bitirme Projesi olarak kabul edilmiĢtir. Bitirme Projesi Jürisi DanıĢman Adı Dr. Hidayet Takçı Üniversite Gebze Yüksek Teknoloji Enstitüsü Fakülte Bilgisayar Mühendisliği Jüri Adı Doç. Dr. Erkan ZERGEROĞLU Üniversite Gebze Yüksek Teknoloji Enstitüsü Fakülte Bilgisayar Mühendisliği Jüri Adı Y. Doç. Dr. F. Erdoğan SEVĠLGEN Üniversite Gebze Yüksek Teknoloji Enstitüsü Fakülte Bilgisayar Mühendisliği iii ÖNSÖZ Bu projede yol gösterici olan Sayın Dr. Hidayet Takçı hocama ve bu çalıĢmayı destekleyen Gebze Yüksek Teknoloji Enstitüsü’ne içten teĢekkürlerimi sunarım. Ayrıca eğitimim süresince bana her konuda tam destek veren aileme ve bana hayatlarıyla örnek olan tüm hocalarıma saygı ve sevgilerimi sunarım. M.Kemal EFENDĠOĞLU Haziran, 2011 iv ĠÇĠNDEKĠLER ÖNSÖZ .................................................................................................. IV ĠÇĠNDEKĠLER ..................................................................................... V ġEKĠL LĠSTESĠ ................................................................................... VI ÖZET .................................................................................................... IX SUMMARY............................................................................................ X 1. GĠRĠġ .................................................................................................. 1 2. DUĠNE FRAMEWORK .................................................................... 3 3. DUINE FRAMEWORK'ÜN ANA KONSEPTLERĠ ...................... 6 4. PROFĠL MODELLERĠ ................................................................... 10 5. TAHMĠN METOTLARI ................................................................. 13 6. WEB SERVĠSLERĠ ĠÇĠN CLIENT / SERVER ............................ 14 7. MOBĠL CLIENT .............................................................................. 16 8. SONUÇ VE ÖNERĠLER ................................................................. 19 KAYNAKLAR ...................................................................................... 20 v ġEKĠL LĠSTESĠ ġEKĠL 1.1 Android GingerBird 2.3 ....................................................................... 2 ġEKĠL 2.1 Duine Framework’ün genel yapısı ....................................................... 4 ġEKĠL 3.1 DuineFrameWork’ ana konseptleri ..................................................... 6 ġEKĠL 3.2 Tahmin teknikleri ve tahmin stratejileri arasındaki iliĢki ................. 8 ġEKĠL 3.3 Tahmin teknikleri karar ağacı ............................................................. 9 ġEKĠL 6.1 Client/server çalıĢma mantığı ............................................................. 15 ÖZET Etrafta birçok etkinlik, program, fırsat ve kampanyalar olurken acaba bunların kaç tanesinden haberimiz oluyor? Yoğun iĢ hayatımızın içinde kendi ilgi alanımıza uygun olanı takip edebiliyormuyuz? Katıldığımız veya katılmak istediğimiz bir etkinliği sosyal ağdaki bir arkadaĢımızla paylaĢıp onlarla ne kadar etkileĢim halinde olabiliyoruz? ĠĢte bütün bu sorulara cevap olabilecek, bütün bu karmaĢayı kullanıcıların kiĢisel tercihlerine göre çözüp önerilerde bulunabilecek bunları sosyal ağla da entegre edip bir tür kiĢisel asistan gibi çalıĢabilecek bir programın gerekli olduğu görülmüĢtür. Bu proje, kiĢilerin ilgi alanlarına göre çevresindeki etkinlikleri, programları arkadaĢlarının da tercihlerini göz önünde bulundurarak öneriler de bulunmak suretiyle insanların ilgi alanlarına göre doğru bilgiye ulaĢmasını amaçlar. SUMMARY Around us while many events, programs and opportunities occur, I wonder that We know how many of them? Are we able to following own interests during the busy work life? How much interaction are we with social networks? A program was necessary that can answer all these questions, recommend to solve all this mess according to personal preferences of users, run like a personal assistant. This project, recommends to help people find information, products and services that are interesting to them 1. GĠRĠġ Son yıllarda, çok fazla miktarda bilgi internete sağlanmakta ve bunun sonucunda “AĢırı Bilgi Yüklenmesi” sorunu ortaya çıkmaktadır.Ġnsanlar istedikleri bilgiyi elde edebilmek için web’te arama sırasında çok fazla vakit harcamaktadırlar.KullanıĢlı ve iĢe yarar bilgiyi elde etme ihtiyacı bilgi filtreleme ve kiĢiselleĢtirme tekniklerinin geliĢtirilmesine yol açtı. Tavsiye sistemleri kullanıcılara kiĢiselleĢtirilmiĢ hizmetler sunarak bu sorunu aĢmada en önemli teknolojilerden biri olmuĢtur. Belirli bir öneri alanı içinde bu alana ait bilgilere dayanılarak yapılan tavsiyelerin kalitelerini artırmak ve maksimum kullanıcı memnuniyetini sağlamak için bir çok çalıĢma gerçekleĢtirilmiĢtir. Tavsiye sistemleri, kullanıcı tercihlerini ve profillerini kullanır, kullanıcı modelleri oluĢturur, kiĢilerin gelecekte neye ihtiyaç olduğunu tahmin edebilmek için kullanıcı davranıĢlarını tanımlar ve kiĢiselleĢtirilmiĢ tavsiyeler üretmeyi dener.Son yıllarda maksimum kullanıcı memnuniyetini sağlamak ve tavsiye motorlarının kalitesini arttırabilmek adına kullanıcı modelleme tekniklerinin ve tavsiye metotlarının geliĢtirilmesi için birçok araĢtırma yapıldı. Bu tezin amacı, insanlara kiĢiselleĢtirlmiĢ öneriler sunmak için geliĢtirilmiĢ sistemlerden birisi olan Duine Framewrok’ü kullanarak hem web hem de mobil taraflı bir tavsiye sistemini gerçekleĢtirmektir. 1 Son yıllarda akıllı cep telefonlarının iyice yaygınlaĢması ve cep telefonlarının artık insanların ayrılmaz bir parçası olması dolayısıyla böyle bir sistemi mobil platforma taĢıma ihtiyacını gerektirdi. Uygulama web server ve mobil client olarak geliĢtirilmiĢtir.Mobil client olarak son yılların gözde iĢletim sistemi Android seçilmiĢtir. Şekil 1.1 Android GingerBird 2.3 Bu bitirme tezinin akıĢı aĢağıdaki gibidir. 1. Web Server 1.1 Duine Framework 1.2 Duine ana konseptleri 1.2.1 Profil modelleri 1.2.2 Tahmin metotları 2. Mobil Client 2 2. DUĠNE FRAMEWORK Duine framework, geliĢtiricilerin kendi uygulamaları için kiĢiselleĢtirilmiĢ tavsiye motorları oluĢturmalarını sağlayan Java ile yazılmıĢ bir kütüphanedir. Duine, Telematica Instituut/Novay tarafından geliĢtirildi ve kiĢiselleĢtirme üzerine bilimsel araĢtırmalara dayanır. Duine tavsiye motoru, insanların bilgiyle ne kadar ve nasıl ilgilendiklerini hesaplayan bir yazılım modülüdür.Bu hesaplamanın neticesi kullanıcıların o bilgiye ne kadar ilgi duyduklarını gösteren bir sayısal veridir.Tahmin olarak ta ifade edilen bu sayısal veri (-1) ile (+1) arasında değiĢmektedir.(-1) kullanıcının o bilgiyle hiç ilgilenmediğini, (+1) ise tamamen ilgilendiğini gösterir.Örnek olarak Duine tavsiye motoru, bir kullanıcının ne tür TV programlarıyla ilgilendiğini hesaplayabilir. Bu tahminler çeĢitli yollarda kullanılabilir.Örneğin en çok ilgi duyulan verileri kullanıcıya top 10 listesi Ģeklinde sağlamak ve her bir veriye duyulan ilgiyi kullanıcıya grafiksel olarak sunmak için kullanılabilir. Duine, kullanıcıların bir bilgiye verdikleri puanları depolar ve kullanıcıların farklı kategorilerdeki bilgilere duydukları ilgiyi hesaplar.Bütün bunları bir kullanıcı profilinde birleĢtirilmiĢ olarak depolar. Duine, öğrenme yeteneğine sahiptir.Bir kullanıcı bir bilgiye puan verdiği zaman bu bilgiden bir takım veriler çıkartır.Örneğin bir TV programı tanımından türünü ve anahtar kelimeleri çıkartır.Ve kullanıcının bu tür TV programlarıyla nasıl ilgilendiğini tanımlar.Bu Ģekilde akıllı öğrenme algoritmaları kullanarak yavaĢ yavaĢ kullanıcıyı tanımaya baĢlar. 3 Duine framework’ü 7 tane tahmin metodu kullanır.Bunları Social Filtering, Information Filtering, Similarity, GenreLMS, TopNDeviation, AlreadyKnown ve User Average Ģeklinde listeleyebiliriz.Bu metotlara ileriki bölümlerde değinilecektir. Şekil 2.1 Duine Framework’ün genel yapısı Duine tavsiye motoru, melez bir sistemdir.Bu Ģu manaya gelir; böyle bir sistem kiĢiselleĢtirilmiĢ öneriler sunmak için tek bir tahmin metodu kullanmak yerine çeĢitli tahmin metotlarını kullanabilir.Melez bir sistem tek bir tahmin algoritması kullanan sistemlere göre; Daha kesin tahminler üretir Cold-start problemini azaltır 4 Cold-start problemi, bir tavsiye motorunun bir kullanıcı veya ürün hakkında daha iyi önerilerde bulunabilmek için yeterli bilgiye sahip olamaması durumudur.Cold-start problemi boyunca melez bir sistem mevcut teknikleri TopNDeviation gibi daha basit olan tekniklerle değiĢtirir.Bunlar kompleks teknikler kadar kesin sonuçlar üretmeyebilir ama hiç tahmin üretmemekten daha iyidir.Üstelik kompleks tekniklere göre daha çabuk öğrenebilirler.Sonrasında kullanıcının verdiği puanlar ve profil bilgisinin artmasıyla tahmin stratejileri daha kompleks ve kesin değerler üreten tahmin teknikleriyle değiĢtirirler. Duine framework’ün özellikleri; Extensibility : Duine tavsiye motoru, yeni tahmin teknikleri ve stratejileri ile ve yeni profil modelleri ile geniĢletilebilir. Validation : Tahmin sonuçlarının kesinliği için bir takım araçlarla birlikte gelir. Explanation API : Duine, tahmin sonuçlarının nasıl üretildiğini açıklayabilen bir apiye sahiptir. 5 3. DUINE FRAMEWORK’ÜN ANA KONSEPTLERĠ Şekil 3.1 DuineFramework’ün ana konseptleri 3.1 Ratable Item Ratable Item, bir kullanıcının puan vererek veya tercih yaparak düĢüncesini ifade edebildiği bir bilgi parçası için kullanılan bir terimdir. 3.2 Prediction Techniques Bir tahmin tekniği bir takım sıralama algoritmaları kullanarak kullanıcının bir bilgi parçası ile ne kadar ilgilendiğini hesaplar.Sonuç kullanıcının ilgisini ifade eden (-1) ile (+1) arasında değiĢen sayısal bir veridir. 3.3 User Profile Bir kullanıcı profili, kullanıcı hakkında bilinen herĢeyi ifade eden soyut bir kavramdır. 6 3.4 Feedback Processors Bir feedback processor kullanıcılardan doğrudan veya dolaylı bir Ģekilde gelen feedback’lere bakarak öğrenebilir.Bir takım algoritmalar kullanarak feedback’leri iĢler ve kullanıcı profilini günceller. 3.5 Explanations Tahmin teknikleri ürettikleri tahmin değerlerini açıklayabilir.Bu açıklamalar bir Ģeffaflık sağlar ve tahmin metotlarının kabul edilebilirliğini arttırır.Kullanıcılara bir tahmin metodunu Kabul edip etmeyeceğine ve bir tahmin metodu doğru olmayan sonuçlar ürettiği zaman yanlıĢ olan mantığı anlamalarına yardımcı olur. 3.6 Validity Indicators Hangi tahmin tekniklerinin kullanıĢlı olduğu hususunda kararlar alabilmek için her bir teknik bir geçerlilik göstergesine sahiptir.Çoğu tahmin teknikleri farklı geçerlilik göstergesine sahiptirler.Örneğin Social Filtering bir ürüne puan veren benzer kullanıcıların sayısını sağlar.CBR, bir kullanıcı tarafından oylanan benzer ürünlerin sayısını verir.Bu göstergeler hangi tahmin tekniğinin kullanılması gerektiğine karar verme sırasında tahmin stratejileri tarafından kullanılabilir. 3.7 Prediction Strategies Tahmin stratejileri, verilen bir bilgi parçası ve kullanıcı için tahmin değerleri üretir.Ancak bir takım sıralama algoritmalarını kullanarak değil de tahmin tekniklerini birleĢtirerek veya aralarında seçim yaparak gerçekleĢtirir.Duine framework hangi teknikleri seçeceğine veya hangilerini birleĢtireceğine karar verebilmek için bir strateji kullanır.Burada (if…then…else) Ģeklinde katı karar kuralları uygulanır. 7 Aslında tahmin stratejileri tahmin tekniklerinden farklı değildir.Her ikisi de bir kullanıcının bir bilgiye olan ilgisini tahmin eder. Şekil 3.2 Tahmin teknikleri ve tahmin stratejileri arasındaki ilişki Özellikle bir tahmin stratejisi yeni bir kullanıcı kayıt olduğunda oluĢturulur ki bu en iyisidir.Çünkü yeni bir kullanıcı kaydı demek yukarıda da bahsedildiği gibi coldstart problemi demektir.Bu durumda kompleks tahmin teknikleri kiĢiselleĢtirilmiĢ tahminler üretebilmek için yeterli bilgiye sahip değildir.Bu yüzden tahmin stratejileri daha basit olan TopNDeviation gibi populariteye göre tahminler üreten tahmin tekniklerini mevcut teknikler yerine kullanır.Böylece hiç tahmin üretememek yerine en azından çoğu kullanıcının tercih ettiği bilgiyi belli bir kullanıcının da tercih etme ihtimali yüksektir mantığıyla yaklaĢılır.Kompleks tekniklere göre daha az kesinlik değerine sahip olmamasına rağmen hiç öneride bulunmamaktan iyidir. 8 Şekil 3.3 Tahmin teknikleri karar ağacı 9 4. PROFĠL MODELLERĠ Profil model kavramı daha önce açıklanmıĢtı.Profil modelleri tahmin metotları tarafından girdi olarak kullanılan veriyi toplamak için kullanıldı.Profil modelleri kullanıcılar feedback bıraktığı zaman feedback processor’lar tarafından güncellenir. Duine, 4 tane profil modeliyle birlikte gelir.Her profil modeli aynı tasarım Ģablonunu kullanır: o Her profil modeli tamamen müstakil ve diğer profil modellerine bir bağımlılığı yoktur. o Her profil modeli kendi kalıcılığını yönetir. o Her profil modeli kendi kalıcı katmanına bir (DAO) vasıtasıyla eriĢir.Duine bu noktada Hibernate implementasyonunu kullanır. 4.1 RatingModel RatingModel, Kullanıcı oylarını depolar ve onlara eriĢimi sağlar. 4.2 InterestModel Bir interest Model, kullanıcı ilgisini ifade eden bir profil modelidir.Bir interest sınıfı bir kullanıcının bir ilgisini tanımlar.Bir ilgi string tipi olarak bir anahtar kelimeyle ifade edilebilir.Örneğin swimming, cycling gibi.Bunun haricinde bir ağırlık ve kesinlik değeri ile miktar olarak ifade edilebilir. 10 <bean id="informationFiltering" class="org.duineframework.recommender.predictor.InformationFiltering"> <description>Uses term weight maps for its predictions.</description> <property name="name" value="informationFiltering"/> <property name="interestModel" ref="infoFilterInterestModel"/> ..... </bean> <bean id="infoFilterInterestModel" class="org.duineframework.recommender.profile.interest.InterestModel"> <property name="modelId" value="org.duineframework.recommender.profile.interest.infoFilterInterestModel"/> .... </bean> <bean id="mainGenreLMS" class="org.duineframework.recommender.predictor.InterestLMS" > <description>Uses main genres for its predictions.</description> <property name="name" value="mainGenreLMS"/> <property name="interestModel" ref="mainGenreInterestModel"/> .... </bean> <bean id="mainGenreInterestModel" class="org.duineframework.recommender.profile.interest.InterestModel" > <property name="modelId" value="org.duineframework.recommender.profile.interest.mainGenreInterestModel"/> .... </bean> 11 4.3 UserSimilarityModel UserSimilarityModel, Kullanıcılar arasındaki benzerlikleri ifade eder.Bu benzerliklere eriĢmek için IUserSimilarityModel interface’ini kullanır.Bu interface için UserSimilarityModel ve UserSimilarityModelOnTheFly olmak üzere iki tane implementasyon kullanılır. UserSimilarityModel, veritabanında gerekli verilerin olduğunu farzeder ve örneğin her 24 saatte bir kullanıcı profillerini günceller. UserSimilarityModelOnTheFly ise bir istek geldiği zaman hesaplama yapar. 4.4 ItemSimilarityModel ItemSimilarityModel, ürünler arasındaki benzerlikleri ifade eder.Bu benzerliklere eriĢmek için IItemSimilarityModel interface’ini kullanır.Bu ItemSimilarityModel ve ItemSimilarityModelOnTheFly interface için olmak üzere iki tane implementasyon kullanılır. ItemSimilarityModel, veritabanında gerekli verilerin olduğunu farzeder ve örneğin her 24 saatte bir hesaplama yapar. ItemSimilarityModelOnTheFly ise bir istek geldiği zaman hesaplama yapar. 12 5. TAHMĠN METOTLARI Tahmin Tekniği Profil Modeli UserAverage Rating Model Ratable Item adapter Açıklama Kullanıcının diğer ürünlere vermiĢ olduğu puanların ortalamasını döndürür AlreadyKnown Geçerli kullanıcının bir ürün için Rating Model vermiĢ olduğu puanı döndürür TopNDeviation Bir ürüne diğer kullanıcıların vermiĢ Rating Model olduğu bütün oylara dayanan bir tahmin döndürür Collaborative Rating Filtering User GeçmiĢte aynı ürüne aynı ürüne aynı Model, Ģekilde Similarity puan muhtemelen Model veren benzer kullanıcılar bir beğeniye sahiptirler.Bu mantıkla bir kullanıcıya göre bilinmeyen bir ürün için benzer kullanıcıların vermiĢ oldukları puanlara bakarak bir tahmin üretir Information InterestModel IRatable2TermWeightAdapter Filtering Bir ürün tanımından veriyi çıkartır, kelime analizi yapar, ve sonucu kullanıcı profili ile eĢleĢtirir. Case-based Rating Reasoning Item Model, IRatable2SimilarityAdapter Ġki ürün benzerse ve bu ürünlerden bir tanesi Similarity hakkındaki puanlama biliniyorsa o zaman diğer ürünün Model puanı da muhtemelen aynı olacaktır. InterestLMS InterestModel IRatable2InterestAdapter Bir ürüne ne kadar ilgi duyulduğunu tahmin eder 13 6. WEB SERVĠSLERĠ ĠÇĠN CLIENT / SERVER Bu kısım,projenin etkinlik, sinema, TV programı, hava durumu gibi web servislerine bağlanıp gerekli verileri çeken ve bunları mobil client için çıktı olarak veren modülü hakkındadır. Restfull web servisleri oluĢturabilmek için farklı yöntemler vardır.Bazı kiĢiler JSR 311(JAX-RS) ve onun referans implementasyonu olan jersey’i kullanır.Yine bu iĢ için Restlet ve RestEasy gibi farklı framework’ler de vardır. Spring ise java ile web uygulamaları geliĢtirmek için iyi bilinen bir framework’tür. Spring 3 ile birlikte MVC katmanında Rest desteği geldiği için biz de projemizde Spring 3 kullanmayı tercih ettik. Bu kısım Duine tavsiye motoru ile mobil client arasında bir köprü vazifesi görür.Mobil client’tan bir istek geldiği zaman önce veritabanına(cache) bakar, eğer gerekli bilgi yoksa web servislerine bağlanıp ilgili kısmı çeker ve mobil client’a çıktı olarak verir.Çekilen bilgi ayrıca veritabanına kaydedilip bir sonraki iĢlemlerde veya farklı kullanıcılar tarafından gerçekleĢtirilen benzer iĢlemlerde daha hızlı iĢlem yapılması sağlanır. Mobil client’tan gelen kullanıcı profillerini ve tercihlerini tavsiye motoruna göndererek yeni değerlerin hesaplanmasını sağlar.Tavsiye motorundan gelen güncel verileri ise mobil client’a çıktı olarak verir. 14 Şekil 6.1 Client/server çalışma mantığı Kullanılabilecek Servisler : Hava Durumu Sinema/tiyatro vs. Etkinlikler TV Programı Fırsat ve Kampanyalar Sosyal ağ güncellemeleri Yemek SipariĢi Gelecek etkinlikler ( Takvime kaydetme ) 15 7. MOBĠL CLIENT Son yıllarda özellikle akıllı cep telefonlarına olan rağbet artınca teknoloji üreticilerinin ve bu teknolojiye yazılım geliĢtiricilerin ilgisini çekti.Özellikle cep telefonlarının taĢınabilir oluĢu ve kullanıcıların ayrılmaz bir parçası oluĢu bilgisayarlar için geliĢtirilen yazılımların mobil platformlara taĢınması fikrini ortaya çıkardı. Bir tavsiye sisteminin sadece web tabanlı olması noktasından baktığımız zaman aslında bunun çok ta mantıklı olmadığını görüyoruz.Ġnsanlar bir seyahat esnasında veya farklı sebeblerden dolayı bilgisayar baĢında olmayabilir.Halbuki her nereye giderse gitsin gittiği yerle alakalı öneriler alma ihtiyacı hissedebilir. Cep telefonları bir arkadaĢ gibi insanların sürekli yanında olduğu için neden böyle bir sistem mobil platformda olmasın fikrini getirdi.Kullanıcıya özgü kiĢiselleĢtirilmiĢ tavsiyelerde bulunan bunları sosyal ağla da entegre edip diğer kullanıcılar ile etkileĢimi sağlayan mobil bir sistem ile hem “aĢırı bilgi yüklenmesi” problemine çare olacak hem de kullanıcılar için her gittiği yerde kendisine bir takım önerilerde bulunan mobil bir arkadaĢ sağlanmıĢ olacaktı. Bu fikirden yola çıkarak geliĢtirdiğimiz sistemde platfrom olarak son yılların en gözde mobil iĢletim sistemi olan Android’i tercih ettik. 16 ġekilde görüldüğü gibi bu projede diğer tavsiye sistemlerinden farklı olarak uygulama kullanıcıyı yönlendiriyor.Yani kullanıcı hastane ara, restoran bul gibi bir takım komutlar vererek uygulamayı yönetmiyor.Uygulama kullanıcının profil bilgisine ve yapmıĢ olduğu tercihlere bakarak bir takım önerilerde bulunuyor. BaĢlangıçta kullanıcıdan detaylı bir profil bilgisi isteniyor.Ġlk olarak profil bilgilerine ve daha önceki bölümlerde bahsedilen TopNDeviation gibi metotlara bakarak bir takım önerilerde bulunuyor.Kullanıcı tercih yaptıkça onu daha iyi tanıyor ve daha kesin önerilerde bulunuyor. 17 Kullanıcının girmiĢ olduğu profil bilgileri hem web server’a gönderilip burada iĢlenmesi sağlanır hem de mobil veritabanına kaydedilir.Kullanıcıya bir öneri gelip kullanıcının olumlu yada olumsuz bir tercih yapması durumunda bu yeni veriler server’a gönderilerek yeni tahmin değerlerin hesaplanması sağlanır.Hesaplanan yeni değerler tekrar mobil client’a gönderilerek bu yeni değerlere göre önerilerde bulunması sağlanır. Web server’da etkinlik, sinema, hava durumu gibi servislerden çekilen verilerde belli aralıklarda mobil client’a gönderilir.Sürekli güncellemeye gerek yoktur.Örneğin bir sinema bilgisi haftalık değiĢir.Bir hava durumu bilgisi günlük değiĢir.Bu gibi verilerin sürekli güncellenmesi gerekli değildir. 18 8. SONUÇ VE ÖNERĠLER Akıllı, mobil bir tavsiye sistemi zamanımızın bilgi yüklenmesine çözüm olacak, sistem günlük hayatımızı kolaylaĢtıracak bir çok servis için kullanılabilecektir ve bunun için geliĢmelere de açık bir sistemdir. ġimdilik sadece hava durumu ve TV programı servislerine göre geliĢtirilen sistemde eklenebilecek servisler : Yemek sipariĢi Sinema/tiyatro vs. Etkinlikler Gelecek etkinlikler ( takvime kaydetme ) Sosyal ağ güncellemeleri (Twitter, Facebook, Foursquare vs.) Fırsat ve kampanyalar Temel cihaz özellikleri ( Alarm, SMS, E-mail, Takvim ) Daemon olarak çalıĢıp bilgilendirme Ġpuçları ( Hayat, Bilgisayar vb. ) Yapılabilecek geliĢtirmeler : o Lokal mağazalarla çalıĢabilme reklam alabilme konum bazlı aramalar otomatik sipariĢ verebilme internet sayfasına yönledirme telefonunu arama o Ses tanıma o Push servisi o Servere yedek alma ve geri yükleme 19 KAYNAKLAR [1] Mark Watson, Practical Artificial Intelligence Programming With Java, 2008. [2] Ian H. Witten, Eibe Frank, Machine Learning Algorithms in Java, Department of Computer Science University of Waikato, 2010 [3] Mark van Setten, Hybrid Recommender Systems and Goal-Based Structuring, Telematica Instituut, The Netherlands, 90-75176-89-9, 2005 [3] http://developer.android.com , [Ziyaret Tarihi: 12 Ocak 2011]. [4] http://www.duineframework.org/, [Ziyaret Tarihi: 27 Mayıs 2011]. 20 21