thomson99 commited on
Commit
439f6f3
·
verified ·
1 Parent(s): 0a12e82

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -34
app.py CHANGED
@@ -2,6 +2,8 @@ import gradio as gr
2
  from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
3
  import torch
4
  import random
 
 
5
 
6
  # تهيئة النموذج - سيتم تحميله من Hugging Face
7
  try:
@@ -14,45 +16,64 @@ except Exception as e:
14
  model = None
15
  tokenizer = None
16
 
17
- def generate_article(topic, article_type, length, style):
18
  """
19
- توليد مقال كامل بناءً على المدخلات
20
  """
21
- # تحديد طول المقال
22
- max_length = {
23
- "قصير": 200,
24
- "متوسط": 400,
25
- "طويل": 800
26
- }.get(length, 400)
27
-
28
- # إنشاء المطلب للنموذج
29
- prompt = f"""اكتب مقالاً {article_type} عن {topic}.
30
- يجب أن يكون المقال {style} ويتضمن مقدمة وعرض وخاتمة.
31
  """
32
-
33
  try:
34
- if model and tokenizer:
35
- # توليد النص باستخدام النموذج
36
- inputs = tokenizer.encode(prompt, return_tensors="pt", max_length=100, truncation=True)
37
- outputs = model.generate(
38
- inputs,
39
- max_length=max_length,
40
- num_return_sequences=1,
41
- no_repeat_ngram_size=2,
42
- do_sample=True,
43
- top_k=50,
44
- top_p=0.95,
45
- temperature=0.7,
46
- pad_token_id=tokenizer.eos_token_id
47
- )
48
-
49
- generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
50
- return generated_text
51
- else:
52
- # نموذج بسيط في حالة عدم توفر النموذج الرئيسي
53
- return generate_simple_article(topic, article_type, length, style)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  except Exception as e:
55
- return f"حدث خطأ أثناء توليد المقال: {str(e)}"
56
 
57
  def generate_simple_article(topic, article_type, length, style):
58
  """
 
2
  from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
3
  import torch
4
  import random
5
+ import arabic_reshaper
6
+ from bidi.algorithm import get_display
7
 
8
  # تهيئة النموذج - سيتم تحميله من Hugging Face
9
  try:
 
16
  model = None
17
  tokenizer = None
18
 
19
+ def format_arabic_text(text):
20
  """
21
+ تنسيق النص العربي بشكل صحيح
22
  """
23
+ try:
24
+ reshaped_text = arabic_reshaper.reshape(text)
25
+ bidi_text = get_display(reshaped_text)
26
+ return bidi_text
27
+ except:
28
+ return text
29
+
30
+ def generate_article(topic, article_type, length, style):
31
+ """
32
+ توليد مقال كامل بناءً على المدخلات مع التأكد من صحة النص العربي
33
  """
 
34
  try:
35
+ # إنشاء هيكل المقال
36
+ sections = {
37
+ "مقدمة": [
38
+ f"يُعد {topic} من أهم المجالات التي تشغل العالم في العصر الحديث.",
39
+ f"في ظل التطورات التكنولوجية المتسارعة، يبرز {topic} كموضوع محوري يستحق الدراسة والبحث.",
40
+ f"يشهد العالم اهتماماً متزايداً بـ{topic} نظراً لتأثيره الكبير على مختلف مجالات الحياة."
41
+ ],
42
+ "عرض": [
43
+ f"يمكن تحليل {topic} من خلال عدة محاور رئيسية:",
44
+ "أولاً: الأسس النظرية والمفاهيم الأساسية",
45
+ "ثانياً: التطبيقات العملية والتجارب الحديثة",
46
+ "ثالثاً: التحديات والفرص المستقبلية",
47
+ f"\nمن الجوانب المهمة في {topic}:",
48
+ "• التطور التاريخي والنشأة",
49
+ "• الأدوات والتقنيات المستخدمة",
50
+ "• الآثار الاجتماعية والاقتصادية",
51
+ "\nوتشير الدراسات الحديثة إلى أن..."
52
+ ],
53
+ "خاتمة": [
54
+ f"وختاماً، يمكننا القول أن {topic} يمثل تحولاً جوهرياً في مجال التكنولوجيا والعلوم.",
55
+ f"في النهاية، نؤكد على أهمية مواصلة البحث والتطوير في مجال {topic}.",
56
+ "وبناءً على ما سبق، نوصي بتكثيف الجهود البحثية وتعزيز التعاون الدولي في هذا المجال."
57
+ ]
58
+ }
59
+
60
+ # اختيار محتوى المقال بناءً على النوع والطول
61
+ intro = random.choice(sections["مقدمة"])
62
+ body = "\n".join(sections["عرض"][:5 if length == "قصير" else 8 if length == "متوسط" else -1])
63
+ conclusion = random.choice(sections["خاتمة"])
64
+
65
+ # تجميع المقال
66
+ article = f"""
67
+ {intro}
68
+
69
+ {body}
70
+
71
+ {conclusion}
72
+ """
73
+ # تنسيق النص العربي
74
+ return format_arabic_text(article)
75
  except Exception as e:
76
+ return f"حدث خطأ أثناء إنشاء المقال: {str(e)}"
77
 
78
  def generate_simple_article(topic, article_type, length, style):
79
  """