HyperAIHyperAI
منذ 17 أيام

التدريب متعدد اللغات في هندسة البرمجيات

Toufique Ahmed, Premkumar Devanbu
التدريب متعدد اللغات في هندسة البرمجيات
الملخص

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