当前位置: 首页 > news >正文

【自然语言处理】理解词向量、CBOW与Skip-Gram模型

文章目录

  • 一、词向量基础知识
    • 1.1 One-hot表示
    • 1.2 Distributed表示
  • 二、word2vec基础知识
    • 2.1 CBOW和Skip-gram
  • 三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
    • 3.1 CBOW 模型
    • 3.2 Skip-gram 模型
  • 参考资料

由于计算机不能直接对各种字符进行运算,为此需要将词的表示进行一些转换。因此,在自然语言处理中,通常需要对输入的语料进行一些预处理:
在这里插入图片描述
其中,如何对词汇进行表示是很关键的问题,糟糕的表示方法容易导致所谓的 “Garbage in, garbage out”。

一、词向量基础知识

对词汇的表示,常见的有One-hot representionDistributed Representation 两种形式。

1.1 One-hot表示

One-hot represention 将词汇用二进制向量表示,这个向量表示的词汇,仅仅在词汇表中的索引位置处为1,其他地方都为0。例子如下图所示:
在这里插入图片描述
这样的方式表示词汇虽然简单,但是也有如下缺点:

  • 单词的上下文丢失了。
  • 没有考虑频率信息。
  • 词汇量大的情况下,向量维度高且稀疏,占用内存。

1.2 Distributed表示

Distributed Representation 也可以理解为Word Embedding,具体形式为:
在这里插入图片描述
注意到,使用Word Embedding得到的向量维度远小于词汇表的个数。如果将上面的向量在空间中表示,可以得到:
在这里插入图片描述
上图告诉我们,通过词向量之间的距离可以度量他们之间的关系,意思相近的词在空间中的距离比较近。出现这种现象的原因是最后得到的词向量在训练过程中学习到了词的上下文。

那么,Distributed Representation 要如何得到?

  • 使用神经网络语言模型可以得到;
  • 使用word2vec。

二、word2vec基础知识

word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。在正式讲解 word2vec 前,还需要对一些基本概念有所了解。

2.1 CBOW和Skip-gram

CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。如下图所示:
在这里插入图片描述
由图可见,两个模型都包含三层:输入层、投影层和输出层。区别在于:

  • CBOW模型: 在已知上下文 w t − 2 , w t − 1 , w t + 1 w t + 2 w_{t-2}, w_{t-1}, w_{t+1} w_{t+2} wt2,wt1,wt+1wt+2的前提下预测当前词 w t w_t wt
  • Skip-gram模型: 在已知当前词 w t w_t wt的前提下预测上下文 w t − 2 , w t − 1 , w t + 1 w t + 2 w_{t-2}, w_{t-1}, w_{t+1} w_{t+2} wt2,wt1,wt+1wt+2

三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型

3.1 CBOW 模型

CBOW 模型是 在已知上下文 w t − 2 , w t − 1 , w t + 1 w t + 2 w_{t-2}, w_{t-1}, w_{t+1} w_{t+2} wt2,wt1,wt+1wt+2的前提下预测当前词 w t w_t wt 。后面我们用 c o n t e x t ( w ) context(w) context(w)来表示词 w w w的上下文中的词,通常,我们取词 w w w前后 2 2 2c个单词来组成 c o n t e x t ( w ) context(w) context(w)。下图给出了CBOW模型的网络结构:
在这里插入图片描述

它包括三层:输入层、投影层、输出层。

  • 输入层:包含 c o n t e x t ( w ) context(w) context(w)中的 2 c 2c 2c个词向量 v ( c o n t e x t ( w ) 1 ) , v ( c o n t e x t ( w ) 2 ) , … , v ( c o n t e x t ( w ) 2 c ) ∈ R m \mathbf v(context(w)_1),\mathbf v(context(w)_2),\ldots,\mathbf v(context(w)_{2c}) \in \mathbf R^m v(context(w)1),v(context(w)2),,v(context(w)2c)Rm
    ,每个词向量的长度是 m m m
  • 投影层:将输入层的 2 c 2c 2c个词向量累加求和,即 x w = ∑ i = 1 2 c v ( c o n t e x t ( w ) i ) \mathbf x_w = \sum_{i=1}^{2c}\mathbf v(context(w)_i) xw=i=12cv(context(w)i)
  • 输出层:输出层是用哈夫曼算法以各词在语料中出现的次数作为权值生成的一颗二叉树,其叶子结点是语料库中的所有词,叶子个数 N = ∣ D ∣ N=|D| N=D,分别对应词典D中的词。

神经网络语言模型(NNLM)中大部分计算集中在隐藏层和输出层之间的矩阵向量运算,以及输出层上的softmax归一化运算,CBOW模型对此进行了改进。与传统的神经网络语言模型相比:

  • NNLM是简单的将输入的向量进行拼接,而CBOW模型将上下文的词累加求和作为输入;
  • NNLM是线性结构,而CBOW是树形结构
  • NNLM具有隐藏层,而CBOW没有隐藏层

3.2 Skip-gram 模型

Skip-gram 模型的结构也是三层,下面以样本 ( w , c o n t e x t ( w ) (w,context(w) (w,context(w)为例说明。如下图所示:
在这里插入图片描述
它也包括三层:输入层、投影层、输出层。

  • 输入层:只包含当前样本中心词 w w w词向量 v ( w ) ∈ R m \mathbf v(w) \in \mathbf R^m v(w)Rm,每个词向量的长度是 m m m
  • 投影层:恒等投影,即和输入层一样,保留是为了与CBOW对比。
  • 输出层:与CBOW类似

对于Skip-gram模型,已知的是当前词 w w w,需要对其上下文 c o n t e x t ( w ) context(w) context(w)中的词进行预测,所以:
在这里插入图片描述
类似于CBOW,所以:
在这里插入图片描述
其中:
在这里插入图片描述

所以我们的优化目标是:
在这里插入图片描述
采用随机梯度上升法将这个函数最大化。

参考资料

  • 【AI理论学习】理解词向量、CBOW与Skip-Gram模型

相关文章:

【自然语言处理】理解词向量、CBOW与Skip-Gram模型

文章目录 一、词向量基础知识1.1 One-hot表示1.2 Distributed表示 二、word2vec基础知识2.1 CBOW和Skip-gram 三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型3.1 CBOW 模型3.2 Skip-gram 模型 参考资料 由于计算机不能直接对各种字符进行运算,为此需要…...

一致性哈希算法原理

文章目录 前言正文一、抛砖引玉,简单Hash算法的短板二、一致性Hash算法的基本概念2.1 一致性Hash算法本质也是取模2.2 便于理解的抽象,哈希环2.3 服务器如何映射到哈希环上2.4 对象如何映射到哈希环上,并关联到对应的机器 三、一致性Hash算法…...

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入…...

工厂干洗店洗鞋店系统,校园洗护小程序来了

洗鞋店小程序,干洗店软件,洗护行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发,成品软件开发 洗衣工厂软件、功能强大! 包含以下主要功能: * 用户选择洗护用品&#x…...

计算机毕设 opencv 图像识别 指纹识别 - python

文章目录 0 前言1 课题背景2 效果展示3 具体实现3.1 图像对比过滤3.2 图像二值化3.3 图像侵蚀细化3.4 图像增强3.5 特征点检测 4 OpenCV5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往…...

简化通知基础设施:开源的消息通知服务 | 开源专题 No.41

novuhq/novu Stars: 22.9k License: MIT Novu 是一个开源的通知基础设施项目,它提供了统一的 API 来通过多个渠道发送通知,包括应用内、推送、电子邮件、短信和聊天。主要功能有: 为所有消息提供商 (应用内、电子邮件、短信、推送和聊天) 提…...

微信公众号排版写作

对话框添加菜单 05 一节课学会使用微信自动回复_哔哩哔哩_bilibili 一件扫图关注 一件扫描付款 公众号排版 10元付费 08 —长按二维码关注和收款_哔哩哔哩_bilibili 微信开店 09 一节课开设自己的微店_哔哩哔哩_bilibili 知乎软文,设置引流矩阵 20 —在知乎写…...

UE4/5 批量进行贴图Texture压缩、修改饱和度

该插件下载地址: 🍞正在为您运送作品详情https://mbd.pub/o/bread/ZZWYmpxw 适用于 UE4 4.25/4.26/4.27 UE5 以上版本 在Edit - Plugins中分别开启 插件 Python Editor Script Plugin 插件 Editor Scripting Utilites 如果会python代码,…...

mysql中limit和offset的用法详细介绍

有的时候我们在学习或者工作中会使用到SQL语句,那么介绍一下limit和offset的使用方法。 mysql里分页一般用limit来实现,例如: 1、select* from user limit 3 表示直接取前三条数据 2、select * from user limit 1,3; 表示取1后面的第2,3,…...

vivado简单仿真入门

打开软件 创建工程 create project ![在这里插入图片描述](https://img-blog.csdnimg.cn/892eda626d394733920854b71ca8f726.png)先next,保留工程路径,配置环境 配置芯片环境 本次芯片类型 xc7k325tffg900-2 创建之后完整的demo 编写仿真内容 timescale 1ns/1…...

Elsevier (爱思唯尔) 期刊 投稿流程与注意点

😄 Elsevier (爱思唯尔) 期刊投稿流程中还是遇到了不少问题的,本篇文章总结一些说明文档和提交要点。 ⭐ LaTex 模板说明 & 投稿流程与准备 latex模版和投稿流程相关参考说明可看下面几个网址,总结的非常全面了: Elsevier&am…...

centos Let‘s Encrypt 免费https证书申请,并且自动续约

一、首先我们要使用certbot 工具 官网地址: https://certbot.eff.org/instructions?wsother&oscentosrhel8 下载 snap 工具 sudo yum install snapd sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap sudo systemctl status…...

nodejs+vue城市轨道交通线路查询系统-计算机毕业设计

着社会的快速发展,计算机的影响是全面且深入的。社会生产水平的不断提高,日常生活中人们对备忘记账系统方面的要求也在不断提高,因特网的使用越来越广泛,而在众多的因特网中,万维网更是为人们带来了新鲜的体验。在这当…...

MFC Windows 程序设计[332]之十进制转十六进制编辑框(附源码)

MFC Windows 程序设计[332]之十进制转十六进制编辑框 程序之美前言主体运行效果核心代码逻辑分析结束语程序之美 前言 MFC是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包…...

转化率的催化剂:网站客服机器人如何推动企业销售?

随着5G的推广,人工智能技术的普及程度越来越高,人机交互已经成为这个时代的常态,无论是在我们的日常生活中还是在企业服务中都非常常见。如今,无论是营销型企业还是客服型企业,都纷纷采用网站客服机器人服务&#xff0…...

Go 包操作之如何拉取私有的Go Module

Go 包操作之如何拉取私有的Go Module 在前面,我们已经了解了GO 项目依赖包管理与Go Module常规操作,Go Module 构建模式已经成为了 Go 语言的依赖管理与构建的标准。 在平时使用Go Module 时候,可能会遇到以下问题: 在某 modul…...

VR酒店专业情景教学演示

VR酒店情景教学为学生带来的全新学习体验。在这个虚拟环境中,学生可以亲身经历各种酒店管理场景,从客房清洁、餐厅服务,到客人接待、突发事件处理,都能得到生动的模拟和实践。 客房清洁是酒店管理中最基础却也最重要的一环。通过V…...

odps函数

1、wm_concat 聚合函数,可以实现对分组后的列数据拼接成一行。 参数:第一个参数为分隔符,第二个参数为要聚合的列; select prov_code,wm_concat(-,city_name) from code_china_area group by prov_code; 2、datediff 日期函数…...

【golang】mysql默认排序无法实现 使用golang实现对时间字符串字段的排序

一、问题场景 1、mysql实现排序-性能低下 例如:某字段 finish_time 数据如下:6:13:27、 10:56:11、 21:56:11 会出现顺序如下的场景: 10:56:11、 21:56:11、6:13:27 二、解决方案 2、golang实现排序 package mainimport ("fmt"&…...

C语言学习笔记总结(一)

C语言基础 字节大小 char:1 字节 unsigned char:1 字节 short:2 字节 unsigned short:2 字节 int:通常为 4 字节(32 位平台)或 8 字节(64 位平台) unsigned int&#x…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...