NLP《语言模型》

前言,上一篇我们学习了一些基于醉打匹配规则的分词方法,这一篇我们介绍基于概率统计的方法之一,概率语言模型LM。

一:什么是语言模型?
每一句话,都是由若干个词语组成,这些词语的排列组合由若干种,但是只有少量的句子是能被该语言所理解的。中文有中文的语言习惯,英语有英语的语言习惯,那么怎么知道某个句子某个句子Sentence是不是说的是 “正常话” 呢?是不是能被人理解的话呢?

假如存在一个评分机制,score(美国, 特朗普)那么一定是大于score(英国, 特朗普)的,我们需要建立这么个评分机制。

二:什么是概率语言模型?
给每个句子赋予一定的概率计算过程,得到这个句子的概率值P(S),根据P(S)的大小来决定句子的真实程度,越像人话的句子P(S)越大,越不像人话的句子概率越小。假设句子由若干词语组成,S=w1,w2,w3,w4…wn公式如下:
在这里插入图片描述

三:马尔科夫假设,N-gram模型,
我们可以看到原始的计算P(S)可能存在很长的条件概率的计算,者带来了非常大计算量和存储量,在实际应用上是不可能采用的,于是就有了马尔可夫假设来逼近和近似于原计算公式。
这里需要提到有限视野假设,即每一个词语出现的概率只跟前面的n-1个词语有关,不再严格要求全部相关了。新的式子如下:
在这里插入图片描述

以此类推 (忽略细节啊):

我们发现相关变量n越少,计算和存储的量越小,但是呢越无法接近于真实场景,有时候一句个词语跟前后很多词语相关。但是反过来说,n越大,越能反应真是情况,但是带来了巨大存储和计算量。N如何选取是一个权衡的过程。

四:怎么学习(得到)这么个模型?
我们已经知道了,句子是由词语排列组合而成的,每一个组合都是可以通过计算一个概率值来判断合理性的程度,通过马尔科夫假设可以简化计算。

如何计算各个条件概率值呢,首先我们需要给个非常大预料库,对每一种词语的条件概率进行统计。
在这里插入图片描述

通过统计各个条件概率的值,即可学习到该N-gram的语言模型。

在这里插入图片描述

事实上,自然语言处理方向上由很多的平滑方法,主要包括有:

加法平滑
古德-图灵(Good-Turing)估计法
Katz平滑方法
Jelinek-Mercer平滑方法
Witten-Bell平滑方法
绝对减值法
Kneser-Ney平滑方法

概率出现0就是不平滑,我们需要消除这种现象,就是给他赋予一个很小的概率值,以加法平滑为例。
在这里插入图片描述

一般情况下λ取值是1,N分母加上Nλ,是为了尽量保证概率和为1,当出现概率为0 的时候,通过该式子可以做到平滑效果,其他的暂时不细说了,有兴趣可以自行百度学习。

其他的技巧:我们可以看到概率是个很小的值,连续乘法会更小,为了不出现-NaN的情况,也就是溢出的情况,一般对概率取log函数(把乘法操作转成假发操作),然后求相反数,也就是说我们希望P(S)越大越合理,也就是希望(-logP(S))越小月合理。

五:其他语言模型
除此之外还有其他的语言模型,在以后的学习力慢慢讲解。

HMM隐式马尔科夫
CRF条件随机场
NNLM前馈神经网络语言模型
RNNLM循环神经网络语言模型

猜你喜欢

转载自blog.csdn.net/qq_29367075/article/details/109062586