Twitter sentiment analysis
First up the Twitter API module needed installing:-
galiquis@raspberrypi: $ pip3 install tweepy
Next a Twitter App is required from this link:-
https://developer.twitter.com/en/apps
This required setting up a developer account – with more justification in the application form than I was expecting – especially around what I’d be using the app for….anyway once generated it gave a live stream of twitter based on this code:-
from tweepy import Stream from tweepy import OAuthHandler from tweepy.streaming import StreamListener #consumer key, consumer secret, access token, access secret. ckey="6ru23AnzOKAieH4eYXF0XuTPS" csecret="74Oz560aRCfo5QzzXu2I0gfOm58qkNPfZx0oSl3tnWEnEND4ex" atoken="241873929-QkQ1eN0Du1Cg6el6rJa3sMGRHBaiSp7Cxekq61Of" asecret="hf0ECMVfcqlPWkgOGKeNNTU1m41QQuiTOLzktsiNqqIxD" class listener(StreamListener): def on_data(self, data): print(data) return(True) def on_error(self, status): print(status) auth = OAuthHandler(ckey, csecret) auth.set_access_token(atoken, asecret) twitterStream = Stream(auth, listener()) twitterStream.filter(track=["car"])
https://pythonprogramming.net/twitter-api-streaming-tweets-python-tutorial/
The below covers a few tweaks with the output of the sentiment engine being saved off into a text file.
from tweepy import Stream from tweepy import OAuthHandler from tweepy.streaming import StreamListener import json import sentiment_mod as s #consumer key, consumer secret, access token, access secret. ckey="*" csecret="*" atoken="*" asecret="*" class listener(StreamListener): def on_data(self, data): all_data = json.loads(data) tweet = all_data["text"] sentiment_value, confidence = s.sentiment(tweet) print(tweet, sentiment_value, confidence) if confidence*100 >= 80: output = open("twitter-out.txt", "a") output.write(sentiment_value) output.write('\n') output.close() return(True) def on_error(self, status): print(status) auth = OAuthHandler(ckey, csecret) auth.set_access_token(atoken, asecret) twitterStream = Stream(auth, listener()) twitterStream.filter(track=["car"]) # term searched for in tweets
Next we’ll look at graphing this data.