学习笔记---词向量与词嵌入
词---->向量: 叫做【词向量化】, 文本向量化(vectorize)是指将文本转换为数值张量的过程
多种实现方法:
- 将文本分割为单词,并将每个单词转换为一个向量。
- 将文本分割为字符,并将每个字符转换为一个向量。
- 提取单词或字符的 n-gram(n元),并将每个 n-gram 转换为一个向量。n-gram 是多个连续单词或字符的集合(n-gram 之间可重叠)。
将文本分解而成的单元(单词、字符或n-gram)叫作标记(token),将文本分解成标记的过程叫作分词(tokenization)
所有文本向量化过程都是应用某种分词方案,然后将数值向量与生成的标记相关联。这些向量组合成序列张量,被输入到深度神经网络中(见图6-1)。将向量与标记相关联的方法有很多种。本节将介绍两种主要方法:对标记做one-hot 编码(one-hot
encoding)与标记嵌入[token embedding,通常只用于单词,叫作词嵌入(word embedding)]。
词向量化有两种方式:
1. one-hot编码 (缺点是:词越多维度越大, 词与词之间没有相关性,无法理解语义)
2. word embedding: 词嵌入。 优点是降低维度(将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间)
词嵌入模型:
1. CBOW模型 (Continuous Bag-of-Words Model): 上下文来预测当前词
2. Skip-gram模型(Continuous Skip-gram Model):当前词预测上下文
两种模型优化方法:
1. Negative Sample : 负采样
2. Hierarchical Softmax:层次化softmax. 把 N 分类问题变成 log(N)次二分类。 用Huffman树计算概率值,而不是传统的softmax.
word2vec: 是谷歌提出的一种词嵌入的具体方法,采用了两种模型(CBOW与skip-gram模型)与两种方法(负采样与层次softmax方法)的组合,比较常见的组合为 skip-gram+负采样方法。
词嵌入的训练方法:
1)无监督或弱监督的预训练
优点:不需要大量的人工标记样本就可以得到质量还不错的embedding向量
缺点:准确率有待提高
解决办法:得到预训练的embedding向量后,用少量人工标注的样本再去优化整个模型
典型代表:word2vec和auto-encoder
(这里解释一下AutoEncoder,AutoEncoder也可以用于训练词向量,先将one hot映射成一个hidden state,再映射回原来的维度,令输入等于输出,取中间的hidden vector作为词向量,在不损耗原表达能力的前提下压缩向量维度,得到一个压缩的向量表达形式。)
2)端对端(end to end)的有监督训练。
优点:学习到的embedding向量也往往更加准确
缺点:模型在结构上往往更加复杂
应用:通过一个embedding层和若干个卷积层连接而成的深度神经网络以实现对句子的情感分类,可以学习到语义更丰富的词向量表达。
两者比较:word2vec不关心后续的应用场景,其学习到的是就是根据共现信息得到的单词的表达,用n-gram信息来监督,在不同的子task间都会有一定效果。而end2end训练的embedding其和具体子task的学习目标紧密相关,直接迁移到另一个子task的能力非常弱。
常用的词嵌入分为:
dense(稠密)和sparse(稀疏)两种形式
常见的sparse就比如 co-occurence 或者one-hot的形式;对sparse embedding进行一些降维运算比如SVD、PCA就可以得到dense。