Spaces:
Running
Running
Update app.py
Browse filesUpdated Version
app.py
CHANGED
|
@@ -19,83 +19,68 @@ STAR_EMOJIS = {
|
|
| 19 |
|
| 20 |
# Predefined "What to do" actions per language
|
| 21 |
ACTIONS = {
|
| 22 |
-
'en': {
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
'
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
},
|
| 85 |
-
'ja': {
|
| 86 |
-
1: "休憩を取り、状況を振り返るかサポートを求めてください。",
|
| 87 |
-
2: "何が不満か考え、冷静に対処してください。",
|
| 88 |
-
3: "バランスを保ち、通常通り続けてください。",
|
| 89 |
-
4: "ポジティブな体験を共有し、モチベーションを維持してください!",
|
| 90 |
-
5: "喜びを祝福し、熱意をもって広めましょう!"
|
| 91 |
-
},
|
| 92 |
-
'yo': {
|
| 93 |
-
1: "Sinmi, ronú lórí ohun tó ṣẹlẹ̀, tàbí wa ìrànlọ́wọ́.",
|
| 94 |
-
2: "Ronú nípa ohun tó ń dá ọ lẹ́rù, kí o sì gbìmọ̀ láti ṣe atunṣe.",
|
| 95 |
-
3: "Dá a lára, o wà lórí ìṣàkóso, tẹ̀síwájú bí ó ṣe wà.",
|
| 96 |
-
4: "Pín ìrírí rẹ tó dáa kí o sì máa ní ìmọ̀lára rere!",
|
| 97 |
-
5: "Ṣe ayẹyẹ, tàn ìdùnnú rẹ kaakiri, tẹ̀síwájú pẹ̀lú ìfẹ́!"
|
| 98 |
-
}
|
| 99 |
}
|
| 100 |
|
| 101 |
def analyze_sentiment(text):
|
|
@@ -105,7 +90,7 @@ def analyze_sentiment(text):
|
|
| 105 |
sentiment = STAR_EMOJIS.get(stars, result["label"])
|
| 106 |
confidence = f"{result['score']:.2f}"
|
| 107 |
|
| 108 |
-
# Language detection
|
| 109 |
try:
|
| 110 |
lang = detect(text)
|
| 111 |
lang = 'yo' if lang == 'yo' else lang
|
|
@@ -114,15 +99,22 @@ def analyze_sentiment(text):
|
|
| 114 |
lang = 'en'
|
| 115 |
|
| 116 |
action = ACTIONS[lang].get(stars, "")
|
| 117 |
-
|
|
|
|
| 118 |
|
| 119 |
-
# Examples
|
| 120 |
examples = [
|
| 121 |
["I absolutely love this new phone!"], # English
|
| 122 |
-
["Mo nifẹ́ fíìmù yìí gan-an!"], # Yoruba
|
| 123 |
["Je déteste quand cette application plante."], # French
|
| 124 |
["Das Essen in diesem Restaurant war fantastisch!"], # German
|
| 125 |
["Este producto es muy malo."], # Spanish
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
]
|
| 127 |
|
| 128 |
# Gradio UI
|
|
@@ -130,14 +122,15 @@ demo = gr.Interface(
|
|
| 130 |
fn=analyze_sentiment,
|
| 131 |
inputs=gr.Textbox(lines=3, placeholder="Type a sentence in any supported language..."),
|
| 132 |
outputs=gr.Dataframe(
|
| 133 |
-
headers=["Emotion (1–5 Stars)", "Confidence", "What to do"],
|
| 134 |
row_count=1,
|
| 135 |
-
col_count=(
|
| 136 |
),
|
| 137 |
examples=examples,
|
| 138 |
title="🌍 Multilingual Emotion & Action Analyzer",
|
| 139 |
description=(
|
| 140 |
-
"Supports 11
|
|
|
|
| 141 |
),
|
| 142 |
)
|
| 143 |
|
|
|
|
| 19 |
|
| 20 |
# Predefined "What to do" actions per language
|
| 21 |
ACTIONS = {
|
| 22 |
+
'en': {1: "Take a break, reflect, or seek support.",
|
| 23 |
+
2: "Consider what's bothering you and address it calmly.",
|
| 24 |
+
3: "Maintain balance; continue as usual.",
|
| 25 |
+
4: "Share your positive experience and stay motivated!",
|
| 26 |
+
5: "Celebrate and spread your joy; keep up enthusiasm!"},
|
| 27 |
+
'fr': {1: "Faites une pause, réfléchissez ou demandez de l'aide.",
|
| 28 |
+
2: "Réfléchissez à ce qui vous dérange et agissez calmement.",
|
| 29 |
+
3: "Restez équilibré; continuez comme d'habitude.",
|
| 30 |
+
4: "Partagez votre expérience positive et restez motivé !",
|
| 31 |
+
5: "Célébrez et partagez votre joie avec enthousiasme !"},
|
| 32 |
+
'de': {1: "Machen Sie eine Pause, reflektieren Sie oder suchen Sie Unterstützung.",
|
| 33 |
+
2: "Überlegen Sie, was Sie stört, und lösen Sie es ruhig.",
|
| 34 |
+
3: "Halten Sie das Gleichgewicht; fahren Sie fort wie gewohnt.",
|
| 35 |
+
4: "Teilen Sie Ihre positive Erfahrung und bleiben Sie motiviert!",
|
| 36 |
+
5: "Feiern Sie und verbreiten Sie Ihre Freude enthusiastisch!"},
|
| 37 |
+
'es': {1: "Tómate un descanso, reflexiona o busca apoyo.",
|
| 38 |
+
2: "Considera lo que te molesta y actúa con calma.",
|
| 39 |
+
3: "Mantén el equilibrio; continúa como de costumbre.",
|
| 40 |
+
4: "Comparte tu experiencia positiva y mantente motivado!",
|
| 41 |
+
5: "Celebra y comparte tu alegría con entusiasmo!"},
|
| 42 |
+
'it': {1: "Fai una pausa, rifletti o cerca supporto.",
|
| 43 |
+
2: "Considera ciò che ti infastidisce e affrontalo con calma.",
|
| 44 |
+
3: "Mantieni l'equilibrio; continua come al solito.",
|
| 45 |
+
4: "Condividi la tua esperienza positiva e rimani motivato!",
|
| 46 |
+
5: "Festeggia e diffondi la tua gioia con entusiasmo!"},
|
| 47 |
+
'nl': {1: "Neem een pauze, reflecteer of zoek ondersteuning.",
|
| 48 |
+
2: "Overweeg wat je stoort en handel rustig.",
|
| 49 |
+
3: "Behoud je balans; ga door zoals gewoonlijk.",
|
| 50 |
+
4: "Deel je positieve ervaring en blijf gemotiveerd!",
|
| 51 |
+
5: "Vier en verspreid je vreugde enthousiast!"},
|
| 52 |
+
'pt': {1: "Faça uma pausa, reflita ou busque apoio.",
|
| 53 |
+
2: "Considere o que está incomodando e resolva calmamente.",
|
| 54 |
+
3: "Mantenha o equilíbrio; continue normalmente.",
|
| 55 |
+
4: "Compartilhe sua experiência positiva e mantenha-se motivado!",
|
| 56 |
+
5: "Celebre e espalhe sua alegria com entusiasmo!"},
|
| 57 |
+
'ru': {1: "Сделайте перерыв, обдумайте ситуацию или обратитесь за поддержкой.",
|
| 58 |
+
2: "Подумайте, что вас беспокоит, и решайте спокойно.",
|
| 59 |
+
3: "Сохраняйте баланс; продолжайте как обычно.",
|
| 60 |
+
4: "Поделитесь положительным опытом и оставайтесь мотивированными!",
|
| 61 |
+
5: "Празднуйте и распространяйте радость с энтузиазмом!"},
|
| 62 |
+
'ar': {1: "خذ استراحة، تأمل، أو اطلب الدعم.",
|
| 63 |
+
2: "فكر فيما يزعجك وتعامل معه بهدوء.",
|
| 64 |
+
3: "حافظ على توازنك؛ استمر كالمعتاد.",
|
| 65 |
+
4: "شارك تجربتك الإيجابية وابقَ متحمسًا!",
|
| 66 |
+
5: "احتفل وانشر فرحك بحماس!"},
|
| 67 |
+
'ja': {1: "休憩を取り、状況を振り返るかサポートを求めてください。",
|
| 68 |
+
2: "何が不満か考え、冷静に対処してください。",
|
| 69 |
+
3: "バランスを保ち、通常通り続けてください。",
|
| 70 |
+
4: "ポジティブな体験を共有し、モチベーションを維持してください!",
|
| 71 |
+
5: "喜びを祝福し、熱意をもって広めましょう!"},
|
| 72 |
+
'yo': {1: "Sinmi, ronú lórí ohun tó ṣẹlẹ̀, tàbí wa ìrànlọ́wọ́.",
|
| 73 |
+
2: "Ronú nípa ohun tó ń dá ọ lẹ́rù, kí o sì gbìmọ̀ láti ṣe atunṣe.",
|
| 74 |
+
3: "Dá a lára, o wà lórí ìṣàkóso, tẹ̀síwájú bí ó ṣe wà.",
|
| 75 |
+
4: "Pín ìrírí rẹ tó dáa kí o sì máa ní ìmọ̀lára rere!",
|
| 76 |
+
5: "Ṣe ayẹyẹ, tàn ìdùnnú rẹ kaakiri, tẹ̀síwájú pẹ̀lú ìfẹ́!"}
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
# Map language codes to readable names
|
| 80 |
+
LANG_NAMES = {
|
| 81 |
+
'en': 'English', 'fr': 'French', 'de': 'German', 'es': 'Spanish', 'it': 'Italian',
|
| 82 |
+
'nl': 'Dutch', 'pt': 'Portuguese', 'ru': 'Russian', 'ar': 'Arabic', 'ja': 'Japanese',
|
| 83 |
+
'yo': 'Yoruba'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
}
|
| 85 |
|
| 86 |
def analyze_sentiment(text):
|
|
|
|
| 90 |
sentiment = STAR_EMOJIS.get(stars, result["label"])
|
| 91 |
confidence = f"{result['score']:.2f}"
|
| 92 |
|
| 93 |
+
# Language detection
|
| 94 |
try:
|
| 95 |
lang = detect(text)
|
| 96 |
lang = 'yo' if lang == 'yo' else lang
|
|
|
|
| 99 |
lang = 'en'
|
| 100 |
|
| 101 |
action = ACTIONS[lang].get(stars, "")
|
| 102 |
+
lang_name = LANG_NAMES.get(lang, "Unknown")
|
| 103 |
+
return [[sentiment, confidence, action, lang_name]]
|
| 104 |
|
| 105 |
+
# Examples covering all 11 languages
|
| 106 |
examples = [
|
| 107 |
["I absolutely love this new phone!"], # English
|
|
|
|
| 108 |
["Je déteste quand cette application plante."], # French
|
| 109 |
["Das Essen in diesem Restaurant war fantastisch!"], # German
|
| 110 |
["Este producto es muy malo."], # Spanish
|
| 111 |
+
["Questo film è stato noioso e troppo lungo."], # Italian
|
| 112 |
+
["De app werkt prima, maar kan beter."], # Dutch
|
| 113 |
+
["Eu gostei muito do serviço, foi excelente!"], # Portuguese
|
| 114 |
+
["Эта книга ужасна, я еле её дочитал."], # Russian
|
| 115 |
+
["هذا الهاتف رائع للغاية، أنا سعيد جدًا به."], # Arabic
|
| 116 |
+
["この映画は本当に面白かった!"], # Japanese
|
| 117 |
+
["Mo nifẹ́ fíìmù yìí gan-an!"] # Yoruba
|
| 118 |
]
|
| 119 |
|
| 120 |
# Gradio UI
|
|
|
|
| 122 |
fn=analyze_sentiment,
|
| 123 |
inputs=gr.Textbox(lines=3, placeholder="Type a sentence in any supported language..."),
|
| 124 |
outputs=gr.Dataframe(
|
| 125 |
+
headers=["Emotion (1–5 Stars)", "Confidence", "What to do", "Language Detected"],
|
| 126 |
row_count=1,
|
| 127 |
+
col_count=(4, "fixed"),
|
| 128 |
),
|
| 129 |
examples=examples,
|
| 130 |
title="🌍 Multilingual Emotion & Action Analyzer",
|
| 131 |
description=(
|
| 132 |
+
"Supports 11 languages. Detects emotion (1–5 stars), provides suggested actions in the input language, "
|
| 133 |
+
"and shows which language was detected."
|
| 134 |
),
|
| 135 |
)
|
| 136 |
|