
SpanishBench 西班牙语评测套件lm-evaluation-harness 中 IberoBench 任务集合的配置与实战指南【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harnessSpanishBench 是面向西班牙语大语言模型的多任务评测基准覆盖常识推理、阅读理解、数学、翻译、摘要、自然语言推理等能力维度现已在 lm-evaluation-harness 中以统一的任务组group形式落地。本文以 lm_eval/tasks/spanish_bench/README.md 为骨架结合仓库内 YAML 配置与 utils.py 源码完整讲解 SpanishBench 的数据集构成、任务组织方式、评测配置细节、预处理逻辑与运行方法帮助你直接用一条命令对任意 Hugging Face 模型跑出西班牙语多维评测结果。一、SpanishBench 是什么SpanishBench 是一个用于评测语言模型西班牙语能力的基准benchmark核心目标是评估模型理解与生成西班牙语文本的能力。它并非从零造轮子而是组合式基准把一批已有的公开数据集按照统一接口接入评测框架并补充了少量新发布的数据集。其全部细节将随 IberoBench 论文IberoBench: A Benchmark for LLM Evaluation in Iberian LanguagesCOLING 2025正式公开。在 lm-evaluation-harness 中SpanishBench 以 spanish_bench.yaml 为入口定义为一个顶层 group内部聚合了 15 个任务含 FLORES 翻译组与 Phrases 组任何支持该框架的模型后端如hf、vllm、openai等都可以直接运行。二、数据集构成新增 复用的双层结构SpanishBench 的数据集分为两类README 中给出了完整清单。2.1 SpanishBench 新增的评测数据集Task类别HomepageCOPA-es常识推理Commonsense ReasoningBSC-LT/COPA-esOpenBookQA_es问答Question AnsweringBSC-LT/openbookqa-es这两个数据集分别由巴塞罗那超级计算中心BSC的西班牙语版 COPA 与 OpenBookQA 构成已在仓库中提供了完整的 YAML 实现见下文。2.2 此前已在公开文献中发布的数据集Task类别论文HomepageBelebele_es阅读理解The Belebele Benchmark: a Parallel Reading Comprehension Dataset in 122 Language Variantsfacebook/belebeleCocoteros_es常识推理COCOTEROS: A Spanish Corpus with Contextual Knowledge for NLGgplsi/cocoterosEsCoLA语言可接受性EsCoLA: Spanish Corpus of Linguistic Acceptabilitynbel/EsCoLAFLORES_es翻译The FLORES-101 Evaluation Benchmarkfacebook/floresMGSM_es数学Language Models are Multilingual Chain-of-Thought Reasonersjuletxara/mgsmPAWS-X_es改写识别ParaphrasingPAWS-X: A Cross-lingual Adversarial Dataset for Paraphrase Identificationgoogle-research-datasets/paws-xWNLI-es自然语言推理无论文PlanTL-GOB-ES/wnli-esXL-Sum_es摘要XL-Sum: Large-Scale Multilingual Abstractive Summarization for 44 Languagescsebuetnlp/xlsumXNLI_es自然语言推理XNLI: Evaluating Cross-lingual Sentence Representationsfacebook/xnliXQuAD_es问答On the Cross-lingual Transferability of Monolingual Representationsgoogle/xquadXStoryCloze_es常识推理Few-shot Learning with Multilingual Generative Language Modelsjuletxara/xstory_cloze可以看到SpanishBench 在能力维度上刻意做了覆盖常识推理COPA-es / COCOTEROS / XStoryCloze、阅读理解与问答Belebele / OpenBookQA_es / XQuAD、语言可接受性EsCoLA、数学MGSM、翻译FLORES、改写识别PAWS-X、自然语言推理WNLI-es / XNLI、摘要XL-Sum这为单一分数无法覆盖的西班牙语能力评估提供了多角度视角。三、Groups、Tags 与 Tasks 的组织方式3.1 顶层 Groupspanish_benchspanish_bench.yaml 是整套基准的聚合入口源码如下group: spanish_bench task: - belebele_spa_Latn - copa_es - escola - openbookqa_es - wnli_es - xnli_es_spanish_bench - xstorycloze_es - xquad_es - xlsum_es - paws_es_spanish_bench - mgsm_direct_es_spanish_bench - eqbench_es - flores_es - phrases_es - cocoteros_es metadata: version: 1.2要点解读task列表即评测范围运行时只需指定--tasks spanish_bench即可串联执行上述全部子任务。其中flores_es与phrases_es本身又是子组/带 tag 的任务集合实现了两级嵌套聚合。metadata.version当前为 1.2对应 README 中的 Changelog 版本。3.2 翻译子组flores_esflores_es是一个专为西班牙语翻译设计的子组定义在 flores_es/flores_es.yamlgroup: flores_es task: - spanish_bench_flores_es-en - spanish_bench_flores_en-es - spanish_bench_flores_es-eu - spanish_bench_flores_eu-es - spanish_bench_flores_es-pt - spanish_bench_flores_pt-es - spanish_bench_flores_es-it - spanish_bench_flores_it-es - spanish_bench_flores_es-fr - spanish_bench_flores_fr-es - spanish_bench_flores_es-ca - spanish_bench_flores_ca-es - spanish_bench_flores_es-gl - spanish_bench_flores_gl-es - spanish_bench_flores_es-de - spanish_bench_flores_de-es aggregate_metric_list: - metric: bleu aggregation: mean weight_by_size: false metadata: version: 1.0该子组共 16 个翻译方向任务8 个西→其他方向英语、巴斯克语、葡萄牙语、意大利语、法语、加泰罗尼亚语、加利西亚语、德语 8 个其他→西方向覆盖了伊比利亚半岛的主要语言与 IberoBench 的伊比利亚语言定位一致。子组级聚合指标为 BLEU按任务平均weight_by_size: false表示不按样本量加权。各方向任务的公共配置集中在 flores_es/_flores_common_yamldataset_path: facebook/flores dataset_name: all output_type: generate_until #! The test split of flores is not publicly available! (See paper section 6.1) #! We are using dev and devtest splits, but theyre mapped to train/validation/test in data/flores/flores.py. training_split: dev validation_split: dev test_split: devtest fewshot_split: dev target_delimiter: generation_kwargs: until: - \n metric_list: - metric: bleu aggregation: bleu higher_is_better: true - metric: ter aggregation: ter higher_is_better: false - metric: chrf aggregation: chrf higher_is_better: true metadata: version: 1.0值得注意的工程细节FLORES 官方test split 并未公开因此实现中改用dev/devtest分别映射到 train / validation / test注释中明确说明。翻译任务使用generate_until输出类型以\n作为停止条件同时报告BLEU越高越好、TER越低越好、chrF越高越好三组机器翻译标准指标。具体方向任务的 YAML 由脚本 create_yamls_flores_es.py 批量生成。3.3 Tagphrases_esphrases_es是一个tag标签用于标记西语与瓦伦西亚语Valencian之间的语言适应翻译任务公共配置见 phrases_es/_phrases_es_commontag: phrases_es dataset_path: gplsi/ES-VA_translation_test output_type: generate_until training_split: null validation_split: null test_split: test fewshot_split: test num_fewshot: 5 target_delimiter: generation_kwargs: until: - \n metric_list: - metric: bleu aggregation: bleu higher_is_better: true - metric: ter aggregation: ter higher_is_better: false - metric: chrf aggregation: chrf higher_is_better: true metadata: version: 1.0它包含两个任务phrases_es-va西→瓦与phrases_va-es瓦→西。由于训练/验证集均为null该任务固定使用testsplit 并设置num_fewshot: 5提供 few-shot 示例。在评测命令中可以通过--tasks phrases_es按 tag 过滤单独运行这组语言适应任务。3.4 完整任务清单README 列出了 SpanishBench 涉及的全部 28 个任务名其中部分任务名带_spanish_bench后缀原因在于原任务存在尚未修复的 open issue需要 fork 一份修正版任务名说明belebele_spa_LatnBelebele 西班牙语复用既有实现见 lm_eval/tasks/belebelecocoteros_esCOCOTEROS 常识生成copa_esCOPA 西班牙语版escolaEsCoLA 语言可接受性flores_es/flores_es-ca/flores_es-de/flores_es-en/flores_es-eu/flores_es-fr/flores_es-gl/flores_es-it/flores_es-pt/flores_ca-es/flores_de-es/flores_en-es/flores_eu-es/flores_fr-es/flores_gl-es/flores_it-es/flores_pt-esFLORES 西语双向翻译mgsm_direct_es_spanish_benchMGSM 西语数学修复了原任务遗留 open issueopenbookqa_esOpenBookQA 西语版paws_es_spanish_benchPAWS-X 西语改写识别同上修复 open issuephrases_es西语↔瓦伦西亚语适应翻译wnli_esWNLI 西语 NLIxlsum_esXL-Sum 西语摘要xnli_es_spanish_benchXNLI 西语 NLI同上修复 open issuexquad_esXQuAD 西语问答复用既有实现见 lm_eval/tasks/xquadxstorycloze_esXStoryCloze 西语常识推理复用既有实现见 lm_eval/tasks/xstoryclozeREADME 明确指出以下任务直接取自 lm-evaluation-harness 中已有的基准实现belebele_spa_Latn、mgsm_direct_es、paws_es、xnli_es、xstorycloze_es。其中 MGSM、PAWS-X、XNLI 三个任务因原实现存在 open issue 而派生为*_spanish_bench修正版。四、任务配置深度解析4.1 多选题类任务multiple_choicecopa_escopa_es.yaml使用BSC-LT/COPA-es将 COPA 的因果选择转化为西班牙语提示词task: copa_es dataset_path: BSC-LT/COPA-es dataset_name: null output_type: multiple_choice validation_split: validation test_split: test process_docs: !function utils.process_docs_copa_es doc_to_text: {{premise[:-1].strip() {cause: porque, effect: y por lo tanto}[question]}} doc_to_target: {{choice1 if label 0 else choice2}} doc_to_choice: {{[choice1, choice2]}} metric_list: - metric: acc aggregation: mean higher_is_better: true metadata: version: 1.0模板细节根据question字段cause/effect拼接因果连接词porque因为或 y por lo tanto因此构成填空式的两选一任务process_docs_copa_es会把两个选项首字母小写详见第五节的源码解析。escolaescola.yamlEsCoLA 是一个语法可接受性判断任务西班牙语版 CoLA输出为二分类task: escola dataset_path: nbel/EsCoLA output_type: multiple_choice training_split: train validation_split: validation test_split: null doc_to_text: {{Sentence}}\nPregunta: ¿Tiene sentido esta frase?\nRespuesta: doc_to_target: Label doc_to_choice: [no, sí] metric_list: - metric: mcc - metric: acc metadata: version: 1.0提示词为这句话有道理吗¿Tiene sentido esta frase?选项固定为[no, sí]。注意其指标是MCCMatthews 相关系数 acc——MCC 对类别不平衡更稳健这正是可接受性判断这类任务的常用选择且test_split为null评测使用训练/验证集。wnli_eswnli_es.yamlWNLI 西语版通过CSV 数据集加载dataset_path: csvdataset_kwargs.data_files指向PlanTL-GOB-ES/wnli-es的远程 CSV 文件提示词为…¿Verdadero o Falso?真/假判断选项[Falso, Verdadero]。xnli_es_spanish_benchxnli_es_spanish_bench.yaml基于 Eleuther AI 2024-03-22 的实现派生增加预处理函数。它的选项构造非常西班牙语化把前提与假设拼接成自然的三分句doc_to_choice: {{[premise, ¿correcto? Sí, hypothesis,premise, ¿correcto? Así que, hypothesis,premise, ¿correcto? No, hypothesis]}}即前提对吗是的/所以/不假设三选一对应蕴含entailment/中性neutral/矛盾contradiction三分类。paws_es_spanish_benchpaws_es_spanish_bench.yamlPAWS-X 改写识别同样采用拼接式选项sentence1 , ¿verdad? No/Sí, sentence2即这句话对吗不/对输出acc。其process_docs调用了utils.process_docs_paraphrases过滤空句并做规范化。openbookqa_esopenbookqa_es.yaml除了标准acc/acc_norm指标外还启用了去污decontamination支持should_decontaminate: true doc_to_decontamination_query: question_stemshould_decontaminate: true意味着评测前会基于doc_to_decontamination_query题目文本对训练数据进行 n-gram 去污检查避免模型在预训练阶段见过测试题具体机制可参考 docs/decontamination.md。4.2 生成类任务generate_untilcocoteros_escocoteros_es.yaml给定关键词与上下文生成一句短句提示词为西语指令输出上限 40 token、以换行停止指标为BLEU ROUGE-1ROUGE 通过!function utils.rouge1/utils.rouge1_agg注入task: cocoteros_es dataset_path: gplsi/cocoteros output_type: generate_until doc_to_text: Genera una frase corta con estas palabras: {{keywords}}. El contexto es: {{context}} \n\nRespuesta: doc_to_target: {{text}} training_split: train test_split: test generation_kwargs: max_gen_toks: 40 until: - \n metric_list: - metric: bleu aggregation: bleu higher_is_better: true - metric: !function utils.rouge1 aggregation: !function utils.rouge1_agg higher_is_better: truexlsum_esxlsum_es.yamlXL-Sum 西语摘要任务加载csebuetnlp/xlsum的spanish子集提示词为Texto: ...\n\nResumen:同样使用 BLEU ROUGE-1并调用utils.process_xlsum压缩连续空格。翻译类flores_es/*与phrases_es/*统一采用generate_until以\n为停止条件用 BLEU/TER/chrF 三指标评估公共配置见 3.2 与 3.3 节。mgsm_direct_es_spanish_benchmgsm_direct_es_spanish_bench.yaml通过include: ../mgsm/direct/mgsm_direct_es.yaml继承既有 MGSM 直答任务再覆盖西语提示词与生成参数include: ../mgsm/direct/mgsm_direct_es.yaml doc_to_target: {{answer_number|string}} doc_to_text: {% if answer is not none %}{{question\nRespuesta: }}{% else %}{{Pregunta: question\nRespuesta: }}{% endif %} task: mgsm_direct_es_spanish_bench generation_kwargs: do_sample: false until: - Pregunta: - /s - |im_end| metadata: version: 1.1该任务要求模型直接输出数值答案answer_number关闭采样do_sample: false并以Pregunta:防止模型追问新问题、/s、|im_end|作为停止条件。根据 Changelogv1.2 中从停止条件里排除了换行符确保答案跨行时不被截断。五、预处理与自定义指标utils.py 源码解析多个任务的process_docs指向 utils.py它承载了西班牙语特有的文本规范化逻辑是从原始数据集到评测输入的关键环节。5.1 NLI 数据规范化process_doc_nlidef process_doc_nli(dataset): def process_fn(doc): doc[premise] general_detokenize(doc[premise]).strip() doc[hypothesis] general_detokenize(doc[hypothesis]).strip() doc[premise] ( doc[premise][:-1] if doc[premise].endswith((., ,, !, ?)) else doc[premise] ) doc[hypothesis] lowercase_first_letter(doc[hypothesis]) doc[hypothesis] ( (doc[hypothesis] .) if not doc[hypothesis].endswith(.) else doc[hypothesis] ) return doc return dataset.map(process_fn)逻辑清晰先调用框架的general_detokenize去除多余空白再去掉前提句末的标点.、,、!、?随后将假设句首字母小写便于与, ¿correcto? Sí, ...等连接词自然衔接并确保以句号结尾。这一套规则保证了 4.1 节 XNLI 拼接式选项在语法上的通顺。5.2 摘要与改写数据的清洗process_xlsum/process_docs_paraphrasesdef process_xlsum(dataset): def _process_doc(doc): doc[text] re.sub(r , , doc[text]) doc[summary] re.sub(r , , doc[summary]) return doc return dataset.map(_process_doc)process_xlsum用正则把连续多个空格压缩为单个防止摘要评测被空白噪声干扰。process_docs_paraphrases则处理 PAWS-X先检测并打印空文档sentence1/sentence2为 None 或空串的样本再用dataset.filter过滤掉这些样本随后对保留样本做 detokenize、去句末标点、第二句首字母小写最终用于, ¿verdad? Sí, ...的拼接。def process_docs_copa_es(dataset): def _process_doc(doc): doc[choice1] lowercase_first_letter(doc[choice1]) doc[choice2] lowercase_first_letter(doc[choice2]) return doc return dataset.map(_process_doc)process_docs_copa_es则把 COPA 的两个选项首字母小写使premise porque choice的连读更自然。5.3 自定义 ROUGE-1 指标def rouge1(items): # passthrough for efficiency return items def rouge1_agg(items): refs list(zip(*items))[0] preds list(zip(*items))[1] rouge_scorer evaluate.load(rouge) return rouge_scorer.compute(predictionspreds, referencesrefs)[rouge1]这是一个典型的两段式自定义指标rouge1作为 per-instance 指标直接透传pass-through避免逐样本重复计算rouge1_agg在聚合阶段一次性加载 Hugging Faceevaluate的 rouge 工具对全部预测与参考答案统一计算rouge1。这与metric: !function的 YAML 引用方式一一对应也是 lm-evaluation-harness 自定义指标的标准写法可参考 docs/new_task_guide.md 中的指标章节。六、如何运行 SpanishBench 评测6.1 全量评测使用 lm-evaluation-harness 的标准 CLI指定spanish_bench组即可一次跑完全部子任务lm_eval --model hf \ --model_args pretrainedyour-model-name,trust_remote_codeTrue \ --tasks spanish_bench \ --batch_size auto \ --output_path results/spanish_bench其中--model hf使用 Hugging Face transformers 后端也可换成vllm、openai、local-completions等该框架支持的其他后端参见 docs/interface.md 与 docs/model_guide.md。6.2 按子组 / 标签 / 单任务运行只跑翻译子组--tasks flores_es16 个西语双向翻译方向聚合 BLEU只跑西语↔瓦伦西亚语适应任务--tasks phrases_es按 tag 过滤只跑单个任务--tasks copa_es或--tasks mgsm_direct_es_spanish_bench排除翻译/生成任务、只看分类能力--tasks spanish_bench --exclude flores_es,phrases_es,cocoteros_es,xlsum_es也可通过lm_eval --tasks spanish_bench --limit 10先做小样本冒烟测试确认提示词与数据集加载无误后再全量运行。6.3 few-shot 与聚合结果phrases_es默认num_fewshot: 5其余任务可通过--num_fewshot N全局覆盖。组级聚合结果如flores_es的平均 BLEU、spanish_bench各子任务汇总会写入--output_path指定的目录可结合 scripts/make_table_results.py 等工具进一步整理成对照表。若希望复现论文式的严格评测建议关注metadata.version当前 1.2——版本变化意味着任务模板或修复的演进详见 Changelog。七、版本变更记录ChangelogREADME 中的 Changelog 记录了 SpanishBench 任务的演进版本日期变更v1.12025-09-22PR #3168新增eqbench_es任务v1.22026-01-16PR #3465在mgsm_direct_es_spanish_bench的停止条件中排除换行符当前顶层组的metadata.version: 1.2与 README 记录一致。eqbench_es已并入 spanish_bench.yaml 的 task 列表MGSM 的停止条件修复则避免了模型在输出多行答案时因\n提前终止。这类版本化 Changelog的做法也是 lm-evaluation-harness 任务目录的通用约定便于不同评测轮次之间对齐与复现。八、引用方式如果论文或报告中使用了 SpanishBenchIberoBench结果README 提供了官方 BibTeX 引用节选关键字段inproceedings{baucells-etal-2025-iberobench, title {I}bero{B}ench: A Benchmark for {LLM} Evaluation in {I}berian Languages, author Baucells, Irene and Aula-Blasco, Javier and de-Dios-Flores, Iria and ..., booktitle Proceedings of the 31st International Conference on Computational Linguistics, month jan, year 2025, address Abu Dhabi, UAE, publisher Association for Computational Linguistics, pages 10491--10519, }完整条目见 lm_eval/tasks/spanish_bench/README.md 的 Citation 一节。结语SpanishBench 展示了 lm-evaluation-harness 中组合式多语基准的标准落地方式顶层 group 聚合、子组/标签细分能力维度、!function注入语言特有的预处理与指标、以及针对上游任务缺陷的派生修正。无论是需要快速评估西班牙语模型的多维能力还是想参考如何在仓库中组织一套多语评测任务spanish_bench.yaml 与 utils.py 都是可以直接阅读和借鉴的完整范例。运行一条lm_eval --tasks spanish_bench即可获得覆盖常识推理、数学、翻译、摘要等十余个维度的西班牙语能力画像。【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考