shuvo100's picture
Update app.py
1d86225 verified
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()