一 序
本篇属于NLP学习笔记系列。
二 优化
通过replace(替换)、add(添加)、delete(删除)生成编辑距离为1,2 的字符串。
好处是:不依赖于词典的大小,如果词典不大,也可以不用那个这种方法。
如何过滤呢?
从数学角度来看问题定义: 给定一个字符串s, 我们要找出最有可能成为正确的字符串c, 也就是c' = argmaxp(c|s)
这里argmax算是一个数学基础,老师给解释了。知乎上找个图:
简化:c' = argmax p(c|s) => c' = argmax p(s|c) * p(c) / p(s) 这里就是贝叶斯公式
给定一个字符串s,所以我们把p(s)看做常数,不会变的。所以上面的公式 可认为
c' = argmax p(s|c) * p(c)
p(s|c) 、p(c)基于已有词库统计得到: p(s|c) 是同级query日志,所有错误的概率。 P(c)是基于单词统计全部文档出现的概率。
参考:
贪心科技NLP
https://zhuanlan.zhihu.com/p/79383099