code-search-net/code_search_net|代码检索数据集|自然语言处理数据集
收藏hugging_face2024-01-18 更新2024-06-15 收录
下载链接:
https://hf-mirror.com/datasets/code-search-net/code_search_net
下载链接
链接失效反馈资源简介:
CodeSearchNet corpus是一个包含200万对(注释,代码)的数据集,这些数据来自GitHub上的开源库。数据集支持多种编程语言,包括Go、Java、JavaScript、PHP、Python和Ruby。数据集的主要用途是支持CodeSearchNet挑战,探索使用自然语言进行代码检索的问题。数据集的结构包括代码函数及其文档,以及相关的元数据。数据集分为训练集、测试集和验证集。数据集的创建过程包括从GitHub收集数据、使用Treesitter进行标记化、过滤无文档的函数等步骤。
CodeSearchNet corpus是一个包含200万对(注释,代码)的数据集,这些数据来自GitHub上的开源库。数据集支持多种编程语言,包括Go、Java、JavaScript、PHP、Python和Ruby。数据集的主要用途是支持CodeSearchNet挑战,探索使用自然语言进行代码检索的问题。数据集的结构包括代码函数及其文档,以及相关的元数据。数据集分为训练集、测试集和验证集。数据集的创建过程包括从GitHub收集数据、使用Treesitter进行标记化、过滤无文档的函数等步骤。
提供机构:
code-search-net
原始信息汇总
CodeSearchNet 数据集概述
数据集描述
基本信息
- 数据集名称: CodeSearchNet
- 数据类型: 代码和文档对
- 语言: 代码(多种编程语言)
- 许可证: 其他
- 多语言性: 多语言
- 数据规模: 10K<n<100K, 100K<n<1M, 1M<n<10M
- 源数据: 原始数据
- 任务类别: 文本生成, 填充掩码
- 任务ID: 语言建模, 掩码语言建模
- PapersWithCode ID: codesearchnet
- 配置名称: all, go, java, javascript, php, python, ruby
数据实例
一个数据点包含函数代码及其文档,以及函数的元数据,如仓库名称等。
数据字段
id: 任意数字repository_name: GitHub仓库名称func_path_in_repository: 仓库中文件的路径func_name: 函数名称whole_func_string: 函数代码 + 文档language: 编程语言func_code_string: 函数代码func_code_tokens: 由Treesitter生成的代码标记func_documentation_string: 函数文档func_documentation_string_tokens: 由Treesitter生成的文档标记split_name: 数据分割名称(train, test, valid)func_code_url: GitHub上函数代码的URL
数据分割
- 训练集:
all: 1880853个样本, 5850604083字节java: 454451个样本, 1429272535字节go: 317832个样本, 738153234字节python: 412178个样本, 1559645310字节javascript: 123889个样本, 480286523字节ruby: 48791个样本, 110681715字节php: 523712个样本, 1532564870字节
- 测试集:
all: 100529个样本, 308626333字节java: 26909个样本, 82377246字节go: 14291个样本, 32286998字节python: 22176个样本, 84342064字节javascript: 6483个样本, 24056972字节ruby: 2279个样本, 5359280字节php: 28391个样本, 80203877字节
- 验证集:
all: 89154个样本, 274564382字节java: 15328个样本, 42358315字节go: 14242个样本, 26888527字节python: 23107个样本, 92154786字节javascript: 8253个样本, 30168242字节ruby: 2209个样本, 4830744字节php: 26015个样本, 78163924字节
数据集大小
- 下载大小: 5117370511字节
- 数据集大小: 6433794798字节
数据集创建
数据收集和规范化
数据集从公开可用的非fork GitHub仓库收集,使用libraries.io识别至少被一个其他项目使用的项目,并按星标和fork数量排序。移除没有明确允许重新分发许可证的项目。使用Treesitter对所有Go、Java、JavaScript、Python、PHP和Ruby函数及其文档进行标记化。
数据过滤
移除没有文档的函数,截断文档到第一个完整段落,移除短于三个标记的文档和短于三行的函数实现,移除名称包含“test”的函数,移除构造函数和标准扩展方法,移除重复和近似重复的函数。
源语言生产者
开源贡献者生成了代码和文档,数据集是自动收集和预处理的。
AI搜集汇总
数据集介绍

构建方式
CodeSearchNet数据集的构建基于从公开的非分支GitHub仓库中收集的开源代码库。通过libraries.io筛选出至少被一个项目使用的项目,并根据星标和分叉数进行排序。随后,使用Treesitter解析器对Go、Java、JavaScript、Python、PHP和Ruby等编程语言的函数及其文档进行标记化处理。数据集经过多重过滤,包括去除无文档的函数、截断文档至首段、删除短于三行的函数实现、去除测试函数及构造函数等,最终形成代码与文档的配对数据集。
特点
CodeSearchNet数据集的显著特点在于其多语言支持,涵盖了Go、Java、JavaScript、PHP、Python和Ruby等多种编程语言。每个数据点包含函数代码、文档、元数据(如仓库名称、函数路径等),并且经过严格的预处理,确保数据的质量和一致性。此外,数据集的规模较大,包含数百万个代码与文档的配对,适用于多种自然语言处理任务,如代码检索和语言建模。
使用方法
CodeSearchNet数据集可用于训练和评估代码检索模型,支持自然语言与代码之间的语义匹配任务。用户可以通过HuggingFace的datasets库加载该数据集,并根据需要选择特定的编程语言配置。数据集提供了训练、测试和验证三个数据分割,用户可以根据任务需求选择合适的数据子集。此外,数据集的每个实例都包含详细的元数据,如函数在仓库中的路径和GitHub链接,便于进一步分析和使用。
背景与挑战
背景概述
CodeSearchNet数据集由Hamel Husain等人于2019年创建,旨在支持代码检索领域的研究。该数据集包含了从GitHub上公开的开源库中提取的200万对(注释,代码)样本,涵盖了Go、Java、JavaScript、PHP、Python和Ruby等多种编程语言。CodeSearchNet的核心研究问题是通过自然语言检索代码,推动了代码检索与自然语言处理技术的结合。该数据集的创建不仅为代码检索任务提供了丰富的资源,还通过CodeSearchNet挑战赛促进了相关领域的技术进步。
当前挑战
CodeSearchNet数据集在构建过程中面临了多个挑战。首先,数据集的构建需要从大量的开源代码库中筛选出符合条件的代码和注释对,这一过程涉及复杂的预处理和过滤步骤,如去除无注释的函数、短函数、测试函数等。其次,代码与注释之间的语义对齐问题也是一个重要的挑战,如何确保代码与注释之间的语义一致性是提升检索效果的关键。此外,数据集的多语言特性也增加了模型训练的复杂性,需要针对不同编程语言设计相应的处理方法。
常用场景
经典使用场景
CodeSearchNet数据集的经典使用场景主要集中在代码检索与自然语言处理领域。通过该数据集,研究者可以训练模型以实现自然语言查询与代码片段之间的语义匹配,从而支持代码搜索、代码生成以及代码文档自动生成等任务。此外,该数据集还可用于构建编程语言的预训练模型,提升代码理解和生成的准确性。
衍生相关工作
基于CodeSearchNet数据集,研究者们开展了多项相关工作。例如,有研究利用该数据集训练代码检索模型,提升代码搜索的准确性;还有研究通过该数据集进行编程语言的预训练,提升代码理解和生成的性能。此外,该数据集还激发了关于代码文档自动生成、代码补全等领域的研究,推动了代码智能化的进一步发展。
数据集最近研究
最新研究方向
在编程语言与自然语言处理的交叉领域,CodeSearchNet数据集的最新研究方向主要集中在代码检索与自然语言查询的语义匹配上。该数据集通过提供多语言的代码与文档对,支持了代码检索任务中的语言建模与掩码语言建模等前沿技术。研究者们正致力于开发更高效的模型,以实现自然语言查询与代码片段之间的精确匹配,从而提升代码搜索的准确性与用户体验。这一研究方向不仅推动了编程语言理解的技术进步,还为软件开发中的自动化工具提供了新的可能性,具有重要的学术与工业应用价值。
以上内容由AI搜集并总结生成



