bparekh99's picture
Update app.py
521ad8c verified
import gradio as gr
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
# Load sentiment model
def load_model():
model_name = "cardiffnlp/twitter-roberta-base-sentiment"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
sentiment_pipeline = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
return sentiment_pipeline
sentiment_pipeline = load_model()
label_map = {"LABEL_0": "negative", "LABEL_1": "neutral", "LABEL_2": "positive"}
# Simple explanation generator
def explain_sentiment(text, sentiment):
text_lower = text.lower()
if sentiment == "positive":
if any(word in text_lower for word in ["love", "great", "happy", "excellent", "good", "amazing"]):
return "Detected positive language such as 'great', 'happy', or 'love'."
else:
return "Overall positive tone based on context."
elif sentiment == "negative":
if any(word in text_lower for word in ["hate", "bad", "terrible", "awful", "worst", "sad"]):
return "Detected negative words like 'hate', 'bad', or 'worst'."
else:
return "Overall negative tone based on context."
else:
return "Text appears to be neutral with no strong emotional cues."
# Gradio function
def analyze_sentiment(text):
if not text.strip():
return "Please enter some text.", ""
result = sentiment_pipeline(text)[0]
sentiment = label_map[result["label"]]
confidence = result["score"]
explanation = explain_sentiment(text, sentiment)
sentiment_result = f"**Sentiment**: {sentiment.capitalize()} \n**Confidence**: {confidence:.2f}"
return sentiment_result, explanation
# Gradio interface
iface = gr.Interface(
fn=analyze_sentiment,
inputs=gr.Textbox(lines=4, placeholder="Type something here..."),
outputs=[
gr.Markdown(label="Sentiment Result"),
gr.Textbox(label="Explanation")
],
title="Fast Sentiment Analyzer",
description="Enter some text. This app will classify the sentiment (Positive, Negative, or Neutral) and offer a basic explanation.",
)
if __name__ == "__main__":
iface.launch()