Saudi Arabic is not one variety, and the differences are systematic enough to model. For most NLP purposes four registers matter: Najdi, Hejazi, Sharqiyah, and a general "white" Saudi register that is dialect-grounded but regionally unmarked.
That fourth one is the one most datasets omit and most real traffic uses.
What separates them
| Najdi (Riyadh, Qassim) | Hejazi (Jeddah, Makkah) | Sharqiyah (Dammam, Khobar) | White / general | |
|---|---|---|---|---|
| Future marker | بـ (بروح) | حـ (حروح) | بـ / raa7 | بـ, light |
| "What" | وش | إيش | شنو | وش / ماذا |
| "Now" | الحين | دحين | الحين | الحين |
| "I want" | أبغى / أبي | أبغى | أبغى / أريد | أبغى / أحتاج |
| Typical courtesy | طال عمرك، أبشر | من عيوني، ولا يهمك | يعطيك العافية، تامر أمر | أهلاً بك، تفضل |
These are tendencies, not rules — speakers mix, and urban speech converges. But they are strong enough that a dialect classifier trained on one region's data measurably degrades on another's.
The register nobody labels
The "white" register deserves its own category rather than being filed under MSA or under whichever regional dialect is closest.
It is what Saudis write to institutions: dialect grammar and dialect vocabulary, with the strongest regional markers removed. Not formal, not regionally identifiable, and extremely common in support channels, forms and app reviews.
Datasets tend to either label it as MSA (wrong — the grammar is dialectal) or force it into a regional bucket (wrong — the markers are absent by choice). Both mislabel a large share of real traffic.
The asymmetry between customer and agent
One thing generic dialect modelling misses: within a single conversation, the two speakers use different registers, and the difference is not random.
A customer may write in strong regional dialect. A support agent replying in the same strong dialect reads as unprofessional to Saudi ears. Agents use a narrower, more courteous register with a specific set of hospitality formulas — أبشر, حياك, يعطيك العافية — that customers use far less.
Getting this wrong is one of the most reliable tells that support data is synthetic. Generated conversations where both parties speak identically look fine word by word and wrong as a whole.
Contamination is the practical risk
For Saudi data, the failure that matters most in practice is not picking the wrong Saudi register. It is Levantine or Egyptian vocabulary leaking in, because those varieties dominate Arabic training corpora and a model reaches for them under pressure.
Words like بدي, شو, عايز, كتير and منيح are unambiguous markers that a row is not Saudi. Any Saudi dataset should ban them explicitly, per dialect, rather than hoping the model stays in register.
More is not automatically better
A tempting move is to lay dialect on thick — every marker the region has, in every turn. This produces text that is dialectally "correct" and reads as parody.
Real speakers use two or three markers in a conversation, not twelve. If you are generating dialect data, cap marker frequency per conversation. Caricature is a distinct failure from contamination and needs its own check.
What to state in your data card
- Which registers, with approximate proportions
- Whether agent and customer registers differ, and how
- Which cross-dialect vocabulary was excluded
- Whether a "white" or general register is present and how it was labelled
A buyer building for Riyadh needs to know whether your corpus is 90% Najdi or evenly spread, and no row count answers that.