File size: 3,235 Bytes
9f65e0d
 
 
 
 
 
 
0aaefc8
9f65e0d
 
 
6ed966a
9f65e0d
 
 
cace45a
 
9f65e0d
 
72640a4
cace45a
9f65e0d
cace45a
 
 
9f65e0d
defb642
72640a4
aa02adf
cace45a
 
72640a4
 
defb642
 
 
 
 
 
 
67a38f8
defb642
 
 
 
9f65e0d
 
 
defb642
 
 
9f65e0d
defb642
 
 
780e5cb
defb642
7a34d4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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


#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'> Covid Vaccine Tweet Sentiments </h1>",unsafe_allow_html=True)
st.markdown("<h2 style='text-align: center'> These models were trained to detect how a user feel about the covid vaccines based on their tweets(text) </h2>",unsafe_allow_html=True)

#Create a form to take user inputs
with st.form(key='tweet',clear_on_submit=False):
    #input text
    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')
    #Set examples
        alt_text=st.selectbox("'Can't Type? Select an Example below",('I hate the vaccines','Vaccines made from dead human tissues','Take the vaccines or regret the consequences','Covid is a Hoax','Making the vaccines is a huge step forward for humanity. Just take them'))
        #Submit
    submit=st.form_submit_button('submit')
if submit:
    #Check text
    if text=="":
        st.write(f'input text is set to {alt_text}')
        text=alt_text
    else:
        st.success('Text received',icon='βœ…')
#Select a model
exp=st.expander(label='Choose a model and Click Continue or go ahead and Click continue to use default')
models={'Roberta': 'Junr-syl/sentiments_analysis_Roberta',
        'Bert':    'Junr-syl/sentiments_analysis_upgrade',
        'Distilbert':'Junr-syl/sentiments_analysis_DISTILBERT'}

with exp:
    model=st.selectbox('Which model would you want to Use?',('Distilbert','Bert','Roberta'))

selected_model=models[model]
#Click continue if no model is selected
Cont=st.button('Continue','Continue processing input')

#create columns to show outputs
col1,col2,col3=st.columns(3)
col1.write('<h2 style="font-size: 24px;"> Sentiment Emoji </h2>',unsafe_allow_html=True)
col2.write('<h2 style="font-size: 24px;"> How this user feels about the vaccine </h2>',unsafe_allow_html=True)
col3.write('<h2 style="font-size: 24px;"> Confidence of this prediction </h2>',unsafe_allow_html=True)

if Cont:
    #import the model
    pipe=pipeline(model=selected_model)
    
    
    #pass text to model
    output=pipe(text)
    output_dict=output[0]
    lable=output_dict['label']
    score=output_dict['score']
    
        #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}%')