【免费下载链接】Xime
我的自用安卓输入法,基于Rime 构建,部分功能由本人设计的本地AI模型驱动,支持五笔/拼音/自定义方案。
Xime 是一款基于 Rime 构建的安卓输入法,它的"越用越准"并非营销话术,而是两条记忆机制共同作用的结果:Rime 用户词典在打字时自动积累词频,N-gram 融合预测则把你最近的输入习惯叠加到本地 AI 联想模型之上。本文带你快速看懂这套智能预测系统的工作原理。
一、Xime 输入法如何让键盘"记住你"
Xime 的候选栏里,除了拼音/五笔打出来的词,还有"没打出来却恰好是你想说的"联想词。这部分能力来自两套互相配合的数据:
| 记忆层 | 存什么 | 数据来源 |
|---|---|---|
Rime 用户词典(.userdb) | 每个词的使用频率 | 每次上屏自动累计 |
| N-gram 用户缓存 | 词与词的搭配关系(bigram / trigram) | 每次提交输入自动统计 |
前者解决"这个词我要得多",后者解决"这个词后面我常接什么"。两者共同喂给融合算法,再和本地 ONNX 联想模型的结果加权合并。
二、Rime 用户词典:打字时自动积累词频
Rime 引擎为每本词典生成一个.userdb(leveldb 数据库),你每选中一个词,它对应的频率就加一。下次同音词竞争时,高频词自动排到前面——这就是"越用越准"最基础的部分。
Xime 在 UserDictIoManager.kt 中对这一机制做了完整封装:
- 读取:librime 没有"读词条"的 C 接口,Xime 通过 JNI 用内部 DbSource 遍历,转成文本码表格式(
词<TAB>码<TAB>频率); - 导出/导入/增删:共用引擎自带的同一条通道,生成的
.txt码表与电脑端 Rime 完全互通; - 自造词:还支持通过 PersonalDictManager.kt 维护
custom_phrase自定义词库,支持按方案隔离词库文件。
备份时 Xime 还会先触发一次引擎 sync,把 userdb 导出为*.userdb.txt文本快照再上传,避免 leveldb 文件级覆盖的一致性风险(见 BackupManager.kt)。
三、N-gram 用户缓存:统计你的"搭配习惯"
词频只回答"哪个词常用",而"常用搭配"由 N-gram 缓存负责。核心逻辑在 UserNgramCache.kt:
- 分词:把提交的文本按字符切分(保留字母数字与中文标点);
- 滑窗统计:
windowed(2)抽取二元组(bigram),windowed(3)抽取三元组(trigram),分别插入两棵前缀树; - 持久化:全部统计落盘到
user_ngram_cache.json,应用重启后无缝恢复。
频率计算是经典的条件概率:在 NgramTrie.kt 中,frequency = count / prefixCount,即"看到前缀 X 之后,接上 Y 的概率"。比如你常写"你好 世界",那么输入"你好"后,"世界"的 bigram 得分会显著高于其他词。
缓存有明确上限(历史上限 100 条、总量 1000 条级别),保证内存与 IO 开销可控,不会随着使用无限膨胀。
四、融合算法:模型分与用户分如何加权
真正让预测"贴脸"的是融合环节。AssociationManager.kt 的predict流程是:本地 ONNX 联想模型先产出候选 → NgramFusionEngine.kt 与用户 N-gram 统计融合重排。
权重设计很讲究:
- 默认:模型分占 λ=0.7,用户分占 0.3——模型见多识广,做主;
- 用户命中:如果候选词同时出现在你的 N-gram 缓存里,λ 降到 0.3,即你的习惯占 70%。这就是"你常打的词会顶到最前"的直接原因;
- 用户独有词:模型没见过、但你反复搭配过的词,会直接以用户分插入结果,不会被模型候选淹没;
- 分数归一化:
normalizeModelScore把模型原始分(正分除以 100、负分走 exp 衰减)压到 0~1,与 N-gram 概率同量纲比较。
五、工程细节:为什么联想既不卡也不闪
- 独立推理进程:ONNX 模型(
model_int8_dynamic.onnx,int8 量化)运行在:inference进程中,通过 IPC 调用(OnnxAssociationEngine.kt),模型加载慢、进程被系统回收都不会卡住键盘 UI; - 预热:初始化后立刻发一次轻量预测"热身",避免第一下点击联想时的冷启动延迟;
- 防闪动代际号:PredictionManager.kt 为每次预测打 epoch 标记,退格/清空后旧结果直接丢弃,候选栏不会"一闪一闪";
- 上下文窗口:只保留最近 25 个上屏字符做上下文,每次最多返回 20 个联想词,兼顾准确性与速度。
六、如何开启与管理智能预测
- 开启开关:在设置中找到"智能预测/智能联想"入口(SmartPredictionSettingsScreen.kt),打开开关并选择联想模型规格(支持 small/base 多版本切换);
- 管理词库:在设置中可查看、导出、导入各
.userdb用户词典,换机后导入即可还原"肌肉记忆"; - 自定义词:通过 custom_phrase.txt 相关功能补充生僻词与专业术语。
💡 使用建议:新装 Xime 的前一两天是"冷启动期",多打几段真实内容,bigram/trigram 统计和 userdb 词频积累起来后,联想命中率会有明显体感提升——这正是"越用越准"的完整闭环。
Xime 的这套组合(Rime 用户词典 + 本地 N-gram 统计 + 本地 AI 模型融合)全部在设备端完成,不上传任何输入内容,既是准确率的来源,也是隐私的底线。更多功能介绍可参考 README.zh-CN.md。
【免费下载链接】Xime
我的自用安卓输入法,基于Rime 构建,部分功能由本人设计的本地AI模型驱动,支持五笔/拼音/自定义方案。
相关推荐
vue-draggable-resizable-gorkys核心功能解析:冲突检测与元素吸附实战
vue draggable resizable gorkys核心功能解析:冲突检测与元素吸附实战 vue draggable resizable gorkys是
前端UI组件为什么你的Windows越用越卡?三步告别卡顿烦恼
为什么你的Windows越用越卡?三步告别卡顿烦恼 还在为电脑开机慢、软件响应迟钝而烦恼吗?每天面对卡顿的系统,不仅影响工作效率,更让人心情烦躁。其实,Wind
操作系统隐私合规终极指南:为什么你的npm包越来越臃肿?depcheck来拯救你的项目依赖管理
终极指南:为什么你的npm包越来越臃肿?depcheck来拯救你的项目依赖管理 你是否曾发现自己的JavaScript项目越来越臃肿, node_modules
开发工具静态分析代码质量
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考