word2vec有什么应用?

word2vec有什么应用?在相应的方面有哪些相似的工具?他们对比起来有什么优缺点?如果能举出已经实际被工业使用的就更好了
关注者
1,464
被浏览
76,796
word2vec本质上来说就是一个矩阵分解的模型,简单地说,矩阵刻画了每个词和其上下文的词的集合的相关情况。对这个矩阵进行分解,只取每个词对应在隐含空间的向量。

所以word2vec适合的情况就是对于一个序列的数据,在序列局部数据间存在着很强的关联。典型的就是文本的序列了,邻近的词之间关联很强,甚至可以通过一个词的上下文大概预测出中间那个词是什么。学习到的词向量代表了词的语义,可以用来做分类、聚类、也可以做词的相似度计算。此外,Word2vec本身的层次分类器或者采样方式实际上对热门item做了很大的惩罚,所以不会像一般的矩阵分解一样,最后算出来语义接近的都是热门词,这也是word2vec很好的一个特性。

对于短文本分类,直接把文档里面所有的word对应的向量线性相加,作为文本的特征训练分类器,效果也很不错。这种方式其实在word2vec的训练过程中也有使用。另外如果换成非线性分类器,比如rbf kernel SVM,分类准确度还能再高,这个也是符合预期的。

其他序列的数据也是可以这样做的,记得去年KDD上有一篇DeepWalk的文章,在社交网络上进行随机游走生成一组组节点的序列,然后通过word2vec训练每个节点对应的向量。但是我用这个方法在qq的社交网络上面做了一些实验,发现效果非常不理想,可能和qq社交网络的复杂性有关。

我非常满意的一个应用是把word2vec应用在用户app下载序列上,根据用户下载app的顺序,把app看做单词,也是可以形成这样的序列数据,进而训练处每个app对应的向量。利用这个向量计算app之间的相似度,效果非常好,能够把真正内容相关的app聚合在一起,同事规避热门app的影响。类似的场景应该还有很多,而且应用也很广泛,比如说推荐系统、广告系统都可以用上。