赞
踩
B站上有一个讲词嵌入的视频,我认为讲的还可以:
https://www.bilibili.com/video/BV1Ki4y1x7gJ?from=search&seid=14594580491827061010
将文本分解而成的单元(单词、字符或n-gram)叫做标记;
将文本分解成标记的过程叫做分词。
所有文本向量化过程都是应用某种弄分词方案,然后将数值向量与生成的标记相关联。
这些向量组合成序列张量,被输入到深度神经网络中。
将标记转换为向量的最常用最基本的方法是one-hot编码。
one-hot编码是将每个单词与一个唯一的整数索引相关联,然后将这个整数索引 i 转换为长度为N的二进制向量(N是词表大小),这个向量只有第 i 个元素是1, 其余元素是0。
将单词与向量相关联的另一种强大的方法是使用密集的词向量,也叫做词嵌入。
one-hot编码得到的向量是二进制的、稀疏的(绝大部分元素都是0)、维度很高的(维度大小等于词表中的单词个数),而词嵌入是低维的浮点数向量(即密集向量,与稀疏向量相对)。
词嵌入与one-hot编码得到的词向量不同,词嵌入是从数据中心学习得到的。常见的词嵌入维度是256、512、1024。而one-hot编码的词向量维度通常为10000(对应包含10000个标记的词表)甚至更高。因此,词嵌入可以将更多的信息塞入更低的维度中。
第一步:文本分词
文本分词也就是将文本分解成标记的过程,如下图所示:
文本分词需要考虑的问题:
1.大小写转化问题:如Apple和apple意思不同
2.常用冠词:如the, a, of等,因为这些词对于情感二分类的预测没有任何帮助
3.拼写检查:如good可能会写成goood
第二步:建立字典
在字典中,统计词频,去除低频词,保留高频词。
第三步:编码(可以one-hot编码,也可以整数编码)
接下来将文本序列转换成整数序列
第四步:序列对齐
因为各条评论的长度不一,也就导致各个序列的长度不一样,所以就需要将各个序列处理成长度一致,然后就可以将它们放入到矩阵或张量中。
在Keras中的preprocessing模块中有一个方法叫做preprocessing.sequence.pad_sequences(),这个方法可以将序列对齐,即给定一个长度,然后将所有序列的长度都处理成该长度。
至此,文本处理已经完成,现在每个词都可以用一个正整数来表示。
接下来,就可以使用词向量了,把这些数据放入一个低维的向量中。可以使用one-hot编码,也可以使用词嵌入,这里重点介绍词嵌入。
将one-hot向量映射为低维的向量:
d 是词向量的维度,这个由用户自己决定(横)
v 是vocabulary,字典里单词的数量(列)
P 是从训练数据中学到的矩阵权重参数
ei 是从字典中第 i 个位置的one-hot向量
相乘的结果就是词向量Xi
训练矩阵P
矩阵的列表示向量的维度,矩阵的每一行表示一个单词的向量
1.在完成主任务(比如文档分类或情感预测)的同时学习词嵌入。在这种情况下,一开始是随机的词向量,然后对这些词向量进行学习,其学习方式与学习神经网络的权重相同。
利用Keras中的Embedding层学习词嵌入:embedding_layer = Keras.layers.Embedding(1000, 64)
Embedding至少有两个参数:
标记的个数:这里是1000,表示共有1000个最常见的单词
嵌入的维度:这里是64,表示一个单词由一个64维的向量表示
最好将Embedding层理解为一个字典,将整数索引(每个整数表示一个特定的单词)映射为密集向量。Embedding层接收整数作为输入,并在内部字典中查找这些整数,然后返回相关联的向量。
Embedding层的输入是一个二维整数张量,其形状为(samples, sequence_length),每个元素是一个整数序列。如输入的二维整数张量为(32, 10),则表示32个长度为10的序列组成的批量。这一批数据中的所有序列的长度相同,这样才能将它们打包成一个张量。
Embedding层返回的是一个形状为(samples, sequence_length,embedding_dimensionality)的三维浮点数张量。然后可以用RNN层或一维卷积层来处理这个三维张量。
将一个Embedding层实例化时,它的权重(即标记向量的内部字典)最开始是随机的,与其它层一样。在训练过程中,利用反向传播来逐渐调节这些词向量,改变空间结构以便下游模型可以利用。一旦训练完成,嵌入空间将会展示大量结构,这种结构专门针对训练模型所要解决的问题。
2.在不同于待解决问题的机器学习任务上预计算好词嵌入,然后将其加载到模型中。这些词嵌入叫做预训练词嵌入。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。