Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >词向量Word Embedding原理及生成方法

词向量Word Embedding原理及生成方法

原创
作者头像
个推
修改于 2021-05-24 09:49:21
修改于 2021-05-24 09:49:21
4.4K0
举报
文章被收录于专栏:个推技术实践个推技术实践

前言

Word Embedding是整个自然语言处理(NLP)中最常用的技术点之一,广泛应用于企业的建模实践中。我们使用Word Embedding能够将自然文本语言映射为计算机语言,然后输入到神经网络模型中学习和计算。如何更深入地理解以及快速上手生成Word Embedding呢?本文对Word Embedding原理和生成方法进行了讲解。

一、Word Embedding初探

什么是Word Embedding

一句话概述,Word Embedding即词向量,是一种函数映射关系。我们知道,在机器学习中,特征都是以数值的形式进行传递的。同样的,在NLP中,文本特征也需要被映射成数值向量。例如,我们将单词“你好”进行Word Embedding后,可以把其映射成一个5维向量:你好 ——>  (0.1, 0.5, 0.3, 0.2, 0.2)。

词向量的映射过程

一般来说,我们采用“词 ——> 向量空间1 ——> 向量空间2”的映射过程实现文本单词向量化。整个映射过程可以分为两步:

1、词 ——> 向量空间1

该步骤解决把一个词转换成vector(数值向量)的问题。例如,将文本单词转换成One-Hot向量。

2、向量空间1 ——> 向量空间2

该步骤解决vector的优化问题,即在已经有了一个vector的情况下,寻求更好的办法优化它。

二、使用One-Hot和SVD求Word Embedding方法

One-Hot(词——>向量空间1)

One-Hot是目前最常见的用于提取文本特征的方法之一。本文使用One-Hot完成映射过程的第一步,即词——>向量空间1。

我们将语料库中的每一个词都作为一个特征列,如果语料库中有V个词,则有V个特征列,例如:

在这一映射过程中,One-Hot存在以下缺点:1)容易产生稀疏特征;2)容易引发维度爆炸;3)使得词间失去语义关系。

例如,按照常识,旅店(hotel)和汽车旅店(motel)间应该是具备某种相似性的,但是我们的映射结果却表明他们的向量积为0。旅店(hotel)和汽车旅店(motel)之间的相似性等于其和猫(cat)之间的相似性,这显然是不合理的。

改进方向:

1)尝试将词向量映射到一个更低维的空间;

2)同时保持词向量在该低维空间中具备语义相似性,如此,越相关的词,它们的向量在这个低维空间里就能靠得越近。

SVD(向量空间1——>向量空间2)

1、如何表示出词和词间的关系

SVD,即奇异值分解(Singular Value Decomposition),是在机器学习领域广泛应用的算法,它不仅可以用于降维算法中的特征分解,也广泛应用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石。本文使用SVD来解决vector的优化问题。

我们首先构造了一个亲和矩阵(affinity matrix),先保证在不降维的情况下,能够反映出词和词间的关系。构造亲和矩阵的方式有很多种,这里列举较常见的两种方式。

✦方式一

假设你有N篇文章,一共有M个去重词,则可以构造亲和矩阵如下:

其中每一个值表示单词在某篇文章中的出现次数。这个矩阵可以反映词的一些性质。比如一个词是“播种”,那么它可能在“农学”类的文章里出现得多一些;一个词是“电影”,那么它可能在“艺术”类的文章中出现得多一些。

✦方式二

假设我们有M个去重单词,则可构造M*M的矩阵,其中每个值表示相应的两个单词在一篇文章里共同出现的次数,例如:

2、对亲和矩阵进行分解

有了亲和矩阵,就可以对其进行SVD分解,这个目的就是进行降维了,结果如下:

我们把原亲和矩阵X(左边)分解成了右边的三部分,右边的三个部分从左到右可以这么理解:

✦U矩阵:从旧的高维向量空间到低维向量空间的一种转换关系;

 σ矩阵:方差矩阵。每一列表示低维空间中每一个坐标轴的信息蕴含量。方差越大,说明在该坐标轴上数据波动显著,则信息蕴含量越丰富。在降维时,我们首先考虑保留方差最大的若干个坐标轴;

✦ V矩阵:每个词向量的新表示方式。在和前两个矩阵相乘后,得到最终的词向量表示方式。

此时,右边的矩阵依然是V维的,还没有实现降维。因此,正如前文所说,我们取top k大的方差列,将U,σ和V三个矩阵按照方差从大到小的顺序排列好,这样就能得到最终的降维后的结果了:

3、SVD缺点

1)亲和矩阵的维度可能经常变,因为总有新的单词加进来,每加进来一次就要重新做SVD分解,因此这个方法不太通用;2)亲和矩阵可能很稀疏,因为很多单词并不会成对出现。

改进思路:

1)在降低稀疏性方面,可以不仅仅关注和一个单词有上下文关系的那些词;2)对于一个模型从没有见过一个单词,则考虑从上下文关系中猜到它的信息,以增加通用性。

沿着这两个思路,我们可以考虑引入CBOW和Skip-Gram,来求word embedding。

三、CBOW和Skip-Gram求Word Embedding

CBOW的全称是continuous bag of words(连续词袋模型),其本质也是通过context word(背景词)来预测一个单词是否是中心词(center word)。Skip-Gram算法则是在给定中心词(center word)的情况下,预测一个单词是否是它的上下文(context)。

本文主题是embedding,这里我们提到预测中心词和上下文的最终目的还是通过中心词和上下文,去训练得到单词语义上的关系,同时把降维做了,这样就可以得到最终想要的embedding了。

CBOW

思路:

  • 假设已知一个center word和一串context
  • 可尝试训练一个矩阵V,它的作用是把单词映射到新的向量空间中去(这就是我们想要的embedding!)
  • 同时还可训练一个矩阵U,它的作用是把embedding后的向量映射到概率空间,计算一个词是center word的概率

训练过程:

过程详述:

(1)假设X的C次方是中间词,且context的长度为m,那么context样本可以表示成

其中每一个元素都是一个One-Hot vector。

(2)对于这些One-Hot变量,我们希望可以用Word Embedding将它映射到一个更低维的空间。这里要补充介绍一下,Word Embedding是一种function,映射到更低维的空间是为了降低稀疏性,并保持词中的语义关系。

(3)取得embedding后输入 vector的平均值。之所以要取平均值,是因为这些单词都具有上下文联系,为了训练方便,我们可以用一个更紧凑的方法表示它们。

(4)这样,我们就实现了一个文本在低维空间中的平均embedding。

接下来,我们需要训练一个参数矩阵,对这个平均embedding进行计算,从而输出平均embedding中每一个词是中心词的概率。

CBOW一条龙训练过程回顾
CBOW一条龙训练过程回顾

softmax训练打分参数矩阵

交叉熵:

skip-gram

skip-gram 已知中心词,预测context。此处不再赘述。

总结

本文对Word Embedding原理和生成方法进行了讲解,对Word Embedding生成过程中的相关问题进行了解答,希望能帮助读者提升Word Embedding的实践效率。

如今,机器学习快速发展,并应用到众多行业场景。作为一家数据智能企业,个推在大规模机器学习和自然语言处理领域持续探索,也将Word Embedding应用到标签建模等方面。目前,个推已经构建起覆盖数千种标签的立体画像体系,为移动互联网、品牌营销、公共服务等领域的客户开展用户洞察、人口分析、数据化运营等持续提供助力。

后续个推还将继续分享在算法建模、机器学习等领域的干货内容,请保持关注哦。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Word-Embedding词向量
在自然语言处理任务中,词向量(Word Embedding)是表示自然语言里单词的一种方法,即把每个词都表示为一个N维空间内的点,即一个高维空间内的向量。通过这种方法,实现把自然语言计算转换为向量计算。
灯珑LoGin
2022/10/31
8060
Word-Embedding词向量
词向量(1)--从Word2Vec到ELMo
若你是做NLP的,一定对词向量很亲切,若你是做推荐的,对词向量也一定不会陌生,以词向量为代表的序列向量化方法已经成为机器学习中必不可少的实战利器。
流川枫
2020/04/24
9500
NLP教程(1)-词向量、SVD分解与Word2Vec
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/04/29
1.2K0
NLP教程(1)-词向量、SVD分解与Word2Vec
什么是词向量?(NPL入门)
在自然语言处理任务中,首先需要考虑词如何在计算机中表示。通常,有两种表示方式:one-hot representation和distribution representation。
全栈程序员站长
2022/07/01
2.5K0
什么是词向量?(NPL入门)
【CS224N课程笔记】词向量I: 简介, SVD和Word2Vec
课程主页: http://web.stanford.edu/class/cs224n/
NewBeeNLP
2020/10/21
5880
深度学习基础入门篇10:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}
在NLP领域,自然语言通常是指以文本的形式存在,但是计算无法对这些文本数据进行计算,通常需要将这些文本数据转换为一系列的数值进行计算。那么具体怎么做的呢?这里就用到词向量的概念。
汀丶人工智能
2023/05/23
8130
深度学习基础入门篇10:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}
CS224n 笔记1-自然语言处理与深度学习简介1 自然语言处理简介2 词向量(Word Vectors)3 基于奇异值分解(SVD)的方法4 基于迭代的算法-Word2vec
1 自然语言处理简介 我们从讨论“什么是NLP”开始本章的内容 1.1 NLP有什么特别之处 自然(人工)语言为什么如此特别?自然语言是一个专门用来表达语义的系统,并且它不是由任何形式的物质表现产生。正因为如此,人工语言与视觉或者其他任何机器学习任务非常不同。 大多数单词只是一个超语言实体的符号:单词是映射到一个表征(想法或事物)的记号。例如,“火箭”一词是指火箭的概念,并且进一步可以指定火箭的实例。有一些单词例外,当我们使用单词和字母代表信号时,想“Whooompaa”一样。除此之外,语言符号可以用多种方
致Great
2018/04/11
1K0
CS224n 笔记1-自然语言处理与深度学习简介1 自然语言处理简介2 词向量(Word Vectors)3 基于奇异值分解(SVD)的方法4 基于迭代的算法-Word2vec
NLP(1)——词向量one hot编码词向量编码思想Word2VecEmbeddingSkip-gram的原理负采样
前言:深度学习网络rnn能解决有序的问题,我们就生活在这样一个有序的世界。比如时间,音乐,说话的句子,甚至一场比赛,比如最近正在举办的俄罗斯世界杯。 one hot编码 我们在做分类任务的时候经常用到
DC童生
2018/06/19
4.3K0
词向量算法「建议收藏」
https://www.cnblogs.com/the-wolf-sky/articles/10192363.html
全栈程序员站长
2022/06/30
9400
词向量算法「建议收藏」
词向量技术 | 从word2vec到ELMo
"词和句子的嵌入已成为所有基于深度学习的自然语言处理(NLP)系统的重要组成部分,它们在固定长度的稠密向量中编码单词和句子,以大幅度提高神经网络处理文本数据的能力。"
用户1332428
2018/08/17
2.6K0
词向量技术 | 从word2vec到ELMo
博客 | 斯坦福大学—自然语言处理中的深度学习(CS 224D notes-1)
关键词:自然语言处理,词向量,奇异值分解,Skip-gram模型,CBOW模型,负采样。
AI研习社
2018/12/18
7580
博客 | 斯坦福大学—自然语言处理中的深度学习(CS 224D notes-1)
白话Word2Vec
顾名思义,Word2Vec就是把单词转换成向量。它本质上是一种单词聚类的方法,是实现单词语义推测、句子情感分析等目的一种手段。
机器学习AI算法工程
2019/10/28
7690
白话Word2Vec
3.词向量word2vec(图学习参考资料1)
项目链接: https://aistudio.baidu.com/aistudio/projectdetail/5009409
汀丶人工智能
2022/11/20
5130
CBOW全称_skip的形式
CBOW之所以叫连续词袋模型,是因为在每个窗口内它也不考虑词序信息,因为它是直接把上下文的词向量相加了,自然就损失了词序信息。CBOW抛弃了词序信息,指的就是在每个窗口内部上下文直接相加而没有考虑词序。
全栈程序员站长
2022/10/04
1.9K0
CBOW全称_skip的形式
【图文并茂】通过实例理解word2vec之Skip-gram
word2vec主要实现方法是Skip-gram和CBOW,CBOW的目标是根据上下文来预测当前词的概率,且上下文所有的词对当前词出现概率的影响的权重是一样的,因此叫做continuous bag-of-words模型。如在袋子中取词,去取出数量足够的词就可以了,与取出词的先后顺序无关。Skip-gram刚好相反,其是根据当前词来预测上下文概率的。在实际应用中算法并无高下之分,主要根据呈现的效果来进行算法选择。这里介绍Skip-gram,并通过例子来理解Skip-gram是如何实现预测上下文,并如何训练得到词向量。
zenRRan
2020/02/27
3.4K2
【图文并茂】通过实例理解word2vec之Skip-gram
【NLP】Word2Vec详解(含数学推导)
word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;并且,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。
黄博的机器学习圈子
2020/09/04
2.6K0
【NLP】Word2Vec详解(含数学推导)
不懂word2vec,还敢说自己是做NLP?
如今,深度学习炙手可热,deep learning在图像处理领域已经取得了长足的进展。随着Google发布word2vec,深度学习在自然语言处理领域也掀起了一阵狂潮。由于最近正在做一个相关的NLP项目,所以抽时间总结一下word2vec的相关知识点。
机器学习算法工程师
2018/07/27
9170
不懂word2vec,还敢说自己是做NLP?
【Embedding】Word2Vec:词嵌入的一枚银弹
Word2Vec 是 Google 在 2013 年开源的一个词向量(Word Embedding)计算工具,其用来解决单词的分布编码问题,因其简单高效引起了工业界和学术界极大的关注。
阿泽 Crz
2020/07/21
1.7K0
【Embedding】Word2Vec:词嵌入的一枚银弹
秒懂词向量Word2vec的本质
授权转自公众号 数据挖掘机养成记 作者 | 穆文 本文只授权『大数据文摘』独家转载,禁止其他一切未经作者许可的转载形式 大家好 我叫数据挖掘机 皇家布鲁斯特大学肄业 我喝最烈的果粒橙,钻最深的牛角尖 ——执着如我 今天我要揭开Word2vec的神秘面纱 直窥其本质 相信我,这绝对是你看到的 最浅白易懂的 Word2vec 中文总结 (蛤?你问我为啥有这个底气? 且看下面,我的踩坑血泪史。。。) 1. Word2vec参考资料总结 (以下都是我踩过的坑,建议先跳过本节,阅读正文部分,读完全文回头再来看) 先大
大数据文摘
2018/05/25
1.6K0
一文总结词向量的计算、评估与优化
为了处理语言,需要将文本信息用向量的形式表达。词向量(Word Vector)或称为词嵌入(Word Embedding)就是将词语向量化。常见的生成词向量的神经网络模型有NNLM模型,C&W模型,CBOW模型和Skip-gram模型。
Datawhale
2020/07/09
2.5K0
一文总结词向量的计算、评估与优化
推荐阅读
相关推荐
Word-Embedding词向量
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档