自然语言处理(5)——语言模型

NLP学习笔记(5)——语言模型

1.1 概念导入

大规模的语料库的出现为自然语言统计处理方法的实现提供了可能,基于大规模的语料库和统计方法,我们可以:

  • 发现语言使用的普遍规律;
  • 进行机器学习、自动获取语言知识;
  • 对位置语言现象进行推测

我们研究语言模型时,需要计算语句的先验概率:

自然语言处理(5)——语言模型
关于公式中的wi,可以是字、词、短语或者词类等等,统称为统计基元,在讨论中统一以”词”来代替。
对于wi来说,其出现的概率,由其之前的特定序列w1,……wi-1决定,这个序列成为wi的历史

由此就存在了一个问题,当历史基元的数量不断增加,不同的路径的可能性(第i个基元的不同的历史情况)会以指数级增长。i基元存在L(i-1)种不同的历史情况,其中L表示不同基元的数目。在这种情况下,产生不同的i基元发生的概率p(wm|w1……wm-1)时,就存在Lm个自由参数了,而这样大型的计算量显然不符合我们的期望

于是我们通过将历史序列映射到等价类的方法减少历史基元的数量,即将w1,w2……wi-1映射到S(w1 w2 w3……wi-1),则有:
p(wi|w1,……wi-1)=p(wi|S(w1……wi-1))

; 1.2 划分等价类的方法——n元文法模型(n-gram)

具体来讲
如果想将两个历史映射到相同的等价类,当且仅当这两个历史路径中最近的n-1个基元相同才可,即

自然语言处理(5)——语言模型
这种设置n个有限记忆单元的语言模型称为n元文法模型
当n=1时,即出现在第i位的基元wi独立(于历史),一元文法可以成为uni-gram,或monogram
当n=2时,即基元wi的概率取决于其前一个单词,2-gram称为1阶马尔科夫链
当n=3时,即基元wi的概率取决于位置之前的两个单词,3-gram称为2阶马尔科夫链

1.3 概率计算

为了保证在计算条件概率的计算中,i=1时有意义,也为了保证句子内的所有字符串的概率之和为1(通过”加入终结符,将句子结尾词的开放性发展情况考虑进去”,从而能够综合考虑到所有的情况),可以在句子首尾两端加入标志

二元文法计算举例:
首先对语句进行元素划分

自然语言处理(5)——语言模型
计算该语句基于二元文法的概率:
自然语言处理(5)——语言模型

; 1.4 语言模型的应用

1.4.1 音字转换问题

对于给定的拼音串,去猜测其可能的汉字串,有许多种可能。

自然语言处理(5)——语言模型
我们期望得到发生概率最大的一个,经过贝叶斯公式进行转化,并且拼音的出现是一个确定住的事件,并且认为由句子得到的拼音序列的概率是确定的(或者说概率为1),因此我们只需要考虑,各个句子中最大可能性产生的(句子),这与我们的直觉相一致。
自然语言处理(5)——语言模型

在上述化简结果的前提下,我们以二元文法为例进行研究

自然语言处理(5)——语言模型

自然语言处理(5)——语言模型

; 1.4.2 汉语分词问题

自然语言处理(5)——语言模型
自然语言处理(5)——语言模型
自然语言处理(5)——语言模型
  1. 参数估计

首先,介绍两个较为重要的概念:
~~ 训练语料:用于建立模型,确定模型参数的已知语料~~

最大似然估计:用相对频率来计算概率

2.1 最大似然估计

利用最大似然估计:

自然语言处理(5)——语言模型

一个使用最大似然估计来求句子概率的例题:

自然语言处理(5)——语言模型
自然语言处理(5)——语言模型
自然语言处理(5)——语言模型
以上为常规的最大似然估计,但由于数据稀疏(也称数据匮乏)sparse data的问题,极易导致出现条件概率为0的情况,这时就需要进行数据平滑(data smoothing)

; 2.2 数据平滑

2.2.1 前置知识

关于困惑度:
即为 测试语料的交叉熵的指数形式

自然语言处理(5)——语言模型

关于测试语料的交叉熵Hp(T),是:

自然语言处理(5)——语言模型

其中WT表示总测试文本语料T的总词数,p(T)表示产生整个测试集的概率

关于测试集T生成的概率p(T),是若干个组成的独立句子的累乘:

自然语言处理(5)——语言模型
其中lT表示测试集语料T的句子数目
(t1,……,tlT)构成测试语料T

关于句子的概率p(ti)的计算(或者对于句子s概率p(s)的计算)

自然语言处理(5)——语言模型

其中p(wi|wi-n+1i-1)表示对于一个平滑的n-gram的概率

=========
一个小知识,n-gram对于英文文本的困惑度的范围一般为50-1000(对应的交叉熵范围为6~10bits/word)

关于数据平滑,基本思想可以概括为”劫富济贫”:调整最大似然估计的概率值,使得零概率增值,非零概率下调,从而达到”劫富济贫”的目的,消除零概率,改进模型的整体正确率

数据平滑的基本目标,是减小测试样本的语言模型的困惑度。

数据平滑的基本约束,是条件概率之和为1

自然语言处理(5)——语言模型

; 2.2.2 数据平滑的几种方法

2.2.2(1)加1法(Additive smoothing)

其基本思想,即在每种情况的基础上加1

自然语言处理(5)——语言模型

自然语言处理(5)——语言模型

针对以下例子,若不进行数据平滑,则会导致其中的部分条件概率为0。

自然语言处理(5)——语言模型

使用数据平滑,使得零概率的情况被避免了,起到了一个缓冲的作用

自然语言处理(5)——语言模型
值得注意的是,词汇量|V|指的是set()后的元素集个数

; 2.2.2(2)减值法/折扣法(discounting)

其基本思想是,通过修改训练样本材料中发生事件的实际计数,从而使得样本中(修改后)实际计数对应的不同概率之和小于1,而将剩余下来的概率分配给未在训练样本中出现的事件。

对于减值法这一思想,在具体实现方式上,分为四种途径:

  • Good-Turing法:
  • Katz后退法(Back-off方法):
  • 绝对减值法
  • 线性减值法

对于Good-Turing估计:
首先假设N为原始训练样本的大小,对于确定的事件,可能在原始数据中出现若干次,我们设其出现的次数为r;出现总次数为r的事件的数目则设置为nr
则有

自然语言处理(5)——语言模型
但,观察上式,仅考虑到了某事件出现的概率,未考虑未出现过的事件,于是我们计算r,以期能够将r=0(某事件未出现)的情况考虑进去
自然语言处理(5)——语言模型
计算得到r
,即考虑”未在样本中出现过的事件”的情况
自然语言处理(5)——语言模型
在这种方法下,估计事件在样本中出现r次的概率为:
自然语言处理(5)——语言模型
显然,这种(r/N格式的)极大似然思想的概率计算方法是针对初始情况(也就是不考虑未出现样本的情况)时所使用的,在新的思想的加持下,使用r*必然导致总数的减小,如下式:
自然语言处理(5)——语言模型
小于1,与1的差值,即n1/N的概率,则分配给所有的未见事件,在Good-Turing法中,这个剩余的概率量时均匀分配给所有的未见事件的。

Good-Turing估计适用于大词汇集产生的符合多项式分布的发亮的观察数据,实际上是对非零事件的概率按照公式削减,将节留出来的概率均匀分配给零概率事件

对于Back-off方法(Katz后退法)
其基本思想为,当某一事件在样本中出现的频率大于阈值K时(K为0或1),运用最大似然估计的减值法来估计其概率,否则使用低阶的概率,即使用(n-1)gram的概率代替n-gram,而这种替代需要受到归一化因子alpha的作用

后退方法的另一种理解:对于每个技术的r>0的n元文法的出现次数减值,把因减值而省下来的剩余概率根据低阶的(n-1)gram分配给未见事件。

下面以二元文法为例,实现Katz平滑

自然语言处理(5)——语言模型
在短语的出现次数大于0时,按照Good-Turing方法进行减值,减值法中的r*/r在这里被抽象成折扣率dr,即直接表示对极大似然方法的折扣比率;
在2-gram短语的出现次数为0时(未现事件),采取低一阶的uni-gram进行运算,符号为pML(wi),同时我们设置归一化因子α,即按照低一阶(n-1)阶文法的概率比例对剩余的概率值进行分配。

根据此思想,可以按照归一化的方法,公式化求出归一化因子

自然语言处理(5)——语言模型
Katz后退法,其对非零事件的概率仍然按照Good-Turing法进行计算减值,不过原零概率的事件的新概率不再是对剩余概率进行均分,而是按照低阶分布的概率比例进行分布,仅需保证概率之和为1即可。

对于绝对减值法:

其基本思想,即为从每个技术r中减去同样的量,剩余的概率量由未见事件进行均分

设置R为所有可能的事件的个数
当事件满足n-gram时,如果统计基元为词(为了方便与n-gram进行匹配),词汇集的大小为L,则可能出现的数目为R=Ln。

在这种情况下,实现绝对减值法:

自然语言处理(5)——语言模型
其中n0,为样本中未出现过的时间的数目,而b为绝对减值减去的常量(b

Original: https://blog.csdn.net/m0_53327618/article/details/121893482
Author: 胖虎干嘛了
Title: 自然语言处理(5)——语言模型

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544319/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球