Project Bornomala বর্ণমালা

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.

First of its kind Open source and data
Project Bornomala logo, the Bengali letter Ba

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.

7.6x
more tokens Bengali costs than English on older GPT-4, for the same meaning
67x
gap between cleaned Bengali text (about 30 billion tokens) and English (about 2 trillion)
5
West Bengal dialect groups with zero computational resources anywhere
8%
share of Indic data a leading Indic model gives Bengali; others treat it as 1 of 22

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.

The data pipeline behind "recover the literature" is measured too. Track A2 tests how much of a Bengali corpus survives exact dedup, near-duplicate removal, and quality filtering. Across four real sources (Bengali Wikipedia, Sangraha, AI4Bharat IndicCorp v2, and CC-100), word survival ranges from 79.6% on CC-100, the one genuine raw-web proxy in the set with no AI4Bharat or Wikimedia curation pipeline behind it, up to 99.3% on IndicCorp v2. Even at CC-100's lower ratio, the largest published Bengali corpora still project tens of billions of surviving tokens, comfortably above the programme's 5-billion-token floor. Full numbers and method: track-a2-corpus-survival.md. Separately, the tooling to collect dialect text and speech, and OCR ground truth, by hand now exists and is tested: a schema, a validator, and CSV templates. This is infrastructure only. No real dialect or OCR data has been collected with it yet.

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+.

1.14
tokens per Bengali word on news text, against GPT-4o's 2.19 and GPT-4's 7.74
0
conjuncts broken, by construction rather than by tuning, on every register
100%
of Bengali morpheme boundaries now reachable by BMBT, up from 62 percent
6.2M
characters a second, more than twice the C regex the first version relies on
TokenizerTokens per wordWhole words keptBytes per tokenBroken conjuncts (destructive)
Bornomala v11.5272%11.380.04%
Bornomala BMBT1.5272%11.380.04%
BanglaBERT (csebuetnlp)1.6365%10.671.6%
IndicBERTv2 (AI4Bharat)1.6561%10.501.9%
BanglaT5 (csebuetnlp)1.6763%10.390.9%
SUTRA (TWO AI)2.2242%7.825.0%
XLM-RoBERTa (Meta)2.4636%7.046.3%
Sarvam-1 (Sarvam AI)2.5942%6.693.6%
GPT-4o (OpenAI)2.6111%6.65not measurable
BrahmicTokenizer-131K2.6215%6.628.2%
mBERT (Google)2.7839%6.2515.5%
Exactly how this was measured, so anyone can check. Both tokenizers were trained on a literary-weighted corpus mixing Wikisource public-domain text, Sangraha verified Bengali (formal and general register), Bengali Wikipedia, and XL-Sum news. They were then tested, along with every other tokenizer, on 828 held-out lines from Bengali Wikipedia articles never seen in training; five further held-out sets confirm the same ranking beyond Wikipedia: literary/formal, general web, news, romanized Banglish (where, deliberately, both of ours score worst - see below), and FLORES+, the exact corpus an external tokenizer-fertility paper's own published numbers are built from. Every other tokenizer is its real, official public tokenizer, run on the same text. Fewer tokens per word is better; a broken conjunct here is the corrected, graded measure - a split that actually severs something real (a stranded virama, a detached nukta), not a harmless consonant-cluster/vowel-sign seam counted the same as real damage. GPT-4o exposes no character offsets, so its conjunct figure is left unmeasured rather than guessed. Full method and raw numbers are in the repository, and the comparison reruns with a single command. To our knowledge, this is the first fully reproducible benchmark comparing modern Bengali tokenizers across compression, word preservation, and conjunct fragmentation using a common evaluation pipeline. v1 and BMBT tie exactly on five of six registers, and differ by 0.001 fertility on the sixth (FLORES+, BMBT very slightly ahead) - reported exactly as measured, not smoothed into one row.

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.

WordMeaningOurs (v1/BMBT)BanglaBERT/BanglaT5IndicBERTv2GPT-4o
স্ত্রীwife/woman11 / 112
আকাঙ্ক্ষাaspiration (triple conjunct)11 / 116
রবীন্দ্রনাথRabindranath (Tagore)11 / 117
পশ্চিমবঙ্গWest Bengal11 / 115
বিষ্ণুপুরBishnupur11 / 125
শান্তিনিকেতনSantiniketan11 / 135

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.

TokenizerAvg tokens/word (13 hard words)
Bornomala v11.00
Bornomala BMBT1.00
BanglaBERT (csebuetnlp)1.00
BanglaT5 (csebuetnlp)1.00
IndicBERTv2 (AI4Bharat)1.31
SUTRA (TWO AI)3.31
Sarvam-13.46
Param2-17B (BharatGen)3.62
XLM-RoBERTa (Meta)3.69
BrahmicTokenizer-131K4.38
mBERT (Google)4.38
GPT-4o (o200k)4.46
DeepSeek-V34.62
Krutrim4.77
Gemma-2 (Google)5.69
Qwen2.5 (Alibaba)9.15
GPT-4 (cl100k)10.85
Llama-3.1 (Meta)10.85
Mistral-7B11.08
Four tokenizers now tie at a perfect 1.00 average: ours (v1 and BMBT), BanglaBERT, and BanglaT5. IndicBERTv2 is the closest tokenizer not tied (1.31 average) and still splits 3 of the 13 words (ঋত্বিক, বিষ্ণুপুর, শান্তিনিকেতন). Ours is the only one of the four that guarantees this by construction rather than by empirical vocabulary coverage of this specific list. A notable pattern, unverified beyond this word list: every single value in Llama-3.1's row is byte-for-byte identical to GPT-4's cl100k row, its tokenizer is tiktoken-derived and does not appear to extend Bengali coverage at all. Gemma-2's row is real (5.69) now that access was granted 2026-08-18 - an earlier version of this page reported it as gated and unmeasurable. Full per-word table, every tokenizer, and the reproduce command: benchmarks/hard-words.md.

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.

17th
of 17 loadable tokenizers, our own starting rank on real romanized Bengali chat text, behind BanglaBERT and BanglaT5
1.740
fertility after transliterating Banglish to Bengali script first, better than every tokenizer on our own leaderboard, including the previous leader SUTRA (1.850)
0
GPUs or trained models needed for that 1.740 result: a lookup table and an n-gram classifier only
53.9%
exact-match accuracy of the trained tier-3 neural model on a reserved blind test split, honestly short of production-ready

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.

Read honestly, in both directions. The strong number, 1.740 fertility, comes entirely from tiers 0-2: a real-word lookup table and a small classifier, no learned transliteration at all. The tier-3 model is real, trained, and wired in, but 53.9% exact-match is a modest number and we say so rather than round it up. Full method, the Dakshina data provenance, and every intermediate number: known-issues.md, "Banglish" section.

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.