Hailay/VEXMLM-Tigrinya-NER
VEXMLM — Tigrinya NER
Tigrinya token classification fine-tuned from `Hailay/VEXMLM`, the vocabulary-extended XLM-R for Ge'ez-script languages.
Official implementation: https://github.com/hailaykidu/VEXMLM
Labels cover PER, ORG, LOC, DATE and MISC in BIO format (11 classes).
Five-seed benchmark evaluation
Fine-tuned independently under seeds 42–46 with one configuration (hash ce27cc194946) on an A100-PCIE-40GB. Reported as mean ± standard deviation over the five runs, on the dataset's test split.
These are the paper's verified results. They come from the five-seed evaluation described above — not from interactive use.
Interactive inference vs. benchmark
Benchmark evaluation is the five-seed measurement on the held-out test split, shown in the table above.
Interactive inference is what the usage example below performs: Enter arbitrary Tigrinya text and inspect the predicted entity spans. Predictions on arbitrary user input are demonstrations only and do not produce or reproduce the benchmark score.
Repository layout
Five independently fine-tuned checkpoints, one per seed. The reported benchmark score is the mean ± standard deviation over all five; no single seed is the "five-seed model."
seed-42/ seed-43/ seed-44/ seed-45/ seed-46/Load a specific seed with the subfolder argument, as in the example below.
Fine-tuning
Fine-tuned from `Hailay/VEXMLM`, a vocabulary-extended XLM-R (280,002 subwords, 30,000 Ge'ez tokens merged into the SentencePiece model) after continued MLM pretraining.
Runs are bit-reproducible: enable_full_determinism, CUBLAS_WORKSPACE_CONFIG=:4096:8, dataloader_num_workers=0.
Usage
from transformers import AutoTokenizer, AutoModelForTokenClassification
import torch
repo = "Hailay/VEXMLM-Tigrinya-NER"
tokenizer = AutoTokenizer.from_pretrained(repo, subfolder="seed-42")
model = AutoModelForTokenClassification.from_pretrained(repo, subfolder="seed-42")
model.eval()
words = "ኤርትራ ኣብ ቀርኒ አፍሪቃ እትርከብ ሃገር እያ።".split()
enc = tokenizer(words, is_split_into_words=True, return_tensors="pt", truncation=True)
with torch.no_grad():
pred = model(**enc).logits.argmax(-1)[0].tolist()
seen = set()
for p, w in zip(pred, enc.word_ids(0)):
if w is None or w in seen:
continue
seen.add(w)
print(words[w], "->", model.config.id2label[p])Limitations
- Fine-tuned for Tigrinya on Tigrinya NER only; performance on other languages, domains or label schemes is not characterised.
- The base model covers Amharic and Tigrinya; other Ge'ez-script languages were not part of pretraining.
- Corpora are drawn largely from religious and news domains, and the model may reflect those distributions and any biases in them.
- Single-configuration study: no hyperparameter search was performed, and baseline comparisons in the paper are single-seed.
Reproducibility
The fine-tuning launcher, evaluation code and per-run result records are in the official repository: https://github.com/hailaykidu/VEXMLM
sbatch scripts/slurm_stage2_spm_seeds.sh # 6 tasks × 5 seeds
python3 evaluation/export_spm_results.py # regenerates the metrics tableCitation
@inproceedings{teklehaymanot2026vexmlm,
title = {Expanding the Lexicon of Ge'ez Based African Languages:
A Comparative Study of Amharic and Tigrinya},
author = {Teklehaymanot, Hailay Kidu and Yadeta, Gebregziabihier and
Nejdl, Wolfgang},
booktitle = {Proceedings of the Workshop on Language Models for
Underserved Communities (LM4UC) at IJCAI},
year = {2026}
}Accepted at the LM4UC Workshop, IJCAI 2026.
License
Apache 2.0, following xlm-roberta-base.
