k47.cz

twitter RSS
««« »»»

Na co se budeme dívat dneska?

13. 10. 2020 — k47

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 tadyOne 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.

píše k47 & hosté, ascii@k47.cz