five

CodeSearchNet

收藏
arXiv2025-09-30 收录
下载链接:
https://github.com/github/codesearchnet
下载链接
链接失效反馈
官方服务:
资源简介:
该数据集名为CodeSearchNet,专为代码搜索任务设计,涵盖了多种编程语言及其上下文信息。此外,该数据集还可用于生成抽象语法树(ASTs),以便对解析方法进行比较分析。其规模较大,主要针对代码搜索这一任务。

This dataset, named CodeSearchNet, is specifically designed for code search tasks, covering multiple programming languages and their contextual information. Additionally, it can be used to generate abstract syntax trees (ASTs) for comparative analysis of parsing methods. It has a large scale and is primarily targeted at the code search task.
搜集汇总
数据集介绍
main_image_url
构建方式
CodeSearchNet数据集的重建基于一个核心洞察:随着软件演化,人工撰写的代码注释常与代码产生语义不一致,从而制约预训练代码模型的效果。研究团队利用大语言模型(GPT-3.5-turbo)为CodeSearchNet中约207万对代码-注释样本重新生成注释,替代原始人工注释。所有编程语言(Java、Python、PHP、JavaScript、Go、Ruby)均采用统一的提示模板,要求模型为给定方法生成一句话描述,并将输出长度限制在30个token以内,以确保与人工注释的长度水平相当。重建过程总计耗费约2000美元的API调用成本,最终形成了名为cgpt-CSN的全新预训练数据集。
特点
该数据集最显著的特征在于其注释与代码之间卓越的语义一致性。通过引入两项无参考评估指标——代码-注释不一致性检测(IncRate)与语义代码搜索(MRR),研究发现GPT-3.5-turbo生成的注释不一致率仅为1.30%,远低于人工注释的15.05%;MRR得分高达0.9562,显著优于人工注释的0.8165。人工评估同样证实,LLM生成的注释在自然性、一致性和实用性三个维度均超越人工注释。此外,这些注释展现出更丰富的词汇多样性,体现了大语言模型在语义理解与表达上的深层优势。
使用方法
该数据集主要用于预训练代码智能模型,尤其适用于依赖自然语言与代码跨模态对齐的任务。研究者以CodeT5为基准模型,使用cgpt-CSN进行预训练,并在代码摘要、代码生成、代码翻译、代码精炼和克隆检测五项下游任务上评估效果。实验表明,在代码摘要和NL到代码生成等自然语言相关任务中,使用重建数据集预训练的模型在USE和MRR等指标上显著优于原始版本;代码翻译任务亦获得提升。然而,对于代码精炼和克隆检测这类更依赖代码结构语义的任务,改进幅度有限。该数据集为探索大语言模型在训练数据质量优化中的潜力提供了实证基础。
背景与挑战
背景概述
CodeSearchNet数据集由Husain等人于2019年提出,旨在为语义代码搜索任务提供大规模、多语言的代码-注释配对数据,涵盖Java、Python、Go等六种编程语言。该数据集由多个研究机构联合构建,核心研究问题在于如何利用自然语言与编程语言之间的语义桥梁,提升预训练代码模型在代码摘要、生成、翻译等下游任务上的表现。CodeSearchNet的发布极大推动了代码智能领域的发展,成为CodeBERT、GraphCodeBERT、CodeT5等经典模型的标准预训练语料。然而,随着软件持续演进,人工撰写的注释常与代码出现语义不一致,导致数据质量下降,进而制约模型性能的进一步提升。
当前挑战
CodeSearchNet面临的核心挑战在于数据质量与评估方法的双重困境。首先,领域问题方面,人工注释随软件版本迭代而滞后的现象普遍存在,研究表明超过三分之一的Java注释未能准确描述核心功能,这种语义不一致性严重损害了预训练模型的训练效果。其次,构建过程中,传统基于参考的评估指标(如BLEU、ROUGE)无法直接评判注释本身的质量,缺乏有效的无参考度量手段来区分人工注释与模型生成注释的优劣。此外,大规模替换注释需要高昂的API调用成本,如何在有限预算下平衡生成质量与数据规模,亦是重建数据集时必须克服的工程挑战。
常用场景
经典使用场景
CodeSearchNet 数据集最经典的使用场景在于为预训练代码模型提供大规模、多语言的代码-注释配对数据,作为编程语言与自然语言之间的语义桥梁。该数据集涵盖 Ruby、JavaScript、Go、Python、Java 和 PHP 六种主流编程语言,广泛用于代码摘要、代码生成、代码搜索等代码智能任务的模型预训练与评估。研究者常利用该数据集训练诸如 CodeBERT、CodeT5 等预训练模型,以提升模型对代码语义的理解与生成能力。
解决学术问题
该数据集有效解决了代码智能领域中高质量代码-注释配对数据稀缺的问题,尤其是传统人工撰写注释在软件演化过程中易与代码产生语义不一致的挑战。研究表明,CodeSearchNet 中超过三分之一的注释未能准确描述核心功能,导致模型性能退化。通过引入大语言模型生成的注释替代原始人工注释,显著提升了注释与代码的语义一致性,从而在代码摘要、代码生成和代码翻译等任务上取得了更优的性能,推动了预训练数据质量研究的范式转变。
衍生相关工作
CodeSearchNet 数据集衍生了一系列经典工作,包括 CodeBERT、GraphCodeBERT、CodeT5 和 UniXcoder 等预训练模型,这些模型分别通过引入数据流图、标识符感知掩码和跨模态预训练等技术,在代码理解与生成任务上取得了突破。此外,基于该数据集还催生了代码搜索基准 CodeXGLUE 以及针对注释质量评估的无参考度量方法(如代码-注释不一致检测和语义代码搜索),为后续研究提供了标准化评估框架和高质量训练数据重构思路。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务