– Der er ikke noget programmeringsteknisk i det, som er avanceret.
Sådan siger den selvstændige datakonsulent Niels Erik Kaaber Rasmussen om at bygge en robotjournalist. Til det seneste folketingsvalg byggede han en til Altinget – et mediehus, der dækker dansk politik.
Robotten skrev mere end 900 artikler – én om hver kandidat, og de blev publiceret, da valgresultaterne tikkede ind. Artiklerne byggede på stemmetal fra Danmarks Statistik og oplysninger fra Altingets arkiver.
I en nyhed om socialdemokraten Mattias Tesfaye kan man blandt andet læse, at han – med 15.345 personlige stemmer – var ”den største stemmesluger i Københavns Omegns Storkreds”. Nummer to var den konservative Rasmus Jarlov, står der.
Det krævede lidt knofedt at komme i gang med robotten, forklarer Niels Erik Kaaber Rasmussen.
– Det er ikke sådan, at man kan slå op et sted og se, hvordan andre har gjort. For så meget er der alligevel ikke lavet inden for det her felt endnu, siger han.
Men programmeringen viste sig at være enkel.
– Rigtig meget af det er hvis-sætninger, som er blandet sammen i en lidt større struktur, siger han.
Vælg et sprog
Niels Erik Kaaber Rasmussen foreslår, at man bruger sit foretrukne programmeringssprog. Selv brugte han Python.
– Du kan bare hente Python ned og gå i gang. Til at starte med skal du ikke kunne meget mere end hvis-sætninger, siger han og tilføjer:
– Man kunne vælge at lave et Excel-ark, hvor man beregner alle mulige cases, og så læse dét ind i Python.
Og det er ikke nødvendigt at tage et kursus for at komme i gang, vurderer han.
– Det er lidt efter, hvordan man selv lærer bedst. Jeg lærer bedst ved at prøve mig frem. Og når jeg så støder på et problem, slår jeg det op på nettet, siger Niels Erik Kaaber Rasmussen.
Vælg et stofområde
Når man har valgt et sprog, skal man vælge, hvad robotten skal skrive om.
Det er vigtigt, at robotten har adgang til struktureret data. Og det er oplagt at sætte den til at skrive om tilbagevendende begivenheder, såsom valg, jordskælv eller sport, lyder rådet fra Niels Erik Kaaber Rasmussen.
– Alle de steder, hvor der er en hel masse data, som kommer igen og igen. Og hvor man måske i dag har nogle analysefolk til at sidde og se, om det sker noget interessant. Meget af det kan man faktisk automatisere – og med fordel, fordi det skal gå hurtigt og være præcist, siger han.
Niels Erik Kaaber Rasmussen nævner også Business Intelligence som et oplagt felt.
– Ofte har man nogle forskellige rapporter, som man viser i rene data med grafer. Der kan man med fordel gå ind og prøve at sige: Hvad er historien i de her data? Hvilke røde flag er der? Og så beskrive det med ord – eksempelvis: ’Nu er salget steget efter syv år med fald’, siger han.
Vælg datakilderne
Derefter skal man have styr på sine datakilder.
– Jeg ville vælge noget, der er velstruktureret og kommer i et pænt format. Danmarks Statistik er et godt sted at starte, fordi det er velstruktureret, og fordi de dækker mange forskellige emner, siger Niels Erik Kaaber Rasmussen.
Til Altinget-robotten brugte han selv et XML-feed fra Danmarks Statistik. Og oven i dét havde robotten adgang til oplysninger i Altingets kandidatdatabase.
Men hold det enkelt, lyder rådet:
– Hvis du har rigtig mange hvis-sætninger blandet ind i hinanden, kræver det et helt enormt overblik, siger han.
Lav en skabelon
Herefter opbygger man en skabelon, hvor centrale oplysninger såsom navne, tal og steder kan skiftes ud. Når basis-skabelonen er klar, kan man udvide med hvis-sætninger og forskellige udgaver af skabelonen.
Hvis historierne skal være læseværdige, skal man også lære robotten at vinkle. Altså spotte, hvor den gode historie er.
– Jeg ville sætte den til at kigge efter det, jeg kunne forestille mig, ville være det allermest interessante. Hvis det var et valg, ville den person, der fik flest stemmer, være tophistorien. Så har jeg to skabeloner: én til superhistorien og en til alle de andre, siger Niels Erik Kaaber Rasmussen.
Og derfra kan man udvide med flere variationer og putte flere og flere skabeloner på.
– Det kræver kun, at man kan regne ud, hvilken historie der skal bruges, og så lave en masse hvis-sætninger, forklarer han.
For at undgå, at historierne ligner hinanden for meget, kan man også randomisere robottens ordvalg.
Forbered publiceringen
Herefter skal publiceringen sættes i system. I Altinget-eksemplet genererede robotten en CSV-fil, som Niels Erik Kaaber Rasmussen sendte til en udvikler på Altinget. Han havde forberedt en upload, så han bare skulle trykke på en knap.
– Nu var det lidt et forsøg, så vi scannede det lige igennem for at se, om noget så mærkværdigt ud. Men hvis det var noget, der foregik hver dag, havde man bygget det direkte ind i CMS’et, siger han.
Man kan også sætte robotten til at hente billeder ind til historierne.
– I det her tilfælde var den koblet sammen med Altingets kandidatdatabase. Der lå billederne allerede, siger Niels Erik Kaaber Rasmussen.
Vent med machine learning
Man bør vente lidt med at bruge machine learning til at bygge sine robotter, lyder rådet fra Niels Erik Kaaber Rasmussen, selv om han ikke er i tvivl om, at det har et stort potentiale.
– Vi er et stykke derfra endnu. De konkrete eksempler kan man nok lave meget billigere ved hjælp af skabeloner og hvis-sætninger, siger han.
Machine learning er rigtig fint til at lave forudsigelser og til at lave beregninger med, vurderer han.
– Men ikke til at lave selve teksten. Det har jeg ikke set levedygtige eksempler på endnu. Men det kan pludselig gå hurtigt, for der er mange, der arbejder med det, siger han.