英文拼写纠错-超详细演示

一、详细过程

       拼写纠错任务目标是找到概率最大的 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)的值,最终就得到结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值