ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

非洲新闻机器翻译基准 MAFAND 的评估实现:lm-evaluation-harness 中的 AfroBench 多语言翻译任务

非洲新闻机器翻译基准 MAFAND 的评估实现:lm-evaluation-harness 中的 AfroBench 多语言翻译任务 非洲新闻机器翻译基准 MAFAND 的评估实现lm-evaluation-harness 中的 AfroBench 多语言翻译任务【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness本文以 lm-evaluation-harness 仓库中 AfroBench 基准的 MAFAND 机器翻译任务lm_eval/tasks/afrobench/mafand/为对象解析该任务从论文语料到评估配置的完整实现链路包括 21 种非洲语言的双向翻译方向、三套提示模板、BLEU/chrF 评测指标以及基于 YAML 模板和脚本批量化生成的语言级子任务。读者读完可以掌握如何在 lm-evaluation-harness 中定位、理解并运行这类生成式generate_until低资源机器翻译评测任务。一、任务背景MAFAND 语料与 NAACL 2022 论文MAFANDMasakhane African News Dataset评估任务的源头是 2022 年发表于 NAACL 的论文A Few Thousand Translations Go a Long Way! Leveraging Pre-trained Models for African News TranslationAdelani 等NAACL 2022其官方语料主页为 masakhane-io/lafand-mt。该论文的核心问题是大规模多语言预训练模型往往把低资源语言排除在训练语料之外导致非洲语言在翻译系统中长期缺位。作者为此构建了一个覆盖 16 种非洲语言的新颖非洲新闻语料库其中 8 种语言此前没有任何公开评估数据集并验证了在少量高质量翻译数据上微调大规模预训练模型是同时向新语言和新领域迁移的最有效策略。论文的 BibTeX 引用完整记录在 lm_eval/tasks/afrobench/mafand/README.md 中涉及 David Adelani、Julia Kreutzer、Angela Fan 等数十位来自 Masakhane 社区的作者发表于Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language TechnologiesSeattle, United States, ACL, pp. 3053–3070。二、任务在 AfroBench 中的定位MAFAND 是 AfroBenchAfroBench: How Good are Large Language Models on African Languages?arXiv:2311.07978基准中六个文本生成数据集之一承担**机器翻译Machine Translation**评测职能。AfroBench 总计覆盖 64 种非洲语言、15 类任务、22 个数据集MAFAND 在其中通过任务标签afrobench_MT_tasks与其他翻译类任务如african_flores、african_ntrex归为一组。在 lm-evaluation-harness 中MAFAND 相关文件组织在 lm_eval/tasks/afrobench/mafand/ 目录下结构如下mafand/ ├── mafand.yaml # 顶层任务组配置 ├── gen_utils.py # 批量生成各语言 YAML 的脚本 ├── README.md # 论文信息与引用 ├── prompt_1/ prompt_2/ prompt_3/ # 三套提示模板 │ ├── african-english/ # 非洲语言 → 英语/法语 │ │ ├── mafand # 共享基座配置无扩展名 │ │ ├── mafand_amh-en.yaml ... mafand_zul-en.yaml # 21 个语言级子任务 │ │ └── utils.py # 提示构建与答案抽取函数 │ └── english-african/ # 英语/法语 → 非洲语言 │ ├── mafand │ ├── mafand_en-amh.yaml ... mafand_fr-wol.yaml │ └── utils.py三套提示模板prompt_1、prompt_2、prompt_3× 两个翻译方向african-english与english-african构成prompt_*目录下的 6 组配置每组内再按语言拆分出独立的 YAML 子任务。三、顶层任务组mafand.yamllm_eval/tasks/afrobench/mafand/mafand.yaml 是顶层任务组入口声明了 6 个成员任务并定义了聚合指标group: mafand task: - mafand_eng-afr_prompt_1 - mafand_eng-afr_prompt_2 - mafand_eng-afr_prompt_3 - mafand_afr-eng_prompt_1 - mafand_afr-eng_prompt_2 - mafand_afr-eng_prompt_3 aggregate_metric_list: - metric: acc aggregation: mean weight_by_size: true metadata: version: 1要点解读group: mafand使该组可作为整体被lm_eval直接引用例如--tasks mafand6 个成员任务命名规则为mafand_{方向}_{提示编号}其中eng-afr表示英语/法语翻译为非洲语言afr-eng表示非洲语言翻译为英语/法语aggregate_metric_list定义了组级聚合对acc指标取均值聚合并启用weight_by_size: true按任务样本量加权。值得说明的是单个语言级子任务使用的实际指标是bleu与chrf见下文基座配置组级聚合配置体现了 lm-evaluation-harness 中子任务用专用指标、组级可另行指定聚合口径的分层设计。四、语言级基座配置prompt 目录下的 mafand 文件每个prompt_*目录下都有一个无扩展名的mafand文件如 lm_eval/tasks/afrobench/mafand/prompt_1/african-english/mafand它是该方向提示模板下所有语言子任务共用的基座配置tag: - mafand_tasks - mafand_afr-eng - mafand_afr-eng_prompt_1 - afrobench_MT_tasks dataset_path: masakhane/mafand dataset_kwargs: {trust_remote_code: True} output_type: generate_until validation_split: validation fewshot_split: validation test_split: test doc_to_target: !function utils.get_target doc_to_text: !function utils.create_text_prompt_1 metric_list: - metric: bleu aggregation: bleu higher_is_better: true - metric: chrf aggregation: chrf higher_is_better: true generation_kwargs: until: - \n do_sample: false temperature: 0.0 repeats: 1 metadata: version: 1.0逐个字段说明其评估语义配置项值作用tagmafand_tasks、mafand_afr-eng、mafand_afr-eng_prompt_1、afrobench_MT_tasks便于按标签批量筛选任务--tasks支持标签引用其中afrobench_MT_tasks与 AfroBench 的机器翻译任务组关联dataset_pathmasakhane/mafandHuggingFace Hub 上的数据源即 MAFAND 语料库dataset_kwargstrust_remote_code: True允许加载数据集仓库中的自定义加载脚本output_typegenerate_until生成式任务由模型自由生成译文而非在候选答案间做似然比较validation_split/fewshot_split/test_splitvalidation/validation/testfew-shot 示例取自验证集最终评分在测试集上进行doc_to_target!function utils.get_target从样本中抽取参考答案英语或法语译文doc_to_text!function utils.create_text_prompt_1根据提示模板构建输入文本metric_listbleu、chrf均higher_is_better: true机器翻译的两项标准自动评测指标generation_kwargsuntil: [\n]、do_sample: false、temperature: 0.0贪心解码遇到换行符停止生成保证译文为确定性输出repeats1每个样本仅评估一次english-african方向见 lm_eval/tasks/afrobench/mafand/prompt_1/english-african/mafand与african-english方向几乎同构差异仅在doc_to_text/doc_to_target指向utils.create_reverse_prompt_*与utils.get_target_reverse即交换了源语言与目标语言的构造逻辑。五、语言覆盖与 YAML 批量化生成5.1 21 种语言与翻译方向lm_eval/tasks/afrobench/mafand/gen_utils.py 中的languages字典定义了全部 21 种语言及其英文名称amh(Amharic)、bam(Bambara)、bbj(Gbomala)、ewe(Ewe)、fon(Fon)、hau(Hausa)、 ibo(Igbo)、kin(Kinyarwanda)、lug(Luganda)、luo(Luo)、mos(Mossi)、 nya(Chichewa)、pcm(Nigerian Pidgin)、sna(Shona)、swa(Swahili)、tsn(Setswana)、 twi(Twi)、wol(Wolof)、xho(Xhosa)、yor(Yoruba)、zul(Zulu)其中 6 种法语系语言bam、bbj、ewe、fon、wol、mos的翻译对偶语言是法语如mafand_bam-fr.yaml、mafand_fr-bam.yaml其余 15 种语言的对偶语言是英语如mafand_amh-en.yaml、mafand_en-amh.yaml。这一区分体现在生成脚本的第 67–72 行french_langs [bam, bbj, ewe, fon, wol, mos] for lang in languages.keys(): norm_lang f{lang}-en if lang not in french_langs else f{lang}-fr reverse_lang fen-{lang} if lang not in french_langs else ffr-{lang}因此african-english方向实际包含非洲语言 → 英语15 种与非洲语言 → 法语6 种两类子任务文件名统一形如mafand_{lang}-{en|fr}.yaml反向目录则对应mafand_{en|fr}-{lang}.yaml。5.2 gen_utils.py 的生成逻辑每个语言级子任务文件由gen_utils.py中的gen_lang_yamls()批量生成生成规则如下yaml_details { include: yaml_template, # 指向基座配置 mafand task: task_name, # 形如 mafand_en-hau_prompt_1 dataset_name: reverse_lang, # 形如 en-hau } file_dir ( f{output_dir}/{mode}/african-english if reverse else f{output_dir}/{mode}/english-african )生成的子任务 YAML 内容极简见 mafand_en-hau.yaml# Generated by utils.py dataset_name: en-hau include: mafand task: mafand_en-hau_prompt_1其依赖include: mafand继承同目录基座配置的全部字段dataset_name用于从masakhane/mafand数据集中选择对应的翻译对子集。gen_utils.py通过 argparse 暴露了 4 个 CLI 参数见main()参数默认值说明--overwriteTrue目标文件已存在时是否覆盖不覆盖时若文件已存在会抛出FileExistsError并列出冲突文件--output-dir./生成的 YAML 输出目录--modeprompt_3提示模板编号可选prompt_1/prompt_2/prompt_3--reverseTrue是否为反向翻译方向英语/法语 → 非洲语言例如重新生成prompt_2下英文→非洲语言方向的全部子任务 YAMLpython lm_eval/tasks/afrobench/mafand/gen_utils.py --mode prompt_2 --reverse True --overwrite True5.3 样本函数目标抽取与提示构建每个方向目录下的 utils.py 负责两件事抽取参考答案与构造提示文本。masakhane/mafand数据集的每个样本含一个translation字段字典键为语言代码如en、fr、hau。目标抽取函数据此实现def get_target(doc): target ( doc[translation][en] if en in doc[translation].keys() else doc[translation][fr] ) return target def get_target_reverse(doc): target_key [key for key in doc[translation].keys() if key not in [en, fr]][0] target doc[translation][target_key] return targetget_target非洲语言 → 英语/法语优先取en键否则取fr键作为参考答案get_target_reverse英语/法语 → 非洲语言取既非en也非fr的那个语言键作为参考答案。提示构建函数分为正向create_text_prompt_*非洲语言为源语言与反向create_reverse_prompt_*英语/法语为源语言两组每组 3 个对应三套提示模板prompt_1 —— 角色扮演式You are an advanced Translator, a specialized assistant designed to translate documents from {语言} into {目标语言}. ... {语言}: {句子} \n{目标语言}: 强调语法正确、以人为导向的翻译要求prompt_2 —— 简洁式{语言} sentence: {句子} \nEnglish sentence: 正向/English sentence: {句子} \n{语言} sentence: 反向仅给出最小标注prompt_3 —— 专家式You are a translation expert. Translate the following {语言} sentences to {目标语言} \n{语言} sentence: {句子}\n{目标语言} sentence: 直接命令式。在 gen_utils.py 的prompt_func中同一套模板用{lang}_text/eng_text占位符参数化配合数据集列名{lang}_text两处实现保持语义一致。提示中的source_langEnglish/French通过判断translation字典中是否存在en键动态确定与 5.1 节的法语语言清单逻辑互相印证。六、运行 MAFAND 评估结合 lm_eval/tasks/afrobench/README.md 的说明与 lm-evaluation-harness 的 CLI 接口详见 docs/interface.md运行方式如下。运行单个方向模板例如英文→豪萨语、prompt_1lm_eval --model hf \ --model_args pretrainedmeta-llama/Llama-3-8B \ --tasks mafand_en-hau_prompt_1 \ --device cuda \ --batch_size 8运行整个 MAFAND 任务组lm_eval --model hf \ --model_args pretrainedmeta-llama/Llama-3-8B \ --tasks mafand \ --device cuda \ --batch_size 8运行 AfroBench 全部翻译任务借助标签lm_eval --model hf \ --model_args pretrainedmeta-llama/Llama-3-8B \ --tasks afrobench_MT_tasks \ --device cuda \ --batch_size 8运行要点由于output_type: generate_until评估会为每个样本执行一次贪心解码temperature: 0.0并以换行符\n作为停止条件few-shot 示例取自validation集fewshot_split: validation如需 0-shot 可配合--num_fewshot 0结果会同时输出bleu与chrf两项机器翻译指标二者均为越大越好若需调试单个样本的提示与输出可使用--log_samples配合 scripts/write_out.py 导出样本级记录进行核对。七、评测设计要点小结从源码结构可以归纳 MAFAND 评估设计的几个关键决策生成式评估而非似然式采用generate_until让模型自由生成译文更贴近真实翻译使用场景也符合低资源翻译开放输出空间的评测惯例双指标互补bleu侧重 n-gram 精确匹配chrf基于字符 n-gram对形态丰富的非洲语言如班图语系的复数/时态屈折更鲁棒多模板 双向翻译3 套提示模板 × 两个翻译方向共 6 组配置可通过组内对比分析提示敏感性也便于复现论文中关于方向与提示的选择结论低资源样本量意识论文强调few thousand translations级别的少量高质量数据即可支撑有效迁移评测配置中的repeats: 1与确定性解码保证了结果的稳定可比性。八、引用在 AfroBench 论文之外MAFAND 语料与基准的引用方式见 lm_eval/tasks/afrobench/mafand/README.md 中给出的 NAACL 2022 BibTeX 条目adelani-etal-2022-thousand以及 AfroBench 总览页 lm_eval/tasks/afrobench/README.md 中给出的 AfroBench 论文引用arXiv:2311.07978。在科研复现中建议同时引用基准论文与所用子数据集论文以完整标注评测来源。【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表