本发明提出了一种基于迭代对比学习的代码重排方法及系统,包括:获取编程问题对应的待排序候选代码;利用程序转换技术扩增候选代码;将扩增后的候选代码输入至训练后的排序模型中,对每个代码进行排序;取所得序列中,排序得分最高的代码作为所述编程问题的最后推荐的代码。本发明通过迭代训练两个损失,即鉴别损失和对齐损失,能够发挥对比学习的能力增强代码排序模型的性能,相比于先前基于单元测试执行的方法,避免了执行代码执行的安全问题和用户提供单元测试的困难;相比于先前简单的基于分类的方法,迭代训练使得本发明的排序模型不仅注意代码的表现形式,更加习得代码的语义特征,进而排名更精确。
📄 2023101999394
📂 G06F7_08
👤 山东师范大学
📅 2023-03-06