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

时间:2017-07-13 00:47:02

标签: cluster-analysis gensim word2vec

我使用Google新闻数据集加载了word2vec模型。现在我想得到我希望聚类的句子列表的Word2Vec表示。经过documentation后我发现了这个gensim.models.word2vec.LineSentence,但我不确定这是我在找什么。

应该有办法从预训练模型中获取一系列句子的word2vec表示吗?我搜索过的链接都没有关于它的任何内容。任何线索将不胜感激。

1 个答案:

答案 0 :(得分:1)

Word2Vec仅提供单词的矢量表示,而不是句子。

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

例如,将单词向量加载为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)

真实代码可能会添加处理,以便在模型不是全部都知道令牌时,或者对文本进行标记/过滤的其他方式,等等。

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