联想
词语联想与智能联想两档的区别、连续联想、自动收起,以及桌面端默认关闭的理由
联想指上屏之后,输入法按刚上屏的内容再给一批候选,不用重新打码就能接着往下写。
「输入」页的「联想」卡片管这件事。对应配置段是 config.toml 的 input.association,完整键名见输入行为配置。
两档联想
出厂关闭,要用先在「联想类型」里选一档。两档给出的东西完全不同:
| 联想类型 | 上文怎么用 | 打完「中」给什么 |
|---|---|---|
| 词语联想 | 当前缀 | 中国、中间、中华——词库里以「中」开头的更长的词 |
| 智能联想 | 当上下文 | ,、的——后面常跟什么 |
词语联想只需要一份带词频的词库,是多数桌面输入法说「联想」时的意思。智能联想更适合移动端:手机上打标点要切键盘,直接从候选里点走省事得多。
选中联想候选后,只有多出来的部分会上屏——打「中」再选「中国」,得到的是「中国」而不是「中中国」。
桌面设置界面里暂时只有词语联想
智能联想设计上有四个来源(个人搭配、词→后继表、词库前缀、标点),但已实现的只有后两个,而标点在桌面默认关闭 ⇒ 桌面上选它拿到的与词语联想完全相同。摆一个和隔壁没区别的选项只会让人反复试,所以暂不列出,等另外两个来源落地、两档真正分开了再放出来。
功能本身没有移除:手改 config.toml 写 input.association.kind = "smart" 照样启用,配合 punct = true 就能在桌面试标点联想(两项都不在设置界面,见输入行为配置)。已经这样配过的用户,设置界面会显示「smart(当前配置)」,不会被静默改掉。移动端出厂就是智能联想,不受影响。
另外两个来源尚在计划中,它们都不依赖语言模型文件——bigram 将来是离线蒸馏好的词→后继表随包分发,不需要你另外下载任何东西。
词语联想在完整词之后经常没有候选
它是纯粹的前缀延伸:打完「我们」,词库里得有「我们班」这类以「我们」开头的更长的词才给得出来。实测五笔词库下单字几乎都有联想,双字词则大半没有。这是这一档的固有性质,不是出了问题——要在完整词之后继续给,得靠专门的联想词库或语料搭配表。
卡片选项
| 选项 | 说明 | 出厂 |
|---|---|---|
| 联想类型 | 关闭 / 词语联想 | 关闭 |
| 连续联想 | 一次性 / 持续联想 | 一次性 |
| 候选条数上限 | 联想候选最多显示几条 | 9 |
| 空格上屏联想候选 | 关掉则空格照常出空格,联想窗同时收起 | 开 |
| 自动隐藏 | 显示多久后自动收起;0 = 不自动收起 | 5000 毫秒 |
「联想类型」选「关闭」以外的值,下面四项才可用。
另有一项编码栏标识(联想时编码栏显示的文字,出厂「联想输入」)只在配置文件里,见下文。
连续联想
一次性:联想候选只出一次,按了非选词的键(打新的码、按退格、按 Esc)就退出。
持续联想:选中之后拿它当新的上文接着给——「中」→ 选「中国」→ 继续给以「中国」开头的词。适合连着写长词组,代价是候选窗会一直挂着。
自动隐藏
联想候选是自动弹的,不像正常输入那样由你的击键决定何时出现。开着联想时候选窗几乎一直在,久留会挡住正文,所以出厂设了 5 秒后自动收起。想让它一直留着就填 0。
编码栏标识(只在配置文件里)
联想时编码栏本来是空的(联想没有输入码),补一个「联想输入」的标识能让人一眼看出当前候选是联想来的、不是自己打出来的。
[input.association]
hint = "联想输入" # 留空则不显示只在「编码不嵌入宿主程序」时可见——嵌入模式下编码栏本身不存在,此时不会凭空多出一栏,候选窗高度也就不会跳动。而嵌入是出厂默认,所以多数人根本看不到这个标识;它因此不在设置界面里占一行,要改的人手写配置文件。
联想时能用哪些键
联想候选就是普通候选,正常输入时能用的键这里都能用:数字键选词、空格上屏高亮项、次选 / 三选快捷键、上下移动高亮、翻页、鼠标点选。Esc 与退格收起联想窗。
桌面端为什么默认关闭
两个顾虑:候选窗是浮层,联想常驻会挡住正文;而且它会占用数字键——上屏后再按数字,开着联想时是选联想词、关着时是打数字,对用惯了的人是突发的行为变化。
移动端没有这两个问题(软键盘本就常驻),故那边出厂就是智能联想 + 持续联想。两端的取值分别写在配置文件的 [input.association] 与 [mobile.association] 里,各自独立。
标点的来源开关不在界面里
智能联想给不给标点,由配置文件的 input.association.punct 决定——桌面出厂是关的,移动端是开的。它和另外三个来源开关都不在设置界面开放,需要时手改 config.toml,见输入行为配置。