独热编码和词向量的简单理解

news/2024/7/7 11:40:42

把单词用向量表示,是把深度神经网络语言模型引入自然语言处理领域的一个核心技术。想要让机器理解单词,就必须要把它变成一串数字(向量)。下面介绍的 One-Hot Encoding(One-Hot 编码)和 Word Embedding (词嵌入)和就是把单词变成向量的两类方法。

one-hot encoding

one-hot representation把每个词表示为一个长向量。这个向量的维度是词表大小,向量中只有一个维度的值为1,其余维度为0,这个维度就代表了当前的词。
例如:
苹果 [0,0,0,1,0,0,0,0,0,……]
one-hot representation相当于给每个词分配一个id,对于独热表示的向量,如果采用余弦相似度计算向量间的相似度,可以明显的发现任意两者向量的相似度结果都为 0,即任意二者都不相关,也就是说独热表示无法解决词之间的相似性问题。另外,one-hot representation将会导致特征空间非常大,但也带来一个好处,就是在高维空间中,很多应用任务线性可分。


word embedding

word embedding指的是将词转化成一种分布式表示,又称词向量。深度学习应用在自然语言处理当中的时候,基本都会通过词向量的方式将one-hot编码的向量,转换为词向量。词向量就是用一个向量来表示一个单词,可以理解为神经网络语言模型的副产品。

假设有一个词的独热编码w1[1,0,0,0],w1*Q = c1, c1就是新的词向量(one-hot也是一种向量的表示)。Embedding = 参数矩阵 × One-hot向量

word embedding 将 one-hot encoding 的向量映射到一个新的空间,embedding可以把序号映射成低维稠密向量,比one-hot的高维稀疏向量要好。

优点:

  1. 词之间存在相似关系:
    是词之间存在“距离”概念,这对很多自然语言处理的任务非常有帮助。
  2. 包含更多信息:
    词向量能够包含更多信息,并且每一维都有特定的含义。在采用one-hot特征时,可以对特征向量进行删减,词向量则不能。

说到embedding就不得不说说word2vector(一种神经网络语言模型,主要用来得到词向量)了,word2vector做法即为embedding的过程,这个可以扩展到推荐中的item2vector 。word2vec:

1.可以看作是多分类任务

2.浅层神经网络

3.数据构造模式:cbow、skip-gram模式

在这里插入图片描述



参考:

https://blog.csdn.net/mawenqi0729/article/details/80698350

https://blog.csdn.net/yunxiu988622/article/details/105816731

https://blog.csdn.net/Alex_81D/article/details/114287498


http://lihuaxi.xjx100.cn/news/1888352.html

相关文章

信息学奥赛一本通 1014:与圆相关的计算C语言非C++

1014&#xff1a;与圆相关的计算 #include <stdio.h>int main() {// 声明并定义圆周率为常量&#xff0c;其值为3.14159const double PI 3.14159;// 声明一个双精度浮点数变量double r;// 从输入读取一个值并赋给rscanf("%lf", &r);// 计算并打印圆的直径…

企业考勤技术,这个方法很靠谱!

在当今社会&#xff0c;随着科技的不断进步&#xff0c;人脸识别技术在各个领域得到了广泛应用。其中&#xff0c;三维人脸考勤系统作为一种高效、准确的考勤解决方案&#xff0c;正在成为企业管理和人力资源管理的重要工具之一。 与传统的二维人脸识别相比&#xff0c;三维人脸…

Django去访问web api接口Object of type Session is not JSON serializable

解决方案&#xff1a;settings.py中加入 &#xff1a;SESSION_SERIALIZER django.contrib.sessions.serializers.PickleSerializer 事由&#xff1a;Django去访问一个web api接口&#xff0c;两次连接之间需要通过Session()保持身份验证。 def sendCode(request): mobile jso…

YOLOv5独家原创改进:SPPF自研创新 | SPPF创新结构,重新设计全局平均池化层和全局最大池化层,增强全局视角信息和不同尺度大小的特征

💡💡💡本文原创自研创新改进:SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响 强烈推荐,适合直接使用,paper创新级别 💡💡💡 在多个数据集验证涨点,尤其对存在多个尺…

Java高级技术探险之旅-并发编程的艺术-深入理解泛型-函数式编程的乐趣

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

Windows mysql5.7 执行查询/开启/测试binlog---简易记录

前言&#xff1a;基于虚拟机mysql版本为5.7&#xff0c;增量备份测试那就要用到binlog… 简述&#xff1a;二进制日志&#xff08;binnary log&#xff09;以事件形式记录了对MySQL数据库执行更改的所有操作。 binlog是记录所有数据库表结构变更&#xff08;例如CREATE、ALTER…

前端优化 ----防抖 节流

防抖 如果一个事件在短时间内连续触发&#xff0c;则只去执行最后一次。 控制频率 实现方式&#xff1a;每次触发事件时设置一个延迟调用方法&#xff0c;并且取消之前的延时调用方法缺点&#xff1a;如果事件在规定的时间间隔内被不断的触发&#xff0c;则调用方法会被不断的…

msvcp80.dll文件丢失怎么恢复?详解多种DLL文件修复方法

本文将为您详细介绍msvcp80.dll的定义、作用以及丢失的原因&#xff0c;并提供5个解决方法&#xff0c;帮助您解决这一问题。 一、msvcp80.dll是什么&#xff1f; msvcp80.dll是Microsoft Visual C Runtime Library中的一个动态链接库文件&#xff0c;它包含了许多C运行库函数…