File size: 3,158 Bytes
9f65e0d
 
 
 
 
 
 
0aaefc8
9f65e0d
 
 
 
 
0aaefc8
 
9f65e0d
0aaefc8
 
 
6ed966a
9f65e0d
6ed966a
9f65e0d
 
 
bd26754
9f65e0d
 
 
 
 
 
 
 
 
 
 
 
0aaefc8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9f65e0d
 
0aaefc8
 
 
 
 
 
 
9f65e0d
0aaefc8
9f65e0d
0aaefc8
 
 
 
 
9f65e0d
0aaefc8
 
 
 
 
9f65e0d
 
0aaefc8
9f65e0d
 
bd26754
0aaefc8
 
9f65e0d
 
bd26754
0aaefc8
9f65e0d
 
 
bd26754
0aaefc8
9f65e0d
fda4b3f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import streamlit as st
import streamlit.components.v1 as com
#import libraries
from transformers import AutoModelForSequenceClassification,AutoTokenizer, AutoConfig
import numpy as np
#convert logits to probabilities
from scipy.special import softmax
from transformers import pipeline




#import the model
pipe=pipeline(model="Junr-syl/sentiments_analysis_DISTILBERT")
# tokenizer = AutoTokenizer.from_pretrained('Junr-syl/sentiments_analysis_DISTILBERT')

# model_path = f"Junr-syl/sentiments_analysis_DISTILBERT"
# config = AutoConfig.from_pretrained(model_path)
# model = AutoModelForSequenceClassification.from_pretrained(model_path)

#Set the page configs
st.set_page_config(page_title='Sentiments Analysis',page_icon='😎',layout='centered')

#welcome Animation
com.iframe("https://embed.lottiefiles.com/animation/149093")
st.markdown("<h1 style='text-align: center'> Tweet Sentiments </h1>",unsafe_allow_html=True)

#Create a form to take user inputs
with st.form(key='tweet',clear_on_submit=True):
    text=st.text_area('Copy and paste a tweet or type one',placeholder='I find it quite amusing how people ignore the effects of not taking the vaccine')
    submit=st.form_submit_button('submit')

#create columns to show outputs
col1,col2,col3=st.columns(3)
col1.title('Sentiment Emoji')
col2.title('How this user feels about the vaccine')
col3.title('Confidence of this prediction')

# if submit:
#     print('submitted')
#     #pass text to preprocessor
#     def preprocess(text):
#     #initiate an empty list 
#         new_text = []
#         #split text by space
#         for t in text.split(" "):
#             #set username to @user
#             t = '@user' if t.startswith('@') and len(t) > 1 else t  
#             #set tweet source to http
#             t = 'http' if t.startswith('http') else t 
#             #store text in the list
#             new_text.append(t)
#             #change text from list back to string
#         return " ".join(new_text) 
    

#     #pass text to model
output=pipe(text)
output_dict=output[0]
lable=output_dict['label']
score=output_dict['score']
#     #change label id 
#     #config.id2label = {0: 'NEGATIVE', 1: 'NEUTRAL', 2: 'POSITIVE'}

#     text = preprocess(text)

#     # PyTorch-based models
#     encoded_input = tokenizer(text, return_tensors='pt')
#     output = model(**encoded_input)
#     scores = output[0][0].detach().numpy()
#     scores = softmax(scores)

#     #Process scores
#     ranking = np.argsort(scores)
#     ranking = ranking[::-1]  
#     l = config.id2label[ranking[0]]
#     s = scores[ranking[0]]

    #output
    if lable=='NEGATIVE':
        with col1:
            com.iframe("https://embed.lottiefiles.com/animation/125694")
        col2.write('NEGATIVE')
        col3.write(f'{score*100:.2f}%')
    elif lable=='POSITIVE':
        with col1:
            com.iframe("https://embed.lottiefiles.com/animation/148485")
        col2.write('POSITIVE')
        col3.write(f'{score*100:.2f}%')
    else:
        with col1:
            com.iframe("https://embed.lottiefiles.com/animation/136052")
        col2.write('NEUTRAL')
        col3.write(f'{score*100:.2f}%')