How amzxyz/rime-lmdg works
Purpose and Deliverables
This repository builds and maintains a Chinese Rime input-method foundation: tone-marked pinyin lexicons, normalized word frequencies, pronunciation metadata, and downloadable grammar-model artifacts. Its primary consumable data is the Simplified/Traditional Rime dictionaries under dicts/ and dicts_hant/, backed by comprehensive pinyin data in pinyin_data/.
Primary Entry Points
Batch-oriented Python scripts are the main operational interface:
• wanxiang-tools.py is the toolbox entry point for dictionary processing, pinyin refresh, auxiliary-code generation, short-code conversion, and user-dictionary work.
• 语法模型构建.py is the model-building pipeline entry point.
• run_core_tests.sh and run_core_tests.bat provide cross-platform core validation.
• rime-schema-compare/scripts/benchmark_sentences.py runs decoder-based comparative evaluation.
Lexicon Products and Data Boundary
Rime YAML dictionaries are versioned output/data assets, partitioned by purpose rather than generated at runtime:
• Core/common and association dictionaries: dicts/jichu.dict.yaml, dicts/lianxiang.dict.yaml, dicts/zi.dict.yaml
• Specialized vocabularies: dicts/diming.dict.yaml, dicts/yixue.dict.yaml, dicts/renming.dict.yaml
• Traditional counterparts: dicts_hant/jichu.dict.yaml, dicts_hant/zi.dict.yaml
The central semantic boundary is a word entry coupled to tone-marked full pinyin and frequency. Simplified and Traditional lexicon trees are separate deployment targets.
Corpus-to-Lexicon/Model Pipeline
The build flow is offline and file-based: ingest raw corpora, clean/parse text, segment it, annotate pinyin, derive statistics, then filter/rank dictionary entries and construct grammar-model inputs. Key pipeline stages are represented by:
• Corpus cleanup and parsing: TXT清洗.py, json语料解析.py, 维基中文语料解析.py
• Segmentation and scoring: 多线程分词.py, 滑动窗口验证给短语打分并清洗无用词条.py
• Frequency/model construction: 模型排序.py, 语法模型构建.py
Raw corpus scale and benchmark corpora are deliberately externalized from the main dictionaries; evaluation inputs live at rime-schema-compare/data/corpus/.
Pronunciation and Conversion Layer
The repository vendors a Python pinyin implementation and its curated data, enabling reproducible local annotation rather than relying on a network service:
• Pronunciation source data: pinyin_data/单字.dict.yaml, pinyin_data/词组.dict.yaml
• Pinyin engine: pypinyin/core.py, pypinyin/converter.py, pypinyin/phrases_dict.json
• Rime dictionary transforms: rime固定或用户词典刷新为带声调编码.py, rime固定或用户词典刷新为带辅助码编码.py
Supporting scripts bridge pinyin to input-schema encodings and synchronize user/Rime dictionaries: scripts/pinyin2aux.py, scripts/sync_user_dict.py, scripts/deploy_rime.py.
Rime Integration and Evaluation
The delivered dictionaries and grammar models are consumed by Rime-family runtimes (Weasel, Squirrel, or Fcitx5 with octagram support). The repository does not implement Rime itself; it interfaces with its decoder in the comparison subproject.
rime-schema-compare/ is a Python benchmark harness that invokes native librime, runs schemas against corpora, computes sentence/character metrics, and emits reports:
• Native boundary: rime-schema-compare/src/rime_schema_compare/call_librime.py, rime-schema-compare/lib/librime.1.16.1.dylib
• Decode/evaluation orchestration: rime-schema-compare/src/rime_schema_compare/rime_runner.py, rime-schema-compare/src/rime_schema_compare/metrics.py
• Report generation: rime-schema-compare/src/rime_schema_compare/reporting.py, rime-schema-compare/artifacts/benchmark_all_corpus_20260626T204334Z_report.txt
Distribution and Auxiliary Clients
GitHub Actions automate nightly releases and toolbox workflows through .github/workflows/nightly-release.yml and .github/workflows/wanxiang-tools.yml. An independent Android/Kotlin updater client exists in wanxiang-updater/, with app startup in wanxiang-updater/app/src/main/java/com/wanxiangupdater/MainActivity.kt; it is a release/update consumer, not part of the lexicon build pipeline.
Main entry points: rime固定或用户词典刷新为带声调编码.py Rime lexicon transforms · nightly-release.yml GitHub Actions releases · 模型排序.py Frequency ranking · core.py Vendored pinyin engine
Components 20
Offline build pipeline
File-based corpus and lexicon production.
- Raw corpora · Large source corpora remain outside dictionary trees.
- Corpus cleanup & parsing · Cleans text and parses JSON and Chinese Wikipedia corpora.
TXT清洗.py - Segmentation & phrase scoring · Segments corpus text and validates or scores phrases.
多线程分词.py - Frequency ranking · Normalizes and ranks lexical statistics.
模型排序.py - Curated pinyin data · Single-character and phrase pronunciation sources.
pinyin_data/单字.dict.yaml - Vendored pinyin engine · Locally annotates words with tone-marked pinyin.
pypinyin/core.py - Rime lexicon transforms · Refreshes tone-marked encodings and auxiliary codes.
rime固定或用户词典刷新为带声调编码.py - Grammar model builder · Constructs grammar-model inputs from ranked corpus data.
语法模型构建.py - Dictionary toolbox · Operational entry point for dictionary, pinyin, code, and user-dictionary tasks.
wanxiang-tools.py
Rime data products
Separate Simplified and Traditional deployment trees.
- Grammar-model artifacts · Downloadable artifacts for octagram-capable Rime runtimes.
- Simplified dictionaries · Core, association, character, and specialized vocabulary.
dicts/jichu.dict.yaml - Traditional dictionaries · Traditional deployment counterpart lexicons.
dicts_hant/jichu.dict.yaml - Rime-family runtime · Weasel, Squirrel, or Fcitx5 consumes deployed dictionaries and models.
Schema comparison
Decoder-based benchmark harness.
- Benchmark corpora · Externalized sentence inputs for schema comparisons.
- Schema benchmark runner · Runs schemas through the native decoder.
rime-schema-compare/src/rime_schema_compare/rime_runner.py - Native librime boundary · Python binding invokes the Rime decoder.
rime-schema-compare/src/rime_schema_compare/call_librime.py - Evaluation metrics · Computes sentence and character metrics.
rime-schema-compare/src/rime_schema_compare/metrics.py - Benchmark reports · Comparison results emitted as text reports.
rime-schema-compare/artifacts/benchmark_all_corpus_20260626T204334Z_report.txt
Distribution
- GitHub Actions releases · Automates nightly releases and toolbox workflows.
.github/workflows/nightly-release.yml - Android updater client · Independent release and update consumer.
wanxiang-updater/app/src/main/java/com/wanxiangupdater/MainActivity.kt
Connections 22
- Raw corpora → Corpus cleanup & parsing: ingest
- Corpus cleanup & parsing → Segmentation & phrase scoring: clean text
- Segmentation & phrase scoring → Frequency ranking: phrase statistics
- Curated pinyin data → Vendored pinyin engine: pronunciations
- Frequency ranking → Rime lexicon transforms: ranked entries
- Vendored pinyin engine → Rime lexicon transforms: tone-marked pinyin
- Rime lexicon transforms → Simplified dictionaries: write entries
- Rime lexicon transforms → Traditional dictionaries: write entries
- Frequency ranking → Grammar model builder: ranked corpus data
- Grammar model builder → Grammar-model artifacts: build
- Dictionary toolbox → Vendored pinyin engine: refresh pinyin
- Dictionary toolbox → Rime lexicon transforms: run transforms
- Simplified dictionaries → Rime-family runtime: deploy
- Traditional dictionaries → Rime-family runtime: deploy
- Grammar-model artifacts → Rime-family runtime: octagram input
- Benchmark corpora → Schema benchmark runner: sentences
- Schema benchmark runner → Native librime boundary: decode requests
- Native librime boundary → Evaluation metrics: decoder results
- Evaluation metrics → Benchmark reports: generate report
- GitHub Actions releases → Simplified dictionaries: nightly release
- GitHub Actions releases → Grammar-model artifacts: publish
- GitHub Actions releases → Android updater client: release updates