alako's picture
update app
a878b3f verified
import streamlit as st
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
# Use caching to optimize resource usage
@st.cache_resource
def load_model():
model_name = 'cardiffnlp/twitter-xlm-roberta-base-sentiment'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
labels = ['Negative', 'Neutral', 'Positive']
return tokenizer, model, labels
tokenizer, model, labels = load_model()
MAX_LENGTH = 128 # Adjust as needed
def analyze_sentiment(text):
inputs = tokenizer(
text,
return_tensors='pt',
truncation=True,
max_length=MAX_LENGTH
)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
sentiment = labels[torch.argmax(probs)]
confidence = torch.max(probs).item()
return sentiment, confidence
st.title('Multilingual Sentiment Analysis')
text = st.text_area('Enter text in any language:')
if st.button('Analyze'):
if text:
sentiment, confidence = analyze_sentiment(text)
st.write(f"**Sentiment:** {sentiment}")
st.write(f"**Confidence:** {confidence:.2f}")
else:
st.write("Please enter some text to analyze.")