Na co se budeme dívat dneska?
Jak se rozhodnout, na jaký film se podívat? Co třeba tohle: Stáhnout všechna uživatelská hodnocení z ČSFD, prohnat je přes algoritmus NN-descent a pak to dát na web.
Už jsem to jednou dělal, podle historických záznamů v roce 2015 (nebo možná už 2014) výsledkem byl webík, do kterého jste zadali jméno filmu a našlo to snímky podle hodnocení lidí z ČSFD podobné. A byla to hrůza. Běželo to na VPSce s mongoDB jako databázi. Ta současná verze je mnohem víc spartánská, ale jinak ťip ťop.
Během jednoho večera jsem scrapnul celé ČSFD skriptem od minula, data vyčistil, prohnal je algoritmem NN-descent, který jsem napsal už dřív v jazyce D, z výsledků vyrobil jednoduchý binární soubor, nacvakal PHP skript jako webovou tvář celého počinu, vše nahrál na server & hotovo. Žádná databáze, tři soubory a rychlé jako stín. Idea je taková, že to beze změny může na serveru sedět a fungovat až do konce věků. Kromě části v D, která je nóbl, jsou všechno jen zbrklé PHP fragmenty poslepované dohromady BASHem. Tohle kombo má, jak říkal Larry Wall, skvělou whipaptitude.
Docela dobrý výsledek na aktivitu jednoho večera a to jsem velkou část času strávil čekáním, až doběhne crawlování (tímto bych chtěl poděkovat ČSFD za spolupráci, že neprotestovali proti agresivnímu rabování). Pak jsem taky chvíli přemýšlel nad vhodnou metrikou podobnosti, u toho jsem usnul, probudil se, přemýšlel ještě chvíli, pak jsem ale zkusil to nejjednodušší s tím, že se uvidí a uvidělo se. Jaccard na uživatelích, který film jakkoli hodnotili, funguje docela OK a navíc je to velice rychlé díky SIMD kouzlení. Zkoušel jsem ještě množinu hodnocení promítnout minhashem a porovnávat podobnosti na skečích, ale to bylo jednak pomalé a druhak nepřesné. NN-descent je mnohem lepší, rychlý a přesný a navíc se pro vylepšení výsledků dá pustit několikrát a data pak spojit. Bez toho manévru by to třeba nenašlo Ivan Vasiljevič mění povolání jako doporučení k Kin-dza-dza!.
Ukázky výsledků: Videodrome tady, Color out of space tady, Contagion tady, Annihilation tady a One Cut of the Dead tady.
Trpí to klasickými nedostatky jako že velice populární položky mají tendenci splývat. Každý velký film je podobný každému velkému filmu a nemá to jemný diskriminační potenciál jako u menších snímků. Můžeme se na to dívat jako na další formu vymezení, ne žánrovou, ale jako blockbuster, což je kategorie sama pro sebe. I přes nedostatky jsem už našel pár kandidátů na shlédnutí. Algoritmus mi tlačí skoro všechno od Cronenberga.