feat(curator): curate update keeps a server's dictionaries current
EDRDG's licence asks of servers showing its dictionaries that they update
them at least monthly. `curate update --into <folder>` downloads EDRDG's
files of the day (JMdict with Tatoeba's sentences, KANJIDIC2), converts
them with the JLPT levels the curator now brings along (yomitan-jlpt-vocab's
lists, CC BY-SA 4.0, and the kanji levels of kanji-data's kanji.json: both
static, in data/ with their origin), and puts each file in place at once
(written beside it as .part, then renamed over it), so the server never
reads half a file; a failure leaves the files as they were. With --every 7
it keeps running and updates whenever the files are a week old, as their
dates say, so a restart doesn't download again; after a failure it tries
again in six hours. A real update takes some 50 seconds and 400 MB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-09 16:40:19 +02:00
|
|
|
# Data the curator brings along
|
|
|
|
|
|
|
|
|
|
What the dictionaries draw on besides their sources, and never changes, so
|
feat(curator): Chinese from CC-CEDICT, with the HSK levels of 2025
Chinese comes from CC-CEDICT (CC BY-SA 4.0), made for learners of
Chinese: `curate cedict` writes two dictionaries of its entries,
`cc-cedict-hans-en` (zh-Hans) and `cc-cedict-hant-en` (zh-Hant), so a
studyset finds its words as it writes them, each finding a word by
either script, by pinyin with or without tones and by its meanings.
Readings are pinyin with tone marks, a syllable to a character; measure
words are a remark beside the meanings.
The HSK levels are those of the 2025 examination syllabus, which HSK
3.0's examination follows since July 2026 (decided 2026-10-14: level
tags, credited), as hsk30 extracted them (MIT): `hsk:1` … `hsk:6`, and
`hsk:7` for 7 to 9, each given to the entry read as the syllabus reads
the word (的 de, not 的 dì; 书 shū, not the Book of Documents, Shū),
ranking the words, HSK 1 first.
`curate update --languages de,el,en,zh` takes over from `--wiktionary`:
Chinese from MDBG's file of the day as often as EDRDG's files, the rest
from Wiktionary's dump.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 07:27:02 +02:00
|
|
|
`curate update` needs only EDRDG's files of the day, MDBG's CC-CEDICT and
|
|
|
|
|
Wiktionary's dump.
|
feat(curator): curate update keeps a server's dictionaries current
EDRDG's licence asks of servers showing its dictionaries that they update
them at least monthly. `curate update --into <folder>` downloads EDRDG's
files of the day (JMdict with Tatoeba's sentences, KANJIDIC2), converts
them with the JLPT levels the curator now brings along (yomitan-jlpt-vocab's
lists, CC BY-SA 4.0, and the kanji levels of kanji-data's kanji.json: both
static, in data/ with their origin), and puts each file in place at once
(written beside it as .part, then renamed over it), so the server never
reads half a file; a failure leaves the files as they were. With --every 7
it keeps running and updates whenever the files are a week old, as their
dates say, so a restart doesn't download again; after a failure it tries
again in six hours. A real update takes some 50 seconds and 400 MB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-09 16:40:19 +02:00
|
|
|
|
|
|
|
|
`jlpt/n1.csv` … `n5.csv` are the JLPT vocabulary lists of
|
|
|
|
|
[yomitan-jlpt-vocab](https://github.com/stephenmk/yomitan-jlpt-vocab)
|
|
|
|
|
(`original_data`, as of 2026-10-09), CC BY-SA 4.0 (`jlpt/LICENSE.txt`): Jonathan
|
|
|
|
|
Waller's lists ([tanos.co.uk](http://www.tanos.co.uk/jlpt/), CC BY) with each
|
|
|
|
|
word's JMdict entry and its most common spelling, by stephenmk.
|
|
|
|
|
|
|
|
|
|
`kanji-jlpt.json` maps each kanji on Jonathan Waller's JLPT kanji lists
|
|
|
|
|
([tanos.co.uk](http://www.tanos.co.uk/jlpt/), CC BY) to its level, 5 for N5 to 1
|
|
|
|
|
for N1: the `jlpt_new` of
|
|
|
|
|
[kanji-data](https://github.com/davidluzgouveia/kanji-data)'s `kanji.json`
|
|
|
|
|
(MIT, as of 2026-10-09), nothing else of it.
|
|
|
|
|
|
|
|
|
|
The lists are over ten years old and won't change; replace them only for a list
|
|
|
|
|
of the same shape.
|
feat(curator): dictionaries of German, Greek and English from Wiktionary
The languages besides Japanese come from the English Wiktionary as
Wiktextract reads it (decided 2026-10-14: German, Greek and English
first, then Chinese, then Korean): kaikki.org's raw dump, every language
in one file, as its per-language files are being withdrawn.
`curate wiktionary --languages de,el,en` reads it once, streamed, and
writes German and Greek with Wiktionary's English meanings and English
with what its translation tables give in German, the app's other
language (`wiktionary-de-en`, `-el-en`, `-en-de`; sources
`wiktionary-<language>`, as the server holds one source per meaning
language). Inflected forms, and Wiktionary's entries for forms alone
("Häusern: dative plural of Haus"), find their word instead of being
entries; names and affixes are left out, as are articles that tables
give cells of their own, abbreviations and rare spellings, which would
match common words. Entries keep their part of speech, genders, IPA,
principal forms and examples keyed by language as JMdict's.
wordfreq's small lists (CC BY-SA 4.0, crediting SUBTLEX) in data/ rank
the words by how often they are used and label the 15,000 most used
`common`. Typing without accents or umlauts finds a word (`strasse`,
`haeuser`, `spiti`).
The format gains `textKeys`: what finds an entry in running text, its
own forms, never its meanings, which would match words of the meaning
language in a subtitle. `curate update --wiktionary de,el,en` keeps the
languages current: it asks kaikki.org when the dump last changed and
converts it again only when it is newer, or the languages or the
conversion changed. The whole dump converts in about ten minutes in
under 300 MB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 07:19:16 +02:00
|
|
|
|
|
|
|
|
`wordfreq/small_<language>.msgpack.gz` are wordfreq's lists of how often words
|
|
|
|
|
are used ([wordfreq](https://github.com/rspeer/wordfreq) v3.0, as of 2021-03-29,
|
|
|
|
|
the last change to its data), unchanged: CC BY-SA 4.0, by Robyn Speer, drawn from
|
|
|
|
|
SUBTLEX (Marc Brysbaert et al., whose authors wordfreq's licence asks to be
|
|
|
|
|
credited, and who made SUBTLEX freely available), OpenSubtitles, Wikipedia,
|
|
|
|
|
Google Books Ngrams and others, as wordfreq's README lists them. The Wiktionary
|
|
|
|
|
dictionaries take their ranks and their `common` label from them and credit
|
|
|
|
|
both. wordfreq's data won't change: it was sunset in 2024.
|
feat(curator): Chinese from CC-CEDICT, with the HSK levels of 2025
Chinese comes from CC-CEDICT (CC BY-SA 4.0), made for learners of
Chinese: `curate cedict` writes two dictionaries of its entries,
`cc-cedict-hans-en` (zh-Hans) and `cc-cedict-hant-en` (zh-Hant), so a
studyset finds its words as it writes them, each finding a word by
either script, by pinyin with or without tones and by its meanings.
Readings are pinyin with tone marks, a syllable to a character; measure
words are a remark beside the meanings.
The HSK levels are those of the 2025 examination syllabus, which HSK
3.0's examination follows since July 2026 (decided 2026-10-14: level
tags, credited), as hsk30 extracted them (MIT): `hsk:1` … `hsk:6`, and
`hsk:7` for 7 to 9, each given to the entry read as the syllabus reads
the word (的 de, not 的 dì; 书 shū, not the Book of Documents, Shū),
ranking the words, HSK 1 first.
`curate update --languages de,el,en,zh` takes over from `--wiktionary`:
Chinese from MDBG's file of the day as often as EDRDG's files, the rest
from Wiktionary's dump.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 07:27:02 +02:00
|
|
|
|
|
|
|
|
`hsk/syllabus2025_words.tsv` lists the 10,896 words of the HSK examination
|
|
|
|
|
syllabus published in November 2025 by the Center for Language Education and
|
|
|
|
|
Cooperation (中外语言交流合作中心), the one HSK 3.0's examination follows since
|
|
|
|
|
July 2026, each with its level (1 to 6, 7 for 7 to 9), the level of a homograph
|
|
|
|
|
graded twice, its pinyin and its part of speech: as extracted from the
|
|
|
|
|
syllabus's PDF by Alvaro Serrano's [hsk30](https://github.com/harukicoder/hsk30)
|
|
|
|
|
(`corpus/syllabus2025/`, as of 2026-09-06), MIT (`hsk/LICENSE.txt`), unchanged.
|
|
|
|
|
Only each word's level reaches the dictionaries (`hsk:N`), with the pinyin to
|
|
|
|
|
tell CC-CEDICT's readings of one word apart; the curator credits both. The
|
|
|
|
|
Ministry claims copyright on the standard's documents; a word's level is a fact
|
|
|
|
|
about it, which the dictionaries keep with attribution (decided 2026-10-14).
|
feat(curator): characters of Chinese and Korean, the Greek alphabet, Korean words from KRDict
For parity with Japanese's KANJIDIC2 and kana:
- Unihan (Unicode License v3) makes characters' dictionaries: the 8,105
standard simplified characters (unihan-hans) and the traditional ones in
use (unihan-hant), told apart and ranked by CC-CEDICT's words (Unihan
calls 这 its own traditional variant; 後 ranks as the 后 of 以后), with
pinyin, meanings, strokes, Kangxi radical, HSK 2025 character levels,
the 3,500 common ones and Hong Kong's grades; and Korean Hanja
(unihan-ko) with their sounds, the 1,800 of education, and their native
readings from Wiktionary (물 수), with the 40 Hangul letters as kana are.
- The Greek alphabet, the curator's own (CC0): letters with names,
transliteration and sound.
- KRDict, the Basic Korean Dictionary for learners (CC BY-SA 2.0 KR,
downloaded without an account), replaces Wiktionary for Korean's words:
learners' levels, pronunciation where it differs from the spelling
(같이 [가치]), Hanja, English senses; Wiktionary's update keeps the
words' forms (가다's 99) and the Hanja's readings beside it for both.
- The update converts KRDict when its page offers another export and the
characters weekly, and removes the files of languages no longer kept
or of sources replaced.
Measured on the real data: Unihan 3 s; KRDict 54,870 entries in 24 s
and under 600 MB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 12:08:10 +02:00
|
|
|
`hsk/syllabus2025_chars.tsv` lists the syllabus's 3,088 characters to recognise
|
|
|
|
|
(认读字) with their levels (246, 125, 284, 441, 431 and 413 for levels 1 to 6,
|
|
|
|
|
1,148 for 7 to 9), from the same repository and commit (`corpus/syllabus2025/`),
|
|
|
|
|
MIT, unchanged; they label the Chinese characters (`hsk:N`) as the words' label
|
|
|
|
|
the words.
|