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("

Movie Sentiment Analysis

", 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("

Analyze movie reviews and discover the sentiment of the audience

", 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('

Sentiment Emoji

',unsafe_allow_html=True) col2.write('

How this user feels about the movie

',unsafe_allow_html=True) col3.write('

Confidence of this prediction

',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='✅')