词嵌入如何用于词的相似性?

数据挖掘 nlp word2vec 词嵌入 gensim
2022-03-13 15:53:11

我正在尝试应用 word2vec/doc2vec 来查找类似的句子。首先考虑 word2vec 的单词相似度。我的理解是,CBOW 可用于在给定上下文的情况下找到最合适的单词,而 Skip-gram 用于在给定某个单词的情况下查找上下文,因此在这两种情况下,我都会得到经常同时出现的单词。但是如何找到相似的词呢?我的直觉是,由于相似的词往往出现在相似的上下文中,所以词的相似度实际上是从上下文/共现词之间的相似度来衡量的。在神经网络中,当隐藏层某个词的向量表示传递到输出层时,它会输出共现词的概率。所以,同现词会影响一些词的向量,因为相似词有相似的同现词集,它们的向量表示也相似。为了找到相似度,我们需要提取每个单词的隐藏层权重(或向量)并测量它们的相似度。我理解正确吗?

最后,使用 word2vec/doc2vec 查找推文文本(完整句子)相似度的好方法是什么?

1个回答

我认为你说的大部分是正确的。

词嵌入可以总结为:一个词被它所拥有的公司所知您可以根据上下文预测单词,反之亦然。在任何一种情况下,词向量的相似性都是可替换性方面的相似性。即,如果两个词相似,则可以在相同的上下文中替换另一个。请注意,这意味着“热”和“冷”在这种情况下是(或可能是)相似的。

如果您想使用词嵌入来衡量推文的相似性,您可以采取几种方法。一种是在语料库上计算段落向量(AKA doc2vec),将每条推文视为一个单独的文档。(网上有在 Gensim 上运行 doc2vec 的好例子。)另一种方法是对每条推文中的单个词向量进行平均,从而将每个文档表示为其 word2vec 向量的平均值。优化推文文本的相似性(规范化文本等)还涉及许多其他问题,但这是一个不同的主题。