• No results found

Publieke opinie EV's en EV laadinfrastructuur

N/A
N/A
Protected

Academic year: 2021

Share "Publieke opinie EV's en EV laadinfrastructuur"

Copied!
25
0
0

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

Hele tekst

(1)

Bachelor Informatica

Publieke opinie EV’s en EV

laadinfrastructuur

Rico Lamein – 10589848

8 juni 2016

Begeleider: Jurjen Helmus

Inf

orma

tica

Universiteit

v

an

Ams

terd

am

(2)
(3)

Samenvatting

Elektrisch rijden staat volop in de belangstelling. Om deze reden is onderzoek op dit gebied belangrijk. Er is echter nog geen onderzoek gedaan naar de publieke opinie met betrekking tot elektrische voertuigen (EV’s) en de EV laadinfrastructuur, hoewel dit van groot belang is voor bedrijven en beleidsmakers. Daarom is in deze scriptie onderzocht in hoeverre de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur te bepalen valt met behulp van Twitter, de veruit bekendste microblogging website. Hiertoe is een systeem ontwikkeld dat automatisch nieuwe tweets verzamelt en classificeert als positief of negatief. Vervolgens is dit op provinciaal niveau gevisualiseerd. Bovendien is gepoogd er een zelflerend systeem van te maken door nieuwe zoektermen te genereren met behulp van TF-IDF, maar dit blijkt geen goede manier.

(4)
(5)

Inhoudsopgave

Samenvatting 3 1 Inleiding 7 1.1 Onderzoeksvraag . . . 8 1.2 Scriptieopzet . . . 8 2 Theoretisch kader 9 2.1 Twitter . . . 9 2.1.1 Twitter API . . . 9 2.2 Classifiers . . . 10 2.2.1 Naive Bayes . . . 10 2.2.2 k-Nearest Neighbor . . . 11

2.2.3 Support Vector Machine . . . 11

2.3 Sentimentanalyse . . . 13

3 Implementatie 15 3.1 Systeemoverzicht . . . 15

3.2 Leervoorbeelden verzamelen . . . 16

3.3 Nieuwe tweets classificeren . . . 16

3.4 Visualisatie . . . 17 3.5 Nieuwe zoektermen . . . 18 4 Resultaten 19 4.1 Classifiers . . . 19 4.1.1 Sentiment . . . 19 4.1.2 Sarcasme . . . 20 4.2 Visualisatie . . . 20 4.3 Nieuwe zoektermen . . . 22 5 Conclusie 23 5.1 Discussie . . . 23 5.2 Vervolgonderzoek . . . 24 Bibliografie 25

(6)
(7)

HOOFDSTUK 1

Inleiding

Elektrisch rijden staat volop in de belangstelling: elektrische auto’s zijn steeds meer te vinden op de Nederlandse wegen en in showrooms van autobedrijven. Bovendien is het aantal geregistreerde elektrische voertuigen (EV’s) in 2015 bijna verdubbeld van 46 naar ruim 90 duizend [3]. Deze opmars is vooral te danken aan de onder-steuning die de overheid biedt.

Elektrisch rijden biedt vele voordelen ten opzichte van het rijden op benzine. Het is aanzienlijk beter voor het milieu. Omdat er steeds meer koolstofdioxide (CO2) in de lucht komt, verandert

het klimaat en wordt de aarde warmer. Om dit proces tegen te gaan zijn er internationale af-spraken gemaakt om de CO2uitstoot te reduceren. Elektrisch rijden draagt bij aan een oplossing

hiervoor. Uit een onderzoek van de Nederlandse Organisatie voor Toegepast Natuurwetenschap-pelijk Onderzoek (TNO) [15] blijkt dat een volledig elektrische auto bij gebruik van overwegend grijze stroom (stroom opgewekt met behulp van fossiele brandstoffen) zorgt voor 30% minder CO2-uitstoot dan de gemiddelde benzine auto. Bij gebruik van groene stroom loopt dit op tot

een reductie van wel 70%. Voor plug-in hybride voertuigen is de daling van de CO2-uitstoot 15 `a

25%. Ook voor andere milieuproblemen bieden EV’s uitkomst. EV’s produceren namelijk geen stikstofoxiden en roet. Dit is een groot voordeel in de binnensteden en op drukke verkeerstrajec-ten. Bovendien veroorzaken EV’s minder geluidsoverlast dankzij hun geruisloze motor.

Elektrisch rijden kent echter ook een aantal nadelen. EV’s zijn een stuk duurder in aanschafprijs dan vergelijkbare normale auto’s. Dit komt voornamelijk door de hoge kosten van de batterij [16]. Om het elektrisch rijden toch aantrekkelijk te maken voor de normale burger, heeft de overheid een aantal regelingen ingevoerd. Zo waren EV’s tot 2015 vrijgesteld van motorrijtui-genbelasting en zijn zij t/m 2018 vrijgesteld voor belasting op personenauto’s en motorrijwielen. Hiermee probeert de overheid haar doelstelling van 200 duizend EV’s in 2020 en 1 miljoen EV’s in 2025 te realiseren. Een ander nadeel is dat EV’s vaak en lang opgeladen moeten worden [16]. Het opladen van een EV kan tot wel acht uur duren. Hier bestaan alternatieven voor, zoals snelladers. Deze zorgen ervoor dat binnen een half uur 80% van de batterij is opgeladen. Omdat snelladers echter duur zijn om te maken, zijn ze erg schaars. Bovendien zijn er op het moment van schrijven ongeveer 94 duizend geregistreerde EV’s in Nederland tegenover 20 dui-zend (semi)publieke laadpalen [3]: de kans is dus groot dat er al een elektrische auto aan het opladen is bij het oplaadpunt van keuze.

Voornamelijk door het laatste bovengenoemde punt is onderzoek op het gebied van de EV laadin-frastructuur belangrijk. Hiervoor is het IDO-laad - Intelligente Data-gedreven Optimalisatie laadinfrastructuur - project1 opgericht. Dit project is een samenwerkingsverband tussen de

Ho-geschool van Amsterdam en de Universiteit van Amsterdam en beschikt over een unieke dataset met daarin de informatie van ruim 2 miljoen laadsessies. Aan de hand van deze dataset vindt onderzoek plaats en worden tools ontwikkeld gericht op de uitrol van een kosteneffici¨ente en

(8)

effectief gebruikte EV laadinfrastructuur. Zo is bijvoorbeeld gebleken dat er, gebasseerd op hun laadgedrag, verschillende soorten EV-gebruikers (zoals taxi’s) kunnen worden onderscheiden [5]. Er is echter nog geen onderzoek gedaan naar de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur.

De publieke opinie is van belang voor bedrijven omdat het feedback levert op hun producten en diensten. Als uit een opiniepeiling blijkt dat men heel positief is over elektrisch rijden, maar zij de huidige modellen afschuwelijk vinden, weten bedrijven dat ze winst kunnen maken door een nieuwe, mooie elektrische auto te ontwikkelen. Bovendien is de publieke opinie van belang voor beleidsmakers. Als blijkt dat veel mensen uit Purmerend vinden dat er te weinig laadpunten zijn, kan dit worden gecontroleerd met behulp van de dataset van het IDO-laad project. Deze data zal namelijk laten zien dat de laadpunten het grootste deel van de tijd bezet zijn. Bovendien kan worden gecontroleerd of het probleem ligt aan te weinig laadpunten, of dat er veel auto’s bij laadpunten staan terwijl zij al volledig zijn opgeladen. Als het laatste het geval blijkt te zijn, kan een nieuw beleid worden uitgerold waarin staat dat auto’s worden weggesleept als zij bij een laadpunt staan terwijl zij volledig zijn opgeladen.

Met de sterke opkomst van tekst-gebaseerde social media, ook wel bekend als microblogging websites, posten miljoenen mensen dagelijks hun gedachten en meningen over een breed aantal onderwerpen. Hiermee wordt het peilen van de opinie een stuk gemakkelijker. Kan deze publiek toegankelijke informatie echter ook automatisch worden geanalyseerd om zo de publieke opinie te bepalen? Als dit het geval is, zal dit veel tijd en geld besparen in vergelijking met traditionele opiniepeilingen: een telefonische opiniepeiling waarbij duizend mensen worden ondervraagd kan gemakkelijk een paar duizend euro kosten.

1.1

Onderzoeksvraag

Dit onderzoek is gericht op de publieke opinie met betrekking tot EV’s en de EV laadinfrastruc-tuur en hoe deze te verkrijgen valt met behulp van Twitter2, de veruit bekendste microblogging

website. Dit wordt gedaan aan de hand van de volgende onderzoeksvraag:

In hoeverre is het mogelijk de publieke opinie met betrekking tot EV’s en de EV laadinfrastruc-tuur te bepalen met behulp van Twitter?

Om deze vraag te kunnen beantwoorden, moet eerst worden onderzocht welke verschillende com-ponenten hier deel van uitmaken. Dit wordt gedaan aan de hand van de volgende deelvragen:

• Hoe kunnen Twitter berichten over een bepaald onderwerp worden verzameld? • Hoe kunnen deze berichten worden geclassificeerd als positief of negatief?

• Hoe kunnen de resultaten worden gevisualiseerd zodat deze bruikbaar zijn voor derde partijen?

• In hoeverre is terugkoppeling met de dataset van het IDO-laad project mogelijk?

1.2

Scriptieopzet

In hoofdstuk 2 wordt het theoretische kader van dit onderzoek geschetst. De verschillende onder-delen die deel uitmaken van sentimentanalyse worden behandeld, net als de relevante literatuur. Vervolgens wordt in hoofdstuk 3 een overzicht van het systeem geschetst en wordt de implemen-tatie hiervan behandeld. Hierna worden de resultaten van het onderzoek getoond en besproken. Ten slotte focust hoofdstuk 5 zich op de conclusies die worden getrokken op basis van de resul-taten.

(9)

HOOFDSTUK 2

Theoretisch kader

In het theoretisch kader worden de verschillende aspecten die te maken hebben met het onderzoek in detail besproken. Tevens wordt de literatuur die relevant is voor het onderzoek behandeld. Om een duidelijk beeld te krijgen, is dit hoofdstuk opgedeeld in drie delen. Het eerste deel beschrijft wat Twitter is en waarom dit een goede bron is voor opiniepeilingen. Vervolgens worden verschillende classifiers besproken en wordt behandeld welke rol zij innemen bij het bepalen van de publieke opinie. Ten slotte wordt beschreven hoe classifiers gebruikt kunnen worden om sentimentanalyse uit te voeren.

2.1

Twitter

Microblogging is vandaag de dag uitgegroeid tot een zeer populair communicatiemiddel onder internetgebruikers. Dagelijks verschijnen er miljoenen berichten op populaire websites die een dienst bieden voor microblogging, zoals Twitter, Tumblr1 en Plurk2. Twitter, met 305 miljoen actieve gebruikers [13], is veruit het populairst. Het biedt zijn gebruikers de mogelijkheid kleine (maximaal 140 leestekens) berichten, ‘tweets’, te plaatsen die de brede vraag “Wat houdt je bezig?” beantwoorden. Deze tweets beschrijven dus het leven van de auteur of een opinie over een bepaald onderwerp. Aangezien er veel wordt getweet over producten, diensten en politieke en religieuze vraagstukken, is Twitter een waardevolle bron van meningen en gevoelens. Daarmee biedt het een uitstekend hulpmiddel om de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur te bepalen.

2.1.1

Twitter API

Twitter biedt een mogelijkheid tot communicatie met de website via zijn REST3 API’s. Deze worden gebruikt om berichten te plaatsen en lezen en om statistieken op te halen. In het kader van dit onderzoek is alleen het ophalen van berichten van belang. Hiervoor biedt Twitter zijn Search en Streaming API’s aan. De Streaming API verzamelt tweets die geplaatst worden vanaf het moment dat het programma wordt uitgevoerd, waar de Search API tweets verzameld die in het verleden zijn geplaatst. Afhankelijk van de zoekquery die de gebruiker invult, worden de tweets die deze zoekquery bevatten, verzameld. Omdat de Streaming API maar ´e´en zoekquery kan uitvoeren, is de Search API meer van belang voor dit onderzoek. De Search API kent echter ook limitaties: de verzamelde tweets gaan tot zeven dagen terug en het aantal verzoeken is gelimiteerd tot 180 per vijftien minuten.

1

https://www.tumblr.com/

2http://www.plurk.com/top/

(10)

2.2

Classifiers

Tekstclassificatie is het proces van een nieuwe observatie d toewijzen aan een set van bestaande categorie¨en C = {c1, ..., cn}. Deze categorie¨en worden ook wel klassen of labels genoemd. Hierbij

wordt gebruik gemaakt van een leerset D, bestaande uit een groot aantal gelabelde leervoorbeel-den van de vorm <d, c>. Bijvoorbeeld:

<d, c>=<Geweldig die nieuwe Tesla! #happy, positief>

Vervolgens wordt, met behulp van een leermethode Γ, een classifier γ gemaakt die bepaalt bij welke klasse een nieuwe observatie hoort [11]:

γ : d → k ∈ C

Dit wordt ook wel leren onder toezicht genoemd, omdat een toezichthouder (persoon die de klassen definieert en leervoorbeelden labelt) het leerproces dirigeert. In een onderzoek van Kot-siantis[6] zijn een groot aantal classifiers getest op verschillende aspecten: snelheid, tolerantie voor irrelevante attributen, hoe zij omgaan met discrete of continue attributen, etc. Voor deze scriptie zijn echter alleen de nauwkeurigheid (het percentage tweets dat correct wordt geclassi-ficeerd) en de snelheid van de classifier van belang. Op basis hiervan is gekozen voor de Naive Bayes4, k-Nearest Neighbor5 en Support Vectore Machine6 classifiers. Hieronder volgt een korte

beschrijving van de theorie achter elk van deze classifiers.

2.2.1

Naive Bayes

De eerste classifier is de Naive Bayes classifier, een probabilistische classifier. Een nieuwe obser-vatie d wordt gerepresenteerd door zijn feature vector X = {x1, ..., xn} met n features. Voor elke

klasse k ∈ C wordt de kans berekend dat d hierbij hoort als:

P (k|X)

Dit kan worden herschreven met behulp van het theorema van Bayes7: P (k|X) = P (k)P (X|k)P (X)

Omdat de noemer echter constant is voor elke klasse, wordt deze over het algemeen weggelaten. Door het toepassen van de kettingregel kan dit worden uitgeschreven:

P (k)P (X|k) = P (k, x1, ..., xn) (2.1) = P (x1, ..., xn, k) (2.2) = P (x1|x2, ..., xn, k)P (x2, ..., xn, k) (2.3) = P (x1|x2, ..., xn, k)P (x2|x3, ..., xn, k)P (x3, ..., xn, k) (2.4) = ... = P (x1|x2, ..., xn, k)P (x2|x3, ..., xn, k)...P (xn−1, xn, k)P (xn, k)P (k) (2.5)

Naive Bayes gaat er na¨ıef vanuit dat de features van een observatie onafhankelijk zijn. Voor tekstclassificatie zijn de features wel degelijk afhankelijk: na een lidwoord is de kans groot dat er een zelfstandig naamwoord volgt, waar de kans op nog een lidwoord klein is. Toch scoren Naive Bayes classifiers hoog op het gebied van tekstclassificatie. Harry Zhang heeft geconcludeerd dat, ondanks grote afhankelijkheid tussen features, Naive Bayes optimaal kan presteren zolang de afhankelijkheid per categorie gelijk is [17]. Dit is bij tekstclassificatie het geval: bovenstaand voorbeeld geldt voor zowel negatieve als positieve tweets. Bij onafhankelijkheid van features geldt:

4https://en.wikipedia.org/wiki/Naive_Bayes_classifier 5https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm 6https://nl.wikipedia.org/wiki/Support_vector_machine 7https://nl.wikipedia.org/wiki/Theorema_van_Bayes

(11)

P (xi|xi+1, ...xn, k) = P (xi|k)

Dit leidt tot simplificatie van de kans dat d in k hoort [7]:

P (k)P (X|k) = P (k, x1, ..., xn) (2.6) = P (k)P (x1|k)P (x2|k)...P (xn|k) (2.7) = P (k) n Y i=1 P (xi|k) (2.8)

Deze kans wordt voor elke klasse k ∈ C berekend, waarna d wordt toegewezen aan de klasse met de hoogste kans: γ(d) = arg max k∈C P (k) n Y i=1 P (xi|k)

2.2.2

k-Nearest Neighbor

k-Nearest Neighbor classifiers classificeren een nieuwe observatie op basis van de klassen van de k leervoorbeelden die hier het dichtst bij liggen [8], waarbij k een parameter is. De afstand wordt bepaald aan de hand van een afstandsfunctie. Voor numerieke waarden wordt over het algemeen gekozen voor de euclidische afstand8, bij tekst voor de Hammingafstand9. Vervolgens wordt de

nieuwe observatie geclassificeerd als de meerderheid van de klassen van zijn k buren:

Figuur 2.1: kNN classificatie.

Hier is te zien dat de nieuwe observatie (de ster) geclassificeerd wordt als: • B als k = 3

• A als k = 6

2.2.3

Support Vector Machine

Support Vectore Machine (SVM) classifiers zijn binaire classifiers gebasseerd op de statistical learning theory [14]. Het idee is om twee klassen te separeren met behulp van een beslissings-oppervlak met maximale marge. Hierbij wordt gebruik gemaakt van m leervoorbeelden van de vorm (xi, y) met i = {1, ..., m} en y = ±1 waarbij −1 en 1 de twee klassen representeren. Er

bestaan echter ook implementaties van de SVM met ´e´en klasse. Hierbij representeert 1 dat de observatie wel in de klasse hoort en −1 dat dit niet het geval is. Vervolgens wordt een hypervlak (beslissingsoppervlak) w ∗ x + z = 0 opgesteld die de leervoorbeelden separeert:

y(xi∗ w + z) ≥ 1 (2.9)

8https://nl.wikipedia.org/wiki/Gewone_metriek 9https://nl.wikipedia.org/wiki/Hammingafstand

(12)

voor alle i met w de normaalvector van het hypervlak. Het is echter niet altijd mogelijk om de leervoorbeelden te separeren:

Figuur 2.2: Leervoorbeelden die wel (links) en niet (rechts) sepereerbaar zijn.

De marge van het hypervlak is gedefini¨eerd als de som van de kortste afstand tussen het hypervlak en de dichtsbijzijnde positieve en negatieve leervoorbeelden (leervoorbeelden van de klasse 1 en −1 respectievelijk). Deze marge is simpelweg 2

|w| met |w| de euclidische lengte van het hypervlak.

Dit kan dus gemaximaliseerd worden door |w|2te minimaliseren met respect tot vergelijking (2.9).

Als de leervoorbeelden echter niet te separeren zijn, moet de formule |w|2+ C m

X

i=1

ξi worden

geminimaliseerd met respect tot de restricties:

y(xi∗ w + z) ≥ 1 − ξi

ξi≥ 0

voor alle i met C de sanctie voor fouten en ξi positieve variabelen die meten hoeveel van de

restrictie wordt overschreden. De leervoorbeelden xi ∗ xj worden getransformeerd naar hun

feature space met een kernel K(xi, xj) = φ(xi) ∗ φ(xj). Er bestaan verschillende kernels, met als

populairste de Radiaal-basis functie (RBF) kernel, gedefini¨eerd als: K(xi, xj) = exp(−

||xi−xj||2

2σ2 )

met hierin σ een parameter. Vervolgens bestaat het leerproces uit de maximalisatie van de Langrange: W (α) = m X i=1 αi− 1 2 m X i,j=1 αiαjyiyjK(xi, xj)

met respect tot de restricties:

αi≥ 0 m

X

i=1

αiyi = 0

De optimale α kan worden gevonden met behulp van quadratische programmeertechnieken. Ten-slotte kan een nieuwe observatie b worden geclassificeerd met de formule[1]:

G(b) =

m

X

i=1

αiyiK(b, xi) + z

Als de uitkomst van deze formule negatief is, hoort b bij de klasse die gerepresenteerd wordt door -1, anders bij de andere klasse.

(13)

2.3

Sentimentanalyse

Om de publieke opinie met betrekking tot een bepaald onderwerp te bepalen, wordt vrijwel altijd gebruik gemaakt van sentimentanalyse. Hierbij wordt het sentiment van een opinie geclassificeerd als positief of negatief. In een vergelijkbaar onderzoek van Alexander Pak en Patrick Paroubek [9] is onderzocht hoe Twitter gebruikt kan worden voor sentimentanalyse. De leervoorbeelden worden automatisch verzameld door te kijken naar emoticons in de tweets die het sentiment aangeven, zoals voorgesteld door Go et al. [4] Deze leervoorbeelden worden genormaliseerd, door onder andere webadressen en stopwoorden te verwijderen, alvorens zij aan een classifier worden geleerd. Er is gekozen voor een Naive Bayes classifier omdat deze betere resultaten oplevert dan SVM en CRF10. Er is gebruik gemaakt van twee classifiers: de een gebruikt als features de woordsoorten (lidwoord, werkwoord etc.) die de tweet bevat, de ander maakt gebruik van n-grams. Hierbij worden n woorden samengevoegd tot ´e´en feature. Bijvoorbeeld, de zin “Ik ben Rico.” wordt opgedeeld in “Ik ben” en “ben Rico.” als n = 2. Om de nauwkeurigheid van de classifier te vergroten worden algemene n-grams die geen sterke aanwijzing van sentiment geven, zoals “ik ben”, verwijderd. Hiermee behalen zij voor de Naive Bayes classifier een nauwkeurig-heid van 63%. De testset bestaat echter maar uit 216 tweets waar de leerset bestaat uit 300.000 tweets. Meestal wordt voor een 80/20% verdeling gekozen, wat inhoudt dat 80% van het totaal aantal leervoorbeelden wordt gebruikt om de classifier te leren en 20% om te testen.

Uit boven besproken onderzoek is gebleken dat de publieke opinie zeer goed te bepalen is met behulp van Twitter. Dit is echter wel op nationaal niveau. Als bijvoorbeeld blijkt dat heel Ne-derland, behalve GelNe-derland, positief is over elektrisch rijden, zal de publieke opinie nog steeds positief zijn. Om de publieke opinie op een lager niveau te bepalen, moet de locatie van waar de tweets geplaatst zijn, bekend zijn. Hiervoor biedt Twitter zijn gebruikers de mogelijkheid om geolocatie met tweets mee te sturen. De geolocatie is echter bij minder dan 1% van alle tweets ingevuld [12]. Het bepalen van de publieke opinie op een lager niveau kan ook op een andere manier, namelijk door stadsnamen in de zoekquery op te nemen. Dit vermindert het aan-tal tweets, maar zorgt er wel voor dat de publieke opinie op een lager niveau bepaald kan worden.

Bovendien wordt in het onderzoek geen aandacht besteed aan sarcasme. Stel de tweet is “Wat een geweldige laadpaal zeg! #sarcasme”, dan wordt deze gezien als positief. Als er echter sprake is van sarcasme, zoals hier, moet het sentiment worden veranderd in zijn tegenovergestelde en moet de tweet dus worden geclassificeerd als negatief. In een onderzoek van Davidov et al. [2] wordt uitgelegd hoe, met behulp van een classifier, sarcasme in tweets kan worden gedetecteerd. Er wordt een nauwkeurigheid van wel 91% behaald.

Tenslotte wordt in het onderzoek gebruik gemaakt van handmatig geselecteerde zoektermen om nieuwe tweets te verzamelen. Er kunnen echter ook automatisch nieuwe zoektermen worden gegenereerd door te kijken naar de verzamelde tweets. Uit onderzoek van Juan Ramos [10] is gebleken dat TF-IDF11 een goede manier is om te bepalen welke woorden in een corpus van documenten gunstig zijn om te gebruiken als zoektermen. TF-IDF kijkt per document naar elke term die daarin voorkomt en bepaalt hoe belangrijk de term voor het document is. Hiervoor bepaalt TF-IDF hoe vaak de term in het document zelf voorkomt (term frequency of TF) en hoe zeldzaam de term is over de gehele corpus gezien met behulp van de inverse document frequency (IDF). Deze wordt berekend als:

IDF = log2DFN

met N het aantal documenten in de corpus en DF het aantal documenten dat de term bevat. In principe geldt dus: des te meer documenten de term bevatten, hoe lager de IDF. Er wordt per term per document een TF-IDF score berekend:

T F IDF (term, doc) = T F (term, doc) ∗ IDF (term)

10https://en.wikipedia.org/wiki/Conditional_random_field 11https://en.wikipedia.org/wiki/Tf%E2%80%93idf

(14)
(15)

HOOFDSTUK 3

Implementatie

In het vorige hoofdstuk is een beeld geschetst van hoe sentimentanalyse uitgevoerd kan worden met behulp van Twitter. Dit hoofdstuk focust zich op de implementatie hiervan. Eerst wordt het onderzoek van Alexander Pak en Patrick Paroubek [9] nagebootst. De methode is deels aangepast, omdat de publieke opinie op een lokaler niveau bepaald moet worden. Bovendien is dit uitgebreid met behulp van visualisatie op verschillende manieren. Tenslotte is gepoogd een geheel automatisch, zelflerend systeem te maken door automatisch nieuwe zoektermen te genereren.

3.1

Systeemoverzicht

Deze sectie schetst een overzicht van het systeem dat is gebruikt om de publieke opinie te bepalen. Het systeem kan worden opgedeeld in vier aparte delen:

1. Automatisch leervoorbeelden verzamelen en aan de hand hiervan een classifier bouwen.

2. Nieuwe tweets verzamelen met behulp van zoektermen met daarin plaatsnamen en deze classificeren.

3. Visualiseren van de publieke opinie.

4. Systeem nieuwe zoektermen leren.

Door deze onderdelen te combineren, is gepoogd een zelflerend systeem te maken dat automatisch de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur bepaalt. Dat ziet er als volgt uit, waarbij de nummers de aparte onderdelen van het systeem aangeven:

(16)

Figuur 3.1: Overzicht van het zelfregulerend systeem.

3.2

Leervoorbeelden verzamelen

Om succesvol sentimentanalyse uit te kunnen voeren met behulp van een classifier, is een groot aantal tweets verzameld die een positief dan wel negatief sentiment uitdrukken. Zoals eerder besproken, geven emoticons in de tweets hier een goede indicatie voor. Onderstaande tabel laat verschillende emoticons zien met het bijbehorende sentiment:

Tabel 3.1: Emoticons die postief (links) en negatief (rechts) sentiment aangeven.

Positieve emoticons :) :D :P ˆˆ Negatieve emoticons :( :S -.->.<

Deze emoticons zijn als input voor de Twitter Search API gebruikt om zo (semi)automatisch de leerset te cre¨eren. Om de API in Python te kunnen gebruiken, is gebruik gemaakt van de wrapper tweepy1. Verder zijn exclusief Nederlandstalige tweets verzameld, aangezien de sentimentanalyse

uitgevoerd wordt op Nederlandstalige tweets. Omdat de API toch een aantal niet-Nederlandse tweets oplevert, is hier nog een schil omheen gebouwd met behulp van de langdetect2 library.

Omdat de tweets spelfouten bevatten en in verschillende dialecten geschreven zijn, is gekozen om een heel grote leerset te verzamelen zodat deze genoeg variatie bevat. Hierdoor kunnen nieuwe tweets die geschreven zijn in een bepaald dialect of bepaalde spelfouten bevatten alsnog goed worden geclassificeerd. Ten slotte worden de leervoorbeelden in een kommagescheiden (CSV) bestand3 opgeslagen, zodat hier effici¨ent mee kan worden gewerkt. Hetzelfde is gedaan voor het

verzamelen van sarcastische tweets, alleen is daar de input “#sarcasme” gebruikt.

3.3

Nieuwe tweets classificeren

Nu de leersets verzameld zijn, kunnen classifiers worden gebouwd. Eerst worden de leervoorbeel-den met behulp van pandas4uit de CSV bestanden gelezen. Er is gekozen voor de pandas library

in plaats van de python standaard csv library5omdat deze veel sneller is, zeker als gewerkt wordt

met grote datasets. De leervoorbeelden worden genormaliseerd door webadressen, stopwoorden

1http://tweepy.readthedocs.io/ 2 https://pypi.python.org/pypi/langdetect 3https://nl.wikipedia.org/wiki/Kommagescheiden_bestand 4http://pandas.pydata.org/ 5https://docs.python.org/2/library/csv.html

(17)

en leestekens te verwijderen alvorens zij aan de classifiers worden geleerd. Voor het leren van de classifiers is gebruik gemaakt van bestaande implementaties, beschikbaar via de scikit − learn6 library. Er zijn verschillende classifiers met verschillende features getest. Uiteindelijk behaalt Nearest Neighbor met bigrams als features het beste resultaat voor de sentiment classifier. Voor de sarcasme classifier is dit het geval voor de OneClassSVM met trigrams. Deze classifiers wor-den gebruikt om nieuwe tweets te classificeren als positief of negatief. De nieuwe tweets worwor-den verzameld met behulp van de Twitter Search API. Aangezien slechts 1% van de tweets geolocatie bevat [12], en het doel van het onderzoek is om de publieke opinie op een lager niveau dan lan-delijk te bepalen, is gebruik gemaakt van de IDO-LAAD dataset. Communicatie met de dataset is echter alleen mogelijk met de programmeertaal R7. Daarom is een wrapper, geschreven door

Peter Verkade, gebruikt waarbij de data wordt omgezet in Python’s pandas formaat. Vervolgens zijn de stads- en provincienamen van de laadsessies ge¨extraheerd en worden deze, samen met een aantal handmatig geselecteerde zoektermen, gecombineerd tot nieuwe zoekqueries:

Tabel 3.2: Samenstelling van de input voor de Twitter Search API.

Stad Provincie Purmerend Noord-Holland Delft Zuid-Holland Groningen Groningen X Zoektermen Elektrisch rijden Laadpaal = Resulterende queries Elektrisch rijden Purmerend

Elektrisch rijden Delft Elektrisch rijden Groningen

Laadpaal Purmerend Laadpaal Delft Laadpaal Groningen

Deze zoekqueries worden als input voor de Twitter Search API gebruikt om zo nieuwe tweets te verkrijgen die gaan over EV’s of de EV laadinfrastructuur. Veel van deze queries leveren ech-ter geen resultaat op omdat niet veel gebruikers specifieke stadsnamen in hun tweets gebruiken. Daarom is het onmogelijk om de publieke opinie op stedelijk niveau te bepalen en wordt dit gedaan per provincie. De tweets worden geclassificeerd en in een CSV bestand gezet in het for-maat ‘tweet, sentiment, stad, provincie’. Bovendien wordt gecontroleerd of de tweets sarcastisch zijn. Als dit het geval is, wordt het sentiment veranderd in zijn tegenovergestelde voordat het wordt opgeslagen. Ook worden de tweets toegevoegd aan de leersets om de classifiers slimmer te maken.

3.4

Visualisatie

Nu de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur is bepaald op provin-ciaal niveau, moet dit worden gevisualiseerd. Hiervoor is gekozen voor een kaart met kleuren die de tevredenheid per provincie aangeeft, omdat dit snel een overzicht geeft van welke provincies tevreden zijn en welke niet. Om de tevredenheid per provincie te berekenen, zijn de volgende stappen uitgevoerd:

• Verzamel per provincie de afkomstige tweets. • Kijk hoeveel hiervan positief zijn.

• Bereken het tevredenheidspercentage als #positieve tweets totaal #tweets ∗ 100.

Vervolgens is aan de hand van de volgende tabel een kleur voor elke provincie bepaald:

6http://scikit-learn.org/stable

(18)

Tabel 3.3: Tevredenheidspercentages en bijbehorende kleuren. tevredenheidspercentage kleur 0 - 20% rood 20 - 40% oranje 40 - 60% geel 60 - 80% lichtgroen 80 - 100% groen

Tenslotte is met behulp van de Basemap8 library en een kaart van Nederland in shapefile9

for-maat de tevredenheid per provincie geplot.

De kaart biedt een snel overzicht door aan te geven welke provincies tevreden zijn en welke niet. Het biedt echter nog geen context: er kan niet worden gezien waarom een bepaalde provincie positief of negatief is. Daarom zijn wordclouds als volgt ge¨ımplementeerd:

• Verzamel per provincie de afkomstige tweets.

• Bouw aan de hand hiervan een wordcloud met behulp van de W ordcloud10 library.

• Sla de wordcloud op als ‘wordcloud provincienaam.png’.

3.5

Nieuwe zoektermen

Om het systeem geheel automatisch en zelflerend te maken, is er nog een functionaliteit aan toegevoegd: het automatisch genereren van nieuwe zoektermen op basis van de verzamelde tweets. Eerst worden alle tweets verzameld in pandas formaat, waarna ze in een lijst wor-den gestopt. Deze lijst wordt als corpus gebruikt om TF-IDF per term per tweet te berekenen met de scikit − learn library. Vervolgens wordt de term met de hoogste TF-IDF score aan de zoektermen toegevoegd voor de volgende keer dat het programma wordt uitgevoerd.

8http://matplotlib.org/basemap/

9https://nl.wikipedia.org/wiki/Shapefile 10https://github.com/amueller/word_cloud

(19)

HOOFDSTUK 4

Resultaten

In dit hoofdstuk worden de resultaten van het onderzoek behandeld. Eerst worden de classifiers getest met verschillende features. Vervolgens worden de resultaten van de visualisatie van de publieke opinie besproken. Ten slotte wordt onderzocht welke zoektermen automatisch gegenereerd worden door het systeem en of deze bruikbaar zijn om het systeem zelflerend te maken.

4.1

Classifiers

In deze sectie worden de resultaten van de verschillende geteste classifiers getoond en besproken. Eerst wordt de sentiment classifier, de classifier die bepaald of een tweet positief dan wel negatief is, behandeld. Vervolgens worden de resultaten van de sarcasme classifier, de classifier die bepaald of een tweet sarcastisch is, besproken.

4.1.1

Sentiment

Voor de sentiment classifier zijn alle tweets die emoticons bevatten verzameld. Dit zijn in totaal 25.492 tweets, waarvan 12.866 positief en de overige 12.626 negatief. De positieve en negatieve tweets worden in twee aparte lijsten gestopt. Uit beide lijsten is 80% gebruikt om de classifier te trainen en de overige 20% om hem te testen. De tweets zijn eerst opgedeeld in positieve en negatieve tweets, zodat de classifier genoeg tweets van beide klassen wordt geleerd. Bovendien worden de tweets in zowel de leer- als testset genormaliseerd, waarbij o.a. de emoticons worden verwijderd. Dit voorkomt classificatie op basis van emoticons. De nauwkeurigheid is berekend voor verschillende soorten classifiers, namelijk de Naive Bayes, Nearest Neighbor, K-Nearest Neighbor (met K = 5) en SVM classifiers. Ook is getest op verschillende features, namelijk unigram, bigram en trigram, zoals te zien in het volgende figuur:

(20)

Figuur 4.1: Nauwkeurigheid per classifier per feature.

De resultaten van de Naive Bayes en Nearest Neighbor classifier liggen dicht bij elkaar waar de K-Nearest Neighbor en SVM classifiers een veel lagere nauwkeurigheid hebben. Hieruit blijkt dat de tweet die het meest lijkt op de nieuwe tweet voor de K-Nearest Neighbor classifier meestal de goede klasse bevat (want als K = 1 is dit de Nearest Neighbor classifier). Het gaat echter fout als K groter wordt en de klasse van de nieuwe tweet wordt bepaald aan de hand van de K tweets die het meest overeenkomen. Dit komt omdat de tweets uit beiden klassen veel op elkaar lijken: de tweets “ik vind die nieuwe auto echt mooi!” en “ik vind die nieuwe auto echt niet om aan te zien!” lijken erg op elkaar maar bevatten niet hetzelfde sentiment. Ook voor de SVM classifier is de lage nauwkeurigheid te verklaren doordat de tweets te veel op elkaar lijken. Hierdoor is het lastig om de leervoorbeelden te separeren en dus ook om nieuwe tweets correct te classificeren.

4.1.2

Sarcasme

De sarcasme classifier is een one-class classifier (een tweet is sarcastisch of niet), waarvoor er maar ´e´en implementatie beschikbaar is: de OneClassSVM. Deze is getest met unigrams, bigrams en trigrams om te zien welke feature het beste resultaat oplevert. Hiervoor zijn alle eerder ver-zamelde sarcastische tweets (2194 in totaal) opgedeeld: 80% om de classifier te trainen en 20% om hem te testen. Dit levert de volgende tabel op:

Tabel 4.1: Resultaten OneClassSVM classifier.

Feature Nauwkeurigheid Unigram 45.9%

Bigram 52.3% Trigram 64.4%

Opvallend is dat hier trigrams het beste werken, waar zij bij de sentiment classifiers een middel-matig resultaat opleverden. Dit komt omdat, voor het detecteren van sarcasme, de context veel informatie biedt. Met trigrams wordt meer van de context behouden dan met unigrams, waarbij elk woord apart wordt behandeld.

4.2

Visualisatie

Deze sectie laat de resultaten van het visualiseren van de publieke opinie op provinciaal niveau zien. Zoals eerder besproken, wordt dit gedaan met behulp van een kaart met kleuren en

(21)

word-clouds. De kaart met kleuren ziet er als volgt uit:

Figuur 4.2: Tevredenheid per provincie.

De publieke opinie is over het algemeen positief. Drenthe is zelfs zeer positief. Er zijn echter ook een aantal provincies die niet heel tevreden zijn: Noord-Holland, Zeeland, Limburg en Gelder-land.

Omdat de kaart niet laat zien waarom de provincies wel of niet tevreden zijn, volgen hier de wordclouds van Drenthe en Noord-Holland:

(22)

Figuur 4.4: Wordcloud van Noord-Holland.

Dit biedt meer context aan de kaart met kleuren. Zo worden plaatsnamen weergegeven, wat aangeeft dat vooral in die plaatsen men positief of negatief is. Bovendien staan in de wordcloud van Drenthe woorden als ‘vlakbij’ en ‘kantoor’, wat impliceert dat de bewoners tevreden zijn omdat laadpalen vlakbij staan en omdat ze op kantoor kunnen opladen. Daarentegen zijn bij de wordcloud van Noord-Holland woorden als ‘storing’ en ‘fail’ te zien: de bewoners zijn ontevreden door storingen.

4.3

Nieuwe zoektermen

Om het systeem geheel automatisch en zelflerend te maken, is het genereren van nieuwe zoek-termen met behulp van TF-IDF toegevoegd. Ook hier is getest op verschillende features om te kijken welke het beste resultaat oplevert. Voor elke feature worden de top vijf resultaten getoond:

Tabel 4.2: Top vijf resultaten met TF-IDF score voor verschillende features.

Unigram TF-IDF score

020 6.38

020elektrisch 6.14 030laadpaalnl 5.63

10 3.17

100e 2.95

Bigram TF-IDF score 020 gaan 4.86 020elektrisch nieuwe 4.23 030elektrisch gefeliciteerd 3.77 030elektrisch palen 3.73 030laadpaalnl utrecht 3.28 Trigram TF-IDF score

020elektrisch nieuwe laadpaal 4.21 030elektrisch palen storing 3.34 030laadpaalnl utrecht steeds 3.05 10 miljoenste keer 2.53 100 electrische auto 2.17

In tabel 4.2 valt te zien dat TF-IDF termen oplevert die belangrijk zijn in de corpus. Deze termen hebben echter niet allemaal met elektrisch rijden te maken (zoals “020 gaan”). Omdat dit ook tweets oplevert die niet gerelateerd zijn aan EV’s of de EV laadinfrastructuur, is alleen TF-IDF geen geschikte manier om automatisch nieuwe zoektermen te genereren.

(23)

HOOFDSTUK 5

Conclusie

In deze scriptie is onderzocht in hoeverre de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur automatisch met behulp van Twitter bepaald kan worden. Dit is van belang voor bedrijven en beleidsmakers omdat het indirect feedback levert op hun producten en diensten. Omdat de publieke opinie op nationaal niveau niet specifiek genoeg is, is onderzocht of deze ook op een lager niveau te bepalen valt. Dit is mogelijk door de stads- en bijbehorende provincienamen uit de IDO-laad dataset te extraheren en deze in de zoekquery van de Twitter Search API te gebruiken. Aangezien veel van deze queries niks opleveren, is het bepalen van de publieke opinie op stedelijk niveau niet mogelijk, maar wel op provinciaal niveau. Om de verzamelde tweets te classificeren als positief of negatief, zijn verschillende classifiers getest. De Nearest Neighbor classifier met bigrams als features was het beste voor sentiment classificatie, waar de OneClassSVM is gebruikt om te controleren of een tweet sarcastisch is. Vervolgens is de publieke opinie gevisualiseerd met behulp van een kaart met kleuren voor een snel overzicht en wordclouds om meer context te geven. Tenslotte is gepoogd er een geheel zelflerend systeem van te maken door automatisch nieuwe zoektermen te genereren. Hieruit kan worden geconcludeerd dat de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur goed valt te bepalen met behulp van Twitter en het gemaakte systeem, zelfs op provinciaal niveau. Het systeem kan bovendien ook de publieke opinie over andere onderwerpen bepalen en visualiseren. Hiervoor hoeven alleen de zoektermen aangepast te worden.

5.1

Discussie

Hoewel de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur op provinciaal niveau bepaald kan worden, en daarmee het onderzoek is afgerond, gebeurt dit niet op optimale wijze. Omdat weinig tweets geolocatie bevatten, zijn stadsnamen in de zoekquery van de Twitter Search API gebruikt. Dit verhoogt het aantal zoekqueries aanzienlijk van n naar n*m met n het aantal handmatig geselecteerde zoektermen en m het aantal stadsnamen. Omdat vooral m groot is, en de Twitter Search API maar 180 verzoeken per 15 minuten accepteert, duurt het lang voordat het programma voltooid is ( minimaal m∗n∗15180 minuten). Bovendien reduceert het gebruik van stadsnamen in de zoekquery het aantal tweets aanzienlijk, aangezien weinig gebruikers specificeren waar zij vandaan tweeten. Daarom is gekozen de publieke opinie op provinciaal niveau te bepalen. Hierdoor is terugkoppeling met de data van de IDO-laad dataset echter niet mogelijk: de publieke opinie moet minimaal op stedelijk niveau worden bepaald om conclusies te kunnen trekken (zoals “te weinig laadpalen in Purmerend”). Ook is gebleken dat het gebruik van alleen TF-IDF geen uitkomst biedt om automatisch nieuwe zoektermen te genereren. Het genereert namelijk ook termen die niet relevant zijn aan elektrisch rijden. Hierdoor is het systeem niet zelflerend en is input van de gebruiker nodig.

(24)

5.2

Vervolgonderzoek

Het doel van dit onderzoek was het bepalen van de publieke opinie met betrekking tot EV’s en de EV laadinfrastructuur. Hoewel dit goed is gelukt, kan de visualisatie nog verbeterd worden. De kaart met kleuren is een goede manier om snel een overzicht te krijgen van welke provincies wel of niet tevreden zijn. Echter, de wordclouds bieden niet genoeg context om snel te kunnen zien waarom een provincie niet tevreden is. Voor vervolgonderzoek zouden deze dus verbeterd kunnen worden, of er moet gekozen worden voor een andere manier die meer context biedt. Bovendien werkt het automatisch genereren van zoektermen niet naar behoren omdat het ook zoektermen genereert die niet relevant zijn aan elektrisch rijden. Hier kan nog een classifier omheen worden gebouwd die beslist of de termen met elektrisch rijden te maken hebben. Vervolgens kan de term die over elektrisch rijden gaat met de hoogste TF-IDF score als nieuwe zoekterm worden gebruikt om zo het systeem zelflerend te maken.

(25)

Bibliografie

[1] Datong Chen, Herv Bourlard en Jean-Philippe Thiran. Text identification in complex back-ground using SVM. Tech. rap. IDIAP, 2001.

[2] Dmitry Davidov, Oren Tsur en Ari Rappoport. Semi-Supervised Recognition of Sarcastic Sentences in Twitter and Amazon. Tech. rap. The Hebrew University, 2010.

[3] Elektrisch Rijden Cijfers. http://www.rvo.nl/onderwerpen/duurzaam- ondernemen/ energie - en - milieu - innovaties / elektrisch - rijden / stand - van - zaken / cijfers. Bezocht op: 12/05/2016.

[4] Alec Go, Richa Bhayani en Lei Huang. Twitter Sentiment Classification using Distant Supervision. Tech. rap. Stanford University, 2009.

[5] J. Helmus en R. van den Hoed. Unraveling User Type Characteristics: Towards a Taxonomy for Charging Infrastructure. Tech. rap. University of Applied Science Amsterdam, 2015. [6] S. B. Kotsiantis en P. P. Zaharakis. Supervised Machine Learning: A Review of

Classifica-tion Techniques. Tech. rap. University of Peloponnese, Greece, 2007.

[7] Naive Bayes. http://scikit-learn.org/stable/modules/naive_bayes.html. Bezocht op: 05/06/2016.

[8] Nearest Neighbors. http : / / scikit - learn . org / stable / modules / neighbors . html. Bezocht op: 05/06/2016.

[9] Alexander Pak en Patrick Paroubek. Twitter as a Corpus for Sentiment Analysis and Opinion Mining. Tech. rap. Universit´e de Paris-Sud, 2010.

[10] Juan Ramos. Using TF-IDF to Determine Word Relevance in Document Queries. Tech. rap. Rutgers University, 2003.

[11] The text classification problem. http://nlp.stanford.edu/IR-book/html/htmledition/ the-text-classification-problem-1.html. Bezocht op: 03/06/2016.

[12] Twitter Geo-fail. http://thenextweb.com/2010/01/15/twitter-geofail-023-tweets-geotagged/. Bezocht op: 20/05/2016.

[13] Twitter Statistieken. http : / / www . statista . com / topics / 737 / twitter/. Bezocht op: 18/05/2016.

[14] Vladimir N. Vapnik. Statistical Learning Theory. Wiley-Interscience, 1998.

[15] Ir. R.P. Verbeek e.a. “Energie- en milieu-aspecten van elektrische personenvoertuigen”. In: TNO (2015).

[16] Voor- en nadelen van elektrisch rijden. http://www.anwb.nl/auto/themas/elektrisch-rijden/voor-en-nadelen. Bezocht op: 07/06/2016.

[17] Harry Zhang. The optimality of Naive Bayes. Tech. rap. University of New Brunswick, 2004.

Referenties

GERELATEERDE DOCUMENTEN

(bijvoorbeeld in Rotterdam), is de verwachting dat het nog lang duurt voordat dit commercieel wordt toegepast. De belangrijkste oorzaak is dat het technisch moeilijk is om efficiënt

Deze laadmethode wordt vooral gebruikt voor het laden van grote elektrische voertuigen zoals bussen maar ook andere toepassingen zoals E - trucks en haven- en

Al met al treffen we in de eerste 22 maanden van de missie in Uruzgan onder de Nederlandse bevolking gemiddeld 38 procent voorstanders aan, 30 procent tegenstanders en 33

De grootste groep EV-rijders zegt slim te laden bij de privé laadpaal thuis, door uitgesteld laden (via een instelling in de auto) en door thuis bewust ’s nachts buiten de

Hierbij kan men denken aan (basis)artsen die af en toe geneesmiddelen voorschrijven in privé situaties. Een ander voorbeeld is de bedrijfsarts die zelden een geneesmiddel

gelijk is aan 2,16 × 10 3 kg/m 3 en de atoomgewi hten voor natrium en hloor gelijk zijn aan 23,00 en 35,46, respe tievelijk. Oplossing: Om deze vraag te kunnen beantwoorden, dienen

plaats Lorentz Center, Leiden info www.lc.leidenuniv.nl 27 augustus. ❑ Special day in honour of Gerrit van Dijk Special day in honour of Gerrit van Dijk on the occasion of his

plaats Lorentz Center, Universiteit Leiden info www.lc.leidenuniv.nl. 30