نموذج هيكل للتعديلات السياقية في الكود

نتناول مشكلة التنبؤ بإكمال التعديلات استنادًا إلى نموذج تم تدريبه على تعديلات سابقة. عند وجود جزء من كود تم تعديله جزئيًا، هدفنا هو التنبؤ بإكمال التعديل للجزء المتبقي من الكود. نشير إلى هذه المهمة باسم مهمة إكمال التعديل (EditCompletion) ونقدم نهجًا جديدًا لمعالجة هذه المشكلة. الفكرة الرئيسية هي تمثيل التعديلات الهيكلية مباشرة. هذا يسمح لنا بنمذجة احتمالية التعديل نفسه بدلاً من تعلم احتمالية الكود المعدل. نمثل عملية التعديل كمسار في شجرة البناء النحوية المجردة (Abstract Syntax Tree - AST) للبرنامج، يبدأ المسار من مصدر التعديل إلى هدفه.نقوم بتقييم شامل، مقارنة بين نهجنا ومجموعة متنوعة من طرق التمثيل والنمذجة التي تعتمد على عدة نماذج قوية مثل LSTM و Transformers والـ CRF العصبي. تظهر تجاربنا أن نموذجنا حقق زيادة بنسبة 28٪ في الأداء النسبي مقارنة بالأنماط المتسلسلة الأكثر تقدمًا، ودقة أعلى بمقدار ضعفين من النماذج النحوية التي تتعلم إنشاء الكود المعدل، بدلاً من نمذجة التعديلات مباشرة.كودنا ومجموعتنا的数据集和训练好的模型可在 https://github.com/tech-srl/c3po/ 公开获取。请注意,最后一句中包含中文字符,以下是修正后的翻译:كودنا ومجموعتنا البيانات ونماذجنا المدربة متاحة بشكل عام على الرابط:https://github.com/tech-srl/c3po/ .