ChatDANCE:基于 ChatGPT 的语义代码搜索数据增强探索
软件工程
2024-08-20 v2
摘要
代码搜索在软件开发中发挥着关键作用,使开发人员能够使用自然语言查询来检索和重用代码。尽管随着高质量数据量的增加,代码搜索模型的性能不断提升,但获取此类数据具有挑战性和高成本。最近,大型语言模型(LLM)如 ChatGPT 在自然语言和编程语言的理解与生成方面取得了显著进展,提供了用户友好的交互方式。鼓舞人心地,我们提出了一种新方法 ChatDANCE,该方法利用大型语言模型生成的高质量且多样化的增强数据,并通过过滤机制消除低质量的增强数据。具体而言,我们首先提出了一套专为源代码和查询设计的 ChatGPT 提示规则。然后,我们根据相应的提示利用 ChatGPT 重写代码和查询,并提出一种过滤机制,通过训练基于 backbone 模型 UniXcoder 的 cross-encoder 来过滤匹配得分较低的代码和查询对。最后,我们使用获取的高质量增强数据重新训练 backbone 模型。实验结果表明,ChatDANCE 实现了最先进的性能,将最佳基线模型的 R@1 提升了 13.2%,MRR 提升了 7%。意外地发现,增强-过滤-再训练策略使 backbone 模型(UniXcoder)能够自我增长。此外,广泛的实验表明各组件的有效性,ChatDANCE 在不同超参数设置下表现稳定。我们还进行了定性和定量分析,以探讨 ChatDANCE 良好工作的原因,发现其学习了更均匀的表示分布,并有效地对齐了代码和查询空间。
关键词
引用
@article{arxiv.2408.05542,
title = {You Augment Me: Exploring ChatGPT-based Data Augmentation for Semantic Code Search},
author = {Yanlin Wang and Lianghong Guo and Ensheng Shi and Wenqing Chen and Jiachi Chen and Wanjun Zhong and Menghan Wang and Hui Li and Hongyu Zhang and Ziyu Lyu and Zibin Zheng},
journal= {arXiv preprint arXiv:2408.05542},
year = {2024}
}
备注
Accepted at ICSME 2023