title: “Sentiment Analysis on Political Leaders via Twitter” author: “Emre Toros” date: “9 September 2016” output: html_document

This is a project on sentiment analysis of the tweets. Aim is to score the negative and/or positive tweets on Putin, in order to understand the public opnion on Putin via twitter. The sample consists of the last 500 tweets mentioning Vladimir Putin in English. You can replicate the same analysis by changing the twitter handle to the leader you want

The reading materials used in this document are as follows: 1. https://cran.r-project.org/web/packages/twitteR/twitteR.pdf 2. https://dl.dropboxusercontent.com/u/4839225/twitter%20text%20mining%20with%20R.pdf 3. https://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html 4. https://dev.twitter.com/oauth/overview/introduction

The neccesary packages

library(twitteR)
library(tm)
## Loading required package: NLP
library(plyr)
## 
## Attaching package: 'plyr'
## The following object is masked from 'package:twitteR':
## 
##     id
library(stringr)
library(sjPlot)

TwitteR app authorization, the real values are masked, you should get your own values, refer to reading material 1 page 13

setup_twitter_oauth("5z59VX7Ba4FMboyXZqEH2yqK7", "9D8l6HjFggTQT1mnM3cGlGIYAf01lerhDuAERTvGV7iKkHfuod", access_token = "83306745-B0eaQ9aFO9Og5KpjurHObOnkwibO4Y5Xd5ipkkriy", access_secret = "WZIHeROVTgcBSKNFOhmFGrF4Ogvaxql7TRnE0I9I8uyoQ")
## [1] "Using direct authentication"

Collecting tweets on Putin, you can change “n”" to the number of tweets that you want

putin <- searchTwitter("@PutinRF_Eng", lang="en", n=500)

Extracting the tweet text

putin.text = laply(putin, function(t) t$getText() )

lexicon for sentiments

 hu.liu.pos <- scan("D:/emre/SkyDrive/makale/R/opinion-lexicon-English/positive-words.txt",
                   what="character", comment.char=";")
 
 hu.liu.neg <- scan("D:/emre/SkyDrive/makale/R/opinion-lexicon-English/negative-words.txt",
                    what="character", comment.char=";")
 pos.words <- c(hu.liu.pos)
 neg.words <- c(hu.liu.neg)

setting the score.sentiment function, unique function you cannot find it in any package

score.sentiment <- function(sentences, pos.words, neg.words, .progress='none')
 {
   require(plyr)
   require(stringr)
   
   # we got a vector of sentences. plyr will handle a list
   # or a vector as an "l" for us
   # we want a simple array ("a") of scores back, so we use 
   # "l" + "a" + "ply" = "laply":
   scores = laply(sentences, function(sentence, pos.words, neg.words) {
     
     # clean up sentences with R's regex-driven global substitute, gsub():
     sentence = gsub('[[:punct:]]', '', sentence)
     sentence = gsub('[[:cntrl:]]', '', sentence)
     sentence = gsub('\\d+', '', sentence)
     # and convert to lower case:
     sentence = tolower(sentence)
     
     # split into words. str_split is in the stringr package
     word.list = str_split(sentence, '\\s+')
     # sometimes a list() is one level of hierarchy too much
     words = unlist(word.list)
     
     # compare our words to the dictionaries of positive & negative terms
     pos.matches = match(words, pos.words)
     neg.matches = match(words, neg.words)
     
     # match() returns the position of the matched term or NA
     # we just want a TRUE/FALSE:
     pos.matches = !is.na(pos.matches)
     neg.matches = !is.na(neg.matches)
     
     # and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
     score = sum(pos.matches) - sum(neg.matches)
     
     return(score)
   }, pos.words, neg.words, .progress=.progress )
   
   scores.df = data.frame(score=scores, text=sentences)
   return(scores.df)
 }

Analysis on Putin

putin.scores <- score.sentiment(putin.text, pos.words,neg.words, .progress='text')
## 
  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |                                                                 |   1%
  |                                                                       
  |=                                                                |   1%
  |                                                                       
  |=                                                                |   2%
  |                                                                       
  |==                                                               |   2%
  |                                                                       
  |==                                                               |   3%
  |                                                                       
  |==                                                               |   4%
  |                                                                       
  |===                                                              |   4%
  |                                                                       
  |===                                                              |   5%
  |                                                                       
  |====                                                             |   5%
  |                                                                       
  |====                                                             |   6%
  |                                                                       
  |====                                                             |   7%
  |                                                                       
  |=====                                                            |   7%
  |                                                                       
  |=====                                                            |   8%
  |                                                                       
  |======                                                           |   9%
  |                                                                       
  |======                                                           |  10%
  |                                                                       
  |=======                                                          |  10%
  |                                                                       
  |=======                                                          |  11%
  |                                                                       
  |========                                                         |  12%
  |                                                                       
  |========                                                         |  13%
  |                                                                       
  |=========                                                        |  13%
  |                                                                       
  |=========                                                        |  14%
  |                                                                       
  |=========                                                        |  15%
  |                                                                       
  |==========                                                       |  15%
  |                                                                       
  |==========                                                       |  16%
  |                                                                       
  |===========                                                      |  16%
  |                                                                       
  |===========                                                      |  17%
  |                                                                       
  |===========                                                      |  18%
  |                                                                       
  |============                                                     |  18%
  |                                                                       
  |============                                                     |  19%
  |                                                                       
  |=============                                                    |  19%
  |                                                                       
  |=============                                                    |  20%
  |                                                                       
  |=============                                                    |  21%
  |                                                                       
  |==============                                                   |  21%
  |                                                                       
  |==============                                                   |  22%
  |                                                                       
  |===============                                                  |  22%
  |                                                                       
  |===============                                                  |  23%
  |                                                                       
  |===============                                                  |  24%
  |                                                                       
  |================                                                 |  24%
  |                                                                       
  |================                                                 |  25%
  |                                                                       
  |=================                                                |  25%
  |                                                                       
  |=================                                                |  26%
  |                                                                       
  |=================                                                |  27%
  |                                                                       
  |==================                                               |  27%
  |                                                                       
  |==================                                               |  28%
  |                                                                       
  |===================                                              |  29%
  |                                                                       
  |===================                                              |  30%
  |                                                                       
  |====================                                             |  30%
  |                                                                       
  |====================                                             |  31%
  |                                                                       
  |=====================                                            |  32%
  |                                                                       
  |=====================                                            |  33%
  |                                                                       
  |======================                                           |  33%
  |                                                                       
  |======================                                           |  34%
  |                                                                       
  |======================                                           |  35%
  |                                                                       
  |=======================                                          |  35%
  |                                                                       
  |=======================                                          |  36%
  |                                                                       
  |========================                                         |  36%
  |                                                                       
  |========================                                         |  37%
  |                                                                       
  |========================                                         |  38%
  |                                                                       
  |=========================                                        |  38%
  |                                                                       
  |=========================                                        |  39%
  |                                                                       
  |==========================                                       |  39%
  |                                                                       
  |==========================                                       |  40%
  |                                                                       
  |==========================                                       |  41%
  |                                                                       
  |===========================                                      |  41%
  |                                                                       
  |===========================                                      |  42%
  |                                                                       
  |============================                                     |  42%
  |                                                                       
  |============================                                     |  43%
  |                                                                       
  |============================                                     |  44%
  |                                                                       
  |=============================                                    |  44%
  |                                                                       
  |=============================                                    |  45%
  |                                                                       
  |==============================                                   |  45%
  |                                                                       
  |==============================                                   |  46%
  |                                                                       
  |==============================                                   |  47%
  |                                                                       
  |===============================                                  |  47%
  |                                                                       
  |===============================                                  |  48%
  |                                                                       
  |================================                                 |  49%
  |                                                                       
  |================================                                 |  50%
  |                                                                       
  |=================================                                |  50%
  |                                                                       
  |=================================                                |  51%
  |                                                                       
  |==================================                               |  52%
  |                                                                       
  |==================================                               |  53%
  |                                                                       
  |===================================                              |  53%
  |                                                                       
  |===================================                              |  54%
  |                                                                       
  |===================================                              |  55%
  |                                                                       
  |====================================                             |  55%
  |                                                                       
  |====================================                             |  56%
  |                                                                       
  |=====================================                            |  56%
  |                                                                       
  |=====================================                            |  57%
  |                                                                       
  |=====================================                            |  58%
  |                                                                       
  |======================================                           |  58%
  |                                                                       
  |======================================                           |  59%
  |                                                                       
  |=======================================                          |  59%
  |                                                                       
  |=======================================                          |  60%
  |                                                                       
  |=======================================                          |  61%
  |                                                                       
  |========================================                         |  61%
  |                                                                       
  |========================================                         |  62%
  |                                                                       
  |=========================================                        |  62%
  |                                                                       
  |=========================================                        |  63%
  |                                                                       
  |=========================================                        |  64%
  |                                                                       
  |==========================================                       |  64%
  |                                                                       
  |==========================================                       |  65%
  |                                                                       
  |===========================================                      |  65%
  |                                                                       
  |===========================================                      |  66%
  |                                                                       
  |===========================================                      |  67%
  |                                                                       
  |============================================                     |  67%
  |                                                                       
  |============================================                     |  68%
  |                                                                       
  |=============================================                    |  69%
  |                                                                       
  |=============================================                    |  70%
  |                                                                       
  |==============================================                   |  70%
  |                                                                       
  |==============================================                   |  71%
  |                                                                       
  |===============================================                  |  72%
  |                                                                       
  |===============================================                  |  73%
  |                                                                       
  |================================================                 |  73%
  |                                                                       
  |================================================                 |  74%
  |                                                                       
  |================================================                 |  75%
  |                                                                       
  |=================================================                |  75%
  |                                                                       
  |=================================================                |  76%
  |                                                                       
  |==================================================               |  76%
  |                                                                       
  |==================================================               |  77%
  |                                                                       
  |==================================================               |  78%
  |                                                                       
  |===================================================              |  78%
  |                                                                       
  |===================================================              |  79%
  |                                                                       
  |====================================================             |  79%
  |                                                                       
  |====================================================             |  80%
  |                                                                       
  |====================================================             |  81%
  |                                                                       
  |=====================================================            |  81%
  |                                                                       
  |=====================================================            |  82%
  |                                                                       
  |======================================================           |  82%
  |                                                                       
  |======================================================           |  83%
  |                                                                       
  |======================================================           |  84%
  |                                                                       
  |=======================================================          |  84%
  |                                                                       
  |=======================================================          |  85%
  |                                                                       
  |========================================================         |  85%
  |                                                                       
  |========================================================         |  86%
  |                                                                       
  |========================================================         |  87%
  |                                                                       
  |=========================================================        |  87%
  |                                                                       
  |=========================================================        |  88%
  |                                                                       
  |==========================================================       |  89%
  |                                                                       
  |==========================================================       |  90%
  |                                                                       
  |===========================================================      |  90%
  |                                                                       
  |===========================================================      |  91%
  |                                                                       
  |============================================================     |  92%
  |                                                                       
  |============================================================     |  93%
  |                                                                       
  |=============================================================    |  93%
  |                                                                       
  |=============================================================    |  94%
  |                                                                       
  |=============================================================    |  95%
  |                                                                       
  |==============================================================   |  95%
  |                                                                       
  |==============================================================   |  96%
  |                                                                       
  |===============================================================  |  96%
  |                                                                       
  |===============================================================  |  97%
  |                                                                       
  |===============================================================  |  98%
  |                                                                       
  |================================================================ |  98%
  |                                                                       
  |================================================================ |  99%
  |                                                                       
  |=================================================================|  99%
  |                                                                       
  |=================================================================| 100%

Plotting the scores

 sjp.frq(putin.scores$score)