统计自然语言处理基础-第六章 统计推理:稀疏数据集上的n元语法模型(笔记)

6 统计推理:稀疏数据集上的n元语法模型

统计自然语言处理的目的就是针对自然语言领域进行统计推理,统计推理包括处理数据(具有默写未知的概率分布)和根据这些数据分布得到一些推论。

划分成三部分:把训练数据划分成等价类,为每一个等价类寻找一个好的统计估计,对多个估计进行合并

语言建模问题:根据当前词预测下一个词

Shannon游戏:在一篇文本中猜测下一个字母

本章中提及得方法并不是特别针对这个任务的,也可以用到其他的语言学任务中,例如语义消歧和概率句法分析,词汇预测任务。

6.1 bins:构造等价类

6.1.1 可靠性和辨别性

我们试图基于各种类别特征预测目标特征。在分类的时候,我们把数据有效的划分到具有不同类别特征的等价类别中去,并且使用这些等价类帮助我们在新的数据中预测目标特征的值。这就意味着我们在分类的时候做了独立性假设:每个类别特征中的数据或者与其他特征无关,或者与其他特征的相关性很弱。我们使用的类别特征越多,在确定目标特征的未知概率分布时的条件就会越多把数据划分到很多等价类中,可以使我们有很好的辨别性。但是,使用了过多的等价类,对于每一个类来说,他可能不包含或者办函很少的训练数据,这样就无法对这个类别的目标特征做出可信的统计估计

要平衡这两个标准。

6.1.2 n元语法模型

在这里插入图片描述

马尔可夫假设:只有当前的上下文(前面的很少的几个词)可以影响下面要出现的词,若已知前n-1个词,这个模型称为(n-1)阶马尔可夫模型,或n元语法模型

原则上n 越大越好,但是即使用一个很大的语料库,编程实现一个多元语法模型并不是一个很现实的想法,,现在使用的n元语法模型系统通常是2-3,并且使用的是一个比较小的词表。

减少参数数量的方法:减少n的值,但是n元语法模型并不是构成历史等价类的唯一方法;;“词干化“:(删除词语的变形结尾)或者语义类的方法:(通过使用已经存在的辞典或者引用一些聚类的方法)来构造等价类。这些方法减少了n元语法中使用词表的规模。但是构造等价类的方法不只有n元语法,例如通过它前面出现的词和谓语来预测下一个词,临近上下文中出现的词汇同现、语义和基本的句法结构关系都是下一个词的很好的预测期。

6.1.3 构建n元语法模型

很多情况下小的语料库也是一个缺点,由于n元语法的参数数量非常多,所以在足够大的数据集上进行训练时,n元语法模型才能很好地工作,但是占用CPU和硬盘。

构建模型的第一步:处理语料(本项目中主要处理标点符号,这里使用搜索-替换的方式来解决,使用空格来替代标点符号);;文件变成了一个长的词序列。通常使用SGML标记。

6.2 统计估计

在这里插入图片描述
在这里插入图片描述

6.2.1 最大似然估计

相对频率的最大似然估计(MLE)

无论怎样形成等价类,都会得到包含一定数量训练实例的分类。要预测下一个词的话,最通常的观点是使用相对频率作为概率估计。
在这里插入图片描述

如果固定观测数据,并且认为所有的参数空间服从某一分布(这里是trigram模型),统计学家把这个公式称为似然函数称之为最大似然函数是因为他选择的参数值对于训练数据给出了最高的概率,在训练语料库中没有出现的事件给了0概率,(假设不会出现)

但是MLE并不适合自然语言处理中的统计推理,因为数据稀疏,也就是训练的语料库不可能把所有的可能都考虑到,会出现很多0概率事件,不符合实际情况,,通过加大语料库也不能解决这个问题。不可能搜集到足够多的数据来的到稀有数据的完整概率分布,需要一种更好的估计方法,给那些在训练数据中没有出现的事件一定大小的概率。

通过稍微减少已观察到的事件概率的大小,同时把少量概率分配到没有看到过的事件上,称为折扣法。折扣过程称为平滑

使用MLE估计Austen的n元语法模型(例子)

在实际的系统中,对所有词计算n元组的概率是不现实的。通常只是计算最常见的k个词的n元组,而其他的词被认为是未登录词,并且标上一个单一的符号。一般来说,对于只在训练语料中出现一次的词,这种方法是可行的。

在一些领域中稀有的数字具有明显的语义和分布相似性,因此可以有两个未登录词标记,一个用于标记数字,另一个用于标记其他的词。根据Zipf的词汇分布规律,截断低频率词会大大减少参数空间,但是会对系统的质量有所影响。在训练语料库中只出现一次的词通常占词性统计的一半,占词次统计的一小部分。

在不同的数据上评估模型是很重要的,这样我们可以得到这个模型预测语言模式的性能的一个公正的评价。

unigram(1-gram)分布完全忽略了上下文的信息,只是简单的使用了不同词出现的概率,这个方法不是完全没用,因为大部分句子中的大部分词都是经常出现的词汇。bigram使用前一个出现的词预测下一个词,得出的模型比1-gram好,但是bigram并不保证一定增加概率估计。trigram模型可以工作的时候,能够给出一个非常好的结果。four-gram不能使用,除非在一个几千万的数据集上进行训练。

对于一些有足够多训练数据的词串,使用高阶的n元语法模型,当训练数据不充分时,回退到低阶的n元语法模型。

但是我们仍然需要一种方法,来给那些在训练语料库中没有出现的词或者n元组的一个非零概率。

6.2.2 Laplace法则、Lidstone法则和Jeffreys-Perks法则

Laplace法则

在这里插入图片描述
在这里插入图片描述

这样极大的减少了频繁出现事件的估计概率

Lidstone法则和Jeffreys-Perks法则

在这里插入图片描述

在Austen语料库中应用这些方法

使用bigram模型和ELE来计算概率分布

在ELE模型的结构中,所有已知事件的MLE概率估计都被极大地折扣了。

虽然给出的概率评估非常低,但是我们可以用这些概率估计来对可能的选择进行排序。

6.2.3 留存估计

在这里插入图片描述

留存估计法

在这里插入图片描述

开发和测试模型的数据集

统计自然语言处理中的最大的错误就是在训练数据上进行测试。测试的目的就是去评价一个特殊模型的工作效果。所以公正测试只能在一个以前没有看过的数据集上进行。从一个数据样本得来的模型会有训练过度的趋向,也就是期望未来的事件和已经训练过的数据一样,没有为其他的可能性留出足够的空间。在不同训练集上进行测试是很有必要的

需要把数据划分为训练数据和测试数据(5%-10%),需要把训练数据和测试数据再分别划分为两部分。很多统计自然语言处理的方法,像n-gram的留存估计,就是从一个大规模的训练数据上得到统计量,然后在更多留存数据或者验证数据的基础上平滑这些统计量。留存数据需要与训练数据和测试数据保持独立。正常情况下,使用留存数据得到的参数估计要比从主要训练语料中得到的参数估计少的多,所以对于留存数据来说,它的大小比主要的训练语料小得多(通常大约是训练语料的10%)。

统计自然语言处理研究的典型过程是,设计算法,进行训练并测试算法,发现错误,然后改正错误并重复这个过程(通常要很多次!)。但是,如果重复的次数很多,那么测试数据也被使用了很多次,而且我们根据测试数据上的效果试验了不同的算法。这意味着,多次测试模型又一次导致了训练过度正确的方法是使用两个测试集:开发(过程)测试集用来在它上面试验各种方法;最终测试集( final test set)用来产生最后的结果,公布算法的效果。我们应该希望看到这样的结果:在最终测试集上的效果要比在开发(过程)测试集上的效果略差(虽然有时比较幸运)。

怎样选取测试集:

  1. 从全部数据中随机抽取一些作为测试集,其余的是训练集,优点:测试数据集类似于训练数据集,也就是我们的训练样本尽可能准确的来源于测试数据的语言类型。
  2. 保留一块作为测试集,优点:这样可以模拟测试集和训练集的不同,不过评价效果稍差,这个的训练集和测试集会不相同

如果我们选择参数的留存估计法,最好选择和测试数据相同的策略来保留数据作为留存数据,可以是留存数据最好的模拟测试数据。

早期的测试只是在测试数据上运行系统并给出单一的性能(混乱度。正确率、、、),但不好,没有给出反应系统性能的方差评价,更好的办法是把测试数据划分到一些相似的样本集中,在每个样本集上得出测试结果,计算出均值性能。方差。最好从语料库的不同部分得到测试数据

评价时不能只看均值性能,还要看方差。

6.2.4 交叉验证

留存估计的思想是将训练数据分为两部分,得到于经验估计相同的效果。使用一部分数据建立最初的模型,然后使用另一部分留存数据来精炼这个模型。这种方法的缺点是,最初的训练数据比较少,所以得到的概率估计也会不太真实。

更有效率的方案:训练数据的每一部分即作为最初的训练数据也作为留存数据,在统计学上叫做交叉验证

删除估计
在这里插入图片描述

在大的训练语料库中,在训练数据上进行删除估计的效果要好于留存估计,对于一个较小的语料库,留存估计要好于删除估计,这种方法高估了未知事件的期望频率,但是低估了在训练数据中只出现一次的事件的期望概率。

Leaving-One-Out:主要的训练语料的大小是N-1个词次,而其中一个词次作为一种模拟测试的留存数据。这个过程要重复N此,所以数据的每一部分都依次被遗漏,优点:如果数据的任何一个特殊部分没有被观测到,它可以发现模型产生变化的效果。这个方法和Good-Turing方法之间有很强的联系。

6.2.5 Good-Turing估计

Good-Turing估计法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将一部分概率转换到未出现的事件中,并通过适量减小每一个出现的事件的概率来保证概率的总和为。调整后的概率:(这个n元组出现的频率+1)*含有r+1个训练实例的类别数目的期望/含有r个训练实例的类别数目的期望,不能简单的用频率代替频率的期望,会导致出现最多次数的n元组的调整后的频率为0,一是使用Good-Turing方法只是重新估计低频率的频率,不会改变高频率的,二是通过观测值拟合一个函数S,使用平滑值S®代替期望值

Gale and Sampson混合了两种方法,使用平滑曲线做线性回归,这个曲线可能只适用于r较大的情况,r小时,直接使用Nr代替Nr的期望,随着频率增加到直接计算的r*值和通过平滑方程计算的值有很大差别时,再对高频使用平滑估计。

6.2.6 简要注释

绝对折扣模型:所有的非零MLE频率用一个小的常数折扣,由此得到的频率增益被平均分配到未知事件上

线性折扣模型:非零的MLE频率乘以一个稍微小于1的常量,留出的概率分配到未知事件上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 组合估计法

前面已经利用了n-gram的频率r数据,并试图将它应用于更多的文本中出现概率的最佳估计。但是对于没有出现过的或者很少出现的n-gram,给定相同的概率估计不是一个好的解决方案。因此需要结合不同的模型组合多重概率估计,从而可以通过平滑或组合不同的信息资源的方法来实现这个想法。

6.3.1 简单的线性插值

如果需要解决trigram模型中数据稀疏问题,可以把bigram和unigram模型组合到trigram模型中,这两个模型可以在一定程度上容忍数据稀疏性问题。我们需要将这些模型线性组合起来,对每个概率分布加权就可以得到新的概率方程,在统计自然语言处理中,称为线性插值法,其他地方称为(最终)混合模型。当所有被插值的地方的方程都使用最佳分辨函数的条件信息子集时,称为删除插值法,做法如下:
在这里插入图片描述

这些权值可以手工设定,但希望得到最佳组合。

6.3.2 Katz回退算法

在回退模型中,要根据不同模型的特性来使用他们。最详细的模型可以提供足够多的关于上下文的可信信息。回退还可以用来进行平滑或者组合信息源。

一个n-gram的概率允许回退到越来越短的历史上,如果关注的n-gram出现的次数大于k次(k为0/1),就使用n-gram的估计方法,但是MLE估计要被一个确定的数量折扣,一些概率会被转移到未知的n-gram上(或者低阶的模型上),这些未知的n-gram也需要通过回退来估计。折扣使用Good-Turing估计法;如果出现次数小于等于k,使用短一些的n-gram概率估计,但是这个回退概率要乘以正规化因子,以确保在折扣过程中预留的概率会分配到以回退方法估计的n-gram中。也就是可以从4-gram模型开始,结束于一个unigram模型,使用unigram的频率去估计下一个词的概率。

回退方法在缺少很多数据的情况下是合理的,但事实上在有些环境中他的效果非常差。

回退模型有时会受到批评,因为在把一些数据添加到训练语料中时它的概率估计会突然改变,新添加的数据可能导致回退模型选择不同阶的n-gram模型作为估计概率的基础模型。不过总的来说它还是一种简单方法,并且在实际中效果良好。

6.3.3 一般化线性插值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.4 结论

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值