Uzbek Operator NER β BiLSTM-CRF
A multilingual (English + Russian) Named Entity Recognition model, fine-tuned to recognize
telecom-operator domain entities (tariffs, services, USSD codes) alongside general PER/ORG/LOC/MISC
entities. Architecture and training code: uzbtrust/uzbek-operator-ner
on GitHub.
The encoder is a hand-written BiLSTM-CRF β no pretrained transformer. Word embeddings are FastText (EN+RU), combined with a character-level CNN and a learned language embedding.
Results (this checkpoint)
| Test set | F1 |
|---|---|
| CoNLL-2003 (English) | 0.786 |
| WikiANN (Russian) | 0.817 |
| Operator domain (synthetic) | 1.000 |
This is the checkpoint from the second (mixed, fully-unfrozen) stage of domain fine-tuning β the stage chosen to preserve general EN/RU performance rather than the first-stage checkpoint, which reaches domain F1 = 1.0 faster but at some cost to general-domain recall.
Files
model.ptβ{"epoch", "best_f1", "model": state_dict}word_vocab.json,char_vocab.json,tag_map.jsonβ vocabularies built during trainingconfig.jsonβ architecture summary
Usage
The model class lives in the GitHub repo, not in this repository (this is a plain PyTorch
state_dict, not a transformers-compatible checkpoint):
git clone https://github.com/uzbtrust/uzbek-operator-ner
cd uzbek-operator-ner
import torch, json
from model.ner_model import NERModel # see repo for exact constructor args
vocab = json.load(open("word_vocab.json"))
tags = json.load(open("tag_map.json"))
ckpt = torch.load("model.pt", map_location="cpu")
model = NERModel(vocab_size=len(vocab), num_tags=len(tags))
model.load_state_dict(ckpt["model"])
model.eval()
See training/predict.py
in the GitHub repo for a complete, runnable inference example.
License
MIT, matching the GitHub repository.
- Downloads last month
- -