Sentimentanalyse
Wat is sentimentanalyse?
Sentimentanalyse leest een stuk tekst en plakt er een label op dat de houding erachter beschrijft: positief, negatief of neutraal. Het is een vorm van tekstclassificatie, het algemene werk van tekst in bakjes steken die je zelf bepaald hebt, en het hoort thuis onder natural language processing. Wat het een eigen naam geeft, is dat het bakje over het gevoel van de schrijver gaat, niet over het onderwerp van het bericht. De grondstof is ongestructureerde data die je al bewaart en waar niemand een query op schrijft: het vrije tekstveld van een ticket, een review op de webshop, de notitie die een verkoper na een bezoek intypt.
De meeste diensten geven je die drie labels met een zekerheidsscore erbij. Azure AI Language van Microsoft scoort elke zin apart en het document als geheel, en voegt op documentniveau een vierde label toe, mixed, zodra een tekst minstens één positieve en minstens één negatieve zin bevat. Amazon Comprehend geeft dezelfde vier waarden terug. De Natural Language API van Google pakt het anders aan: een score van -1 tot 1 voor de richting, plus een aparte magnitude voor hoeveel gevoel er überhaupt in de tekst zit. Een vlak bericht en een bericht dat half lof en half klacht is, komen allebei rond nul uit, en enkel die magnitude houdt ze uit elkaar.
Dat laatste detail is het hele probleem in het klein. Eén cijfer voor één bericht gooit net het stuk weg waar je iets aan had.
Sentiment over het hele bericht tegenover sentiment per aspect
Neem één zin: "De levering was drie dagen te laat maar de fles zelf is prima." Sentiment over het hele bericht noemt dat mixed, of negatief, of een score ergens rond nul. Welk antwoord er ook terugkomt, je kan er niets mee doen.
Sentiment per aspect scoort de stukken los van elkaar. Microsoft noemt die functie opinion mining en geeft een target terug, een zelfstandig naamwoord of een werkwoord, gekoppeld aan een assessment, een bijvoeglijk naamwoord: levering is te laat, fles is prima. Aan AI_SENTIMENT van Snowflake geef je zelf tot tien categorieën mee en krijg je per categorie positief, negatief, neutraal, mixed of unknown terug.
De dimensie die de twee scheidt, is waar je iets mee kan. De score over het hele bericht zegt waar je moet gaan kijken. De score per aspect zegt wat je moet veranderen.
Een berg reviews, gescoord per aspect
Een webshop heeft 4.000 reviews over 60 producten. Rangschik je die op gemiddelde beoordeling, dan staan onderaan de producten die iedereen in het bedrijf al kon opnoemen.
Scoor elke review nu op vijf aspecten die je zelf koos: kwaliteit, levering, verpakking, prijs en de handleiding in de doos. Eén product komt eruit met kwaliteit positief in negen reviews op tien en verpakking negatief in vier op tien. Zijn gemiddelde staat op 3,9, en daarom heeft nooit iemand ernaar gekeken. Dat product heeft geen productprobleem maar een doosprobleem, en dat los je op met één gesprek met wie het inpakt. De aspecten kiezen is het echte werk, dus kies ze uit wat je volgende maand effectief kan aanpassen.
Intentie en dringendheid leveren meestal meer op dan stemming
Stemming is zelden waar een bedrijf op handelt. In een gedeelde mailbox is de vraag welk bericht eerst een antwoord krijgt, en een klant die schrijft "we hebben de onderdelen nog altijd niet, donderdag valt de lijn stil" klinkt rustig en kost veel geld.
Niets verplicht je om positief en negatief als labels te gebruiken. De machinerie is dezelfde en de lijst is van jou: dringendheid (kan wachten, deze week, vandaag), intentie (vraag, klacht, opzegging, offerteaanvraag), of de schrijver het al eens eerder gevraagd heeft.
Een supportmailbox, gesorteerd op dringendheid
Zestig berichten per dag komen binnen in één gedeelde mailbox, en elke ochtend leest iemand ze allemaal en stuurt ze één voor één door, dus er gaan twee uren voorbij voor er ook maar één beantwoord is.
Scoor elk bericht bij binnenkomst op intentie, dringendheid, en of de conversatie al langer loopt dan drie berichten. Opzeggingen en offerteaanvragen gaan rechtstreeks naar verkoop, alles wat dringend scoort gaat bovenaan de wachtrij, en de rest groepeer je per onderwerp zodat één iemand acht gelijkaardige vragen na elkaar beantwoordt. De winst zit niet in het label. Ze zit erin dat wie vroeger de ochtend zat te sorteren, ze nu zit te beantwoorden, met het originele bericht naast het label want de mens beslist nog altijd.
Zet je diezelfde score per bericht uit over één conversatie in de tijd, dan vang je ook een contractonderhandeling op die aan het kantelen is, en dat ziet niemand door zes weken mailverkeer terug te lezen.
Hoe wordt het vandaag gedaan?
Een lexicon is een woordenlijst met een waarde per woord, per bericht opgeteld. Het draait op een laptop, kost niets per rij, en je kan exact aanwijzen welke woorden de score gemaakt hebben. Het is ook het zwakste: een groep aan de universiteit van Leipzig vergeleek in 2025 woordenboekmethodes, fijngetrainde modellen en taalmodellen op Duitse tekst, en zag de woordenboekmethodes op elke dataset achterophinken.
Een getraind classificatiemodel betekent een paar duizend van je eigen berichten labelen en daar een model op bijtrainen. Dat geeft de beste scores zodra die labels bestaan en het is goedkoop per rij, maar de labelrekening komt terug telkens je gamma of je klantenbestand verschuift.
Een taalmodel met een prompt heeft helemaal geen trainingsdata nodig, want je schrijft de labels en de regels in gewone woorden uit. Diezelfde vergelijking uit Leipzig zag een open-weight model met een eenvoudige zero-shot prompt op ongeveer 97 procent van de beste score uitkomen over hun datasets. Op de moeilijkere taak, scoren per aspect, is het beeld minder mooi: een studie uit 2025 met negen modellen op meertalige aspectanalyse zag zero-shot prompting nog altijd onder modellen die daar specifiek voor bijgetraind waren, en zag ook dat eenvoudige prompts het beter deden dan uitgewerkte.
De promptaanpak wint op een ander argument dan nauwkeurigheid. De regels die bepalen of een score klopt, zijn die van jou, en elke regel is één zin: behandel het woord dossier als neutraal, want zo noemen onze klanten hun schadegeval. Dat kan je niet aan een lexicon vertellen, en aan een getraind model enkel als je alles opnieuw labelt.
De kost hakt de knoop niet meer door. 50.000 berichten per jaar van ongeveer 700 tekens komen uit op zo'n 35 dollar bij Amazon Comprehend, dat afrekent in eenheden van 100 tekens aan 0,0001 dollar per eenheid, en op zo'n 17 dollar via een klein taalmodel als Claude Haiku 4.5 aan 1 dollar per miljoen inputtokens, als je de 120-tal tokens labels meetelt die op elke rij meereizen. Allebei minder dan één namiddag werk, dus kies op wat je het ding mag vragen, niet op de prijs per rij.
Meten of het werkt op je eigen tekst
Neem 300 van je eigen berichten, gespreid over een volledig jaar in plaats van geplukt uit vorige week. Laat twee van je eigen mensen ze onafhankelijk van elkaar labelen vanuit dezelfde geschreven instructie, en vergelijk eerst die twee mensen met elkaar voor je iets met een model vergelijkt.
Die overeenkomst is je plafond, want een model kan niet meer gelijk hebben dan het oordeel dat je het vraagt na te doen. De groep van het Jožef Stefan Instituut in Ljubljana die 1,6 miljoen tweets in 13 Europese talen met de hand labelde, maakte daar net het punt van hun werk van, en hun gemeten overeenkomst liep van behoorlijk in sommige talen tot bijzonder zwak in andere.
De onenigheid hoopt zich op bij korte berichten zonder context, waar een vlak neergezet feit zowel een klacht als een mededeling kan zijn. Verschillen je twee lezers over zo'n bericht, dan dekt je geschreven instructie dat geval nog niet. Schrijf de regel erbij en laat allebei dat stukje opnieuw doen.
Pas daarna laat je het model over diezelfde 300 lopen en tel je de overeenkomsten. Spreek op voorhand af hoe goed goed genoeg is, per toepassing: 85 procent volstaat voor een lijn met het aandeel negatieve berichten op een grafiek, en is lang niet genoeg voor een label dat bepaalt of een klant vandaag nog teruggebeld wordt. Hou die 300 bij en laat ze opnieuw lopen telkens je de prompt, de labels of het model wijzigt.
Sentimentanalyse is geen emotieherkenning
Artikel 5 van de Europese AI Act verbiedt AI-systemen die emoties van een persoon afleiden op de werkvloer en in onderwijsinstellingen, met een smalle uitzondering voor medische of veiligheidsredenen. Artikel 3 knoopt dat verbod vast aan biometrische gegevens: een emotieherkenningssysteem is een systeem dat emoties of bedoelingen afleidt uit iemands biometrische gegevens, en dat zijn volgens hetzelfde artikel gegevens uit technische verwerking van fysieke, fysiologische of gedragsgerelateerde kenmerken, gezichtsopnamen daaronder.
De formulering van geschreven tekst scoren is dus geen emotieherkenning, want er gaan geen biometrische gegevens in. Een tool die een klantenmail leest en er boos op plakt, valt buiten dat verbod.
Een tool die een gezicht op een webcam of een stem aan de telefoon uitleest en daar een stemming uit afleidt, valt er wel onder zodra die persoon je werknemer of je leerling is. Een product dat de toon van je eigen medewerkers scoort om te zien hoe ze overkomen, is precies het geval waarvoor dat verbod geschreven is, en geen toestemmingsformulier of leverancierscertificaat verandert daar iets aan. Datzelfde product op de beller gericht is een andere vraag, en ons artikel over verboden AI-praktijken werkt die uit samen met de rest van artikel 5.
Tools voor gesprekskwaliteit verwerken doorgaans allebei de kanten van een opname, dus vraag schriftelijk wiens stem geanalyseerd wordt en of de kant van de medewerker uitgezet kan worden. Een sentimentscore die je naast de naam van een medewerker bijhoudt, is bovendien een persoonsgegeven onder de GDPR, en die moet je kunnen uitleggen.
Waar moet je op letten bij sentimentanalyse?
Ironie wordt omgekeerd gescoord. "Fijn, weer een levering op zaterdag" leest voor zowat elke methode als positief. Zit je kanaal er vol mee, bouw daar dan geen cijfer op dat naar de directie gaat.
Understatement komt als neutraal binnen. Vlamingen schrijven zuinig: "het is niet ideaal" is een stevige klacht en "niet slecht" is een compliment. Een model dat vooral van Engelstalige internettekst geleerd heeft, maakt van allebei iets flauws, dus zet tien echte berichten uit je eigen mailbox in de prompt met het label dat jij eraan zou geven.
Sommige woorden lijken enkel in jouw sector negatief. In een verzekeringsmailbox zijn schade, dossier en ongeval het onderwerp van bijna elk bericht. In een onderhoudsmailbox is stuk een neutraal woord. Benoem die woorden in de prompt en meet daarna of het de score verzet heeft.
Belgische mailboxen zijn meertalig. Nederlands, Frans en Engels komen in dezelfde wachtrij binnen en soms in één bericht, dus bekijk je staal per taal. Een score die in het Nederlands klopt, kan in het Frans stilletjes uit elkaar vallen.
Rapporteer het aandeel negatieve berichten per week in plaats van de gemiddelde score. Een gemiddelde over duizenden berichten beweegt nauwelijks, dus een echte verschuiving nadat je iets aan je proces veranderd hebt, blijft daarin onzichtbaar.