打错字和撤回
人用输入法打字,偶尔会选错一个同音字,发出去才看到。它也会:偶尔错一个字,过一两秒发现,补一条「*正字」,或者撤回、重发对的。
多常错
按「一轮回复」算,不按一条一条算:一轮回复最多错一个字。能打错的回复里,平常大约十回错一回。
「能打错」是说这一轮里至少有一条够长(四个字以上),里面有容易选错的字。「行」「OKOK」这种根本错不了,不算在里面。
错只错在一小张常见的同音混淆表里:在和再、的地得这一类。不编夸张的错别字。
什么时候更容易错
- 在外面回消息(通勤、跑腿、出门在外):多八成;
- 着急(回得又快又兴奋的时候):多三成;
- 紧张(压力大的时候):多四成。
几样叠在一起也有上限:再怎么慌,也不超过三成五。
发现了以后
发出去以后,过一会儿(不到一秒到三秒多,每次不一样)它才发现。然后:
- 大约四成撤回那一条,隔一小会儿重发一条对的;
- 其余补一条「*正字」。
Discord 和 QQ 上它都撤得了自己发的消息。
调
网页后台「配置管理 → 对话策略」里的「打错字的比例」,默认 0.1;设成 0 就从不打错。
对应的代码
- 错不错、错在哪、怎么改:
src/aeria/typos.py的plan_typo(基础比例乘TypoPressure.multiplier():在外面 ×1.8、着急 ×1.3、压力 ≥ 0.6 ×1.4,上限MAX_TYPO_PROBABILITY= 0.35;撤回TYPO_RETRACT_PROBABILITY= 0.40)。 - 错成哪个字:
src/aeria/typo_generator.py的generate_homophone_typo。 - 真的发、撤、补:
src/aeria/bot.py的_own_up_to_typo。 - 比例:人格配置
[conversation].typo_probability(默认 0.1)。 - 测试:
tests/test_typos.py的「平常十次回复错一次左右,错了的里面四成撤回重发」「他已经回了,不撤,补一条星号正字」。
没做到的
- 只错同音字,而且只在一小张混淆表里挑:不会打错拼音、多打漏打一个字,也不会手滑把一条发两遍。
- 「着急」「紧张」是从它的状态推出来的,不看这句话本身写得急不急。