tharakap's picture
Made changes in app.py
e32207e
import gradio as gr
from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
MODEL_ID = "tharakap/deberta-sentiment-analyser"
CUSTOM_ID_TO_LABEL = {
0: "anger",
1: "fear",
2: "joy",
3: "sadness",
4: "surprise"
}
def load_model_and_pipeline():
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForSequenceClassification.from_pretrained(
MODEL_ID,
id2label=CUSTOM_ID_TO_LABEL
)
return pipeline("text-classification", model=model, tokenizer=tokenizer, return_all_scores = True)
try:
classifier = load_model_and_pipeline()
except Exception as e:
print(f"Error loading model: {e}")
classifier = pipeline("sentiment-analysis")
def predict_sentiment(text, threshold=0.2): # You set the threshold here
results = classifier(text)[0]
formatted = []
active_labels = []
for res in results:
label = res["label"].upper()
score = res["score"]
# Check if the score is above the custom threshold
if score >= threshold:
active_labels.append(label)
formatted.append(f"- **{label}** (ACTIVE): {round(score, 4)}")
else:
formatted.append(f"- {label}: {round(score, 4)}")
output = "### Active Emotions (Threshold > " + str(threshold) + "):\n"
if active_labels:
output += ", ".join(active_labels) + "\n\n"
else:
output += "None detected above threshold.\n\n"
output += "### All Emotion Scores:\n" + "\n".join(formatted)
return output
iface = gr.Interface(
fn=predict_sentiment,
inputs=gr.Textbox(
lines=5,
placeholder="Enter text for emotion analysis...",
label="Input Text"
),
outputs="markdown",
title="DeBERTa Emotion Analysis Demo",
description=f"An emotion classification demo using the DeBERTa model: {MODEL_ID}.",
examples=[
["I am thrilled to hear the good news!"],
["I am terrified; the sight of the spider filled me with pure dread."],
["He is absolutely furious and enraged right now."]
]
)
if __name__ == "__main__":
iface.launch()