您的位置:首页 > 其它

拼写纠错 (英文)

2015-08-11 15:41 120 查看
拼写纠错,又叫拼写检查,在搜索引擎中很流行,如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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: