Historiaa
Movietron sai alkunsa vuonna 2003 Tampereen teknillisen
yliopiston Ohjelmistotekniikan projektityö-kurssin harjoitustyönä. Idea harjoitustyön
aiheeseen syntyi tarpeesta kaapia kermat päältä valtavasta elokuvatarjonnasta automatisoidusti.
Ulkomailla vastaavia palveluita oli jo olemassa (esim. MovieLens),
ja tarkoituksena oli tehdä palveluideasta lokaalimpi versio joka sisältäisi suomenkielisiä kommentteja ja
elokuvasuositukset olisivat peräisin suomalaisten elokuvamausta. Ensimmäinen versio sisälsi varsin
rajoittuneen määrän ominaisuuksia (mm. ei kommentointimahdollisuutta eikä tarjontalistoja) sekä kotikutoisen
käyttäjäpohjaisen profilointialgoritmin jonka tulokset heittelivät kovasti. Algoritmin generoimien
profiloitujen arvosanojen MAE eli keskimääräinen virhe oli kohtuullisen huono, noin 1.4 arvosanaa.
Projektityökurssin jälkeen palvelun ylläpitoa päätettiin jatkaa harrastuspohjalta koska testikäytön
aikana Movietronille oli muodostunut vakiokäyttäjäkunta jotka pitivät palvelua hyödyllisenä ja
kävivät säännöllisesti kirjaamassa tietokantaan elokuva-arvioitaan. Tässä vaiheessa alkuperäisen projektityöporukan
5-henkinen tiimi oli kutistunut kahden hengen ylläpitotiimiksi joka lähinnä korjaili esiintyneitä
vikoja ja lisäili uusia ominaisuuksia ajan salliessa. Vuoden 2006 alussa toinen ylläpitäjistä sanoitui
projektista irti ajanpuutteen vuoksi jolloin kehittäminen ja palvelun ylläpito jäi kokonaan allekirjoittaneen
vastuulle.
Olen kehittänyt nk. Movietron 2.0:aa harrastuksena pikkuhiljaa ajan ja energian (teen myös ohjelmointia sisältävää
päivätyötä) salliessa. Esimerkiksi joululomien 2006 aikana koodasin systeemiin uuden tuotepohjaisen
profilointialgoritmin minkä avulla keskimääräinen virhe saatiin laskettua
noin 0.8 arvosanaan. Lisää
tietoa algoritmistä alla. Kesälomien 2007 aikana koodasin
web-käyttöliittymän alusta alkaen uusiksi (minkä tulosta parhaillaan katselet).
Profilointialgoritmi
Nykyinen profilointialgoritmi on ns. tuotekohtaiseen yhteneväisyysarvoon perustuva algoritmi.
Algoritmi vastaa käytännössä tässä
julkaisussa esiteltyä algoritmiä pienin muutoksin. Suurimpana erona aikaisempaan Movietronin
profilointialgoritmiin on että käyttäjien välille ei enää lasketa yhteneväisyysarvoja vaan yhteneväisyysarvot
lasketaan elokuvien välille. Pelkästään annetuista arvosanoista laskettava yhteneväisyysarvo kertoo
kuinka lähellä kaksi elokuvaa on toisiaan.
Profiloitu arvosana elokuvalle lasketaan etsimällä yhteneväisyydeltään ks. elokuvaa lähimpänä
olevat elokuvat jotka profiloitava käyttäjä on arvostellut ja profiloitu arvosana lasketaan näiden
arvosteluiden yhteneväisyysarvon mukaan painotettuna keskiarvona. Pikaisten mittausten perusteella
em. julkaisussa olevat käppyrät pitävät paikkaansa eli näin lasketut suositukset ovat - joskus
huomattavankin paljon - tarkempia kuin ns. käyttäjänaapuri-tekniikoilla lasketut.
Teknistä tietoa
Movietron 1.0 koodattiin Javalla. Sovelluksessa ei käytetty Javalle tarjolla olevia web-frameworkeja tai
ORM:ia vaan esimerkiksi käyttöliittymä koodattiin raakana JSP:nä, systeemin arkkitehtuuri ravistettiin hihasta ja
tietokantakyselyt kirjoitettiin raakana SQL:nä.
Kesällä 2007 koodattu Movietron 2.0 tehtiin Pythonilla
käyttäen Pylons web-frameworkia sekä SQLAlchemyä.
Template-kielenä käytettiin Makoa.
Näillä työkaluilla palvelun kehittäminen sujui sutjakkaasti ja koodin laatu
parantui reippaasti.
Grafiikat
Layoutin lahjoitti Velikani. Lisäksi ikoneita napsittu seuraavista
kokoelmista: Silk / FAMFAMFAM ja
Tango Icon Library.