CMATH#
Overview#
CMATH is a Chinese elementary school mathematics benchmark containing 1,698 problems across grades 1-6. It evaluates the mathematical reasoning capabilities of language models on Chinese-language math word problems at increasing difficulty levels.
Task Description#
Task Type: Chinese Mathematical Word Problem Solving
Input: Chinese math word problem (elementary school level)
Output: Step-by-step reasoning with numerical answer
Difficulty: Grade 1 (easiest) to Grade 6 (hardest)
Key Features#
1,098 test problems + 600 validation problems
Six grade levels (1-6) for fine-grained difficulty analysis
Problems are in Chinese, testing language-specific reasoning
Simple numerical answers (integers or decimals)
Metadata includes reasoning steps count and digit complexity
Evaluation Notes#
Default configuration uses 0-shot evaluation
Answers should be formatted within
\boxed{}for proper extractionNumeric accuracy metric for answer comparison
Results can be broken down by grade level
Chinese prompt template used by default
Properties#
Property |
Value |
|---|---|
Benchmark Name |
|
Dataset ID |
|
Paper |
N/A |
Tags |
|
Metrics |
|
Default Shots |
0-shot |
Evaluation Split |
|
Data Statistics#
Metric |
Value |
|---|---|
Total Samples |
1,098 |
Prompt Length (Mean) |
70.14 chars |
Prompt Length (Min/Max) |
38 / 191 chars |
Per-Subset Statistics:
Subset |
Samples |
Prompt Mean |
Prompt Min |
Prompt Max |
|---|---|---|---|---|
|
164 |
60.65 |
45 |
99 |
|
253 |
63.3 |
38 |
168 |
|
237 |
69.49 |
49 |
148 |
|
120 |
75.33 |
51 |
114 |
|
126 |
76.79 |
49 |
124 |
|
198 |
80.16 |
42 |
191 |
Sample Example#
Subset: Grade 1
{
"input": [
{
"id": "6e98e414",
"content": "妈咪买了3盒茶叶,一盒茶叶有6小包,一共买了多少小包茶叶?\n请一步一步推理,最后将答案放在\\boxed{}中。\n"
}
],
"target": "18",
"id": 0,
"group_id": 0,
"subset_key": "Grade 1",
"metadata": {
"reasoning_step": 1,
"num_digits": 2
}
}
Prompt Template#
Prompt Template:
{question}
请一步一步推理,最后将答案放在\boxed{{}}中。
Usage#
Using CLI#
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets cmath \
--limit 10 # Remove this line for formal evaluation
Using Python#
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['cmath'],
dataset_args={
'cmath': {
# subset_list: ['Grade 1', 'Grade 2', 'Grade 3'] # optional, evaluate specific subsets
}
},
limit=10, # Remove this line for formal evaluation
)
run_task(task_cfg=task_cfg)