NERdME: a Named Entity Recognition Dataset for Indexing Research Artifacts in Code Repositories
تقدم الورقة البحثية NERdME، وهي مجموعة بيانات جديدة مكونة من 200 ملف README مشروحة يدويًا تحتوي على أكثر من 10,000 نطاق مصنف عبر 10 أنواع من الكيانات، والمصممة لسد الفجوة في استخراج المعلومات العلمية من خلال تمكين الفهرسة التلقائية للمستندات البحثية على مستوى التنفيذ في مستودعات الأكواد.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل عالم البحث العلمي كمكتبة ضخمة تعج بالحركة. لسنوات، كان أمناء المكتبات (والبرامج الحاسوبية) بارعين جداً في فهرسة الكتب (الأوراق العلمية المنشورة). إنهم يعرفون كيفية إيجاد العنوان، والمؤلف، والموضوع الرئيسي للكتاب.
لكن هناك مشكلة: حقائب الظهر ومجموعات الأدوات التي يستخدمها العلماء للقيام بالبحث الفعلي غالباً ما تُترك في كومة فوضوية في الزاوية. مجموعات الأدوات هذه هي مستودعات الكود (مثل GitHub) حيث تعيش البرمجيات والبيانات والتعليمات الفعلية.
تكمن المشكلة في أن التعليمات الخاصة بمجموعات الأدوات هذه مكتوبة في ملفات README. فكر في ملف README كأنه ملاحظة لاصقة ملصقة على صندوق أدوات. إنها مكتوبة بنص حر (Markdown)، مليئة بالمصطلحات المتخصصة، والروابط، والأوصاف العفوية. إنها فوضوية، وغير منظمة، ويصعب على الكمبيوتر قراءتها. إذا سألت كمبيوتراً: "أين مجموعة البيانات لهذا المشروع؟"، فقد يرتبك لأن الإجابة قد تكون مدفونة في جملة مثل: "لقد استخدمنا مجموعة بيانات 'COCO'، والتي يمكنك الحصول عليها من هنا."
إليك NERdME.
ما هو NERdME؟
NERdME يشبه دليل تدريب فائق الذكاء للحواسيب، يعلمها كيفية قراءة تلك الملاحظات اللاصقة الفوضوية (ملفات README) وإيجاد المكونات المهمة بداخلها.
قام المؤلفون بإنشاء مجموعة بيانات مكونة من 200 من ملفات README هذه، وقاموا بتحديد (توسيم) أكثر من 10,000 معلومة محددة يدوياً. لقد علموا الكمبيوتر كيف يرصد نوعين مختلفين تماماً من "المكونات":
- مكونات "الورقة العلمية": أشياء تجدها في كتاب رسمي، مثل اسم مؤتمر، أو منشور، أو ورشة عمل.
- مكونات "الكود": أشياء لن تجدها إلا في صندوق الأدوات، مثل البرمجيات المستخدمة، أو لغة البرمجة (مثل Python)، أو الترخيص (من يملك الكود)، أو مجموعة البيانات المستخدمة.
قبل ذلك، كانت الحواسيب بارعة في إيجاد مكونات "الورقة"، لكنها كانت سيئة جداً في إيجاد مكونات "الكود"، والعكس صحيح. NERdME هو الأول الذي يعلمها إيجاد كليهما في نفس الوقت.
كيف بنوا هذا؟
تخيل أنك تحاول تعليم روبوت كيفية تحديد الفواكه في سلة فواكه فوضوية.
- الجمع: ذهبوا إلى سوق ضخم عبر الإنترنت (GitHub) واختاروا 200 سلة معروفة بأنها تحتوي على فاكهة جيدة (مشاريع مرتبطة بأوراق علمية حقيقية).
- التوسيم (Annotation): استعانوا بثلاثة خبراء بشريين لكل سلة. قرأ هؤلاء الخبراء الملاحظات اللاصقة ووضعوا دوائر حول كل ذكر لـ "مجموعة بيانات" أو "برمجيات".
- الإجماع: إذا قام اثنان من الخبرة الثلاثة بوضع دائرة حول نفس الكلمة، يتعلم الروبوت أنها بالتأكيد "مجموعة بيانات". وإذا اختلفوا، يتجاهلها الروبوت لتجنب الارتباك. ضمن هذا أن تكون بيانات التدريب عالية الجودة.
ماذا اكتشفوا؟
اختبروا الروبوت باستخدام طريقتين:
- الروبوت "الذي يخمن" (نماذج LLM ذات القدرة الصفرية - Zero-shot): ذكاء اصطناٍ يعمل على تخمين الإجابات دون أي تدريب محدد على هذه الملفات. إنه كأن تسأل شخصاً ذكياً لم يرَ صندوق أدوات من قبل أن يخمن ما بداخله بمجرد النظر إلى صورة. كان أداؤه جيداً، لكنه فاته الكثير من التفاصيل.
- الروبوت "المُدرب" (نماذج Transformers التي خضعت لضبط دقيق): ذكاء اصطناعي درس ملفات الـ 200 الموسومة خصيصاً. لقد تعلم الأنماط.
النتائج:
- الروبوت المُدرب كان أفضل بكثير. لقد تعلم أن "Python" تعني عادةً لغة برمجة، بينما "COCO" تعني عادةً مجموعة بيانات.
- مشكلة "الذيل الطويل" (Long Tail): كان الروبوت رائعاً في إيجاد الأشياء الشائعة (مثل "البرمجيات" أو "مجموعات البيانات") لأنها تظهر كثيراً. لكنه عانى مع الأشياء النادرة (مثل "ورش العمل" أو "الأنطولوجيا") لأنها تظهر نادراً جداً. هذا يشبه طباخاً ماهراً في صنع البيتزا ولكنه لم يجرب أبداً صنع "السوفليه" لأنه لم يرَ الوصفة من قبل.
- تحدي الحدود: كان من الصعب على الروبوت معرفة أين يبدأ الاسم وأين ينتهي بالضبط. على سبيل المثال، هل الاسم هو "TensorFlow" أم مجرد "Tensor"؟ أظهرت مجموعة البيانات أن تحديد الحواف الدقيقة لهذه الأسماء أمر صعب.
لماذا يهم هذا الأمر؟ (اختبار التبعية)
لإثبات أن هذا لم يكن مجرد لعبة، أجروا رحلة بحث عن الكنز.
أخذوا أسماء "مجموعات البيانات" التي وجدها الروبوت في ملفات README وحاولوا مطابقتها مع سجلات حقيقية في قاعدة بيانات عالمية تسمى Zenodo.
- النتيجة: كان الروبوت جيداً بشكل مدهش في هذا! استطاع أخذ ذكر فوضوي مثل "مجموعة بيانات COCO" وربطه بنجاح بالسجل الرسمي لـ COCO في قاعدة البيانات.
- التشبيه: الأمر يشبه العث_ور على ملاحظة مكتوبة بخط اليد تقول "التفاحة الحمراء الكبيرة من البستان الذي يقع في نهاية الطريق" والنجاح في العث_ور على التفاحة ذاتها في كتالوج مستودع ضخم.
الصورة الكبيرة
NERdME هو جسر. إنه يربط بين العالم الرسمي للأوراق العلمية وبين العالم العملي الفوضوي لأكواد البرمجة.
من خلال تعليم الحواسيب فهم "الملاحظات اللاصقة" على مستودعات الكود، يمكننا:
- إيجاد الأدوات التي استخدمها العلماء تلقائياً.
- ربط الأوراق العلمية بالبيانات والكود الفعلي الذي تعتمد عليه.
- جعل البحث العلمي أكثر قابلية للتكرار (أي أسهل للآخرين لتكرار التجربة) لأن تعليمات "كيفية القيام بالأمر" أصبحت أخيراً مفهومة للآلات.
باختصار، NERdME هو القاموس الذي يساعد الحواسيب أخيراً على فهم التعليمات الواقعية الفوضوية التي يتركها العلماء وراءهم، محولاً كومة من الملاحظات اللاصقة الفوضوية إلى مكتبة منظمة جيداً من أدوات البحث.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.