claudios/code_search_net
收藏Hugging Face2024-06-04 更新2024-06-12 收录
下载链接:
https://hf-mirror.com/datasets/claudios/code_search_net
下载链接
链接失效反馈官方服务:
资源简介:
CodeSearchNet数据集是一个包含200万(注释,代码)对的数据集,这些数据来自GitHub上的开源库。数据集支持多种编程语言,包括Go、Java、JavaScript、PHP、Python和Ruby。该数据集主要用于代码检索任务,特别是使用自然语言进行代码检索。数据集的结构包括函数代码及其文档,以及函数的元数据,如提取自哪个仓库。数据集分为训练集、测试集和验证集三个部分。
CodeSearchNet数据集是一个包含200万(注释,代码)对的数据集,这些数据来自GitHub上的开源库。数据集支持多种编程语言,包括Go、Java、JavaScript、PHP、Python和Ruby。该数据集主要用于代码检索任务,特别是使用自然语言进行代码检索。数据集的结构包括函数代码及其文档,以及函数的元数据,如提取自哪个仓库。数据集分为训练集、测试集和验证集三个部分。
提供机构:
claudios原始信息汇总
数据集概述
数据集名称: CodeSearchNet
数据集ID: codesearchnet
数据集别名: pretty_name: CodeSearchNet
数据集语言:
- 代码(code)
数据集许可证:
- 其他(other)
数据集多语言性:
- 多语言(multilingual)
数据集大小类别:
- 100K<n<1M
- 10K<n<100K
- 1M<n<10M
数据集源:
- 原始(original)
数据集任务类别:
- 文本生成(text-generation)
- 填充掩码(fill-mask)
数据集任务ID:
- 语言建模(language-modeling)
- 掩码语言建模(masked-language-modeling)
数据集详细信息
数据集配置和特征:
-
配置名称: all
- 特征:
- repository_name: 字符串
- func_path_in_repository: 字符串
- func_name: 字符串
- whole_func_string: 字符串
- language: 字符串
- func_code_string: 字符串
- func_documentation_string: 字符串
- func_code_url: 字符串
- 分割:
- train: 1880853个示例,3722956913字节
- test: 100529个示例,196789933字节
- validation: 89154个示例,176665333字节
- 下载大小: 1374970394字节
- 数据集大小: 4096412179字节
- 特征:
-
配置名称: go
- 特征:
- repository_name: 字符串
- func_path_in_repository: 字符串
- func_name: 字符串
- whole_func_string: 字符串
- language: 字符串
- func_code_string: 字符串
- func_documentation_string: 字符串
- func_code_url: 字符串
- 分割:
- train: 317832个示例,409170909字节
- test: 14291个示例,17800759字节
- validation: 14242个示例,15005438字节
- 下载大小: 150594843字节
- 数据集大小: 441977106字节
- 特征:
-
配置名称: java
- 特征:
- repository_name: 字符串
- func_path_in_repository: 字符串
- func_name: 字符串
- whole_func_string: 字符串
- language: 字符串
- func_code_string: 字符串
- func_documentation_string: 字符串
- func_code_url: 字符串
- 分割:
- train: 454451个示例,908426737字节
- test: 26909个示例,51425767字节
- validation: 15328个示例,27050061字节
- 下载大小: 292501337字节
- 数据集大小: 986902565字节
- 特征:
-
配置名称: javascript
- 特征:
- repository_name: 字符串
- func_path_in_repository: 字符串
- func_name: 字符串
- whole_func_string: 字符串
- language: 字符串
- func_code_string: 字符串
- func_documentation_string: 字符串
- func_code_url: 字符串
- 分割:
- train: 123889个示例,290274945字节
- test: 6483个示例,14699408字节
- validation: 8253个示例,18327918字节
- 下载大小: 120536692字节
- 数据集大小: 323302271字节
- 特征:
-
配置名称: php
- 特征:
- repository_name: 字符串
- func_path_in_repository: 字符串
- func_name: 字符串
- whole_func_string: 字符串
- language: 字符串
- func_code_string: 字符串
- func_documentation_string: 字符串
- func_code_url: 字符串
- 分割:
- train: 523712个示例,955464342字节
- test: 28391个示例,50005248字节
- validation: 26015个示例,48431131字节
- 下载大小: 346362115字节
- 数据集大小: 1053900721字节
- 特征:
-
配置名称: python
- 特征:
- repository_name: 字符串
- func_path_in_repository: 字符串
- func_name: 字符串
- whole_func_string: 字符串
- language: 字符串
- func_code_string: 字符串
- func_documentation_string: 字符串
- func_code_url: 字符串
- 分割:
- train: 412178个示例,1086892447字节
- test: 22176个示例,59417109字节
- validation: 23107个示例,64756973字节
- 下载大小: 435192611字节
- 数据集大小: 1211066529字节
- 特征:
-
配置名称: ruby
- 特征:
- repository_name: 字符串
- func_path_in_repository: 字符串
- func_name: 字符串
- whole_func_string: 字符串
- language: 字符串
- func_code_string: 字符串
- func_documentation_string: 字符串
- func_code_url: 字符串
- 分割:
- train: 48791个示例,72727533字节
- test: 2279个示例,3441642字节
- validation: 2209个示例,3093812字节
- 下载大小: 29488621字节
- 数据集大小: 79262987字节
- 特征:
数据集配置名称:
- all
- go
- java
- javascript
- php
- python
- ruby
搜集汇总
数据集介绍

构建方式
CodeSearchNet语料库的构建源于对开源生态系统中代码与自然语言语义对齐的探索。该数据集通过系统性地从GitHub上非分叉的公共开源仓库中采集函数及其对应的文档字符串,并利用libraries.io筛选出至少被一个其他项目依赖且按星标与分支数排序的流行项目。为确保合规性,仅保留具有明确允许再分发许可的仓库。随后,借助GitHub的通用解析器Treesitter对Go、Java、JavaScript、Python、PHP和Ruby六种编程语言的函数进行解析与分词。在过滤阶段,剔除无文档注释的函数,将文档截断至首段完整段落,移除文档少于三个令牌或函数实现少于三行的样本,并排除名称含“test”的函数、构造函数及标准扩展方法,最终通过去重保留唯一版本,形成约200万对高质量的(注释,代码)配对数据集。
使用方法
使用CodeSearchNet数据集进行模型训练或评估时,可通过Hugging Face的datasets库便捷加载。用户可根据研究需求选择单一语言配置(如'python')或使用'all'配置合并所有语言数据。加载时需指定对应的配置名称及所需的数据分片(如train、validation或test)。数据包含repository_name、func_code_string、func_documentation_string等关键字段,可直接用于构建代码生成、文档补全或代码-文本检索模型。由于数据集已处理为Parquet格式,用户无需执行额外的解包或安全验证步骤,即可快速迭代实验。对于需要令牌级信息的任务,可自行使用解析器对func_code_string或func_documentation_string进行分词处理,以适应特定模型的输入格式。
背景与挑战
背景概述
CodeSearchNet数据集由Hamel Husain、Ho-Hsiang Wu等研究人员于2019年提出,源自GitHub与微软研究院的协作,旨在推动自然语言与源代码跨模态理解的研究。该数据集从GitHub上数百万个开源非分叉仓库中,利用Treesitter解析器提取Go、Java、JavaScript、PHP、Python及Ruby六种编程语言的函数及其文档字符串,构建了约200万个(注释,代码)配对样本。其核心研究问题聚焦于语义代码检索,即通过自然语言查询精准匹配相关代码片段,为代码语言建模与掩码语言建模任务提供了标准化基准。CodeSearchNet的发布显著促进了程序语言处理领域的发展,成为评估代码检索模型性能的标杆数据集,并催生了多项后续研究。
当前挑战
CodeSearchNet所应对的领域挑战在于弥合自然语言描述与代码语义之间的鸿沟,传统文本检索方法难以捕捉代码的结构化逻辑与抽象意图,需设计能理解编程语言语法的深度学习模型。在数据集构建过程中,挑战尤为严峻:首先,从海量仓库中筛选出含许可证且允许分发的代码,剔除了大量无文档或文档过短的函数;其次,需通过启发式正则表达式精确提取文档字符串的首段,并过滤掉构造函数、测试函数及长度不足的函数实现;最后,还需移除重复或近似重复的代码片段,确保数据质量与多样性,这些步骤均依赖自动化工具与严格规则,平衡了规模与纯净度。
常用场景
经典使用场景
CodeSearchNet数据集在程序语言理解与代码智能领域占据着举足轻重的地位,其核心应用场景聚焦于语义级别的代码检索任务。该数据集精心构建了跨越Go、Java、JavaScript、PHP、Python及Ruby六种主流编程语言的数百万个(注释,代码)配对实例,为研究者提供了规模宏大且结构规整的语料库。通过将自然语言查询与相应函数实现进行对齐,CodeSearchNet使得训练模型能够理解代码的功能语义而非仅仅依赖语法匹配成为可能,从而成为评估和推动语义代码搜索技术发展的标杆性基准。
解决学术问题
该数据集在学术界主要解决了代码与自然语言之间语义鸿沟这一长期存在的关键难题。传统方法往往依赖于关键词匹配或简单的文本相似度,难以捕捉代码的深层意图与功能。CodeSearchNet通过提供大规模、高质量的双模态配对数据,为深度神经网络学习从自然语言描述到代码实现的跨模态映射提供了坚实的训练基础。它推动了代码表示学习、多模态语义对齐以及神经机器翻译在编程语言领域的应用研究,使得模型能够更精准地理解开发者意图并返回功能相关的代码片段,显著提升了代码检索的召回率与精确度。
实际应用
在实际应用层面,CodeSearchNet所催生的技术已深度融入现代软件开发工具链之中。基于该数据集训练的模型被广泛部署于智能代码补全、API推荐以及自动化文档生成等场景。例如,集成开发环境(IDE)中的智能搜索功能能够根据开发者输入的自然语言描述,如“读取CSV文件并返回DataFrame”,即时推荐对应的函数或代码模板。此外,在代码审查与维护过程中,该技术能够辅助开发者快速定位实现特定功能的代码片段,极大提升了软件开发的效率与质量,降低了知识检索的成本。
数据集最近研究
最新研究方向
CodeSearchNet数据集在代码智能领域的前沿研究聚焦于代码语义检索与多语言代码理解。随着大语言模型的崛起,该数据集被广泛用于预训练代码生成模型(如CodeBERT、GraphCodeBERT)的基准测试,推动代码与自然语言之间的跨模态对齐研究。近期热点包括利用对比学习优化代码-文档对的嵌入空间,以及探索代码结构(如抽象语法树)对检索性能的影响。该数据集为评估语义代码搜索能力提供了标准化平台,其多语言特性(覆盖Go、Java、Python等六种语言)促进了跨编程语言的迁移学习研究,对提升开发者效率和自动化代码理解具有深远意义。
以上内容由遇见数据集搜集并总结生成



