文本向量化的方法


因为文本不能直接输入到模型当中从而进行相关计算,所以需要首先需要将文本转换为向量的形式。
把文本转换成向量化的方法主要有两种:

  1. 转换成one-hot编码
  2. 转换成word embedding

one-hot 编码

在使用one-hot编码中,我们常常是将每一个token使用一个长度为N的向量来表示,N通常等于编码中词典的数量。通常是先将待处理的文本进行分词或者N-gram预处理,去除重复后得到相应的词典。
例如词典中有4个词语:{‘项目’,‘电脑’,‘手机’,‘导管’},则对应的one-hot编码为:

tokenone-hot encoding
项目1000
电脑0100
手机0010
导管0001

由于是使用稀疏向量来表示文本,当词典中的个数比较多时,空间开销非常大,所以实际项目中通常不会使用这种方式。

word embedding

word embedding是深度学习中的一种最常用的表示文本的方法。与one-hot 编码不同的是,word embedding使用了一个MxN的浮点型的稠密矩阵来表示token,占用空间会更小。根据词典中的数量M的大小,我们通常使用不同维度的N维向量,N可以是128,256,512等。其中向量中的每一个值是一个超参数,初始值通常是有随机生成,之后会在神经网络训练的过程中学习得到。具体如下:

tokennumword embedding vector
词10[w11,w12,w13,…,w1N]
词21[w21,w22,w23,…,w2N]
词32[w31,w32,w33,…,w3N]
词MM-1[wM1,wM2,wM3,…,wMN]

具体使用的话,通常是先将token使用数字来表示,再把数字用向量来表示
即:token --> num --> vector
如下图所示
图1

word embedding API

pytorch中的使用方法:

torch.nn.Embedding(num_embedding, embedding_dim)

其中参数介绍:

  1. num_embedding:词典的大小
  2. embedding_dim:词的维度N

使用方法:

import torch.nn as nn
#实例化
embedding = nn.Embedding(vocab, 256)
#进行embedding操作
input_embeded = embedding(word_input)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宵练丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值