> ## Content Index
> Fetch the complete content index at: https://arabroot.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# مشاريع تخرج في علم البيانات Data Science والذكاء الاصطناعي
- URL: https://arabroot.io/articles/افكار-مشاريع-تخرج-في-علم-البيانات-والذكاء-الاصطناعي/
- Published: 2026-11-01T19:00:26.000Z
- Updated: 2026-11-01T20:00:13.000Z
- Description: أربع عشرة فكرة لمشروع البكالوريوس ورسالة الماجستير في علم البيانات والذكاء الاصطناعي، لكل منها بيانات حقيقية وطريقة تقييم والخطر الذي يقتلها، مع اختبار جدوى لفكرة منها على بيانات حقيقية.
- Author: فريق عرب رووت
- Tags: الأدلة التقنية, للطلاب والخريجين

في آخر محاضرة من مقرر «مقدمة مشروع التخرج» قال لكم المشرف جملة واحدة: «كل فريق يرسل لي ثلاث أفكار قبل الأسبوع القادم، ومع كل فكرة رابط البيانات التي ستعملون عليها». وأنت في فريق من ثلاثة طلاب في علم البيانات Data Science أو الذكاء الاصطناعي Artificial Intelligence، فتحت مجموعة الفريق في المساء فوجدت الاقتراحات المعتادة: «روبوت محادثة Chatbot للجامعة»، و«نظام حضور بالتعرف على الوجه»، و«تحليل المشاعر في تويتر». وكلها أفكار سمعها المشرف من الدفعة السابقة والتي قبلها، وكلها تبدأ بنموذج جاهز وتنتهي بعرض جميل لا يجيب عن سؤال. والمشكلة أن المهلة أسبوع، وأن جملة «ومع كل فكرة رابط البيانات» هي التي ستسقط أغلب الاقتراحات، لأن فكرة البيانات بلا بيانات ليست فكرة.

في مقال [علم البيانات والذكاء الاصطناعي: منهج CCDS2021](https://arabroot.io/articles/%D8%AA%D8%AE%D8%B5%D8%B5-%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%86%D9%87%D8%AC-ccds2021-%D9%88-cs2023/) رأينا ما تدرسه في هذا التخصص وما ينقص الخطط السعودية، ومن أهم ما ظهر فيه أن التحليل والعرض ومجال التطبيق Domain غائبان عن أغلب الخطط. ومشروع التخرج هو المكان الذي تسد فيه هذه الفجوة، لأنه أول مرة تعمل فيها على بيانات حقيقية لمستخدم حقيقي، وتقيس النتيجة أمام لجنة. وهذا المقال من مرحلة «مشروع التخرج للبكالوريوس والماجستير» في مسار الطلاب، وموجه لطالب البكالوريوس الذي يختار فكرة لفريقه، ولطالب الماجستير الذي يبحث عن سؤال بحث Research Question لرسالته. وسوف نناقش في هذا المقال ما يلي:

- الفرق بين مشروع البكالوريوس ورسالة الماجستير في مشاريع البيانات، وما الذي تطلبه اللجنة في كل منهما.
- بطاقة الفكرة Idea Card: ثمانية أسئلة تجيب عنها قبل أن تعرض الفكرة، ومن أين تأتي البيانات.
- ثماني أفكار للبكالوريوس وست أفكار للماجستير، لكل فكرة بطاقة فيها المشكلة والمستخدم والنطاق والأدوات والبيانات الحقيقية وطريقة التقييم والصعوبة والخطر الذي يقتلها وكيف تتميز.
- الأفكار المستهلكة التي ملت منها اللجان، وكيف تحول واحدة منها إلى مشروع حقيقي.
- جدول مقارنة لكل الأفكار.
- تجربة عملية Lab: اختبار جدوى Feasibility Spike لفكرة واحدة على بيانات حقيقية وعلى المعالج فقط CPU، بنتائج مقاسة، والمشكلة التي ظهرت، وأربع تجارب «ماذا يحدث إذا».
- أخطاء شائعة، وقائمة تحقق قبل أن ترسل الأفكار للمشرف.

ولن نكرر هنا خطوات المشروع من المقترح إلى المناقشة، ولا أفكار تخصصات الحوسبة الأخرى، فلكل تخصص مقال مستقل في نفس المرحلة، وهنا نبقى في الأفكار التي يكون قلبها البيانات والنموذج والتقييم.

## البكالوريوس Bachelor أم الماجستير Master: ما الفرق في مشروع البيانات؟

قبل أن تكتب أي فكرة عليك أن تعرف ما الذي ستحاسب عليه، لأن نفس الموضوع يمكن أن يكون مشروع بكالوريوس جيداً ورسالة ماجستير ضعيفة، والعكس. لنأخذ مثالاً: «تصنيف الرسائل العربية حسب نوعها». في البكالوريوس السؤال هو: هل يستطيع فريق من ثلاثة إلى خمسة طلاب في فصلين دراسيين أن يبني نظاماً يعمل على بيانات حقيقية، وأن يقيس أنه يعمل، وأن يشرح لماذا اختار كل قرار؟ وفي الماجستير السؤال مختلف تماماً: ما الذي لا يعرفه الباحثون بعد عن تصنيف الرسائل العربية، وما الدليل الذي تقدمه أنت؟ والصورة التالية تبين الفرق:

![عمودان: مشروع البكالوريوس لفريق من 3 إلى 5 في فصلين بخمس خطوات هي مشكلة ومستخدم حقيقي، وبيانات متاحة الآن، وخط أساس ثم نموذج أفضل، ومنتج يعمل، وتقييم، والمخرج نظام يعمل وتقرير. ورسالة الماجستير لباحث واحد بخمس خطوات هي سؤال بحث، والأعمال السابقة، والإضافة، وتجارب مضبوطة، وتقييم قابل للإعادة، والمخرج إجابة مدعومة بالأرقام وورقة علمية](https://arabroot.io/content/images/2026/11/grad-projects-ds-ai-01-levels.webp)

نفس فكرة البيانات تصلح للمستويين، والفرق في السؤال الذي تجيب عنه وفي طريقة إثبات الإجابة

في مشروع البكالوريوس تقيم اللجنة في الغالب أربعة أشياء: أن المشكلة حقيقية ولها مستخدم، وأن الفريق عمل على بيانات حقيقية وليس على عشرين مثالاً كتبها بنفسه، وأن هناك خط أساس Baseline بسيطاً قاس الفريق عليه كل تحسين، وأن هناك منتجاً يعمل Demo يجربه أحد أعضاء اللجنة بنفسه. ولاحظ أن «النموذج الأفضل في العالم» ليس من هذه الأربعة، فاللجنة لا تنتظر منك أن تتفوق على أفضل نتيجة منشورة، وإنما أن تعرف أين تقف نتيجتك من خط الأساس ولماذا. وكثير من الفرق تخسر الدرجات لأنها تعرض دقة 95% دون أن تذكر أن تصنيف كل شيء في الصنف الأكثر تكراراً يعطي 90%، وسوف ترى هذا بالأرقام في التجربة العملية.

أما في الماجستير فالمطلوب أربعة أشياء أخرى: سؤال بحث واحد قابل للقياس، ومراجعة للأعمال السابقة Related Work تبين أين توقف غيرك، وإضافة Novelty واضحة سواء كانت طريقة جديدة أو بيانات جديدة أو تقييماً لم يجر بعد، ثم تجارب مضبوطة Experiments بخطوط أساس قوية وتكرار ببذور عشوائية مختلفة Seeds حتى تعرف هل الفرق حقيقي أم صدفة. والإضافة في رسائل البيانات لا يشترط أن تكون نموذجاً جديداً، فكثير من الرسائل الجيدة إضافتها مجموعة بيانات عربية لم تكن موجودة، أو تقييم يكشف أن نموذجاً مشهوراً يفشل في اللهجات، وهذا النوع مناسب جداً للطالب السعودي لأن البيانات العربية ما زالت قليلة. وإذا كنت في هذه المرحلة فاقرأ قبل البدء مقال [كيف تجد الفجوة البحثية Research Gap](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%AC%D8%AF-%D8%A7%D9%84%D9%81%D8%AC%D9%88%D8%A9-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB%D9%8A%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%A7%D8%AF%D8%A8%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D9%84%D9%85%D9%8A%D8%A9/)، لأن السؤال يأتي من الفجوة وليس من الأداة.

وقد يتساءل البعض: لماذا لا أقدم في الماجستير نفس مشروع البكالوريوس بنموذج أكبر؟ والإجابة أن النموذج الأكبر لا يجيب عن سؤال، وإنما يغير رقماً، واللجنة سوف تسألك: لماذا تحسن الرقم، وهل كان سيتحسن بنموذج أكبر آخر، وما الذي تعلمناه؟ فإذا لم يكن لديك إجابة فقد قدمت تجربة وليس بحثاً.

## بطاقة الفكرة Idea Card: ثمانية أسئلة قبل أن تعرضها

الآن نعود إلى مجموعة الفريق. بدلاً من أن تكتبوا ثلاثة عناوين، اكتبوا لكل فكرة بطاقة من ثمانية حقول، وهي نفس الحقول التي كتبنا بها كل فكرة في هذا المقال. والسبب أن المشرف عندما يقرأ العنوان «نظام ذكي لتحليل البيانات الصحية» لا يعرف هل لديكم بيانات، ولا كيف ستقيسون النجاح، أما البطاقة فتجيب عن هذه الأسئلة قبل أن يسألها. والصورة التالية تبين الحقول، ومعها خطة أسبوع واحد لاختبار الجدوى:

![ثمانية مربعات هي المشكلة، ومن يستخدمها، والنطاق Scope، والأدوات Stack، والبيانات Data، والتقييم Evaluation، والخطر الذي يقتلها، وكيف تتميز، وتحتها خطة أسبوع لاختبار الجدوى: اليوم الأول تحميل البيانات وقراءة 20 سجلاً، والثاني عد الأصناف والقيم الناقصة والتكرار، والثالث خط أساس بسيط، والرابع نموذج صغير على CPU، والخامس صفحة نتائج](https://arabroot.io/content/images/2026/11/grad-projects-ds-ai-02-card.webp)

البطاقة تجيب عن أسئلة المشرف قبل أن يسألها، واختبار الأسبوع يثبت أن الفكرة ممكنة قبل المقترح

وفيما يلي معنى كل حقل وما الذي نقصده به:

- **المشكلة:** جملة واحدة يفهمها شخص من خارج التخصص، مثل «موظف خدمة العملاء يقرأ آلاف الرسائل ولا يعرف أيها يحتاج رداً عاجلاً». إذا احتجت إلى مصطلح تقني لتشرح المشكلة فأنت تشرح الحل.
- **من يستخدمها:** دور وظيفي محدد، وما القرار الذي سيتخذه بالنتيجة. «المجتمع» ليس مستخدماً، و«مشرف الجودة في مركز الاتصال» مستخدم.
- **النطاق Scope:** ما الذي يدخل في الفصلين وما الذي يبقى خارجهما. والنطاق الجيد لفريق من ثلاثة أصغر بكثير مما تتوقع.
- **الأدوات Stack:** اللغة والمكتبات والنماذج، والأهم: هل يكفي المعالج CPU أم تحتاج بطاقة رسوميات GPU، ومن أين ستحصل عليها.
- **البيانات Data:** رابط حقيقي فتحته بنفسك، والرخصة License، والحجم. وكل رابط في هذا المقال فتحناه وتأكدنا أنه يعمل في نوفمبر 2026.
- **التقييم Evaluation:** المقياس Metric المناسب، وخط الأساس، وهل هناك تجربة مستخدمين User Study.
- **الخطر الذي يقتلها:** أكثر سبب واقعي يجعل المشروع يتوقف في الفصل الثاني. كتابة هذا الحقل بصدق هي أكثر ما يقنع المشرف بأنك فكرت في الفكرة.
- **كيف تتميز:** الإضافة التي تجعل اللجنة تتذكر مشروعك بعد أن ترى عشرين مشروعاً في نفس اليوم.

أما اختبار الجدوى Feasibility Spike فهو أسبوع واحد تحمل فيه البيانات فعلاً وتبني خط أساس صغيراً قبل كتابة المقترح، والهدف منه ليس النتيجة النهائية وإنما أن تكتشف الخطر الحقيقي مبكراً. وسوف نطبقه في التجربة العملية على فكرة واحدة من القائمة، وسوف ترى أن الخطر الذي ظهر لم يكن الذي توقعناه.

## من أين تأتي البيانات Data Sources؟

أغلب أفكار البيانات تموت في سؤال واحد: «من أين البيانات؟». والطالب في الغالب يفكر في بيانات جهة حكومية أو مستشفى، ثم يكتشف في الفصل الثاني أن الوصول إليها يحتاج موافقات لن تصل قبل المناقشة. لذلك رتبنا المصادر من الأسهل إلى الأصعب، وبنينا الأفكار عليها:

- **المستودعات العامة للبيانات العلمية:** [Hugging Face Datasets](https://huggingface.co/datasets?ref=arabroot.io) لمجموعات النصوص والكلام العربية، و[مستودع UCI](https://archive.ics.uci.edu/?ref=arabroot.io) للبيانات الجدولية الموثقة، و[Kaggle](https://www.kaggle.com/datasets?ref=arabroot.io) ومنها مجموعات نشرتها جهات سعودية. والميزة هنا أن الرخصة مكتوبة والتحميل مباشر.
- **فهارس البيانات العربية:** [Masader](https://arbml.github.io/masader/?ref=arabroot.io) من مجتمع ARBML، وهو فهرس يضم بحسب [صفحة المشروع](https://github.com/ARBML/masader?ref=arabroot.io) أكثر من 600 مجموعة بيانات عربية للنصوص والكلام، ولكل مجموعة أكثر من 25 حقلاً وصفياً منها اللهجة والرخصة والمصدر. ابدأ منه قبل أي بحث في Google.
- **البيانات المفتوحة السعودية:** [منصة البيانات المفتوحة](https://open.data.gov.sa/?ref=arabroot.io) الوطنية، و[الهيئة العامة للإحصاء GASTAT](https://www.stats.gov.sa/en/?ref=arabroot.io) ومنها مثلاً [إحصاءات الحج](https://www.stats.gov.sa/en/w/hajj-statistics?ref=arabroot.io)، و[بوابة بيانات KAPSARC](https://datasource.kapsarc.org/?ref=arabroot.io) لبيانات الطاقة والاقتصاد. وهذه البيانات في الغالب إحصاءات مجمعة سنوية أو شهرية، أي أنها ممتازة للسياق والتحليل وضعيفة لتدريب نموذج يحتاج آلاف السجلات.
- **النماذج العربية المفتوحة:** مثل [ALLaM-7B-Instruct-preview](https://huggingface.co/ALLaM-AI/ALLaM-7B-Instruct-preview?ref=arabroot.io) من المركز الوطني للذكاء الاصطناعي في سدايا SDAIA، برخصة Apache 2.0 وسياق 4096 توكن، وهو مفيد كنموذج تقيمه أو تبني عليه.
- **بيانات تجمعها بنفسك:** استبيان، أو تسجيلات صوتية بموافقة أصحابها، أو توسيم Labeling لنصوص عامة. وهذا أصعب طريق، ولكنه أكثر ما يميز المشروع، بشرط أن تبدأ بموافقة لجنة الأخلاقيات إذا كانت البيانات من بشر، كما في مقال [أخلاقيات البحث على البشر](https://arabroot.io/articles/%D8%A7%D8%AE%D9%84%D8%A7%D9%82%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%A8%D8%B4%D8%B1-%D9%85%D9%86-%D9%84%D8%AC%D9%86%D8%A9-irb-%D8%A7%D9%84%D9%89-%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/)، وأن تلتزم بنظام حماية البيانات الشخصية كما في مقال [حماية البيانات الشخصية PDPL](https://arabroot.io/articles/%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%AE%D8%B5%D9%8A%D8%A9-pdpl-%D9%84%D9%84%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9/).

⚠️

اقرأ الرخصة قبل أن تبني المشروع على البيانات. بعض المجموعات العربية المشهورة برخصة غير تجارية NonCommercial، وبعضها لا يذكر رخصة أصلاً، وبعضها يطلب تسجيلاً أو توقيع اتفاقية استخدام. ومشروع التخرج استخدام أكاديمي في الغالب، ولكن إذا كان الفريق يفكر في تحويله إلى شركة ناشئة بعد التخرج فالرخصة غير التجارية تعني أن عليه أن يجمع بياناته من جديد.

## أفكار البكالوريوس Bachelor: ثماني أفكار لفريق من 3 إلى 5

كل فكرة في هذا القسم مصممة لفريق من ثلاثة إلى خمسة طلاب في فصلين دراسيين: الفصل الأول للبيانات وخط الأساس والمقترح، والفصل الثاني للنموذج والمنتج والتقييم. وكل فكرة تنتهي بمنتج يعمل يجربه شخص من خارج الفريق، لأن هذا ما يميز مشروع البكالوريوس عن واجب مقرر تعلم الآلة.

### B1: فرز رسائل المستفيدين العربية Message Triage

**Project title:** Triage of Arabic Customer Service Messages

جهة خدمية تستقبل آلاف الرسائل يومياً في قنوات التواصل والبريد، وأغلبها تعليقات وآراء، والقليل منها سؤال ينتظر إجابة أو طلب يحتاج إجراء. والمشكلة أن هذا القليل يضيع بين الكثير، فيتأخر الرد على من يحتاجه فعلاً. والفكرة نموذج يصنف كل رسالة عربية حسب ما تحتاجه: سؤال، أو طلب، أو شكوى، أو رأي لا يحتاج رداً، ثم لوحة ترتب الرسائل لموظف الخدمة.

- **المستخدم:** موظف خدمة العملاء ومشرف الجودة في مركز الاتصال.
- **النطاق:** مصنف واحد للنصوص، وواجهة ترتيب بسيطة، وتقرير أخطاء أسبوعي. الردود الآلية خارج النطاق.
- **الأدوات:** Python وscikit-learn لخط الأساس، ثم نموذج عربي مدرب مسبقاً من Hugging Face للتحسين، وFastAPI للخدمة.
- **البيانات:** [ArSAS](https://huggingface.co/datasets/Qanadil/ArSAS%5FAn%5FArabic%5FSpeech-Act%5Fand%5FSentiment%5FCorpus%5Fof%5FTweets?ref=arabroot.io)، وفيها تغريدات عربية موسومة بأفعال الكلام Speech Acts والمشاعر، ثم عينة يوسمها الفريق بنفسه بلهجة المستخدمين. وهناك [LUB-Saudi-Arabic-Intent](https://huggingface.co/datasets/NABA-AI/LUB-Saudi-Arabic-Intent?ref=arabroot.io) بلهجة سعودية وفيها حقول للشكوى وخطر التصعيد، ولكن صفحتها تذكر بوضوح أن أمثلتها الـ 1,500 مولدة آلياً Synthetic، أي أنها تصلح لتجربة الكود وليس لتقييم النموذج.
- **التقييم:** متوسط F1 على الأصناف Macro-F1 وقيمة F1 لكل صنف، واختبار على موضوع لم يره النموذج، وتجربة مع موظفين حقيقيين تقيس الوقت حتى أول رد.
- **الصعوبة:** متوسطة.
- **الخطر الذي يقتلها:** الأصناف المهمة نادرة، فالنموذج يحصل على دقة عالية وهو لا يكتشف الطلبات أصلاً. وهذا ما ظهر بالأرقام في التجربة العملية.
- **كيف تتميز:** خطة توسيم بلهجة المستخدمين مع قياس الاتفاق بين الموسمين، ونشر العينة الموسومة برخصة مفتوحة.

### B2: البحث الدلالي في الأنظمة واللوائح السعودية Semantic Search

**Project title:** Semantic Search over Saudi Laws and Regulations

الأنظمة واللوائح منشورة للعامة في [منصة هيئة الخبراء بمجلس الوزراء](https://laws.boe.gov.sa/BoeLaws/Laws/Folders?ref=arabroot.io)، ولكن البحث فيها بالكلمات يفشل عندما يكتب المستخدم السؤال بلغته: «كم يوم إجازة الأمومة؟» بينما النص يقول «تستحق العاملة إجازة وضع». والفكرة محرك بحث يفهم المعنى، يعيد المادة النظامية الصحيحة مع رقمها ورابطها، ويعرض النص كما هو دون أن يؤلف إجابة.

- **المستخدم:** الموظف في الموارد البشرية، والطالب في كلية الأنظمة، والمواطن الذي يبحث عن حقه.
- **النطاق:** نظام واحد أو ثلاثة أنظمة فقط، مثل نظام العمل، وليس كل الأنظمة. والإجابة التوليدية خارج النطاق في البكالوريوس.
- **الأدوات:** نموذج Embeddings متعدد اللغات، وقاعدة متجهات، ومقارنة مع البحث بالكلمات BM25\. والشرح في مقالي [البحث الدلالي بالـ Embeddings](https://arabroot.io/articles/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D8%A7%D9%84%D8%AF%D9%84%D8%A7%D9%84%D9%8A-semantic-search-%D8%A8%D8%A7%D9%84-embeddings/) و[البحث في النصوص العربية](https://arabroot.io/articles/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D9%81%D9%8A-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9-%D9%85%D8%B9-opensearch-%D9%88-meilisearch/).
- **البيانات:** نصوص الأنظمة من المنصة الرسمية، مع مراجعة شروط الاستخدام قبل الجمع، ثم 150 سؤالاً يكتبها الفريق مع طالب أنظمة ويحدد لكل سؤال المادة الصحيحة.
- **التقييم:** الاستدعاء في أول خمس نتائج Recall@5 ومتوسط الترتيب العكسي MRR، مقارنة بالبحث بالكلمات.
- **الصعوبة:** متوسطة.
- **الخطر الذي يقتلها:** المواد المعدلة. النظام يعدل بقرارات لاحقة، فإذا أعاد البحث نصاً قديماً فقد أعطى المستخدم معلومة خاطئة بثقة.
- **كيف تتميز:** عرض تاريخ آخر تعديل لكل مادة، ونشر مجموعة الأسئلة والإجابات كمعيار تقييم Benchmark صغير.

### B3: إنذار مبكر لتعثر الطلاب Early Warning

**Project title:** Early Warning System for At-Risk Students

عمادة شؤون الطلاب تعرف أن الطالب تعثر بعد أن يحصل على إنذار أكاديمي، أي بعد فوات الوقت. والفكرة نموذج يتوقع الطلاب المعرضين للتعثر أو الانسحاب من بيانات أول فصلين، ولوحة للمرشد الأكاديمي تعرض الأسباب الأكثر تأثيراً لكل طالب.

- **المستخدم:** المرشد الأكاديمي ووكالة شؤون الطلاب.
- **النطاق:** نموذج جدولي، وتفسير لكل توقع، ولوحة عرض. والتدخل نفسه قرار بشري خارج النطاق.
- **الأدوات:** pandas وscikit-learn وXGBoost، وSHAP للتفسير، وStreamlit للوحة.
- **البيانات:** مجموعة [Predict Students' Dropout and Academic Success](https://archive.ics.uci.edu/dataset/697/predict+students+dropout+and+academic+success?ref=arabroot.io) في UCI، وفيها 4,424 طالباً و36 خاصية من مؤسسة تعليم عال أوروبية. والبيانات الحقيقية من جامعتك ممكنة فقط بموافقة رسمية ولجنة أخلاقيات وإخفاء للهوية.
- **التقييم:** المساحة تحت المنحنى AUC، والاستدعاء Recall في أعلى 10% من القائمة لأن المرشد لا يستطيع مقابلة الجميع، وفحص العدالة Fairness بين الجنسين والفئات العمرية.
- **الصعوبة:** منخفضة إلى متوسطة، وهي أنسب فكرة لفريق يريد مشروعاً آمناً.
- **الخطر الذي يقتلها:** تسرب البيانات Data Leakage. بعض الخصائص تعرف بعد التعثر نفسه، مثل درجات الفصل الثاني عند التنبؤ في الفصل الأول، فيعطي النموذج نتيجة ممتازة لا تفيد أحداً.
- **كيف تتميز:** جدول يبين متى تصبح كل خاصية معروفة، وتقرير عدالة صريح، ومحاكاة لعدد الطلاب الذين يمكن الوصول إليهم مبكراً.

### B4: تلخيص الأخبار العربية Abstractive Summarization

**Project title:** Abstractive Summarization of Arabic News

القارئ العربي يقرأ العنوان ثم يغادر، والمحرر يكتب الملخص يدوياً لكل خبر. والفكرة نظام يلخص الخبر العربي في جملتين، ويقارن التلخيص الاستخراجي Extractive الذي يختار جملاً من النص بالتلخيص التوليدي Abstractive الذي يكتب جملاً جديدة.

- **المستخدم:** محرر الأخبار وفريق المحتوى في أي جهة تنشر نصوصاً طويلة.
- **النطاق:** الأخبار فقط، وطول ثابت للملخص، وواجهة تعرض الملخص بجانب النص.
- **الأدوات:** خط أساس استخراجي على CPU، ثم نموذج mT5 صغير أو نموذج لغة عبر API للتوليد.
- **البيانات:** [XL-Sum](https://github.com/csebuetnlp/xl-sum?ref=arabroot.io)، وفيها للعربية من BBC عربي 37,519 مثالاً للتدريب و4,689 للتحقق و4,689 للاختبار، ومعها نتيجة مرجعية لنموذج mT5 هي ROUGE-1 بقيمة 34.91.
- **التقييم:** مقاييس ROUGE، ثم تقييم بشري لخمسين خبراً يجيب عن سؤالين: هل الملخص صحيح، وهل فيه معلومة غير موجودة في الخبر.
- **الصعوبة:** متوسطة.
- **الخطر الذي يقتلها:** أن تعتمد على ROUGE وحده، فالملخص يمكن أن يحصل على رقم جيد وفيه رقم أو اسم مختلق.
- **كيف تتميز:** عد المعلومات المختلقة Hallucinations يدوياً، ومقارنة صريحة بين الطريقتين في الصحة وليس في ROUGE فقط.

### B5: قراءة الخط العربي المكتوب باليد Handwritten OCR

**Project title:** Arabic Handwritten Text Recognition

أرشيفات الجامعات والمحاكم والبلديات مليئة بنماذج مكتوبة باليد، وأدوات استخراج النص OCR المجانية تعمل جيداً مع الطباعة وتتعثر مع الخط اليدوي العربي لأن الحروف متصلة وأشكالها تتغير بموقعها. والفكرة نموذج يقرأ سطراً عربياً مكتوباً باليد ويحوله إلى نص.

- **المستخدم:** موظف الأرشفة ومشاريع رقمنة الوثائق.
- **النطاق:** سطر واحد في كل مرة، بعد قص السطور، وليس صفحة كاملة بتخطيطها.
- **الأدوات:** خط أساس Tesseract كما في مقال [استخراج النص العربي OCR مع Tesseract](https://arabroot.io/articles/%D8%A7%D8%B3%D8%AA%D8%AE%D8%B1%D8%A7%D8%AC-%D8%A7%D9%84%D9%86%D8%B5-%D9%85%D9%86-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-%D9%88%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA-ocr-%D9%85%D8%B9-tesseract/)، ثم نموذج يتعرف على السطر كاملاً مثل CRNN أو نموذج Transformer صغير، ويحتاج GPU للتدريب.
- **البيانات:** نسخة [KHATT v1.0](https://huggingface.co/datasets/Teklia/KHATT%5Fv1.0?ref=arabroot.io) المنشورة من Teklia، وفيها 4,672 سطراً للتدريب و963 للتحقق و1,038 للاختبار، والأصل من جامعة الملك فهد للبترول والمعادن.
- **التقييم:** معدل خطأ الحروف CER ومعدل خطأ الكلمات WER، مقارنة بـ Tesseract.
- **الصعوبة:** عالية.
- **الخطر الذي يقتلها:** الحوسبة. بدون GPU لعدة أيام لن تصل إلى نتيجة تستحق العرض، فاسأل عن موارد الجامعة قبل اختيارها.
- **كيف تتميز:** تحليل الأخطاء حسب شكل الحرف وموقعه، وتجربة على نماذج حقيقية من أرشيف الكلية بإذن رسمي.

### B6: تقدير كثافة الحشود من الصور Crowd Counting

**Project title:** Crowd Density Estimation from Images

في مواسم الحج والعمرة وفي الفعاليات الكبرى يحتاج فريق إدارة الحشود إلى رقم: كم شخصاً في هذه المنطقة الآن، وهل تقترب من الحد الآمن؟ والعد اليدوي من الكاميرات مستحيل. والفكرة نموذج يقدر عدد الأشخاص وخريطة الكثافة Density Map من صورة كاميرا ثابتة، ويطلق تنبيهاً عند تجاوز حد معين.

- **المستخدم:** مركز عمليات الحشود في المواسم والفعاليات.
- **النطاق:** صور ثابتة وليس فيديو مباشراً، وتنبيه بسيط بحد ثابت.
- **الأدوات:** PyTorch ونموذج كثافة مثل CSRNet مدرب مسبقاً، والشرح الأساسي في مقال [الرؤية الحاسوبية للمبتدئين](https://arabroot.io/articles/%D8%A7%D9%84%D8%B1%D8%A4%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D9%8A%D8%A9-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-computer-vision/).
- **البيانات:** معيار [NWPU-Crowd](https://github.com/gjy3035/NWPU-Crowd-Sample-Code?ref=arabroot.io) مع كوده الرسمي، و[CrowdHuman](https://www.crowdhuman.org/?ref=arabroot.io) للحشود الأقل كثافة، و[إحصاءات الحج](https://www.stats.gov.sa/en/w/hajj-statistics?ref=arabroot.io) من الهيئة العامة للإحصاء للسياق وليس للتدريب.
- **التقييم:** متوسط الخطأ المطلق MAE في العدد، وخطأ التنبيه: كم مرة تجاوز العدد الحد ولم ينبه النظام.
- **الصعوبة:** عالية.
- **الخطر الذي يقتلها:** اختلاف المجال Domain Shift. الحشود في المعايير العامة تختلف في اللباس والزاوية والكثافة عن حشود المشاعر، والصور الحقيقية من المواسم لا تصل إلى الطالب بسهولة.
- **كيف تتميز:** فحص حساسية النموذج لزاوية الكاميرا والإضاءة، وتصميم يحفظ الخصوصية لأنه يعد ولا يتعرف على أحد.

### B7: فرز صور الأشعة الصدرية Chest X-ray

**Project title:** Chest X-ray Image Triage

طبيب الأشعة في مستشفى مزدحم يقرأ مئات الصور يومياً، وبعض الحالات العاجلة تنتظر دورها خلف حالات سليمة. والفكرة نموذج يرتب الصور حسب احتمال وجود التهاب رئوي Pneumonia، ويعرض للطبيب المنطقة التي اعتمد عليها النموذج.

- **المستخدم:** طبيب الأشعة وقسم الطوارئ، والقرار النهائي دائماً للطبيب.
- **النطاق:** تصنيف ثنائي، وخريطة تفسير مثل Grad-CAM، وواجهة ترتيب.
- **الأدوات:** PyTorch ونموذج صور مدرب مسبقاً مع ضبط دقيق Fine-tuning، ويكفي GPU صغير أو حتى CPU لنموذج صغير.
- **البيانات:** [Chest X-Ray Images (Pneumonia)](https://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia?ref=arabroot.io) وفيها 5,863 صورة في صنفين، ثم [ChestX-ray14](https://nihcc.app.box.com/v/ChestXray-NIHCC?ref=arabroot.io) من المعاهد الوطنية للصحة الأمريكية لاختبار النموذج على بيانات من مصدر آخر.
- **التقييم:** الحساسية Sensitivity والنوعية Specificity عند حد يحدده الطبيب، ومراجعة طبيب لخرائط التفسير في عينة من الصور.
- **الصعوبة:** متوسطة.
- **الخطر الذي يقتلها:** التعلم من الاختصارات Shortcut Learning. النموذج قد يتعلم علامة الجهاز أو مكان الكتابة على الصورة بدلاً من الرئة، فينجح في الاختبار ويفشل في مستشفى آخر.
- **كيف تتميز:** اختبار على مصدر ثان، وتقرير يبين أين ينظر النموذج، وشراكة مع طبيب يراجع النتائج. والأمثلة الواقعية لنجاح وفشل هذا النوع في مقال [الترميز الطبي بالذكاء الاصطناعي](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%B1%D9%85%D9%8A%D8%B2-%D8%A7%D9%84%D8%B7%D8%A8%D9%8A-%D8%A8%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/).

### B8: مساهمة مفتوحة المصدر في تقييم النماذج العربية Open Source

**Project title:** Open Source Contribution to Arabic Language Model Evaluation

مشروع التخرج لا يشترط أن يكون منتجاً جديداً، فيمكن أن يكون مساهمة حقيقية في مشروع مفتوح المصدر يستخدمه آلاف الباحثين. والفكرة أن يضيف الفريق مهام تقييم عربية أو يحسن الموجود منها في [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness?ref=arabroot.io)، وهو إطار تقييم نماذج اللغة الذي يضم بالفعل مهاماً عربية مثل [ArabicMMLU](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm%5Feval/tasks/arabicmmlu?ref=arabroot.io) و[AlGhafa](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm%5Feval/tasks/alghafa?ref=arabroot.io)، ثم يقيم ثلاثة نماذج مفتوحة عليها.

- **المستخدم:** الباحثون والشركات الذين يختارون نموذجاً عربياً.
- **النطاق:** مهمة أو مهمتان جديدتان مع اختباراتهما، وتقرير مقارنة لثلاثة نماذج صغيرة.
- **الأدوات:** Python وGit وطريقة عمل المشروع في طلبات الدمج Pull Requests.
- **البيانات:** [ArabicMMLU](https://huggingface.co/datasets/MBZUAI/ArabicMMLU?ref=arabroot.io) وفيها 14,575 سؤالاً من المدرسة إلى الجامعة، ومجموعة جديدة يجمعها الفريق مثل أسئلة اختبارات عامة منشورة بإذن، أو إضافة بيانات وصفية لمجموعات ناقصة في Masader.
- **التقييم:** طلبات الدمج المقبولة Merged، والاختبارات، وتقرير المقارنة.
- **الصعوبة:** متوسطة، والصعب فيها التواصل مع المشرفين على المشروع وليس الكود.
- **الخطر الذي يقتلها:** أن ينتظر الفريق قبول طلب الدمج حتى أسبوع المناقشة، فابدأ بمساهمة صغيرة في الشهر الأول.
- **كيف تتميز:** اسمك في سجل المساهمين لمشروع يعرفه كل من يعمل في نماذج اللغة، وهذا سطر قوي في السيرة الذاتية.

وهناك أفكار قريبة لم نكتب لها بطاقة لأنها تتكرر في خطط كثيرة، مثل كشف الاحتيال في المدفوعات، ومجموعته العامة الأشهر [PaySim](https://www.kaggle.com/datasets/ealaxi/paysim1?ref=arabroot.io) مولدة بالمحاكاة، أما البيانات المالية الحقيقية فلا تصل إلى الطالب إلا عبر شريك في التقنية المالية يعمل ضمن البيئة التجريبية التنظيمية للبنك المركزي السعودي، وهذا يحتاج اتفاقية قبل أن يحتاج نموذجاً.

## أفكار الماجستير Master: ستة أسئلة بحث Research Questions

أفكار الماجستير مكتوبة بصيغة سؤال، لأن الرسالة تبدأ من السؤال وليس من النظام. ولكل سؤال مكان واضح للإضافة، ومجموعة بيانات حقيقية، وطريقة تقييم قابلة للإعادة. وقبل أن تختار واحدة منها اقرأ مقال [البحث القابل لإعادة الإنتاج](https://arabroot.io/articles/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D8%A7%D9%84%D9%82%D8%A7%D8%A8%D9%84-%D9%84%D8%A7%D8%B9%D8%A7%D8%AF%D8%A9-%D8%A7%D9%84%D8%A7%D9%86%D8%AA%D8%A7%D8%AC-%D9%85%D8%B9-jupyter-%D9%88-git-%D9%88-docker/)، لأن رسالة لا يستطيع غيرك إعادة نتائجها تفقد نصف قيمتها.

### M1: متانة النماذج العربية أمام اللهجات Dialect Robustness

**Project title:** Dialect Robustness of Arabic Language Models

**السؤال:** كم تنخفض جودة نموذج عربي مدرب على الفصحى عندما يختبر على اللهجات الخليجية في مهمة محددة، وكم مثالاً باللهجة نحتاج لاستعادة أغلب الفرق؟ والمستخدم هنا كل جهة تبني نظاماً عربياً لمستخدمين يكتبون بلهجتهم وليس بلغة الأخبار.

- **البيانات:** مجموعات المهام المشتركة [NADI](https://nadi.dlnlp.ai/?ref=arabroot.io) لتحديد اللهجة، و[MADAR](https://camel.abudhabi.nyu.edu/madar-shared-task-2019/?ref=arabroot.io) وفيها جمل متوازية بلهجات مدن عربية كثيرة، وكلاهما يطلب تسجيلاً أو موافقة على شروط الاستخدام.
- **التقييم:** Macro-F1 على الفصحى وعلى كل لهجة، ومنحنى تعلم بعدد أمثلة اللهجة، وخمس بذور عشوائية لكل نقطة.
- **الصعوبة:** عالية.
- **الخطر:** أن تتحول الرسالة إلى جدول نتائج دون تفسير. اللجنة تريد أن تعرف لماذا تفشل اللهجة: المفردات، أم الكتابة بالحروف اللاتينية، أم التهجئة غير الموحدة.
- **الإضافة:** تحليل أخطاء حسب الظاهرة اللغوية، ومجموعة اختبار صغيرة جديدة باللهجة السعودية تنشرها مع الرسالة.

### M2: التعرف على الكلام باللهجات السعودية Speech Recognition

**Project title:** Speech Recognition for Saudi Arabic Dialects

**السؤال:** كيف يختلف معدل خطأ الكلمات WER لنماذج التعرف على الكلام ASR المفتوحة بين اللهجات السعودية ومستويات الضجيج، وما أثر ضبط نموذج صغير على ساعات محدودة من اللهجة؟ والتطبيق المباشر هو الوكيل الصوتي الذي شرحناه في مقال [كيف يرد وكيل الذكاء الاصطناعي على المكالمة](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D9%8A%D8%B1%D8%AF-%D9%88%D9%83%D9%8A%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%85%D9%83%D8%A7%D9%84%D9%85%D8%A9/).

- **البيانات:** [SADA](https://www.kaggle.com/datasets/sdaiancai/sada2022?ref=arabroot.io) التي نشرها المركز الوطني للذكاء الاصطناعي في سدايا مع الهيئة السعودية للإذاعة والتلفزيون، وفيها بحسب صفحتها نحو 667 ساعة من أكثر من 57 برنامجاً ومسلسلاً أغلبها باللهجات السعودية، مع 20 ساعة للاختبار والتحقق، برخصة CC BY-NC-SA 4.0 وحجم يقارب 77 جيجابايت. ومعها [Common Voice العربية](https://commonvoice.mozilla.org/ar/datasets?ref=arabroot.io) للمقارنة.
- **التقييم:** WER ومعدل خطأ الحروف CER لكل لهجة ولكل مستوى ضجيج، مع فواصل ثقة Confidence Intervals بإعادة المعاينة Bootstrap.
- **الصعوبة:** عالية.
- **الخطر:** الحجم. 77 جيجابايت من الصوت وتدريب على GPU لأسابيع، لذلك ابدأ بمجموعة الاختبار وحدها لتقييم النماذج الجاهزة، فهذا وحده فصل كامل في الرسالة.
- **الإضافة:** أول مقارنة منشورة لنماذج محددة على SADA حسب اللهجة، أو طريقة لاختيار الساعات الأكثر فائدة للتدريب.

### M3: التشكيل الآلي للنص العربي Diacritization

**Project title:** Automatic Diacritization of Arabic Text

**السؤال:** أين تخطئ نماذج التشكيل الآلي أكثر: في بنية الكلمة أم في علامة آخرها الإعرابية، وهل يتغير الخطأ عندما ينتقل النموذج من النص التراثي إلى النص الحديث؟ والتشكيل مهم لتحويل النص إلى كلام TTS، ولتعليم العربية، ولإزالة اللبس في البحث.

- **البيانات:** [Tashkeela](https://sourceforge.net/projects/tashkeela/?ref=arabroot.io)، وفيها بحسب صفحة المشروع 75.6 مليون كلمة مشكولة أغلبها من كتب التراث، و[نسخة منظفة منها](https://huggingface.co/datasets/Abdou/arabic-tashkeel-dataset?ref=arabroot.io) على Hugging Face.
- **التقييم:** معدل خطأ التشكيل DER ومعدل خطأ الكلمات، كل منهما مع علامة الآخر وبدونها، على مجموعتي اختبار: تراثية وحديثة.
- **الصعوبة:** عالية.
- **الخطر:** تسرب نص الاختبار إلى التدريب، لأن النصوص التراثية تتكرر في كتب كثيرة، فتحصل على رقم ممتاز لأن النموذج حفظ الجملة.
- **الإضافة:** مجموعة اختبار حديثة صغيرة يشكلها متخصص في اللغة، وتحليل أخطاء حسب الباب النحوي.

### M4: أمانة الإجابة في RAG العربي Faithfulness

**Project title:** Answer Faithfulness in Arabic Retrieval-Augmented Generation

**السؤال:** هل يقلل البحث في المستندات RAG من الإجابات المختلقة لنماذج اللغة العربية الصغيرة، وكيف تتغير الأمانة Faithfulness مع جودة البحث؟ وهذا سؤال تحتاجه كل جهة تبني مساعداً فوق وثائقها، وقد شرحنا الفكرة في مقالي [RAG للمبتدئين](https://arabroot.io/articles/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D9%81%D9%8A-%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA%D9%83-%D9%85%D8%B9-rag-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/) و[متى يكون الذكاء الاصطناعي واثقاً ومخطئاً؟](https://arabroot.io/articles/%D9%85%D8%AA%D9%89-%D9%8A%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D8%A7%D8%AB%D9%82%D8%A7-%D9%88%D9%85%D8%AE%D8%B7%D8%A6%D8%A7/).

- **البيانات:** [ARCD](https://huggingface.co/datasets/hsseinmz/arcd?ref=arabroot.io) لأسئلة الفهم القرائي العربية مع فقراتها، و[ArabicMMLU](https://huggingface.co/datasets/MBZUAI/ArabicMMLU?ref=arabroot.io) للمعرفة العامة، ونموذج مثل [ALLaM-7B](https://huggingface.co/ALLaM-AI/ALLaM-7B-Instruct-preview?ref=arabroot.io) وآخر متعدد اللغات للمقارنة.
- **التقييم:** دقة الإجابة، ونسبة الجمل غير المدعومة بالفقرة المسترجعة يقيمها شخصان مستقلان مع قياس اتفاقهما، ثم مقارنة بمقيم آلي LLM-as-a-Judge لمعرفة هل يمكن الوثوق به في العربية.
- **الصعوبة:** عالية.
- **الخطر:** أن يكون التقييم البشري صغيراً جداً، فتكون الفروق بين الأنظمة داخل هامش الخطأ.
- **الإضافة:** معيار عربي صغير للأمانة، وإجابة عن سؤال: هل المقيم الآلي يتفق مع البشر في العربية بنفس درجة اتفاقه في الإنجليزية؟

### M5: التعلم الموحد للبيانات الصحية Federated Learning

**Project title:** Federated Learning for Healthcare Data

**السؤال:** عندما تتدرب عدة مستشفيات على نموذج واحد دون أن تخرج بيانات المرضى من أي منها، كم نخسر من الجودة مقارنة بجمع البيانات في مكان واحد، وكيف تؤثر الفروق بين المستشفيات Non-IID على النتيجة؟ والسؤال مهم في السعودية لأن نظام حماية البيانات الشخصية يقيد نقل البيانات الصحية.

- **البيانات:** مجموعة [Heart Disease](https://archive.ics.uci.edu/dataset/45/heart+disease?ref=arabroot.io) في UCI، وميزتها أنها أربع قواعد بيانات من أربع جهات: Cleveland وHungary وSwitzerland وVA Long Beach، أي أن كل قاعدة تمثل مستشفى حقيقياً بفروقه.
- **التقييم:** AUC لكل جهة في ثلاثة سيناريوهات: كل جهة وحدها، والتعلم الموحد FedAvg، والتدريب المركزي، مع تكرار بخمس بذور.
- **الصعوبة:** متوسطة.
- **الخطر:** صغر البيانات، فبعض الجهات بضع مئات من السجلات، والفروق قد تكون ضجيجاً. لذلك فواصل الثقة إلزامية.
- **الإضافة:** قياس أثر الخصوصية التفاضلية Differential Privacy على كل جهة، وليس على المتوسط فقط.

### M6: التنبؤ بالطلب على الكهرباء بفترات ثقة Conformal Prediction

**Project title:** Electricity Demand Forecasting with Conformal Prediction Intervals

**السؤال:** هل يعطي التنبؤ المطابق Conformal Prediction فترات تنبؤ تغطي القيمة الحقيقية بالنسبة الموعودة فعلاً في أشهر الصيف ذات الطلب المرتفع، أم أن الضمان يضعف عندما يتغير نمط الطلب؟ والمستخدم هو مخطط الشبكة الذي يحتاج «بين كم وكم» وليس رقماً واحداً.

- **البيانات:** [ElectricityLoadDiagrams20112014](https://archive.ics.uci.edu/dataset/321/electricityloaddiagrams20112014?ref=arabroot.io) في UCI وفيها استهلاك 370 عميلاً بالكيلوواط كل 15 دقيقة، ثم سلاسل الاستهلاك الشهرية السعودية من [بوابة KAPSARC](https://datasource.kapsarc.org/?ref=arabroot.io) لاختبار الفكرة على نمط الصيف السعودي.
- **التقييم:** نسبة التغطية الفعلية مقابل الموعودة، ومتوسط عرض الفترة، والخطأ النسبي MAPE مقارنة بخط أساس موسمي بسيط.
- **الصعوبة:** متوسطة.
- **الخطر:** البيانات السعودية المتاحة مجمعة وشهرية، فلا تكفي لتدريب نموذج ساعي، ويجب أن تكتب هذا الحد في الرسالة بوضوح.
- **الإضافة:** تحليل التغطية حسب الموسم، وطريقة تكيف الفترة عندما يتغير النمط.

## الأفكار المستهلكة Overused Ideas: كيف تحولها إلى مشروع حقيقي؟

نعود إلى اقتراحات المجموعة الثلاثة: روبوت المحادثة، ونظام الحضور، وتحليل المشاعر. ولماذا يتنهد المشرف عندما يسمعها؟ ليس لأن الموضوع ممنوع، وإنما لأن هذه المشاريع في الغالب تبنى بنفس الطريقة: نموذج جاهز، وبيانات يكتبها الفريق، وعرض ينجح في يوم المناقشة، ولا سؤال ولا تقييم. واللجنة التي رأت هذا عشر مرات تبحث عن سبب لتتذكر مشروعك، فإذا لم تجد سبباً أعطتك درجة متوسطة. والصورة التالية تبين كيف تتحول كل واحدة منها:

![ثلاثة صفوف: نظام حضور بالتعرف على الوجه يتحول إلى إنذار مبكر لتعثر الطلاب ببيانات UCI 697 ومقياس Recall وفحص العدالة، وروبوت محادثة للجامعة يتحول إلى قياس أمانة الإجابة في RAG عربي بمئتي سؤال من لائحة حقيقية، وتحليل المشاعر في تويتر يتحول إلى فرز الرسائل حسب ما تحتاجه بمقياس Macro-F1 واختبار على موضوع جديد](https://arabroot.io/content/images/2026/11/grad-projects-ds-ai-06-overused.webp)

نفس الاهتمام، ولكن مع سؤال وبيانات حقيقية وطريقة قياس

**نظام الحضور بالتعرف على الوجه:** المشكلة فيه ليست تقنية فقط، فالتعرف على الوجه بيانات حيوية حساسة، والنموذج الجاهز يحل المشكلة قبل أن تبدأ، والقرار الذي يخدمه بسيط: حاضر أو غائب. أما السؤال المهم خلف الحضور فهو: من الطلاب الذين سيتعثرون؟ وهذا ما تفعله الفكرة B3\. وإذا كان القسم يصر على الحضور، فاجعل المشروع عن تحليل أنماط الغياب عبر الفصول وربطها بالنتائج، وليس عن الكاميرا.

**روبوت المحادثة للجامعة Chatbot:** اليوم يستطيع أي شخص أن يضع واجهة فوق نموذج لغة في ساعة، لذلك لم يعد البناء إنجازاً. والمشروع الحقيقي هو أن تقيس: خذ لائحة حقيقية من لوائح الجامعة، واكتب 200 سؤال بإجاباتها الصحيحة مع موظف في عمادة القبول، ثم قارن ثلاثة إعدادات للبحث، وعد كم إجابة اختلق فيها النموذج معلومة. وبهذا الشكل يكون لديك رقم تدافع عنه أمام اللجنة: «النظام أجاب بشكل صحيح في كذا من الأسئلة، واختلق معلومة في كذا، وهذه أمثلة الخطأ»، بدلاً من «النظام يجيب عن أسئلة الطلاب».

**تحليل المشاعر في تويتر Sentiment:** المشكلة في هذا المشروع أن «إيجابي أو سلبي» لا يخدم قراراً في الغالب، فمن الذي سيتصرف لأن 40% من التغريدات سلبية؟ أما «هذه الرسالة سؤال ينتظر رداً» فهي قرار يتخذه موظف الآن. وهذا ما فعلناه في الفكرة B1، واختبرنا جدواها في التجربة العملية التالية.

📌

القاعدة العامة: الفكرة المستهلكة تتحول إلى مشروع حقيقي عندما تضيف إليها ثلاثة أشياء: قراراً يتخذه شخص محدد بالنتيجة، وبيانات لم يكتبها الفريق بنفسه، ومقياساً يمكن أن يأتي سيئاً. فإذا كانت النتيجة لا يمكن أن تفشل في أي تجربة، فأنت لم تقس شيئاً.

## جدول المقارنة Comparison: كل الأفكار في مكان واحد

بعد البطاقات الأربع عشرة نحتاج نظرة واحدة تجمعها، والجدول التالي يضع كل فكرة في صف، والصورة بعده تضعها على محوري الصعوبة وتوفر البيانات:

| الفكرة                                                                                 | المستوى   | الصعوبة | توفر البيانات                  | تحتاج GPU؟    | المهارات التي تتعلمها                                 |
| -------------------------------------------------------------------------------------- | --------- | ------- | ------------------------------ | ------------- | ----------------------------------------------------- |
| B1 فرز رسائل المستفيدينTriage of Arabic Customer Service Messages                      | بكالوريوس | متوسطة  | تبنيها بنفسك (لهجة المستخدمين) | لا لخط الأساس | معالجة النص العربي، والتوسيم، ومقاييس الأصناف النادرة |
| B2 البحث في الأنظمةSemantic Search over Saudi Laws and Regulations                     | بكالوريوس | متوسطة  | تبنيها بنفسك (مجموعة التقييم)  | لا            | Embeddings، والبحث، ومقاييس الاسترجاع                 |
| B3 تعثر الطلابEarly Warning System for At-Risk Students                                | بكالوريوس | منخفضة  | جاهزة                          | لا            | النمذجة الجدولية، والتفسير، والعدالة، وتسرب البيانات  |
| B4 تلخيص الأخبارAbstractive Summarization of Arabic News                               | بكالوريوس | متوسطة  | جاهزة                          | للتوليد فقط   | نماذج التوليد، وROUGE، والتقييم البشري                |
| B5 الخط اليدوي OCRArabic Handwritten Text Recognition                                  | بكالوريوس | عالية   | جاهزة                          | نعم           | الرؤية بالحاسب، والتعرف على التسلسل، وCER             |
| B6 كثافة الحشودCrowd Density Estimation from Images                                    | بكالوريوس | عالية   | بشروط (ليست سعودية)            | نعم           | خرائط الكثافة، واختلاف المجال، والخصوصية              |
| B7 الأشعة الصدريةChest X-ray Image Triage                                              | بكالوريوس | متوسطة  | جاهزة                          | يفضل          | الضبط الدقيق، والتفسير، والاختبار على مصدر ثان        |
| B8 مساهمة مفتوحة المصدرOpen Source Contribution to Arabic Language Model Evaluation    | بكالوريوس | متوسطة  | جاهزة                          | للتقييم فقط   | Git، وطلبات الدمج، وتقييم نماذج اللغة                 |
| M1 متانة اللهجاتDialect Robustness of Arabic Language Models                           | ماجستير   | عالية   | بشروط (تسجيل)                  | نعم           | تصميم التجارب، وتحليل الأخطاء اللغوية                 |
| M2 كلام اللهجات ASRSpeech Recognition for Saudi Arabic Dialects                        | ماجستير   | عالية   | بشروط (77 جيجابايت)            | نعم           | معالجة الكلام، وWER، وفواصل الثقة                     |
| M3 التشكيل الآليAutomatic Diacritization of Arabic Text                                | ماجستير   | عالية   | جاهزة                          | نعم           | نمذجة التسلسل، والتقييم اللغوي                        |
| M4 أمانة RAGAnswer Faithfulness in Arabic Retrieval-Augmented Generation               | ماجستير   | عالية   | جاهزة                          | نعم أو API    | RAG، والتقييم البشري، واتفاق المقيمين                 |
| M5 التعلم الموحدFederated Learning for Healthcare Data                                 | ماجستير   | متوسطة  | بشروط (صغيرة)                  | لا            | FedAvg، والخصوصية التفاضلية، والإحصاء                 |
| M6 التنبؤ بفترات ثقةElectricity Demand Forecasting with Conformal Prediction Intervals | ماجستير   | متوسطة  | جاهزة (السعودية مجمعة)         | لا            | السلاسل الزمنية، وConformal Prediction                |

![شبكة من ثلاثة صفوف للصعوبة عالية ومتوسطة ومنخفضة وثلاثة أعمدة لتوفر البيانات متاحة وجاهزة ومتاحة بشروط وتبنيها بنفسك، وفيها الأفكار الأربع عشرة بلونين للبكالوريوس والماجستير، والخانة المنخفضة الجاهزة فيها فكرة تعثر الطلاب فقط](https://arabroot.io/content/images/2026/11/grad-projects-ds-ai-03-map.webp)

إذا كان الوقت ضيقاً فابدأ من عمود البيانات الجاهزة، وإذا أردت التميز فالعمود الأيسر هو مكانه

في الجدول أعلاه لاحظ التالي:

- فكرة واحدة فقط في خانة «منخفضة وجاهزة»، وهي B3\. وهذا ليس عيباً فيها، وإنما يعني أن تميزها يأتي من التقييم والعدالة وليس من صعوبة النموذج.
- B1 وB2 في عمود «تبنيها بنفسك» رغم وجود بيانات عامة لهما، والسبب أن البيانات العامة تكفي لخط الأساس، أما التقييم الحقيقي فيحتاج بيانات بلغة المستخدم الحقيقي، وهذا عمل الفريق.
- أغلب أفكار الماجستير تحتاج GPU، فاسأل عن موارد الحوسبة في الجامعة قبل اختيار السؤال، وليس بعد قبول المقترح.

## تجربة عملية Lab: اختبار جدوى فكرة فرز الرسائل Message Triage

الآن نطبق اختبار الأسبوع على الفكرة B1 كما سيفعل الفريق قبل إرسالها للمشرف. والسؤال الذي نريد إجابته ليس «ما أفضل نموذج؟»، وإنما: هل يستطيع نموذج بسيط على المعالج CPU أن يميز السؤال والطلب عن بقية الرسائل العربية، وما الخطر الحقيقي في هذه الفكرة؟ والتجربة كلها في Container صغير، ولا تحتاج GPU.

### البيانات: مجموعة ArSAS وأفعال الكلام Speech Acts

اخترنا مجموعة ArSAS التي نشرها AbdelRahim Elmadany وHamdy Mubarak وWalid Magdy في ورشة OSACT 2018 ضمن مؤتمر LREC، ونسختها المنشورة على Hugging Face ملف Parquet بحجم 2.8 ميجابايت فيه 18,678 تغريدة عربية. وكل تغريدة موسومة بفعل الكلام Speech Act، أي ما يفعله الكاتب بجملته: يخبر Assertion، أو يعبر عن رأي أو شعور Expression، أو يسأل Question، أو يطلب Request، أو يوصي Recommendation، أو غير ذلك Miscellaneous. وهذا قريب جداً من سؤال الفرز: السؤال والطلب هما ما يحتاج رداً.

وفي كل تغريدة حقل ثقة Confidence من منصة التوسيم CrowdFlower، وتشرح صفحة المجموعة أن كل تغريدة وسمها ثلاثة أشخاص، وأن الثقة 1 تعني أن الثلاثة اتفقوا، ونحو 0.6 تعني أن اثنين اتفقا، ونحو 0.3 تعني أن كل واحد اختار صنفاً مختلفاً. وسوف نستخدم هذا الحقل في إحدى تجارب «ماذا يحدث إذا». أما حدود هذه البيانات فواضحة: تغريدات عن أحداث وشخصيات عامة في الرياضة والسياسة، وأغلبها ليس باللهجة السعودية، أي أنها تصلح لاختبار الجدوى وخط الأساس، ولا تغني عن عينة من رسائل المستخدمين الحقيقيين.

وأول خطوة تحميل البيانات بسكربت صغير يحفظها خارج مجلد التجربة ويطبع البصمة SHA-256 حتى تعرف أنك تعمل على نفس الملف:

```python
# Downloads the ArSAS corpus (Elmadany, Mubarak, Magdy, OSACT 2018) from its Hugging Face mirror
# into a data folder outside the lab (2.8 MB parquet), and checks its size and SHA-256.
#   python fetch_arsas.py <data-dir>
import hashlib, sys, urllib.request
from pathlib import Path

URL = ("https://huggingface.co/datasets/Qanadil/ArSAS_An_Arabic_Speech-Act_and_Sentiment_Corpus_of_Tweets"
       "/resolve/main/data/train-00000-of-00001.parquet")
out = Path(sys.argv[1] if len(sys.argv) > 1 else "data") / "arsas.parquet"
out.parent.mkdir(parents=True, exist_ok=True)
with urllib.request.urlopen(URL, timeout=60) as r:
    body = r.read()
out.write_bytes(body)
print(f"saved {out} {len(body):,} bytes sha256={hashlib.sha256(body).hexdigest()[:16]}")

```

```bash
python fetch_arsas.py ~/dsai-data

```

```text
saved arsas.parquet 2,822,750 bytes sha256=8d429032e94edb83

```

### البرنامج spike.py: التنظيف Normalization ثم خط الأساس Baseline

البرنامج التالي يقرأ الملف، وينظف النص العربي، ويحذف التكرار، ويقسم البيانات مرة واحدة ثابتة، ثم يجري سبع تجارب كل واحدة في قسم مستقل حتى تستطيع تشغيل أي قسم وحده:

```python
# Feasibility spike for the idea «فرز رسائل المستفيدين العربية Message Triage»:
# can a CPU-only baseline tell a question or a request from a statement in Arabic tweets (ArSAS corpus)?
#   python spike.py /data/arsas.parquet [section]     sections: data, base, imbalance, topic, confidence, binary, curve, all
import re, sys, time
import pandas as pd
from sklearn.dummy import DummyClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, f1_score, classification_report, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline, make_union

SEED = 42
DIAC = re.compile(r"[\u064B-\u0652\u0670\u0640]")          # tashkeel + tatweel

def normalize(t: str) -> str:
    t = re.sub(r"https?://\S+", " URL ", t)
    t = re.sub(r"@\w+", " USER ", t)
    t = DIAC.sub("", t)
    t = re.sub("[إأآٱ]", "ا", t).replace("ى", "ي").replace("ة", "ه")
    t = re.sub(r"(.)\1{2,}", r"\1\1", t)                     # ههههههه -> هه
    return re.sub(r"\s+", " ", t).strip()

def features():
    return make_union(
        TfidfVectorizer(analyzer="word", ngram_range=(1, 2), min_df=2, sublinear_tf=True),
        TfidfVectorizer(analyzer="char_wb", ngram_range=(2, 5), min_df=2, sublinear_tf=True, max_features=200_000))

def model(balanced=False):
    return make_pipeline(features(), LogisticRegression(max_iter=2000, C=4.0,
                                                        class_weight="balanced" if balanced else None))

def report(name, y_true, y_pred, labels):
    print(f"{name:<34} acc={accuracy_score(y_true, y_pred):.3f}  macroF1={f1_score(y_true, y_pred, average='macro', labels=labels, zero_division=0):.3f}")

def fit_eval(name, clf, Xtr, ytr, Xte, yte, labels, detail=False):
    t0 = time.perf_counter(); clf.fit(Xtr, ytr); t1 = time.perf_counter()
    pred = clf.predict(Xte); t2 = time.perf_counter()
    report(name, yte, pred, labels)
    print(f"{'':<34} train {t1 - t0:.1f}s, predict {1000 * (t2 - t1) / len(Xte):.2f} ms per tweet")
    if detail:
        print(classification_report(yte, pred, labels=labels, digits=3, zero_division=0))
        print("confusion (rows=true, cols=pred):", labels)
        for lab, row in zip(labels, confusion_matrix(yte, pred, labels=labels)):
            print(f"  {lab:<15}", " ".join(f"{v:5d}" for v in row))
    return pred

df = pd.read_parquet(sys.argv[1])
section = sys.argv[2] if len(sys.argv) > 2 else "all"
df["text"] = df["Tweet_text"].map(normalize)
ACTS = ["Assertion", "Expression", "Question", "Request", "Recommendation", "Miscellaneous"]

if section in ("data", "all"):
    print("== 1. data")
    print(f"tweets {len(df):,}; exact duplicate texts {df.Tweet_text.duplicated().sum()}; duplicates after normalize {df.text.duplicated().sum()}")
    print(df.Speech_act_label.value_counts().to_string())
    print("share with full agreement (confidence = 1):", f"{(df.Speech_act_label_confidence == 1).mean():.3f}")
    print("tweets with a URL:", f"{df.Tweet_text.str.contains('http').mean():.3f}", " with '?' or '؟':", f"{df.Tweet_text.str.contains('[?؟]').mean():.3f}")

# one fixed split for every experiment, stratified so the rare classes appear in the test set
dd = df.drop_duplicates("text").reset_index(drop=True)
tr, te = train_test_split(dd, test_size=0.2, random_state=SEED, stratify=dd.Speech_act_label)

if section in ("base", "all"):
    print(f"\n== 2. baselines, speech act, train {len(tr):,} / test {len(te):,} (after removing duplicates)")
    fit_eval("majority class", DummyClassifier(strategy="most_frequent"), tr.text, tr.Speech_act_label, te.text, te.Speech_act_label, ACTS)
    qmark = te.Tweet_text.str.contains("[?؟]").map({True: "Question", False: "Expression"})
    report("rule: has '?' -> Question", te.Speech_act_label, qmark, ACTS)
    fit_eval("tf-idf word+char + logistic", model(), tr.text, tr.Speech_act_label, te.text, te.Speech_act_label, ACTS, detail=True)

if section in ("imbalance", "all"):
    print("\n== 3. what if we weight the rare classes (class_weight=balanced)?")
    fit_eval("tf-idf + logistic, balanced", model(True), tr.text, tr.Speech_act_label, te.text, te.Speech_act_label, ACTS, detail=True)

if section in ("topic", "all"):
    print("\n== 4. what if the test tweets come from a topic the model never saw?")
    for held in ["Event", "Entity", "Long_Standing"]:
        a, b = dd[dd.Topic != held], dd[dd.Topic == held]
        fit_eval(f"held-out topic {held} ({len(b):,})", model(True), a.text, a.Speech_act_label, b.text, b.Speech_act_label, ACTS)

if section in ("confidence", "all"):
    print("\n== 5. what if we train only on tweets the three annotators agreed on?")
    sure = tr[tr.Speech_act_label_confidence == 1]
    print(f"train rows with confidence = 1: {len(sure):,} of {len(tr):,}")
    fit_eval("balanced, agreed labels only", model(True), sure.text, sure.Speech_act_label, te.text, te.Speech_act_label, ACTS)
    te_sure = te[te.Speech_act_label_confidence == 1]
    fit_eval("balanced, test on agreed only", model(True), tr.text, tr.Speech_act_label, te_sure.text, te_sure.Speech_act_label, ACTS)

if section in ("binary", "all"):
    print("\n== 6. what if the project only needs one decision: does this message need a reply (Question or Request)?")
    yb_tr = tr.Speech_act_label.isin(["Question", "Request"]).map({True: "needs_reply", False: "other"})
    yb_te = te.Speech_act_label.isin(["Question", "Request"]).map({True: "needs_reply", False: "other"})
    fit_eval("binary, balanced", model(True), tr.text, yb_tr, te.text, yb_te, ["needs_reply", "other"], detail=True)

if section in ("curve", "all"):
    print("\n== 7. how many labelled tweets does the Question class need? (learning curve, balanced)")
    for frac in (0.125, 0.25, 0.5, 1.0):
        part = tr.sample(frac=frac, random_state=SEED) if frac < 1 else tr
        clf = model(True).fit(part.text, part.Speech_act_label)
        pred = clf.predict(te.text)
        f1q = f1_score(te.Speech_act_label, pred, labels=["Question"], average="macro", zero_division=0)
        print(f"train {len(part):>6,} tweets ({(part.Speech_act_label == 'Question').sum():>3} questions): "
              f"Question F1={f1q:.3f}  macroF1={f1_score(te.Speech_act_label, pred, average='macro', labels=ACTS, zero_division=0):.3f}")

```

في البرنامج أعلاه لاحظ التالي:

- الدالة `normalize` تستبدل الروابط وأسماء الحسابات برموز ثابتة، وتحذف التشكيل والتطويل، وتوحد أشكال الألف والياء والتاء المربوطة، وتقصر الحروف المكررة مثل الضحك الطويل إلى حرفين. والسبب أن نفس الكلمة العربية تكتب بأشكال كثيرة، ولو تركناها لعدها النموذج كلمات مختلفة، والشرح الكامل في مقال [معالجة اللغة الطبيعية NLP للعربية](https://arabroot.io/articles/%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%B7%D8%A8%D9%8A%D8%B9%D9%8A%D8%A9-nlp-%D9%84%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9/).
- الدالة `features` تجمع نوعين من الخصائص: كلمات مفردة وأزواج كلمات، وأجزاء من الحروف بطول 2 إلى 5 داخل الكلمة `char_wb`. والأجزاء الحرفية مهمة في العربية لأنها تلتقط السوابق واللواحق دون محلل صرفي، فكلمة «هتعمل» و«سيعمل» تشتركان في «عمل».
- النموذج انحدار لوجستي Logistic Regression، وهو نموذج خطي يتدرب في ثوان على CPU، ونستخدمه كخط أساس لأن أي نموذج أكبر يجب أن يتفوق عليه بفرق واضح حتى يستحق تكلفته.
- نحذف التغريدات المكررة قبل التقسيم وليس بعده، ونقسم بنسبة 80% للتدريب و20% للاختبار مع الحفاظ على نسب الأصناف `stratify`، وبذرة ثابتة `SEED = 42` حتى تخرج نفس الأرقام في كل تشغيل.
- الدالة `fit_eval` تطبع الدقة Accuracy ومتوسط F1 على الأصناف Macro-F1 ووقت التدريب ووقت التنبؤ لكل تغريدة. وMacro-F1 يحسب F1 لكل صنف ثم يأخذ المتوسط دون وزن، أي أن صنف الطلب بـ 30 مثالاً يحسب مثل صنف التعبير بـ 1,991 مثالاً.

والتشغيل في Container من صورة Python 3.13 الرسمية بعد إضافة scikit-learn وpandas وpyarrow، والبيانات مركبة للقراءة فقط:

```docker
# CPU-only image for the feasibility spike: Python 3.13 + scikit-learn + pandas/pyarrow (to read the parquet file)
FROM python:3.13-slim
RUN pip install --no-cache-dir scikit-learn==1.7.2 pandas==2.3.3 pyarrow==21.0.0
WORKDIR /lab

```

```bash
docker build -t grad-dsai-lab .
docker run --rm --name grad-dsai-spike \
  -v "$HOME/dsai-data:/data:ro" -v "$PWD:/lab" \
  grad-dsai-lab python spike.py /data/arsas.parquet all > spike.out

```

### التشغيل والمخرج Output: الدقة Accuracy تخدعك

والمخرج سوف يكون كما يلي، وهذا القسمان الأول والثاني منه:

```text
== 1. data
tweets 18,678; exact duplicate texts 88; duplicates after normalize 123
Speech_act_label
Expression        10027
Assertion          7699
Question            657
Request             150
Recommendation       91
Miscellaneous        54
share with full agreement (confidence = 1): 0.695
tweets with a URL: 0.478  with '?' or '؟': 0.059

== 2. baselines, speech act, train 14,844 / test 3,711 (after removing duplicates)
majority class                     acc=0.537  macroF1=0.116
                                   train 0.0s, predict 0.00 ms per tweet
rule: has '?' -> Question          acc=0.528  macroF1=0.181
tf-idf word+char + logistic        acc=0.865  macroF1=0.398
                                   train 40.7s, predict 0.52 ms per tweet
                precision    recall  f1-score   support

     Assertion      0.877     0.886     0.881      1531
    Expression      0.863     0.917     0.889      1991
      Question      0.641     0.191     0.294       131
       Request      0.667     0.067     0.121        30
Recommendation      1.000     0.111     0.200        18
 Miscellaneous      0.000     0.000     0.000        10

      accuracy                          0.865      3711
     macro avg      0.675     0.362     0.398      3711
  weighted avg      0.857     0.865     0.853      3711

confusion (rows=true, cols=pred): ['Assertion', 'Expression', 'Question', 'Request', 'Recommendation', 'Miscellaneous']
  Assertion        1357   167     3     0     0     4
  Expression        156  1825    10     0     0     0
  Question           18    88    25     0     0     0
  Request             9    18     1     2     0     0
  Recommendation      4    11     0     1     2     0
  Miscellaneous       4     6     0     0     0     0

```

في المخرج أعلاه لاحظ التالي:

- السطر الأول في القسم الأول يكشف 88 تغريدة مكررة حرفياً، وترتفع إلى 123 بعد التنظيف، لأن بعض التغريدات تختلف فقط في رابط أو همزة. ولو تركناها لظهرت نفس التغريدة في التدريب والاختبار، ولحصلنا على رقم أفضل من الحقيقة، لذلك حذفناها قبل التقسيم فأصبح التدريب 14,844 تغريدة والاختبار 3,711.
- توزيع الأصناف هو أهم سطر في التجربة كلها: التعبير 10,027 والخبر 7,699، أما السؤال فـ 657 والطلب 150 والتوصية 91\. أي أن الصنفين اللذين تقوم عليهما فكرة الفرز أقل من 5% من البيانات.
- 69.5% فقط من التغريدات اتفق عليها الموسمون الثلاثة، وهذا يعني أن نحو ثلث الوسوم فيه خلاف بين البشر أنفسهم، وأي نموذج لن يتفوق كثيراً على اتفاق البشر.
- 5.9% فقط من التغريدات فيها علامة استفهام، والقاعدة «إذا وجدت علامة استفهام فهي سؤال» أعطت Macro-F1 بقيمة 0.181، أي أفضل قليلاً من التخمين، لأن كثيراً من الأسئلة العربية في التواصل تكتب بلا علامة، وكثيراً من علامات الاستفهام في جمل تعبيرية وليست أسئلة.
- خط الأساس الأبسط، أي أن نقول عن كل تغريدة إنها تعبير، يعطي دقة 0.537 وMacro-F1 بقيمة 0.116\. واحفظ هذين الرقمين، لأن أي نتيجة يعرضها الفريق يجب أن تقارن بهما.
- الانحدار اللوجستي رفع الدقة إلى 0.865، وهو رقم يبدو ممتازاً في شريحة العرض، ولكن Macro-F1 بقيمة 0.398 فقط. والتقرير لكل صنف يشرح السبب: الخبر والتعبير قرب 0.88، أما السؤال فاستدعاؤه Recall بقيمة 0.191 والطلب 0.067، أي أن النموذج وجد طلبين فقط من 30 طلباً في الاختبار.
- مصفوفة الالتباس Confusion Matrix تبين أين ذهبت الأسئلة: 88 سؤالاً من 131 صنفها النموذج تعبيراً. وهذا منطقي في التغريدات، فكثير من الأسئلة استنكارية، مثل «هل يعقل أن…؟» وهي في الحقيقة رأي.
- التدريب أخذ 40.7 ثانية على 8 أنوية، والتنبؤ نحو نصف ميلي ثانية للتغريدة، أي أن الخدمة تستطيع أن تفرز آلاف الرسائل في الثانية على سيرفر عادي بدون GPU، والحوسبة إذن ليست الخطر في هذه الفكرة.

![أعمدة أفقية لأربعة نماذج بالدقة ومتوسط Macro-F1: الصنف الأكثر 0.537 و0.116، وقاعدة علامة الاستفهام 0.528 و0.181، والانحدار اللوجستي 0.865 و0.398، ومع موازنة الأصناف 0.867 و0.489، وتحتها قيمة F1 لكل صنف قبل الموازنة وبعدها: الخبر 0.88، والتعبير 0.89، والسؤال من 0.29 إلى 0.54، والطلب من 0.12 إلى 0.22، والتوصية من 0.20 إلى 0.18، وأخرى من صفر إلى 0.22](https://arabroot.io/content/images/2026/11/grad-projects-ds-ai-04-results.webp)

الدقة ثابتة تقريباً بين النموذجين، أما Macro-F1 فيبين الفرق الحقيقي في الأصناف التي تهم المستخدم

### المشكلة التي ظهرت: الأصناف النادرة Class Imbalance

عندما بدأنا التجربة توقعنا أن يكون الخطر في اللهجات أو في الحوسبة، ثم ظهر خطر آخر تماماً: النموذج لا يرى الأصناف النادرة لأنها نادرة، فهو يتعلم أن قول «تعبير» أو «خبر» آمن في أغلب الحالات. والحل الأول الذي نجربه هو أن نعطي كل خطأ في صنف نادر وزناً أكبر أثناء التدريب، وهذا ما يفعله الإعداد `class_weight="balanced"`، حيث يصبح وزن الصنف عكس عدد أمثلته. والمخرج سوف يكون كما يلي:

```text
== 3. what if we weight the rare classes (class_weight=balanced)?
tf-idf + logistic, balanced        acc=0.867  macroF1=0.489
                                   train 51.6s, predict 0.52 ms per tweet
                precision    recall  f1-score   support

     Assertion      0.878     0.891     0.885      1531
    Expression      0.885     0.893     0.889      1991
      Question      0.574     0.504     0.537       131
       Request      0.333     0.167     0.222        30
Recommendation      0.500     0.111     0.182        18
 Miscellaneous      0.176     0.300     0.222        10

      accuracy                          0.867      3711
     macro avg      0.558     0.478     0.489      3711
  weighted avg      0.863     0.867     0.864      3711

confusion (rows=true, cols=pred): ['Assertion', 'Expression', 'Question', 'Request', 'Recommendation', 'Miscellaneous']
  Assertion        1364   144    10     1     0    12
  Expression        168  1777    38     5     1     2
  Question           10    55    66     0     0     0
  Request             6    17     1     5     1     0
  Recommendation      2    10     0     4     2     0
  Miscellaneous       3     4     0     0     0     3

```

في المخرج أعلاه لاحظ التالي:

- الدقة لم تتغير تقريباً (0.865 إلى 0.867)، ولكن Macro-F1 ارتفع من 0.398 إلى 0.489، أي أن الموازنة حسنت الأصناف النادرة دون أن تضر الكبيرة.
- استدعاء السؤال تضاعف تقريباً من 0.191 إلى 0.504، فأصبح النموذج يجد 66 سؤالاً من 131 بدلاً من 25\. والثمن أن 38 تغريدة تعبيرية صنفت سؤالاً، وهذا مقبول في الفرز لأن موظفاً يقرأ رسالة لا تحتاج رداً أفضل من سؤال لا يقرؤه أحد.
- الطلب ما زال ضعيفاً: 5 من 30 فقط. و150 مثالاً للتدريب لا تكفي لصنف يكتب بصيغ كثيرة مثل «أطالب» و«ممكن» و«نرجو» و«أناشد».
- وقت التدريب ارتفع إلى 51.6 ثانية، لأن النموذج يحتاج تكرارات أكثر حتى يستقر مع الأوزان الجديدة.

وكانت هناك مشكلة عملية ثانية أصغر: صورة Docker بعد تثبيت المكتبات الثلاث وصل حجمها إلى 841 ميجابايت، ومنها pyarrow الذي نحتاجه فقط لقراءة ملف Parquet. فإذا كان جهاز الفريق محدود المساحة فحول الملف إلى CSV مرة واحدة واحذف pyarrow من الصورة، أو استخدم صورة واحدة مشتركة للفريق كله بدلاً من أن يبني كل عضو صورته.

❗

إذا عرض فريقك دقة 86% في المناقشة دون Macro-F1 ودون نتيجة كل صنف، فسوف يسأل عضو اللجنة: «كم طلباً اكتشف النموذج؟» والإجابة الصادقة «اثنان من ثلاثين» ستكون أسوأ لحظة في العرض. اعرض المقياس المناسب للمشكلة من البداية، وخط الأساس بجانبه.

### ماذا يحدث إذا What If: موضوع جديد، ووسوم متفق عليها، وقرار واحد

بعد أن عرفنا الخطر نجرب أربعة أسئلة يسألها المشرف عادة، كل واحد بتغيير واحد في التجربة. والسؤال الأول: ماذا يحدث إذا جاءت رسائل عن موضوع لم يره النموذج؟ ففي البيانات حقل Topic بثلاث قيم: أحداث Event، وشخصيات وجهات Entity، وموضوعات ممتدة Long\_Standing، فندرب على موضوعين ونختبر على الثالث. والسؤال الثاني: ماذا يحدث إذا تدربنا فقط على التغريدات التي اتفق عليها الموسمون الثلاثة؟ والمخرج سوف يكون كما يلي:

```text
== 4. what if the test tweets come from a topic the model never saw?
held-out topic Event (7,957)       acc=0.838  macroF1=0.351
                                   train 55.4s, predict 0.52 ms per tweet
held-out topic Entity (5,409)      acc=0.796  macroF1=0.350
                                   train 56.3s, predict 0.51 ms per tweet
held-out topic Long_Standing (5,189) acc=0.841  macroF1=0.329
                                   train 46.0s, predict 0.51 ms per tweet

== 5. what if we train only on tweets the three annotators agreed on?
train rows with confidence = 1: 10,338 of 14,844
balanced, agreed labels only       acc=0.863  macroF1=0.409
                                   train 29.3s, predict 0.73 ms per tweet
balanced, test on agreed only      acc=0.950  macroF1=0.544
                                   train 53.9s, predict 0.44 ms per tweet

```

في المخرج أعلاه لاحظ التالي:

- عندما غاب الموضوع عن التدريب انخفض Macro-F1 من 0.489 إلى ما بين 0.329 و0.351\. أي أن جزءاً من «فهم» النموذج كان حفظاً لكلمات الموضوعات، مثل أسماء الأشخاص والأحداث، وليس فهماً لصيغة السؤال أو الطلب. وفي مشروع حقيقي تتغير موضوعات الرسائل كل أسبوع، لذلك يجب أن يكون هذا الاختبار جزءاً من التقييم في المقترح.
- التدريب على الوسوم المتفق عليها فقط أنقص التدريب من 14,844 إلى 10,338 تغريدة، فانخفض Macro-F1 إلى 0.409\. أي أن كمية البيانات أهم هنا من نقائها، لأن الأصناف النادرة فقدت جزءاً من أمثلتها القليلة أصلاً.
- أما الاختبار على التغريدات المتفق عليها فقط فرفع Macro-F1 إلى 0.544 والدقة إلى 0.950\. وهذا يعني أن جزءاً كبيراً من «أخطاء» النموذج يقع في تغريدات اختلف عليها البشر أنفسهم، وهذه نقطة مهمة في تقرير المشروع: سقف الأداء يحدده اتفاق الموسمين، وليس النموذج فقط.

والسؤالان الأخيران عن النطاق نفسه. الأول: ماذا يحدث إذا بسطنا المشكلة إلى قرار واحد، أي «تحتاج رداً» للسؤال والطلب معاً مقابل «لا تحتاج»؟ والثاني: كم مثالاً موسوماً يحتاج صنف السؤال؟ وهذا ما يحدد ميزانية التوسيم في خطة المشروع. والتشغيل بقسمين جديدين من نفس البرنامج:

```bash
docker run --rm --name grad-dsai-spike2 \
  -v "$HOME/dsai-data:/data:ro" -v "$PWD:/lab" grad-dsai-lab \
  sh -c "python spike.py /data/arsas.parquet binary; python spike.py /data/arsas.parquet curve" > spike-extra.out

```

```text

== 6. what if the project only needs one decision: does this message need a reply (Question or Request)?
binary, balanced                   acc=0.955  macroF1=0.714
                                   train 18.1s, predict 0.66 ms per tweet
              precision    recall  f1-score   support

 needs_reply      0.482     0.422     0.450       161
       other      0.974     0.979     0.977      3550

    accuracy                          0.955      3711
   macro avg      0.728     0.701     0.714      3711
weighted avg      0.953     0.955     0.954      3711

confusion (rows=true, cols=pred): ['needs_reply', 'other']
  needs_reply        68    93
  other              73  3477

== 7. how many labelled tweets does the Question class need? (learning curve, balanced)
train  1,856 tweets ( 64 questions): Question F1=0.217  macroF1=0.362
train  3,711 tweets (130 questions): Question F1=0.335  macroF1=0.380
train  7,422 tweets (250 questions): Question F1=0.415  macroF1=0.458
train 14,844 tweets (524 questions): Question F1=0.537  macroF1=0.489

```

في المخرج أعلاه لاحظ التالي:

- الدقة في المشكلة الثنائية 0.955، وهي أعلى رقم في التجربة كلها، ولكنها الأقل فائدة، لأن 3,550 من 3,711 رسالة «لا تحتاج رداً»، فنموذج يقول «لا» دائماً يحصل على 95.7%.
- قيمة F1 لصنف «تحتاج رداً» 0.450، أي أقل من قيمة F1 للسؤال وحده في التجربة متعددة الأصناف (0.537). وهذه نتيجة لم نتوقعها: دمج الطلب مع السؤال لم يسهل المشكلة، لأن الطلبات قليلة وضعيفة التوسيم فأضافت ضجيجاً إلى الصنف المدمج. والدرس أن تبسيط الأصناف قرار تختبره بالأرقام ولا تفترضه.
- منحنى التعلم Learning Curve يبين أن قيمة F1 للسؤال ارتفعت من 0.217 مع 64 سؤالاً إلى 0.335 ثم 0.415 ثم 0.537 مع 524 سؤالاً، أي نحو 0.08 إلى 0.12 مع كل مضاعفة لبيانات التدريب، ولم يتوقف الارتفاع بعد. وهذا يعني أن النموذج يحتاج أمثلة أكثر وليس خوارزمية أذكى.

![أربع لوحات: منحنى التعلم لصنف السؤال من 0.217 مع 64 سؤالاً إلى 0.537 مع 524، واختبار على موضوع غائب عن التدريب ينخفض فيه Macro-F1 من 0.489 إلى ما بين 0.329 و0.351، واتفاق المصنفين حيث التدريب على المتفق عليه فقط 0.409 والاختبار على المتفق عليه فقط 0.544، وقرار ثنائي يعطي 0.450 مقابل 0.537 للسؤال وحده](https://arabroot.io/content/images/2026/11/grad-projects-ds-ai-05-whatif.webp)

أربع تجارب صغيرة تغير خطة المشروع أكثر مما يغيرها اختيار النموذج

### ماذا يقول اختبار الجدوى Feasibility للمقترح؟

الآن يستطيع الفريق أن يكتب في بطاقة الفكرة أشياء لم يكن يعرفها قبل أسبوع، وكلها مبنية على أرقام:

- **الفكرة ممكنة:** نموذج خطي على CPU وصل إلى F1 بقيمة 0.537 للسؤال من خط أساس 0.181، والتنبؤ أسرع بكثير مما تحتاجه أي جهة خدمية.
- **الخطر الحقيقي هو البيانات وليس النموذج:** الطلبات 150 مثالاً فقط، والمنحنى لم يتوقف عن الارتفاع، لذلك يجب أن تتضمن الخطة توسيم 1,000 رسالة على الأقل بلهجة المستخدمين، بموسمين لكل رسالة وقياس الاتفاق بينهما.
- **التقييم:** Macro-F1 وقيمة F1 لكل صنف، والاختبار على موضوع لم يره النموذج، ولا تذكر الدقة وحدها في أي شريحة.
- **الخطوة التالية في الفصل الثاني:** نموذج عربي مدرب مسبقاً بضبط دقيق، وهدفه المكتوب في المقترح أن يتفوق على 0.489 Macro-F1 في نفس التقسيم، فإذا لم يتفوق بفرق واضح فالنموذج الخطي هو المنتج.

وهذه الصفحة الواحدة هي ما يرسله الفريق للمشرف مع البطاقة، وهي في الغالب ما يجعله يوافق على الفكرة من أول اجتماع، لأنها تبين أن الفريق حمل البيانات فعلاً وعرف أين ستكون الصعوبة.

## أخطاء شائعة Common Mistakes في مشاريع البيانات

- **«سنجمع البيانات لاحقاً»:** الفكرة التي لا تملك رابط بيانات في الأسبوع الأول ستغير موضوعها في منتصف الفصل الثاني. حمل البيانات قبل المقترح.
- **الدقة وحدها:** كما رأيت في التجربة، 0.865 دقة مع اكتشاف طلبين من ثلاثين. اختر المقياس الذي يعبر عن قرار المستخدم.
- **بلا خط أساس:** نتيجة بدون خط أساس لا معنى لها، فاعرض دائماً الصنف الأكثر وقاعدة بسيطة بجانب نموذجك.
- **التكرار والتسرب:** تغريدات مكررة في التدريب والاختبار، أو خاصية لا تعرف إلا بعد الحدث. افحص التكرار قبل التقسيم، واكتب لكل خاصية متى تصبح معروفة.
- **التقسيم العشوائي فقط:** العالم الحقيقي لا يعطيك رسائل من نفس توزيع التدريب، فاختبر على موضوع أو فترة زمنية أو مصدر لم يره النموذج.
- **بيانات مولدة للتقييم:** البيانات التي ولدها نموذج لغة تصلح لاختبار الكود، ولا تصلح لقياس جودة نموذج سيستخدمه بشر.
- **البيانات الشخصية بلا موافقة:** بيانات المرضى والطلاب والعملاء تحتاج موافقة لجنة الأخلاقيات وإخفاء الهوية قبل أن تفتح الملف، وليس قبل المناقشة.
- **اختيار فكرة تحتاج GPU دون أن تملكه:** اسأل عن موارد الجامعة أو الحصص المجانية قبل اختيار B5 أو B6 أو أغلب أفكار الماجستير.
- **نموذج لغة كبير لكل شيء:** إذا كان نموذج خطي يعطي 90% من النتيجة في دقيقة على CPU، فاستخدام نموذج كبير يحتاج تبريراً بالأرقام والتكلفة.

## قائمة تحقق Checklist قبل أن ترسل الأفكار للمشرف

1. لكل فكرة بطاقة من ثمانية حقول، وأصعب حقل فيها «الخطر الذي يقتلها» مكتوب بصدق.
2. لكل فكرة رابط بيانات فتحته بنفسك، ورخصة قرأتها، وحجم تعرف أين ستخزنه.
3. حملت البيانات فعلاً لفكرة واحدة على الأقل، وقرأت أول 20 سجلاً بعينك.
4. عددت الأصناف أو القيم، وتعرف هل هناك صنف نادر أو قيم ناقصة أو تكرار.
5. لديك خط أساس بسيط ورقمه، ولديك المقياس المناسب للمشكلة وليس الدقة وحدها.
6. تعرف هل تحتاج GPU، ومن أين ستحصل عليه.
7. إذا كانت البيانات من بشر، فتعرف خطوات موافقة لجنة الأخلاقيات في جامعتك ومدتها.
8. للماجستير: سؤال بحث في جملة واحدة، وثلاث أوراق سابقة قرأتها، وإضافة تستطيع أن تقولها في جملة.
9. لكل فكرة مستخدم محدد يمكن أن يجرب المنتج أو يقيم النتيجة في الفصل الثاني.
10. اخترت فكرة واحدة آمنة وفكرة واحدة طموحة، حتى يكون لدى المشرف خيار حقيقي.

## الخلاصة

وصلنا لنهاية الموضوع، وأهم ما فيه:

- مشروع البكالوريوس في علم البيانات نظام يعمل على بيانات حقيقية مع خط أساس وتقييم، ورسالة الماجستير سؤال بحث واحد مع إضافة وتجارب قابلة للإعادة، ونفس الموضوع يصلح للمستويين بسؤال مختلف.
- بطاقة الفكرة من ثمانية حقول، وأهمها رابط البيانات والخطر الذي يقتل الفكرة، واختبار جدوى في أسبوع واحد قبل المقترح يوفر فصلاً كاملاً.
- أربع عشرة فكرة بين اللغة العربية والكلام والصحة والتعليم والحشود والطاقة والمصادر المفتوحة، كلها ببيانات حقيقية فتحنا روابطها.
- الأفكار المستهلكة تتحول إلى مشاريع حقيقية عندما تضيف إليها قراراً يتخذه شخص محدد، وبيانات لم يكتبها الفريق، ومقياساً يمكن أن يأتي سيئاً.
- في التجربة العملية على 18,678 تغريدة من ArSAS وصل نموذج خطي على CPU إلى دقة 0.865 بينما Macro-F1 بقيمة 0.398، وموازنة الأصناف رفعته إلى 0.489 ورفعت F1 السؤال من 0.294 إلى 0.537.
- الاختبار على موضوع لم يره النموذج أنزل Macro-F1 إلى نحو 0.33 إلى 0.35، ومنحنى التعلم لم يتوقف عن الارتفاع، أي أن خطر فكرة الفرز في التوسيم وليس في الخوارزمية.

وإذا لم تقرأ بعد ما يقوله منهج التخصص نفسه وما ينقص خطتك، فابدأ بمقال [علم البيانات والذكاء الاصطناعي: منهج CCDS2021](https://arabroot.io/articles/%D8%AA%D8%AE%D8%B5%D8%B5-%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%86%D9%87%D8%AC-ccds2021-%D9%88-cs2023/)، وإذا كنت ما زلت تختار بين التخصصات فاقرأ [أي تخصص تقني تختار؟](https://arabroot.io/articles/%D8%A7%D9%8A-%D8%AA%D8%AE%D8%B5%D8%B5-%D8%AA%D9%82%D9%86%D9%8A-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D9%85%D8%A7-%D8%AA%D8%AF%D8%B1%D8%B3%D9%87-%D9%88%D8%A7%D9%8A%D9%86-%D8%AA%D8%B9%D9%85%D9%84/). وأقرب المقالات إلى هذا الموضوع على الموقع:

[![](https://arabroot.io/content/images/2026/10/major-ds-ai-guide-cover-cover.webp)دليلعلم البيانات Data Science والذكاء الاصطناعي: منهج CCDS2021ما الذي يقوله منهج علم البيانات CCDS2021 ومجال الذكاء الاصطناعي في CS2023 عن تخصصك، وكيف تدرسه أربع خطط سعودية، وما الذي ينقصها من الإحصاء والتحسين، ومن أين تكمله.](https://arabroot.io/articles/%D8%AA%D8%AE%D8%B5%D8%B5-%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%86%D9%87%D8%AC-ccds2021-%D9%88-cs2023/)[![](https://arabroot.io/content/images/2026/10/tech-majors-cover-cover.webp)دليلأي تخصص تقني تختار؟ ما تدرسه فعلاً وأين تعمل بعدهماذا تدرس فعلاً في كل تخصص تقني بحسب الخطط الدراسية السعودية، وأين يعمل خريجوه، ومتى يهم اسم التخصص ومتى تهم المهارة.](https://arabroot.io/articles/%D8%A7%D9%8A-%D8%AA%D8%AE%D8%B5%D8%B5-%D8%AA%D9%82%D9%86%D9%8A-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D9%85%D8%A7-%D8%AA%D8%AF%D8%B1%D8%B3%D9%87-%D9%88%D8%A7%D9%8A%D9%86-%D8%AA%D8%B9%D9%85%D9%84/)[![](https://arabroot.io/content/images/2026/10/ml-basics-cover-cover.webp)دليلالتعلم الآلي Machine Learning للمبتدئينكيف تتعلم الآلة القواعد من الأمثلة، وكيف تعرف أن النموذج تعلم فعلاً ولم يحفظ الإجابات، ومتى تختار كل خوارزمية.](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A7%D9%84%D9%8A-machine-learning-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/)[![](https://arabroot.io/content/images/2026/10/arabic-nlp-cover-cover.webp)دليلمعالجة اللغة الطبيعية NLP للعربية ولماذا تصعب على البرامجلماذا تصعب العربية على البرامج من الزوائد واللهجات إلى تكلفة التوكنز، وما الأدوات والنماذج المتاحة لمن يبني مساعداً عربياً.](https://arabroot.io/articles/%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%B7%D8%A8%D9%8A%D8%B9%D9%8A%D8%A9-nlp-%D9%84%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9/)[![](https://arabroot.io/content/images/2026/10/semantic-search-cover-cover.webp)دليلالبحث الدلالي Semantic Search بالـ Embeddingsمتى يتفوق البحث بالمعنى على البحث بالكلمات في النص العربي، وكيف تقيس ذلك على أسئلتك قبل أن تختار.](https://arabroot.io/articles/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D8%A7%D9%84%D8%AF%D9%84%D8%A7%D9%84%D9%8A-semantic-search-%D8%A8%D8%A7%D9%84-embeddings/)[![](https://arabroot.io/content/images/2026/10/rag-cover-cover.webp)دليلRAG للمبتدئين: نموذج لغة يجيب من مستنداتك على سيرفرككيف تجعل نموذج اللغة يجيب من مستندات مؤسستك ويذكر مصدره، دون أن يخرج أي مستند من سيرفرك.](https://arabroot.io/articles/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D9%81%D9%8A-%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA%D9%83-%D9%85%D8%B9-rag-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/)[![](https://arabroot.io/content/images/2026/10/statistics-for-engineers-cover-cover.webp)دليلالإحصاء Statistics للمهندسين: لماذا يخدعك المتوسط Mean؟كيف تقرأ زمن الاستجابة بالوسيط والمئين p95 وp99 والمدرج التكراري بدل المتوسط، ولماذا لا يجوز حساب متوسط المئين، مع تجربة حقيقية لسيرفر تحت الضغط.](https://arabroot.io/articles/%D8%A7%D9%84%D8%A7%D8%AD%D8%B5%D8%A7%D8%A1-%D9%84%D9%84%D9%85%D9%87%D9%86%D8%AF%D8%B3%D9%8A%D9%86-%D8%A7%D9%84%D9%85%D8%AA%D9%88%D8%B3%D8%B7-%D9%88%D8%A7%D9%84%D9%88%D8%B3%D9%8A%D8%B7-%D9%88%D8%A7%D9%84%D9%85%D8%A6%D9%8A%D9%86-p99/)[![](https://arabroot.io/content/images/2026/10/literature-search-cover-cover.webp)دليلكيف تجد الفجوة البحثية Research Gap في الأدبيات العلمية؟أين تبحث عن الأبحاث المنشورة، وكيف ترسم خريطة موضوعك بالأرقام عبر OpenAlex وSemantic Scholar، ثم تتحقق من الفجوة قبل أن تبني عليها.](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%AC%D8%AF-%D8%A7%D9%84%D9%81%D8%AC%D9%88%D8%A9-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB%D9%8A%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%A7%D8%AF%D8%A8%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D9%84%D9%85%D9%8A%D8%A9/)[![](https://arabroot.io/content/images/2026/10/research-ethics-cover-cover.webp)دليلأخلاقيات البحث على البشر: من لجنة IRB إلى حماية البياناتما الذي يطلبه النظام السعودي قبل أن تجمع بيانات من البشر، وكيف تحصل على موافقة اللجنة المحلية وتحمي البيانات الشخصية.](https://arabroot.io/articles/%D8%A7%D8%AE%D9%84%D8%A7%D9%82%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%A8%D8%B4%D8%B1-%D9%85%D9%86-%D9%84%D8%AC%D9%86%D8%A9-irb-%D8%A7%D9%84%D9%89-%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/)

## سجل التحديثات

- نوفمبر 2026: كتابة المقال، والتحقق من روابط البيانات كلها، وتشغيل اختبار الجدوى spike.py على مجموعة ArSAS بـ Python 3.13 وscikit-learn 1.7.2 داخل Container على المعالج فقط.