thomson99 commited on
Commit
ed3c0cc
·
verified ·
1 Parent(s): 847231a

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -60
app.py CHANGED
@@ -12,7 +12,7 @@ from bs4 import BeautifulSoup
12
 
13
  # تهيئة النموذج
14
  try:
15
- model_name = "aubmindlab/aragpt2-medium"
16
  tokenizer = AutoTokenizer.from_pretrained(model_name)
17
  model = AutoModelForCausalLM.from_pretrained(model_name)
18
  except Exception as e:
@@ -23,11 +23,16 @@ except Exception as e:
23
  class ArticleGenerator:
24
  def __init__(self):
25
  # تهيئة النموذج والتوكنايزر
26
- self.model_name = "meta-llama/Llama-2-7b-chat-hf"
27
- self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
28
- self.model = AutoModelForCausalLM.from_pretrained(self.model_name, torch_dtype=torch.float16)
29
- self.device = "cuda" if torch.cuda.is_available() else "cpu"
30
- self.model.to(self.device)
 
 
 
 
 
31
 
32
  def search_topic(self, topic, num_results=5):
33
  """البحث عن معلومات حول الموضوع"""
@@ -55,7 +60,8 @@ class ArticleGenerator:
55
  'title': title_elem.text,
56
  'content': snippet_elem.text
57
  })
58
- except:
 
59
  # في حالة فشل البحث، استخدم محتوى افتراضي
60
  results.append({
61
  'source': 'default',
@@ -65,63 +71,56 @@ class ArticleGenerator:
65
 
66
  return results
67
 
68
- def extract_keywords(self, topic):
69
- """استخراج الكلمات المفتاحية من الموضوع"""
70
- # قائمة من الكلمات المفتاحية المحتملة
71
- potential_keywords = [
72
- f"تعريف {topic}",
73
- f"أهمية {topic}",
74
- f"فوائد {topic}",
75
- f"أنواع {topic}",
76
- f"مميزات {topic}",
77
- f"تطبيقات {topic}",
78
- f"تاريخ {topic}",
79
- f"مستقبل {topic}",
80
- f"تحديات {topic}",
81
- f"حلول {topic}"
82
- ]
83
-
84
- return potential_keywords
85
-
86
  def generate_content_with_research(self, topic, style):
87
  """توليد محتوى مبني على البحث"""
88
- # استخراج الكلمات المفتاحية
89
- keywords = self.extract_keywords(topic)
90
 
91
- # البحث عن كل كلمة مفتاحية
92
- all_research = []
93
- for keyword in keywords[:3]: # نأخذ أول 3 كلمات مفتاحية فقط
94
- search_results = self.search_topic(f"{topic} {keyword}")
95
- all_research.extend(search_results)
96
-
97
  # تجميع المعلومات
98
- research_text = "\n".join([
99
- f"المصدر: {r['source']}\nالعنوان: {r['title']}\nالمحتوى: {r['content']}\n"
100
- for r in all_research
101
- ])
102
-
103
- # إنشاء محتوى باستخدام النموذج
104
- prompt = f"""
105
- استناداً إلى المعلومات التالية، قم بإنشاء محتوى {style} حول {topic}:
106
-
107
- المعلومات البحثية:
108
- {research_text}
109
-
110
- يجب أن يكون المحتوى:
111
- 1. دقيقاً ومبنياً على المصادر
112
- 2. منظماً بشكل منطقي
113
- 3. مكتوباً بأسلوب {style}
114
- 4. يتضمن استشهادات من المصادر
115
- """
116
-
117
- inputs = self.tokenizer(prompt, return_tensors="pt").to(self.device)
118
- outputs = self.model.generate(
119
- inputs["input_ids"],
120
- max_length=2000,
121
- temperature=0.8,
122
- num_return_sequences=1
123
- )
124
- return self.tokenizer.decode(outputs[0], skip_special_tokens=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
  def count_words(text):
127
  """
 
12
 
13
  # تهيئة النموذج
14
  try:
15
+ model_name = "facebook/mbart-large-cc25"
16
  tokenizer = AutoTokenizer.from_pretrained(model_name)
17
  model = AutoModelForCausalLM.from_pretrained(model_name)
18
  except Exception as e:
 
23
  class ArticleGenerator:
24
  def __init__(self):
25
  # تهيئة النموذج والتوكنايزر
26
+ self.model_name = "facebook/mbart-large-cc25" # نموذج متعدد اللغات يدعم العربية
27
+ try:
28
+ self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
29
+ self.model = AutoModelForCausalLM.from_pretrained(self.model_name, torch_dtype=torch.float16)
30
+ self.device = "cuda" if torch.cuda.is_available() else "cpu"
31
+ self.model.to(self.device)
32
+ self.model_loaded = True
33
+ except Exception as e:
34
+ print(f"خطأ في تحميل النموذج: {e}")
35
+ self.model_loaded = False
36
 
37
  def search_topic(self, topic, num_results=5):
38
  """البحث عن معلومات حول الموضوع"""
 
60
  'title': title_elem.text,
61
  'content': snippet_elem.text
62
  })
63
+ except Exception as e:
64
+ print(f"خطأ في البحث: {e}")
65
  # في حالة فشل البحث، استخدم محتوى افتراضي
66
  results.append({
67
  'source': 'default',
 
71
 
72
  return results
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  def generate_content_with_research(self, topic, style):
75
  """توليد محتوى مبني على البحث"""
76
+ # البحث عن المعلومات
77
+ search_results = self.search_topic(topic)
78
 
 
 
 
 
 
 
79
  # تجميع المعلومات
80
+ content_parts = []
81
+
82
+ # إضافة مقدمة
83
+ content_parts.append(f"""
84
+ في هذا المقال سنتحدث عن {topic}، وهو موضوع يستحق الدراسة والبحث.
85
+ """)
86
+
87
+ # إضافة المحتوى الرئيسي
88
+ for result in search_results:
89
+ content_parts.append(f"""
90
+ {result['content']}
91
+
92
+ وكما نرى في واقعنا المعاصر، فإن {topic} يلعب دوراً مهماً في حياتنا.
93
+ """)
94
+
95
+ # إضافة خاتمة
96
+ content_parts.append(f"""
97
+ وفي الختام، يمكننا القول أن {topic} يمثل أهمية كبيرة في عصرنا الحالي.
98
+ """)
99
+
100
+ # دمج كل الأجزاء
101
+ final_content = "\n".join(content_parts)
102
+
103
+ # إضافة تحسينات أسلوبية
104
+ final_content = self.enhance_style(final_content, style)
105
+
106
+ return final_content
107
+
108
+ def enhance_style(self, content, style):
109
+ """تحسين أسلوب المحتوى"""
110
+ if style == "أكاديمي رسمي":
111
+ content = content.replace("نرى", "نلاحظ")
112
+ content = content.replace("يلعب دوراً", "يؤدي دوراً")
113
+ content = content.replace("مهم", "ذو أهمية")
114
+ elif style == "إخباري موضوعي":
115
+ content = content.replace("نرى", "يتضح")
116
+ content = content.replace("يلعب دوراً", "يساهم")
117
+ content = content.replace("مهم", "أساسي")
118
+ else: # تعليمي تفاعلي
119
+ content = content.replace("نرى", "نجد")
120
+ content = content.replace("يلعب دوراً", "يشارك")
121
+ content = content.replace("مهم", "حيوي")
122
+
123
+ return content
124
 
125
  def count_words(text):
126
  """