基于统计方法的语言模型

基于统计方法的语言模型

基于统计方法的语言模型主要是指利用统计学原理和方法来构建的语言模型,这类模型通过分析和学习大量语料库中的语言数据,来预测词、短语或句子出现的概率。

  1. N-gram模型:这是最基础的统计语言模型之一,它基于统计语言模型的文本分析算法,用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。N-gram模型的“n”代表序列中元素的数量,常见的有Unigram(N=1)、Bigram(N=2)和Trigram(N=3)模型。

  2. 隐马尔可夫模型(HMM):这是一种统计模型,基于一个隐藏的马尔可夫链生成不可观测的状态序列,并根据这些隐藏状态产生可观测的序列。HMM通过描述隐藏状态之间的转移概率以及隐藏状态到观测值的发射概率来模拟并预测观测序列的生成过程。

  3. 最大熵模型:这是一种基于概率分布的模型,用于描述任意语句(字符串)s属于某种语言集合的可能性。

  4. 条件随机场(CRF):这是一种用于建模序列数据的统计模型,常用于自然语言处理任务,如词性标注和命名实体识别。

N-gram模型

N-gram语言模型是一种基于统计的自然语言处理技术,用于预测文本中连续出现的项目(如字母、音节或单词)的概率。

"N-gram"中的"N"指的是序列中连续项目的数目。

N-gram模型基于一个假设:一个项目的出现只依赖于前面N-1个项目。以下是N-gram模型的一些关键点:

  1. Unigram Model(1-gram模型)

    • 只考虑单个项目(通常是单词)的概率。
    • 忽略了单词之间的上下文关系。
  2. Bigram Model(2-gram模型)

    • 考虑两个连续项目(通常是单词)的概率。
    • 例如,"the"后面跟着"cat"的概率。
  3. Trigram Model(3-gram模型)

    • 考虑三个连续项目的概率。
    • 例如,“the"后面跟着"cat”,然后是"sat"的概率。
  4. 更高阶的N-gram模型

    • 可以扩展到4-gram、5-gram等,但随着N的增加,模型的复杂度和所需的数据量也会增加。
  5. 平滑技术

    • 由于N-gram模型依赖于实际观察到的数据,对于未出现过的N-gram序列,模型无法给出概率。为了解决这个问题,需要使用平滑技术,如拉普拉斯平滑(Laplace smoothing)或Good-Turing折扣。
  6. 交叉熵损失

    • 在训练N-gram模型时,通常使用交叉熵损失函数来衡量模型预测的概率分布与实际观测到的数据之间的差异。
  7. 局限性

    • 随着N的增加,模型需要更多的数据来覆盖所有可能的N-gram组合,这可能导致数据稀疏问题。
    • N-gram模型通常无法捕捉长距离的依赖关系,因为它们只考虑局部的上下文。

N-gram模型计算公式

公式基于条件概率,即给定前N-1个词的情况下,下一个词出现的概率。

P n − grams ( w 1 : N ) = C ( w i − n + 1 : i ) C ( w i − n + 1 : i − 1 ) P_{n-\text{grams}}(w_1:N)=\frac{C(w_{i-n+1}:i)}{C(w_{i-n+1}:i-1)} Pngrams(w1:N)=C(win+1:i1)C(win+1:i)

这里:

  • C ( w i − n + 1 : i ) C(w_{i-n+1}:i) C(win+1:i)是词序列 w i − n + 1 , w i − n + 2 , … , w i w_{i-n+1},w_{i-n+2},\ldots,w_i win+1,win+2,,wi在语料库中出现的次数。
  • C ( w i − n + 1 : i − 1 ) C(w_{i-n+1}:i-1) C(win+1:i1)是词序列 w i − n + 1 , w i − n + 2 , … , w i − 1 w_{i-n+1},w_{i-n+2},\ldots,w_{i-1} win+1,win+2,,wi1在语料库中出现的次数。

对于Unigram(n=1):

  • 分子 C ( w i − 1 + 1 : i ) = C ( w i ) C(w_{i-1+1}:i)=C(w_i) C(wi1+1:i)=C(wi),即词 w i w_i wi在语料库中出现的次数。
  • 分母 C ( w i − 1 + 1 : i − 1 ) = C total C(w_{i-1+1}:i-1)=C_{\text{total}} C(wi1+1:i1)=Ctotal,即语料库中词的总数。

对于Bigram(n=2):

  • 分子 C ( w i − 2 + 1 : i ) = C ( w i − 1 , w i ) C(w_{i-2+1}:i)=C(w_{i-1},w_i) C(wi2+1:i)=C(wi1,wi),即词对 w i − 1 , w i w_{i-1},w_i wi1,wi在语料库中出现的次数。
  • 分母 C ( w i − 2 + 1 : i − 1 ) = C ( w i − 1 ) C(w_{i-2+1}:i-1)=C(w_{i-1}) C(wi2+1:i1)=C(wi1),即词 w i − 1 w_{i-1} wi1在语料库中出现的次数。

n-grams 的统计学原理

n-grams 语言模型基于马尔可夫假设和离散变量的极大似然估计给出语言符号的
概率。

n 阶马尔可夫假设

N阶马尔可夫假设,也称为N阶马尔可夫链(Markov chain of order N),是马尔可夫过程的一个特例,它描述了一个系统在下一个状态的概率分布仅依赖于当前状态以及之前的N-1个状态。

在自然语言处理中,这个假设被用来构建N-gram模型,其中每个“状态”可以是一个词或者一个字母。

具体来说,N阶马尔可夫假设包含以下几个关键点:

  1. 状态的依赖性

    • 在一个N阶马尔可夫链中,系统在时间t的状态 X t X_t Xt 仅依赖于时间 t − 1 , t − 2 , . . . , t − N t-1, t-2, ..., t-N t1,t2,...,tN的状态,即 X t − 1 , X t − 2 , … , X t − N X_{t-1}, X_{t-2}, \ldots, X_{t-N} Xt1,Xt2,,XtN
  2. 条件概率

    • 给定前N个状态,下一个状态的概率是确定的。数学上,这可以表示为:
      P ( X t + 1 = x t + 1 ∣ X t = x t , X t − 1 = x t − 1 , … , X t − N = x t − N ) = P ( X t + 1 = x t + 1 ∣ X t = x t ) P(X_{t+1} = x_{t+1} | X_t = x_t, X_{t-1} = x_{t-1}, \ldots, X_{t-N} = x_{t-N}) = P(X_{t+1} = x_{t+1} | X_t = x_t) P(Xt+1=xt+1Xt=xt,Xt1=xt1,,XtN=xtN)=P(Xt+1=xt+1Xt=xt)
    • 这意味着,给定当前状态 X t X_t Xt,下一个状态 X t + 1 X_{t+1} Xt+1 的概率分布与之前的状态 X t − 1 , X t − 2 , … , X t − N X_{t-1}, X_{t-2}, \ldots, X_{t-N} Xt1,Xt2,,XtN 无关。
  3. 简化的模型

    • 马尔可夫假设通过限制状态之间的依赖关系,简化了模型的复杂度。在语言模型中,这意味着每个词的出现仅依赖于前N-1个词,而不是整个句子的历史。
  4. N的选择

    • N的选择取决于具体应用和数据的特性。较小的N值(如1或2)可以减少计算复杂度,但可能无法捕捉足够的上下文信息。较大的N值可以提供更多的上下文信息,但会增加模型的复杂度,并可能导致数据稀疏问题。
  5. 数据稀疏问题

    • 在高阶马尔可夫模型中,由于可能的状态组合数量急剧增加,很多N-gram组合可能在训练数据中从未出现,导致概率估计为零。这就需要使用平滑技术来估计这些未观察到的状态的概率。

离散型随机变量的极大似然估计(MLE)

离散型随机变量的极大似然估计(MLE)是一种统计学方法,用于估计离散型随机变量的概率分布参数。

核心思想是选择参数值,使得观测到的样本数据出现的概率(似然性)最大。

  1. 似然函数(Likelihood Function)

    • 对于离散型随机变量,似然函数是基于观测样本的联合概率分布,作为参数的函数。如果样本是独立同分布的(i.i.d.),似然函数可以表示为每个观测值概率质量函数(PMF)的乘积。
    • 即对于观测值 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn
      似然函数 L ( θ ) L(\theta) L(θ) 为: L ( θ ) = ∏ i = 1 n p ( x i ; θ ) L(\theta) = \prod_{i=1}^{n} p(x_i; \theta) L(θ)=i=1np(xi;θ)
      其中, p ( x i ; θ ) p(x_i; \theta) p(xi;θ) 是随机变量 X X X 取值为 x i x_i xi 的概率, θ \theta θ 是待估计的参数。
  2. 对数似然函数(Log-Likelihood Function)

    • 由于似然函数的乘积形式可能涉及大量的项,计算不便,通常取似然函数的自然对数,得到对数似然函数:
      ℓ ( θ ) = ln ⁡ L ( θ ) = ∑ i = 1 n ln ⁡ p ( x i ; θ ) \ell(\theta) = \ln L(\theta) = \sum_{i=1}^{n} \ln p(x_i; \theta) (θ)=lnL(θ)=i=1nlnp(xi;θ)
      对数似然函数简化了计算,并且在最大化似然函数时,最大化对数似然函数可以得到相同的结果。
  3. 求导和求解

    • 为了找到最大化似然函数的参数值,通常对对数似然函数求导,并令导数等于零求解参数:
      d d θ ℓ ( θ ) = 0 \frac{d}{d\theta} \ell(\theta) = 0 dθd(θ)=0
      解这个方程可以得到参数的极大似然估计值。
  4. 极大似然估计值(MLE)

    • 使似然函数或对数似然函数达到最大值的参数 θ \theta θ 称为极大似然估计值,记作 θ ^ \hat{\theta} θ^。这个值代表了在给定样本下,使得观测数据出现概率最大的参数值。
  5. 性质

    • 极大似然估计具有一些良好的性质,例如一致性(随着样本量的增加,MLE趋于真实参数值)和渐近正态性(对于大样本,MLE的分布趋于正态分布)。

推导

在 n-grams 语言模型中,n 阶马尔可夫假被用来简化真实条件概率的计算。具体来说,对于一个词序列 w 1 , w 2 , . . . , w N {w1, w2, ..., wN} w1,w2,...,wN,第 i 个词 wi 出现的概率只依赖于它前面的 n-1 个词 w i − n + 1 , . . . , w i − 1 {wi-n+1, ..., wi-1} win+1,...,wi1,即:

P ( w i ∣ w 1 : w i − 1 ) ≈ P ( w i ∣ w i − n + 1 : i − 1 ) P(w_i | w_1:w_{i-1}) \approx P(w_i | w_{i-n+1}:i-1) P(wiw1:wi1)P(wiwin+1:i1)

这个假设将复杂的条件概率简化为只依赖于最近 n-1 个词的概率,使得计算变得更加可行。

我们使用极大似然估计来近似词序列的条件概率。

给定一个词序列 w 1 , w 2 , . . . , w N {w1, w2, ..., wN} w1,w2,...,wN,其出现的概率可以表示为:

P ( w 1 : N ) = ∏ i = 1 N P ( w i ∣ w 1 : i − 1 ) P(w_1:N) = \prod_{i=1}^{N} P(w_i | w_1:i-1) P(w1:N)=i=1NP(wiw1:i1)

根据 n 阶马尔可夫假设,这可以简化为:

P ( w i ∣ w 1 : i − 1 ) ≈ P ( w i ∣ w i − n + 1 : i − 1 ) P(w_i | w_1:i-1) \approx P(w_i | w_{i-n+1}:i-1) P(wiw1:i1)P(wiwin+1:i1)

然后,我们使用极大似然估计来近似这个条件概率。具体来说,我们用词序列 w i − n + 1 , . . . , w i {w_{i-n+1}, ..., w_i} win+1,...,wi 在语料库中出现的次数 C ( w i − n + 1 : i ) C(w_{i-n+1}:i) C(win+1:i) 除以词序列 w i − n + 1 , . . . , w i − 1 {w_{i-n+1}, ..., w_{i-1}} win+1,...,wi1 在语料库中出现的次数 C ( w i − n + 1 : i − 1 ) C(w_{i-n+1}:i-1) C(win+1:i1) 来近似 P ( w i ∣ w i − n + 1 : i − 1 ) P(w_i | w_{i-n+1}:i-1) P(wiwin+1:i1)

P ( w i ∣ w i − n + 1 : i − 1 ) ≈ C ( w i − n + 1 : i ) C ( w i − n + 1 : i − 1 ) P(w_i | w_{i-n+1}:i-1) \approx \frac{C(w_{i-n+1}:i)}{C(w_{i-n+1}:i-1)} P(wiwin+1:i1)C(win+1:i1)C(win+1:i)

因此,n-grams 语言模型的输出是对真实概率 P(w1:N) 的近似:

P n − g r a m s ( w 1 : N ) ≈ P ( w 1 : N ) P_{n-grams}(w_1:N) \approx P(w_1:N) Pngrams(w1:N)P(w1:N)

这个近似是基于对每个条件概率的极大似然估计,它允许我们根据语料库中词序列的出现频率来估计整个文本序列的概率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/59905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【node模块】深入解读node:assert模块

🧑‍💼 一名茫茫大海中沉浮的小小程序员🍬 👉 你的一键四连 (关注 点赞收藏评论)是我更新的最大动力❤️! 📑 目录 🔽 前言1️⃣ 什么是node:assert模块?2️⃣ node:assert模块的核心…

JDBC学习记录

文章目录 一、JDBC简介1.1、 JDBC概念1.2、 JDBC本质1.3、 JDBC好处 二、JDBC快速入门2.1、 编写代码步骤2.2、 代码示例 三、JDBC API详解3.1、DriverManager3.1.1、注册驱动3.1.2、获取连接 3.2、Connection3.2.1、获取执行对象3.2.2、事务管理 3.3、Statement3.3.1、执行DDL…

Linux和,FreeRTOS 任务调度原理,r0-r15寄存器,以及移植freertos(一)

目录、 1、r0-r15寄存器,保护现场,任务切换的原理 2、freertos移植 3、freertos的任务管理。 一、前言 写这篇文章的目的,是之前面试官,刚好问到我,移植FreeRTOS 到mcu,需要做哪些步骤,当时回…

安利一款开源企业级的报表系统SpringReport

SpringReport是一款企业级的报表系统,支持在线设计报表,并绑定动态数据源,无需写代码即可快速生成想要的报表,可以支持excel报表和word报表两种格式,同时还可以支持excel多人协同编辑,后续考虑实现大屏设计…

css:基础

前言 我们之前其实也可以写出一个看起来算是一个网页的网页,为什么我们还要学css? CSS(Cascading Style Sheets)也叫层叠样式表,是负责美化的,我们之前说html就是一个骨架,css就可以用来美化网…

qt QCompleter详解

1、概述 QCompleter是Qt框架中的一个类,用于为文本输入提供自动完成功能。它可以与Qt的输入控件(如QLineEdit、QTextEdit等)结合使用,根据用户的输入实时过滤数据源,并在输入控件下方或内部显示补全建议列表。用户可以…

探索 Move 编程语言:智能合约开发的新纪元

目录 引言 一、变量的定义 二、整型 如何在Move中表示小数和负数? 三、运算符 as运算符 布尔型 地址类型 四、什么是包? 五、什么是模块? 六、如何定义方法? 方法访问权限控制 init方法 总结 引言 Move 是一种专为区…

ETLCloud异常问题分析ai功能

在数据处理和集成的过程中,异常问题的发生往往会对业务运营造成显著影响。为了提高ETL(提取、转换、加载)流程的稳定性与效率,ETLCloud推出了智能异常问题分析AI功能。这一创新工具旨在实时监测数据流动中的潜在异常,自…

遥控器工作核心技术以及传输信号算法详解!

一、遥控器传输信号算法 无线通信技术:无人机遥控器信号传输算法主要基于无线通信技术,通过特定的调制、编码和信号处理技术,将遥控器的操作指令转化为无线电信号,并传输给被控制设备。被控制设备接收到信号后,再将其…

Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)

前言:多线程编程已经广泛开始使用,其可以充分利用系统资源来提升效率,但是线程安全问题也随之出现,它直接影响了程序的正确性和稳定性,需要对其进行深入的理解与解决。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解…

基于STM32设计的森林火灾监测系统

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】研究背景与意义 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 1.5 参考文献 二、部署华为云物联网平台2.1 物联网平台介绍2.2 开通物联网服务…

Webserver(4.9)本地套接字的通信

目录 本地套接字 本地套接字 TCP\UDP实现不同主机、网络通信 本地套接字实现本地的进程间的通信&#xff0c;类似的&#xff0c;一般采用TCP的通信流程 生成套接字文件 #include<arpa/inet.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h&…

第十五届蓝桥杯C/C++B组题解——数字接龙

题目描述 小蓝最近迷上了一款名为《数字接龙》的迷宫游戏&#xff0c;游戏在一个大小为N N 的格子棋盘上展开&#xff0c;其中每一个格子处都有着一个 0 . . . K − 1 之间的整数。游戏规则如下&#xff1a; 从左上角 (0, 0) 处出发&#xff0c;目标是到达右下角 (N − 1, N …

jmeter常用配置元件介绍总结之安装插件

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之安装插件 1.下载插件2.安装插件管理包3.不用插件管理包&#xff0c;直接官网插件下载安装 1.下载插件 jm…

InnoDB 存储引擎<六> Redo log

目录 关于Redo Log 的一些其余问题 小结 本篇承接自InnoDB存储引擎<五>的内容 InnoDB 存储引擎&#xff1c;五&#xff1e; 关于Redo Log 的一些其余问题 4.不同⽇志类型对应了哪些操作&#xff1f; 分析过程&#xff1a; 1.⽇志类型总体可以分为三⼤类&#xff0c;…

Linux挖矿病毒(kswapd0进程使cpu爆满)

一、摘要 事情起因:有台测试服务器很久没用了&#xff0c;突然监控到CPU飙到了95以上&#xff0c;并且阿里云服务器厂商还发送了通知消息&#xff0c;【阿里云】尊敬的xxh: 经检测您的阿里云服务&#xff08;ECS实例&#xff09;i-xxx存在挖矿活动。因此很明确服务器中挖矿病毒…

变电站接地电阻监测装置-输电铁塔接地电阻监测装置:实时监测,预防故障

变电站接地电阻监测装置 接地电阻对电力系统的安全和稳定性至关重要&#xff0c;但在高压环境和极端气候下&#xff0c;接地系统可能出现性能下降&#xff0c;增加故障和跳闸的风险。传统的人工检测方法常常无法及时发现这些问题&#xff0c;并且操作繁琐。为此&#xff0c;我…

练习LabVIEW第四十三题

学习目标&#xff1a; 模拟红绿灯&#xff0c;红灯亮十秒&#xff0c;绿灯亮五秒&#xff0c;交替&#xff0c;并用波形图将波形显示 开始编写&#xff1a; 前面板 两个指示灯&#xff0c;一个红色&#xff0c;一个绿色&#xff0c;一个波形图&#xff1b; 程序框图 创建…

MySQL45讲 第十一讲 怎么给字符串字段加索引?

文章目录 MySQL45讲 第十一讲 怎么给字符串字段加索引&#xff1f;一、引言二、前缀索引&#xff08;一&#xff09;概念与创建方式&#xff08;二&#xff09;数据结构与存储差异&#xff08;三&#xff09;确定前缀长度的方法 三、前缀索引对覆盖索引的影响四、其他索引创建方…

STM32CUBEIDE FreeRTOS操作教程(八):queues多队列

STM32CUBEIDE FreeRTOS操作教程&#xff08;八&#xff09;&#xff1a;queues多队列 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&#…