一、详细过程

拼写纠错任务目标是找到概率最大的 p(correct|incorrect)比如:incorrect='appl',而correct 可以为任何词,我们的目的就是要找到哪个词作为correct时,能使的p(correct|incorrect)最大,但是,当没有任何日志的时候,我们无法直接得到max(p(correct|incorrect)),因此可以根据贝叶斯定律:

p(correct|incorrect)=p(incorrect|correct)*p(correct)

那么求max(p(correct|incorrect))就变成求max(p(incorrect|correct)*p(correct)),理论我们要计算所有的词写成appl的概率,显然这个是不现实,根据先验知识,哪些词较大概率写成appl呢?,当然是和appl编辑距离为1的单词,所以我们可以把与appl编辑距离为1的单词列举出来并过滤到不是正确单词的词,作为候选集(相当于推荐中的召回,从所有的单词中,召回编辑距离为1的单词)。

在没有日志前,可以把所有编辑距离为1的单词的写错成appl的概率认为相同的,那么p(correct)最大,那么这个correct就是最可能是appl对应的正确的词。

关键是p(correct)是怎么计算的到的呢?

p(correct)计算需要通过语言模型,语言模型可以通过语料统计而来,uigram语言模型就是能计算p(word)

的概率(其实就是根据词频),而bigram语言模型就是能计算p(word1|word2)的概率,同理trigram,就是能计算p(word1|word2,word3)的概率,举个例子:

假如我们的语料库是:I like it, beacuse it is very interesting.

根据这个语料库,我们得到的uigram模型是:p(word)=每个单词出现的次数/语料库总词数

得到的bigram模型:p(word1|word2)=每个单词word1出现在word2之后的次数/word1在语料库出现的总次数

比如:p(it|like)=1/2而 p(like|I)=1

那么言归正传 p(correct)的计算,就是根据已经训练好的模型,依次计算每个候选的correct单词的P(correct),假如是采用uigram模型,那就是计算哪个correct单词在语料库出现的次数多,哪个就是最可能正确的单词,显然这种不是很准,我们一般采用bigram或trigram语言模型来计算p(correct),也就是我们要考虑appl之前是什么单词,如果前一个单词是乔布斯,则就是计算p(correct|乔布斯),根据语言模型得到哪个候选correct最大。

二、总结一下,拼写纠错的一般步骤:

1、首先检测出 是哪个单词发生了拼写错误

这可以通过查字典来实现,比如依次扫描每个单词,若该单词不在词典中(未被词典收录),则认为它是一个拼写错误的单词。显然,词典越大,词典收录的单词越多,我们就越能正确检测出错误的单词。

2、其次,找到一组候选集

常用的就可以通过“编辑距离算法”来实现

3、根据贝叶斯从候选词中找到最有可能能的正确单词

p(correct|incorrect)=p(incorrect|correct)*p(correct)=候选词写错成incorrect的概率*候选词在语言模型中合理的概率

三、实战举例:

输入:
This is a useful appl

1、根据字典匹配发现 appl是拼写错的单词

2、根据编辑距离,找到正确的候选集:app,apple,apply...

3、如果有点击日志,可以得到p(appl|app),p(appl|apple),p(appl|apply)的概率,没有的话,因为编辑距离都为1,那么可认为相等再比较p(app|上下文),p(apple|上下文),p(apply|上下文),假如使用uigram模型,则根据预训练的语言模型,可得到P(app|useful),P(apple|useful),P(apply|useful)的概率,最后比较logp(appl|app)+logp(app|useful)、logp(appl|apple)+logp(apple|useful)和logp(appl|apply)+logp(apply|useful)的值,最终就得到结果。

英文拼写纠错-超详细演示相关推荐

  1. 一个英文拼写纠错的思路(English Spelling check)

    分享一个英文拼写纠错的思路,暂时无完整代码,后续如果实现会继续更新 英文拼写纠错这个问题由来已久,在这方面做的最好的就是谷歌了,现在我想自己实现一下这个功能,才疏学浅,分享一下自己的小想法.如果大家有 ...

  2. Vue指令超详细演示理解

    一:插值表达式 将data中定义的数据显示到模板上. 在vue中{{ }}语法,叫做:插值表达式,大白话就是输出{{ }}中的表达式的值的语法. 把{{ }} 理解为一个占位符(一个坑), {{ ms ...

  3. 什么是云开发?小程序实例超详细演示~

    学习视频: 八分钟读懂云开发_哔哩哔哩_bilibili 小姐姐带你30分钟创建并上线小程序项目[云开发实战]_哔哩哔哩_bilibili 参考资料: 微信开放文档 (qq.com) 云开发_百度百科 ...

  4. 中文拼写纠错_中英文拼写纠错开源框架梳理

    一.中文: 1.Pycorrector:https://github.com/shibing624/pycorrector 当前主流的中文纠错框架,支持规则和端到端模型 2.FASPell:https ...

  5. NLP-文本处理:拼写纠错【非词(编辑距离)、真词(编辑距离...)候选词 -> “噪音通道模型”计算候选词错拼成待纠错词的似然概率 -> N-gram模型评估候选词组成的语句合理性】

    一.贝叶斯公式 1.单事件 P(Ax∣B)P(A_x|B)P(Ax​∣B)=P(AxB)P(B)=P(B∣Ax)×P(Ax)P(B)=P(B∣Ax)×P(Ax)∑i=0n[P(B∣Ai)∗P(Ai)] ...

  6. 中英文拼写纠错开源框架梳理

    一.中文: 1.Pycorrector:https://github.com/shibing624/pycorrector 当前主流的中文纠错框架,支持规则和端到端模型 2.FASPell:https ...

  7. 2020 年 中英文拼写纠错开源框架梳理

    一.中文: 1.Pycorrector:https://github.com/shibing624/pycorrector 当前主流的中文纠错框架,支持规则和端到端模型 2.FASPell:https ...

  8. 常用Linux命令及其作用(超详细,带演示)

    常用Linux命令及其作用(超详细,带演示) 文章目录 常用Linux命令及其作用(超详细,带演示) 1. 提前了解 1.1 终端命令格式 1.2 --help 1.3 man command 查询使 ...

  9. Nginx实战部署常用功能演示(超详细版),绝对给力~~~

    前言 上次分享了一些开发过程中常用的功能,但如果到真实环境中,其实还需要一些额外的配置,比如说跨域.缓存.配置SSL证书.高可用等,老规矩,还是挑几个平时比较常用的进行演示分享.上篇详见Nginx超详 ...

最新文章

  1. c语言程序的标识符分类,华中科技大学计算机学院C语言程序设计标识符.PPT
  2. 学生电脑哪个牌子好_专卖工作服哪个牌子好
  3. 开发函数计算的正确姿势——使用交互模式安装依赖
  4. J2EE团队与DotNet团队如何合作开发一个系统?
  5. 用户账号系统(python)
  6. 的引用_左值、右值、左值引用、右值引用
  7. 利用apache限制IP并发数和下载流量控制
  8. vlan 动态ospf综合网络配置
  9. AB=C型向量分解思路思考
  10. mac安装helm工具_部署利器 helm v3 安装以及使用指南
  11. Mirror--自增键在镜像中的影响
  12. 图神经网络 图像处理,神经网络与图像处理
  13. oracle切割字符串函数,Oracle字符串分割函数
  14. Java-ForkJoinPool详解
  15. numpy.pad对图片进行填充
  16. Unittest-单元测试3
  17. Epic League 推出支持 Free to Earn 的 RPG 游戏 Dark Throne
  18. 计算机相关专业提升学历的解决方案(博士研究生)
  19. 字符串转utf8编码
  20. C#Mysql学生信息管理系统

热门文章

  1. 区块链项目如何包装?点击查看详细流程
  2. 【软件分析/静态程序分析学习笔记】2.中间表示(Intermediate Representation)
  3. 麦肯锡报告:汽车行业如何依靠AI腾飞?
  4. ITU-RBT.656视频标准接口SAV/EAV分析
  5. IP Spoof技术介绍
  6. android sudio 如何获取Sha1(调试版和发布版)
  7. FPGA纯verilog实现视频拼接,纯逻辑资源搭建,提供4套工程源码和技术支持
  8. let const var 总结
  9. LSTM时间序列预测代码超通俗解释(MATLAB)
  10. nodejs插入图片url到excel表中