File size: 4,593 Bytes
e3bf1f7
cc33222
 
a031da6
cc33222
 
 
a031da6
 
 
5445b38
 
 
e3bf1f7
5445b38
e3bf1f7
 
a031da6
41dac8e
 
e3bf1f7
 
cc33222
 
 
a031da6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cc33222
 
 
a031da6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cc33222
 
a031da6
 
 
 
 
 
 
cc33222
 
 
a031da6
cc33222
a031da6
 
 
cc33222
 
 
a031da6
cc33222
 
a031da6
 
 
 
 
cc33222
 
a031da6
 
 
 
 
 
 
 
 
cc33222
 
a031da6
 
41dac8e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
---
title: TCP Accuracy
datasets:
- Beanbagdzf/TCP
tags:
- evaluate
- metric
- temporal reasoning
- scheduling
- temporal constraint programming
description: >-
  Accuracy metric for the TCP (Temporal Constraint-Based Planning) benchmark by
  Ding et al. (2025).
sdk: gradio
sdk_version: 6.3.0
app_file: app.py
pinned: false
emoji: 
colorFrom: pink
colorTo: red
---

# Metric Card for TCP Accuracy

## Metric Description

This metric is designed for the **TCP** (Temporal Constraint-Based Planning) benchmark (Ding et al., 2025). It evaluates large language models on complex scheduling and planning tasks that require temporal reasoning, constraint satisfaction, and multi-step logical deduction.

The benchmark includes problems such as:
- Project scheduling with team member availability constraints
- Work duration limits and mandatory break requirements
- Time zone conversions
- Sequential task dependencies

The metric expects model outputs to contain the final answer in LaTeX boxed notation: `\boxed{answer}`.

It performs the following steps:

1. Extracts the answer from the model's prediction string using the regex pattern `\boxed{([^}]*)}`.
2. For the "tcp_short" subset, removes "GMT" from both predictions and references before comparison.
3. Performs exact string matching between the extracted prediction and the reference answer.
4. Returns accuracy as the proportion of correct matches (or per-sample scores).

## How to Use

You can load the metric using the `evaluate` library:

```python
import evaluate

metric = evaluate.load("aauss/tcp_accuracy")

predictions = [
    "After analyzing the constraints... \\boxed{2012-11-05}",
    "The project completes on... \\boxed{2021-01-10}",
    "Converting to GMT, the final time is... \\boxed{2020-05-28 16:00}",
]

references = ["2012-11-05", "2012-11-05", "2020-05-28 16:00 GMT"]
subsets = ["tcp_long", "tcp_long", "tcp_short"]

# Get average accuracy
result = metric.compute(
    predictions=predictions,
    references=references,
    subset=subsets,
)
print(result)
>>> {"accuracy": 0.6666666666666666}

# Get per-sample accuracy
result = metric.compute(
    predictions=predictions,
    references=references,
    subset=subsets,
    return_average=False,
)
print(result)
>>> {"accuracy": [1, 0, 1]}
```

### Inputs

- **predictions** (`list` of `str`): List of predictions to score. Each prediction should be a string containing the model's response, which must include the final answer in the format `\boxed{answer}`.
- **references** (`list` of `str`): List of reference answers. Each reference should be the expected answer string.
- **subset** (`str` or `list` of `str`): The subset type(s) for each sample. Must be one of:
  - `"tcp_long"`: Longer scheduling problems (exact match)
  - `"tcp_short"`: Shorter problems (GMT is stripped before comparison)
- **return_average** (`bool`, optional): If `True`, returns the average accuracy as a float. If `False`, returns a list of binary scores (1 for correct, 0 for incorrect) for each sample. Defaults to `True`.

### Output Values

The metric returns a dictionary with the following key:

- **accuracy** (`float` or `list` of `int`): The accuracy score (0.0 to 1.0) if `return_average=True`, or a list of binary values (0 or 1) indicating correctness per sample if `return_average=False`.

This metric can take on any value between 0.0 and 1.0, inclusive. Higher scores indicate better performance.

#### Values from Popular Papers

Refer to the [original TCP paper](https://aclanthology.org/2025.emnlp-main.1142/) for baseline performance values across various language models.

## Limitations and Bias

- The metric relies on the regex pattern `\boxed{([^}]*)}` to extract answers. If the model output does not include a boxed answer, extraction will fail and return `None`, resulting in an incorrect prediction.
- For "tcp_short" subset, "GMT" is stripped from both predictions and references. Other timezone formats may not be handled correctly.
- The metric uses exact string matching. Semantically equivalent answers with different formatting (e.g., "Nov 5, 2012" vs "2012-11-05") will be marked as incorrect.
- Nested braces inside `\boxed{}` are not supported by the current regex pattern.

## Citation

```bibtex
@software{abbood2025tcp_accuracy,
  title={TCP Accuracy},
  author={Abbood, Auss},
  year={2025},
  url={https://huggingface.co/spaces/aauss/tcp_accuracy}
}
```

## Further References

- [TCP Paper (EMNLP 2025)](https://aclanthology.org/2025.emnlp-main.1142/)
- [TCP Dataset on Hugging Face](https://huggingface.co/datasets/Beanbagdzf/TCP)