Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import numpy as np | |
| import onnxruntime as ort | |
| from transformers import AutoTokenizer, AutoConfig | |
| from huggingface_hub import hf_hub_download | |
| # Load model and tokenizer | |
| repo_id = "iimran/EmotionDetection" | |
| filename = "model.onnx" | |
| # Download and setup ONNX model | |
| onnx_model_path = hf_hub_download(repo_id=repo_id, filename=filename) | |
| tokenizer = AutoTokenizer.from_pretrained(repo_id) | |
| config = AutoConfig.from_pretrained(repo_id) | |
| # Get label mapping | |
| if hasattr(config, "id2label") and config.id2label and len(config.id2label) > 0: | |
| id2label = config.id2label | |
| else: | |
| id2label = { | |
| 0: "anger", | |
| 1: "fear", | |
| 2: "joy", | |
| 3: "love", | |
| 4: "sadness", | |
| 5: "surprise", | |
| 6: "neutral" | |
| } | |
| # Create ONNX session | |
| session = ort.InferenceSession(onnx_model_path) | |
| def predict_emotion(text): | |
| """Predict emotion from text""" | |
| # Tokenize input | |
| inputs = tokenizer( | |
| text, | |
| return_tensors="np", | |
| truncation=True, | |
| padding="max_length", | |
| max_length=256 | |
| ) | |
| # Prepare inputs | |
| ort_inputs = { | |
| "input_ids": inputs["input_ids"].astype(np.int64), | |
| "attention_mask": inputs["attention_mask"].astype(np.int64) | |
| } | |
| # Run inference | |
| outputs = session.run(None, ort_inputs) | |
| logits = outputs[0] | |
| predicted_class_id = int(np.argmax(logits, axis=-1)[0]) | |
| # Get label | |
| predicted_label = id2label.get(str(predicted_class_id), id2label.get(predicted_class_id, str(predicted_class_id))) | |
| # Format output | |
| emotion_icons = { | |
| "anger": "π ", | |
| "fear": "π¨", | |
| "joy": "π", | |
| "love": "β€οΈ", | |
| "sadness": "π’", | |
| "surprise": "π²", | |
| "neutral": "π" | |
| } | |
| icon = emotion_icons.get(predicted_label.lower(), "β") | |
| return f"{icon} {predicted_label}" | |
| # Create Gradio interface | |
| demo = gr.Interface( | |
| fn=predict_emotion, | |
| inputs=gr.Textbox(label="Enter your text", placeholder="How are you feeling today?"), | |
| outputs=gr.Label(label="Predicted Emotion"), | |
| title="Emotion Detection", | |
| description="Detect emotions in text using iimran/EmotionDetection model", | |
| examples=[ | |
| ["I'm so happy right now!"], | |
| ["This situation makes me really angry"], | |
| ["I feel anxious about the future"], | |
| ["What a beautiful day to be alive!"], | |
| ["That news shocked me completely"] | |
| ], | |
| theme="soft" | |
| ) | |
| # Run the app | |
| if __name__ == "__main__": | |
| demo.launch() |