语言模型(langurage model)

语言模型

只要是提到模型这个词,我就会感到很抽象,但是如果把它理解为一系列的函数或者映射,就会有更加直观的理解。对语言模型来说,输入就是一个句子,输出就是这个句子存在概率。这个从输到输出的函数,就可以认为是模型。 这是个人的不严谨的理解。
本博客的内容如下(内容来自collins 在coursera在线课程的讲义):

  • 简介
  • 马尔可夫模型
  • 三元语言模型(Trigram Language Model)
  • 平滑处理
  • 其他主题

简介

首先给定一个包含若干句子的语料库,定义一个词表V, 包含了所有出现在语料库中的单词。譬如,V可能长这样:
V={the,dog, laughs, saw, barks, cat,…}
实际上V可能非常大,但我们认为它是一个有限集。这样一个句子可以表示为
x1x2x3…xn
其中xn为一个停止符stop,x1…xn-1属于V.例如
the dog barks stop
the cat saw the dog stop
the stop
cat cat cat stop
stop

使用 V+ 表示所有使用V中词汇生成的句子。由于句子可以为任意长度,所以 V+ 是一个无限集。
定义一(语言模型):一个语言模型包含一个有限集V,以及一个映射p(x1,x2,…,xn)满足:
1. 对任意 <x1,x2,...,xn>V+,p(x1,x2,...,xn)>0
2.

<x1...xn>V+p(x1,x2,...xn)=1

因此p(x1,x2,…xn)是一个 V+ 上的一个概率分布。

那么如何求这个概率分布具体每个句子的概率值呢?定义c(x1,x2…xn)为句子x1x2..xn在语料库中出现的次数,N是语料库中所有的句子数目。显然我们可以使用p(x1,x2…xn)=c(x1…xn)/N 来求句子x1,x2…xn的概率。但是这种简单的方法对于语料库中没有的句子,它的概率会等于0.尽管句子的单词全部是属于V的。

马尔可夫模型


固定长度序列的马尔可夫模型

马尔可夫模型实际上就是一个条件独立性假设。在求p(x1,x2…xn)时,
p(x1,x2…xn)=p(x1)p(x2|x1) *p(x3|x1x2) *p(x4|x1x2x3) … p(xn|x1x2…xn-1)

一阶马尔可夫假设p(x3|x1x2)=p(x3|x2)…即上面的每一项条件概率都等于它前面一个元素的条件概率。则:
p(x1,x2….xn)=p(x1)*p(x2|x1) *p(x3|x2)…. *p(xn|xn-1)

二阶马尔可夫假设为每一项的条件概率等于前面两项的条件概率。

p(x1,x2…xn)=p(x1)*p(x2|x1) *p(x3|x1x2) *p(x4|x2x3)….p(xn|xn-2,xn-1)
以此类推

变长的马尔序列的马尔可夫模型

变长的马尔可夫模型是一个序列生成的模型:
1 初始化i=1, 同时 x0 = x1 =*( x0 和x 1 可以看成是两个虚拟节点)
2 按照概率p(xi|x i2 ,x i1 )生成x i
3 如果x i =STOP,就返回序列x1…xi.否则,设置i=i+1并重复步骤2.

Trigram Language Models(三元语言模型)

基本概念

p(x1,x2,x3….xn)= ni=1 p( xi|xi2,xi1)
其中 x0 = x1 =*. xn =STOP.

定义(三元模型):一个三元模型包含一个有限集V,和参数:p(w|u,v).对每一个u,v,w如果w v STOP 同时 u,v v ,在三元模型下,一个句子的概率为p(x1,x2…xn)= ni=1p(xi|xi2,xi1) 其中 x0 x1 都是伪节点*。

有个这个模型,现在的问题是如何根据语料来估计模型的参数p(w|u,v).

最大似然估计

对于参数估计来说,最简单的当然要用最大似然估计了。具体的对于p(w|u,v)
统计语料库中uvw与uv的次数,然后相除就可以得到p(w|u,v).
如p(barks|the,dog)=c(the,dog,barks)/c(the,dog).
但是这种简单的参数估计方法存在如下两个问题:

  • 如果分子项为零,那么概率就就被定义为了0.也就是语料中没有相应的短语。可能是语料库不够大而导致的数据稀疏。
  • 如果分子等于零,概率值求不出来。

模型的评估

对于一个学习好的模型,如何评估它的好坏呢
方法是给定一个测试数据集,里面有m个句子s1,s2,…,sm.对于每个句子si,计算它在当前模型下被生成的概率。对所有句子的概率求积。即:
mi=1p(xi)
这个值越大,说明模型越好。

参数估计的平滑处理

前面提到由于数据稀疏而导致的参数估计问题。这里讨论两种方法,第一种是linear interpolation,第二种是discounting methods.

linear interpolation

定义trigram,bigram,以及unigram 最大似然估计为:
p(w|u,v)=c(u,v,w)/c(u,v)
p(w|v)=c(v,w)/c(v)
p(w)=c(w)/c()

linear interpolation就是使用三个估计,通过定义
p(w|u,v)=c1*p(w|u,v)+ c2 * p(w|v) +c3*p(w)
其中c1>=0;c2>=0;c3>=0且
c1+c2+c3=1;

对于如何选取合适的c1,c2,c3。其中的一个方法是使用一个验证集数据,选取的c1,c2,c3使得验证集的概率最大。另外一种方法是另c1=c(u,v)/(c(u,v)+t),
c2=(1-c1)* c(v)/(c(v)+t)),c3=1-c1-c2. 其中t为一个待定参数。t的取值仍然可以是最大化验证集。

discounting Methods

考虑一个二元模型。也就是求参数p(w|v)
首先定义一个discounted counts.对任意的c(v,w)只要c(v,w)>0,就定义
c (v,w) =c(v,w)-r;
其中r是一个0到1之间的数。
然后对于任意的p(w|v)=c (v,w) /c(v);这样等于对每个不等于0的c,都从中抽取了r.然后可以将r分配给那些c等于0的短语,防止出现零的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值