Red.anm. Les hvordan NRK TVs anbefalings-team løfter fram lignende innhold med algoritmer.

Visste du at NRK TV inneholder over 100 000 programmer? Nå tar NRK snart i bruk automatiserte anbefalinger slik at du finner innholdet som er relevant for deg.

Katalogen på NRK TV begynner etter hvert å bli svært omfattende. Tjenesten tilgjengeliggjør over 100 000 programmer, fordelt på cirka 3000 serier og 16 000 enkeltstående programmer.

Det er kult å kunne smykke seg med Norges største innholdskatalog, men det er dessverre slik at innhold som ikke blir sett heller ikke har noen verdi for publikum.

Figuren under viser hvordan en svært liten del av programkatalogen står for nesten alle visningene på NRK TV. Den lange flate kurven er ingen tegnefeil. Under 10% av programmene står for 90% av visningene, og 80% av katalogen blir nesten ikke brukt.

Hva er greia med alt innholdet som ikke blir sett?

En viktig årsak er at kun små deler av innholdet blir eksponert. Ingen ser programmer de ikke vet eksisterer.

Innholdet som ikke når ut

Programmene du får anbefalt på forsiden og i kategori-listene på NRK TV er valgt ut av NRKs OnDemand-redaksjon. De jobber kontinuerlig med å presentere en god miks av innhold som gjenspeiler bredden i katalogen. Men plassen er begrenset, og brukere flest scroller ikke veldig langt før de velger et program eller forlater tjenesten.

Sendeskjemaet på de lineære tv-kanalene våre styrer i høy grad hvilket innhold som dukker opp på NRK TV, så forsiden og kategorilistene er ofte dominert av det ferskeste innholdet som går på TV denne uka.

På programsiden finner du også en liste med anbefalinger, men redaksjonen har ikke kapasitet til å finne andre program-anbefalinger for hvert program. Så i dag gjenbruker vi kategori-listene her. Under alle dokumentarer finner du lenker til de samme dokumentarene. Under alle underholdningsprogrammer finner du lenker til de samme underholdningsprogrammene.

Gjennom temapakker har vi i høyere grad fått mulighet til å kuratere det gode innholdet over tid, og sette det i en kontekst. Temapakkene har hjulpet oss å få ut en større del av katalogen, men vi har fortsatt en lang vei å gå. Det meste av innholdet ligger fortsatt gjemt i A til Å-listen, eller kan dukke opp som et søkeresultat om man skulle være heldig.

Datadrevne anbefalinger

Det ligger åpenbart et stort uutnyttet potensial i anbefalingslistene som ligger på programsidene. Hva om vi kunne anbefalt deg programmer som er relevant i konteksten du står i?

I løpet av 2016 har vi bygget en anbefalingsmotor for NRK TV og NRK Super. Til denne kan man gi inn et program, og få ut en liste med anbefalinger relevant til programmet.

For å bygge anbefalingsmotoren har vi prøvd å utnytte to egenskaper med programmene: bruksmønster og metadata.

Anbefalinger fra bruksmønster

Du har sikkert fått mange gode kjøpsforslag av typen “De som kjøpte denne tannbørsten, kjøpte også denne tannkremen”. Sammenhengen mellom de to varene er ikke manuelt definerte, men er noe som oppdages gjennom analyse av tusenvis av handlekurver.

På samme måte kan vi finne en sammenheng mellom to programmer som er sett av samme type brukere. Handlekurven vår er en brukers seerhistorikk. Når mange nok brukere har sett på de samme programmene, vil det oppstå mønster i bruksdataene. Dermed kan vi si at “De som ser på Live redder verden litt, ser også på Line dater Norge”.

Teknikken vi bruker for å oppdage bruksmønstrene kalles Collaborative filtering.

Etter at algoritmen har tygd gjennom over 600 millioner av visninger fra NRK TV (jobben tar ca. 1.5 time) får vi ut en liste med smaksvektorer for hvert program. Vektoren plasserer hvert program i et 20-dimensjonalt vektorrom. Programmer som har vært like i bruk ligger nært hverandre i dette smaksrommet. Når man spør anbefalingsmotoren etter anbefalinger for et program basert på bruksmønster, finner den programmet som ligger i nærheten.

Anbefalinger fra metadata

Å analysere bruksmønster gir oss anbefalinger for programmer som ligner på hverandre i bruk, men det sier ikke noe om innholdet i programmene er likt temamessig. Derfor prøver vi også å generere anbefalinger basert på metadata. Her kan vi utnytte at programmer som ligner på hverandre i innhold også har lignende metadata.

En typisk måte å finne likheten mellom dokumentene i en samling er å prøve å identifisere de mest unike ordene i hvert dokument og de mest unike ordene på tvers av alle dokumenter i samlingen. Ord det er få av i samlingen, men mange av i et spesifikt dokument, er altså svært representative for det dokumentet (i motsetning til ord det er mange av i dokumentet og mange av i samlingen, de er uinteressante). Andre dokumenter som også har dette ordet vil sannsynligvis omhandle et lignende tema.

For å finne likhet mellom våre metadata har vi tatt i bruk Elasticsearch, som har dokumentlikhet som kjernefunksjonalitet.

Til Elasticsearch forer vi inn tittel, beskrivelser og undertekst som ett dokument. Underteksten er avgjørende for å få gode resultater – her ligger det mange unike ord og fraser som representerer innholdet godt. Deretter kan man gjøre et oppslag på indeksen. Elasticsearch har faktisk en egen spørring for å finne lignende innhold: “More like this”

“More like this” skiller seg fra vanlig søk med at vi kan gi inn en id til et dokument å søke med, og så finner Elastic de relevante søkeordene for deg, og bruker disse som søketekst. Dermed kan vi gi inn id-en til et program, og få tilbake en liste med lignende programmer. Om vi gir inn id-en til en episode av “Live redder verden litt” får vi ikke lenger tilbake “Line dater Norge”, som vi fikk når vi så på bruksmønster, men en spesifikk episode av Debatten som omhandler klima. Bingo!

Den største utfordringen for å finne lignende innhold er at vi har metadata og undertekster på to forskjellige skriftspråk: bokmål og nynorsk. For å kunne se likheten mellom “klimaforskerne” og “klimaforskarane” har vi laget en egen synonymordliste som Elastic bruker. Synonymordlista og kildekode for å generere din egen har vi gjort tilgjengelig på Github.

Når kommer det?

Første utgave av anbefalingsmotoren er ferdig. Motoren er bygd som en egen tjeneste, som NRK TV kan bruke til å spørre etter anbefalinger for en gitt program-id. Nå er planen å gradvis ta det i bruk på tvers av alle plattformer i løpet av 2017.

Vi tjuvstartet i høst, og tok da i bruk anbefalingsmotoren i mobilappene for NRK Super. Om du scroller helt til slutten av episodelisten på en serieside vil du finne anbefalinger til fire andre serier. Denne listen var tidligere sammensatt av tilfeldig innhold plukket fra forsiden. Nå er anbefalingene funnet gjennom collaborative filtering. Resultatet er oppløftende.

Bruken har økt, bredden i innholdet som blir klikket på har økt, og vi har fått en automagisk alders-segmentering vi ikke hadde tidligere. Innhold for de aller minste peker nå på annet innhold til de aller minste, og de største barna får ikke lenger forslag om å se Lille Jack etter å ha sett M.I. High. Anbefalingene har rett og slett blitt mer relevante.

Det samme håper vi de blir når vi etter hvert kommer ut på NRK TV.

Når vi treffer med en anbefaling øker vi utnyttelsen av alt NRK-innhold, og gir både brukerne og innholdet langvarig verdi.