文本向量化
- one-hot 编码
- word embedding
- word embedding API
- 转换成one-hot编码
- 转换成word embedding
one-hot 编码
在使用one-hot在编码中,我们经常把每每一个token用N长度的向量来表示,N通常等于编码中词典的数量。待处理的文本通常先分词或N-gram预处理,去除重复后得到相应的词典。 例如,词典中有四个词:{项目,电脑,手机,导管one-hot编码为:
| token | one-hot encoding |
|---|---|
| 项目 | 1000 |
| 电脑 | 0100 |
| 手机 | 0010 |
| 导管 | 0001 |
由于是使用为了表示文本,当词典中的数量较多时,空间成本非常大,因此这种方法通常不用于实际项目。
word embedding
word embedding它是度学习中表达文本最常用的方法之一。one-hot 编码不同的是,word embedding使用了一个MxN的矩阵来表示token,占用空间会更小。根据字典中数量M的大小,我们通常使用不同维度的N维向量,N可以是128、256、512等。向量中的每个值都是一个超参数,初始值通常是随机生成的,然后在神经网络训练过程中学习。具体如下:
| token | num | word embedding vector |
|---|---|---|
| 词1 | 0 | [w11,w12,w13,…,w1N] |
| 词2 | 1 | [w21,w22,w23,…,w2N] |
| 词3 | 2 | [w31,w32,w33,…,w3N] |
| … | … | … |
| 词M | M-1 | [wM1,wM2,wM3,…,wMN] |
具体使用通常是。 即:token --> num --> vector 如下图所示 
word embedding API
pytorch使用方法:
torch.nn.Embedding(num_embedding, embedding_dim) 参数介绍:
- num_embedding:词典的大小
- embedding_dim:词的维度N
使用方法:
import torch.nn as nn #实例化 embedding = nn.Embedding(vocab, 256) #进行embedding操作 input_embeded = embedding(word_input)