数据集:

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节。

筛选理由

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

源数据

数据收集和规范化

数据集是通过人工从头创建的。

源语言生产者是谁?

数据集是由Google的内部众包努力创建的。

注释

注释过程

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

注释者是谁?

数据集是由Google的内部众包努力创建的。

个人和敏感信息

无。

使用数据时的注意事项

在对比此数据集进行评估时,请确保在安全环境中执行生成的Python代码,因为生成的代码可能具有安全风险。

数据集的社会影响

通过该数据集,可以更好地评估代码生成模型,减少使用此类模型时引入的问题。

偏见讨论

其他已知限制

由于任务描述可能不足以解决任务,因此“清理过的”拆分旨在通过由第二轮注释者改进数据集来解决此问题。

附加信息

数据集策划者

Google研究团队

许可信息

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 添加了该数据集。