Token Classification
GLiNER
atomizer
atomic-claims
claim-extraction
decontextualization
fact-checking
check-worthiness

atomizer-gliner-small

atomizer on GLiNER small v2.5 (gliner-community/gliner_small-v2.5): a single-pass span atomizer with a critic. It splits a text into short, self-contained claims ("atoms") and scores each one:

  • verifiable: is this a factual claim that can be checked?
  • checkworthy: is it worth fact-checking?

atomizer in the fact-assessor pipeline

Atomization is the step any claim-level fact-checking tool depends on: search, evidence judgment and the verdict all work on the claims it produces, so a claim that is missed, merged or wrongly resolved here cannot be checked correctly later. The figure shows fact-assessor, our own opinionated fact-assessment tool: atomizer is the "trained atomizer" option of its Atomization step, and its verifiable / checkworthy scores drive Claim filtering. The integration is in progress (see Intended use).

It runs in one forward pass: 163M parameters (GLiNER small v2.5 plus four heads), a few ms per text on a GPU, ~40 ms on a laptop CPU.

One repo per architecture. The atomizer models live in one Hugging Face repo per backbone and head design, so every tag of a repo loads the same way and has the same size and speed. This repo is the small model, where the releases are:

Repo Backbone Heads
atomizer-gliner-small (this repo) GLiNER small v2.5 (163M) standard; the releases (main)
atomizer-gliner-large GLiNER large v2.5 (456M) standard
atomizer-gliner2.5-base Fastino GLiNER2.5 base (202M) standard, no BiLSTM
atomizer-gliner2.5-base-native Fastino GLiNER2.5 base (192M) GLiNER2.5's own pretrained heads
atomizer-gliner2.5-base-xhead Fastino GLiNER2.5 base (217M) head-interaction block

The model does not generate text. It selects words from the input, replaces references ("She" → "Marie Curie", "The company" → "Tesla") with earlier spans, and adds closed-class glue words ("is", "the", "'s"). When no earlier span is the referent, it keeps the reference as written ("The company was founded in 2003 …") rather than guess a name. An atom cannot contain a name or number that isn't in the input, and values are copied byte for byte ("8846m").

Status: research prototype. main is v0.6 (2026-10-15): the v0.5 recipe with WiCE, FActScore and synthetic v0.4 added to the data. Against v0.5 it has 6 significant wins and no loss (FActScore soft F1 +0.097, WiCE exact +0.095, Factcheck-Bench +0.027, synthetic exact +0.021, PropSegmEnt +0.017) at the same size and speed. It also resolves a writer who names themselves ("I am Paradox. … My lab is in Quorna." → "Paradox's lab is in Quorna."), where v0.5 keeps "I" and "My". It handles chat and agent text: first person, greetings, hedges ("I think …", which are unwrapped) and opinions (emitted as atoms with low verifiable), and it can leave a reference as written when its referent is not in the text, instead of forcing a wrong one. The models on Fastino's GLiNER2.5 base (its pretrained relation scorer for references, or a head-interaction block) are in their own repos (table above): on the same data they are within noise of v0.6 and ~1.5× slower on a CPU.

Intended use

atomizer turns free text into checkable claims: short, self-contained statements, each scored for whether it is a factual claim (verifiable) and worth checking (checkworthy). It is meant as the first stage of:

  • fact-checking and claim verification: split an LLM answer, article or post into claims, keep the checkable ones, and verify each against evidence;
  • hallucination detection and factual-precision scores for LLM output (the share of claims that are supported);
  • check-worthiness triage: rank claims for human fact-checkers;
  • retrieval units: propositions as the indexed unit for retrieval.

It does not decide whether a claim is true: verifiable means "can be checked", not "correct".

Our own pipeline: fact-assessor, an opinionated fact-assessment tool (figure at the top) that checks any text against evidence and returns a verdict per claim, a fact score and a knowledge graph. atomizer works with any claim-level verifier; fact-assessor is where we use it.

There, atomizer is the "trained atomizer" option of the Atomization step: one local forward pass gives the claims and their verifiable / checkworthy scores, and Claim filtering keeps the claims whose scores pass a cut-off, so neither step needs an LLM or API call. That means no API cost, milliseconds instead of seconds, and no name or number in a claim that is not in the input. A wrong claim can still come from a wrong reference (see Limitations). The fact-assessor integration is not done yet; it and an end-to-end comparison with the LLM atomizer are in progress.

Usage

The loading code is the atomizer package at NISH1001/atomizer. That repo is private for now, so access is on request. The weights are a plain PyTorch state dict (model.pt) plus atomizer.json (backbone, settings, glue and insertion vocabularies).

uv add "atomizer @ git+ssh://git@github.com/NISH1001/atomizer@v0.3.0"   # needs access to the repo; v0.6 is meant for ≥ v0.3.0
from atomizer import Atomizer

atomizer = Atomizer.load("nishparadox/atomizer-gliner-small")                       # latest release (main = v0.6)
# atomizer = Atomizer.load("nishparadox/atomizer-gliner-small", revision="v0.5")     # a pinned release

for atom in atomizer.atomize("I am good. My name is Nish. I think the height of mount everest is 8846m."):
    print(atom.text, round(atom.verifiable, 2), round(atom.checkworthy, 2))
# I am good.                                0.0   0.0
# My name is Nish.                          0.0   0.0
# The height of mount everest is 8846m.     1.0   0.98

atomizer.atomize(text, min_verifiable=0.5)                        # only checkable facts
print(atomizer.explain(text).show())                              # every head's predictions
atomizer.critic_scores(["We should invest more in education."])   # score claims you already have

atomize returns every atom by default, opinions and greetings included, each with its scores. Filter with min_verifiable / min_checkworthy.

Model

The encoder of GLiNER small v2.5 (DeBERTa-v3-small, 6 layers; Apache-2.0) with its pretrained BiLSTM and span layer, then four heads:

Head Predicts
anchor per word: does an atom start here
pair per (atom, word): KEEP / SUB / DROP, and glue after the word
antecedent per reference: which earlier span it means, or none (keep the reference as written)
critic per atom: verifiable, checkworthy

Every tag of this repo is this network. The same heads on Fastino's GLiNER2.5 base encoder, with GLiNER2.5's own pretrained relation scorer as the antecedent head ("native") or with a head-interaction block ("xhead"), are the models of the atomizer-gliner2.5-base-* repos.

Assembly from these predictions is deterministic. Texts longer than 1,024 tokens are atomized in sentence windows with read-only context. Details: ARCHITECTURE.md.

Training

v0.5 and v0.6 are each one run from the base model on all the training data (see the recipes below). v0.1–v0.4 were trained in stages, each continuing from an earlier checkpoint (see Stages). No API calls were made to create training data. Every run is logged in W&B nasa-impact/atomizer (team project). The full log, with commands, curves and timings, is in EXPERIMENTS.md.

Datasets

Dataset Role Labels
chentong00/propositionizer-wiki-data atoms: 42,857 Wikipedia passages, ~7.7 propositions each GPT-4, by the dataset authors (Chen et al., Dense X Retrieval)
Nithiwat/claimbuster critic: 23,533 US-debate sentences (check-worthy fact / unimportant fact / non-factual) human
iai-group/clef2024_checkthat_task1_en critic: CLEF CheckThat! 2024 task 1, check-worthiness yes/no (train 22,501, dev 1,032, test 318) human
nishparadox/atomizer-chat-synthetic atoms + per-atom critic labels on chat, agent, science and news text. v0.1 (12 types, train 995, test 204) for stage 3; v0.2 (18 types, train 1,453, test 306) for stage 4; v0.3 (19 types, train 1,496, test 323; adds 60 distractor-reference texts) for stage 5 and v0.5; v0.4 (26 types, train 2,037, test 442; adds introductions, kept references, possessives, long documents, scientific papers, meaning words, promotional claims) for v0.6 AI-written (Claude); see its disclaimer
Factcheck-Bench (Apache-2.0) atoms + per-claim labels on 94 real ChatGPT answers; 62 train (stage 4), 30 seeded held-out test human
nfliu/decontextualization (Choi et al. 2021) a Wikipedia sentence rewritten to stand alone, its paragraph as read-only context; only rewrites a span model can build (1,224 train). Trains only the antecedent head and the critic human
WiCE (Kamoi et al. 2023; annotations ODC-BY 1.0) atoms: Wikipedia claims split into sub-claims, official splits (train 1,260 / dev 349 / test 358 claims); v0.6 only GPT-3 few-shot, by the dataset authors
FActScore (Min et al. 2023; data terms not stated, so not redistributed) atoms: biographies written by InstructGPT, ChatGPT and PerplexityAI with human-revised atomic facts, split by person with a fixed seed (349 train / 46 valid / 101 test biographies); v0.6 only human
chat templates (scripts/make_chat.py) hedged facts, opinions, insults, personal and social statements, questions; with noise rule-based, generated locally
sihaochen/propsegment (PropSegmEnt) test only (its atoms are fragments) human

ClaimBuster and CheckThat! come from the same debate transcripts. Every training sentence that also appears in a validation or test split was removed (3,279 sentences), so the critic is not scored on sentences it trained on.

v0.6 recipe

The v0.5 recipe below with synthetic v0.4 (×3), WiCE (×3) and FActScore (×1) added, 103,357 texts per epoch; 3 epochs / 9,690 steps, released: the last step; 1× A100 80GB, 144 min; W&B run small-v07 (the runs of this round were named before the version number was settled). The same data on the Fastino architectures (their own repos): EXPERIMENTS.md, run 12.

v0.5 recipe

One run from gliner-community/gliner_small-v2.5, every training example in every epoch:

v0.5
data per epoch Propositionizer 42,856 + critic 40,402 (ClaimBuster + CheckThat! 2024) + templates 5,999, once each; synthetic v0.3 1,496, Decontextualization 1,212 and Factcheck-Bench 62, three times each (×3 upsampling of the small human / synthetic sets) = 97,567
epochs / steps 3 / 9,147 (released: step 5,000, best heldout exact F1)
batch 32
learning rates (encoder / GLiNER layers / heads) 3e-5 / 1e-4 / 5e-4
hardware, time 1× A100 80GB, 83 min
W&B run small-full

Training texts that also appear (after normalising) in the same dataset's validation or test split are dropped (14 texts). The stage runs before it used a fixed random subset of the large sources in every epoch, so about 10,000 critic sentences and 600 template texts were never trained on; v0.5 uses all of them. Other settings as in "Shared by all stages" below, with the "none" antecedent of stage 5.

Stages (v0.1–v0.4)

Stage 1: atomizer Stage 2: critic → v0.1 Stage 3: chat → v0.2 Stage 4: human data → v0.3 Stage 5: "none" antecedent → v0.4
starts from gliner-community/gliner_small-v2.5 stage 1, final v0.1 v0.2 v0.2
data per epoch Propositionizer, 42,857 Propositionizer 15,000 + ClaimBuster + CheckThat! 2024 (58,681) Propositionizer 27,076 (30%) + critic 27,076 (30%) + templates 5,415 (6%) + synthetic 995 (all) = 60,562 Propositionizer 23,000 (25%) + critic 23,000 (25%) + templates 4,600 (5%) + synthetic v0.2 1,453 + Decontextualization 1,224 + Factcheck-Bench 62 (all) = 53,339 as stage 4, with synthetic v0.3 1,496 (≈53,300)
epochs / steps 3 / 8,037 1 / 3,668 (released: step 1,000) 2 / 3,780 (released: step 3,500, the last eval) 2 / 3,334 (released: step 3,000, the last eval) 2 / 3,330 (released: step 2,500, best heldout)
batch 16 16 32 32 32
learning rates (encoder / GLiNER layers / heads) 3e-5 / 1e-4 / 5e-4 2e-5 / 5e-5 / 5e-4 2e-5 / 5e-5 / 5e-4 2e-5 / 5e-5 / 5e-4 2e-5 / 5e-5 / 5e-4
hardware, time Apple M3 Max (MPS), 2 h 10 min Apple M3 Max, ~40 min 1× A100 80GB, 16 min Apple M3 Max, ~1 h 40 min 1× A100 80GB, 20 min
W&B run gliner-small-v2.5-propwiki-3ep gliner-small-v2.5-propwiki-critic m1-mix-syn m4b-mac-decontext-ante-nocritneg small-from-v0.2-noneante

Stage 4 also changed decoding and labels: atoms copy words only within one sentence (pySBD), and other sentences enter an atom only as a resolved reference. Long texts get a header of earlier introductions per window.

A failed first attempt at stage 4 (m4-rc1, kept as tag v0.3-rc1) also trained the anchor and pair heads on Decontextualization and added broken copies of gold atoms as critic negatives. One whole rewritten sentence per example taught it not to split (PropSegmEnt 0.741 → 0.695), and the negatives pushed short factual claims to verifiable ≈ 0.01. v0.3 drops both.

Stage 5 gives the antecedent head a "none" option: a fixed score of 0 next to every candidate span (Lee et al. 2017's dummy antecedent; no new parameters). When "none" wins, the reference stays as written. It is trained on references the gold atoms keep as written (up to 2 per text) and on 60 new synthetic texts in pairs, the referent named (resolve it) or absent (keep the reference). v0.4 re-runs v0.3's recipe from v0.2 with this change. Continuing v0.3 for 2 more epochs instead (tag v0.4-rc3) split sentences better but reduced wrong references less, and lost more comparisons overall.

Shared by all stages and v0.5:

  • AdamW (fused), weight decay 0.01, gradient clip 1.0
  • cosine schedule, 5% warmup, bf16 autocast, dropout 0.1
  • insertion vocabulary of 300 words, 2,000 glue phrases
  • anchor threshold 0.35, tuned on Propositionizer validation

Stage 3 also uses bucketed shuffling: each epoch, batches are rebuilt from shuffled chunks sorted by length, so they mix datasets (70% of batches) at 5% padding.

How labels are made

An aligner turns each gold atom into per-word targets:

  • an anchor: the atom's first word no other atom uses
  • KEEP / SUB / DROP for each word
  • glue for each gap
  • an antecedent span for each reference, and none for a reference the gold atom keeps as written

Gold atoms that cannot be built this way are skipped, and the anchor loss is masked on their words. That covers reordering, verb changes and words not in the text: ~26–30% of GPT-4 propositions, and ~0% of the templates and synthetic data. The critic learns from gold atoms (per-atom labels, or "verifiable" for propositions) and from whole labelled sentences, with the atomization losses switched off for those.

Stage 3 ablations

Same data and settings, one difference each; test sets below:

Run Difference synthetic soft F1 critic AUC (synthetic atoms) chat held-out Propositionizer PropSegmEnt CheckThat! F1
M1 = v0.2 — 0.897 0.994 0.988 0.733 0.741 0.866
M2 + glue penalty 0.5 0.897 0.994 0.989 0.733 0.742 0.866
M3 no synthetic data 0.872 0.947 0.989 0.728 0.730 0.872
M1 at step 500 0.26 epochs instead of 2 0.891 0.980 0.975 0.744 0.760 0.851
  • The synthetic data mainly improves the critic on realistic text (+0.047 AUC).
  • The glue penalty has no effect.
  • Longer training improves chat and the critic but costs a little on Wikipedia-style text. The release favours chat and agent inputs.

Evaluation

Test splits only, none used for training or checkpoint selection. Atom sets are scored with soft F1 (best-match token F1 between predicted and reference atoms).

v0.5 vs v0.6 (A100 run of the suite), same texts for both. ✔ marks a difference whose paired-bootstrap 95% CI (2,000 resamples over texts) excludes 0; the rest are not significant. The synthetic test here has 442 texts (the 119 texts of the v0.4 categories included), so v0.5 reads 0.894 on it, not 0.905 as in the older tables below.

Test set v0.5 v0.6 v0.6 − v0.5
synthetic chat/agent (442), soft F1 0.894 0.894 tie; exact F1 +0.021 ✔
Factcheck-Bench (30 real ChatGPT answers, human), soft F1 0.754 0.781 +0.027 ✔
Decontextualization (195, human), soft F1 0.552 0.560 +0.008
…references resolved 0.703 0.734 +0.031
…wrong references (lower is better) 0.073 0.088 +0.015
Propositionizer test (500), soft F1 0.742 0.739 −0.003
PropSegmEnt test (500, human-labelled), soft F1 0.756 0.774 +0.017 ✔
WiCE test (358 Wikipedia claims → sub-claims), soft / exact F1 0.790 / 0.218 0.811 / 0.313 +0.021 ✔ / +0.095 ✔
FActScore test (101 LLM biographies, human atomic facts), soft / exact F1 0.613 / 0.022 0.710 / 0.092 +0.097 ✔
CLEF CheckThat! 2024 official test (318), checkworthy F1 / AUC 0.865 / 0.978 0.862 / 0.975 ties
words not in the input (invented) 0 0

v0.6 is better on real LLM answers, on human-segmented text and on the two claim-decomposition sets it was trained on, and tied on everything else: 6 significant wins, no loss. Its wrong-reference rate is higher (0.088 vs 0.073, not significant). Run details: EXPERIMENTS.md, run 12.

v0.4 vs v0.5 (at the v0.5 release), same texts for both. "Paired 95% CI" is a bootstrap over texts (2,000 resamples; 1,000 for the critic sets) of the v0.5 − v0.4 difference; ✔ marks a CI that excludes 0.

Test set v0.4 v0.5 paired 95% CI
synthetic chat/agent (323), soft / exact F1 0.899 / 0.553 0.905 / 0.555 +0.002..+0.012 ✔ / −0.020..+0.023
Factcheck-Bench (30 real ChatGPT answers, human), soft F1 0.760 0.753 −0.026..+0.010
…exact F1 0.183 0.146 −0.070..−0.005 ✔ (lower)
Decontextualization (195, human), soft F1 0.543 0.551 −0.005..+0.021
…references resolved 0.582 0.703 +0.061..+0.181 ✔
…wrong references (lower is better) 0.044 0.073 −0.012..+0.071
Propositionizer test (500), soft F1 0.731 0.742 +0.007..+0.016 ✔
PropSegmEnt test (500, human-labelled), soft F1 0.738 0.757 +0.008..+0.030 ✔
CLEF CheckThat! 2024 official test (318), checkworthy F1 / AUC 0.876 / 0.978 0.865 / 0.978 −0.049..+0.022 / −0.008..+0.009
CheckThat! dev (1,032), checkworthy F1 / AUC 0.952 / 0.995 0.949 / 0.997 ties
ClaimBuster valid (2,353), checkworthy F1 / AUC 0.785 / 0.945 0.767 / 0.938 −0.041..+0.004 / −0.012..−0.001 ✔ (lower)
chat templates held out, soft F1 0.985 0.989

v0.5 resolves many more references (+12 points on human rewrites) and splits Wikipedia and human-segmented text better. Its atoms match the Factcheck-Bench wording exactly less often (30 texts), it ranks ClaimBuster sentences slightly worse (−0.006 AUC), and wrong references rise from 4.4% to 7.3% (not significant: 241 correct and 19 wrong substitutions vs 216 and 10). Run details: EXPERIMENTS.md, run 6.

v0.3 vs v0.4 (at the v0.4 release), same texts for both. "Paired 95% CI" is a bootstrap over texts (2,000 resamples) of the v0.4 − v0.3 difference; ✔ marks a CI that excludes 0.

Test set v0.3 v0.4 paired 95% CI
synthetic chat/agent (323), soft / exact F1 0.896 / 0.544 0.899 / 0.553 −0.001..+0.006 / −0.006..+0.024
Factcheck-Bench (30 real ChatGPT answers, human), soft F1 0.748 0.760 +0.002..+0.022 ✔
…exact F1 0.200 0.183 −0.038..−0.001 ✔ (lower)
Decontextualization (195, human), soft F1 0.525 0.543 +0.010..+0.028 ✔
…references resolved 0.563 0.582 −0.025..+0.064
…wrong references (lower is better) 0.077 0.044 −0.073..+0.008
Propositionizer test (500), soft F1 0.726 0.731 +0.002..+0.008 ✔
PropSegmEnt test (500, human-labelled), soft F1 0.741 0.738 −0.011..+0.004
CLEF CheckThat! 2024 official test (318), checkworthy F1 / AUC 0.867 / 0.979 0.876 / 0.978 −0.019..+0.036 / −0.006..+0.003
CheckThat! dev (1,032) / ClaimBuster valid (2,353), checkworthy AUC 0.996 / 0.945 0.995 / 0.945 ties
chat templates held out / known v0.1 failure cases (8), soft F1 0.984 / 1.00 0.985 / 1.00
fact-assessor claim cases (19), verifiable F1 1.00 1.00

v0.4 is better on real LLM answers (soft F1), Decontextualization and Wikipedia propositions, tied elsewhere, and puts a wrong name in place of a reference less often (0.077 → 0.044; 0.091 → 0.045 on the A100 run of the suite). Its atoms on Factcheck-Bench match the human wording exactly less often (−0.017, 30 texts). Atoms that end in a dangling function word ("… founded in 2003 by.") fall from 3.6% to 3.3%. One seed per run; the differences are small. Run details: EXPERIMENTS.md, run 5.

v0.2 vs v0.3 (at the v0.3 release), sentence-scoped decoder:

Test set v0.2 v0.3 paired 95% CI
synthetic chat/agent, v0.2's test (204), soft / exact F1 0.893 / 0.552 0.911 / 0.616
synthetic chat/agent, all of v0.2 test (306), soft / exact F1 0.876 / 0.464 0.894 / 0.533 +0.012..+0.022 / +0.053..+0.086
…critic verifiable on their gold atoms, AUC 0.960 0.983
Factcheck-Bench (30 real ChatGPT answers, human), soft / exact F1 0.744 / 0.166 0.748 / 0.200 −0.014..+0.021 / +0.009..+0.058
…critic verifiable on their gold atoms, AUC (only 4 non-claims) 0.825 0.896
Decontextualization (195, human): references resolved 0.450 0.556
…pronouns (56) / noun phrases (97) 0.62 / 0.36 0.75 / 0.45
chat templates with held-out patterns, facts and names, soft F1 0.984 0.984
known v0.1 failure cases (8), soft F1 1.000 1.000
Propositionizer test (500), soft F1 0.728 0.726 −0.007..+0.001
PropSegmEnt test (500, human-labelled), soft F1 0.741 0.741 −0.007..+0.007
CLEF CheckThat! 2024 task 1 EN official test (315), checkworthy F1 / AUC 0.866 / 0.981 0.867 / 0.979
fact-assessor claim cases (19), verifiable F1 1.00 1.00
words not in the input (invented) 0 0

v0.3 is better on chat, agent and real LLM text, on references and on the critic, and tied on Wikipedia text. Validation splits agree; the one dip is CheckThat! dev F1 (0.972 → 0.960).

"References resolved" is the share of human rewrites whose added words (the referent, "She" → "Marie Curie") appear together in one predicted atom of that sentence.

Earlier releases, with the decoder of their time:

Test set v0.1 v0.2
synthetic chat/agent texts (204), soft F1 0.774 0.897
chat templates with held-out patterns, soft F1 0.525 0.988
known v0.1 failure cases (8), soft F1 0.565 1.000
PropSegmEnt test (500), soft F1 0.666 0.741
CheckThat! 2024 test, checkworthy F1 / AUC 0.827 / 0.974 0.866 / 0.981

The share of reference atoms a span model can express at all is about 70% on GPT-4 propositions, so word-exact match on that set is low.

Limitations

  • References are the main weakness. v0.6 resolves 73% (v0.5: 70%) of the references in human rewrites, and 8.8% of its substitutions put a wrong earlier name in place of the reference (v0.5: 7.3%; v0.4: 4%). The words are all copied from the input, yet the atom can be false. Check atoms whose parts contain an antecedent if this matters; use v0.4 if a wrong name costs more than an unresolved reference.

  • A resolved atom can come with its unresolved twin: "The study found that the drug reduced mortality by 20%." and "The drug reduced mortality by 20%.".

  • Long, list-like Wikipedia sentences sometimes give broken fragments ("Was Bill Todman Productions.").

  • The chat gains are measured on generated data. The templates and the AI-written synthetic set are cleaner than real user text. The 8 failure cases are real but few.

  • Over-generates on long scientific passages: about 15 atoms per passage where an LLM atomizer writes about 8. This was measured on v0.1 and not re-measured.

  • One reference resolves to one span. "The study" cannot become a description assembled from several places, and event references ("That loss raised sea level…") stay unresolved.

  • No reordering and no verb changes. "carrying" cannot become "carried". An opinion word placed before the fact ("the ridiculously expensive X costs…") cannot be separated.

  • The anchor threshold (0.35) controls how many atoms come out. Lower it for more atoms.

  • A speaker who names themselves is resolved from v0.6 on ("I am Paradox. … My lab is in Quorna." → "Paradox's lab is in Quorna."); v0.5 keeps "I" and "My". Neither resolves a third person introduced the same way ("He is Paradox. He won …" keeps "He"), and a verb is never changed ("Lira Vos have two patents").

  • About 1–5% of sentences get no atom (no word reaches the anchor threshold).

  • Long documents cost ~0.04 soft F1 (sentence windows).

  • Opinions phrased as product facts ("… display data in a visually appealing way") can get a high verifiable.

  • v0.6 is meant for the atomizer code ≥ v0.3.0, whose decoder keeps capitals that do not start a sentence ("in May 2017") and never inserts a meaning-changing word (not, may, if, …); older code loads it but decodes differently.

Versions

Every version is a tag: pick it in the branch/tag menu above the files, or load it with Atomizer.load("nishparadox/atomizer-gliner-small", revision="<tag>"). Releases are on main; a version with several candidates keeps them as -rcN tags (none for v0.6: one run, released as is). Every tag is the small architecture; models on other backbones or heads have their own repos (table at the top), each with its own version numbers. Until 2026-10-15 those models were candidates on this repo's dev branch (v0.6-rc1–rc4, v0.7-rc2, v0.7-rc3) and v0.6 itself was v0.7-rc1; the mapping is in the atomizer repo's EXPERIMENTS.md ("HF repos: one per architecture").

Tag Status Training Factcheck-Bench soft F1 References resolved / wrong (Decontextualization) PropSegmEnt CheckThat! checkworthy F1 / AUC
v0.6 release (main) one run from the base model on v0.5's data + WiCE, FActScore and synthetic v0.4; last step of 9,690 0.781 0.734 / 0.088 0.774 0.862 / 0.975
v0.5 release one run from the base model, all data every epoch, small sets ×3; step 5,000 of 9,147 (= v0.5-rc2) 0.753 0.703 / 0.073 0.757 0.865 / 0.978
v0.5-rc1 candidate same data from v0.2, learning rates 2e-5 / 5e-5 / 5e-4; step 5,000 of 9,147 0.767 0.614 / 0.071 0.738 0.862 / 0.979
v0.4 release stage 5: v0.2 → stage 4 data + 60 distractor texts, antecedent may pick "none"; step 2,500 of 3,330 (= v0.4-rc2) 0.759 0.582 / 0.045 0.737 0.871 / 0.978
v0.4-rc1 candidate same run, last step 0.762 0.608 / 0.048 0.742 0.851 / 0.976
v0.4-rc3 candidate same change, continuing v0.3 for 2 epochs; step 2,500 0.756 0.582 / 0.056 0.751 0.863 / 0.975
v0.3 release stage 4: v0.2 → human data (Factcheck-Bench, Decontextualization) + synthetic v0.2 0.748 0.556 / 0.091 0.741 0.867 / 0.979
v0.3-rc1 not released first try at stage 4 (M4): stopped splitting sentences, critic regressed 0.733 – 0.696 0.867 / 0.981
v0.2 release stage 3: chat, hedges, opinions; synthetic v0.1 0.744 0.450 / – 0.741 0.866 / 0.981
v0.1 release stages 1–2: Wikipedia atomizer + critic – – 0.666 0.827 / 0.974

"Wrong" is the share of spans put in place of a reference that no human atom contains. Numbers in this table come from the A100 run of the test suite, so they differ slightly from the laptop numbers above. Among the v0.4 candidates (all from the same change), v0.4-rc2 had the best record across all test sets: 8 significant wins and 3 losses in pairwise comparisons, against 6 / 3 for rc1 and 8 / 6 for rc3. Between the v0.5 candidates, v0.5-rc2 won 5 comparisons and lost 2 against rc1, and won 4 / lost 2 against v0.4 (rc1: 3 / 0).

License

The weights are released under CC-BY-4.0. The atomizer code is MIT. Every tag is fine-tuned from gliner-community/gliner_small-v2.5 (Apache-2.0).

The training data has its own terms, which you should check for your use:

  • Propositionizer labels were generated with GPT-4 by the dataset's authors (OpenAI terms).
  • ClaimBuster is CC-BY-SA 4.0.
  • CLEF CheckThat! 2024 is under the CLEF lab's terms.
  • atomizer-chat-synthetic was written by an AI model (Claude, by Anthropic).
  • Factcheck-Bench is Apache-2.0.
  • Decontextualization (Choi et al. 2021) is Wikipedia text with human rewrites; see the dataset's own terms.
  • WiCE annotations are ODC-BY 1.0 (text from Wikipedia and Common Crawl); FActScore's data terms are not stated, and it is not redistributed (v0.6 only).
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for nishparadox/atomizer-gliner-small

Finetuned
(2)
this model

Datasets used to train nishparadox/atomizer-gliner-small

Collection including nishparadox/atomizer-gliner-small