Shrome at Touché: Soft-Vote Ensembling and Counter-Causal Augmentation for Causality Extraction
Organizations: Department of Computational Linguistics, University of Zurich, Switzerland
Abstract
Touché 2026 extends causality extraction to counter-causal claims: news sentences whose surface form appears causal but whose meaning denies the causation, as in "It is falsely believed that X caused Y." A system that relies on surface cues such as "caused" or "led to" will accept such a sentence as causal and give it the wrong polarity. On the Countercausal News Corpus (CCNC), the task has three subtasks: deciding whether a sentence is causal (detection), locating its cause and effect spans (extraction), and labeling its polarity as procausal, counter-causal, or uncausal. We build one model per subtask. Detection is a fine-tuned classifier with a single cross-task rule that uses the extracted spans to remove false positives. For extraction, we ensemble three RoBERTa-large BILOU+CRF taggers by averaging their token-level scores before decoding, rather than voting on the spans each tagger produces. For polarity, where labeled counter-causal examples are scarcest, we add training sentences generated by a large language model prompted with nine patterns of counter-causal expression adapted from Hagen et al., keeping only those that pass automatic structural checks. On the held-out CCNC test set, the system reaches F1 0.869 on detection and macro-F1 0.817 on polarity, and in the organizers' final causal-only evaluation of extraction it scores granularity-adjusted F1 0.728, the highest extraction score among all submissions including the organizers' baseline. The development split is used only for component selection and the ablations reported in the paper.
Figures & tables
| Subtask | Train | Dev | Gold-span or class units |
| Detection (binary) | 3,075 | 340 | 1 label per sentence |
| Extraction | 3,075 | 340 | 473 gold spans on dev |
| Polarity (3-class) | 4,603 | 502 | 2,412/1,305/886 train; 264/120/118 dev |
| Class | Train rows | Neg. cues (dev) | After aug. |
| uncausal | 2,412 | 29.5% | 2,412 |
| procausal | 1,305 | 15.8% | 1,305 |
| counter-causal | 886 | 67.8% | 3,319 |
| Total | 4,603 | — | 7,036 |
| Configuration | Binary F 1 (causal class) |
| Random | 0.490 |
| TF-IDF + logistic regression | 0.793 |
| BiLSTM | 0.731 |
| UniCausal sequence baseline | 0.553 |
| Zero-shot BART-MNLI | 0.642 |
| BERT-base (seed 42, standalone) | 0.8690 |
| Source | Base recipe | TAPT recipe |
| CCNC extraction train | 3,075 | 3,075 |
| CNCv2/RECESS (signals stripped) | 3,075 | 3,075 |
| UniCausal (signals stripped) | — | 1,049 |
| Source rows | 6,150 | 7,199 |
| After EDA + oversampling | 11,500 | 13,400 |
| Seed | Encoder warm-start | Recipe | Exact F 1 | Overlap F 1 |
| 123 | RoBERTa-large | base recipe | 0.5742 | 0.7692 |
| 2026 | RoBERTa-large | base recipe | 0.5505 | 0.7569 |
| 42 | RoBERTa-large + TAPT | +UniCausal, boundary-smoothing aux. | 0.5260 | 0.7584 |
| Soft-vote of the three seeds above | 0.5933 | 0.7800 | ||
| Stage | Exact F 1 (overlap F 1 ) | exact |
| Hagen RoBERTa baseline Hagen et al. (2025) (Val, BIO-tag) | 0.440 (n/a) | ref † |
| Single seed, base recipe (seed 123) | 0.5742 (0.7692) | |
| Hard span-level vote, matched three-seed panel | 0.5781 (0.7634) | |
| Emission soft-vote, same matched panel | 0.5888 (0.7730) | |
| Emission soft-vote, production panel with TAPT seed | 0.5933 (0.7800) | |
| + NLI span verifier ( , within-noise) | 0.5953 (0.7781) |
| Configuration | Macro F 1 | uncausal F 1 | procausal F 1 | counter-causal F 1 |
| Seed 42 | 0.8897 | 0.9275 | 0.8678 | 0.8739 |
| Seed 123 | 0.8773 | 0.9091 | 0.8319 | 0.8908 |
| Seed 2026 | 0.8805 | 0.9246 | 0.8468 | 0.8703 |
| Seed 7 | 0.8867 | 0.9216 | 0.8571 | 0.8814 |
| 4-seed mean-softmax (production) | 0.9029 | — | — | 0.891 |
| 5-seed mean-softmax (adds a weaker seed) | 0.8953 | — | — | — |
| Gold / Predicted | uncausal | procausal | counter-causal | recall |
| uncausal (264) | 243 | 12 | 9 | 0.920 |
| procausal (120) | 8 | 106 | 6 | 0.883 |
| counter-causal (118) | 8 | 5 | 105 | 0.890 |
| Subtask | Metric | Dev | Test | |
| Detection (binary) | F 1 (causal class) | 0.8946 | 0.869 | |
| precision | — | 0.848 | — | |
| recall | — | 0.890 | — | |
| accuracy | — | 0.832 | — | |
| Extraction (TIRA) | exact-match F 1 | 0.5933 | 0.473 | |
| precision | — | 0.475 | — |
Appendix figures & tables1 asset
Supplementary material from the paper’s appendix.
Appendix
| Parameter | Detection | Extraction (per seed) | Polarity (per seed) |
| Encoder | BERT-base | RoBERTa-large | BERT-base |
| Optimizer | AdamW | AdamW ( ) | AdamW |
| Learning rate | |||
| CRF-group learning rate | — | — | |
| Weight decay | 0.01 | 0.01 | — |
| Schedule | 10% linear warmup, cosine | 6% warmup, cosine | — |
Relation Extraction
Relation extraction identifies and classifies relationships between entities or events in text and multimodal data.
See all 82 papers