[NLP复习笔记] N-gram 及基本平滑方法
1. N-gram 模型
1.1 N-gram 模型介绍
例如:
-
当
时,模型被称为"unigram",即单词被当作独立的个体来考虑。 -
当
时,模型被称为"bigram",此时考虑的是两个连续单词的序列。 -
当
时,称为"trigram",考虑的就是连续三个单词的序列。
1.2 链式法则
假设有一个由
其中
我们都知道条件概率公式:
可以将条件概率改写为:
由此可以推广到
这就是 链式法则。一个由
1.3 马尔科夫假设
前面由链式法则得到的句子概率表示,显然是难以计算的。所以,我们有必要引入 马尔可夫假设 (
对于一个句子的概率
由此,我们可以得到一元模型,二元模型,三元模型的定义:
-
当
时,即一元模型(unigram model): -
当
时,即二元模型(bigram model): -
当
时,即三元模型(trigram model):
以此类推,可以扩展到四元模型,五元模型。
2. N-gram 概率计算
2.1 极大似然估计
极大似然估计(
对于
我们以一元语法模型为例,一个二元组的概率可表示为:
其中
推广到
2.2 典型示例
用二元语法进行概率计算,采用

注意:
在计算概率时,采用传统的乘法,也许会导致 下溢出(underflow),此时就需要转换为对数形式进行计算:
即:
概率(根据定义)小于或等于 1,所以我们相乘的概率越多,乘积就越小。 将足够多的 n-gram 相乘会导致数值下溢。 通过使用对数概率而不是原始概率,得到的数字并不那么小。
3. 困惑度
困惑度(Perplexity) 是衡量语言模型性能的一种指标,其衡量的是模型预测一个样本序列的能力有多好。适用于评估诸如
一个好的语言模型是可以最优地预测未遇到过的测试集,使得句子的概率最大化。困惑度是测试集的逆向概率,并由单词总数 N 进行归一化处理。
困惑度有如下公式:
显然 困惑度越小即则概率越大。
若计算的是一元困惑度,则表示为:
若计算的是二元困惑度,则表示为:
在理想情况下,如果模型对每个单词的预测都是完美的,则困惑度为 1。通常情况下,困惑度会大于 1,困惑度值越小表示模型预测能力越好。
4. 平滑方法
在NLP中,数据平滑技术通常用来解决极大似然估计遇到的零概率问题。
4.1 加一平滑
加一平滑(Additive smoothing),也称为拉普拉斯平滑(Laplace smoothing),核心思想是给每个统计单元出现的次数加一,此时便不会有零概率值。
最大似然估计如下:
经过加一平滑后,变为:
其中
不过,拉普拉斯平滑方法比较粗糙,尤其是在词汇量很大或者数据集很大的时候,每次都增加一个单位可能会导致概率估计偏向于不太准确。
4.2 线性插值平滑
线性插值平滑(Interpolation smoothing)基本思想就是利用低元N-grams模型对高元N-grams模型进行线性插值。
4.3 回退平滑
回退算法(Katz smoothing)又称为 Back-off 回退。当有足够计数时,使用N元语法;否则使用N-1,N-2,… ,bigrams, unigrams。
其中
参考
一切都是命运石之门的选择,本文章来源于博客园,作者:MarisaMagic,出处:https://www.cnblogs.com/MarisaMagic/p/17947487,未经允许严禁转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY