Downloads · 30 days
86
52% of all-time downloads
sachaljawad/claimbuster-detector
claimbuster-detector is a text classification model from sachaljawad. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as mit.
A DistilBERT model fine-tuned to decide whether a sentence is a check-worthy factual claim: a statement the public would care about and that can be verified, such as a statistic, a historical fact or a claim about an…
Downloads · 30 days
86
52% of all-time downloads
All-time downloads
165
Public
Parameters
67M
1.1 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors268 MB · 100%
From the Hugging Face model README
A DistilBERT model fine-tuned to decide whether a sentence is a check-worthy factual claim: a statement the public would care about and that can be verified, such as a statistic, a historical fact or a claim about an organization.
It is the claim detection stage of DebateIQ Pakistan, an AI platform that analyzes speeches and debates for credibility. In that pipeline, this model picks out the sentences worth fact-checking, and later stages retrieve evidence and verify them.
| Developed by | Mohammad Sachal Jawad |
| Model type | Binary text classifier (sequence classification) |
| Base model | distilbert-base-uncased |
| Parameters | ~67M |
| Language | English |
| License | MIT |
| Code | github.com/sachaljawad/DebateIQ (training notebook in backend/training/) |
| ID | Label | Meaning |
|---|---|---|
| 0 | not_checkworthy | Opinion, filler, greetings, or factual but unimportant sentences |
| 1 | checkworthy | A factual claim the public would want verified |
from transformers import pipeline
clf = pipeline("text-classification", model="sachaljawad/claimbuster-detector")
clf("The World Bank reported 70% youth unemployment.")
# [{'label': 'checkworthy', 'score': ...}]
clf("Thank you all for coming today.")
# [{'label': 'not_checkworthy', 'score': ...}]
To get the probability that each sentence is check-worthy:
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
repo = "sachaljawad/claimbuster-detector"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForSequenceClassification.from_pretrained(repo).eval()
sentences = ["Pakistan won the cricket world cup in 1992.", "I had coffee this morning."]
enc = tok(sentences, return_tensors="pt", truncation=True, padding=True, max_length=128)
with torch.no_grad():
probs = torch.softmax(model(**enc).logits, dim=-1)[:, 1]
print(probs.tolist())
Good fits
Not intended for
Fine-tuned on the ClaimBuster dataset (Arslan et al., 2020), which contains sentences from U.S. presidential debates labelled by human annotators into three classes:
These were mapped to a binary task: CFS → checkworthy (1), and UFS and NFS → not_checkworthy (0).
Preprocessing:
random_state=42)| Hyperparameter | Value |
|---|---|
| Epochs | 2 |
| Batch size | 16 per GPU (32 effective across 2 GPUs) |
| Learning rate | 2e-5 |
| Weight decay | 0.01 |
| Max sequence length | 128 tokens |
| Optimizer | AdamW (Hugging Face Trainer default) |
| Hardware | 2× NVIDIA T4 GPUs (Kaggle), ~3 minutes |
Evaluated on the held-out 10% stratified validation split (~2,240 sentences).
| Metric | Value |
|---|---|
| Accuracy | 0.893 |
| F1 (check-worthy class) | 0.774 |
| Validation loss | 0.532 |
F1 is reported for the positive (checkworthy) class, which is the minority class, so it is a stricter measure than accuracy.
Treat the outputs as suggestions for human fact-checkers, not final judgements.
If you use this model, please also cite the ClaimBuster dataset:
@inproceedings{arslan2020benchmark,
title = {A Benchmark Dataset of Check-worthy Factual Claims},
author = {Arslan, Fatma and Hassan, Naeemul and Li, Chengkai and Tremayne, Mark},
booktitle = {Proceedings of the International AAAI Conference on Web and Social Media},
volume = {14},
pages = {821--829},
year = {2020}
}