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 training
  • config.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
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support