NLP task2 N-Gram

本文详细介绍了N-Gram语言模型,包括一元、二元语言模型,并讨论了N-Gram模型在评估语句合理性及数据平滑算法中的应用。通过对Zipf定律的描述,揭示了语言中词汇分布的特点,探讨了在数据量大、维度爆炸的情况下如何处理。最后,重点阐述了拉普拉斯平滑在解决零概率问题上的作用。
摘要由CSDN通过智能技术生成

N-Gram是一种基于统计语言模型的算法

N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。

每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。

n元语法模型是基于(n-1)阶马尔可夫链的一种概率语言模型,通过n个语词出现的概率来推断语句的结构。

N-Gram: (linguistics) a contiguous sequence of n items from a given sequence of text or speech.

	N-Gram 指文本中连续出现的n个语词。

一元语言模型

unigram (plural unigrams)
(linguistics) An n-gram consisting of a single item from a sequence

由序列中的单个Item组成的n-gram

一元语言模型中,我们的句子概率定义为:
在这里插入图片描述

我们应该如何得到每个参数实例的值。用的是极大似然估计法

比如我们说我们的训练语料是下面这个简单的语料。
在这里插入图片描述
那么我们的字典为:“星期五早晨,我特意起了个大早为的就是看天空。” 22个不同词(字典中包含的词语,是去重之后的),每个词语的概率直接用极大似然估计法估计得到。
如:p(星)=1/27,p(期)=1/27,一直算到后面的空为1/27. (包含标点符号)

于是我们就需要存储我们学习得到的模型参数,一个向量,22维,每个维度保存着每个单词的概率值。
那么有同学就需要问了,来了一句话,我们应该怎么估计呢?下面我举一个简单的例子来模拟一下如何用语言模型估计一句话的概率,比如:
p(我看看早晨的天空)=p(我)*p(看)*p(看)*p(早)*p(晨)p(的)p(天)p(空)=1/271/271/27…*1/27就能够直接运算出来。
于是我们得出,只要将每句话拆开为每个单词然后用累积形式运算,这样我们就能算出每句话的概率来了。
但是这样是不是就解决我们所有的问题呢?并没有,下面我们介绍二元语言模型。

二元语言模型

介绍二元语言模型之前,我们首先来看两句话,he eats pizza与he drinks pizza,我们需要用语言模型来判断这两句话出现的概率。
好,那么我们现在用一元语言模型来分别计算这两个句子的概率大小。

p(he eats pizza) = p(he)*p(eats)*p(pizza)
p(he drinks pizza) = p(he)*p(drinks)*p(pizza)

我们可以看出,其实通过一元语言模型的计算公式,我们看不出上面两个句子的概率有多大差别,但是我们很明显知道第一句话比第二句话的概率要大的多,因为正确的表达应该就是吃披萨,而不是喝披萨。
但是由于我们用了一元语言模型,假设每个词都是条件无关的,这样的话就会导致我们考虑不到两个词之间的关系搭配,比如在这个例子中,很明显应该判断的是p(pizza|eats)与p(pizza|drinks)的概率大小比较。

这也就是二元语言模型需要考虑的问题。
我们需要计算p(

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值