【自然语言处理】理解词向量、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 represention
和 Distributed 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} wt−2,wt−1,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} wt−2,wt−1,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} wt−2,wt−1,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 先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的推广,人工智能技术的普及程度越来越高,人机交互已经成为这个时代的常态,无论是在我们的日常生活中还是在企业服务中都非常常见。如今,无论是营销型企业还是客服型企业,都纷纷采用网站客服机器人服务࿰…...

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…...

WPF:自定义按钮模板
1.WPF:自定义按钮模板 自定义封装的按钮属性可写在<Button.Template>中 Background"{TemplateBinding Background}"中的TemplateBinding代表使用按钮本身所使用的背景颜色 不在样式内修改背景颜色 例如: <Button Width"300" Height&q…...

Spring Boot集成Swagger接口分类与各元素排序问题
在上一篇中我们完成使用JSR-303校验,以及利用Swagger2得到相关接口文档,这节,我们在原先的基础之上,完成Swagger中关于对各个元素之间控制前后顺序的具体配置方法。 Swagger的接口的分组 首先我们需要对Swagger中的接口也就是以…...

盘点国产ChatGPT十大模型
什么是ChatGPT ChatGPT是一种基于OpenAI的GPT(Generative Pre-trained Transformer)模型的聊天机器人。GPT是一种基于深度学习的自然语言处理模型,它使用了Transformer架构来处理文本数据。GPT模型通过在大规模文本数据上进行预训练ÿ…...

【C++杂货铺】C++11特性总结:列表初始化 | 声明 | STL的升级
文章目录 一、C11简介二、统一的列表初始化2.1 { } 初始化2.2 列表初始化在内置类型上的应用2.3 列表初始化在内置类型上的应用2.4 initializer_list2.4.1 {1, 2, 3} 的类型2.4.2 initializer_list 使用场景2.4.3 模拟实现的 vector 中的 { } 初始化和赋值 三、声明3.1 auto3.1…...

doris的be其中失败的原因
doris的be其中失败的原因 修改limits文件 vim /etc/security/limits.conf1在文件的末尾处添加或者修改 * soft nofile 204800 * hard nofile 204800 * soft nproc 204800 * hard nproc 204800vim /etc/sysctl.conf#添加 fs.file-max 6553560 vm.max_map_count 2000000 1 2…...

LeetCode 面试题 16.04. 井字游戏
文章目录 一、题目二、C# 题解 一、题目 设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ",“X"和"O"组成,其中字符” "代表一个空位。 以下是井字游戏的规则&#…...

Nodejs和Node-red的关系
NPM相关知识 npm概念 npm:Node Package Manager,Node包管理器。是Node.js默认的,以JavaScript编写的软件包管理系统。 npm工作原理 npm的操作原理是各个官网使用npm publish把代码提交到npm的服务器,其他人想要使用这些代码&am…...

Spring Boot整合OAuth2实现GitHub第三方登录
Spring Boot整合OAuth2,实现GitHub第三方登录 1、第三方登录原理 第三方登录的原理是借助OAuth授权来实现,首先用户先向客户端提供第三方网站的数据证明自己的身份获取授权码,然后客户端拿着授权码与授权服务器建立连接获得一个Access Token…...

Android [SPI,AutoSerivce,ServiceLoader]
记录一下在Android中使用SPI的过程。 1.项目gralde文件。 plugins {id kotlin-kapt } dependencies {implementation com.google.auto.service:auto-service:1.0-rc7 kapt "com.google.auto.service:auto-service:1.0-rc7" } 这个AutoServ…...

【Linux】ASCII码表-256个
ASCII码简介: ASCII码 是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646 。在这个页面,你可以找到8位的256个字符、ASCII码表和Windows-1252 (code page 1252,它是国际标准ISO 8859-1的一个扩展字符集) 标准保持一致;ASCII码 是 A…...