自然语言处理(NLP)基于CBOW实现Word2Vec
Posted 灵彧universe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然语言处理(NLP)基于CBOW实现Word2Vec相关的知识,希望对你有一定的参考价值。
【自然语言处理(NLP)】基于CBOW实现Word2Vec
@TOC
前言
什么是词向量?
在自然语言处理任务中,词向量是表示自然语言里单词的一种方法,即把每个词都表示为一个N维空间内的点,即一个高维空间内的向量。通过这种方法,实现把自然语言计算转换为向量计算。
如 图1 所示的词向量计算任务中,先把每个词(如queen,king等)转换成一个高维空间的向量,这些向量在一定意义上可以代表这个词的语义信息。再通过计算这些向量之间的距离,就可以计算出词语之间的关联关系,从而达到让计算机像计算数值一样去计算自然语言的目的。
什么是word2vec?
word2vec包含两个经典模型,CBOW(Continuous Bag-of-Words)和Skip-gram,如 图2 所示。
- CBOW:通过上下文的词向量推理中心词。
- Skip-gram:根据中心词推理上下文。
一、CBOW详解
(一)、CBOW的算法实现
我们以这句话:“Pineapples are spiked and yellow”为例介绍CBOW算法实现。
如 图3 所示,CBOW是一个具有3层结构的神经网络,分别是:
- 输入层: 一个形状为C×V的one-hot张量,其中C代表上线文中词的个数,通常是一个偶数,我们假设为4;V表示词表大小,我们假设为5000,该张量的每一行都是一个上下文词的one-hot向量表示,比如“Pineapples, are, and, yellow”。
- 隐藏层: 一个形状为V×N的参数张量W1,一般称为word-embedding,N表示每个词的词向量长度,我们假设为128。输入张量和word embedding W1进行矩阵乘法,就会得到一个形状为C×N的张量。综合考虑上下文中所有词的信息去推理中心词,因此将上下文中C个词相加得一个1×N的向量,是整个上下文的一个隐含表示。
- 输出层: 创建另一个形状为N×V的参数张量,将隐藏层得到的1×N的向量乘以该N×V的参数张量,得到了一个形状为1×V的向量。最终,1×V的向量代表了使用上下文去推理中心词,每个候选词的打分,再经过softmax函数的归一化,即得到了对中心词的推理概率:
$$以上是关于自然语言处理(NLP)基于CBOW实现Word2Vec的主要内容,如果未能解决你的问题,请参考以下文章