目录
[1.词表示 / 词表征](#1.词表示 / 词表征)
[2.词嵌入(word embeddings)](#2.词嵌入(word embeddings))
1.词表示 / 词表征
(1)引言
- 之前我们都是通过ont-hot向量来表示单词,但这种表示方法很难学习到两个单词间的相似性,比如apple和orange,man和woman,因为任意两个one-hot向量的内积都是0。
- 所以我们换一种表示方式,用一种特征化的表示方式 :词嵌入。
2.词嵌入(word embeddings)
(1)简介
- 词嵌入是NLP的核心概念

- 对于上图这些词:<1>比如第一个特征是性别(Gender)。假定男性的性别为-1,女性的性别为+1,那么man的性别值可能就是-1,而woman就+1。最终根据经验king就是-0.95,queen是+0.97,apple和orange没有性别可言。
- <2>另一个特征可以是这些词有多高贵(Royal),man,woman和高贵没太关系,所以它们的特征值接近0。而king和queen很高贵,取值更大一些,apple和orange跟高贵也没太大关系。
- <3>年龄:man和woman一般没有年龄的意思,也许man和woman隐含着成年人的意思,但也可能是介于young和old之间,所以它们的值也接近0。而通常king和queen都是成年人。
- <4>这个词是否是食物(Food),只有apple和orange是食物。
- 当然还可以有很多的其他特征,从尺寸大小,花费,这个东西是不是活的(Alive),是不是一个动作(Action)等等。我们假设有300个特征。
- 用这种表示方法,相似的东西表示会很相似。
(2)t-SNE算法
- t-SNE(t分布随机邻域嵌入)是一种非线性降维算法,可以将我们高维的词向量嵌入到2维空间实现可视化。

- 如上图,观察这种词嵌入的表示方法,我们看到man和woman这些词聚集在一块,king和queen聚集在一块,表示人的单词也都聚集在一起。动物都聚集在一起,水果也都聚集在一起,像1、2、3、4这些数字也聚集在一起。如果把这些生物看成一个整体,他们也聚集在一起。
(3)词嵌入的迁移使用
- 第一步:先从大量的文本集中学习词嵌入(一个非常大的文本集)或者可以下载网上预训练好的词嵌入模型。
- 第二步,可以用这些词嵌入模型把它迁移到新的只有少量标注训练集的任务中,比如说用这个300维的词嵌入来表示单词。这样做的一个好处就是可以用更低维度的特征向量代替原来的10000维的one-hot向量。
- 第三步,在新的任务上训练模型时,在你的命名实体识别任务上,只有少量的标记数据集上,可以选择要不要继续微调,用新的数据调整词嵌入。实际中,只有这个第二步中有很大的数据集才会这样做。
3.词嵌入实现类比推理
- 词嵌入的一个特性是可以帮助实现类比推理。
(1)实现原理
- 做减法:

- 如上图,这是一系列用词嵌入单词的特征表示,man对应woman,那么king应该对应什么?我们都知道king应该对应queen。能否有一种算法来自动推导出这种关系,下面就是实现的方法。用一个四维向量e_5391来表示man,也称为e_man,同样woman的嵌入向量称为e_woman,其他也是一样的表示方法。对向量e_man和e_woman进行减法运算

- 类似地,用e_king减去e_queen

- 可以发现,相见结果类似
(2)算法实现
- 如何将这种思想写成算法。我们的问题是已知man对应woman,找到king对应什么,假设king对应的是w,根据我们的减法思想,就是要使e_man-e-woman=e_king-e_w,交换一下位置就是e_w=e_king-e_man+e_woman。
- 这样问题转化为:需要找到单词w来最大化e_w和e_king-e_man+e_woman的相似度
- 如下图,一个常用的相似度函数:余弦相似度函数,假设在向量u和v中定义相似度:分子是u和v的内积,u的转置乘以v,如果u和v非常相似,那么它们的内积将会很大。分母是u和v的欧氏距离。

- 这个式子叫做余弦相似度,是因为该式是u和v的夹角的余弦值,这个公式就是计算两向量夹角的余弦。夹角为0度时,余弦相似度就是1,90度时余弦相似度就是0,当它们是180度时,图像完全跑到了相反的方向,这时相似度等于-1。