加载预训练的 Word2Vec 模型后,如何获得新句子的 word2vec 表示?

After loading a pretrained Word2Vec model, how do I get word2vec representations of new sentences?

我使用 Google 新闻数据集加载了一个 word2vec 模型。现在我想获得我希望聚类的句子列表的 Word2Vec 表示。通过 documentation 我找到了这个 gensim.models.word2vec.LineSentence 但我不确定这就是我要找的东西。

应该有一种方法可以从预训练模型中获取句子列表的 word2vec 表示,对吗? None 我搜索的链接有任何相关内容。任何线索将不胜感激。

Word2Vec 只提供单词的向量表示,不提供句子。

从词向量到较长文本(如句子)的向量的一种粗略但有些有效(出于某些目的)的方法是将所有词向量平均在一起。这不是 gensim Word2Vec class 的函数;你必须自己编码。

例如,对于已经加载为 word_model 的词向量,您大致可以这样做:

import numpy as np

sentence_tokens = "I do not like green eggs and ham".split()
sum_vector = np.zeros(word_model.vector_size)
for token in sentence_tokens:
    sum_vector += word_model[token]
sentence_vector = sum_vector / len(sentence_tokens)

真正的代码可能会添加处理,以应对模型并非所有标记都已知的情况,或者 tokenizing/filtering 文本的其他方式,等等。

还有其他更复杂的方法来获取文本长度的向量,例如由 gensim 的 Doc2Vec class 实现的 'Paragraph Vectors' 算法。这些不一定以预训练的词向量开始,但可以在您自己的文本语料库上进行训练。