Mobile wallpaper 1
1992 字
10 分钟
基于多邻国的单元单词背诵软件
2025-11-03
统计加载中...

基于多邻国单元的日语单词背诵软件#

LANSGANBS
/
nihon-vocab-trainer
Waiting for api.github.com...
00K
0K
0K
Waiting...

一个基于间隔重复(SM-2)的离线词汇学习工具,支持「日→中」与「中→日」两种模式、可选本地词典联想、学习统计可视化、单位(单元)管理与简洁的键盘操作。

功能特性#

  • 复习队列:默认到期优先,支持“包含未到期/全部”回退
  • 学习模式:日→中(评分)与中→日(输入判定),默认约 70%/30% 混排
  • 假名辅助:输入罗马音即时生成平/片假名候选,一键写回并自动回填罗马音
  • 单元总览:按单元浏览假名/汉字/罗马音/释义与重复次数
  • 学习统计:总览、每日复习量与正确率、EF/重复次数分布;无 matplotlib 时自动退化为表格
  • 可选本地词典:支持 CSV 词典反查,辅助中→日判定与补全
  • 键盘友好:Space 展开/继续,数字键打分(1/2/3/4)
  • 字体与 CJK 友好:自动装载项目内字体并设置回退链,matplotlib 统一 CJK 字体

环境要求#

  • Python >= 3.8(Windows 推荐 3.10+)
  • 依赖
    • PyQt5
    • matplotlib(可选,用于图表)
  • SQLite(标准库自带)

安装#

# 建议使用虚拟环境
python -m venv .venv
.venv\Scripts\activate
# 安装依赖
pip install -U pip
pip install PyQt5
pip install matplotlib # 可选

运行#

# 在项目根目录执行
python main.py

首次启动会自动设置应用字体与样式。Windows 下默认使用 Microsoft YaHei UI,并为 matplotlib 配置 CJK 字体。

基本用法#

  • 添加词条:在主界面录入「日语词条」「汉字写法」「假名读音」「中文释义」,可选择「单元」
    • 在“假名”框可输入罗马音,自动弹出平/片假名候选并写回
  • 复习:
    • 点击开始复习,可选择单元与是否包含未到期
    • 日→中:Space 展示释义后,用数字键评分(1=Again,2=Hard,3=Good,4=Easy)
    • 中→日:输入假名或汉字后“确认”;也可直接点“没记住”
  • 统计:菜单中打开统计对话框;默认以“安全模式”纯表格展示(避免 Qt5Agg 崩溃),如安装了 matplotlib 会显示图表
  • 单元总览:在列表中按单元查看词条的假名/汉字/罗马音/释义与重复次数

快捷键#

  • Space:展开/收起释义;判定完成后进入下一题
  • 数字键 1/2/3/4:日→中模式下评分
  • 回车:在中→日模式“确认”答案

设置项#

  • 包含未到期的词
  • 每次会话上限(0 表示不限)
  • 打开复习时自动打乱
  • 表格行高与操作列宽
  • 字号缩放
  • 本地词典文件路径(CSV)
  • 记住“中文释义→候选”的偏好

所有设置存入应用配置,并在启动时动态应用,包括表格行高、列宽、字号缩放与本地词典热切换。

本地词典(可选)#

  • 在设置中选择本地 CSV 文件路径
  • 建议列格式:term,kana,meaning
    • 例如:食べる,たべる,吃
  • 用途
    • 中→日判定兜底:当用户输入汉字但标准答案是“假名”时,按词典中的“该汉字的假名”与标准假名比对
    • 输入联想与补全
term,kana,meaning
食べる,たべる,
今日,きょう,今天

学习统计#

  • 总览:总词条数、单元 Top10、最近新增趋势
  • 复习活动:每日复习量、每日正确率
  • 记忆质量:EF 分布、重复次数分布
  • 无 matplotlib 时以表格形式展示;装有 matplotlib 时显示柱状/折线/直方图,并应用 CJK 字体

复习与排程#

  • 记忆算法:基于 SM-2,保存 interval/repetition/ef/last_review
  • 事件记录:每次判定写入 reviews 表,包含日期、模式与质量分
  • 模式与组卷:按队列大小约 70% 日→中、30% 中→日,随机混排
  • 队列来源:优先到期卡片;若无到期则回退到全部;按单元过滤

字体与显示#

  • 项目内置 ZenMaruGothic-Medium.ttfHanalei-Regular.ttf
  • 应用默认字体:
    • Windows:Microsoft YaHei UI
    • 其它平台:Zen Maru Gothic
  • Hanalei 插入 CJK 回退链,避免缺字
  • matplotlib 统一设置 font.sans\-serif,关闭负号乱码

数据库#

  • 使用 SQLite,核心表:
    • cards:词条、单位、EF、重复次数、到期时间、创建时间等
    • reviews:复习时间、模式(0=日→中/1=中→日)、质量分
  • 应用在复习与编辑时更新 cards,每次判定追加 reviews

故障排除#

  • 统计图表崩溃(Qt5Agg):应用已默认以“安全模式”打开统计(纯表格),或安装 matplotlib 并确保图形后端可用
  • 字体缺字:确认项目根目录存在 ZenMaruGothic-Medium.ttf,Windows 下确保系统有 Microsoft YaHei UI
  • 词典无效:检查 CSV 列顺序为 term,kana,meaning,且在设置中选择了正确路径

开发与运行于#

  • IDE:PyCharm 2024.3.1.1
  • 操作系统:Windows
  • 启动入口:main.py

软件打包#

安装 PyInstaller#

pip install pyinstaller

进入脚本目录,执行打包命令#

  • 打包最新版本:

    python build_vocab.py
  • 指定版本前缀:

    python build_vocab.py -v 2.6
  • 显示控制台:

    python build_vocab.py --console
  • 使用 onedir 模式:

    python build_vocab.py --onedir

版本历史#

  • 1.0
    • v1.0.0:基础版本(单元录入、学习与复习)
  • 2.0:
    • v2.0.0:优化前端展示与复习逻辑
    • v2.1.0:录入新增“汉字写法/罗马音”,接入本地词库自动补全
    • v2.2.0:新增导出 CSV 功能
    • v2.3.0:可以选中多个单元合并复习,修复部分环境下导出 CSV 文件名和内容错误问题
    • v2.4.0:更改 GUI 界面 ID 显示逻辑,优化 GUI 界面显示
      • v2.4.1:修复部分环境下更改词条导致程序崩溃问题
      • v2.4.2:优化 Bug 与大量潜在问题,为相对稳定版本
      • v2.4.3:更改单元单词总览界面和添加到题库界面样式显示逻辑和样式
    • v2.5.0:添加单元单词总览界面,增加模糊查询。可以对选中单元单词打乱顺序,和按照特定规则排序
      • v2.5.1:修复导入单词后的单词页面重置问题
    • v2.6.0 优化 GUI 界面,增加删除单元功能,修复新建单元后不会立即显示的 Bug
      • 2.6.1 新增通过汉语释义自动补全假名、汉字写法和罗马音的功能
      • 2.6.2 修复操作列点击后无法响应的 Bug
      • 2.6.3 修复空格键无法继续复习的 Bug,对于复习页面的四个按钮新增快捷键支持
  • v3.0
    • v3.0.0 新增数据层升级 & 迁移,复习引擎重构,优化表格与性能(Model/View 化),增加自动补全和词典(更“聪明”的输入),增加导入/导出 & 备份/恢复,设置中心 & 个性化,新增统计与可视化
      • v3.0.1 删除 Windows 标题栏无用的 “What’s This” 模式
    • v3.1.0 新增单元重命名功能,修复未选单元也提示“录入成功”的 Bug
      • v3.1.1 修复补全功能的部分 Bug,现在只有按下 Enter 键时才会触发补全
    • v3.2.0 修复单元无法重命名问题,新增左侧拖拽单元改变顺序功能,优化单词自动补全逻辑,修复候选框无法主动退出的问题
      • v3.2.1 修复“英语外来语”在回填时被错当成“假名=英文”的典型错位问题
      • v3.2.2 删除右侧的单元选择下拉框,优化单元选择逻辑,现在与左侧进行绑定,修复学习统计的统计错误 Bug,为相对稳定版本
    • v3.3.0 内置简单的日语输入法,可以通过模拟键盘输入自动补全假名
      • v3.3.1 删除录入成功的提示框
      • v3.3.2 新增平片假名学习界面
      • v3.3.3 更改全局字体
      • v3.3.4 学习界面新增“五十音图”,为相对稳定版本

欢迎根据需要扩展单元管理、导入导出、更多统计类型或复习策略。如果有实际需要,可以在本界面下留言,或者去Github题issue或pr!

基于多邻国的单元单词背诵软件
https://lansganbs.cn/posts/项目开发/基于多邻国的单元单词背诵软件/
作者
LANSGANBS
发布于
2025-11-03
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时