panli ef3df73166 refactor: 三层架构重构 + 配置文件 + 项目目录整理
清洗管线重构为严格三层架构:
- tango_analyser.py(底层:单词分析)
- task_processor.py(中层:文件 I/O、桶管理)
- workflow.py(顶层:状态机、任务推进)
- 移除旧的 batch_processor.py

新增配置文件系统:
- config.py:TOML 配置,相对路径相对配置文件目录解析
- 查找优先级 --config > cwd > 项目根 > ~ > 默认值
- count=None 语义为处理到文件末尾

项目目录整理:
- 根脚本归档到 scripts/analysis 与 scripts/legacy
- 文档归档到 docs/{design,history,analysis}
- 临时报告移到 reports/(已 gitignore)

文档质量:
- 新增 .markdownlint.json 与 scripts/mdlint.cmd
- 修复全部 14 个 md 文件的 markdownlint 警告

测试:74 passed(8 cleaner + 31 workflow + 6 tango + 15 validator + 14 config)
2026-08-19 19:40:02 +08:00

Japanese Vocabulary Cleaner

日语词表清理工具 — 半自动处理「汉字 + 假名 + 拼音」三段式词表。


项目简介

本项目用于清理和规范化日语词表数据,将原始格式转换为标准的三段式格式:

输入:日本人:にほんじん:
输出:日|本|人:に|ほん|じん:ri|ben|ren

核心功能:

  • 🔍 自动分割 — 汉字/假名智能对齐,管道符分割
  • 🔤 拼音生成 — 基于 pypinyin + 多音字规则
  • 🤖 智能分类 — 成功/失败/待审核自动分流
  • 📋 任务管理 — 批次隔离、状态机、断点续处理
  • ⚙️ 配置驱动 — TOML 配置文件,多项目友好

快速开始

安装

# 安装项目(开发模式)
pip install -e .

# 验证安装
jclean --help

创建第一个任务

# 1. 初始化配置文件(可选)
jclean init-config

# 2. 创建清理任务
jclean create my_task --source data/sources/xinbiaori_1.txt

# 3. 运行任务
jclean run my_task

# 4. 查看状态
jclean status my_task

# 5. 人工修正 review 文件后重跑
jclean run my_task --bucket pinyin

详细使用说明见 README_cleaner.md


项目结构

japanese/
├── src/pl_japanese/
│   ├── cleaner/              # 清理工具核心(三层架构)
│   │   ├── tango_analyser.py    # 底层:单词分析
│   │   ├── task_processor.py    # 中层:文件 I/O、桶管理
│   │   ├── workflow.py           # 顶层:状态机、任务推进
│   │   ├── cli.py                # 命令行接口
│   │   ├── config.py             # 配置文件管理
│   │   └── ...
│   ├── tango/                # Tango 数据模型(下游)
│   └── dict_utils.py         # 词典工具
│
├── tests/                    # 测试74 个)
│   ├── test_cleaner.py           # 底层单元测试
│   ├── test_cleaner_workflow.py  # 三层集成测试
│   ├── test_config.py            # 配置管理测试
│   └── ...
│
├── scripts/
│   ├── analysis/             # 未来要集成的分析工具
│   │   ├── analyze_phonetics.py  # 发音规律统计
│   │   └── validate_data.py      # 数据质量校验
│   └── legacy/               # 已废弃的旧脚本
│
├── data/
│   ├── db/                   # 权威库(最终成果)
│   │   ├── vocabulary.txt        # 清理完成的词表
│   │   └── skipped.txt           # 跳过的词条
│   └── sources/              # 原始数据源
│
├── tasks/                    # jclean 任务目录(每任务一个子目录)
│   └── my_task/
│       ├── task.json             # 任务元数据
│       ├── auto_done.txt         # 自动处理成功
│       ├── skip.txt              # 跳过(无汉字等)
│       └── review_*.txt          # 待人工确认
│
├── docs/                     # 项目文档
│   ├── design/                   # 设计文档
│   ├── history/                  # 历史记录
│   └── analysis/                 # 分析报告
│
├── reports/                  # 临时分析报告
├── jclean.toml               # jclean 配置文件
├── pyproject.toml            # 项目配置
└── README_cleaner.md         # jclean 用户文档

核心特性

三层架构

┌─────────────────────────────────────┐
│  CleanerWorkflow (顶层)              │  状态机、任务推进
│  - run() 统一入口                    │
│  - 状态转换CREATED → PROCESSING   │
│              → REVIEWING → READY    │
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│  TaskProcessor (中层)                │  文件 I/O、桶管理
│  - process_source()                 │  无状态更新
│  - reprocess_bucket()               │
│  - merge_to_authoritative()         │
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│  TangoAnalyser (底层)                │  单词级分析
│  - analyze(kanji, kana)             │  无文件/桶概念
│  - 返回 AnalysisResult              │
└─────────────────────────────────────┘

设计细节见 docs/design/WORKFLOW.md

智能分类

处理结果自动分流到 5 个桶:

桶名 说明 自动处理
auto_done.txt 成功:单音字、唯一分割
skip.txt 跳过:无汉字、纯假名
review_pinyin 多音字:已填最常见读音 ⚠️ 人工
review_split 分割失败:假名对齐失败 ⚠️ 人工
review_verb 动词形态:する/でした 结尾 ⚠️ 人工
review_special 特殊格式:片假名/符号/ ⚠️ 人工

配置文件驱动

# jclean.toml
[paths]
tasks_root = "tasks"
vocabulary = "data/db/vocabulary.txt"
skipped = "data/db/skipped.txt"

[defaults]
backup_before_merge = true
backup_dir = "data/backup"

[logging]
level = "INFO"

配置文件查找顺序:--config > 当前目录 > 项目根 > ~/.jclean.toml > 默认值

详细说明见 docs/design/CONFIG_FILE_DESIGN.md


测试

# 运行全部测试74 个)
pytest tests/ -v

# 按模块测试
pytest tests/test_config.py          # 配置管理
pytest tests/test_cleaner_workflow.py # 三层集成
pytest tests/test_cleaner.py          # 底层单元
pytest tests/test_validator.py        # 格式校验

文档

完整文档索引见 docs/README.md


开发

环境搭建

# 克隆项目
git clone <repo>
cd japanese

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 安装依赖(开发模式)
pip install -e .
pip install pytest

# 运行测试
pytest tests/

目录约定

  • src/ — 源代码src-layout
  • tests/ — 测试pytestpythonpath = ["src"]
  • tasks/ — jclean 任务工作目录git ignore
  • data/db/ — 权威库最终成果git 跟踪)
  • data/sources/ — 原始数据源git 跟踪)
  • docs/ — 项目文档
  • scripts/ — 工具脚本

版本历史

v0.3.0 (当前)

  • 配置文件系统TOML 格式,多项目支持)
  • 配置简化(移除不必要的默认值)
  • UTF-8 BOM 容错
  • 项目目录清理(脚本归档、文档整理)

v0.2.0

  • 三层架构重构(底层/中层/顶层职责分离)
  • 任务化管理(批次隔离、状态机)
  • CLI 简化(统一 jclean run 命令)
  • 73 个测试覆盖

v0.1.0

  • 🗑️ 单文件 500+ 行脚本(已废弃)
  • 🗑️ 全局变量、硬编码路径(已重构)

许可

(待添加)


联系

(待添加)

Description
???????? + jlearn ???????
Readme 2 MiB
Languages
Python 99.9%
Batchfile 0.1%