Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| # মডেল লোড করো | |
| emotion_classifier = pipeline( | |
| "text-classification", | |
| model="Toshifumi/bert-base-multilingual-cased-finetuned-emotion" | |
| ) | |
| # Human-friendly emotion mapping | |
| humanized_map = { | |
| "label_0": "😠 রাগ (Anger)", | |
| "label_1": "😢 দুঃখ (Sadness)", | |
| "label_2": "😊 আনন্দিত (Joy)", | |
| "label_3": "❤️ ভালোবাসা (Love)", | |
| "label_4": "😨 ভয় (Fear)", | |
| "label_5": "😲 বিস্ময় (Surprise)", | |
| "label_6": "😐 নিরপেক্ষ (Neutral)", | |
| "LABEL_0": "😠 রাগ (Anger)", | |
| "LABEL_1": "😢 দুঃখ (Sadness)", | |
| "LABEL_2": "😊 আনন্দিত (Joy)", | |
| "LABEL_3": "❤️ ভালোবাসা (Love)", | |
| "LABEL_4": "😨 ভয় (Fear)", | |
| "LABEL_5": "😲 বিস্ময় (Surprise)", | |
| "LABEL_6": "😐 নিরপেক্ষ (Neutral)", | |
| # Extra fallback for plain text labels | |
| "Anger": "😠 রাগ (Anger)", | |
| "Sadness": "😢 দুঃখ (Sadness)", | |
| "Joy": "😊 আনন্দিত (Joy)", | |
| "Love": "❤️ ভালোবাসা (Love)", | |
| "Fear": "😨 ভয় (Fear)", | |
| "Surprise": "😲 বিস্ময় (Surprise)", | |
| "Neutral": "😐 নিরপেক্ষ (Neutral)" | |
| } | |
| # Extra keyword-based fallback mapping | |
| keyword_map = { | |
| "happy": "😊 আনন্দিত (Joy)", | |
| "খুশি": "😊 আনন্দিত (Joy)", | |
| "sad": "😢 দুঃখ (Sadness)", | |
| "দুঃখ": "😢 দুঃখ (Sadness)", | |
| "love": "❤️ ভালোবাসা (Love)", | |
| "ভালবাসা": "❤️ ভালোবাসা (Love)", | |
| "ভালোবাসা": "❤️ ভালোবাসা (Love)", | |
| "fear": "😨 ভয় (Fear)", | |
| "ভয়": "😨 ভয় (Fear)", | |
| "angry": "😠 রাগ (Anger)", | |
| "রাগ": "😠 রাগ (Anger)", | |
| "surprise": "😲 বিস্ময় (Surprise)", | |
| "বিস্ময়": "😲 বিস্ময় (Surprise)" | |
| } | |
| # Emotion detect function | |
| def detect_emotion(text): | |
| if not text.strip(): | |
| return "⚠️ অনুগ্রহ করে একটি বার্তা লিখুন।" | |
| try: | |
| result = emotion_classifier(text)[0] | |
| label = result["label"] | |
| score = round(result["score"] * 100, 2) | |
| emotion = humanized_map.get(label) | |
| if not emotion: | |
| # Keyword fallback | |
| for word in keyword_map: | |
| if word in text.lower(): | |
| return f"{keyword_map[word]} (keyword match)" | |
| return f"🤔 অজানা (Unknown) — মডেল লেবেল: {label} (score: {score}%)" | |
| return f"{emotion} (score: {score}%)" | |
| except Exception as e: | |
| return f"❌ সমস্যা হয়েছে: {str(e)}" | |
| # Interface | |
| interface = gr.Interface( | |
| fn=detect_emotion, | |
| inputs=gr.Textbox(label="✍️ মেসেজ লিখুন (বাংলা / English)", placeholder="আমি আজ অনেক খুশি..."), | |
| outputs=gr.Textbox(label="🧠 সনাক্তকৃত অনুভূতি"), | |
| title="🌐 Bilingual Emotion Detector", | |
| description="এই AI টুলটি বাংলা ও ইংরেজি টেক্সট থেকে মানুষের আবেগ শনাক্ত করে (যেমন: 😊 আনন্দ, 😢 দুঃখ, 😠 রাগ)।" | |
| ) | |
| interface.launch() |