新增学习资料生成器模块(learner),从权威库生成多维日语学习资料: - 拼音/假名/汉字/熟字训四类索引,带拼音↔假名↔汉字交叉跳转 - 逐字音训分类(KANJIDIC2 精确查表 + 启发式回退 + 排序键) - 音变标注体系:浊化(連濁)、半浊化、促音变(促音便)、连声(れんじょう) 独立配色 + 合并逻辑 + 音变规律说明 - 显式标注表:rendaku_marks(连用形连浊)、renjou_marks(连声) - 每索引独立例词数配置(jlearn.toml + --config) - HTML 单页应用 + 静态 HTML + PDF(playwright) 清洗工具增强: - 拼音校验器(pinyin_checker)集成到 jclean - 多音字拼音校正、ます形サ変動詞转原型 数据: - 权威库补充连声词(反応/天皇/陰陽/観音/因縁/三位/輪廻/安穏) - KANJIDIC2 音训分类表、拼音校正字典 整理 .gitignore:忽略生成产物(output/study_materials)、词典数据库、 任务运行日志、备份文件
3.1 KiB
3.1 KiB
jlearn — 日语学习资料生成器
从权威库(汉字|分段:假名|分段:拼音|分段 格式)生成多维学习资料,
帮助以中文为母语的学习者借助拼音掌握日语汉字读音。
安装
在项目根目录:
pip install -e .
安装后即可使用 jlearn 命令;也可用 python -m pl_japanese.learner.cli 调用。
用法
# 列出所有可生成的资料类型
jlearn list
# 用默认权威库生成全部资料到 ./study_materials
jlearn generate
# 指定权威库和输出目录
jlearn generate --vocab data/db/vocabulary.txt --output-dir study_materials
# 只生成指定类型(逗号分隔)
jlearn generate --only handbook,anki
生成的资料
| 类型 | 文件 | 说明 |
|---|---|---|
overview |
overview.txt |
数据总览:一字多音分布、高频核心字 |
handbook |
kanji_handbook.txt |
汉字读音手册:每个单字按读音分组 + 例词 |
jukujikun |
jukujikun.txt |
熟字训词表:整词对应一读音、无法拆字的条目 |
pinyin |
pinyin_kana_mapping.txt |
拼音→汉字→假名对照表:从母语拼音出发,按汉字分组 |
pinyin-kana |
pinyin_kana_kanji_mapping.txt |
拼音→假名→汉字对照表:按假名分组,发现读音规律复用(如 an→あん 在 安/暗/案 中都成立) |
rules |
phonetic_rules.txt |
音读规律:拼音与假名的对应模式统计 |
anki |
anki_deck.txt |
Anki 卡片(TSV,正面日文词 / 背面假名+拼音) |
html |
study_app.html |
交互式单页应用:拼音·汉字·假名多维互链查询,可搜索,离线可用 |
交互式 HTML 应用(推荐)
study_app.html 是一个自包含的单页应用(约 1.4 MB),双击即可在浏览器打开,无需服务器:
- 多维索引 — 拼音、汉字、假名三个入口,互相超链接
- 点击导航 — 点拼音看对应汉字,点汉字看所有读音,点假名看所有汉字,任意跳转
- 音训读标注 — 每个读音标注 [音读]/[训读],蓝色/橙色区分
- 全文搜索 — 顶部搜索框输入拼音、汉字或假名,直达结果
- 离线分享 — 单文件,发给别人直接用
数据全部内嵌,依赖 Vue 3(从 CDN 加载,首次打开需联网;如需完全离线可自行改为本地 Vue)。
代码结构
builder.py—StudyDataBuilder:加载权威库,预建高效索引 ((汉字,假名)→拼音反查、单字/熟字训区分)generators.py— 文本类资料生成器 +GENERATORS注册表 +_classify_reading(音训读判断)html_generator.py— 交互式 HTML 单页应用生成器cli.py—jlearn命令行入口
新增一种资料:在 generators.py 写 gen_xxx(builder, out_dir) -> Path,
然后加进 GENERATORS 字典即可,CLI 会自动识别。
Anki 导入
anki_deck.txt 为 TAB 分隔的两列(正面/背面),背面用 <br> 分隔假名与拼音。
在 Anki 中「文件 → 导入」,字段分隔选 Tab,允许 HTML 即可。