如何在gensim中获得单词与文档之间的相似性
How to I get the similiarity between a word to a document in gensim
所以我已经开始为 word2vec 和 doc2vec 学习 gensim 并且它有效。相似度分数实际上非常有效。然而,对于一个实验,我想通过比较单个词并了解它与一段文本的相似程度来优化基于关键词的搜索算法。
最好的方法是什么?我考虑对文本中所有单词的词向量进行平均(可能先删除填充词和停用词)并将其与搜索词进行比较?但这真的只是直觉,最好的方法是什么?
平均较长文本的所有词向量是一种粗略但有些有效的方法,可以为全文获取单个向量。然后,生成的向量可能会与单个词向量进行有用的比较。
将词向量训练成与文档向量相同的 'space' 的 Doc2Vec
模式 – PV-DM(dm=1
),或 PV-DBOW(如果是词训练)添加 (dm=0, dbow_words=1
) – 可以考虑。最接近单个词向量的文档向量可能适合您的目的。
另一种计算两组词向量的 'closeness' 的技术是 "Word Mover's Distance" ('WMD')。它的计算成本比那些将文本缩减为单个向量的技术要高,因为它本质上是在考虑许多可能的成本最小化方法来关联向量集。我不确定它在 one 'text' 只是一个单词(或非常短的短语)的退化情况下的效果如何,但它可能值得一试。 (gensim中的方法wmd_distance()
提供了这个。)
我还看到有人提到另一种计算,称为 'Soft Cosine Similarity',它可能比大规模杀伤性武器更有效,但提供类似的好处。它现在也可以在 gensim 中使用;有一个 Jupyter notebook intro tutorial as well。
所以我已经开始为 word2vec 和 doc2vec 学习 gensim 并且它有效。相似度分数实际上非常有效。然而,对于一个实验,我想通过比较单个词并了解它与一段文本的相似程度来优化基于关键词的搜索算法。
最好的方法是什么?我考虑对文本中所有单词的词向量进行平均(可能先删除填充词和停用词)并将其与搜索词进行比较?但这真的只是直觉,最好的方法是什么?
平均较长文本的所有词向量是一种粗略但有些有效的方法,可以为全文获取单个向量。然后,生成的向量可能会与单个词向量进行有用的比较。
将词向量训练成与文档向量相同的 'space' 的 Doc2Vec
模式 – PV-DM(dm=1
),或 PV-DBOW(如果是词训练)添加 (dm=0, dbow_words=1
) – 可以考虑。最接近单个词向量的文档向量可能适合您的目的。
另一种计算两组词向量的 'closeness' 的技术是 "Word Mover's Distance" ('WMD')。它的计算成本比那些将文本缩减为单个向量的技术要高,因为它本质上是在考虑许多可能的成本最小化方法来关联向量集。我不确定它在 one 'text' 只是一个单词(或非常短的短语)的退化情况下的效果如何,但它可能值得一试。 (gensim中的方法wmd_distance()
提供了这个。)
我还看到有人提到另一种计算,称为 'Soft Cosine Similarity',它可能比大规模杀伤性武器更有效,但提供类似的好处。它现在也可以在 gensim 中使用;有一个 Jupyter notebook intro tutorial as well。