Samen met onderzoekers maakt NEMO Kennislink een aanbevelingssysteem, dat je tips voor interessante artikelen geeft. Hoe maak je zoiets?
Hallo lezer! Blijkbaar vind je het leuk om over kunstmatige intelligentie (AI) te lezen. Misschien wil je dan ook wel dit artikel van Enith Vlooswijk over Europese AI-regelgeving lezen? Of lijkt dit artikel je zo leuk omdat het een praktisch uitlegartikel is? Dan vind je dit stuk van Erna van Balen over vertaalapps wellicht ook leuk.
Als je een interessant artikel leest, dan is het zonde om na één stuk alweer af te haken. Met een slim aanbevelingssysteem kan NEMO Kennislink jou suggesties doen voor andere artikelen die je mogelijk ook interessant vindt. Omdat er maar liefst vijfduizend artikelen in ons archief zitten, en omdat elke lezer anders is, kunnen we dat niet handmatig doen. Dus maken we momenteel een algoritme op basis van kunstmatige intelligentie dat automatisch aanbevelingen samenstelt.
Dat doen we samen met het AI, media & democracy lab, een samenwerking van de Hogeschool Amsterdam, Universiteit van Amsterdam en Centrum Wiskunde & Informatica. Dit lab wil op een verantwoorde manier AI-systemen ontwikkelen voor mediaorganisaties zoals NEMO Kennislink.
Gevaar voor privacy
Om zo’n systeem te maken moeten we verschillende keuzes maken en een aantal stappen doorlopen. De eerste keuze is vrij makkelijk gemaakt, vertelt Marcio Fuckner, projectleider en docent-onderzoeker van de Hogeschool van Amsterdam. Een veelgebruikt type aanbevelingssysteem, genaamd ‘collaborative filtering’ is namelijk niet mogelijk. “Als je een product op Amazon wil kopen, geeft Amazon je tips: mensen zoals jij kochten ook dit product. Voor die aanbevelingen baseren de systemen zich op jouw persoonlijke aankoopgeschiedenis, maar ook op die van andere gebruikers die dezelfde aankoop hebben gedaan. Zo’n systeem weet heel veel van je, maar is wel een gevaar voor je privacy.” Maar omdat je bij NEMO Kennislink niet hoeft in te loggen, weten we heel weinig van je, alleen dat je het artikel dat je nu aan het lezen bent mogelijk interessant vindt. Hoe kunnen we je dan toch zo goed mogelijk suggesties doen?
“Daarom maken we een ‘content based’ systeem”, vertelt Fuckner. Zo’n AI-systeem zet de woorden (maar ook audio, beeldmateriaal en video’s) om in een lange reeks getallen die een plek krijgen in een denkbeeldige ruimte. Die ruimte kan duizenden dimensies hebben, waarbij elke dimensie voor een bepaalde eigenschap van die woorden staat. Bijvoorbeeld de betekenis of grammaticale eigenschap van een woord, zoals een zelfstandig naamwoord of een werkwoord. Getallenreeksen die veel overeenkomen, staan in die ruimte dichterbij elkaar dan reeksen die meer van elkaar verschillen. “Het systeem plaatst concepten die aan elkaar gerelateerd zijn, zoals ‘man’ en ‘vrouw’ of ‘koning’ en ‘koningin’ dichterbij elkaar.” Zo kan het dus ook alle artikelen op NEMO Kennislink groeperen op onderwerp, en staan bijvoorbeeld artikelen over medicijnen en gezondheidszorg dichtbij elkaar.
Taalmodellen
Maar zover is het nog niet, eerst moet er een ‘export’ worden gemaakt. We kunnen de inhoud van alle vijfduizend artikelen niet handmatig gaan knippen en plakken in een ander document. Alle artikelen moeten daarvoor van de server van NEMO Kennislink worden verstuurd naar een database die het formaat ‘JSON’ begrijpt. Daarin staan niet alleen de tekst, maar ook een aantal eigenschappen van de tekst, zoals de naam van de auteur, publicatiedatum en bij welke serie of thema het artikel hoort. Daardoor is het ook mogelijk om het aanbevelingssysteem wat slimmer te maken. Zo kunnen we bijvoorbeeld kiezen om recentere artikelen meer voorrang te geven. En kunnen we zo ook proberen om de ‘filter bubbel’ te verminderen, door juist artikelen aan te bevelen die van een andere auteur zijn, en die niet bij dezelfde serie of thema horen.
Voordat we de artikelen daadwerkelijk gaan voeden aan een AI-systeem, moeten we eerst nog een keuze maken uit de verschillende taalmodellen die op de markt zijn. Taalmodellen liggen aan de basis van aanbevelingssystemen en zijn, zoals gezegd, heel goed in het bij elkaar groeperen van inhoud die op elkaar lijkt. ChatGPT, het bekendste taalmodel van het Amerikaanse bedrijf OpenAI, is juist zo goed geworden in het maken van keurige zinnen doordat het goed weet welke woorden bij elkaar horen. En het kan ook goed plaatjes en video’s maken doordat het heeft geleerd welke objecten bij elkaar horen. Daardoor kan het een hoed van een bloempot onderscheiden. We kiezen daarom onder andere voor het taalmodel van OpenAI, omdat deze over maar liefst 3.072 dimensies beschikt. Daardoor zou het heel nauwkeurig moeten weten welke artikelen bij elkaar horen, zonder gekke fouten te maken.

Taalmodellen liggen aan de basis van aanbevelingssystemen.
Freepik, creativeartRobbert of Jina
In een eerste test blijkt het model van OpenAI het inderdaad behoorlijk goed te doen. Maar we testen ook nog met het model RobBert, een taalmodel dat specifiek op de Nederlandse taal is getraind. Het model heeft echter maar 512 dimensies en koppelt artikelen aan elkaar die niks met elkaar te maken lijken te hebben. Als derde testen we met het taalmodel Jina, van het gelijknamige Duitse bedrijf, dat ‘maar’ 1024 dimensies heeft, maar wel vergelijkbare resultaten geeft als OpenAI.
— Marcio Fuckner
Fuckner: “Doordat het model minder dimensies heeft, is er minder rekenkracht voor nodig en verbruikt het minder energie. Het werkt dus blijkbaar efficiënter. Ook kun je het model op je eigen server laten draaien. Je hoeft dan niet alle data te uploaden naar de servers van een ander bedrijf, zoals bij OpenAI wel het geval is. Daarnaast is Jina open source, transparant en hoort het bedrijf niet bij de ‘big tech’.” De keuze is dus makkelijk gemaakt: wij kiezen voor Jina. Het programma werkt alleen niet met een chatvenster zoals je dat van ChatGPT kent. We moeten programmeertaal gebruiken om Jina de artikelen van NEMO Kennislink te ‘voeden’ zodat deze de relevante artikelen kan clusteren.
Nu kunnen we dus prima artikelen aan elkaar koppelen die qua onderwerp op elkaar lijken. Maar dat is nog wel een beetje beperkt, want waarom zou je alleen maar over AI willen lezen? We willen je ook verleiden om eens over een ander onderwerp te lezen. Maar hoe doen we dat, zonder dat we je te veel afschrikken? “Daarvoor willen we naar overeenkomsten in stijl zoeken”, vertelt Fuckner. “We kunnen luchtigere en meer inhoudelijke artikelen van elkaar onderscheiden door bijvoorbeeld te kijken naar het aantal afbeeldingen of video’s in een artikel, en of er bijvoorbeeld een quiz bij zit. Ook zijn er tal van taalkundige formules die de leesbaarheid van een tekst meten, gebaseerd op bijvoorbeeld de lengte van woorden en zinnen, het aantal komma’s of het gebruik van direct of indirect taalgebruik.”

Naar de Quiz Haal jij je AI-rijbewijs?
iStock/FreepikAl deze voorwaarden kunnen we meegeven aan het AI-model. Dit experiment, om stijlkenmerken toe te passen om gelijkwaardige artikelen te vinden, was minder succesvol. Het systeem vond inderdaad artikelen die qua stijl bij elkaar passen, maar qua inhoud lagen ze soms ver uit elkaar. Als je het leuk vindt om een quiz over AI in te vullen, wil je dan ook een quiz over taalkunde maken? Dat is misschien niet zo vanzelfsprekend.
Ben je dit artikel nog steeds aan het lezen? Om lezersgedrag goed te meten kijken we tenslotte ook nog naar de scroll-diepte, de mate waarin lezers een artikel helemaal uitlezen. Dat kan namelijk ook een sterke indicatie geven van iemands interesses. Nu zijn alle stappen doorlopen en is ons aanbevelingssysteem af. De deelnemers kunnen een speciale app downloaden om de artikelen te lezen (Je kunt je nog steeds aanmelden!)
De app maakt het mogelijk om het leesgedrag te volgen. In hoeverre klikken de gebruikers op de artikelen die het systeem aanbeveelt? Blijven ze doorlezen? “We gaan de deelnemers in drie groepen indelen”, vertelt Fuckner. “De eerste groep krijgt willekeurige aanbevelingen, de tweede op inhoud gebaseerde aanbevelingen en de derde groep krijgt stijlgebaseerde aanbevelingen. We hopen natuurlijk dat de laatste twee groepen het beter gaan doen dan de eerste, en dat zij vaker op de aanbevolen artikelen zullen klikken.”
Van harte aanbevolen
Als je je streamingsdienst opent krijg je allerlei suggesties voor interessante films, series of muziek. Ook op nieuwssites kan het prettig zijn om relevante leestips te krijgen. Hoe werkt zo'n aanbevelingssysteem? Hoe maak je het? En willen we dat op NEMO Kennislink?