lm-evaluation-harness 巴斯克语长文本阅读理解任务 EusReading 详解:数据来源、评测配置与源码实现
2026/9/15 22:22:51 网站建设 项目流程

lm-evaluation-harness 巴斯克语长文本阅读理解任务 EusReading 详解:数据来源、评测配置与源码实现

【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness

本指南深入解析 lm-evaluation-harness 中的eus_reading评测任务:它以巴斯克语 EGA 考试真题为数据来源构建的 352 道长文本阅读理解题(irakurmena),用于衡量语言模型的长上下文理解能力。阅读本文后,你将掌握该任务的数据背景、YAML 评测配置的每一个字段含义、提示词模板的构造逻辑,以及如何通过basque_bench组或独立任务名一键运行评测并解读结果。

一、任务概述:什么是 EusReading

eus_reading任务在 任务索引 中被归类为 "Reading comprehension tasks specifically designed for the Basque language"(专为巴斯克语设计的阅读理解任务),其完整定义见 任务 README。

该任务对应论文《Latxa: An Open Language Model and Evaluation Suite for Basque》(arXiv 摘要),是 Latxa 项目为巴斯克语大模型配套发布的评测套件之一。EusReading 数据集由以下特征构成:

  • 数据规模:352 道阅读理解练习(巴斯克语中称为irakurmena);
  • 数据来源:1998 年至 2008 年间 EGA 考试的过往真题(EGA 为面向成人的巴斯克语水平考试,类似巴斯克语能力认证考试);
  • 题型结构:每套测试通常包含 10 道单选题,每道题 4 个选项、仅有 1 个正确答案;
  • 难度定位:由于输入文本的长度与复杂度,这些练习比 Belebele 更具挑战性,因此 EusReading 特别适合用于衡量模型的长上下文理解能力(long context understanding)。

注:README 中给出的 Homepage 为 Latxa 项目主页(https://github.com/hitz-zentroa/latxa),数据集托管于 Hugging Face 的HiTZ/EusReading;按本任务规范,正文不再输出外部站点链接,相关来源信息均可在任务 YAML 的dataset_path字段与 README 中查到。

二、引用规范

在论文或技术报告中引用该评测任务时,README 提供了标准的 BibTeX 条目,可直接引用 Latxa 论文:

@misc{etxaniz2024latxa, title={Latxa: An Open Language Model and Evaluation Suite for Basque}, author={Julen Etxaniz and Oscar Sainz and Naiara Perez and Itziar Aldabe and German Rigau and Eneko Agirre and Aitor Ormazabal and Mikel Artetxe and Aitor Soroa}, year={2024}, eprint={2403.20266}, archivePrefix={arXiv}, primaryClass={cs.CL} }

三、任务注册与分组关系

3.1 任务定义文件

eus_reading的完整实现位于 lm_eval/tasks/eus_reading/,共包含三个文件:

文件作用
eus_reading.yaml任务注册配置:声明数据集、切分、输出类型与指标
utils.py文档格式化函数:构造提示词模板与选项列表
README.md任务文档:数据背景、引用与维护检查清单

3.2 在 BasqueBench 组中的位置

虽然eus_reading自身没有独立的分组(README 明确注明 "There are no groups"),但它被收纳进巴斯克语综合评测基准BasqueBench组中。在 basque_bench 组定义 中,eus_readingarc_eu_challengebelebele_eus_Latnmgsm_native_cot_euxnli_eu等 18 项任务并列,共同构成对巴斯克语模型"理解与生成能力"的全面评估(见 BasqueBench README)。

由此,评测时存在两种调用路径:

# 方式一:单独评测 EusReading lm_eval --model hf --model_args pretrained=your_model --tasks eus_reading # 方式二:作为 BasqueBench 组的一部分参与综合评测 lm_eval --model hf --model_args pretrained=your_model --tasks basque_bench

四、评测配置逐字段解析

eus_reading.yaml 是任务的"大脑",全文共 16 行,每个字段都直接决定评测行为:

dataset_path: HiTZ/EusReading dataset_name: default task: eus_reading doc_to_text: !function utils.doc_to_text_context doc_to_choice: !function utils.doc_to_choice validation_split: null test_split: test fewshot_split: test output_type: multiple_choice doc_to_target: answer metric_list: - metric: acc aggregation: mean higher_is_better: true metadata: version: 0.0

各字段含义与设计意图:

字段取值说明
dataset_pathHiTZ/EusReading指向 Hugging Face 上的数据集仓库,加载时无需额外指定本地路径
dataset_namedefault使用数据集的默认子集配置
taskeus_reading任务注册名,也是 CLI 中--tasks使用的标识符
doc_to_text!function utils.doc_to_text_context指定文档格式化函数,用于构造送入模型的提示词(见第五节)
doc_to_choice!function utils.doc_to_choice返回候选选项列表,供multiple_choice输出类型计算各选项概率
validation_splitnull不使用验证集(避免评测集污染)
test_splittest评测在test切分上进行
fewshot_splittest少样本示例同样取自test切分,保证示例与评测数据同分布
output_typemultiple_choice多选一评测模式,harness 会为每个选项计算 loglikelihood 并选出概率最高者
doc_to_targetanswer正确答案字段名,来自数据集每条样本的answer
metric_listaccaggregation: meanhigher_is_better: true主指标为准确率,按均值聚合,越大越好
metadata.version0.0任务版本号,用于结果缓存与复现追踪

值得注意的设计细节是fewshot_split: test:由于该数据集没有提供独立验证切分,作者选择在测试集上抽取 few-shot 示例,这在评测小语种数据集时是一种常见且务实的做法——示例文本与待测样本均来自同一分布,且总量(352 题)较小,不会显著影响评测公平性。

五、提示词模板与选项构造的源码实现

utils.py 中实现了两个被 YAML 引用的函数,它们共同决定模型看到的输入形态。

5.1 文档 → 提示词模板(doc_to_text_context

def doc_to_text_context(doc) -> str: candidates = doc["candidates"] num_choices = len(candidates) if num_choices < 2: raise ValueError("Invalid number of candidates") choices = letters[:num_choices] formatted_choices = "\n".join( [f"{choice}: {candidates[i]}" for i, choice in enumerate(choices)] ) return f"Pasartea: {doc['context']}\n\nGaldera: {doc['question']}\n{formatted_choices}\nErantzuna:"

该函数的核心逻辑:

  1. 从样本字典中取出candidates候选列表,并校验数量(少于 2 个选项直接抛出ValueError,避免非法输入进入评测);
  2. 用全局常量letters = ["A", "B", "C", "D"]按选项数量截取字母编号;
  3. 将选项逐行格式化为A: <选项内容>的形式;
  4. 拼接出完整的巴斯克语提示词模板:
Pasartea: <阅读文本> Galdera: <问题> A: <选项A> B: <选项B> C: <选项C> D: <选项D> Erantzuna:

其中Pasartea(篇章)、Galdera(问题)、Erantzuna(答案)均为巴斯克语,模板以"Erantzuna:"结尾,引导模型续写出正确选项字母。这种"上下文 + 问题 + 编号选项 + 答案前缀"的结构是阅读理解类任务的标准 prompting 范式,也让长文本上下文得以完整送入模型,从而兑现 README 中"衡量长上下文理解能力"的设计目标。

5.2 候选选项提取(doc_to_choice

def doc_to_choice(doc) -> List[str]: num_choices = len(doc["candidates"]) if num_choices < 2: raise ValueError("Invalid number of candidates") return letters[:num_choices]

该函数同样从candidates推导选项数量,返回["A", "B", "C", "D"]中对应长度的前缀列表。在 harness 的multiple_choice模式下,评测框架会将每个字母视为候选续写,通过doc_to_text生成的模板分别计算各选项的 loglikelihood,再取概率最高的选项作为模型预测,与doc_to_target指向的answer字段比对后计入准确率。

六、运行评测与结果解读

6.1 命令行运行

在安装好 lm-evaluation-harness 并激活对应 Python 环境后,可以按如下命令运行(以 Hugging Face 模型为例):

lm_eval --model hf \ --model_args pretrained=HiTZ/Latxa-7B-v1.1 \ --tasks eus_reading \ --batch_size auto

要点说明:

  • --model hf表示使用 Hugging Face Transformers 后端,--model_args中通过pretrained=指定模型权重名称或本地路径;
  • --tasks eus_reading指定任务名;如需连同其他巴斯克语任务一起评测,可改为basque_bench
  • 由于 EusReading 文本较长,建议关注--max_length相关配置(默认受模型上下文窗口约束),以充分发挥其长上下文评测价值;
  • 评测结束后,harness 会输出类似"eus_reading": {"acc,none": 0.xxxx}的结果,acc即为该任务的平均准确率。

6.2 结果含义

  • acc指标higher_is_better: true,取值越高说明模型在巴斯克语长文本阅读与多选题作答上的能力越强;
  • 由于题目难度高于 Belebele(后者为平行短文本多语言数据集),eus_reading的绝对分数通常会低于belebele_eus_Latn,二者分数差可作为衡量模型长上下文处理能力的参考信号;
  • 结果可配合 harness 的--output_path--log_samples参数保存,便于复现与对比不同模型、不同 few-shot 配置下的表现。

七、小结

eus_reading是 lm-evaluation-harness 中极具代表性的低资源语言长文本评测任务:

  • 数据层面:源自 1998–2008 年 EGA 考试真题的 352 道四选一阅读理解题,天然具备长文本、高难度的特性;
  • 实现层面:任务仅由一个 16 行 YAML 与一个 40 余行的 utils 模块构成,却完整覆盖了数据集加载、提示词构造、选项打分、指标聚合的全链路;
  • 集成层面:既可作为独立任务运行,也可通过basque_bench组参与巴斯克语综合评测。

对研究巴斯克语 NLP、低资源语言评测或长上下文理解能力的开发者而言,该任务是一个轻量且实用的基准;结合 BasqueBench README 中的其他巴斯克语任务(eus_exams_eueus_proficiencyeus_trivia等),可以搭建起覆盖阅读、问答、能力测试与常识推理的多维度评测矩阵。

【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询