深入浅出语言模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/John_xyz/article/details/81984377

语言模型主要有统计语言模型(n-gram语言模型)和 神经网络语言模型等。下面分别介绍这两个语言模型以及两个模型之间的异同

n-gram语言模型

语言模型简单来讲,就是计算一个句子的概率,更确切的说是计算组成这个句子一系列词语的概率。举个简单的例子:

s = “The cat jumped over the paddle”

一个好的语言模型应该会给这个句子比较高的概率。因为这个句子在语义语法上都没有任何问题。我们可以用如下的公式来计算概率
P ( w 1 , w 2 , . . . , w n ) = P ( w 1 ) P ( w 2 | w 1 ) P ( w 3 | w 1 , w 2 ) . . . P ( w n | w 1 , w 2 , . . . w n 1 )

在统计语言模型中为了减少参数数量,基于马尔可夫假设,通常采用n-gram模型,我们可以认为下一个词的出现仅依赖于他前面的一个或者 n 个词,如果n=1,即假设每个单词之间相互独立,那么就会得到uni-gram表达式或者n=2的bi-gram模型去表示,因为,下一个单词和之前一个单词是有很强的关联性

  • Unigram model
    P ( w 1 , w 2 , w 3 , . . . , w n ) = i = 1 n P ( w i )

  • Bigram model

  • P ( w 1 , w 2 , w 3 , . . . , w n ) = i = 2 n P ( w i | w i 1 )

一般来讲,n一般不会超过3, 否则参数空间过大,数据稀疏严重,对于非常对多词对的组合,在语料库中没有出现,依据最大似然估计得到的概率将会是0。

当然,对于n-gram模型来说,有很多的平滑方法。即对频率为0的n元对进行估计,典型的平滑算法有加法平滑、Good-Turing平滑、Katz平滑、插值平滑,等等。
例如加法平滑
P ( w i | w i n + 1 , . . . , w i ) = C ( w i n + 1 , . . . , w i 1 , w i ) + δ C ( w i n + 1 , . . . , w i 1 ) + N δ

神经网络语言模型

循环神经网络可以将任意长度的上下文信息存储在隐藏状态中,而不仅限于n-gram模型中的窗口限制,RNN的神经语言模型结构如下图1所示,假如针对一句话“大海的颜色是蓝色的”,其中包括了三个部分:

  • Embedding层 将输入单词 w_i 表示为实数向量
  • 循环神经网络
  • Softmax层,针对输入 x i 输出为 y ^ i 为一个向量 [ y ^ i , 1 , y ^ i , 2 , . . . , y ^ i , | V | ]

因此每一步的输出结果表示在上下文的情况下,该位置的单词是单词表中单词的概率,我们希望概率最大的单词就是真实的结果输出:
此处输入图片的描述

扫描二维码关注公众号,回复: 3028947 查看本文章

n-gram语言模型和神经语言模型的异同

  • 共同点:都是计算语言模型,将句子看作一个词序列,来计算句子的概率
  • 不同点:
    • 计算概率方式不同,n-gram基于马尔可夫假设只考虑前n个词,nnlm要考虑整个句子的上下文
    • 训练模型的方式不同,n-gram基于最大似然估计来计算参数,nnlm基于RNN的优化方法来训练模型,并且这个过程中往往会有word embedding作为输入,这样对于相似的词可以有比较好的计算结果,但n-gram是严格基于词本身的
    • 循环神经网络可以将任意长度的上下文信息存储在隐藏状态中,而不仅限于n-gram模型中的窗口限制

语言模型评价指标

PPL(Perplexity)是用在自然语言处理领域(NLP)中,衡量语言模型好坏的指标。它主要是根据每个词来估计一句话出现的概率,并用句子长度作normalize,公式为

P P ( s ) = P ( w 1 , w 2 , . . . , w n ) 1 N
= 1 ( w 1 , w 2 , . . . , w n ) n

这个式子可以这样理解,PPL越小,p(s)则越大,一句我们期望的sentence出现的概率就越高

训练n-gram语言模型的工具

  • 用SRILM构建语言模型

参考文献:
https://www.zhihu.com/question/29456588

猜你喜欢

转载自blog.csdn.net/John_xyz/article/details/81984377