Dhruv Singh
Upload folder using huggingface_hub
1db0c1f verified
Raw
History Blame Contribute Delete
1.76 kB
from typing import Any
import gradio as gr
from transformers import Pipeline, pipeline
MODEL_NAME = "distilbert/distilbert-base-uncased-finetuned-sst-2-english"
classifier: Pipeline = pipeline(
task="sentiment-analysis",
model=MODEL_NAME,
)
def analyze_sentiment(text: str) -> dict[str, float]:
"""Analyze text and return probabilities for Gradio's Label component."""
cleaned_text = text.strip()
if not cleaned_text:
raise gr.Error("Please enter a sentence before analyzing.")
if len(cleaned_text) > 1000:
raise gr.Error("Please keep the text below 1,000 characters.")
predictions: list[dict[str, Any]] = classifier(
cleaned_text,
top_k=None,
)
return {
prediction["label"].title(): float(prediction["score"])
for prediction in predictions
}
examples = [
["I loved working on this machine-learning project."],
["The application was confusing and frustrating."],
["The workshop was useful, but it was quite long."],
]
demo = gr.Interface(
fn=analyze_sentiment,
inputs=gr.Textbox(
lines=5,
max_lines=10,
label="Your text",
placeholder="Example: Learning Hugging Face is exciting!",
),
outputs=gr.Label(
label="Sentiment prediction",
num_top_classes=2,
),
examples=examples,
title="🤗 Beginner Sentiment Analyzer",
description=(
"Enter an English sentence and let a pretrained Hugging Face "
"model classify its sentiment."
),
article=(
"This beginner project uses DistilBERT, Transformers, "
"PyTorch, and Gradio."
),
submit_btn="Analyze sentiment",
clear_btn="Clear",
)
if __name__ == "__main__":
demo.launch()