【简单理解】自然语言处理-平滑方法(Smoothing)

article/2025/8/19 4:17:08

【简单理解】自然语言处理-平滑方法(Smoothing)

简单介绍平滑策略

平滑策略的引入,主要使为了解决语言模型计算过程中出现的零概率问题。零概率问题又会对语言模型中N-gram模型的Perplexity评估带来困难。

零概率问题,就是在计算实例的概率时,如果某个量x,在观察样本库(训练集)中没有出现过,那么该量概率为0,进而会导致整个实例的概率结果是0。

举例:在文本分类的问题中,在计算一句话的概率时,的当一个词语没有在训练样本中出现,该词语的概率为0,使用连乘计算文本出现概率时也为0。这是不合理的,不能因为一个事件没有观察到就武断的认为该事件的概率是0。

主流平滑方法

  • Additive smoothing
  • Good-Turing estimate
  • Jelinek-Mercer smoothing (interpolation)

Additive smoothing

Add-one smoothing

也叫拉普拉斯平滑,下面以 bigram model 为例给出加 1 平滑的模型。
MLE estimate:

Add-1 estimate:

加1平滑通常情况下是一种不算很好的算法,与其他平滑方法相比显得非常差,然而我们可以把加 1 平滑用在其他任务中,如文本分类,或者非零计数没那么多的情况下。

Additive smoothing

对加 1 平滑的改进就是把 1 改成 δ,且 0<δ≤10<δ≤1。

Good-Turing smoothing

基本思想: 用观察计数较高的 N-gram 数量来重新估计概率量大小,并把它指派给那些具有零计数或较低计数的 N-gram

Idea: reallocate the probability mass of n-grams that occur r+1 times in the training data to the n-grams that occur r times.

一般情况下,我们选出现过一次的概率,也就是 Things seen once 这一概念:
Things seen once: 使用刚才已经看过一次的事物的数量来帮助估计从来没有见过的事物的数量。举个例子,假设你在钓鱼,然后抓到了 18 条鱼,种类如下:10 carp, 3 perch, 2 whitefish, 1 trout, 1 salmon, 1 eel,那么
下一条鱼是 trout 的概率是多少?
很简单,我们认为是 1/18

那么,下一条鱼是新品种的概率是多少?
不考虑其他,那么概率是 0,然而根据 Things seen once 来估计新事物,概率是 3/18

在此基础上,下一条鱼是 trout 的概率是多少?
肯定就小于 1/18,那么怎么估计呢?
在 Good Turing 下,对每一个计数 r,我们做一个调整,变为 r*,公式如下,其中 nrnr 表示出现过 r 次的 n-gram。

然后,我们就有

所以,c=1时,

问题

然后,问题来了,如果n_{r+1}=0怎么办?这在 r 很高的情况下很常见,因为在对计数进行计数时(counts of counts),会出现 “holes”。即使没有这个 hole,对很高的 r 来说,n^{^{r}} 也是有噪音的(noisy)。

所以,我们应该这样来看 r^{^{*}}:

Interpolation(差值)

差值,简单来讲,就是把不同阶的模型结合起来:

用线性差值把不同阶的 N-gram 结合起来,这里结合了 trigram,bigram 和 unigram。用 lambda 进行加权:

 

 

 


http://chatgpt.dhexx.cn/article/WWZ4aOcL.shtml

相关文章

二十二、动网格Smoothing Spring方法及实例

1 概念介绍 最近一直忙着其他的事情&#xff0c;好久都没有更新&#xff0c;让各位家人们久等了。 今天我们接着聊一聊动网格问题&#xff0c;我们在文章二十一中介绍了动网格的Layering方法&#xff0c;但是Layering方法的局限性很高&#xff0c;只能对四边形网格或六面体网格…

numpy安装

1.以管理员的形式打开cmd 2.安装numpy插件 pip install numpy 3.安装成功后&#xff0c;输入pip list 命令查看是否安装成功 pip list 3.创建 #使用array创建一维数组 list01 [1,2,3,4] np01 np.array(list01) print(np01) print(type(np01)) #使用array创建二维数组 …

Matplotlib安装

安装matplotlib 使用python中pip命令安装 使用python中pip命令安装 第一步&#xff1a;使用winR输入cmd命令打开命令窗口&#xff0c;找到python安装目录下的Scripts目录&#xff0c;使用python -m pip install matplotlib命令 如果出现以下错误或警告&#xff0c;则需按照指示…

node安装

1、进入node官网&#xff0c;下载长期支持版&#xff0c;安装 2、输入node -v&#xff0c;能查询到版本号即为安装成功 3、为方便管理&#xff0c;修改默认的缓存和模块存放路径&#xff08;C:\Users\Administrator\AppData\Roaming\npm&#xff09;&#xff0c;在nodede 安装文…

如何安装仿宋GB2312字体

步骤&#xff1a; 一、下载仿宋_GB2312.zip压缩包并解压缩&#xff1b; 百度网盘&#xff1a;https://pan.baidu.com/s/1L7yYKhoDmUw1RpNXVS5KDQ 提取码&#xff1a;eclz 阿里云盘&#xff1a;https://www.aliyundrive.com/s/ih3kDDidcGa 二、双击打开字体文件&#xff0c;…

安装Matplotlib

文章目录 一、pip安装二、conda安装1、anaconda navigator安装2、condan命令安装 一、pip安装 运行如下的命令即可 pip install matplotlib二、conda安装 Anaconda包括Conda、Python以及一大堆安装好的工具包&#xff0c;比如&#xff1a;numpy、pandas等。conda是一个开源的…

cnpm安装

1.将node安装到D:\Program Files\nodejs目录。 2.设置npm全局安装路径与缓存路径 npm config set prefix "D:\Program Files\nodejs\node_global" npm config set cache "D:\Program Files\nodejs\node_cache" 3.安装cnpm npm install -g cnpm --regis…

torch安装

第n次安装了&#xff0c;每次都得结合很多篇才能安装成功&#xff0c;这次直接自己写一个。 一、安装anaconda 这个自己搜吧&#xff0c;挺简单的。 二、安装pytorch 进入anaconda prompt 创建一个虚拟环境&#xff08;就不用再安装python了&#xff0c;创建之后直接就是用…

pytorch安装

&#xff08;一&#xff09;安装Anaconda 1、详细步骤这里不多说。anaconda安装时会自带安装相应的python版本。 安装完成后&#xff0c;可以运行cmd&#xff0c;使用conda --version查看anaconda的版本&#xff1b;用conda list查看安装的包&#xff0c;这里面也包含了python…

halcon21.11安装教程详解

文章目录 1.软件下载2.安装过程 halcon21.11安装教程详解 1.软件下载 a 官网&#xff1a;https://www.mvtec.com/cn b 百度网盘下载 链接&#xff1a;https://pan.baidu.com/s/1-Bdz1l54PQWxbDBkSlILlA 提取码&#xff1a;a5yg 2.安装过程 解压之后&#xff0c;双击som.exe…

安装TensorFlow

文章目录 1.准备工作2.安装TensorFlow3.激活tensorflow 1.准备工作 在安装TensorFlow之前得先安装Anaconda如果还没有进行安装&#xff0c;可以看我主页安装Anaconda教程 2.安装TensorFlow 我们打开Anaconda Prompt 输入python -m pip install -U pip&#xff0c;按回车等待…

Nodejs安装教程

目录 一、安装环境 二、安装步骤 三、验证安装 四、修改全局模块下载路径 五、更换npm源为淘宝镜像 六、全局安装基于淘宝源的cnpm 总结 一、安装环境 本教程演示的环境&#xff1a;win 10 64位node.js下载官网: nodejs官网. 点击选中图标下载到电脑本地即可。 二、安…

操作系统第一次作业

一.执行运行VirtualBox的安装程序 1、进入安装向导&#xff0c;点击下一步。 2、进入自定安装&#xff0c;软件的位置默认在c盘&#xff0c;可以将软件的位置自定义&#xff0c;注意这里需要点击VirtualBox Networking&#xff0c;选择将整个功能安装到本机硬盘&#xff0c;点…

如何安装Java、Idea、mysql

Java、Idea手把手教你如何安装 一、java 如何安装二、 java配置环境变量三、Idea 如何安装四、IDEA安装成功五、如何安装mysql1、下载mysql2、安装Mysql3.检查必需项&#xff08;Check Requirements&#xff09;5.进入配置界面 Product Configuration&#xff0c;Next6、进行服…

windows10 输入法 切换 热键 快捷键 更改 设置

windows10 输入法 切换 热键 快捷键 设置 点击左下角窗口图标“开始”&#xff0c;点击齿轮图标“设置”&#xff0c;输入“高级键盘设置”并选择&#xff0c; 点击“输入语言热键“ 选择要改的项目&#xff0c;点击”更改按键顺序“

解决Windows 10不能切换输入法

问题&#xff1a;使用Windows 10自带的输入法&#xff0c;按shift键不能切换中英输入法。 解决办法&#xff1a; 1、选中“此电脑“&#xff0c;右击&#xff0c;选择”管理“&#xff0c;弹出下面的对话框 2、依次选择计算机管理(本地)&#xff0c;系统工具&#xff0c;任务计…

windows 10 输入法切换设置

windows 10 输入法切换设置 目的&#xff1a;win10系统中&#xff0c;搜狗输入法、英文&#xff08;美国&#xff09;输入法&#xff0c;实现二者的快捷键切换。 搜索栏——输入“语言设置” 查看是否有想用的输入法&#xff0c;没有的话&#xff0c;添加即可。之后&#x…

如何关闭或更改Windows自带输入法繁体简体切换(Ctrl+Shift+F)的快捷键

文字描述步骤&#xff1a; 注&#xff1a;【括号内容表示点击内容】 点击屏幕右下角图标输入法【语言首选项】—>标题为首选语言栏下的【中文(简体&#xff0c;中国)】—>【选项】—>下拉滚动条标题为键盘下的【微软拼音】—>【选项】—>【按键】—>下拉滚…

Win10系统输入法(微软拼音)切换简体和繁体

Win10系统微软拼音切换简体和繁体有两种方式。 方式1-快捷键 ctrlshiftf&#xff08;强烈建议关闭该快捷键&#xff09; 方式2-界面设置

windows11切换输入法的快捷键是什么?win11怎样修改输入法快捷键

windows11切换输入法的快捷键是什么&#xff1f;win11怎样修改输入法快捷键&#xff0c;神马指导员的小编今天给大家找了一遍&#xff0c;分享给大家方法&#xff0c;一图搞掂 1、首先&#xff0c;我们单击桌面左下角的开始按钮&#xff0c;然后单击输入设置。 2、在打开的设…