rishikesh commited on
Commit
f46aea0
·
1 Parent(s): 0bff7bb

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -0
app.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pickle
3
+ from datetime import datetime
4
+ from sentence_transformers import SentenceTransformer
5
+ import numpy as np
6
+ import re
7
+
8
+ loaded_scaler = pickle.load(open('minMaxScaler.sav', 'rb'))
9
+ loaded_model = pickle.load(open('justin_rf_model.sav', 'rb'))
10
+ vectorizer = SentenceTransformer('all-MiniLM-L6-v2')
11
+
12
+ def featurize(tweet, tweet_date, tweet_time):
13
+ year = float(tweet_date.year)
14
+ month = float(tweet_date.month)
15
+ day = float(tweet_date.day)
16
+ hr = float(tweet_time.hour)
17
+ minutes = float(tweet_time.minute)
18
+ weekDay = float(tweet_date.weekday())
19
+
20
+ # preprocess tweets
21
+ tweet = re.sub(r'http\S+', 'url', tweet)
22
+
23
+ # count the number of accounts tagged and hashtags mentioned in tweet
24
+ tagCount = float(len(re.findall(r"@(\w+)", tweet)))
25
+ hashTagsCount = float(len(re.findall(r"#(\w+)", tweet)))
26
+
27
+ # vectorize data
28
+ x1 = np.array([tagCount, hashTagsCount, minutes, hr, day, weekDay, month, year ])
29
+ x1 = loaded_scaler.transform(x1.reshape(1,-1))
30
+ x2 = vectorizer.encode(tweet)
31
+ inp_vec = np.concatenate([x2, x1.flatten()]).reshape(1,-1)
32
+
33
+ return inp_vec
34
+
35
+ def getOutput(inp_vec):
36
+ output = loaded_model.predict(inp_vec)
37
+ return output[0]
38
+
39
+ def main():
40
+
41
+ st.title("Welcome to tweet engagement predictor")
42
+ with st.form("my_form", clear_on_submit=True):
43
+ tweet = st.text_input('Enter a tweet')
44
+ tweet_date = st.date_input("Enter the date of tweeting",
45
+ value = datetime(2018,1,1,0,0),
46
+ min_value=datetime(2015,1,1,0,0),
47
+ max_value=datetime(2021,12,12,23,59))
48
+ tweet_time = st.time_input('Enter the time of tweeting')
49
+
50
+ # Every form must have a submit button.
51
+ submitted = st.form_submit_button("Submit")
52
+
53
+ if submitted:
54
+ inp_vec = featurize(tweet, tweet_date, tweet_time)
55
+ output = getOutput(inp_vec)
56
+ st.write(tweet)
57
+ if output == 1 :
58
+ st.write('Given tweet will get low engagment - less than 8800 ')
59
+ elif output == 2 :
60
+ st.write('Given tweet will get moderate engagment - retweets in the range of 8800 to 24000')
61
+ elif output == 3 :
62
+ st.write('Given tweet will get high engagment - more than 24000 retweets ')
63
+
64
+ if __name__ == '__main__' :
65
+ main()