newsintel-ner

Multilingual NER for public-safety reporting (person, org, location, vehicle, crime/disaster type, …).

Part of NewsIntel AI — a CPU-deployable, LLM-free pipeline that extracts structured public-safety events (accidents, disasters, crimes) from Bangladeshi news in Bengali and English. This model is stage 4 · entities (13 types) of that chain:

document → relevance gate → event-type router → evidence selection
         → NER → relation extraction → knowledge graph → structured event JSON

Model details

Base model xlm-roberta-base
Task ner
Input tokens
Max length 256
Format ONNX INT8 (dynamic quantization), ~279 MB
Version c2d3e275106dc
Languages Bengali (primary, ~96% of training corpus), English

Labels

  • O
  • B-PERSON
  • I-PERSON
  • B-ORG
  • I-ORG
  • B-LOCATION
  • I-LOCATION
  • B-DATE
  • I-DATE
  • B-NUMBER
  • I-NUMBER
  • B-QUANTITY
  • I-QUANTITY
  • B-VEHICLE
  • I-VEHICLE
  • B-CROP
  • I-CROP
  • B-DISASTER_TYPE
  • I-DISASTER_TYPE
  • B-CRIME_TYPE
  • I-CRIME_TYPE
  • B-FACILITY
  • I-FACILITY

Thresholds

None — this model emits raw scores; the caller ranks or thresholds.

Decision rule

argmax per token; aggregation_strategy='first'; BIO from id2label

These values also ship machine-readable in model_manifest.json, so a serving process can consume the model without hardcoding anything.

Evaluation

Metric Value
seqeval F1 0.8407
Precision 0.826
Recall 0.856

Usage

# Torch-free: INT8 ONNX + the fast tokenizer's offset mapping.
from huggingface_hub import snapshot_download
import onnxruntime as ort, numpy as np
from transformers import AutoTokenizer

d = snapshot_download("saidylive/newsintel-ner", revision="c2d3e275106dc",
                      allow_patterns=["model_int8.onnx", "*.json", "*.model"])
tok = AutoTokenizer.from_pretrained(d, use_fast=True)
sess = ort.InferenceSession(f"{d}/model_int8.onnx", providers=["CPUExecutionProvider"])

enc = tok("সাভারে বাস-ট্রাকের সংঘর্ষে নিহত ২", return_offsets_mapping=True)
logits = sess.run(None, {"input_ids": np.array([enc["input_ids"]], dtype=np.int64),
                         "attention_mask": np.array([enc["attention_mask"]], dtype=np.int64)})[0][0]
# Aggregate sub-tokens into WORDS, each taking its FIRST sub-token's label
# (HF aggregation_strategy="first") — otherwise Bengali spans get truncated.

Or use the maintained implementation, which handles aggregation for you:

from newsintel_serving import ServingPipeline   # pip install onnxruntime

Training data & provenance

Trained on the bd_eng_news_daily Kaggle corpus of Bangladeshi news (~713k articles, ~96% Bengali by character ratio). Labels are silver, not human-annotated: a teacher LLM produced structured event annotations, which were distilled into these small models. No manual annotation was performed at any stage.

This matters for how you read the metrics: they measure agreement with LLM-generated labels, not with human ground truth. There is no human-labelled evaluation set.

Limitations & bias

  • Silver labels cap the ceiling. Systematic teacher-LLM errors are inherited.
  • Domain-specific. Tuned to Bangladeshi public-safety news; expect degradation on other domains, regions, or registers.
  • Opinion pieces leak through. Editorials and foreign wire stories are sometimes classified as events by the upstream gate/router.
  • Entity noise. NER tags some generic Bengali nouns (e.g. রাজধানীর "of the capital", সদর "HQ") as locations.
  • No calibration. Confidence-style outputs are uncalibrated; do not read them as probabilities of correctness.
  • INT8 quantization trades a little accuracy for ~4× size reduction and CPU speed.
  • Not for high-stakes use. Casualty counts and event classifications are unverified model output and must not be used for emergency response, journalism, or policy without human review.

License

Released under cc-by-nc-4.0 — free to share and adapt for non-commercial purposes with attribution. Note that the training corpus consists of copyrighted news articles and the labels were LLM-distilled; downstream users are responsible for their own compliance.

Citation

@software{newsintel_ai,
  title  = {NewsIntel AI: distilled multilingual event extraction for Bangladeshi news},
  author = {Md. Sheikh Saidy},
  year   = {2026},
  url    = {https://huggingface.co/saidylive/newsintel-ner}
}
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 saidylive/newsintel-ner

Quantized
(27)
this model

Collection including saidylive/newsintel-ner