常见的语言模型:N-gram,决策树,最大熵模型,隐马尔可夫模型,条件随机场,神经网络等

n-gram语言模型介绍:

根据条件概率公式

由于要计算wi出现的概率,就要统计前i-1个词出现的情况,假设词库中有n个词,就有n^(i-1)种可能,这样没增加一个单词,模型计算成本都指数倍的增长。

而且有可能前面i-1个词同时出现的概率为0,那么这样的话,就不能符合大数定律。

那么n-gram模型就是,这个词出现只于前面n个词相关,不考虑前面全部的词,也叫n-gram模型。

一元模型,二元模型,三元模型

所以n不能太大,也不能太小。

计算过程:

p(want|I) = \frac{p(want, I)}{p(i)}=\frac{count(want,I)}{count(I)}

那么count(I)是可以统计出来的,count(want, I)也是可以统计出来的。

有计算过程可以看出一旦其中某个概率是0,那么连乘后总体概率也是0。

NPLM神经网络语言模型

NPLM是一个经典的概率语言模型,沿用了N-gram思路,将w前n-1个词作为w的上下文context(w)

取前面n-1个词作为X,词本身作为y。

1.输入层是前面n-1个词的词向量(这个词向量一开始训练时是随机的),假设词向量长度是m。

2.将所有的词向量首尾拼接m(n-1)。

3.将拼接的词向量经过全连接在经过一个隐层(经过非线性变化tanh)。

4.再经过全连接层,最后经过softmax多分类。

softmax输出是一个列向量,词表中有多少个词,就有多少个输出,与真实值求loss不断迭代调整输入的词向量和参数W和U。

当训练完成后,就得到了N-gram神经语言模型,和副产品词向量(上图中的W,U)。

以后来新的词,就去查找当时训练完成后这个词对应的词向量,再入模型中经过W,U等等变化,来去预测下一个词应该是什么。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐