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

Benzer belgeler