一句话:利用不同语言中同功能代码与标识符命名相似性,以多语言数据增强软件工程任务性能。
论文关注软件工程任务中高质量标注数据稀缺且分布不均的问题:Ruby 等语言数据较少,JavaScript 等语言数据可能偏向某些应用领域而多样性不足。作者观察到,不同编程语言中实现相同功能的代码颇为相似,尤其会保留标识符命名模式,并指出标识符对软件工程任务训练非常重要。基于这一现象,论文提出利用多语言训练数据来扩充和增强数据,以缓解单语言数据瓶颈。他们在代码摘要、代码检索和函数命名三个任务上开展研究,结果表明跨语言训练数据能够提升性能,且该方法与不同任务、语言和机器学习模型具有广泛兼容性。
Well-trained machine-learning models, which leverage large amounts of open-source software data, have now become an interesting approach to automating many software engineering tasks. Several SE tasks have all been subject to this approach, with performance gradually improving over the past several years with better models and training methods. More, and more diverse, clean, labeled data is better for training; but constructing good-quality datasets is time-consuming and challenging. Ways of augmenting the volume and diversity of clean, labeled data generally have wide applicability. For some languages (e.g., Ruby) labeled data is less abundant; in others (e.g., JavaScript) the available data maybe more focused on some application domains, and thus less diverse. As a way around such data bottlenecks, we present evidence suggesting that human-written code in different languages (which performs the same function), is rather similar, and particularly preserving of identifier naming patterns; we further present evidence suggesting that identifiers are a very important element of training data for software engineering tasks. We leverage this rather fortuitous phenomenon to find evidence that available multilingual training data (across different languages) can be used to amplify performance. We study this for 3 different tasks: code summarization, code retrieval, and function naming. We note that this data-augmenting approach is broadly compatible with different tasks, languages, and machine-learning models.