KİŞİSEL FİLM ÖNERME SİSTEMİ (ÖZET) Günümüz modern dünyasında, sinema, bir endüstri haline gelmiştir. Milyar dolarlık bu endüstride, her hafta yeni filmler vizyona girmekte, ve bir o kadar daha film vizyonlardan kalkarak arşivlerdeki yerini almaktadır. Bugüne kadar çekilmiş filmler, birgün izlenmek üzere arşivlerdeki yerlerini alırken, kişiler, izleyecekleri filmleri seçmek için, hangi filmin kendilerine daha uygun olduğunu belirleyip, o doğrultuda bir seçim yapma yoluna gitmektedirler. Kişiler sevdikleri türde, sevdikleri konularda film izlemek, içerisinde sevdikleri aktörler bulunan, sevdikleri yönetmen tarafından çekilmiş, sevdikleri yapımcı tarafından imal edilmiş, hatta bazen spesifik bir ödülü kazanmış filmler aramaktadır. Bunu da arkadaşlarına Hangi filmi tavsiye edersiniz? gibi sorular sorarak, etrafından fikirler alarak, internet sitelerinde filmler hakkında yapılan yorumlara, verilen puanlara bakarak, gazete ve dergilerdeki film eleştirilerini okuyarak, bazen tek tek filmlerde oynayan aktörlere, türlere ve konulara bakarak yapmaya çalışmaktadır. Bu yöntemlerin sağlıklı sonuç verme olasılığı yüksek ise de, zahmetli bir iştir ve kişisellik öğesi tam anlamıyla sağlanamamıştır. Bu problemden hareketle, projemiz, kişinin sevdiği ve sevmediği aktörleri, konuları, dönemleri dikkate alarak optimize yorumlar yapmayı, böylece kişinin izleyeceği filmden alacağı hazzı maksimize etmeyi amaçlamaktadır. Kişisel Film Önerme Sistemi, bu amaçla, kişilere ve gruplara en uygun filmi önerecek web tabanlı bir sistemi kapsamaktadır. Projemizin amacı, yukarıda da belirtildiği gibi, kişiye, kendisine has özellikleri ve tercihleri baz alarak, film önerecek bir web sitesidir. Aynı zamanda, birden fazla kişinin bulunduğu ortamlarda, kişilerin ortak beğenilerine dayalı filmler getirilmesi amaçlanmaktadır. Topluca izlenecek filmlerde, topluluğun mutluluğunu maksimuma çıkartmak amaçlanmaktadır. Yukarıda bahsedilen projenin gerçeklenmesi için aşağıdaki modüller geliştirilmiştir. Kişi bazında film seçme algoritması.(çekirdek Modül) Grup bazında film seçme algoritması(çekirdek Modül) Veri Tabanı Kayıt, Geri bildirim Modülü Web Sitesi Raporun birinci bölümünde, problemin genel tanımı, Kişisel Film Önerme Sistemi nin sahip olduğu genel özellikleri, fonksiyonları, avantajları ve dezavantajları hakkında bilgi verilmiştir. İkinci bölümde, projenin tanımı, iş planı, modüllerin tanıtımı, projenin takvim planlaması, projenin analizi, modellemesi, tasarımı hakkında bilgi verilmiştir. Üçüncü bölümde projenin yazılım gerçeklemesiyle ilgili ayrıntılar verilmiştir. Algoritmalar ve modüllerin iç yapısı hakkında detaylı açıklamalar yapılmıştır. Son bölümde ise, projenin sonuçlarına ve sonuçlar hakkındaki yorumlara yer verilmiştir. VIII
PERSONAL MOVIE SUGGESTION SYSTEM (SUMMARY) In today s modern world, cinema has become an industry whose volume reaches billion dollars. In this kind of big industry, various films start to run every week, and besides, same number of films have been ceasing running, and take place in the archieves. While the films which have been produced until today, taking place in the archieves, the individuals are being strained about which film to choose from this huge archieve. In this kind of situation, people usually try to find out the best fitting movie for themselves. People want to watch movies which includes the actors they like, which does not include the actors they dislike, whose genre, director, writer, productor is suitable for themselves. They sometimes search for the films which has won a specific type of award. While trying to achieve this problem, people usually search for internet by themselves, they manually look the actors, genres, directors, productors and elect the films whose components doesn t suit themselves. They look up the comments made for the movie in the internet, and sometimes have to read all the comments to build a personal opinion about the movie. In the challange of selecting the right and best fitting movie, people also ask their friends which film that they recommend, they take friends ideas. Despite this approach may result in positive sense, it is exhausting and it may lack personality. To take action against this problem, we have decided to build a web based system, which has the capability of suggesting the best fitting movie for individuals and groups by considering their choices and acclaims about a movie s components such as actors, genres, subjects, directors etc. As mentioned above, our project s purpose is to suggest movies for individuals and groups by taking user s unique properties and preferences into the account. Our project also aims to suggest most suitable movies for groups. It is intended maximize the group s satisfaction in the situations that two or more friends want to watch a film together. To realize the project that mentioned above, we have developed five modules. Movie Suggestion Algorithm for Individuals(Core) Movie Suggestion Algorithm for Groups(Core) Database Registration and FeedBack Module The Website The modules which form the system will be briefly explained below. The algorithm for individuals includes a series of calculations for detecting the most suitable film for a single person. The algorithm scans all the films in the database, and calculate points for each film.while calculating a single film s point, the algorithm scans the movie s all components, and calculate points for all components such as actors, genres, titles, writers. For IX
example, while calculating a movie s point, the algorithm first scans the film s all actors, and looks to the points given to those actors, from database. According to the points given to the actors by the user, the movie s actor points are calculated. All component s points are calculated by the same way. In the genres section, each genre has a percentage in the film, and the points are multiplied by those percentages. If a film has 3 genres, horror, thriller, and romantic, they all have a percentage in the film, example, horror 45%, thriller 40% and romantic 15%. The algorithm looks to the database and sees that the horror is scored as 8 over 10. Same way, thriller is scored as 6 and romantic is scored 7 over 10. So, the algorithm multiplies 0.45 * 8 + 0.40 * 6 + 0.15 * 7 and calculates the points for genre component of the film. After all the components points are calculated for a movie, the points are again multiplied by a coefficient. This coefficient stands for the vitality and importance of the component. If the actor in a film is very important for user, he gives 9 points for actor coefficient. If the productor component is not important for user, he gives 2 over 10 for productor coefficient. All components are scored between 0 and 10 by the user, according to their vitality for himself. After the film s component points are calculated, they are multiplied by these coefficients and the final score for movie is obtained. By using this approach, all the films scores are calculated, the movies are sorted by their points, and top 8 films are suggested to the user. The user can view pointing details of movies if he wishes. The algorithm for groups benefits the algorithm for individuals. This algorithm again calculates points for all movies in the database and suggest the best movies for group. In this process, the film points that are calculated for seperate people in the group are taken into the account. While calculating the seperate members points that are given to the movies, the algorithm above is used recurrently. Lets assume that our group consists of four people, Ali, Ahmet, Ayşe and Fatma. For a single film, the film s component points, and by the way, total point are calculated according to group members. By using the algorithm we have built for individuals, lets assume that, Ali gave 45 points over 100, Ahmet gave 56 points over 100, Ahmet gave 63, and Fatma gave 39 over 100 to a single film. The points given by the group members are, 45, 56, 63, 39. In group suggestion algorithm, these points are calculated for all the films in the database and after calculations, the critical process starts. First, the average of points given for films are calculated, for example, a films average is (45 + 56 + 63 + 39) /4 = 50.75. Of course, sorting the films according to their average points does not provide healty and accurate results for satisfaction of all the members in the group. For instance, if the points were, 95, 85, 20, 20, the average would be high but, two members of the group would be unhappy, and all the members in the group wouldn t be satisfied. For this reason, we thought to sort the films by the minimum point that they have taken. Example, film A: 45, 52, 63, 72; film B: 34, 43, 67, 71. So we sort the films according to their minimum points, 45 and 34. Thus, by this algorithm, film A should be suggested, but, again, sorting the films for the least happy may not give accurate results because other users may love the film, and gave very high points, however the least happy person may block them. So, the average point of the movie is as important as the least happy persons point. So, if we consider least happy persons point : 34 and the average point : 58, we multiply the least happy persons point by 6, and average 4 and divide the point by 10; by this way, the impact of the least happy person has X
become 60%, and the impact of the average has become 40%. On this wise, the total point for the movie is calculated and sorted according to this point and the top 8 movies are listed. The database module consists of the design and implementation of the database. First, we have designed our database to work efficiently and fast. We have 34 tables in our database, actor information, genre informations and their percentages, film subjects, writer informations, productor informations, director informations, quefficients for components, the points that are given for all actors, genres, subjects etc., member informations and the films are stored in the database. We have used the imdb(internet movie database) database, which is opened for public usage and development. The imdb database informations were very detailed, so that we had to simplify the information to have an efficiently working, flexible and useful database. Registration and FeedBack modules covers getting the user input. While registration, user enters his name, surname, and other required fields and submits the form. After submitting his personal information, the system brings a screen for entering the coefficients, and asks him, How important is actor, genre, subject, director etc. for you? The user scores between 0 and 10. These points stands for the importance of the components. After this form is submitted, the system brings another screen, and requires user to give points for each actor, director, subject etc. Of course, a person is unable to score thousands of actors, directors, subjects, so, he/she enters the components name, gives point for it, and submits. The components that are not scored are considered as 5, by default. FeedBack module includes the scoring the films, that the user have watched. When the user selects a film to watch, the film is stored in database, and when user opens the feedback module, that film is brought and the system requires user to score it. The user can score all the components of the film after he watched it. When the feedback is submited, the users choices are updated in the database. The Website module includes the visual structure of the website. Lists of the films, scoring details, most liked/disliked actors, subjects etc., and other workouts form the website module, for the purpose to build a simple, stylish and useful website. After the studies and workings, the modules above are implemented successfully and a correctly working system is obtained. XI
İçindekiler : KİŞİSEL FİLM ÖNERME SİSTEMİ... I Kısaltmalar :... IV Tablo Listesi :... V KİŞİSEL FİLM ÖNERME SİSTEMİ... VIII PERSONAL MOVIE SUGGESTION SYSTEM... IX 1 GİRİŞ... 1 1.1 Problemin Tanımı... 1 1.2 Daha Önce Bu Konuda Yapılan Çalışmalar... 1 1.3 Yapılan Çalışma ve Sonuçları Hakkında Genel Bilgi... 3 1.4 Projenin Avantajları ve Dezavantajları... 5 1.5 Raporda Hangi Konular Hangi Bölümlerde Açıklanacak... 6 2 PROJE TANIMI, İŞ PLANI, MODÜLLERİN TANITIMI, TAKVİM PLANLAMASI, ANALİZ, MODELLEME VE TASARIM... 7 2.1 Proje Tanımı... 7 2.2 Projenin Kapsamı... 7 2.3 Risk Yönetimi... 7 2.3.1 Risk Tahminleri:... 8 2.3.2 Değerlendirme :... 8 2.3.3 Risk Yönetimi :... 9 2.4 Zamanlama... 9 2.5 İnsan Kaynakları... 10 2.5.1 Donanım Kaynakları... 10 2.6 Kullanıcı Gereksinimleri... 11 2.7 UML Use Case Diyagramları... 11 2.7.1 Use Case: Login... 12 2.7.2 Use Case : Siteye Kayıt... 12 2.7.3 Use Case: Film Öner(Suggest Films)... 14 2.7.4 Use Case: Geribesleme gönder(send feedback)... 15 2.8 UML Class Diyagramı... 15 2.9 Eşleştirme Algoritması... 16 3 YAZILIM... 18 XII
3.1 Film Önerme Sistemi, Sınıfları ve İlişkileri... 18 3.1.1 Model Sınıflar ve Arasındaki İlişkiler... 18 3.1.2 Kontrol, View Sınıfları ve Arasındaki İlişkiler... 26 4 SONUÇLAR VE YORUMLAR... 38 4.1 Tekil Kişi İçin Film Seçmek... 38 4.2 Gruplar İçin Film Seçmek... 41 4.3 Geribeslemelerin Etkisi... 47 REFERANSLAR... 53 XIII