Spaces:
Runtime error
Runtime error
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='Movie Sentiments Analysis',page_icon='π¬',layout='wide') | |
# Movie Sentiment Analysis Animation | |
st.markdown("<h1 style='text-align: center'> Movie Sentiment Analysis </h1>", unsafe_allow_html=True) | |
st.image("https://media.istockphoto.com/id/1055587418/vector/banner-for-online-cinema-with-old-movie-projector.jpg?s=612x612&w=0&k=20&c=ZsMSmd6CZfuUVDAvUSTb9XHBqeg4ucb43n52xV5-y1c=", use_column_width=True) | |
st.write("<h2 style='font-size: 24px;'> Analyze movie reviews and discover the sentiment of the audience </h2>", unsafe_allow_html=True) | |
# Create a form to take user inputs | |
with st.form(key='sentence', clear_on_submit = True): | |
# Input text | |
text = st.text_area('Copy and paste a sentence(s) or type one', | |
placeholder='I really enjoyed the movie, it was so entertaining.') | |
# Set examples related to movie sentiments | |
alt_text = st.selectbox("Can't Type? Select an Example below", ( | |
'The movie was amazing, I loved every moment of it.', | |
'I found the acting in the movie to be quite impressive.', | |
'This film was a complete waste of my time, terrible.', | |
'The plot of the movie was confusing and hard to follow.', | |
'The cinematography in this film is outstanding.')) | |
# Select a model | |
models = { | |
'Bert': 'UholoDala/sentence_sentiments_analysis_bert', | |
'Distilbert': 'UholoDala/sentence_sentiments_analysis_distilbert', | |
'Roberta': 'UholoDala/sentence_sentiments_analysis_roberta' | |
} | |
model = st.selectbox('Which model would you want to Use?', ('Bert', 'Distilbert', 'Roberta')) | |
# Submit | |
submit = st.form_submit_button('Predict', 'Continue processing input') | |
# Clear button | |
clear = st.button('Clear') | |
selected_model=models[model] | |
#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 movie </h2>',unsafe_allow_html=True) | |
col3.write('<h2 style="font-size: 24px;"> Confidence of this prediction </h2>',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('Text 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://embed.lottiefiles.com/animation/125694") | |
col2.write('NEGATIVE') | |
col3.write(f'{score:.2%}') | |
else: | |
lable=='POSITIVE'or lable=='LABEL_2' | |
with col1: | |
com.iframe("https://embed.lottiefiles.com/animation/148485") | |
col2.write('POSITIVE') | |
col3.write(f'{score:.2%}') | |
# Clear button action | |
text = "" # Clear the input text | |
if clear: | |
st.success('Input fields cleared', icon='β ') |