C6.11.3Autocorrect off for names, passwords, and code设计研究

姓名、密码、代码等场景需关闭纠错

别名: 关闭自动纠正 · 密码关纠错 · 代码关纠错

概念解释

有些字符串的正确形式本来就不在通用词表里,或正确性不能由词频决定。姓名、密码、代码、邮箱本地部分、订单号属于这一类。对这些字段开纠错,模型会把合法的词外串拉向最近的词典词,误报率高、漏报几乎无意义。关闭不是惩罚用户,而是承认这里没有可参照的“更可能的词”。

机制

纠错的先验来自大规模语料:常见词、常见邻键对。姓名服从另一套分布,且大量只出现在个人通讯录里;密码故意远离词典;代码标识符用驼峰、下划线和缩写,空格触发替换会在标识符内部切开或改写。邮箱的 @ 之前一段也常是词外。模型在这些分布上没有好的近邻,最近邻往往是一个高频英语或汉语词,替换后字段的语义被破坏,密码和代码还会造成登录失败或编译失败——失败发生在另一个系统里,用户更难把原因连回那一次空格。关闭纠错让原串原样过确认边界。补全若只加后继、不替换,仍可在姓名上保留;替换通道必须停。

怎么研究

在姓名、口令、短代码三类字段上对比开/关纠错的提交成功率和用户改回次数。自变量包括是否读取通讯录作为例外词表、是否允许一次性加词;因变量包括被改写的合法串、登录或校验失败、以及用户是否把失败归因于自己。用普通短信语料调过的模型在这些字段上的准确率不能外推。

边界

通讯录里的姓名可以成为个人词表,打开纠错但不把它们当错误,这是“例外词表”,不是把纠错整段留下。已经确认过多次的内部代号也可以加进去。通用聊天字段不能因为里面偶尔出现姓名就全局关闭;关闭是按字段语义,不是按这句话里有没有大写字母。密码字段同时往往要关掉可见的补全和从词表来的滑行。

怎么落地

  • 对姓名、密码、代码、邮箱、验证码字段关闭替换型纠错;系统键盘的关闭开关要在字段聚焦时生效,而不是只写在设置里。
  • 姓名类字段可以用个人通讯录作白名单,但仍不得把白名单外的串强行换成词典词。
  • 用真实姓名样本和故意的“看起来像错词”的合法代号做提交测试;开着纠错会改写它们的字段,默认状态即为失败。

延伸

  • 同组C6.11.1 纠错是在无确认情况下替换用户输入 · C6.11.2 纠错必须可见且可一步撤销
  • 相邻C6.29 密码输入的专用键盘 · C6.07 键盘类型与场景匹配
  • 站内检索disable autocorrect · password field · out-of-vocabulary

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C6.11.3