一.什么是word2vec
word2vec是Google开源的一款用于词向量计算的工具。word2vec不仅可以在百万数量级的词典和上亿的数据集上进行高效地训练,还可以得到训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。其实word2vec算法的背后是一个浅层神经网络,而且还是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型
举一个例子:
先给出一个句子
[小赖是我最喜欢的人]
假设x是[我],那么y就可以是[小赖],[是我],[最喜欢的],[人]
现给出另一个句子
[小赖是他最讨厌的人]
如果输入x是[他],那么根据关联度就知道了[我==他]
二.具体过程
实现原理
众所周知,word2vec是根据网络模型构建的,有输入层,隐藏层,输出层。下面就来介绍他的两个模型
1.CBOW 模型:
根据词的上下文预测词
输入层:包含层的上下文
隐藏层:对输入层的东西做向量求和累加
输出层:输出一颗Huffman树,叶子节点对应词典的词
2.skip-gram模型
根据该词预测上下文
输入层:只包含中心词向量
隐藏层:多余,无实际用处
输出层:输出Huffman树
三.应用
1、计算商品的相似度
在商品推荐中,竞品推荐和搭配推荐时都有可能需要计算任何两个商品的相似度,根据浏览/收藏/下单/App下载等行为,可以把商品看做词,把每一个用户的一类行为序看做一个文档,通过word2vec将其训练为一个向量。
同样的,在计算广告中,根据用户的点击广告的点击序列,把每一个广告变为一个向量。变为向量后,用此向量可以生成特征融入到rank模型中。
2、在社交网络中的推荐
如果在已知用户关注了几个『大V』之后,相当于知道了当前用户的一些关注偏好,根据此偏好给他推荐和他关注过大V相似的大V,这是一个很不错的推荐策略。所以,求出来任何两个V用户的相似度,就可以解决在社交网络中的推荐了。
在word2vec中两个词的相似度可以直接通过余弦来衡量,但是如何将每个V用户变为一个词向量的问题了。针对上面问题,可以将doc和word定义为:
word -> 每一个大V就是一个词
doc -> 根据每一个用户关注大V的顺序,生成一篇文章
word->每一个大V就是一个词doc->根据每一个用户关注大V的顺序,生成一篇文章
由于用户量很大(大约4亿),可以将关注word个数少的doc删掉,因为本身大V的种类是十万级别, 选择可以覆盖绝大多数大V的文章数量就足够了。
四:注明
详细推导与细节参考大神博客https://blog.csdn.net/itplus/article/details/37969519