CoolFace
Datasetpublic

kaihanzi/hanzi-sino-vietnamese

HSK × Sino-Vietnamese (Hán-Việt) character dataset 768 HSK characters joined with their Sino-Vietnamese (Hán-Việt) readings, radical breakdowns and hand-written memory hooks in Vietnamese. Open HSK wordlists are plentiful. The Sino-Vietnamese layer is what is missing from all of them — and it is the layer that matters most for the ~1 million Vietnamese speakers studying Chinese, because roughly 60% of Vietnamese vocabulary descends from Chinese. A learner meeting 学 (xué) already… See the full description on the dataset page: https://huggingface.co/datasets/kaihanzi/hanzi-sino-vietnamese.

sourceHugging Facecc-by-4.0updated 1mo agoView on Hugging Face
1likes36downloads
Dataset Card

HSK × Sino-Vietnamese (Hán-Việt) character dataset

768 HSK characters joined with their Sino-Vietnamese (Hán-Việt) readings, radical breakdowns and hand-written memory hooks in Vietnamese.

Open HSK wordlists are plentiful. The Sino-Vietnamese layer is what is missing from all of them — and it is the layer that matters most for the ~1 million Vietnamese speakers studying Chinese, because roughly 60% of Vietnamese vocabulary descends from Chinese. A learner meeting 学 (xué) already knows the morpheme through học — học sinh, đại học, học phí. Attach the reading and thousands of characters stop being arbitrary shapes.

Characters768 — 622 across HSK 1–3, 146 from HSK 4–6 (HSK 2.0 banding)
Unique radicals449, each with a Vietnamese gloss and a memory hook
Snapshot2026-08-12
LicenseCC BY 4.0
Upstream repohttps://github.com/binhbuithithanh/hanzi-sino-vietnamese
Source of the readings/mnemonicshttps://kaihanzi.com/chu

Every sinoViet reading, mnemonic, radical gloss and stroke hint is hand-authored in Vietnamese, not model-generated and not scraped.

Load

python
from datasets import load_dataset

chars = load_dataset("<your-org>/hanzi-sino-vietnamese", "characters", split="train")
rads  = load_dataset("<your-org>/hanzi-sino-vietnamese", "radicals",   split="train")

chars[0]
# {'hanzi': '一', 'pinyin': 'yī', 'sino_viet': 'Nhất', 'meaning_vi': 'một, số một',
#  'stroke_count': 1, 'hsk_level': 1, 'radicals': '一', 'monolithic': True, ...}

JSON equivalents (data/characters.json, data/radicals.json) and per-level splits (data/by-level/hsk1.json … hsk6.json) ship in the same repo.

Schema

characters

FieldTypeNotes
hanzistringSimplified character
pinyinstringTone marks, not tone numbers (nǐ, not ni3)
sino_vietstringSino-Vietnamese reading — the field no other open HSK dataset carries
meaning_vistringVietnamese gloss
stroke_countint
traditionalstringEmpty when identical to the simplified form
hsk_levelint1–6 (HSK 2.0 banding)
radicalsstringSpace-joined in CSV, array in JSON; joins to the radicals config
monolithicboolTrue when the character does not decompose (67 records)
mnemonicstringVietnamese memory hook linking the radicals to the meaning
stroke_hintstringPlain-language description of how the character is written

radicals

FieldTypeNotes
charstringRadical
name_vistringVietnamese name, e.g. bộ Khẩu (miệng)
meaningstringVietnamese gloss
mnemonicstringMemory hook
char_countintHow many characters in this dataset use it

Level distribution

HSK123456
Characters18217426624103

HSK 4–6 coverage is deliberately partial: those levels only include characters that were prioritised for the source site, so do not treat this as a full HSK 4–6 character list.

Uses

  • —Vietnamese-facing Chinese-learning apps, Anki decks, flashcard generators
  • —Research on Sino-Xenic readings — Sino-Vietnamese ↔ Sino-Japanese on'yomi ↔ Sino-Korean hanja
  • —Any task needing radical decomposition with a plain-language gloss instead of a bare Kangxi index

Limitations

  • —Not a wordlist. Characters only, no multi-character vocabulary. For HSK 3.0 vocabulary use complete-hsk-vocabulary or hsk30.
  • —HSK 2.0 banding. Levels follow HSK 2.0, not the HSK 3.0 nine-band standard.
  • —No stroke data. Stroke paths and medians are derived from hanzi-writer-data and are excluded here for licensing clarity — take them from upstream directly.
  • —Vietnamese-language fields. meaning_vi, mnemonic, name_vi and stroke_hint are Vietnamese; there is no English gloss column.
  • —Some characters carry more than one Sino-Vietnamese reading in the literature; the field records the reading used in teaching materials for that character's common sense.

Citation

bibtex
@misc{hanzi_sino_vietnamese_2026,
  title  = {HSK × Sino-Vietnamese (Hán-Việt) character dataset},
  year   = {2026},
  note   = {768 HSK characters with Sino-Vietnamese readings, radical breakdowns and mnemonics},
  url    = {https://github.com/binhbuithithanh/hanzi-sino-vietnamese}
}

CC BY 4.0 — reuse freely, including commercially, with attribution to the upstream repository.