词语纠错原理简介(corrector, do you mean?)

当在google百度输入错误的时候,百度google等都能给出一个最相近的纠错的提示。这个功能非常好用,也觉得特别有意思,所以在设计一个搜索小站的时候,想把这个功能加上。

在google上搜"spelling corrector"会得到很多有用的信息,大概有两种实现:一种是基于N-GRAM,另外一种是基于状态跳转来实现。python的Whoosh库2.4版本之前使用的是N-GRAM方式,而2.5之后使用的是FST状态跳转的方式。个人觉得基于FST可能会更好一些,下面简单介绍它的原理:

假设词库里有:刘德华 刘青云 刘嘉玲 刘俊杰 刘玉玲 刘易斯 刘松仁 刘以达,用户输入的是刘牛德,这个时候应该给用户的输入进行一次较正,以更合适本站的搜索信息。校正方法:

1、删除法,把刘牛德变成-->刘牛 牛德,再对库里的词典进行搜索

2、交换法,把刘牛德变成 刘德牛等,再进行搜索

3、替换法,把刘牛德变成 刘羊德,刘马德,刘牛法等

4、插入法,变成刘牛德国等

通过设计一外良好的状态图,以更好的实现上边的算法,就是如这个链接所示

循环的使用上边的四种状态的跳转,每增加一次变化,词的距离也相识的+1,比如刘牛德变成了刘德华,就经过一次交换,再一次替换,词距也增加到了2.

更详细的原理介绍:此英文文章

借助Whoosh的corrector实现一个更友好速度更快的中文纠错算法

测试地址

将计划加入到这个开源项目里

转载于:https://my.oschina.net/dancing/blog/161339

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值