写点什么

独热编码 & 词向量

用户头像
Qien Z.
关注
发布于: 2021 年 06 月 08 日
独热编码&词向量

独热编码与词向量(分布式表示法)的区别

独热编码特点

  • 不需要训练

  • 无法表示单词的含义

  • 向量长度等于词库的长度

  • 明显的稀疏性


其实,独热编码也是存在稀疏性 sparsity 问题的,因为独热编码只有一个位置是 1,其余都是 0。在计算单词的距离当中,欧式距离和余弦相似度是无法对其进行计算的,也就是说,独热代码并不支持计算两个单词之间的相似度


例如:

小姐姐: [1,0,0,0,0,0]

要: [0,0,0,1,0,0]

不惑: [0,0,0,0,1,0]


欧式距离和余弦相似度的计算方式

无论是通过欧式距离还是余弦相似度计算,我们发现,其计算结果均不支持表示词与词之间的距离

词向量的特点

  • 需要训练

  • 词向量是稠密的(很少会看到 0 值)

  • 向量的大小一般比独热编码小

  • 词向量的长度可以按需调整(注意过长会导致过拟合)

  • 词向量在某种程度上可以代表单词的含义


例如:

小姐姐: [0.2, 0.5, 0.3, 0.1, 0.3, 0.2]

要: [0.1, 0.2, 0.4, 0.1, 0.1, 0.3]

不惑: [0.1, 0.1, 0.4, 0.2, 0.1, 0.2]


如何得到词向量


词向量是需要通过训练来得到的,上图是一个 k=6 维的向量,我们可以设置 100 维,也可以设置 200 维。一般来说,句子越长,维的数量越多,但并不是越多越好,因为可能会出现过拟合的现象。通过模型对语料库进行训练,语料库可以是来源于自己收集的文档,通过训练,即可得到词向量


词向量(分布式表示法)下,两个单词之间的相似度是可以算出来的。当然,效果取决于词向量的质量


句子向量

有了词向量,如何将词向量变为句子向量?最简单的方法便是计算平均


例子

单词向量

小姐姐: [0.2, 0.5, 0.3, 0.1, 0.3, 0.2]

要: [0.1, 0.2, 0.4, 0.1, 0.1, 0.3]

不惑: [0.1, 0.1, 0.4, 0.2, 0.1, 0.2]


句子向量

小姐姐要不惑: [0.13, 0.27, 0.37, 0.13, 0.17, 0.23]


第一个维 0.13 是通过(0.2+0.1+0.1)/3 得到的,如此类推。


注意:通过平均单词的向量来获得的句子向量,往往是会存在问题的。


发布于: 2021 年 06 月 08 日阅读数: 44
用户头像

Qien Z.

关注

Everything is all 2020.04.10 加入

接受反驳&不接受被定义

评论 (1 条评论)

发布
用户头像
好棒👍
2021 年 06 月 09 日 21:12
回复
没有更多了
独热编码&词向量