三、N元语法(N-gram)

为了弥补 One-Hot 独热编码的维度灾难语义鸿沟以及 BOW 词袋模型丢失词序信息稀疏性这些缺陷,将词表示成一个低维的实数向量,且相似的词的向量表示是相近的,可以用向量之间的距离来衡量相似度。

N-gram 统计语言模型是用来计算句子概率的概率模型,即某一个词的出现由其前面每一个词出现的概率决定。假设一个长度为N的句子,句子 S=(X1,...,XN),那么这个句子的概率(也就是这 N 个词共同出现的概率)如下:

P(S=(X1,..., XN))=P(X1)P(X2|X1)...P(XN)|X1...X(N-1))

N的取值名称含义
1Unigram当前词出现的概率仅仅与自身相关
2Bigram当前词出现的概率仅仅与前面的1个词相关
3Trigram当前词出现的概率仅仅与前面的2个词相关
.........
NN-gram当前词出现的概率仅仅与前面的(N-1)个词相关

例如,长度为4的序列X1, X2, X3, X4 在Ungram、Bigram和Trigram中的概率分别为:

P(X1, X2, X3, X4) = P(X1)P(X2)P(X3)P(X4)

P(X1, X2, X3, X4) = P(X1)P(X2|X1)P(X3|X2)P(X4|X3)

P(X1, X2, X3, X4) = P(X1)P(X2|X1)P(X3|X1, X2)P(X4|X2, X3)

随着 N 的取值越大,N-gram 模型在理论上越精确,但是也越复杂,需要的计算量和训练语料数据量也就越大,并且精度提升的不够明显,所以在实际的任务中很少使用 n>3 的语言模型。

例如,使用一个含有三句话的微型语料库,而且需要在这三句话的前后分别加上开始符<BOS>和结束符 <EOS>(目的是为了让以某一词为条件的所有概率加起来是 1,从而保证这确实是一个合法的概率分布)接下来我们来看语料:

<BOS>我爱你<EOS>
<BOS>我爱她<EOS>
<BOS>她爱你<EOS>

BOS:Begining Of Sequence,代表序列开始。 EOS:End Of Sequence,代表序列结束。

利用 Bi-gram 计算各个词出现的概率:

  • 单词 "<BOS>" 出现的次数:3次
  • 单词 "我" 出现的次数:2次
  • 单词 "爱" 出现的次数:3次
  • 单词 "你" 出现的次数:2次
  • 单词 "她" 出现的次数:2次
  • 单词 "<EOS>" 出现的次数:3次
  • 二元组 "我爱" 出现的次数:2次
  • 二元组 "爱你" 出现的次数:2次
  • 二元组 "她爱" 出现的次数:1次
  • 二元组 "爱她" 出现的次数:1次
  • 二元组 "<BOS>我" 出现的次数:2次
  • 二元组 "<BOS>她" 出现的次数:1次
  • 二元组 "你<EOS>" 出现的次数:2次
  • 二元组 "她<EOS>" 出现的次数:1次

利用 Bi-gram 计算相邻两个词先后出现的概率: 

  • P(我|<BOS>) = Count(<BOS>我) / Count(<BOS>) = 2/3;
  • P(她|<BOS>) = Count(<BOS>她) / Count(<BOS>) = 1/3;
  • P(爱|) = Count(我爱) / Count(我) = 1;
  • P(<EOS>|你) = Count(你<EOS>) / Count(你) = 1;
  • P(你|) = Count(爱你) / Count(爱) = 2/3;
  • P(她|爱) = Count(爱她) / Count(爱) = 1/3;
  • P(爱|) = Count(她爱) / Count(她) = 1/2;
  • P(<EOS>|她) = Count(她<EOS>) / Count(她) = 1/2.

这样我们就完成了 Bi-gram 各个概率值的计算,整个句子的概率就是挑选出对应的概率相乘即可。

  • P(<BOS>我爱你<EOS>) = P(我|<BOS>) × P(爱|) × P(你|) × P(<EOS>|你) = 2/3 × 1 × 2/3 ×1 = 4/9
  • P(<BOS>我爱她<EOS>) = P(我|<BOS>) × P(爱|) × P(她|) × P(<EOS>|你) = 2/3 × 1 × 1/3 ×1 = 2/9
  • P(<BOS>她爱你<EOS>) = P(她|<BOS>) × P(爱|) × P(你|) × P(<EOS>|你) = 1/3 × 1 × 1 × 2/3 = 2/9

N-gram 语言模型使用统计频次来近似概率值,可能会出现数据稀疏问题:

  • 如果分子为0,估计的概率值为0,由于连乘的方式会导致最终计算出句子的概率值为0;
  • 如果分母为0,分母为0,计算的公式将没有任何意义

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

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

相关文章

docker 子网

当需要给容器分配指定 ip &#xff0c;为避免ip 冲突&#xff0c;指定容器子网处理 创建 subnet 子网 docker network create --subnet 10.0.0.0/24 --gateway 10.0.0.1 subnet-testdocker network ls NETWORK ID NAME DRIVER SCOPE ... f582ecf297bc sub…

vs2022的下载及安装教程(Visual Studio 2022)

vs简介 Visual Studio在团队项目开发中使用非常多且功能强大&#xff0c;支持开发人员编写跨平台的应用程序;Microsoft Visual C 2022正式版(VC2022运行库)&#xff0c;具有程序框架自动生成&#xff0c;灵活方便的类管理&#xff0c;强大的代码编写等功能&#xff0c;可提供编…

面向对象——设计模式

一、23中设计模式 口诀&#xff1a;公司模姐、四桥组装外箱带 &#xff08;一&#xff09;创建型5种 1、类 &#xff08;1&#xff09;工厂方法模式* &#xff08;工厂模式&#xff09; &#xff08;*的是以前软考没考过的&#xff09; Factory Method 2、方法 &#…

HIVE伪分布安装

引言 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,类似于RDBMS(关系型数据库,如MySQL、Oracle、PgSQL),并提供类SQL的查询功能。 实验准备 1.搭建好伪分布安装模式的Hadoop的虚拟机,并配置了Linux网络。(可看我前面发布的文章) 2.apache…

springboot报错驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接,解决方式

起因&#xff1a;今天发布程序&#xff0c;本地测试没有问题但是部署到服务器上报&#xff1a;驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS…

Windows系统安装Tomcat并结合内网穿透实现公网访问本地网页

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个拥有强大功能的轻量级服务器&#xff0c;由于其可以实…

计算机的存储方式

文章目录 计算机的存储方式概述原码原码的概念反码补码补码的意义数值溢出示例1&#xff1a;示例2&#xff1a; 计算机的存储方式 概述 当前的计算机系统使用的基本上是二进制系统&#xff0c;数据在计算机中主要是以补码的形式存储的。 术语描述bit(比特)一个二进制代表一位&…

k8s应用综合实例

k8s应用综合实例 目录 k8s应用综合实例 目录 原文链接 推荐文章 实验环境 实验软件 本节实战 预期 原理 高可用 稳定性 避免单点故障 使用 PDB 健康检查 服务质量 QoS QoS类型 资源回收策略 滚动更新 失败原因 零宕机 HPA 安全性 持久化 Ingress FAQ …

Python Web应用程序构建的最佳实践:代码实例与深度解析【第122篇—装饰器详解】

Python Web应用程序构建的最佳实践&#xff1a;代码实例与深度解析 在当今数字时代&#xff0c;构建高效、可扩展的Web应用程序是开发者们的一项重要任务。Python&#xff0c;作为一种简洁、强大的编程语言&#xff0c;为Web开发提供了丰富的工具和框架。在本篇文章中&#xff…

力扣hot100:76.最小覆盖子串(滑动窗口)

本题使用滑动窗口解决&#xff0c;用right表示滑动窗口的右边界&#xff0c;left表示滑动窗口的左边界。寻找可行解&#xff0c;我们可以这样约定滑动窗口的意义&#xff1a;right指针向右移动&#xff0c;是使得滑动窗口找到可行解。left指针向右移动是为了更新窗口使得其可以…

MongoDB 可调节的一致性,其他数据库都不行系列 (白皮书 翻译)--1

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;…

EDGE 音乐生成的可编辑舞蹈 论文学习笔记

本文不是很严谨&#xff0c;供学习参考&#xff0c;随时更新 EDGE: Editable Dance Generation From Music 音乐生成的可编辑舞蹈 GitHub - Stanford-TML/EDGE: Official PyTorch Implementation of EDGE (CVPR 2023) 1. 我们引入了一种基于扩散的舞蹈生成方法&#xff0c;该…

Flutter 开发环境搭建-VS Code篇

1.准备环境 Java SDK 下载及安装Flutter SDK 安装及配置环境变量 下载地址将flutter sdk解压目录下的bin目录放到系统环境变量中 检查环境&#xff0c;在系统终端中输入&#xff1a; # 打印flutter sdk版本号 flutter --version# 检查flutter运行环境 flutter doctor第一次运…

linuxOPS基础_linux安装配置

Linux系统下载 Linux系统版本选择&#xff1a;CentOS7.6 x64&#xff0c;【镜像一般都是CentOS*.iso文件】 问题&#xff1a;为什么不选择最新版的8 版本&#xff1f; 7.x 目前依然是主流 7.x 的各种系统操作模式是基础 官网&#xff1a;https://www.centos.org/ &#xff0c;…

Spring 事务的种类 ? 传播机制 ?

在Spring框架中&#xff0c;事务管理可以分为编程式事务和声明式事务两种主要形式。每种形式都有其特点和使用场景。以下是这两种形式的具体介绍&#xff1a; 编程式事务 编程式事务是通过编写代码来实现事务管理的。在Spring中&#xff0c;编程式事务管理通常通过Transactio…

【逆向实战 某视频防盗链参数的生成】防盗链cKey的生成,还要补环境?还是单嵌套的webpack?

逆向日期&#xff1a;2024.03.10 使用工具&#xff1a;Node.js 类型&#xff1a;单嵌套Webpack 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xf…

c语言:日期强迫症

日期强迫症 任务描述 文档中填写日期时不同的人有不同的书写习惯&#xff0c;很多人习惯用小数点或其它字符作为分隔符&#xff0c;例如“2002.01.07”、“2002/1/7”、“02:01:7”都表示2002年1月7日。赵中瑞同学患有强烈的日期格式强迫症&#xff0c;当他看到一个日期时&am…

【Java设计模式】三、简单工厂、工厂方法模式、抽象工厂模式

文章目录 0、案例&#xff1a;咖啡屋1、简单工厂模式 静态工厂&#xff08;不属于23种之列&#xff09;2、工厂方法模式3、抽象工厂模式4、简单工厂模式 配置文件解除耦合5、JDK源码中对工厂模式的应用 0、案例&#xff1a;咖啡屋 模拟咖啡店点餐。咖啡有多种&#xff0c;抽…

CentOS 8使用笔记

查看磁盘空间 df -h查看python版本 python3 --version查看某个端口是否打开 nc -zv localhost 9200或者 curl http://localhost:9200查看所有打开的端口并将部分端口升序排列 ss -tuln | awk NR>1 | sort -k 2,2n -k 1,1添加端口并刷新 firewall-cmd --zonepublic --a…

掌握React中的useCallback:优化性能的秘诀

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…