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