Layan22 commited on
Commit
ea8c744
·
verified ·
1 Parent(s): 9715b3b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -30
app.py CHANGED
@@ -1,22 +1,38 @@
1
- import gradio as gr
 
 
2
 
3
- # Arabic Semantic Mapping for Customer Satisfaction
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  arabic_feelings_map = {
5
- # 😡 Anger / Complaint
6
  "زعلان": "غضب",
7
  "معصب": "غضب",
8
  "سيء": "غضب",
9
  "خدمة سيئة": "غضب",
10
  "ما عجبني": "غضب",
11
  "تجربة سيئة": "غضب",
12
-
13
- # 😢 Sad / Disappointed
14
  "محبط": "حزن",
15
  "حزين": "حزن",
16
  "مكسور": "حزن",
17
  "ندمت": "حزن",
18
-
19
- # 😍 Happy / Satisfied
20
  "مبسوط": "سعادة",
21
  "سعيد": "سعادة",
22
  "مرتاح": "سعادة",
@@ -24,42 +40,39 @@ arabic_feelings_map = {
24
  "ممتاز": "سعادة",
25
  "رهيب": "سعادة",
26
  "يعجبني": "سعادة",
27
-
28
- # 😨 Fear / Anxiety
29
  "خايف": "خوف",
30
  "قلقان": "خوف",
31
  "متوتر": "خوف",
32
-
33
- # 🤢 Disgust
34
  "مقرف": "اشمئزاز",
35
  "مثير للاشمئزاز": "اشمئزاز",
36
-
37
- # 😐 Neutral
38
  "عادي": "محايد",
39
  "طبيعي": "محايد"
40
  }
41
 
42
- # Smart Arabic Analyzer
43
  def analyze_arabic_text(text):
44
  text = text.strip().lower()
45
-
46
  if not text:
47
- return "❗️ الرجاء إدخال رأي العميل"
48
-
49
- # Try direct match
50
  for key in arabic_feelings_map:
51
  if key in text:
52
- return f"🧠 الشعور ج: {arabic_feelings_map[key]}"
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
- return f"✅ رأي العميل: {text}\n\n🧠 الشعور المستنتج: غير واضح (محايد)"
 
 
55
 
56
- # Build Arabic UI
57
- ui = gr.Interface(
58
- fn=analyze_arabic_text,
59
- inputs=gr.Textbox(placeholder="اكتب رأي العميل هنا... (مثال: الخدمة سيئة)"),
60
- outputs="text",
61
- title="✅ محلل رضا العملاء بالعربي",
62
- description="أدخل رأي العميل وسيتم تحليل شعوره تلقائياً (غضب، سعادة، حزن، خوف...)."
63
- )
64
- if __name__ == "__main__":
65
- ui.launch()
 
1
+ # ===== تثبيت المكتبات =====
2
+ !pip install python-telegram-bot --upgrade
3
+ !pip install transformers torch --upgrade
4
 
5
+ # ===== حل مشاكل asyncio في Colab =====
6
+ import nest_asyncio
7
+ nest_asyncio.apply()
8
+
9
+ # ===== استيراد المكتبات =====
10
+ from telegram import Update
11
+ from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes
12
+ from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
13
+ import os
14
+
15
+ # ===== قراءة التوكنات من Secrets =====
16
+ TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
17
+ HF_TOKEN = os.getenv("HF_TOKEN")
18
+
19
+ # ===== إعداد نموذج Hugging Face =====
20
+ tokenizer = AutoTokenizer.from_pretrained("gpt2", use_auth_token=HF_TOKEN)
21
+ model = AutoModelForCausalLM.from_pretrained("gpt2", use_auth_token=HF_TOKEN)
22
+ chatbot = pipeline("text-generation", model=model, tokenizer=tokenizer)
23
+
24
+ # ===== خريطة المشاعر العربي =====
25
  arabic_feelings_map = {
 
26
  "زعلان": "غضب",
27
  "معصب": "غضب",
28
  "سيء": "غضب",
29
  "خدمة سيئة": "غضب",
30
  "ما عجبني": "غضب",
31
  "تجربة سيئة": "غضب",
 
 
32
  "محبط": "حزن",
33
  "حزين": "حزن",
34
  "مكسور": "حزن",
35
  "ندمت": "حزن",
 
 
36
  "مبسوط": "سعادة",
37
  "سعيد": "سعادة",
38
  "مرتاح": "سعادة",
 
40
  "ممتاز": "سعادة",
41
  "رهيب": "سعادة",
42
  "يعجبني": "سعادة",
 
 
43
  "خايف": "خوف",
44
  "قلقان": "خوف",
45
  "متوتر": "خوف",
 
 
46
  "مقرف": "اشمئزاز",
47
  "مثير للاشمئزاز": "اشمئزاز",
 
 
48
  "عادي": "محايد",
49
  "طبيعي": "محايد"
50
  }
51
 
52
+ # ===== دالة تحليل المشاعر =====
53
  def analyze_arabic_text(text):
54
  text = text.strip().lower()
 
55
  if not text:
56
+ return "محايد", 0
 
 
57
  for key in arabic_feelings_map:
58
  if key in text:
59
+ feeling = arabic_feelings_map[key]
60
+ if feeling == "سعادة": value = 1
61
+ elif feeling in ["حزن", "غضب", "خوف", "اشمئزاز"]: value = -1
62
+ else: value = 0
63
+ return feeling, value
64
+ return "محايد", 0
65
+
66
+ # ===== دالة الرد على الرسائل =====
67
+ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
68
+ user_text = update.message.text
69
+ feeling, value = analyze_arabic_text(user_text)
70
+ reply_text = f"الشعور🪄: {feeling}\nالقيمة الرقمية📊: {value}\nالنص📇: {user_text}"
71
+ await update.message.reply_text(reply_text)
72
 
73
+ # ===== تشغيل البوت =====
74
+ app = ApplicationBuilder().token(TELEGRAM_TOKEN).build()
75
+ app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
76
 
77
+ print("🤖 Bot is running...")
78
+ app.run_polling()