人工智能-自然语言处理(NLP):N-gram语言模型【用来判断一句话语法上是否通顺】 -->语言模型的评估【Perplexity(困惑度) -->利用语言模型生成新句子】

在这里插入图片描述

用Pre-trained Model 来计算一句话符合语法的概率

在这里插入图片描述

一、联合概率链(Chain Rule)

朴素贝叶斯中使用的独立性假设为
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ) P ( x 3 ) . . . P ( x n ) (1) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2)P(x_3)...P(x_n) \tag{1} P(x1,x2,x3,...,xn)=P(x1)P(x2)P(x3)...P(xn)(1)
去掉独立性假设,有下面这个恒等式,即联合概率链规则
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 1 , x 2 ) . . . P ( x n ∣ x 1 , x 2 , . . . , x n − 1 ) (2) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2|x_1)P(x_3|x_1,x_2)...P(x_n|x_1,x_2,...,x_{n-1}) \tag{2} P(x1,x2,x3,...,xn)=P(x1)P(x2x1)P(x3x1,x2)...P(xnx1,x2,...,xn1)(2)
其中, x i x_i xi代表一个词,联合概率链规则表示句子中每个词都跟前面一个词有关,而独立性假设则是忽略了一个句子中词与词之间的前后关系。
在这里插入图片描述

在这里插入图片描述
语言模型已经训练并计算好了 p(今天)、p(今天)、p(是|今天)、p(春节|今天,是)、p(我们|今天,是,春节)、p(都|今天,是,春节,我们)、p(休息|今天,是,春节,我们,都) 这些概率的值,利用这些已经训练并计算好的概率值来计算输入到语言模型中的一句话是否符合语法的概率值。

利用联合概率直接计算一句话符合语法的概率的缺点很多句子太长了,其概率基本为0,比如:p(休息|今天,是,春节,我们,都) = 0

二、 马尔可夫性

马尔可夫性:当一个随机过程在给定当前状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的随机过程通常称之为马尔可夫过程

在这里插入图片描述

三、马尔科夫假设(Markov Assumpton)

联合概率链规则是考虑了句子中每个词之间的前后关系,即第k个词 x k x_k xk与前面 k−1个词 x 1 , x 2 , . . , x k − 1 x_1,x_2,..,x_{k−1} x1,x2,..,xk1 都有关,而马尔科夫假设则是考虑了 n n n 个词语之间的前后关系,比如 n = 2 n=2 n=2 时(2nd Order),第n个词 x n x_n xn 与前面 2 − 1 = 1 2−1=1 21=1 个词有关,即:
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) . . . P ( x n ∣ x n − 1 ) (3) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2|x_1)P(x_3|x_2)...P(x_n|x_{n-1}) \tag{3} P(x1,x2,x3,...,xn)=P(x1)P(x2x1)P(x3x2)...P(xnxn1)(3)
比如 n = 3 n=3 n=3 时(3rd Order),第 n n n 个词 x n x_n xn 与前面 3 − 1 = 2 3−1=2 31=2 个词有关,即:
P ( x 1 , x 2 , x 3 , . . . , x n ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 1 , x 2 ) . . . P ( x n ∣ x n − 2 , x n − 1 ) (4) P(x_1,x_2,x_3,...,x_n)=P(x_1)P(x_2|x_1)P(x_3|x_1,x_2)...P(x_n|x_{n-2},x_{n-1}) \tag{4} P(x1,x2,x3,...,xn)=P(x1)P(x2x1)P(x3x1,x2)...P(xnxn2,xn1)(4)

公式(3)(4)即马尔科夫假设(Markov Assumption):即下一个词的出现仅依赖于它前面的一个或几个词。

在这里插入图片描述

四、N-gram语言模型

如果对向量 X 采用条件独立假设,就是朴素贝叶斯方法。

如果对向量 X 采用马尔科夫假设,就是N-gram语言模型。

  • Bigram 在 所有N-gram中使用最多
  • N一般不超过5

1、Unigram(1-gram):基于朴素贝叶斯假设

假设所有单词都是独立的个体
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、Bigram(2-gram):基于 2nd Order 马尔科夫假设

假设所有单词只与前一个单词有关。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Trigram(3-gram):基于 2nd Order 马尔科夫假设

假设所有单词只与前2个单词有关
在这里插入图片描述
在这里插入图片描述

五、语言模型的平滑方法

训练语料库里没有出现的单词有可能在测试集里出现

零概率问题,就是在计算实例的概率时,如果某个量x,在训练集中没有出现过,会导致整个实例的概率结果是0。在语言模型的问题中,当一个词语没有在训练样本中出现,该词语调概率为0,使用连乘计算文本出现概率时也为0。这是不合理的,不能因为一个事件没有观察到就武断的认为该事件的概率是0。

1、Add-One Smoothing(拉普拉斯平滑,Laplace Smoothing)

该方法在朴素贝叶斯里用的比较多
在这里插入图片描述
分母上使用V而不是其他的任意值,是为了让所有概率相加后等于1。
在这里插入图片描述

2、Add-K Smoothing

在这里插入图片描述
如何选择 k k k 值:可以通过枚举法尝试哪个 k k k 值时最优的;或者通过语言模型在测试集上的优化来得到最优的 k k k
在这里插入图片描述

3、Interpolation

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4、Good-Turning Smoothing

该方法在语言模型里用的比较多
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Good-Turning Smoothing 方法的缺点:有些频次的单词数量为0

解决方法:通过机器学习的方法拟合出一条曲线,把缺失值填补上。

六、语言模型的评估:Perplexity(困惑度)

向待评估的模型A、B、C分别喂入一句话,计算各个模型的Perplexity,Perplexity越小的模型效果越好
在这里插入图片描述

N-gram中的N越大,语言模型的Perplexity越小,但是该语言模型也越容易过拟合
在这里插入图片描述

七、利用语言模型生成句子

1、Unigram Model

不能考虑句子的可读性
在这里插入图片描述

2、Unigram Model

可以考虑句子的可读性
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013250861/article/details/113732874
今日推荐