aitken插值方法的c++代码_n-gram语言模型-插值平滑

本文探讨了不同类型的平滑技术,如插值平滑和Katz回退平滑,它们如何在训练和预测阶段影响n-gram模型。重点介绍了平滑目的及对句子合理性和校对的影响,指出对某些应用如校对影响不大。此外,还提到了kenlm库和Python接口的选择。
摘要由CSDN通过智能技术生成

613c61e0e91e82153aa1742dd2db160e.png

先纠正一下,根据平滑方法的不同,平滑操作既有在训练时候做的,也有在预测时候做的。平滑的目的,就是防止0条件概率,从实际用n-gram做句子合理性分析来看,用不用平滑对效果提升没啥作用。平滑就是在条件概率为0时,防止整个句子的概率为0,人为按一定规则,给0条件概率一定的值。对于句子合理性分析或者校对来说,就是这些0概率点才有可能成为出错的位置,当然我用的是可能,也有特别大的可能就是训练集里没有出现过,所以我才说用不用平滑对于实际效果没啥影响。当然,我这里说的校对应用,对于其他应用平滑是有作用的,有兴趣的小伙伴可以去看《统计自然语言处理》。大致浏览《统计语言建模与中文文本自动校对技术》没有看到作者使用平滑操作。

1. 插值

60e02e592d071127130bff5a750ba47b.png

需要注意

的取值不同的实现库计算方法应该不一样,我们后续在介绍库的时候再说吧。显然插值平滑是对条件概率计算进行修改的,也就是说这种平滑方法是可以在训练阶段完成的。这里我们又把1-gram,2-gram,3-gram的条件概率公式列了一遍,同时说明了条件概率公式中分子分母的意义。这些概率主要是在训练过程中计算,详见baiziyu:n-gram语言模型-模型训练与预测。

我以为今天能把全部的平滑方法全部写了,看来想多了,虽然不打算用,不过既然要整理就整理彻底一点儿。后续怎么着都得验证,估计srilm模型的源码怎么着都得再看了,之前使用的时候我看过它计算概率的过程,而katz回退平滑是直接用示例测出来的,看看这次能不能仔细阅读一下。不过,我现在是一点儿都不想用visual studio来去编译看C系代码了,也不想在windows下安什么cygwin,又不能忍受linux的那个界面,这次试试mac上用eclipse吧。这么细抠的话,速度肯定会很慢。kenlm可能也行,pycorrector用了kenlm这个库,不过依然也是C++代码,不过它的Python接口应该可以方便的用。我在考虑看哪个呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值