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.
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.
Every sinoViet reading, mnemonic, radical gloss and stroke hint is hand-authored in Vietnamese, not model-generated and not scraped.
Load
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
radicals
Level distribution
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_viandstroke_hintare 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
@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.
