17 天前

软件工程领域的多语言训练

Toufique Ahmed, Premkumar Devanbu
软件工程领域的多语言训练
摘要

经过充分训练的机器学习模型,借助大量开源软件数据,如今已成为自动化诸多软件工程(SE)任务的一种引人注目的方法。近年来,随着模型架构与训练方法的不断优化,该方法在多个软件工程任务中的性能持续提升。高质量、多样化的清洗后标注数据更有利于模型训练,然而构建此类数据集既耗时又具有挑战性。因此,扩充高质量标注数据的规模与多样性,具有广泛的适用价值。然而,对于某些编程语言(如 Ruby),标注数据相对稀缺;而对于另一些语言(如 JavaScript),现有数据可能过度集中于特定应用领域,导致数据多样性不足。为突破此类数据瓶颈,我们提出证据表明:不同编程语言中实现相同功能的人工编写代码在结构上具有高度相似性,尤其在标识符命名模式方面表现出显著的保留性。我们进一步提供了证据,证明标识符是软件工程任务训练数据中极为关键的组成部分。基于这一偶然但重要的现象,我们发现跨多种编程语言的现有多语言训练数据,可用于有效提升模型性能。我们在三项不同任务上验证了这一方法:代码摘要生成、代码检索与函数命名。结果表明,该数据增强策略在不同任务、不同编程语言以及多种机器学习模型之间均具有良好的兼容性。