FloatAI/humaneval-xl
收藏Hugging Face2024-05-18 更新2024-04-19 收录
下载链接:
https://hf-mirror.com/datasets/FloatAI/humaneval-xl
下载链接
链接失效反馈官方服务:
资源简介:
---
dataset_info:
features:
- name: task_id
dtype: string
- name: language
dtype: string
- name: prompt
dtype: string
- name: test
dtype: string
- name: entry_point
dtype: string
- name: canonical_solution
dtype: string
- name: natural_language
dtype: string
splits:
- name: python
num_examples: 80
license: apache-2.0
task_categories:
- text-generation
tags:
- code-generation
language:
- en
- zh
- ru
- de
- es
- fr
- it
- pt
- el
- hu
- nl
- fi
- id
- tr
- ar
- vi
- bg
- fa
- ms
- he
- et
- tl
- af
---
# [HumanEval-XL: An Execution-based Multilingual Code Generation Benchmark Across 23 Natural Languages and 12 Programming Languages](https://arxiv.org/abs/2402.16694)
<a href="https://arxiv.org/abs/2402.16694" target="_blank">
<img alt="LREC-COLING 2024" src="https://img.shields.io/badge/Proceedings-COLING 2024-red" />
</a>
This repository contains data and evaluation code for the paper "[HumanEval-XL: A Multilingual Code Generation Benchmark for Cross-lingual Natural Language Generalization](https://arxiv.org/pdf/2402.16694)".
## Dataset Summary
We introduce HumanEval-XL, a massively multilingual code generation benchmark specifically crafted to address this deficiency. HumanEval-XL establishes connections between 23 NLs and 12 programming languages (PLs), and comprises of a collection of 22,080 prompts with an average of 8.33 test cases. By ensuring parallel data across multiple NLs and PLs, HumanEval-XL offers a comprehensive evaluation platform for multilingual LLMs, allowing the assessment of the understanding of different NLs. Our work serves as a pioneering step towards filling the void in evaluating NL generalization in the area of multilingual code generation. We make our evaluation code and data publicly available at https://github.com/FloatAI/HumanEval-XL.
## Dataset Structure
We have in total:
**12 PLs** are: "python", "java", "javascript", "csharp", "go", "kotlin", "perl", "php", "ruby", "scala", "swift", "typescript"
**23 NLs** are: "English", "Russian", "Chinese", "German", "Spanish", "French", "Italian", "Portuguese", "Greek", "Hungarian", "Dutch", "Finnish", "Indonesian", "Turkish", "Arabic", "Vietnamese", "Bulgarian", "Persian", "Malay", "Hebrew", "Estonian", "Tagalog", "Afrikaans"
To load a specific dataset and language
```python
from datasets import load_dataset
dataset = load_dataset("FloatAI/HumanEval-XL", "python")
DatasetDict({
English: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
Russian: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
Chinese: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
⋮
Afrikaans: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
})
```
### Data Instances
An example of a dataset instance (In python split with Chinese prompts - dataset["Chinese"][0]):
```python
{
'task_id': 'python/0',
'language': 'python',
'prompt': 'from typing import List\n\n\ndef below_zero(operations: List[int]) -> bool:\n """ 你会得到一个银行账户的存款和取款操作列表,该账户从零余额开始。你的任务是检测账户余额是否在任何时候降至零以下,并在该点返回True。否则应返回False。\n \n >>> below_zero([1, 2, 3])\n False\n >>> below_zero([1, 2, -4, 5])\n True\n """\n',
'description': '你会得到一个银行账户的存款和取款操作列表,该账户从零余额开始。你的任务是检测账户余额是否在任何时候降至零以下,并在该点返回True。否则应返回False。\n ',
'test': "\n\nMETADATA = {\n 'author': 'jt',\n 'dataset': 'test'\n}\n\n\ndef check(candidate):\n assert candidate([]) == False\n assert candidate([1, 2, -3, 1, 2, -3]) == False\n assert candidate([1, 2, -4, 5, 6]) == True\n assert candidate([1, -1, 2, -2, 5, -5, 4, -4]) == False\n assert candidate([1, -1, 2, -2, 5, -5, 4, -5]) == True\n assert candidate([1, -2, 2, -2, 5, -5, 4, -4]) == True\n",
'entry_point': 'below_zero',
'canonical_solution': ' balance = 0\n\n for op in operations:\n balance += op\n if balance < 0:\n return True\n\n return False\n',
'natural_language': 'Chinese'
}
```
### Data Fields
- `task_id`: identifier for the data sample
- `prompt`: input for the model containing function header and docstrings
- `canonical_solution`: solution for the problem in the `prompt`
- `description`: task description
- `test`: contains function to test generated code for correctness
- `entry_point`: entry point for test
- `language`: programming lanuage identifier to call the appropriate subprocess call for program execution
- `natural_language`: natural language identifier to show the language the prompt is in
### Data Splits
programming languages are used to speicify splits:
- python
- java
- javascript
- csharp
- go
- kotlin
- php
- perl
- ruby
- swift
- scala
- typescript
dataset_info:
features:
- name: task_id(任务标识符), dtype: string(字符串类型)
- name: language(编程语言), dtype: string(字符串类型)
- name: prompt(提示文本), dtype: string(字符串类型)
- name: test(测试代码), dtype: string(字符串类型)
- name: entry_point(入口函数), dtype: string(字符串类型)
- name: canonical_solution(标准解法代码), dtype: string(字符串类型)
- name: natural_language(自然语言), dtype: string(字符串类型)
splits:
- name: python(Python语言划分), num_examples: 80
license: apache-2.0
task_categories:
- text-generation(文本生成)
tags:
- code-generation(代码生成)
language:
- en(英语)
- zh(汉语)
- ru(俄语)
- de(德语)
- es(西班牙语)
- fr(法语)
- it(意大利语)
- pt(葡萄牙语)
- el(希腊语)
- hu(匈牙利语)
- nl(荷兰语)
- fi(芬兰语)
- id(印度尼西亚语)
- tr(土耳其语)
- ar(阿拉伯语)
- vi(越南语)
- bg(保加利亚语)
- fa(波斯语)
- ms(马来语)
- he(希伯来语)
- et(爱沙尼亚语)
- tl(他加禄语)
- af(南非荷兰语)
# [HumanEval-XL: 覆盖23种自然语言与12种编程语言的基于执行的多语言代码生成基准](https://arxiv.org/abs/2402.16694)
<a href="https://arxiv.org/abs/2402.16694" target="_blank">
<img alt="LREC-COLING 2024" src="https://img.shields.io/badge/Proceedings-COLING 2024-red" />
</a>
本仓库包含论文《HumanEval-XL: 面向跨语言自然语言泛化的多语言代码生成基准》的数据集与评估代码。
## 数据集概述
我们提出HumanEval-XL,这是一个大规模多语言代码生成基准,专为弥补现有研究的不足而设计。HumanEval-XL搭建了23种自然语言(NL)与12种编程语言(PL)之间的关联桥梁,共包含22080条提示文本,平均每条对应8.33个测试用例。通过实现多自然语言与多编程语言下的平行数据,HumanEval-XL为多语言大语言模型(Large Language Model,LLM)提供了全面的评估平台,能够实现对不同自然语言理解能力的测评。本研究为填补多语言代码生成领域中自然语言泛化评估的空白迈出了开创性的一步。我们将评估代码与数据集公开托管于https://github.com/FloatAI/HumanEval-XL。
## 数据集结构
我们共涵盖:
**12种编程语言**为:Python、Java、JavaScript、C#、Go、Kotlin、Perl、PHP、Ruby、Scala、Swift、TypeScript
**23种自然语言**为:英语、俄语、汉语、德语、西班牙语、法语、意大利语、葡萄牙语、希腊语、匈牙利语、荷兰语、芬兰语、印度尼西亚语、土耳其语、阿拉伯语、越南语、保加利亚语、波斯语、马来语、希伯来语、爱沙尼亚语、他加禄语、南非荷兰语
加载特定数据集与语言的示例代码如下:
python
from datasets import load_dataset
dataset = load_dataset("FloatAI/HumanEval-XL", "python")
DatasetDict({
英语: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
俄语: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
汉语: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
⋮
南非荷兰语: Dataset({
features: ['task_id', 'language', 'prompt', 'description', 'test', 'entry_point', 'canonical_solution', 'natural_language'],
num_rows: 80
})
})
### 数据实例
一个数据集样本示例(取自Python划分下的中文提示样本,即dataset["Chinese"][0]):
python
{
'task_id': 'python/0',
'language': 'python',
'prompt': 'from typing import List
def below_zero(operations: List[int]) -> bool:
""" 你会得到一个银行账户的存款和取款操作列表,该账户从零余额开始。你的任务是检测账户余额是否在任何时候降至零以下,并在该点返回True。否则应返回False。
>>> below_zero([1, 2, 3])
False
>>> below_zero([1, 2, -4, 5])
True
"""
',
'description': '你会得到一个银行账户的存款和取款操作列表,该账户从零余额开始。你的任务是检测账户余额是否在任何时候降至零以下,并在该点返回True。否则应返回False。
',
'test': "
METADATA = {
'author': 'jt',
'dataset': 'test'
}
def check(candidate):
assert candidate([]) == False
assert candidate([1, 2, -3, 1, 2, -3]) == False
assert candidate([1, 2, -4, 5, 6]) == True
assert candidate([1, -1, 2, -2, 5, -5, 4, -4]) == False
assert candidate([1, -1, 2, -2, 5, -5, 4, -5]) == True
assert candidate([1, -2, 2, -2, 5, -5, 4, -4]) == True
",
'entry_point': 'below_zero',
'canonical_solution': ' balance = 0
for op in operations:
balance += op
if balance < 0:
return True
return False
',
'natural_language': 'Chinese'
}
### 数据字段说明
- `task_id`:数据样本的唯一标识符
- `prompt`:模型输入,包含函数头与文档字符串
- `canonical_solution`:对应提示文本任务的标准解法代码
- `description`:任务描述文本
- `test`:包含用于验证生成代码正确性的测试函数
- `entry_point`:测试所用的入口函数名
- `language`:编程语言标识符,用于调用对应的子进程执行程序
- `natural_language`:自然语言标识符,用于标识提示文本所用的语言
### 数据划分
以编程语言作为数据划分依据,具体划分如下:
- Python
- Java
- JavaScript
- C#
- Go
- Kotlin
- PHP
- Perl
- Ruby
- Swift
- Scala
- TypeScript
提供机构:
FloatAI
原始信息汇总
数据集概述
数据集名称
- HumanEval-XL
数据集用途
- 用于评估跨语言自然语言泛化的多语言代码生成基准。
包含内容
- 数据集包含数据和评估代码。
相关论文
- "HumanEval-XL: A Multilingual Code Generation Benchmark for Cross-lingual Natural Language Generalization"
搜集汇总
数据集介绍

构建方式
在代码生成领域,多语言评估基准的构建对于衡量模型跨语言泛化能力至关重要。HumanEval-XL数据集的构建基于原始HumanEval基准,通过专业翻译流程将英文提示扩展至23种自然语言,涵盖英语、中文、俄语等广泛语种,并与12种编程语言建立平行对应关系。每个编程任务均包含函数签名、文档字符串及测试用例,确保数据在多种自然语言与编程语言间保持严格一致性,从而形成包含22,080条提示的大规模多语言语料库。
特点
该数据集的核心特征在于其大规模多语言覆盖与执行导向的设计理念。其独特之处在于同时连接23种自然语言与12种编程语言,每种自然语言提示均对应完整的代码生成任务,包括规范解决方案与平均8.33个测试用例。数据集采用平行数据结构,使得同一编程任务在不同自然语言表述下保持语义等价,为评估多语言大语言模型对多样化自然语言的理解能力提供了标准化测试环境。
使用方法
研究人员可通过HuggingFace数据集库加载特定编程语言分割,例如使用load_dataset函数指定python参数获取对应数据。每个实例包含任务标识、编程语言、自然语言提示、测试套件及规范解决方案等结构化字段。评估时需执行生成代码并通过内置测试验证功能正确性,支持跨语言对比分析模型性能。数据加载支持强制重下载模式以确保完整性,为多语言代码生成研究提供即用型实验平台。
背景与挑战
背景概述
随着大语言模型在代码生成领域取得显著进展,现有基准测试主要聚焦于将英文提示转换为多语言代码,或局限于极少数自然语言,忽略了大规模多语言自然语言到多语言代码生成的广阔评估需求。为填补这一空白,FloatAI团队于2024年推出了HumanEval-XL数据集,该数据集由彭琦伟、柴叶坤、李旭红等研究人员构建,并在LREC-COLING 2024会议上发表。该数据集旨在解决多语言代码生成中自然语言泛化能力的评估问题,通过建立23种自然语言与12种编程语言之间的对应关系,提供了包含22,080个提示的并行数据,为核心研究问题——即评估多语言大语言模型对不同自然语言的理解与代码生成能力——提供了全面平台,对推动多语言编程辅助工具的发展具有重要影响力。
当前挑战
在代码生成领域,现有基准测试往往局限于英语环境,难以全面评估模型在多样化自然语言输入下的泛化能力与跨语言一致性,这构成了领域核心挑战。HumanEval-XL的构建过程亦面临多重困难:首先,需确保23种自然语言提示与12种编程语言解决方案之间的精确语义对齐,这对翻译质量与文化语境适配提出了极高要求;其次,大规模并行测试用例的生成与验证需维持严格的执行正确性,涉及复杂的多语言编程环境配置与自动化测试框架设计;此外,数据集的规模与多样性平衡亦需审慎考量,以避免资源倾斜并保证评估的公平性与代表性。
常用场景
经典使用场景
在自然语言处理与代码生成交叉领域,HumanEval-XL数据集为评估多语言大模型在跨语言代码生成任务中的性能提供了标准化测试平台。该数据集通过将23种自然语言与12种编程语言进行平行对齐,构建了覆盖广泛语言对的提示-测试用例集合,使得研究者能够系统性地衡量模型从不同自然语言描述生成可执行代码的能力。其经典使用场景集中于模型在零样本或少样本设置下,根据多语言提示自动生成符合功能规范的代码片段,并通过预设的测试用例验证代码的正确性,从而为多语言代码生成模型的比较与优化提供基准。
衍生相关工作
基于HumanEval-XL数据集,学术界已衍生出一系列探索多语言代码生成能力的前沿工作。这些研究通常围绕扩展模型的语言覆盖范围、提升低资源语言下的代码生成性能、以及分析语言特性对生成结果的影响等方向展开。例如,部分工作利用该数据集的平行结构,探究了多语言提示对齐对代码生成一致性的作用;另一些研究则专注于优化模型在特定编程语言与自然语言配对上的表现。这些衍生工作共同推动了多语言代码生成技术的演进,并为后续的基准构建与模型设计提供了参考。
数据集最近研究
最新研究方向
在代码生成领域,多语言大模型的评估长期受限于自然语言与编程语言之间映射关系的单一性。HumanEval-XL数据集通过构建23种自然语言与12种编程语言的平行语料,为跨语言代码生成研究提供了前所未有的基准平台。该数据集推动了多语言代码理解能力的前沿探索,促使研究者深入分析模型在不同语言文化背景下的泛化性能,尤其在低资源语言代码生成任务中展现出重要价值。其大规模并行结构不仅助力于评估多语言大模型的代码生成准确性,还为探究自然语言多样性对编程逻辑表达的影响开辟了新路径,对全球化软件开发工具的发展具有深远意义。
以上内容由遇见数据集搜集并总结生成



