码迷,mamicode.com
首页 > 其他好文 > 详细

拼写纠错 (英文)

时间:2015-08-11 16:13:47      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

拼写纠错,又叫拼写检查,在搜索引擎中很流行,如separate是一个正确的单词,但如果故意拼错,放到百度中也会帮你纠正。见图1。
技术分享
图1 百度的拼写检查
错误分为Non-word Errors和Real-word Errors。前者指非法单词;后者指那些拼写错误后的词仍然是合法的情况,如将“there”错误拼写为“three”(形近)。本文讨论的是Non-word Errors。

网上搜了一下,用的大都是贝叶斯定理。

思想

记P(a|b)为:输入字符串b情况下,推断出字符串a的概率。
记c为正确的单词,w为错误的输入,那么对于例子中的纠错,要求的就是

技术分享 (1)
由贝叶斯定理得

技术分享(2)

对于同一个输入,式(2)中的分母不变,所以用于排序的话,只求分子就行。P(w|c)记为1,P(c)记为单词c在语料中的出现频率,所以得到

技术分享(3)

实现

1.训练语料
得到一个map<单词,频数>。若输入字符串word在map中,就不用纠错。
2.计算编辑距离为1的字符串
记set1=编辑距离为1的字符串,set2= set1 in map。
对于set2中的每个元素c,计算式(3),选择结果最大的c作为返回。
若set2为空,转向步骤3.
3.计算编辑距离为2的字符串
记set1=编辑距离为2的字符串,set2= set1 in map。
对于set2中的每个元素c,计算式(3),选择结果最大的c作为返回。
若set2为空,转向步骤4.
4.放弃纠正
直接拿错误的输入搜索。这也不能说一定错,一些商标,店铺名啥的本身就不是单词。

说明

使用结果依赖于训练语料。
编辑距离的计算及枚举可移步:  http://blog.csdn.net/chuchus/article/details/47402183

拼写纠错 (英文)

标签:

原文地址:http://blog.csdn.net/chuchus/article/details/47420613

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!