一个暴力计算文章最短码长的工具
- 依据词库,用带有限制的广度优先遍历,找出所有最短的完整编码并简单分析。
- 词库路径(rime格式yaml文件,每行格式为
词\t编码[\t优先级]
,#
号注释) - 文本路径
- 编码连接方法代号(1:无间隔,2:键道,0及默认:空格及标点隔开)
- 中间路径的最高数量(不是最终路径的数量,最终一定是最短路径。无效输入则默认为100。)
程序同目录中的config.txt为配置文件,用户可自定义。每行是一组无间隔、无序的码元。在分析时,程序会将每组码元依次识别为:
- 第1行-第8行:左小指、无名指、中指、食指,右食指、中指、无名指、小指
- 第9行-第12行:数字键、上排键、中排键、下排键
- 由于会完全遍历所有情况,需要的时间是指数级的。请勿将中间路径的最高数量设得超级高。
- 通过直接在编码后添加数字来选重,按照优先级和先来后到,与rime的规则一致。
- 分析报告中的偏倚程度为(左右手键数的差/左右手键数的和)的绝对值。
设文章有n字,限制数量为x,则:
- 创建n个列表,分别容纳从起点到每个字的所有编码。
- 遍历每个字。从该字的列表中,取出最短的x条编码。从词库找出以该字开始的、与文章匹配的词,并在词的末字的列表中,加入与最短路径连接后的所有编码。
- 遍历完成后,第n个列表中的最短编码就是整篇文章的最短编码。
- 改进:优化提示
- 新增:多项分析项目,可使用配置文件自定义
- 改进:并行化查找词典,提升性能
- 改进:不预先切片文本,文本长度不再影响速度
- 改进:空格分隔改为空格和标点分隔
- 修复键道规则
- 改善长文本编码性能
- 完善键道规则
- 改为流式计算,以避免卡顿并减少内存消耗
- 发布