• No results found

Sentimentanalyse in Politiek gekleurde Tweets

N/A
N/A
Protected

Academic year: 2021

Share "Sentimentanalyse in Politiek gekleurde Tweets"

Copied!
50
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Sentimentanalyse in Politiek gekleurde

Tweets

(Master Thesis)

Jarno Kuipers

jarnokuipers@hotmail.com

14 september 2012

Scriptiebegeleider en eerste lezer: dr. ir. E.F. Tjong Kim Sang

Tweede lezer: prof. dr. J. Bos

(2)

Voorwoord

(3)

Inhoudsopgave

1 Inleiding 1 1.1 Onderzoeksvragen . . . 1 1.2 Machine Learning . . . 1 1.3 Twitter . . . 2 1.4 Sentiment op Twitter . . . 3 1.5 Bevolkingsgroep . . . 4 2 Methode 5 2.1 Twittercorpus . . . 5 2.2 Gebruikte dataset . . . 5 2.3 Evaluatie . . . 6 2.4 Machine Learning . . . 8

2.4.1 Support Vector Machines . . . 8

2.4.2 Timbl . . . 8 2.5 Features . . . 9 2.5.1 Baseline . . . 10 2.5.2 Bag of Words . . . 11 2.5.3 Sentimentwoorden . . . 11 2.5.4 Scheldwoorden . . . 12 2.5.5 Emoticons . . . 13

2.6 Aantal features beperken . . . 14

(4)

3.6 Featurefrequentiethreshold . . . 24

3.7 Optimalisaties samen . . . 25

3.8 Featureclustering . . . 26

3.9 Toevoegen van features . . . 26

3.10 Vari¨eren grootte trainingbestand . . . 27

3.11 Leave One Out . . . 29

3.12 Co-training . . . 31 3.13 T-toets . . . 31 3.14 Verkiezingsuitslag . . . 32 4 Discussie 35 4.1 Features . . . 35 4.2 Optimalisaties . . . 36 4.2.1 Stopwoorden . . . 36 4.2.2 Hoofdletters . . . 37 4.2.3 Featurefrequentiethreshold . . . 37 4.2.4 Featureclustering . . . 37

4.2.5 Filteren van Twittergebruikers . . . 37

4.3 Dataset . . . 38

4.4 Verder onderzoek . . . 38

4.4.1 Extra features . . . 38

4.4.2 Andere Machine Learning technieken . . . 39

4.4.3 Zekerheid classificatie . . . 39

4.4.4 Dataset . . . 39

4.4.5 Extra sentimentklasse . . . 40

(5)

Samenvatting

(6)

Hoofdstuk 1

Inleiding

Twitter is een sociaal netwerk via internet waarbij gebruikers korte berichten met elkaar kunnen uitwisselen, tevens is het een interessante bron voor veel onderzoek in Machine Learning. We noemen een Twitterbericht een politieke tweet wanneer er in de berichtgeving een politieke partij genoemd wordt. We zullen in dit hoofdstuk aangeven waarom we Twitter gebruiken voor sentiment-analyse. Na de introductie van Twitter gaan we verder in op de representatie van kiesgerechtigden op Twitter.

1.1

Onderzoeksvragen

De hoofdvraag van deze scriptie luidt als volgt: Hoe kunnen we gebruik makend van het Machine Learning programma Timbl, zo goed mo-gelijk automatisch het sentiment van een politieke tweet bepalen ten opzichte van de genoemde politieke partij? Om antwoord te geven op deze vraag moeten we antwoord vinden op de volgende vragen: Welke featu-res moeten we kiezen om een goede sentimentanalyse, gebaseerd op Machine Learning, uit te voeren met de beschikbare data? Welke optimalisaties kun-nen we toepassen om de methode effici¨enter uit te voeren? Op welke manieren kunnen de prestatie van de methode verbeteren? Wat voor effect heeft het ge-bruik van sentimentanalyse in verkiezingsvoorspellingen? In deze thesis gaan we onderzoeken wat de antwoorden zijn op deze vragen.

1.2

Machine Learning

(7)

2.4 zal verder in worden gegaan op verschillende Machine Learning technieken, uiteraard wordt de in dit onderzoek gebruikte techniek dieper uitgelegd.

1.3

Twitter

In dit onderzoek richten we ons op korte tekstberichten door mensen geplaatst op Twitter, zogenaamde tweets. Dit platform faciliteert de mogelijkheid om berichten te kunnen plaatsen met een maximum lengte van 140 tekens. Deze berichten kunnen bovendien hashtags bevatten (#). Deze tags kunnen gebruikt worden om het onderwerp van het bericht aan te geven of om iets te benadruk-ken. Twitter bestaat sinds 2006, inmiddels zijn er meer dan 140 miljoen actieve gebruikers. Deze gebruikers sturen in totaal meer dan 340 miljoen tweets per dag (Twitter.com, 2012). Het systeem van Twitter is dat een gebruiker een account aanmaakt en vervolgens tweets kan sturen. Andere gebruikers kunnen zich abonneren op een gebruiker, zodat de tweets zichtbaar worden in hun ti-meline. Een gebruiker heeft de mogelijkheid om een account af te schermen waardoor anderen hen allen kunnen volgen na toestemming. Onafgeschermde tweets kunnen ook door niet-volgers doorzocht worden. Alle tweets gebruikt in dit en ander onderzoek zijn daarom onafgeschermde tweets. Het idee van Twit-ter is dat mensen persoonlijke status updates kunnen delen. Dat wil zeggen dat mensen in het kort kunnen delen hoe het met hun gaat en wat ze doen. Inmiddels lijkt de verscheidenheid van tweets oneindig. Enkele voorbeelden zijn tweets van nieuwssites, weerberichten, winkelaanbiedingen, foto’s en grapjes. De maker van de tweets is niet altijd een persoon, zo zijn er bijvoorbeeld weer-stations die met een bepaald interval weervariabelen tweeten. In dit onderzoek kijken we naar Nederlandse tweets over het politieke landschap in Nederland. Wanneer er in het Twitterbericht een politieke partij vermeld wordt, noemen we het een politieke tweet. Deze tweets zijn ruwweg op te delen in drie verschillende categorie¨en. Als eerste zijn er de politieke partijen die reclame maken voor hun eigen partij, zie figuur 1.1.

Figuur 1.1: Tweet van politieke partij

Ten tweede zijn er nieuwsberichten die rapporteren over een gebeurtenis be-treffende een bepaalde partij, zie figuur 1.2. Dit is puur informatief zodat hier geen politieke voorkeur uit op te maken is.

Figuur 1.2: Tweet met nieuwsbericht als inhoud

(8)

politicus, zie figuur 1.3. Deze derde vorm van tweets is voor dit onderzoek in-teressant. In deze tweets zit namelijk de mening van mensen verwerkt. Met de kennis van mening van personen kunnen we een voorspelling doen over de ver-kiezingsuitslag, de andere twee categorie¨en tweets zijn hierbij niet van waarde.

Figuur 1.3: Tweet met een mening van een persoon

1.4

Sentiment op Twitter

Sentiment op Twitter kan beschreven worden als meningen van mensen ver-werkt in tweets. In een bericht van maximaal 140 tekens is het mogelijk dat een gebruiker zijn standpunt uit ten opzichte van een bepaald onderwerp. In eerder onderzoek is er veel sentimentanalyse gedaan op allerlei vlakken. Zo heeft Che-sley (2006) onderzoek gedaan naar blogs. Hiroshi, Tetsuya, and Hideo hebben onderwerpen in zinnen gezocht. Hatzivassiloglou and McKeown (1997) hebben gekeken naar sentiment in woorden. Net als Bollen et al. (2009) en Tumasjan, Sprenger, Sandner, and Welpe (2010) richten wij ons op Twitter berichten. Zo-als gezegd is uit een deel van de tweets de mening van een gebruiker over een politieke partij of politicus te extraheren. Aan de hand van deze mening kan regelmatig opgemaakt worden of de gebruiker juist wel of niet op de betreffende partij zou stemmen. Ons onderzoek richt zich op dit type tweets. Realisatie van automatische detectie en classificatie van meningen in tweets is waardevol. Kennis over de opinie van een groep geeft nieuwe inzichten en mogelijkheden die tot voor kort moeilijk beschikbaar waren. De mogelijkheid tot het geven van groepsinzicht is de kracht van Twitter in combinatie met het onderzoek naar sentimentanalyse, het verkrijgen van deze kennis. Het analyseren en clas-sificeren van geschreven taal in de vorm van tweets brengt echter problemen met zich mee. Tweets zijn vaak niet eenduidig, ze kunnen ambigue, ironisch en sarcastisch zijn zoals bijvoorbeeld in figuur 1.4.

(9)

Het onderzoek naar sentimentanalyse is in het Engels verder gevorderd dan in het Nederlands (Pang and Lee, 2008; Abbasi, Chen, and Salem, 2008). De meest voor hand liggende reden is het verschil in aantal mensen op de wereld met Engels als moedertaal. De genoemde problemen van ironie en sarcasme komen vermoedelijk in Nederlandse twitterberichten vaker voor in het Nederlands dan in het Engels, dit hebben Nederlandse sentimentanalysebedrijven Clipit (2012) en Coosto (2012) reeds ondervonden. Sentimentanalyse uitvoeren op Neder-landse tweets is dus een ware uitdaging.

Grote collecties van tweets bevatten schatten met informatie. De kracht van Twitter is het grote aantal gebruikers die allemaal individueel iets kunnen de-len. Wanneer we het sentiment van een afzonderlijke tweet kunnen bepalen, is het mogelijk om te ontdekken wat het sentiment is van een grote gemeenschap. Deze informatie over een grote gemeenschap biedt zeer veel mogelijkheden. In dit onderzoek richten we ons het sentiment in politieke tweets omdat sentiment-analyse nodig is voor voorspellingen van verkiezingsresultaten. Met kennis van het sentiment van een grote gemeenschap over een bepaalde politieke partij, kunnen we verkiezingsvoorspellingen onderbouwen.

1.5

Bevolkingsgroep

Om een realistisch beeld te cre¨eren van de gehele bevolking is een hoge Twitter-dichtheid belangrijk. Dat betekent dat de gehele bevolking voldoende moet wor-den gerepresenteerd op Twitter. Uit cijfers blijkt dat per hoofd van de bevolking Nederlanders het meeste gebruik maken van Twitter in vergelijking met de rest van de wereld (Semiocast.com, 2012). Wanneer we verkiezingsvoorspellingen willen doen, is het belangrijk dat de stemmers in dezelfde verhouding berichten op Twitter als dat ze stemmen. In Nederland is iedereen vanaf achttien jaar oud stemgerechtigd, dat houdt in dat voor een goede verkiezingsrepresentatie ook alleen tweets mee tellen van deze leeftijdscategorie. In het geval waarbij de jeugd dezelfde politieke voorkeur heeft als de stemgerechtigden kunnen alle politiek gekleurde tweets mee worden genomen in de voorspelling, omdat dan het verwachte aantal zetels niet verandert. Uit voorgaand onderzoek blijkt dat de verhouding tussen politiek gekleurde tweet in positief en negatieve vorm niet ´

(10)

Hoofdstuk 2

Methode

In dit hoofdstuk zullen we dieper in gaan op de werking van sentimentanalyse en de daarvoor benodigde features. We zullen uitgebreid uitleggen welke features gebruikt worden. Een goede sentimentanalyseprestatie wordt behaald door het optimaliseren van verschillende factoren (Wilson et al., 2005). In dit onderzoek hebben we ook gekeken naar optimalisatie, dit zal tevens besproken worden in de volgende paragrafen. Het hele onderzoek wordt aan de hand van echte tweets gedaan, daarom beginnen we dit hoofdstuk met het gebruikte corpus.

2.1

Twittercorpus

In dit onderzoek gebruiken we een corpus met Twitter als bron. Sinds 16 de-cember 2010 worden op de Rijksuniversiteit in Groningen Nederlandse tweets verzameld. Het corpus wordt continu uitgebreid door de zoekopdracht naar een honderdtal veel voorkomende Nederlandse woorden en tevens een aantal Nederlandse hashtags (Tjong Kim Sang and Bos, 2012). Ondanks dat de zoek-opdracht slechts Nederlandse woorden doorzoekt blijven er zogenaamde False Positives, dit zijn tweets waarvan we denken dat ze Nederlands zijn terwijl dat niet het geval is. Deze False Positives worden later uitgefilterd met de taal-rader van Mangin (2007). In dit onderzoek gebruiken we vervolgens slechts tweets waarin een Nederlandse politieke partij staat vermeld, omdat we slechts ge¨ınteresseerd zijn in houdingen van mensen ten opzichte van deze partijen. Banko and Brill (2001) tonen aan dat het gebruik van een grotere dataset voor natuurlijke taalverwerkingstaken resulteert in een betere prestatie van de taak. We willen daarom gebruik maken van een zo groot mogelijke aantal tweets in dit onderzoek.

2.2

Gebruikte dataset

(11)

gean-noteerd zijn 1. Deze set van 1386 tweets bevat 1342 unieke tweets, vervolgens

hebben we hieruit twee trainsets en ´e´en testset samengesteld. De trainsets be-staan elk uit 500 tweets, de testset bestaat uit 325 tweets. De overige 17 tweets hebben we niet gebruikt. We hebben gekozen voor tweet trainsets omdat we voor sommige experimenten, zoals co-training, gebruik moeten maken van ver-schillende geannoteerde trainsets.

De annotatie van tweets is afzonderlijk gedaan door twee personen. Per tweet kan gekozen worden of de boodschap in de tweet negatief dan wel neutraal/positief is over de genoemde politieke partij. Vervolgens zijn de overeenkomstig gean-noteerde tweets opgenomen in de dataset. Gedurende het onderzoek hebben we een extra trainset toegevoegd om te onderzoeken of een grotere dataset resul-teert in een hogere sentimentanalyseprestatie. De extra set bevat 1000 tweets die door twee verschillende personen op dezelfde wijze geannoteerd zijn. Deze set met tweets is niet van exact dezelfde dagen als de eerste set, daardoor is kans op nieuwe onderwerpen in de tweets. Het is tevens de reden dat de verhou-ding van negatieve en positieve/neutrale tweets verschilt van de eerdere set. De totale gebruikte dataset zoals gebruikt in dit onderzoek, komt op 2325 tweets. De tweets in de datasets bevatten allemaal een politieke partij. We filteren op de volgende partijnamen en hun gebruikelijke afkortingen

• partij van de arbeid - pvda • christen democratisch app´el - cda

• volkspartij voor vrijheid en democratie - vvd • partij voor de vrijheid - pvv

• socialistische partij - sp • democraten 66 - d66 • groen links - gl • christen unie -cu

• staatkundig gereformeerde partij - sgp • partij voor de dieren - pvdd

• 50plus - 50+

Het resultaat levert ons 2325 tweets waarin ´e´en partijnaam vernoemd wordt.

2.3

Evaluatie

In de experimenten die we gaan doen vergelijken we het werkelijke sentiment van een tweet met het sentiment dat het model aan de tweets toebedeelt. De prestatie die het model haalt kan vervolgens uitgedrukt worden in accuraat-heid, precision, recall en een F-score. Voor deze scores kijken we slechts naar

1geannoteerde dataset van Erik Tjong Kim Sang & Johan Bos - Rijksuniversiteit

(12)

set aantal tweets pos.&neu. tweets neg. tweets p&n : neg trainset A 500 386 114 3.39 trainset B 500 387 113 3.42 trainset C 1000 548 452 1.21 testset 325 247 78 3.17 totaal 2325 1399 926 1.51 Tabel 2.1: Geannoteerde datasets met het aantal tweets en hun sentiment ver-deling per set. In de laatste kolom staat de verhouding tussen het aantal posi-tieve/neutrale en negatieve tweets. Een waarde boven 1.0 geeft aan dat er meer positieve/neutrale tweets zijn dan negatieve tweets. Trainset C heeft duidelijk een meer gebalanceerde verhouding dan de andere sets.

de negatieve tweets, omdat deze verhoudingsgewijs minder voorkomen in alle afzonderlijke datasets. Wanneer het leeralgoritme testtweets alleen indeelt in de categorie die het meeste aanwezig was in de trainset, zullen alle testtweets als positief/neutraal bestempeld worden. Dit zou resulteren in redelijk goede scores, omdat alle positieve/neutrale tweets goed ingedeeld worden. We kiezen daarom om de prestaties te meten aan de hand van het aantal goed geclassifi-ceerde negatieve tweets. Het is namelijk juist de kunst voor de sentimentanalyse tweets als negatief te bestempelen. Tevens is het onderscheiden van negatieve tweets belangrijk voor de verkiezingsvoorspelling. De negatieve tweets worden bij het voorspellen verwijderd, het is daarom zaak om alleen negatieve tweets als zodanig te bestempelen. De scores hebben we op de volgende manier berekend;

accuraatheid = # goed bepaalde tweets totaal # tweets

precisie = # (neg tweets ∩ gevonden neg tweets) # gevonden neg tweets

recall = # (neg tweets ∩ gevonden neg tweets) totaal # neg tweets

F score = 2 · precisie · recall precisie + recall

(13)

een vaste train- en testset is de traindata en de testdata uiteindelijk groter. In het geval van 1325 tweets in totaal (trainset A & B + testset), beschikt de Leave One Out methode over 32,5 % meer trainingsdata. Aan testdata is er 408 % meer beschikbaar. Het nadeel van Leave One Out is dat het heel rekenintensief is. Ook is het niet mogelijk om verschillende trainsets met dezelfde testset te testen. In dit artikel zullen we daarom wisselen tussen deze twee genoemde manieren om te testen.

2.4

Machine Learning

Machine Learning is een veel gebruikte methode voor sentimentanalyse (Bollen et al., 2009; Wilson et al., 2005). Het algoritme zoekt naar regels en patronen in een dataset waarmee antwoord gegeven kan worden op een vraag. De meeste MachineLearningtechnieken die gebruikt worden voor sentimentanalyse zijn Su-pervised, er wordt getraind met geannoteerde data. Dat betekent dat voor alle trainingsdata reeds bekend is tot welke categorie het behoort (Kotsiantis, 2007). Er zijn ook enkele Unsupervised methodes (Hahne, Huber, Gentleman, Falcon, Gentleman, and Carey, 2008), maar daar gaan we in deze scriptie niet verder op in. Dit onderzoek richt zich op Supervised leren omdat we beschikking hebben over geannoteerde data en het probleem daardoor minder complex is.

2.4.1

Support Vector Machines

E´en van de bekendste MachineLearningtechniek is Support Vector Machines (Tong and Koller, 2002). Deze techniek zet de data van een geannoteerde train-set om in punten in een multidimensionale ruimte. Dit opgezette model wordt vervolgens opgedeeld in stukken waarbij de verschillende datacategorie¨en ge-scheiden worden door een vlak. Wanneer er nu getest wordt met een testset, wordt dit als nieuwe datapunten in het model gebracht. Vervolgens wordt ge-keken per datapunt in welke categorie het zich bevindt. Op deze manier deelt een SVM de data op in categorie¨en, zie figuur 2.1.

Figuur 2.1: SVM: opdeling van twee verschillende soorten datapunten in ver-schillende categori¨en in een ruimte

2.4.2

Timbl

(14)

Het specifieke aan Memory Based Learning is dat nieuwe objecten vergeleken worden met reeds geziene objecten. In de trainingsfase worden de eigenschappen van de objecten opgeslagen. In ons geval betekent het dat voor elke tweet er wordt onthouden welke features er in voorkomen. Bij een nieuw te bepalen tweet wordt de klasse berekend aan de hand van voorbeelden met overeenkomstige features. Dit algoritme stamt af van k -Nearest Neighbour (k -NN). In figuur 2.2 is te zien dat het nieuwe te bepalen object (de cirkel) vergeleken wordt met omliggende objecten. In dit voorbeeld is een positief object het meest dichtbij, wat betekent dat dit ook de klasse zal worden van het te bepalen object. Het is mogelijk om een bepaalde k -waarde in te stellen bij het uitvoeren, hiermee kan opgegeven worden hoeveel buren van belang zijn bij het bepalen van de klasse. Standaard gebruikt Timbl een k van ´e´en, wat betekent dat naar de dichtbijzijnste buur-node wordt gekeken.

Figuur 2.2: k -NN: De klasse van het onbekende object wordt bepaald aan de hand van omliggende objecten.

Het effect van deze leermethode is dat de complexiteit van het model groeit naarmate de trainset groeit (Russell and Norvig, 2002). Het is daarom zaak om juiste features te kiezen, om de dataset zo min mogelijk complex te houden. Tevens omdat bewezen is dat een grotere dataset kan resulteren in een betere prestatie van de natuurlijke taalverwerkingstaak. Uit onderzoek is gebleken dat Timbl goede resultaten kan bereiken met sentimentanalyse op tekstgedeeltes met dezelfde grootte als tweets (Wilson et al., 2005).

2.5

Features

(15)

een bepaald aantal features, samen vormen deze een featurevector, Timbl kan vervolgens werken met deze featurevectoren. Zie figuur 2.3 voor een voorbeeld van een featurevector.

Figuur 2.3: Voorbeeld van een featurevector aan de hand van een tweet waarbij de waarde 1 aangeeft dat een woord aanwezig is.

Het is belangrijk om goede features te kiezen om de data te beschrijven, wanneer er te weinig features zijn is er sprake van kennisverlies. Een overdreven voorbeeld hiervan, is slechts gebruik maken van de aanwezigheid van een punt (.) als feature. Er is geen nuttige kennis beschikbaar in de featurveector om iets te voorspellen over de politieke voorkeur van de zender, zie figuur 2.4.

Figuur 2.4: Vier voorbeelden van tweets waarbij een feature niets zegt over het sentiment. Tweet 1 en 4 zijn negatief over een partij, tweet 2 en 3 juist positief. Dit is niet te herkennen in de featurevectoren omdat het aantal features veel te beperkt is.

Aan de andere kant kunnen er ook te veel features zijn om de data te beschrij-ven. Een hele grote featureset resulteert in meer gecompliceerde berekening, welke te rekenintensief is voor de taak. Het is daarom zaak om juiste features te kiezen (Riloff, Patwardhan, and Wiebe, 2006). Ook uit voorgaand onderzoek blijkt dat de juiste keuze van features van groot belang is voor een goede sen-timentanalyse (Guyon and Elisseeff, 2003) (Abbasi et al., 2008) (O’Keefe and Koprinska, 2009). In ons onderzoek zijn we begonnen met n type feature (Bag of Words). Vervolgens hebben we andere features onderzocht. We beginnen met een baseline voor dit onderzoek.

2.5.1

Baseline

(16)

probleem. Met deze baseline wordt een bepaalde prestatie behaald. Deze ba-selineprestatie geldt als uitgangspunt voor het onderzoek. Bij onderzoek wordt ingegaan op probleemstellingen en een oplossingen hiervoor. Deze oplossingen zijn behoorlijk meer complex dan de baselineoplossing. Daarom is de verwach-ting dat de complexe modellen beter presteren dan de baseline.

We kiezen voor een baseline waarbij alle tweets die een bepaalde term bevatten, worden bepaald als negatieve tweets. De overige tweets die deze term niet be-vatten bepalen we als positief/neutraal. Dit eenvoudige model behoeft slechts ´

e´en term dat met name voorkomt in negatieve tweets. We kiezen voor de term ‘#fail’, omdat in set A+B+C van 2000 tweets deze term in 92 % van alle voor-komens in negatieve tweets gebruikt wordt, zie tabel 2.2.

voorkomens in tweets #fail positief/neutraal 1

negatief 11 totaal 12

Tabel 2.2: Voorkomens van de term #fail in positieve/neutrale tweets en nega-tieve tweets, 92 % van alle voorkomens van #fail zijn in neganega-tieve tweets.

Een andere reden voor het kiezen van de term ‘#fail’ is dat er geen ruimte is voor ambigu¨ıteit. Een hashtag bevat meestal een samenvatting van de tweet, waarbij in dit geval het sentiment duidelijk wordt weergegeven.

2.5.2

Bag of Words

De featureverzameling Bag of Words (BoW) wordt gebruikt in verschillende on-derzoeken (Pang and Lee, 2004), (Maas, Daly, Pham, Huang, Ng, and Potts). Elk uniek woord in de trainset geldt als feature van de dataset. Een woord kunnen we zien als een rij van tekens, welke begint na een witruimte en stopt bij de volgende witruimte. In werkelijkheid wordt voor elk woord in de testset vergeleken of het betreffende woord voorkomt in de trainset, als dit het geval is wordt dit aangegeven in de featurevector. BoW is gebaseerd op Term Presence, het wel of niet voorkomen van een woord. Een andere mogelijkheid is gebruik maken van Term Frequency, de frequentie van een woord laten meetellen, zie figuur 2.5. In het onderzoek van Pang, Lee, and Vaithyanathan (2002) werd een beter resultaat behaald met Term Presence. Als reden wordt gegeven dat onderwerp herkenning afhankelijk is van de frequentie van woorden, terwijl sen-timentherkenning afhankelijk is van het voorkomen van bepaalde woorden. In dit onderzoek gebruiken we Term Presence.

2.5.3

Sentimentwoorden

(17)

Figuur 2.5: Het verschil tussen Term Presence en Term Frequency. verwerken in de geautomatiseerde sentimentanalyse. Op deze manier gebruikt het systeem kennis over de betekenis van woorden. De featureverzameling Bag of Words bevat reeds de sentimentwoorden uit de trainset, door het manueel toevoegen van sentimentwoorden zorgen we er voor dat deze woorden altijd de juiste polariteit weergeven. Tevens vullen we ontbrekende woorden in de trainset aan met de lijst van sentimentwoorden.

Figuur 2.6: “faal” in een tweet, met een duidelijk sentiment in een woord. Andere voorbeelden van woorden met een duidelijk sentiment zijn • prachtig

• lelijk

• onuitstaanbaar • onzin

Veelal zijn deze woorden bijvoeglijke naamwoorden, deze woorden geven na-melijk een bepaald sentiment mee aan een woord. Voor dit onderzoek hebben we een lijst sentimentwoorden verkregen (SentiStrength, 2012), hierin staat een woord met zijn sentiment in de vorm van een waarde. Een positief sentiment wordt weergegeven met een positieve waarde, negatief sentiment met een ne-gatieve waarde. Door het toevoegen van expliciete kennis van deze woorden hopen we een beter scorende sentimentanalyse te kunnen doen. We gaan testen wat het effect van deze extra feature is door middel van een ceterus paribus experiment. Het is ook mogelijk om deze woorden samen te voegen in een fea-ture, waardoor het totale aantal features slechts met ´e´en toeneemt. Hiervoor zullen we ook een apart experiment doen. De bron van onze sentimentwoorden is een lijst met Engelse woorden welke we vertaald hebben met Google Translate (Google, 2012). en vervolgens hebben we de dubbele en fout vertaalde woorden uitgefilterd, dit resulteert in een Nederlandse lijst met 1152 woorden.

2.5.4

Scheldwoorden

(18)

is gebruik van scheldwoorden, eveneens duidelijke sentimentwoorden. Onze ver-wachting is dat wanneer er een scheldwoord voorkomt in een tweet, de houding van een gebruiker ten opzichte van een partij, negatief is. Het voorbeeld in figuur 2.7 komt overeen met onze verwachting.

Figuur 2.7: Scheldwoord politieke partij

Door scheldwoorden te gebruiken als features, hopen wij dit duidelijke nega-tieve sentiment om te kunnen zetten in een betere sentimentanalyse. We hebben de beschikking over een lijst van 3291 Nederlandse scheldwoorden (Taalkabaal, 2012). Voor elk scheldwoord maken we een aparte feature zodat voor elke tweet in de featurevector vermeld wordt of een scheldwoord aanwezig is in de tweet. Met behulp van de BoW-feature is het mogelijk dat er al scheldwoorden worden gebruikt als feature wanneer deze in de trainingsdata voor het model zitten. Door de toevoeging van de extra 3291 scheldwoorden als feature, kan de nega-tieve intentie ook ontdekt worden bij ongeziene scheldwoorden in de trainings-data. Tevens is het manueel toevoegen van deze duidelijke sentimentwoorden een voordeel omdat we zo uitsluiten dat scheldwoorden per ongeluk verkeerd worden ge¨ınterpreteerd bij de sentimentanalyse. We doen een experiment waar-bij eerst sentimentanalyse wordt uitgevoerd zonder gebruik te maken van de scheldwoordenfeatures. Daarna zullen we ceterus paribus een experiment doen waarbij we extra features met scheldwoorden toevoegen.

2.5.5

Emoticons

Uit eerder onderzoek is gebleken dat emoticons, ook wel smileys, succesvol ge-bruikt kunnen worden als features (Read, 2005). Emoticons zijn gezichtjes opge-bouwd uit leestekens waarmee een gebruiker een emotie kan uiten. Het gebruik van emoticons is algemeen bekend en is daarom een duidelijke uiting om mee te communiceren. Enkele voorbeelden van emoticons staan in tabel 2.3.

Emoticon Bijbehorende emotie :) blij

:D heel blij :( verdrietig :s sceptisch :o verbaasd

Tabel 2.3: Verschillende emoticons met hun bijbehorende emoties. Emoticons komen veel voor in tweets. Een reden hiervoor kan zijn dat tweets kort zijn en een emoticon heeft de mogelijkheid een emotie heel beknopt weer te geven. Ook in politiek gekleurde tweets komen emoticons voor. Figuur 2.8 is een voorbeeld waarbij het sentiment meteen duidelijk is aan de hand van de emoticon.

(19)

fea-Figuur 2.8: Voorbeeld waarin een emoticon duidelijk het sentiment weergeeft. ture voor emoticons toe. We doen een experiment waaruit het effect van de emoticon-feature op de prestatie van de sentimentanalyse blijkt.

2.6

Aantal features beperken

Het gebruik van deze features brengt consequenties met zich mee. Elk fea-ture wordt omgeschreven naar een variabele in de classificatieberekening. Een toename van features resulteert in een toename van variabelen en daardoor in een grotere complexiteit van het systeem. Tevens resulteert uitbreiding van de trainset in een grotere complexiteit. Een grotere trainset vergroot de kans op nieuwe woorden en dus nieuwe features. Als derde oorzaak voor vergroting van de complexiteit noemen we spelfouten in tweets. Niet alle tweets bestaan uit nette Nederlandse taal zonder spelfouten, hier moet rekening mee gehouden worden. Ook is er een vorm van jargon op internet waarbij woorden compleet anders worden gespeld dan oorspronkelijk. Een voorbeeld hiervan is “w88” in plaats van “wachten”. Tweets bevatten gemiddeld meer spelfouten dan andere geschreven teksten (Go, Huang, and Bhayani, 2009). Te verwachten is dat een eenduidige spelling voor dezelfde woorden resulteert in een hogere sentiment-analyseprestatie. Er zijn in dat geval namelijk meer overeenkomstige woorden in de test- en trainset. We gebruiken een aantal filters en optimalisatiemethodes om de complexiteit en de rekenintensiveit te minimaliseren, deze zullen we nu bespreken.

2.6.1

Sparse notering

Een tweet kan maximaal 140 tekens bevatten, dat resulteert in een uiterste maxi-mum van 70 BoW-features. Een geschatte gemiddelde Nederlandse Twitter-woordlengte van 4,8 (Twittermania, 2011) resulteert in gemiddeld 24,3 features per tweet.

x = het aantal woorden in een tweet l = gemiddelde woordlengte tweets = 4, 8 x − 1 = het aantal spaties in een tweet

x · l + (x − 1) = 140 x = 24, 3

Er zijn duizenden verschillende features mogelijk bij sentimentanalyse, maar ´

(20)

tweet

CDA samen kunnen we meer featurevector in Sparse − vorm

(CDA, 1), (samen, 1), (kunnen, 1), (we, 1), (meer, 1)

2.6.2

Featurefrequentiethreshold

Een methode om de het aantal features te verminderen, is het gebruik van een minimale frequentiethreshold van de woorden. Zonder een threshold wor-den woorwor-den als feature gebruikt wanneer een woord ook maar ´e´en keer voor-komt. Met een threshold worden woorden alleen als feature gebruikt wanneer het woord minimaal zo vaak voorkomt als de ingestelde threshold. Het verho-gen van de threshold zal resulteren in een kleiner aantal features. Het weglaten van features betekent ook dat er informatieverlies op treedt. Het is mogelijk dat nuttige informatie verloren gaat waaronder Hapax Legomena, woorden die eenmalig voorkomen in een corpus. Wiebe, Wilson, Bruce, Bell, and Martin (2004) laten zien dat eenmalig voorkomende woorden subjectiviteit weergeven met een grote nauwkeurigheid. Aan de andere kant biedt het overslaan van weinig voorkomende woorden het algoritme meer mogelijkheid om te leren van frequent voorkomende features, welke tevens vaker voorkomen bij de testdata. Dit pleit voor een betere score op sentimentanalyse. We gaan een experiment doen waarbij we alleen de threshold varie¨eren, hieruit kunnen we concluderen wat het effect is van de threshold op de prestatie van de analyse.

2.6.3

Featuretypeclustering

(21)

De waarde van het feature wordt verhoogd met ´e´en bij een positief sentiment woord, bij een negatief sentimentwoord wordt er ´e´en vanaf gehaald.

2.6.4

Stopwoorden

Het Nederlands bevat een serie woorden die voornamelijk gebuikt worden om zinnen goed te laten lopen, zogenaamde stopwoorden. In tegenstelling tot duide-lijke sentimentwoorden is bij deze woorden geen spoor van sentiment te vinden. Het voorkomen van een stopwoord in een tweet op zich, is daarom niet interes-sant voor het onderzoek. We kiezen daarom om stopwoorden volledig buiten beschouwing te laten. Er zijn daarom minder woorden en dus features aanwezig in het model. Dit resulteert in een minder complexe en daardoor snellere re-kentaak. De lijst met stopwoorden die we gebruiken, hebben we verkregen van Depercon (2012).

Een aantal voorbeelden van stopwoorden zijn • of • om • dat • de • en

2.6.5

Hoofdletters

Normaliter beginnen een aantal woorden met een hoofdletter in het Nederlands, voorbeelden hier van zijn namen, het begin van een zin en aardrijkskundige na-men. In Twitterberichten worden hoofdletters ook gebruikt voor extra nadruk, voor de sier, of komt het voor als spelfout. Zie figuur 2.9.

Figuur 2.9: Bijzonder hoofdletter gebruik.

Een methode om het aantal features te verminderen en daardoor de frequen-tie van een feature te verhogen, is het omschrijven van alle hoofdletters naar kleine letters. In het hypothetische geval dat elk woord zowel met als zonder eerste hoofdletter voorkomt in het corpus, zou het corpus en dus het aantal features met de helft verminderd kunnen worden.

Tokenizeren

(22)

“super - stom”. Op deze manier komen meer woorden met elkaar overeen en daarom wordt het aantal features minder en de featurefrequentie hoger.

2.6.6

Retweets

Bepaalde gebeurtenissen zijn voor een groot aantal mensen interessant. Twitter geeft de mogelijkheid om tweets van een andere gebruiker door te sturen door middel van een retweet. Hierbij wordt de oorspronkelijke tweet doorgestuurd door de gebruiker, zo kunnen gebruikers bijvoorbeeld belangrijke gebeurtenissen makkelijk delen. Het is mogelijk om de retweet iets aan te passen, waardoor de tweet niet exact gelijk is aan het origineel. In de experimenten die we doen in dit onderzoek maken we gebruik van 2342 geannoteerde tweets. Om te voorko-men dat we testen op een tweet die exact gelijk is aan een tweet dat voorkomt in de trainset, verwijderen we de retweets. Wanneer we dit niet doen zal het model namelijk een perfecte score halen op deze retweets omdat deze tweets ook beschikbaar zijn in de trainingsdata. Het verwijderen van retweets brengt echter ook verlies aan informatie met zich mee. Doordat het model vaker aan-geboden krijgt dat de aanwezigheid van bepaalde features moeten resulteren in een bepaalde classificatie van een tweet, zal het model deze features een grotere gewichtigheid toe bedelen. Het verwijderen van de retweet zorgt ervoor dat dit effect verdwijnt.

2.6.7

Dubbele letters

Zoals gezegd worden er spelfouten gemaakt in tweets (Go et al., 2009). Deze spelfouten zorgen voor extra spellingsvariaties van woorden, waardoor er meer verschillende unieke woorden zijn. Er is op Twitter een modeverschijnsel om woorden met opzet fout te spellen, zie figuur 2.10.

Figuur 2.10: Tweet waarbij met opzet een spelfout zit in het woord fail Men gebruikt aan het eind van een woord extra veel letters. Soms worden letters extra vaak herhaald. Vanwege het speciale jargon dat soms gebruikt wordt in tweets, werkt een automatische spellingchecker niet altijd even goed. Om het gedeelte van de fouten met meervoudige letters af te vangen hebben we de volgende regels bedacht.

regel 1) Als een letter vaker dan twee keer achter elkaar voorkomt, verwijder dan de derde en volgende voorkomens. regel 2) Als een medeklinker twee keer achter elkaar voorkomt aan het eind van een woord, verwijder dan 1

(23)

Op deze manier zijn de fouten uit het voorbeeld in figuur 2.10 verholpen. Deze twee regels maken deel uit van onze volledige optimalisatiemethode die we gaan gebruiken.

2.7

Automatische data-annotatie

Het corpus met ongeannoteerde data bestaat uit meer dan ´e´en miljard tweets, dit aantal groeit dagelijks. Van dit enorme aantal tweets hebben we slechts 2386 geannoteerde tweets gebruikt. Banko and Brill (2001) beschrijven dat een gro-tere dataset met een grote waarschijnlijkheid resulteert in een hogere prestatie van de sentimentanalyse. Een mogelijkheid is om met de hand meer data te annoteren maar dit is een zeer tijdrovende zaak, zeker als gaat om een grote data toename met een factor 10 of 100. Blum and Mitchell (1998) beschrijven dezelfde probleemstelling van veel data, maar weinig annotatie, ze introduceren daarom de techniek co-training.

De essentie van co-training is het annoteren van ongeannoteerde data met be-hulp van modellen getraind met geannoteerde data. We voeren co-training uit door de gehele trainset in twee¨en te delen, namelijk de trainset A en trainset B met elk 500 tweets, zie tabel 2.4.

set aantal tweets geannoteerd A 500 ja B 500 ja 1 250 nee 2 250 nee

trainset testset verkregen annotatie A 1 A1

B 2 B2

Tabel 2.4: Werking van cotraining met datasets A, B, 1 en 2

Vervolgens laten we het memory-based leermodel voor beide sets apart le-ren en laten we het 250 ongeannoteerde tweets classificele-ren. Het totaal aantal geannoteerde tweets is nu 1500 in plaats van 1000. Aan de hand van de sen-timentanalyseprestaties voor een totale set van 1000 en 1500 bekijken we het effect van co-training op onze data.

(24)

set aantal tweets geannoteerd A 500 ja B 500 ja 1 250 nee 2 250 nee 1A 250 ja 2B 250 ja

trainset testset verkregen annotatie A + 2B 1 1AB2 B + 1A 2 2B1A

Tabel 2.5: Werking van cotraining met datasets A, B, 1, 2, 1A en 2B Het aantal tweets waarmee het model leert is nu 750 in plaats van 500, dit zou kunnen resulteren in een betere classificatie van de ongeannoteerde data. Een ander inzicht is dat bij het annoteren van de ongeannoteerde data kennis gebruikt wordt uit set A en set B. Uit het eerste experiment wordt slechts kennis uit ´e´en van beide sets gebruikt. Deze diepere vorm van co-training heeft echter alleen kans van slagen als de eerste vorm tot een goed resultaat komt, wanneer dit niet het geval is wordt er immers doorgerekend met de gemaakte fout in het eerste deel.

2.8

T-toets

We willen graag inzicht in de kennis die Timbl gebruikt voor de analyse. Daar-voor gebruiken we de t-toets (Church, Gale, Hanks, and Hindle, 1991). De fre-quentieverschillen van features met betrekking tot positieve en neutrale tweets worden zichtbaar bij het uitvoeren van de t-toets. De uitslag van de toets laat namelijk zien welke woorden vaak voorkomen in de bepaalde klasse, zo is te zien welke woorden een groot aandeel hebben in de polariteit van een tweet. We hopen met deze toets woorden te vinden die duidelijk het sentiment van een tweet weergeven, voorbeelden van deze woorden zijn

• geweldig • vertrouwen • bangmakerij • dom

• faal

(25)

t − toets = √#neu − #neg #neu + #neg

Deze t-toets doen we voor elk woord in de dataset en daardoor hebben we op deze manier inzicht in de data. We mogen er niet vanuit gaan dat in corpora alle klassen evenveel voorkomen, in ons geval zijn er bijvoorbeeld veel meer neutrale tweets dan negatieve tweets. Voor een eerlijke vergelijking van woorden in beide sentiment klassen voegen we een normalisatiefactor toe. Met deze factor kunnen woorden in de negatieve en neutrale klassen direct vergeleken worden omdat we rekening houden met de verhouding neutrale en negatieve tweets. De berekening gaat als volgt:

t − toets = (#neu · norm) − #neg p(#neu · norm2) + #neg)

De normalisatiefactor wordt berekend door het aantal negatieve woorden uit de dataset te delen door het totaal aantal neutrale/positieve woorden uit de dataset.

norm.f act = #neg woorden #neu/pos woorden

2.9

Voorspellen verkiezingsuitslag

(26)

Hoofdstuk 3

Resultaten

In dit hoofdstuk bespreken we de resultaten van de experimenten met verschil-lende features en optimalisaties in de vorm van prestatie van de sentiment-analyse. De features en optimalisaties houden verband met elkaar. Door een optimalisatie kan een feature meer of minder effect hebben op de prestatie van de sentimentanalyse. Omwille van de onderzoekstijd kunnen we niet alle mo-gelijke combinaties van features en optimalisaties te testen. Daarom maken we een bepaalde keuze in volgorde van testen. Als eerste geven we de baselinere-sultaten, vervolgens beginnen we met de experimenten. Als eerste doen we een experiment in de meest simpele vorm, slechts de features van Bag of Words. Vervolgens testen we de optimalisaties van de data. De overige features testen we nadat we de optimalisaties hebben toegepast, met een zo beknopt moge-lijke dataset. Stopwoorden, hoofdletters, retweets zijn dan reeds uitgefilterd, ook hebben we een featurefrequentiethreshold ingesteld. Op deze manier is het testen zo min mogelijk rekenintensief. Voor alle experimenten geldt dat we de standaard Timbl-instellingen gebruiken waarbij de k -waarde op ´e´en staat. Alle experimenten doen we met de datasets beschreven in tabel 2.1. We gebruiken set A+B+C van 2000 unieke tweets om te trainen en de set van 325 unieke tweets om te testen, tenzij we anders vermelden. Als laatste zullen we ook nog de methode Leave One Out gebruiken als test- en traindata. In de tabellen wor-den de resultaten beschreven in percentages, het aantal features uitgezonderd. De theoretische maximum score voor accuraatheid, precisie, recall en Fscore is 100 %. Regelmatig noemen we ook het aantal features dat gebruikt in de bere-kening, dit is een absoluut aantal. We proberen een verhoging van de Fscore te bewerkstelligen, maar tevens is de verkleining van het aantal features ook van belang. Een kleiner aantal features zorgt voor minder complexe berekeningen, hetgeen resulteert in een snellere en dus meer effici¨ente sentimentanalyse.

3.1

Baseline

(27)

baseline accuraatheid 76.31

precisie 66.67 recall 2.56 Fscore 4.94

Tabel 3.1: Baselinescore waarbij tweets met de term ‘#fail’ als negatief worden geclassificeerd.

3.2

Bag of Words

Als eerste gebruiken we Bag of Words als features. Dit is de eerste stap die we moeten maken om te kunnen testen, zonder features kunnen we geen analyse doen. De resultaten staan in tabel 3.2.

features BoW # features 10878 accuraatheid 79.38 precisie 78.95 recall 19.23 Fscore 30.39

Tabel 3.2: Resultaten van experiment met Bag of Words features met trainset A+B+C en een testset van 325 tweets.

De accuraatheid en precisie liggen dicht bijelkaar, recall is een stuk lager. Dit betekent dat de gevonden negatieve tweets voor het grootste deel correct waren, maar er is slechts een klein deel van alle negatieve tweets gevonden. Dit resulteert in de Fscore van 30.39 %. Van hieruit hebben we verdere experimenten gedaan.

3.3

Stopwoorden

Met het verwijderen van de stopwoorden verkleinen we de dataset en het aantal features met de verwachting dat de prestaties van de analyse niet omlaag gaan. Tabel 3.3 geeft aan hoeveel woorden de dataset A+B+C bevat en hoeveel daar van overblijven na het uitfilteren van de stopwoorden. Dit is een vermindering van 27 %.

totaal aantal woorden origineel 40241

zonder stopwoorden 29210

Tabel 3.3: Het aantal woorden in de set A+B+C van 2000 tweets met en zonder stopwoorden.

(28)

BoW BoW zonder stopwoorden # features 10878 10746 accuraatheid 79.38 79.08 precisie 78.95 77.78 recall 19.23 17.95 Fscore 30.39 29.17

Tabel 3.4: De sentimentanalyse prestatie met en zonder filtering van stopwoor-den. De Fscore neemt af met 1.22 %.

De prestatie van Bag of Words zonder filteren van stopwoorden is iets hoger dan wanneer stopwoorden worden weg gelaten. Het verschil uitgedrukt in de Fscore is 1.22 %. Waarschijnlijk is er iets aan nuttige informatie verloren gegaan bij het uitfilteren van de stopwoorden. Daarover staat tegenover dat gebruikte dataset in grootte is afgenomen met 27 %.

3.4

Hoofdletters

We hebben voor dataset A+B+C van 2000 tweets alle hoofdletters omgeschre-ven naar kleine letters. In tabel 3.5 is te zien dat het aantal unieke woorden is verminderd met 7 %. Daarna hebben we een experiment gedaan waarbij slechts de Bag of Words gebruikt wordt met een naar kleine letters omgeschreven da-taset. De resultaten hiervan staan in tabel 3.6.

filtering aantal unieke woorden origineel 11490

kleine letters 10648

Tabel 3.5: Het aantal unieke woorden in set A+B+C van 2000 tweets in originele staat en wanneer alles omgeschreven is naar kleine letters. Door alles om te schrijven naar kleine letters zijn er minder verschillende features.

BoW BoW zonder hoofdletters # features 10878 9862 accuraatheid 79.38 80.00 precisie 78.95 72.41 recall 19.23 26.92 Fscore 30.39 39.25

Tabel 3.6: De sentimentanalyseprestatie met en zonder omschrijven van hoofd-letters. De Fscore wordt aanzienlijk hoger door hoofdletters om te schrijven, het neemt toe met 8.86 %.

(29)

3.5

Dubbele letters

We hebben voor wederom testset A+B+C van 2000 tweets ´e´en optimalisatie getest. Alle letters die vaker dan twee keer voorkomen hebben we omgeschreven zoals beschreven in de twee regels in paragraaf 2.6.7. De resultaten staan in tabel 3.7.

BoW BoW zonder extra dubbele letters # features 10878 10863 accuraatheid 79.38 79.08 precisie 78.95 77.78 recall 19.23 17.95 Fscore 30.39 29.17

Tabel 3.7: De sentimentanalyseprestatie met en zonder extra dubbele letters. Het filteren van extra dubbele letters resulteert in een daling van 1.22% van de Fscore.

De Fscore is bij deze testopstelling verminderd van 30.39 % naar 29.17 %. Het aantal features met filtering is lager, maar tevens zijn alle resultaten ook iets lager. Tijdens de ontwikkelingsfase van het onderzoek hebben we een ver-gelijkbaar experiment gedaan, maar dan met gebruik van Leave One Out. Het effect bij dat experiment was een verbetering van 0.20 % van de Fscore bij het gebruik van de filtering. Voor testset A+B+C met slechts Bag Of Words is filtering van extra dubbele letters niet effectief, maar voor andere datasets en testmethoden kan dit anders zijn. Omdat deze manier van filteren een vorm van spellingscorrectie is, nemen we het wel mee in de rest van het onderzoek ondanks de slechtere score in dit experiment.

3.6

Featurefrequentiethreshold

Als laatste optimalisatiemethode testen we wat het effect is van het vari¨eren van de featurefrequentiethreshold. Wanneer deze threshold achterwege wordt gelaten, gebruiken we als features alle woorden die ´e´en keer of vaker voorkomen. Tabel 3.8 geeft de resultaten waarbij we de threshold instellen van ´e´en tot tien. Voor dit experiment hebben we wederom gebruik gemaakt van trainset A+B+C van 2000 tweets. De testset bestaat uit 325 tweets.

(30)

threshold 1 2 3 4 5 #features 10878 3207 1869 1309 987 accur. 79.38 64.00 68.00 70.46 70.80 precisie 78.95 36.17 39.34 41.26 42.48 recall 19.23 65.38 61.54 60.26 61.54 Fscore 30.93 46.58 48.00 49.47 50.26 threshold 6 7 8 9 10 #features 816 709 631 551 492 accur. 68.31 67.38 68.31 69.85 68.92 precisie 38.94 37.93 39.13 40.91 39.25 recall 56.41 56.41 57.69 57.69 53.85 Fscore 46.07 45.36 46.63 47.87 45.41

Tabel 3.8: De sentimentanalyse score van verschillende waardes voor de featu-refrequentiethreshold. Uitgevoerd met trainset A+B+C op de testset van 325 tweets. Een threshold van vijf geeft in dit experiment het beste resultaat.

3.7

Optimalisaties samen

We hebben nu de optimalisaties afzonderlijk besproken. Voordat we overgaan tot het testen van extra features hebben we een experiment gedaan waarbij we alle beschreven optimalisaties hebben uitgevoerd. In dit experiment hebben we ook de namen van Twittergebruikers verwijderd, in alle voorgaande experimen-ten was dit nog niet het geval. In 3.9 staan de resultaexperimen-ten van dit experiment waarbij we enkel BoW met en zonder gebruikersnamen testen. Daarnaast staan de resultaten van het experiment met alle optimalisaties met en zonder gebrui-kersnamen.

BoW BoW optimalisaties optimalisaties zonder namen zonder namen feat. 10878 9995 1245 1118 accur. 79.38 64.92 69.72 68.92 precisie 78.95 28.57 41.76 39.45 recall 19.23 30.77 66.41 55.13 Fscore 30.39 29.63 51.28 45.99

Tabel 3.9: Scores van de optimalisaties samen, in vergelijking met BoW. Beide experimenten zijn met en zonder gebruikersnamen uitgevoerd. Alle optimalisa-ties samen met behoud van gebruikersnamen scoort het hoogste.

(31)

hun stemvoorkeuren zijn tijdsgebonden, daarom willen we geen kennis halen uit de gebruikersnamen.

3.8

Featureclustering

Voor het clusteren van features hebben we features nodig die extern toegevoegd zijn. Voorbeelden hiervan zijn sentimentwoorden, scheldwoorden en emoticons. We zullen in dit voorbeeld gebruik maken van sentimentwoorden. Eerst doen we een experiment waarbij we voor alle 1152 sentiment woorden apart een feature toevoegen. Vervolgens vergelijken we de resultaten met een experiment waarbij alle sentiment woorden samen worden genomen in ´e´en feature. Alle optimalisa-ties zijn gebruikt behalve de featurefrequentiethreshold. Deze threshold zorgt er namelijk voor dat sentimentwoorden ongeclusterde vorm pas meetellen als ze minimaal vier keer voorkomen. Daarom gebruiken we een featurefrequentie-threshold van ´e´en wat overeenkomt met het weglaten van de threshold. In tabel 3.10 staan de resultaten van de twee experimenten met allebei een threshold van ´e´en.

aparte features clustering #features 8747 7846 accuraatheid 66.15 65.85 precisie 38.06 37.59 recall 65.38 64.10 Fscore 48.11 47.39

Tabel 3.10: Resultaten van twee experimenten waarbij sentimentwoorden op verschillende manieren zijn toegevoegd als feature. De featurefrequentiethres-hold staat op ´e´en.

Het clusteren van de sentimentwoordenfeatures scheelt 899 features in de berekening, de accuraatheid en de precisie stijgen licht in het voordeel van clus-tering. Het verlies vinden we bij de recall. De prijs die betaald moet worden voor het clusteren zien we samengevat terug in het verschil van de Fscore. Wanneer het aantal features in de berekening en dus de rekenintensiteit niet uitmaakt, zou het beter zijn om niet te kiezen voor featureclustering.

3.9

Toevoegen van features

(32)

features sentiment scheld emoti woorden woorden cons #feat. 1119 1119 1119 accur. 67.38 69.23 68.92 precisie 37.50 40.18 39.45 recall 53.85 57.67 55.13 Fscore 44.21 47.37 45.99

Tabel 3.11: Resultaten van drie experimenten waarbij de extra features apart worden getest. De dikgedrukte resultaten zijn de hoogste scores. In totaliteit presteert scheldwoorden als extra feature het beste.

scheldwoorden en emoticons gebruiken, de twee beste individuele features. De resultaten van deze twee nieuwe combinaties staan in tabel 3.12.

features scheldw. & combinatie emoticons van alle 3 #feat. 1120 1121 accur. 68.62 68.31 precisie 39.09 38.74 recall 55.13 55.13 Fscore 45.74 45.50

Tabel 3.12: Resultaten van twee verschillende combinaties uit tabel 3.11. Scheldwoorden gecombineerd met emoticons scoren beter de een combinatie van alle drie. Scheldwoorden alleen scoren het beste met een Fscore van 47.37, zie tabel 3.11.

De combinatie van slechts scheldwoorden en emoticons als feature blijkt dus beter te presteren op onze datasets dan een combinatie waarbij ook sentiment-woorden worden meegenomen. Alle verdere variabelen en optimalisaties van tabel 3.11 en tabel 3.12 zijn hetzelfde, daarom kunnen de resultaten ´e´en op ´e´en vergeleken worden. We kunnen concluderen dat slechts de extra scheldwoor-denfeature het beste presteert. Hierbij moeten we opmerken dat deze conclusie geldt voor onze datasets, er is geen garantie dat dit voor elke dataset geldt.

3.10

Vari¨

eren grootte trainingbestand

(33)

Figuur 3.1: Opdeling in tien verschillende groottes op de eerste manier trainset 100 200 300 400 500 accur. 75.33 76.67 76.67 36.00 38.87 precisie 100 100 81.82 27.45 28.34 recall 3.90 9.09 11.69 90.91 90.91 Fscore 7.51 16.67 20.46 42.17 43.21 trainset 600 700 800 900 1000 accur. 41.00 44.67 47.67 48.00 67.33 precisie 29.34 30.04 31.13 31.28 38.70 recall 92.21 87.01 85.71 85.71 46.75 Fscore 44.52 44.66 45.67 45.83 42.35

Tabel 3.13: Resultaten van tien experimenten waarbij slechts de grootte van de trainset varie¨ert. De sets zijn een subset van de grotere set. Er is een sterke daling van de recall bij de sets van 900 naar 1000 tweets. De Fscore loopt op met het vergroten van de dataset, de accuraatheid neemt juist af.

(34)

dat er af en toe nieuwe tweets bijkomen die de score iets verlagen.

Wat opvalt aan de tabel is dat bij een grotere dataset de Fscore oploopt, maar de accuraatheid juist daalt. Hier is een mogelijke verklaring voor. Als eerste noemen we de accuraatheid bij een trainset van 100 tweets, deze is 75.33 %. De testset bestaat voor 76 % uit positieve tweets, dat zou kunnen betekenen dat bijna alle tweets als positief/neutraal bestempeld zijn door Timbl. Het gevolg hiervan is dat de Fscore laag is omdat deze berekend wordt aan de hand van goed bepaalde negatieve tweets. Een bijna volledige positief/neutraal bepaling kan het gevolg zijn van de ongebalanceerde dataset, waardoor slechts de kwanti-tatieve eigenschap van de set gebruikt is. Een grotere set resulteert in het leren van eigenschappen van features, dit verklaart de stijging in Fscore. De daling van de accuraatheid kan verklaard worden doordat een groeiend aantal tweets dat verkeerd geclassificeerd wordt.

Tevens hebben we experimenten gedaan waarbij de 1000 tweets op een an-dere manier ingedeeld zijn in tien trainsets. Voor elke trainset hebben random een greep gedaan uit alle 1000 tweets, dit is visueel weergegeven in figuur 3.2. Vervolgens hebben we experimenten gedaan waarbij we de prestaties op basis van deze tien trainsets vergeleken, zie tabel 3.14.

Figuur 3.2: Opdeling in tien verschillende groottes op de tweede manier In dit experiment scoort de trainset van 600 tweets het beste, namelijk een Fscore van 43.37 %. Naarmate het grootte van de trainset toeneemt fluctueert de Fscore behoorlijk. Uiteindelijk haalt het experiment met de trainset van 1000 tweets bijna hetzelfde resultaat als de beste trainset. Sommige tweets zijn heel nuttig voor het leeralgoritme, andere tweets resulteren juist in een lagere score. Doordat we steeds een random greep uit alle 1000 tweets gedaan hebben is er geen mooi verloop zoals in tabel 3.13. Ondanks dit effect kunnen we zeggen dat de trainset in ieder geval niet te klein moet zijn.

3.11

Leave One Out

(35)

trainset 100 200 300 400 500 accur. 74.67 76.33 76.67 40.00 78.33 precisie 100 100 73.33 27.9 87.5 recall 1.30 7.80 14.29 84.42 18.18 Fscore 2.57 14.47 23.92 41.94 30.11 trainset 600 700 800 900 1000 accur. 68.67 68.33 74.00 76.00 67.33 precisie 40.45 33.93 48.89 59.26 38.7 recall 46.75 24.68 28.57 20.78 46.75 Fscore 43.37 28.58 36.06 30.77 42.35

Tabel 3.14: Resultaten van tien experimenten waarbij slechts de grootte van de trainset varie¨ert.De sets zijn een random selectie uit de set van 1000 tweets. waarbij we Leave One Out gebruiken met A+B+C als dataset van 2000 tweets, deze zijn weergegeven naast de resultaten van het experiment met een aparte train en testset. We hebben de experimenten uit tabel 3.11 en tabel 3.12 her-haald met Leave One Out als testmethode, zie tabel 3.15.

features sentimentwoorden scheldwoorden test 325 LOO 325 LOO precisie 37.50 60.26 40.18 61.30 recall 53.85 60.70 57.69 59.24 Fscore 44.21 60.48 47.37 60.25 features emoticons scheldw+emotic. test 325 LOO 325 LOO precisie 39.45 60.96 39.09 60.32 recall 55.13 59.10 55.13 59.53 Fscore 45.99 60.01 45.74 59.93 features combinatie alle 3

test 325 LOO precisie 38.74 59.83 recall 55.13 60.70 Fscore 45.50 60.26

Tabel 3.15: Resultaten van vijf experimenten waarbij getraind is met A+B+C. De resultaten van het Leave One Out kunnen vergeleken worden met een die van de eerder gebruikte testset uit tabel 3.11 en 3.12.

(36)

3.12

Co-training

Het experiment met co-training bevat automatisch geannoteerde data uit tabel 2.4. De resultaten van het experiment staan in tabel 3.16. Ter vergelijking staan de resultaten van trainset A+B zonder co-training, naast de resultaten van de co-trainset A+B+A1+B2. De experimenten zijn gedaan met alle features en optimalisaties.

trainset A A+A1 A+B2 accur. 38.3 33.7 46.7 precisie 27.3 27.2 28.6 recall 94.9 97.4 79.5 Fscore 42.4 41.3 42.0 trainset B B+B2 B+A1 accur. 41.7 66.0 57.3 precisie 27.8 30.8 30.8 recall 89.7 32.1 62.8 Fscore 44.4 31.5 41.4 trainset A+B A+B+A1+B2

accur. 51.3 58.7 precisie 31.2 33.1 recall 85.9 69.2 Fscore 45.7 44.8

Tabel 3.16: Resultaten van experimenten met verschillende trainsets, allemaal getest op dezelfde testset van 325 tweets. Set A1 en B2 zijn verkregen door automatische annotatie.

We zien dat de Fscore van de originele trainset (A+B) hoger is dan de co-trainset (A+B+A1+B2). Het gebruik van co-training levert in deze situatie geen winst, maar juist verlies in de prestatie van sentimentanalyse. Opmerkelijk is wel dat de accuraatheid en de precisie omhoog gaan door co-training, de recall daalt echter harder waardoor de Fscore ook daalt.

3.13

T-toets

We hebben 2325 tweets gebruikt van dataset A+B+C samen met de testset van 325 tweets. Alvorens de t-toets uit te voeren hebben we eerst de optimalisaties en filtermethoden toegepast. In tabel 3.17 staan de tien woorden met de hoogste t-toetsscore van de neutrale tweets. In tabel 3.20 staan de negatieve woorden.

(37)

neutraal score kies 6.6 maart 5.6 #ps2011 4.3 toekomst 4.2 vanavond 3.8 verschil 3.5 uur 3.2 maakt 2.9 morgen 2.9 den 2.9

Tabel 3.17: Woorden uit neutrale tweets met de hoogste t-toetswaarde. beslissende uur, kies ...”.

negatief score wind 6.7 fietstocht 6.1 pvv’ers 5.7 weerhoudt 4.8 liever 4.4 banen 4.2 tegenwind 4.1 bomen 4.0 sharia 3.5 islam 3.3

Tabel 3.18: Woorden uit negatieve tweets met de hoogste t-toetswaarde. Uit de negatieve tweets valt op dat het bijna alle woorden van de volgende tweet bevat: “Wind weerhoudt PVV’ers van fietstocht”. Dit bericht, met even-tueel extra commentaar, komt veel voor in de dataset. Het is opvallend dat een tweet zo duidelijk terug te vinden is met de t-toets. Dit resulteert in de vraag of de gebruikte dataset wel geschikt is, omdat er misschien een te grote onba-lans in verschillende onderwerpen is. De slagzin van de VVD is ook terug te vinden, namelijk “Liever meer banen dan bomen”. De woorden ‘liever’, ‘banen’ en ‘bomen’ vinden we terug in de top tien van de t-toets. Voor de rest is het opvallend dat ‘sharia’ en ‘islam’ met name voorkomen in negatieve tweets, dit duidt erop dat deze woorden met name in negatieve zin voorkomen.

3.14

Verkiezingsuitslag

(38)

verkiezingsuitslag te berekenen. Het verschil tussen het onderzoek van Tjong & Bos en dit onderzoek is dat we nu gebruik maken van een volledig geannoteerde dataset. We hoeven daarom geen gebruik te maken van zogenaamde sentiment-gewichten waarmee de verhouding tussen de negatieve en neutrale/positieve tweets aangegeven worden. Automatische sentimentanalyse is gebruikt om het sentiment van tweets te bepalen. Daarna konden negatieve tweets worden ver-wijderd uit het corpus. Vervolgens hebben we het populatiegewichtmodel van Tjong & Bos gebruikt om het verschil tussen de demografie van Twittergebrui-kers en de stemgerechtigden op te heffen. Het populatiegewicht wordt als volgt berekend:

populatiegewicht =

# zetels partij totaal # zetels # pos/neu tweets # totaal pos/neu tweets

Met het gecompenseerd aantal tweets ten behoeve van de populatie, kun-nen we de voorspelling van de verkiezingsuitslagen geven. Tevens zullen we de resultaten uit het onderzoek van Tjong Kim Sang and Bos (2012) vermelden. Aangezien de de Provincialestatenverkiezing in 2011 plaatsvond, kunnen we de voorspellingen vergelijken met de definitieve uitslag. De resultaten staan in tabel 3.19.

Partij Uitslag Tjong Sentiment-& Bos analyse VVD 16 14 13 PVDA 14 16 15 CDA 11 8 9 PVV 10 10 9 SP 8 6 6 D66 5 8 7 GL 5 3 4 CU 2 3 3 50plus 1 2 2 SGP 1 2 3 PvdD 1 2 3 verschil 0 18 18

Tabel 3.19: Resultaten uitgedrukt in zetels van verkiezingsvoorspellingen van de provincialestatenverkiezing in 2011, vergeleken met de echte resultaten van de verkiezing. De resultaten van sentimentanalyse zijn van ons onderzoek.

Het totale verschil in zetels is genoemd onderaan tabel 3.19, deze afwijking is voor beide onderzoeken gelijk. Als we kijken naar onze resultaten zien we de grootste afwijking bij de VVD; dertien in plaats van zestien zetels, een verschil van drie zetels. Voor de rest valt met name op bij de kleine partijen dat de voorspelling van het aantal zetels te hoog is. We tonen nu nogmaals de resulta-ten, maar dan uitgedrukt in percentages van het totaal aantal zetels, zie tabel 3.20.

(39)

Partij Uitslag Tjong Sentiment-& Bos analyse VVD 19.6 17.3 16.5 PVDA 17.3 20.8 19.3 CDA 14.1 11.0 11.5 PVV 12.4 13.3 12.0 SP 10.2 8.5 8.6 D66 8.4 10.1 9.7 GL 6.3 4.8 5.0 CU 3.6 4.0 4.6 50plus 2.4 3.1 3.3 SGP 2.4 3.1 4.1 PvdD 1.9 2.7 3.9 verschil 0 17.4 18.0

(40)

Hoofdstuk 4

Discussie

Aan de hand van alle experimenten die gedaan zijn, ontstaan er allerlei vragen en opmerkingen welke we willen bespreken. Allereerst kijken we naar de ge-bruikte methodes, technieken en optimalisaties uit dit onderzoek. Vervolgens kijken we naar de datasets die we gebruikt hebben. We besluiten met nieuwe mogelijkheden en inzichten die interessant zijn voor verder onderzoek op het gebied van sentimentanalyse.

4.1

Features

Veruit het grootste gedeelte van de features bestond uit Bag of Words features. Deze features zorgen er voor dat bij de analyse er vergeleken wordt op inhoud, zonder dat het programma hoeft te begrijpen wat een woord betekent. Het gebruik van Bag of Words geeft meteen een redelijke beginscore om verder mee te werken, daarom lijkt de keuze voor Bag of Words een verstandige. De drie types features die we extra hebben gebruikt zijn sentimentwoorden, scheldwoorden en emoticons. Hieruit blijkt duidelijk dat scheldwoorden het beste effect hebben op de prestaties van de sentimentanalyse. Er zijn een aantal redenen die dit effect kunnen geven. Als eerste zijn er het aantal instanties van een featuregroep, zie tabel 4.1.

features aantal aantal in verschillende A+B+C sentimentwoorden 1152 2015 scheldwoorden 3291 305 emoticons 114 70

Tabel 4.1: Aantal verschillende features per featuretype. Er zijn het meeste verschillende scheldwoorden, terwijl sentimentwoorden het meeste voorkomen in de set A+B+C.

(41)

voor-komens in de dataset komt niet overeen met de verhoging van de sentiment-analyseprestaties. We kunnen voorzichtig concluderen dat scheldwoorden meer sentimentwaarde bevatten dan sentimentwoorden en dat daarom scheldwoorden als feature het meest positief zijn voor de sentimentanalyseprestatie.

Een andere reden voor de effectiviteit van scheldwoorden kan zijn dat ze het minst voorkomen in combinatie met een negatievorm of met ironie. Het is zeer ongebruikelijk om iets positiefs te melden met het gebruik van een scheldwoord. Voor sentimentwoorden zijn deze mogelijkheden er wel, bijvoorbeeld: `‘Dat vind ik geen domme oplossing van partij X ´’.

De effecten die beschreven zijn gelden allen voor onze dataset. Het gebruik van testmethode Leave One Out geeft resultaten waarbij de scores zeer dicht bij elkaar liggen, daarom ontstaat de vraag wat er gebeurt met de resultaten van de features wanneer er gebruik wordt gemaakt van een andere dataset. Daarom kunnen we nu niet concluderen dat sentimentwoorden en emoticons meteen moeten worden afgeschreven.

4.2

Optimalisaties

We hebben een aantal optimalisaties toegepast om een effici¨entere analyse te kunnen doen. Het filteren van dubbele letters is een voorbeeld daarvan, zie 2.6.7. Er zijn nog tal van andere spelfouten die voorkomen in tweets waar mogelijkheden liggen. Het herstellen van spelfouten vergroot de kans op een ho-gere sentimentanalysescore, omdat het aantal unieke woorden afneemt. Tevens wordt de kans op eenzelfde woord in de dataset verhoogd. Wenselijk is een ge-automatiseerd proces waarbij alle spelfouten hersteld worden. Dit is een ander taalkundig onderwerp waar we verder geen onderzoek naar gedaan hebben. We bespreken nu de optimalisaties zoals gebruikt in dit onderzoek.

4.2.1

Stopwoorden

(42)

4.2.2

Hoofdletters

Het omschrijven van hoofdletters naar kleine letters levert een aanzienlijke ver-hoging van de sentimentanalysescore. Deze optimalisatie bevelen we aan voor verder onderzoek naar sentimentanalyse. E´en toevoeging is nog mogelijk ten aanzien van woorden die volledig in hoofdletters geschreven staan. Alvorens deze woorden om te schrijven zou er voor kunnen gekozen worden om een im-portantiefactor aan deze woorden te koppelen. In sommige tweets wordt name-lijk nadruk gelegd door een woord enkel met hoofdletters te schrijven, zie figuur 4.1.

Figuur 4.1: Tweet waarbij een woord volledig in hoofdletters nadruk krijgt.

4.2.3

Featurefrequentiethreshold

Een andere succesvolle optimalisatie is de featurefrequentiethreshold. Het effect is vergelijkbaar met het omschrijven van hoofdletters; een verkleining van de dataset en een verhoging van de sentimentanalyseprestaties. In dit onderzoek hebben we gekozen voor een threshold van vier, gebaseerd op onze dataset. Voor een grotere dataset is een hogere threshold wenselijk, voor een kleinere set een lagere threshold. Bij een grote set is een vermindering van het aantal woorden wenselijk, bij een relatief kleine set moet er zuiniger omgegaan worden met woorden die beschikken over nuttige informatie.

4.2.4

Featureclustering

Featureclustering heeft hetzelfde effect als het filteren van stopwoorden; een afname van het aantal features en een kleine afname in de sentimentanalyse-prestatie. Ondanks de afname van de prestaties zien we featureclustering als een nuttige optimalisatie. Van bepaalde type woorden is het mogelijk om alle voorkomens te tellen, in slechts ´e´en extra feature. Wij hebben er voor geko-zen om zowel positieve als negatieve instanties van een bepaalde groep als ´e´en feature weer te geven. De keuze om twee aparte features bij te houden heeft misschien een voordeel. Met ´e´en feature heffen positieve en negatieve instanties van een groep elkaar op. Wanneer een tweet evenveel negatieve als positieve instanties heeft, worden beide tegen elkaar weggestreept. Wellicht is de infor-matie van het aantal positieve of juist negatieve instanties nuttig voor een betere sentimentanalysescore.

4.2.5

Filteren van Twittergebruikers

(43)

maken van de gebruikersnamen. Wij stellen voor hier een aparte feature of module voor te ontwikkelen waarbij gebruikersnamen niet klakkeloos als Bag of Words featurewoorden worden meegenomen.

4.3

Dataset

Dit onderzoek zijn we gestart met een geannoteerde dataset van 1386 tweets. Onze eigen resultaten bevestigen andere onderzoeken waaruit blijkt dat een gro-tere dataset positief is voor de prestaties van geautomatiseerd leren (Banko and Brill, 2001). Daarom hebben we tijdens ons onderzoek nog 1000 geannoteerde tweets aan de dataset toegevoegd. We hebben zojuist de beste combinatie van features en optimalisaties besproken voor deze dataset, de vraag is echter wat er gebeurt wanneer de dataset met bijvoorbeeld een factor tien wordt vergroot. Bij de experimenten waarbij we testmethode Leave One Out hebben gebruikt, zien we een aanzienlijk hogere score van sentimentanalyse. De valkuil hierbij is ech-ter dat wanneer twee zeer gelijkende tweets voorkomen, bijvoorbeeld retweets, de klasse bepaling veel makkelijker is omdat Timbl zoekt naar een voorbeeld uit de testset die het meest lijkt. Voor een compleet eerlijke Leave One Out zouden er geen retweets of citaties mogen voorkomen in de dataset. We verwachten dat een uitbreiding van de dataset zal resulteren in een verhoging van de prestaties. Dit zien we ook terug in de resultaten van ons experimenten met verschillende trainingsgroottes.

We preferen een dataset met tweets van grote verscheidenheid aan onderwerpen en dus getweet op verschillende data. In onze data zien we dat er twee zinnen zeer veel voorkomen in negatieve tweets. Als eerste zien we een nieuwsbericht over een politieke partij, ten tweede een slagzin van een partij. De woorden gebruikt in deze zinnen komen daardoor ongewenst veel vaker voor in negatief zinsverband. Een gevarie¨erde dataset minimaliseert dit effect. Exacte retweets zijn niet opgenomen in de gebruikte dataset, maar we kunnen overwegen om zeer gelijkende tweets eveneens achterwege te laten.

4.4

Verder onderzoek

In dit onderzoek proberen we antwoord te geven op de gestelde vragen en pro-blemen, zie paragraaf 1.1. Terwijl we hier antwoorden op proberen te geven met de gekozen methodes, ontstaan er nieuwe vragen en idee¨en. Deze nieuwe suggesties zullen we per onderdeel bespreken.

4.4.1

Extra features

Het meest voor de hand liggend is de vraag of er andere features gebruikt zou-den kunnen worzou-den. Door gebruik te maken van meer informatie uit tweets, verwachten we dat het sentiment van een tweet beter te analyseren is. Er zijn tal van features mogelijk, een voorbeeld is het gebruik maken van hashtags (#) in tweets. Soms bevat een hashtag heel beknopt de duidelijke boodschap van een tweet, zie figuur 4.2.

(44)

Figuur 4.2: Twee voorbeelden van tweets waarin de hashtags het sentiment duidelijk weergeven.

gebruik van hastags bij sentimentanalyse mogelijkheden. Een mogelijkheid is om gebruik te maken van Part-of-Speech tagging. Met kennis over de woordsoorten ontstaat een meer begrijpende sentimentanalyse. Dit zijn twee voorbeelden van nieuwe features, zo zijn er nog tal van mogelijkheden om extra features toe te voegen voor sentimentanalyse.

4.4.2

Andere Machine Learning technieken

In dit onderzoek hebben we alleen gebruikt gemaakt van Timbl dat gebaseerd is op de Machine Learning techniek k -Nearest Neighbour. Voorbeelden van sen-timentanalyseprogramma’s gebaseerd op andere Machine Learning technieken zijn TinySVM en SVMLight, deze zijn gebaseerd op Support Vector Machi-nes (MachiMachi-nes, 2002),(Joachims, 1999). Het is interessant om te onderzoeken hoe de prestaties van deze programma’s zijn wanneer exact dezelfde features en optimalisaties gebruikt worden zoals in dit onderzoek.

4.4.3

Zekerheid classificatie

Het bepalen van een klasse van een object met k -NN, is gebaseerd op de klasse van de dichtstbijzijnde buren. In dit onderzoek hebben we de k -waarde op ´e´en ingesteld waardoor er geen onzekerheid in de bepaling van de klasse is. Een hogere k -waarde geeft een bepaalde onzekerheid aan de classificatie als niet alle buren van dezelfde klasse zijn. Voor verder onderzoek is het mogelijk om iets met deze onzekerheid te doen. Zo kan bijvoorbeeld de thresholdwaarde gevarie¨erd worden waardoor een object pas tot een klasse behoort als de onze-kerheidswaarde boven een bepaalde threshold komt.

4.4.4

Dataset

Een goede dataset is belangrijk voor succesvolle sentimentanalyse (Pang and Lee, 2008), daarom noemen we een aantal mogelijkheden ter verbetering van de dataset. Als eerste kijken we naar uitbreiding van de dataset. In dit onderzoek hebben we tweets gefilterd op partijnamen, een tweet wordt alleen gebruikt als er een partijnaam genoemd wordt. Er zijn echter ook tweets waarin geen politieke partij genoemd wordt, maar wel een belangrijk persoon van een partij, zie figuur 4.3.

(45)

Figuur 4.3: Tweet met een duidelijk sentiment waarin geen politieke partij genoemd wordt, maar wel een belangrijk persoon uit een partij.

Een andere mogelijkheid voor het uitbreiden van de dataset is gebruik ma-ken automatische annotatie. Wij hebben een poging gedaan met co-training, helaas leverde dit geen positief resultaat. We stellen voor om te zoeken naar andere manieren waarmee automatisch data geannoteerd kan worden. Manueel annoteren behoort ook tot de mogelijkheden, maar dat kost helaas veel tijd. In paragraaf 1.3 hebben we drie categorie¨en features gedefinieerd, ons onder-zoek richt zich op het derde type; tweets met een mening van een persoon. Omdat deze tweets de informatie bevatten waar we in ge¨ınteresseerd zijn, kun-nen we proberen om de andere types tweets te filteren om zo met een effici¨entere dataset te werken. Een mogelijkheid om onderscheid tussen de types tweets aan te brengen is het kijken naar de Twittergebruiker.

4.4.5

Extra sentimentklasse

Referenties

GERELATEERDE DOCUMENTEN

Naar aanleiding van inconsistente resultaten en de beperkingen van onderzoek op het gebied van de relatie tussen sociaal economische status en gedragsproblemen van kinderen en

The work described in this thesis was performed at the Groningen Research Institute of Pharmacy, department of Pharmacokinetics, Toxicology & Targeting and

Controleert u nog andere aspecten aan waarheidsgehalte van nieuwsberichten, anders dan het checken van de oorspronkelijke bron, of de bronnen volledig vermeld zijn in het bericht, of

Maatregelen die als perspectiefvol zijn opgenomen in de Maatlat Duurzame Veehouderij voor reductie van de ammoniakemissie (in kg NH 3 per dierplaats per jaar) uit ligboxenstallen

Omgekeerd kan onze vakgroep er voor zorgen, door in het onderwijs het totale scala van dierlijke produktiesysternen te presenteren, dat aan alle studenten in de richting

laand juni blijft het aantal groeidagen echter ngeveer gelijk. Het aantal warmte-eenheden is ij Barette onafhankelijk van de zaaidatum en bij /linarette neemt dit gemiddeld over

Daarnaast moet er echter rekening mee worden gehouden dat ozonconcentraties die geen effect hebben op produktiegewassen op den duur wel schadelijk zouden kunnen zijn voor

Alle afspraken die mondeling zijn gemaakt moeten vervolgens worden vastgelegd in een contract (L. Jordans, persoonlijke communicatie, 9 september, 2016) De stadsschouwburg,