rishikesh's picture
Update app.py
55b58cc
import streamlit as st
import pickle
from datetime import datetime
from sentence_transformers import SentenceTransformer
import numpy as np
import re
loaded_scaler = pickle.load(open('minMaxScaler.sav', 'rb'))
loaded_model = pickle.load(open('justin_rf_model.sav', 'rb'))
vectorizer = SentenceTransformer('all-MiniLM-L6-v2')
def featurize(tweet, tweet_date, tweet_time):
year = float(tweet_date.year)
month = float(tweet_date.month)
day = float(tweet_date.day)
hr = float(tweet_time.hour)
minutes = float(tweet_time.minute)
weekDay = float(tweet_date.weekday())
# preprocess tweets
tweet = re.sub(r'http\S+', 'url', tweet)
# count the number of accounts tagged and hashtags mentioned in tweet
tagCount = float(len(re.findall(r"@(\w+)", tweet)))
hashTagsCount = float(len(re.findall(r"#(\w+)", tweet)))
# vectorize data
x1 = np.array([tagCount, hashTagsCount, minutes, hr, day, weekDay, month, year ])
x1 = loaded_scaler.transform(x1.reshape(1,-1))
x2 = vectorizer.encode(tweet)
inp_vec = np.concatenate([x2, x1.flatten()]).reshape(1,-1)
return inp_vec
def getOutput(inp_vec):
output = loaded_model.predict(inp_vec)
return output[0]
def main():
st.title("Welcome to tweet engagement predictor")
with st.form("my_form", clear_on_submit=True):
tweet = st.text_input('Enter a tweet')
tweet_date = st.date_input("Enter the date of tweeting",
value = datetime(2018,1,1,0,0),
min_value=datetime(2015,1,1,0,0),
max_value=datetime(2021,12,12,23,59))
tweet_time = st.time_input('Enter the time of tweeting')
# Every form must have a submit button.
submitted = st.form_submit_button("Submit")
if submitted:
inp_vec = featurize(tweet, tweet_date, tweet_time)
output = getOutput(inp_vec)
st.write(tweet)
st.write(tweet_date)
st.write(tweet_time)
if output == 1 :
st.write('Given tweet will get low engagment - less than 8800 ')
elif output == 2 :
st.write('Given tweet will get moderate engagment - retweets in the range of 8800 to 24000')
elif output == 3 :
st.write('Given tweet will get high engagment - more than 24000 retweets ')
if __name__ == '__main__' :
main()