orchid-eval
ORCHID: A Chinese Debate Corpus for Target-Independent Stance Detection and Argumentative Dialogue Summarization — Zhao et al. (2024) (arXiv:2410.13667, 2024)
What this evaluates
Evaluates models on target-independent stance detection (3-way classification) and argumentative dialogue summarization (overall and stance-specific). It probes the ability to classify conflicting viewpoints in Chinese debates and generate concise, faithful summaries aligned with specific stances.
Datasets
Metrics
Accuracy (primary) — range: [0, 1]
- Overall classification accuracy: the proportion of correctly predicted stance labels (pro, con, mixed) out of all test instances.
F1 — range: [0, 1]
- Per-class F1 score computed separately for pro, con, and mixed stances to account for class imbalance.
ROUGE-1 F1 (primary) — range: [0, 1]
- Unigram overlap F1 score between generated summary and gold reference summary.
ROUGE-2 F1 — range: [0, 1]
- Bigram overlap F1 score between generated summary and gold reference summary.
ROUGE-L F1 — range: [0, 1]
- Longest common subsequence overlap F1 score between generated summary and gold reference summary.
Human Evaluation Score — range: [1, 5]
- Average rating on a 1-5 scale across four aspects: conciseness, fluency, faithfulness, and informativeness.
Input / output format
Input: Stance Detection: target claim text (t) and utterance text (c_i). Summarization: sequence of debate utterances (D).
Output: Stance Detection: discrete label {pro, con, mixed}. Summarization: generated text summary (Y).
Scoring recipe
def score_stance(predictions, gold):
acc = sum(p == g for p, g in zip(predictions, gold)) / len(gold)
f1s = []
for stance in ['pro', 'con', 'mixed']:
tp = sum(1 for p, g in zip(predictions, gold) if p == stance and g == stance)
fp = sum(1 for p, g in zip(predictions, gold) if p == stance and g != stance)
fn = sum(1 for p, g in zip(predictions, gold) if p != stance and g == stance)
prec = tp / (tp + fp) if (tp + fp) > 0 else 0
rec = tp / (tp + fn) if (tp + fn) > 0 else 0
f1s.append(2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0)
return acc, f1s
def score_summary(predictions, gold):
import rouge
scorer = rouge.Rouge()
scores = scorer.get_scores(predictions, gold, avg=True)
return scores['rouge-1']['f'], scores['rouge-2']['f'], scores['rouge-l']['f']
Common pitfalls
- Imbalanced stance labels (31%/31%/38%) require per-class F1 reporting rather than relying solely on overall accuracy.
- Long debate inputs often exceed model context windows, necessitating chunking, iterative prompting, or hierarchical architectures.
- Pipeline approaches for stance-specific summarization suffer from error propagation if the initial stance detection step is inaccurate.
Evidence (verbatim from paper)
Following Cheng et al. (2022), we report both overall accuracy and per-class (stance) F1 scores. We choose the well-established ROUGE scores as automatic evaluation metrics and report standard F1 scores of ROUGE-1, ROUGE-2 and ROUGE-L.
Citation
@misc{zhao2024orchid,
title={ORCHID: A Chinese Debate Corpus for Target-Independent Stance Detection and Argumentative Dialogue Summarization},
author={Zhao et al. (2024)},
year={2024},
note={arXiv:2410.13667}
}
1---2name: orchid-eval3description: Evaluates models on target-independent stance detection (3-way classification) and argumentative dialogue summarization (overall and stance-specific). It probes the ability to classify conflicting viewpoints in Chinese debates and generate concise, faithful summaries aligned with specific stances. Use when the user wants to benchmark on OrChiD, or asks about evaluating this task. Reports Accuracy, ROUGE-1 F1.4---56# orchid-eval78> ORCHID: A Chinese Debate Corpus for Target-Independent Stance Detection and Argumentative Dialogue Summarization — Zhao et al. (2024) (arXiv:2410.13667, 2024)910## What this evaluates1112Evaluates models on target-independent stance detection (3-way classification) and argumentative dialogue summarization (overall and stance-specific). It probes the ability to classify conflicting viewpoints in Chinese debates and generate concise, faithful summaries aligned with specific stances.1314## Datasets1516- **OrChiD** — total 14091; splits: train (11005), dev (1534), test (1550); repo https://github.com/xiutian/OrChiD1718## Metrics1920- `Accuracy` **(primary)** — range: [0, 1]21 - Overall classification accuracy: the proportion of correctly predicted stance labels (pro, con, mixed) out of all test instances.22- `F1` — range: [0, 1]23 - Per-class F1 score computed separately for pro, con, and mixed stances to account for class imbalance.24- `ROUGE-1 F1` **(primary)** — range: [0, 1]25 - Unigram overlap F1 score between generated summary and gold reference summary.26- `ROUGE-2 F1` — range: [0, 1]27 - Bigram overlap F1 score between generated summary and gold reference summary.28- `ROUGE-L F1` — range: [0, 1]29 - Longest common subsequence overlap F1 score between generated summary and gold reference summary.30- `Human Evaluation Score` — range: [1, 5]31 - Average rating on a 1-5 scale across four aspects: conciseness, fluency, faithfulness, and informativeness.3233## Input / output format3435**Input**: Stance Detection: target claim text (t) and utterance text (c_i). Summarization: sequence of debate utterances (D).3637**Output**: Stance Detection: discrete label {pro, con, mixed}. Summarization: generated text summary (Y).3839## Scoring recipe4041```python42def score_stance(predictions, gold):43 acc = sum(p == g for p, g in zip(predictions, gold)) / len(gold)44 f1s = []45 for stance in ['pro', 'con', 'mixed']:46 tp = sum(1 for p, g in zip(predictions, gold) if p == stance and g == stance)47 fp = sum(1 for p, g in zip(predictions, gold) if p == stance and g != stance)48 fn = sum(1 for p, g in zip(predictions, gold) if p != stance and g == stance)49 prec = tp / (tp + fp) if (tp + fp) > 0 else 050 rec = tp / (tp + fn) if (tp + fn) > 0 else 051 f1s.append(2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0)52 return acc, f1s5354def score_summary(predictions, gold):55 import rouge56 scorer = rouge.Rouge()57 scores = scorer.get_scores(predictions, gold, avg=True)58 return scores['rouge-1']['f'], scores['rouge-2']['f'], scores['rouge-l']['f']59```6061## Common pitfalls6263- Imbalanced stance labels (31%/31%/38%) require per-class F1 reporting rather than relying solely on overall accuracy.64- Long debate inputs often exceed model context windows, necessitating chunking, iterative prompting, or hierarchical architectures.65- Pipeline approaches for stance-specific summarization suffer from error propagation if the initial stance detection step is inaccurate.6667## Evidence (verbatim from paper)6869> Following Cheng et al. (2022), we report both overall accuracy and per-class (stance) F1 scores. We choose the well-established ROUGE scores as automatic evaluation metrics and report standard F1 scores of ROUGE-1, ROUGE-2 and ROUGE-L.7071## Citation7273```bibtex74@misc{zhao2024orchid,75 title={ORCHID: A Chinese Debate Corpus for Target-Independent Stance Detection and Argumentative Dialogue Summarization},76 author={Zhao et al. (2024)},77 year={2024},78 note={arXiv:2410.13667}79}80```8182- arXiv: 2410.13667