本技术提供了一种基于知识蒸馏的跨语言代码注释生成方法,旨在解决现有技术中低资源编程语言注释生成效果较差的问题。本方法首先通过构建高资源编程语言(即具备大量训练数据的语言)的代码‑注释对数据集,对高质量的注释生成进行预训练与微调,形成教师模型。随后通过知识蒸馏技术,将教师模型的知识迁移至针对低资源编程语言(即训练数据稀缺的语言)的学生模型中,学生模型通过学习教师模型生成的软标签和硬标签逐步提高其注释生成能力。训练好的学生模型能够高效地为低资源编程语言生成高质量的代码注释,且具备跨语言适应能力。该方法有效提升了低资源语言代码注释的准确性和可读性,且大大降低了低资源数据的依赖性,具备广泛的应用前景。
背景技术
在软件开发和维护过程中,代码注释是理解和维护代码的重要工具之一。高质量的代码注释可以显著提高代码的可读性,并为后续开发和调试提供重要参考。然而,手工撰写代码注释费时费力,且容易遗漏或不准确。因此,自动化生成代码注释成为当前研究的重要方向。
目前,基于深度学习的代码注释生成技术取得了显著进展,特别是对于高资源编程语言(如Python、Java等),由于其拥有大量的开源项目和丰富的训练数据,已有的自动注释生成模型可以较为准确地生成代码对应的注释。这些模型通过学习大规模代码-注释对,能够生成符合代码语义的自然语言描述。然而,对于低资源编程语言(如Ruby),由于训练数据稀缺,注释生成的效果往往不理想。
跨语言代码注释生成是解决这一问题的一种潜在方案。通过从高资源语言中获取知识,并将这些知识迁移到低资源语言,可以有效提升低资源语言的代码注释生成能力。知识蒸馏是一种常用的知识迁移技术,能够将大型、高精度的教师模型中的知识压缩并传递到较小的学生模型中,使其能够在有限资源条件下实现较高的性能。
然而,现有的方法通常使用多语言联合训练的方式,试图直接在多种语言上同时训练模型。这种方法尽管在多语言环境中有一定效果,但当目标是优化特定低资源语言的注释生成时,模型可能会因为高资源语言的干扰而无法达到预期效果。具体来说,在多语言联合训练中,模型同时学习高资源语言和低资源语言的特征。这种情况下,高资源语言的丰富特征和语法结构可能主导模型的学习过程,使模型倾向于更频繁地关注这些高资源语言的模式,而忽略低资源语言的独特特征。由于数据分布不均衡,模型对低资源语言的处理会变得不够精准,导致注释生成效果较差。因此,专门针对高资源语言和低资源语言的差异设计一种新的知识蒸馏方法,成为提高低资源语言代码注释生成效果的有效途径。本发明提出的方案,通过知识蒸馏的方式,将高资源语言训练出的教师模型的知识逐步迁移到低资源语言的学生模型中。该方法能够有效减少联合训练中数据分布不均衡的干扰,因为学生模型只专注于吸收来自高资源语言教师模型的精华知识,而不会直接学习高资源语言的数据分布,从而保留低资源语言特有的特征,提升生成的注释质量。
实现思路