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='TWEET SENTIMENT ANALYSIS',page_icon='🤗',layout='wide') #welcome Animation com.iframe("https://lottie.host/?file=8c9ae0c8-e9fc-4fc7-954e-16f922db889b/0BlrGUjJxw.json") st.markdown("

TWEET SENTIMENT FOR COVID VACCINATION

",unsafe_allow_html=True) st.write("

Text Classification Models developed to ascertain public perception of covid vaccines

",unsafe_allow_html=True) #Create a form to take user inputs with st.form(key='tweet',clear_on_submit=True): #input text text=st.text_area('Please enter tweet of vaccine perception') #Set examples alt_text=st.selectbox("Choose any of the sample tweets",('-select-', 'Vaccines have been good so far', 'Had a bad experience with the vaccine', 'Covid is human made. The vaccines are deadly', 'Unqualified people administered vaccine', 'Vaccine is dangerous to women', 'Vaccine can kill people with anaemia', 'Vaccine protects us from the deadly virus')) #Select a model models={'Bert':'elvis-d/elvis_bert_base', 'Roberta': 'elvis-d/elvis_roberta'} model=st.selectbox('Select preferred model',('Bert','Roberta')) #Submit submit=st.form_submit_button('Predict','Continue processing input') selected_model=models[model] #create columns to show outputs col1,col2,col3=st.columns(3) col1.write('

Sentiment Emoji

', unsafe_allow_html=True) col2.write('

Vaccine Perception of User

', unsafe_allow_html=True) col3.write('

Model Prediction Confidence

', unsafe_allow_html=True) if submit: #Check text if text=="": text=alt_text st.success(f"input text is set to '{text}'") else: st.success('Hey, tweet received', icon='👍🏼') #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' or lable=='LABEL_0': with col1: com.iframe("https://lottie.host/?file=c8010531-31de-4dc8-8952-1aa854314455/NQNXZWPduv.json") col2.write('NEGATIVE') col3.write(f'{score*100:.2f}%') elif lable=='POSITIVE'or lable=='LABEL_2': with col1: com.iframe("https://lottie.host/?file=51ba274f-064a-4d67-877b-159f4490a944/pBBe4CCH8e.json") col2.write('POSITIVE') col3.write(f'{score*100:.2f}%') else: with col1: com.iframe("https://lottie.host/?file=4e8f4b09-bafb-4ff8-9749-2470c459dce1/v5FATJ9QVm.json") col2.write('NEUTRAL') col3.write(f'{score*100:.2f}%')