Twitter sentiment

Twitter is het sociale netwerk bij uitstek om je mening op te ventileren. Het creëert voor onderzoekers dan ook een interessant onderzoeksveld. Door het analyseren van tweets is het bijvoorbeeld mogelijk om een voorspelling te doen over de uitslag van een aankomende verkiezing of kan worden nagegaan wat er onder de bevolking leeft (trends). Een computer herkent een trend automatisch door te kijken naar frequentie in woordgebruik. Veel voorkomende trends zijn bijvoorbeeld belangrijke sportwedstrijden, televisieprogramma’s of gebeurtenissen die een nationale impact hebben.

Door gebruik te maken van sentimentanalyse kunnen er voorspellingen over bepaalde onderwerpen worden gedaan. Sentiment is een positieve of negatieve mening over een bepaald onderwerp of een bepaalde gebeurtenis. Het kan herkent worden in tweets door te kijken naar gebruikte woorden, hashtags en emoticons. Tweets kunnen dan als positief, negatief of neutraal gelabeld worden.

Gelabelde tweets kunnen gebruikt worden om een programma te leren om verschillen in sentiment automatisch te herkennen. De tweets worden gelabeld als positief, negatief of neutraal en worden opgedeeld in woorden en leestekens. Het programma kijkt voor elk specifiek woord of het vaker voorkomt bij een van de drie klassen (labels). Hierdoor kan het programma een model opbouwen met kansen op een combinatie van klasse en een specifiek woord. Met het model kan het programma van onbekende tweets de kans bepalen waarmee het tot een van de drie klassen behoort.

Natuurlijk maakt zo’n programma in het leerproces ook fouten. Het kan klassen fout herkennen, of klassen helemaal niet herkennen. Een sentimentanalyse van tweets wordt als volgt geëvalueerd:

op precisie: aantal goed herkende tweets van een klasse gedeeld door het aantal herkende tweets van deze klasse.

op recall: aantal goed herkende tweets van een klasse gedeeld door het daadwerkelijke (vooraf handmatig beoordeelde) aantal van deze klasse in de data.

op F-score: het harmonisch gemiddelde van deze twee getallen:
F-score = 2*Precisie*Recall/(Precisie+Recall)

Ik heb de proef op de som genomen en dertig tweets verzameld om vervolgens deze verzameling te laten analyseren door een programma met een sentimentmodel. Het programma had een sentimentmodel op basis van van 372 tweets (186 neutrale; 93 positieve en 93 negatieve). Mijn verzameling bevatte 10 tweets van elke klasse. Uit de resultaten bleek dat het programma meer dan de helft van mijn positieve tweets als positief had herkent. Het percentage voor de negatieve tweets lag iets lager: rond de 40%. De gemiddelde F-score gecombineerd voor positief en negatief was 35,43. Voor deze score geldt altijd, op een schaal van 0 tot 100, hoe hoger hoe beter. Ik had de F-score kunnen verbeteren door een grotere verzameling van tweets te gebruiken in dezelfde verhouding als het sentimentmodel (2:1:1).

Evaluatiescores

Het doen van voorspellingen op basis van sentiment in tweets blijft een lastige zaak. Nooit zal een sentimentmodel compleet zijn. Sommige woorden hebben door persoonlijk gebruik een sterker sentiment dan andere. Iedereen gebruikt woorden op zijn of haar eigen manier. Maar werken aan een nagenoeg perfect model blijft wel een mooie uitdaging.