词语

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

强颜欢笑 提交于 2019-12-07 17:40:44
当在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实现一个更友好速度更快的 中文纠错算法 测试地址