Keras中的Embedding和Word2vec的区别

最近在接触深度学习,在自然语言处理的应用中,不可避免的要把文本转换成词向量,那么如何转化它呢?以及目前几种主要转化方式是有什么不一样呢?

接下来借助我最近做的文本分类的问题加以解释说明,主要理清word2vec和keras提供的Embedding层的差别,这也是一度使我比较困惑的地方。

一、one-hot

一切要从one-hot编码开始。我们在对文本进行预处理时,一般会根据自己的训练文档来构建一个词汇表,再对单词进行one-hot编码。

比如说在我们的所有的训练集中存在10000个互不相同的单词,那么就可以利用这10000个单词构成词汇表。我们对这10000个单词进行one-hot编码时,每个单词的向量表示都是10000维,且其中只有1和0的表示方式。假设一个单词my出现在第5个位置,那么my这个单词的10000维的向量表示中,只有第5个位置为1,其余的都为0,即[0,0,0,0,1,0,0,......]的形式。

这样就造成了一个问题,就是用one-hot编码表示的词向量会很高维也很稀疏,尤其当词汇表(字典)很大时,其效率更是低下。

二、Word Embedding(词嵌入)

由于one-hot编码表示稀疏的问题,那么词嵌入的表示表示方法就出现了。词嵌入是使用密集的矢量表示来表示单词和文档的一类方法。单词由密集向量表示,其中向量表示将单词投影到连续向量空间中。向量空间中的单词的位置是从文本中学习的,并且基于在使用单词时围绕单词的单词。学习到的向量空间中的单词的位置被称为它的嵌入:Embedding。

词嵌入有两种方式:一是单词嵌入方法(如Word2Vec)、二是神经网络中的embedding层(如keras的embedding层

那么二者有什么关系呢?

      其实二者的目标是一样的,都是我们为了学到词的稠密的嵌入表示。只不过学习的方式不一样。

<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值