janewarrenn/CAMP
收藏资源简介:
CAMP(Contextualized Arithmetic with Minimal Pairs)是一个用于研究自然语言框架如何影响大型语言模型(LLM)在单位转换任务上准确性的基准数据集。该数据集通过最小对设计,将相同的底层计算以多种表面形式呈现(例如,自然语言提示如“将300 km/h转换为m/s”与纯算术表达式如“300 * 0.277778是多少”),从而允许在保持数学常数不变的情况下,直接比较不同提示条件下的模型行为。数据集包含15个领域(如速度、烹饪、货币、密度等),涵盖223,151个问题,其中部分问题具有所有三种提示条件(数学仅、自然语言、带参考指南),而其他问题只有两种条件。关键发现表明,LLM在自然语言框架下的单位转换准确性显著低于纯算术表达式,平均下降约19.9个百分点。数据集结构包括列如领域、干扰变量、输入数值、答案、难度和不同提示类型,旨在评估模型在上下文变化中的推理能力。
language: - 英语 license: CC BY 4.0 task_categories: - 问答任务 tags: - 数学 - 单位转换 - 基准测试 - 最小对(minimal pairs) - 大语言模型(LLM)评估 - 推理 pretty_name: CAMP size_categories: - 10万<n<100万 # CAMP:基于最小对(minimal pairs)的语境化算术基准 CAMP是一款用于研究自然语言表述方式如何影响大语言模型(LLM)在单位转换任务中准确率的基准测试集。每个样本均为一组最小对:即针对同一核心计算任务,采用多种不同的表层表述形式,从而能够在保持数学逻辑不变的前提下,直接对比模型在不同提示词条件下的行为表现。 ## 核心发现 大语言模型在以自然语言表述单位转换问题(例如"将300千米每小时转换为米每秒")时的准确率,显著低于直接以纯算术形式呈现同一计算任务时(例如"计算300 × 0.277778的结果")。我们在8款前沿大语言模型与10个任务领域中测得,尽管核心数学逻辑完全一致,但模型的平均准确率下降了约19.9个百分点。 ## 数据集结构 ### 字段说明 | 字段名 | 字段说明 | |---|---| | `domain` | 转换任务领域(例如:速度、烹饪、货币) | | `distractor` | 提示词中嵌入的可选干扰项/物质(例如:水),无干扰项时为空字符串 | | `number` | 待转换的输入数值 | | `answer` | 正确输出结果(字符串格式;时区类答案为格式化后的时间) | | `difficulty` | `Easy`(输入为整数)或`Hard`(输入为小数) | | `prompt_natural_language` | 自然语言提示词,无转换参考指南 | | `prompt_with_guide` | 自然语言提示词 + 转换参考表 | | `prompt_math_only` | 纯算术表达式(例如:"计算300 × 0.277778的结果");对于无法直接用算术表达式表示的领域(如服装尺码),该字段为空值 | ### 提示条件 | 提示条件 | 示例 | |---|---| | `math_only` | 纯算术形式:"计算300 × 0.277778的结果" | | `natural_language` | 自然语言形式:"将300千米每小时转换为米每秒,仅输出数值结果。" | | `with_guide` | 带参考指南形式:"将300千米每小时转换为米每秒。" + 转换系数对照表 | ### 任务领域 本次数据集涵盖15个任务领域,分为两组: **完整组(包含全部3种提示条件)**:比特/字节、烹饪、货币、密度、能量、摩尔/粒子、速度、温度、时区、体积 **偏倚组(仅包含自然语言与带参考指南两种提示条件)**:服装尺码(男士长裤、男士鞋履、女士文胸、女士长裤、女士鞋履) ### 干扰项变量 针对烹饪、体积、密度与摩尔领域,部分提示词会在问题中嵌入特定物质,例如"将5毫升的水转换为汤匙"与"将5毫升转换为汤匙"。`distractor`字段用于记录该嵌入物质;`distractor`为空的样本即为无语境的基线样本。两类变体拥有完全一致的输入数值与正确答案,且未发现该变量操作对模型准确率存在显著影响。 ## 数据集规模 | 统计项 | 数值 | |---|---| | 总问题数 | 223151 | | 包含全部3种提示条件的问题数 | 42800 | | 包含2种提示条件的问题数 | 180351 | | 任务领域总数 | 15 | ## 使用方法 python from datasets import load_dataset ds = load_dataset("janewarren/CAMP", split="test") # 对比同一问题的不同表层表述形式 row = ds[0] print(row["prompt_math_only"]) print(row["prompt_natural_language"]) print(row["answer"])



