Well, is is not coincidental that the sentiment for Netflix is also improving, 68% of the tweets now have positive sentiment. See the table below:
Total | Positive | Negative | Average | Total | Sentiment |
Tweets
Fetched |
Tweets | Tweets | Score | Tweets | |
499 | 171 | 80 | 0.281 | 251 | 68% |
*Make sure you understand and interpret this analysis correctly. This analysis is not based on NLP.
I updated the sentiment analysis that I did last year, http://goo.gl/fkfPy , (I was then just beginning to play with Twitter and Text Mining packages in R) and used advanced packages like "TM" and "WordCloud". The new analysis is based on more than 6,800 words which are most commonly prescribed in various sentiment analysis blogs/books. (Check out Hu and Liu http://www.cs.uic.edu/~liub/
I came across this excellent blog by Jeffrey Bean, @JeffreyBean, (http://goo.gl/RPkFX) and his tutorial. Thank you Mr. Bean! Please follow the instructions from Bean's slides and the R code listed there as well as the R code here:
Here is the updated R code snippets -
#Populate the list of sentiment words from Hu and Liu (http://www.cs.uic.edu/~liub/
huliu.pwords <- scan('opinion-lexicon/ positive-words.txt', what='character', comment.char=';')
huliu.nwords <- scan('opinion-lexicon/ negative-words.txt', what='character', comment.char=';')
# Add some words
huliu.nwords <- c(huliu.nwords,'wtf','wait',' waiting','epicfail', 'crash', 'bug', 'bugy', 'bugs', 'slow', 'lie')
#Remove some words
huliu.nwords <- huliu.nwords[!huliu.nwords==' sap']
huliu.nwords <- huliu.nwords[!huliu.nwords==' cloud']
#which('sap' %in% huliu.nwords)
twitterTag <- "@Netflix"
# Get 1500 tweets - an individual is only allowed to get 1500 tweets
tweets <- searchTwitter(tag, n=1500)
tweets.text <- laply(tweets,function(t)t$ getText())
sentimentScoreDF <- getSentimentScore(tweets.text)
sentimentScoreDF$TwitterTag <- twitterTag
# Get rid of tweets that have zero score and seperate +ve from -ve tweets
sentimentScoreDF$posTweets <- as.numeric(sentimentScoreDF$ SentimentScore >=1)
sentimentScoreDF$negTweets <- as.numeric(sentimentScoreDF$ SentimentScore <=-1)
#Summarize finidings
summaryDF <- ddply(sentimentScoreDF," TwitterTag", summarise,
TotalTweetsFetched=length( SentimentScore),
PositiveTweets=sum(posTweets) , NegativeTweets=sum(negTweets),
AverageScore=round(mean( SentimentScore),3))
summaryDF$TotalTweets <- summaryDF$PositiveTweets + summaryDF$NegativeTweets
#Get Sentiment Score
summaryDF$Sentiment <- round(summaryDF$ PositiveTweets/summaryDF$ TotalTweets, 2)
Saving the best for the last, here is a word cloud (also called tag cloud) for Netflix built in R-
I will be putting the R code up here for building a word cloud after scrubbing it.
Happy Analyzing!
No comments:
Post a Comment