NLP-语言模型

目录

一、Noisy Channel Model

二、语言模型

1.句子的概率

2.马尔科夫假设

3.语言模型:N-gram

①Unigram

②Bigram

4.计算语言模型的概率

5.评估语言模型

6.平滑

①拉普拉斯平滑

②Interpolation


一、Noisy Channel Model

该模型就是自然语言处理中常用的模型,它是根据贝叶斯定理得来的,用于把信号源转换成文本,信号源可以是多种,可以适用于多个场景。

比如机器翻译:p(中文|英文) 正比于 p(英文|中文)p(中文)

那么text就是中文,信号源source就是英文。给定了中文,翻译出英文,但通常p(英文|中文)只能是翻译的堆叠,并没有什么语法,因此需要通过p(中文)来保证输出的内容符合语法。而这个p(text)就是语言模型。

除了机器翻译,还适用于拼写纠错、语音识别、密码破解等。前半部分的p(source|text)是用来做翻译、纠错、识别、破解的,但不保证语法正确,因此需要语言模型p(text)。

二、语言模型

语言模型的主要作用,是用来判断是否一句话从语法上通顺。

比如:今天是周日VS今天周日是,通过语言模型,我们期望得出:前者的概率大于后者的概率。

1.句子的概率

一个句子的概率,当进行完分词之后,可以通过概率的链式法则计算,举例如下:

那么如何去计算呢?比如我们应该怎样计算P(休息 | 今天,是,春节,我们,都,休息)?

其实很简单

①在语料库中,找到“今天是春节我们都”,看看后面跟的词是什么。

②假设文章中有2句话包含“今天是春节我们都”,一个是“今天是春节我们都休息”,一个“今天是春节我们都放假”,那么P(休息 | 今天,是,春节,我们,都,休息)就是1/2,但这个方法不太好,因为句子长,不容易在文章中找到,会有稀疏性的问题。

2.马尔科夫假设

Markov Assumption简单来说就是对条件概率进行近似,将有多个条件的条件概率,近似为只有1-3个条件的条件概率,举例如下:

如果只跟1个条件,就是first order马尔科夫假设,2个条件,就是second order马尔科夫假设,以此类推。

举例如下:

假设左边是已经训练好的语言模型,那么“今天是周日”和“今天周日是”这两句话,我们如果用first order马尔科夫假设进行概率计算,所得结果是如下所示:

3.语言模型:N-gram

①Unigram

相当于单词之间相互独立,根据下面的例子来看,显然效果不太好,它无法判定单词的前后顺序。

②Bigram

Bigram来自于1st order马尔科夫模型,这个模型中考虑了两个单词之间的顺序。根据下面的例子可以看出,Bigram可以区分开不同顺序的单词所组成的句子。

更高阶的统称为N-gram,就是考虑三个单词之间的顺序,更为复杂。一般不会超过6,最常用的是Bigram

4.计算语言模型的概率

①P(单个的词) = 这个词出现次数/语料库总词数

②P(A|B):假如文章中出现了BA, BC,那么P(A|B) = 1/2

举例如下:

语料库共19个词,出现了2次“今天”,则P(今天)=2/19

“今天”后面跟的词,一个是“的”,一个是“上午”,则P(上午|今天) = 1/2

5.评估语言模型

训练好语言模型后,我们可以通过让模型去填空的方法去评估模型好坏,根据填空完之后得到的句子的准确性判断:

 不过通过句子来判断会很麻烦,我们还是让模型继续填词,但这次我们直接看它填的词所对应的概率及条件概率,通过一系列计算,使用Perplexity进行判断。

计算方式如下:

①取所有模型填上的词的概率及条件概率,称为likelihood

②对所有的likelihood取对数

③对所有的log-likelihood取平均数x

④代入2^(-x)中,取最小值

6.平滑

由于计算概率的时候,只要有一个词没出现在语料库中,那么分子就会有1项为0,导致整个概率直接为0,因此我们需要对概率加上一个平滑项。

①拉普拉斯平滑

在分子上+1,分母上+V,V是词典的大小,这样加完之后,其他的所有可能性算出来之后,求和为1。举例如下:

 也可以不加1,分子加k,分母加kV

 k可以由机器自动选择:把k看做一个参数,得到一个关于k的函数f(k),训练好模型,可以令perplexity=f(x),那么我们就需要最小化f(x)即可得到最佳的k。

②Interpolation

场景:当语料库中缺少2个短语:in the kitchen, in the arboretum,那么对于模型来说,这两个短语是同等对待的,因此计算条件概率的时候也是相同的。但实际上,在语料库中出现了kitchen这个单词,并且次数很多,因此,在计算条件概率的时候,比如使用trigram的方法,也同时考虑了bigram以及unigram,并且对每一个语言模型赋予权重。(注意,三个模型的权重之和为1)

 

更一般地:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值