赞
踩
n-gram语言模型是自然语言处理中一种简单而常用的统计语言模型。它用于估计文本中的语言概率和生成文本。n-gram模型基于一个假设:一个词的出现只依赖于前面的n-1个词。因此,n-gram模型将文本中的词序列表示为连续的n个词的序列。
具体来说,n-gram模型有以下特点和步骤:
n的选择: 首先,需要选择n的值,这决定了n-gram模型中考虑的上下文的长度。常见的选择包括unigram(1-gram,单个词)、bigram(2-gram,两个连续的词)、trigram(3-gram,三个连续的词)等。
建立n-gram模型: 针对给定的文本语料库,统计每个n-gram序列的出现频率,并计算条件概率。这些概率用于估计下一个词在给定前面的n-1个词的情况下出现的概率。
计算概率: 对于一个给定的文本序列,可以使用n-gram模型来计算文本的概率。这通常涉及将文本划分为n-gram序列,然后将各个n-gram的概率相乘,得到整个文本的概率。
生成文本: 可以使用n-gram模型来生成文本,从一个起始词开始,根据条件概率选择下一个词,并不断生成下一个词,直到生成所需长度的文本或遇到终止符号。
平滑技术: 在实际应用中,为了解决数据稀疏性和零概率问题,常常使用平滑技术(如Laplace平滑、Add-One平滑)来调整概率估计。
应用领域: n-gram语言模型广泛用于文本生成、文本分类、机器翻译、拼写纠正、语音识别等自然语言处理任务中。
需要注意的是,n-gram语言模型具有局限性,主要在于它不能捕捉长距离的依赖关系,因为它只考虑n个连续词的上下文。在实际应用中,更复杂的神经网络语言模型(如Transformer模型)通常能够更好地建模语言的复杂结构和长距离依赖。但n-gram模型仍然在一些简单任务和资源受限的环境中有其用武之地。
随机变量
概率
推断
条件独立性(假设单词与单词之间没有关系)
P ( A , B ) = P ( A ) P ( B ) P(A,B)=P(A)P(B) P(A,B)=P(A)P(B)
P ( A ) = ∑ P ( A ∣ B i ) P ( B i ) P(A)=\sum P(A|B_i)P(B_i) P(A)=∑P(A∣Bi)P(Bi)
极大似然估计→对数似然估计
参数估计的方法之一
应用:
(已知序列,推测分布)已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出概率分布
基于某个已知分布推测序列的下一个值
似然估计提供了一种区分概率的方法,也是一种在所有可能性中选择单个最佳概率的策略
不同句子的语言模型概率
计算语言序列的正确概率
判断语言序列是否是正常语句
已知若干个词,预判下一个词
语言模型的用途:语音识别、上写文敏感的拼写检查、手写识别、OCR、机器翻译……
计算一个句子或一系列单词的概率
给定单词序列 W = { w 1 , w 2 , … , w n } W=\{w_1,w_2,\ldots,w_n\} W={w1,w2,…,wn},计算联合概率 P ( W ) = P ( w 1 , w 2 , … , w n ) P(W)=P(w_1,w_2,\ldots,w_n) P(W)=P(w1,w2,…,wn)
将联合概率分布转化为条件概率分布的连乘
P ( W ) = ∏ t = 1 n P ( w t ∣ w 0 w 1 … w t − 1 ) P(W)=\prod_{t=1}^n P(w_t|w_0w_1\ldots w_{t-1}) P(W)=∏t=1nP(wt∣w0w1…wt−1)
P ( W ) = ∏ P ( w i ) P(W)=\prod{P(w_i)} P(W)=∏P(wi):Unigram 一元语言模型
P ( W ) = ∏ P ( w i ∣ w 0 , w 1 , … , w i − 1 ) = ∏ P ( w i ∣ w i − 1 ) P(W)=\prod{P(w_i|w_0,w_1,\ldots,w_{i-1})}=\prod{P(w_i|w_{i-1})} P(W)=∏P(wi∣w0,w1,…,wi−1)=∏P(wi∣wi−1):Bigram 二元语言模型
P ( W ) = ∏ P ( w i ∣ w 0 , w 1 , … , w i − 1 ) = ∏ P ( w i ∣ w i − 2 , w i − 1 ) P(W)=\prod{P(w_i|w_0,w_1,\ldots,w_{i-1})}=\prod{P(w_i|w_{i-2},w_{i-1})} P(W)=∏P(wi∣w0,w1,…,wi−1)=∏P(wi∣wi−2,wi−1):Trigram 三元语言模型
……
一个不充分的语言模型,因为语言具有远距离依赖性
P ( w n ∣ w n − N + 1 n − 1 ) = C ( w n − N + 1 n − 1 w n ) C ( w n − N + 1 n − 1 ) P(w_n|w_{n-N+1}^{n-1})=\frac{C(w_{n-N+1}^{n-1}w_n)}{C(w_{n-N+1}^{n-1})} P(wn∣wn−N+1n−1)=C(wn−N+1n−1)C(wn−N+1n−1wn)
我们在面临实际问题时,如何选择依赖词的个数,即n:
更大的n:对下一个词出现的约束信息更多,具有更大的辨别力;
更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息
理论上,n越大越好,经验上,trigram用的最多,尽管如此,原则上,能用bigram解决,绝不使用trigram
n>=4时数据稀疏和计算代价又变得显著起来,实际工程中几乎不使用
深度学习带了一种递归神经网络语言模型(RNN Language Model),理论上可以记忆无限个单词,可以看作“无穷元语法”(∞-gram)
直接应用于下游任务,观察精度→直接针对下游应用进行优化微调
更高的任务准确性→更好的模型
大语言模型不需要微调(已经优化过了)
训练:在合适的训练语料库上训练参数
测试:在不同的、unseen的语料库上测试
如果语言模型将更高的概率分配给测试集中的句子,则更好
注意:训练集和测试集语料库不能有交集!!
评估指标:困惑度
PPL越低越好:困惑度最小→最大化语料库的概率
并非测试集中所有n元语法都会在训练数据中都出现过
测试语料库可能有一些在我们的模型中的概率为零,导致PPL分母为0,没有意义
在自然语言的语料库里,一个单词出现的频率与它在频率表里的排名成反比。所以,频率最高的单词出现的频率大约是出现频率第二位的单词的2倍,而出现频率第二位的单词则是出现频率第四位的单词的2倍。
基本思想:调整最大似然估计的概率值,使零概率增值,使非零概率下调,“劫富济贫”,消除零概率,改进模型的整体正确率
基本目标:测试样本的语言模型困惑度越小越好
基本约束: ∑ P ( w i ∣ w 1 , w 2 , … , w n ) = 1 \sum P(w_i|w_1,w_2,\dots,w_n)=1 ∑P(wi∣w1,w2,…,wn)=1
基本思想:每一种情况出现的次数加1或者一个极小值 α 到所有计数并重新规范化
其中
∣
V
∣
|V|
∣V∣表示语料库中单词总数
基本思想:修改训练样本中事件的实际计数,使样本中(实际出现的)不同事件的概率之和小于1,剩余的概率量分配给未见概率
增加了出现0次的单词的概率
当某一事件在样本中出现的频率大于阈值K (通常取K 为0 或1)时,运用最大似然估计的减值法来估计其概率,否则,使用低阶的,即(n-1)gram 的概率替代n-gram 概率,而这种替代需受归一化因子的作用
P
k
a
t
z
(
w
i
∣
w
i
−
1
)
=
{
d
r
C
(
w
i
−
1
w
i
)
C
(
w
i
−
1
)
C
(
w
i
−
1
w
i
)
=
r
>
0
α
(
w
i
−
1
)
P
M
L
(
w
i
)
C
(
w
i
−
1
w
i
)
=
0
P_{katz}(w_i|w_{i-1})= {drC(wi−1wi)C(wi−1)C(wi−1wi)=r>0α(wi−1)PML(wi)C(wi−1wi)=0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。