You need to agree to share your Hugging Face information to access this model
This repository is publicly accessible, but you have to accept the conditions to access its files and content.
To get access, please fill in the short form at https://saidzoda.com/access. We approve requests after we receive the form.
Log in or Sign Up to review the conditions and access this model content.
Tajik Punctuation & Capitalization Restoration (uz-punctuation-restore)
How to get access: please fill in the short form at saidzoda.com/access. We approve requests after we receive the form.
Restores sentence casing and punctuation (. , ? ! : ;) on raw lowercased, unpunctuated Tajik
text — the kind an ASR model (e.g. Parakeet / Whisper) emits. Built as the #1 readability win for
the offline Tajik STT app. Two token-classification heads on a shared xlm-roberta-base encoder:
a punctuation head (7 classes) and a casing head (LOWER / CAP / UPPER). Shipped as ONNX
so it bundles into the offline app.
Evaluation (20k held-out validation sentences)
Punctuation, per class:
| class | precision | recall | F1 | support |
|---|---|---|---|---|
| PERIOD | 0.973 | 0.992 | 0.982 | 18,886 |
| COMMA | 0.837 | 0.821 | 0.829 | 14,887 |
| QUESTION | 0.871 | 0.830 | 0.850 | 951 |
| EXCLAM | 0.658 | 0.119 | 0.202 | 437 |
| COLON | 0.712 | 0.530 | 0.608 | 706 |
| SEMICOLON | 0.636 | 0.196 | 0.299 | 143 |
- Non-O macro-F1: 0.628
- Casing accuracy: 0.984
- Sentence-initial capitalization recall: 0.998
Before → after examples
1. input: siz bilan suhbatlashib sizni qiziqtirgan ishlarni aniqlab murabbiy tayinlashadi
restored: Siz bilan suhbatlashib, sizni qiziqtirgan ishlarni aniqlab, murabbiy tayinlashadi.
gold: Siz bilan suhbatlashib, sizni qiziqtirgan ishlarni aniqlab, murabbiy tayinlashadi.
2. input: sandugʻoch dovyurak jasur ayol sifatida tasvirlanadi
restored: Sandugʻoch dovyurak, jasur ayol sifatida tasvirlanadi.
gold: Sandugʻoch dovyurak, jasur ayol sifatida tasvirlanadi.
3. input: bunda chuqur tishlov tepa tish qatori va pastki tish qatori birlashtirilganda teng birikmasligi tishlarning notoʻgʻri qiyshiq oʻsishi kuzatiladi
restored: Bunda chuqur tishlov tepa tish qatori va pastki tish qatori birlashtirilganda teng birikmasligi, tishlarning notoʻgʻri qiyshiq oʻsishi kuzatiladi.
gold: Bunda chuqur tishlov (tepa tish qatori va pastki tish qatori birlashtirilganda teng birikmasligi), tishlarning notoʻgʻri, qiyshiq oʻsishi kuzatiladi.
4. input: vaholanki mutlaqo boshqa odam haqida aytilgan
restored: Vaholanki, mutlaqo boshqa odam haqida aytilgan.
gold: Vaholanki, mutlaqo boshqa odam haqida aytilgan.
5. input: loyiha doirasida tanlangan maktablarda amaliy kimyo va biologiya laboratoriyalari tashkil etilib ularda interfaol ta’lim yoʻlga qoʻyiladi
restored: Loyiha doirasida tanlangan maktablarda amaliy kimyo va biologiya laboratoriyalari tashkil etilib, ularda interfaol ta’lim yoʻlga qoʻyiladi.
gold: Loyiha doirasida tanlangan maktablarda amaliy kimyo va biologiya laboratoriyalari tashkil etilib, ularda interfaol ta’lim yoʻlga qoʻyiladi.
6. input: samolyotni qurishda uni raqib radarlariga kamroq seziluvchi qiluvchi stels texnologiyasidan foydalanilgan
restored: Samolyotni qurishda uni raqib radarlariga kamroq seziluvchi qiluvchi Stels texnologiyasidan foydalanilgan.
gold: Samolyotni qurishda uni raqib radarlariga kamroq seziluvchi qiluvchi “stels” texnologiyasidan foydalanilgan.
7. input: bunday jarayonlar oʻsimlik va hayvonlar dunyosiga ham taalluqlidir
restored: Bunday jarayonlar oʻsimlik va hayvonlar dunyosiga ham taalluqlidir.
gold: Bunday jarayonlar oʻsimlik va hayvonlar dunyosiga ham taalluqlidir.
8. input: uning koʻngli hijron vodiysiga aylandi firoq oʻtidan devona boʻlgan oshiq oqibatda yomon nomga ega boʻldi
restored: Uning koʻngli hijron vodiysiga aylandi, firoq oʻtidan devona boʻlgan oshiq oqibatda yomon nomga ega boʻldi.
gold: Uning koʻngli hijron vodiysiga aylandi, firoq oʻtidan devona boʻlgan oshiq oqibatda yomon nomga ega boʻldi.
9. input: men ayollar tomon otilib ularni ajratishga kirishdim
restored: Men ayollar tomon otilib, ularni ajratishga kirishdim.
gold: Men ayollar tomon otilib, ularni ajratishga kirishdim.
10. input: gap turar-joylar va xoʻjalik inshootlarining kuchli shamolda shikastlanishi haqida bormoqda
restored: Gap turar-joylar va xoʻjalik inshootlarining kuchli shamolda shikastlanishi haqida bormoqda.
gold: Gap, turar-joylar va xoʻjalik inshootlarining kuchli shamolda shikastlanishi haqida bormoqda.
Usage (ONNX, CPU, offline)
from punctuate_onnx import Punctuator # ships in this repo
p = Punctuator("path/to/this/repo") # dir with model.onnx + tokenizer + head_config.json
print(p.restore("нахуствазири украина афзуд ки путин мехоҳад"))
# -> Нахуствазири Украина афзуд, ки Путин мехоҳад.
Dependencies: onnxruntime, transformers (tokenizer only). No GPU required.
Training
- Data:
3M sentences uniformly sampled from a clean, punctuated Tajik corpus (1.9B tokens). - Recipe:
xlm-roberta-base, max_len 256, first-subword label alignment, bf16, lr 3e-5, warmup 5%, summed cross-entropy over the two heads, 3 epochs on one H100. - Full record (MANIFEST, loss curve, eval json, code) kept in the Saidzoda-Lab run archive.
Gated (manual approval) per lab policy. Central-Asian NLP research — Saidzoda Lab.
Model tree for Tohirju/uz-punctuation-restore
Base model
FacebookAI/xlm-roberta-base