Spaces:
Runtime error
Runtime error
| 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() | |