Spaces:
Runtime error
Runtime error
Upload app.py
Browse files
app.py
CHANGED
@@ -47,11 +47,9 @@ def get_article_template(article_type):
|
|
47 |
templates = {
|
48 |
"علمي": {
|
49 |
"structure": [
|
50 |
-
"
|
51 |
-
"
|
52 |
-
"
|
53 |
-
"النتائج والمناقشة",
|
54 |
-
"الاستنتاجات والتوصيات"
|
55 |
],
|
56 |
"style": "أكاديمي رسمي",
|
57 |
"transitions": [
|
@@ -221,31 +219,12 @@ def generate_main_content(topic, structure, transitions, min_words=800):
|
|
221 |
words_per_section = min_words // len(structure)
|
222 |
|
223 |
for section_type in structure:
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
f"يتطلب تحليل {topic} دراسة معمقة للعوامل المختلفة المؤثرة في هذا المجال. حيث تشير الدراسات الحديثة إلى وجود عدة عناصر رئيسية تستحق التحليل والدراسة.",
|
231 |
-
f"وعند النظر بعمق في {topic}، نجد أن هناك العديد من الجوانب التي تستحق الدراسة والتحليل. فمن خلال البحث والتقصي، يمكن تحديد العديد من النقاط المهمة.",
|
232 |
-
f"كما أن التحليل المعمق لـ {topic} يكشف عن وجود علاقات متداخلة بين مختلف العناصر المكونة له. وهذا يتطلب دراسة كل عنصر على حدة وفهم تأثيره على المنظومة ككل."
|
233 |
-
]
|
234 |
-
elif section_type == "وصف":
|
235 |
-
paragraphs = [
|
236 |
-
f"يتميز {topic} بمجموعة من الخصائص والسمات الفريدة التي تميزه عن غيره. ومن خلال الدراسة والبحث، يمكن تحديد هذه الخصائص وفهم دورها وأهميتها.",
|
237 |
-
f"وعند وصف {topic} بشكل تفصيلي، نجد أنه يتكون من عدة عناصر أساسية تتفاعل فيما بينها لتشكل نظاماً متكاملاً. كل عنصر له دوره وأهميته في المنظومة ككل.",
|
238 |
-
f"كما يمتاز {topic} بقدرته على التكيف والتطور مع المتغيرات المختلفة. وهذا ما يجعله موضوعاً مثيراً للدراسة والبحث."
|
239 |
-
]
|
240 |
-
else: # مناقشة
|
241 |
-
paragraphs = [
|
242 |
-
f"تثير دراسة {topic} العديد من النقاط الجديرة بالمناقشة والتحليل. فمن خلال البحث والدراسة، تظهر العديد من الآراء والوجهات النظر المختلفة.",
|
243 |
-
f"وعند مناقشة {topic} بشكل معمق، نجد أن هناك العديد من الجوانب التي تحتاج إلى دراسة وتحليل. كل جانب يقدم رؤية مختلفة وفهماً جديداً للموضوع.",
|
244 |
-
f"كما أن المناقشة المعمقة لـ {topic} تكشف عن وجود تحديات وفرص مختلفة. وهذا ما يجعل دراسته وتحليله أمراً ضرورياً لفهم أبعاده المختلفة."
|
245 |
-
]
|
246 |
-
|
247 |
-
content += "\n\n".join(paragraphs) + "\n\n"
|
248 |
-
current_words = len(content.split())
|
249 |
|
250 |
sections.append({
|
251 |
"title": f"{section_type} {topic}",
|
@@ -254,6 +233,57 @@ def generate_main_content(topic, structure, transitions, min_words=800):
|
|
254 |
|
255 |
return sections
|
256 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
def generate_conclusion(topic, style, min_words=200):
|
258 |
"""توليد خاتمة شاملة للمقال"""
|
259 |
conclusion_parts = [
|
@@ -267,75 +297,48 @@ def generate_conclusion(topic, style, min_words=200):
|
|
267 |
|
268 |
def format_article(article):
|
269 |
"""تنسيق المقال بشكل منظم ومرتب"""
|
270 |
-
|
|
|
|
|
271 |
|
272 |
-
|
|
|
273 |
{article['introduction']}
|
|
|
274 |
|
275 |
-
|
|
|
276 |
"""
|
277 |
|
278 |
# إضافة المحتوى الرئيسي مع ترقيم الأقسام
|
279 |
for i, section in enumerate(article['main_content'], 1):
|
280 |
-
formatted_text += f"""
|
|
|
281 |
{section['content']}
|
282 |
-
|
283 |
"""
|
284 |
|
285 |
# إضافة الأسئلة الشائعة
|
286 |
-
formatted_text += """
|
|
|
287 |
"""
|
|
|
288 |
for i, qa in enumerate(article['faq'], 1):
|
289 |
-
formatted_text += f"""
|
290 |
-
{qa['
|
291 |
-
|
|
|
292 |
"""
|
293 |
|
294 |
# إضافة الخاتمة
|
295 |
-
formatted_text += f"""
|
296 |
-
|
|
|
|
|
|
|
297 |
|
298 |
return formatted_text
|
299 |
|
300 |
-
def generate_article(topic, article_type, word_count=1500, formality="رسمي"):
|
301 |
-
template = get_article_template(article_type)
|
302 |
-
structure = template["structure"]
|
303 |
-
style = template["style"]
|
304 |
-
transitions = template["transitions"]
|
305 |
-
|
306 |
-
# تعديل الأسلوب حسب مستوى الرسمية
|
307 |
-
if formality == "رسمي":
|
308 |
-
style = "أكاديمي رسمي"
|
309 |
-
elif formality == "شبه رسمي":
|
310 |
-
style = "إخباري موضوعي"
|
311 |
-
else: # عادي
|
312 |
-
style = "تعليمي تفاعلي"
|
313 |
-
|
314 |
-
# حساب عدد الكلمات المطلوب لكل قسم
|
315 |
-
main_content_words = int(word_count * 0.6) # 60% للمحتوى الرئيسي
|
316 |
-
intro_words = int(word_count * 0.15) # 15% للمقدمة
|
317 |
-
conclusion_words = int(word_count * 0.15) # 15% للخاتمة
|
318 |
-
faq_words = int(word_count * 0.1) # 10% للأسئلة الشائعة
|
319 |
-
|
320 |
-
# إنشاء المقال
|
321 |
-
article = {
|
322 |
-
"title": generate_title(topic, style),
|
323 |
-
"introduction": generate_introduction(topic, style, transitions, intro_words),
|
324 |
-
"main_content": generate_main_content(topic, structure, transitions, main_content_words),
|
325 |
-
"conclusion": generate_conclusion(topic, style, conclusion_words),
|
326 |
-
"faq": generate_faq(topic, style)
|
327 |
-
}
|
328 |
-
|
329 |
-
# تنسيق المقال
|
330 |
-
formatted_text = format_article(article)
|
331 |
-
|
332 |
-
# تحسين المحتوى
|
333 |
-
enhanced_text = enhance_text_variation(formatted_text)
|
334 |
-
humanized_text = add_human_touch(enhanced_text)
|
335 |
-
final_text = check_grammar_and_style(humanized_text)
|
336 |
-
|
337 |
-
return final_text
|
338 |
-
|
339 |
def generate_faq(topic, style):
|
340 |
if style == "أكاديمي رسمي":
|
341 |
questions = [
|
|
|
47 |
templates = {
|
48 |
"علمي": {
|
49 |
"structure": [
|
50 |
+
"تحليل",
|
51 |
+
"وصف",
|
52 |
+
"مناقشة"
|
|
|
|
|
53 |
],
|
54 |
"style": "أكاديمي رسمي",
|
55 |
"transitions": [
|
|
|
219 |
words_per_section = min_words // len(structure)
|
220 |
|
221 |
for section_type in structure:
|
222 |
+
if section_type == "تحليل":
|
223 |
+
content = generate_analysis_section(topic, words_per_section)
|
224 |
+
elif section_type == "وصف":
|
225 |
+
content = generate_description_section(topic, words_per_section)
|
226 |
+
else: # مناقشة
|
227 |
+
content = generate_discussion_section(topic, words_per_section)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
|
229 |
sections.append({
|
230 |
"title": f"{section_type} {topic}",
|
|
|
233 |
|
234 |
return sections
|
235 |
|
236 |
+
def generate_analysis_section(topic, target_words):
|
237 |
+
"""توليد قسم التحليل"""
|
238 |
+
paragraphs = [
|
239 |
+
f"يتطلب تحليل {topic} دراسة معمقة للعوامل المختلفة المؤثرة في هذا المجال. وتشير الدراسات الحديثة إلى مجموعة من النقاط الرئيسية التي تستحق التحليل والدراسة:",
|
240 |
+
|
241 |
+
"أولاً: العوامل الرئيسية المؤثرة",
|
242 |
+
f"تتعدد العوامل المؤثرة في مجال {topic}، ويمكن تصنيفها إلى عدة فئات رئيسية. تشمل هذه العوامل الجوانب التقنية والاجتماعية والاقتصادية، حيث يؤثر كل منها بشكل مباشر على تطور وتقدم هذا المجال.",
|
243 |
+
|
244 |
+
"ثانياً: التحديات والفرص",
|
245 |
+
f"يواجه مجال {topic} مجموعة من التحديات التي تتطلب حلولاً مبتكرة. وفي نفس الوقت، تظهر فرص جديدة يمكن استثمارها لتحقيق تقدم ملموس في هذا المجال.",
|
246 |
+
|
247 |
+
"ثالثاً: الاتجاهات المستقبلية",
|
248 |
+
f"تشير التوقعات المستقبلية في مجال {topic} إلى اتجاهات واعدة تستحق الدراسة والمتابعة. وتتطلب هذه الاتجاهات تطوير استراتيجيات مناسبة للتعامل معها."
|
249 |
+
]
|
250 |
+
|
251 |
+
return "\n\n".join(paragraphs)
|
252 |
+
|
253 |
+
def generate_description_section(topic, target_words):
|
254 |
+
"""توليد قسم الوصف"""
|
255 |
+
paragraphs = [
|
256 |
+
f"يتميز {topic} بمجموعة من الخصائص والسمات الفريدة التي تجعله موضوعاً مهماً للدراسة والبحث. وفيما يلي وصف تفصيلي لأهم هذه الخصائص:",
|
257 |
+
|
258 |
+
"أولاً: السمات الأساسية",
|
259 |
+
f"يمتاز {topic} بمجموعة من السمات الأساسية التي تشكل هويته وتميزه عن غيره. وتشمل هذه السمات جوانب متعددة تستحق الدراسة والتحليل.",
|
260 |
+
|
261 |
+
"ثانياً: المكونات الرئيسية",
|
262 |
+
f"يتكون {topic} من عدة مكونات رئيسية تتفاعل فيما بينها لتشكل نظاماً متكاملاً. كل مكون له دوره وأهميته في المنظومة الكلية.",
|
263 |
+
|
264 |
+
"ثالثاً: آليات العمل",
|
265 |
+
f"تعتمد آليات العمل في {topic} على مجموعة من الأسس والمبادئ التي تضمن كفاءة وفعالية الأداء. وتتطلب هذه الآليات فهماً عميقاً لطبيعة العمل وأهدافه."
|
266 |
+
]
|
267 |
+
|
268 |
+
return "\n\n".join(paragraphs)
|
269 |
+
|
270 |
+
def generate_discussion_section(topic, target_words):
|
271 |
+
"""توليد قسم المناقشة"""
|
272 |
+
paragraphs = [
|
273 |
+
f"تثير مناقشة {topic} العديد من النقاط المهمة التي تستحق التحليل والدراسة. وفيما يلي أهم النقاط التي تمت مناقشتها:",
|
274 |
+
|
275 |
+
"أولاً: وجهات النظر المختلفة",
|
276 |
+
f"تتعدد وجهات النظر حول {topic}، حيث يقدم كل اتجاه رؤية مختلفة تستند إلى مجموعة من الأدلة والبراهين. وتسهم هذه التعددية في إثراء النقاش وتعميق الفهم.",
|
277 |
+
|
278 |
+
"ثانياً: الآراء المتباينة",
|
279 |
+
f"تختلف الآراء حول {topic} باختلاف المنطلقات الفكرية والخلفيات العلمية. ويسهم هذا التنوع في تقديم فهم أشمل وأعمق للموضوع.",
|
280 |
+
|
281 |
+
"ثالثاً: نقاط الاتفاق والاختلاف",
|
282 |
+
f"رغم تعدد الآراء حول {topic}، إلا أن هناك نقاط اتفاق مشتركة تشكل أساساً للحوار والنقاش. كما أن نقاط الاختلاف تفتح المجال لمزيد من البحث والدراسة."
|
283 |
+
]
|
284 |
+
|
285 |
+
return "\n\n".join(paragraphs)
|
286 |
+
|
287 |
def generate_conclusion(topic, style, min_words=200):
|
288 |
"""توليد خاتمة شاملة للمقال"""
|
289 |
conclusion_parts = [
|
|
|
297 |
|
298 |
def format_article(article):
|
299 |
"""تنسيق المقال بشكل منظم ومرتب"""
|
300 |
+
# تنسيق العنوان الرئيسي
|
301 |
+
formatted_text = f"""<div dir="rtl">
|
302 |
+
<h1 style="text-align: center; color: #2c3e50; margin-bottom: 30px;">{article['title']}</h1>
|
303 |
|
304 |
+
<div style="margin-bottom: 40px;">
|
305 |
+
<h2 style="color: #34495e; border-bottom: 2px solid #3498db; padding-bottom: 10px;">مقدمة</h2>
|
306 |
{article['introduction']}
|
307 |
+
</div>
|
308 |
|
309 |
+
<div style="margin-bottom: 40px;">
|
310 |
+
<h2 style="color: #34495e; border-bottom: 2px solid #3498db; padding-bottom: 10px;">المحتوى الرئيسي</h2>
|
311 |
"""
|
312 |
|
313 |
# إضافة المحتوى الرئيسي مع ترقيم الأقسام
|
314 |
for i, section in enumerate(article['main_content'], 1):
|
315 |
+
formatted_text += f"""<div style="margin-bottom: 30px;">
|
316 |
+
<h3 style="color: #2980b9;">{i}. {section['title']}</h3>
|
317 |
{section['content']}
|
318 |
+
</div>
|
319 |
"""
|
320 |
|
321 |
# إضافة الأسئلة الشائعة
|
322 |
+
formatted_text += """<div style="margin-bottom: 40px;">
|
323 |
+
<h2 style="color: #34495e; border-bottom: 2px solid #3498db; padding-bottom: 10px;">الأسئلة الشائعة</h2>
|
324 |
"""
|
325 |
+
|
326 |
for i, qa in enumerate(article['faq'], 1):
|
327 |
+
formatted_text += f"""<div style="margin-bottom: 20px;">
|
328 |
+
<h3 style="color: #2980b9;">سؤال {i}: {qa['question']}</h3>
|
329 |
+
<p style="margin-right: 20px;">{qa['answer']}</p>
|
330 |
+
</div>
|
331 |
"""
|
332 |
|
333 |
# إضافة الخاتمة
|
334 |
+
formatted_text += f"""<div style="margin-bottom: 40px;">
|
335 |
+
<h2 style="color: #34495e; border-bottom: 2px solid #3498db; padding-bottom: 10px;">الخاتمة</h2>
|
336 |
+
{article['conclusion']}
|
337 |
+
</div>
|
338 |
+
</div>"""
|
339 |
|
340 |
return formatted_text
|
341 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
def generate_faq(topic, style):
|
343 |
if style == "أكاديمي رسمي":
|
344 |
questions = [
|