Downloads · 30 days
331
24% of all-time downloads
buerokrattRIA/xlm-roberta-NER-syntheticGov
xlm-roberta-NER-syntheticGov is a machine learning model from buerokrattRIA. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
This model is a domain-adapted version of FacebookAI/xlm-roberta-large-finetuned-conll03-english, further fine-tuned on Estonian chat-style text with synthetic data augmentation.
Downloads · 30 days
331
24% of all-time downloads
All-time downloads
1.4K
Public
Parameters
559M
2.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors2.2 GB · 99%
From the Hugging Face model README
This model is a domain-adapted version of FacebookAI/xlm-roberta-large-finetuned-conll03-english, further fine-tuned on Estonian chat-style text with synthetic data augmentation.
This model specializes in extracting named entities from Estonian chat-style text — short, informal communications such as citizen-to-bot conversations, customer service chats, and similar interactive dialogue. The base encoder (XLM-RoBERTa-large) was already fine-tuned on CoNLL-2003 English NER by Facebook, giving it a strong NER inductive prior before our Estonian fine-tune.
The model recognizes 4 entity types:
Each entity uses BIO tagging (B- for beginning, I- for inside), giving 9 total label classes (4 × 2 + O).
The model was fine-tuned on a combination of hand-annotated Estonian chat data and synthetically generated examples designed to improve coverage of person and organization entities.
Synthetic data generation allowed us to:
FacebookAI/xlm-roberta-large-finetuned-conll03-english (~559 M params, XLM-RoBERTa-large architecture)ignore_mismatched_sizes=True; a fresh 9-label IOB2 head was trained from scratchfrom transformers import AutoTokenizer, AutoModelForTokenClassification
from transformers import pipeline
# Load model and tokenizer
tokenizer = AutoTokenizer.from_pretrained('buerokratt/{model_name}')
model = AutoModelForTokenClassification.from_pretrained('buerokratt/{model_name}')
# Create NER pipeline
nlp = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="simple")
# Example text
text = "Tere, mind kutsutakse Mati Tamm ja ma elan Tallinnas Pirita teel."
# Get predictions
ner_results = nlp(text)
for entity in ner_results:
print(f"{entity['word']}: {entity['entity_group']} ({entity['score']:.3f})")
Evaluated on data/test_fresh.conll — 70 hand-checked chat sentences with no entity-name overlap with the training set (so the numbers reflect true generalization, not vocabulary memorization).
| Metric | Score |
|---|---|
| Micro F1-Score | 0.8662 |
| Macro F1-Score | 0.8664 |
| Micro Precision | 0.8598 |
| Micro Recall | 0.8727 |
| Entity | Precision | Recall | F1-Score |
|---|---|---|---|
| PER | 0.9577 | 0.9577 | 0.9577 |
| LOC | 0.8226 | 0.9623 | 0.8870 |
| ORG | 0.8611 | 0.8732 | 0.8671 |
| GPE | 0.7879 | 0.7222 | 0.7536 |
This model is optimized for:
If you use this model, please cite the base XLM-RoBERTa paper:
@article{conneau2019unsupervised,
title={Unsupervised Cross-lingual Representation Learning at Scale},
author={Conneau, Alexis and Khandelwal, Kartikay and Goyal, Naman and Chaudhary, Vishrav and Wenzek, Guillaume and Guzm{\'a}n, Francisco and Grave, Edouard and Ott, Myle and Zettlemoyer, Luke and Stoyanov, Veselin},
journal={arXiv preprint arXiv:1911.02116},
year={2019}
}