我使用Google新闻数据集加载了word2vec模型。现在我想得到我希望聚类的句子列表的Word2Vec表示。经过documentation后我发现了这个gensim.models.word2vec.LineSentence
,但我不确定这是我在找什么。
应该有办法从预训练模型中获取一系列句子的word2vec表示吗?我搜索过的链接都没有关于它的任何内容。任何线索将不胜感激。
答案 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
类实现的“段落向量”算法。这些不一定从预训练的单词向量开始,但可以在您自己的文本语料库中进行训练。