import gradio as gr from transformers import pipeline import os # --- 1. تحميل المودل الخاص بك من الهَب --- try: fill_mask_pipeline = pipeline( "fill-mask", model="alomari7/ara-bert-okaz-style", tokenizer="alomari7/ara-bert-okaz-style" ) print("✅ تم تحميل المودل بنجاح!") except Exception as e: # [تم التعديل] طباعة الخطأ قبل رفع Gr.Error print(f"❌ خطأ فادح أثناء تحميل المودل: {e}") # This line uses 'e' raise gr.Error(f"فشل تحميل المودل: {e}. يرجى مراجعة سجلات Space.") # --- 2. تعريف دالة التنبؤ --- def predict_okaz_style(sentence): if "[MASK]" not in sentence: return "❌ خطأ: لم أجد الكلمة [MASK] في الجملة. الرجاء إضافتها (بحروف كبيرة)." try: predictions = fill_mask_pipeline(sentence) output = f"الجملة المدخلة: {sentence}\n" output += "=========================\n" output += "✨ أفضل 5 تخمينات للمودل:\n" output += "=========================\n" for pred in predictions: token_str = pred['token_str'] score = pred['score'] full_sentence = pred['sequence'] output += f"التخمين: {token_str} (الثقة: {score:.2%})\n" output += f" 👈 {full_sentence}\n\n" return output except Exception as e: return f"❌ حدث خطأ داخلي أثناء المعالجة: {e}" # --- 3. إطلاق واجهة Gradio --- with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown( """ # 🤖 متنبئ الكلمات بأسلوب عكاظ هذا تطبيق ويب لتجربة المودل (alomari7/ara-bert-okaz-style) الذي تم تدريبه على 143 مقالاً من صحيفة عكاظ. اكتب جملة واستخدم `[MASK]` (بحروف كبيرة) مكان الكلمة التي تريد من المودل تخمينها. """ ) with gr.Column(): input_text = gr.Textbox( label="أدخل جملة بأسلوب (عكاظ)", placeholder="مثال: أكد وزير [MASK] أن المشروع يسير وفق الخطة.", lines=3 ) output_text = gr.Textbox(label="نتيجة التخمين", lines=15) submit_btn = gr.Button("🚀 خمن الكلمة") gr.Examples( examples=[ ["أكد وزير [MASK] أن المشروع يسير وفق الخطة."], ["فاز نادي [MASK] في المباراة التي أقيمت بجدة."], ["أعلنت الهيئة عن [MASK] جديد للمستثمرين."] ], inputs=input_text ) submit_btn.click(fn=predict_okaz_style, inputs=input_text, outputs=output_text) # إطلاق التطبيق demo.launch()