CoolFace
Datasetpublic

razhan/script_normalization_ckb

Script normalization CKB — noisy → standard Sorani (script_normalization_ckb) Nearly 6M sentence pairs: the text column holds Central Kurdish written with non-standard or distorted characters, summary holds the same sentence in standard Sorani orthography. Use it for text normalisation, spell correction, or to learn the character-level mapping rules. At a glance Rows 5,997,025 — train 5,330,689 / test 666,336 Columns text (noisy input), summary… See the full description on the dataset page: https://huggingface.co/datasets/razhan/script_normalization_ckb.

sourceHugging Faceupdated 1d agoView on Hugging Face
0likes45downloads
Dataset Card

Script normalization CKB — noisy → standard Sorani (scriptnormalizationckb)

Nearly 6M sentence pairs: the text column holds Central Kurdish written with non-standard or distorted characters, summary holds the same sentence in standard Sorani orthography. Use it for text normalisation, spell correction, or to learn the character-level mapping rules.

At a glance

Rows5,997,025 — train 5,330,689 / test 666,336
Columnstext (noisy input), summary (normalised target)
Parquet on disk904.5 MB (1.57 GB uncompressed)
Row groups667 in the test shard, ~1,000 rows each
LanguageCentral Kurdish / Sorani (ckb)
Naming note: despite the column name, summary is not a summary — it is the normalised rewrite of text. Both sides carry the same content.

How the two sides differ

Measured on 1,000 rows of the test split:

Rows where text == summary20 (2%)
Mean character-level edit distance21.5
Max edit distance85
Mean length text / summary69.3 / 67.3 chars

Which characters get fixed (rows affected out of 1,000):

ChangeRows
ي (U+064A Arabic yeh) → ی (U+06CC Farsi yeh)682
ة (U+0629 teh marbuta) → ە (U+06D5)384
ه (U+0647) → ە (U+06D5)397
ث (U+062B) → س (U+0633)114
ذ (U+0630) → ز (U+0632)68

Example pair:

text    : يابان بؤ خؤي بش ئه و قه يرانه  طه نگوجه له مه ي ئابووري هه ره فراواني ...
summary : یابان بۆ خۆی پێش ئەو قەیڕانە تەنگوچەلەمەی ئابووری هەرەفراوانی ...

Some rows are far noisier than character substitution:

text    : اهي اهگهر پئشمهرگه نهبايه حكمهطي بهعث عثهي پاقلاه ...
summary : ئەی ئەگەر پێشمەرگە نەبووایە حکومەتی بەعس عوسەی پاقلاوەو ...

Usage

python
from datasets import load_dataset

ds = load_dataset("razhan/script_normalization_ckb", split="test")
print(ds[0]["text"])      # noisy
print(ds[0]["summary"])   # standard

# fine-tune any encoder-decoder for normalisation, or mine substitution rules:
pairs = ds.select(range(200_000))

Known limitations

  • The corpus is synthetic in construction: noise was introduced into clean text, so the error distribution reflects the generator, not real user typos.
  • summary is the target and the column name is misleading (left in place for backwards compatibility).
  • Only character/orthography-level repair is targeted; it does not correct grammar or word choice, and heavily distorted rows can still normalise to a different token sequence.
  • Rows are single sentences — no document context.

Related

  • razhan/riste — line-by-line Sorani sentences (a likely source pool).
  • razhan/kteb, razhan/kteb-dataset — book text in mixed orthography.