File size: 3,146 Bytes
bd98d2c
 
 
157800f
 
bd98d2c
157800f
 
 
 
bd98d2c
 
 
 
157800f
 
 
bd98d2c
 
157800f
bd98d2c
 
157800f
 
 
 
bd98d2c
 
 
157800f
bd98d2c
157800f
bd98d2c
 
 
 
157800f
 
bd98d2c
157800f
bd98d2c
 
 
 
 
 
157800f
 
bd98d2c
 
157800f
bd98d2c
 
 
157800f
47021f4
 
 
 
 
 
 
bd98d2c
 
157800f
 
 
 
47021f4
157800f
 
 
 
47021f4
157800f
 
 
 
 
 
 
 
bd98d2c
157800f
bd98d2c
47021f4
 
bd98d2c
 
157800f
bd98d2c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import os
from huggingface_hub import login

# تسجيل الدخول باستخدام التوكن
login(token=os.environ.get('HUGGING_FACE_HUB_TOKEN'))

# تهيئة النموذج والتوكينايزر
model_name = "google/gemma-2b-it"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# نقل النموذج إلى GPU إذا كان متاحاً
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = model.to(device)

def generate_summary(text):
    # إعداد البرومبت
    prompt = f"""قم بتلخيص النص التالي بطريقتين:
    
    1. ملخص مترابط: اكتب فقرة واحدة مترابطة باستخدام كلمات الربط المناسبة مثل (كما، علاوة على ذلك، إضافة إلى ذلك، ولقد، وعليه، ومن ثم...)

    2. نقاط رئيسية: اكتب النقاط الرئيسية مسبوقة بـ "**ــ**"

    قواعد التلخيص:
    - تقليل 8 كلمات من كل فقرة
    - الحفاظ على المعنى الأساسي والسياق
    - الحفاظ على المصطلحات الفلسفية المهمة
    - التلخيص بأسلوب علمي وواضح

    النص الأصلي:
    {text}
    """
    
    # تحويل النص إلى توكنز
    inputs = tokenizer(prompt, return_tensors="pt").to(device)
    
    # توليد النص
    outputs = model.generate(
        **inputs,
        max_length=1024,
        temperature=0.7,
        top_k=50,
        top_p=0.95,
        num_return_sequences=1,
        pad_token_id=tokenizer.eos_token_id
    )
    
    # تحويل التوكنز إلى نص
    summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return summary

# إنشاء واجهة gradio
css = """
.rtl-text {
    direction: rtl;
    text-align: right;
}
"""

interface = gr.Interface(
    fn=generate_summary,
    inputs=gr.Textbox(
        label="أدخل النص المراد تلخيصه",
        lines=10,
        placeholder="ضع النص هنا...",
        elem_classes="rtl-text"
    ),
    outputs=gr.Textbox(
        label="الملخص",
        lines=10,
        elem_classes="rtl-text"
    ),
    title="خدمة تلخيص النصوص العربية باستخدام Gemma-2B",
    description="""
    هذه الخدمة تقوم بتلخيص النصوص العربية مع:
    - الحفاظ على المعنى الأساسي
    - استخدام كلمات ربط مناسبة
    - تقديم نقاط رئيسية
    """,
    examples=[
        ["يعتبر الذكاء الاصطناعي من أهم التقنيات الحديثة التي غيرت وجه العالم. فهو يستخدم في مجالات عديدة مثل الطب والتعليم والصناعة. كما أنه يساعد في حل المشكلات المعقدة وتحسين جودة الحياة."]
    ],
    theme=gr.themes.Soft(),
    css=css
)

# تشغيل الواجهة
interface.launch()