Multiply Japanese or Chinese characters by their radicals to discover new characters. What happens when 木 × 木 = 林? Type any characters to find out.
Discussed on r/LearnJapanese (2,000+ upvotes)
linear-algebra.mov
Enter CJK characters as a column vector and a row vector. The app computes their "product": for each pair of characters, it finds all characters composed of those two components using Ideographic Description Sequences. For example, 木 × 木 yields 林 because 林 = ⿰木木.
Radical variants are mapped to their base forms (e.g. 氵→水, 灬→火), so 水 × 火 → 淡 works even though 淡 is technically ⿰氵炎.
Other mathematical operations may be coming soon.
Open index.html in a browser. No build step or server needed. It's a single HTML file plus a generated data.js.
If you want to rebuild data.js from the source dictionaries:
python3 preprocess.pyThis requires ids.txt, zh-defs.json, and jp-defs.json in the project root.
This project uses the following data sources:
- CJKVI IDS Database — Character decomposition data (IDS). Derived from the CHISE project, licensed under GPLv2.
- CC-CEDICT — Chinese-English dictionary. Licensed under CC BY-SA 4.0.
- JMdict — Japanese-English dictionary. Licensed under CC BY-SA 4.0 by the Electronic Dictionary Research and Development Group.
- KANJIDIC2 — Kanji dictionary. Licensed under CC BY-SA 4.0 by the Electronic Dictionary Research and Development Group.