Archive for Styczeń, 2013

Styczeń 28, 2013

RideTogether

- autor: tsissput

Idea aplikacji

RideTogether to aplikacja internetowa ułatwiająca wspólne podróżowanie. Dzięki niej osoby podróżujące w tą samą stronę mogą pojechać jednym samochodem i trochę zaoszczędzić. Użytkownik ma do dyspozycji intuicyjne GUI które udostępnia kilka podstawowych czynności:

  • stworzenie konta i logowanie;
  • dodanie nowej trasy;
  • dołączenie do istniejącej trasy;
  • wyświetlenie szczegółów istniejącej trasy – w tym miejscu użytkownikowi prezentowana jest mapa z zaznaczonym przebiegiem trasy, a także orientacyjną odległością i czasem przejazdu;
  • udostępnienie na Facebooku informacji o planowanej podróży.

ridetogether

Screen z aplikacji prezentujący jej funkcjonalność.

Zastosowane technologie

Projekt został napisany w całości w języku JavaScript. Wykorzystuje innowacyjne technologie – serwer JavaScript’owy Node.js oraz MongoDB – nierelacyjny system zarządzania bazą danych.

Oprócz tego wykorzystywane są:

  • Google Maps JavaScript API v3 – do prezentacji przebiegu trasy z pomocą map Google;
  • Facebook JavaScript SDK – wykorzystane do dodania na stronie przycisku Share, pozwalającego na umieszczenie na tablicy użytkownika informacji o przejeździe, wraz z odnośnikiem do strony;
  • Twitter Bootstrap – darmowa kolekcja narzędzi do tworzenia aplikacji internetowych, zawierająca gotowe szablony HTML i CSS.

Możliwości rozwoju

W przypadku dalszego rozwoju pod uwagę brane są:

  • bardziej rozbudowana integracja z Facebook (logowanie, komentowanie);
  • możliwość wybierania, kto z nami będzie jechał;
  • ocenianie podróżników;
  • modyfikowanie trasy, dodawanie punktów kontrolnych, możliwość dołączania i odłączania się w dowolnym miejscu;
  • wykorzystanie innych środków transportu niż samochód.

Autorzy projektu:

Kamil Ciecierski, Szymon Kaliski, Maciej Matuszewski

Reklamy
Styczeń 28, 2013

Tutorial Protege 4.2

- autor: tsissput

Celem naszego projektu było przygotowanie tutoriala, w języku polskim, tworzenia
ontologi w programie Protege 4.2.

Bazowaliśmy na tutorialu w języku angielskim, który wykorzystywaliśmy na zajęciach
laboratoryjnych. Aby przystosować go do polskiej rzeczywistości, zastąpiliśmy
występującą w nim pizze naszymi polskimi pierogami. Ponadto w trudnych momentach
tutoriala stworzyliśmy pliki, ktore student może wczytać, gdy coś mu nie wyjdzie lub
będzie chciał pominąć żmudne wpisywanie dużej ilości tekstu.

Twórcy:

Tomasz Dżumaga
Błażej Kącikowski
Łukasz Mocek

Styczeń 27, 2013

Systemy rekomendacji w edukacji

- autor: tsissput

Celem projektu było napisanie aplikacji Facebook, stosującej wybrany algorytm propagacji rekomendacji do rekomendowania koleżankom i kolegom kursów na studiach magisterskich na Wydziale Informatyki PP. Aplikacja składa się z formularza, który wyświetla nowemu użytkownikowi najbardziej popularne przedmioty w systemie, a następnie umożliwia mu zagłosowanie na wybrane przez siebie przedmioty. Po zagłosowaniu każdy użytkownik aplikacji otrzymuje zestaw rekomendowanych przedmiotów na podstawie list rekomendacji zgłoszonych przez pozostałych głosujących. Algorytm propagacji rekomendacji wykorzystuje Euklidesową odległość między dwoma punktami. Wyniki algorytmu są normalizowane, określając podobieństwo między badanym użytkownikiem a innymi użytkownikami. Wyniki głosowania są utajnione. Poniżej zrzuty ekranów aplikacji.

recommend_courses_1recommend_courses_2

Autorzy: Monika Rokosik, Rafał Kwiatkowski, Wojciech Torkowski, Joanna Zakrzewska

Styczeń 24, 2013

Series Recommendation System

- autor: tsissput

W ramach projektu zaliczeniowego stworzyliśmy system rekomendacji seriali na podstawie preferencji użytkownika i jego znajomych. Uznaliśmy, że każdego roku pojawia się tak wiele nowych seriali, iż obejrzenie wszystkich byłoby nierealne, dlatego warto byłoby zaprojektować system wspomagający użytkownika w wyborze potencjalnie interesujących dla niego propozycji, a ponadto umożliwiający ocenianie obejrzanych seriali, aby ułatwić wybór innym. Ponadto doszliśmy do wniosku, iż dany użytkownik może mieć (przynajmniej częściowo) podobne preferencje, jak jego znajomi, dlatego też zdecydowaliśmy się zaimplementować system rekomendacji jako aplikację na Facebooku. Pozwoliło to nie tylko w łatwy sposób porównywać preferencje różnych użytkowników i oceny seriali, ale także sprawiło, że aplikacja jest łatwo dostępna dla każdego i nie wymaga żadnego dodatkowego oprogramowania. Jako, że postanowiliśmy przygotować system rekomendacji jako aplikację na Facebooku, naturalne wydało się nam wykorzystanie Facebook API. Ponadto przydatne okazały się JavaScript, jQuery i PHP, jak również HTML i CSS.

Zaproponowany algorytm rekomendacji wykorzystuje informacje o tym, jakie gatunki seriali lubi użytkownik oraz dokonane przez niego oceny obejrzanych seriali. Ponadto uwzględnia on oceny i ulubione gatunki znajomych użytkownika oraz analizuje podobieństwo pomiędzy preferencjami użytkownika i jego znajomych. Spośród wszystkich seriali usuwane są te, które użytkownik już ocenił, gdyż rekomendacja znanego serialu byłaby pozbawiona sensu. Następnie uwzględnia się ulubione gatunki użytkownika, a zatem zwiększa się współczynniki skojarzone z serialami odpowiadającymi wskazanym gatunkom, aby miały one większe szanse zostać zarekomendowane. Ostatecznie wybierane są seriale o najwyższych współczynnikach (odpowiadających wagom krawędzi w grafie seriali). W przypadku, gdy więcej, niż trzy seriale charakteryzują się najwyższym wartościom wag, dokonuje się odpowiednich losowań spośród seriali o tych samych wartościach, aby zarekomendować trzy tytuły. Z kolei w sytuacji, gdy algorytm rekomendacji był zbyt restrykcyjny i zwrócił mniej, niż trzy seriale (np. użytkownik wskazał gatunek reprezentowany tylko przez jeden serial), wybierane są losowe tytuły, dopełniające rekomendację (losowane z puli seriali, których użytkownik nie ocenił).

Poniżej zamieszczono przykładowy zrzut ekranu, ilustrujący wygląd stworzonej aplikacji.

Screenshot

 

 

 

 

 

 

Link do aplikacji:  https://apps.facebook.com/468220236548168/

 

M. Nienartowicz, P. Płatek, T. Stachowiak i M. Trzcielińska

Styczeń 23, 2013

Wypij z nami drinka, czyli rekomendacje na Facebooku

- autor: tsissput

Szlachetne idee

Ustalając rodzaj, zakres i tematykę projektu nasz zespoł kierował się kilkoma przesłankami. Przede wszystkich chcieliśmy spróbować swoich sił w systemach rekomendacyjnych, gdzie z pomocą przyszedł nam Facebook jako platforma wymiany informacji pomiędzy znajomymi. Wybór rodzaju rekomendowanych przedmiotów nie był łatwy, jednak ostatecznie padło na drinki, gdyż każdy chętnie spróbowałby tych najsmaczniejszych, a studencka kieszeń nie pozwala na zbyt wiele. Nasz system miał zatem pomóc w wyborze smacznych drinków sprawdzonych przez znajomych, ale oprócz takiej pragmatycznej motywacji postanowiliśmy spróbować koniecznie kilku nowych, obiecujących technologii. Całość miała być prosta w użyciu i estetyczna.

Technologie

Realizując wspomniany powyżej cel postanowiliśmy skorzystać z narzędzi, które dla większości z nas były zupełnie nowe:

Realizacja

Połączenie Heroku i Play framework pozwoliło na bardzo szybkie utworzenie gotowego systemu o niewielkim stopniu skomplikowania. Biblioteka restfb w prosty sposób dała nam dostęp do danych z Facebooka, a Twitter Bootstrap zapewnił schludny wygląd, pomimo braku grafika w zespole. Następnym krokiem może być utworzenie interfejsu admina do zarządzania drinkami, gdyż obecnie są one dodawane ręcznie z bazy danych.

Algorytm rekomendacji jest bardzo prosty – zlicza które drinki lubi najwięcej znajomych i zwraca listę trzech najpopularniejszych, która następnie wyświetlana jest pod konkretnymi drinkami, które zainteresowały użytkownika.

Poniżej zamieszczamy zrzuty ekranu, prezentujących działanie aplikacji.

drinki1 drinki2

Zapraszamy do korzystania z aplikacji na Facebooku: Drink Bar

Zrealizowano w zespole: Tomasz Cichowicz, Michał Frankiewicz, Piotr Ostrowski, Filip Rytwiński

Styczeń 23, 2013

Rody królewskie

- autor: tsissput

Wymagania projektu

  • Konstrukcja dużego zbioru danych
  • Informacje o osobach i ich związkach
  • Udostępnienie zbioru w formacie Pajek, UCI*NET
  • Wizualizacja danych

Standard GEDCOM

Standard GEDCOM został opracowany w celu ujednolicenia sposobu przechowywania danych w programach genealogicznych.

Poniżej przedstawiono fragment pliku GEDCOM, w którym opisano osobę królowej Wiktorii (imię, tytuł, płeć, miejsce i datę urodzenia, miejsce i datę śmierci, miejsce pochówku) wraz z relacjami jakie łączą ją z innymi osobami w zbiorze danych (FAMS – małżonek i FAMC – dziecko).

0 @I1@ INDI
1 NAME Victoria  /Hanover/
1 TITL Queen of England
1 SEX F
1 BIRT
2 DATE 24 MAY 1819
2 PLAC Kensington,Palace,London,England
1 DEAT
2 DATE 22 JAN 1901
2 PLAC Osborne House,Isle of Wight,England
1 BURI
2 PLAC Royal Mausoleum,Frogmore,Berkshire,England
1 REFN 1
1 FAMS @F1@
1 FAMC @F42@

Reprezentacji genealogii z użyciem sieci

Genealogie mogą być prezentowane jako sieci na różne sposoby:

  • Ore-graf
  • p-graf
  • dwudzielny p-graf

Ore-graf

Wierzchołek reprezentuje osobę, krawędź małżeństwo, a łuk wskazuje z rodzica na dziecko.

Ore-graf

Ore-graf

p-graf

Wierzchołek reprezentuje osobę lub małżeństwo (osoba wolna reprezentowana jest jako osobny wierzchołek, po zawarciu małżeństwa oboje partnerzy tworzą jeden wierzchołek). Łuk wskazuje z dziecka na rodziców (na reprezentujący ich wierzchołek małżeństwa).

p-graf

p-graf

Problem pojawia się, gdy jedna osoba zawarła więcej niż jeden związek małżeński.

dwudzielny p-graf

Istnieją dwa typy wierzchołków: pierwszy reprezentuje małżeństwo, drugi osobę. W związku z tym występują dwa typy krawędzi: pierwszy wskazuje z małżeństwa na małżonków, drugi z dziecka na rodziców (wierzchołek małżeństwa).

dwudzielny p-graf

dwudzielny p-graf

Porównanie reprezentacji

p-grafy i dwudzielne p-grafy mają wiele zalet:

  • mniej wierzchołków i krawędzi w p-grafach niż w Ore-grafach
  • p-grafy są skierowane i acykliczne
  • każdy półcykl w p-grafie odpowiada „ponownie łączącym się małżeństwom”
  • p-grafy są dogodniejsze w większości analiz

Dwudzielne p-grafy mają kolejną zaletę:

  • możliwość rozróżnienia wielokrotnych małżeństw

Zbiór danych

Zbiór danych to plik Royal92.ged rozpowszechniany jako domena publiczna. Reprezentuje on 3010 osób.

Wizualizacje ciekawych przypadków

Poniżej przedstawiono wizualizację nietypowych i ciekawych przypadków znalezionych w zbiorze danych.

Małżeństwa pomiędzy przyrodnim rodzeństwem

Eleanora Akwitańska, jedyna osoba, która była zarówno królową Francji jak i Anglii posiadała liczne potomstwo. Owocem małżeństwa z Ludwikiem VII była Małgorzata Francuska, a dzieckiem ze związku z Henrykiem II był Henryk Plantagenet zwany „Młodym Królem”. To przyrodnie rodzeństwo weszło później w związek małżeński. Relacje pomiędzy tymi osobami obrazuje poniższa sieć.

Małżeństwo pomiędzy przyrodnim rodzeństwem

Małżeństwo pomiędzy przyrodnim rodzeństwem

Wielokrotne małżeństwa

Henryk VIII był żonaty 6 razy, jedna z jego żon zamężna 4 krotnie. Henryk VIII ożenił się z Katarzyną Aragońską, wdową po swoim bracie Arturze Tudorze.

Wielokrotne małżeństwa

Wielokrotne małżeństwa

Bibliografia

Batagel, V. & Mrvar, A. (2007). Analysis of Kinship Relations With Pajek. In Social Science Computer Review.
Autor: Jakub Krzywda
Styczeń 23, 2013

MovGen – genetyczne rekomendacje filmów

- autor: tsissput

MovGen – cel projektu

Celem mojego projektu było przygotowanie prototypu systemu rekomendowania filmów, który wykorzystywałby techniki inspirowane biologią, czyli algorytmy genetyczne (http://en.wikipedia.org/wiki/Genetic_algorithm).

O projekcie

Ponieważ ostatnio pracuję nad genetycznym algorytmem rekomendacji chciałem w ramach tego projektu sprawdzić na niewielkiej próbie danych jakie efekty rekomendacji można uzyskać stosując takie podejście. Jako zbiór danych postanowiłem wykorzystać filmy, które lubią moi znajomi na Facebooku. Aby taki zbiór uzyskać wykorzystałem Graph API korzystając z PHP SDK oraz JS SDK. Aplikacja, którą utworzyłem na Facebooku jedynie służyła autoryzacji i autentykacji mojego użytkownika, aby potem było możliwe pobranie żądanych danych. Dane były pobierane przy pomocy skryptów napisanych w PHP przy wsparciu Symfony2.

Łącznie mój zbiór zawierał około 1500 wpisów dotyczących filmów, lecz były to tylko tytuły, dla których potrzebowałem cechy opisujące te filmy. Postanowiłem wykorzystać zbiór IMDb, lecz nie jest on dostępny poprzez oficjalne API, lecz poprzez nieoficjalne i ograniczone IMDb API. Pozwoliło mi to na uzyskanie informacji o aktorach, reżyserach, gatunkach, roku ukazania się, scenarzystach, językach. Po dopasowaniu danych otrzymałem zbiór około 500 filmów z ich atrybutami, które zapisałem w bazie danych do późniejszego wykorzystania przez algorytm rekomendacji.

Algorytm rekomendacji

Idea algorytmu jest bardzo prosta, lecz bardzo wrażliwa na jakość wyników. W pierwszej fazie wybierani są kandydaci na rodziców rekomendowanego filmu. Przyjąłem, że będą to dwa filmy, które sam polubiłem, a ich ranking IMDb jest najwyższy – takie założenie może jednak nie być najlepszym podejściem, ponieważ nic nie mówi o jakości danych cech tych filmów. Następnie dla tych dwóch filmów tworzę potomny film, który powstaje z krzyżowania cech – np. biorę trochę aktorów z jednego filmu, trochę z drugiego i tworzę z tego zbiór aktorów. W podobny sposób tworzę inne cechy. Otrzymany film staram się dopasować do istniejącego filmu moich znajomych przy pomocy podobieństwa każdej z cech. Dodając podobieństwa wszystkich cech otrzymuję najlepszy film, który jest wynikiem rekomendacji.

Wyniki

Niestety wyniki rekomendacji nie są zadowalające, ponieważ przyjąłem ograniczony zbiór filmów wśród których szukam podobieństwa. Sam proces przygotowania danych jest bardzo powolny, więc niemożliwe było przygotowanie rekomendacji on-line, ponieważ zebranie wszystkich znajomych, ich filmów, a następnie informacji o tych filmach trochę trwa. Przyjęta funkcja liczenia podobieństwa niestety również nie skutkowała w najlepszych wynikach, również wybór kandydatów na rodziców na podstawie oceny IMDb nie jest oceną danych i może powodować wybór osobników, z których ciężko wyewoluować ciekawy przypadek. Ale prace nad tym będą dalej kontynuowane.

Autor: Jacek Wasilewski