code-docstring-corpus
收藏github2024-04-19 更新2024-05-31 收录
下载链接:
https://github.com/EdinburghNLP/code-docstring-corpus
下载链接
链接失效反馈官方服务:
资源简介:
该数据集包含150370个函数声明、函数文档字符串和函数体的三元组,用于自动化代码文档(code2doc)和自动化代码生成(doc2code)任务。数据集通过从开源GitHub仓库中抓取并预处理Python代码得到,包括多个数据集分割和额外的仅代码数据集及其相应的合成文档字符串。
This dataset comprises 150,370 triples of function declarations, function docstrings, and function bodies, designed for automated code documentation (code2doc) and automated code generation (doc2code) tasks. The dataset was obtained by scraping and preprocessing Python code from open-source GitHub repositories, including multiple dataset splits and additional code-only datasets along with their corresponding synthetic docstrings.
创建时间:
2017-04-08
原始信息汇总
数据集概述
数据集名称
code-docstring-corpus
数据集内容
- 主数据集:包含150370个函数声明、函数文档字符串和函数体的三元组。
- 数据集分割:
- 训练集:109108个三元组
- 验证集:2000个三元组
- 测试集:2000个三元组
- 附加数据集:
- 代码仅数据集:161630个函数声明和函数体的二元组,带元数据。
- 反向翻译数据集:自动从代码仅数据集生成的文档字符串,用于数据增强。
- NMT输出:基线神经机器翻译模型的测试和验证输出。
- 仓库分割数据集:确保训练、验证和测试集不分割同一仓库的数据。
数据集版本
- 版本2:包含类声明、类方法、模块文档字符串和提交SHA。
数据集用途
- 自动化代码文档(code2doc)
- 自动化代码生成(doc2code)
数据集生成
- 数据集通过GitHub开源仓库的抓取构建,使用Bhoopchand等人(2016)的GitHub抓取器。
- Python代码经过预处理,包括语法标准化、函数提取、注释和无关空白移除。
基线结果
- 使用Sennrich等人(2016)的子词单元化技术进一步处理数据。
- 基线神经机器翻译模型使用Nematus训练,结果存储在nmt-outputs目录。
- 验证和测试的BLEU分数如下:
- declbodies2desc.baseline: 14.03 / 13.84
- decldesc2bodies.baseline: 10.32 / 10.24
- decldesc2bodies.backtransl: 10.85 / 10.90
引用信息
- 若用于科学出版,请引用Miceli Barone和Sennrich(2017)的论文。
搜集汇总
数据集介绍

构建方式
该数据集通过从开源GitHub仓库中抓取Python代码,利用Bhoopchand等人(2016)开发的GitHub爬虫工具进行数据收集。随后,对抓取的代码进行预处理,包括语法规范化、提取顶层函数、去除注释和无关的空白字符,并将函数声明、文档字符串和函数体分离。数据集包含150370个函数声明、文档字符串和函数体的三元组,并提供了多种数据分割方式,如训练集、验证集和测试集,以及“repository-consistent”分割,确保同一仓库的代码不会被分割到不同的数据集中。
特点
该数据集的主要特点在于其丰富的数据结构和多样化的应用场景。它不仅包含函数声明、文档字符串和函数体的三元组,还提供了仅包含函数声明和函数体的“code-only-corpus”,以及通过神经机器翻译生成的“backtranslations-corpus”。此外,数据集还提供了多种数据分割方式,包括传统的训练/验证/测试分割和“repository-consistent”分割,确保数据集在不同任务中的适用性。
使用方法
使用该数据集时,用户可以通过pip安装依赖项,并利用提供的预处理脚本进行数据处理。数据集适用于自动化代码文档生成(code2doc)和自动化代码生成(doc2code)任务。用户可以参考数据集中的不同目录,如“parallel-corpus”和“code-only-corpus”,选择适合自己任务的数据集。此外,数据集还提供了基线模型的输出结果,用户可以在此基础上进行模型训练和评估。
背景与挑战
背景概述
code-docstring-corpus数据集由Miceli Barone和Sennrich于2017年创建,旨在支持自动化代码文档生成(code2doc)和自动化代码生成(doc2code)任务。该数据集通过从开源GitHub仓库中抓取Python函数及其对应的文档字符串构建而成,包含150370个函数声明、文档字符串和函数体的三元组。数据集的构建过程中,研究人员对代码进行了预处理,包括语法规范化、去除无关信息等,并提供了多种数据分割方式,以支持不同的研究需求。该数据集的发布对自动化编程辅助工具的发展具有重要意义,尤其是在代码理解和生成领域。
当前挑战
code-docstring-corpus数据集在构建过程中面临多项挑战。首先,从GitHub仓库中抓取代码并提取有效的函数声明和文档字符串需要复杂的预处理技术,以确保数据的准确性和一致性。其次,自动化生成文档字符串和代码的过程中,如何保证生成的内容与原始代码的语义一致性是一个关键难题。此外,数据集的多样性和覆盖范围也受到开源项目质量和数量的限制,这可能影响模型的泛化能力。最后,在训练神经机器翻译模型时,如何有效地处理代码和文档字符串的复杂结构,以提高模型的性能,也是一个重要的挑战。
常用场景
经典使用场景
在自动化代码文档生成(code2doc)和自动化代码生成(doc2code)任务中,code-docstring-corpus数据集展现了其经典应用场景。该数据集通过提供函数声明、函数文档字符串和函数体的三元组,为机器学习模型提供了丰富的训练数据。这些数据被广泛用于训练神经机器翻译模型,以实现从代码到文档字符串的自动生成,或从文档字符串到代码的自动生成。
解决学术问题
该数据集有效解决了自动化代码文档生成和代码生成中的关键学术问题。通过提供大规模的并行语料库,它为研究者提供了一个标准化的基准,用于评估和改进自动化文档生成和代码生成的算法。这不仅推动了自然语言处理技术在编程领域的应用,还为代码理解和生成提供了新的研究方向,具有重要的学术价值。
衍生相关工作
基于code-docstring-corpus数据集,研究者们开发了多种神经机器翻译模型,用于代码文档生成和代码生成任务。这些模型包括但不限于基于字节对编码(BPE)的翻译模型和基于神经网络的翻译模型。此外,该数据集还启发了许多关于代码理解和生成的研究,如代码语义分析和代码风格迁移,进一步推动了编程语言处理领域的发展。
以上内容由遇见数据集搜集并总结生成



