CCF Observatory
A lighthouse on Canada’s climate coverage
0 %
Lighting the lighthouse…
Chapter 05 · Database & method

Every category is checked,
twice, by humans.

The models learn from expert human annotation, then every category clears two checks: an expert-coded gold standard, and a second, blind coding. Each category then carries its own reliability tier, including the ones we report as fragile.

0.866macro F1
2human checks
65categories
27 A · 21 B · 17 Creliability tiers
Measured performance

Out of 100 sentences, the models classify 87 the way the human expert does

The overall macro F1 is 0.866. It averages precision (are its calls right?) and recall (does it find every real case?) equally across every measured category, so rare categories count for as much as frequent ones.

Figure 1 · Model validation Source: validation file, served by /api/annotation-metrics

Above 0.80, a category supports an analysis across the whole corpus; between 0.60 and 0.80, it gives a lead that still needs confirming; below 0.60, it supports nothing more than a commented example. The corpus's sixty-odd categories are defined in the What we extract chapter.

What is an F1 score?

The F1 score combines two things: how often the model's calls are right (precision) and how many real cases it finds (recall). It runs from 0 (worst) to 1 (perfect).

A concrete example

A model detects the "Protest" category. Out of 100 sentences, 10 really are about protests. The model flags 12, gets 8 of the 10 real ones, and 4 of its flags are wrong:

Precision8 correct out of 12 flagged0.67
Recall8 found out of 10 actual0.80
F1harmonic mean of the two0.73

Above 0.80, a category is considered reliably classified.

One dot per measured category

fragile fair reliable
00.600.801

F1 score, from 0 to 1. Hover or tap a dot to read its detail.

Figure 1 — how closely the models match the human expert, category by category. Weighted F1 per category, from 0 to 1, measured on the gold standard held out of training. The gauge carries the validation's overall macro F1 (0.866); the scatter places every measured category at its own F1, and the tooltip gives its precision, its recall, its number of test sentences and the gap between English and French. Reading it: the further right a dot sits, the closer the agreement; dots below 0.60 mark the categories we report as fragile.

Double validation

One thousand gold-standard sentences are coded twice, the second time blind

Our models never grade their own homework. They learn from expert human annotation, then every category is validated twice: against an expert-coded gold standard, then against a second annotator who never saw the first coding.

01 An expert teaches the models Thousands of sentences hand-annotated by the expert annotator herself, Alizée Pillod, across the corpus's sixty-odd categories. The models learn her judgement and nothing else: no hand-written rules, no machine-produced labels. 65 categories · human annotation
02 First human check: an expert gold standard One thousand fresh sentences, coded from scratch as ground truth and kept entirely out of training. One model per category and per language is measured against it, BERT for English and CamemBERT for French: a macro F1 of 0.866, or roughly 87 sentences out of 100 classified the way the expert classified them. macro F1 0.866 · 1,000 sentences
03 Second human check: a blind coder A second annotator re-coded the gold standard without ever seeing the first pass. The two coders agree at 0.894 (Gwet's AC1), which shows the categories are defined tightly enough for two people to apply them the same way. Gwet's AC1 0.894 · independent coding
04 A reliability tier on every category Every category carries an A, B or C tier combining model performance and agreement between the two annotators. The split is 27 categories in A, 21 in B and 17 in C. This tier is not the same thing as the F1 bands in the figure above, which only look at the model: a category the models classify well but the two annotators read differently drops a tier. The tier is published with the label, including when it is poor, and the weakest ones stay visible in the figure. 27 in A · 21 in B · 17 in C

What this validation does not guarantee

Categories that stay below 0.60 F1 support no corpus-wide analysis: no time series, no comparison between outlets, no counts. We serve them anyway, labelled fragile, so that no one mistakes them for solid measurements.

The gold standard measures agreement on one thousand hand-coded sentences, not on the 287,227 articles in the corpus. A model trained on the vocabulary of past years can drift on new words, and the published F1 would not show it: it is computed once, on a frozen test set.

Next step One article
Go to the observatory