| import gradio as gr |
| from transformers import pipeline |
|
|
| |
| model_name = "RafatMohammed/arabic-sentiment-marbertv2" |
|
|
| try: |
| |
| sentiment_pipeline = pipeline("sentiment-analysis", model=model_name) |
| except Exception as e: |
| sentiment_pipeline = None |
| print(f"Error loading model: {e}") |
|
|
| def analyze_sentiment(text): |
| if not text.strip(): |
| return "يرجى إدخال نص للتحليل." |
| |
| if sentiment_pipeline is None: |
| return "عذراً، هناك مشكلة في تحميل النموذج الخاص بك. يرجى التأكد من توفره على Hugging Face." |
| |
| try: |
| result = sentiment_pipeline(text)[0] |
| label = result['label'] |
| score = result['score'] |
| |
| |
| |
| |
| |
| |
| |
| if label == 'LABEL_2' or "Positive" in label or "إيجابي" in label: |
| sentiment = "إيجابي (Positive) 😊" |
| elif label == 'LABEL_1' or "Neutral" in label or "محايد" in label: |
| sentiment = "محايد (Neutral) 😐" |
| elif label == 'LABEL_0' or "Negative" in label or "سلبي" in label: |
| sentiment = "سلبي (Negative) 😞" |
| else: |
| sentiment = label |
| |
| return f"التصنيف: {sentiment}\nدرجة الثقة: {score:.4f}" |
| except Exception as e: |
| return f"حدث خطأ أثناء التحليل: {str(e)}" |
|
|
| |
| custom_css = """ |
| .gradio-container { direction: rtl; } |
| #title { text-align: center; color: #2D3E50; font-family: 'Arial', sans-serif; } |
| .output-box { border: 2px solid #2D3E50; border-radius: 8px; } |
| """ |
|
|
| with gr.Blocks(css=custom_css) as demo: |
| gr.Markdown(f"# تحليل المشاعر العربية باستخدام نموذجك المخصص\n### {model_name}", elem_id="title") |
| gr.Markdown("أدخل النص أدناه ليقوم نموذج **MARBERTv2** الخاص بك بتحليل مشاعره.") |
| |
| with gr.Column(): |
| input_text = gr.Textbox( |
| label="أدخل النص العربي هنا", |
| placeholder="مثال: أنا سعيد جداً باستخدام هذا النموذج الرائع!", |
| lines=4 |
| ) |
| submit_btn = gr.Button("بدء التحليل", variant="primary") |
| |
| with gr.Column(): |
| output_text = gr.Textbox(label="نتيجة التحليل") |
| |
| gr.Markdown(""" |
| ### دليل النتائج للنموذج الحالي: |
| * **إيجابي**: النص يحمل مشاعر تفاؤل، رضا أو مدح. |
| * **محايد**: النص وصفي أو لا يحمل مشاعر قوية. |
| * **سلبي**: النص يحمل مشاعر استياء، شكوى أو نقد. |
| * **درجة الثقة**: توضح مدى دقة النتيجة. |
| """) |
| |
| submit_btn.click(fn=analyze_sentiment, inputs=input_text, outputs=output_text) |
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|