File size: 1,444 Bytes
b6d80e0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import streamlit as st
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import numpy as np
from scipy.special import softmax
# Add description and title
st.write("""
# Sentiment Analysis App
""")
# Add image
image = st.image("images.png", width=200)
# Get user input
text = st.text_input("Type here:")
button = st.button('Analyze')
# Define the CSS style for the app
st.markdown(
"""
<style>
body {
background-color: #f5f5f5;
}
h1 {
color: #4e79a7;
}
</style>
""",
unsafe_allow_html=True
)
def preprocess(text):
new_text = []
for t in text.split(" "):
t = '@user' if t.startswith('@') and len(t) > 1 else t
t = 'http' if t.startswith('http') else t
new_text.append(t)
return " ".join(new_text)
@st.cache_resource()
def get_model():
# Load the model and tokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("MrDdz/bert-base-uncased")
return tokenizer,model
tokenizer, model = get_model()
if button:
text_sample = tokenizer(text, padding = 'max_length',return_tensors = 'pt')
# print(text_sample)
output = model(**text_sample)
scores_ = output[0][0].detach().numpy()
scores_ = softmax(scores_)
labels = ['Negative','Neutral','Positive']
scores = {l:float(s) for (l,s) in zip(labels,scores_)}
st.write("Prediction :",scores)
|