Bij sentimentanalyse speelt het woord nauwkeurigheid altijd een hoofdrol. En wat blijkt? Geautomatiseerde sentimentanalyse scoort beter dan de menselijke beoordelingscapaciteiten. Maar hoe goed is de mens dan? Vaak wordt ervan uitgegaan dat mensen het sentiment in een tekst in 70% van de gevallen goed beoordelen. Dat getal wordt vaak gebruikt, maar het is lastig te achterhalen. Op Wikipedia wordt die 70% genoemd, maar er is geen citaat vemeld. En daarnaast, hoe representatief is dat getal voor voor tweets? Om die vraag te beantwoorden, organiseerde ik een maand geleden een experiment.
Men neme een drietal goed opgeleide annoteurs en een grote bak tweets. Zes dagen hebben onze drie annoteurs tweets zitten classificeren. Daarbij hadden ze vier keuzes. Bij elke tweet beoordeelden ze eerst of deze objectief of subjectief was. Bij de subjectieve tweets vroegen we hen vervolgens aan te geven of er een positieve, negatieve of neutrale boodschap in de betreffende tweet schuilde. Bij het onderzoek zijn er 5000 tweets door alle drie de testpersonen geclassificeerd.
#drama
Na het classificeren hebben we de oordelen naast elkaar gelegd en gekeken hoe vaak de studenten overeenstemden over de lading van de tweet. In 68% van de gevallen waren twee van de drie studenten het eens over de boodschap. Dat zit dicht tegen de alom gehanteerde 70% aan. Maar hoe vaak kenden de studenten alle drie dezelfde lading toe aan een tweet? Het antwoord: een dramatische 58,8%. Over dik 40% van de tweets zijn de studenten het niet eens. Valt dat even tegen.
Waar is die boodschap
Eerder dit jaar legde ik uit dat goede geautomatiseerde sentimentanalyse een accuraatheid van rond de 70% haalt. Oftewel: hoger dan het menselijk vermogen om de boodschap van een tweet te analyseren. Niettemin is het goed om te zien welke ‘onderdelen’ van een tweet precies de lading geven. Daarom vroegen we de annoteurs ook om voor 1.600 tweets aan te geven welke zinsdelen precies het sentiment aanduidden. Dat leverde 1600 keer 3 patronen op. En van die 1600 stemden de oordelen van onze annoteurs slechts 58 keer overeen. Oftewel: 3,6%. Oei.
Sentiment in scène
De menselijke beoordeling van tweets lijkt dus achter te blijven bij die van sentimentanalyse. Toch moeten we ook niet alle nauwkeurigheidscijfers van sentimentanalyses voor zoete koek slikken. Vaak zitten er nog wel eens addertjes onder het gras. Sommige partijen claimen bijvoorbeeld een accuraatheid van 85% of hoger. Maar vaak is een model dan specifiek ‘getraind’ op één sector of product. Als je hetzelfde model loslaat in een andere wereld, zakt het vaak genadeloos door het ijs.
Een tweede addertje is de selectie van tweets. Neem bijvoorbeeld de situatie waarin we voor de zekerheid nog twintig andere annoteurs dezelfde tweets laten classificeren. Als we dan alleen de tweets pakken waarbij een unanieme interpretatie is gevonden, kunnen we er 100% zeker van zijn dat er geen ruis in ons sentimentmodel zit. Dit lijkt mooi, maar betekent ook direct dat het model geen enkele vorm van nuancering kent en dus alleen de ‘simpele’ gevallen kan detecteren.
De mens voorbij
Op basis van het bovenstaande verhaal moeten er direct alarmbellen gaan rinkelen als iemand claimt een nauwkeurigheid hoger dan 70% te halen bij sentimentanalyse. Maar dat maakt de persoon in kwestie niet per definitie een leugenaar. Een goede, structurele aanpak om geautomatiseerd sentimentanalyse uit te voeren zou namelijk voor elk nieuw domein (denk aan media, telecom, financieel) een specifiek model moeten hebben. Op die manier kan bijvoorbeeld het domeinmodel ‘media’ richting een nauwkeurigheid van 80% gaan, maar slechts een nauwkeurigheid van 60% scoren in de telecomwereld. Dit houdt dan wel in dat je bij het definiëren van een nieuw domein ook een nieuw model moet trainen. Maar ja, voor wat hoort wat.
Meer uit sentiment
Wie zichzelf niet in de maling neemt, zal dus tot de conclusie komen dat geautomatiseerde sentimentanalyse zeker meerwaarde heeft. Het brengt het sentiment over een bepaald onderwerp sneller en beter in kaart dan wie dan ook.
Afbeelding: Paul Keller (cc)