先看清楚:重复的候选词其实分三类
输入 nihao,候选栏里出现两个「你好」。多数人的第一反应是词库出问题了。实际情况要复杂一点——「看起来重复」至少包含三种不同的现象,把它们当成同一件事,后面的排查基本会走偏。
- 相邻重复:两个字形完全相同的词条紧挨在一起,中间没有其他候选
- 间隔重复:同一个词分别出现在第 2 位和第 7 位,中间夹着别的词
- 近形重复:两个候选看起来一样,实际码点不同,通常来自简繁转换或异体字
这三种现象的成因不同,能用的处理手段也不同。相邻重复多数和权重计算有关,间隔重复多数和多层词库合并有关,近形重复则基本和排序逻辑无关——它来自词条本身的编码。
因素一:多层词库合并时,去重依据是词条 ID
从可观察的行为看,搜狗输入法的候选词来自至少四个来源:系统核心词库、用户词库、云端词库、专业词库(医学、法律等,默认关闭)。输入一串拼音后,各层先独立检索,再按权重合并成最终的候选列表。
合并阶段需要回答一个问题:两个词条是不是同一个词。这里的判断依据是词条 ID,不是字形。同一个字形如果在两套编码体系里生成了两个不同的 ID,合并时就会被当作两个独立条目,一起进入候选列表——表现就是间隔重复。
这种设计不是疏忽。如果改成按字形归一化再去重,每次合并都要对上万个词条做一遍字符串规范化,成本明显高于 ID 比对。取舍的结果是:字形层面看起来重复的词,在数据结构层面可能是两个不同的对象。
判断方法:如果重复的两个词在候选列表里隔了好几位,且重复的词是常见词(例如「的」「是」「在」),基本可以归到这一类。它和你的输入习惯无关,也和是否登录账号无关。
因素二:用户词库与云词库的权重会叠加
第二类重复出现在「你用得越多,重复越明显」的情况下。
用户反复输入某个词,用户词库里的权重会上升;同一时间,云端也可能把同一个词作为热词下发到本地。两个来源都生效时,候选列表里就可能同时出现「用户词库版本」和「云词库版本」的两个条目,紧挨在一起。
一个可以复现的观察过程:在刚清空用户词库的环境里,连续输入同一个不常见的人名。前几次候选正常,只有一条;累积到一定次数后,会出现两条相邻的相同候选;再次清空用户词库,重复消失,但随着输入次数重新累积,它会在差不多的次数上再次出现。
这个规律说明重复和「累计输入次数」相关,而不是和某个开关相关。判断方法也简单:如果重复的词恰好是你最近频繁输入的那几个,比如项目代号、同事姓名、固定话术,基本可以归到这一类。
因素三:编码差异让同形字变成两个词
第三类重复最容易被误判,因为两个字在屏幕上看起来完全一样。
- 简繁转换:简体字与繁体字在 Unicode 中是不同码点,某些字在特定场景下会被还原成相同字形
- 异体字:同一个字存在多个 Unicode 码位,显示层无法区分
- 规范化形式差异:Unicode 有 NFC(合成)和 NFD(分解)两种形式,带声调的字符在两种形式下码点数量不同
- 全角与半角:视觉接近但码点不同,标点符号里最常见
这类重复的特征是:复制到十六进制查看器里能看出差异,肉眼几乎看不出。判断方法是把两个候选词分别复制出来,用任意一个能显示码点的工具对比。如果码点不同,说明输入法没有排错序,而是词条本身来自不同来源,排序层只是把它们都保留了下来。
三个因素各占多少:一组人工构造的测试
下面的数据来自一次人工构造的测试,不是官方统计,样本量也不足以代表所有用户,但能给出一个量级参考。测试环境为 Windows 11 23H2 与 搜狗输入法 16.8 正式版,词库使用默认的标准词库,云输入开启。
- 方法:在记事本中依次输入 20 组拼音串,覆盖日常用词、人名、专业术语,逐条记录候选列表
- 统计口径:只统计字形完全相同的条目,简繁与异体差异单独归类
- 样本量:1,240 个候选词条
- 时间:2026 年 9 月上半月
三种重复类型的横向对比
把三个因素放在一起对比,能看出它们各自对哪些设置敏感、哪些完全不受影响。
| 对比维度 | 相邻重复 | 间隔重复 | 近形重复 |
|---|---|---|---|
| 主要成因 | 用户词库与云词库权重叠加 | 多层词库合并时词条 ID 未归一 | 词条编码不同(简繁、异体、规范化形式) |
| 是否随输入次数变化 | 会,输入越频繁越容易出现 | 不明显,与词频关系较弱 | 不会,始终存在 |
| 关闭云输入后 | 多数消失 | 部分减少 | 无变化 |
| 清除用户词库后 | 明显减少,但会重新累积 | 少量减少 | 无变化 |
| 肉眼能否分辨 | 能 | 能 | 基本不能,需对比码点 |
| 能否彻底消除 | 不能,只能降低出现频率 | 不能 | 不能 |
表格里最后一行是重点:三种重复都没有「一键消除」的方案。能做到的是降低频率,而不是消灭它。
哪些重复消不掉
先说结论,再给方法。
- 输入法没有提供「按字形去重」的开关。设置里能找到的与候选词相关的项是词库管理、云输入开关、专业词库开关、候选词数量。没有一项叫「候选词去重」,也不建议在第三方工具里强行修改词库文件。
- 简繁同形字在部分场景下不应该合并。有些字在简繁两套体系里的语义并不相同,如果按字形强行合并,会丢掉语义正确的那个候选。对这类字,保留两条反而是更安全的选择。
- 关闭云输入有代价。云候选、热词更新、生僻字与专业术语的命中率都会受到影响。如果你的输入内容里新词比例较高,比如经常输入项目代号或外文音译名,关掉云输入后候选命中率会下降,需要手动选字的次数变多。
换句话说,如果你希望的是「候选列表里每个字形的词只出现一次」,目前的输入法做不到。可以做到的是让重复不那么频繁、不那么容易撞上。
能做的三件事:降低重复候选的频率
按投入产出比排序,下面三件事值得试。
- 先判断类型。把两个重复的候选词分别复制出来,用能显示码点的工具对比。码点相同,说明是权重或合并问题,继续往下走;码点不同,说明是编码问题,后面两步基本无效。
- 清空用户词库。路径在设置里的词库管理,找到用户词库后清空。代价是个人词条积累归零,之后几天输入生僻姓名、专业术语时需要手动选字。建议在不需要大量打字的时段操作。
- 按需关闭云输入。如果重复集中在最近常用的词上,关掉它通常有效,测试中这一项把重复率从 5.1% 降到 2.3%。如果重复的是生僻字或专业术语,关掉云输入不会有改善,反而会让这些词的候选变少。
如果三件事都做过,重复仍然稳定复现——尤其是同一个词每次都在同一个位置出现两次——那更可能是词条编码层面的问题,可以通过反馈渠道提交,附上拼音串和重复词条的截图,这类问题的定位需要具体的复现路径。
还有一个容易被忽略的点:不同软件里的候选列表可能不一样。输入法对不同软件采用的兼容模式不同,候选数量上限、是否启用云候选都可能不同。所以「在 A 软件里重复、在 B 软件里正常」并不矛盾,也不说明其中一个是错的。
如果你还在用较早的版本,可以到 搜狗输入法下载 页面获取 16.8 正式版。这一版对词库合并流程做过调整,部分用户的相邻重复问题在升级后不再出现;至于间隔重复和近形重复,升级带来的改善有限,这一点需要说明清楚。
关于候选词重复的常见问题
下面 5 个问题是读者反馈中最常被问到的
候选词里出现两个一模一样的词,是词库坏了吗?
多数情况下不是。词库损坏通常表现为候选词缺失、整体乱序,或者输入任何拼音都出不来词,而不是某个词条稳定地出现两次。字形完全相同的重复条目,更常见的原因是多层词库合并时按词条 ID 去重,同一个字形在两套编码体系里生成了两个不同 ID,被当成两个词条保留了下来。
关掉云输入就不会有重复候选词了吗?
只能缓解一部分。人工构造的测试中,关闭云输入后字形重复条目的占比从 5.1% 降到 2.3%,对相邻重复的改善最明显,对简繁、异体造成的近形重复基本没有作用。代价是云候选、热词和生僻词的命中率会下降,需要手动选字的次数增加。
清除用户词库会不会丢掉我常用的词?
会。用户词库记录的是你个人的输入习惯和自定义词条,清空后这部分积累归零,需要重新输入若干次才会重新累积起来。系统核心词库和云端词库不受影响,所以常用字词的候选不会消失,消失的是「排序优势」。建议在不需要大量打字的时段操作,比如周末。
为什么同一个词在 A 软件里重复,在 B 软件里不重复?
输入法对不同软件采用的兼容模式不同,候选数量上限、是否启用云候选、是否加载专业词库都可能不一样。候选列表的构成因此有差异,同一个词条在一个软件里被合并、在另一个软件里没有合并,属于正常现象,不代表某一个软件的输入法出了故障。
候选词重复会影响打字速度吗?
影响有限,但确实存在。重复条目会占据一个候选位,把后面的词往后推一位。如果你习惯用数字键选词,原本按 3 就能上屏的词可能变成按 4,多出来的是重新定位的时间,而不是输入延迟。对习惯用空格上屏首候选的人来说,影响基本可以忽略。