遇见数据集

huawei-noah/python_text2code

收藏
Hugging Face2024-09-04 更新2024-12-14 收录
官方服务:

资源简介:

该数据集是从2021年5月之前的GitHub公共仓库中爬取的Python代码文件,用于代码合成任务(即文本到代码生成)。数据集中的文件经过筛选,保留了文件大小小于1MB、兼容Python3、每行平均字符数少于100、单行字符数少于1,000的文件。通过AST解析提取了有效的函数及其对应的docstring,并将docstring作为问题描述与代码分离。最终数据集包含23,526,586个文本到代码的配对,主要用于Python代码生成任务。

The dataset was crawled from public repositories on GitHub before May 2021, intended for additional model training for the task of Code Synthesis (i.e., Text-to-Code generation) in Python. The data filtering criteria include file size under 1MB, Python3 compatibility, fewer than 100 characters per line on average, and fewer than 1,000 characters in any single line. Valid functions and their corresponding docstrings were extracted using AST parsing, and the docstrings were used as problem descriptions and separated from the code. Instances without a docstring were discarded. The final dataset contains 23,526,586 text-to-code pairs in Python.

提供机构:
huawei-noah
搜集汇总
数据集介绍
构建方式
在代码智能领域,文本到代码生成任务旨在将自然语言描述转化为可执行的编程语言片段。该数据集源自2021年5月前GitHub上公开的Python仓库,经过严格筛选构建而成。首先,通过文件大小(小于1MB)、Python3兼容性(基于抽象语法树解析)、平均每行字符数(少于100)及单行最大字符数(少于1000)等标准过滤原始文件。随后,利用Tree-sitter工具对保留的Python文件进行抽象语法树解析,提取出有效的函数及其对应的文档字符串,并将文档字符串作为问题描述,函数代码作为目标输出。无文档字符串的函数被剔除。为规范化空格并缩短序列长度,换行、缩进和取消缩进分别被替换为<NEW_LINE>、<INDENT>和<DEDENT>特殊标记。最终仅保留文档字符串与代码总长度不超过1024个词元的实例,构建出包含23,526,586个文本-代码对的庞大数据集。
特点
该数据集的核心特点在于其大规模与高质量的双重优势。规模上,超过两千万的文本-代码对为预训练模型提供了充足的语料,尤其适合需要海量数据的神经代码生成模型。质量上,构建流程通过AST解析确保代码语法正确性,并强制要求每个函数必须包含文档字符串,从而保证了自然语言描述与代码之间的语义对应关系。此外,针对代码序列的特殊性,数据集创新性地采用特殊标记替换缩进和换行,既保留了代码结构信息,又有效压缩了序列长度,使其适配于主流Transformer模型的输入限制。这些特性使得该数据集在代码合成任务中具有显著的实用价值。
使用方法
该数据集的使用方法直接且灵活,适用于文本生成模型的标准训练流程。数据集以HuggingFace Datasets库的形式发布,包含单一的'train'分割,用户可通过加载默认配置轻松获取全部23,526,586个样本。每个样本包含三个字段:唯一标识符'_id'、Python代码字符串'code'以及对应的文档字符串'docstring'。研究者可直接将'docstring'作为模型输入,'code'作为目标输出,用于监督学习。建议从训练集中随机抽取0.1%的样本作为验证集,以评估模型性能。由于数据已预先进行长度过滤和标记化处理,使用时无需额外清洗。对于需要使用自定义分词器的场景,可参考原论文中采用的1024词元最大长度设置,以保持与预训练阶段的一致性。
背景与挑战
背景概述
在自然语言处理与程序合成交叉领域,文本到代码生成(Text-to-Code Generation)任务旨在将人类可读的问题描述自动转化为可执行的代码片段,这一研究方向对于提升软件开发效率、降低编程门槛具有深远意义。由华为诺亚方舟实验室的Fenia Christopoulou、Guchun Zhang和Gerasimos Lampouras等研究人员于2024年在EACL会议上提出的Python-Text2Code数据集,正是为支持这一任务而构建的大规模语料库。该数据集从GitHub上截至2021年5月的公开仓库中爬取,经过严格的过滤与AST解析,最终包含超过2350万个Python函数与对应文档字符串的配对实例,为基于预训练模型的代码生成研究提供了坚实的数据基础,显著推动了该领域的发展。
当前挑战
该数据集面临的核心挑战包括:其一,代码生成任务本身需要模型深刻理解自然语言描述与程序逻辑之间的语义鸿沟,尤其要处理描述中可能存在的歧义、不完整或隐含约束,这对模型的推理能力提出了极高要求。其二,在数据集构建过程中,研究人员需应对海量源代码的清洗与标准化难题,例如通过AST解析确保Python3兼容性、剔除无文档字符串的函数、将缩进与换行替换为特殊标记以统一序列长度,同时还需限制样本的token数量不超过1024,这些步骤在保证数据质量的同时也引入了信息损失的风险,可能影响模型对原始代码结构的完整捕捉。
常用场景
经典使用场景
python_text2code数据集是面向Python代码合成任务的大规模文本-代码对语料库,其核心应用场景在于训练和评估能够将自然语言描述自动转化为可执行Python代码的生成模型。研究者利用该数据集中超过2300万条的docstring与代码函数对,使模型学习从问题描述到程序逻辑的映射关系,尤其在提升生成代码的语法正确性与语义一致性方面展现出显著价值。该数据集为文本到代码生成领域提供了标准化的训练基准,推动预训练语言模型在编程语言理解与生成任务上的性能突破。
解决学术问题
该数据集系统地解决了代码合成研究中大规模高质量平行语料的匮乏问题,使得研究者能够摆脱对人工标注数据的依赖。通过AST解析与docstring提取的自动化流程,它有效缓解了代码与自然语言间模态差异带来的对齐困难。数据集支撑了模态相对预训练方法的提出,显著提升了模型在零样本与少样本场景下的代码生成能力,为跨模态语义理解与程序综合的学术探索奠定了数据基础,推动了自然语言处理与软件工程交叉领域的前沿进展。
衍生相关工作
该数据集直接催生了模态相对预训练(Modality-relative Pre-training)这一经典工作,其在EACL 2024发表的论文中系统论证了利用docstring与代码的模态对齐策略可有效提升生成质量。后续研究者基于此数据集探索了结构化注意力机制与程序依赖图融合的方法,进一步优化长代码序列的生成效果。此外,该数据集的构建范式启发了多语言代码生成数据集的设计,如将相同处理流程迁移至Java与JavaScript语言,推动了跨语言程序综合研究的生态发展。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务