MultiCoNER 2023 Fine-Grained Multilingual NER (mDeBERTa-v3-base)
This model is a fine-grained Multilingual Named Entity Recognition (NER) model fine-tuned on the prestigious MultiCoNER 2023 (v2) benchmark suite across 12+ languages.
Built on top of microsoft/mdeberta-v3-base, it targets complex, fine-grained entities in noisy, low-context, and short text domains across 33 fine-grained categories (67 BIO output logits).
Developed by Rishabh Kumar.
1. Model Description & Architecture
- Base Model:
microsoft/mdeberta-v3-base(278M parameters, 12 layers, 768 hidden size, 250k multilingual vocabulary) - Fine-Tuning Method: LoRA (r=32, alpha=32, target modules:
query_proj,key_proj,value_proj,intermediate.dense,output.dense) merged into standalone base weights. - Precision: FP16 (
torch.float16, ~530 MB footprint) - Task: Multilingual Fine-Grained Token Classification / Complex NER
- Languages Supported (12+): English (
en), Spanish (es), French (fr), German (de), Italian (it), Portuguese (pt), Swedish (sv), Ukrainian (uk), Chinese (zh), Bengali (bn), Hindi (hi), Farsi (fa), and multilingual mixed (MULTI).
2. Dataset & Preprocessing Pipeline
A. Source Data & Splits
- Source: SemEval-2023 Task 2 / MultiCoNER v2 (
MultiCoNER/multiconer_v2). - Train Set: 170,824 sentences (covering 12 language subsets + mixed multilingual).
- Validation Set: 13,598 sentences.
- Test Set: 1,991,359 sentences.
B. Preprocessing & Formatting
- CoNLL Standardization: Raw multi-column annotations are cleaned into standard 2-column CoNLL format (
<token> <tag>), stripping metadata headers (#and-DOCSTART-) with blank lines preserving sentence boundaries. - Subword Token Alignment: Inputs are tokenized using
mDeBERTa-v3-baseSentencePiece subword tokenization (add_prefix_space=True). The ground-truth BIO entity label is assigned to the initial subword token of each word, while trailing subword tokens receive-100PyTorch cross-entropy masking to ensure entity-level evaluation. - Zero Tag Loss: Dynamic label mapping extracts all 67 BIO tags (
id_to_label.jsonandlabel_to_id.json) directly during preprocessing.
3. MultiCoNER 2023 Fine-Grained Taxonomy (33 Classes / 67 BIO Tags)
The MultiCoNER v2 taxonomy focuses on granular subtypes across six major super-types:
| Super-Type | Fine-Grained Entity Classes |
|---|---|
Person (PER) | Artist, Athlete, Cleric, Politician, Scientist, SportsManager, OtherPER |
Organization (ORG) | AerospaceManufacturer, CarManufacturer, MusicalGRP, PrivateCorp, PublicCorp, SportsGRP, ORG |
Location (LOC) | Facility, HumanSettlement, Station, OtherLOC |
Products & Creative Works (PROD) | ArtWork, MusicalWork, VisualWork, WrittenWork, Software, Clothing, Drink, Food, Vehicle, OtherPROD |
Medical & Health (MED) | AnatomicalStructure, Disease, MedicalProcedure, Medication/Vaccine, Symptom |
4. Training Results & Metrics
The model was fine-tuned for 5 epochs (~53.3k steps) using AdamW (lr=2e-5, linear scheduler, effective batch size 16).
Validation Performance (Best Checkpoint - Epoch 5)
| Metric | Score |
|---|---|
| Validation Entity F1 | 0.4839 |
| Validation Precision | 0.4732 |
| Validation Recall | 0.4951 |
| Validation Accuracy | 0.8951 |
| Validation Loss | 0.2616 |
Per-Epoch Progression
| Epoch | Step | Precision | Recall | Entity F1 | Accuracy | Loss |
|---|---|---|---|---|---|---|
| 1 | 10,677 | 31.71% | 33.66% | 32.65% | 86.91% | 0.3790 |
| 2 | 21,354 | 40.54% | 44.28% | 42.33% | 88.13% | 0.2995 |
| 3 | 32,031 | 44.67% | 45.80% | 45.23% | 88.93% | 0.2764 |
| 4 | 42,708 | 46.89% | 49.05% | 47.94% | 89.45% | 0.2670 |
| 5 | 53,385 | 47.32% | 49.51% | 48.39% | 89.51% | 0.2616 |
5. How to Use
Quick Inference via Hugging Face Pipeline
from transformers import pipeline
ner = pipeline(
"token-classification",
model="Rishabh157/multiconer-multilingual-ner-mdeberta",
aggregation_strategy="simple"
)
text = "The European Space Agency launched the Ariane 5 rocket from Kourou."
entities = ner(text)
for entity in entities:
print(f"{entity['word']:<25} | {entity['entity_group']:<20} | Score: {entity['score']:.4f}")
PyTorch Direct Usage
import torch
from transformers import AutoTokenizer, AutoModelForTokenClassification
model_name = "Rishabh157/multiconer-multilingual-ner-mdeberta"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForTokenClassification.from_pretrained(model_name)
text = "El Real Madrid ganó la final de la UEFA Champions League en París."
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.argmax(outputs.logits, dim=2)
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
labels = [model.config.id2label[p.item()] for p in predictions[0]]
for token, label in zip(tokens, labels):
if label != "O":
print(f"{token:<20} -> {label}")
6. Citation
@misc{kumar2026multiconer,
author = {Rishabh Kumar},
title = {MultiCoNER 2023 Fine-Grained Multilingual NER with mDeBERTa-v3},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/Rishabh157/multiconer-multilingual-ner-mdeberta}}
}