320 likes | 543 Views
用户输入纠错. 张扬 @imeresearch zhangyang@sogou-inc.com 20110115. Outline. 总体目标 相关工作 系统实现 评测及分析 改进方向及结论 参考资料. 总体目标. 降低用户输入中的退格次数 造成退格的原因 输入错误 词库覆盖面 调频 用户自身习惯 本文目的:通过对用户输入的自动纠错来降低退格率. 用户输入示例. id=00559D715AF5C83BD5B5FB024F1B08C8, ip=221.194.157.227
E N D
用户输入纠错 张扬@imeresearch zhangyang@sogou-inc.com 20110115
Outline • 总体目标 • 相关工作 • 系统实现 • 评测及分析 • 改进方向及结论 • 参考资料
总体目标 • 降低用户输入中的退格次数 • 造成退格的原因 • 输入错误 • 词库覆盖面 • 调频 • 用户自身习惯 • 本文目的:通过对用户输入的自动纠错来降低退格率
用户输入示例 id=00559D715AF5C83BD5B5FB024F1B08C8, ip=221.194.157.227 [20110113 10:36:34.890ms]sc:0 huanzi 环资 :KwMusic.exe 0 [20110113 10:36:36.320ms]pk:KeyDown:"Backspace":KwMusic.exe [20110113 10:36:36.520ms]pk:KeyDown:"Backspace":KwMusic.exe [20110113 10:36:41.960ms]sc:6 huan 欢 :KwMusic.exe 0 [20110113 10:36:45.120ms]sc:0 zhi 直 :KwMusic.exe 0 [20110113 10:36:46.440ms]pk:KeyDown:"Backspace":KwMusic.exe [20110113 10:36:48.840ms]sc:0 zi 子 :KwMusic.exe 0 [20110113 11:48:18.400ms]sc:0 de 的 :QQ.exe 0 [20110113 11:48:18.570ms]pk:KeyDown:"Space":QQ.exe [20110113 11:48:21.380ms]sc:0 keji 科技 :QQ.exe 0 [20110113 11:48:23.370ms]sc:0 neng 能 :QQ.exe 0 [20110113 11:48:23.530ms]pk:KeyDown:"Space":QQ.exe [20110113 11:48:24.330ms]sc:0 dai 待 :QQ.exe 0 [20110113 11:48:25.500ms]pk:KeyDown:"Backspace":QQ.exe [20110113 11:48:28.260ms]sc:1 dai 带 :QQ.exe 0 [20110113 11:48:31.50ms]sc:0 tu 图 :QQ.exe 0 [20110113 11:48:31.800ms]sc:0 me 么 :QQ.exe 0
用户输入错误示例 [20110115 00:48:02.500ms]sc:0 yizhi 一直 :QQ.exe 0 [20110115 00:48:02.600ms]pk:KeyDown:"Space":QQ.exe [20110115 00:48:04.130ms]sc:0 shi 是 :QQ.exe 0 [20110115 00:48:19.850ms]sc:0 xingqi 星期 :QQ.exe 0 [20110115 00:48:19.850ms]ss:xq'x'xinqi'xin'xingqi:QQ.exe [20110115 00:48:22.920ms]sc:0 wu 五 :QQ.exe 0 [20110115 00:48:25.400ms]sc:0 xiuxi 休息 :QQ.exe 0 [20110115 00:48:25.690ms]sc:0 a 啊 :QQ.exe 0 [20110115 00:48:25.850ms]pk:KeyDown:"Space":QQ.exe [20110109 01:03:16.210ms]sc:0 ju 距 :QQ.exe 0 [20110109 01:03:16.210ms]ss:jiu'j'ju:QQ.exe [20110109 01:03:19.30ms]sc:0 py 朋友 :QQ.exe 0 [20110109 01:03:20.160ms]sc:0 xi 系 :QQ.exe 0 [20110109 01:03:26.50ms]sc:0 xiangg 香港 :QQ.exe 0 [20110109 01:03:26.50ms]ss:xiang'xian'xiangg:QQ.exe [20110109 01:03:30.290ms]sc:0 dus 读书 :QQ.exe 0 [20110109 01:03:30.400ms]pk:KeyDown:".":QQ.exe [20110109 01:03:30.550ms]pk:KeyDown:".":QQ.exe [20110111 23:56:34.920ms]pk:KeyDown:"Backspace":iexplore.exe [20110111 23:56:35.80ms]pk:KeyDown:"Backspace":iexplore.exe [20110111 23:56:41.650ms]sc:1 ke 科 :iexplore.exe 0 [20110111 23:56:42.810ms]sc:0 daifu 大夫 :iexplore.exe 0 [20110111 23:56:43.50ms]pk:KeyDown:"Space":iexplore.exe [20110111 23:56:47.840ms]sc:0 changshuo 常说 :iexplore.exe 0 [20110111 23:56:47.840ms]ss:chuangshuo'ch'changshuo:iexplore.exe [20110111 23:56:48.80ms]sc:0 de 的 :iexplore.exe 0 [20110111 23:56:49.180ms]sc:0 jius 就是 :iexplore.exe 0
Outline • 总体目标 • 相关工作 • 系统实现 • 评测及分析 • 改进方向及结论 • 参考资料
相关工作-英文纠错 • 英文纠错 • 成词错误 vs. 非成词错误 taht, foto, fill the from, heal the word…… • 拼写检查 vs. 拼写校正 • 编辑距离 vs. 发音相似度 • 方法 • 基于规则 • 基于统计 N-gram, neural net, winnow, logistic regression, MaxEnt…… • 应用 OCR、email spellchecker, speller for search engine……
相关工作-中文纠错 • 中文错误类型 音近(如“按步就班”中的“步”应为“部”) 形近(如“人”和“入”) 意近(如“既往不究”中的“究”应为“咎”) • 成型系统主要是针对混淆集中的单词在上下文搭配上引起的错误,采用歧义消解的思路进行校正 • 基于输入法的拼音输入纠错 step 1: pinyin2pinyin’ step 2: pinyin’2hanzi
拼音输入纠错 • 非成音错误 vs. 成音错误 非成音错误 : shenem => shenme, nishoshuo => nishuoshuo, … 成音错误 : cifan => chifan, yingai=>yinggai, huiji => feiji, … 模糊音属于成音错误的一类 • 认知错误 vs. 非认知错误 • 用户输入编辑类型 替换(31.4%): shuijiap => shuijiao, yanjinh => yanjing, … 插入(29.8%): yhingxiong => yingxiong, tongxuie => tongxue, … 删除(31.8%): nishoshuo => nishuoshuo, zheyag => zheyang, … 交换(7.1%): shenem => shenme, wansahng => wanshang, …
拼音输入纠错 (Contd.) • 用户输入音节类型 20110101-20110114十四天78个大白狗文件 • 用户输入字母串长度分布 长度3-21占长度大于1输入比例 75.52%
拼音输入纠错 (Contd.) 统计退格前与退格中的编辑距离分布 替换: tuibi'tuib'tuiba'退吧 插入: yinghang'yin'yinhang'银行 删除: dngbei’d’dongbei’东北 交换: yihuire‘yihui’yihuier‘一会儿 编辑距离1所占比例 50.60% 编辑距离1-2所占比例 75.34%
Outline • 总体目标 • 相关工作 • 系统实现 • 评测及分析 • 改进方向及结论 • 参考资料
评价指标 • Precision/recall/top-n accuracy • 误杀率
拼音纠错处理流程 输入错误识别 SpellerLib 生成候选(替换、插入、删除、交换) Pinyin2pinyin候选打分 云输入法 Pinyin2hanzi候选打分
拼音纠错模型 • 噪音信道模型 • 给定输入query,找出最大可能候选,满足 argmax P(cand|query) = argmax (P(query|cand) * P(cand)) Error model /信道模型 source model /语言模型
纠错示例 给定输入串zhemguiyi 对候选1:zhemeguiyi P(zhemeguiyi)*P(zhemguiyi|zhemeguiyi)=P(zhe)*P(me|zhe)*P(gui|zheme)*P(yi|zhemegui)*P(~|m, context) 对候选2:zhenguiyi P(zhenguiyi)*P(zhemguiyi|zhenguiyi)=P(zhen)*P(gui|zhen)*P(yi|zhengui)*P(m|n, context) 对候选3:……
Outline • 总体目标 • 相关工作 • 系统实现 • 评测及分析 • 改进方向及结论 • 参考资料
评测集合 • 统计20101001到20101201共计62天的大白狗数据,从中抽取用户输入退格对进行统计。预处理后得到合法退格对703,856,416个,它们满足以下条件: 1) 退格后的拼音串为全拼(覆盖79.8%); 2) 退格前后拼音串编辑距离(字母插入、删除、替换、交换)小于1; 3) 退格对出现频率满足一定下限; • 误杀率评测 20000行大白狗用户连续输入文本,获得退格对659个,占到3.3% 评价退格对被纠正的比例,以及正常输入被误杀的比例
系统实现 • 根据四种编辑类型分别生成候选 • 使用基于字母的trigram模型进行优化 统计得出3052个合法的全拼trigram,生成正向和反向两个trie结构 快速检测错误 快速生成合法候选 理论计算量(52*len - 55),该方 法能使计算量平均降低72% 举例来说,对于片段xd,首先探测出不符合全拼trigram统计 接下来查找反向的字母trigram trie,获得xdi和xdu两个候选,从而生成xid(中间插入i)和xud (中间插入u)是合法的trigram,免除了对其它24个字母的枚举操作 aaa …… ibu …… zuz aaa …… iub …… zzu
系统实现(Contd.) • 纠错串长度4-20 • 候选生成范围:编辑距离为1 • 不考虑首字母编辑,不考虑末字母删除 • 针对用户简拼习惯的优化 • 纠错模型参数估计 • Source model使用音节bigram • Error model使用基于单字母上下文的字母操作条件概率 • 20101101到20101124共计24天的大白狗数据,共计6,953,209,997条记录
评测结果 非成词评测集,Bigram source model ONLY
评测结果(Contd.) 非成词评测集, Bigram source model + context-sensitive error model
评测结果-误杀率 现在策略下,大致能达到的覆盖率为 75%(纠错长度4-20) * 75%(编辑距离为1) * 27.46%(纠错覆盖率) = 15.44%
错误分析 • 给出纠错的 pinyin2pinyin’错误 pinyin2pinyin ’正确,pinyin ’ 2hanzi(音字转换)发生错误 • 未给出纠错的 简拼优化策略带来的影响 • 评测集合 jipio jipia 机票 tasi tasi 踏实 weenluan wenluan 温暖 minsenyusen mincenyusen 名称预审 sinisenqi sinisenri 是你生日
Outline • 总体目标 • 相关工作 • 系统实现 • 评测及分析 • 改进方向及结论 • 参考资料
改进方向 • 扩大纠错范围 • 更长、更大编辑距离 • 云输入、客户端、手机…… • 简拼优化策略 • 评测集的人工干预 • 个性化纠错
结论 • 可同时处理模糊音纠错和输入错误 • 方便并行实现,并根据具体使用场合控制计算量 sub/ins/del/xpos生成候选流程相互独立,方便并行实现 超时强制返回 caching ……
Outline • 总体目标 • 相关工作 • 系统实现 • 评测及分析 • 改进方向及结论 • 参考资料
参考资料 • Philips L. Hanging on the Metaphone. Computer Language Magazine 7(12), 1990, pp. 38-44. • Philips L. The Double-metaphone Search Algorithm. C/C++ User‘s Journal, 18(6), June 2000. • Brill E, Moore RC. An Improved Error Model for Noisy Channel Spelling Correction. In: Proceedings of 38th Annual Meeting of Association for Computational Linguistics, 2000, pp. 286-293. • Yang Zhang, Pilian He, Wei Xiang, Mu Li. Discriminative Reranking for Spelling Correction, in proc. of the 20th Pacific Asia Conf. on Language, Information and Computation (PACLIC), 2006; • Mu Li, Yang Zhang, Muhua Zhu, Ming Zhou. Exploring Distributional Similarity-Based Models for Query Spelling Correction, in proc. of the 44th Association of Computational Linguistics (ACL), 2006; • Jurafsky D, Martin J. Speech and Language Processing, Prentice Hall, 2000. • Kukich, K. Techniques for Automatically Correcting Words in Text, ACM Computing Survey, Vol. 14, No. 4, pp 377-439, December 1992. • 张照煌. 中文自动拼写校正的一种新方法(英文). COLIPS通讯, 1994, 4(2):143-149. • 李建华, 王晓龙. 整合三元模型和自动权重分布的中文拼写校正方法. 计算机科学技术学报(英文版), 2002, 17(6): 915-923. • 张磊,周明,黄昌宁,鲁明羽. 基于特征与学习的中文文本自动校对方法. 第三届中文智能控制及智能自动化会议, 2000年. • 陈正,李开复,拼写纠正在拼音输入法中的应用,计算机学报 2001(07) • 张扬,何丕廉,向伟,李沐。一种基于判别式重排序的拼写校正方法。软件学报,2008,19(3):557-564;