词嵌入的特性

现在你有了一堆嵌入向量,我们可以开始学习他们之间的特性了

前情提要:https://www.cnblogs.com/DAYceng/p/14962528.html

先把各向量重新命名便于区分

Man对应e_man①

Woman对应e_woman②

King对应e_king③

Queen对应e_queen④

现在用e_man减e_woman

①-②≈[-2,0,0,...]

用e_king减e_queen

③-④≈[-2,0,0,...]

由此可见,Man和Woman的差异主要体现在性别(gender)上,King和Queen也是如此

那么,当系统被问及“Man之于Woman等价于King之于什么?”时,它自然的会用嵌入向量相减,从而推断出问题的答案,即:Man之于Woman等价于King之于Queen

如何在算法上实现上述特性?答案是”计算距离

如图所示,所求的e_?可以表示为:e_king-e_man+e_woman

那我现在只需要找出一个单词的嵌入向量,假设为e_w,使得这个e_w与e_king-e_man+e_woman最相似即可

用函数表示也就是Sim(e_w,e_king-e_man+e_woman)取最大值就满足条件

那么,这个Sim()是什么函数呢?

这个Sim()一般会是余弦相似度欧氏距离等相似算法(在代码中以函数方式提供使用),具体不再展开

嵌入矩阵(Embedding Matrix)

有了词嵌入这么强大的东西,那我们怎么去用它呢?

一般来说我们会以嵌入矩阵(Embedding Matrix)的形式来利用词嵌入,就像下面这个

这是一个500 X 10000大小的嵌入矩阵,里面存的全是一些嵌入值,命名为E矩阵

可以看到,每列我标出了对应的单词,说白了这个矩阵其实就是由一万个嵌入向量拼接成的

现在我们需要使用One-Hot 了

假设我们有一个One-Hot编码的向量O_7426,它是一个10000行1列的矩阵

我们用O_7426与E相乘,即E * O_7426

由线性代数的知识我们可以知道,E(500 X 10000) * O_7426(10000 X 1)的结果是一个大小为500 X 1的矩阵,用e_w表示

嗯?500 X 1

这不就是E矩阵中的一个列吗?换句话说这个结果就是对应着某个词的嵌入向量

假设E*O_7426的结果是上图中框起来的部分,那么我们可以得出以下结论:

因为E * O_7426 = e_w

而e_w与"EA"所在列的值相等

所以
O_7426是对“EA”的独热编码 #EA是第7426个词
e_w = e_ea 因此原式可写成:E * O_7426 = e_7426或者E * O_ea = e_ea

由上述我们还可以进一步推广,任何与E矩阵,也就是嵌入矩阵相乘的One-Hot编码向量,最后会定位到编码对应的词的词嵌入,或者说嵌入向量,进而得出某个词

【NLP学习其3.5】词嵌入的特性,为什么词之间会有联系?的更多相关文章

  1. Coursera Deep Learning笔记 序列模型(二)NLP & Word Embeddings(自然语言处理与词嵌入)

    参考 1. Word Representation 之前介绍用词汇表表示单词,使用one-hot 向量表示词,缺点:它使每个词孤立起来,使得算法对相关词的泛化能力不强. 从上图可以看出相似的单词分布距 ...

  2. DeepLearning.ai学习笔记(五)序列模型 -- week2 自然语言处理与词嵌入

    一.词汇表征 首先回顾一下之前介绍的单词表示方法,即one hot表示法. 如下图示,"Man"这个单词可以用 \(O_{5391}\) 表示,其中O表示One_hot.其他单词同 ...

  3. [DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.3词嵌入的特性 properties of word embedding Mikolov T, Yih W T, Zwe ...

  4. [DeeplearningAI笔记]序列模型2.1-2.2词嵌入word embedding

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1词汇表征 Word representation 原先都是使用词汇表来表示词汇,并且使用1-hot编码的方式来表示词汇 ...

  5. 词向量表示:word2vec与词嵌入

    在NLP任务中,训练数据一般是一句话(中文或英文),输入序列数据的每一步是一个字母.我们需要对数据进行的预处理是:先对这些字母使用独热编码再把它输入到RNN中,如字母a表示为(1, 0, 0, 0, ...

  6. 2.keras实现-->字符级或单词级的one-hot编码 VS 词嵌入

    1. one-hot编码 # 字符集的one-hot编码 import string samples = ['zzh is a pig','he loves himself very much','p ...

  7. [ DLPytorch ] word2vec&词嵌入

    word2vec WordEmbedding 对词汇进行多维度的描述,形成一个密集的矩阵.这样每两个词之间的相似性可以通过进行内积的大小体现出来.越大说明距离越远,则越不相似. Analogies(类 ...

  8. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)

    在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...

  9. NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立

    http://3g.163.com/all/article/DM995J240511AQHO.html 选自the Gradient 作者:Sebastian Ruder 机器之心编译 计算机视觉领域 ...

  10. 13.深度学习(词嵌入)与自然语言处理--HanLP实现

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 13. 深度学习与自然语言处理 13.1 传统方法的局限 前面已经讲过了隐马尔可夫 ...

随机推荐

  1. linux使用脚本给文件的最后一行不换行的方式插入一句话

    处理一下 sed -i '$s/$/&,xxxx.com/' /deploy/mailfailstart

  2. Springboot数据库连接池的学习与了解

    背景 昨天学习总结了tomcat的http连接池和线程池相关的知识,总结的不是很完整, 自己知道的也比较少,总结的时候就在想tomcat针对client 端有连接池,并且通过NIO的机制, 以较少的t ...

  3. 【JS 逆向百例】建筑市场监管平台企业数据

    声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关. 逆向目标 目标:住房和城乡建设部&全国建筑市场监管公共服务平台的企业数据 主页:http: ...

  4. 当爬虫工程师遇到 CTF丨B 站 1024 安全攻防题解

    答案参考 第一题:a1cd5f84-27966146-3776f301-64031bb9 第二题:36c7a7b4-cda04af0-8db0368d-b5166480 第三题:9d3c3014-6c ...

  5. 为不同版本python安装pip的正确做法

    想学习Python3,但是暂时又离不开Python2.在Windows上如何让它们共存呢? 目前国内网站经常会让大家把其中一个python.exe改个名字(嗯,我也这样讲过,在此纠正一下),这样区分开 ...

  6. vim 从嫌弃到依赖(11)——标签页操作

    各位小伙伴们,你们好,我又更新了! 之前介绍了vim关于多窗口的操作,vim中多窗口是将多个窗口在一个屏幕中显示,这似乎与我们常见的ide有点不一样,一般的ide都是新开一个窗口之后在新的标签页中显示 ...

  7. TienChin 渠道管理-渠道类型

    在上一篇文章当中,表里面有一个渠道类型,我们这节主要是将这个渠道类型创建好,首先我们来看看字典表. sys_dict_type 表: 字段名 数据类型 注释 dict_id bigint 字典主键 d ...

  8. 使用protobuf生成代码import包找不到

    protobuf使用import导入包找不到 前言 解决方案 protobuf使用import导入包找不到 前言 使用protobuf生成go代码,发现protobuf中一个import引用找不到 p ...

  9. C/C++ 反汇编:分析类的实现原理

    反汇编即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解.外挂技术.病毒分析.逆向工程.软件汉化等领域,学习和理解反汇编对软件调试.系统漏洞挖掘.内核原理及理解高级语言代码都有相当大的帮助, ...

  10. 深入浅出Java多线程(四):线程状态

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第四篇内容:线程状态.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代软件开发中,多线程编程已经成为提升 ...