文献阅读记录(十四)2023-07-31

拼写错误纠正(Spell Correction)例如:用户输入天起,纠正为天气。

有两种情况,一种是单纯的拼写错误,另一种是不合适当前内容,即时态,形式等不对。

在只考虑单词的情况下最简单的方法就是计算编辑距离(edit distance),即看需要多少步操作才可以将现有单词转化为目标单词。一般有三个操作:insert,delete,replace,每个操作假定一个单元的成本。例如将therr转化为there,需要将r->e,需要1成本。成本相同的,再根据上下文或者词频进行判断。但是要循环词典中所有的词在做判断,所以复杂度很高。

在之前,用户输入后,从词典中寻找编辑距离最小的,找到后返回,复杂度是O(v)*Edit(j)。可以采用在用户输入后,生成编辑距离为1,2的字符串,然后进行过滤后在返回。 

如何进行过滤,给定一个字符串s,我们要找出最有可能成为正确的字符串c,也就是

C=argmax_{c\in candidates}p(c|s)

candidates是第一步求得的编辑距离为1,2的字符串

贝叶斯公式
P(Y|X)=\frac{ P(X|Y)P(Y)}{ P(X)}
而它其实是由以下的联合概率公式推导出来:

P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)

其中 P(Y) 叫做先验概率, P(Y|X) 叫做后验概率, P(Y,X) 叫做联合概率。

所以还可以写成:

C=argmax_{c\in candidates}\frac{p(s|c)*p(c)}{p(s)}

而p(s)是用户给定字符串,所以对于任意候选字符串c来说,p(s)是一个定值,常数项。所以在经过优化后得出:

C=argmax_{c\in candidates}p(s|c)*p(c)

p(s|c)中c指正确的,s指用户输入的input,对于一个正确的字符串,有百分之多少的人写成了s的形式,可以经过统计得出。p(c),得出现频率较高的词。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值