Preserving বাংলা in the age of AI
Project Bornomala is building a Bengali-first, dialect-aware language model, and the open tools and data to make it possible. It sits at the intersection of modern technology and the richness of the Bengali language, its dialects, and its culture. Everything is open, measured, and honest.
Why this matters
Today's AI treats Bengali as a second-class language
Bengali is spoken by more than 250 million people. Yet the systems shaping the future of knowledge, from ChatGPT, Claude, and Gemini to Indic-focused models, were built for English first. The gap is measurable, and we measured it.
The general models
ChatGPT, Claude, and Gemini split Bengali into many small pieces, so it costs more and less of it fits in memory. Worse, they routinely break a Bengali conjunct, the single written unit a reader recognises, into fragments that mean nothing.
Even the Indic models
Sarvam and AI4Bharat have done important open work, but they optimise across many Indian languages at once and cover Standard Bengali. The literary register, and the dialects of West Bengal, are left out.
Bangladesh has built a lot
Bangladesh leads Bengali language technology, and we honour that. But it centres on Standard and Dhaka-region Bangla. The western half of the language, its dialects and its literary corpus, is still missing. This is open-source research taking that up, not a rival effort.
The corpus is trapped
The depth of Bengali, its literature from 1850 to 1950, exists mostly as scanned page images. No amount of web crawling recovers it. That is a data problem, not a compute problem, and it is the one we set out to solve.
Our approach
Build the language model Bengali deserves, from the data up
The constraint on a great Bengali model is not compute or model size. It is clean, deep Bengali data, and coverage of the dialects. So we build in that order: the data and the tools first, the model as what they make possible.
Respect the script
A Bengali tokenizer that treats the written unit as a whole and never breaks a conjunct, so the model reads Bengali the way a reader does.
Recover the literature
Read the scanned Bengali literary corpus back into clean text, so a century of the language rejoins the machine-readable world.
Document the dialects
Create the first computational record of the West Bengal dialect groups, in text and in speech, with the consent and dignity of the communities who speak them.
Then, the model
A Bengali-first, dialect-aware model that can run on an ordinary phone, offline, understanding literary register, idiom, and regional voice.
What we have achieved, measured and transparent
Two Bengali tokenizers, both ahead of every public baseline we tested
Both tokenizers need fewer tokens per Bengali word than every system we tested, including two Bengali-monolingual models and the frontier models, and neither breaks a conjunct while the others break many. This holds on six disjoint held-out sets: Wikipedia, literary and formal, general web, news, romanized Banglish, and FLORES+.
| Tokenizer | Tokens per word | Whole words kept | Bytes per token | Broken conjuncts (destructive) |
|---|---|---|---|---|
| Bornomala v1 | 1.52 | 72% | 11.38 | 0.04% |
| Bornomala BMBT | 1.52 | 72% | 11.38 | 0.04% |
| BanglaBERT (csebuetnlp) | 1.63 | 65% | 10.67 | 1.6% |
| IndicBERTv2 (AI4Bharat) | 1.65 | 61% | 10.50 | 1.9% |
| BanglaT5 (csebuetnlp) | 1.67 | 63% | 10.39 | 0.9% |
| SUTRA (TWO AI) | 2.22 | 42% | 7.82 | 5.0% |
| XLM-RoBERTa (Meta) | 2.46 | 36% | 7.04 | 6.3% |
| Sarvam-1 (Sarvam AI) | 2.59 | 42% | 6.69 | 3.6% |
| GPT-4o (OpenAI) | 2.61 | 11% | 6.65 | not measurable |
| BrahmicTokenizer-131K | 2.62 | 15% | 6.62 | 8.2% |
| mBERT (Google) | 2.78 | 39% | 6.25 | 15.5% |
Not just an average
Deity names, a national poet, West Bengal places: one token, every time
A register average can hide how a tokenizer treats specific, culturally load-bearing words. We measured a fixed list of 13: deity names, a national poet, well-known West Bengal places, all conjunct-dense, on every tokenizer we track, 14 external systems plus our own.
| Word | Meaning | Ours (v1/BMBT) | BanglaBERT/BanglaT5 | IndicBERTv2 | GPT-4o |
|---|---|---|---|---|---|
| স্ত্রী | wife/woman | 1 | 1 / 1 | 1 | 2 |
| আকাঙ্ক্ষা | aspiration (triple conjunct) | 1 | 1 / 1 | 1 | 6 |
| রবীন্দ্রনাথ | Rabindranath (Tagore) | 1 | 1 / 1 | 1 | 7 |
| পশ্চিমবঙ্গ | West Bengal | 1 | 1 / 1 | 1 | 5 |
| বিষ্ণুপুর | Bishnupur | 1 | 1 / 1 | 2 | 5 |
| শান্তিনিকেতন | Santiniketan | 1 | 1 / 1 | 3 | 5 |
Ours tokenizes every one of the 13 words as exactly one token, including the triple-conjunct আকাঙ্ক্ষা and the multi-akshara রবীন্দ্রনাথ. Correction, kept visible rather than quietly edited away: an earlier version of this page said "no exception" as if ours were the only one - BanglaBERT and BanglaT5 also score a perfect 1.00 here, added to this comparison 2026-08-17. What still sets ours apart: we guarantee it by construction, not by whatever a vocabulary happened to cover on these 13 words.
| Tokenizer | Avg tokens/word (13 hard words) |
|---|---|
| Bornomala v1 | 1.00 |
| Bornomala BMBT | 1.00 |
| BanglaBERT (csebuetnlp) | 1.00 |
| BanglaT5 (csebuetnlp) | 1.00 |
| IndicBERTv2 (AI4Bharat) | 1.31 |
| SUTRA (TWO AI) | 3.31 |
| Sarvam-1 | 3.46 |
| Param2-17B (BharatGen) | 3.62 |
| XLM-RoBERTa (Meta) | 3.69 |
| BrahmicTokenizer-131K | 4.38 |
| mBERT (Google) | 4.38 |
| GPT-4o (o200k) | 4.46 |
| DeepSeek-V3 | 4.62 |
| Krutrim | 4.77 |
| Gemma-2 (Google) | 5.69 |
| Qwen2.5 (Alibaba) | 9.15 |
| GPT-4 (cl100k) | 10.85 |
| Llama-3.1 (Meta) | 10.85 |
| Mistral-7B | 11.08 |
Beyond BPE, now built and measured
BMBT: reading Bengali on its own terms
The tokenizer above achieved that result the way almost every serious tokenizer does today: it retrains BPE, a statistical compressor, on Bengali data. That fixes the vocabulary while keeping the frame, and we thought the frame was the actual problem. Bengali is not a language whose structure needs discovering by counting bytes. It is an abugida, a generative system with explicit, Unicode-standardized rules for how a written syllable (an akshara) is built from a consonant, its conjuncts, and its vowel signs. So we built BMBT, Bornomala's Bengali Tokenizer: it reads the script by its own grammar first, a finite-state machine, and falls back to statistics only for what the grammar cannot explain: loanwords, code-mixing, noise.
Grammar first, statistics as fallback
A finite-state parser for the akshara grammar (the virama rule, matra reordering, unbounded conjuncts) runs before any learned merge. Bengali BPE only ever tuned the frame; this replaces it.
Featural tokens, not opaque IDs
Each akshara decomposes into its own structure, onset, vowel, modifiers, via featurize(), a real, tested output, so a model can see for free that related syllables share an onset, instead of learning every combination as an unrelated integer.
Lossless by construction, proven not assumed
A formal specification states losslessness, totality, linear time, and constrained optimality as predicates, proves three of the four by construction, and pins the fourth to a property-based fuzzer contract in CI.
An honest result: a tie on compression, not a win
Measured against the original tokenizer on identical held-out text, BMBT ties it, on Wikipedia identical down to the raw token count, rather than beating it. The formal spec itself proves a grammar-constrained BPE cannot beat an unconstrained one on raw token count. This is that prediction confirmed in practice, not a disappointment hidden.
Morphology is now built too. BMBT aligns its token boundaries to Bengali's suffix structure. Getting there meant separating two things we had been treating as one guarantee: never severing a conjunct, and never splitting a written syllable. Only the first is what a Bengali tokenizer exists to protect. Splitting the syllable shbe into its consonant cluster and its vowel sign leaves two units any Bengali reader names; severing the cluster itself leaves a fragment that means nothing. Holding the stronger rule was costing us a third of all Bengali morpheme boundaries, because a vowel sign attaches to the consonant before it while belonging to the suffix after it. Relaxing it only at morpheme seams took reachable boundaries from 62% to 100%, with not one conjunct severed, checked across 1.47 million characters.
That 100% figure describes the morphology rule layer itself, checked directly against text before any tokenizer was trained on it. The trained artifact built from it, bmbt-64k-morph, is now benchmarked too, on the same Wikipedia held-out set as every other row on this page: fertility 1.855, against 1.524 without the morphology layer, a real cost of about 22%, in the direction our own formal proof predicted (a grammar-constrained BPE is expected to do a little worse, never better, on raw token count). Most of that gap is the point, not a defect: 8.36% of splittable clusters now split deliberately at a morpheme seam. The rate that actually matters, real conjuncts broken, stays close to zero at 0.033% (6 of 18,396 splittable clusters) on this trained measurement, not the literal zero the rule layer alone guarantees, and we report the difference rather than round it away. Only the Wikipedia register has been run through this benchmark so far; the other three registers are the natural next measurement.
The same work made us correct our own measurement. Our conjunct-fragmentation figure counted any split written unit rather than only broken conjuncts, and divided by every unit including the 61% that consist of a single character and cannot be split by anyone. That made every number, ours and everyone else's, look about twice as good as it was. Corrected, the ranking of the other tokenizers changes: multilingual BERT, not DeepSeek-V3, does the most real damage to Bengali. We kept the old figure alongside the new one so nothing already published becomes uncheckable.
The tokenizer above still outperforms every external baseline tested, by a wide margin, on every held-out register, and BMBT ties it there too. Full numbers: the benchmark doc.
Read the position paper Read the formal spec Read the BMBT architecture
Where Bengali is actually typed
Banglish: a gap we found, measured, and partly closed
Most everyday Bengali on a phone is not written in Bengali script at all. It is Banglish, Bengali typed in Latin letters ("tumi kemon acho"), the register the six-way held-out comparison above already flags as the one where our own tokenizers score worst. Here is what that measurement found, and what we built in response.
Tiers 0 to 2: no model at all
Bengali-script text passes through untouched. A 155,615-entry lookup table, built mostly from Google's Dakshina dataset, resolves 79.5% of real Banglish words outright. A character n-gram classifier, trained from scratch, correctly leaves real English words (6.1%) alone rather than mangling them. That is 85.6% of a real held-out set handled with zero GPU and zero pretrained weights.
Tier 3: a small model, trained from scratch, honestly imperfect
For the 14.4% tiers 0-2 cannot resolve, a small Transformer trained from scratch (checkpoint step-20000.pt) reaches 53.9% exact-match accuracy and 13.5% character error rate on Dakshina's reserved blind test split. It is wired in and it works, and it is not yet good. A larger configuration is scoped and not yet run.
Rare, and first of its kind
Things no one had done before
The first Bengali tokenizer comparison
Bengali had never appeared in a published cross-tokenizer comparison. This is the first, and it is open and reproducible.
Conjunct integrity by design
A Bengali tokenizer engineered so that breaking a conjunct is structurally impossible, not merely rare.
The West Bengal dialects
The plan to build the first computational resource for dialect groups that currently have none.
Our values and goals
Open, honest, and for the language
We measure everything, we claim only what we can show, and we publish the method with the result.
The goal is not a product. It is to make sure that as machines learn to read and write, they can read and write Bengali, in full, including the voices of West Bengal that have never been written into a computer before. This is language preservation carried out with modern tools.
Transparent
Every number states the data behind it. No fabricated or estimated results presented as measured.
Open
Code under Apache 2.0, data under open Creative Commons licences. Free to study and build on.
Cultural
Rooted in the richness of Bengali literature, idiom, and dialect, treated as heritage worth preserving.
Consensual
Dialect and speech data collected with informed consent, fair compensation, and the right to withdraw.
Help build it
This is bigger than one person
Project Bornomala is open and needs many hands. If you care about Bengali, about language technology, or about preserving a culture in the age of AI, there is a place for you.
Engineers
Improve the tokenizer and tools, add models to the comparison, build the data pipeline.
Native speakers
Especially of West Bengal dialects. Your voice can become the first record of it.
Linguists
Guide dialect documentation, transcription conventions, and evaluation.
Archives and libraries
Share scanned Bengali holdings so a century of literature can rejoin the machine-readable world.
Answers
Frequently asked
Why do today's AI models handle Bengali poorly?
They are optimised for English. Bengali is broken into far more tokens than English for the same meaning, which costs more and shrinks the usable context, and general tokenizers routinely break Bengali conjuncts. The literary corpus is trapped in page images, and the West Bengal dialects have no computational resource at all.
How is this different from work in Bangladesh?
Bangladesh leads Bengali language technology, focused on Standard and Dhaka-region Bangla. This project takes up the western half of the language: its literary register and its five West Bengal dialect groups, which have zero resources anywhere. Open-source research addressing a gap, not a rival effort.
What licence is this under?
Code is open under Apache 2.0 and data under open Creative Commons licences. Anyone can use it, study it, and build on it, including commercially.
Can I trust the numbers?
Every figure states the exact data behind it and reruns with one command. We never present an estimate as a measurement.
How can I help?
Engineers, native speakers of West Bengal dialects, linguists, and archives are all needed. Start on GitHub or get in touch.