如何用 word2vec 计算两个句子之间的相似度
计算A,B句子里每两个词的距离 i.e. D = dist(A_i, B_j) over all i,j(这里用Euclidean distance b/t the word embeddings, from w2v)。
生成optimal transport (也叫earth mover's distance a.k.a. EMD)problem,给solver(网上有很多各种语言的EMD solver)。输入是D, A所有词的词频(A_BOW i.e. bag of words), B所有词的词频(B_BOW)。
EMD基本概念就是把两个句子看成两个probability distribution的histogram,A的是山,B的是坑,用A的山填B的坑,每两个histogram格之间搬运一个词频单元需要做的功是两词间的距离。EMD返回的就是A,B的距离,1,2,3对每两篇文章可以CPU平行。
word2vec 词向量怎么来的
2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。另外需要强调的一点是,word2vec是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。接下来,本文将从统计语言模型出发,尽可能详细地介绍word2vec工具背后的算法模型的来龙去脉。
详情:网页链接
Word2vec的词聚类结果与LDA的主题词聚类结果,有什么不同
所以Word2vec的一些比较精细的应用,LDA是做不了的。
比如:1)计算词的相似度。同样在电子产品这个主题下,“苹果”是更接近于“三星”还是“小米”?2)词的类比关系:vector(小米)- vector(苹果)+ vector(乔布斯)近似于 vector(雷军)。
3)计算文章的相似度。这个LDA也能做但是效果不好。
而用词向量,即使在文章topic接近的情况下,计算出的相似度也能体现相同、相似、相关的区别。反过来说,想用词向量的聚类去得到topic这一级别的信息也是很难的。
很有可能,“苹果”和“小米”被聚到了一类,而“乔布斯”和“雷军”则聚到另一类。这种差别,本质上说是因为Word2vec利用的是词与上下文的共现,而LDA利用的是词与文章之间的共现。
PS. 说起来,拿LDA和doc2vec比较才比较合理啊~~。
转载请注明出处51数据库 » word2vec关键词