GitHubCode

Case Study

Does Truora generalize to real-world news?

The fine-tuned BERT model was evaluated on 543 freshly scraped, genuinely real articles from three publishers never seen during training — BBC, The Kathmandu Post, and OnlineKhabar. Here’s what we found, what broke, and what we fixed.

Download PDF

FPR before fix

99.63%

FPR after fix

4.97%

Improvement

−94.66 pp

Overview

Every model in this project was trained and tested on a single combined corpus built from the ISOT Fake News dataset and the LIAR dataset. Strong performance on a held-out split of that same corpus doesn’t, by itself, prove a model has learned genuine indicators of misinformation rather than dataset-specific artifacts — writing style, source formatting, publication conventions.

To test whether the best-performing model (fine-tuned BERT) generalizes beyond its training distribution, we built a case study from freshly scraped, genuinely real articles that never appeared in training. This page walks through the case study as it actually unfolded: an initial evaluation that failed badly, a diagnostic investigation into why, a targeted fix, a re-evaluation, and a further probe into what the fix did and didn’t solve.

Case study dataset

543 real-news articles were scraped independently of the ISOT/LIAR training corpus, all labelled Real. Because every ground-truth label is Real, the relevant metric is the False Positive Rate (FPR) — the share of genuinely real articles the model incorrectly flags as Fake.

SourceArticles
BBC247
The Kathmandu Post146
OnlineKhabar150
Total543

A. Initial result — a model that fails on real news

Despite strong in-distribution performance on the ISOT/LIAR held-out split, the fine-tuned BERT model misclassified almost every real article once the data came from an unfamiliar publisher and time period.

SourcenMisclassifiedFPR
Kathmandu Post146146100.00%
BBC24724699.60%
OnlineKhabar15014999.33%

The model wasn’t merely wrong — it was confidently wrong. Predicted P(Fake) for misclassified articles clustered close to 1.0 rather than near the 0.5 decision boundary, pointing to a systematic rather than a marginal failure.

B. Diagnosis — the Reuters-dateline hypothesis

ISOT’s Real class is sourced almost entirely from Reuters wire articles, which follow a highly distinctive, repetitive format (e.g. WASHINGTON (Reuters) --). If the model learned “looks like a Reuters wire story” as a shortcut proxy for Real, any article lacking that exact formatting would default toward Fake — regardless of its actual publisher or truthfulness.

Two prefix variants were tested on the 30 most confidently misclassified real articles: a fabricated Reuters dateline, and a length-matched neutral control with no wire-service signal.

VariantMean P(Fake) beforeMean P(Fake) afterFlipped to Real
Reuters dateline0.99800.000130 / 30 (100%)
Neutral prefix0.99800.99750 / 30 (0%)

The result was unambiguous: a fabricated Reuters dateline flipped every single misclassified article back to Real. The neutral control had almost no effect — the model was reacting specifically to Reuters wire-service formatting, not to added context in general.

Repeating the same diagnostic on the classical models confirmed the artifact lives in the training data itself, not just BERT’s architecture — though BERT was far more prone to fixating on it.

ModelMean P(Fake) original+ReutersReuters flip rate
BERT0.99800.0001100.0%
SVM0.55320.432453.3%
Logistic Regression0.59180.521143.3%

C. The fix

Guided by this diagnosis, the preprocessing pipeline was revised before retraining:

  • Wire-service dateline removal — a regex matching the CITY (Reuters) -- pattern stripped the formatting cue out of the training text itself.
  • Exact and near-duplicate removal — exact-text duplicates dropped, followed by a similarity-based near-duplicate pass at a 0.95 cosine-similarity threshold.
  • Junk-row filtering — degenerate scraped fragments (e.g. “Watch:”, truncated captions) removed using empirically justified length thresholds.
  • Systematic artifact-skew check — a class-conditional term-skew analysis surfaced other source-composition artifacts (image-credit boilerplate, pic.twitter.com links), closed the same way.

BERT was retrained from scratch on the cleaned corpus. One additional change was bundled into the same retrain: max input length was increased from 256 to 512 tokens, since roughly half of training articles were being truncated at 256.

D. Re-test — does the fix work?

Headline metrics dropped slightly after the fix — most notably recall, from a near-perfect 0.9997 to 0.9485. That’s not a regression; it’s evidence the fix worked. The original near-perfect recall was itself a symptom of the leak.

VersionAccuracyPrecisionRecallF1AUC-ROC
Before fix0.92120.87390.99970.93260.9847
After fix0.91330.88650.94850.91650.9788

The identical 543-article case study was re-scored on the retrained model:

SourcenFPR beforeFPR afterChange
Kathmandu Post146100.00%0.00%−100.00 pp
BBC24799.60%10.93%−88.67 pp
OnlineKhabar15099.33%0.00%−99.33 pp
Overall54399.63%4.97%−94.66 pp

Kathmandu Post and OnlineKhabar reached a perfect 0.00% false positive rate. BBC retained a residual 10.93%, concentrated unevenly across sections like world/australia and health.

Because the retrain bundled two changes (the leak fix and the longer context window), a follow-up ablation isolated their individual contributions:

Variantmax_lengthLeak fixOverall FPR
v1 (original)256No99.63%
Leak fix only256Yes16.02%
v2 (full fix)512Yes4.97%

Roughly 88% of the total improvement is attributable to the leak-removal fix itself, and about 12% to the increased context window.

E. Does the fix mean the model now detects misinformation?

To probe this, three entirely fabricated news articles were hand-written — describing events that never happened, but composed in a measured, professionally-styled register consistent with real journalism.

Fabricated articlePredictionP(Real)P(Fake)
Canada-US trade banReal0.99960.0004
Kryvyi Rih shopping centre drone strikeReal0.99960.0004
Indian PM social-media makeoverReal0.99870.0013

All three were classified as Real with greater than 99.8% confidence. The fix closed one specific, identifiable shortcut (Reuters-style formatting) without resolving the model’s broader reliance on stylistic and structural surface cues as a proxy for factual accuracy. It improved reliability as a filter against false alarms on genuine news — it did not meaningfully improve detection of well-written misinformation.

F. Revisiting the original motivating example

This whole investigation started with one observation: a genuine, verified article reporting Nepal’s 2026 general election result was submitted to the pre-fix model and classified as Fake with 100% confidence. The same article was re-submitted to the post-fix model as a final check.

VersionPredictionP(Real)P(Fake)
Before fixFake0.0001.000
After fixReal0.5080.492

The post-fix prediction is correct — but only barely, sitting almost exactly on the decision boundary. Reduced bias, not confident understanding.

Summary

  • Initial false positive rate on 543 unseen real articles: 99.63%.
  • Root cause: the model learned to associate Reuters-style datelines with the Real label, not genuine indicators of factuality.
  • After a targeted preprocessing fix and retrain, FPR fell to 4.97% — with two of three publishers reaching a perfect 0.00%.
  • The fix does not generalize to detecting sophisticated, professionally-styled fabricated content — all three synthetic test articles were still classified Real with high confidence.
  • Reliability against false alarms on genuine news improved substantially and measurably; the ability to detect deceptive, well-formatted misinformation remains an open problem.