alomari7 commited on
Commit
1fa6011
·
verified ·
1 Parent(s): cdf16d9

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +23 -95
app.py CHANGED
@@ -1,84 +1,65 @@
1
- # ==============================================================================
2
- # الخطوة 8 (الأخيرة): إطلاق تطبيق Gradio بشكل دائم
3
- # ==============================================================================
4
- from huggingface_hub import HfApi, HfFolder, create_repo, notebook_login
5
- import os
6
-
7
- # --- 8.1: الإعدادات ---
8
- # المستودع الذي أنشأناه للمشروع
9
- REPO_ID = "alomari7/Okaz-NLP-Project"
10
- # المودل الذي أنشأناه
11
- MODEL_ID = "alomari7/ara-bert-okaz-style"
12
-
13
- print(f"🚀 جاري تجهيز التطبيق ليتم إطلاقه على: https://huggingface.co/spaces/{REPO_ID}")
14
 
15
- # --- 8.2: كتابة كود التطبيق (app.py) ---
16
- print("✍️ جاري كتابة ملف app.py...")
17
-
18
- # هذا هو نفس الكود الذي جربناه، ولكنه بتنسيق ملف بايثون
19
- APP_PY_CONTENT = f"""
20
  import gradio as gr
21
  from transformers import pipeline
22
  import os
23
 
24
  # --- 1. تحميل المودل الخاص بك من الهَب ---
25
- # (سيقوم Hugging Face Spaces بتحميله تلقائياً)
26
  try:
27
  fill_mask_pipeline = pipeline(
28
  "fill-mask",
29
- model="{MODEL_ID}",
30
- tokenizer="{MODEL_ID}"
31
  )
32
  print("✅ تم تحميل المودل بنجاح!")
33
  except Exception as e:
34
- print(f"❌ خطأ فادح أثناء تحميل المودل: {e}")
35
- # إذا فشل تحميل المودل، سيعرض التطبيق رسالة الخطأ
36
  raise gr.Error(f"فشل تحميل المودل: {e}. يرجى مراجعة سجلات Space.")
37
 
38
  # --- 2. تعريف دالة التنبؤ ---
39
  def predict_okaz_style(sentence):
40
  if "[MASK]" not in sentence:
41
  return "❌ خطأ: لم أجد الكلمة [MASK] في الجملة. الرجاء إضافتها (بحروف كبيرة)."
42
-
43
  try:
44
  predictions = fill_mask_pipeline(sentence)
45
-
46
- output = f"الجملة المدخلة: {sentence}\\n"
47
- output += "=========================\\n"
48
- output += "✨ أفضل 5 تخمينات للمودل:\\n"
49
- output += "=========================\\n"
50
-
51
  for pred in predictions:
52
  token_str = pred['token_str']
53
  score = pred['score']
54
- full_sentence = pred['sequence']
55
-
56
- output += f"التخمين: {token_str} (الثقة: {score:.2%})\\n"
57
- output += f" 👈 {full_sentence}\\n\\n"
58
-
59
  return output
60
-
61
  except Exception as e:
62
  return f"❌ حدث خطأ داخلي أثناء المعالجة: {e}"
63
 
64
  # --- 3. إطلاق واجهة Gradio ---
65
- with gr.Blocks() as demo:
66
  gr.Markdown(
67
- \"\"\"
68
  # 🤖 متنبئ الكلمات بأسلوب عكاظ
69
  هذا تطبيق ويب لتجربة المودل (alomari7/ara-bert-okaz-style) الذي تم تدريبه على 143 مقالاً من صحيفة عكاظ.
70
  اكتب جملة واستخدم `[MASK]` (بحروف كبيرة) مكان الكلمة التي تريد من المودل تخمينها.
71
- \"\"\"
72
  )
73
  with gr.Column():
74
  input_text = gr.Textbox(
75
- label="أدخل جملة بأسلوب (عكاظ)",
76
  placeholder="مثال: أكد وزير [MASK] أن المشروع يسير وفق الخطة.",
77
  lines=3
78
  )
79
  output_text = gr.Textbox(label="نتيجة التخمين", lines=15)
80
  submit_btn = gr.Button("🚀 خمن الكلمة")
81
-
82
  gr.Examples(
83
  examples=[
84
  ["أكد وزير [MASK] أن المشروع يسير وفق الخطة."],
@@ -87,61 +68,8 @@ with gr.Blocks() as demo:
87
  ],
88
  inputs=input_text
89
  )
90
-
91
  submit_btn.click(fn=predict_okaz_style, inputs=input_text, outputs=output_text)
92
 
93
  # إطلاق التطبيق
94
  demo.launch()
95
- """
96
-
97
- # كتابة المحتوى إلى ملف محلي
98
- with open("app.py", "w", encoding="utf-8") as f:
99
- f.write(APP_PY_CONTENT)
100
- print("✅ تم إنشاء ملف app.py بنجاح.")
101
-
102
- # --- 8.3: كتابة ملف المكتبات (requirements.txt) ---
103
- print("✍️ جاري كتابة ملف requirements.txt...")
104
- REQUIREMENTS_CONTENT = """
105
- torch
106
- transformers
107
- gradio
108
- """
109
- with open("requirements.txt", "w", encoding="utf-8") as f:
110
- f.write(REQUIREMENTS_CONTENT)
111
- print("✅ تم إنشاء ملف requirements.txt بنجاح.")
112
-
113
- # --- 8.4: تسجيل الدخول (للتأكيد) ورفع الملفات ---
114
- print("\n🔑 تسجيل الدخول إلى Hugging Face (استخدم نفس الرمز)...")
115
- notebook_login()
116
-
117
- print("\n🚀 جاري رفع ملفات التطبيق (app.py و requirements.txt) إلى مشروعك...")
118
- try:
119
- api = HfApi()
120
-
121
- # رفع ملف التطبيق
122
- api.upload_file(
123
- path_or_fileobj="app.py",
124
- path_in_repo="app.py",
125
- repo_id=REPO_ID,
126
- repo_type="space"
127
- )
128
- print("✅ تم رفع app.py.")
129
-
130
- # رفع ملف المكتبات
131
- api.upload_file(
132
- path_or_fileobj="requirements.txt",
133
- path_in_repo="requirements.txt",
134
- repo_id=REPO_ID,
135
- repo_type="space"
136
- )
137
- print("✅ تم رفع requirements.txt.")
138
-
139
- print("\n" + "="*50)
140
- print(f"🎉🎉🎉 اكتمل إطلاق المشروع! 🎉🎉🎉")
141
- print(f"ستقوم منصة Hugging Face الآن بـ 'بناء' تطبيقك. قد يستغرق هذا 5 دقائق.")
142
- print(f"يمكنك مشاهدة عملية البناء ومتابعة تطبيقك وهو يعمل على الرابط الدائم:")
143
- print(f"🔗 https://huggingface.co/spaces/{REPO_ID}")
144
- print("="*50)
145
-
146
- except Exception as e:
147
- print(f"❌ حدث خطأ أثناء الرفع: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
 
 
 
 
 
 
2
  import gradio as gr
3
  from transformers import pipeline
4
  import os
5
 
6
  # --- 1. تحميل المودل الخاص بك من الهَب ---
 
7
  try:
8
  fill_mask_pipeline = pipeline(
9
  "fill-mask",
10
+ model="alomari7/ara-bert-okaz-style",
11
+ tokenizer="alomari7/ara-bert-okaz-style"
12
  )
13
  print("✅ تم تحميل المودل بنجاح!")
14
  except Exception as e:
15
+ # [تم التعديل] طباعة الخطأ قبل رفع Gr.Error
16
+ print(f"❌ خطأ فادح أثناء تحميل المودل: {e}") # This line uses 'e'
17
  raise gr.Error(f"فشل تحميل المودل: {e}. يرجى مراجعة سجلات Space.")
18
 
19
  # --- 2. تعريف دالة التنبؤ ---
20
  def predict_okaz_style(sentence):
21
  if "[MASK]" not in sentence:
22
  return "❌ خطأ: لم أجد الكلمة [MASK] في الجملة. الرجاء إضافتها (بحروف كبيرة)."
23
+
24
  try:
25
  predictions = fill_mask_pipeline(sentence)
26
+
27
+ output = f"الجملة المدخلة: {sentence}\n"
28
+ output += "=========================\n"
29
+ output += "✨ أفضل 5 تخمينات للمودل:\n"
30
+ output += "=========================\n"
31
+
32
  for pred in predictions:
33
  token_str = pred['token_str']
34
  score = pred['score']
35
+ full_sentence = pred['sequence']
36
+
37
+ output += f"التخمين: {token_str} (الثقة: {score:.2%})\n"
38
+ output += f" 👈 {full_sentence}\n\n"
39
+
40
  return output
41
+
42
  except Exception as e:
43
  return f"❌ حدث خطأ داخلي أثناء المعالجة: {e}"
44
 
45
  # --- 3. إطلاق واجهة Gradio ---
46
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
47
  gr.Markdown(
48
+ """
49
  # 🤖 متنبئ الكلمات بأسلوب عكاظ
50
  هذا تطبيق ويب لتجربة المودل (alomari7/ara-bert-okaz-style) الذي تم تدريبه على 143 مقالاً من صحيفة عكاظ.
51
  اكتب جملة واستخدم `[MASK]` (بحروف كبيرة) مكان الكلمة التي تريد من المودل تخمينها.
52
+ """
53
  )
54
  with gr.Column():
55
  input_text = gr.Textbox(
56
+ label="أدخل جملة بأسلوب (عكاظ)",
57
  placeholder="مثال: أكد وزير [MASK] أن المشروع يسير وفق الخطة.",
58
  lines=3
59
  )
60
  output_text = gr.Textbox(label="نتيجة التخمين", lines=15)
61
  submit_btn = gr.Button("🚀 خمن الكلمة")
62
+
63
  gr.Examples(
64
  examples=[
65
  ["أكد وزير [MASK] أن المشروع يسير وفق الخطة."],
 
68
  ],
69
  inputs=input_text
70
  )
71
+
72
  submit_btn.click(fn=predict_okaz_style, inputs=input_text, outputs=output_text)
73
 
74
  # إطلاق التطبيق
75
  demo.launch()