数据集:

Muennighoff/mbpp

任务:

文生文

语言:

en

计算机处理:

monolingual

大小:

n<1K

源数据集:

original

预印本库:

arxiv:2108.07732

许可:

cc-by-4.0
英文

数据集卡片:Mostly Basic Python Problems (mbpp)

数据集概述

这个基准数据集包含约1,000个众包Python编程问题,旨在供初级程序员解决,涵盖编程基础、标准库功能等内容。每个问题包含任务描述、代码解决方案和3个自动化测试用例。如论文中所述,我们手动验证了数据的一个子集。

作为 Program Synthesis with Large Language Models, Austin et. al., 2021 的一部分,于 here 发布。

支持的任务和排行榜

这个数据集用于评估代码生成。

语言

英语 - Python代码

数据集结构

dataset_full = load_dataset("mbpp")
DatasetDict({
    test: Dataset({
        features: ['task_id', 'text', 'code', 'test_list', 'test_setup_code', 'challenge_test_list'],
        num_rows: 974
    })
})

dataset_sanitized = load_dataset("mbpp", "sanitized")
DatasetDict({
    test: Dataset({
        features: ['source_file', 'task_id', 'prompt', 'code', 'test_imports', 'test_list'],
        num_rows: 427
    })
})

数据实例

mbpp - 完整的
{
    'task_id': 1,
    'text': 'Write a function to find the minimum cost path to reach (m, n) from (0, 0) for the given cost matrix cost[][] and a position (m, n) in cost[][].',
    'code': 'R = 3\r\nC = 3\r\ndef min_cost(cost, m, n): \r\n\ttc = [[0 for x in range(C)] for x in range(R)] \r\n\ttc[0][0] = cost[0][0] \r\n\tfor i in range(1, m+1): \r\n\t\ttc[i][0] = tc[i-1][0] + cost[i][0] \r\n\tfor j in range(1, n+1): \r\n\t\ttc[0][j] = tc[0][j-1] + cost[0][j] \r\n\tfor i in range(1, m+1): \r\n\t\tfor j in range(1, n+1): \r\n\t\t\ttc[i][j] = min(tc[i-1][j-1], tc[i-1][j], tc[i][j-1]) + cost[i][j] \r\n\treturn tc[m][n]',
    'test_list': [
        'assert min_cost([[1, 2, 3], [4, 8, 2], [1, 5, 3]], 2, 2) == 8',
        'assert min_cost([[2, 3, 4], [5, 9, 3], [2, 6, 4]], 2, 2) == 12',
        'assert min_cost([[3, 4, 5], [6, 10, 4], [3, 7, 5]], 2, 2) == 16'],
    'test_setup_code': '',
    'challenge_test_list': []
}
mbpp - 已去除敏感信息的
{
    'source_file': 'Benchmark Questions Verification V2.ipynb',
    'task_id': 2,
    'prompt': 'Write a function to find the shared elements from the given two lists.',
    'code': 'def similar_elements(test_tup1, test_tup2):\n  res = tuple(set(test_tup1) & set(test_tup2))\n  return (res) ',
    'test_imports': [],
    'test_list': [
        'assert set(similar_elements((3, 4, 5, 6),(5, 7, 4, 10))) == set((4, 5))',
        'assert set(similar_elements((1, 2, 3, 4),(5, 4, 3, 7))) == set((3, 4))',
        'assert set(similar_elements((11, 12, 14, 13),(17, 15, 14, 13))) == set((13, 14))'
        ]
}

数据字段

  • source_file :未知
  • text / prompt :编程任务的描述
  • code :编程任务的解决方案
  • test_setup_code / test_imports :执行测试所需的必要代码导入
  • test_list :用于验证解决方案的测试列表
  • challenge_test_list :用于进一步检验解决方案的更具挑战性的测试列表

数据划分

数据集有两个版本(完整版和已去除敏感信息版),每个版本只有一个划分(测试)。

数据集创建

请参阅原始 paper 中的2.1节。

策划理由

为了评估代码生成功能,需要一组简单编程任务以及其解决方案,而这个数据集提供了这样的内容。

源数据

初始数据收集和规范化

该数据集是从头开始手动创建的。

语言源生产者是谁?

该数据集是由谷歌的内部众包项目创建的。

注释

注释流程

先创建完整数据集,然后对其中的一个子集进行第二轮改进,以提高任务描述的质量。

注释者是谁?

该数据集是由谷歌的内部众包项目创建的。

个人和敏感信息

没有。

使用数据的注意事项

在使用此数据集进行评估时,请确保在安全的环境中执行生成的Python代码,以防生成的代码可能会造成危害。

数据集的社会影响

使用这个数据集可以更好地评估代码生成模型,从而减少在使用这些模型时出现的问题。

偏见讨论

其他已知限制

由于任务描述可能不足以解决任务,因此“已去除敏感信息”版旨在通过让第二轮注释者改进数据集来解决这个问题。

其他信息

数据集策划者

谷歌研究团队

许可信息

CC-BY-4.0

引用信息

@article{austin2021program,
  title={Program Synthesis with Large Language Models},
  author={Austin, Jacob and Odena, Augustus and Nye, Maxwell and Bosma, Maarten and Michalewski, Henryk and Dohan, David and Jiang, Ellen and Cai, Carrie and Terry, Michael and Le, Quoc and others},
  journal={arXiv preprint arXiv:2108.07732},
  year={2021}

贡献者

感谢 @lvwerra 添加了这个数据集。