我试图了解潜在Dirichlet分配和word2vec之间的相似度,用于计算单词相似度。
据我了解,LDA将单词映射到潜在主题的概率向量,而word2vec 将单词映射到实数的向量(与逐点互信息的奇异值分解有关,请参阅O. Levy,Y。Goldberg,“神经词嵌入作为隐式矩阵分解”;另请参见word2vec如何工作?)。
我对理论关系(可以被认为是一种概括或另一种变化)和实践(当使用一种而不是另一种)都感兴趣。
有关:
我试图了解潜在Dirichlet分配和word2vec之间的相似度,用于计算单词相似度。
据我了解,LDA将单词映射到潜在主题的概率向量,而word2vec 将单词映射到实数的向量(与逐点互信息的奇异值分解有关,请参阅O. Levy,Y。Goldberg,“神经词嵌入作为隐式矩阵分解”;另请参见word2vec如何工作?)。
我对理论关系(可以被认为是一种概括或另一种变化)和实践(当使用一种而不是另一种)都感兴趣。
有关:
Answers:
对Topic模型和单词共现方法的答案涵盖了这一差异(跳过gram word2vec是逐点互信息(PMI)的压缩)。
所以:
幻灯片word2vec,LDA中讨论了一些区别,并介绍了一种新的混合算法:lda2vec-Christopher Moody。
两种算法的用途相差很大。
LDA主要旨在通过为文档和文档集合分配主题分布来描述文档和文档集合,正如您提到的,这些主题又分配了单词分布。
word2vec希望将单词嵌入到潜在因子向量空间中,这一思想源自Bengio等人的分布式表示形式。它也可以用来描述文档,但并不是真正为任务而设计的。
这里的其他答案涵盖了这两种算法之间的技术差异,但是我认为核心差异是它们的目的:这两种算法旨在完成不同的任务:
word2vec
最终产生单词和固定长度向量之间的映射。如果我们将其与另一种众所周知的方法进行比较,那么使用另一种针对相同目的而设计的工具(例如“言语之袋”(BOW模型))进行比较会更有意义。这一功能相同,但缺少某些所需的功能,word2vec
例如使用单词顺序并将语义含义分配给单词表示之间的距离。
LDA
另一方面,创建从变长文档到向量的映射。该文档可以是句子,段落或全文文件,但不是单个单词。与doc2vec
做相同工作的Tomas Mikolov 在这里介绍(作者使用术语paragraph vectors
)进行比较会更有意义。或与LSI
此有关。
因此,直接回答您的两个问题:
word2vec
将单词映射到固定长度的向量。您也可以类似地使用这些向量输入单词,例如,当开发一个自动完成器时,它以前一个单词为基础,并尝试预测下一个单词。从实际的角度来看...
LDA从单词袋输入开始,该单词袋考虑文档中同时出现的单词,但不关注单词的直接上下文。这意味着这些单词可以以任何顺序出现在文档中的任何位置,从而剥夺了一定程度的信息。相比之下,word2vec只是关于使用单词的上下文的信息-尽管可能不是确切的顺序。
LDA的“主题”是一种数学结构,您不应将其与实际的人类主题混淆。您可以得到没有人工解释的主题-与实际主题相比,它们更像是过程的工件-您可以得到具有不同抽象级别的主题,包括基本上涵盖同一人类主题的主题。有点像阅读茶叶。
我发现LDA对探索数据很有用,但对提供解决方案却没什么用,但是您的里程可能会有所不同。
Word2vec根本不直接创建主题。它基于相似的用法将单词投射到高维空间中,因此对于您认为在空间中彼此接近甚至彼此相反的单词而言,它可能会有自己的惊喜。
您可以使用其中一个来确定单词是否“相似”。使用LDA:单词在相同主题中的权重是否相似?使用word2vec:它们是否在某种程度上封闭了嵌入空间。
您可以使用其中一种来确定文档是否相似。使用LDA,您将寻找类似的主题混合,而使用word2vec,您将进行诸如将文档单词的向量相加之类的操作。(“文档”可以是句子,段落,页面或整个文档。)Doc2vec是word2vec的修改版本,可以直接比较文档。
尽管LDA使用“词袋”方法丢弃了一些上下文信息,但它确实具有主题(或“主题”),而word2vec却没有。因此,使用doc2vec可以直接说“向我显示与此文档相似的文档”,而使用LDA则可以直接说“向我显示主题A突出的文档”。(同样,知道“主题A”是从文档上的数学过程中出现的,然后您找出它最对应的人类主题是什么。)