Download app.py from elixpo/emo_bert: direct link, hf CLI and curl.
- Browser
- Download file 2.02 kB
-
https://huggingface.co/spaces/elixpo/emo_bert/resolve/main/app.py
- Command line
-
hf download hf://spaces/elixpo/emo_bert/app.py
-
curl -L -o app.py https://huggingface.co/spaces/elixpo/emo_bert/resolve/main/app.py
2.02 kB
| """ | |
| Emotion Detection - Hugging Face Spaces (CPU) | |
| Gradio app for free deployment on HF Spaces. | |
| DistilBERT is small enough (~268MB) for fast CPU inference. | |
| """ | |
| import gradio as gr | |
| from transformers import pipeline | |
| EMOJI_MAP = { | |
| "sadness": "π’", | |
| "joy": "π", | |
| "love": "β€οΈ", | |
| "anger": "π‘", | |
| "fear": "π¨", | |
| "surprise": "π²", | |
| } | |
| LABEL_MAP = { | |
| "LABEL_0": "sadness", | |
| "LABEL_1": "joy", | |
| "LABEL_2": "love", | |
| "LABEL_3": "anger", | |
| "LABEL_4": "fear", | |
| "LABEL_5": "surprise", | |
| } | |
| classifier = pipeline( | |
| "text-classification", | |
| model="./models/emotion_model", | |
| tokenizer="./models/emotion_model", | |
| ) | |
| def predict(text: str) -> str: | |
| if not text.strip(): | |
| return "Please enter some text." | |
| result = classifier(text)[0] | |
| raw_label = result["label"] | |
| emotion = LABEL_MAP.get(raw_label, raw_label) | |
| confidence = result["score"] | |
| emoji = EMOJI_MAP.get(emotion, "") | |
| return f"{emoji} **{emotion.upper()}**\n\nConfidence: {confidence:.4f}" | |
| examples = [ | |
| ["I am so happy today, everything is going great!"], | |
| ["I feel terrible and nothing seems to work out."], | |
| ["This is absolutely terrifying, I can't stop shaking."], | |
| ["I can't believe you would do something like that to me!"], | |
| ["You are the most wonderful person I have ever met."], | |
| ["Wow, I never expected that to happen!"], | |
| ] | |
| demo = gr.Interface( | |
| fn=predict, | |
| inputs=gr.Textbox( | |
| label="Enter text", | |
| placeholder="Type a sentence to detect its emotion...", | |
| lines=3, | |
| ), | |
| outputs=gr.Markdown(label="Prediction"), | |
| title="Emotion Detection from Text", | |
| description=( | |
| "Detects emotions in English text using a fine-tuned **DistilBERT** model. " | |
| "Classifies into 6 categories: sadness, joy, love, anger, fear, surprise. " | |
| "Achieves **93.75% accuracy** on the test set." | |
| ), | |
| examples=examples, | |
| theme=gr.themes.Soft(), | |
| flagging_mode="never", | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |