代码全部公开
源码、词库和构建脚本都在仓库里。不放心的话,可以自己读一遍,或者干脆自己编译一份来用。
言泉是一个开源的 Windows 拼音输入法。没有广告,不捆绑软件, 也不会上传你的输入记录——词库、设置和学习数据都只存在本机。 代码全部公开,它做了什么,你随时可以查证。
代码、词库、构建脚本都在 GitHub 上,任何人都能查看,也能自己编译。
输入内容全部在本机处理,没有云端联想,也没有遥测上报。
安装时不带别的软件,不改浏览器首页,卸载后不留东西。
功能不求多,但每一项行为都摆在明处。
源码、词库和构建脚本都在仓库里。不放心的话,可以自己读一遍,或者干脆自己编译一份来用。
没有捆绑安装,没有弹窗和推送,也不会动你的浏览器和系统设置。它只做输入法该做的事。
所有处理都在本地完成,不联网也照常工作。你打过的字,只有你自己知道。
基于 TSF(文本服务框架)开发,同时支持 64 位和 32 位程序,在 Windows 10 和 11 上原生运行。候选窗口适配高分屏和多显示器,常用切换快捷键可以自行设置。
它会按输入习惯和已经上屏的前文调整候选顺序。v1.5.0 采用两阶段上下文重排,也能记住通过全拼、简拼或混合输入选出的组合词;学习数据始终留在本地,并可在设置中一键清空。
支持全拼、微软双拼、小鹤双拼、自然码双拼和搜狗双拼,统一使用简繁双词库、候选排序与用户学习数据。候选列表每页可设置显示 3 到 9 项。
现在的输入法功能越来越多,但很多人想要的其实很简单:
打字准一点,别弹广告,别偷偷传数据。
言泉就是照着这个想法做的。
同样的拼音可以拆出很多种结果:yanquan 是「言泉」,也可以是「眼圈」「烟圈」。 句子越长,可能的组合越多,引擎要在几十条路径里挑出你想说的那条。 v1.1.0 用语料训练了一个本地统计语言模型,专门帮长句挑路——不只看单个词的词频, 还看词与词、字与字之间的接续习惯。v1.2.0 进一步扩展字符语言模型,并让模型更早参与 长句路径保留和完整候选排序。v1.3.0 又加入首个可部署的神经残差重排器:先由原有引擎 找出完整候选,再用微型神经网络做一次谨慎复核。v1.4.0 将这套离线训练能力扩展到短词; v1.5.0 又为长句和短词上下文排序加入独立的残差复核阶段,只在新候选优势足够明确时调整顺序。 详细改动见v1.5.0 发布说明。
先从清洗后的中文语料学习词与词、字与字的接续规律,再从受词库约束的候选对比中训练紧凑的长句和短词重排器。训练产物不保存语料原文,基准测试语料也不参与训练。
统计模型量化后写进本地 SQLite 词库;神经重排器则转换为编译进引擎的原生参数。无需另装模型环境,也不会在使用时连接网络或下载数据。
长句由统计模型和两阶段神经重排共同选路;短词只在有前文且存在多个精确候选时启用两阶段上下文排序。没有上下文时保持原有词频和用户学习顺序。
长句与短词重排器都已转换成引擎内的原生计算,不会启动 PyTorch、ONNX 或外部模型服务, 照旧不联网、不需要 GPU。下面两套基准测试均与训练数据隔离,成绩里没有「背题」的水分。
长句与短词测试都取材于小说《永恒的舞动》, 并与模型训练数据保持隔离。测试方法、案例构造和指标定义见 BENCHMARK.CN.md。
对 16300 条长句一次性设置完整拼音,检查完整候选的准确率与引擎解码耗时。
| 版本 | Top1 | Top2 | Mean (ms) | P95 (ms) | Max (ms) |
|---|---|---|---|---|---|
| v1.5.0 | 7459 / 16300 45.76% | 7966 / 16300 48.87% | 63.42 | 203 | 2140 |
| v1.4.0 | 7168 / 16300 43.98% | 7617 / 16300 46.73% | 66.23 | 218 | 2578 |
| v1.3.0 | 7155 / 16300 43.90% | 7601 / 16300 46.63% | 64.54 | 203 | 2188 |
| v1.2.0 | 6895 / 16300 42.30% | 7303 / 16300 44.80% | 59.89 | 188 | 2078 |
| v1.1.0 | 6677 / 16300 40.96% | 7067 / 16300 43.36% | 73.18 | 234 | 2750 |
| v1.0.0 | 6106 / 16300 37.46% | 6857 / 16300 42.07% | 71.49 | 219 | 5344 |
| v0.8.5 | 6097 / 16300 37.40% | 6847 / 16300 42.01% | 520.05 | 1203 | 13297 |
| v0.7.0 | 5368 / 16300 32.93% | 6110 / 16300 37.48% | — | — | — |
| v0.6.0 | 4905 / 16300 30.09% | 5378 / 16300 32.99% | — | — | — |
| v0.5.0 | 4834 / 16300 29.66% | 5243 / 16300 32.17% | — | — | — |
| v0.4.0 | 4371 / 16300 26.82% | 4744 / 16300 29.10% | — | — | — |
| v0.3.1 | 3845 / 16300 23.59% | 4651 / 16300 28.53% | — | — | — |
| v0.2.0 | 2671 / 16300 16.39% | 2863 / 16300 17.56% | — | — | — |
Top1:整句首选即正确的比例;Top2:前两个候选中含正确结果的比例。Mean、P95、Max 为引擎整句直设解码耗时(ms),不代表逐键输入到候选窗口显示的端到端延迟。
65000 个二至四字词案例保留输入位置之前已经上屏的文本,用于评估短词精确候选和上下文消歧。 Contested 是同一拼音对应至少两个目标词的歧义子集。
| 版本 | Top1 | Top2 | Contested Top1 | Contested Top2 | Mean (ms) | P50 (ms) | P95 (ms) | Max (ms) |
|---|---|---|---|---|---|---|---|---|
| v1.5.0 | 61045 / 65000 93.92% | 63364 / 65000 97.48% | 9159 / 11728 78.10% | 10677 / 11728 91.04% | 5.033 | 4.113 | 9.968 | 142.372 |
| v1.4.0 | 60676 / 65000 93.35% | 63251 / 65000 97.31% | 8993 / 11728 76.68% | 10602 / 11728 90.40% | 5.573 | 4.521 | 11.157 | 158.687 |
| v1.3.0 | 59078 / 65000 90.89% | 62881 / 65000 96.74% | 8326 / 11728 70.99% | 10386 / 11728 88.56% | 5.460 | 4.396 | 10.939 | 176.912 |
延迟为启用上下文轨道后的引擎单次完整查询耗时,不包含 TSF 调用、候选窗口渲染和真实按键间隔。
Cassotis 是古希腊德尔斐(Delphi)神庙旁的一眼圣泉。 传说女祭司皮媞亚在颁布神谕之前,会先饮下这眼泉水, 人们相信预言便是从这泉中来的。
这个名字里还藏着一点巧合:言泉是用 Delphi 语言写的。泉眼与工具,恰好同出一地。
中文名取自「言如泉涌」——话语像泉水一样自然涌出,不必费力。 做输入法,想达到的也就是这种状态:想到什么,打出来就是什么。
一个是预言之泉,一个是言语之泉,说的其实是同一件事。
项目还在早期,更新比较频繁。
想跟进进展或者提建议,欢迎到 GitHub 仓库来。
提供 Windows 10 / 11 x64 安装包,安装时会自动注册 TSF 服务并初始化词库, 不需要额外配置。