Layan22 commited on
Commit
9faae34
·
verified ·
1 Parent(s): 0a4e51d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -49
app.py CHANGED
@@ -1,37 +1,22 @@
1
- # ===== تثبيت المكتبات =====
2
- import os
3
- from dotenv import load_dotenv
4
- import nest_asyncio
5
 
6
- from telegram import Update
7
- from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes
8
- from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
9
-
10
- # ===== حل مشاكل asyncio في Colab =====
11
- nest_asyncio.apply()
12
-
13
- # ===== تحميل التوكنات =====
14
- load_dotenv()
15
- TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
16
- HF_TOKEN = os.getenv("HF_TOKEN")
17
-
18
- # ===== إعداد نموذج Hugging Face =====
19
- tokenizer = AutoTokenizer.from_pretrained("gpt2", token=HF_TOKEN)
20
- model = AutoModelForCausalLM.from_pretrained("gpt2", token=HF_TOKEN)
21
- chatbot = pipeline("text-generation", model=model, tokenizer=tokenizer)
22
-
23
- # ===== خريطة المشاعر العربي =====
24
  arabic_feelings_map = {
 
25
  "زعلان": "غضب",
26
  "معصب": "غضب",
27
  "سيء": "غضب",
28
  "خدمة سيئة": "غضب",
29
  "ما عجبني": "غضب",
30
  "تجربة سيئة": "غضب",
 
 
31
  "محبط": "حزن",
32
  "حزين": "حزن",
33
  "مكسور": "حزن",
34
  "ندمت": "حزن",
 
 
35
  "مبسوط": "سعادة",
36
  "سعيد": "سعادة",
37
  "مرتاح": "سعادة",
@@ -39,46 +24,42 @@ arabic_feelings_map = {
39
  "ممتاز": "سعادة",
40
  "رهيب": "سعادة",
41
  "يعجبني": "سعادة",
 
 
42
  "خايف": "خوف",
43
  "قلقان": "خوف",
44
  "متوتر": "خوف",
 
 
45
  "مقرف": "اشمئزاز",
46
  "مثير للاشمئزاز": "اشمئزاز",
 
 
47
  "عادي": "محايد",
48
  "طبيعي": "محايد"
49
  }
50
 
51
- # ===== دالة تحليل المشاعر مع القيمة الرقمية =====
52
  def analyze_arabic_text(text):
53
  text = text.strip().lower()
 
54
  if not text:
55
- return "محايد", 0
 
 
56
  for key in arabic_feelings_map:
57
  if key in text:
58
- feeling = arabic_feelings_map[key]
59
- if feeling == "سعادة":
60
- value = 1
61
- elif feeling in ["حزن", "غضب", "خوف", "اشمئزاز"]:
62
- value = -1
63
- else: # محايد
64
- value = 0
65
- return feeling, value
66
- return "محايد", 0
67
-
68
- # ===== دالة التعامل مع الرسائل =====
69
- async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
70
- user_text = update.message.text
71
-
72
- # تحليل المشاعر
73
- feeling, value = analyze_arabic_text(user_text)
74
-
75
- # الرد فقط بالشكل المطلوب
76
- reply_text = f"الشعور🪄: {feeling}\nالقيمة الرقمية📊: {value}\nالنص📇: {user_text}"
77
- await update.message.reply_text(reply_text)
78
 
79
- # ===== إعداد وتشغيل البوت =====
80
- app = ApplicationBuilder().token(TELEGRAM_TOKEN).build()
81
- app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
82
 
83
- print("🤖 Bot is running...")
84
- app.run_polling()
 
 
 
 
 
 
 
 
 
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
  "ممتاز": "سعادة",
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()