Spaces:
Running
Running
| import streamlit as st | |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification | |
| import torch | |
| import pandas as pd | |
| st.set_page_config(page_title="Sentiment Analysis", layout="wide") | |
| st.title("Welcome to the Sentiment Analyzer") | |
| st.write("**Note**: All reviews must be entered in English.") | |
| def load_model(): | |
| model_id = "Diary14/roberta-sentiment-lora" | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForSequenceClassification.from_pretrained(model_id) | |
| return tokenizer, model | |
| with st.spinner("Loading model"): | |
| tokenizer, model = load_model() | |
| user_input = st.text_area( | |
| "Enter reviews here :", | |
| placeholder="Example :\nThis product is amazing!\nI really don't like it....", | |
| height=200 | |
| ) | |
| if st.button("Analyze reviews"): | |
| lines = [line.strip() for line in user_input.split("\n") if line.strip() != ""] | |
| if not lines: | |
| st.warning("Please enter at least one review.") | |
| else: | |
| inputs = tokenizer(lines, return_tensors="pt", truncation=True, padding=True) | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| logits = outputs.logits | |
| predictions = torch.argmax(logits, dim=-1).tolist() | |
| results = [] | |
| for text, pred in zip(lines, predictions): | |
| sentiment = "Positive review" if pred == 1 else "Negative review" | |
| results.append({"Text/Review": text, "Sentiment": sentiment}) | |
| df = pd.DataFrame(results) | |
| st.dataframe(df, use_container_width=True) |