rafat
Update app.py
36bfe37
import gradio as gr
from transformers import pipeline
# استخدام نموذج المستخدم الخاص
model_name = "RafatMohammed/arabic-sentiment-marbertv2"
try:
# تحميل النموذج باستخدام pipeline
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']
# تفسير النتائج للنموذج الخاص بك
# التعيين الصحيح بناءً على بطاقة النموذج:
# LABEL_0 -> Negative (سلبي)
# LABEL_1 -> Neutral (محايد)
# LABEL_2 -> Positive (إيجابي)
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)}"
# تحسين واجهة Gradio مع تنسيق CSS لدعم اللغة العربية (RTL)
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()