我试图了解潜在 Dirichlet 分配和word2vec之间的相似度以计算单词相似度。
据我了解,LDA 将单词映射到潜在主题的概率向量,而 word2vec 将它们映射到实数向量(与逐点互信息的奇异值分解有关,请参阅O. Levy、Y. Goldberg,“Neural Word Embedding作为隐式矩阵分解”;另请参阅word2vec 是如何工作的?)。
我对理论关系(一种可以被认为是一种概括,或另一种的变体)和实际关系(何时使用一种而不是另一种)都感兴趣。
有关的:
我试图了解潜在 Dirichlet 分配和word2vec之间的相似度以计算单词相似度。
据我了解,LDA 将单词映射到潜在主题的概率向量,而 word2vec 将它们映射到实数向量(与逐点互信息的奇异值分解有关,请参阅O. Levy、Y. Goldberg,“Neural Word Embedding作为隐式矩阵分解”;另请参阅word2vec 是如何工作的?)。
我对理论关系(一种可以被认为是一种概括,或另一种的变体)和实际关系(何时使用一种而不是另一种)都感兴趣。
有关的:
对主题模型和词共现方法的回答涵盖了差异(skip-gram word2vec 是逐点互信息(PMI)的压缩)。
所以:
在幻灯片 word2vec、LDA 中讨论了一些差异,并介绍了一种新的混合算法:lda2vec - Christopher Moody。
这两种算法的目的有很大不同。
LDA 主要旨在通过为它们分配主题分布来描述文档和文档集合,正如您所提到的,它们又分配了单词分布。
word2vec 旨在将单词嵌入到潜在因子向量空间中,这一想法源自 Bengio 等人的分布式表示。它也可以用来描述文档,但并不是真正为任务设计的。
之间存在关系, \bf {Topic2Vec}是一种用于学习分布式主题表示单词表示的模型。LDA 用于构建 CBOW 和 Skip-gram 的对数似然。以下解释在作品Topic2Vec: Learning Distributed Representations of Topics的第 3 部分内:
“训练时,给定文档的词-主题序列,其中是从 LDA 中推断出的词的主题,学习目标函数可以是分别基于 CBOW 和 Skip-gram 定义为最大化以下对数似然。”
在第 4.2 节中,作者解释说:“主题和词同样表示为低维向量,我们可以立即计算。对于每个主题,我们选择相似度更高的词”。
此外,您会在其中找到一些短语,例如:
“概率不是特征表示的最佳选择”
和
“LDA 更喜欢描述事件的统计关系,而不是嵌入在单词、主题和文档中的真实语义信息”
这将帮助您更好地理解不同的模型。
这里的其他答案涵盖了这两种算法之间的技术差异,但我认为核心区别在于它们的目的:这两种算法旨在做不同的事情:
word2vec
最终产生单词和固定长度向量之间的映射。如果我们要将它与另一种众所周知的方法进行比较,那么使用另一种为相同目的而设计的工具会更有意义,例如词袋(BOW 模型)。这个做同样的事情,但缺少一些想要的特征,word2vec
比如使用单词的顺序和为单词表示之间的距离分配语义。
LDA
另一方面,创建从不同长度文档到向量的映射。该文档可以是句子、段落或全文文件,但不是单个单词。将它与doc2vec
做同样工作并由 Tomas Mikolov在此处介绍(作者使用术语paragraph vectors
)进行比较会更有意义。或者与LSI
那件事。
所以直接回答你的两个问题:
word2vec
映射到固定长度的向量。如果输入是单词,您可以类似地使用这些向量来为 ML 模型提供数据,例如,当开发一个自动完成器时,它会以先前的单词为基础并尝试预测下一个单词。