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

因为文本不能够直接被模型计算,所以需要将其转化为向量

把文本转化为向量有两种方式:

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

一、one-hot 编码

在one-hot编码中,每一个token使用一个长度为N的向量表示,N表示词典的数量。

即:把待处理的文档进行分词或者是N-gram处理,然后进行去重得到词典。

  • 例:假设我们有一个文档:"深度学习",那么进行one-hot处理后得到的结果如下
token one-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的形象表示就是:

token num vector
词1 0 [w11,w12,w13···w1N],其中N表示维度(dimension)
词2 1 [w21,w22,w23···w2N]
词3 2 [w31,w32,w33···w3N]
··· ··· ···
词m m [wm1,wm2,wm3···wmN],其中m表示词典的大小

我们会把所有的文本转化为向量,把句子用向量来表示

在这之间,我们会先把token使用数字来表示再把数字用向量来表示

即:token ---> num ---> vector。

比如,dog是1,cat是2,lion是3,然后再将1、2、3转化为向量。

token d1 d2 d3 d4
dog -0.4 0.37 0.02 -0.34
cat -0.15 -0.02 -0.23 -0.23
lion 0.19 -0.4 0.35 -0.48
tiger -0.08 0.31 0.56 0.07
elephant -0.04 -0.09 0.11 -0.06
cheetah 0.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
mouse 0.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的维度

使用方法:

python 复制代码
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]。

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

相关推荐
Envyᥫᩣ8 分钟前
Python中的自然语言处理:从基础到高级
python·自然语言处理·easyui
HyperAI超神经42 分钟前
Meta 首个多模态大模型一键启动!首个多针刺绣数据集上线,含超 30k 张图片
大数据·人工智能·深度学习·机器学习·语言模型·大模型·数据集
sp_fyf_202444 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-03
人工智能·算法·机器学习·计算机视觉·语言模型·自然语言处理
Eric.Lee20211 小时前
数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall
python·深度学习·算法·目标检测·计算机视觉·数据集·螃蟹检测
DogDaoDao2 小时前
【预备理论知识——2】深度学习:线性代数概述
人工智能·深度学习·线性代数
牛哥带你学代码2 小时前
交叠型双重差分法
人工智能·深度学习·机器学习
深度学习实战训练营3 小时前
基于keras的停车场车位识别
人工智能·深度学习·keras
XiaoLiuLB4 小时前
ChatGPT Canvas:交互式对话编辑器
人工智能·自然语言处理·chatgpt·编辑器·aigc
菜就多练_08284 小时前
《深度学习》OpenCV 摄像头OCR 过程及案例解析
人工智能·深度学习·opencv·ocr
没有余地 EliasJie4 小时前
Windows Ubuntu下搭建深度学习Pytorch训练框架与转换环境TensorRT
pytorch·windows·深度学习·ubuntu·pycharm·conda·tensorflow