语言模型(一)—— 统计语言模型n-gram语言模型

作为NLP的基础知识,语言模型可能是我们最早接触的知识点之一了,那么语言模型到底是什么呢?在看过一些文章之后我最后形成了我自己的理解:语言模型就是计算词序列(可以是短语、句子、段落)概率分布的一种模型,它的输入是文本句子,输出是该句子的概率,这个概率表明了这句话的合理程度,即这句话符合人类语言规则的程度。

或者我们可以这么理解:传统的语言模型是基于词袋模型(Bag-of-Words)和one-hot编码展开工作的,即在传统的语言模型中要生成一个句子,其实是拿一堆词语进行拼凑,拼凑出一个句子后我们需要有一个评委来对这个机器生成的句子进行打分和评价,语言模型就是这么一位评委,它会给每个句子打出一个概率值,以表明他们与人类语言的接近程度。

比如,词袋中有这么几个词:

“小明”,‘’牛奶,”桌上”,“打翻”,“了“,”的”

如果是我们人类来造句,可能结果是:

“小明打翻了桌上的牛奶“

那么机器也造了两个句子:

“小明打翻了桌上的牛奶“

”小明牛奶打翻的桌上了“

那么语言模型就要出来了,它出来给机器造的两个句子进行打分,理想的状态是给第一个句子打一个高的分数(比如所得的概率值是0.8),给第二个句子打一个较低的分数(概率值0.2),这就是语言模型要做的事。即从数学上讲,语言模型是一个概率分布模型,目标是评估语言中任意一个字符串的生成概率p(S),其中S=(w1,w2,w3,…,wn),它可以表示一个短语、句子、段落或文档,wi取自词表集合W。利用条件概率及链式法则我们可以将p(S)表示为:

image-20200907234359156

即一个句子生成可以理解为由m个单词共同出现组成,而这些单词又可以看成是词序列中的一员,第i个单词的出现依赖于它的前i-1个词出现的概率。

这样的方法看似已经可以了,但是会至少有以下两个问题:

1.参数量巨大,难以计算。

2.每一部分的概率怎么求得?

带着这两个问题我们来看由上面最原始的语言模型演化出来的统计语言模型——N-gram语言模型。

统计语言模型-N-gram语言模型

什么是N-gram

上面的公式中,某一个词出现的概率与它前面所有词出现的概率有关,数据稀疏问题会导致计算量可能会巨大,而N-gram模型引入了马尔科夫假设,这是一种独立性假设,在这里说的是某一个词语出现的概率只由其前面的n−1个词语所决定,这被称为n元语言模型 ,即n-gram,当n=2时,相应的语言模型就被称为是二元模型

这样之前的统计语言模型在简化成N-gram语言模型之后就可以表示为:

image-20200908075832685

Bi-gram(N =2):

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值