原文链接:http://chenhao.space/post/3423f471.html
语言模型是用来计算一个句子的概率的模型,通俗的说,语言模型是用来判断一句话从语法上是否通顺。
如下:
![](https://i-blog.csdnimg.cn/blog_migrate/2c6e89131ce50fd52d2157bd89484e7d.png)
通过概率计算得出正确的句子顺序:
![](https://i-blog.csdnimg.cn/blog_migrate/1672b4b30337fe1e4497adfda0f1bb1f.png)
N-gram(n元语言模型)
Unigram(一元语言模型)
当n=1时,称为Unigram,一元语言模型假设词语之间是相互独立的。
![](https://i-blog.csdnimg.cn/blog_migrate/4029b9eac1705b163d08ae1091f5006a.png)
缺点:不考虑单词之间的顺序。
Bigram(二元语言模型)
n=2时,称为Bigram。当前词的出现概率与前一个词有关,考虑了两个单词之间的顺序。
![](https://i-blog.csdnimg.cn/blog_migrate/3dfd10eb65b4e1c39af93028dea3aae2.png)
Trigram(三元语言模型)
n=3时,称为Trigram。当前词的出现概率与前两个词有关。
![](https://i-blog.csdnimg.cn/blog_migrate/7f7223bef931d911f83eff3601d67052.png)
估计语言模型的概率
Unigram模型的概率计算
![](https://i-blog.csdnimg.cn/blog_migrate/d22ff982a4e01d42f6014ff2817fe97d.png)
Bigram模型的概率计算
![](https://i-blog.csdnimg.cn/blog_migrate/64039fa4817b624f527aba8fb6b23757.png)
Trigram模型的概率计算
![](https://i-blog.csdnimg.cn/blog_migrate/a026881c63da77bca923cf47cdda7964.png)
评估语言模型指标
Perplexity
计算过程:
![](https://i-blog.csdnimg.cn/blog_migrate/ebcb10e61358d58b3e326a620803a01a.png)
Perplexity的值越小,说明模型越好。
![](https://i-blog.csdnimg.cn/blog_migrate/ae5485a5cc0c594ab913d04e5919d74f.png)
还有其他的一些评估语言模型的方法,根据不同的应用场景,使用不同的评估方法。
Smoothing(平滑操作)
Add-one Smoothing
Add-one Smoothing也称为拉普拉斯平滑(Laplace Smoothing)。
![](https://i-blog.csdnimg.cn/blog_migrate/3fba9287a47140b7dbd606dc6a240789.png)
分子上加1是为了保证分子不为0,分母上加V(词典的大小)是为了保证概率之和为1。
![](https://i-blog.csdnimg.cn/blog_migrate/ee9f93250145b97e876d63d0953cd3f2.png)
Add-K Smoothing
Add-K Smoothing可以看作Add-one Smoothing的特例,当K=1时,Add-K Smoothing也就等于Add-one Smoothing。
![](https://i-blog.csdnimg.cn/blog_migrate/039c3a3c35dd1222ad24ab276bdc7bd6.png)
K如何选择呢?
![](https://i-blog.csdnimg.cn/blog_migrate/c6386310a988b1a78753d0cbadddc723.png)
Interpolation
核心思想:在计算Trigram概率时同时考虑Unigram、Bigram、Trigram出现的频次。
![](https://i-blog.csdnimg.cn/blog_migrate/a235062fa431a1d131e61d9f4c72b84a.png)
Good-Turning Smoothing
![](https://i-blog.csdnimg.cn/blog_migrate/c660a61e56c70b085b1357399b124642.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0a741f76411c001f103c918e4e8d4d51.png)
![](https://i-blog.csdnimg.cn/blog_migrate/08eff78c6754f83fb55012f8343b3fda.png)
缺点: 当计算频次为n的概率需要依赖n+1频次的概率,如果n+1次的概率为0怎么办?
解决: 利用机器学习方法拟合曲线去估计n+1次的概率。
![](https://i-blog.csdnimg.cn/blog_migrate/8dcfb7faa3ffc8e02ca9c84c9766f95d.png)
利用语言模型生成句子
Unigram情况下
![](https://i-blog.csdnimg.cn/blog_migrate/d8d5d21bfc3a53157a41fb99f0ede225.png)
利用Unigram模型生成的句子没有逻辑性。
Bigram情况下
![](https://i-blog.csdnimg.cn/blog_migrate/5067f5a24fc0190380e8c75cbdecd573.png)