> ## 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.

# المراجعة المنهجية Systematic Review مع PRISMA وأدواتها
- URL: https://arabroot.io/articles/المراجعة-المنهجية-systematic-review-مع-prisma-و-asreview/
- Published: 2026-10-21T06:50:00.000Z
- Updated: 2026-10-22T19:40:47.000Z
- Description: كيف تخطط مراجعة منهجية وتسجلها وتفرز آلاف النتائج بمراجعين، ومختبر ASReview على مراجعة حقيقية يقيس كم يوفر عليك.
- Author: فريق عرب رووت
- Tags: الأدلة التقنية, التعليم والبحث العلمي, ASReview

في مقال [كيف تجد الفجوة البحثية 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/) فرزنا قائمة من 36 بحثاً بالعين، ووجدنا أن ثلثها تقريباً لا علاقة له بالموضوع، وهذا يكفي لاستكشاف موضوع، لكنه لا يكفي إذا كان سؤالك «ماذا تقول كل الأدلة المنشورة عن هذا الموضوع؟» وكان أمامك ستة آلاف نتيجة. هنا يأتي دور المراجعة المنهجية Systematic Review، وهي مراجعة تكتب خطتها قبل أن تبدأ، وتوثق كل خطوة فيها، بحيث يستطيع باحث آخر أن يكرر بحثك ويصل إلى القائمة نفسها. وهذا المقال موجه لطالب الدراسات العليا الذي يكتب مراجعة منهجية فصلاً في رسالته أو بحثاً مستقلاً، وللباحث الذي يقود فريق مراجعة، وللمحكم والمحرر الذي يقرأ قسم المنهجية في مراجعة وصلته ويريد أن يعرف ما الذي يجب أن يجده فيه.

في هذا المقال سوف نتناول:

- الفرق بين المراجعة السردية ومراجعة النطاق Scoping Review والمراجعة المنهجية والتحليل التجميعي Meta-analysis.
- مراحل المراجعة المنهجية، والبروتوكول Protocol وتسجيله في PROSPERO أو غيره.
- فرز النتائج Screening بمراجعين مستقلين، وكيف يساعد Rayyan في ذلك من وثائقه الرسمية.
- مختبر: ASReview LAB مفتوح المصدر على مجموعة بيانات مراجعة حقيقية منشورة، بجلسة فرز فعلية ومحاكاة Simulation تقيس كم سجلاً يوفر عليك.
- تقرير PRISMA 2020 ومخطط التدفق Flow Diagram بأرقام حقيقية.

## ما الفرق بين المراجعات؟

كلمة «مراجعة» تطلق على أشياء مختلفة، والخلط بينها من أكثر ما يسأل عنه المحكمون، والجدول التالي يبين الفرق:

| النوع                               | السؤال                                              | الطريقة                                                 | متى تختاره                                  |
| ----------------------------------- | --------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------- |
| المراجعة السردية Narrative Review   | عام: ماذا نعرف عن الموضوع؟                          | يختار الكاتب المصادر بخبرته، دون بروتوكول معلن          | مقدمة رسالة أو مقال يشرح مجالاً             |
| مراجعة النطاق Scoping Review        | ما حجم الأبحاث في موضوع، وما أنواعها، وأين الفجوات؟ | بحث منهجي واسع، دون تقييم جودة الدراسات في الغالب       | موضوع جديد أو متفرق لا تعرف حدوده بعد       |
| المراجعة المنهجية Systematic Review | محدد: هل يؤثر X على Y في مجتمع Z؟                   | بروتوكول معلن، وبحث شامل، وفرز بمعايير، وتقييم للانحياز | عندما تريد إجابة يعتمد عليها غيرك           |
| التحليل التجميعي Meta-analysis      | ما حجم الأثر عند جمع النتائج رقمياً؟                | تحليل إحصائي فوق مراجعة منهجية                          | عندما تكون الدراسات متشابهة بما يكفي لجمعها |

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

## مراحل المراجعة المنهجية

الصورة التالية تبين المراحل الثماني والأدوات الشائعة في كل منها:

![ثماني مراحل في صفين: 1 السؤال بإطار PICO، 2 البروتوكول والتسجيل في PROSPERO أو OSF، 3 البحث في قاعدتين أو أكثر مثل Scopus وPubMed وWeb of Science، 4 إزالة المكرر بأدوات مثل Rayyan وZotero، 5 فرز العنوان والملخص بمراجعين مستقلين في Rayyan أو ASReview LAB، 6 فرز النص الكامل مع سبب كل استبعاد، 7 الاستخلاص وتقييم الانحياز بأدوات مثل RoB 2 وROBINS-I، 8 التحليل والتقرير بقائمة PRISMA 2020](https://arabroot.io/content/images/2026/10/systematic-review-01-stages.webp)

المرحلتان الأولى والثانية تكتبان قبل أي بحث، وهذا ما يجعل المراجعة منهجية

1. **السؤال:** في البحوث الصحية يكتب غالباً بإطار PICO، أي المجتمع Population والتدخل Intervention والمقارنة Comparison والنتيجة Outcome، وفي المجالات الأخرى ما يناسبها، والمهم أن يكون محدداً بما يكفي لتعرف أي دراسة تدخل وأيها لا تدخل.
2. **البروتوكول والتسجيل:** الخطة الكاملة قبل البحث، وسوف نفصلها في القسم التالي.
3. **البحث:** في قاعدتين أو أكثر، بعبارة بحث موثقة لكل قاعدة وتاريخ تنفيذها وعدد نتائجها، وقد شرحنا بناء العبارة وتتبع الاستشهادات في مقال البحث في الأدبيات.
4. **إزالة المكرر Deduplication:** البحث في أكثر من قاعدة يعيد البحث نفسه أكثر من مرة، فيحذف المكرر قبل الفرز ويسجل عدده.
5. **فرز العنوان والملخص Title and Abstract Screening:** أطول مرحلة، ويقوم بها مراجعان كل منهما مستقل عن الآخر، ثم يحلان الخلاف بينهما.
6. **فرز النص الكامل Full-text Screening:** لما بقي، مع تسجيل سبب استبعاد كل تقرير.
7. **الاستخلاص وتقييم الانحياز Data Extraction and Risk of Bias:** استخراج البيانات من كل دراسة بنموذج موحد، وتقييم جودة كل دراسة بأداة مناسبة لنوعها.
8. **التحليل والتقرير:** تجميع النتائج، ثم كتابة التقرير بحسب قائمة PRISMA 2020.

## البروتوكول والتسجيل في PROSPERO

قد يتساءل البعض: لماذا أعلن خطتي قبل أن أبدأ؟ والإجابة أن المراجعة التي تكتب معاييرها بعد أن ترى النتائج تستطيع، عن قصد أو دون قصد، أن تختار المعايير التي توصلها إلى النتيجة التي تريدها، والبروتوكول المسجل بتاريخ سابق يمنع ذلك، ويسمح للمحكم أن يقارن ما خططت له بما فعلته. وأشهر سجل لذلك هو PROSPERO الذي يديره مركز المراجعات والنشر CRD في جامعة يورك، و[دليل التسجيل الرسمي](https://www.crd.york.ac.uk/prospero/documents/Guidance%20for%20registering%20human%20studies.pdf?ref=arabroot.io) يذكر ما يلي:

- التسجيل مجاني، والمسجل مسؤول عن دقة المعلومات وتحديثها.
- يقبل السجل المراجعات المنهجية التي لها نتيجة Outcome متعلقة بالصحة، ومنها مراجعات التدخلات ودقة التشخيص وعوامل الإنذار والوقاية والصحة العامة وتقديم الخدمات الصحية والاجتماعية.
- يجب أن يكون البروتوكول كاملاً قبل التسجيل، وأن يتم التسجيل قبل بدء استخلاص البيانات، وأن يكون نموذج التسجيل باللغة الإنجليزية.
- لا يقبل مراجعات النطاق Scoping Reviews، ولا مراجعات الأدبيات التي تستخدم بحثاً منهجياً فقط، ولا المراجعات التي ليس لها نتيجة واضحة على صحة الإنسان، ويقترح للمراجعات غير المؤهلة التسجيل في أماكن أخرى مثل [Open Science Framework](https://osf.io/?ref=arabroot.io).

و[أسئلة الأهلية في PROSPERO](https://www.crd.york.ac.uk/prospero/documents/PROSPERO%20eligability%20questions.pdf?ref=arabroot.io) تضيف نقطتين تهمان طلاب الدراسات العليا تحديداً: السجل لا يقبل المراجعات المصغرة التي تعمل للتدريب أو لمقرر دراسي، ولا يقبل المراجعات التي لن تتاح للآخرين، ومنها رسائل الماجستير إذا كان معروفاً أنها لن تنشر. والصفحة نفسها توصي بشدة أن يشارك في المراجعة أكثر من شخص، وتقول إن السجل قد لا يقبل في المستقبل إلا المراجعات التي يقوم بها أكثر من شخص.

💡

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

## الفرز بمراجعين مستقلين

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

### Rayyan

Rayyan منصة سحابية للفرز التعاوني، و[صفحتها الرسمية](https://www.rayyan.ai/?ref=arabroot.io) تذكر أنها تستخدم من أكثر من مليون باحث في أكثر من 30 ألف مؤسسة، وأن من خصائصها إزالة المكرر حتى 200 ألف مرجع، وتطبيق للجوال، وتقييمات صلة بالذكاء الاصطناعي Relevance Ratings، وتقسيم العمل على الفريق. وما يهمك منها:

- **الوضع المعمى Blind Mode:** بحسب [الأسئلة الشائعة عن التعارضات في مركز مساعدة Rayyan](https://help.rayyan.ai/hc/en-us/articles/34237677089809-Rayyan-Screening-Conflicts-Frequently-Asked-Questions?ref=arabroot.io) يكون مفعلاً افتراضياً عند إنشاء المراجعة فلا يرى المراجعون قرارات بعضهم، ولا يستطيع إيقافه إلا مالك المراجعة، والتعارض Conflict هو أن يختار أحدهما Include والآخر Exclude، أما Maybe فلا تعد تعارضاً، ولا تظهر التعارضات لحلها إلا بعد إيقاف الوضع المعمى.
- **الأسعار:** بحسب [صفحة الأسعار](https://www.rayyan.ai/pricing?ref=arabroot.io) في 22 أكتوبر 2026، الخطة المجانية تسمح بثلاث مراجعات نشطة ودعوة مراجعين اثنين، ومعها كشف المكرر وتوقعات الصلة بالذكاء الاصطناعي، أما توليد مخطط PRISMA فيبدأ من خطة Essential بسعر 8.33 دولار شهرياً بالدفع ربع السنوي، وخطة Advanced بسعر 13.33 دولار شهرياً وفيها تسع مراجعات نشطة. والأسعار تتغير، فراجعها قبل أن تبني عليها ميزانية مشروعك.

وRayyan خدمة سحابية مغلقة المصدر، فبيانات مراجعتك على سيرفراتها، وهذا لا يهم كثيراً في مراجعة أبحاث منشورة، لكنه يهم إذا كانت جهتك تشترط بقاء البيانات داخلها، وقد ناقشنا ذلك مع نقل البيانات خارج المملكة في مقال [أخلاقيات البحث على البشر](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/). والبديل المفتوح الذي يعمل على جهازك هو ASReview LAB، وهو موضوع المختبر التالي.

## مختبر: ASReview LAB على مراجعة حقيقية

[ASReview LAB](https://asreview.nl/?ref=arabroot.io) برنامج مفتوح المصدر بترخيص Apache 2.0 تنسق تطويره جامعة أوترخت Utrecht University في هولندا، يستخدم التعلم النشط Active Learning في الفرز: أنت تقرر في كل سجل هل هو ذو صلة Relevant أم لا، والنموذج يتعلم من قراراتك ويعيد ترتيب السجلات الباقية بحيث يعرض عليك الأكثر احتمالاً أولاً. والفكرة منشورة في بحث [An open source machine learning framework for efficient and transparent systematic reviews](https://doi.org/10.1038/s42256-020-00287-7?ref=arabroot.io) في مجلة Nature Machine Intelligence في 2021\. ولاحظ أن البرنامج لا يقرر عنك، فكل سجل يدخل المراجعة أو يخرج منها بقرارك أنت، وإنما يغير ترتيب القراءة.

والبيانات التي نستخدمها حقيقية ومنشورة: مجموعة [van de Schoot 2017](https://osf.io/vk4be/?ref=arabroot.io) من مراجعة منهجية عن مسارات أعراض اضطراب ما بعد الصدمة PTSD Trajectories، بترخيص CC-BY 4.0، وفيها 6,189 سجلاً من نتائج البحث الأصلي، وكل سجل عليه قرار الباحثين الأصلي، فنعرف أن 388 سجلاً عبرت فرز العنوان والملخص، وأن 43 دراسة فقط دخلت المراجعة في النهاية. وهذه التصنيفات هي التي تجعل القياس ممكناً، لأننا نعرف الإجابة الصحيحة مسبقاً.

### التثبيت والتشغيل

ASReview LAB يحتاج إلى Python 3.10 أو أحدث بحسب [صفحة التثبيت](https://asreview.readthedocs.io/en/stable/lab/installation.html?ref=arabroot.io)، ونثبته في بيئة افتراضية Virtual Environment حتى لا يختلط بحزم النظام:

```bash
python -m venv asr
asr/Scripts/python -m pip install asreview==3.0.8
asr/Scripts/asreview --version
```

والمخرج سوف يكون كما يلي:

```text
asreview 3.0.8
```

وعلى Linux أو macOS يكون المسار `asr/bin/` بدلاً من `asr/Scripts/`. والصفحة نفسها تذكر طريقة Docker بالأمر `docker run -p 5000:5000 ghcr.io/asreview/asreview:latest lab`، فإذا استخدمتها فثبت رقم الإصدار `v3.0.8` بدلاً من `latest`. الآن نقوم بتشغيل الواجهة على منفذ نختاره، ونحدد مجلد المشاريع بالمتغير `ASREVIEW_PATH`:

```bash
export ASREVIEW_PATH="$PWD/labhome"
export ASREVIEW_LAB_TASK_MANAGER_ENDPOINT=localhost:37101
asr/Scripts/asreview lab --host 127.0.0.1 --port 37100 --no-browser --skip-update-check
```

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

- `--host 127.0.0.1` يجعل الواجهة متاحة من جهازك فقط، وهذا هو الصحيح لجهاز شخصي، لأن الواجهة دون تفعيل المصادقة `--enable-auth` مفتوحة لكل من يصل إلى المنفذ.
- الإصدار 3 يشغل إلى جانب الواجهة خادم مهام Task Server داخلياً على المنفذ 5101 افتراضياً، والمتغير `ASREVIEW_LAB_TASK_MANAGER_ENDPOINT` يغيره، وهذا مفيد إذا كان المنفذ مستخدماً، أو إذا ظهرت رسالة `Unable to startup the task server within the timeout period` كما ظهرت لنا في أول تشغيل والجهاز مشغول بمحاكاة أخرى.

### إنشاء مشروع فرز

في تبويب URL نلصق رابط ملف البيانات مباشرة، فيقرؤه البرنامج ويعرض ملخصه:

![نافذة Start project في ASReview LAB لمجموعة van_de_Schoot_2017: رفع 6189 سجلاً مع إخفاء 104 سجلات بنصوص مكررة، و99.9% لها عنوان، و87.7% لها ملخص، و22.8% لها رابط أو DOI، ورسالة أن المجموعة فيها تصنيف لكل سجل](https://arabroot.io/content/images/2026/10/systematic-review-04-asreview-dataset.webp)

ملخص البيانات قبل البدء: 87.7% فقط من السجلات لها ملخص، و104 سجلات مكررة أخفاها البرنامج

لاحظ رقمين مهمين قبل أن تبدأ: البرنامج أخفى 104 سجلات لها النص نفسه، أي أنه يقوم بجزء من إزالة المكرر، و12.3% من السجلات بلا ملخص، وهذه السجلات يصعب على النموذج ترتيبها لأنه يتعلم من النص، فاحرص على أن يحتوي الملف الذي تصدره من قواعد البيانات على الملخصات. ومن «Show options» نرى إعدادات المشروع:

![خيارات المشروع في ASReview LAB: وسوم التصنيف Labeling tags، والنموذج AI بقيمة ELAS u4، والمعرفة المسبقة Prior knowledge مع زر Search للبحث عن سجلات ذات صلة وتصنيفها قبل البدء](https://arabroot.io/content/images/2026/10/systematic-review-05-asreview-options.webp)

النموذج الافتراضي ELAS u4، والمعرفة المسبقة Prior Knowledge تسرع البداية

والنموذج الافتراضي ELAS u4 كما أعادته واجهة البرنامج البرمجية لمشروعنا هو مصنف SVM مع تمثيل النصوص بطريقة TF-IDF بكلمة وكلمتين ngram 1 إلى 2، ويختار في كل مرة السجل الأعلى احتمالاً Max Query، مع موازنة Balancing بين الفئتين لأن السجلات ذات الصلة قليلة جداً. والمعرفة المسبقة Prior Knowledge أن تبحث عن سجل أو اثنين تعرف أنها ذات صلة وتصنفها قبل البدء، وإذا لم تفعل فالبرنامج يعرض سجلات عشوائية حتى يجد ما يتعلم منه.

### جلسة فرز فعلية

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

![شاشة الفرز في ASReview LAB تعرض عنوان دراسة عن المسارات السريرية لأطفال تعرضوا لصدمة نفسية واحدة ومتابعتهم 30 شهراً، والملخص كاملاً، والكلمات المفتاحية، وتحتها تصنيف المجموعة Relevant، وزرا Relevant وNot relevant](https://arabroot.io/content/images/2026/10/systematic-review-06-asreview-screening.webp)

شاشة الفرز: العنوان والملخص، ثم قرارك بزر Relevant أو Not relevant

وكانت النتيجة كما يلي:

- أول 118 سجلاً عرضها البرنامج برسالة «This record is presented in a random manner»، أي بترتيب عشوائي، ووجدنا فيها سجلين فقط ذوي صلة، في الترتيب 94 و100.
- بعد أن تعلم النموذج من السجلين اختفت رسالة العرض العشوائي، وفي الاثنين والثلاثين سجلاً التالية وجدنا 11 سجلاً ذا صلة.

أي أن نسبة السجلات ذات الصلة قفزت من سجلين في 118 إلى 11 في 32 بمجرد أن بدأ النموذج يرتب، ولوحة المشروع Dashboard تظهر ذلك بوضوح:

![لوحة مشروع van_de_Schoot_2017 في ASReview LAB: 6189 سجلاً وحالة In Review، والتقدم 13 ذو صلة و140 غير ذي صلة و6036 غير مصنف، وقسم Stopping بزر Set Threshold، ومخطط History يظهر السجلات المصنفة بالترتيب وتتركز السجلات ذات الصلة الصفراء في آخر السجلات المصنفة](https://arabroot.io/content/images/2026/10/systematic-review-07-asreview-dashboard.webp)

في مخطط History تتركز السجلات ذات الصلة (الصفراء) بعد أن بدأ النموذج الترتيب

وفي اللوحة 153 سجلاً مصنفاً، منها ثلاثة من جلسة قصيرة سبقت هذه، و13 سجلاً ذا صلة. ولاحظ قسم Stopping، وسوف نعود إليه بعد قليل.

### المحاكاة: كم يوفر عليك فعلاً؟

جلسة الفرز تعطيك إحساساً، لكن السؤال الحقيقي: لو فرزت المجموعة كلها بهذه الطريقة، متى كنت ستجد كل الدراسات المطلوبة؟ والأمر `asreview simulate` يجيب عن ذلك، لأنه يفرز المجموعة كاملة آلياً مستخدماً التصنيفات الموجودة فيها، ويسجل ترتيب العرض:

```bash
asr/Scripts/asreview simulate van_de_Schoot_2017.csv -o vds-seed42.asreview --seed 42 --prior-seed 42 --n-prior-included 1 --n-prior-excluded 1
```

في الأمر أعلاه لاحظ أن `--n-prior-included 1 --n-prior-excluded 1` يختار سجلاً ذا صلة وآخر غير ذي صلة معرفة مسبقة، كما يفعل باحث يعرف دراسة واحدة مطلوبة قبل البدء، وأن `--seed` يثبت العشوائية حتى تتكرر النتيجة. وانتهت المحاكاة بعد نحو دقيقة و38 ثانية، وآخر سطور المخرج كما يلي:

```text
Relevant records found: 100%|██████████| 43/43 [01:02<00:00,  1.48s/it]
Records labeled       :   7%|▋         | 413/6189 [01:02<14:32,  6.62it/s]

Loss: 0.010
NDCG: 0.708
```

والملف الناتج `.asreview` ملف Zip فيه قاعدة بيانات SQLite اسمها `results.db` تسجل ترتيب كل قرار، فكتبنا سكربتاً صغيراً يقرؤها ويحسب متى وصلت المحاكاة إلى كل نسبة من الدراسات المطلوبة:

```python
"""Read an ASReview simulation project (.asreview) and report how many records had to be screened to find the relevant ones."""
import sqlite3, sys, tempfile, zipfile, os

project, total = sys.argv[1], int(sys.argv[2])  # total = records in the dataset
with tempfile.TemporaryDirectory() as tmp:
    zipfile.ZipFile(project).extract("results.db", tmp)
    con = sqlite3.connect(os.path.join(tmp, "results.db"))
    rows = con.execute("select label, classifier, feature_extractor from results order by rowid").fetchall()
    con.close()
labels = [r[0] for r in rows]
n_rel = sum(labels)
print(f"model              : {rows[-1][1]} + {rows[-1][2]}")
print(f"records in dataset : {total}")
print(f"relevant records   : {n_rel}")
found, done = 0, set()
for i, lab in enumerate(labels, start=1):
    found += lab
    for pct in (50, 80, 90, 95, 100):
        need = -(-pct * n_rel // 100)
        if pct not in done and found >= need:
            done.add(pct)
            print(f"found {pct:>3}% ({need:>2} of {n_rel}) after {i:>4} records = {i / total:5.1%} of the dataset")
            if pct == 95:
                print(f"WSS@95             : {(total - i) / total - 0.05:.1%}")
```

```bash
python curve.py vds-seed42.asreview 6189
```

```text
model              : svm + tfidf
records in dataset : 6189
relevant records   : 43
found  50% (22 of 43) after   71 records =  1.1% of the dataset
found  80% (35 of 43) after  113 records =  1.8% of the dataset
found  90% (39 of 43) after  153 records =  2.5% of the dataset
found  95% (41 of 43) after  176 records =  2.8% of the dataset
WSS@95             : 92.2%
found 100% (43 of 43) after  413 records =  6.7% of the dataset
```

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

- للوصول إلى 95% من الدراسات المطلوبة، أي 41 من 43، احتجنا إلى قراءة 176 سجلاً فقط، أي 2.8% من المجموعة، ومنها السجلان المختاران معرفة مسبقة.
- المقياس WSS@95، واختصاراً لـ Work Saved over Sampling، يقارن ذلك بالقراءة العشوائية التي تحتاج في المتوسط إلى 95% من السجلات للوصول إلى 95% من الدراسات، فكانت النتيجة 92.2% من العمل.
- آخر دراستين احتاجتا إلى 413 سجلاً، أي أن النسبة الأخيرة هي الأصعب دائماً، وهذا مهم عند الحديث عن التوقف.

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

```python
"""Screening without AI: read the records in the order of the exported file and count how far you must go."""
import csv, sys
rows = list(csv.DictReader(open(sys.argv[1], encoding="utf-8")))
labels = [int(r["label_included"]) for r in rows]
n_rel, found = sum(labels), 0
print(f"records: {len(rows)}, relevant: {n_rel}")
for i, lab in enumerate(labels, start=1):
    found += lab
    if found == -(-95 * n_rel // 100):
        print(f"95% found after {i} records = {i / len(rows):.1%}")
        break
```

```bash
python fileorder.py van_de_Schoot_2017.csv
```

```text
records: 6189, relevant: 43
95% found after 5285 records = 85.4%
```

| الطريقة            | السجلات حتى 95% | النسبة من المجموعة | السجلات حتى 100% |
| ------------------ | --------------- | ------------------ | ---------------- |
| ASReview، Seed 42  | 176             | 2.8%               | 413              |
| ASReview، Seed 1   | 198             | 3.2%               | 410              |
| ASReview، Seed 2   | 198             | 3.2%               | 410              |
| ASReview، Seed 3   | 175             | 2.8%               | 371              |
| ترتيب الملف دون AI | 5,285           | 85.4%              | غير محسوب        |

![أعمدة أفقية لعدد السجلات المقروءة حتى إيجاد 95% من الدراسات المطلوبة: كل السجلات 6189، وترتيب الملف دون AI 5285 أي 85.4%، وASReview بأربع بذور 198 و198 و176 و175 أي بين 2.8% و3.2%](https://arabroot.io/content/images/2026/10/systematic-review-03-workload.webp)

بين 175 و198 سجلاً مع ASReview مقابل 5,285 سجلاً بترتيب الملف

والواجهة نفسها تعرض المحاكاة في قسم Simulations، ومخطط Recall فيها يقارن منحنى البرنامج بمنحنى القراءة العشوائية:

![لوحة محاكاة في ASReview LAB: Loss 0.010 وNDCG 0.703، ومخطط Recall يرتفع فيه منحنى Relevant by ASReview LAB بسرعة إلى أكثر من 30 سجلاً ذا صلة قبل السجل 120، بينما يبقى منحنى Random Relevant قرب الصفر حتى السجل 400](https://arabroot.io/content/images/2026/10/systematic-review-08-asreview-recall.webp)

مخطط Recall لمحاكاة البذرة 42 في واجهة ASReview LAB

### متى تتوقف؟

هنا أهم تحذير في المختبر كله: في المحاكاة نعرف أن عدد الدراسات المطلوبة 43، لذلك نعرف متى وجدناها كلها، أما في مراجعتك الحقيقية فلا تعرف العدد، فمتى تتوقف عن القراءة؟ [توثيق ASReview عن لوحة التقدم](https://asreview.readthedocs.io/en/stable/lab/progress.html?ref=arabroot.io) يعرف معيار التوقف Stopping Criterion بأنه حد لعدد السجلات غير ذات الصلة منذ آخر سجل ذي صلة، ويقول إنه غير مفعل افتراضياً، وإنك تضبطه من زر Set Threshold في اللوحة، وإن الحد المثالي ما زال موضوع بحث، ويقترح أن تختاره من خبرتك أو من محاكاة على موضوعات مشابهة. ورأينا في المحاكاة أن آخر دراستين جاءتا بعد أكثر من 200 سجل من الدراسة التي قبلهما، فالحد الصغير كان سيوقفك قبلهما.

⚠️

لا تقم بإيقاف الفرز عند أول سلسلة طويلة من السجلات غير ذات الصلة دون قاعدة كتبتها في البروتوكول مسبقاً، والسبب أن آخر الدراسات المطلوبة هي الأصعب وصولاً كما رأينا. اكتب في البروتوكول الأداة والنموذج وقاعدة التوقف، واذكرها في التقرير، فقائمة PRISMA 2020 تطلب ذكر أدوات الأتمتة المستخدمة في الفرز.

### مشكلات واجهتنا وحلولها

- **تحميل مجموعات SYNERGY يفشل:** الأمر `asreview simulate synergy:van_de_Schoot_2018` حاول تحميل المجموعة من Dataverse وفشل بالخطأ `405 Client Error: Method Not Allowed` بعد ثلاث محاولات، والحل أن تحمل ملف CSV للمجموعة بنفسك من [مستودع SYNERGY](https://github.com/asreview/synergy-dataset?ref=arabroot.io) أو من مستودع المجموعات القديم، ثم تمرر مسار الملف.
- **خادم المهام لا يعمل:** رسالة `Unable to startup the task server within the timeout period` ظهرت والجهاز مشغول بثلاث محاكاة، وبعد انتهائها وتحديد المنفذ بالمتغير `ASREVIEW_LAB_TASK_MANAGER_ENDPOINT` عملت الواجهة.
- **الطباعة على Windows:** مخرجات بعض الأوامر فيها رموز Unicode، فإذا ظهر خطأ `UnicodeEncodeError` فشغل Python بالخيار `-X utf8` أو اضبط `PYTHONIOENCODING=utf-8`.

## تقرير PRISMA 2020

PRISMA اختصار Preferred Reporting Items for Systematic reviews and Meta-Analyses، وهو دليل لكتابة تقرير المراجعة وليس لطريقة إجرائها، ونسخة 2020 منه تحل محل نسخة 2009، و[صفحته الرسمية](https://www.prisma-statement.org/prisma-2020?ref=arabroot.io) تتيح الورقة والقائمة الموسعة وقائمة الملخص وقوالب مخطط التدفق. وملخص الورقة الأصلية المنشورة في BMJ في 2021 يذكر أنها تقدم قائمة من 27 عنصراً، وقائمة مستقلة للملخص، ومخططات تدفق معدلة للمراجعات الجديدة والمحدثة. و[صفحة مخطط التدفق](https://www.prisma-statement.org/prisma-2020-flow-diagram?ref=arabroot.io) تقدم أربعة قوالب بحسب كون المراجعة جديدة أو محدثة، وكون المصادر قواعد بيانات وسجلات فقط أو معها مصادر أخرى، والمخطط يبين عدد السجلات التي حددت ودخلت واستبعدت وأسباب الاستبعاد. والشكل التالي يبين المخطط بأرقام مجموعة البيانات التي استخدمناها:

![مخطط تدفق بثلاث مراحل: التحديد 6189 سجلاً من قواعد البيانات، ثم الفرز 6189 سجلاً استبعد منها 5801 من العنوان والملخص، ثم 388 تقريراً بالنص الكامل استبعد منها 345 مع ملاحظة أن PRISMA يطلب ذكر سبب كل استبعاد، ثم 43 دراسة مشمولة، ومربع يذكر أن التقرير يجب أن يضيف عدد كل قاعدة بيانات والمكرر المحذوف وما حذفته أدوات الأتمتة](https://arabroot.io/content/images/2026/10/systematic-review-02-prisma.webp)

أرقام مجموعة van de Schoot 2017 في مخطط PRISMA، والمربعان الرماديان ما يجب أن تضيفه في تقريرك

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

## الخلاصة

- المراجعة المنهجية تبدأ ببروتوكول مكتوب قبل البحث، وتسجيله في PROSPERO للمراجعات الصحية مجاني ويجب قبل بدء استخلاص البيانات، وغير الصحية تسجل في OSF أو غيره.
- الفرز بمراجعين مستقلين هو المعيار، وRayyan يقدمه سحابياً بوضع معمى افتراضي وخطة مجانية محدودة، وASReview LAB يقدمه مفتوح المصدر على جهازك.
- في مختبرنا على مراجعة حقيقية من 6,189 سجلاً، وجد ASReview 95% من الدراسات المطلوبة بعد قراءة 175 إلى 198 سجلاً في أربع محاكاة، مقابل 5,285 سجلاً بترتيب الملف.
- قاعدة التوقف هي النقطة الأضعف في الفرز بمساعدة الذكاء الاصطناعي، فاكتبها في البروتوكول واذكر الأداة في تقرير PRISMA.

والخطوة التالية بعد المراجعة في هذه المرحلة هي كتابة مقترح البحث وطلب التمويل، وقد شرحناها في مقال [كيف تكتب مقترح البحث Research Proposal الذي يقنع الممول](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D9%83%D8%AA%D8%A8-%D9%85%D9%82%D8%AA%D8%B1%D8%AD-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-research-proposal-%D8%A7%D9%84%D8%B0%D9%8A-%D9%8A%D9%82%D9%86%D8%B9-%D8%A7%D9%84%D9%85%D9%85%D9%88%D9%84/).

## تدريب عملي

- حمل مجموعة بيانات أخرى من SYNERGY في مجالك، وشغل المحاكاة ببذرتين، واحسب متى تصل إلى 95% بالسكربت أعلاه.
- في جلسة فرز حقيقية، صنف سجلين ذوي صلة معرفة مسبقة قبل البدء، وقارن عدد السجلات العشوائية التي عرضت عليك بما رأيناه في جلستنا دون معرفة مسبقة.

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

أكتوبر 2026: كتابة المقال واختبار ASReview LAB 3.0.8 على Python 3.13 بجلسة فرز وأربع محاكاة على مجموعة van de Schoot 2017.