【输入方案】「万象拼音」一个为rime生态全方位构建的基础底座项目,方案、词库、语法模型、配套工具链

:puzzle_piece: 推荐项目

Rime 万象拼音生态体系(基础版、增强版、语法模型)


:brain: 应用平台

  • Windows
  • macOS
  • Linux
  • Android
  • iOS
  • HarmonyOS

:glowing_star: 项目简介/推荐理由

GitHub 用户 amzxyz 打造的“万象拼音”项目是一个全面构建 Rime 输入生态的系列方案,涵盖:

  • 拼音输入方案(基础版 / 增强版)rime类大厂输入方案,完美的整句输入体验,某种程度更是超越
  • 自定义语言模型(语法模型 / 预测模型),Rime 唯一200M规模语法模型,覆盖面广,开源炼制方法,持续更新
  • 高精度多音字处理与整句输入支持,在这里还能找到pypinyin最实用数据库和词库注音脚本工具链,全部多音字参与词汇人工持续修订,拥有完整的经语料炼化的向量词库,并为之区分和加注多音字读音,数据量是开源之最
  • 项目融合 AI 精选词库与 32GB 多领域语料训练的模型,极大提升输入效率与准确性。

:package: 项目组成

1. rime_wanxiang_pro(增强版)

功能亮点:

  • 支持多种双拼(自然码、小鹤、微软等)+ 8种辅助码自由组合输入(自然码、墨奇、小鹤、简单鹤、汉心、五笔、虎码、仓颉)
  • 编码方式灵活:全拼双拼+声调 + 辅助码,支持句中任意组合输入
  • 超级注释、自定义排序、快捷键词频调整、超级tips、快符等细节功能扩展
  • 首创带声调preedit实时转换
  • 多平台全适配

适用人群:

双拼进阶用户、辅助码爱好者、多平台重度输入用户


2. rime_wanxiang(基础版)

功能亮点:

  • 支持全拼/双拼,声调辅助筛选
  • 提供拼音反查、笔画造词、编码辅助显示等基础增强
  • 类大厂整句输入效果优异
  • 多平台全适配

适用人群:

Rime 新手,全拼/双拼用户,多平台输入用户

3. RIME-LMDG(语法模型)

功能亮点:

  • 基于 32GB 新闻/社交/小说等语料训练多阶 n-gram 模型
  • 精准多音字 (基于词 + 拼音双向权重)万象向量词库
  • 提供语料清洗脚本、语法模型构建工具链
  • 提供万象修订的pypinyin精准拼音标注数据库
  • 提供匹配万象词库辅助码、拼音标注工具链
  • 提供基于万象词库基础底座扩展转换五笔、虎码等各式编码迁移工具链
  • 每日自动词库构建更新包

适用人群:

Rime 高阶用户,追求极致整句输入效果者,输入方案开发者


:link: 项目地址


:test_tube: 使用建议

  • 新手建议先使用基础版,体验简洁输入逻辑。
  • 熟悉 Rime 配置后,推荐切换到增强版,提升输入精度与效率。

效果大赏

39432e706e67.png

功能一览

万象输入方案.png

4 个赞

缘起:当开源输入法成为技术围城

多年以前,在Linux桌面环境中使用输入法,我终于被输入法的体验彻底激怒——某创产业让我在输入法上面第一次看到了“已授权”的字样,然而体验之差无法形容。后来我发现了Fcitx+rime这一绝配的组合,我开始进入了一个新的世界,我记得我刚开始学习的是如何让shift按键切换英文的同时上屏之前的编码,我也忘记了当初使用的什么方案,因为那是AUR安装的,属于用户打包的。由于还是不满意体验,后来我逐步加入了一些社群,我开始逐步认识和见识了一些rime方案上面定制的东西,大致上有这么几类,第一类:字词方案,算码方案追求速度和精确性,重点在于编码的合理性,重码的减少和固定搭配。第二类是小众的组合搭配个人型创意方案,除了作者自己很难有更多的受众。第三类就是类传统词句输入型方案,这是更加接近大厂的输入习惯的方案,我找到一个星星最多的方案,但当我使用的时候我的浅意识,怎么都是乱得,人们每天都在这么使用吗?当然后来更加理解和明白这样的项目付出在开源输入法里面是尤为珍贵的,应该得到致敬!后来我又用回了某大厂输入法,很长一段时间没有关注。直到我认识了一位朋友,他创造了墨奇音形,是一种新的拆分方法双拼辅助码,我开始又对此燃起了兴趣,于是我开始去阅读很多文档,兴趣是最好的老师,在了解这个圈子后,了解这背后的软件和方案技术构成后。我发现更多的人在不断的尝试更换更加贴合自己需求的方案,然而都大同小异,都停留在方案配置层面,没有改变输入法“输入”这一本质。于是我在想我能不能改变这一切,促使我开启了一场持续半年之久的维护之路。

破冰:直面中文输入的三大痛点

1. 词库的「石器时代」

  • 数据陈旧:很多词库仍停留在2005年《新华词典》水平,缺少构成输入法的特征词汇,维护也仅仅是因为几个词进行一次PR,我当时就在想一年能加几个词?
  • 词频混乱:与大厂相比很多都是词频混乱的,背离了直觉第一候选,背离了常用的自然语义结构,更加不能组合成好的短语
  • 格式割裂:全拼、双拼、自然码方案各自为战,用户被迫成为「配置工程师」

2. 多音字的「无底洞」

处理「重庆银行行长一行乐呵呵听着音乐走来」这种句子时,需要同时解决:

  • 地名「重(chóng)庆」的特殊读音
  • 「行(háng)长」和「银(háng)行」与 「一(yì)行(xíng)」的多音字差异
  • 「乐(lè)呵呵」与「音乐(yuè)」的语境区分

3. 生态的「巴别塔困境」

  • 用户配置需理解YAML语法、正则表达式、Lua脚本
  • 不同方案间的兼容性问题频发
  • 缺乏统一的质量标准,常见「修复A功能破坏B特性」的恶性循环

攻坚:重新构建现代词库体系

阶段一:语料采集与清洗(0-50天)

  • 全网捕捞:用收集的32GB语料,涵盖外卖评价、法律文书、网络文学、新闻、社区论坛对话、QA客服对话等真实语料。丰富的语料涵盖了自然语义特征的量和类型得到了保证
  • 数据淬火:租用64核云服务器运行结巴分词,经历多次内存溢出后掌握分段处理技巧,后又熟悉HanLP的使用,在有词典、无词典各种方式尝试之后提取大量关键词特征词汇补充词库,这过程我写了不计其数的py脚本,如果在让我来一次我不一定愿意,因为作为一个非码农折真的很痛苦,我不懂成体系的库的开发和重复调用逻辑,而是针对某一具体的事项进行,用过了几天后就丢掉了。。。

阶段二:多音字攻坚战(50-100天)

  • 人工标注:每天午休修订2个多音字,累计处理1372个高频多音词
  • 场景建模:为「行」字建立12种使用场景的正则匹配规则
  • 交叉校验:结合汉典、百度汉语、pypinyin库构建三层校验体系

阶段三:词库结构化(100-120天)

  • 理清楚rime的工作逻辑之后,我称2字词汇为基础词汇,这种词汇我会选择一个高频常用词汇放在第一位,与大多数普通用户习惯的输入哪个多了哪个在前不同,我们希望固定位置,核心原因是离线输入由高频2+2结构组成的词汇量是及其庞大的:诸如人工智能、工作机会,这些不能再熟悉的词汇,如果这些词汇都列举到词库中,再加上首选和次选之后的词汇组成的词这将带来庞大的词库,在类大厂输入模式中,如果想要输入一个句子必然要有对应的分词结构存在,这是没有办法的事情,所以在我制作万象向量词库的时候我通过拼音对照算法,将这些第一高频的词汇移除掉来缩减词库;

  • 解决了首选之间的组合,那么其他的组合就需要分词+ngram工具将高低频组合的2+2组合获取到,这些就只能穷举出来,越完善体验越好。

词长分层:

词库类型 文件名称 描述
字表 chars.dict 包含CJK字库基础区所有具有读音的字,不计多音43324字
基础词库 base.dict 包含2-3字词组
关联词库 correlation.dict 包含4字词组,不含由基础词库中同音最高频组合成的词汇
联想词库 associational.dict 包含5字以上词组,当输入四个字之后形成联想候选
兼容词库 compatible.dict 包含多音字词组,用于兼容词组的多种读音场景
错音错字 corrections.dict 错音错字词组 ,用于兼容经常使用但是实际上在字、音是错的场景
全字表 full.dict 包含CJK所有有字,汉字大全

创新:炼制一个语法模型

词库是一个输入法的基础,花了大量时间修改读音校对多音字,这样输入法就能区分出完整读音,词库也是rime基本分词逻辑,为后续模型可以高命中率打下基础

一直以来,rime模型插件在,但是模型少有人制作,因为这事儿不简单,那么就由我来补齐这一短板。

学习ngram知识

  • 用什么工具:查阅大量资料后kenlm进入我的视野,他是效率非常高的一款ngram模型训练工具,在枝剪系数、内存占用等方面做得非常好,这就意味着可以跑在我的电脑里
  • 是否去停用词:在调研自然语义模型训练这个领域的时候常常见到去停用词的这样的字眼,中科大、清华、百度都有开源相关表,主要以符号、敏感词汇、及其高频的口水词组成,我第一次也这么做了,后来我发现对于输入法不能这样去做,输入法就是要口水词来者不拒,还要将分词错位开才能获得好的输入体验,例如:“了一个”,我们常规的认知“了”应该在后面。此外也不能去符号,去掉了符号就会让语料对话场景或者包含数字年月日的这类场景发生异常的连续,这会被计算到连续特征里面,或者说一开始就用严格的脚本处理掉一些场景,但数据量旁大你并不能掌握所有情况,不如直接分词、再次进入ngram工具进行炼化,获得最终结果的时候,再去通过脚本清洗这个文件就简单多了,正则处理只要包含非汉字的行一律过滤掉。

分词工具与结果

  • 结巴:比较在行的是词典分词,收集本来就比较优质的分词词典对语料进行分词,特点是效果比较随机,如:“古印度和印度”这样的场景有时候连续了有时候分开了;
  • HanLP:支持基于模型的无词典分词,极其慢,算法分词有粗颗粒度和细颗粒度,对于输入法采用粗颗粒度比较好,比如某某有限公司,某个特别长的外国人名,如果采用细颗粒度就会打散其实是干扰了我们想要的高频词汇,粗颗粒度在进入ngram工具的时候自然而然就会被支剪掉
  • 混合:单一的分词效果永远是受限于工具本身,我将结巴分词与HanLP分词两个32G文件混合起来,我其实不清楚是否中和了那些不好的地方,我的思维让我这么去做,理论依据没有。

数据筛选

一个好的输入法语法模型,需要具备类似叠瓦效应,例如: 双积分 和 双击分号 ,更长的语句在同音重叠的时候一定要压着更短的,在权重要高于更短的,不然可能会被带偏。因此我利用脚本,将模型中获取到的词汇进行了3-4重叠,4-5重叠,5-6重叠的拼音重叠验证,最终留下这些有效的词汇也能缩减模型的尺寸,但是大千世界,我真的没有在语料中获取到“双击分号”这个词汇,这也是最后决定对模型和词库进行LTS手动更新,这是不可避免的。于是rime万象语法模型发布了!

成果:构建开源输入法新生态

方案:

在发布了语法模型后收获了大量的用户反馈,他们获得了正向的加成,可以优雅的输入整句,我很欣慰,但是这还不是最终解,因为很多人没有意识到词库词频的重要性,没有意识到词库不是胡乱堆砌的拿来加进去就能发挥作用的,我要给他们一个理由选择这个词库。因此我制作了两套方案,来降低实际的应用门槛。

  • 万象拼音基础版本:一个基于带声调的全拼词库,不携带辅助码,是对标大厂的一个方案,基于这个词库底座,可以通过rime拼写运算规则转换为全拼和任何双拼,由于携带声调还可以转换为“自然龙”这样的带声调的双拼方案,配合上面炼制的语言模型,在首选命中率和整句输入中都获得了良好的体验。同时配套开发了lua扩展插件,将声调显示在注释中、将声调显示在输入编码的位置(这带声调的连大厂都没有)、开发了快符插件可以通过引导符号加上a-z0-9对这些键位进行新的扩展,并集成了符号和词组分离的重复上屏功能,除此之外还有更多细节的能力。
  • 万象拼音增强版:是一个具有直接辅助码的方案,在输入的时候,可以自由灵活的决定在什么位置增加辅助:例如: vg ju>首选:证据 ,如果输入vg jup>首选: 整句,即完成了辅助筛选,项目支持8类辅助码都是主流,口号:让人人都能用上辅助码!为了掌握和学习辅助码我开发了超级注释lua,他能设定输入栏显示辅助编码的提示,其次超级注释也肩负起错音措字、反查等功能的显示,在这个插件的组织下能够灵活的展示不同条件下注释,相较于rime原本配置中单一的逻辑更加灵活,其余插件与基础版本类似不在一一赘述。

我将项目地址放到这里,更加详细的细节的细节欢迎考察:

其中:rime_wanxiang 为基础版本、rime_wanxiang_pro为增强版本、rime_LMDG为语法模型相关

在这篇自述发布的时候,我已经将模型数据量升级到200M,由DeepSeek满血版可以看出,数据量意味着效果,目前正在“消除幻觉”阶段,欢迎体验。

我们还联合了一些小伙伴持续修订读音,持续消除模型幻觉,在未来实现高质量体验让每个人都可以管理自己的用户信息,达到隐私与体验皆可拥有

结语:开源需要有人付出

这个用32G语料和200天深夜堆砌的项目,给予我最深刻的启示是:开源技术的真正价值,不在于代码的精妙,而在于能否解决真实世界的痛点。当看到用户自发整理「法律术语专项词库」「医学缩写对照表」时,我意识到自己搭建的不仅是个输入方案,更是一个语言共识的共创平台。

在AI大模型席卷一切的今天,这个「笨功夫」项目的存在,就像数字时代的工匠作坊——它或许没有Transformer的惊艳,但每个词条都经过真实语境的淬炼;它或许缺乏商业产品的华丽,但每个功能都源自真实用户的呐喊。这或许正是开源精神的真谛:让技术从极客的玩具,变成普通人守护语言文明的利器。

3 个赞

从学双拼开始,已经用了一个多月了,真的很不错,基本可以替代大厂方案了。除了没有云联想,这部分也用形码辅助码和声调辅助码解决了,可以快速筛选。

只能说, 在可以商业化获取价值, 就会有人挖空心思商业化的时代; 我们需要的不是为商业化辩护, 更不是对商业化的指责, 而开源精神的传播普及;

但是, 在巨头拥抱开源的时代, 开源精神大概已经被事实上窃取了;(当然这是另外的话题)

使用体验:使用一天,目前来看,比使用过的雾霜、白霜之类的输入法更加的智能,使用了两个小时,直接替换掉原来的【微软拼音】+【ENG英文】的输入输入法方案,目前直接把英文输入法和微软拼音豆删掉了,因为根本就不需要了,一套方案搞定了。

个人评价:全拼方案可以齐平微软拼音、Sogou输入法,不会出现以前雾霜、白霜之类的老是打不上一些常用词的情况,更不会突然出现繁体字之类的问题。

亮点功能:
1.Ctrl+J/K可以调整词频,当然可能会碰到点bug,这个的话就需要手动加Git进行管理了;
2.原来是Ctrl+Space切换中英文(自动上屏),Win+Space切换输入法(自动上屏),使用了这个之后,有时候敲代码中英混输时需要频繁切中英文,现在的话如果是打英文的时候发现是中文状态,Entry直接上屏即可。对于驼峰命名的场景来说,直接按住Shift键后输入即可,只要第一个输入的字母是大写,就开始英文状态,非常适合大小驼峰的场景
3.相比于系统自带,输入的状态栏的字体大小是可以调整的,这点的话比自带的系统输入好很多;

不过代码本身的质量也很重要,一旦更多人参与,本身代码的质量和可维护性就变得很重要了。
如果不利于他人参加维护,仓库所有者放弃维护,可能整个项目就会半死不活了。
看到fork比源仓库还更多stars和contributors表很长的时候,我觉得是开源协作最大的意义了。

1 个赞

之前有人推荐过这个项目的语法模型,无缝加到正在用的方案里了,倒是对这个项目的输入方案没仔细研究,这次看了楼主的介绍,想试一下。
————
目前使用下来感觉还可以,主要的槽点是把weasel.yaml给覆盖了导致我喜欢的那个主题没了……

看起来不准备支持 plum 直接安装了?我有点懒,不太想手动配 custom_phrase.txt 和 installtion.yml 以外的东西了:rofl:暂时接着用 oh-my-rime 的十全大补包得了(

不打算,没人会用的东西支持他干嘛

泪目了,我真在用 plum 安装、更新 oh-my-rime,直接开除人籍( :zany_face:

所以想要用这份方案并保持更新的人还得订阅 release、定期下载压缩包然后解压覆盖?或者如果有能力的话每人为自己的电脑写一份脚本?

有现成完美的脚本,万象的生态不缺造路者,他们会带你更方便使用好万象

那很好了,方便有兴趣的用户使用,虽然我个人觉得和 README 里不造轮子的说法略有冲突(大误

词序问题主要是由于RIME自身的缺陷导致(作者本人),有些东西支持的程度不是特别好就是了,目前打字会出现奇奇怪怪的词序,或者词序没法调整(自行修改seq_words.lua解决了,很抽象,但是没法,但是比其他输入法的无解bug好自适应),除了这个外没什么大问题。

这一个月一直在用这个词库,很好使,点赞

哈哈,网友造这个拦不住,用了就知道了,全程针对万象定制的各种中文选择提示,直到下载更新并部署完成,我认为友好性比较高的

1 个赞

我公开回应一下你的这个问题,我认为更多的是你没有用明白,这个工具调序只是辅助性的,你使用的基础版本本来就是调频的,我们固定频率首选永远是最好的那个,但是基础版本的调频就和大厂输入法一样,你要保证输入的时候不要乱上屏造出不想要的词汇跑到前面,也不用为了测试而测试,在rime类大厂领域没有第二种可能,不用你测试好坏。逐步认识到自己适合固定频率,还是适合调频,想清楚了,不要把好几个点弄在一起,他们都是不相干的元素,容易让自己混乱。

其实我本意不是说rime有缺陷,这个转述容易误导,调整顺序这个Lua本质上依赖按键事件阶段捕获快捷键记录偏移动作量,滤镜阶段解码排序,问题出在这个工作逻辑上面,一段候选你想让某一个词靠前这个很容易获得,而不能实现自由灵动的前后更替那种感觉的自由排序,也就是说这个不是给你玩的,不是让你在这随意看见哪个左右移动畅通无阻,

因为偏移量逻辑最终会遇到,1+3=4 , 2+2 也等于4 那么最终都要占用4的位置就需要处理冲突,如果多个叠加最终处理后的冲突结果可能效果一样,导致视觉上感观他是不动的。

所以正确的手动排序用法:万象本来就很好的顺序了,你只需要在此基础前置你想要的两三个词,不去做过多多余的动作,如果是置顶还可以配合custom_phrase.txt来实现,灵活运用

ps:想要实现自由灵动的排序就可能需要将1-3字所有的词汇储存到一个db里面,滤镜阶段遍历,这个无疑会带来性能的损失,效果是及其不好的,因此这件事情可能rime本体来实现,类似用户词的实现逻辑,还要搞一个移动时高亮跟随候选词,而不是现在刷新就会回到原点。

有其他大佬写的一键更新脚本

1 个赞

怎么挂载自己词库呢?之前用雾凇拼音版本存下来的rime_ice.userdb

其实吧,这个项目或者说类似的项目最大的问题在于:作者费心费力,推荐详细介绍,对于普通的用户,或者说那些一大堆整天用搜狗之类成品的,或者不爱折腾的人来说,一头雾水!
对于普通用户,要不就是整合包,安装过程中有3种选项,决定安装哪个,装完就能用!
要不直接罗列安装步骤:先安装哪个输入法,再安装哪个词库,如何挂载等等。。。
否则,这样写了也起不到推广的作用!

2 个赞

是的,推广就是应该如此。

1 个赞