Domein-afhankelijke sentimentdetectie op Twitter Nathan Claeys
Promotor: prof. dr. ir. Bart Dhoedt Begeleider: ir. Steven Van Canneyt Masterproef ingediend tot het behalen van de academische graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Informatietechnologie Voorzitter: prof. dr. ir. Daniël De Zutter Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2013-2014
Domein-afhankelijke sentimentdetectie op Twitter Nathan Claeys
Promotor: prof. dr. ir. Bart Dhoedt Begeleider: ir. Steven Van Canneyt Masterproef ingediend tot het behalen van de academische graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Informatietechnologie Voorzitter: prof. dr. ir. Daniël De Zutter Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2013-2014
Voorwoord Ik wil hier enkele mensen uitdrukkelijk bedanken die mij hebben bijgestaan bij het tot stand brengen van deze scriptie. Als eerste wil ik mijn begeleider, Steven Van Canneyt, en mijn promotor Bart Dhoedt bedanken. Zij hebben mij gedurende het jaar geholpen met mijn onderzoek, mijn vele vragen en het nalezen van deze scriptie. Vervolgens wil ik mijn vrienden Luc, Floris en mijn zus Naomi bedanken voor het nalezen van deze scriptie. Ik wil ook al mijn vrienden en familie bedanken voor de morele steun tijdens het werken aan deze scriptie. Tenslotte wil ik ook mijn dankbaarheid uitdrukken tegenover mijn ouders voor hun steun doorheen mijn studies.
Nathan Claeys, mei 2014
Toelating tot bruikleen “De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopi¨eren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie.”
Nathan Claeys, mei 2014
Domein-afhankelijke sentiment detectie op Twitter door Nathan CLAEYS Scriptie ingediend tot het behalen van de academische graad van burgerlijk ingenieur in de computerwetenschappen Academiejaar 2013–2014 Promotor: prof. dr. ir. Bart DHOEDT Scriptiebegeleider: ir. Steven VAN CANNEYT Faculteit Ingenieurswetenschappen Universiteit Gent Vakgroep Informatietechnologie Voorzitter: prof. dr. ir. Dani¨el DE ZUTTER
Samenvatting In dit artikel beschrijven we een methodologie die probeert een betere methode te voorzien om negatieve tweets te detecteren. Om dit te doen classificeren we tweets in domeinen en voeren een domein-afhankelijke sentiment classificatie uit. Deze domein-afhankelijke sentiment classificatie werkt met een ensemble van classificeerders en schat voor elke tweet een kans in dat deze negatief is. Dit ensemble bestaat uit een algemene classificeerder getraind op alle tweets in de trainingsverzameling en domeinspecifieke classificeerders die enkel getraind zijn op tweets behorend tot hun domein. Voor een gegeven tweet berekent de domeinspecifieke classificeerder dan een probabiliteit dat de tweet negatief is, voor de tweets van zijn domein. Die probabiliteit wordt samengevoegd met de probabiliteit van de algemene classificeerder. Op deze manier kunnen de tweets gerangschikt worden volgens de kans dat ze negatief zijn. We hebben de domeinen van de tweets op verschillende manieren bepaald. Dit is gedaan door gebruik te maken van entiteiten, hashtag clusters en een domein classificeerder. De voorgestelde methode behaalt een gemiddelde precisie van 59,65% tegenover de gemiddelde precisie van 51,70% van de basismethode die enkel de algemene classificeerder gebruikt.
Trefwoorden Twitter, sentiment classificatie, domein-afhankelijke classificatie
Domain-dependent sentiment detection on Twitter Nathan Claeys Supervisor(s): Steven Van Canneyt, Bart Dhoedt Abstract— In this article we describe a methodology which aims to provide a better method for detecting negative tweets. To do this we classify the tweets into domains and perform a domain-dependent sentiment classification. This domain-dependent classification works with an ensemble of classifiers and estimates for each tweet the probability that this tweet is negative. The estimated probability can be used to sort the tweets in a list of negative tweets. This ensemble consists of a general classifier trained on all tweets of the training data and domain specific classifiers that are only trained on tweets of their domain. The domains of the tweets are obtained by using the hashtags of the tweets and clustering these into domains. The tweets with a hashtag can then be used for a domain classifier that classifies all the tweets into a domain. The suggested approach achieves an average precision of 59.65% versus the average precision of 51, 70% from baseline that only uses the general classifier. Keywords— Twitter, sentiment classification, domain-dependent classification
I. I NTRODUCTION 1
Twitter is a microblogging service which allows people to network and send messages about all sorts of topics. The most characteristic property of Twitter is that each message can only contain 140 characters. These messages are usually public, so that anyone can read and react to them. Twitter has recently become very popular with over 140 million registered users and 340 million tweets per day2 . In this work we attempt to develop a method to detect the tweets with negative sentiments in a collection of tweets. There has been previous work to classify the tweets of Twitter into sentiment classes [1, 4], but to our knowledge this is the first work that directly uses the domains of tweets to improve the sentiment classification. To do this we use semantic domains to make a domain-dependent sentiment classification. For example the tweet ‘next DLC in coming weeks will be a infected horde mode!’ contains the word ‘infected’ which in general indicates a negative sentiment. However as this tweet is situated in the ‘Gaming’ domain, infected is here a gaming mode, which is positive. The domain information can thus be used to improve the calculation of the probability that a tweet is negative. We utilise this domain information by using a classifier per domain, these classifiers can then be combined with a general classifier which is trained for all tweets.
the opinions of people. To do this Bollen et al. use a rulebased system to calculate sentiment scores. In our research we perform a negative tweet detection that is based on the same machine learning techniques as for instance used in Go et al. [4]. Their approach tested several different classifiers such as Naive Bayes, SVM and Maximum Entropy. These classifiers were trained using emoticons in the tweets as labels, together with different types of features for the text of the tweet such as unigrams, bigrams and part-of-speech (POS) features. However the research of Bifen et al. [1] notes that the performance of the classifiers needs to be nuanced as it is shown that these classification algorithms often favour the most common class. Which typically results in good accuracy for this class at the cost of the smaller classes. With tweets the smaller class of sentiment classes is usually the class of negative tweets, in our collection we observed only 21,79% of the tweets being negative. By focussing on detecting negative tweets we avoid this problem. Most related to our work is the research of Wang et al. [5]. In this research they calculate the prior probability that a tweet containing a particular hashtag is positive or negative. This allows for example to say how positive Twitter is about ‘#Obama’, however it does not allow to find the negative tweets that are against ‘#Obama’. To calculate this probability they use a graph of hashtags and an SVM classifier for the tweets. The SVM classifier calculates an initial prior probability of a hashtag by classifying the tweets that pertain to the hashtag. To train the classifier they have manually annotated tweets and bag-of-words with unigram features. The percentages of positive and negative tweets then form the initial prior probabilities. The graph can then be used to improve this probability, in this graph all the hashtags are linked based on their co-occurence in tweets. The idea of the graph is that topic hashtags that co-occur will show similar percentages of positive and negative tweets, to use this the prior probabilities of each topic hashtag influences each other through Loopy Belief Propagation. Our research focusses on the use of hashtags to calculate a better classification of the tweets, while this research is focussed on the sentiment classification on a hashtag level.
II. R ELATED WORK Sentiment classification is a research area that specialises in the classification of texts into sentiments. Earlier research into this area was focused on the classification of long texts such as reviews or articles [2]. In more recent research the sentiment classification of tweets has gained more attention. The work of Bollen et al. [3] has shown that the sentiments in tweets can be used to measure 1 http://www.twitter.com 2 https://blog.twitter.com/2012/shutting-down-spammers
Another focus of our work is the domain classification of tweets, this to enable an improved sentiment classification. The research of Antenucci et al. [6] has implemented a technique for classifying the tweets into domains by using the Naive Bayes algorithm. These domains consist of hashtag clusters, which are clustered with the Spectral Clustering algorithm. The methodology of [6] is used in our research to classify the tweets into domain. To our knowledge our sentiment classifier is the first one to use domain information to estimate the probability that a tweet is negative.
III. S ENTIMENT CLASSIFICATION
them suited to serve as the topic of a tweet. The hashtag clustering method starts by find all the hashtags in the collection of tweets K. As there are typically several hashtags that have a very similar meaning, such as ‘#cod’ and ‘#callofduty’, it is necessary to place these hashtags into clusters. To cluster the hashtags we first define the hashtag distance, this distance uses the co-occurence of hashtags. The idea is that hashtags which co-occure in the same tweet have a similar or the same topic. The symbol nh1,h2 stands for the co-occurence frequency of the hashtags h1 and h2.
The sentiment classification estimate the probability that a tweet is negative. This allows us to sort the tweets according to the likelihood that a tweet is negative. The sentiment classifier is an ensemble of classifiers, which consists of one general classifier which is trained on all the tweets and a domain specific classifier which is only trained on tweets of its domain. The data used for this classifier consists of a training set K, a validation set V and the test set U . The classifiers are trained by tweets with emoticons, a positive emoticon is used as a positive label and a negative emoticon is used as a negative label. nh1,h2 nh1,h2 1 distanceh1,h2 = 1 − ( P|H| + P|H| )× In this work the sentiment classification uses a domain2 i=1 nh1,hi i=1 nh2,hi dependent classification methodology by calculating a weighted average of the probability of the general classifier Pt (negative|A)) This distance is used with the Spectral Clustering algorithm [7]. and the domain-dependent probability: The cut off distance of the spectral clustering algorithm is set at Pt (negative) = (1 − α) · Pt (negative|A) + α · Pt (negative|Dt ) 0.98, this was chosen by experimenting for a balanced cluster. This clustering resulted in the hashtag clusters which form the The collection Dt is the collection of all the domains of the domains. tweet t. The probability Pt (negative|Dt ) is the result of all the The hashtag clusters can now be used to give domains to those domain-dependent probabilities Pt (negative|d)∀d ∈ Dt of the tweets that have hashtags. This allows for a partial domain clasdomains of the tweet t. To combine the Pt (negative|d)∀d ∈ Dt sification, these tweets form the collection TD . The tweets TD probabilities we use the weights βd ∀d ∈ Dt of each domain were then used to train a domain classifier using the Naive Bayes specific classifier. The weights are all between 0 and 1, and are Multinomial algorithm [6] with a binary bag-of-words feature not normalized to be used together because they are chosen in- model. This domain classifier can then classify a tweet without dependently and it can not be predicted which domains occur hashtags into a domain, resulting in a complete domain classifitogether in a tweet. To use the weights βd ∀d ∈ Dt , we first cation. normalize these: βd V. DATA COLLECTION βd0 = P|D | t β The sentiment and domain classifier were implemented in i=1 i 3 4 The weights βd0 ∀d ∈ Dt can now be used to calculate a weighted Java 1.7 using the WEKA and MOA API. The tweets used were collected using the Twitter Streaming5 API. Through the average of all the domain-dependent probabilities: Streaming API only tweets with emoticons were collected and |Dt | X these were filtered to remove duplicates and any tweets with Pt (negative|Dt ) = (βi0 · Pt (negative|di )) contradicting emoticons. This resulted in a tweet collection of i=1 3 900 000 random tweets. 2 100 000 tweets were used as the The weight α is used as the weight of the importance of all the training set K while 900 000 were used for the validation set V domain specific classifiers, this is calculated by the average of and 900 000 for the test set U . The validation set V is used to optimise the domain weights for a maximum average precision. all weights βd ∀d ∈ Dt . Each classifier uses the Naive Bayes Multinomial algorithm VI. R ESULTS [4]. The features are gained by a bag-of-words model with the following feature values. The results of our sentiment classifier are compared against a Naive Bayes classifier which was trained with all the tweets of |R| max(p, n) the training set. To clarify the results of the ensemble we also × featuref = p+n p+n compare the results against the domain ensemble which sets all With p and n being the absolute frequency of occurrences of domain weights to 1 so that only the domain specific classifiers are used. To compare the results the precision recall curves of feature f in respectively positive or negative tweets. As can be seen, the ensemble requires that each tweet has at the list of tweets from test set U sorted by the probability that a least one domain to perform this sentiment classification with tweet is negative is used. Furthermore the average precision is used to objectively compare these curves. maximum effect. This resulted in the graph of Figure 1 and Table I. As can IV. D OMAIN CLASSIFICATION be seen, the performance of the ensemble with an average preciThe domain classification algorithm has to classify each tweet sion of 59,66% is a clear improvement over the general classifier into a fitting domain. To do this we first have to obtain the col- which has an average precision of 51,70%. The domain specific classifier will pick up specific domain features, while the lection of domains or classes that fit with the tweets. The domains are defined by the hashtag clusters that are 3 http://www.cs.waikato.ac.nz/ml/weka/ 4 http://moa.cms.waikato.ac.nz/overview/ present in the collection of tweets K. Hashtags are annota5 https://dev.twitter.com/docs/api/streaming tions on the tweet that tell what the tweet contains, making
Fig. 1. The precision recall curves of the general classifier (the baseline),the ensemble classifier and the domain specific classifiers.
Average precision
General 51,70 %
Ensemble 59,66 %
Domain 49,39 %
TABLE I AVERAGE PRECISIONS OF THE GRAPH IN F IGURE 1.
general classifier can assist the domain classifier because it has trained on more tweets. ‘So I juuuust started the first amazing 15 minutes of The Last of Us, when my ps3 shuts off and the red light started blinking.’ is an example tweet where the domain classifier shows a better probability than the general classifier. This tweet contains a negative label, however the general classifier classifies this as positive. This is probably because of the word ‘amazing’ which is the only general word which gives a real idea about the sentiment. The domain classifier however sees the word ‘red’ as negative, while the general classifier does not. This can be explained because in the cluster ‘...#consoles #ps3 #ps4...’ the word ‘red’ is associated with the crash of the ps3 which will then always show the infamous red light blinking. This is an example of a domain specific feature, this feature has a strong meaning in the domain that is non-existent in the general domain because the feature is widely used in a lot of different connotations in general tweets. This sort of features allow the domain specific classifier to make corrections to the negative probability of the smoothing ensemble. VII. C ONCLUSIONS In this research we have composed an ensemble of classifiers that consists of a general classifier and a domain-specific clas-
sifier for each domain in the tweets. This allowed us to utilise the domain information of tweets. Because the domain-specific classifiers are only trained on tweets in their domain, they were able to find domain-specific features. The domains of the tweets were found by using the hashtags in the tweets to form hashtag clusters. These clusters form comprehensive domains of the tweets. The tweets can then be classified in these domains by a domain classifier. This methodology is used to detect the negative tweets in the collection of tweets by calculating the probability that the tweet is negative. This ensemble classifier achieves an average precision of 59.65% versus the average precision of 51, 70% of the general classifier, which we consider as the baseline. This improvement is because the general and domain specific classifiers help each other. The general classifier can help because of his larger training collection, while the domain specific classifier has a domain specific model that fits with the tweets it classifies. In the course of this research it has become clear that the information provided by the tweet text alone is often insufficient for classifiers. The classification of tweets can thus be improved by either improving the given information or adding to the information of the tweet. Improving the information of the tweet could for example be done by correcting the spelling of the tweets. The adding of information could be done by also using the author of the tweets to combine the tweets of the same author. The domain methodology that is used in this paper can be improved because the current domains are formed by fixed hashtag clusters. However, hashtag clusters are typically formed by trending hashtags. This trending could be resolved by using a sliding window of hashtag cluster domains, so that the domains can be adjusted in time. R EFERENCES [1] A. Bifet, E. Frank, “Sentiment knowledge discovery in Twitter streaming data” in Proceedings of the 13th International Conference on Discovery Science, Pages 1-15, 2010. [2] B. Pang, L. Lee, S. Vaithyanathan, “Thumbs up? Sentiment classification using Machine learning techniques” in Proceedings of the ACL-02 Conference on Empirical Methods in Natural Language Processing, Pages 79-86, 2002 [3] J. Bollen, A. Pepe, H. Mao, “Modeling public mood and emotion: Twitter Sentiment and socio-economic phenomena”, in Proceedings of the Fifth International AAAI Conference on Weblogs and Social Media, 2011. [4] A. Alec, R. Bhayani, L. Huang, “Twitter sentiment classification using distant supervision” in CS224N Project Report, Stanford, Pages 30-38, 2009. [5] X. Wang, F. Wei, X. Liu, M. Zhou, M. Zhang, “Topic sentiment analysis in Twitter: a graph-based hashtag sentiment classification approach” in Proceedings of the 20th ACM International Conference on Information and Knowledge Management, Pages 1031-1040, 2011 [6] D. Antenucci, G. Handy, A. Modi, M. Tinkerhess “Classification of tweets via clustering of hashtags” in EECS 545 Project, 2011 [7] U. von Luxburg, “A tutorial on spectral clustering” in Statistics and Computing, Volume 17, Pages 395-416, 2007
INHOUDSOPGAVE
i
Inhoudsopgave 1 Inleiding
1
2 Gerelateerd werk
3
2.1
2.2
Sentiment classificatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.1.1
Algemene Sentiment Classificatie . . . . . . . . . . . . . . . . . . . . . . .
3
2.1.2
Sentiment Classificatie voor Twitter . . . . . . . . . . . . . . . . . . . . .
4
Domein classificatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3 Methodologie
8
3.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2
Sentiment Classificatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.1
Basismethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.2
Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.2.3
Ensemble van classificeerders . . . . . . . . . . . . . . . . . . . . . . . . .
11
Domein Bepaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.3.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.3.2
Entiteiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.3.3
Hashtag Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.3.4
Domein Classificatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.3
4 Data Verzameling en Implementatie
25
4.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.2
Data verzameling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.2.1
Data Entiteiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.2.2
Data Hashtag Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
Implementatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.3
INHOUDSOPGAVE
ii
4.3.1
Sentiment Classificatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.3.2
Domein Bepaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
5 Resultaten
32
5.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
5.2
Evaluatiemethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
5.3
Entiteiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
5.3.1
Vergelijking onder optimale condities met enkel domein tweets . . . . . .
34
5.3.2
Vergelijking met willekeurige tweets . . . . . . . . . . . . . . . . . . . . .
39
Hashtag Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5.4.1
Vergelijking met willekeurige tweets met hashtag clusters . . . . . . . . .
41
Volledige Domein Classificatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.5.1
45
5.4
5.5
6 Conclusies
Vergelijking met tweets met domein classificatie . . . . . . . . . . . . . . .
49
INLEIDING
1
Hoofdstuk 1
Inleiding Twitter is een microblog waarmee mensen kunnen netwerken en berichten versturen over allerlei onderwerpen. Het belangrijkste kenmerk van Twitter is dat elk bericht, oftewel tweet, maximaal 140 karakters lang is. Berichten worden meestal publiek gepost, zodat iedereen deze kan lezen en erop kan reageren. Deze dienst is recent heel populair geworden met meer dan 140 miljoen geregistreerde gebruikers en 340 miljoen tweets per dag1 . Twitter laat mensen dan ook toe om op een heel bondige manier hun mening te geven over elk mogelijk onderwerp. Dit heeft als gevolg dat Twitter voor allerlei toepassingen gebruikt wordt zoals onderzoek naar ziekteverspreiding, waarschuwingen voor natuurrampen ...2 . Ook al is er minder informatie te vinden in een tweet dan in een langere tekst, de grote hoeveelheid aan tweets betekent dat Twitter een beeld kan geven van de publieke opinie over bijna elk onderwerp. Dit komt omdat er een grote hoeveelheid en diversiteit is aan mensen die tweeten. Verder is het ook mogelijk altijd recente tweets over een onderwerp te vinden. Dit allemaal in tegenstelling tot grotere teksten, zoals reviews, die eerder aangeven hoe ´e´en persoon over dat onderwerp denkt. Deze teksten zijn ook meestal ouder dan tweets, waardoor tweets actuelere informatie bevatten. Dit betekent dat Twitter een interessante bron is om metingen te doen over de publieke opinie. Zo kan men bijvoorbeeld de publieke opinie meten bij verkiezingen om de winnaar proberen te voorspellen of om de campagne bij te stellen [1]. Als beursgenoteerd bedrijf is het ook belangrijk om te reageren op tweets, aangezien die een aanduiding kunnen zijn van veranderingen in de publieke perceptie van de aandelenwaarde [2]. Bij dit soort zaken is het vooral van belang om er de tweets uit te halen die een negatief sentiment weergeven. Deze 1 2
https://blog.twitter.com/2012/shutting-down-spammers https://blog.twitter.com/2012/the-human-face-of-big-data
INLEIDING
2
tweets geven immers weer wat de gebruikers precies afkeuren of wat hen net stoort. Met de negatieve tweets kan men dan deze punten aanpakken om de publieke opinie ten goede te keren. Door de grote hoeveelheid data van Twitter is het nodig deze negatieve tweets automatisch te kunnen detecteren. Dit is mogelijk door middel van sentiment classificatie. Sentiment classificatie op tweets is echter niet vanzelfsprekend aangezien sentiment subjectief is waardoor zelfs manuele sentiment classificatie tegenstrijdige resultaten kan opleveren [3]. Het traditionele onderzoek van sentiment classificatie richt zich vooral op het classificeren van sentiment in langere, kwalitatieve teksten zoals reviews [4]. Tweets zijn echter maximaal 140 karakters lang, bevatten weinig tot geen structuur en zijn vaak grammaticaal fout geschreven. Eerder onderzoek naar sentiment classificatie in Twitter heeft dan ook aangetoond dat sentiment classificatie vaak moeilijker is dan op langere teksten en dat de bestaande technieken niet optimaal zijn voor de Twitter sentiment classificatie [8, 9]. In dit onderzoek wordt geprobeerd om een goede detectiemethode op te stellen voor negatieve tweets. Hoewel er al onderzoek bestaat naar de sentiment classificatie van tweets, is de performantie van de huidige methodes echter nog niet optimaal. Daarom voeren we onderzoek naar het verbeteren van deze methodes door gebruik te maken van semantische domeinen. De domeinen van tweets geven aan waar de tweets in dat domein over gaan. Het idee is dat een semantisch domein waartoe een tweet behoort, informatie geeft over hoe sentimenten uitgedrukt worden in de tweet. Zo kan een tweet bijvoorbeeld gaan over videogames, het idee is dan dat de informatie van een domein als ‘Gaming’ ons beter in staat stelt de negatieve sentimenten te detecteren. In dit onderzoek wordt geprobeerd om deze informatie te leren te gebruiken met behulp van een classificeerder per domein samen met een algemene classificeerder voor alle domeinen. Deze kunnen dan gecombineerd worden gebruikt voor een betere detectie. We geven nu een overzicht van de structuur van de volgende hoofdstukken. In hoofdstuk 2 wordt een studie gemaakt van de gerelateerde onderzoeken en hoe die in verhouding staan met ons onderzoek. Vervolgens wordt in hoofdstuk 3 beschreven hoe de sentiment detectie op tweets wordt uitgevoerd. In hoofdstuk 4 wordt dan uitgelegd hoe de tweets zijn verzameld en hoe de methodes van het voorgaande hoofdstuk ge¨ımplementeerd zijn. Deze data en implementatie is vervolgens gebruikt om te testen hoe goed de sentiment detectie werkt, deze resultaten worden ge¨evalueerd in hoofdstuk 5. Tenslotte worden in hoofdstuk 6 de conclusies van het onderzoek gebundeld.
GERELATEERD WERK
3
Hoofdstuk 2
Gerelateerd werk 2.1 2.1.1
Sentiment classificatie Algemene Sentiment Classificatie
Sentiment classificatie is een onderzoeksgebied dat zich specialiseert in het classificeren van sentimenten van teksten. Het eerste onderzoek hierin werd uitgevoerd op langere teksten zoals reviews en nieuwsartikels. Zo maakt het onderzoek van Pang et al. [4] gebruik van machine learning technieken om de sentimenten van film reviews te classificeren. Ze hebben een vergelijkende studie gemaakt van verschillende classificeerders en features om te zien welke het beste werken. De beste combinatie in hun onderzoek is een Support Vector Machine (SVM) met unigram features. Ze halen hiermee goede resultaten, maar merken op dat sentiment classificatie moeilijk is door de soms tegenstrijdige emoties in de teksten. In het onderzoek van Read [7] gaat men verder met het onderzoeken van sentiment classificatie met behulp van een Naive Bayes en een SVM classificeerder. Het onderzoek bekijkt of de classificeerdermodellen afhankelijk zijn van het domein en de tijd waarin teksten gemaakt zijn. Om dit te bestuderen hebben ze twee bronnen van tekst gebruikt: de Polarity 1.0 dataset van [4] en hun eigen verzameling van Usenet newsgroups artikels. Een classificeerder die op het ene type tekst werd getraind behaalde slechtere resultaten als hij gebruikt werd om het andere type tekst te classificeren. Om de tijdsafhankelijkheid te onderzoeken hebben ze twee verzamelingen van film reviews uit verschillende tijdsperioden gebruikt. Ook hier werd uit het onderzoek duidelijk dat de modellen beter presteerden op de reviews die uit hun eigen tijdsperiode kwamen. In ons onderzoeken we ons vermoeden dat het classificeerder model ook afhangt van het semantische domein, zodat
2.1 Sentiment classificatie
4
een classificeerder die getraind is op ‘Gezondheid’ tekst het beter doet om ‘Gezondheid’ tekst te classificeren dan ‘Gaming’ tekst.
2.1.2
Sentiment Classificatie voor Twitter
Sentiment classificatie voor tweets is een recenter onderzoeksgebied dat veel aandacht heeft gekregen de laatste jaren. Het belangrijkste verschil tussen tweets en andere teksten is dat tweets beperkt zijn tot 140 karakters. Hierdoor komt het ook vaak voor dat de spelling en grammatica veel minder correct is dan bij andere teksten. Het onderzoek van Bollen et al [6] toont aan dat de sentimenten in tweets bruikbaar zijn om de meningen van mensen te meten. Dit betekent dat het mogelijk is om tweets te gebruiken om negatieve meningen over een onderwerp te kunnen detecteren. Om dit te doen maken ze gebruik van een regelgebaseerd systeem om een emotiescore te berekenen van tweets. Dit heeft de beperking dat het enkel werkt voor de taal waarin het opgesteld wordt en dat het niet kan evolueren in de tijd. Dit is dan ook niet in staat om automatisch nieuwe features aan te leren die voorkomen in de tweets. Hiermee bestuderen ze de sentimenten in de tweets en vergelijken ze deze met bepaalde gebeurtenissen zoals de Olympische spelen om te zien hoe de sentimenten van de tweets overeenkomen met deze gebeurtenissen. Ze concluderen dat de sentimenten van de tweets een correlatie hebben met deze gebeurtenissen en dus dat tweets een beeld kunnen geven van de publieke opinie. In het onderzoek van Bermingham et al. [3] vergelijkt men de sentiment classificatie van microblogs, ook beperkt tot 140 karakters, met de classificatie van langere teksten. Om de de classificatie uit te voeren wordt gebruik gemaakt van machine learning technieken om een SVM classificeerder te trainen. De classificatie wordt getest met verschillende features. Als standaard feature wordt de bag-of-words met unigrammen gebruikt. Ze proberen om deze feature te verbeteren door ook bigrammen en POS features te testen. Om de classificeerder te trainen worden de microblogs en teksten gelabeld in 3 klassen: positief, negatief en neutraal sentiment. Deze labeling is hier manueel, het nadeel hiervan is dat er slechts een beperkte hoeveelheid trainingsdata gebruikt kan worden. Bermingham et al. stellen dat de bigrammen en POS features weliswaar een betere nauwkeurigheid geven voor de langere teksten maar uit hun experimenten blijkt dat deze features de nauwkeurigheid bij de microblogs niet verbeterd. De microblogs worden dan ook het best geclassificeerd met hun standaard methode, bag-of-words met unigrammen features. Go et al. [5] hebben onderzoek gedaan naar het gebruik van verschillende features en classificeerders om het sentiment van tweets te classificeren. Ze hebben gebruik gemaakt van unigrams, bigrams en
2.1 Sentiment classificatie
5
part-of-speech (POS) features samen met de multinomiale Naive Bayes, Maximum Entropy en Support Vector Machine (SVM) modellen. Om de tweets te labellen werd er gebruik gemaakt van een automatische labeling aan de hand van de emoticons in de tweets. Dit heeft het voordeel dat dit bij elke taal gebruikt kan worden en automatische training van de classificeerders toelaat. Uit dit onderzoek is gebleken dat de bigram feature op zich geen gegarandeerde verbetering geeft tegenover de unigram features terwijl dit wel voor een grote stijging in de feature dimensies zorgt. Dit bevestigd het werk van [3] bij automatische labeling. De POS features werden gebruikt als toevoeging bij de unigram features, maar dit kwam slechter uit dan zonder de toevoeging. Bij het gebruik van unigrammen en bigrammen features waren de Naive Bayes en Maximum Entropy het beste, maar bij enkel unigram features was de SVM het beste model. Het is hierbij belangrijk op te merken dat er altijd weinig verschil was in de nauwkeurigheid en dat de optimalisatie van de classificeerders en features in hun geval dus voor weinig verbeteringen zorgde. Uit het onderzoek is wel gebleken dat machine learning technieken wel een goede nauwkeurigheid behalen op de sentiment classificatie van tweets. Volgens het onderzoek van Bifet et al. [8] moet dit echter genuanceerd worden aangezien de normale classificatie nauwkeurigheid metriek het nadeel heeft dat er een bias is tegenover de meest voorkomende klasse. In het geval van Twitter zijn dit typisch de positieve tweets, in dit onderzoek bevatten slechts 21,79% van de tweets negatieve emoticons. Om ervoor te zorgen dat de metriek evenveel rekening houdt met elke klasse gebruikt men de Kappa metriek. Met deze metriek wordt een slechte classificatie van een kleinere klasse gelijkwaardig beoordeeld tegenover de grotere klasse. Met deze opstelling haalt de multinomiale Naive Bayes gelijkaardige nauwkeurigheden als [5] maar met een Kappa metriek die een stuk lager ligt. Uit dit onderzoek blijkt dus dat er vaak een grote bias is in sentiment classificatie tegenover een of meerdere klassen. Dit is van bijzonder belang bij het specifiek detecteren van tweets met de negatieve klasse. Bij het detecteren willen we immers vooral dat de precisie en recall voor de negatieve klasse goed is. Het onderzoek van Wang et al. [9] is het meest gerelateerd aan ons onderzoek. In dit onderzoek wordt onderzoek gedaan over onderwerp en sentiment hashtags. Onderwerp hashtags zijn hashtags als ‘#Obama’, het is een annotatie van een onderwerp en is daarom inherent neutraal. Sentiment hashtags zijn hashtags als ‘#happy’, deze hashtags drukken duidelijk een positief of negatief sentiment uit. Het doel van dit onderzoek is het in schatten van de a priori sentiment probabiliteit bij elke onderwerp hashtag. Deze probabiliteit drukt de kans uit dat een tweet die deze onderwerp hashtag heeft positief of negatief is. Dit laat bijvoorbeeld toe om te meten hoe
2.2 Domein classificatie
6
positief Twitter is over het onderwerp ‘Obama’. De a priori probabiliteit van deze sentiment hashtags wordt ingesteld op het sentiment dat de hashtag uitdrukt. De onderscheiding tussen de onderwerp en sentiment hashtags gebeurt door middel van de detectie van positieve of negatieve woorden in de hashtag, deze worden komen van een lexicon. Om deze sentiment probabiliteit van de onderwerp hashtags te berekenen maken ze gebruik van twee zaken, de eerste is een SVM classificeerder en de tweede is een graaf van hashtags. De SVM classificeerder wordt gebruikt om de tweets van elke onderwerp hashtag te classificeren in positief of negatief door middel van bag-of-words unigram features. Deze classificeerder is getraind op tweets die manueel gelabeld zijn met de sentimentklassen. De verhouding tussen de positieve en negatieve tweets geeft de initi¨ele sentiment probabiliteit van de onderwerp hashtag. De sentiment probabiliteit wordt dan verbeterd door gebruik te maken van de hashtag graaf. De graaf is een graaf van sentiment en onderwerp hashtags die alle hashtags verbindt door middel van van de co-occurence van de hashtags in tweets. Het idee van de graaf is dat verbonden onderwerp hashtags een gelijkaardige sentiment probabiliteit hebben. Om hier gebruik van te maken wordt Loopy Belief Propagation gebruikt om de probabiliteiten van de onderwerp hashtags aan te passen met de probabiliteiten van zijn buren. Dit heeft als gevolg dat onderwerp hashtags die verbonden zijn met elkaar een meer gelijkaardige sentiment probabiliteit krijgen en dat de onderwerp hashtags benvloed worden door de duidelijke sentimenten van de sentiment hashtags. Dit onderzoek heeft als nadeel dat het wel mogelijk is om bijvoorbeeld te detecteren dat een bepaald onderwerp negatief gezien wordt door de tweets, maar dat het niet mogelijk is om de negatieve tweets te detecteren. Waar dit onderzoek vooral gericht is op de sentiment probabiliteit van de hashtags, richt ons onderzoek zich vooral op het gebruik van de hashtags om een betere classificatie van de tweets uit te voeren,
2.2
Domein classificatie
Voor onze sentiment classificatie methode uit te voeren is er nood aan een methode om het domein van tweets te bepalen. Daarom bespreken we hier verschillende recente onderzoeken in domein classificatie bij tweets. Zo hebben Mazzia et al. [10] recent een onderzoek gedaan naar het vinden van een gepaste hashtag bij een tweet. Deze classificatie bestaat uit een lijst van hashtags bij elke tweet, waarbij het doel is om een zo goed mogelijk passende lijst bij de tweet te brengen. Dit werkt door een Naive Bayes classificeerder die getraind wordt op de
2.2 Domein classificatie
7
tweets met hun hashtags. Vervolgens kunnen ze met deze classificeerder een lijst van de meest waarschijnlijke hashtags bij een willekeurige tweet opstellen. Voor ons onderzoek is het het beste om een duidelijk domein te hebben bij een tweet, om deze reden is deze methode niet ideaal voor onze domein bepaling. Antenucci et al. [11] maken gebruik van clustering technieken. In hun onderzoek clusteren ze de hashtags voor ze de classificeerder trainen. Deze geclusterde hashtags kan men zien als semantische domeinen. Op deze manier is er veel minder semantische overlap tussen de klassen die de classificeerder moet gebruiken. Na deze clustering van semantische gelijkaardige hashtags trainen ze een classificeerder, gelijkaardig als in het onderzoek van Mazzia [10]. Hun classificeerder classificeert de tweets echter in ´e´en van de clusters, ofwel domeinen. Dit onderzoek geeft een goede techniek om de domeinen van tweets te bepalen en wordt gebruikt in ons onderzoek.
METHODOLOGIE
8
Hoofdstuk 3
Methodologie 3.1
Inleiding
In dit hoofdstuk wordt de methodologie van dit onderzoek uiteengezet. Dit hoofdstuk begint dan ook met het uiteenzetten van de methodologie van de sentimentdetectie van negatieve tweets in sectie 3.2. In sectie 3.3 wordt de domein bepaling uiteengezet, deze is noodzakelijk voor de sentimentdetectie.
3.2
Sentiment Classificatie
In deze sectie wordt uitgelegd hoe het onderzoek naar de sentiment classificatie is uitgevoerd. Hiervoor leggen we eerst uit wat de methodologie van de gebruikte basismethode (baseline) is in sectie 3.2.1. Vervolgens wordt uitgelegd wat het concept is achter ons onderzoek naar de verbeterde sentiment classificeerder in sectie 3.2.2. Ten slotte wordt er uitgelegd wat de gebruikte methodologie is van de sentiment classificeerder uit dit concept in sectie 3.2.3.
3.2.1
Basismethode
De methode die hier beschreven staat, vormt de basismethode waartegen onze sentiment classificeerder vergeleken wordt. Deze basismethode wordt verder de standaard classificeerder genoemd. De standaard classificeerder heeft als trainingsinput een verzameling van tweets en kan daarna voor elke tweet de probabiliteit geven dat de tweet negatief is. Aangezien de probabiliteit wordt gegeven dat de tweet negatief is, is dit ook automatisch het complement van de probabiliteit
3.2 Sentiment Classificatie
9
dat een tweet positief is. Dit is dus een classificatie in de twee klassen van positief sentiment en negatief sentiment in de tweet. Alle tweets in de trainingsinput hebben een label dat weergeeft of het een tweet is met een positief sentiment of een tweet met een negatief sentiment. Om nu de classificeerder te doen werken met de tweets wordt elke tweet t in de trainingsinput K omgezet naar een feature vector. De feature vector waarop de classificeerder werkt is gebaseerd op de bag-of-words features. Hierin bevat de feature vector een dimensie voor elke token die voorkomt in de trainingsinput K. De verzameling van al deze tokens en dus alle dimensies is de verzameling W . Voor elke tweet moeten deze dimensies nu waardes krijgen. Hierbij is elke tweet een document dat wordt omgezet naar een bag-of-words door tokenisatie. Dit resulteert in de verzameling Wt van alle tokens in de tweet t. Het nadeel van de standaard bagof-words is dat de volgorde van de woorden in de tweet verloren gaat maar dit vereenvoudigt de feature vector wel. De volgende stap is nu de omzetting van de bag-of-words naar een feature vector vt . Deze feature vector vt met component cw met w ∈ W krijgt de waarde 0 voor elke feature token w die niet in de tweet voorkomt en de waarde fw voor elke token w ∈ Wt die wel in de tweet voorkomt. Deze waarde, fw , bestaat uit twee componenten. De eerste component is het genormaliseerde maximum van de absolute frequentie in positieve tweets en de frequentie in negatieve tweets in de verzameling K. Deze component zorgt ervoor dat tokens die veel voorkomen in ´e´en klasse, positief of negatief, een hogere waarde krijgen. De tweede component is de ge¨ınverteerde documentfrequentie van de token w. Dit zorgt ervoor dat de tweets die algemeen veel voorkomen een lagere waarde krijgen. De symbolen pw en nw staan voor respectievelijk de frequentie waarmee de token w in positieve tweets of negatieve tweets voorkomt in de verzameling K. fw =
max(pw , nw ) |K| × pw + n w pw + nw
Deze feature vector is gekozen na vergelijkingen met de binaire en token frequentie feature vectoren. Omdat uit deze initi¨ele experimenten bleek dat deze een mindere nauwkeurigheid gaven beschouwen we deze verder niet in ons onderzoek. Deze feature vector wordt uiteindelijk gebruikt in het classificeringsalgoritme om te trainen en te classificeren. Deze feature vector kan door verschillende classificatie algoritmes gebruikt worden om de negatieve tweets te detecteren. Het classificeringsalgoritme dat in dit onderzoek wordt gebruik is Naive Bayes met het Multinomiale model [3, 5]. Bij initi¨ele experimenten is dit classificeringsalgoritme vergeleken met Support Vector Machines [3, 5, 9], hieruit bleek dat deze minder goed
3.2 Sentiment Classificatie
10
werkt en dus hebben we deze verder niet beschouwt. Dit komt overeen met de resultaten van vorig onderzoek [3]. De Naive Bayes Multinomial classificeerder berekent de negatieve probabiliteit Pt (negatief|CL), waarbij CL het classificeerder model is dat het resultaat is van de training. De probabiliteit Pt (negatief|CL) wordt berekend door gebruik te maken van de a priori probabiliteit dat een tweet negatief is P (negatief|CL) en de probabiliteiten, P (w|negatief)∀w ∈ Wt , dat een token w voorkomt in een negatieve tweet t die de token verzameling Wt heeft. Pt (negatief|CL) = P (negatief|CL) ·
Y
P (w|negatief)
w∈Wt
Deze probabiliteiten worden berekend door middel van het Naive Bayes Multinomial algoritme door middel van de voorheen gedefini¨eerde feature vectoren.
3.2.2
Concept
Het doel van dit onderzoek is het verbeteren van de standaardmethode om negatieve tweets te vinden. De standaardmethode maakt gebruik van ´e´en classificeerder die een probabiliteit inschat de tweet negatief is onafhankelijk van andere informatie over de tweet. Om deze standaardmethode te verbeteren wordt in dit onderzoek gebruik gemaakt van de semantiek in tweets, meer bepaald door rekening te houden met de domeinen waartoe een tweet behoort. Tweets hebben vaak een onderwerp waarover een mening wordt geventileerd. De mening vormt een positief of negatief sentiment over het onderwerp. We defini¨eren een domein als een verzameling van onderwerpen die semantisch samen horen. De tweet ‘...ordered call of duty ghosts about a week ago and i didnt get it yet...’ heeft bijvoorbeeld als onderwerp het computerspel ‘call of duty’ en de tweet ‘My 3DS XL charging cradle shipped out...’ heeft als onderwerp de spelconsole ‘3DS XL’. Beide onderwerpen maken deel uit van het domein ‘Gaming’, dus deze tweets behoren tot hetzelfde domein. Daartegenover gaat de tweet ‘Can’t believe how much my arm is hurting where I’ve had my flu jab :(’ over het onderwerp ‘griepvaccinaties’ en dus past deze tweet in het domein ‘Gezondheid’. Het is belangrijk om op te merken dat tweets ook tot meerdere domeinen kunnen behoren. Een voorbeeld hiervan is de tweet ‘...Want Facebook To Know That #Jesus Changed By Life...’, waarin zowel religie een rol speelt, als sociale media. Deze tweet behoort dus tot zowel het domein ‘Internet’ als ‘Religie’. Deze domeinen kunnen nuttig zijn voor de sentimentdetectie omdat elk semantisch domein zijn eigen typische woordenschat heeft die in andere domeinen niet gebruikt wordt of daar een andere betekenis heeft. Deze woordenschat is dus domeinspecifiek. Een voorbeeld hiervan in
3.2 Sentiment Classificatie
11
het ‘Gaming’ domein is de tweet ‘...next DLC in coming weeks will be a infected horde mode!...’ waarin een positief sentiment over een uitbreiding op het spel wordt uitgedrukt. Het woord ‘infected’ in de tweet betekent echter ontstoken, wat in het domein ‘Gezondheid’ eerder als negatief beschouwd zal worden, maar hier in het domein ‘Gaming’ slaat dit op deze uitbreiding, waardoor het positief is. Dit is een voorbeeld van domeinspecifieke woorden die moeilijk op te pikken zijn door een classificeerder die geen kennis heeft over het domein van de tweet aangezien die tegenovergestelde sentimenten over de woorden ontvangt vanuit de verschillende domeinen. In dit onderzoek wordt dus gebruik gemaakt van het domein van de tweet om tot een betere detectie van de negatieve sentimenten te komen. Omdat de domeinspecifieke woorden mogelijks niet correct ge¨ınterpreteerd worden wanneer een classificeerder tegenstrijdige sentimenten ontvangt, wordt in dit onderzoek per domein een classificeerder getraind. Dit betekend dat de domeinspecifieke classificeerder enkel op tweets van zijn domein wordt getraind. Deze domeinspecifieke classificeerder zou dan in staat moeten zijn om beter gebruik te maken van deze woorden dan een algemene classificeerder die op alle tweets getraind is. Doordat de domeinspecifieke classificeerders slechts een fractie van de totale verzameling tweets kunnen gebruiken, hebben deze echter minder training tweets tot hun beschikking. Dit kan als gevolg hebben dat hun classificatie minder goed is bij woorden die niet specifiek bij het domein horen. Om dit nadeel te compenseren maken we ook gebruik van een algemene classificeerder die op alle tweets getraind is. Een combinatie van de algemene classificeerder en de domeinspecifieke classificeerders zou dan een betere inschatting kunnen geven of een tweet negatief is.
3.2.3
Ensemble van classificeerders
De sentiment classificatie heeft als doel om voor elke tweet de probabiliteit in te schatten dat de tweet negatief is. Op die manier kunnen we alle tweets sorteren in een gesorteerde lijst volgens deze probabiliteit. Bij een perfecte classificatie geeft deze lijst dan eerst de meest negatieve tweets terug, wat noodzakelijk is. Om deze sentiment classificatie op te stellen zoals in sectie 3.2.2 wordt er gebruik gemaakt van een ensemble van classificeerders, zie Figuur 3.1. Dit ensemble van classificeerders werkt met een trainingsset K van tweets, een validatieset V en een testset U . Deze sets zijn allemaal volledig gesplitst van elkaar en worden verder beschreven in hoofdstuk 4. Voor elk van deze sets wordt er verondersteld dat de domeinen van de tweets gekend zijn, de domein bepaling van deze tweets gebeurt volgens de methode beschreven in sectie 3.3. Er zitten twee types van classificeerder in dit ensemble, het eerste type is de algemene classi-
3.2 Sentiment Classificatie
12
Figuur 3.1: Ensemble van classificeerders ficeerder die op elke tweet in de trainingsset is getraind. Vervolgens is er de verzameling van domeinspecifieke classificeerders, waarin er een classificeerder is per gegeven domein die enkel getraind is op tweets van dit domein. Hierbij is D de verzameling van alle mogelijke domeinen. De probabiliteit dat een gegeven tweet t negatief is wordt aangegeven door Pt (negatief). Deze probabiliteit wordt bepaald door een gewogen gemiddelde te nemen van twee probabiliteiten. De eerste probabiliteit Pt (negatief|A) is de probabiliteit dat de tweet negatief is volgens de algemene classificeerder. De tweede probabiliteit Pt (negatief|Dt ) is de probabiliteit dat de tweet negatief is gegeven alle domeinen Dt van de tweet t. Het gewogen gemiddelde maakt gebruik van het gewicht van de domeinspecifieke classificeerder, α, dat tussen 0 en 1 ligt en het complement van dit gewicht, 1 − α: Pt (negatief) = (1 − α) · Pt (negatief|A) + α · Pt (negatief|Dt ) De tweede probabiliteit, Pt (negatief|Dt ), is op zich een gecombineerde probabiliteit van de domeinspecifieke classificeerders die bij deze tweet gebruikt zijn. Om deze probabiliteit in te schatten worden de domeinen van de tweet bekeken. Deze vormen de verzameling Dt van alle domeinen waartoe de tweet behoort. Voor elk van de domeinen van de tweet wordt de tweet opnieuw geclassificeerd door de domeinspecifieke classificeerder. Elk van deze domein classificeerders geeft een probabiliteit Pt (negatief|d); dit is de probabiliteit dat de tweet t negatief is gegeven het domein d van de verzameling Dt . Alle domein classificeerders d ∈ Dt hebben ook een gewicht, βd , tussen 0 en 1. Dit gewicht wordt geoptimaliseerd aan de hand van de validatieset V .
3.2 Sentiment Classificatie
13
Dit gewicht heeft twee doelen. Ten eerste worden de gewichten van alle domein classificeerders d ∈ Dt gebruikt om het gewicht α te berekenen. Dit gebeurt door het gemiddelde te nemen van alle gewichten βd ∀d ∈ Dt : α=
|D Pt |
βi
i=1
|Dt |
Ten tweede worden deze gewichten gebruikt om alle domeinspecifieke probabiliteiten in de kans Pt (negatief|Dt ) te combineren. Om deze probabiliteit in te schatten gebruiken we de probabiliteiten Pt (negatief|d)∀d ∈ Dt en de gewichten βd ∀d ∈ Dt in een gewogen gemiddelde. Het probleem is nu nog dat de gewichten βd niet op voorhand op elkaar afgestemd kunnen worden en dus geen totale som van een gewicht van 1 vormen zoals vereist. Dit komt doordat het niet mogelijk is op voorhand te weten welke domeinen Dt allemaal samen zullen voorkomen, zodanig dat het elke combinatie van gewichten anders genormaliseerd moet worden. Het is dus nodig om de gewichten eerst te normaliseren zodanig dat de som van alle gewichten van de domeinen Dt 1 is. Dit gebeurt door de volgende berekening. Hierbij staat βd0 voor het genormaliseerde gewicht van domein d. βd0 =
βd |D Pt |
βi
i=1
Met deze nieuwe gewichten is het nu mogelijk om de domeinspecifieke probabiliteit Pt (negatief|Dt ) te bekomen dat de tweet negatief is door een gewogen gemiddelde van elke probabiliteit Pt (negatief|d) met de gewichten βd0 . Pt (negatief|Dt ) =
|Dt | X i=1
βi0 · Pt (negatief|Di )
Voor de berekening van Pt (negatief|A) en Pt (negatief|d) van de respectievelijke algemene classificeerder en domeinspecifieke classificeerders wordt de basismethode gebruikt die beschreven staat in de vorige sectie 3.2.1. Hierbij zijn de gebruikte A en d de classificeerder modellen voor de basismethode van sectie 3.2.1. Deze classificeerders gebruiken dus allemaal dezelfde methode om tweets te classificeren en verschillen dan ook enkel in hun classificeerder model dat afhangt van de tweets die ze krijgen als training. Om te meten hoe goed dit ensemble van classificeerders een negatieve sentiment lijst kan opstellen vergelijken we deze met de basismethode (baseline), die eerder beschreven is (sectie 3.2.1).
3.3 Domein Bepaling
3.3 3.3.1
14
Domein Bepaling Inleiding
In het vorige deel hebben we uitgelegd hoe de detectie van negatieve tweets werkt. Deze methode vereist echter dat het domein van de tweets gekend is. In deze sectie wordt uitgelegd hoe de domein bepaling van tweets werkt. Eerst wordt een methode besproken op basis van entiteiten in de tweets in sectie 3.3.2. Vervolgens wordt een methode uitgelegd die gebaseerd is op de hashtags in tweets in sectie 3.3.3. Ten slotte wordt een domein classificatie uitgelegd die een domein bepaalt voor tweets zonder hashtag in sectie 3.3.4.
3.3.2
Entiteiten
Concepten Om de methodologie van de domein bepaling via entiteiten duidelijk uit te kunnen leggen, worden hier eerst alle concepten en hun relatie met elkaar uitgelegd. Eerst zijn er de entiteiten: de entiteiten die in dit onderzoek gebruikt worden zijn zelfstandige naamwoorden die een semantisch begrip duidelijk voorstellen. Dit wil zeggen dat het een zelfstandig naamwoord is dat voor slechts ´e´en interpretatie open staat, zoals ‘christendom’ of ‘basketbal’. Vervolgens zijn er de onderwerpen en domeinen overeenkomstig met de uitleg in sectie 3.2.2. Een onderwerp is iets waarover op Twitter gediscussieerd wordt. Elke entiteit komt overeen met een onderwerp, een onderwerp in een tweet kan dus herkend worden aan de entiteit die in de tweet voorkomt. Zo zijn er de entiteiten ‘Playstation’ en ‘Xbox’ die elk een onderwerp voorstellen. De domeinen zijn de klassen waarin we een tweet willen classificeren. Een domein wordt gevormd door een verzameling van onderwerpen die semantisch samen horen. Een domein hoort dus bij meerdere onderwerpen. Zo bestaat het domein ‘Gaming’ uit alle onderwerpen die over computerspellen gaan. Aangezien een onderwerp gelijk is aan een entiteit bestaat een domein dus ook uit de groep entiteiten die overeenkomt met zijn onderwerpen. Ten slotte zijn in deze sectie alle domeinen statisch vastgelegd.
Entiteiten bepalen Het bepalen van de domeinen van de tweets gebeurt in verschillende stappen. Het doel is om een verzameling van entiteiten voor elk domein te verkrijgen zodanig dat tweets die een entiteit
3.3 Domein Bepaling
15
Domeinen Computer en Internet Gaming Gezondheid Kunst en entertainment Ondernemen Ontspanning Recht en Misdaad Religie Samenleving en Politiek Sport Weer Tabel 3.1: Originele domeinen van de entiteiten
Domeinen Beroemdheden Computer Gaming Gezondheid Internet Kunst Recht en Misdaad Religie Samenleving en Politiek Sport Tabel 3.2: Domeinen van de entiteiten
3.3 Domein Bepaling
16
Figuur 3.2: Domein via entiteiten bevatten in een domein geclassificeerd kunnen worden, zie Figuur 3.2. De eerste stap is het vinden van een groep tweets met een domein. Deze tweets worden gevonden door een externe dienst, die we verder bespreken in hoofdstuk 4. Deze dienst krijgt de verzameling van alle tweets T en neemt hieruit een sub verzameling van tweets: de verzameling T 0 . Deze dienst probeert voor elke tweet in de verzameling T 0 een domein te suggereren. Doordat deze dienst niet gespecialiseerd is om met een korte tekst als een tweet om te gaan is deze suggestie niet nauwkeurig en werkt deze ook maar op een klein deel van de tweets. Verder stelt de dienst ook strikte gebruikerslimieten waardoor we niet alle tweets hiermee kunnen classificeren in een domein. Deze domeinen zijn echter wel bruikbaar om als basis voor de domein bepaling te gebruiken. Uit deze verzameling tweets met domeinen, de verzameling D van Tabel 3.1, kunnen we entiteiten halen die bij dit domein horen. Dit gebeurt in de tweede stap waarin we opnieuw een externe dienst gebruiken om entiteiten te extraheren uit tweets. We gebruiken deze extractie enkel op de verzameling T 0 . Samen met het voorkomen van de entiteiten wordt ook de frequentie van de entiteit bij elk domein opgeslagen. Dit geeft dan als resultaat een verzameling van domeinen D samen met voor elk gegeven domein een verzameling van entiteiten, met de frequentie van deze entiteiten per domein. Vervolgens wordt de kwaliteit van de groep entiteiten per domein verbeterd, zodat de entiteiten die niet passen in het domein niet gebruikt worden. Hiervoor passen we eerst een frequentiefiltering toe zodat we enkel entiteiten overhouden die minstens twee keer in het domein voorkwamen. Dan is er manueel gekeken naar de entiteiten die overbleven en de domeinen waarbij ze geplaatst werden. Aan de hand van de entiteiten is echter duidelijk te zien wat er echt besproken wordt
3.3 Domein Bepaling
17
in deze domeinen. Dit betekent dat het mogelijk is om te zien hoe goed de domeinen van de externe domeindienst zijn. Op basis hiervan werd besloten om de domeinen van Tabel 3.1 aan te passen naar de uiteindelijke domeinverzameling van Tabel 3.2. Dit gebeurde door sommige domeinen van naam te veranderen, op te splitsen of, samen te voegen met andere domeinen zodanig dat elk domein een goede samenhangende verzameling entiteiten had. Een voorbeeld hiervan is ‘arts entertainment’ dat gesplitst werd in ‘human interest’ en ‘arts’ omdat hier vaak tweets in voorkwamen waarin getweet werd over moderne beroemdheden, zoals de entiteit ‘George Clooney’ samen met de entiteit ‘american music awards’. Deze twee entiteiten liggen semantisch ver van elkaar, hetgeen de reden is voor de splitsing.
Domein bepaling uitvoeren Met de verzameling van entiteiten voor elk domein is het mogelijk om de domeinen van de tweets te bepalen. Dit wordt gedaan door alle tweets in de verzameling T af te lopen en de tweets die een entiteit bevatten worden geclassificeerd in het domein van de entiteit. De entiteiten zijn nu gekend en de aanwezigheid hiervan is te controleren door te kijken of de string van de entiteit in de tweet staat. Het is mogelijk dat een tweet meerdere entiteiten bevat, dit is perfect normaal aangezien het mogelijk is dat een tweet tot meerdere domeinen behoort. Het voordeel van de entiteiten bij deze domein bepaling is dat ze heel eenduidig zijn en dus zelden verward worden met een ander domein, hetgeen een goede nauwkeurigheid geeft voor de domein bepaling. Het nadeel hierbij is dat dit slechts op een heel kleine groep van de tweets bruikbaar is aangezien, een tweet een gevonden entiteit moet hebben voor een domein bepaling.
Uitbreiding entiteiten Om de entiteiten uit te breiden beschouwen we alle tweets in de trainingset K waarvan een domein bepaald is. De tokens van deze tweets kunnen mogelijk dienen als nieuwe woorden die het domein aangeven van de tweet. Om te bepalen welke tokens hiervoor het best gebruikt worden, wordt er een analyse gemaakt van hoe goed elk van de tokens als entiteit past in een domein. Voor deze analyse is gebruik gemaakt van de tokenisatie van sectie 3.2.1. Deze tokenisatie is gebruikt om alle tokens te verzamelen van elk domein en deze allemaal een waarde per domein te geven door middel van de statistieken Mutual Information (MI) en χ2 . Deze statistieken geven allebei een waarde die de afhankelijkheid van een token van het domein uitdrukken, waarbij de tokens die enkel in ´e´en domein voorkomen de hogere waardes krijgen en tokens die
3.3 Domein Bepaling
18
in alle domeinen voorkomen lagere waardes krijgen. Op deze manier is het mogelijk om nieuwe woorden te vinden die een goede indicatie zijn voor het bepalen van het domein. Aangezien de beste tokens automatisch een hoge waarde krijgen zou het mogelijk kunnen zijn om automatisch de beste tokens te nemen als deze woorden. Het probleem echter is dat deze top niet perfect is doordat de domeinen niet perfect zijn. Regelmatig komt er een tweet voor die niet echt over het domein gaat omdat het over een entiteit praat op een onverwachte manier. Bijvoorbeeld de tweet ‘Ugh! Damn it! Lee Harvey Oswald shot President John F. Kennedy. That was an epic scene from the movie. :-O :-( #KillingKennedy #epic #JFK’. Deze tweet praat over een president in de Verenigde Staten en wordt dus geclassificeerd als een tweet over ‘Samenleving en Politiek’. Maar deze tweet gaat niet over ‘Samenleving en Politiek’, maar over een film waarin de president voorkomt. Doordat Twitter sterk aan trending gevoelig is kan dit soort tweet overvloedig voorkomen in een bepaald domein. Dit heeft als gevolg dat er woorden een hoge score krijgen ook al passen ze niet in het domein. Indien dit soort foute woorden dan automatisch geselecteerd wordt zou dit de fouten in het domein vergroten, met als gevolg dat een nieuwe entiteit uitbreiding extra onnauwkeurigheid zou introduceren. Daarom hebben we de tokens met maximale MI/χ2 manueel gefilterd. Deze uitbreiding heeft in dit onderzoek maar tot 16 woorden geleid die we verder hebben gebruikt om meer tweets met domeinen te vinden. Dit omdat de domein bepaling met deze uitbreiding nog altijd op slechts een beperkt deel van de tweets werkt. Dit betekent dat elke uitbreiding op de entiteiten in iteraties moet gebeuren die altijd arbeidsintensief zijn en slechts weinig nieuwe entiteiten toevoegen. Dit is dus geen bruikbare methode om tot een complete domein bepaling te komen waarbij alle tweets een domein krijgen.
3.3.3
Hashtag Clusters
Concepten De methode die in deze sectie beschreven wordt, heeft als doel de problemen van domein bepaling via entiteiten (sectie 3.3.2) op te lossen. Het probleem met entiteiten is tweeledig. Aan de ene kant zijn de entiteiten een manuele selectie van de automatische selectie van een externe dienst. Deze vormen dus geen goed beeld van welke onderwerpen het meeste voorkomen in de tweets. Verder kan de domein bepaling via entiteiten slechts een beperkt deel van de tweets een domein geven.
3.3 Domein Bepaling
19
Figuur 3.3: Domein bepaling via hashtags De methode die in deze sectie beschreven wordt, is gebaseerd op het gebruik van hashtags, ge¨ıllustreerd in Figuur 3.3. Hashtags zijn een populair hulpmiddel op Twitter om aan te duiden waar een tweet over gaat. Hashtags op Twitter bestaan uit een hashtag ‘#’ gevolgd door woorden zonder spaties, bijvoorbeeld ‘#callofdutytime’. Net als entiteiten kunnen hashtags dus gezien worden als een onderwerp van een tweet. Het voordeel van hashtags tegenover entiteiten is dat hashtags door de gebruikers worden toegevoegd aan tweets hetgeen als gevolg heeft dat de verzameling hashtags van een verzameling tweets T een betere representatie is van de onderwerpen in de verzameling T dan de verzameling entiteiten van dezelfde verzameling T . Dit omdat de hashtags heel gemakkelijk te vinden zijn en het dus niet mogelijk is om een hashtag te missen in een tweet. Daarentegen is het wel mogelijk om een entiteit over het hoofd te zien. Om nu het domein via hashtags te vinden, wordt gebruik gemaakt van het onderzoek van Antenucci et al. [11]. Net als in dat onderzoek wordt een domein hier gevormd door meerdere hashtags die semantisch samen passen. Om dus uit de hashtags domeinen te vormen, worden de hashtags geclusterd. Voor deze sectie wordt een domein dus beschouwd als een cluster van hashtags. Een voorbeeld hiervan is de cluster ‘... #healthyliving #instafood #nomnom #homemade #foodiechats #yummy #yelp #cooking ...’ die gaat over onderwerpen als ‘#instafood’ en ‘#cooking’. Een tweet hoort dan bij een domein als de tweet ´e´en van de hashtags van de cluster bevat. Dit betekent dus dat het nu mogelijk is om de verzameling domeinen automatisch op te stellen door middel van hashtag clusters. Dit geeft een goede weergave van de domeinen die dominant zijn in de verzameling tweets T . Een belangrijke opmerking echter is dat niet alle tweets een hashtag hebben. Deze maken dus ook geen volledige domein bepaling mogelijk.
3.3 Domein Bepaling
20
Clustering Het doel is nu om hashtags te clusteren in domeinen zodanig dat de domeinen bruikbaar zijn voor de sentiment classificatie. Het idee hierachter is dat elke hashtag een onderwerp voorstelt en dat de hashtags semantisch samen horen in een domein. De clustering van de hashtags moet ervoor zorgen dat elke cluster een domein voorstelt. Als input voor de clustering wordt de verzameling K van training tweets gebruikt samen met de verzameling TH . De eerste stap is om uit deze verzameling van tweets K alle hashtags H te halen samen met de frequentie van elke hashtag. Om de clustering computationeel mogelijk te maken, wordt er gebruik gemaakt van een frequentiefiltering om de 2000 meest voorkomende hashtags H 0 hieruit te halen. Enkel deze hashtags H 0 worden gebruikt bij de clustering. Elk van deze hashtags wordt nu gebruikt in het clusteringalgoritme, dit werkt met Spectral Clustering [13] gebaseerd op het onderzoek van Antenucci et al. [11]. Dit clusteringalgoritme werkt met een in te stellen afstandssmetriek om de afstand tussen twee hashtags te kunnen bepalen tijdens de clustering. Er zijn twee verschillende afstandssmetrieken getest voor dit onderzoek. De eerste gebruikt een afstandssmetriek op basis van de co-occurence van de hashtags. De tweede maakt gebruik van de cosinusafstand tussen de tweets van de hashtags. Voor de informatie van deze afstandssmetrieken wordt een verzameling tweets TH gebruikt. Deze verzameling TH wordt uit de verzameling T gehaald, de verzameling T is de verzameling van alle verzamelde tweets van ons onderzoek (sectie 4.2). Deze verzameling TH bestaat uit alle tweets van T die niet tot K, V of U behoren en ´e´en van de hashtags van H 0 bevat. K, V en U zijn de verzamelingen die gebruikt worden tijdens de sentiment classificatie, TH wordt gescheiden gehouden van deze verzameling zodanig dat de informatie van de afstandssmetrieken niet be¨ınvloed is door de testverzamelingen. De methodologie van de afstandssmetrieken wordt verder uitgelegd in de volgende sectie.
Afstandssmetrieken Om tot de clustering over te gaan moeten eerst de twee afstandssmetrieken gedefinieerd worden die getest zijn voor de clustering. Deze afstandssmetrieken maken gebruik van een verschillende voorbereiding en concept om de hashtags te clusteren. Beide clusteringtechnieken maken gebruik van de verzameling hashtags H 0 en de verzameling tweets TH . De co-occurence afstand is gebaseerd op het samen voorkomen van hashtags in een tweet. Het idee hierachter is dat hashtags die vaak samen voorkomen in een tweet ook semantisch gelijk-
3.3 Domein Bepaling
21
aardig zijn. Voor de berekening van de co-occurence afstand wordt nh1,h2 gedefinieerd als de frequentie waarmee de hashtags h1 en h2 samen voorkomen in tweets van TH . co-occurence afstandh1,h2 = 1 − (
nh1,h2 0 |H P|
+
nh1,hi
i=1
nh1,h2 0 |H P|
nh2,hi
)×
1 2
i=1
Om deze co-occurence afstand te gebruiken in de clustering is er ook nog een aparte filtering voor de clustering waarbij de hashtags met een te lage co-occurence eruit gefilterd worden. De cosinusafstand tussen hashtags is gebaseerd op de cosinusgelijkaardigheid in een bag-of-words model. Hiervoor wordt voor elke hashtag een feature vector samengesteld. Deze vector gebruikt als dimensies alle tokens in de verzameling van tweets TH , met als waarde voor een token in de vector hun tf-idf (term frequency-inverted document frequency) waarde. De tfidfh,w staat hier voor de waarde die wordt toegekend aan de token w die voorkomt als feature bij de hashtag h. De clustering is getest met meerdere definities voor tf-idf, waaruit is gebleken dat deze tf-idf definitie de beste clustering gaf voor de domein bepaling. De frequentieh,w is dan de frequentie van de token w in de tweets van verzameling TH die hashtag h bevatten. Voor de idf is de hashtagfrequentiew het aantal hashtags waarbij de token w als feature voorkomt in de verzameling TH . tfidfh,w = (1 + log(frequentieh,w )) ×
|H 0 | hashtagfrequentiew
Om nu voor de clustering de afstand tussen twee hashtags te kennen wordt de cosinusgelijkaardigheid berekend tussen de twee feature vectoren van de hashtags. Deze gelijkaardigheid wordt dan omgekeerd om de afstand te berekenen. Voor deze berekening is W de verzameling van alle tokens en is hi,j de waarde van de token j in de vector die bij hashtag hi hoort.
cosinusafstandh1 ,h2 = 1 − s
|W P|
j=1 |W P|
h1,j · h2,j
(h1,j )2 ·
j=1
s
|W P|
(h2,j )2
j=1
Domein bepaling uitvoeren Nu de hashtag clusters beschikbaar zijn is het mogelijk om het domein van de tweets te bepalen. Dit wordt gedaan door de tweets in K, V en U af te lopen en te kijken naar de hashtags die aanwezig zijn in de tweets. Zodra een tweet een hashtag heeft, wordt de hashtag cluster opgezocht. Deze hashtag cluster is dan het domein van de tweet. In tegenstelling tot de vorige
3.3 Domein Bepaling
22
methode is hier geen manuele controle van de domeinen en entiteiten nodig. Dit zorgt ervoor dat de hashtag clusteringmethode volledig automatisch is en dus heel goed schaalt naar het gebruik van meer domeinen. Verder zijn de domeinen nu aangepast aan de verzameling K. Dit zorgt ervoor dat de domeinverzameling zo goed mogelijk past bij de tweets van V en U waarvan men het sentiment wil bepalen. Dit aangezien de hashtags sterk veranderen in de tijd, doordat de verzameling K dicht in tijd bij V en U ligt, zorgt dit voor de beste domeinverzameling zonder kennis te nemen van de validatie- en testset. De hashtag clusteringmethode heeft echter ook het nadeel dat dit niet op elke tweet werkt. Niet alle tweets hebben immers een hashtag, waardoor niet elke tweet bij een cluster geplaatst kan worden. Om dit probleem op te lossen moet overgegaan worden naar de domein classificatie van sectie 3.3.4.
3.3.4
Domein Classificatie
Concepten De methode die in deze sectie beschreven wordt, heeft als doel om de problemen van de domein bepaling van de vorige secties op te lossen. Het probleem met zowel de hashtag clusters als de entiteiten is dat slechts een beperkt deel van de tweets hiermee een domein kan krijgen. Deze methode probeert de ideale oplossing te vinden waarin alle tweets een domein krijgen dat zo goed mogelijk past. Om dit te bereiken wordt gebruik gemaakt van het onderzoek van [11]. In dit onderzoek wordt een classificeerder gebruikt die tweets zonder domein classificeert in een domein. Deze classificeerder werkt op basis van een verzameling tweets die wel een domein hebben om hieruit te leren bij welk domein een tweet het beste past. Dit betekent dus dat deze domein classificatie gebaseerd wordt op ´e´en van de twee beperkte domein bepalingen. We hebben ervoor gekozen om te werken met de hashtag clusters. Dit omdat de hashtags een beter beeld kunnen geven van de onderwerpen in de tweets, aangezien de hashtags in tweets een annotatie zijn van het onderwerp door de auteur van de tweet. Dit betekent dat de hashtags een betrouwbaar beeld geven van waar de tweets over gaan. Verder maken de hashtags het mogelijk om automatisch een verzameling domeinen samen te stellen. Dit maakt de hashtags makkelijker te gebruiken dan de entiteiten methode die altijd een manuele filtering vereist. Met deze methode is het dus mogelijk om elke tweet een domein te geven, dit lost de nadelen van de vorige methodes op. Dit concept wordt verduidelijkt in Figuur 3.4.
3.3 Domein Bepaling
23
Figuur 3.4: Domein bepaling via classificeerder Domein classificatie uitvoeren Zoals gezegd maakt deze methode gebruik van een classificeerder die een verzameling tweets met domein nodig heeft. Als input voor deze methode wordt de gegeven verzameling T RD gebruikt. Deze verzameling tweets is gesplitst van de verzamelingen K, V en U . Dit is noodzakelijk omdat de verzameling T RD gebruikt zal worden om de domein classificeerder te trainen die de domeinen van de tweets in K, V en U moet bepalen. Verder bevatten alle tweets in T RD een domein door middel van de methode van sectie 3.3.3, tweets die geen domein krijgen van deze methode zijn uit de verzameling gefilterd. Dit zorgt ervoor dat de verzameling T RD gebruikt kan worden voor de training van de domein classificeerder. De domein classificatie krijgt nu als input de verzamelingen K, V , U en T RD van tweets. Om nu de tweets in K, V en U te classificeren wordt, in navolging van [11], een classificeerder getraind door middel van de tweets in T RD . Op deze manier moet de classificeerder in staat zijn om tweets zonder hashtag te classificeren in een domein. De tweets waarop de classificeerder traint worden hiervoor omgezet naar binaire feature vectoren op basis van het bag-of-words model. Hier is voor gekozen omdat uit het onderzoek van Antenucci et al. [11] blijkt dat dit beter werkt dan andere feature vectoren die ze getest hebben. Bij deze feature voorstellingen zijn de feature dimensies alle tokens in de verzameling met de waarde van de vector: een binaire waarde afhankelijk van de aanwezigheid van een token in de tweet. Hierbij worden de hashtag tokens verwijderd om ervoor te zorgen dat de classificeerder de hashtags aanleert zonder de aanwezigheid van de hashtags. De classificeerder zelf maakt gebruik van het Naive Bayes classificatiealgoritme
3.3 Domein Bepaling
24
met het Multinomiale model. Deze classificeerder wordt vervolgens gebruikt op alle tweets die nog niet in een domein zitten. Op deze manier krijgen alle tweets een domein.
DATA VERZAMELING EN IMPLEMENTATIE
25
Hoofdstuk 4
Data Verzameling en Implementatie 4.1
Inleiding
In dit hoofdstuk wordt uitgelegd hoe alle dataverzamelingen tot stand zijn gekomen en hoe alle systemen ge¨ımplementeerd zijn. Sectie 4.2 begint met uit een te zetten welke tweets verzameld werden en hoe deze verzameld werden. Vervolgens wordt uitgelegd welke extra dataverzamelingen er gebruikt worden voor het onderzoek. Ten slotte worden de implementaties van de methodes overlopen in sectie 4.3. Hierin wordt eerst de implementatie van de sentiment classificatie overlopen. Ten slotte wordt de implementatie van de domein bepaling die nodig is voor de sentiment classificatie uiteengezet.
4.2
Data verzameling
In dit onderzoek wordt er gebruik gemaakt van een verzameling tweets die verzameld werd van 6 november 2013 tot 14 februari 2014. Het gebruik van deze tweets wordt in aparte secties beschreven, aangezien er voor de aparte stukken van ons onderzoek op een andere manier wordt omgegaan met deze verzameling tweets. Eerst wordt uitgelegd hoe deze tweet verzameling tot stand is gekomen. De tweets zijn verzameld door gebruik te maken van de Java Twitter Streaming API1 . Voor de sentiment classificatie is het noodzakelijk dat elke tweet een label heeft dat weergeeft of de tweet positief of negatief is. Deze labeling maakt het mogelijk om een tweet als training te 1
https://dev.twitter.com/docs/api/streaming
4.2 Data verzameling
26
Positieve emoticons
:) : ) :-) :D =) =D :-D
Negatieve emoticons
:( : ( :-( :’( :’-( =(
Tabel 4.1: Sentiment emoticons gebruiken of om de classificatie te controleren met het werkelijke sentiment (‘ground truth’). Hiervoor wordt er gebruik gemaakt van emoticons, waarbij een positieve emoticon een tweet met positieve gevoelens aangeeft en een negatieve emoticon een tweet met negatieve gevoelens. Dit betekent dat elke verzameling van tweets met emoticons automatisch gelabeld kan worden, hetgeen een grote hoeveelheid trainingsdata beschikbaar maakt. Dit biedt een belangrijk voordeel tegenover manuele labeling, waar de gelabelde datasets noodgedwongen kleiner zijn dan bij de automatische labeling. Een nadeel aan het gebruik van emoticons is dat emoticons geen perfecte labeling voorzien, bijvoorbeeld bij sarcastische tweets. De tweet ‘Next thing you know #Obama’s Secretary of Agriculture will try to outlaw round hay bales becuase cows wont get a square meal. :)’ bevat een positieve emoticon. Het sentiment van de tweet is echter sarcastisch en negatief. Dit heeft als gevolg dat deze tweet moeilijk bruikbaar is voor training aangezien dit negatieve woorden koppelt aan een positief sentiment. Dit is een onvermijdelijk gevolg van het gebruik van emoticons. Om nu deze automatische labeling ten volle te benutten, worden enkel tweets opgevangen die een positieve of negatieve emoticon bevatten, zie tabel 4.1. Om dit te doen, wordt gebruik gemaakt van de Twitter filteropties in de API zodat enkel tweets met deze emoticons worden opgevangen. Verder wordt ook de Twitter filtering gebruikt om enkel de Engelstalige tweets op te vangen. Deze verzameling bevat 323 189 019 tweets. Na deze filtering wordt ook nog een eigen filtering toegepast om ongewenste tweets hieruit te halen. De Twitter filtering gebruikt namelijk de spatie als ‘and’ operatie, dus de emoticon als ‘: )’ wordt gevonden in de tweet ‘... @USER : We (Aliens) just deserve to win it more ...’. Dit terwijl deze tweet geen emoticon heeft, maar wel de aparte karakters ‘:’ en ‘)’. Verder is het ook mogelijk dat een tweet meer dan ´e´en emoticon bevat. Dit heeft als gevolg dat er soms tweets inzitten zonder emoticon of met zowel een positieve als negatieve emoticon. Om de kwaliteit van de tweets optimaal te houden voor de training van de classificeerders worden bij de eigen filtering dus enkel de tweets overgehouden die enkel emoticons hebben die positief zijn, of enkel emoticons hebben die negatief zijn. De volgende stap van de filtering is zoveel mogelijk unieke tweets te gebruiken. Vaak komen tweets meerdere keren voor omdat deze geretweet worden of meerdere keren gepost worden. Deze laatste categorie komt vaak voor als spam op Twitter waarin een
4.2 Data verzameling
27
tweet meerdere keren gepost wordt. Hier zorgt de filtering ervoor dat van al deze meervoudige tweets er maar ´e´en tweet overblijft in de verzameling. Dit pakt twee problemen aan. Ten eerste het probleem dat een training- en testset dezelfde tweet bevatten omdat deze meerdere keren voorkomt. Ten tweede is er het probleem dat de classificeerder bij het meerdere keren trainen op dezelfde tweet een fout beeld krijgt van de tweet verzameling. De classificeerder hecht dan immers teveel belang aan de inhoud van deze meervoudige tweet tegenover tweets die maar ´e´en keer voorkomen. Dit zorgt ervoor dat de classificeerder heel goed wordt in het classificeren van de inhoud van de meervoudige tweet, ten koste van de inhoud van andere enkelvoudige tweets. Na deze filtering stappen blijven er 225 725 428 tweets over. Deze tweets vormen de verzameling T . De verzameling T wordt verder verwerkt in de aparte stukken van het onderzoek.
Verwerking tweets voor classificatie Voordat de tweets van een verzameling gebruikt worden voor de sentiment classificatie van sectie 3.2.3, zij het als training, validatie of testen, worden deze tweets verwerkt als voorbereiding. Deze verwerking begint met het verwijderen van de emoticons in de tweets. De emoticons zijn immers de labels van de sentimentklassen. Deze mogen dus niet gebruikt worden voor de training of classificatie. Dit is een nadeel bij het gebruik van emoticons als labels, omdat deze tweets immers heel goede informatie zijn voor een classificeerder om het sentiment van een tweet in te schatten. Vervolgens worden alle hoofdletters omgezet naar kleine letters, als eerste stap om de features te normaliseren. In de tweets komen ook vaak verwijzingen naar gebruikers voor, bijvoorbeeld ‘@justin’ of verwijzingen naar sites door URL’s. Deze worden gesubstitueerd door respectievelijk ‘USER TOKEN’ en ‘URL TOKEN’. Als laatste stap van de filtering worden alle voorkomens van vier of meer opeenvolgende keren dezelfde letter vervangen door drie keer deze letter. Dit zorgt ervoor dat woorden als ‘COOOOL’ en ‘COOOOOOOOOOL’ vervangen worden door hetzelfde woord ‘COOOL’ zonder dat de informatie van de herhaling van letters verloren gaat. Deze filteringstappen zijn heel nuttig om de dimensies van de features sterk te reduceren zonder echt informatie te verliezen [5]. Na de filtering van de tweets worden de tweets omgezet naar verzamelingen van tokens, dit zorgt voor het bag-of-words model. Na de omzetting naar tokens worden deze tokens gestemd volgens het Porter algoritme. Voor de domein classificatie van sectie 3.3.4 moeten de tweets aangepast worden. Deze verwerking komt grotendeels overeen met de vorige verwerking. Hier zijn echter de hashtags verwijderd uit de tweet aangezien het nu deze hashtags zijn die de klasse van de tweet vormen. De emo-
4.2 Data verzameling
28
ticons worden behouden in de tweet terwijl de andere bewerkingen wel worden toegepast. Op deze manier worden opnieuw de dimensies van de features vermindert zonder te veel informatie te verliezen.
4.2.1
Data Entiteiten
Voor de sentiment classificatie met de domein bepaling via entiteiten (sectie 3.3.2) wordt er gebruik gemaakt van volgende data. De sentiment classificatie via entiteiten wordt op twee manieren getest. Eerst met een dataset die enkel tweets bevat met entiteiten en vervolgens met random dataset. De eerste tweet verzameling A bevat de eerste 650 000 tweets uit T die een entiteit hebben en dus ook tot een domein behoren. Hierbij worden de eerste 350 000 tweets gebruikt voor de training-, de 150 000 tweets daarna voor de validatieset en de laatste 150 000 voor de testset. Bij het testen van de classificeerder geeft dit dan een verhouding van 70% training tweets en 30% test tweets. De validatieset wordt hier gebruikt om de gewichten van de domeinen te optimaliseren (sectie 3.2.3). Na de optimalisatie kan dan de performantie van de sentiment classificatie getest worden met de testset. De verzameling A van tweets wordt gebruikt om te testen hoe goed de sentiment classificatie methode zou werken indien alle domeinen van de tweets gekend zijn. De tweede dataset is de verzameling B. Deze verzameling neemt de eerste 650 000 tweets uit de verzameling T . In deze verzameling worden vervolgens de tweets die wel een entiteit hebben geclassificeerd in een domein. De training-, validatie- en testset worden vervolgens op dezelfde manier genomen als bij verzameling A. Met deze verzameling B wordt dus getest hoe goed de sentiment classificatie methode werkt met een normale verzameling van tweets, waarbij niet voor elke tweet een domein gekend is.
4.2.2
Data Hashtag Clusters
Voor de sentiment classificatie met domein bepaling via hashtag clusters (sectie 3.3.3) wordt er gebruik gemaakt van de volgende data. Voor de sentiment classificatie wordt de verzameling C gebruikt die de 3 900 000 eerste tweets van de verzameling T bevat. De tweets van T behoren dan tot de verzameling TN C . Deze verzameling wordt verder gebruikt voor de clustering. De verzameling C is gebaseerd op hetzelfde idee als de verzameling B: ook deze verzameling maakt geen gebruik van een selectie van domein tweets zoals voor A is gebeurd. De verzameling C is
4.3 Implementatie
29
echter een stuk groter zodat er in de eerste plaats voldoende verschillende hashtags zijn en er voldoende tweets per hashtag cluster zijn. Hier worden dezelfde verhoudingen tussen de sets gebruikt, er zitten dus 2 100 000 tweets in de trainingset van C en 900 000 tweets in de test- en validatiesets. Zoals beschreven in sectie 3.3.3 worden uit de trainingset van de verzameling C alle hashtags genomen om te gebruiken voor de domein bepaling. Deze hashtags H worden omgezet in domeinen door de methode in sectie 3.3.3 met behulp van de informatie in de verzameling TN C . Hiermee is dus de verzameling domeinen of hashtag clusters vastgelegd. Met deze hashtag clusters is het nu mogelijk om de domeinen van de tweets in C te bepalen. Merk echter op dat niet alle tweets een hashtag hebben zodat niet alle tweets in C een domein hebben. De verzameling CD is nu de verzameling van tweets die ´e´en van deze domeinen heeft en ook in de verzameling C zit. De verzameling CN D is de verzameling van tweets in C die niet tot ´e´en van de domeinen behoort. Voor de sentiment classificatie met domein classificatie (sectie 3.3.4) wordt er verder gebruik gemaakt van de dataverzameling C. Deze verzameling C moet door de domein classificatie methode omgezet worden naar de verzameling C 0 waar alle tweets een domein hebben gekregen. Voor de domein classificatie is eerst de trainingset nodig voor de domein classificatie van tweets die allemaal tot ´e´en van de domeinen in CD behoren. Hiervoor nemen we de verzameling TN C . Deze trainingverzameling is volledig gesplitst van C. Dan worden alle domein tweets in TN C bepaald door de hashtag clusteringmethode, zie sectie 3.3.3. Van deze domein tweets worden de eerste 3 200 000 tweets genomen om de verzameling T RD te vormen. De grootte van de verzameling T RD is gekozen door verschillende aantallen training tweets te testen. Hieruit bleek dat de kwaliteit van de domein classificatie niet meer steeg na 3 200 000 tweets. Met de tweets van T RD wordt dus de domein classificeerder getraind uit sectie 3.3.3 om alle tweets van CN D te classificeren in een domein. De verzameling van CD en de geclassificeerde tweets van CN D vormen de verzameling C 0 .
4.3 4.3.1
Implementatie Sentiment Classificatie
De sentiment classificatie methode is beschreven in sectie 3.2. Deze methode is ge¨ımplementeerd in Java 1.7 met behulp van de MOA API [12]. Deze API is gebaseerd op de WEKA API2 met 2
http://www.cs.waikato.ac.nz/ml/weka/
4.3 Implementatie
30
het doel om een API te maken die problemen met data van een grotere schaal3 aan kan dan de WEKA API. De MOA API is dan ook vooral bedoeld om grote verzamelingen van data realtime te verwerken. Dit maakt de API heel geschikt om de verzameling tweets te verwerken. Deze API is gebruikt in dit onderzoek voor de implementatie van de sentiment classificeerders. Het ensemble van classificeerders uit de methodologie is dus opgebouwd uit MOA classificeerders. Voor het onderzoek is er gebruik gemaakt van de Naive Bayes Multinomial classificeerder van de MOA API, zoals vereist in de methode van sectie 3.2.1. Om de tweets om te zetten naar een formaat dat begrijpelijk is voor de MOA API is er een uitbreiding op deze API ge¨ımplementeerd. Deze uitbreiding zorgt ervoor dat de verzameling T , en alle verzamelingen die uit T voortkomen, gebruikt kunnen worden als trainingsset of testset voor de classificeerders.
4.3.2
Domein Bepaling
Voor de domein bepaling zijn er drie methodes gebruikt zoals beschreven in sectie 3.3. De eerste methode is gebaseerd op entiteiten. Om deze methode te implementeren is er gebruikt gemaakt van Java 1.7 en de Alchemy4 REST dienst. Deze dienst vervult de rol van externe dienst die een domein en entiteiten kan extraheren uit een tweet. De Alchemy REST dienst is gemakkelijk te gebruiken door Java met de Alchemy Java SDK5 . De andere algoritmes voor de entiteiten zijn ook ge¨ımplementeerd met Java 1.7. De tweede methode werkt met hashtag clustering zoals beschreven in sectie 3.3.3. Deze methode vereist de implementering van het clustering algoritme en de afstandssmetrieken. Het clusteringsalgoritme wordt ge¨ımplementeerd door gebruik te maken van de WEKA API6 waarin het spectral clustering algoritme zit. De MOA API wordt hier niet gebruikt omdat de MOA clusteringsalgoritmes vooral gericht zijn op de realtime clustering van data en aangezien dit deel is van de voorbereiding is een realtime clustering hier niet nodig. De twee afstandssmetrieken voor de clustering zijn ge¨ımplementeerd door een uitbreiding te maken op de WEKA API zodat het WEKA clusteringsalgoritme met deze afstandssmetriek kan werken. Ten slotte is er de derde methode die werkt met een domein classificeerder, zie sectie 3.3.4. Voor 3
http://moa.cms.waikato.ac.nz/overview/ http://www.alchemyapi.com/api/calling-the-api/ 5 http://www.alchemyapi.com/developers/sdks/ 6 http://www.cs.waikato.ac.nz/ml/weka/ 4
4.3 Implementatie
31
de classificeerder van de domein classificatie is gebruik gemaakt van de Naive Bayes Multinomial classificeerder van de MOA API.
RESULTATEN
32
Hoofdstuk 5
Resultaten 5.1
Inleiding
In dit hoofdstuk worden de resultaten van dit onderzoek bekeken. Dit begint met uit te leggen hoe de resultaten zijn bekomen in sectie 5.2. Vervolgens wordt het onderzoek overlopen aan de hand van de drie gebruikte domein classificatie methodes. Eerst wordt de sentiment classificatie met domein bepaling door entiteiten besproken in sectie 5.3. Vervolgens wordt de sentiment classificatie met een domein bepaling via hashtag clusters besproken in sectie 5.4. Ten slotte wordt bekeken wat de resultaten zijn van de sentiment classificatie met de domein classificatie via hashtag clusters in sectie 5.5.
5.2
Evaluatiemethode
In dit onderzoek is het doel de negatieve tweets te detecteren in een verzameling van tweets. Om te meten hoe goed deze detectie werkt, worden de tweets gesorteerd in een lijst, L, volgens de kans dat de tweet negatief is. Met deze lijst kan een precisie recall curve van de negatieve tweets opgesteld worden en kan ook de gemiddelde precisie (average precision) berekend worden. De gemiddelde precisie, gp, berekent een schatting van het oppervlak onder de precisie recall curve. In de berekening hiervan wordt de gemiddelde precisie berekend door stapsgewijs de lijst met gesorteerde negatieve tweets af te gaan. Prec(i) is hierbij de precisie wanneer de top i tweets van de lijst worden aangenomen als negatieve tweets (cut-off ). ∆Rec(i) is het verschil in recall
5.3 Entiteiten
33
wanneer men van i − 1 tweets van de lijst naar i tweets van de lijst gaat. |LN |
gp =
X i=1
Prec(i) · ∆Rec(i)
Indien de lijst L bestaat uit alle tweets in de testset, U , wordt de gemiddelde precisie de totale gemiddelde precisie genoemd. Deze totale gemiddelde precisie wordt gebruikt om de oppervlakte onder de precisie-recall curve van het basisalgoritme en het ensemble (hoofdstuk 3) objectief te vergelijken. Elk domein kan ook gezien worden als een aparte query, dit betekent dat de lijst L enkel tweets bevat van ´e´en enkel domein. Het gebruik van de query is interessant bij domeinen omdat dit toestaat om alle alle negatieve tweets van een bepaald domein te vinden. Om de kwaliteit van deze query lijsten te bepalen, wordt het gemiddelde genomen van de gemiddelde precisie van alle lijsten. Dit resulteert in de query gemiddelde precisie (mean average precision). Om het ensemble van classificeerders uit te voeren is het noodzakelijk dat elke domeinspecifieke classificeerder een gewicht heeft (sectie 3.2.3). Deze gewichten worden gekozen door ze te optimaliseren voor de totale gemiddelde precisie. De optimalisatie probeert de verschillende waardes voor gewichten uit, gaande van 0 tot en met 1 met een interval van 0,1. Deze gewichten worden dan vergeleken door eerst het ensemble te trainen op de trainingset T R. Het ensemble wordt dan geoptimaliseerd met de validatieset T A. De testset is volledig gesplitst van de validatieset zoals beschreven in sectie 4.2. Op deze manier wordt overfitting vermeden.
5.3
Entiteiten
Het onderzoek is gestart bij de methode beschreven in sectie 3.3.2. Deze methode is uitgetest met twee verschillende dataverzamelingen. De test met de tweet verzameling A heeft als doel te controleren of de methode werkt in ideale condities. Om deze reden bevat A enkel tweets met een domein, zoals beschreven in sectie 4.2.1, om de maximale performantie van deze methode in te schatten. Deze test wordt uiteengezet in sectie 5.3.1. In de tweede dataverzameling wordt er bestudeerd of de methode ook nuttig is voor een normale tweet verzameling waar dus geen selectie is uitgevoerd op domein tweets, zoals ook beschreven in sectie 4.2.1. Dit laat toe om te zien hoe nuttig de domein classificatie methode is op een meer realistische verzameling van tweets. Deze tweede test is beschreven in sectie 5.3.2.
5.3 Entiteiten
34
Figuur 5.1: De precisie-recall curves van de verschillende classificeerders op verzameling A.
5.3.1
Vergelijking onder optimale condities met enkel domein tweets
In deze sectie wordt een vergelijking gemaakt tussen de ensemble classificeerder, de algemene classificeerder (het basisalgoritme) en de domeinspecifieke classificeerders onder optimale condities voor de ensemble classificeerder. Deze optimale condities komen doordat de gebruikte verzameling A enkel tweets bevat die een domein hebben. De domeinspecifieke classificeerders worden bestudeerd door een ensemble classificeerder waarbij alle gewichten op 1 worden gezet. Dit zorgt ervoor dat enkel de domeinspecifieke classificeerders gebruikt worden. De vergelijking met de domeinspecifieke classificeerders wordt gebruikt om te zien hoe goed deze werken zonder de algemene classificeerder. Deze classificeerders worden vergeleken door de evaluatie beschreven in sectie 5.2. De precisie-recall curves zijn te vinden in de grafiek van Figuur 5.1, met de bijhorende gemiddelde precisie in Tabel 5.1. Verder is de samenstelling van domeinen in verzameling A ook bekeken, aangezien dit een grote invloed op de prestatie van de classificeerders kan hebben, dit staat in Tabel 5.2. De domeinspecifieke classificeerders verschillen slechts minimaal van de algemene classificeerder. Dit is een interessant gegeven, de domeinspecifieke classificeerders gebruiken immers classificeerders die minder training tweets hebben gebruikt dan de algemene classificeerder. De samenwerking van de domeinspecifieke en algemene classificeerder geeft het beste resultaat in het ensemble. De verklaring hiervoor is dat de algemene classificeerder een model heeft met meer
5.3 Entiteiten
35
Totale gemiddelde precisie Algemeen
57,51 %
Ensemble
62,00 %
Domein
57,73 %
Tabel 5.1: Gemiddelde precisie van de grafiek in Figuur 5.1
Aantal tweets
Percentage negatieve tweets
Algemeen
650 000
24,7 %
Beroemdheden
351 546
25,84 %
Computer
47 276
21,54 %
Gaming
22 505
27,71 %
Gezondheid
22 885
78,51 %
Internet
95 768
16,14 %
Kunst
16 343
9,47 %
5 770
26,88 %
38 084
11,12 %
4 731
15,1 %
56 135
23,26 %
Recht en Misdaad Religie Samenleving en Politiek Sporten
Tabel 5.2: Statistieken van de domeinen in verzameling A
5.3 Entiteiten
36
trainingsdata terwijl de domeinspecifieke classificeerders een sterk domein-afhankelijk model hebben. Deze modellen worden dan gecombineerd om tot deze betere resultaten te komen. Om de verschillen tussen deze methodes toe te lichten worden nu enkele voorbeeld tweets bestudeerd. De tweet ‘So I juuuust started the first amazing 15 minutes of The Last of Us, when my ps3 shuts off and the red light started blinking. :(’ behoort bijvoorbeeld tot het ‘Gaming’ domein. Deze tweet is door de algemene classificeerder als positief geclassificeerd, terwijl het ensemble deze correct als negatief classificeert. De tweet bevat dan ook enkele woorden die in de context van het domein een andere betekenis krijgen. De woorden ‘red’ en ‘light’ duiden bijvoorbeeld op het voorkomen van een bekend crash verschijnsel bij de ps3, aangezien het lichtje op de ps3 een rode kleur aanneemt wanneer de ps3 crasht. Het specifieke sentiment van een woord voor een classificeerder is achterhaald door de classificeerder het woord apart te doen classificeren. Dit toont dat in de ‘Gaming’ classificeerder het woord ‘red’ is aangeduid als negatief, in tegenstelling tot de algemene classificeerder die deze negatieve betekenis niet kent. Dit is logisch aangezien ‘red’ in het algemeen geen inherent positief of negatief woord is. De algemene classificeerder classificeert deze tweet dan ook als positief aangezien er woorden in voorkomen als ‘amazing’ en er geen opvallende negatieve woorden inzitten voor de algemene classificeerder. Een voorbeeld tweet waar de domeinspecifieke classificeerder niet werkt is de volgende ‘JUSTIN’S WEARING AN OXYGEN TANK. I’m seriously so damn worried for him right now oh my goodness :(’. Deze tweet gaat over Justin Bieber, dit valt in het domein ‘Beroemdheden’. Typisch zijn tweets in dit domein positief, er zijn immers slechts 25,84% negatieve tweets (zie Tabel 5.2). Dit cre¨eert een bias, zodat de meeste woorden in het domein ‘Beroemdheden’ positief worden ingeschat. De domeinspecifieke classificeerder ziet dit dan ook als een positieve tweet ondanks het negatieve sentiment. De algemene classificeerder is echter wel in staat deze tweet als negatief te herkennen door woorden als ‘worried’.
Domein Vergelijkingen Na het bestuderen van het ensemble tegenover de algemene classificeerder, wordt er bekeken of er sterke verschillen zijn tussen de classificaties van de domeinen en waar deze verschillen vandaan komen. Hiervoor wordt de gemiddelde precisie (average precision) van elk domein berekend. Dit houdt in dat er een gesorteerde negatieve lijst wordt opgesteld voor elk domein met de tweets van dit domein, in de testset van A. Met deze lijst kan dan de gemiddelde precisie van het domein berekend worden zoals beschreven in sectie 5.2. Nadat elke gemiddelde precisie wordt
5.3 Entiteiten
37
Gemiddelde precisie
Algemeen
Domein
Ensemble
Beroemdheden
58,40 %
58,35 %
61,16 %
Computer
57,74 %
53,55 %
63,52 %
Gaming
47,63 %
50,11 %
56,73 %
Gezondheid
85,49 %
85,34 %
87,53 %
Internet
40,18 %
39,67 %
45,52 %
Kunst
26,85 %
19,83 %
31,52 %
Recht en Misdaad
40,63 %
41,89 %
48,37 %
Religie
29,16 %
32,76 %
39,90 %
Samenleving en Politiek
31,04 %
23,67 %
34,20 %
Sporten
48,25 %
51,24 %
58,40 %
Query gemiddelde
46,54 %
45,64 %
52,69 %
Tabel 5.3: Gemiddelde precisie voor elk domein en elke classificeerder. berekend, kan ook de query gemiddelde precisie (mean average precision) van sectie 5.2 berekend worden. Dit wordt gedaan met de algemene classificeerder, het ensemble en de domeinspecifieke classificeerders. Het resultaat van deze berekeningen is te vinden in Tabel 5.3. Na het bestuderen van Tabel 5.3 worden er verschillende domeinen gekozen die een interessant resultaat hebben om deze apart te analyseren. Hiervoor worden de precisie-recall curves van deze domeinen en classificeerders vergeleken. Deze vergelijking resulteert in de grafiek in Figuur 5.2. In de grafiek zijn twee domeinen bekeken. De ‘Gezondheid’ curve omdat deze het beste scoort van alle domein curves. Vervolgens is ook de ‘Samenleving en Politiek’ curve getoond omdat dit domein ´e´en van de slechtste resultaten heeft. Als eerste wordt de curve van het ‘Gezondheid’ domein besproken. Een eerste punt dat hierbij gemaakt moet worden is dat het eindpunt van elke curve overeenkomt met het percentage negatieve tweets dat in de lijst van de curve voorkomt. Hieruit valt al meteen iets heel belangrijk uit af te leiden voor de ‘Gezondheid’ curve, maar liefst 78, 51% (Tabel 5.2) van de tweets in het ‘Gezondheid’ domein zijn negatieve tweets. De meerderheid van de tweets zijn dan ook gezondheidsklachten. Doordat zoveel tweets negatief zijn bestaat de lijst van ‘Gezondheid’ bijna volledig uit negatieve tweets hetgeen automatisch een hoge gemiddelde precisie tot gevolg heeft. Bij de andere domeinen zijn de tweets meer verdeeld.
5.3 Entiteiten
38
Figuur 5.2: De precisie-recall curves van de classificaties van de verschillende domeinen in A. De ‘Samenleving en Politiek’ curve vertoont een heel ander verloop dan die van ‘Gezondheid’. De curve ligt een stuk lager dan die van ‘Gezondheid’ en de gemiddelde precisie is slechts 31, 04% tegenover de 85, 49% gemiddelde precisie van ‘Gezondheid’, zie Tabel 5.3. In de eerste plaats komt dit door de hoeveelheid negatieve tweets, ‘Samenleving en Politiek’ bevat immers slechts 15, 1% (Tabel 5.2) negatieve tweets. Maar andere domeinen bevatten soortgelijke aantallen negatieve tweets, en deze domeinen doen het beter dan ‘Samenleving en Politiek’ (bijvoorbeeld ‘Religie’) dus dit is niet de enige verklaring. De verklaring kan gevonden worden in Tabel 5.3, als men de resultaten van de domeinspecifieke classificeerders voor elk domein bekijkt, ziet men hoe goed de domeinspecifieke classificeerder van dat domein werkt. De domeinspecifieke classificeerder van ‘Samenleving en Politiek’ heeft slechts een gemiddelde negatieve precisie van 23, 67%. Dit betekent dat de domeinspecifieke classificeerder van ‘Samenleving en Politiek’ niet goed slaagt in de detectie van de negatieve tweets. Dit komt ook overeen met het resultaat van ‘Kunst’, waar ook een slechte gemiddelde precisie van de domeinspecifieke classificeerder te vinden is samen met een slecht resultaat van het ensemble. Bij domeinen waar de domeinspecifieke classificeerders wel goed werken ziet men daarentegen een goed resultaat bij het ensemble tegenover de algemene classificeerder. Dit betekent dat de werking van een domeinspecifieke classificeerders een belangrijke invloed heeft op de performantie van het ensemble voor dat domein. Dus de vraag wordt waarom de domeinspecifieke classificeerders niet slagen in het detecteren van negatieve
5.3 Entiteiten
39
Totale gemiddelde precisie Algemeen
49,41 %
Ensemble
49,56 % 49,24 %
Domein
Tabel 5.4: Totale gemiddelde precisie van de grafiek in Figuur 5.3 Query gemiddelde precisie Algemeen
47.99 %
Ensemble
50.42 %
Domein
42.37 %
Tabel 5.5: Query gemiddelde precisie van verzameling B. tweets in het domein ‘Samenleving en Politiek’. De eerste verklaring is dat dit een domein is met relatief weinig tweets, dit heeft als gevolg dat er minder training is voor de classificeerder, zie Tabel 5.2. Dit verklaart echter niet alles; het domein ‘Recht en Misdaad’ heeft ook weinig tweets en heeft een betere gemiddelde precisie voor zijn domeinspecifieke classificeerder. Dit komt waarschijnlijk doordat de tweets van ‘Samenleving en Politiek’ moeilijker te classificeren zijn dan die van ‘Recht en Misdaad’. Het domein ‘Samenleving en Politiek’ bevat dan ook vaak tweets die gebruik maken van stijlfiguren, zoals sarcasme, aangezien er vaak politieke commentaar in voorkomt. Deze problemen, samen met de lage hoeveelheid training tweets, verklaren waarom de domeinspecifieke classificeerder van ‘Samenleving en Politiek’ niet goed werkt.
5.3.2
Vergelijking met willekeurige tweets
Na het onderzoeken van de resultaten op verzameling A wordt bekeken hoe goed het ensemble werkt op verzameling B. Verzameling B bestaat uit een verzameling tweets waarop de domein bepaling is toegepast. Deze verzameling is dus niet gefilterd om enkel domein tweets te bevatten. Ook hier is een vergelijking gemaakt tussen de algemene classificeerder, het ensemble met geoptimaliseerde gewichten en een ensemble met gewichten van 1. De geoptimaliseerde gewichten worden opnieuw bekomen door gebruik te maken van de validatieset in in B. De vergelijking wordt gedaan door gebruik te maken van de testset van B. Dit resulteert in de grafiek van Figuur 5.3 en de bijhorende statistieken in Tabel 5.4.
5.3 Entiteiten
40
Figuur 5.3: De precisie-recall curves van de verschillende classificeerders op verzameling B. Zoals te zien in de grafiek is er nauwelijks verschil in de detectie van negatieve tweets. Bij het bekijken van Tabel 5.3 is ook te zien dat er nauwelijks verbetering is in het ensemble. Dit komt doordat er nu slechts 4.14% tweets met een domein zijn in de verzameling B, in plaats van de 100% van verzameling A. Dit betekent dat het ensemble enkel een verschil kan maken in 4, 14% van de tweets, de tweets zonder domein worden immers op dezelfde manier geclassificeerd bij het ensemble als bij de algemene classificeerder. Er is echter wel een verbetering bij de query gemiddelde precisie, zoals te zien in Tabel 5.5, dit is logisch aangezien het query gemiddelde enkel afhangt van de tweets met een domein. Het lage percentage domein tweets maakt dus niet uit voor de query gemiddelde precisie. Het probleem bij het praktische gebruik op alle tweets is dus dat er een betere domein bepaling noodzakelijk is om deze ensemble methode nuttig te maken. Dit is dan ook het doel van secties 3.3.3 en 3.3.4. Het volgende dat opvalt is dat de curve van het basisalgoritme een stuk lager ligt dan in Figuur 5.1 van sectie 5.3.1. Om de reden hiervoor te achterhalen werden de tweets van de dataverzamelingen A en B onderzocht, aangezien dit het enige verschil is tussen de twee tests. Wat hierbij opvalt is dat er veel meer korte tweets voorkomen in B, de gemiddelde lengte van tweets bij verzameling A is 88, 16 karakters, bij verzameling B is dit slechts 67, 91 karakters. Een voorbeeld hiervan is de tweet ‘Hey!!! :)’. Deze tweet kan moeilijk geclassificeerd worden als positief of negatief over iets. Zo’n tweets komen niet voor bij de verzameling A omdat deze verzameling
5.4 Hashtag Clusters
41
enkel tweets bevat die een domein hebben. Belangrijker echter is dat tweets met een domein, van de methode van sectie 3.3.2, altijd ook een entiteit bevatten. Deze entiteit garandeert dat de tweet altijd over iets gaat en dus bevatten tweets met een entiteit gemiddeld meer woorden. Door enkel tweets te gebruiken die een entiteit bevatten worden de tweets gefilterd, waarbij de langere tweets die meer informatie bevatten meer behouden worden dan de kortere tweets. Dit zorgt ervoor dat de tweets in verzameling A makkelijker te detecteren zijn als negatief, waardoor de curves over verzameling A beter zijn dan de curves over verzameling B.
5.4
Hashtag Clusters
In deze sectie wordt de methode uit sectie 3.3.3 getest. Dit wordt gedaan met behulp van verzameling C gedefinieerd in sectie 4.2.2. Deze verzameling bestaat uit een verzameling normale tweets zoals de verzameling B uit sectie 5.3.2. Hier is gekozen om verzameling C te gebruiken in plaats van B omdat C meer tweets bevat waardoor de hashtag clusters voldoende tweets bevatten voor de domeinspecifieke classificeerders om op te trainen. Doordat er meer clusters zijn dan entiteit domeinen zijn de tweets nu immers nog meer verspreid over de domeinen. De methode die hier getest wordt is een poging om enkele van de problemen van sectie 5.3.2 op te lossen. Het gebruik van hashtags resulteert immers in een domein verzameling die specifiek bij de trainingset van verzameling C past. Dit zorgt ervoor dat de domeinen meer overeenkomen met de eigenlijke inhoud en onderwerpen van de verzameling dan het gebruik van de entiteiten mogelijk maakt. Dit komt doordat de entiteiten een statische verzameling domeinen gebruiken, deze kan dus mogelijk leiden tot tweets die bij geen enkel domein passen. Verder komen hashtags ook meer voor dan entiteiten waardoor er meer tweets zijn met een domein. De evaluatie van deze methode wordt uiteengezet in sectie 5.4.1.
5.4.1
Vergelijking met willekeurige tweets met hashtag clusters
Op de verzameling C worden twee verschillende clusteringmethodes getest en de entiteit domein bepaling. De eerste clusteringmethode werkt met een cosinusafstand, dit resulteert in de cosinus ensemble. De tweede clusteringmethode werkt met de co-occurence afstand en deze resulteert in het co-occurence ensemble. De entiteit bepaling zorgt voor het entiteit ensemble, zoals in sectie 5.3.2. Deze ensembles worden vergeleken met de basismethode. De precisie-recall curves van al
5.4 Hashtag Clusters
42
Figuur 5.4: De precisie-recall curves van de verschillende classificeerders op verzameling C met gedeeltelijke domein bepaling. Totale gemiddelde precisie Algemeen
51,70 %
Ensemble entiteiten
51.84 %
Ensemble co-occurence
51.71 %
Ensemble cosinus
51.29 %
Tabel 5.6: Gemiddelde precisie van de grafiek in Figuur 5.4 deze classificeerders staan in de grafiek van Figuur 5.4. De gemiddelde precisie statistieken van deze grafiek staan in Tabel 5.6. Zoals te zien in Tabel 5.6 is er weinig verschil tussen de gemiddelde precisie van de algoritmes. Het valt op in Tabel 5.7 dat er weliswaar meer hashtags en hashtag clusters in de tweets van C zitten, maar dat dit nog altijd geen hoog percentage is. In de tabel is ook te zien dat er een groot verschil is in het aantal tweets met een hashtag en het aantal tweets dat in een hashtag cluster zit. Dit komt doordat de clusters zijn opgesteld met hashtags die veel voorkomen, zie de frequentiefiltering van sectie 3.3.3. Hierdoor worden veel hashtags niet gebruik bij de clusters, dit is noodzakelijk om ervoor te zorgen dat elke cluster voldoende tweets heeft om mee te trainen. Om de verschillen tussen de entiteit domeinen en hashtag clusters beter te begrijpen bestuderen
5.4 Hashtag Clusters
43
Aantallen tweets in C Totale verzameling
3 900 000
Entiteiten
3,60 %
Hashtags
11,60 %
Co-occurence cluster
4,88 %
Cosinus cluster
5,82 %
Tabel 5.7: Percentages van het aantal tweets met een domein in verzameling C, over verschillende domein bepalingen. we nu een vergelijking tussen deze domeinen in de tweets. De entiteit domein bepaling heeft gebruikt minder domeinen dan de hashtag clusters. Dit zorgt ervoor dat elke hashtag cluster een stuk minder tweets ter beschikking heeft dan de domeinen bij de entiteiten. In principe is het mogelijk de clusteringparameters aan te passen zodanig dat er minder, maar wel grotere clusters zijn. Het probleem is dat na experimenten duidelijk werd dat bij grotere clusters de kwaliteit van deze clusters snel omlaag ging. Men moet ook de afweging maken dat de grotere hoeveelheid hashtag clusters zorgt voor meer specifieke domeinen. Bij de entiteit domeinen wordt gebruik gemaakt van domeinen als ‘Gaming’ en ‘Gezondheid’, maar bij de hashtag clusters worden deze domeinen in essentie vervangen door meerdere clusters die nog specifiekere kanten van deze domeinen bevatten. Voorbeelden hiervan voor ‘Gaming’ zijn de co-occurence clusters ‘...#callofduty #codghosts #callofdutyghosts #ghost...’ en ‘...#betakey #blizzard #warcraft #hearthstone #worldofwarcraft...’. De tweede cluster spitst zich toe op een cluster over de uitgever ‘Blizzard’ waar de andere cluster zich concentreert op de spelserie ‘Call of Duty’. Deze clusters horen duidelijk bij het ‘Gaming’ domein. Maar in plaats van ´e´en domein ontstaan er door de clusters meerdere groepen tweets voor dit ‘Gaming’ domein. Door de specifiekere clusters ontstaat er de mogelijkheid om nog meer specifieke woorden op te pikken. Een voorbeeld hiervan is het woord ‘support’, bij de ‘Blizzard’ cluster neemt dit een negatieve betekenis aan. Bij de ‘Call of Duty’ cluster is dit echter een positief woord. Het woord ‘support’ staat hier voor de ondersteuning die door de spelmakers bij ‘Blizzard’ of ‘Call of Duty’ gegeven wordt. Deze ondersteuning is typisch voor de spelindustrie aangezien de spelsoftware vaak bugs of andere technische problemen bevatten die technische ondersteuning vereisen om op te lossen. Na het bekijken van de tweets bij ‘Blizzard’ wordt duidelijk dat verschillende mensen heel ontevreden zijn over de ondersteuning die de uitgever Blizzard recentelijk heeft gegeven, dit vertaald zich
5.5 Volledige Domein Classificatie
44
in het negatieve van ‘support’ bij de ‘Blizzard’ cluster. Bij de cluster ‘Call of Duty’ is dit echter net omgekeerd, waardoor ‘support’ hier positief is. Dit toont aan dat er zelfs bij clusters die uiteindelijk een heel gelijkaardige inhoud hebben, er nog altijd een verschil in terminologie kan ontstaan. Deze verschillen tussen de clusters vallen niet de detecteren in een heel algemeen domein als ‘Gaming’. Verder is ook duidelijk dat dit een heel nuttige applicatie is voor de detectie van de negatieve tweets, hieruit zou men immers kunnen afleiden dat ‘Blizzard’ moet werken aan hun technische ondersteuning. De volgende opmerking bij de vergelijking tussen entiteit domeinen en hashtag domeinen is dat de entiteit domeinen manueel bepaald zijn in tegenstelling tot de hashtag clusters. Deze entiteit domeinen kunnen ook niet automatisch aangepast worden aan de verzameling tweets. Het gevolg is dat indien er een onderwerp plots heel populair wordt (trending), dit onderwerp niet geplaatst kan worden bij een domein zonder manuele verwerking. De hashtag clustering kan dit echter opvangen, waardoor trending onderwerpen automatisch in een domein geplaatst kunnen worden. Bij entiteit domeinen zijn er dan ook veel meer tweets die tot geen enkel domein behoren, terwijl deze tweets wel bij ´e´en van de hashtag clusters kunnen behoren ook al hebben ze geen hashtag. Uiteindelijk is er weinig verschil in de gemiddelde precisie van de ensembles van de verschillende domein bepalingen. De entiteit domein bepaling heeft echter verschillende belangrijke nadelen. Het is niet automatisch, maar vereist het een manuele filtering. Verder is er ook een sterke afhankelijkheid van een externe dienst zoals in sectie 3.3.2 werd gezegd. Daarom wordt er voor de domein classificeerder gekozen voor het gebruik van de hashtag clusters. In de volgende sectie wordt dan ook de methode van sectie 3.3.4 getest.
5.5
Volledige Domein Classificatie
In deze sectie wordt de methode uit sectie 3.3.4 getest. Dit wordt gedaan met behulp van verzameling C 0 van sectie 4.2.2. De verzameling C 0 gebruikt dezelfde tweets als C, maar in deze verzameling zijn de domeinen van alle tweets bepaald. Deze verzameling bestaat dan ook uit een verzameling normale tweets zoals de verzameling B uit sectie 5.3.2. De methode die hier getest wordt is een poging om de problemen van secties 3.3.2 en 3.3.3 op te lossen, deze problemen kwamen duidelijk naar voor bij de resultaten van secties 5.3 en 5.4. Deze methode houdt immers in dat alle tweets een domein hebben waardoor het lage percentage domein tweets van de vorige methodes opgelost wordt. De evaluatie van deze methode wordt uiteengezet in sectie 5.5.1.
5.5 Volledige Domein Classificatie
45
Figuur 5.5: De precisie-recall curves van de verschillende classificeerders op verzameling C 0 met een volledige domein classificatie.
5.5.1
Vergelijking met tweets met domein classificatie
De methode van sectie 3.3.4 voert een domein classificatie uit die alle tweets een domein geeft. Deze domein classificatie maakt gebruik van hashtag clusters en wordt getest met de twee verschillende clusteringmethodes van sectie 3.3.3. De eerste clusteringmethode werkt met een cosinusafstand, dit resulteert in het cosinus ensemble. De tweede clusteringmethode werkt met de co-occurence afstand en deze resulteert in het co-occurence ensemble. Deze twee ensembles worden vergeleken met het basismethode. De precisie-recall curves van al deze classificeerders staan in de grafiek van Figuur 5.5. De gemiddelde precisie statistieken van deze grafiek staan in Tabel 5.8. Het eerste dat we hier bij opmerken is dat logischerwijze de resultaten van het basismethode (de algemene classificeerder) dezelfde is als bij sectie 5.4.1. Dit komt omdat het enige verschil tussen verzameling C en C 0 de domein bepaling is. Aangezien het basismethode onafhankelijk van de domeinen in de tweets is stelt deze dan ook dezelfde lijst van negatieve tweets op, met dezelfde performantie als gevolg. Vervolgens bekijken we de ensemble curves in meer detail. Zoals te zien in de grafiek zijn de ensemble curves hier beter dan het basismethode. Dit komt doordat de verzameling C 0
5.5 Volledige Domein Classificatie
46
Totale gemiddelde precisie Algemeen
51,70 %
Ensemble co-occurence
59,66 %
Domein co-occurence
49,39 %
Ensemble cosinus
58,00 %
Domein cosinus
49,00 %
Tabel 5.8: Gemiddelde precisie van de grafiek in Figuur 5.5 Co-occurence clustering
Cosinusclustering
392
1087
8,23
1,84
0, 51%
79, 76%
Totale #clusters Gemiddeld
#hashtags
per
cluster Singleton clusters
Tabel 5.9: Statistieken over de clusters met meerdere hashtags en singleton clusters met 1 hashtag bij de verschillende clusteringmethodes in verzameling C 0 . bestaat uit een verzameling van willekeurige tweets waarbij geschikte domeinen zijn geplaatst. Doordat elke tweet een domein heeft gekregen van de domein classificatie van sectie 3.3.3 is het mogelijk om de domeinspecifieke classificeerders op alle tweets op toe te passen. In sectie 5.3.2 en 5.4.1 is het grootste probleem immers dat er nauwelijks tweets zijn waarop de domeinspecifieke classificeerders gebruikt kunnen worden. Dit probleem is dus opgelost door de toepassing van de domein classificatie op alle tweets. Co-occurence clustering
Cosinusclustering
Singleton
Niet-singleton
Singleton
Niet-singleton
Tweets in clusters
0.16%
99.84%
67.81%
32.19%
Gemiddeld aantal
3 041,50
10 079,71
3 055,15
5 884,64
tweets per cluster Tabel 5.10: Een vergelijking van de singleton clusters die 1 hashtag hebben bij beide clusteringmethodes in verzameling C 0 .
5.5 Volledige Domein Classificatie
Gemiddelde precisie
47
Cosinusclustering Singleton
Niet-singleton
Ensemble
34, 55%
42.21%
Domein
28, 76%
30, 05%
Tabel 5.11: De gemiddelde precisie van de singleton cluster domeinen tegenover de andere cluster domeinen bij het ensemble en de domeinspecifieke classificeerders. Ten slotte wordt er vergelijking gemaakt tussen resultaten van de verschillende ensembles en hoe deze resultaten tot stand zijn gekomen. Er is een duidelijk verschil tussen de performantie van de beide clusteringmethodes. De co-occurence clusteringmethode levert een ensemble met een gemiddelde precisie van 59, 66%. Dit tegenover de cosinusclusteringmethode waarvan het ensemble een gemiddelde precisie heeft van 58, 00%. De performantie van de domeinspecifieke classificeerders van de co-occurence en cosinusclustering verschilt echter niet veel. Dit impliceert dat de domeinspecifieke classificeerders van de cosinusclustering minder toevoegen aan de algemene classificeerder dan de domeinspecifieke classificeerders van de co-occurence clustering. De hashtag clusters van de cosinus en co-occurence clusteringmethode worden dan ook nader bekeken, zie Tabel 5.9 en Tabel 5.10. De clusters van deze methode bestaan meestal uit ´e´en hashtag, een singleton cluster, zoals te zien in Tabel 5.10, met de uitzondering van enkele hashtag clusters die de grootste domeinen van de clustering vormen. Bij aanpassing van de parameters werd duidelijk dat door het verlagen van de cut-off er foute clusters ontstonden van hashtags die niet samen horen. Deze clustering ontstond doordat de cosinusafstand 3.3.3 enkel voor heel kleine afstanden een goede gelijkaardigheid tussen twee hashtags kan ontdekken. Daarom is hier gekozen voor singleton clusters die wel correct zijn, de co-occurence is op het vlak van clusters dan ook beter. Er zijn dus twee types van clusters ontstaan bij de cosinus cluster. De singleton clusters zorgen voor heel specifieke domeinen, het probleem is dat veel hashtags een gelijkaardig onderwerp hebben zoals de hashtags ‘#codghosts’ en ‘#callofdutyghosts’ en dat de clusters gebruikt moeten worden in de domein classificatie. Deze kleine clusters zorgen er dus voor dat de domein classificatie veel moeilijker verloopt. Nu krijgt de domein classificatie immers wel training, zodat er een domein gevonden kan worden bij tweets zonder hashtag, maar deze training zegt leert de domein classificeerder dat er bij elke tweet veel verschillende domeinen passen, aangezien er veel hashtags zijn die sterk gelijkaardig zijn maar in verschillende domeinen geplaatst zijn door de cosinusclustering. Dit zorgt ervoor dat het veel moeilijker wordt om een correct
5.5 Volledige Domein Classificatie
48
domein te vinden zodat er sneller een fout domein aan een tweet wordt gegeven. De domeinen worden dus minder goed geclassificeerd waardoor ze meer overeenkomen met een verzameling willekeurige tweets. Deze willekeurige domeinen worden vervolgens gebruikt voor de training van de domeinspecifieke sentiment classificeerders. Dit zorgt er dus voor dat de domeinspecifieke classificeerders minder kunnen toevoegen aan de algemene classificeerder doordat het moeilijker voor hen is om de domeinspecifieke features te vinden. Dit wordt bevestigd in Tabel 5.11. In deze tabel is duidelijk te zien dat het verschil in performantie tussen de singleton clusters en niet singleton clusters groter is wanneer ze in het ensemble gebruikt worden dan wanneer ze bij de domeinspecifieke classificeerders gebruikt worden. Dit bevestigt dat de singleton clusters minder toevoegen dan de niet singleton clusters. Dit verklaart waarom het cosinusclustering ensemble minder goed performeert dan het co-occurence clustering ensemble waar de clustering beter werkt. Er zijn immers minder singleton clusters en de bij de cosinusclustering kunnen deze singleton clusters niet weg zonder clusters te bekomen met hashtags die niet samen horen (Tabel 5.9).
CONCLUSIES
49
Hoofdstuk 6
Conclusies In dit onderzoek is gewerkt aan een algoritme om de detectie van negatieve tweets te verbeteren door rekening te houden met de domeinen waartoe de tweets behoren. Dit algoritme werkt met een ensemble van domein specifieke classificeerders getraind op tweets behorend tot het domein en een algemene classificeerder getraind op alle tweets. Door de combinatie van deze classificeerders wordt de kans ingeschat dat een tweet negatief is. Voor de classificatie algoritmes is Naive Bayes gebruikt met het Multinomiale model. We vergeleken deze methodologie met een basismethode dat enkel werkt met de algemene classificeerder, dit zorgt voor een domein onafhankelijke sentiment classificatie. Om de performantie van de methodes te vergelijken is gebruik gemaakt van de precisie-recall curve op de lijst van tweets die gerangschikt werden aan de hand van de kans dat ze negatief zijn. Verder werd ook het oppervlak onder de precisie-recall curve geschat door de gemiddelde precisie (average precision) te berekenen. Deze metriek laat ons toe een objectieve vergelijking te maken. Aangezien deze sentiment classificeerder afhankelijk is van de domeinen waartoe de tweets behoren, zijn we begonnen met het samenstellen van verschillende domein bepaling methodes. Eerst is hiervoor gebruik gemaakt van een methode gebaseerd op de entiteiten (named entities) in tweets, de tweets zijn dan in een domein geplaatst door te kijken tot welk domein de entiteit behoort. Hiermee werd getest hoe goed het sentiment ensemble werkt. Het bleek dat zolang de verzameling van tweets bestond uit enkel tweets waarvan een entiteit en dus een domein kon ge¨extraheerd worden, de detectie van negatieve tweets beter was dan bij het basismethode. In dit geval heeft het ensemble een gemiddelde precisie van 62, 00% tegenover de 57, 51% van het basismethode. Het probleem hierbij is dat deze domein bepaling niet alle tweets een domein
CONCLUSIES
50
kan geven waardoor de verbetering van het ensemble sterk achteruit gaat bij een normale verzameling tweets waarin veel minder entiteiten voorkomen. In dit geval heeft het ensemble slechts 49, 56% gemiddelde precisie tegenover de 49, 41% van het basismethode. Merk ook op dat de performantie bij beide is achteruit gegaan door het gebruik van tweets die geen entiteit domein hebben. Dit komt doordat tweets met een entiteit typisch langer zijn en beter geformuleerd worden, waardoor de sentiment classificatie voor beide algoritmes makkelijker is. Verder heeft deze domein bepaling als nadeel dat de domeinen vast bepaald zijn en niet afhankelijk zijn van de verzameling tweets. Deze methode is ook sterk afhankelijk van een manuele controle van de kwaliteit van de gebruikte entiteiten. Om deze problemen op te lossen werd een domein bepaling opgesteld die werkt met de hashtags in de tweets. Aangezien deze verzameling hashtags afhankelijk is van de verzameling tweets die gebruikt wordt, zorgt dit voor een betere groep domeinen dan de vastgelegde entiteit domeinen. Het werd echter snel duidelijk dat veel van de hashtags dezelfde betekenis hebben en synoniemen zijn van elkaar. Om hashtags met een gelijkaardige betekenis te groeperen werd het Spectral Clusteringalgoritme gebruikt. We hebben dit algoritme met twee verschillende afstandssmetrieken gebruikt. In de eerste plaats is er de co-occurence afstand die werkt op de redenering dat hashtags die samen voorkomen ook samen in een cluster horen. Daarnaast is er de cosinus afstand tussen hashtags die de cosinus afstand gebruikt tussen twee bag-of-words vectoren van alle tweets die bij de hashtags horen. Deze domein bepaling werkt dus met hashtag clusters als domeinen waarbij tweets die een hashtag van de cluster bevatten bij een hashtag cluster domein horen. De performantie van het ensemble met deze domeinen verschilt echter niet veel met de performantie bij de entiteit domeinen. Dit lost immers weliswaar de problemen van de statische domeinen en de manuele controle op, maar er zijn nog altijd niet genoeg tweets met een domein om de ensemble methode op toe te passen. Om dit op te lossen werd gebruik gemaakt van een domein classificeerder. Dit domein classificatie algoritme werkt met het Naive Bayes algoritme met het Multinomiale model, dit algoritme neemt als training de tweets die wel een domein hebben gekregen om zo bij de tweets zonder domein een zo goed mogelijk passend domein te plaatsen. De test van de sentiment classificatie toont nu wel een duidelijke verbetering van de gemiddelde precisie van het co-occurence ensemble (59, 66%) tegenover het basismethode (51, 70%). Het gebruik van de cosinusclustering levert een ensemble op met een gemiddelde precisie van 58, 00%. Na onderzoek werd duidelijk dat deze lagere performantie vooral veroorzaakt werd door een minder goede clustering waardoor de domein classificatie, die tweets in deze
CONCLUSIES
51
clusters moet classificeren, een minder goede classificatie uitvoerde op de tweets. Ten slotte willen we opmerken dat gezien de problemen bij het classificeren van sentiment bij tweets het gebruik van extra informatie bij de tweets cruciaal kan zijn. Tweets zelf bevatten immers door hun lengte weinig informatie qua woorden. Om de classificatie van tweets verder te verbeteren moet er dan ook in de eerste plaats gestreefd worden naar het halen van zo veel mogelijk informatie uit de tweet. Dit is mogelijk door bijvoorbeeld de tweet tekst zelf te verbeteren, door bijvoorbeeld spellingverbeteringen. De andere optie is om extra informatie aan de tweet toe te voegen, dit kan bijvoorbeeld door het gebruiken van de auteurs van de tweets. Dit zou toelaten om tweets van dezelfde auteurs samen te beschouwen, waardoor elke tweet extra informatie kan halen uit de andere tweets van dezelfde auteur. Het nadeel van de hashtags als domeinen is dat veel hashtags een gevolg zijn van tijdelijke trending. Dit kan leiden tot tweets die geen passende hashtag cluster vinden doordat ze een nieuwe trend bevatten of tot hashtag clusters die niet meer voorkomen, waardoor er een nutteloos domein voorkomt. De ontwikkeling van een ensemble dat voor de domeinen een sliding window in de tijd toepast kan bijvoorbeeld een ontwikkeling zijn waarmee de hashtags automatisch kunnen aangepast worden van dag tot dag.
BIBLIOGRAFIE
52
Bibliografie [1] Y. Lin, D. Margolin, B. Keegan, D. Lazer, “Voices of victory: a computational focus group framework for tracking opinion shift in real time”, in Proceedings of the 22nd International Conference on World Wide Web, Pages 737-748, 2013. [2] T. Rao, S. Srivastava, “Analyzing Stock Market Movements Using Twitter Sentiment Analysis”, in Proceedings of the 2012 International Conference on Advances in Social Networks Analysis and Mining, Pages 119-123, 2012 [3] A. Bermingham, A. Smeaton “Classifying sentiment in microBlogs: is brevity an advantage?”
in Proceedings of the 19th ACM International Conference on Information and
Knowledge Management, Pages 1833-1836, 2010 [4] B. Pang, L. Lee, S. Vaithyanathan, “Thumbs up? Sentiment classification using Machine learning techniques” in Proceedings of the ACL-02 Conference on Empirical Methods in Natural Language Processing, Pages 79-86, 2002 [5] A. Alec, R. Bhayani, L. Huang, “Twitter sentiment classification using distant supervision” in CS224N Project Report, Stanford, Pages 30-38, 2009. [6] J. Bollen, A. Pepe, H. Mao, “Modeling public mood and emotion: Twitter Sentiment and socio-economic phenomena”, in Proceedings of the Fifth International AAAI Conference on Weblogs and Social Media, 2011. [7] J. Read, “Using emoticons to reduce dependency in machine learning techniques for sentiment classification”, in Proceedings of the ACL Student Research Workshop, Pages 43-48, 2005. [8] A. Bifet, E. Frank, “Sentiment knowledge discovery in Twitter streaming data” in Proceedings of the 13th International Conference on Discovery Science, Pages 1-15, 2010.
BIBLIOGRAFIE
53
[9] X. Wang, F. Wei, X. Liu, M. Zhou, M. Zhang, “Topic sentiment analysis in Twitter: a graph-based hashtag sentiment classification approach” in Proceedings of the 20th ACM International Conference on Information and Knowledge Management, Pages 1031-1040, 2011 [10] A. Mazzia, J. Juett, “Suggesting hashtags on Twitter” in EECS 545 Project, 2011 [11] D. Antenucci, G. Handy, A. Modi, M. Tinkerhess “Classification of tweets via clustering of hashtags” in EECS 545 Project, 2011 [12] A. Bifet, G. Holmes, B. Pfahringer, P. Kranen, H. Kremer, T. Jansen, T. Seidl, “MOA: Massive Online Analysis, a framework for stream classification and clustering” in Journal of Machine Learning Research Workshop and Conference Proceedings, Volume 11: Workshop on Applications of Pattern Analysis, Pages 44-50, 2010 [13] U. von Luxburg, “A tutorial on spectral clustering” in Statistics and Computing, Volume 17, Pages 395-416, 2007