Harde cijfers, goed verhaal

Header bij making-of over trollen op Twitter

Hoe analyseer je Twitter-data op trollen?

In vijf stappen van dataverzameling tot handmatige controle

Header bij making-of over trollen op Twitter

Twitter-accounts die onvermoeid nepnieuws rondpompen of personen belagen met grove opmerkingen: deze zogeheten Twitter-trollen zijn niet meer weg te denken van sociale media. In vijf stappen leggen we uit hoe je deze nepaccounts voortaan kunt herkennen en opsporen.

Het is niet eenvoudig om een trol op Twitter te herkennen: deze accounts doen zich namelijk voor als echte gebruikers. Door zich in allerlei gesprekken te mengen en berichten rond te sturen, proberen ze de publieke opinie te sturen. En om dat gesprek een beetje te kunnen beïnvloeden, gaan die accounts heel slinks te werk.

Toch zijn er een aantal kenmerken waaraan je zo’n account kunt identificeren. Let bijvoorbeeld op gebruikersnamen die lijken te zijn gegenereerd. De naam @pointer_kroncrv is iets dat door een mens bedacht lijkt, in tegenstelling tot — voor dit voorbeeld fictieve account — @pointer12843459.

Bij het aanmaken van een nieuw account op Twitter kan een gebruikersnaam al bezet zijn. Twitter genereert dan een paar varianten, waaronder de accounts met veel getallen erachter. Personen die snel meerdere accounts willen aanmaken, zullen geneigd zijn om die nietszeggende varianten te kiezen.

Uiteraard is één zo’n aanwijzing niet voldoende; wie weet neemt een echte gebruiker wel genoegen met zo’n vreemde accountnaam. Maar zodra je meerdere aanwijzingen op elkaar stapelt, wordt het al een stuk duidelijker welke accounts wel en niet authentiek zijn.

Met onderstaande vijf stappen kun je zelf een analyse doen naar trollen op Twitter.

Stap 1: Tweets verzamelen

Dit onderzoek begint met het verzamelen van brongegevens. Omdat je Twitter-data gaat analyseren, is het van belang om eerst veel berichten van gebruikers binnen te halen. Bij Pointer gebruiken we een van deze twee services: Rtweet of Twint.

Als je bekend bent met de gratis analysesoftware R, dan is de package Rtweet een goed uitgangspunt. Om dit te kunnen gebruiken, moet je wel een zogeheten developer account bij Twitter aanvragen. In Rtweet kun je zoekopdrachten uitvoeren zoals je dat ook op de website van Twitter doet. De verzamelde tweets kun je vervolgens in R verder bewerken, of opslaan en exporteren naar een ander bestand.

Het nadeel van Rtweet is dat je gelimiteerd bent tot het verzamelen van 18.000 tweets per kwartier, en je hooguit een week in het verleden kunt zoeken. Als dat niet voldoende is voor jouw onderzoek, dan is Twint een goed alternatief. Met Twint kun je namelijk buiten de officiële limieten van Twitter zoeken. Hiervoor moet je wel bekend zijn met de command line en Python.

Bedenk ook een goede zoekvraag. Wil je lukraak wat tweets binnenhalen, of zoek je op een specifieke hashtag of account? Een specifieke zoekopdracht leidt meestal tot betere resultaten. Bekijk ook eens de geavanceerde zoekmogelijkheden van Twitter voor inspiratie.

Stap 2: Maak een selectie van wat je wil onderzoeken

Zodra je tweets hebt verzameld, kun je overwegen om een selectie te maken van de accounts die je op trolactiviteit wil analyseren. Uiteraard kun je zo’n analyse ook doen voor alle accounts in je dataset, maar het kan efficiënter zijn om van tevoren een keuze te maken in je onderzoek. Je analyse wordt er nauwkeuriger van, en je bespaart veel tijd door accounts buiten beschouwing te laten. Kijk bijvoorbeeld eens naar de meest actieve of recent aangemaakte accounts. Of filter alle accounts die url’s of afbeeldingen delen.

In ons onderzoek naar misinformatie over COVID-19 hebben we gekeken naar url’s die in minstens tien tweets worden gedeeld. Die hebben we vervolgens beoordeeld: is dit nepnieuws of niet? Zo ja, dan hebben we de accounts die deze url hebben gedeeld in een aparte dataset geplaatst.

Als het goed is, heb je nu een lijst met accountnamen die je verder wil onderzoeken. Je wil namelijk weten of deze accounts gedrag vertonen dat niet overeenkomt met authentieke gebruikers. Als het om tien accounts gaat, dan kun je dat handmatig doorzoeken. Maar dat wordt iets meer werk zodra je duizenden rijen aan data hebt. Bij Pointer gebruiken we data-analyse om zulke enorme lijsten op prioriteit te rangschikken.

Dat doen we door twee afzonderlijke scripts op de lijst los te laten. Deze scripts zeggen beide voornamelijk te kijken naar geautomatiseerde accounts (de zogeheten bots), maar ze analyseren veel kenmerken die ook bij trol-accounts voorkomen. Zodra beide scripts bevestigen dat het om een verdacht account gaat, onderzoeken we deze handmatig verder om de laatste puzzelstukjes op hun plek te leggen.

Stap 3: Analyseren van accounts met TweetBotOrNot

In R kun je gebruikmaken van de package TweetBotOrNot. Het algoritme van TweetBotOrNot geeft elk account een score: de waarschijnlijkheid dat een account een bot of trol is. Het algoritme van TweetBotOrNot is getraind door een groep eerder gesignaleerde bots en trollen om soortgelijke accounts te herkennen. Daarbij let het script op een aantal kenmerken, zoals geautomatiseerd gedrag, sentiment, verdachte volgers, etc.

Wij hebben een account als verdacht aangemerkt zodra het een score heeft van minstens 0.95. Dan is het volgens TweetBotOrNot 95 procent zeker dat het om een bot of trol gaat.

Stap 4: Analyseren van accounts met Botometer

Vervolgens willen we bevestiging van een tweede script, genaamd Botometer. Je kunt op de website individuele accounts invoeren, of via de API en python een lijst van accounts invoeren. Ook hier wordt gekeken naar kenmerken zoals de inhoud van tweets, geautomatiseerd gedrag, het netwerk van volgers, etc. De uitkomst van deze analyse is een score tussen de 0 en 1.

Botometer wordt regelmatig gebruikt door universiteiten en onderzoeksinstanties om deze analyses mee uit te voeren. Wij hebben een account als bot of trol aangemerkt zodra het een score boven de 0.43 heeft. Pew Research heeft die grens eerder gebruikt in een groot onderzoek naar online nepnieuws.

Stap 5: Handmatige check

Zodra TweetBotOrNot en Botometer beide aangeven dat het om een verdacht account gaat, gaan we daar een handmatige check op uitvoeren. Die lijst van accounts zal vele malen kleiner zijn dan de gigantische dataset waar je oorspronkelijk mee bent begonnen. Dat scheelt dus enorm veel werk.

De kans bestaat overigens dat een van deze algoritmen iets over het hoofd ziet. Je kunt de lijst van accounts die door slecht één van deze scripts als verdacht zijn aangemerkt nog afzonderlijk doornemen.

Het is belangrijk om jouw lijst met hoofdverdachten handmatig nog eens na te lopen. Er zijn uiteraard uitzonderingen mogelijk: een account met een gegenereerde naam hoeft niet per definitie een trol te zijn. Daarnaast zijn sommige Twitter-bots erg handig en niet schadelijk. Een paar goede voorbeelden zijn @zoeknieuws en @nosedits.

Om snel een beeld te krijgen van de activiteit van een Twitter-account, kun je Accountanalysis gebruiken. Deze site visualiseert de meest recente 200 tweets op verschillende manieren. Hiermee kun je vrij snel zien op welke tijdstippen iemand tweet, of het eenzijdig gedrag is, en welke url’s, accounts en hashtags worden genoemd.

Vervolgens kun je bij elk individueel account handmatig checken of je trol- of botactiviteit hebt waargenomen. Wij hebben voor de trollen vier profielen onderscheiden, gebaseerd op het tweetgedrag.

Verzenders

Deze accounts hebben geen of weinig interactie met andere accounts. Ze verzenden enkel berichten. In ons specifieke geval bijna altijd misinformatie over COVID-19.

Rondpompers

Deze accounts sturen enkel retweets. Ze hebben vaak weinig volgers, maar dat is ook niet per se de bedoeling. Het gaat er voornamelijk om dat ze de statistieken van andere tweets ophogen. Uit recent onderzoek blijkt dat zichtbare likes en shares mensen eenvoudig met de verkeerde intentie aansporen om misinformatie te verspreiden.

Reactie-accounts

Deze accounts reageren voornamelijk op andere berichten en gebruikers. Vaak proberen ze bestaande berichten enorm tegen te spreken, of steunen ze een overduidelijk onzinbericht. De gesprekstoon van deze accounts is vaak dreigend en sturend.

Imitatie-accounts

Deze accounts zijn het moeilijkst te herkennen. Ze hebben een meer gevarieerde verhouding tussen tweets, retweets en replies. Vaak doen ze zich ook slimmer voor als een echt account, inclusief namen en foto’s. Vaak blijkt dat deze ‘personen’ verder geen enkele online aanwezigheid hebben. De tweets gaan vaak over slechts één thema. Soms zie je dat deze accounts na jaren inactiviteit zijn ontwaakt en heftig over dat ene onderwerp praten.

Heb je een oefendataset nodig voor je eigen analyse? Onze dataset met ruim 1,7 miljoen tweets over COVID-19 kun je hier vinden. Als je interessante vondsten doet, mail dan vooral naar pointer@kro-ncrv.nl.

Meer over Actueel Corona

Elke week de beste verhalen in je mailbox