![613c61e0e91e82153aa1742dd2db160e.png](https://i-blog.csdnimg.cn/blog_migrate/5f8073a8f25122bf493fe32feeb3c585.jpeg)
先纠正一下,根据平滑方法的不同,平滑操作既有在训练时候做的,也有在预测时候做的。平滑的目的,就是防止0条件概率,从实际用n-gram做句子合理性分析来看,用不用平滑对效果提升没啥作用。平滑就是在条件概率为0时,防止整个句子的概率为0,人为按一定规则,给0条件概率一定的值。对于句子合理性分析或者校对来说,就是这些0概率点才有可能成为出错的位置,当然我用的是可能,也有特别大的可能就是训练集里没有出现过,所以我才说用不用平滑对于实际效果没啥影响。当然,我这里说的校对应用,对于其他应用平滑是有作用的,有兴趣的小伙伴可以去看《统计自然语言处理》。大致浏览《统计语言建模与中文文本自动校对技术》没有看到作者使用平滑操作。
1. 插值
![60e02e592d071127130bff5a750ba47b.png](https://i-blog.csdnimg.cn/blog_migrate/6dbd188ec90757ce8e8f91be0343d086.jpeg)
需要注意
我以为今天能把全部的平滑方法全部写了,看来想多了,虽然不打算用,不过既然要整理就整理彻底一点儿。后续怎么着都得验证,估计srilm模型的源码怎么着都得再看了,之前使用的时候我看过它计算概率的过程,而katz回退平滑是直接用示例测出来的,看看这次能不能仔细阅读一下。不过,我现在是一点儿都不想用visual studio来去编译看C系代码了,也不想在windows下安什么cygwin,又不能忍受linux的那个界面,这次试试mac上用eclipse吧。这么细抠的话,速度肯定会很慢。kenlm可能也行,pycorrector用了kenlm这个库,不过依然也是C++代码,不过它的Python接口应该可以方便的用。我在考虑看哪个呢。