【自然语言处理】【深度学习】文本向量化、one-hot、word embedding编码

因为文本不能够直接被模型计算,所以需要将其转化为向量
把文本转化为向量有两种方式:

  • 转化为one-hot编码
  • 转化为word embedding

一、one-hot 编码

在one-hot编码中,每一个token使用一个长度为N的向量表示,N表示词典的数量。
即:把待处理的文档进行分词或者是N-gram处理,然后进行去重得到词典。

  • 例:假设我们有一个文档:“深度学习”,那么进行one-hot处理后得到的结果如下
tokenone-hot encoding
1000
0100
0010
0001

弊端:我们有1万个词的时候,编码很长,而且只有一个位置的1有效。使用稀疏向量表示文本,占用空间比较大。

二、word embedding编码

word embedding是深度学习中表示文本常用的一种方法。和one-hot编码不同,word embedding使用了浮点型的稠密矩阵来表示token。根据词典的大小,我们的向量通常使用不同的维度,例如100,256,300等。其中向量中的每一个值是一个超参数,其初始值是随机生成的,之后会在训练的过程中进行学习中获得。Word embedding 的目标是捕捉词语之间的语义关系,使得相似含义的词在向量空间中的表示更为接近。

如果我们文本中有20000个词语,如果使用one-hot编码,那么我们会有20000*20000的矩阵,其中大多数的位置都为0,但是如果我们使用word embedding来表示的话,只需要20000*维度,比如20000*300的形象表示就是:

tokennumvector
词10[w11,w12,w13···w1N],其中N表示维度(dimension)
词21[w21,w22,w23···w2N]
词32[w31,w32,w33···w3N]
·········
词mm[wm1,wm2,wm3···wmN],其中m表示词典的大小

我们会把所有的文本转化为向量,把句子用向量来表示
在这之间,我们会先把token使用数字来表示再把数字用向量来表示
即:token —> num —> vector。
比如,dog是1,cat是2,lion是3,然后再将1、2、3转化为向量。

tokend1d2d3d4
dog-0.40.370.02-0.34
cat-0.15-0.02-0.23-0.23
lion0.19-0.40.35-0.48
tiger-0.080.310.560.07
elephant-0.04-0.090.11-0.06
cheetah0.27-0.28-0.2-0.43
monkey-0.02-0.67-0.21-0.48
rabbit-0.04-0.3-0.18-0.47
mouse0.09-0.46-0.35-0.24

2.1 word embedding数据形状转化

在这里插入图片描述

这批batch的每个句子有N个词,总共有batch_size个句子,也就是说这批batch的形状为[batch_size, N]。

word embedding规定,每个词映射到长度为4的向量上,即维度为4。其形状为[M, D]

这批batch经过word embedding后,查询其中的词典(M个词),把每一个句子的词映射到其中的向量上,最终batch的形状变成了[batch_size, N, D]。

2.2 word embedding API

torch.nn.Embedding(num_embeddings,embedding_dim)
参数:

  • num_embbeding:词典的大小
  • embedding_dim: embedding的维度

使用方法:

embedding = nn.Embedding(vocab_size,300)#实例化
input_embed = embedding(input) #进行embedding操作

2.3数据形状的变化

思考:每一个batch中的句子有10个词语,经过形状为[20, 4]的word embedding之后,原来的句子会变成什么形状?

因为word emdedding规定每个词用长度为4的向量表示,所以batch中每个句子中的10个词语会分布到向量的4个分量上,最终变成[batch_size, 10, 4]。

做图码字不易,可以点个赞嘛,谢谢你~~~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA导出jar

1、选择导出方式 2、选择Main Class 3、构建jar

echarts:柱状图的常用操作

文章目录 背景基础柱状图设置柱子的样式 series.itemStyle添加标签(柱子上的数字)series.label添加提示框(点击柱子的弹窗)tooltip添加图例 legend滑动图表 dataZoom手动滑动滑动条扩展:左右滑动一页 背景 本文将带大…

某顺cookie逆向

目标网站:aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v 这个网站是对cookie进行反爬虫的,可以看到cookie中有一个加密参数v 二、分析参数 可以使用hook方法,来hook住cookie中v生成的位置,可以直接在控制台中输入hook函数 (function () {use strict;v…

unity学习笔记----游戏练习06

一、豌豆射手的子弹控制 创建脚本单独控制子弹的运动 用transform来控制移动 void Update() { transform.Translate(Vector3.right * speed * Time.deltaTime); } 创建一个控制子弹速度的方法,方便速度的控制 private void SetSpeed(float spee…

Grafana loki配置, 无脑版

使用docker部署Grafana loki 1.创建 docker-compose.yml 文件 touch docker-compose.yml写入以下内容 vim touch docker-compose.yml version: "3"networks:loki:services:loki:image: grafana/loki:latestrestart: unless-stoppedports:- "3100:3100"vo…

vue 本地中导入 maptalks

1、进入 github 中 maptalks 文件下载页面(https://github.com/maptalks/maptalks.js/releases) 这里可能会有朋友应为网络问题打不开 github ,可以查看作者另一篇关于解决该问题的文章👉GitHub 打不开问题解决 2、将下载好的文件…

【郑益慧】模拟电子技术:5.双极晶体管的结构与方法原理

双极晶体管的结构与方法原理 空穴和自由电子都参与导电称之为双极晶体管(半导体三极管) 1.结构及类型 一块半导体材料上,做出三个不同的掺杂区域。 发射极 —— emitter 基极 —— basic 集电极 —— collector’ 为什么叫不同的名字&…

静态web服务器实战

准备html页面,包含两个页面(index.html, index2.html)和一个404(404html)页面,目录示意: 1.返回固定页面 with open("website/index.html","r") as file: import socket# # 返回固定的页面 website/index.html if __na…

Redis 面试题 | 10.精选Redis高频面试题

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

android 图片添加水印

android 图片添加水印 本文主要讲下android 中如何给图片添加水印. 在Android中给图片添加水印可以使用Bitmap、Matrix和Canvas类的方法来实现. private Bitmap addWater() {// 加载原始图片Bitmap sourceBitmap BitmapFactory.decodeResource(getResources(), R.mipmap.sou…

云原生安全:风险挑战与安全架构设计策略

概述 数字化转型已经成为当今最流行的话题之一,大部分企业已经开启自身的数字化转型之旅,在未来企业只有数字化企业和非数字化企业之分。通过数字经济的加速发展,可以有效推动企业数字化转型的步伐。云计算作为数字化转型的底座和重要的载体…

『OpenCV-Python鼠标画笔』

OpenCV-Python教程链接: https://opencv-python-tutorials.readthedocs.io/ 示例一:图片上双击的位置绘制一个圆圈 首先创建一个鼠标事件回调函数,鼠标事件发生时就会被执行。鼠标事件可以是鼠标上的任何动作,比如左键按下&#x…

HarmonyOS关于deps、external_deps的使用

在添加一个模块的时候,需要在BUILD.gn中声明它的依赖,为了便于后续处理部件间依赖关系,我们将依赖分为两种——部件内依赖deps和部件间依赖external_deps。 依赖分类 如上图所示,主要分为部件内依赖(图左)…

如何降低微服务复杂度丨云栖大会微服务主题分享实录

作者:谢吉宝 本文整理自阿里云资深技术专家、中间件负责人谢吉宝在2023云栖大会《极简微服务模式,降低微服务复杂度的最佳实践》的分享 2023 云栖大会现场 当面临复杂的挑战时,"分而治之"的方法往往能取得显著的效果。微服务架构…

Qt编写linux系统onvif工具(支持预览/云台/预置位/录像等)

一、功能特点 广播搜索设备,支持IPC和NVR,依次返回。可选择不同的网卡IP进行对应网段设备的搜索。依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。可对每个设备设…

mmpose 2d姿态预测值转json文件

目录 效果图: 参考 模板文件下载地址: python预测代码: 效果图: <

Mall4j电商系统 java电商系统 后台界面-mall4v

一个基于vue、element ui 的轻量级、前后端分离、拥有完整sku和下单流程的完全开源商城后台所属前端界面 前言 mall4j商城项目致力于为中小企业打造一个完整、易于维护的开源的电商系统&#xff0c;采用现阶段流行技术实现。后台管理系统包含商品管理、订单管理、运费模板、规…

《动手学深度学习(PyTorch版)》笔记3

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;本书源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode测试通过。 Chapter3 Linear …

【模拟通信】AM、FM等的调制解调

调制相关的概念 调制&#xff1a;控制载波的参数&#xff0c;使载波参数随调制信号的规律变化 已调信号&#xff1a;受调载波&#xff0c;含有调制信号的全部特征 调制的作用: 提高发射效率多路复用&#xff0c;提高信道利用率提高系统抗干扰能力 两种调制方式 线性调制&a…

主播产品对比话术

—、价格对比 主播产品A︰这款产品定价相对较高&#xff0c;但是其品质和功能都是一流的&#xff0c;对于追求高端体验的消费者来说&#xff0c;物有所值。 主播产品B∶这款产品的价格相对较低&#xff0c;性价比很高&#xff0c;对于预算有限的消费者来说&#xff0c;是个不…