Hushmark BERTurk Span 112M 路 candidate v0.1.0

T眉rk莽e model kart谋Hushmark source

Hushmark BERTurk Span 112M is a 112,422,957-parameter, fixed-taxonomy Turkish named-entity recognition model. It fully fine-tunes the cased Turkish BERT encoder from dbmdz/bert-base-turkish-cased and adds a custom non-overlapping word-span classifier.

This private release is a challenger checkpoint, not the currently adopted Hushmark production model. It substantially outperformed hushmark-tr-289m on the new locked synthetic holdout, but runtime integration, ONNX parity, production-like evaluation, and shadow testing are still required before promotion.

Intended use

The model proposes spans for the 12 NER-owned Hushmark entity types:

Hushmark type Model label
PERSON person
ADDRESS full address
ORG organization
DOB date of birth
HEALTH medical condition
RELIGION religious belief
ETHNICITY ethnic origin
POLITICAL political opinion
SEXUAL_LIFE sexual orientation
CRIMINAL criminal record
BIOMETRIC_REF biometric data
UNION trade union membership

The taxonomy is closed: adding or changing a label requires retraining the span head. Deterministic identifiers and secrets remain the responsibility of Hushmark validators. Policy, masking, blocking, and audit decisions are outside this model.

This model is a detection aid, not an anonymization or legal-compliance guarantee. Do not use its predictions as the sole basis for legal, employment, healthcare, credit, or other high-impact decisions.

Usage

The repository contains a small standalone loader because this is a custom span model, not a standard AutoModelForTokenClassification checkpoint.

pip install -r requirements.txt
from pathlib import Path

from huggingface_hub import snapshot_download
from hushmark_berturk import BerturkSpanModel

snapshot = Path(
    snapshot_download("lokomotifai/hushmark-berturk-112m")
)
model = BerturkSpanModel.load_artifact(snapshot).eval()
# model = model.to("cuda")  # optional

text = "Ay艧e Y谋lmaz, 14 May谋s 1985 tarihinde do臒du."
entities = model.predict_entities(
    text,
    list(model.label_names),
    threshold=0.50,
)
print(entities)

Inputs are limited to 256 BERT subword tokens and candidate spans to 24 word units. Longer inputs must be chunked by the caller. Inference returns non-overlapping spans.

Architecture

  • Base encoder: dbmdz/bert-base-turkish-cased
  • Pinned base revision: b6e1de16c983e0f2c70664591ea3f22810072608
  • Parameters: 112,422,957
  • Fully fine-tuned encoder; not a LoRA or PEFT adapter
  • Span representation: start, end, mean-pooled word vectors, and width embedding
  • Classifier: GELU MLP over 12 labels plus background
  • Maximum input length: 256 subword tokens
  • Maximum span width: 24 word units
  • Artifact size: 450,470,897 bytes

Training data

No customer data or downloaded research documents were used. Training combined:

  • 200,592 deterministic legacy Hushmark synthetic records used for hushmark-tr-289m;
  • 28,000 project-generated Turkish synthetic records from Hushmark Combined35k, containing 20,000 positive and 8,000 hard-negative examples.

The union contains 228,592 unique records with zero cross-source ID and normalized-content overlap. Epoch sampling used a predeclared 70% legacy / 30% new replay ratio. The new dataset is Apache-2.0 for project-generated outputs.

Training configuration

The full run used one NVIDIA A100-SXM4-80GB, BF16, batch size 32, seed 20260809, encoder learning rate 1e-5, head learning rate 5e-5, 500 warm-up steps, and early stopping. The best checkpoint was selected at step 4,000; training stopped at step 8,000 after 572.599 seconds. Peak allocated GPU memory was 3,203,504,640 bytes.

Evaluation

Strict span F1 on the untouched locked synthetic suites:

Suite BERTurk candidate hushmark-tr-289m
Legacy 12-type NER macro F1 1.000000 0.994124
New PERSON/ADDRESS/DOB macro F1 0.975286 0.536787
New micro F1 0.986301 0.617954
Empty-gold false-positive spans 37 545

On the new suite, candidate per-type strict F1 was PERSON=1.0, ADDRESS=1.0, and DOB=0.925859.

The recorded formal adoption verdict is false: the legacy policy required an absolute +0.05 macro-F1 improvement, while the incumbent already scored 0.994124. This is a policy-limit result rather than a measured regression; no threshold or hyperparameter was changed after opening either locked set. See EVALUATION.json for machine-readable detail.

Limitations

  • Training and evaluation data are synthetic and partly template-adjacent.
  • High locked scores do not establish robustness on arbitrary production Turkish.
  • A qualitative natural-language smoke example caused both this candidate and the incumbent to miss an address span.
  • The evidence does not cover every dialect, typo, OCR artifact, code-switching pattern, or organization-specific document.
  • The fixed taxonomy cannot perform GLiNER-style zero-shot label expansion.
  • Inputs beyond 256 subword tokens require caller-side chunking.
  • An ONNX export and Torch/ONNX parity report have not yet been produced.
  • Human-curated, production-like evaluation and shadow traffic are required before use.

Integrity

Exact artifact hashes are recorded in SHA256SUMS, MODEL_RELEASE.json, and training_manifest.json. The principal weights are:

  • encoder/model.safetensors: a2426b32e90cc97909bcdb1e8518d0bfd5fbf6e7d4e9401565a389fb23807d2f
  • span_head.safetensors: 49606104c71b9f10bac64086e43e6c528dd50566a18131bdd419ed7634e32af6

The deterministic source-only training package is included as hushmark-berturk-training-source-0.1.2.tar.gz; it contains no training rows.

License and attribution

This Hushmark release is distributed under Apache-2.0. The pinned BERTurk base model is MIT licensed. See LICENSE, NOTICE, and THIRD_PARTY_NOTICES.md.

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 lokomotifai/hushmark-berturk-112m

Finetuned
(203)
this model