词频统计到底记了什么
先说清楚概念。词频统计不是「记录用户输入的每个字」,也不是「保存输入的完整句子」。它记录的是词条级别的使用情况。
具体包括四类信息。词条本身:某个词被选中过。使用次数:这个词被选中过几次。选择位置:这个词是在候选栏第几位被选中的。选择方式:是直接按数字键选,还是翻页后选中的。
四类信息里,只有第一类涉及输入内容。搜狗输入法默认只记录用户主动选中的词——用户从候选里选了什么,就记什么。用户没有选中的候选不会被记入词频。
什么不记?输入过的但没上屏的字母串不记。翻页浏览过但没选中的候选不记。上下文句子不记。光标前后的文本不记。这点跟部分用户的理解不同——很多人以为输入法会记录整段输入,实际情况是它只关注最终上屏的词。
词条级别的记录在单条上信息量很低。「今天」这个字被选中过 50 次,这个记录本身说明不了什么。累积起来才有意义。
本地词频和云端上传是两回事
多数用户把「词频统计」理解成一件事,实际上它是两件可以独立存在的事。
本地词频记录。词频数据存在设备的用户数据目录里。这是本地文件,不依赖网络。只要输入法在用,这份记录就在更新。它跟账号无关,跟云同步开关无关,断网也在更新。
云端上传。本地记录的数据在云同步开启且账号登录的状态下会上传到服务器。上传的目的跨设备同步——让用户在另一台设备上也能用上自己的词频记录。关闭云同步或退出账号后,上传停止,本地记录继续。
两件事的组合有四种状态:
- 本地记录开 + 云端上传开:本地记录正常,数据同步到云端
- 本地记录开 + 云端上传关:本地记录正常,云端没有最新数据
- 本地记录关 + 云端上传开:这个组合在标准实现里不存在,两者是联动关系
- 本地记录关 + 云端上传关:输入法不再记词频,候选排序退回通用词频
用户能控制的是云端上传那一侧。本地记录是输入法的基本功能,没有独立开关——如果完全关闭本地记录,输入法就失去了个人词库能力,跟系统默认输入法没有区别了。
一个常被误解的点:关闭云同步不等于关闭词频统计。它只关闭了上传。本地记录还在,只是不再往服务器传。想完全不记录词频,只能清空词库或换用没有词频功能的输入法。
词频数据里可能暴露什么信息
单条词频记录信息量低,但累积起来的词频表可能反映输入内容的特征。这不是危言耸听,是数据本身的性质。
一个使用了两三年的词频表,可能包含几千到几万条词条。这些词条里隐含了几类信息。领域特征:如果词表里有大量医学、法律、编程术语,能推断出用户的职业方向。生活状态:地名、人名、特定事件的词条,能反映用户的生活圈。输入习惯:词频表能反映用户是书面语偏好还是口语偏好。
这些信息本身不直接指向身份。一个医学从业者的词表里有「诊断」「处方」,但这两个词有几十万人用。要精确识别身份,需要词表跟其他数据结合,比如账号信息、设备信息、位置信息。
换句话说,词频数据是「可被推断」的,不是「直接暴露」的。对隐私敏感的用户,可以把词频表看成一份长期输入习惯的画像。这份画像单独看没有身份,结合其他数据就有。
云同步开与关时的数据流向
把数据流切成三处——输入、本地存储、云端——可以看到不同设置下的差异。
| 配置 | 本地记录 | 云端上传 | 跨设备可用 |
|---|---|---|---|
| 登录 + 云同步开 | 正常 | 持续上传 | 是 |
| 登录 + 云同步关 | 正常 | 停止 | 否 |
| 未登录 + 联网 | 正常 | 无(未登录无账号可传) | 否 |
| 未登录 + 断网 | 正常 | 无 | 否 |
| 账号已退出 + 云同步关 | 正常 | 无 | 否 |
这张表说明两件事。第一,本地记录在所有配置下都在进行,包括未登录和断网。第二,云端上传只跟账号和同步开关有关,跟本地记录是独立的。
用户想要「完全不上传」,配置方式是退出账号。这时候即使本地记录在更新,也没有上传路径。想要「完全不上传也完全不记录本地词频」,标准实现里做不到——本地记录是输入法的基础能力。
实测:词频表能推断出多少信息
下面的数据为人工构造,用来展示词频表的信息量,不是真实用户数据。测试方式是构造一个 3000 条词频记录的人工词表,让 5 名测试者各自根据词表猜测使用者的职业方向,看命中率和依据。样本量小,数据仅供说明问题。
| 词表特征 | 可推断程度 | 推断示意 | 主要依据 |
|---|---|---|---|
| 高度专业化词表 | 高 | 领域术语密集 | |
| 含人名、地名 | 中高 | 称呼与地缘线索 | |
| 日常通用词表 | 低 | 词条过于常见 | |
| 含账号相关内容 | 高 | 可直接关联身份 |
什么数据不会上传
输入法的隐私设计里有几类明确不上传的内容,这些是标准实现下的行为。
密码框内容。输入法通过系统接口能识别编辑框的密码属性。遇到密码框时,候选栏不显示候选内容,词频记录也不生效。前提是应用正确声明了密码属性。部分自绘 UI 的密码框可能没有声明,这种情况下无法自动识别,需要用户手动切换到英文输入。
未上屏的内容。输入但没有上屏的字母串不会被记录。用户输入 nihao 后又删掉,这个动作不会进入词频表。只有最终上屏的词才被记录。
未选中的候选。翻页浏览过但没有选中的候选词,不进入词频。这是用户主动选择的结果,输入法只记用户确认过的部分。
上下文句子。词频记录是词条级的,不保存句子。输入法不维护「用户在前一小时输入了什么句子」这样的记录。
这四类之外,还有一条边界值得说明。输入法不会主动扫描屏幕上的其他内容,也不会读取剪贴板。它的输入来源只有键盘事件和系统接口提供的编辑框状态。
用户能控制的四个开关
从隐私角度,用户能调的开关有四个。每个开关的作用范围不同。
四个开关里,云同步开关和云输入开关是最常调整的。云同步关掉后,跨设备词库同步停止,词频只留本地。云输入关掉后,输入时的云端候选请求停止,输入内容只走本地处理。
退出账号是最彻底的方式。退出后输入法不再与账号关联,所有数据只留本地。代价是失去跨设备能力,换设备时词库要手动导入导出。
清空个人词库是清除当前设备记录的方式。它不影响云端数据,如果云同步开着,下次同步会从云端重新拉下来。要连云端一起清,需要走账号管理页面的数据删除流程。
词频统计做不到什么
不能完全匿名化。词频表是用户长期输入习惯的累积,本身带有识别性。即使去掉了账号信息,词表内容仍可能指向特定群体。这是数据的性质,不是实现问题。
不能保证敏感内容不被记录。如果用户在普通文本框里输入了身份证号、银行卡号、密码等信息,且文本框没有声明敏感属性,输入法可能照常记录。用户主动避免在普通文本框里输入敏感信息,比依赖输入法识别更可靠。
不能替代本地隐私工具。输入法不是加密工具,它的设计目标是提升输入效率,不是保护输入内容。对内容保密要求高的场景,使用系统级加密工具或离线设备更合适。
不能在完全离线的状态下提供云端能力。词频上传、云端候选、跨设备同步都依赖网络。断网后这些能力停用,只保留本地功能。这是结构性的,不是版本问题。
不能保证第三方输入法实现一致。本页描述的是标准实现下的行为。不同版本、不同厂商的实现可能有差异,具体行为以当前版本的设置说明为准。用户在换用其他输入法时,不能假设行为一致。
使用建议
对隐私敏感的用户,优先关闭云同步。云同步是数据上传的主要路径,关闭后本地功能完整保留,只是失去跨设备能力。日常单设备使用,关闭的代价很小。
不在普通文本框里输入敏感信息。身份证号、银行卡号这类内容,如果文本框不是专用的敏感输入框,输入法可能记录。输入这类内容时,手动切到英文模式,或者先用其他工具处理。
定期检查词库内容。输入法设置里通常能查看用户词库。定期看一下,删掉不需要的词、误选的词、涉及隐私的词。这比依赖自动清理更直接。
想彻底清除,三步都要做。清空个人词库、退出账号并删除云端数据、手动删除本地用户数据目录。只做第一步,本地文件和云端备份还在,下次重装或登录会恢复。
区分「本地记录」和「云端上传」。很多人担心的是上传,但混淆了两者。关闭云同步后,上传已经停了,本地记录还在正常更新。理解这一点,能避免不必要的焦虑,也能更准确判断哪些操作真的改善了隐私。
词频统计的隐私边界不是一个「安全」或「不安全」的二元问题,是一组可调的设置和一层需要用户自己判断的边界。输入法提供了几个开关,把选择权交给用户。知道每个开关的作用范围,就能按自己的使用场景做决定。
关于词频统计与隐私的常见问题
下面 5 个问题是读者反馈中最常被问到的
词频统计会记录我输入的每个字吗?
不会逐字记录。词频统计记的是词条级别的使用情况——某个词被选中过几次、在候选栏第几位被选中、是否被翻页选中等。它不保存完整的输入序列,也不保存上下文句子。但累积起来的词条表可能间接反映输入内容的特征。
关闭云同步后词频数据还会上传吗?
不会。云同步开关关闭后,词频记录只保存在本地。账号登录状态本身可能还有心跳请求,但词频内容不再上传。要彻底断开,需要退出账号并关闭云输入。
密码框里输入的内容会被记录吗?
标准实现不会。输入法通过系统接口能识别编辑框的密码属性,遇到密码框会关闭候选显示和词频记录。前提是应用正确声明了密码框属性,部分自绘 UI 的密码框可能没有声明,这种情况下无法自动识别。
词频表能反推出我是谁吗?
单独的几万条词频记录看不出什么,但词频表累积了长期输入习惯后,可能反映出职业领域、常用人名、生活状态等信息。这些信息本身不直接指向身份,但跟其他数据结合时能缩小范围。对隐私敏感的用户建议定期检查词频内容。
怎么彻底清除词频记录?
需要分三步:在输入法设置里清空个人词库和词频记录;退出账号并删除云端同步数据;手动删除本地用户数据目录下的残留文件。只做第一步不够,本地文件和云端备份还会在下次重装或登录时恢复。