File size: 1,963 Bytes
6893513
 
 
 
 
 
 
 
 
 
4ee975c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6893513
4ee975c
 
 
 
 
 
 
 
 
 
 
 
 
6893513
 
 
0652e73
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
import gradio as gr
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

# تحميل النموذج والتوكنايزر
model_id = "methodya/arabic-summarizer-philosophy"
model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)

# دالة التلخيص مع المعاملات الجديدة
def summarize(text, max_length=150, num_beams=7, length_penalty=0.8):
    # تحويل القيم إلى النوع المناسب
    max_length = int(max_length)
    num_beams = int(num_beams)
    length_penalty = float(length_penalty)
    
    # تجهيز البيانات للنموذج
    inputs = tokenizer(text, return_tensors="pt", max_length=2048, truncation=True)
    outputs = model.generate(
        **inputs,
        max_length=max_length,
        num_beams=num_beams,
        length_penalty=length_penalty,
        early_stopping=True
    )
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

# إعداد واجهة Gradio مع ربط الستايل الخارجي
interface = gr.Interface(
    fn=summarize,
    inputs=[
        gr.Textbox(lines=8, label="النص"), # النص الأصلي
        gr.Slider(50, 250, value=150, label="طول الملخص"), # max_length
        gr.Slider(1, 10, value=7, step=1, label="دقة التلخيص (num_beams)"), # num_beams
        gr.Slider(0.1, 2.0, value=0.8, step=0.1, label="معامل الطول (length_penalty)") # length_penalty
    ],
    outputs=gr.Textbox(label="الملخص"), # النص الملخص
    title="ملخص النصوص الفلسفية",
    description="نموذج لتلخيص النصوص الفلسفية باللغة العربية مع إعدادات متقدمة",
    css="style.css", # ربط ملف الستايل الخارجي
    submit_btn="تلخيص",  # تغيير زر Submit
    clear_btn="مسح"      # تغيير زر Clear
)

# تشغيل التطبيق
interface.launch()