Skip to content

Finds the optimal input method encoding for Chinese text using dynamic programming. | 基于动态规划,为中文文本计算最优输入法编码。

License

Notifications You must be signed in to change notification settings

GarthTB/InputEncoderDP

Repository files navigation

Input Encoder DP | 输入法编码动态规划计算器

Input Encoder DP 是一个基于字典树和动态规划的命令行工具,用于在给定 输入法编码方案下,为任意中文文本计算总按键开销最小的完整编码路径。 适用于拼音、五笔、仓颉、郑码等输入法的编码优化分析。

框架 .NET 10.0 语言 C# 14.0 许可 MIT 平台 Windows x64 版本 1.1.0 说明 README.md

✨ 特性

  • 🚀 高效:时间复杂度接近线性,1秒可计算100万字
  • 📊 全能:附带编码分析,直接获取码长等30+指标
  • 自动:通过TOML文件配置所有参数,无交互
  • 📦 易用:AOT编译为原生win-x64可执行文件,解压即用

📥 安装与使用

系统要求

  • 操作系统:Windows 10 或更高版本
  • 架构:x64

注意:AOT编译,无需安装.NET运行时

使用步骤

  1. 下载 最新版本包 并解压
  2. 按需修改目录下的 Config.toml
  3. 运行程序 InputEncoderDP.exe
    • 推荐方式:在控制台中运行,以查看输出日志
    • 简便方式:直接运行,执行完毕后自动退出

📋 配置文件

程序的所有行为均由 Config.toml 文件控制。 以下是示例配置及详细说明(随包附带):

# 待编码的文本路径
in_path = "TestText.txt"

# 编码及其开销的连接策略:
# SpacePunct - 空格或标点
# NoGap - 无间隔
# Jd6 - 键道6顶功
strat = "SpacePunct"

# 编码结果及其分析报告输出路径(存在则覆写)
out_path = "TestTextCodeReport.txt"

# 键对-开销(当量)路径
costs_path = "Cfg/Costs.tsv"

# 词库(RIME格式)路径
dict_path = "Cfg/Method.dict.yaml"

# 键盘布局配置(注意顺序)
[layout]

# 各行键值
rows = [
    "1234567890-=", # 数字
    "qwertyuiop[]", # 上排
    "asdfghjkl;'", # 中排
    "zxcvbnm,./", # 下排
    " " # 空格
]

# 各指键值
fingers = [
    "4rfv5tgb", # 左食指
    "3edc", # 左中指
    "2wsx", # 左无名指
    "1qaz", # 左小指
    "6yhn7ujm", # 右食指
    "8ik,", # 右中指
    "9ol.", # 右无名指
    "0p;/-['=]", # 右小指
    " " # 拇指
]

🛠 技术栈

  • 框架:.NET 10.0
  • 语言:C# 14.0
  • 依赖Tomlyn

📜 开源信息

📝 更新日志

v1.1.0 (20251106)

  • 修复:各种编码指标的统计方法
  • 优化:提升编码速度
  • 调整:配置文件

v1.0.0 (20251030)

  • 首个发布!