Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import torch | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer | |
| # Load your fine-tuned model from the Hugging Face Hub | |
| model_name = "Wisaba/emotion_roberta_weighted" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForSequenceClassification.from_pretrained(model_name) | |
| # Move to GPU if available | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| model.to(device) | |
| # Labels | |
| emotion_labels = ["sadness", "joy", "love", "anger", "fear", "surprise"] | |
| def classify_emotion(text): | |
| # 1. Tokenize | |
| inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128) | |
| inputs = {k: v.to(device) for k, v in inputs.items()} | |
| # 2. Predict | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| # 3. Get Label | |
| logits = outputs.logits | |
| predicted_class_id = torch.argmax(logits, dim=-1).item() | |
| return emotion_labels[predicted_class_id] | |
| # Define the Gradio Interface | |
| iface = gr.Interface( | |
| fn=classify_emotion, | |
| inputs=gr.Textbox(lines=2, placeholder="Type how you feel...", label="Text Input"), | |
| outputs=gr.Textbox(label="Predicted Emotion"), | |
| title="Emotion Analysis (RoBERTa)", | |
| description="This model classifies text into 6 emotions: Sadness, Joy, Love, Anger, Fear, Surprise.", | |
| examples=[ | |
| ["I am feeling so lonely and sad today."], | |
| ["I'm incredibly excited about the new project!"], | |
| ["Why did you do that? I'm so mad at you!"] | |
| ] | |
| ) | |
| # Launch | |
| if __name__ == "__main__": | |
| iface.launch() | |