摘要
arXiv:2503.22776v1 宣告类型: cross
摘要: 代码迁移是在不同编程语言之间迁移代码库。最近,大型语言模型(LLMs)在软件挖掘方面取得了显著进展。然而,处理源代码的语法结构仍然是一项挑战。经典的方法依靠复杂的模型架构和损失函数,使得它们难以集成到LLM的训练中。本文采用上下文学习(ICL),直接将任务样例集成到输入上下文中,在预训练的LLM中后插入代码结构知识。我们从信息论的角度回顾了ICL中的样例选择,提议基于信息覆盖的项目选择比传统基于相似性和多样性的方法更具精确性和普遍性。为了解决量化信息覆盖的挑战,我们引入了一个代理度量,抽象语法树(CAST)覆盖度。此外,我们为CAST覆盖度最大化制定了不可约问题,并证明它是标准的子模最大化问题。因此,我们提出了一个贪婪算法来实现CAST子模最大化,该算法在多项式时间复杂性内理论上保证了(1-1/e)近似解。我们的方法是第一个在测试时将代码结构知识后插入现有LLM的无训练和模型无关的方法。实验结果表明,我们的方法显著提高了LLM的性能,并揭示了两个有意义的见解:1)代码结构知识可以在推理期间被有效地后插入到预训练的LLM中,即使在训练过程中被忽视;2)扩大模型规模或训练数据并不会导致代码结构知识的产生,强调了明确考虑代码语法结构的必要性。