methodya commited on
Commit
4e85187
·
verified ·
1 Parent(s): 4c58ec8

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -0
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
3
+ import torch
4
+
5
+ # تحميل النموذج والتوكنايزر
6
+ model_id = "methodya/arabic-summarizer-philosophy-v2"
7
+ model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
8
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
9
+
10
+ # نقل النموذج إلى GPU إذا كان متوفراً
11
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
12
+ model = model.to(device)
13
+ model.eval()
14
+
15
+ def summarize(text, max_length=200, num_beams=7, length_penalty=1.2):
16
+ # تحويل القيم إلى النوع المناسب
17
+ max_length = int(max_length)
18
+ num_beams = int(num_beams)
19
+ length_penalty = float(length_penalty)
20
+
21
+ if not text.strip():
22
+ return "الرجاء إدخال نص للتلخيص"
23
+
24
+ # تجهيز البيانات للنموذج
25
+ inputs = tokenizer(
26
+ text,
27
+ return_tensors="pt",
28
+ max_length=2048,
29
+ padding=True,
30
+ truncation=True
31
+ )
32
+ inputs = {k: v.to(device) for k, v in inputs.items()}
33
+
34
+ # توليد الملخص مع معاملات محسنة
35
+ with torch.no_grad():
36
+ outputs = model.generate(
37
+ **inputs,
38
+ max_length=max_length,
39
+ min_length=30,
40
+ num_beams=num_beams,
41
+ length_penalty=length_penalty,
42
+ repetition_penalty=2.5,
43
+ do_sample=False,
44
+ temperature=1.0,
45
+ top_p=0.95,
46
+ no_repeat_ngram_size=4,
47
+ num_return_sequences=1,
48
+ early_stopping=True
49
+ )
50
+
51
+ return tokenizer.decode(outputs[0], skip_special_tokens=True)
52
+
53
+ # تعريف واجهة Gradio
54
+ interface = gr.Interface(
55
+ fn=summarize,
56
+ inputs=[
57
+ gr.Textbox(lines=8, label="النص", placeholder="أدخل النص العربي هنا..."),
58
+ gr.Slider(100, 400, value=200, label="طول الملخص"),
59
+ gr.Slider(1, 10, value=7, step=1, label="دقة التلخيص (num_beams)"),
60
+ gr.Slider(0.5, 2.0, value=1.2, step=0.1, label="معامل الطول (length_penalty)")
61
+ ],
62
+ outputs=gr.Textbox(label="الملخص"),
63
+ title="نظام تلخيص النصوص الفلسفية العربية",
64
+ description="نموذج متقدم لتلخيص النصوص الفلسفية باللغة العربية",
65
+ submit_btn="تلخيص",
66
+ clear_btn="مسح"
67
+ )
68
+
69
+ # تشغيل التطبيق
70
+ interface.launch()