Spaces:
Sleeping
Sleeping
import streamlit as st | |
import time | |
from transformers import pipeline | |
import os | |
os.environ['KMP_DUPLICATE_LIB_OK'] = "True" | |
st.title("Sentiment Analysis App") | |
form = st.form(key='Sentiment Analysis') | |
box = form.selectbox('Select Pre-trained Model:', ['bertweet-base-sentiment-analysis', | |
'distilbert-base-uncased-finetuned-sst-2-english', | |
'twitter-roberta-base-sentiment' | |
], key=1) | |
tweet = form.text_input(label='Enter text to analyze:', value="\"We've seen in the last few months, unprecedented amounts of Voter Fraud.\" @SenTedCruz True!") | |
submit = form.form_submit_button(label='Submit') | |
if submit and tweet: | |
with st.spinner('Analyzing...'): | |
time.sleep(1) | |
# st.header(tweet) | |
if tweet is not None: | |
col1, col2, col3 = st.columns(3) | |
if box == 'bertweet-base-sentiment-analysis': | |
pipeline = pipeline(task="sentiment-analysis", model="finiteautomata/bertweet-base-sentiment-analysis") | |
elif box == 'twitter-xlm-roberta-base-sentiment': | |
pipeline = pipeline(task="sentiment-analysis", model="cardiffnlp/twitter-roberta-base-sentiment") | |
else: | |
pipeline = pipeline(task="sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english") | |
predictions = pipeline(tweet) | |
print(predictions) | |
col1.header("Tweet") | |
col1.subheader(tweet) | |
col2.header("Judgement") | |
col3.header("Probability") | |
for p in predictions: | |
if box == 'bertweet-base-sentiment-analysis': | |
if p['label'] == "POS": | |
col2.success(f"{ p['label'] }") | |
col3.success(f"{ round(p['score'] * 100, 1)}%") | |
elif p['label'] == "NEU": | |
col2.warning(f"{ p['label'] }") | |
col3.warning(f"{round(p['score'] * 100, 1)}%") | |
else: | |
col2.error(f"{p['label']}") | |
col3.error(f"{round(p['score'] * 100, 1)}%") | |
elif box == 'distilbert-base-uncased-finetuned-sst-2-english': | |
if p['label'] == "POSITIVE": | |
col2.success(f"{p['label']}") | |
col3.success(f"{round(p['score'] * 100, 1)}%") | |
else: | |
col2.error(f"{p['label']}") | |
col3.error(f"{round(p['score'] * 100, 1)}%") | |
else: | |
if p['label'] == "POSITIVE": | |
col2.success(f"{p['label']}") | |
col3.success(f"{round(p['score'] * 100, 1)}%") | |
else: | |
col2.error(f"{p['label']}") | |
col3.error(f"{round(p['score'] * 100, 1)}%") |