email-subject-line-generation-eval
This Email Could Save Your Life: Introducing the Task of Email Subject Line Generation — Zhang et al. (2019) (arXiv:1906.03497, 2019)
What this evaluates
Evaluates a model's ability to generate highly abstractive, ultra-concise email subject lines from email body text. It probes extreme compression, informativeness, and fluency in a real-world email triaging context, distinguishing the task from standard text summarization.
Datasets
- AESLC — total ?; splits: dev (-1), test (-1)
Metrics
ROUGE-1 (primary) — range: percent
- F1 score of unigram overlap between the generated subject line and the reference subject line(s). Computed as 2 * (precision * recall) / (precision + recall).
ROUGE-2 — range: percent
- F1 score of bigram overlap between the generated subject line and the reference subject line(s).
ROUGE-L — range: percent
- F1 score based on the longest common subsequence between the generated subject line and the reference subject line(s), capturing sentence-level structure.
METEOR — range: percent
- Metric for Evaluation of Translation with Explicit ORdering; aligns words using synonymy and stemming, penalizes for fragmentation and ordering differences.
ESQE — range: other
- Email Subject Quality Estimator; a reference-less neural metric specifically trained to score subject line quality without requiring ground-truth references.
Human Rating — range: [1, 4]
- Average score on a 1-4 scale (Poor, Fair, Good, Great) across three aspects: overall quality, informativeness, and fluency. Each sample is rated by 3 independent judges.
Input / output format
Input: Email body text (including greeting and main content) provided as the source document.
Output: A single sentence or short phrase representing the generated email subject line.
Scoring recipe
def compute_rouge_f1(pred, refs, n=1):
pred_ngrams = set(ngrams(pred.split(), n))
ref_ngrams = set()
for r in refs:
ref_ngrams.update(ngrams(r.split(), n))
if not pred_ngrams or not ref_ngrams:
return 0.0
overlap = len(pred_ngrams & ref_ngrams)
prec = overlap / len(pred_ngrams)
rec = overlap / len(ref_ngrams)
return 2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0
def compute_human_rating(predictions, judges=3):
scores = []
for pred in predictions:
ratings = [judge.assign_score(pred) for _ in range(judges)]
scores.append(sum(ratings) / len(ratings))
return sum(scores) / len(scores)
Common pitfalls
- Evaluating against a single reference when the dataset actually provides multiple human annotations per email (Table 3b shows evaluation against two human annotations).
- Relying solely on n-gram overlap metrics (ROUGE/METEOR) without considering that email subject line generation requires extreme abstraction and compression, which these metrics may penalize unfairly.
- Ignoring the reference-less ESQE metric, which is specifically designed for this task and often correlates better with human judgment than standard summarization metrics.
Evidence (verbatim from paper)
We first use automatic metrics from text summarization and machine translation: (1) ROUGE (Lin, 2004) including F1 scores of ROUGE-1, ROUGE-2, and ROUGE-L. (2) METEOR (Denkowski and Lavie, 2014). They all rely on one or more references and measure the similarity between the output and the reference. In addition, we include ESQE, which is a reference-less metric.
Citation
@misc{zhang2019email,
title={This Email Could Save Your Life: Introducing the Task of Email Subject Line Generation},
author={Zhang et al. (2019)},
year={2019},
note={arXiv:1906.03497}
}
1---2name: email-subject-line-generation-eval3description: Evaluates a model's ability to generate highly abstractive, ultra-concise email subject lines from email body text. It probes extreme compression, informativeness, and fluency in a real-world email triaging context, distinguishing the task from standard text summarization. Use when the user wants to benchmark on AESLC, or asks about evaluating this task. Reports ROUGE-1.4---56# email-subject-line-generation-eval78> This Email Could Save Your Life: Introducing the Task of Email Subject Line Generation — Zhang et al. (2019) (arXiv:1906.03497, 2019)910## What this evaluates1112Evaluates a model's ability to generate highly abstractive, ultra-concise email subject lines from email body text. It probes extreme compression, informativeness, and fluency in a real-world email triaging context, distinguishing the task from standard text summarization.1314## Datasets1516- **AESLC** — total ?; splits: dev (-1), test (-1)1718## Metrics1920- `ROUGE-1` **(primary)** — range: percent21 - F1 score of unigram overlap between the generated subject line and the reference subject line(s). Computed as 2 * (precision * recall) / (precision + recall).22- `ROUGE-2` — range: percent23 - F1 score of bigram overlap between the generated subject line and the reference subject line(s).24- `ROUGE-L` — range: percent25 - F1 score based on the longest common subsequence between the generated subject line and the reference subject line(s), capturing sentence-level structure.26- `METEOR` — range: percent27 - Metric for Evaluation of Translation with Explicit ORdering; aligns words using synonymy and stemming, penalizes for fragmentation and ordering differences.28- `ESQE` — range: other29 - Email Subject Quality Estimator; a reference-less neural metric specifically trained to score subject line quality without requiring ground-truth references.30- `Human Rating` — range: [1, 4]31 - Average score on a 1-4 scale (Poor, Fair, Good, Great) across three aspects: overall quality, informativeness, and fluency. Each sample is rated by 3 independent judges.3233## Input / output format3435**Input**: Email body text (including greeting and main content) provided as the source document.3637**Output**: A single sentence or short phrase representing the generated email subject line.3839## Scoring recipe4041```python42def compute_rouge_f1(pred, refs, n=1):43 pred_ngrams = set(ngrams(pred.split(), n))44 ref_ngrams = set()45 for r in refs:46 ref_ngrams.update(ngrams(r.split(), n))47 if not pred_ngrams or not ref_ngrams:48 return 0.049 overlap = len(pred_ngrams & ref_ngrams)50 prec = overlap / len(pred_ngrams)51 rec = overlap / len(ref_ngrams)52 return 2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 05354def compute_human_rating(predictions, judges=3):55 scores = []56 for pred in predictions:57 ratings = [judge.assign_score(pred) for _ in range(judges)]58 scores.append(sum(ratings) / len(ratings))59 return sum(scores) / len(scores)60```6162## Common pitfalls6364- Evaluating against a single reference when the dataset actually provides multiple human annotations per email (Table 3b shows evaluation against two human annotations).65- Relying solely on n-gram overlap metrics (ROUGE/METEOR) without considering that email subject line generation requires extreme abstraction and compression, which these metrics may penalize unfairly.66- Ignoring the reference-less ESQE metric, which is specifically designed for this task and often correlates better with human judgment than standard summarization metrics.6768## Evidence (verbatim from paper)6970> We first use automatic metrics from text summarization and machine translation: (1) ROUGE (Lin, 2004) including F1 scores of ROUGE-1, ROUGE-2, and ROUGE-L. (2) METEOR (Denkowski and Lavie, 2014). They all rely on one or more references and measure the similarity between the output and the reference. In addition, we include ESQE, which is a reference-less metric.7172## Citation7374```bibtex75@misc{zhang2019email,76 title={This Email Could Save Your Life: Introducing the Task of Email Subject Line Generation},77 author={Zhang et al. (2019)},78 year={2019},79 note={arXiv:1906.03497}80}81```8283- arXiv: 1906.03497