Cryptweets / cryptweet.py
Haleel's picture
cryptweet file added
ad6f551
raw
history blame
2.03 kB
import tweepy
import json
!pip -q install transformers
!pip3 install emoji
import emoji
import transformers
from transformers import pipeline
sentimentmodel=pipeline(model="finiteautomata/bertweet-base-sentiment-analysis")
# authenticate the api key and token with twitter
from tweepy.auth import OAuthHandler
auth = OAuthHandler('t6d8uj4w9P6DjrNSmfSd42gEI', 'ZLcVXunCbN6NO4rUup6vTR33rO32epm0LFHLkzFLZnhjbQmQzZ')
auth.set_access_token('1405483945379074054-ktOMmQ6HUcZwzOxiHfjcFmP74hkTn5', 'hV792qfEAuJcvZmkzmoMf61qaaSnoV8D2YiIFYjzAgr06')
api = tweepy.API(auth,wait_on_rate_limit=True)
# extract the tweets with the given keyword
def tweextractor(keyword):
tweet=[] #list to store tweets extracted
# search_tweets method extract atmost 100 tweets with given keyword
# use it with cursor to extract more than that in one go
# take 500 popular tweets and 500 recent tweets to keep consistency in the result
for i in tweepy.Cursor(api.search_tweets, keyword,tweet_mode="extended",lang='en',result_type='recent',count=100).items(500):
i = json.dumps(i._json)
i = json.loads(i)
if i['full_text'] not in tweet:
tweet.append(i['full_text'])
for i in tweepy.Cursor(api.search_tweets, keyword,tweet_mode="extended",lang='en',result_type='popular',count=100).items(500):
i = json.dumps(i._json)
i = json.loads(i)
if i['full_text'] not in tweet and len(i['full_text'])<500:
tweet.append(i['full_text'])
print(len(tweet),'tweets total tweets found')
return tweet
# method to take keyword and find overall sentiment
def sentimentanalyser(keyword):
tweets=tweextractor(keyword)
score=[]
mood=sentimentmodel(tweet)
for i in mood:
if i['label']=='POS':
score.append(i['score'])
elif i['label']=='NEG':
score.append(-i['score'])
sentiment=sum(score)/len(score)
if sentiment>0:
return 'Sentiment of public is positive with probability '+sentiment
else: return 'Sentiment of public is negative with probability'+(-sentiment)